From e66903730bb58912bda356efcb78032a32c823e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B7=AF=E6=98=8E=E6=85=A7?= <1191093413@qq.com> Date: Thu, 22 Aug 2024 16:15:55 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E8=81=94=E8=B0=83=E5=9B=9E=E6=8E=A8?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9=E5=8F=8A=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../baseservice/utils/OrderCommonUtils.java | 12 ++- .../order/consumer/dao/YyOrderMapper.java | 2 + .../order/consumer/handle/EmailPushTask.java | 2 +- .../modules/bespoke/config/FildConfig.java | 4 +- .../bespoke/config/datasource/LuoxinBack.java | 95 ++++++++++++++++ .../service/impl/DefaultFtpProcessor.java | 69 +++++++++++- .../service/impl/OrderHandleServiceImpl.java | 36 ++++--- .../service/impl/SkOrderServiceImpl.java | 85 ++++++++------- .../service/impl/YyOrderServiceImpl.java | 102 ++++++++++++------ .../impl/OrderPushInvoiceServiceImpl.java | 19 ++-- .../mybatis/mapper/TInvoiceInvmapMapper.xml | 2 +- .../mybatis/mapper/YyOrderMapper.xml | 6 ++ .../impl/VerifyCommodityCodeServiceImpl.java | 8 +- 13 files changed, 331 insertions(+), 111 deletions(-) create mode 100644 order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/config/datasource/LuoxinBack.java diff --git a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/utils/OrderCommonUtils.java b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/utils/OrderCommonUtils.java index 8f63a8b..1ba879d 100644 --- a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/utils/OrderCommonUtils.java +++ b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/utils/OrderCommonUtils.java @@ -1768,10 +1768,16 @@ public class OrderCommonUtils { } if (StringUtils.isNotBlank(fpzlDm)){ - OrderInfoEnum codeValue = OrderInfoEnum.getCodeValue(fpzlDm); - if (codeValue != null){ + String fpmc = ""; + if ("002".equals(fpzlDm)||"02".equals(fpzlDm)){ + fpmc = "数电普票"; + } + if ("001".equals(fpzlDm)||"01".equals(fpzlDm)){ + fpmc = "数电专票"; + } + if (StringUtils.isNotBlank(fpmc)){ stringBuilder.append(ConfigureConstant.STRING_LINE); - stringBuilder.append(codeValue.getValue()); + stringBuilder.append(fpmc); } } //补全号码 diff --git a/order-management-order/src/main/java/com/dxhy/order/consumer/dao/YyOrderMapper.java b/order-management-order/src/main/java/com/dxhy/order/consumer/dao/YyOrderMapper.java index 52f19de..a3337d4 100644 --- a/order-management-order/src/main/java/com/dxhy/order/consumer/dao/YyOrderMapper.java +++ b/order-management-order/src/main/java/com/dxhy/order/consumer/dao/YyOrderMapper.java @@ -21,4 +21,6 @@ public interface YyOrderMapper { List getDdbh(String cdlCode); int updateBackMsg(@Param("fild") String reBackFild, @Param("ddh") String originDdh, @Param("fph") String sdfphm); + + String findBackDdh(String ddh); } diff --git a/order-management-order/src/main/java/com/dxhy/order/consumer/handle/EmailPushTask.java b/order-management-order/src/main/java/com/dxhy/order/consumer/handle/EmailPushTask.java index 4bf6039..d3c5d3c 100644 --- a/order-management-order/src/main/java/com/dxhy/order/consumer/handle/EmailPushTask.java +++ b/order-management-order/src/main/java/com/dxhy/order/consumer/handle/EmailPushTask.java @@ -97,7 +97,7 @@ public class EmailPushTask { } //开票类型 - paraMap.put("kplx", OrderInfoEnum.ORDER_BILLING_INVOICE_TYPE_0.getKey()); +// paraMap.put("kplx", OrderInfoEnum.ORDER_BILLING_INVOICE_TYPE_0.getKey()); //时间赋值 paraMap.put("endTime", DateUtil.now()); diff --git a/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/config/FildConfig.java b/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/config/FildConfig.java index 64a9d02..e5755fb 100644 --- a/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/config/FildConfig.java +++ b/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/config/FildConfig.java @@ -16,7 +16,7 @@ public class FildConfig { return field.get(nsrsbh); } - public void setReBackFild(Map reBack){ - this.field = reBack; + public void setField(Map field){ + this.field = field; } } diff --git a/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/config/datasource/LuoxinBack.java b/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/config/datasource/LuoxinBack.java new file mode 100644 index 0000000..72ff55c --- /dev/null +++ b/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/config/datasource/LuoxinBack.java @@ -0,0 +1,95 @@ +package com.dxhy.order.consumer.modules.bespoke.config.datasource; + +import cn.hutool.core.codec.Base64; +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.io.IoUtil; +import com.dxhy.management.common.utils.Base64Encoding; +import org.apache.commons.net.ftp.FTPClient; +import org.apache.commons.net.ftp.FTPFile; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.Map; + +@Component +@ConfigurationProperties(prefix = "luoxin") +public class LuoxinBack { + + private static Map back = new HashMap<>(); + + public String getWrite(String nsrsbh){ + return back.get(nsrsbh); + } + + public void setBack(Map back){ + this.back = back; + } + + + public static void main(String[] args) { + + String server = "192.168.99.218"; // FTP服务器地址 + int port = 21; // FTP服务器端口,默认为21 + String user = "ftpadmin"; // FTP登录用户名 + String pass = "Lx8b0a6#"; // FTP登录密码 + String fileName = "24372000000156332224-88.50.pdf"; + fileName = new String(fileName.getBytes(StandardCharsets.UTF_8), Charset.forName("GBK")); + System.out.println(fileName); + String path = "/test"; + String fullPath = path + "/" + fileName; + FTPClient ftpClient = new FTPClient(); + try { + ftpClient.connect(server, port); + ftpClient.login(user, pass); + String s = FileUtil.readString("D:\\invoice.txt", "UTF-8"); + byte[] decode = Base64Encoding.decode(s); + ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); + ByteArrayInputStream inputStream = IoUtil.toStream(decode); + boolean dirExists = ftpClient.changeWorkingDirectory(path); + if (!dirExists) { + // 递归创建目录 + String[] dirs = path.split("/"); + StringBuilder currentDir = new StringBuilder(); + for (String dir : dirs) { + if (!dir.isEmpty()) { + currentDir.append('/').append(dir); + if (!ftpClient.changeWorkingDirectory(currentDir.toString())) { + if (!ftpClient.makeDirectory(currentDir.toString())) { + throw new IOException("Failed to create directory: " + currentDir.toString()); + } + ftpClient.changeWorkingDirectory(currentDir.toString()); + } + } + } + } + FTPFile[] files = ftpClient.listFiles(path.substring(0, path.lastIndexOf('/'))); + boolean fileExists = false; + for (FTPFile file : files) { + if (file.getName().equals(fileName)) { + fileExists = true; + break; + } + } + if (fileExists) { + // 删除文件 + boolean deleted = ftpClient.deleteFile(fullPath); + if (deleted) { + ftpClient.storeFile(fileName, inputStream); + } else { + } + } else { + // 直接上传文件 + ftpClient.storeFile(fileName, inputStream); + } + }catch (Exception e){ + + }finally { + + } + } +} diff --git a/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/DefaultFtpProcessor.java b/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/DefaultFtpProcessor.java index cc69537..dce8f21 100644 --- a/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/DefaultFtpProcessor.java +++ b/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/DefaultFtpProcessor.java @@ -1,6 +1,7 @@ package com.dxhy.order.consumer.modules.bespoke.service.impl; +import com.dxhy.management.common.constant.ConfigureConstant; import com.dxhy.order.baseservice.constant.ConfigurerInfo; import com.dxhy.order.consumer.modules.bespoke.config.FtpProperties; import com.dxhy.order.consumer.modules.bespoke.service.FtpProcessor; @@ -70,11 +71,47 @@ public class DefaultFtpProcessor implements FtpProcessor { boolean flag = false; FTPClient ftpClient = getFtpClient(); try { + String fullPath = path + "/" + fileName; ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); - createDirectory(path, ftpClient); - ftpClient.makeDirectory(path); - ftpClient.changeWorkingDirectory(path); - ftpClient.storeFile(fileName, inputStream); + ftpClient.enterLocalPassiveMode(); + boolean dirExists = ftpClient.changeWorkingDirectory(path); + if (!dirExists) { + // 递归创建目录 + String[] dirs = path.split("/"); + StringBuilder currentDir = new StringBuilder(); + for (String dir : dirs) { + if (!dir.isEmpty()) { + currentDir.append('/').append(dir); + if (!ftpClient.changeWorkingDirectory(currentDir.toString())) { + if (!ftpClient.makeDirectory(currentDir.toString())) { + throw new IOException("Failed to create directory: " + currentDir.toString()); + } + ftpClient.changeWorkingDirectory(currentDir.toString()); + } + } + } + } + FTPFile[] files = ftpClient.listFiles(path.substring(0, path.lastIndexOf('/'))); + boolean fileExists = false; + for (FTPFile file : files) { + if (file.getName().equals(fileName)) { + fileExists = true; + break; + } + } + if (fileExists) { + // 删除文件 + boolean deleted = ftpClient.deleteFile(fullPath); + if (deleted) { + log.info("文件已删除,准备上传新文件..."); + ftpClient.storeFile(fileName, inputStream); + } else { + log.error("删除文件失败"); + } + } else { + // 直接上传文件 + ftpClient.storeFile(fileName, inputStream); + } flag = true; } catch (Exception e) { log.error("上传文件出错!:{}", e); @@ -209,6 +246,30 @@ public class DefaultFtpProcessor implements FtpProcessor { return flag; } + private static boolean ensureDirectoryExists(FTPClient ftp, String dirPath) throws IOException { + boolean success = true; + String[] dirs = dirPath.split("/"); + StringBuilder sb = new StringBuilder(); + + for (String dir : dirs) { + if (!dir.isEmpty()) { + sb.append('/'); + sb.append(dir); + + if (!ftp.changeWorkingDirectory(sb.toString())) { + if (!ftp.makeDirectory(sb.toString())) { + log.info("Failed to create directory: " + sb.toString()); + success = false; + break; + } + ftp.changeWorkingDirectory(sb.toString()); + } + } + } + + return success; + } + /** * 创建目录 * diff --git a/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/OrderHandleServiceImpl.java b/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/OrderHandleServiceImpl.java index b352539..bad7859 100644 --- a/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/OrderHandleServiceImpl.java +++ b/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/OrderHandleServiceImpl.java @@ -1,5 +1,6 @@ package com.dxhy.order.consumer.modules.bespoke.service.impl; +import cn.hutool.core.codec.Base64; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.IoUtil; @@ -11,6 +12,7 @@ import com.dxhy.base.common.model.OrderItemInfo; import com.dxhy.base.common.model.OrderProcessInfo; import com.dxhy.base.common.model.R; import com.dxhy.base.common.model.qd.OrderInfoQd; +import com.dxhy.base.common.utils.Base64Encoding; import com.dxhy.base.common.utils.DistributedKeyMaker; import com.dxhy.base.common.utils.JsonUtils; import com.dxhy.base.common.utils.NsrsbhUtils; @@ -38,6 +40,7 @@ import com.dxhy.order.invoice.module.invoice.dao.OrderInvoiceInfoMapper; import com.dxhy.order.invoice.module.invoice.dao.OrderItemInfoMapper; import com.dxhy.order.invoice.module.invoice.model.FileDownLoad; import com.dxhy.order.invoice.module.invoice.service.OrderInvoiceInfoService; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; @@ -46,6 +49,7 @@ import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.io.ByteArrayInputStream; +import java.io.FileInputStream; import java.util.Arrays; import java.util.Date; import java.util.List; @@ -284,16 +288,18 @@ public class OrderHandleServiceImpl implements OrderHandleService { if (ObjectUtils.isEmpty(kprq)) { kprq = new Date(); } - String format = DateUtil.format(kprq, ConfigureConstant.DATE_FORMAT_DATE_Y_M); - String[] split = format.split(ConfigureConstant.STRING_LINE); + String format = DateUtil.format(kprq, ConfigureConstant.DATE_FORMAT_DATE_YM); path.append(ConfigureConstant.STRING_SLASH_LINE) - .append(split[ConfigureConstant.INT_0]) - .append(ConfigureConstant.STRING_SLASH_LINE) - .append(split[ConfigureConstant.INT_1]); + .append(format); - ByteArrayInputStream utf8Stream = IoUtil.toUtf8Stream(fileDownLoad.getFileContent()); + byte[] decode = Base64Encoding.decode(fileDownLoad.getFileContent()); + ByteArrayInputStream stream = IoUtil.toStream(decode); - boolean flag = ftpProcessor.uploadFile(path.toString(), fileDownLoad.getFileName(), utf8Stream); + String fileName = orderInvoiceInfo.getXhfNsrsbh(). + concat(ConfigureConstant.STRING_LINE). + concat(orderInvoiceInfo.getSdfphm()). + concat(ConfigureConstant.STRING_SUFFIX_PDF); + boolean flag = ftpProcessor.uploadFile(path.toString(), fileName, stream); if (flag){ fileModel.setCode(ConfigureConstant.STRING_0000); @@ -380,12 +386,12 @@ public class OrderHandleServiceImpl implements OrderHandleService { OrderInfo orderInfoLz = orderInfoMapper.selectOrderInfoByDdqqlsh(orderInvoiceInfoLz.getFpqqlsh(), shList); - OrderInfo orderInfoHz = orderInfoMapper.findOrderByDdh(orderInfoLz.getByzd1()); - - orderId = orderInfoHz.getId(); - - ddh = orderInfoLz.getDdh(); - + List orderItemInfos = orderItemInfoMapper.selectOrderItemInfoByOrderId(orderInfoLz.getId(), shList); + if (CollectionUtils.isEmpty(orderItemInfos)){ + return R.error("未查询到相关订单明细信息"); + } + ddh = orderItemInfos.get(ConfigureConstant.INT_0).getByzd2(); + orderId = orderInfo.getId(); } //获取原始订单信息 OrderOriginExtendInfo orderOriginExtendInfo = new OrderOriginExtendInfo(); @@ -415,11 +421,11 @@ public class OrderHandleServiceImpl implements OrderHandleService { return r; } + @SneakyThrows @Override public boolean test() { ByteArrayInputStream utf8Stream = IoUtil.toUtf8Stream("独有英雄驱虎豹,更无豪杰怕熊罴"); - - boolean flag = ftpProcessor.uploadFile(ftpProperties.getBasePath(),"poem.txt", utf8Stream); + boolean flag = ftpProcessor.uploadFile(ftpProperties.getBasePath()+"/base/pdf","poem.pdf", new FileInputStream("D:\\91371311MAC3H1T95T_24372000000140008586_1722566727805.pdf")); return flag; } diff --git a/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/SkOrderServiceImpl.java b/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/SkOrderServiceImpl.java index 9cc59c5..d4362d3 100644 --- a/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/SkOrderServiceImpl.java +++ b/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/SkOrderServiceImpl.java @@ -23,6 +23,7 @@ import com.dxhy.order.consumer.dao.SkOrderInfoMapper; import com.dxhy.order.consumer.dao.SkOrderItemInfoMapper; import com.dxhy.order.consumer.dao.SkOrderMapper; import com.dxhy.order.consumer.dao.TInvoiceInvmapMapper; +import com.dxhy.order.consumer.modules.bespoke.config.datasource.LuoxinBack; import com.dxhy.order.consumer.modules.bespoke.config.datasource.config.DynamicContextHolder; import com.dxhy.order.consumer.modules.bespoke.model.req.FileModel; import com.dxhy.order.consumer.modules.bespoke.model.req.ReqParam; @@ -35,13 +36,16 @@ import com.dxhy.order.consumer.modules.bespoke.service.OrderService; import com.dxhy.order.consumer.openapi.protocol.v4.order.*; import com.dxhy.order.consumer.openapi.protocol.v6.order.QdTxxBO; import com.dxhy.order.consumer.openapi.service.AllocateInvoiceInterfaceServiceV3; +import com.dxhy.order.invoice.module.invoice.dao.OrderInfoMapper; import com.dxhy.order.invoice.module.invoice.dao.OrderItemInfoMapper; +import com.dxhy.order.invoice.module.invoice.service.OrderInvoiceInfoService; import com.github.pagehelper.PageInfo; import com.github.pagehelper.page.PageMethod; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; + import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; @@ -81,6 +85,9 @@ public class SkOrderServiceImpl implements OrderService { @Resource private TInvoiceInvmapMapper tInvoiceInvmapMapper; + @Resource + private LuoxinBack luoxinBack; + // 订单读入 @Override public R orderRead(ReqParam reqParam) { @@ -100,7 +107,7 @@ public class SkOrderServiceImpl implements OrderService { if (CollectionUtils.isNotEmpty(skOrderItemInfoList)) { DynamicContextHolder.push(ConfigureConstant.MAIN); - count+= saveOrder(skOrderInfo, skOrderItemInfoList, reqParam); + count += saveOrder(skOrderInfo, skOrderItemInfoList, reqParam); } @@ -125,7 +132,7 @@ public class SkOrderServiceImpl implements OrderService { public R delOrder(ReqParam reqParam) { int count = skOrderInfoMapper.delOrder(reqParam); skOrderItemInfoMapper.delOrder(reqParam.getIds()); - return R.ok("成功删除"+count+"条订单数据"); + return R.ok("成功删除" + count + "条订单数据"); } @Override @@ -154,8 +161,8 @@ public class SkOrderServiceImpl implements OrderService { for (SkOrderInfo skOrderInfo : skOrderInfoList) { try { List skOrderItemInfoList = skOrderItemInfoMapper.queryOrderItemInfo(skOrderInfo.getId()); - if (CollectionUtils.isNotEmpty(skOrderItemInfoList)){ - DdpcxxReqBO ddpcxxReqBO = transitionReadData(skOrderInfo,skOrderItemInfoList, deptEntity); + if (CollectionUtils.isNotEmpty(skOrderItemInfoList)) { + DdpcxxReqBO ddpcxxReqBO = transitionReadData(skOrderInfo, skOrderItemInfoList, deptEntity); DdpcxxRspBO ddpcxxRspBO = allocateInvoiceInterfaceServiceImplV3.allocateInvoicesV3(ddpcxxReqBO, "", null, ConfigurerInfo.INTERFACE_VERSION_V6); log.debug("V3生成预制返回信息:{}", JSON.toJSONString(ddpcxxRspBO)); String format = String.format(message, skOrderInfo.getXsddm(), ddpcxxRspBO.getZTXX()); @@ -164,7 +171,7 @@ public class SkOrderServiceImpl implements OrderService { } else { backMessage.add(format); } - }else { + } else { backMessage.add(String.format(message, skOrderInfo.getXsddm(), "订单明细信息丢失请删除重新读入")); } @@ -179,56 +186,60 @@ public class SkOrderServiceImpl implements OrderService { } @Override - public R backMsg(OrderInvoiceInfo orderInvoiceInfo, List orderOriginExtendInfos, FileModel fileModel,String ddh) { + public R backMsg(OrderInvoiceInfo orderInvoiceInfo, List orderOriginExtendInfos, FileModel fileModel, String ddh) { for (OrderOriginExtendInfo orderOriginExtendInfo : orderOriginExtendInfos) { List orderItemInfos = orderItemInfoMapper.selectOrderItemInfoByOrderId(orderOriginExtendInfo.getOriginOrderId(), Arrays.asList(orderInvoiceInfo.getXhfNsrsbh())); - if (CollectionUtils.isNotEmpty(orderItemInfos)){ + if (CollectionUtils.isNotEmpty(orderItemInfos)) { for (OrderItemInfo orderItemInfo : orderItemInfos) { BackProduct backProduct = new BackProduct(); backProduct.setFphm(orderInvoiceInfo.getSdfphm()); backProduct.setDjbh(orderOriginExtendInfo.getOriginDdh()); backProduct.setMxxh(orderItemInfo.getSphxh()); backProduct.setKprq(DateUtil.formatDate(orderInvoiceInfo.getKprq())); - backProduct.setBz(orderItemInfo.getBz()==null?"":orderItemInfo.getBz()); - backProduct.setKpr(orderInvoiceInfo.getKpr()==null?"":orderInvoiceInfo.getKpr()); + backProduct.setBz(orderItemInfo.getBz() == null ? "" : orderItemInfo.getBz()); + backProduct.setKpr(orderInvoiceInfo.getKpr() == null ? "" : orderInvoiceInfo.getKpr()); backProduct.setSpsl(new BigDecimal(orderItemInfo.getXmsl())); backProduct.setDj(new BigDecimal(orderItemInfo.getXmdj())); backProduct.setJe(new BigDecimal(orderItemInfo.getXmje())); backProduct.setSl(new BigDecimal(orderItemInfo.getSl())); backProduct.setSe(new BigDecimal(orderItemInfo.getSe())); backProduct.setMark(ConfigureConstant.KP); - if (ConfigureConstant.STRING_1.equals(orderInvoiceInfo.getKplx())){ - backProduct.setDjbh(orderItemInfo.getByzd2()); + if (ConfigureConstant.STRING_1.equals(orderInvoiceInfo.getKplx())) { + backProduct.setDjbh(ddh); backProduct.setMark(ConfigureConstant.CH); } DynamicContextHolder.push(orderInvoiceInfo.getXhfNsrsbh()); log.info("调用存储过程参数:{}", JSON.toJSONString(backProduct)); skOrderMapper.callProcedure(backProduct); - if (ConfigureConstant.STRING_0.equals(orderInvoiceInfo.getKplx())){ - //回写创建表 - DynamicContextHolder.push(orderInvoiceInfo.getXhfNsrsbh()); - BackDjbh backDjbh = skOrderMapper.selectBackDjbh(orderItemInfo.getByzd2()); - NewTable newTable = new NewTable(); - if (backDjbh != null){ - newTable.setCDLCode(backDjbh.getDjbh()); - newTable.setBpmNo(backDjbh.getBpmNo()); - newTable.setBpmlsNo(backDjbh.getBpmlsNo()); - } - - newTable.setInvoiceNo(orderInvoiceInfo.getSdfphm()); - newTable.setInvoiceTime(orderInvoiceInfo.getKprq()); - newTable.setInvoiceAmount(orderInvoiceInfo.getKphjje()); - newTable.setInvoicePhoto(fileModel.getFilePath()); - newTable.setInvoiceFilename(fileModel.getFileName()); - newTable.setOperater(orderInvoiceInfo.getKpr()); - newTable.setOperateDate(orderInvoiceInfo.getKprq()); - DynamicContextHolder.push(ConfigureConstant.MAIN); - tInvoiceInvmapMapper.deleteBackMsg(newTable.getCDLCode()); - tInvoiceInvmapMapper.insertBackMsg(newTable); + //回写创建表 + DynamicContextHolder.push(orderInvoiceInfo.getXhfNsrsbh()); + String xgdjbh = orderItemInfo.getByzd2(); + if (ConfigureConstant.STRING_1.equals(orderInvoiceInfo.getKplx())) { + xgdjbh = ddh; } + BackDjbh backDjbh = skOrderMapper.selectBackDjbh(xgdjbh); + NewTable newTable = new NewTable(); + if (backDjbh != null) { + newTable.setCDLCode(backDjbh.getDjbh()); + newTable.setBpmNo(backDjbh.getBpmNo()); + newTable.setBpmlsNo(backDjbh.getBpmlsNo()); + } + + newTable.setInvoiceNo(orderInvoiceInfo.getSdfphm()); + newTable.setInvoiceTime(orderInvoiceInfo.getKprq()); + newTable.setInvoiceAmount(orderInvoiceInfo.getKphjje()); + newTable.setInvoicePhoto(fileModel.getFilePath()); + newTable.setInvoiceFilename(fileModel.getFileName()); + newTable.setOperater(orderInvoiceInfo.getKpr()); + newTable.setOperateDate(orderInvoiceInfo.getKprq()); + newTable.setShipper(luoxinBack.getWrite(orderInvoiceInfo.getXhfNsrsbh())); + DynamicContextHolder.push(ConfigureConstant.MAIN); + tInvoiceInvmapMapper.deleteBackMsg(newTable.getCDLCode()); + tInvoiceInvmapMapper.insertBackMsg(newTable); + } @@ -243,7 +254,7 @@ public class SkOrderServiceImpl implements OrderService { //校验订单信息是否存在 SkOrderInfo skOrderInfoExist = skOrderInfoMapper.checkOrderExist(skOrderInfo.getXsddm()); - if (skOrderInfoExist != null){ + if (skOrderInfoExist != null) { log.debug("订单信息已存在,订单编号:{}", skOrderInfoExist.getXsddm()); return ConfigureConstant.INT_0; } @@ -269,10 +280,10 @@ public class SkOrderServiceImpl implements OrderService { skOrderInfo.setDetailCount(String.valueOf(skOrderItemInfoList.size())); skOrderInfo.setCreateTime(now); skOrderInfo.setHsje(hsje.setScale(ConfigureConstant.INT_2, RoundingMode.HALF_UP).toPlainString()); - skOrderInfo.setSe(se.setScale(ConfigureConstant.INT_2,RoundingMode.HALF_UP).toPlainString()); + skOrderInfo.setSe(se.setScale(ConfigureConstant.INT_2, RoundingMode.HALF_UP).toPlainString()); String fplx = ConfigureConstant.STRING_002; - if ("增值税专用发票".equals(skOrderInfo.getFplx())){ + if ("增值税专用发票".equals(skOrderInfo.getFplx())) { fplx = ConfigureConstant.STRING_001; } skOrderInfo.setFplx(fplx); @@ -281,7 +292,7 @@ public class SkOrderServiceImpl implements OrderService { return ConfigureConstant.INT_1; } - public DdpcxxReqBO transitionReadData(SkOrderInfo skOrderInfo,List skOrderItemInfoList, DeptEntity deptEntity) { + public DdpcxxReqBO transitionReadData(SkOrderInfo skOrderInfo, List skOrderItemInfoList, DeptEntity deptEntity) { TaxEquipmentInfo taxEquipmentInfo = simsBackService.queryTaxEquipment(deptEntity.getTaxpayerCode(), deptEntity.getDeptId()); @@ -343,7 +354,7 @@ public class SkOrderServiceImpl implements OrderService { ddmxxxBO.setSPSL(sl); ddmxxxBO.setJE(new BigDecimal(orderItemInfo.getHsje()).setScale(ConfigureConstant.INT_2, RoundingMode.HALF_UP).toPlainString()); ddmxxxBO.setSL(new BigDecimal(orderItemInfo.getSl()).divide(new BigDecimal(ConfigureConstant.STRING_100)).toPlainString()); - ddmxxxBO.setSE(new BigDecimal(orderItemInfo.getSe()).setScale(ConfigureConstant.INT_2,RoundingMode.HALF_UP).toPlainString()); + ddmxxxBO.setSE(new BigDecimal(orderItemInfo.getSe()).setScale(ConfigureConstant.INT_2, RoundingMode.HALF_UP).toPlainString()); ddmxxxBO.setDJ(getDynamicLengthDecimal(ddmxxxBO.getJE(), ddmxxxBO.getSPSL())); ddmxxxBO.setFPHXZ(ConfigureConstant.STRING_0); ddmxxxBO.setHSBZ(ConfigureConstant.STRING_1); diff --git a/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/YyOrderServiceImpl.java b/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/YyOrderServiceImpl.java index 09b4ba4..025be72 100644 --- a/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/YyOrderServiceImpl.java +++ b/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/YyOrderServiceImpl.java @@ -3,6 +3,7 @@ package com.dxhy.order.consumer.modules.bespoke.service.impl; import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson2.JSON; import com.dxhy.base.common.constant.OrderManagementConstant; +import com.dxhy.base.common.model.OrderInfo; import com.dxhy.base.common.model.R; import com.dxhy.base.common.utils.DecimalCalculateUtil; import com.dxhy.base.service.module.buyer.model.BuyerEntity; @@ -34,19 +35,21 @@ import com.dxhy.order.consumer.modules.bespoke.service.OrderService; import com.dxhy.order.consumer.openapi.protocol.v4.order.*; import com.dxhy.order.consumer.openapi.protocol.v6.order.QdTxxBO; import com.dxhy.order.consumer.openapi.service.AllocateInvoiceInterfaceServiceV3; +import com.dxhy.order.invoice.module.invoice.dao.OrderInfoMapper; +import com.dxhy.order.invoice.module.invoice.service.impl.OrderInvoiceInfoServiceImpl; import com.github.pagehelper.PageInfo; import com.github.pagehelper.page.PageMethod; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; + import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Optional; +import java.util.*; @Slf4j @Service("yyOrderService") @@ -82,6 +85,12 @@ public class YyOrderServiceImpl implements OrderService { @Resource private TInvoiceInvmapMapper tInvoiceInvmapMapper; + @Resource + private OrderInfoMapper orderInfoMapper; + + @Resource + private OrderInvoiceInfoServiceImpl orderInvoiceInfoService; + //订单读入 @Override public R orderRead(ReqParam reqParam) { @@ -107,10 +116,10 @@ public class YyOrderServiceImpl implements OrderService { } } } - }catch (Exception e){ - log.error("订单读取异常",e); + } catch (Exception e) { + log.error("订单读取异常", e); return R.error("订单读取异常"); - }finally { + } finally { DynamicContextHolder.push(ConfigureConstant.MAIN); } return R.ok("成功读取" + count + "条订单数据"); @@ -188,54 +197,79 @@ public class YyOrderServiceImpl implements OrderService { } @Override - public R backMsg(OrderInvoiceInfo orderInvoiceInfo, List orderOriginExtendInfos, FileModel fileModel,String ddh) { + public R backMsg(OrderInvoiceInfo orderInvoiceInfo, List orderOriginExtendInfos, FileModel fileModel, String ddh) { List newTableList = new ArrayList<>(); - for (OrderOriginExtendInfo orderOriginExtendInfo : orderOriginExtendInfos) { - - NewTable newTable = new NewTable(); - newTable.setCDLCode(orderOriginExtendInfo.getOriginDdh()); - newTable.setInvoiceCode(orderInvoiceInfo.getSdfphm()); - newTable.setInvoiceTime(orderInvoiceInfo.getKprq()); - newTable.setInvoiceAmount(orderInvoiceInfo.getKphjje()); - newTable.setInvoicePhoto(fileModel.getFilePath()); - newTable.setInvoiceFilename(fileModel.getFileName()); - newTable.setOperater(orderInvoiceInfo.getKpr()); - newTable.setOperateDate(orderInvoiceInfo.getKprq()); - newTableList.add(newTable); - - //更新会写表 - String reBackFild = fildConfig.getReBackFild(orderInvoiceInfo.getXhfNsrsbh()); - yyOrderMapper.updateBackMsg(reBackFild,orderOriginExtendInfo.getOriginDdh(),orderInvoiceInfo.getSdfphm()); + ddh = orderInvoiceInfo.getDdh(); + if (ConfigureConstant.STRING_1.equals(orderInvoiceInfo.getKplx())) { + //查询订单信息获取原蓝字发票号码 + List shList = Arrays.asList(orderInvoiceInfo.getXhfNsrsbh()); + OrderInfo orderInfo = orderInfoMapper.selectOrderInfoByDdqqlsh(orderInvoiceInfo.getFpqqlsh(), shList); + if (ObjectUtils.isEmpty(orderInfo)) { + log.error("未查询到相关订单信息"); + return R.error("未查询到相关订单信息"); + } + OrderInvoiceInfo orderInvoiceInfoLz = orderInvoiceInfoService.selectOrderInvoiceInfoByFpdmAndFphm("", "", orderInfo.getYfpHm(), shList); + if (ObjectUtils.isEmpty(orderInvoiceInfoLz)) { + log.error("未查询到相关蓝字发票信息"); + return R.error("未查询到相关蓝字发票信息"); + } + + OrderInfo orderInfoLz = orderInfoMapper.selectOrderInfoByDdqqlsh(orderInvoiceInfoLz.getFpqqlsh(), shList); + + ddh = orderInfoLz.getDdh(); + + DynamicContextHolder.push(orderInvoiceInfo.getXhfNsrsbh()); + ddh =yyOrderMapper.findBackDdh(ddh); + } + + NewTable newTable = new NewTable(); + newTable.setCDLCode(ddh); + newTable.setInvoiceNo(orderInvoiceInfo.getSdfphm()); + newTable.setInvoiceTime(orderInvoiceInfo.getKprq()); + newTable.setInvoiceAmount(orderInvoiceInfo.getKphjje()); + newTable.setInvoicePhoto(fileModel.getFilePath()); + newTable.setInvoiceFilename(fileModel.getFileName()); + newTable.setOperater(orderInvoiceInfo.getKpr()); + newTable.setOperateDate(orderInvoiceInfo.getKprq()); + newTableList.add(newTable); + + //更新会写表 + String reBackFild = fildConfig.getReBackFild(orderInvoiceInfo.getXhfNsrsbh()); + DynamicContextHolder.push(orderInvoiceInfo.getXhfNsrsbh()); + yyOrderMapper.updateBackMsg(reBackFild, ddh, orderInvoiceInfo.getSdfphm()); + + log.debug("待回传数据:{}", JSON.toJSONString(newTableList)); - int count = accressReback(newTableList,orderInvoiceInfo.getXhfNsrsbh()); + int count = accressReback(newTableList, orderInvoiceInfo.getXhfNsrsbh(), orderInvoiceInfo.getSdfphm()); - if (count >=newTableList.size()){ + if (count >= newTableList.size()) { return R.ok("成功回传" + count + "条数据"); } return R.error("回传失败"); } - public int accressReback(List newTableList,String nsrsbh) { + public int accressReback(List newTableList, String nsrsbh, String fphm) { int count = ConfigureConstant.INT_0; + DynamicContextHolder.push(ConfigureConstant.MAIN); + tInvoiceInvmapMapper.deleteBackMsg(fphm); for (NewTable newTable : newTableList) { DynamicContextHolder.push(nsrsbh); List ddbhList = yyOrderMapper.getDdbh(newTable.getCDLCode()); - log.debug("查询到中间表信息:{}", JSON.toJSONString(ddbhList)); - if (CollectionUtils.isNotEmpty(ddbhList)){ - DynamicContextHolder.push(ConfigureConstant.MAIN); - tInvoiceInvmapMapper.deleteBackMsg(newTable.getCDLCode()); + log.debug("查询到中间表信息:{}", JSON.toJSONString(ddbhList)); + if (CollectionUtils.isNotEmpty(ddbhList)) { for (InvoiceBpmmap invoiceBpmmap : ddbhList) { NewTable newTableFull = new NewTable(); BeanUtil.copyProperties(newTable, newTableFull); newTableFull.setBpmNo(invoiceBpmmap.getBpmno()); newTableFull.setBpmlsNo(invoiceBpmmap.getBpmlsno()); - count+= tInvoiceInvmapMapper.insertBackMsg(newTableFull); + DynamicContextHolder.push(ConfigureConstant.MAIN); + count += tInvoiceInvmapMapper.insertBackMsg(newTableFull); } } @@ -273,8 +307,8 @@ public class YyOrderServiceImpl implements OrderService { yyOrderInfo.setStatus(ConfigureConstant.STRING_0); yyOrderInfo.setEntId(reqParam.getEntId()); yyOrderInfo.setDetailCount(String.valueOf(yyOrderItemInfoList.size())); - yyOrderInfo.setHsje(hsje.add(se).setScale(ConfigureConstant.INT_2,RoundingMode.HALF_UP).toPlainString()); - yyOrderInfo.setSe(se.setScale(ConfigureConstant.INT_2,RoundingMode.HALF_UP).toPlainString()); + yyOrderInfo.setHsje(hsje.setScale(ConfigureConstant.INT_2, RoundingMode.HALF_UP).toPlainString()); + yyOrderInfo.setSe(se.setScale(ConfigureConstant.INT_2, RoundingMode.HALF_UP).toPlainString()); if (yyOrderInfo.getCvouchtype().equals(ConfigureConstant.STRING_26)) { yyOrderInfo.setCvouchtype(ConfigureConstant.STRING_001); } diff --git a/order-management-order/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/OrderPushInvoiceServiceImpl.java b/order-management-order/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/OrderPushInvoiceServiceImpl.java index 25d4eb1..d93034c 100644 --- a/order-management-order/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/OrderPushInvoiceServiceImpl.java +++ b/order-management-order/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/OrderPushInvoiceServiceImpl.java @@ -1163,18 +1163,17 @@ public class OrderPushInvoiceServiceImpl implements OrderPushInvoiceService { for (OrderInvoiceInfo orderInvoiceInfo : orderInvoiceInfoList) { OrderInfo orderInfo = orderInfoService.queryOrderInfoByFpqqlsh(orderInvoiceInfo.getFpqqlsh(), shList); //如果购买方邮箱为空时,推送数据不放入邮箱推送队列 - if (StringUtils.isNotBlank(orderInfo.getGhfEmail())) { - //发票邮箱交付请求数据组装 - FpYxTsMqData fpYxTsMqData = new FpYxTsMqData(); - fpYxTsMqData.setShList(shList); - fpYxTsMqData.setFpqqlsh(orderInvoiceInfo.getFpqqlsh()); - fpYxTsMqData.setEmailAddress(orderInfo.getGhfEmail()); - fpYxTsMqData.setPushType(OrderInfoEnum.EMAIL_PUSH_TYPE_1.getKey()); + //发票邮箱交付请求数据组装 + FpYxTsMqData fpYxTsMqData = new FpYxTsMqData(); + fpYxTsMqData.setShList(shList); + fpYxTsMqData.setFpqqlsh(orderInvoiceInfo.getFpqqlsh()); + fpYxTsMqData.setEmailAddress(orderInfo.getGhfEmail()); + fpYxTsMqData.setPushType(OrderInfoEnum.EMAIL_PUSH_TYPE_1.getKey()); + + log.info("发票版式文件邮箱推送,放入队列的参数:{}", JsonUtils.getInstance().toJsonString(fpYxTsMqData)); + rabbitMqSendMessageService.autoSendRabbitMqMessageForBusiness(NsrQueueEnum.YXTS_MESSAGE.getValue(), JsonUtils.getInstance().toJsonString(fpYxTsMqData)); - log.info("发票版式文件邮箱推送,放入队列的参数:{}", JsonUtils.getInstance().toJsonString(fpYxTsMqData)); - rabbitMqSendMessageService.autoSendRabbitMqMessageForBusiness(NsrQueueEnum.YXTS_MESSAGE.getValue(), JsonUtils.getInstance().toJsonString(fpYxTsMqData)); - } } } diff --git a/order-management-order/src/main/resources/mybatis/mapper/TInvoiceInvmapMapper.xml b/order-management-order/src/main/resources/mybatis/mapper/TInvoiceInvmapMapper.xml index fe7da2b..97c64f5 100644 --- a/order-management-order/src/main/resources/mybatis/mapper/TInvoiceInvmapMapper.xml +++ b/order-management-order/src/main/resources/mybatis/mapper/TInvoiceInvmapMapper.xml @@ -90,7 +90,7 @@ - delete from T_INVOICE_INVMAP where cdlcode = #{cdlCode} + delete from T_INVOICE_INVMAP where invoiceNo = #{cdlCode} diff --git a/order-management-order/src/main/resources/mybatis/mapper/YyOrderMapper.xml b/order-management-order/src/main/resources/mybatis/mapper/YyOrderMapper.xml index 78d38da..219b464 100644 --- a/order-management-order/src/main/resources/mybatis/mapper/YyOrderMapper.xml +++ b/order-management-order/src/main/resources/mybatis/mapper/YyOrderMapper.xml @@ -54,4 +54,10 @@ update salebillvouch set ${fild} = #{fph} where cdlcode = #{ddh} + + diff --git a/sims-base-service/src/main/java/com/dxhy/base/service/module/commodity/service/impl/VerifyCommodityCodeServiceImpl.java b/sims-base-service/src/main/java/com/dxhy/base/service/module/commodity/service/impl/VerifyCommodityCodeServiceImpl.java index 655e12e..57a76b4 100644 --- a/sims-base-service/src/main/java/com/dxhy/base/service/module/commodity/service/impl/VerifyCommodityCodeServiceImpl.java +++ b/sims-base-service/src/main/java/com/dxhy/base/service/module/commodity/service/impl/VerifyCommodityCodeServiceImpl.java @@ -459,10 +459,10 @@ public class VerifyCommodityCodeServiceImpl implements VerifyCommodityCodeServic /** * 规格型号 */ - checkResultMap = CheckParamUtil.checkParam(BaseServiceEnum.COMMODITY_MESSAGE_SYNC_ERROR_173027, commodityCodeEntity.getGgxh()); - if (!BaseServiceEnum.SUCCESS.getKey().equals(checkResultMap.get(OrderManagementConstant.ERRORCODE))) { - errorListMap.add(checkResultMap); - } +// checkResultMap = CheckParamUtil.checkParam(BaseServiceEnum.COMMODITY_MESSAGE_SYNC_ERROR_173027, commodityCodeEntity.getGgxh()); +// if (!BaseServiceEnum.SUCCESS.getKey().equals(checkResultMap.get(OrderManagementConstant.ERRORCODE))) { +// errorListMap.add(checkResultMap); +// } /**