From 6a4ddb94fbb7efb2fffef2435d0b842a1c43a28c Mon Sep 17 00:00:00 2001 From: wangrangrang Date: Fri, 9 Jun 2023 08:56:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A2=84=E5=88=B6=E5=8F=91?= =?UTF-8?q?=E7=A5=A8=E8=87=AA=E5=8A=A8=E6=8B=86=E5=88=86=E6=88=90=E5=93=81?= =?UTF-8?q?=E6=B2=B9=E5=92=8C=E9=9D=9E=E6=88=90=E5=93=81=E6=B2=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/InvoiceServiceImpl.java | 72 +++++++++++++++---- 1 file changed, 60 insertions(+), 12 deletions(-) diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceServiceImpl.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceServiceImpl.java index 1b85ab18..e5ee1342 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceServiceImpl.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceServiceImpl.java @@ -46,11 +46,14 @@ import com.dxhy.order.utils.JsonUtils; import com.dxhy.order.utils.NsrsbhUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.math.BigDecimal; +import java.text.DecimalFormat; import java.util.*; import java.util.stream.Collectors; @@ -132,6 +135,9 @@ public class InvoiceServiceImpl implements InvoiceService { @Resource private TaxClassCodeMapper taxClassCodeMapper; + private static final DecimalFormat DECIMAL_FORMAT = new DecimalFormat("#0000"); + private static final String CF = "cf"; + @Override @Transactional @@ -139,41 +145,85 @@ public class InvoiceServiceImpl implements InvoiceService { List pageInvoiceItemList = pageInvoiceReq.getPageInvoiceItemList(); //查询数据列表 List commonOrderInfos = orderInfoService.batchQueryOrderInfoByOrderIdsAndNsrsbh(pageInvoiceItemList); + List commonOrderInfoList=new ArrayList(); //购方是否为空、税编是否为空校验、成品油校验 for(CommonOrderInfo commonOrderInfo:commonOrderInfos){ if(StrUtil.isBlank(commonOrderInfo.getOrderInfo().getGhfNsrsbh()) || StrUtil.isBlank(commonOrderInfo.getOrderInfo().getGhfMc()) ){ return R.error("结算单:"+commonOrderInfo.getOrderInfo().getDdh()+"购方信息为空,请补全!"); } - String cpy = ""; +// String cpy = ""; String kcp = baseServiceConfig.getKcp(); boolean kcpMark = kcp.contains(commonOrderInfo.getOrderItemInfo().get(0).getSpbm()); + List cpyOrderItems = new ArrayList(); + List nocpyOrderItems = new ArrayList(); for(OrderItemInfo orderItemInfo: commonOrderInfo.getOrderItemInfo()){ if(StrUtil.isBlank(orderItemInfo.getSpbm())){ return R.error("结算单:"+commonOrderInfo.getOrderInfo().getDdh()+"第"+orderItemInfo.getSphxh()+"行商品税编为空,请补全!"); }else { TaxClassCodeEntity taxClassCodeEntity = taxClassCodeMapper.selectTaxClassCodeBySpbm(orderItemInfo.getSpbm()); - if(StrUtil.isNotBlank(cpy)){ - if(!cpy.equals(taxClassCodeEntity.getCpy())){ - return R.error("结算单:"+commonOrderInfo.getOrderInfo().getDdh()+"成品油和非成品油税编不能混开,请做手动拆分处理!"); - } +// if(StrUtil.isNotBlank(cpy)){ +// if(!cpy.equals(taxClassCodeEntity.getCpy())){ +// return R.error("结算单:"+commonOrderInfo.getOrderInfo().getDdh()+"成品油和非成品油税编不能混开,请做手动拆分处理!"); +// } +// }else { +// cpy = taxClassCodeEntity.getCpy(); +// } +// + if(ConfigureConstant.STRING_Y.equals(taxClassCodeEntity.getCpy())){ + //成品油明细 + cpyOrderItems.add(orderItemInfo); }else { - cpy = taxClassCodeEntity.getCpy(); + //非成品油明细 + nocpyOrderItems.add(orderItemInfo); } + if(kcp.contains(orderItemInfo.getSpbm()) != kcpMark){ return R.error("结算单:"+commonOrderInfo.getOrderInfo().getDdh()+"矿产品与非矿产品税编不能混开,请做手动拆分处理!"); } } } - if(ConfigureConstant.STRING_Y.equals(cpy) && commonOrderInfo.getOrderItemInfo().size()>ConfigureConstant.INT_8){ + if(CollectionUtils.isEmpty(cpyOrderItems)||CollectionUtils.isEmpty(nocpyOrderItems)){ + commonOrderInfo.setOrderItemInfo(CollectionUtils.isEmpty(cpyOrderItems)?nocpyOrderItems:nocpyOrderItems); + commonOrderInfoList.add(commonOrderInfo); + }else { + //成品油和非成品油混合 + OrderInfo cpyOrderInfo = new OrderInfo(); + BeanUtils.copyProperties(commonOrderInfo.getOrderInfo(),cpyOrderInfo); + cpyOrderInfo.setKphjje(cpyOrderItems.stream().map(m->new BigDecimal(m.getJshj())).reduce(BigDecimal.ZERO, BigDecimal::add).toString()); + cpyOrderInfo.setHjse(cpyOrderItems.stream().map(m->new BigDecimal(m.getSe())).reduce(BigDecimal.ZERO, BigDecimal::add).toString()); + cpyOrderInfo.setDdh(commonOrderInfo.getOrderInfo().getDdh() + CF + DECIMAL_FORMAT.format(1)); + CommonOrderInfo cpyCommonOrderInfo = new CommonOrderInfo(); + BeanUtils.copyProperties(commonOrderInfo,cpyCommonOrderInfo); + cpyCommonOrderInfo.setOrderItemInfo(cpyOrderItems); + cpyCommonOrderInfo.setOrderInfo(cpyOrderInfo); + commonOrderInfoList.add(cpyCommonOrderInfo); + + + OrderInfo nocpyOrderInfo = new OrderInfo(); + BeanUtils.copyProperties(commonOrderInfo.getOrderInfo(),nocpyOrderInfo); + nocpyOrderInfo.setKphjje(nocpyOrderItems.stream().map(m->new BigDecimal(m.getJshj())).reduce(BigDecimal.ZERO, BigDecimal::add).toString()); + nocpyOrderInfo.setHjse(nocpyOrderItems.stream().map(m->new BigDecimal(m.getSe())).reduce(BigDecimal.ZERO, BigDecimal::add).toString()); + nocpyOrderInfo.setDdh(commonOrderInfo.getOrderInfo().getDdh() + CF + DECIMAL_FORMAT.format(2)); + CommonOrderInfo nocpyCommonOrderInfo = new CommonOrderInfo(); + BeanUtils.copyProperties(commonOrderInfo,nocpyCommonOrderInfo); + nocpyCommonOrderInfo.setOrderItemInfo(nocpyOrderItems); + nocpyCommonOrderInfo.setOrderInfo(nocpyOrderInfo); + commonOrderInfoList.add(nocpyCommonOrderInfo); + + } + if(cpyOrderItems.size()>ConfigureConstant.INT_8){ return R.error("结算单:"+commonOrderInfo.getOrderInfo().getDdh()+"是成品油发票,明细行数不能超过8行,请先进行手动拆分!"); } +// if(ConfigureConstant.STRING_Y.equals(cpy) && commonOrderInfo.getOrderItemInfo().size()>ConfigureConstant.INT_8){ +// return R.error("结算单:"+commonOrderInfo.getOrderInfo().getDdh()+"是成品油发票,明细行数不能超过8行,请先进行手动拆分!"); +// } } //客户冻结状态校验、确认智能赋码、单价误差校验 List> consumerList = new ArrayList<>(); List> confirmList = new ArrayList<>(); List> djOverflowList = new ArrayList<>(); - for (CommonOrderInfo commonOrderInfo : commonOrderInfos) { + for (CommonOrderInfo commonOrderInfo : commonOrderInfoList) { OrderInfo orderInfo = commonOrderInfo.getOrderInfo(); List orderItemInfoList = commonOrderInfo.getOrderItemInfo(); BuyerEntity buyerEntity = null; @@ -203,6 +253,7 @@ public class InvoiceServiceImpl implements InvoiceService { confirmList.add(map); } }); + // 订单超限额拆分 String terminalCode = simsBackService.getTerminalCode(commonOrderInfo.getOrderInfo().getXhfNsrsbh(), commonOrderInfo.getOrderInfo().getEntId()); List originalCommonOrderInfo = new ArrayList<>(); @@ -252,7 +303,7 @@ public class InvoiceServiceImpl implements InvoiceService { }else if(djOverflowList.size() > 0){ return R.error(ConfigureConstant.STRING_9003, "以下订单自动拆分时单价超过设定范围,请手动拆分",djOverflowList); }else { - for (CommonOrderInfo f : commonOrderInfos) { + for (CommonOrderInfo f : commonOrderInfoList) { TaxClassCodeEntity taxClassCodeEntity = taxClassCodeMapper.selectTaxClassCodeBySpbm(f.getOrderItemInfo().get(0).getSpbm()); if(ObjectUtil.isNotNull(taxClassCodeEntity) && ConfigureConstant.STRING_Y.equals(taxClassCodeEntity.getCpy())){ f.getOrderInfo().setQdBz(OrderInfoEnum.QDBZ_CODE_4.getKey()); @@ -286,10 +337,7 @@ public class InvoiceServiceImpl implements InvoiceService { OrderProcessInfo processInfo = orderProcessService.selectOrderProcessInfoByProcessId(s.getOrderInfo().getProcessId(),null); processInfo.setYzfp(ConfigureConstant.STRING_1); orderProcessService.updateOrderProcessInfoByProcessId(processInfo, null); -// }); - } else { - continue; } } return R.ok("生成预制发票成功,请到【发票处理中心】页面查看");