feature:单位换算更改单位

release
gaorl 2 years ago
parent 006612988f
commit 9718e17ea1
  1. 16
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInfoController.java
  2. 2
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderInfoService.java
  3. 24
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderInfoServiceImpl.java

@ -412,16 +412,22 @@ public class OrderInfoController {
return R.ok().put(OrderManagementConstant.DATA, pageSlkjlyYxqRsp);
}
@ApiOperation(value = "结算单换算", notes = "订单信息管理-结算单换算")
@PostMapping("/conversionNumByRatio")
@SysLog(operation = "根据比率转换数量", operationDesc = "根据比率转换数量", key = "结算单处理")
public R ratioConversion(@RequestParam("orderInfoIds")String orderInfoIds,@RequestParam("rate")String rate,@RequestParam("xhfNsrsbh")String xhfNsrsbh){
public R ratioConversion(@RequestParam("orderInfoIds")String orderInfoIds,
@RequestParam("rate")String rate,@RequestParam("xhfNsrsbh")String xhfNsrsbh,
@RequestParam("originUnit")String originUnit,@RequestParam("newUnit")String newUnit){
//是否校验通税号
log.info("结算单转换请求参数,勾选订单id:{},转换比率:{},转换税号:{}", JSONObject.toJSONString(orderInfoIds),rate,xhfNsrsbh);
if(StringUtils.isBlank(orderInfoIds)||StringUtils.isBlank(rate)||StringUtils.isBlank(xhfNsrsbh)){
log.info("结算单转换请求参数,勾选订单id:{},转换比率:{},转换税号:{},原单位:{},新单位:{}", JSONObject.toJSONString(orderInfoIds),rate,xhfNsrsbh,originUnit,newUnit);
if(StringUtils.isBlank(orderInfoIds)||StringUtils.isBlank(rate)||StringUtils.isBlank(xhfNsrsbh)||StringUtils.isBlank(originUnit)||StringUtils.isBlank(newUnit)){
return R.error("请求参数有误");
}
orderInfoService.ratioConversion(Arrays.asList(orderInfoIds.split(",")),rate,xhfNsrsbh);
return R.ok();
try {
return orderInfoService.ratioConversion(Arrays.asList(orderInfoIds.split(",")), rate, xhfNsrsbh, originUnit, newUnit);
} catch (Exception e) {
return R.error("系统异常,请联系管理员");
}
}
}

@ -198,5 +198,5 @@ public interface OrderInfoService {
R fillRedMessage(Map<String,String> param);
R ratioConversion(List<String> orderInfoIds,String ratio,String xhfNsrsbh);
R ratioConversion(List<String> orderInfoIds,String ratio,String xhfNsrsbh,String originUnit,String newUnit);
}

@ -50,6 +50,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestParam;
import javax.annotation.Resource;
import java.math.BigDecimal;
@ -1612,23 +1613,32 @@ public class OrderInfoServiceImpl implements OrderInfoService {
}
@Override
public R ratioConversion(List<String> orderInfoIds,String ratio,String xhfNsrsbh){
public R ratioConversion(List<String> orderInfoIds,String ratio,String xhfNsrsbh,String originUnit,String newUnit){
//校验是否为同一税号 校验开票情况
//根据税号+ orderinfoid查询明细信息
List<OrderProcessInfo> orderProcessInfos = orderProcessInfoMapper.selectByOrderIds(orderInfoIds, Arrays.asList(xhfNsrsbh));
List<String> collect = orderProcessInfos.stream().filter(t -> "0,1,2,3".contains(t.getDdzt())).map(t -> t.getDdh()).collect(Collectors.toList());
List<OrderItemInfo> orderItemInfos = orderItemInfoMapper.selectAllByOrderId(orderInfoIds, Arrays.asList(xhfNsrsbh));
List<String> collect = orderProcessInfos.stream().filter(t -> "0,1,2,3".contains(t.getDdzt())).map(t -> t.getOrderInfoId()).collect(Collectors.toList());
if(collect == null){
return R.error("订单状态有误,请检查后重试");
}
List<OrderItemInfo> orderItemInfos = orderItemInfoMapper.selectAllByOrderId(collect, Arrays.asList(xhfNsrsbh));
if(orderItemInfos == null ||orderItemInfos.isEmpty()){
return R.error("当前明细为空不允许进行单位换算");
}
orderItemInfos.forEach(t->{
if(StringUtils.isNotBlank(t.getXmsl())){
orderItemInfos = orderItemInfos.stream()
.filter(t->StringUtils.isNotBlank(t.getXmsl()) && originUnit.equals(t.getXmdw()))
.map(t->{
t.setXmsl(new BigDecimal(t.getXmsl()).multiply(new BigDecimal(ratio)).setScale(8, RoundingMode.HALF_UP).toString());
t.setXmdj(new BigDecimal(t.getXmje()).divide(new BigDecimal(t.getXmsl()),8,RoundingMode.HALF_UP).toString());
t.setXmdw(newUnit);
return t;
}
});
).collect(Collectors.toList());
//更新明细表
if(orderItemInfos == null || orderItemInfos.isEmpty()){
return R.error("未匹配到正确单位的数据或数量均为空");
}
orderItemInfoMapper.updateOrderItemId(orderItemInfos);
return R.ok();
}

Loading…
Cancel
Save