From 73145eaab864d3c6c84a0a830eca562e3c1dbd97 Mon Sep 17 00:00:00 2001 From: liufeilong Date: Tue, 18 Apr 2023 18:41:32 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BD=9C=E5=BA=9F=E6=8E=A8=E5=8A=A8?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D=EF=BC=9B=E9=A9=B3=E5=9B=9E?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=9B=B4=E6=96=B0=E9=97=AE=E9=A2=98=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=EF=BC=9B=E5=86=B2=E7=BA=A2=E4=BF=A1=E6=81=AF=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/PushInvoiceServiceImpl.java | 4 +- .../service/impl/OrderInfoServiceImpl.java | 92 ++++++++- .../service/impl/InterfaceServiceImplV6.java | 6 +- .../consumer/utils/BeanTransitionUtils.java | 182 ++++++++++++++++++ 4 files changed, 279 insertions(+), 5 deletions(-) diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/PushInvoiceServiceImpl.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/PushInvoiceServiceImpl.java index 44ccbea3..15b0329f 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/PushInvoiceServiceImpl.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/PushInvoiceServiceImpl.java @@ -243,7 +243,9 @@ public class PushInvoiceServiceImpl implements PushInvoiceService { } else if (OrderInfoEnum.INTERFACE_TYPE_INVOICE_PUSH_STATUS_2.getKey().equals(commonTsMqData.getPushType())) { //推送作废数据 - + ZfTsMqData zfTsMqData = commonTsMqData.getZfTsMqData(); + OrderInvoiceInfo orderInvoiceInfo = orderInvoiceInfoService.selectOrderInvoiceInfoByFpdmAndFphm(zfTsMqData.getFpdm(), zfTsMqData.getFphm(), null); + commonTsMqData.setNsrsbh(orderInvoiceInfo.getXhfNsrsbh()); commonPush(commonTsMqData); 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 5a51ef0d..f7f3639d 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 @@ -28,6 +28,7 @@ import com.dxhy.order.consumer.modules.order.model.bo.YwlxCountTotalBO; import com.dxhy.order.consumer.modules.order.service.*; import com.dxhy.order.consumer.modules.validate.service.ValidateOrderInfoService; import com.dxhy.order.consumer.openapi.service.CommonInterfaceService; +import com.dxhy.order.consumer.utils.BeanTransitionUtils; import com.dxhy.order.consumer.utils.PageDataDealUtil; import com.dxhy.order.consumer.utils.TaxSpecialPolicyUtil; import com.dxhy.order.exception.OrderReceiveException; @@ -38,6 +39,8 @@ import com.dxhy.order.invoice.module.invoice.model.PageSld; import com.dxhy.order.invoice.module.invoice.model.bo.QueryTaxpayerInfoRequestBO; import com.dxhy.order.invoice.module.invoice.service.OrderInvoiceInfoService; import com.dxhy.order.invoice.module.invoice.service.UnifyService; +import com.dxhy.order.invoice.module.invoicespecial.dao.SpecialInvoiceReversalItemMapper; +import com.dxhy.order.invoice.module.invoicespecial.dao.SpecialInvoiceReversalMapper; import com.dxhy.order.invoice.module.invoicespecial.model.SpecialInvoiceReversalEntity; import com.dxhy.order.invoice.module.invoicespecial.service.SpecialInvoiceReversalService; import com.dxhy.order.model.*; @@ -142,6 +145,12 @@ public class OrderInfoServiceImpl implements OrderInfoService { @Resource private UnifyService unifyService; + @Resource + private SpecialInvoiceReversalItemMapper specialInvoiceReversalItemMapper; + + @Resource + private SpecialInvoiceReversalMapper specialInvoiceReversalMapper; + @Override public PageUtils selectOrderInfo(Map map, List shList, List entList) { return orderProcessService.selectOrderInfo(map, shList, entList); @@ -1588,19 +1597,43 @@ public class OrderInfoServiceImpl implements OrderInfoService { String yfpDm = param.get("yfpDm"); String yfpHm = param.get("yfpHm"); String hzxxbbh = param.get("hzxxbbh"); - OrderInfo redOrderInfo = orderInfoService.selectOrderInfoByOrderId(orderInfoId, null); + //OrderInfo redOrderInfo = orderInfoService.selectOrderInfoByOrderId(orderInfoId, null); if(StringUtils.isNotBlank(yfpDm) && StringUtils.isNotBlank(yfpHm)){ OrderInvoiceInfo orderInvoiceInfo = orderInvoiceInfoService.selectOrderInvoiceInfoByFpdmAndFphm(yfpDm, yfpHm, null); if(ObjectUtil.isNull(orderInvoiceInfo)){ errorMsg.append("所填原蓝票代码、号码在系统中不存在,请检查;\n"); }else { - //TODO lfl 校验逻辑待补充 + CommonOrderInfo commonOrderInfoN = orderInfoService.getCommonOrderInfoAll(orderInfoId, null); + OrderInvoiceInfo orderInvoiceInfoY = orderInvoiceInfoService.selectOrderInvoiceInfoByFpdmAndFphm(yfpDm, yfpHm, null); + CommonOrderInfo commonOrderInfoY = orderInfoService.getCommonOrderInfoAll(orderInvoiceInfoY.getOrderInfoId(),null); + Map compareMap = compareOrderAndHzxxb(commonOrderInfoN,commonOrderInfoY); + if(!"0000".equals(compareMap.get("code").toString())){ + errorMsg.append(compareMap.get("msg").toString()+"\n"); + } } }else if(StringUtils.isNotBlank(hzxxbbh)){ SpecialInvoiceReversalEntity specialInvoiceReversalEntity = specialInvoiceReversalService.selectSpecialInvoiceReversalBySubmitCode(hzxxbbh); if(ObjectUtil.isNull(specialInvoiceReversalEntity)){ errorMsg.append("所填红字信息表编号在系统中不存在,请检查\n"); }else { + Set hzxxbbhSet = new HashSet<>(); + hzxxbbhSet.add(hzxxbbh); + CommonOrderInfo commonOrderInfoN = orderInfoService.getCommonOrderInfoAll(orderInfoId, null); + List specialInvoiceReversalItems = specialInvoiceReversalItemMapper.selectItemListBySpecialInvoiceReversalId(specialInvoiceReversalEntity.getId()); + CommonOrderInfo hzxxbCommonOrderInfo = BeanTransitionUtils.transitionCommonOrderInfoFromHzxxb(specialInvoiceReversalEntity, specialInvoiceReversalItems); + + if(hzxxbQd(new ArrayList<>(hzxxbbhSet))){ + //红字信息表带清单 + Map compareMap = compareOrderAndHzxxbQd(commonOrderInfoN, hzxxbCommonOrderInfo); + if(!"0000".equals(compareMap.get("code").toString())){ + errorMsg.append(compareMap.get("msg").toString()+"\n"); + } + }else { + Map compareMap = compareOrderAndHzxxb(commonOrderInfoN, hzxxbCommonOrderInfo); + if(!"0000".equals(compareMap.get("code").toString())){ + errorMsg.append(compareMap.get("msg").toString()+"\n"); + } + } } } @@ -1809,4 +1842,59 @@ public class OrderInfoServiceImpl implements OrderInfoService { return returnMap; } + /** + * 判断红字信息表是否存在清单 + * + * @param hzxxbbhList + * @return + */ + private Boolean hzxxbQd(List hzxxbbhList) { + Boolean b = false; + for (String f : hzxxbbhList) { + SpecialInvoiceReversalEntity query = new SpecialInvoiceReversalEntity(); + query.setXxbbh(f); + SpecialInvoiceReversalEntity specialInvoiceReversalEntity = specialInvoiceReversalMapper.selectSpecialInvoiceReversal(query); + List specialInvoiceReversalItems = specialInvoiceReversalItemMapper.selectItemListBySpecialInvoiceReversalId(specialInvoiceReversalEntity.getId()); + if(specialInvoiceReversalItems.size() == 1 && ConfigureConstant.XJZSXHQD.equals(specialInvoiceReversalItems.get(0).getXmmc())){ + b = true; + break; + } + } + return b; + } + + /** + * 校验红字信息表否在销项系统中存在 并且状态是不是审核通过 + * @param hzxxbbhList + * @return + */ + private Map checkHzxxb(List hzxxbbhList) { + StringBuffer errorMsg = new StringBuffer(); + Map returnMap = new HashMap<>(); + returnMap.put("code","0000"); + returnMap.put("msg","success"); + hzxxbbhList.stream().forEach(f -> { + SpecialInvoiceReversalEntity query = new SpecialInvoiceReversalEntity(); + query.setXxbbh(f); + SpecialInvoiceReversalEntity reversalByXxbbh = specialInvoiceReversalMapper.selectSpecialInvoiceReversal(query); + if(ObjectUtil.isNotNull(reversalByXxbbh)){ + if(!OrderInfoEnum.SPECIAL_INVOICE_STATUS_TZD0000.getKey().equals(reversalByXxbbh.getStatusCode()) && + !OrderInfoEnum.SPECIAL_INVOICE_STATUS_01.getKey().equals(reversalByXxbbh.getStatusCode()) && + !OrderInfoEnum.SPECIAL_INVOICE_STATUS_04.getKey().equals(reversalByXxbbh.getStatusCode())){ + errorMsg.append("红字信息表[").append(f).append("]状态不是审核通过|无需确认|购销双方已确认;"); + } + if(OrderInfoEnum.INVOICE_STATUS_1.getKey().equals(reversalByXxbbh.getKpzt()) || OrderInfoEnum.INVOICE_STATUS_2.getKey().equals(reversalByXxbbh.getKpzt())){ + errorMsg.append("红字信息表[").append(f).append("]已经开票成功或正在开票中;"); + } + }else { + errorMsg.append("红字信息表[").append(f).append("]不存在;"); + } + }); + if(errorMsg.length() > 0){ + returnMap.put("code","9999"); + returnMap.put("msg",errorMsg.toString()); + } + return returnMap; + } + } diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/impl/InterfaceServiceImplV6.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/impl/InterfaceServiceImplV6.java index 014b22ed..ab927fef 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/impl/InterfaceServiceImplV6.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/impl/InterfaceServiceImplV6.java @@ -154,8 +154,10 @@ public class InterfaceServiceImplV6 implements InterfaceServiceV6 { pageRequestList.add(pageRequestVO); R back = orderInvoiceController.updateOrderStatus(pageRequestList, "back"); if("0000".equals(back.get(OrderManagementConstant.CODE))){ - orderProcessInfo.setBhzt(ConfigureConstant.STRING_1); - int i = orderProcessInfoMapper.updateOrderProcessInfoByFpqqlsh(orderProcessInfo, null); + OrderProcessInfo updateOrderProcessInfo = new OrderProcessInfo(); + updateOrderProcessInfo.setId(orderProcessInfo.getId()); + updateOrderProcessInfo.setBhzt(ConfigureConstant.STRING_1); + int i = orderProcessInfoMapper.updateOrderProcessInfoByFpqqlsh(updateOrderProcessInfo, null); esOutput.setZTYPE(OrderInfoContentEnum.INVOICE_ERROR_CODE_OP_S.getKey()); esOutput.setZMESSAGE("驳回状态更新成功"); }else{ diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/utils/BeanTransitionUtils.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/utils/BeanTransitionUtils.java index d7c2014a..e975785b 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/utils/BeanTransitionUtils.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/utils/BeanTransitionUtils.java @@ -35,6 +35,7 @@ import com.dxhy.order.consumer.openapi.protocol.v6.order.QdTxxBO; import com.dxhy.order.exception.OrderReceiveException; import com.dxhy.order.invoice.module.fangge.protocol.invoice.FgCommonOrderHeadBO; import com.dxhy.order.invoice.module.fangge.protocol.invoice.FgOrderInvoiceItemBO; +import com.dxhy.order.invoice.module.invoicespecial.model.SpecialInvoiceReversalEntity; import com.dxhy.order.model.*; import com.dxhy.order.model.c48.cpy.*; import com.dxhy.order.model.c48.sld.SldInvoiceRollPloRequest; @@ -3573,4 +3574,185 @@ public class BeanTransitionUtils { poCommonResponseParam.setES_OUTPUT(esOutput); return poCommonResponseParam; } + + /** + * 红字信息表转订单 + * @param specialInvoiceReversalEntity , specialInvoiceReversalItems + * @return + */ + public static CommonOrderInfo transitionCommonOrderInfoFromHzxxb(SpecialInvoiceReversalEntity specialInvoiceReversalEntity, List specialInvoiceReversalItems) { + CommonOrderInfo commonOrderInfo = new CommonOrderInfo(); + + OrderInfo orderInfo = transitionOrderInfoFromHzxxb(specialInvoiceReversalEntity); + + + List orderItemInfos = transitionOrderItemInfoFromHzxxb(specialInvoiceReversalItems,specialInvoiceReversalEntity.getXhfNsrsbh()); + + /** + * 默认开票项目为明细行首行数据 + */ + orderInfo.setKpxm(orderItemInfos.get(0).getXmmc()); + + commonOrderInfo.setOrderInfo(orderInfo); + + commonOrderInfo.setOrderItemInfo(orderItemInfos); + + return commonOrderInfo; + } + + /** + * 红字信息主表信息转OrderInfo + * @param ddtxx + * @return + */ + public static OrderInfo transitionOrderInfoFromHzxxb(SpecialInvoiceReversalEntity ddtxx) { + + OrderInfo orderInfo = new OrderInfo(); + orderInfo.setFpqqlsh(ddtxx.getId()); + //如果订单号为空的话, 自动生成20位的订单号 + orderInfo.setDdh(RandomUtil.randomNumbers(12)); + //orderInfo.setThdh(ddtxx.getTHDH()); + //orderInfo.setGhfId(ddtxx.getGMFBM()); + orderInfo.setDdlx("0"); + Date ddrq = new Date(); + orderInfo.setDdrq(ddrq); + orderInfo.setDsptbm(""); + orderInfo.setNsrsbh(ddtxx.getXhfNsrsbh()); + orderInfo.setNsrmc(ddtxx.getXhfMc()); + orderInfo.setNsrdzdah(ddtxx.getXhfNsrsbh()); + orderInfo.setSwjgDm(""); + // TODO: 2018/10/25 代开标志默认为0 + orderInfo.setDkbz("0"); + /** + * 外层进行补全,使用明细行第一行商品名称作为开票项目 + */ + orderInfo.setKpxm(""); + orderInfo.setBbmBbh(ddtxx.getBmbbbh()); + orderInfo.setXhfMc(ddtxx.getXhfMc()); + orderInfo.setXhfNsrsbh(ddtxx.getXhfNsrsbh()); + orderInfo.setXhfDz(ddtxx.getXhfDz()); + orderInfo.setXhfDh(ddtxx.getXhfDh()); + // TODO: 2018/10/25 前期使用银行字段存储银行帐号 + if (StringUtils.isNotBlank(ddtxx.getXhfYh())) { + orderInfo.setXhfYh(ddtxx.getXhfYh()); + } + if (StringUtils.isNotBlank(ddtxx.getXhfZh())) { + orderInfo.setXhfZh(ddtxx.getXhfZh()); + } + orderInfo.setGhfQylx(ddtxx.getGhfqylx()); + //orderInfo.setGhfSf(ddtxx.getGMFSF()); + orderInfo.setGhfMc(ddtxx.getGhfMc()); + orderInfo.setGhfNsrsbh(ddtxx.getGhfNsrsbh()); + orderInfo.setGhfDz(ddtxx.getGhfDz()); + orderInfo.setGhfDh(ddtxx.getGhfDh()); + // TODO: 2018/10/25 前期使用银行字段存储银行帐号 + if (StringUtils.isNotBlank(ddtxx.getGhfYh())) { + orderInfo.setGhfYh(ddtxx.getGhfYh()); + } + if (StringUtils.isNotBlank(ddtxx.getGhfZh())) { + orderInfo.setGhfZh(ddtxx.getGhfZh()); + } + //orderInfo.setGhfSj(ddtxx.getGMFSJH()); + //orderInfo.setGhfEmail(ddtxx.getGMFDZYX()); + orderInfo.setHyDm(""); + orderInfo.setHyMc(""); + orderInfo.setKpr(ddtxx.getKpr()); + orderInfo.setSkr(ddtxx.getSkr()); + orderInfo.setFhr(ddtxx.getFhr()); + //orderInfo.setKplx(ddtxx.getKPLX()); + + orderInfo.setFpzlDm(ddtxx.getFpzlDm()); + orderInfo.setYfpDm(ddtxx.getYfpDm()); + orderInfo.setYfpHm(ddtxx.getYfpHm()); + orderInfo.setChyy(ddtxx.getChyy()); + //orderInfo.setTschbz(ddtxx.getTSCHBZ()); + orderInfo.setHzxxbbh(ddtxx.getXxbbh()); + // TODO: 2018/10/25 操作代码默认为10 + orderInfo.setCzdm("10"); + orderInfo.setQdBz(ddtxx.getQdbz()); + //orderInfo.setQdXmmc(ddtxx.getQDXMMC()); + orderInfo.setKphjje(ddtxx.getKphjje()); + orderInfo.setHjbhsje(ddtxx.getHjbhsje()); + orderInfo.setHjse(ddtxx.getHjse()); + //orderInfo.setStatementNo(ddtxx.getSettlementNo()); + if (StringUtils.isNotBlank(ddtxx.getKphjje())) { + orderInfo.setKphjje(DecimalCalculateUtil.decimalFormatToString(String.valueOf(ddtxx.getKphjje()), 2)); + } + if (StringUtils.isNotBlank(ddtxx.getHjbhsje())) { + orderInfo.setHjbhsje(DecimalCalculateUtil.decimalFormatToString(String.valueOf(ddtxx.getHjbhsje()), 2)); + } + if (StringUtils.isNotBlank(ddtxx.getHjse())) { + orderInfo.setHjse(DecimalCalculateUtil.decimalFormatToString(String.valueOf(ddtxx.getHjse()), 2)); + } + + + // TODO: 2018/10/25 后期考虑添加以下字段:门店号,业务类型,推送地址 + orderInfo.setMdh(""); + orderInfo.setYwlx(""); + + /** + * 外层进行补全,使用最外层的数据进行填充 + */ + orderInfo.setKpjh(""); + orderInfo.setSld(""); + orderInfo.setSldMc(""); + //orderInfo.setTqm(ddtxx.getTQM()); + //orderInfo.setSfcf(ddtxx.getSFCF()); + + //orderInfo.setBz(ddtxx.getBZ()); + orderInfo.setCreateTime(new Date()); + orderInfo.setUpdateTime(new Date()); + //orderInfo.setByzd1(ddtxx.getBYZD1()); + //orderInfo.setByzd2(ddtxx.getBYZD2()); + //orderInfo.setByzd3(ddtxx.getBYZD3()); + //orderInfo.setByzd4(ddtxx.getBYZD4()); + //orderInfo.setByzd5(ddtxx.getBYZD5()); + //orderInfo.setDeptId(ddtxx.getDEPTID()); + return orderInfo; + } + + /** + * 红字信息表明细转OrderItemInfo + * @param specialInvoiceReversalItemList , xhfNsrsbh + * @return + */ + public static List transitionOrderItemInfoFromHzxxb(List specialInvoiceReversalItemList,String xhfNsrsbh) { + List orderItemInfos = new ArrayList<>(); + for (int i = 0; i < specialInvoiceReversalItemList.size(); i++) { + OrderItemInfo orderItemInfo = new OrderItemInfo(); + SpecialInvoiceReversalItem orderInvoiceItem = specialInvoiceReversalItemList.get(i); + orderItemInfo.setSphxh(String.valueOf(i + 1)); + //orderItemInfo.setSpId(orderInvoiceItem.getSPID()); + orderItemInfo.setXmmc(orderInvoiceItem.getXmmc()); + orderItemInfo.setXmdw(ObjectUtil.isNull(orderInvoiceItem.getXmdw()) ? "":orderInvoiceItem.getXmdw()); + orderItemInfo.setGgxh(ObjectUtil.isNull(orderInvoiceItem.getGgxh()) ? "":orderInvoiceItem.getGgxh()); + + orderItemInfo.setXmdj(ObjectUtil.isNull(orderInvoiceItem.getXmdj()) ? "":orderInvoiceItem.getXmdj()); + orderItemInfo.setXmsl(ObjectUtil.isNull(orderInvoiceItem.getXmsl()) ? "":orderInvoiceItem.getXmsl()); + + orderItemInfo.setHsbz(orderInvoiceItem.getHsbz()); + //orderItemInfo.setFphxz(ObjectUtil.isNull(orderInvoiceItem.getFphxz()) ? "0":orderInvoiceItem.getFphxz()); + orderItemInfo.setFphxz("0"); + orderItemInfo.setSpbm(orderInvoiceItem.getSpbm()); + orderItemInfo.setZxbm(orderInvoiceItem.getZxbm()); + orderItemInfo.setYhzcbs(orderInvoiceItem.getYhzcbs()); + orderItemInfo.setLslbs(orderInvoiceItem.getLslbs()); + orderItemInfo.setZzstsgl(orderInvoiceItem.getZzstsgl()); + orderItemInfo.setKce(orderInvoiceItem.getKce()); + orderItemInfo.setXmje(orderInvoiceItem.getXmje()); + orderItemInfo.setSl(orderInvoiceItem.getSl()); + orderItemInfo.setSe(orderInvoiceItem.getSe()); + orderItemInfo.setXhfNsrsbh(xhfNsrsbh); + orderItemInfo.setWcje("0.00"); + //orderItemInfo.setByzd1(orderInvoiceItem.getBYZD1()); + //orderItemInfo.setByzd2(orderInvoiceItem.getBYZD2()); + //orderItemInfo.setByzd3(orderInvoiceItem.getBYZD3()); + orderItemInfo.setCreateTime(new Date()); + orderItemInfos.add(orderItemInfo); + } + return orderItemInfos; + } + + + }