From 9718e17ea1a9bc0c797a09325c5fd0c9ecb17842 Mon Sep 17 00:00:00 2001 From: gaorl Date: Fri, 14 Apr 2023 17:16:06 +0800 Subject: [PATCH] =?UTF-8?q?feature:=E5=8D=95=E4=BD=8D=E6=8D=A2=E7=AE=97?= =?UTF-8?q?=E6=9B=B4=E6=94=B9=E5=8D=95=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/controller/OrderInfoController.java | 16 +++++++++---- .../order/service/OrderInfoService.java | 2 +- .../service/impl/OrderInfoServiceImpl.java | 24 +++++++++++++------ 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInfoController.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInfoController.java index 01232a17..17047e86 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInfoController.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInfoController.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("系统异常,请联系管理员"); + } } } diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderInfoService.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderInfoService.java index 3005b57b..ee4f6927 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderInfoService.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderInfoService.java @@ -198,5 +198,5 @@ public interface OrderInfoService { R fillRedMessage(Map param); - R ratioConversion(List orderInfoIds,String ratio,String xhfNsrsbh); + R ratioConversion(List orderInfoIds,String ratio,String xhfNsrsbh,String originUnit,String newUnit); } diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderInfoServiceImpl.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderInfoServiceImpl.java index 7f4b61af..da1eb457 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderInfoServiceImpl.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderInfoServiceImpl.java @@ -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 orderInfoIds,String ratio,String xhfNsrsbh){ + public R ratioConversion(List orderInfoIds,String ratio,String xhfNsrsbh,String originUnit,String newUnit){ //校验是否为同一税号 校验开票情况 //根据税号+ orderinfoid查询明细信息 List orderProcessInfos = orderProcessInfoMapper.selectByOrderIds(orderInfoIds, Arrays.asList(xhfNsrsbh)); - List collect = orderProcessInfos.stream().filter(t -> "0,1,2,3".contains(t.getDdzt())).map(t -> t.getDdh()).collect(Collectors.toList()); - - List orderItemInfos = orderItemInfoMapper.selectAllByOrderId(orderInfoIds, Arrays.asList(xhfNsrsbh)); + List 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 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(); }