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); return R.ok().put(OrderManagementConstant.DATA, pageSlkjlyYxqRsp);
} }
@ApiOperation(value = "结算单换算", notes = "订单信息管理-结算单换算")
@PostMapping("/conversionNumByRatio") @PostMapping("/conversionNumByRatio")
@SysLog(operation = "根据比率转换数量", operationDesc = "根据比率转换数量", key = "结算单处理") @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); log.info("结算单转换请求参数,勾选订单id:{},转换比率:{},转换税号:{},原单位:{},新单位:{}", JSONObject.toJSONString(orderInfoIds),rate,xhfNsrsbh,originUnit,newUnit);
if(StringUtils.isBlank(orderInfoIds)||StringUtils.isBlank(rate)||StringUtils.isBlank(xhfNsrsbh)){ if(StringUtils.isBlank(orderInfoIds)||StringUtils.isBlank(rate)||StringUtils.isBlank(xhfNsrsbh)||StringUtils.isBlank(originUnit)||StringUtils.isBlank(newUnit)){
return R.error("请求参数有误"); return R.error("请求参数有误");
} }
orderInfoService.ratioConversion(Arrays.asList(orderInfoIds.split(",")),rate,xhfNsrsbh); try {
return R.ok(); 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 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.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestParam;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -1612,23 +1613,32 @@ public class OrderInfoServiceImpl implements OrderInfoService {
} }
@Override @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查询明细信息 //根据税号+ orderinfoid查询明细信息
List<OrderProcessInfo> orderProcessInfos = orderProcessInfoMapper.selectByOrderIds(orderInfoIds, Arrays.asList(xhfNsrsbh)); 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<String> collect = orderProcessInfos.stream().filter(t -> "0,1,2,3".contains(t.getDdzt())).map(t -> t.getOrderInfoId()).collect(Collectors.toList());
if(collect == null){
List<OrderItemInfo> orderItemInfos = orderItemInfoMapper.selectAllByOrderId(orderInfoIds, Arrays.asList(xhfNsrsbh)); return R.error("订单状态有误,请检查后重试");
}
List<OrderItemInfo> orderItemInfos = orderItemInfoMapper.selectAllByOrderId(collect, Arrays.asList(xhfNsrsbh));
if(orderItemInfos == null ||orderItemInfos.isEmpty()){ if(orderItemInfos == null ||orderItemInfos.isEmpty()){
return R.error("当前明细为空不允许进行单位换算"); 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.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.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); orderItemInfoMapper.updateOrderItemId(orderItemInfos);
return R.ok(); return R.ok();
} }

Loading…
Cancel
Save