fix:联调回推问题修改及优化

zkh
路明慧 11 months ago
parent 0a56ba37cc
commit e66903730b
  1. 12
      order-management-base-service/src/main/java/com/dxhy/order/baseservice/utils/OrderCommonUtils.java
  2. 2
      order-management-order/src/main/java/com/dxhy/order/consumer/dao/YyOrderMapper.java
  3. 2
      order-management-order/src/main/java/com/dxhy/order/consumer/handle/EmailPushTask.java
  4. 4
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/config/FildConfig.java
  5. 95
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/config/datasource/LuoxinBack.java
  6. 67
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/DefaultFtpProcessor.java
  7. 36
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/OrderHandleServiceImpl.java
  8. 51
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/SkOrderServiceImpl.java
  9. 78
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/YyOrderServiceImpl.java
  10. 3
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/OrderPushInvoiceServiceImpl.java
  11. 2
      order-management-order/src/main/resources/mybatis/mapper/TInvoiceInvmapMapper.xml
  12. 6
      order-management-order/src/main/resources/mybatis/mapper/YyOrderMapper.xml
  13. 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)){
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);
}
}
//补全号码

@ -21,4 +21,6 @@ public interface YyOrderMapper {
List<InvoiceBpmmap> getDdbh(String cdlCode);
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());

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

@ -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.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;
}
/**
* 创建目录
*

@ -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<OrderItemInfo> 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;
}

@ -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<SkOrderItemInfo> 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,40 +186,43 @@ public class SkOrderServiceImpl implements OrderService {
}
@Override
public R backMsg(OrderInvoiceInfo orderInvoiceInfo, List<OrderOriginExtendInfo> orderOriginExtendInfos, FileModel fileModel,String ddh) {
public R backMsg(OrderInvoiceInfo orderInvoiceInfo, List<OrderOriginExtendInfo> orderOriginExtendInfos, FileModel fileModel, String ddh) {
for (OrderOriginExtendInfo orderOriginExtendInfo : orderOriginExtendInfos) {
List<OrderItemInfo> 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());
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){
if (backDjbh != null) {
newTable.setCDLCode(backDjbh.getDjbh());
newTable.setBpmNo(backDjbh.getBpmNo());
newTable.setBpmlsNo(backDjbh.getBpmlsNo());
@ -225,10 +235,11 @@ public class SkOrderServiceImpl implements OrderService {
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<SkOrderItemInfo> skOrderItemInfoList, DeptEntity deptEntity) {
public DdpcxxReqBO transitionReadData(SkOrderInfo skOrderInfo, List<SkOrderItemInfo> 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);

@ -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,15 +197,38 @@ public class YyOrderServiceImpl implements OrderService {
}
@Override
public R backMsg(OrderInvoiceInfo orderInvoiceInfo, List<OrderOriginExtendInfo> orderOriginExtendInfos, FileModel fileModel,String ddh) {
public R backMsg(OrderInvoiceInfo orderInvoiceInfo, List<OrderOriginExtendInfo> orderOriginExtendInfos, FileModel fileModel, String ddh) {
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.setCDLCode(orderOriginExtendInfo.getOriginDdh());
newTable.setInvoiceCode(orderInvoiceInfo.getSdfphm());
newTable.setCDLCode(ddh);
newTable.setInvoiceNo(orderInvoiceInfo.getSdfphm());
newTable.setInvoiceTime(orderInvoiceInfo.getKprq());
newTable.setInvoiceAmount(orderInvoiceInfo.getKphjje());
newTable.setInvoicePhoto(fileModel.getFilePath());
@ -207,35 +239,37 @@ public class YyOrderServiceImpl implements OrderService {
//更新会写表
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));
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<NewTable> newTableList,String nsrsbh) {
public int accressReback(List<NewTable> 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<InvoiceBpmmap> ddbhList = yyOrderMapper.getDdbh(newTable.getCDLCode());
log.debug("查询到中间表信息:{}", JSON.toJSONString(ddbhList));
if (CollectionUtils.isNotEmpty(ddbhList)){
DynamicContextHolder.push(ConfigureConstant.MAIN);
tInvoiceInvmapMapper.deleteBackMsg(newTable.getCDLCode());
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);
}

@ -1163,7 +1163,6 @@ 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();
@ -1174,7 +1173,7 @@ public class OrderPushInvoiceServiceImpl implements OrderPushInvoiceService {
log.info("发票版式文件邮箱推送,放入队列的参数:{}", JsonUtils.getInstance().toJsonString(fpYxTsMqData));
rabbitMqSendMessageService.autoSendRabbitMqMessageForBusiness(NsrQueueEnum.YXTS_MESSAGE.getValue(), JsonUtils.getInstance().toJsonString(fpYxTsMqData));
}
}
}

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

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

@ -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);
// }
/**

Loading…
Cancel
Save