Compare commits

...

2 Commits

Author SHA1 Message Date
路明慧 e66903730b fix:联调回推问题修改及优化 11 months ago
路明慧 0a56ba37cc fix:联调回推问题修改及优化 11 months ago
  1. 12
      order-management-base-service/src/main/java/com/dxhy/order/baseservice/utils/OrderCommonUtils.java
  2. 3
      order-management-order/src/main/java/com/dxhy/order/consumer/dao/SkOrderMapper.java
  3. 2
      order-management-order/src/main/java/com/dxhy/order/consumer/dao/YyOrderMapper.java
  4. 2
      order-management-order/src/main/java/com/dxhy/order/consumer/handle/EmailPushTask.java
  5. 4
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/config/FildConfig.java
  6. 95
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/config/datasource/LuoxinBack.java
  7. 13
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/model/sk/BackDjbh.java
  8. 12
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/model/sk/BackProduct.java
  9. 67
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/DefaultFtpProcessor.java
  10. 36
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/OrderHandleServiceImpl.java
  11. 44
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/SkOrderServiceImpl.java
  12. 62
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/YyOrderServiceImpl.java
  13. 9
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceDataServiceImpl.java
  14. 3
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/OrderPushInvoiceServiceImpl.java
  15. 3
      order-management-order/src/main/resources/mybatis/mapper/SkOrderItemInfoMapper.xml
  16. 15
      order-management-order/src/main/resources/mybatis/mapper/SkOrderMapper.xml
  17. 2
      order-management-order/src/main/resources/mybatis/mapper/TInvoiceInvmapMapper.xml
  18. 6
      order-management-order/src/main/resources/mybatis/mapper/YyOrderMapper.xml
  19. 8
      sims-base-service/src/main/java/com/dxhy/base/service/module/commodity/service/impl/VerifyCommodityCodeServiceImpl.java

@ -1768,10 +1768,16 @@ public class OrderCommonUtils {
} }
if (StringUtils.isNotBlank(fpzlDm)){ if (StringUtils.isNotBlank(fpzlDm)){
OrderInfoEnum codeValue = OrderInfoEnum.getCodeValue(fpzlDm); String fpmc = "";
if (codeValue != null){ 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(ConfigureConstant.STRING_LINE);
stringBuilder.append(codeValue.getValue()); stringBuilder.append(fpmc);
} }
} }
//补全号码 //补全号码

@ -1,6 +1,7 @@
package com.dxhy.order.consumer.dao; package com.dxhy.order.consumer.dao;
import com.dxhy.order.consumer.modules.bespoke.model.req.ReqParam; import com.dxhy.order.consumer.modules.bespoke.model.req.ReqParam;
import com.dxhy.order.consumer.modules.bespoke.model.sk.BackDjbh;
import com.dxhy.order.consumer.modules.bespoke.model.sk.BackProduct; import com.dxhy.order.consumer.modules.bespoke.model.sk.BackProduct;
import com.dxhy.order.consumer.modules.bespoke.model.sk.SkOrderInfo; import com.dxhy.order.consumer.modules.bespoke.model.sk.SkOrderInfo;
import com.dxhy.order.consumer.modules.bespoke.model.sk.SkOrderItemInfo; import com.dxhy.order.consumer.modules.bespoke.model.sk.SkOrderItemInfo;
@ -18,4 +19,6 @@ public interface SkOrderMapper {
int updateOrder(SkOrderInfo skOrderInfo); int updateOrder(SkOrderInfo skOrderInfo);
void callProcedure(BackProduct backProduct); void callProcedure(BackProduct backProduct);
BackDjbh selectBackDjbh(String originDdh);
} }

@ -21,4 +21,6 @@ public interface YyOrderMapper {
List<InvoiceBpmmap> getDdbh(String cdlCode); List<InvoiceBpmmap> getDdbh(String cdlCode);
int updateBackMsg(@Param("fild") String reBackFild, @Param("ddh") String originDdh, @Param("fph") String sdfphm); int updateBackMsg(@Param("fild") String reBackFild, @Param("ddh") String originDdh, @Param("fph") String sdfphm);
String findBackDdh(String ddh);
} }

@ -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()); paraMap.put("endTime", DateUtil.now());

@ -16,7 +16,7 @@ public class FildConfig {
return field.get(nsrsbh); return field.get(nsrsbh);
} }
public void setReBackFild(Map<String,String> reBack){ public void setField(Map<String,String> field){
this.field = reBack; this.field = field;
} }
} }

@ -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<String,String> back = new HashMap<>();
public String getWrite(String nsrsbh){
return back.get(nsrsbh);
}
public void setBack(Map<String,String> 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 {
}
}
}

@ -0,0 +1,13 @@
package com.dxhy.order.consumer.modules.bespoke.model.sk;
import lombok.Data;
@Data
public class BackDjbh {
private String djbh;
private String bpmlsNo;
private String bpmNo;
}

@ -2,6 +2,8 @@ package com.dxhy.order.consumer.modules.bespoke.model.sk;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
@Data @Data
public class BackProduct { public class BackProduct {
@ -17,15 +19,15 @@ public class BackProduct {
private String kpr; private String kpr;
private String spsl; private BigDecimal spsl;
private String dj; private BigDecimal dj;
private String je; private BigDecimal je;
private String sl; private BigDecimal sl;
private String se; private BigDecimal se;
private String mark; private String mark;
} }

@ -1,6 +1,7 @@
package com.dxhy.order.consumer.modules.bespoke.service.impl; 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.baseservice.constant.ConfigurerInfo;
import com.dxhy.order.consumer.modules.bespoke.config.FtpProperties; import com.dxhy.order.consumer.modules.bespoke.config.FtpProperties;
import com.dxhy.order.consumer.modules.bespoke.service.FtpProcessor; import com.dxhy.order.consumer.modules.bespoke.service.FtpProcessor;
@ -70,11 +71,47 @@ public class DefaultFtpProcessor implements FtpProcessor {
boolean flag = false; boolean flag = false;
FTPClient ftpClient = getFtpClient(); FTPClient ftpClient = getFtpClient();
try { try {
String fullPath = path + "/" + fileName;
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
createDirectory(path, ftpClient); ftpClient.enterLocalPassiveMode();
ftpClient.makeDirectory(path); boolean dirExists = ftpClient.changeWorkingDirectory(path);
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); ftpClient.storeFile(fileName, inputStream);
} else {
log.error("删除文件失败");
}
} else {
// 直接上传文件
ftpClient.storeFile(fileName, inputStream);
}
flag = true; flag = true;
} catch (Exception e) { } catch (Exception e) {
log.error("上传文件出错!:{}", e); log.error("上传文件出错!:{}", e);
@ -209,6 +246,30 @@ public class DefaultFtpProcessor implements FtpProcessor {
return flag; 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;
}
/** /**
* 创建目录 * 创建目录
* *

@ -1,5 +1,6 @@
package com.dxhy.order.consumer.modules.bespoke.service.impl; 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.collection.CollUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.IoUtil; 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.OrderProcessInfo;
import com.dxhy.base.common.model.R; import com.dxhy.base.common.model.R;
import com.dxhy.base.common.model.qd.OrderInfoQd; 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.DistributedKeyMaker;
import com.dxhy.base.common.utils.JsonUtils; import com.dxhy.base.common.utils.JsonUtils;
import com.dxhy.base.common.utils.NsrsbhUtils; 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.dao.OrderItemInfoMapper;
import com.dxhy.order.invoice.module.invoice.model.FileDownLoad; import com.dxhy.order.invoice.module.invoice.model.FileDownLoad;
import com.dxhy.order.invoice.module.invoice.service.OrderInvoiceInfoService; import com.dxhy.order.invoice.module.invoice.service.OrderInvoiceInfoService;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
@ -46,6 +49,7 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -284,16 +288,18 @@ public class OrderHandleServiceImpl implements OrderHandleService {
if (ObjectUtils.isEmpty(kprq)) { if (ObjectUtils.isEmpty(kprq)) {
kprq = new Date(); kprq = new Date();
} }
String format = DateUtil.format(kprq, ConfigureConstant.DATE_FORMAT_DATE_Y_M); String format = DateUtil.format(kprq, ConfigureConstant.DATE_FORMAT_DATE_YM);
String[] split = format.split(ConfigureConstant.STRING_LINE);
path.append(ConfigureConstant.STRING_SLASH_LINE) path.append(ConfigureConstant.STRING_SLASH_LINE)
.append(split[ConfigureConstant.INT_0]) .append(format);
.append(ConfigureConstant.STRING_SLASH_LINE)
.append(split[ConfigureConstant.INT_1]);
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){ if (flag){
fileModel.setCode(ConfigureConstant.STRING_0000); fileModel.setCode(ConfigureConstant.STRING_0000);
@ -380,12 +386,12 @@ public class OrderHandleServiceImpl implements OrderHandleService {
OrderInfo orderInfoLz = orderInfoMapper.selectOrderInfoByDdqqlsh(orderInvoiceInfoLz.getFpqqlsh(), shList); OrderInfo orderInfoLz = orderInfoMapper.selectOrderInfoByDdqqlsh(orderInvoiceInfoLz.getFpqqlsh(), shList);
OrderInfo orderInfoHz = orderInfoMapper.findOrderByDdh(orderInfoLz.getByzd1()); List<OrderItemInfo> orderItemInfos = orderItemInfoMapper.selectOrderItemInfoByOrderId(orderInfoLz.getId(), shList);
if (CollectionUtils.isEmpty(orderItemInfos)){
orderId = orderInfoHz.getId(); return R.error("未查询到相关订单明细信息");
}
ddh = orderInfoLz.getDdh(); ddh = orderItemInfos.get(ConfigureConstant.INT_0).getByzd2();
orderId = orderInfo.getId();
} }
//获取原始订单信息 //获取原始订单信息
OrderOriginExtendInfo orderOriginExtendInfo = new OrderOriginExtendInfo(); OrderOriginExtendInfo orderOriginExtendInfo = new OrderOriginExtendInfo();
@ -415,11 +421,11 @@ public class OrderHandleServiceImpl implements OrderHandleService {
return r; return r;
} }
@SneakyThrows
@Override @Override
public boolean test() { public boolean test() {
ByteArrayInputStream utf8Stream = IoUtil.toUtf8Stream("独有英雄驱虎豹,更无豪杰怕熊罴"); ByteArrayInputStream utf8Stream = IoUtil.toUtf8Stream("独有英雄驱虎豹,更无豪杰怕熊罴");
boolean flag = ftpProcessor.uploadFile(ftpProperties.getBasePath()+"/base/pdf","poem.pdf", new FileInputStream("D:\\91371311MAC3H1T95T_24372000000140008586_1722566727805.pdf"));
boolean flag = ftpProcessor.uploadFile(ftpProperties.getBasePath()+"/test", "poem.txt", utf8Stream);
return flag; return flag;
} }

@ -23,9 +23,11 @@ import com.dxhy.order.consumer.dao.SkOrderInfoMapper;
import com.dxhy.order.consumer.dao.SkOrderItemInfoMapper; import com.dxhy.order.consumer.dao.SkOrderItemInfoMapper;
import com.dxhy.order.consumer.dao.SkOrderMapper; import com.dxhy.order.consumer.dao.SkOrderMapper;
import com.dxhy.order.consumer.dao.TInvoiceInvmapMapper; 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.config.datasource.config.DynamicContextHolder;
import com.dxhy.order.consumer.modules.bespoke.model.req.FileModel; import com.dxhy.order.consumer.modules.bespoke.model.req.FileModel;
import com.dxhy.order.consumer.modules.bespoke.model.req.ReqParam; import com.dxhy.order.consumer.modules.bespoke.model.req.ReqParam;
import com.dxhy.order.consumer.modules.bespoke.model.sk.BackDjbh;
import com.dxhy.order.consumer.modules.bespoke.model.sk.BackProduct; import com.dxhy.order.consumer.modules.bespoke.model.sk.BackProduct;
import com.dxhy.order.consumer.modules.bespoke.model.sk.SkOrderInfo; import com.dxhy.order.consumer.modules.bespoke.model.sk.SkOrderInfo;
import com.dxhy.order.consumer.modules.bespoke.model.sk.SkOrderItemInfo; import com.dxhy.order.consumer.modules.bespoke.model.sk.SkOrderItemInfo;
@ -34,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.v4.order.*;
import com.dxhy.order.consumer.openapi.protocol.v6.order.QdTxxBO; import com.dxhy.order.consumer.openapi.protocol.v6.order.QdTxxBO;
import com.dxhy.order.consumer.openapi.service.AllocateInvoiceInterfaceServiceV3; 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.dao.OrderItemInfoMapper;
import com.dxhy.order.invoice.module.invoice.service.OrderInvoiceInfoService;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.github.pagehelper.page.PageMethod; import com.github.pagehelper.page.PageMethod;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
@ -80,6 +85,9 @@ public class SkOrderServiceImpl implements OrderService {
@Resource @Resource
private TInvoiceInvmapMapper tInvoiceInvmapMapper; private TInvoiceInvmapMapper tInvoiceInvmapMapper;
@Resource
private LuoxinBack luoxinBack;
// 订单读入 // 订单读入
@Override @Override
public R orderRead(ReqParam reqParam) { public R orderRead(ReqParam reqParam) {
@ -190,34 +198,49 @@ public class SkOrderServiceImpl implements OrderService {
backProduct.setDjbh(orderOriginExtendInfo.getOriginDdh()); backProduct.setDjbh(orderOriginExtendInfo.getOriginDdh());
backProduct.setMxxh(orderItemInfo.getSphxh()); backProduct.setMxxh(orderItemInfo.getSphxh());
backProduct.setKprq(DateUtil.formatDate(orderInvoiceInfo.getKprq())); backProduct.setKprq(DateUtil.formatDate(orderInvoiceInfo.getKprq()));
backProduct.setBz(orderItemInfo.getBz()); backProduct.setBz(orderItemInfo.getBz() == null ? "" : orderItemInfo.getBz());
backProduct.setKpr(orderInvoiceInfo.getKpr()); backProduct.setKpr(orderInvoiceInfo.getKpr() == null ? "" : orderInvoiceInfo.getKpr());
backProduct.setSpsl(orderItemInfo.getXmsl()); backProduct.setSpsl(new BigDecimal(orderItemInfo.getXmsl()));
backProduct.setDj(orderItemInfo.getXmdj()); backProduct.setDj(new BigDecimal(orderItemInfo.getXmdj()));
backProduct.setJe(orderItemInfo.getXmje()); backProduct.setJe(new BigDecimal(orderItemInfo.getXmje()));
backProduct.setSl(orderItemInfo.getSl()); backProduct.setSl(new BigDecimal(orderItemInfo.getSl()));
backProduct.setSe(orderItemInfo.getSe()); backProduct.setSe(new BigDecimal(orderItemInfo.getSe()));
backProduct.setMark(ConfigureConstant.KP); backProduct.setMark(ConfigureConstant.KP);
if (ConfigureConstant.STRING_1.equals(orderInvoiceInfo.getKplx())) { if (ConfigureConstant.STRING_1.equals(orderInvoiceInfo.getKplx())) {
backProduct.setDjbh(ddh); backProduct.setDjbh(ddh);
backProduct.setMark(ConfigureConstant.CH); backProduct.setMark(ConfigureConstant.CH);
} }
DynamicContextHolder.push(orderInvoiceInfo.getXhfNsrsbh()); DynamicContextHolder.push(orderInvoiceInfo.getXhfNsrsbh());
log.info("调用存储过程参数:{}", JSON.toJSONString(backProduct));
skOrderMapper.callProcedure(backProduct); skOrderMapper.callProcedure(backProduct);
//回写创建表 //回写创建表
DynamicContextHolder.push(ConfigureConstant.MAIN); 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(); NewTable newTable = new NewTable();
newTable.setCDLCode(orderOriginExtendInfo.getOriginDdh()); if (backDjbh != null) {
newTable.setInvoiceCode(orderInvoiceInfo.getSdfphm()); newTable.setCDLCode(backDjbh.getDjbh());
newTable.setBpmNo(backDjbh.getBpmNo());
newTable.setBpmlsNo(backDjbh.getBpmlsNo());
}
newTable.setInvoiceNo(orderInvoiceInfo.getSdfphm());
newTable.setInvoiceTime(orderInvoiceInfo.getKprq()); newTable.setInvoiceTime(orderInvoiceInfo.getKprq());
newTable.setInvoiceAmount(orderInvoiceInfo.getKphjje()); newTable.setInvoiceAmount(orderInvoiceInfo.getKphjje());
newTable.setInvoicePhoto(fileModel.getFilePath()); newTable.setInvoicePhoto(fileModel.getFilePath());
newTable.setInvoiceFilename(fileModel.getFileName()); newTable.setInvoiceFilename(fileModel.getFileName());
newTable.setOperater(orderInvoiceInfo.getKpr()); newTable.setOperater(orderInvoiceInfo.getKpr());
newTable.setOperateDate(orderInvoiceInfo.getKprq()); newTable.setOperateDate(orderInvoiceInfo.getKprq());
newTable.setShipper(luoxinBack.getWrite(orderInvoiceInfo.getXhfNsrsbh()));
DynamicContextHolder.push(ConfigureConstant.MAIN);
tInvoiceInvmapMapper.deleteBackMsg(newTable.getCDLCode()); tInvoiceInvmapMapper.deleteBackMsg(newTable.getCDLCode());
tInvoiceInvmapMapper.insertBackMsg(newTable); tInvoiceInvmapMapper.insertBackMsg(newTable);
} }
} }
@ -341,7 +364,6 @@ public class SkOrderServiceImpl implements OrderService {
taxAmount = DecimalCalculateUtil.bigDecimalAdd(taxAmount, orderItemInfo.getSe(), ConfigureConstant.INT_2); taxAmount = DecimalCalculateUtil.bigDecimalAdd(taxAmount, orderItemInfo.getSe(), ConfigureConstant.INT_2);
//设置红字回写订单号 //设置红字回写订单号
ddmxxxBO.setBYZD2(orderItemInfo.getXgdjbh()); ddmxxxBO.setBYZD2(orderItemInfo.getXgdjbh());
ddtxxBO.setBYZD1(orderItemInfo.getXgdjbh());
ddmxxxBOList.add(ddmxxxBO); ddmxxxBOList.add(ddmxxxBO);
} }
//金额、税额、价税合计 //金额、税额、价税合计

@ -3,6 +3,7 @@ package com.dxhy.order.consumer.modules.bespoke.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.dxhy.base.common.constant.OrderManagementConstant; 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.model.R;
import com.dxhy.base.common.utils.DecimalCalculateUtil; import com.dxhy.base.common.utils.DecimalCalculateUtil;
import com.dxhy.base.service.module.buyer.model.BuyerEntity; 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.v4.order.*;
import com.dxhy.order.consumer.openapi.protocol.v6.order.QdTxxBO; import com.dxhy.order.consumer.openapi.protocol.v6.order.QdTxxBO;
import com.dxhy.order.consumer.openapi.service.AllocateInvoiceInterfaceServiceV3; 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.PageInfo;
import com.github.pagehelper.page.PageMethod; import com.github.pagehelper.page.PageMethod;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; 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.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.util.ArrayList; import java.util.*;
import java.util.Date;
import java.util.List;
import java.util.Optional;
@Slf4j @Slf4j
@Service("yyOrderService") @Service("yyOrderService")
@ -82,6 +85,12 @@ public class YyOrderServiceImpl implements OrderService {
@Resource @Resource
private TInvoiceInvmapMapper tInvoiceInvmapMapper; private TInvoiceInvmapMapper tInvoiceInvmapMapper;
@Resource
private OrderInfoMapper orderInfoMapper;
@Resource
private OrderInvoiceInfoServiceImpl orderInvoiceInfoService;
//订单读入 //订单读入
@Override @Override
public R orderRead(ReqParam reqParam) { public R orderRead(ReqParam reqParam) {
@ -192,11 +201,34 @@ public class YyOrderServiceImpl implements OrderService {
List<NewTable> newTableList = new ArrayList<>(); List<NewTable> newTableList = new ArrayList<>();
for (OrderOriginExtendInfo orderOriginExtendInfo : orderOriginExtendInfos) { ddh = orderInvoiceInfo.getDdh();
if (ConfigureConstant.STRING_1.equals(orderInvoiceInfo.getKplx())) {
//查询订单信息获取原蓝字发票号码
List<String> 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 newTable = new NewTable();
newTable.setCDLCode(orderOriginExtendInfo.getOriginDdh()); newTable.setCDLCode(ddh);
newTable.setInvoiceCode(orderInvoiceInfo.getSdfphm()); newTable.setInvoiceNo(orderInvoiceInfo.getSdfphm());
newTable.setInvoiceTime(orderInvoiceInfo.getKprq()); newTable.setInvoiceTime(orderInvoiceInfo.getKprq());
newTable.setInvoiceAmount(orderInvoiceInfo.getKphjje()); newTable.setInvoiceAmount(orderInvoiceInfo.getKphjje());
newTable.setInvoicePhoto(fileModel.getFilePath()); newTable.setInvoicePhoto(fileModel.getFilePath());
@ -207,11 +239,12 @@ public class YyOrderServiceImpl implements OrderService {
//更新会写表 //更新会写表
String reBackFild = fildConfig.getReBackFild(orderInvoiceInfo.getXhfNsrsbh()); String reBackFild = fildConfig.getReBackFild(orderInvoiceInfo.getXhfNsrsbh());
yyOrderMapper.updateBackMsg(reBackFild,orderOriginExtendInfo.getOriginDdh(),orderInvoiceInfo.getSdfphm()); DynamicContextHolder.push(orderInvoiceInfo.getXhfNsrsbh());
} yyOrderMapper.updateBackMsg(reBackFild, ddh, orderInvoiceInfo.getSdfphm());
log.debug("待回传数据:{}", JSON.toJSONString(newTableList)); 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.ok("成功回传" + count + "条数据");
@ -220,21 +253,22 @@ public class YyOrderServiceImpl implements OrderService {
return R.error("回传失败"); return R.error("回传失败");
} }
public int accressReback(List<NewTable> newTableList,String nsrsbh) { public int accressReback(List<NewTable> newTableList, String nsrsbh, String fphm) {
int count = ConfigureConstant.INT_0; int count = ConfigureConstant.INT_0;
DynamicContextHolder.push(ConfigureConstant.MAIN);
tInvoiceInvmapMapper.deleteBackMsg(fphm);
for (NewTable newTable : newTableList) { for (NewTable newTable : newTableList) {
DynamicContextHolder.push(nsrsbh); DynamicContextHolder.push(nsrsbh);
List<InvoiceBpmmap> ddbhList = yyOrderMapper.getDdbh(newTable.getCDLCode()); List<InvoiceBpmmap> ddbhList = yyOrderMapper.getDdbh(newTable.getCDLCode());
log.debug("查询到中间表信息:{}", JSON.toJSONString(ddbhList)); log.debug("查询到中间表信息:{}", JSON.toJSONString(ddbhList));
if (CollectionUtils.isNotEmpty(ddbhList)) { if (CollectionUtils.isNotEmpty(ddbhList)) {
DynamicContextHolder.push(ConfigureConstant.MAIN);
tInvoiceInvmapMapper.deleteBackMsg(newTable.getCDLCode());
for (InvoiceBpmmap invoiceBpmmap : ddbhList) { for (InvoiceBpmmap invoiceBpmmap : ddbhList) {
NewTable newTableFull = new NewTable(); NewTable newTableFull = new NewTable();
BeanUtil.copyProperties(newTable, newTableFull); BeanUtil.copyProperties(newTable, newTableFull);
newTableFull.setBpmNo(invoiceBpmmap.getBpmno()); newTableFull.setBpmNo(invoiceBpmmap.getBpmno());
newTableFull.setBpmlsNo(invoiceBpmmap.getBpmlsno()); newTableFull.setBpmlsNo(invoiceBpmmap.getBpmlsno());
DynamicContextHolder.push(ConfigureConstant.MAIN);
count += tInvoiceInvmapMapper.insertBackMsg(newTableFull); count += tInvoiceInvmapMapper.insertBackMsg(newTableFull);
} }
@ -273,7 +307,7 @@ public class YyOrderServiceImpl implements OrderService {
yyOrderInfo.setStatus(ConfigureConstant.STRING_0); yyOrderInfo.setStatus(ConfigureConstant.STRING_0);
yyOrderInfo.setEntId(reqParam.getEntId()); yyOrderInfo.setEntId(reqParam.getEntId());
yyOrderInfo.setDetailCount(String.valueOf(yyOrderItemInfoList.size())); yyOrderInfo.setDetailCount(String.valueOf(yyOrderItemInfoList.size()));
yyOrderInfo.setHsje(hsje.add(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()); yyOrderInfo.setSe(se.setScale(ConfigureConstant.INT_2, RoundingMode.HALF_UP).toPlainString());
if (yyOrderInfo.getCvouchtype().equals(ConfigureConstant.STRING_26)) { if (yyOrderInfo.getCvouchtype().equals(ConfigureConstant.STRING_26)) {
yyOrderInfo.setCvouchtype(ConfigureConstant.STRING_001); yyOrderInfo.setCvouchtype(ConfigureConstant.STRING_001);

@ -1,6 +1,7 @@
package com.dxhy.order.consumer.modules.manager.service.impl; package com.dxhy.order.consumer.modules.manager.service.impl;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson2.JSON;
import com.dxhy.base.common.constant.ConfigureConstant; import com.dxhy.base.common.constant.ConfigureConstant;
import com.dxhy.base.common.constant.OrderInfoEnum; import com.dxhy.base.common.constant.OrderInfoEnum;
import com.dxhy.base.common.model.OrderInfo; import com.dxhy.base.common.model.OrderInfo;
@ -14,6 +15,7 @@ import com.dxhy.order.baseservice.model.OrderInvoiceInfo;
import com.dxhy.order.baseservice.model.queue.CommonTsMqData; import com.dxhy.order.baseservice.model.queue.CommonTsMqData;
import com.dxhy.order.baseservice.model.queue.FpTsMqData; import com.dxhy.order.baseservice.model.queue.FpTsMqData;
import com.dxhy.order.baseservice.utils.OrderCommonUtils; import com.dxhy.order.baseservice.utils.OrderCommonUtils;
import com.dxhy.order.consumer.modules.bespoke.service.OrderHandleService;
import com.dxhy.order.consumer.modules.manager.model.ProcessInvoiceData; import com.dxhy.order.consumer.modules.manager.model.ProcessInvoiceData;
import com.dxhy.order.consumer.modules.manager.service.InvoiceDataService; import com.dxhy.order.consumer.modules.manager.service.InvoiceDataService;
import com.dxhy.order.consumer.modules.order.service.OrderInfoService; import com.dxhy.order.consumer.modules.order.service.OrderInfoService;
@ -61,6 +63,9 @@ public class InvoiceDataServiceImpl implements InvoiceDataService {
@Resource @Resource
private OrderInvoiceInfoService orderInvoiceInfoService; private OrderInvoiceInfoService orderInvoiceInfoService;
@Resource
private OrderHandleService orderHandleService;
/** /**
* 发票状态手动回推 * 发票状态手动回推
*/ */
@ -107,7 +112,9 @@ public class InvoiceDataServiceImpl implements InvoiceDataService {
commonTsMqData.setNsrsbh(orderInvoiceInfo.getXhfNsrsbh()); commonTsMqData.setNsrsbh(orderInvoiceInfo.getXhfNsrsbh());
commonTsMqData.setEntId(orderInvoiceInfo.getEntId()); commonTsMqData.setEntId(orderInvoiceInfo.getEntId());
commonTsMqData.setFpTsMqData(fpTsMqData); commonTsMqData.setFpTsMqData(fpTsMqData);
rabbitMqSendMessageService.autoSendRabbitMqMessageForBusiness(NsrQueueEnum.PUSH_MESSAGE.getValue(), JsonUtils.getInstance().toJsonString(commonTsMqData)); // rabbitMqSendMessageService.autoSendRabbitMqMessageForBusiness(NsrQueueEnum.PUSH_MESSAGE.getValue(), JsonUtils.getInstance().toJsonString(commonTsMqData));
orderHandleService.backMsg(JSON.toJSONString(commonTsMqData));
successCount++; successCount++;
} }

@ -1163,7 +1163,6 @@ public class OrderPushInvoiceServiceImpl implements OrderPushInvoiceService {
for (OrderInvoiceInfo orderInvoiceInfo : orderInvoiceInfoList) { for (OrderInvoiceInfo orderInvoiceInfo : orderInvoiceInfoList) {
OrderInfo orderInfo = orderInfoService.queryOrderInfoByFpqqlsh(orderInvoiceInfo.getFpqqlsh(), shList); OrderInfo orderInfo = orderInfoService.queryOrderInfoByFpqqlsh(orderInvoiceInfo.getFpqqlsh(), shList);
//如果购买方邮箱为空时,推送数据不放入邮箱推送队列 //如果购买方邮箱为空时,推送数据不放入邮箱推送队列
if (StringUtils.isNotBlank(orderInfo.getGhfEmail())) {
//发票邮箱交付请求数据组装 //发票邮箱交付请求数据组装
FpYxTsMqData fpYxTsMqData = new FpYxTsMqData(); FpYxTsMqData fpYxTsMqData = new FpYxTsMqData();
@ -1174,7 +1173,7 @@ public class OrderPushInvoiceServiceImpl implements OrderPushInvoiceService {
log.info("发票版式文件邮箱推送,放入队列的参数:{}", JsonUtils.getInstance().toJsonString(fpYxTsMqData)); log.info("发票版式文件邮箱推送,放入队列的参数:{}", JsonUtils.getInstance().toJsonString(fpYxTsMqData));
rabbitMqSendMessageService.autoSendRabbitMqMessageForBusiness(NsrQueueEnum.YXTS_MESSAGE.getValue(), JsonUtils.getInstance().toJsonString(fpYxTsMqData)); rabbitMqSendMessageService.autoSendRabbitMqMessageForBusiness(NsrQueueEnum.YXTS_MESSAGE.getValue(), JsonUtils.getInstance().toJsonString(fpYxTsMqData));
}
} }
} }

@ -14,10 +14,11 @@
<result property="se" column="se"/> <result property="se" column="se"/>
<result property="createTime" column="create_time"/> <result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/> <result property="updateTime" column="update_time"/>
<result property="xgdjbh" column="xgdjbh"/>
</resultMap> </resultMap>
<sql id="selectSkOrderItemInfoVo"> <sql id="selectSkOrderItemInfoVo">
select id, order_id, cpmc, xh, cpdw, cpsl, hsdj, hsje, sl, se, create_time, update_time from sk_order_item_info select id, order_id, cpmc, xh, cpdw, cpsl, hsdj, hsje, sl, se, create_time, update_time,xgdjbh from sk_order_item_info
</sql> </sql>
<insert id="insertSkOrderItemInfo" parameterType="com.dxhy.order.consumer.modules.bespoke.model.sk.SkOrderItemInfo"> <insert id="insertSkOrderItemInfo" parameterType="com.dxhy.order.consumer.modules.bespoke.model.sk.SkOrderItemInfo">

@ -41,8 +41,17 @@
</update> </update>
<update id="callProcedure" parameterType="com.dxhy.order.consumer.modules.bespoke.model.sk.BackProduct"> <update id="callProcedure" parameterType="com.dxhy.order.consumer.modules.bespoke.model.sk.BackProduct">
{ call js_jiekou ( call js_jiekou (
#{fphm},#{djbh},#{mxxh},#{kprq},#{bz},#{kpr},#{spsl},#{dj},#{je},#{sl},#{se},#{mark} #{fphm},#{djbh},#{mxxh},#{kprq},#{bz},#{kpr},#{spsl,jdbcType=DECIMAL,mode=IN},#{dj,jdbcType=DECIMAL,mode=IN},#{je,jdbcType=DECIMAL,mode=IN},#{sl,jdbcType=DECIMAL,mode=IN},#{se,jdbcType=DECIMAL,mode=IN},#{mark}
)} )
</update> </update>
<select id="selectBackDjbh" resultType="com.dxhy.order.consumer.modules.bespoke.model.sk.BackDjbh" parameterType="java.lang.String">
select XGDJBH as djbh,
DDHZID as bpmNo,
DDMXID as bpmlsNo
from V_INVOICE_BPMMAP
where DJBH = #{originDdh}
</select>
</mapper> </mapper>

@ -90,7 +90,7 @@
<delete id="deleteBackMsg"> <delete id="deleteBackMsg">
delete from T_INVOICE_INVMAP where cdlcode = #{cdlCode} delete from T_INVOICE_INVMAP where invoiceNo = #{cdlCode}
</delete> </delete>
</mapper> </mapper>

@ -54,4 +54,10 @@
<update id="updateBackMsg"> <update id="updateBackMsg">
update salebillvouch set ${fild} = #{fph} where cdlcode = #{ddh} update salebillvouch set ${fild} = #{fph} where cdlcode = #{ddh}
</update> </update>
<select id="findBackDdh" resultType="java.lang.String" parameterType="java.lang.String">
select cdlcode
from v_invoice_head
where yscdlcode = #{ddh}
</select>
</mapper> </mapper>

@ -459,10 +459,10 @@ public class VerifyCommodityCodeServiceImpl implements VerifyCommodityCodeServic
/** /**
* 规格型号 * 规格型号
*/ */
checkResultMap = CheckParamUtil.checkParam(BaseServiceEnum.COMMODITY_MESSAGE_SYNC_ERROR_173027, commodityCodeEntity.getGgxh()); // checkResultMap = CheckParamUtil.checkParam(BaseServiceEnum.COMMODITY_MESSAGE_SYNC_ERROR_173027, commodityCodeEntity.getGgxh());
if (!BaseServiceEnum.SUCCESS.getKey().equals(checkResultMap.get(OrderManagementConstant.ERRORCODE))) { // if (!BaseServiceEnum.SUCCESS.getKey().equals(checkResultMap.get(OrderManagementConstant.ERRORCODE))) {
errorListMap.add(checkResultMap); // errorListMap.add(checkResultMap);
} // }
/** /**

Loading…
Cancel
Save