feature:回写

zkh
路明慧 11 months ago
parent 9a6b00c67d
commit 5fb1dc0dd2
  1. 2
      order-management-order/src/main/java/com/dxhy/order/consumer/dao/SkOrderMapper.java
  2. 5
      order-management-order/src/main/java/com/dxhy/order/consumer/dao/YyOrderInfoMapper.java
  3. 8
      order-management-order/src/main/java/com/dxhy/order/consumer/dao/YyOrderMapper.java
  4. 10
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/model/req/FileModel.java
  5. 10
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/model/sk/SkOrderInfo.java
  6. 13
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/model/yy/InvoiceBpmmap.java
  7. 38
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/model/yy/NewTable.java
  8. 5
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/model/yy/YyOrderItemInfo.java
  9. 12
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/OrderHandleService.java
  10. 9
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/OrderService.java
  11. 91
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/OrderHandleServiceImpl.java
  12. 16
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/SkOrderServiceImpl.java
  13. 95
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/YyOrderServiceImpl.java
  14. 4
      order-management-order/src/main/resources/mybatis/mapper/SkOrderMapper.xml
  15. 12
      order-management-order/src/main/resources/mybatis/mapper/YyOrderInfoMapper.xml
  16. 102
      order-management-order/src/main/resources/mybatis/mapper/YyOrderMapper.xml

@ -13,4 +13,6 @@ public interface SkOrderMapper {
//查询订单明细信息 //查询订单明细信息
List<SkOrderItemInfo> findOrderDetailList(String xsddm); List<SkOrderItemInfo> findOrderDetailList(String xsddm);
int updateOrder(SkOrderInfo skOrderInfo);
} }

@ -2,6 +2,7 @@ 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.yy.YyOrderInfo; import com.dxhy.order.consumer.modules.bespoke.model.yy.YyOrderInfo;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@ -18,4 +19,8 @@ public interface YyOrderInfoMapper {
//删除订单 //删除订单
int delOrder(ReqParam reqParam); int delOrder(ReqParam reqParam);
int updateStatus(@Param("cdlcode") String cdlcode, @Param("status") String status);
YyOrderInfo getSaveOrder(String originDdh);
} }

@ -1,6 +1,8 @@
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.yy.InvoiceBpmmap;
import com.dxhy.order.consumer.modules.bespoke.model.yy.NewTable;
import com.dxhy.order.consumer.modules.bespoke.model.yy.YyOrderInfo; import com.dxhy.order.consumer.modules.bespoke.model.yy.YyOrderInfo;
import com.dxhy.order.consumer.modules.bespoke.model.yy.YyOrderItemInfo; import com.dxhy.order.consumer.modules.bespoke.model.yy.YyOrderItemInfo;
@ -13,4 +15,10 @@ public interface YyOrderMapper {
//订单明细读取 //订单明细读取
List<YyOrderItemInfo> findOrderDetailList(String cdlcode); List<YyOrderItemInfo> findOrderDetailList(String cdlcode);
//插入回写信息
int insertBackMsg(NewTable newTable);
//根据订单编号查询订单信息
List<InvoiceBpmmap> getDdbh(String cdlCode);
} }

@ -0,0 +1,10 @@
package com.dxhy.order.consumer.modules.bespoke.model.req;
import lombok.Data;
@Data
public class FileModel {
private String code;
private String fileName;
private String filePath;
}

@ -81,4 +81,14 @@ public class SkOrderInfo {
* 修改时间 * 修改时间
*/ */
private Date updateTime; private Date updateTime;
/**
* 发票号码
*/
private String fph;
/**
* 发票代码
*/
private String biaoshi;
} }

@ -0,0 +1,13 @@
package com.dxhy.order.consumer.modules.bespoke.model.yy;
import lombok.Data;
@Data
public class InvoiceBpmmap {
private String cdlcode;
private String bpmno;
private String bpmlsno;
}

@ -0,0 +1,38 @@
package com.dxhy.order.consumer.modules.bespoke.model.yy;
import lombok.Data;
import java.util.Date;
@Data
public class NewTable {
//自增ID
private int autoId;
//发货单号
private String cDLCode;
//发票号
private String invoiceNo;
//发票代码
private String invoiceCode;
//开票时间
private Date invoiceTime;
//开票金额
private String invoiceAmount;
//发票图片,文件存储路径
private String invoicePhoto;
//发票文件名
private String invoiceFilename;
//订单明细id
private String bpmlsNo;
//订单号
private String bpmNo;
//开票人
private String operater;
//操作时间
private Date operateDate;
//开票主体,存储的税号
private String shipper;
//状态,系统对接的默认值为1
private String status;
}

@ -59,4 +59,9 @@ public class YyOrderItemInfo {
* 修改时间 * 修改时间
*/ */
private Date updateTime; private Date updateTime;
/**
* 用友订单明细id
*/
private String yyItemId;
} }

@ -1,8 +1,10 @@
package com.dxhy.order.consumer.modules.bespoke.service; package com.dxhy.order.consumer.modules.bespoke.service;
import cn.hutool.core.io.file.FileMode;
import com.dxhy.base.common.model.R; import com.dxhy.base.common.model.R;
import com.dxhy.order.baseservice.exception.OrderReceiveException; import com.dxhy.order.baseservice.exception.OrderReceiveException;
import com.dxhy.order.baseservice.model.OrderInvoiceInfo; import com.dxhy.order.baseservice.model.OrderInvoiceInfo;
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 java.util.List; import java.util.List;
@ -47,7 +49,7 @@ public interface OrderHandleService {
int createOrderByCopyInvoice(String fpqqlsh, List<String> shList, List<String> entList,String fpzldm) throws OrderReceiveException; int createOrderByCopyInvoice(String fpqqlsh, List<String> shList, List<String> entList,String fpzldm) throws OrderReceiveException;
String saveInvoiceFile(OrderInvoiceInfo orderInvoiceInfo); FileModel saveInvoiceFile(OrderInvoiceInfo orderInvoiceInfo);
/** /**
* 发送邮件 * 发送邮件
@ -55,4 +57,12 @@ public interface OrderHandleService {
* @return * @return
*/ */
int emailSend(ReqParam reqParam); int emailSend(ReqParam reqParam);
/**
* huixie
* @param msg
* @return
*/
R backMsg(String msg);
} }

@ -1,8 +1,13 @@
package com.dxhy.order.consumer.modules.bespoke.service; package com.dxhy.order.consumer.modules.bespoke.service;
import com.dxhy.base.common.model.R; import com.dxhy.base.common.model.R;
import com.dxhy.order.baseservice.model.OrderInvoiceInfo;
import com.dxhy.order.baseservice.model.OrderOriginExtendInfo;
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 java.util.List;
public interface OrderService { public interface OrderService {
//订单读入 //订单读入
@ -16,4 +21,8 @@ public interface OrderService {
//生成预制发票 //生成预制发票
R orderExtract(ReqParam reqParam); R orderExtract(ReqParam reqParam);
//订单回传
R backMsg(OrderInvoiceInfo orderInvoiceInfo,List<OrderOriginExtendInfo> orderOriginExtendInfos, FileModel fileModel);
} }

@ -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.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;
import cn.hutool.extra.spring.SpringUtil; import cn.hutool.extra.spring.SpringUtil;
@ -20,12 +21,15 @@ import com.dxhy.order.baseservice.constant.NsrQueueEnum;
import com.dxhy.order.baseservice.exception.OrderReceiveException; import com.dxhy.order.baseservice.exception.OrderReceiveException;
import com.dxhy.order.baseservice.model.OrderInvoiceInfo; import com.dxhy.order.baseservice.model.OrderInvoiceInfo;
import com.dxhy.order.baseservice.model.OrderOriginExtendInfo; import com.dxhy.order.baseservice.model.OrderOriginExtendInfo;
import com.dxhy.order.baseservice.model.queue.CommonTsMqData;
import com.dxhy.order.baseservice.model.queue.FpYxTsMqData; import com.dxhy.order.baseservice.model.queue.FpYxTsMqData;
import com.dxhy.order.consumer.dao.OrderOriginExtendInfoMapper; import com.dxhy.order.consumer.dao.OrderOriginExtendInfoMapper;
import com.dxhy.order.consumer.dao.OrderProcessInfoMapper; import com.dxhy.order.consumer.dao.OrderProcessInfoMapper;
import com.dxhy.order.consumer.modules.bespoke.config.FtpConfig; import com.dxhy.order.consumer.modules.bespoke.config.FtpConfig;
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.config.ServiceConfig; import com.dxhy.order.consumer.modules.bespoke.config.ServiceConfig;
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; import com.dxhy.order.consumer.modules.bespoke.model.req.ReqParam;
import com.dxhy.order.consumer.modules.bespoke.service.FtpProcessor; import com.dxhy.order.consumer.modules.bespoke.service.FtpProcessor;
import com.dxhy.order.consumer.modules.bespoke.service.OrderHandleService; import com.dxhy.order.consumer.modules.bespoke.service.OrderHandleService;
@ -41,6 +45,7 @@ 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;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.lang3.time.DateUtils;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -49,6 +54,7 @@ import javax.annotation.Resource;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.jar.Pack200; import java.util.jar.Pack200;
@ -257,7 +263,11 @@ public class OrderHandleServiceImpl implements OrderHandleService {
} }
@Override @Override
public String saveInvoiceFile(OrderInvoiceInfo orderInvoiceInfo) { public FileModel saveInvoiceFile(OrderInvoiceInfo orderInvoiceInfo) {
//返回实体
FileModel fileModel = new FileModel();
//查询文件
Date kprq = orderInvoiceInfo.getKprq(); Date kprq = orderInvoiceInfo.getKprq();
String xhfNsrsbh = orderInvoiceInfo.getXhfNsrsbh(); String xhfNsrsbh = orderInvoiceInfo.getXhfNsrsbh();
String entId = orderInvoiceInfo.getEntId(); String entId = orderInvoiceInfo.getEntId();
@ -265,6 +275,10 @@ public class OrderHandleServiceImpl implements OrderHandleService {
TaxEquipmentInfo taxEquipmentInfo = simsBackService.queryTaxEquipment(xhfNsrsbh, entId); TaxEquipmentInfo taxEquipmentInfo = simsBackService.queryTaxEquipment(xhfNsrsbh, entId);
//获取文件 //获取文件
List<FileDownLoad> invoiceFile = orderInvoiceInfoService.getInvoiceFile("", orderInvoiceInfo, taxEquipmentInfo.getSksbCode(), OrderInfoEnum.FILE_TYPE_PDF.getKey()); List<FileDownLoad> invoiceFile = orderInvoiceInfoService.getInvoiceFile("", orderInvoiceInfo, taxEquipmentInfo.getSksbCode(), OrderInfoEnum.FILE_TYPE_PDF.getKey());
if (CollectionUtils.isEmpty(invoiceFile)) {
fileModel.setCode(ConfigureConstant.STRING_9999);
return fileModel;
}
FileDownLoad fileDownLoad = invoiceFile.get(ConfigureConstant.INT_0); FileDownLoad fileDownLoad = invoiceFile.get(ConfigureConstant.INT_0);
//拼接路径 //拼接路径
StringBuilder path = new StringBuilder(ftpProperties.getBasePath()); StringBuilder path = new StringBuilder(ftpProperties.getBasePath());
@ -286,9 +300,13 @@ public class OrderHandleServiceImpl implements OrderHandleService {
boolean flag = ftpProcessor.uploadFile(path.toString(), fileDownLoad.getFileName(), utf8Stream); boolean flag = ftpProcessor.uploadFile(path.toString(), fileDownLoad.getFileName(), utf8Stream);
if (flag){ if (flag){
return path.append(ConfigureConstant.STRING_SLASH_LINE).append(fileDownLoad.getFileName()).toString(); fileModel.setCode(ConfigureConstant.STRING_0000);
fileModel.setFilePath(path.toString());
fileModel.setFileName(fileDownLoad.getFileName());
return fileModel;
} }
return ""; fileModel.setCode(ConfigureConstant.STRING_9999);
return fileModel;
} }
@Override @Override
@ -326,4 +344,71 @@ public class OrderHandleServiceImpl implements OrderHandleService {
return count; return count;
} }
@Override
public R backMsg(String message) {
CommonTsMqData commonTsMqData = JsonUtils.getInstance().parseObject(message, CommonTsMqData.class);
List<String> shList = Arrays.asList(commonTsMqData.getNsrsbh());
OrderInvoiceInfo orderInvoiceInfo = orderInvoiceInfoService.selectOrderInvoiceInfoByFpqqlsh(commonTsMqData.getFpTsMqData().getFpqqlsh(), shList);
if (ObjectUtils.isEmpty(orderInvoiceInfo)){
log.error("发票信息不存在无法进行推送");
updatePushErrorMsgToDb(commonTsMqData.getFpTsMqData().getFpqqlsh(),"发票信息不存在无法进行推送", shList);
return R.error("发票信息不存在");
}
//保存版式文件到ftp
FileModel fileModel = saveInvoiceFile(orderInvoiceInfo);
//获取原始订单信息
OrderOriginExtendInfo orderOriginExtendInfo = new OrderOriginExtendInfo();
orderOriginExtendInfo.setOrderId(orderInvoiceInfo.getOrderInfoId());
List<OrderOriginExtendInfo> orderOriginExtendInfos = orderOriginExtendInfoMapper.queryOriginOrderByOrder(orderOriginExtendInfo, shList);
if (CollectionUtils.isEmpty(orderOriginExtendInfos)){
updatePushErrorMsgToDb(commonTsMqData.getFpTsMqData().getFpqqlsh(),"原始订单信息不存在无法进行推送", shList);
log.error("原始订单信息不存在无法进行推送");
}
OrderService orderService = SpringUtil.getBean(ServiceConfig.getService(commonTsMqData.getNsrsbh()), OrderService.class);
R r;
try {
r = orderService.backMsg(orderInvoiceInfo,orderOriginExtendInfos,fileModel);
}catch (Exception e){
log.error("推送失败", e);
r = R.error("推送时发生异常");
}finally {
DynamicContextHolder.push(com.dxhy.management.common.constant.ConfigureConstant.MAIN);
}
if (ConfigureConstant.STRING_0000.equals(r.get(ConfigureConstant.CODE))){
updateSuccessMsg(commonTsMqData.getFpTsMqData().getFpqqlsh(), shList);
log.info("推送成功");
}
updatePushErrorMsgToDb(commonTsMqData.getFpTsMqData().getFpqqlsh(),r.get(ConfigureConstant.MSG).toString(), shList);
return r;
}
private void updatePushErrorMsgToDb(String fpqqlsh, String errorMessage, List<String> shList) {
if (StringUtils.isNotBlank(fpqqlsh) && CollUtil.isNotEmpty(shList)) {
OrderInvoiceInfo orderQuery = new OrderInvoiceInfo();
orderQuery.setFpqqlsh(fpqqlsh);
orderQuery.setPushStatus(OrderInfoEnum.PUSH_STATUS_2.getKey());
orderQuery.setInvoicePushSbyy(errorMessage);
int updateByPrimaryKeySelective = orderInvoiceInfoService.updateOrderInvoiceInfoByFpqqlsh(orderQuery, shList);
if (updateByPrimaryKeySelective <= 0) {
log.error("{}推送状态更新失败");
}
}
}
private void updateSuccessMsg(String fpqqlsh, List<String> shList) {
if (StringUtils.isNotBlank(fpqqlsh) && CollUtil.isNotEmpty(shList)) {
OrderInvoiceInfo orderQuery = new OrderInvoiceInfo();
orderQuery.setFpqqlsh(fpqqlsh);
orderQuery.setPushStatus(OrderInfoEnum.PUSH_STATUS_1.getKey());
int updateByPrimaryKeySelective = orderInvoiceInfoService.updateOrderInvoiceInfoByFpqqlsh(orderQuery, shList);
if (updateByPrimaryKeySelective <= 0) {
log.error("{}推送状态更新失败");
}
}
}
} }

@ -18,10 +18,13 @@ import com.dxhy.management.common.constant.ConfigureConstant;
import com.dxhy.management.model.excel.InvoiceCountExcel; import com.dxhy.management.model.excel.InvoiceCountExcel;
import com.dxhy.order.baseservice.constant.ConfigurerInfo; import com.dxhy.order.baseservice.constant.ConfigurerInfo;
import com.dxhy.order.baseservice.constant.OrderValidateEnum; import com.dxhy.order.baseservice.constant.OrderValidateEnum;
import com.dxhy.order.baseservice.model.OrderInvoiceInfo;
import com.dxhy.order.baseservice.model.OrderOriginExtendInfo;
import com.dxhy.order.consumer.dao.SkOrderInfoMapper; 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.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.ReqParam; import com.dxhy.order.consumer.modules.bespoke.model.req.ReqParam;
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;
@ -167,6 +170,19 @@ public class SkOrderServiceImpl implements OrderService {
return R.ok(backMessage); return R.ok(backMessage);
} }
@Override
public R backMsg(OrderInvoiceInfo orderInvoiceInfo, List<OrderOriginExtendInfo> orderOriginExtendInfos, FileModel fileModel) {
for (OrderOriginExtendInfo orderOriginExtendInfo : orderOriginExtendInfos) {
SkOrderInfo skOrderInfo = new SkOrderInfo();
skOrderInfo.setXsddm(orderOriginExtendInfo.getOriginDdh());
skOrderInfo.setFph(orderInvoiceInfo.getSdfphm());
skOrderInfo.setBiaoshi(orderInvoiceInfo.getKplx());
skOrderMapper.updateOrder(skOrderInfo);
}
return R.ok();
}
@Transactional @Transactional
public int saveOrder(SkOrderInfo skOrderInfo, List<SkOrderItemInfo> skOrderItemInfoList, ReqParam reqParam) { public int saveOrder(SkOrderInfo skOrderInfo, List<SkOrderItemInfo> skOrderItemInfoList, ReqParam reqParam) {

@ -1,7 +1,9 @@
package com.dxhy.order.consumer.modules.bespoke.service.impl; package com.dxhy.order.consumer.modules.bespoke.service.impl;
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.OrderItemInfo;
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;
@ -16,31 +18,35 @@ import com.dxhy.base.thirdservice.module.base.service.BaseService;
import com.dxhy.management.common.constant.ConfigureConstant; 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.baseservice.constant.OrderValidateEnum; import com.dxhy.order.baseservice.constant.OrderValidateEnum;
import com.dxhy.order.baseservice.model.OrderInvoiceInfo;
import com.dxhy.order.baseservice.model.OrderOriginExtendInfo;
import com.dxhy.order.consumer.dao.YyOrderInfoMapper; import com.dxhy.order.consumer.dao.YyOrderInfoMapper;
import com.dxhy.order.consumer.dao.YyOrderItemInfoMapper; import com.dxhy.order.consumer.dao.YyOrderItemInfoMapper;
import com.dxhy.order.consumer.dao.YyOrderMapper; import com.dxhy.order.consumer.dao.YyOrderMapper;
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.ReqParam; import com.dxhy.order.consumer.modules.bespoke.model.req.ReqParam;
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;
import com.dxhy.order.consumer.modules.bespoke.model.yy.InvoiceBpmmap;
import com.dxhy.order.consumer.modules.bespoke.model.yy.NewTable;
import com.dxhy.order.consumer.modules.bespoke.model.yy.YyOrderInfo; import com.dxhy.order.consumer.modules.bespoke.model.yy.YyOrderInfo;
import com.dxhy.order.consumer.modules.bespoke.model.yy.YyOrderItemInfo; import com.dxhy.order.consumer.modules.bespoke.model.yy.YyOrderItemInfo;
import com.dxhy.order.consumer.modules.bespoke.service.OrderService; 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.OrderItemInfoMapper;
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.util.ArrayList; import java.util.*;
import java.util.Date;
import java.util.List;
import java.util.Optional;
@Slf4j @Slf4j
@Service("yyOrderService") @Service("yyOrderService")
@ -70,6 +76,9 @@ public class YyOrderServiceImpl implements OrderService {
@Resource @Resource
private SimsBackService simsBackService; private SimsBackService simsBackService;
@Resource
private OrderItemInfoMapper orderItemInfoMapper;
//订单读入 //订单读入
@Override @Override
public R orderRead(ReqParam reqParam) { public R orderRead(ReqParam reqParam) {
@ -80,7 +89,7 @@ public class YyOrderServiceImpl implements OrderService {
List<YyOrderInfo> yyOrderInfoList = yyOrderMapper.findOrderHeadList(reqParam); List<YyOrderInfo> yyOrderInfoList = yyOrderMapper.findOrderHeadList(reqParam);
log.debug("查询到订单数据:{}", JSON.toJSONString(yyOrderInfoList)); log.debug("查询到订单数据:{}", JSON.toJSONString(yyOrderInfoList));
if (CollectionUtils.isNotEmpty(yyOrderInfoList)){ if (CollectionUtils.isNotEmpty(yyOrderInfoList)) {
for (YyOrderInfo yyOrderInfo : yyOrderInfoList) { for (YyOrderInfo yyOrderInfo : yyOrderInfoList) {
@ -88,14 +97,14 @@ public class YyOrderServiceImpl implements OrderService {
List<YyOrderItemInfo> yyOrderItemInfoList = yyOrderMapper.findOrderDetailList(yyOrderInfo.getCdlcode()); List<YyOrderItemInfo> yyOrderItemInfoList = yyOrderMapper.findOrderDetailList(yyOrderInfo.getCdlcode());
log.debug("查询到订单明细数据:{}", JSON.toJSONString(yyOrderItemInfoList)); log.debug("查询到订单明细数据:{}", JSON.toJSONString(yyOrderItemInfoList));
if (CollectionUtils.isNotEmpty(yyOrderItemInfoList)){ if (CollectionUtils.isNotEmpty(yyOrderItemInfoList)) {
DynamicContextHolder.push(ConfigureConstant.MAIN); DynamicContextHolder.push(ConfigureConstant.MAIN);
count+= saveOrder(yyOrderInfo, yyOrderItemInfoList, reqParam); count += saveOrder(yyOrderInfo, yyOrderItemInfoList, reqParam);
} }
} }
} }
return R.ok("成功读取"+count+"条订单数据"); return R.ok("成功读取" + count + "条订单数据");
} }
@Override @Override
@ -113,7 +122,7 @@ public class YyOrderServiceImpl implements OrderService {
public R delOrder(ReqParam reqParam) { public R delOrder(ReqParam reqParam) {
int count = yyOrderInfoMapper.delOrder(reqParam); int count = yyOrderInfoMapper.delOrder(reqParam);
yyOrderItemInfoMapper.delOrder(reqParam.getIds()); yyOrderItemInfoMapper.delOrder(reqParam.getIds());
return R.ok("成功删除"+count+"条订单数据"); return R.ok("成功删除" + count + "条订单数据");
} }
@Override @Override
@ -143,17 +152,19 @@ public class YyOrderServiceImpl implements OrderService {
for (YyOrderInfo yyOrderInfo : yyOrderInfoList) { for (YyOrderInfo yyOrderInfo : yyOrderInfoList) {
try { try {
List<YyOrderItemInfo> yyOrderItemInfoList = yyOrderItemInfoMapper.queryOrderItemInfo(yyOrderInfo.getId()); List<YyOrderItemInfo> yyOrderItemInfoList = yyOrderItemInfoMapper.queryOrderItemInfo(yyOrderInfo.getId());
if (CollectionUtils.isNotEmpty(yyOrderItemInfoList)){ if (CollectionUtils.isNotEmpty(yyOrderItemInfoList)) {
DdpcxxReqBO ddpcxxReqBO = transitionReadData(yyOrderInfo,yyOrderItemInfoList, deptEntity); DdpcxxReqBO ddpcxxReqBO = transitionReadData(yyOrderInfo, yyOrderItemInfoList, deptEntity);
DdpcxxRspBO ddpcxxRspBO = allocateInvoiceInterfaceServiceImplV3.allocateInvoicesV3(ddpcxxReqBO, "", null, ConfigurerInfo.INTERFACE_VERSION_V6); DdpcxxRspBO ddpcxxRspBO = allocateInvoiceInterfaceServiceImplV3.allocateInvoicesV3(ddpcxxReqBO, "", null, ConfigurerInfo.INTERFACE_VERSION_V6);
log.debug("V3生成预制返回信息:{}", JSON.toJSONString(ddpcxxRspBO)); log.debug("V3生成预制返回信息:{}", JSON.toJSONString(ddpcxxRspBO));
String format = String.format(message, yyOrderInfo.getCdlcode(), ddpcxxRspBO.getZTXX()); String format = String.format(message, yyOrderInfo.getCdlcode(), ddpcxxRspBO.getZTXX());
if (ddpcxxRspBO.getZTDM().equals(OrderValidateEnum.INVOICE_ERROR_CODE_010000_V3.getKey())) { if (ddpcxxRspBO.getZTDM().equals(OrderValidateEnum.INVOICE_ERROR_CODE_010000_V3.getKey())) {
backMessage.add(com.dxhy.base.common.constant.ConfigureConstant.INT_0, format); //添加状态修改
yyOrderInfoMapper.updateStatus(yyOrderInfo.getCdlcode(), ConfigureConstant.STRING_1);
backMessage.add(ConfigureConstant.INT_0, format);
} else { } else {
backMessage.add(format); backMessage.add(format);
} }
}else { } else {
backMessage.add(String.format(message, yyOrderInfo.getCdlcode(), "订单明细信息丢失请删除重新读入")); backMessage.add(String.format(message, yyOrderInfo.getCdlcode(), "订单明细信息丢失请删除重新读入"));
} }
@ -167,11 +178,62 @@ public class YyOrderServiceImpl implements OrderService {
return R.ok(backMessage); return R.ok(backMessage);
} }
@Override
public R backMsg(OrderInvoiceInfo orderInvoiceInfo, List<OrderOriginExtendInfo> orderOriginExtendInfos, FileModel fileModel) {
List<NewTable> 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);
}
log.debug("待回传数据:{}", JSON.toJSONString(newTableList));
DynamicContextHolder.push(orderInvoiceInfo.getXhfNsrsbh());
int count = accressReback(newTableList);
if (count >=newTableList.size()){
return R.ok("成功回传" + count + "条数据");
}
return R.error("回传失败");
}
@Transactional
public int accressReback(List<NewTable> newTableList) {
int count = ConfigureConstant.INT_0;
for (NewTable newTable : newTableList) {
List<InvoiceBpmmap> ddbhList = yyOrderMapper.getDdbh(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+= yyOrderMapper.insertBackMsg(newTableFull);
}
}
}
return count;
}
@Transactional @Transactional
public int saveOrder(YyOrderInfo yyOrderInfo, List<YyOrderItemInfo> yyOrderItemInfoList, ReqParam reqParam) { public int saveOrder(YyOrderInfo yyOrderInfo, List<YyOrderItemInfo> yyOrderItemInfoList, ReqParam reqParam) {
YyOrderInfo checkOrderExist = yyOrderInfoMapper.checkOrderExist(yyOrderInfo.getCdlcode()); YyOrderInfo checkOrderExist = yyOrderInfoMapper.checkOrderExist(yyOrderInfo.getCdlcode());
if (checkOrderExist != null){ if (checkOrderExist != null) {
log.debug("订单已存在,订单编号:{}", yyOrderInfo.getCdlcode()); log.debug("订单已存在,订单编号:{}", yyOrderInfo.getCdlcode());
return ConfigureConstant.INT_0; return ConfigureConstant.INT_0;
} }
@ -198,10 +260,10 @@ public class YyOrderServiceImpl implements OrderService {
yyOrderInfo.setDetailCount(String.valueOf(yyOrderItemInfoList.size())); yyOrderInfo.setDetailCount(String.valueOf(yyOrderItemInfoList.size()));
yyOrderInfo.setHsje(hsje.add(se).setScale(ConfigureConstant.INT_2).toPlainString()); yyOrderInfo.setHsje(hsje.add(se).setScale(ConfigureConstant.INT_2).toPlainString());
yyOrderInfo.setSe(se.setScale(ConfigureConstant.INT_2).toPlainString()); yyOrderInfo.setSe(se.setScale(ConfigureConstant.INT_2).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);
} }
if (yyOrderInfo.getCvouchtype().equals(ConfigureConstant.STRING_27)){ if (yyOrderInfo.getCvouchtype().equals(ConfigureConstant.STRING_27)) {
yyOrderInfo.setCvouchtype(ConfigureConstant.STRING_002); yyOrderInfo.setCvouchtype(ConfigureConstant.STRING_002);
} }
yyOrderInfoMapper.insertYyOrderInfo(yyOrderInfo); yyOrderInfoMapper.insertYyOrderInfo(yyOrderInfo);
@ -276,6 +338,7 @@ public class YyOrderServiceImpl implements OrderService {
ddmxxxBO.setFPHXZ(ConfigureConstant.STRING_0); ddmxxxBO.setFPHXZ(ConfigureConstant.STRING_0);
ddmxxxBO.setHSBZ(ConfigureConstant.STRING_1); ddmxxxBO.setHSBZ(ConfigureConstant.STRING_1);
ddmxxxBO.setBYZD1(yyOrderItemInfo.getIunitprice()); ddmxxxBO.setBYZD1(yyOrderItemInfo.getIunitprice());
ddmxxxBO.setBYZD2(yyOrderItemInfo.getYyItemId());
//累计求金额和税额 //累计求金额和税额
invoiceAmount = DecimalCalculateUtil.bigDecimalAdd(invoiceAmount, yyOrderItemInfo.getIsum(), ConfigureConstant.INT_2); invoiceAmount = DecimalCalculateUtil.bigDecimalAdd(invoiceAmount, yyOrderItemInfo.getIsum(), ConfigureConstant.INT_2);
taxAmount = DecimalCalculateUtil.bigDecimalAdd(taxAmount, yyOrderItemInfo.getItax(), ConfigureConstant.INT_2); taxAmount = DecimalCalculateUtil.bigDecimalAdd(taxAmount, yyOrderItemInfo.getItax(), ConfigureConstant.INT_2);

@ -33,4 +33,8 @@
from v_invoice_detail_fp from v_invoice_detail_fp
where xsddm = #{xsddm} where xsddm = #{xsddm}
</select> </select>
<update id="updateOrder" parameterType="com.dxhy.order.consumer.modules.bespoke.model.sk.SkOrderInfo">
update v_invoice_head_fp set fph = #{fph},biaoshi = #{biaoshi} where XSDDM = #{xsddm}
</update>
</mapper> </mapper>

@ -182,4 +182,16 @@
#{id} #{id}
</foreach> </foreach>
</delete> </delete>
<update id="updateStatus">
update yy_order_info set status = #{status} where cdlcode = #{cdlcode}
</update>
<select id="getSaveOrder" resultMap="YyOrderInfoResult">
<include refid="selectYyOrderInfoVo"/>
where nsrsbh = #{nsrsbh}
and ent_id = #{entId}
and cdlcode = #{cdlcode}
and status = '1'
</select>
</mapper> </mapper>

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.dxhy.order.consumer.dao.YyOrderMapper"> <mapper namespace="com.dxhy.order.consumer.dao.YyOrderMapper">
<select id="findOrderHeadList" resultType="com.dxhy.order.consumer.modules.bespoke.model.yy.YyOrderInfo"
<select id="findOrderHeadList" resultType="com.dxhy.order.consumer.modules.bespoke.model.yy.YyOrderInfo" parameterType="com.dxhy.order.consumer.modules.bespoke.model.req.ReqParam"> parameterType="com.dxhy.order.consumer.modules.bespoke.model.req.ReqParam">
select cvouchtype, select cvouchtype,
ccusregcode, ccusregcode,
ccusname, ccusname,
@ -25,8 +25,10 @@
</where> </where>
</select> </select>
<select id="findOrderDetailList" resultType="com.dxhy.order.consumer.modules.bespoke.model.yy.YyOrderItemInfo" parameterType="java.lang.String"> <select id="findOrderDetailList" resultType="com.dxhy.order.consumer.modules.bespoke.model.yy.YyOrderItemInfo"
select cinvname, parameterType="java.lang.String">
select id as yyItemId,
cinvname,
cinvstd, cinvstd,
ccomunitname, ccomunitname,
iquantity, iquantity,
@ -37,4 +39,96 @@
from v_invoice_detail from v_invoice_detail
where cdlcode = #{xsddm} where cdlcode = #{xsddm}
</select> </select>
<insert id="insertBackMsg" parameterType="com.dxhy.order.consumer.modules.bespoke.model.yy.NewTable">
insert into NewTable
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="cDLCode != null">
cDLCode,
</if>
<if test="invoiceNo != null">
invoiceNo,
</if>
<if test="invoiceCode != null">
invoiceCode,
</if>
<if test="invoiceTime != null">
invoiceTime,
</if>
<if test="invoiceAmount != null">
invoiceAmount,
</if>
<if test="invoicePhoto != null">
invoicePhoto,
</if>
<if test="invoiceFilename != null">
invoiceFilename,
</if>
<if test="bpmlsNo != null">
bpmlsNo,
</if>
<if test="bpmNo != null">
bpmNo,
</if>
<if test="operater != null">
operater,
</if>
<if test="operateDate != null">
operateDate,
</if>
<if test="shipper != null">
shipper,
</if>
<if test="status != null">
status,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="cDLCode != null">
#{cDLCode},
</if>
<if test="invoiceNo != null">
#{invoiceNo},
</if>
<if test="invoiceCode != null">
#{invoiceCode},
</if>
<if test="invoiceTime != null">
#{invoiceTime},
</if>
<if test="invoiceAmount != null">
#{invoiceAmount},
</if>
<if test="invoicePhoto != null">
#{invoicePhoto},
</if>
<if test="invoiceFilename != null">
#{invoiceFilename},
</if>
<if test="bpmlsNo != null">
#{bpmlsNo},
</if>
<if test="bpmNo != null">
#{bpmNo},
</if>
<if test="operater != null">
#{operater},
</if>
<if test="operateDate != null">
#{operateDate},
</if>
<if test="shipper != null">
#{shipper},
</if>
<if test="status != null">
#{status},
</if>
</trim>
</insert>
<select id="getDdbh" resultType="com.dxhy.order.consumer.modules.bespoke.model.yy.InvoiceBpmmap">
select cdlcode, bpmno,bpmlsno
from V_INVOICE_BPMMAP
where CDLCODE = #{cdlCode}
</select>
</mapper> </mapper>

Loading…
Cancel
Save