From 816bebd90d21ff510a3936d2d7b83b76b4db5eae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E8=8D=A3=E7=90=B3?= Date: Fri, 24 Nov 2023 12:32:37 +0800 Subject: [PATCH 01/16] =?UTF-8?q?feature:=E5=86=B2=E7=BA=A2=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../redis/service/RedisService.java | 9 ++ .../redis/service/impl/RedisServiceImpl.java | 23 ++++ .../order/model/page/OrderInvoiceInfoVo.java | 115 ++++++++++++++++ .../model/page/RedInvoiceCheckReqPo.java | 17 +++ .../order/model/page/RedInvoicePreReqPo.java | 23 ++++ .../order/model/page/RedInvoiceRespPo.java | 14 ++ .../model/page/RedInvoiceStageReqPo.java | 19 +++ .../controller/OrderInvoiceController.java | 128 +++++++++++++++++- .../invoice/dao/OrderInvoiceInfoMapper.java | 6 + .../service/OrderInvoiceInfoService.java | 15 +- .../impl/OrderInvoiceInfoServiceImpl.java | 128 ++++++++++++++++++ .../mybatis/mapper/OrderInvoiceInfoMapper.xml | 73 ++++++++++ 12 files changed, 565 insertions(+), 5 deletions(-) create mode 100644 order-management-common/src/main/java/com/dxhy/order/model/page/OrderInvoiceInfoVo.java create mode 100644 order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoiceCheckReqPo.java create mode 100644 order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoicePreReqPo.java create mode 100644 order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoiceRespPo.java create mode 100644 order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoiceStageReqPo.java diff --git a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/thirdservice/redis/service/RedisService.java b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/thirdservice/redis/service/RedisService.java index 0850d462..2a5da749 100644 --- a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/thirdservice/redis/service/RedisService.java +++ b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/thirdservice/redis/service/RedisService.java @@ -1,6 +1,7 @@ package com.dxhy.order.baseservice.module.thirdservice.redis.service; import java.util.List; +import java.util.Map; import java.util.Set; /** @@ -166,4 +167,12 @@ public interface RedisService { * @return */ Long getExpire(String key); + + void putHashMap(String key,String field,String value); + + String pullHashMap(String key,String field); + + Map pullAllHashMap(String key); + + Long delHashMap(String key); } diff --git a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/thirdservice/redis/service/impl/RedisServiceImpl.java b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/thirdservice/redis/service/impl/RedisServiceImpl.java index 7b951dda..ab09a124 100644 --- a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/thirdservice/redis/service/impl/RedisServiceImpl.java +++ b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/thirdservice/redis/service/impl/RedisServiceImpl.java @@ -4,11 +4,13 @@ import com.dxhy.order.utils.JsonUtils; import com.dxhy.order.baseservice.module.thirdservice.redis.service.RedisService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.springframework.data.redis.core.HashOperations; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.concurrent.TimeUnit; @@ -198,4 +200,25 @@ public class RedisServiceImpl implements RedisService { public Long getExpire(String key) { return redisTemplate.getExpire(key); } + + @Override + public void putHashMap(String key,String field,String value){ + redisTemplate.opsForHash().put(key, field, value); + } + + @Override + public String pullHashMap(String key,String field){ + HashOperations stringHashOperations = redisTemplate.opsForHash(); + return stringHashOperations.get(key, field); + } + @Override + public Map pullAllHashMap(String key){ + HashOperations stringHashOperations = redisTemplate.opsForHash(); + return stringHashOperations.entries(key); + } + @Override + public Long delHashMap(String key) { + HashOperations stringHashOperations = redisTemplate.opsForHash(); + return stringHashOperations.delete(key); + } } diff --git a/order-management-common/src/main/java/com/dxhy/order/model/page/OrderInvoiceInfoVo.java b/order-management-common/src/main/java/com/dxhy/order/model/page/OrderInvoiceInfoVo.java new file mode 100644 index 00000000..41c9f640 --- /dev/null +++ b/order-management-common/src/main/java/com/dxhy/order/model/page/OrderInvoiceInfoVo.java @@ -0,0 +1,115 @@ +package com.dxhy.order.model.page; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class OrderInvoiceInfoVo { + + /** + * 订单表id + */ + private String orderInfoId; + /** + * 发票请求流水号 + */ + private String fpqqlsh; + /** + * 订单号 + */ + private String ddh; + + /** + * 发票代码 + */ + private String fpdm; + + /** + * 发票号码 + */ + private String fphm; + /** + * 开票合计金额 + */ + private String kphjje; + + /** + * 合计不含税金额 + */ + private String hjbhsje; + /** + * 开票税额 + */ + private String kpse; + /** + * 可冲红金额 + * 2019-04-01添加 + */ + private String sykchje; + + /** + * 剩余可充红不含税金额 + * 用于校验 + */ + private String sykchbhsje; + + /** + * 剩余可充红税额 + * 用于校验 + */ + private String sykchse; + /** + * 作废标志 + */ + private String zfBz; + /** + * 冲红标志 + */ + private String chBz; + //==================process============================= + + /** + * 发票种类代码 + */ + private String fpzlDm; + + /** + * 购货方名称 + */ + private String ghfMc; + + /** + * 购货方纳税人识别号 + */ + private String ghfNsrsbh; + /** + * 订单状态 + */ + private String ddzt; + + /** + * 销货方纳税人识别号 + */ + private String xhfNsrsbh; + + /** + * 销货方名称 + */ + private String xhfMc; + /** + * 报账单号 + */ + private String bzdh; + /** + * 系统来源 + */ + private String xtly; + /** + * 数据权限ID + */ + private String entId; + + private Boolean selected; + +} diff --git a/order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoiceCheckReqPo.java b/order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoiceCheckReqPo.java new file mode 100644 index 00000000..b4ff77fe --- /dev/null +++ b/order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoiceCheckReqPo.java @@ -0,0 +1,17 @@ +package com.dxhy.order.model.page; + +import com.sun.istack.internal.NotNull; +import lombok.Data; + +@Data +public class RedInvoiceCheckReqPo { + + @NotNull + private String lzbzdh; + + @NotNull + private String orderInfoId; + + @NotNull + private String xhfNsrsbh; +} diff --git a/order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoicePreReqPo.java b/order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoicePreReqPo.java new file mode 100644 index 00000000..8902dfe4 --- /dev/null +++ b/order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoicePreReqPo.java @@ -0,0 +1,23 @@ +package com.dxhy.order.model.page; + +import lombok.Data; + +@Data +public class RedInvoicePreReqPo { + + + /** + * 原发票发票种类 + */ + private String yfpFpzl; + + /** + * 原发票发票开票日期 + */ + private String yfpKprq; + + /** + * 冲红原因 + */ + private String chyy; +} diff --git a/order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoiceRespPo.java b/order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoiceRespPo.java new file mode 100644 index 00000000..8176abd7 --- /dev/null +++ b/order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoiceRespPo.java @@ -0,0 +1,14 @@ +package com.dxhy.order.model.page; + +import com.dxhy.order.model.OrderItemInfo; +import lombok.Data; + +import java.util.List; + +@Data +public class RedInvoiceRespPo { + + private List redItemInfoList; + + private List orderInvoiceInfos; +} diff --git a/order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoiceStageReqPo.java b/order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoiceStageReqPo.java new file mode 100644 index 00000000..2d7a843c --- /dev/null +++ b/order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoiceStageReqPo.java @@ -0,0 +1,19 @@ +package com.dxhy.order.model.page; + +import com.dxhy.order.model.OrderInvoiceInfo; +import com.dxhy.order.model.OrderItemInfo; +import lombok.Data; + +import java.util.List; + +@Data +public class RedInvoiceStageReqPo { + //红字勾选明细数据 + private List redItemList; + //蓝字勾选明细数据 + private List blueItemList; + //蓝字勾选发票数据 + private OrderInvoiceInfo blueInvoiceInfo; + //红字订单的发票请求流水号 + private String fpqqlsh; +} diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInvoiceController.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInvoiceController.java index 4ae21f23..5860bbc3 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInvoiceController.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInvoiceController.java @@ -3,6 +3,7 @@ package com.dxhy.order.consumer.modules.order.controller; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONException; +import com.alibaba.fastjson.JSONObject; import com.dxhy.order.baseservice.module.base.service.BaseService; import com.dxhy.order.constant.ConfigureConstant; import com.dxhy.order.constant.OrderInfoContentEnum; @@ -10,7 +11,13 @@ import com.dxhy.order.constant.OrderInfoEnum; import com.dxhy.order.constant.OrderManagementConstant; import com.dxhy.order.consumer.modules.order.model.dto.RewriteBzdhDTO; import com.dxhy.order.consumer.modules.order.service.OrderBzdhService; +import com.dxhy.order.consumer.modules.order.service.OrderItemInfoService; +import com.dxhy.order.exception.OrderReceiveException; import com.dxhy.order.model.*; +import com.dxhy.order.model.page.RedInvoiceCheckReqPo; +import com.dxhy.order.model.page.RedInvoicePreReqPo; +import com.dxhy.order.model.page.RedInvoiceRespPo; +import com.dxhy.order.model.page.RedInvoiceStageReqPo; import com.dxhy.order.model.sk.kp.CommonInvoiceStatus; import com.dxhy.order.utils.CommonUtils; import com.dxhy.order.utils.JsonUtils; @@ -28,12 +35,12 @@ import com.dxhy.order.invoice.module.invoice.service.OrderInvoiceInfoService; import com.dxhy.order.invoice.module.invoice.service.UnifyService; import com.dxhy.order.invoice.module.invoicespecial.model.SpecialInvoiceReversalEntity; import com.dxhy.order.invoice.module.invoicespecial.service.SpecialInvoiceReversalService; -import com.dxhy.order.utils.StringUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -82,6 +89,9 @@ public class OrderInvoiceController { @Resource private BaseService baseService; + @Resource + private OrderItemInfoService itemInfoService; + /** * 异常订单直接开票接口 @@ -138,6 +148,122 @@ public class OrderInvoiceController { return R.error().put(OrderManagementConstant.MESSAGE, "未知异常,请联系管理员!"); } } + /** + * 山能定制冲红流程,普票负数开具、专票的红字申请、数电红字确认单 + * + * @param + * @return + */ + @ApiOperation(value = "冲红流程", notes = "订单开票-冲红流程校验的接口") + @PostMapping("/checkRedInvoice") + @SysLog(operation = "冲红流程", operationDesc = "订单开具冲红流程校验", key = "冲红流程") + public R checkRedInvoice(@RequestBody @Validated RedInvoiceCheckReqPo redInvoiceReqPo) { + try { + return orderInvoiceInfoService.checkRedInvoice(redInvoiceReqPo); + } catch (OrderReceiveException e){ + return R.error(e.getMessage()); + } catch (Exception e) { + log.error("{}待开订单开具接口,参数转换异常e:{}", LOGGER_MSG, e); + return R.error().put(OrderManagementConstant.MESSAGE, "未知异常,请联系管理员!"); + } + } + + /** + * 山能定制冲红流程,普票负数开具、专票的红字申请、数电红字确认单 + * + * @param + * @return + */ + @ApiOperation(value = "冲红流程", notes = "订单开票-冲红流程获取数据的接口") + @PostMapping("/getOrderInvoiceData") + @SysLog(operation = "冲红流程", operationDesc = "订单开具冲红流程校验", key = "冲红流程") + public R getOrderInvoiceData(@RequestBody @Validated RedInvoiceCheckReqPo redInvoiceReqPo) { + try { + RedInvoiceRespPo orderInvoiceData = orderInvoiceInfoService.getOrderInvoiceData(redInvoiceReqPo); + return R.ok().put(OrderManagementConstant.DATA,orderInvoiceData); + } catch (Exception e) { + log.error("{}待开订单开具接口,参数转换异常e:{}", LOGGER_MSG, e); + return R.error().put(OrderManagementConstant.MESSAGE, "未知异常,请联系管理员!"); + } + } + + /** + * 获取蓝字发票明细订单 + * @param param + * @return + */ + @ApiOperation(value = "冲红流程", notes = "订单开票-冲红流程获取发票明细数据的接口") + @PostMapping("/getOrderItemData") + @SysLog(operation = "冲红流程", operationDesc = "冲红流程获取发票明细数据的接口", key = "冲红流程") + public R getOrderItemData(@RequestBody String param) { + try { + JSONObject jsonObject = JSONObject.parseObject(param); + List orderItemInfos = itemInfoService.selectOrderItemInfoByOrderId(jsonObject.getString("OrderInfoId"), Arrays.asList(jsonObject.getString("xhfNsrsbh"))); + return R.ok().put(OrderManagementConstant.DATA,orderItemInfos); + } catch (Exception e) { + log.error("{}待开订单开具接口,参数转换异常e:{}", LOGGER_MSG, e); + return R.error().put(OrderManagementConstant.MESSAGE, "未知异常,请联系管理员!"); + } + } + + /** + * 保存红字明细与蓝字发票的关联关系 + * @param + * @return + */ + @ApiOperation(value = "冲红流程", notes = "订单开票-冲红流程数据暂存接口") + @PostMapping("/stageRedInvoiceData") + @SysLog(operation = "冲红流程", operationDesc = "冲红流程数据暂存接口", key = "冲红流程") + public R stageRedInvoiceData(@RequestBody RedInvoiceStageReqPo redInvoiceSaveReqPo) { + try { + //红字 + return orderInvoiceInfoService.stageRedInvoiceData(redInvoiceSaveReqPo); + } catch (Exception e) { + log.error("{}待开订单开具接口,参数转换异常e:{}", LOGGER_MSG, e); + return R.error().put(OrderManagementConstant.MESSAGE, "未知异常,请联系管理员!"); + } + } + + /** + * 生成预制 + * @param + * @return + */ + @ApiOperation(value = "冲红流程", notes = "订单开票-冲红流程生成预览数据接口") + @PostMapping("/generatePreInvoice") + @SysLog(operation = "冲红流程", operationDesc = "冲红流程生成预览数据接口", key = "冲红流程") + public R generatePreInvoice(@RequestBody RedInvoicePreReqPo redInvoicePreReqPo) { + try { + + + return R.ok(); + } catch (Exception e) { + log.error("{}待开订单开具接口,参数转换异常e:{}", LOGGER_MSG, e); + return R.error().put(OrderManagementConstant.MESSAGE, "未知异常,请联系管理员!"); + } + } + + /** + * 发票开具、专票冲红申请红字、数电申请红字确认单 + * @param + * @return + */ + @ApiOperation(value = "冲红流程", notes = "订单开票-冲红流程保存并开具发票") + @PostMapping("/saveInvoiceData") + @SysLog(operation = "冲红流程", operationDesc = "冲红流程保存并开具发票", key = "冲红流程") + public R saveInvoiceData(@RequestBody RedInvoicePreReqPo redInvoicePreReqPo) { + try { + + //如果是普通 + return R.ok(); + } catch (Exception e) { + log.error("{}待开订单开具接口,参数转换异常e:{}", LOGGER_MSG, e); + return R.error().put(OrderManagementConstant.MESSAGE, "未知异常,请联系管理员!"); + } + } + + + /** * 生成预制发票(非拆分场景) diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/dao/OrderInvoiceInfoMapper.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/dao/OrderInvoiceInfoMapper.java index 907da478..e994bd6b 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/dao/OrderInvoiceInfoMapper.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/dao/OrderInvoiceInfoMapper.java @@ -6,6 +6,7 @@ import com.dxhy.order.model.OrderInvoiceInfo; import com.dxhy.order.invoice.module.invoice.model.bo.CountInvoiceByMonthBO; import com.dxhy.order.invoice.module.invoice.model.bo.QueryCountInvoiceBO; import com.dxhy.order.invoice.module.invoice.model.vo.*; +import com.dxhy.order.model.page.OrderInvoiceInfoVo; import org.apache.ibatis.annotations.Param; import java.util.Date; @@ -248,4 +249,9 @@ public interface OrderInvoiceInfoMapper { List countInoviceInfo(@Param("orderInfoIds")List orderInfoIds); List selectInvoiceInfoByFpqqlshs(@Param("fpqqlshs") List fpqqlshs); + + /** + * 根据报账单查询蓝字发票信息 + */ + List selectInvoiceInfoByBzdh(@Param("bzdh") String bzdh, @Param("shList") List shList); } diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/OrderInvoiceInfoService.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/OrderInvoiceInfoService.java index 68c1d53d..99ac247c 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/OrderInvoiceInfoService.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/OrderInvoiceInfoService.java @@ -1,14 +1,15 @@ package com.dxhy.order.invoice.module.invoice.service; -import com.dxhy.order.model.CommonOrderInvoiceAndOrderMxInfo; -import com.dxhy.order.model.InvoiceCount; -import com.dxhy.order.model.OrderInvoiceInfo; -import com.dxhy.order.model.PageUtils; +import com.dxhy.order.exception.OrderReceiveException; +import com.dxhy.order.model.*; import com.dxhy.order.baseservice.module.thirdservice.rabbitmq.model.RabbitMqCommonInvoice; import com.dxhy.order.invoice.module.invoice.model.FileDownLoad; import com.dxhy.order.invoice.module.invoice.model.bo.QueryCountInvoiceBO; import com.dxhy.order.invoice.module.invoice.model.vo.*; +import com.dxhy.order.model.page.RedInvoiceCheckReqPo; +import com.dxhy.order.model.page.RedInvoiceRespPo; +import com.dxhy.order.model.page.RedInvoiceStageReqPo; import org.apache.ibatis.annotations.Param; import java.io.File; @@ -284,5 +285,11 @@ public interface OrderInvoiceInfoService { String signInvoicePrint(String excelFile, List ids) throws Exception; List countInoviceInfo(@Param("orderInfoIds")List orderInfoIds); + + R checkRedInvoice(RedInvoiceCheckReqPo redInvoiceReqPo) throws OrderReceiveException; + + RedInvoiceRespPo getOrderInvoiceData(RedInvoiceCheckReqPo redInvoiceReqPo); + + R stageRedInvoiceData(RedInvoiceStageReqPo redInvoiceSaveReqPo); } diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java index c0fb8174..6335d3cc 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java @@ -6,6 +6,8 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.nacos.client.config.common.ConfigConstants; import com.dxhy.base.file.common.ExcelReadContext; import com.dxhy.base.file.handle.ExcelExportHandle; import com.dxhy.order.baseservice.config.BaseServiceConfig; @@ -20,6 +22,7 @@ import com.dxhy.order.baseservice.module.thirdservice.simsback.service.SimsBackS import com.dxhy.order.baseservice.module.thirdservice.user.model.DeptEntity; import com.dxhy.order.baseservice.module.thirdservice.user.service.UserInfoService; import com.dxhy.order.constant.*; +import com.dxhy.order.exception.OrderReceiveException; import com.dxhy.order.invoice.config.InvoiceConfig; import com.dxhy.order.invoice.module.invoice.dao.*; import com.dxhy.order.invoice.module.invoice.model.FileDownLoad; @@ -38,6 +41,10 @@ import com.dxhy.order.invoice.utils.HttpInvoiceRequestUtilQd; import com.dxhy.order.invoice.utils.PDFExportUtil; import com.dxhy.order.invoice.utils.generateinvoice.PdfProducer; import com.dxhy.order.model.*; +import com.dxhy.order.model.page.OrderInvoiceInfoVo; +import com.dxhy.order.model.page.RedInvoiceCheckReqPo; +import com.dxhy.order.model.page.RedInvoiceRespPo; +import com.dxhy.order.model.page.RedInvoiceStageReqPo; import com.dxhy.order.model.qd.QdFileDownloadRequest; import com.dxhy.order.model.qd.QdFileDownloadResponse; import com.dxhy.order.model.queue.CommonTsMqData; @@ -129,6 +136,8 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { @Qualifier("asyncExecutor") private Executor voucherTaskExecutor; + private static final String KEY_PREFIX = "order:red:"; + /** * 作用: @@ -1493,5 +1502,124 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { return orderInvoiceInfoMapper.countInoviceInfo(orderInfoIds); } + @Override + public R checkRedInvoice(RedInvoiceCheckReqPo redInvoiceReqPo) throws OrderReceiveException{ + //根据报账单查询蓝字数据 + RedInvoiceRespPo orderInvoiceData = this.getOrderInvoiceData(redInvoiceReqPo); + List orderInvoiceInfos = orderInvoiceData.getOrderInvoiceInfos(); + //查询报账单是否存在 + if(orderInvoiceInfos.size() == 0){ + return R.error("根据报账单号未查询到订单");//改为常量 + } + //todo 根据蓝字报账单调用SAP接口查询SAP状态,是否允许冲红 明慧开发 + + + //根据orderinfoId,查询红字订单信息 + OrderInfo orderInfo = orderInfoMapper.selectOrderInfoByOrderId(redInvoiceReqPo.getOrderInfoId(), Arrays.asList(redInvoiceReqPo.getXhfNsrsbh())); + if(orderInfo == null){ + return R.error("当前红冲订单查询为空"); + } + + String xhfXx = (StringUtils.isNotBlank(orderInfo.getXhfNsrsbh()) ? orderInfo.getXhfNsrsbh() : "") + + (StringUtils.isNotBlank(orderInfo.getXhfMc()) ? orderInfo.getXhfMc() : ""); + String lzXhfXx = (StringUtils.isNotBlank(orderInvoiceInfos.get(0).getXhfNsrsbh()) ? orderInvoiceInfos.get(0).getXhfNsrsbh() : "") + + (StringUtils.isNotBlank(orderInvoiceInfos.get(0).getXhfMc()) ? orderInvoiceInfos.get(0).getXhfMc() : ""); + String ghfXx = (StringUtils.isNotBlank(orderInfo.getGhfNsrsbh()) ? orderInfo.getGhfNsrsbh() : "") + + (StringUtils.isNotBlank(orderInfo.getGhfMc()) ? orderInfo.getGhfMc() : ""); + String lzGhfXx = (StringUtils.isNotBlank(orderInvoiceInfos.get(0).getGhfNsrsbh()) ? orderInvoiceInfos.get(0).getGhfNsrsbh() : "") + + (StringUtils.isNotBlank(orderInvoiceInfos.get(0).getGhfMc()) ? orderInvoiceInfos.get(0).getGhfMc() : ""); + + //购销方是否一致 + if(!xhfXx.equals(lzXhfXx) ){ + return R.error("负数订单的销方信息与对应蓝字报账单号不一致");//改为常量 + } + if(!ghfXx.equals(lzGhfXx)){ + return R.error("负数订单的购方信息与对应蓝字报账单号不一致");//改为常量 + } + //校验发票种类是否一致 + if(!orderInfo.getFpzlDm().equals(orderInvoiceInfos.get(0).getFpzlDm())){ + return R.error("负数订单的发票种类与对应蓝字报账单号不一致");//改为常量 + } + //比较金额(发票剩余金额、如果是专票的话需要加上红字申请的金额、如果是数电票的话需要调用接口查询红字查询) + + + + return R.ok(); + } + + /** + * 根据报账单查询蓝字数据 + * 根据请求流水号查询红字明细 + * @return + */ + @Override + public RedInvoiceRespPo getOrderInvoiceData(RedInvoiceCheckReqPo redInvoiceReqPo) { + RedInvoiceRespPo redInvoiceRespPo = new RedInvoiceRespPo(); + List orderInvoiceInfoVos = orderInvoiceInfoMapper.selectInvoiceInfoByBzdh(redInvoiceReqPo.getLzbzdh(), Arrays.asList(redInvoiceReqPo.getXhfNsrsbh())); + List orderItemInfos = orderItemInfoMapper.selectOrderItemInfoByOrderId(redInvoiceReqPo.getOrderInfoId(), Arrays.asList(redInvoiceReqPo.getXhfNsrsbh())); + //是否允许勾选,发票状态 + orderInvoiceInfoVos.stream().map(t->{ + Boolean selected = true; + t.setDdzt("开具成功");//枚举 + if(OrderInfoEnum.ORDER_STATUS_0.getKey().equals(t.getDdzt()) + ||OrderInfoEnum.ORDER_STATUS_1.getKey().equals(t.getDdzt()) + ||OrderInfoEnum.ORDER_STATUS_2.getKey().equals(t.getDdzt()) + ||OrderInfoEnum.ORDER_STATUS_3.getKey().equals(t.getDdzt()) + ){ + t.setDdzt("未开具");//枚举 + selected = false; + } + if(OrderInfoEnum.ORDER_STATUS_4.getKey().equals(t.getDdzt())){ + t.setDdzt("开具中");//枚举 + selected = false; + } + + + + if(OrderInfoEnum.ORDER_STATUS_5.getKey().equals(t.getDdzt()) && + (ConfigureConstant.STRING_1.equals(t.getZfBz()) + || ConfigureConstant.STRING_2.equals(t.getZfBz())) + ){ + t.setDdzt("已作废");//枚举 + selected = false; + } + if(OrderInfoEnum.ORDER_STATUS_5.getKey().equals(t.getDdzt()) && + (ConfigureConstant.STRING_1.equals(t.getChBz()) + || ConfigureConstant.STRING_2.equals(t.getChBz()) + || ConfigureConstant.STRING_3.equals(t.getChBz())) + ){ + t.setDdzt("已冲红");//枚举 + selected = false; + } + // + if(OrderInfoEnum.ORDER_STATUS_5.getKey().equals(t.getDdzt()) && + (ConfigureConstant.STRING_4.equals(t.getChBz()) + || ConfigureConstant.STRING_5.equals(t.getChBz()) + || ConfigureConstant.STRING_6.equals(t.getChBz())) + ){ + t.setDdzt("部分冲红");//枚举 + } + t.setSelected(selected); + + return t; + }).collect(Collectors.toList()); + redInvoiceRespPo.setOrderInvoiceInfos(orderInvoiceInfoVos); + redInvoiceRespPo.setRedItemInfoList(orderItemInfos); + return redInvoiceRespPo; + } + + @Override + public R stageRedInvoiceData(RedInvoiceStageReqPo redInvoiceSaveReqPo){ + //存储redis map结构,map外层key是红字fpqqlsh,内层是发票号码+发票代码,将整体发票报文存储在value里 + OrderInvoiceInfo blueInvoiceInfo = redInvoiceSaveReqPo.getBlueInvoiceInfo(); + String key = KEY_PREFIX + redInvoiceSaveReqPo.getFpqqlsh(); + String innerKey = blueInvoiceInfo.getFpdm() + blueInvoiceInfo.getFphm(); + //组装发票报文 + //金额、数量、税额跟跟换为负数,折扣行要与被折扣行合并 + //校验重复提交数据覆盖问题 + redisService.putHashMap(key,innerKey, JSONObject.toJSONString(redInvoiceSaveReqPo)); + return R.ok(); + } + } diff --git a/order-management-invoice/src/main/resources/mybatis/mapper/OrderInvoiceInfoMapper.xml b/order-management-invoice/src/main/resources/mybatis/mapper/OrderInvoiceInfoMapper.xml index 1809d6d8..d223c09d 100644 --- a/order-management-invoice/src/main/resources/mybatis/mapper/OrderInvoiceInfoMapper.xml +++ b/order-management-invoice/src/main/resources/mybatis/mapper/OrderInvoiceInfoMapper.xml @@ -222,6 +222,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2261,4 +2286,52 @@ AND ( oii.zf_bz = '0' OR oii.ch_bz = '0' ) + + + From fa01d1dc38d518d5fb5bb21ece2ef601feea5c8d Mon Sep 17 00:00:00 2001 From: "zhenghaiyang@ele-cloud.com" Date: Thu, 30 Nov 2023 14:50:41 +0800 Subject: [PATCH 02/16] =?UTF-8?q?feature=201.=E5=A2=9E=E5=8A=A0=E8=B4=9F?= =?UTF-8?q?=E6=95=B0=E5=86=B2=E7=BA=A2=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../redis/service/RedisService.java | 2 + .../redis/service/impl/RedisServiceImpl.java | 7 + order-management-common/pom.xml | 6 +- .../com/dxhy/order/model/OrderItemInfo.java | 2 + .../order/model/page/OrderInvoiceInfoVo.java | 4 + .../model/page/RedInvoiceCheckReqPo.java | 5 +- .../order/model/page/RedInvoiceRespPo.java | 3 + .../manager/service/InvoiceService.java | 2 + .../service/impl/InvoiceServiceImpl.java | 229 +++++++++++++++++- .../controller/OrderInvoiceController.java | 39 ++- .../src/main/resources/bootstrap-dev.yaml | 10 +- .../src/main/resources/bootstrap.yaml | 4 +- .../controller/InvoiceDetailsController.java | 2 +- .../module/invoice/model/Hzqrdxxmxqd.java | 41 ++++ .../module/invoice/model/Hzqrdxxqd.java | 70 ++++++ .../model/SpecialInvoiceReversalPlus.java | 13 + .../service/OrderInvoiceInfoService.java | 7 +- .../impl/OfdToPngSDEnergyServiceImpl.java | 4 +- .../impl/OrderInvoiceInfoServiceImpl.java | 131 +++++++++- .../SpecialInvoiceReversalController.java | 16 +- .../impl/SpecialInvoiceServiceImpl.java | 6 +- .../mybatis/mapper/OrderInfoMapper.xml | 7 +- .../mybatis/mapper/OrderInvoiceInfoMapper.xml | 15 +- 23 files changed, 577 insertions(+), 48 deletions(-) create mode 100644 order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/Hzqrdxxmxqd.java create mode 100644 order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/Hzqrdxxqd.java create mode 100644 order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/SpecialInvoiceReversalPlus.java diff --git a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/thirdservice/redis/service/RedisService.java b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/thirdservice/redis/service/RedisService.java index 2a5da749..3d8d3d50 100644 --- a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/thirdservice/redis/service/RedisService.java +++ b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/thirdservice/redis/service/RedisService.java @@ -175,4 +175,6 @@ public interface RedisService { Map pullAllHashMap(String key); Long delHashMap(String key); + + Long delHashMap(String key,String field); } diff --git a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/thirdservice/redis/service/impl/RedisServiceImpl.java b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/thirdservice/redis/service/impl/RedisServiceImpl.java index ab09a124..64326be5 100644 --- a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/thirdservice/redis/service/impl/RedisServiceImpl.java +++ b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/thirdservice/redis/service/impl/RedisServiceImpl.java @@ -211,14 +211,21 @@ public class RedisServiceImpl implements RedisService { HashOperations stringHashOperations = redisTemplate.opsForHash(); return stringHashOperations.get(key, field); } + @Override public Map pullAllHashMap(String key){ HashOperations stringHashOperations = redisTemplate.opsForHash(); return stringHashOperations.entries(key); } + @Override public Long delHashMap(String key) { HashOperations stringHashOperations = redisTemplate.opsForHash(); return stringHashOperations.delete(key); } + + public Long delHashMap(String key,String field) { + HashOperations stringHashOperations = redisTemplate.opsForHash(); + return stringHashOperations.delete(key,field); + } } diff --git a/order-management-common/pom.xml b/order-management-common/pom.xml index 36af9bc2..c5395271 100644 --- a/order-management-common/pom.xml +++ b/order-management-common/pom.xml @@ -13,7 +13,11 @@ - + + org.hibernate.validator + hibernate-validator + ${hibernate.validator.version} + org.apache.commons diff --git a/order-management-common/src/main/java/com/dxhy/order/model/OrderItemInfo.java b/order-management-common/src/main/java/com/dxhy/order/model/OrderItemInfo.java index acac46e4..d9d0d8bf 100644 --- a/order-management-common/src/main/java/com/dxhy/order/model/OrderItemInfo.java +++ b/order-management-common/src/main/java/com/dxhy/order/model/OrderItemInfo.java @@ -189,5 +189,7 @@ public class OrderItemInfo implements Serializable { * 价税合计 */ private String jshj; + private String gxbz; + private String sykchje; } diff --git a/order-management-common/src/main/java/com/dxhy/order/model/page/OrderInvoiceInfoVo.java b/order-management-common/src/main/java/com/dxhy/order/model/page/OrderInvoiceInfoVo.java index 41c9f640..4470e316 100644 --- a/order-management-common/src/main/java/com/dxhy/order/model/page/OrderInvoiceInfoVo.java +++ b/order-management-common/src/main/java/com/dxhy/order/model/page/OrderInvoiceInfoVo.java @@ -3,6 +3,8 @@ package com.dxhy.order.model.page; import lombok.Getter; import lombok.Setter; +import java.util.Date; + @Getter @Setter public class OrderInvoiceInfoVo { @@ -112,4 +114,6 @@ public class OrderInvoiceInfoVo { private Boolean selected; + private Date kprq; + } diff --git a/order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoiceCheckReqPo.java b/order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoiceCheckReqPo.java index b4ff77fe..814d7b18 100644 --- a/order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoiceCheckReqPo.java +++ b/order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoiceCheckReqPo.java @@ -1,8 +1,9 @@ package com.dxhy.order.model.page; -import com.sun.istack.internal.NotNull; import lombok.Data; +import javax.validation.constraints.NotNull; + @Data public class RedInvoiceCheckReqPo { @@ -14,4 +15,6 @@ public class RedInvoiceCheckReqPo { @NotNull private String xhfNsrsbh; + + private String sfhb; } diff --git a/order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoiceRespPo.java b/order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoiceRespPo.java index 8176abd7..1474641b 100644 --- a/order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoiceRespPo.java +++ b/order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoiceRespPo.java @@ -11,4 +11,7 @@ public class RedInvoiceRespPo { private List redItemInfoList; private List orderInvoiceInfos; + private String redFpqqlsh; + private String redBzdh; + private String xhfNsrsbh; } diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/InvoiceService.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/InvoiceService.java index b979b46f..2b0e3040 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/InvoiceService.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/InvoiceService.java @@ -116,4 +116,6 @@ public interface InvoiceService { */ void checkBuyerCheckBankFlag(List orderInfoIdList); + R saveRedInvoiceData(String redFpqqlsh, String xhfNsrsbh); + } diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceServiceImpl.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceServiceImpl.java index fa9ae393..dadf645e 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceServiceImpl.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceServiceImpl.java @@ -4,13 +4,13 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.dxhy.base.constant.OrderSeparationException; import com.dxhy.base.constant.OrderSplitException; import com.dxhy.base.constant.TaxSeparateConfig; import com.dxhy.base.utils.PriceTaxSeparationUtilNew; import com.dxhy.order.baseservice.config.BaseServiceConfig; import com.dxhy.order.baseservice.module.base.model.DrawerInfoEntity; -import com.dxhy.order.baseservice.module.base.model.RuleSplitEntity; import com.dxhy.order.baseservice.module.base.service.BaseService; import com.dxhy.order.baseservice.module.base.service.DrawerInfoService; import com.dxhy.order.baseservice.module.base.service.RuleSplitService; @@ -31,26 +31,38 @@ import com.dxhy.order.consumer.modules.order.model.PageInvoiceItem; import com.dxhy.order.consumer.modules.order.model.PageInvoiceReq; import com.dxhy.order.consumer.modules.order.model.PageReInvoice; import com.dxhy.order.consumer.modules.order.service.*; +import com.dxhy.order.consumer.openapi.protocol.v4.order.*; +import com.dxhy.order.consumer.openapi.protocol.v6.hzqrd.QdCommonRspV6; +import com.dxhy.order.consumer.openapi.service.AllocateInvoiceInterfaceServiceV3; +import com.dxhy.order.consumer.openapi.service.InterfaceServiceV6; import com.dxhy.order.consumer.utils.BeanTransitionUtils; import com.dxhy.order.consumer.utils.TaxSpecialPolicyUtil; import com.dxhy.order.exception.OrderReceiveException; import com.dxhy.order.invoice.config.InvoiceConfig; import com.dxhy.order.invoice.module.fangge.service.FangGeService; import com.dxhy.order.invoice.module.invoice.dao.OrderInfoMapper; +import com.dxhy.order.invoice.module.invoice.model.Hzqrdxxmxqd; +import com.dxhy.order.invoice.module.invoice.model.Hzqrdxxqd; import com.dxhy.order.invoice.module.invoice.model.PageSld; +import com.dxhy.order.invoice.module.invoice.model.SpecialInvoiceReversalPlus; import com.dxhy.order.invoice.module.invoice.service.InvalidInvoiceService; import com.dxhy.order.invoice.module.invoice.service.OrderInvoiceInfoService; import com.dxhy.order.invoice.module.invoice.service.UnifyService; +import com.dxhy.order.invoice.module.invoicespecial.controller.SpecialInvoiceReversalController; import com.dxhy.order.invoice.utils.HttpInvoiceRequestUtil; import com.dxhy.order.model.*; +import com.dxhy.order.model.page.RedInvoiceStageReqPo; import com.dxhy.order.model.queue.FpkjMqData; import com.dxhy.order.model.sk.kp.CommonInvoiceStatus; import com.dxhy.order.model.sk.kp.InvoiceQuery; import com.dxhy.order.utils.CommonUtils; +import com.dxhy.order.utils.DistributedKeyMaker; import com.dxhy.order.utils.JsonUtils; import com.dxhy.order.utils.NsrsbhUtils; +import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.joda.time.DateTime; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -60,7 +72,6 @@ import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.*; -import java.util.stream.Collectors; /** * @author 杨士勇 @@ -148,6 +159,14 @@ public class InvoiceServiceImpl implements InvoiceService { @Resource private OrderSplitService orderSplitService; + private static final String KEY_PREFIX = "order:red:"; + private static final String KEY_RED_SYJE = "order:red:syje"; + @Resource + private SpecialInvoiceReversalController reversalController; + @Resource + private AllocateInvoiceInterfaceServiceV3 allocateInvoiceInterfaceServiceV3; + @Resource + private InterfaceServiceV6 interfaceServiceV6; @Override @@ -1622,4 +1641,210 @@ public class InvoiceServiceImpl implements InvoiceService { } + @Override + public R saveRedInvoiceData(String redFpqqlsh, String xhfNsrsbh) { + String key = KEY_PREFIX + redFpqqlsh; + Map allHashMap = redisService.pullAllHashMap(key); + OrderProcessInfo processInfo = orderProcessService.queryOrderProcessInfoByFpqqlsh(redFpqqlsh, Lists.newArrayList(xhfNsrsbh)); + if(processInfo == null || allHashMap == null){ + return R.error("参数有误!"); + } + if(processInfo.getPzgzrq() == null){ + return R.ok("缺少凭证过账日期数据"); + } + for (Map.Entry stringEntry : allHashMap.entrySet()) { + String entryValue = stringEntry.getValue(); + RedInvoiceStageReqPo invoiceStageReqPo = JSONObject.parseObject(entryValue, RedInvoiceStageReqPo.class); + List blueItemList = invoiceStageReqPo.getBlueItemList(); + OrderInvoiceInfo blueInvoiceInfo = invoiceStageReqPo.getBlueInvoiceInfo(); + BigDecimal blueMxje = blueItemList.stream().map(blueItem -> new BigDecimal(blueItem.getXmje())).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal blueSe = blueItemList.stream().map(blueItem -> new BigDecimal(blueItem.getSe())).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal hjzje = blueMxje.add(blueSe); + if(OrderInfoEnum.ORDER_INVOICE_TYPE_0.getKey().equals(blueInvoiceInfo.getFpzlDm())){ + SpecialInvoiceReversalPlus specialInvoiceReversal = new SpecialInvoiceReversalPlus(); + BeanUtils.copyProperties(blueInvoiceInfo,specialInvoiceReversal); + specialInvoiceReversal.setYfpHm(blueInvoiceInfo.getFphm()); + specialInvoiceReversal.setYfpDm(blueInvoiceInfo.getFpdm()); + specialInvoiceReversal.setYfpKprq(blueInvoiceInfo.getKprq()); + specialInvoiceReversal.setChyy(OrderInfoEnum.ORDER_CHYY_2.getKey()); + specialInvoiceReversal.setHjbhsje("-"+blueMxje.toPlainString()); + specialInvoiceReversal.setHjse("-"+blueSe.toPlainString()); + specialInvoiceReversal.setKphjje("-"+hjzje.toPlainString()); + specialInvoiceReversal.setSqsm(OrderInfoEnum.SPECIAL_INVOICE_REASON_0000000100.getKey()); + specialInvoiceReversal.setAgentName(userInfoService.getUser().getName()); + specialInvoiceReversal.setType(OrderInfoEnum.SPECIAL_INVOICE_TYPE_0.getKey()); + if(OrderInfoEnum.QDBZ_CODE_4.getKey().equals(blueInvoiceInfo.getQdbz())){ + specialInvoiceReversal.setType(OrderInfoEnum.SPECIAL_INVOICE_TYPE_1.getKey()); + }else if(OrderInfoEnum.QDBZ_CODE_5.getKey().equals(blueInvoiceInfo.getQdbz()) || OrderInfoEnum.QDBZ_CODE_6.getKey().equals(blueInvoiceInfo.getQdbz())) { + specialInvoiceReversal.setType(OrderInfoEnum.SPECIAL_INVOICE_TYPE_3.getKey()); + } + List list = Lists.newArrayList(); + for (OrderItemInfo orderItemInfo : blueItemList) { + SpecialInvoiceReversalItem invoiceReversalItem = new SpecialInvoiceReversalItem(); + BeanUtils.copyProperties(orderItemInfo,invoiceReversalItem); + invoiceReversalItem.setXmje("-"+orderItemInfo.getXmje()); + invoiceReversalItem.setSe("-"+orderItemInfo.getSe()); + invoiceReversalItem.setXmdj("-"+orderItemInfo.getXmdj()); + list.add(invoiceReversalItem); + } + specialInvoiceReversal.setItems(list); + log.info("生成红字信息表,请求数据:{}",JSONObject.toJSONString(specialInvoiceReversal)); + R r = reversalController.addSpecialInvoiceReversal(JSONObject.toJSONString(specialInvoiceReversal)); + log.info("生成红字信息表,返回数据:{}",r); + } else if(OrderInfoEnum.ORDER_INVOICE_TYPE_01.getKey().equals(blueInvoiceInfo.getFpzlDm()) || OrderInfoEnum.ORDER_INVOICE_TYPE_02.getKey().equals(blueInvoiceInfo.getFpzlDm())) { + Hzqrdxxqd hzqrdxxqd = new Hzqrdxxqd(); + hzqrdxxqd.setUUID(DistributedKeyMaker.generateShotKey()); + BeanUtils.copyProperties(blueInvoiceInfo,hzqrdxxqd); + hzqrdxxqd.setXSFNSRSBH(blueInvoiceInfo.getXhfNsrsbh()); + hzqrdxxqd.setXSFMC(blueInvoiceInfo.getXhfMc()); + hzqrdxxqd.setGMFNSRSBH(blueInvoiceInfo.getGhfNsrsbh()); + hzqrdxxqd.setGMFMC(blueInvoiceInfo.getGhfMc()); + hzqrdxxqd.setLZFPDM(blueInvoiceInfo.getFpdm()); + hzqrdxxqd.setLZFPHM(blueInvoiceInfo.getFphm()); + hzqrdxxqd.setSFZZFPBZ("N"); + hzqrdxxqd.setLZKPRQ(DateUtil.format(blueInvoiceInfo.getKprq(), "yyyy-MM-dd")); + hzqrdxxqd.setLZHJJE(blueInvoiceInfo.getHjbhsje()); + hzqrdxxqd.setLZHJSE(blueInvoiceInfo.getKpse()); + hzqrdxxqd.setLZFPPZDM(blueInvoiceInfo.getFpzlDm()); + hzqrdxxqd.setHZCXJE("-"+blueMxje.toPlainString()); + hzqrdxxqd.setHZCXSE("-"+blueSe.toPlainString()); + hzqrdxxqd.setCHYYDM("01"); + List list = Lists.newArrayList(); + Integer index = 1; + for (OrderItemInfo orderItemInfo : blueItemList) { + Hzqrdxxmxqd hzqrdxxmxqd = new Hzqrdxxmxqd(); + BeanUtils.copyProperties(orderItemInfo,hzqrdxxmxqd); + hzqrdxxmxqd.setXH(String.valueOf(index)); + hzqrdxxmxqd.setLZMXXH(orderItemInfo.getSphxh()); + hzqrdxxmxqd.setSPHFWSSFLHBBM(orderItemInfo.getSpbm()); + hzqrdxxmxqd.setXMMC(orderItemInfo.getXmmc()); + hzqrdxxmxqd.setGGXH(orderItemInfo.getGgxh()); + hzqrdxxmxqd.setDW(orderItemInfo.getXmdw()); + hzqrdxxmxqd.setFPSPDJ(orderItemInfo.getXmdj()); + hzqrdxxmxqd.setFPSPSL("-"+orderItemInfo.getXmsl()); + hzqrdxxmxqd.setJE("-"+orderItemInfo.getXmje()); + hzqrdxxmxqd.setSLV(orderItemInfo.getSl()); + hzqrdxxmxqd.setSE("-"+orderItemInfo.getSe()); + list.add(hzqrdxxmxqd); + index++; + } + hzqrdxxqd.setHZQRXXMXLIST(list); + log.info("生成红字确认单信息:请求税控数据{}",JSONObject.toJSONString(hzqrdxxqd)); + QdCommonRspV6 qdCommonRspV6 = interfaceServiceV6.processProxyForQd(ConfigurerInfo.RED_CONFIRMATION_APPLY, JSONObject.toJSONString(hzqrdxxqd)); + log.info("生成红字确认单信息:税控数据返回信息{}",JSONObject.toJSONString(qdCommonRspV6)); + } else if(OrderInfoEnum.ORDER_INVOICE_TYPE_2.getKey().equals(blueInvoiceInfo.getFpzlDm()) || OrderInfoEnum.ORDER_INVOICE_TYPE_51.getKey().equals(blueInvoiceInfo.getFpzlDm())) { + List shList = Lists.newArrayList(); + shList.add(blueInvoiceInfo.getXhfNsrsbh()); + OrderInfo orderInfo = orderInfoService.queryOrderInfoByFpqqlsh(blueInvoiceInfo.getFpqqlsh(), shList); + DdpcxxReqBO ddpcxxReq = new DdpcxxReqBO(); + DdpcxxBO ddpcxxBO = new DdpcxxBO(); + ddpcxxBO.setDDQQPCH(DistributedKeyMaker.generateShotKey()); + ddpcxxBO.setNSRSBH(blueInvoiceInfo.getXhfNsrsbh()); + ddpcxxBO.setENTID(blueInvoiceInfo.getEntId()); + ddpcxxBO.setFPLXDM(OrderInfoEnum.ORDER_INVOICE_TYPE_51.getKey().equals(blueInvoiceInfo.getFpzlDm())?"026":"007"); + ddpcxxBO.setKPFS("1"); + + ddpcxxReq.setDDPCXX(ddpcxxBO); + List ddzxxBOList = Lists.newArrayList(); + DdzxxBO ddzxxBO = new DdzxxBO(); + DdtxxBO ddtxxBO = new DdtxxBO(); + ddtxxBO.setDDQQLSH(DistributedKeyMaker.generateShotKey()); + ddtxxBO.setENTID(blueInvoiceInfo.getEntId()); + ddtxxBO.setNSRSBH(blueInvoiceInfo.getXhfNsrsbh()); + ddtxxBO.setNSRMC(blueInvoiceInfo.getXhfMc()); + ddtxxBO.setKPLX("1"); + ddtxxBO.setXHFSBH(blueInvoiceInfo.getXhfNsrsbh()); + ddtxxBO.setXHFMC(blueInvoiceInfo.getXhfMc()); + ddtxxBO.setXHFDZ(orderInfo.getXhfDz()); + ddtxxBO.setXHFDH(orderInfo.getXhfDh()); + ddtxxBO.setXHFYH(orderInfo.getXhfYh()); + ddtxxBO.setXHFZH(orderInfo.getXhfZh()); + ddtxxBO.setGMFBM(orderInfo.getGhfId()); + ddtxxBO.setGMFSBH(orderInfo.getGhfNsrsbh()); + ddtxxBO.setGMFMC(orderInfo.getGhfMc()); + ddtxxBO.setGMFDZ(orderInfo.getGhfDz()); + ddtxxBO.setGMFDH(orderInfo.getGhfDh()); + ddtxxBO.setGMFYH(orderInfo.getGhfYh()); + ddtxxBO.setGMFZH(orderInfo.getGhfZh()); + ddtxxBO.setGMFLX(orderInfo.getGhfQylx()); + ddtxxBO.setGMFSF(orderInfo.getGhfSf()); + ddtxxBO.setGMFSJH(orderInfo.getGhfSf()); + ddtxxBO.setGMFDZYX(orderInfo.getGhfEmail()); + ddtxxBO.setKPR(orderInfo.getKpr()); + ddtxxBO.setSKR(orderInfo.getSkr()); + ddtxxBO.setFHR(orderInfo.getFhr()); + ddtxxBO.setYFPDM(blueInvoiceInfo.getFpdm()); + ddtxxBO.setYFPHM(blueInvoiceInfo.getFphm()); + ddtxxBO.setYFPLX(ddpcxxBO.getFPLXDM()); + ddtxxBO.setYFPKPRQ(DateUtil.format(blueInvoiceInfo.getKprq(), "yyyy-MM-dd")); + ddtxxBO.setJSHJ("-"+hjzje); + ddtxxBO.setHJJE("-"+blueMxje); + ddtxxBO.setHJSE("-"+blueSe); + ddtxxBO.setBZ(orderInfo.getBz()); + ddtxxBO.setCHYY(OrderInfoEnum.ORDER_CHYY_2.getKey()); + ddtxxBO.setDDH(DistributedKeyMaker.generateShotKey()); + ddtxxBO.setDDSJ(DateTime.now().toString("yyyy-MM-dd")); + ddtxxBO.setKPFS("1"); + ddtxxBO.setDDLY(OrderInfoEnum.ORDER_SOURCE_2.getKey()); + ddtxxBO.setXTLY(OrderInfoEnum.SYS_SOURCE_FPPAGE.getKey()); + ddtxxBO.setBHZT(ConfigureConstant.STRING_0); + ddtxxBO.setTSCHBZ(ConfigureConstant.STRING_0); + ddtxxBO.setQDBZ(blueItemList.size()> ConfigureConstant.INT_8?OrderInfoEnum.QDBZ_CODE_1.getKey():OrderInfoEnum.QDBZ_CODE_0.getKey()); + if(OrderInfoEnum.QDBZ_CODE_5.getKey().equals(blueInvoiceInfo.getQdbz()) || OrderInfoEnum.QDBZ_CODE_6.getKey().equals(blueInvoiceInfo.getQdbz())){ + ddtxxBO.setQDBZ(blueItemList.size()> ConfigureConstant.INT_8?OrderInfoEnum.QDBZ_CODE_6.getKey():OrderInfoEnum.QDBZ_CODE_5.getKey()); + } else if (OrderInfoEnum.QDBZ_CODE_2.getKey().equals(blueInvoiceInfo.getQdbz()) || OrderInfoEnum.QDBZ_CODE_3.getKey().equals(blueInvoiceInfo.getQdbz())){ + ddtxxBO.setQDBZ(blueItemList.size()> ConfigureConstant.INT_8?OrderInfoEnum.QDBZ_CODE_3.getKey():OrderInfoEnum.QDBZ_CODE_2.getKey()); + } else if (OrderInfoEnum.QDBZ_CODE_7.getKey().equals(blueInvoiceInfo.getQdbz()) || OrderInfoEnum.QDBZ_CODE_8.getKey().equals(blueInvoiceInfo.getQdbz())) { + ddtxxBO.setQDBZ(blueItemList.size() > ConfigureConstant.INT_8 ? OrderInfoEnum.QDBZ_CODE_8.getKey() : OrderInfoEnum.QDBZ_CODE_7.getKey()); + }else if (OrderInfoEnum.QDBZ_CODE_4.getKey().equals(blueInvoiceInfo.getQdbz())) { + ddtxxBO.setQDBZ(OrderInfoEnum.QDBZ_CODE_4.getKey()); + } +// ddtxxBO.setYGXM(); +// ddtxxBO.setKPPZH(); + ddtxxBO.setPZGZRQ(DateUtil.format(processInfo.getPzgzrq(), "yyyy-MM-dd")); + ddtxxBO.setYZFP(ConfigureConstant.STRING_0); +// ddtxxBO.setKB(); +// ddtxxBO.setXHFBM(); + ddzxxBO.setDDTXX(ddtxxBO); + List ddmxxxBOList = Lists.newArrayList(); + Integer index = 1; + for (OrderItemInfo orderItemInfo : blueItemList) { + DdmxxxBO ddmxxxBO = new DdmxxxBO(); + ddmxxxBO.setXH(String.valueOf(index)); + ddmxxxBO.setDYLZFPMXXH(orderItemInfo.getSphxh()); + ddmxxxBO.setFPHXZ(orderItemInfo.getFphxz()); + ddmxxxBO.setSPBM(orderItemInfo.getSpbm()); + ddmxxxBO.setZXBM(orderItemInfo.getZxbm()); + ddmxxxBO.setYHZCBS(orderItemInfo.getYhzcbs()); + ddmxxxBO.setLSLBS(orderItemInfo.getLslbs()); + ddmxxxBO.setZZSTSGL(orderItemInfo.getZzstsgl()); + ddmxxxBO.setXMMC(orderItemInfo.getXmmc()); + ddmxxxBO.setGGXH(orderItemInfo.getGgxh()); + ddmxxxBO.setDW(orderItemInfo.getXmdw()); + ddmxxxBO.setSPSL("-"+orderItemInfo.getXmsl()); + ddmxxxBO.setDJ(orderItemInfo.getXmdj()); + ddmxxxBO.setJE("-"+orderItemInfo.getXmje()); + ddmxxxBO.setHSBZ(orderItemInfo.getHsbz()); + ddmxxxBO.setSL(orderItemInfo.getSl()); + ddmxxxBO.setSE("-"+orderItemInfo.getSe()); + ddmxxxBO.setKCE(orderItemInfo.getKce()); + ddmxxxBO.setBYZD1(orderItemInfo.getByzd1()); + ddmxxxBO.setBYZD2(orderItemInfo.getByzd2()); + ddmxxxBO.setBYZD3(orderItemInfo.getByzd3()); + ddmxxxBO.setPH(orderItemInfo.getPh()); + ddmxxxBO.setKB(orderItemInfo.getKb()); + ddmxxxBOList.add(ddmxxxBO); + } + ddzxxBO.setDDMXXX(ddmxxxBOList); + ddzxxBOList.add(ddzxxBO); + ddpcxxReq.setDDZXX(ddzxxBOList); + log.info("生成负数单据,请求接口数据{}",JSONObject.toJSONString(ddpcxxReq)); + DdpcxxRspBO ddpcxxRspBO = allocateInvoiceInterfaceServiceV3.allocateInvoicesV3(ddpcxxReq, "", null, ConfigurerInfo.INTERFACE_VERSION_V6); + log.info("生成负数单据,返回数据:{}",JSONObject.toJSONString(ddpcxxRspBO)); + } + } + + return R.ok(); + } + } diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInvoiceController.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInvoiceController.java index 5860bbc3..044b57d5 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInvoiceController.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInvoiceController.java @@ -1,10 +1,12 @@ package com.dxhy.order.consumer.modules.order.controller; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONException; import com.alibaba.fastjson.JSONObject; import com.dxhy.order.baseservice.module.base.service.BaseService; +import com.dxhy.order.baseservice.module.thirdservice.redis.service.RedisService; import com.dxhy.order.constant.ConfigureConstant; import com.dxhy.order.constant.OrderInfoContentEnum; import com.dxhy.order.constant.OrderInfoEnum; @@ -46,6 +48,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.*; +import java.util.stream.Collectors; /** * @author :杨士勇 @@ -91,6 +94,9 @@ public class OrderInvoiceController { @Resource private OrderItemInfoService itemInfoService; + @Resource + private RedisService redisService; + private static final String KEY_PREFIX = "order:red:"; /** @@ -187,6 +193,18 @@ public class OrderInvoiceController { } } + @ApiOperation(value = "冲红流程", notes = "订单开票-冲红流程获取数据的接口") + @PostMapping("/saveRedInvoiceData") + @SysLog(operation = "冲红流程", operationDesc = "订单开具冲红流程数据保存", key = "冲红流程") + public R saveRedInvoiceData(@RequestBody RedInvoiceRespPo redInvoiceRespPo) { + try { + return invoiceService.saveRedInvoiceData(redInvoiceRespPo.getRedFpqqlsh(),redInvoiceRespPo.getXhfNsrsbh()); + } catch (Exception e) { + log.error("{}待开订单开具接口,参数转换异常e:{}", LOGGER_MSG, e); + return R.error().put(OrderManagementConstant.MESSAGE, "未知异常,请联系管理员!"); + } + } + /** * 获取蓝字发票明细订单 * @param param @@ -198,7 +216,26 @@ public class OrderInvoiceController { public R getOrderItemData(@RequestBody String param) { try { JSONObject jsonObject = JSONObject.parseObject(param); - List orderItemInfos = itemInfoService.selectOrderItemInfoByOrderId(jsonObject.getString("OrderInfoId"), Arrays.asList(jsonObject.getString("xhfNsrsbh"))); + List orderItemInfos = itemInfoService.selectOrderItemInfoByOrderId(jsonObject.getString("orderInfoId"), Arrays.asList(jsonObject.getString("xhfNsrsbh"))); + + if(CollectionUtil.isNotEmpty(orderItemInfos)){ + OrderInvoiceInfo invoiceInfo = new OrderInvoiceInfo(); + invoiceInfo.setOrderInfoId(jsonObject.getString("orderInfoId")); + OrderInvoiceInfo orderInvoiceInfo = orderInvoiceInfoService.selectOrderInvoiceInfo(invoiceInfo, Arrays.asList(jsonObject.getString("xhfNsrsbh"))); + String key = KEY_PREFIX + jsonObject.getString("redFpqqlsh"); + String innerKey = StringUtils.isBlank(orderInvoiceInfo.getFpdm())?"":orderInvoiceInfo.getFpdm() + orderInvoiceInfo.getFphm(); + String value = redisService.pullHashMap(key, innerKey); + if(StringUtils.isNotBlank(value)){ + RedInvoiceStageReqPo invoiceStageReqPo = JSONObject.parseObject(value, RedInvoiceStageReqPo.class); + List blueItemList = invoiceStageReqPo.getBlueItemList(); + Map selectMap = blueItemList.stream().distinct().collect(Collectors.toMap(OrderItemInfo::getId, OrderItemInfo::getId)); + for (OrderItemInfo orderItemInfo : orderItemInfos) { + if(StringUtils.isNotBlank(selectMap.get(orderItemInfo.getId()))){ + orderItemInfo.setGxbz("1"); + } + } + } + } return R.ok().put(OrderManagementConstant.DATA,orderItemInfos); } catch (Exception e) { log.error("{}待开订单开具接口,参数转换异常e:{}", LOGGER_MSG, e); diff --git a/order-management-consumer/src/main/resources/bootstrap-dev.yaml b/order-management-consumer/src/main/resources/bootstrap-dev.yaml index 2b96069f..ff28b374 100644 --- a/order-management-consumer/src/main/resources/bootstrap-dev.yaml +++ b/order-management-consumer/src/main/resources/bootstrap-dev.yaml @@ -4,15 +4,15 @@ spring: nacos: config: # Nacos config 地址 - server-addr: 172.31.36.147:33000 + server-addr: 10.1.1.72:8848 # Nacos config 命名空间,对应配置中的名称(sims_order_namespace) - namespace: a049b41c-b0a8-4a66-91b1-f3f3cab0e524 + namespace: sdenergy-order # Nacos config 分组 group: sims-order-config # Nacos config 登录用户名 username: nacos # Nacos config 登录密码 - password: Invoice.nacos.!1 + password: nacos # Nacos config 配置文件前缀 prefix: sims-order-api # Nacos config 配置文件后缀,拼接完URL需要对应NacosServer中的dataId对应配置,${prefix}-${spring.profiles.active}.${file-extension} @@ -53,9 +53,7 @@ spring: # Nacos discovery 配置 discovery: # Nacos discovery 服务地址 - server-addr: ${spring.cloud.nacos.config.server-addr} - username: ${spring.cloud.nacos.config.username} - password: ${spring.cloud.nacos.config.password} + server-addr: 10.1.1.72:8848 #sentinel配置相关 sentinel: #sentinel是否开启控制 diff --git a/order-management-consumer/src/main/resources/bootstrap.yaml b/order-management-consumer/src/main/resources/bootstrap.yaml index 2a9064c5..12226ba8 100644 --- a/order-management-consumer/src/main/resources/bootstrap.yaml +++ b/order-management-consumer/src/main/resources/bootstrap.yaml @@ -6,10 +6,10 @@ spring: name: order-api profiles: # Spring 配置文件读取 - active: @deployType@ +# active: @deployType@ # active: own # active: std -# active: dev + active: dev # active: test jackson: # jackson 日期格式化 diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/controller/InvoiceDetailsController.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/controller/InvoiceDetailsController.java index 03d9e3ec..c3fca2a1 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/controller/InvoiceDetailsController.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/controller/InvoiceDetailsController.java @@ -93,7 +93,7 @@ public class InvoiceDetailsController { @Autowired private OfdToPngSDEnergyService ofdToPngSDEnergyService; - @Value("${yx.isuse}") + @Value("${yx.isuse:}") private String yxisuse; @GetMapping("priviewOfd") diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/Hzqrdxxmxqd.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/Hzqrdxxmxqd.java new file mode 100644 index 00000000..36529e16 --- /dev/null +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/Hzqrdxxmxqd.java @@ -0,0 +1,41 @@ +package com.dxhy.order.invoice.module.invoice.model; + +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + * @author: yaoxuguang + * @createDate: Created in 2022-11-10 + */ +@Getter +@Setter +public class Hzqrdxxmxqd implements Serializable { + + /** + * XH : 序号 + * LZMXXH : 蓝字发票明细序号 + * SPHFWSSFLHBBM : 商品和服务税收分类合并编码 + * XMMC : 项目名称 + * GGXH : 规格型号 + * DW : 单位 + * FPSPDJ : 单价 + * FPSPSL : 数量 + * JE : 金额 + * SLV : 税率 + * SE : 税额 + */ + + private String XH; + private String LZMXXH; + private String SPHFWSSFLHBBM; + private String XMMC; + private String GGXH; + private String DW; + private String FPSPDJ; + private String FPSPSL; + private String JE; + private String SLV; + private String SE; +} diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/Hzqrdxxqd.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/Hzqrdxxqd.java new file mode 100644 index 00000000..743d91a6 --- /dev/null +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/Hzqrdxxqd.java @@ -0,0 +1,70 @@ +package com.dxhy.order.invoice.module.invoice.model; + +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.List; + +/** + * @author: yaoxuguang + * @createDate: Created in 2022-11-10 + */ +@Getter +@Setter +public class Hzqrdxxqd implements Serializable { + + /** + * UUID : 红字确认单UUID + * HZFPXXQRDBH : 红字发票信息确认单编号 + * LRFSF : 录入方身份 + * XSFNSRSBH : (销售方)统一社会信用代码/纳税人识别号/身份证件号码 + * XSFMC : 销售方名称 + * GMFNSRSBH : (购买方)统一社会信用代码/纳税人识别号/身份证件号码 + * GMFMC : 购买方名称 + * LZFPDM : 蓝字发票代码 + * LZFPHM : 蓝字发票号码 + * SFZZFPBZ : 是否纸质发票标志 + * LZKPRQ : 蓝字发票开票日期 + * LZHJJE : 蓝字发票合计金额 + * LZHJSE : 蓝字发票合计税额 + * LZFPPZDM : 蓝字发票票种代码 + * LZFPTDYSLXDM : 蓝字发票特定要素类型代码 + * HZCXJE : 红字冲销金额 + * HZCXSE : 红字冲销税额 + * CHYYDM : 红字发票冲红原因代码 + * HZQRXXZTDM : 红字确认信息状态代码 + * QRRQ : 确认日期 + * YKJHZFPBZ : 已开具红字发票标志 + * HZFPHM : 红字发票号码 + * HZKPRQ : 红字开票日期 + * YXBZ : 有效标志 + * HZQRXXMXLIST: 红字确认单明细信息 + */ + + private String UUID; + private String HZFPXXQRDBH; + private String LRFSF; + private String XSFNSRSBH; + private String XSFMC; + private String GMFNSRSBH; + private String GMFMC; + private String LZFPDM; + private String LZFPHM; + private String SFZZFPBZ; + private String LZKPRQ; + private String LZHJJE; + private String LZHJSE; + private String LZFPPZDM; + private String LZFPTDYSLXDM; + private String HZCXJE; + private String HZCXSE; + private String CHYYDM; + private String HZQRXXZTDM; + private String QRRQ; + private String YKJHZFPBZ; + private String HZFPHM; + private String HZKPRQ; + private String YXBZ; + private List HZQRXXMXLIST; +} diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/SpecialInvoiceReversalPlus.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/SpecialInvoiceReversalPlus.java new file mode 100644 index 00000000..6e0e30cd --- /dev/null +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/SpecialInvoiceReversalPlus.java @@ -0,0 +1,13 @@ +package com.dxhy.order.invoice.module.invoice.model; + +import com.dxhy.order.invoice.module.invoicespecial.model.SpecialInvoiceReversalEntity; +import com.dxhy.order.model.SpecialInvoiceReversalItem; +import lombok.Data; + +import java.util.List; + +@Data +public class SpecialInvoiceReversalPlus extends SpecialInvoiceReversalEntity { + + private List items; +} diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/OrderInvoiceInfoService.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/OrderInvoiceInfoService.java index 99ac247c..19bebc75 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/OrderInvoiceInfoService.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/OrderInvoiceInfoService.java @@ -1,18 +1,17 @@ package com.dxhy.order.invoice.module.invoice.service; -import com.dxhy.order.exception.OrderReceiveException; -import com.dxhy.order.model.*; import com.dxhy.order.baseservice.module.thirdservice.rabbitmq.model.RabbitMqCommonInvoice; +import com.dxhy.order.exception.OrderReceiveException; import com.dxhy.order.invoice.module.invoice.model.FileDownLoad; import com.dxhy.order.invoice.module.invoice.model.bo.QueryCountInvoiceBO; import com.dxhy.order.invoice.module.invoice.model.vo.*; +import com.dxhy.order.model.*; import com.dxhy.order.model.page.RedInvoiceCheckReqPo; import com.dxhy.order.model.page.RedInvoiceRespPo; import com.dxhy.order.model.page.RedInvoiceStageReqPo; import org.apache.ibatis.annotations.Param; -import java.io.File; import java.io.OutputStream; import java.util.Date; import java.util.List; @@ -291,5 +290,7 @@ public interface OrderInvoiceInfoService { RedInvoiceRespPo getOrderInvoiceData(RedInvoiceCheckReqPo redInvoiceReqPo); R stageRedInvoiceData(RedInvoiceStageReqPo redInvoiceSaveReqPo); + + } diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OfdToPngSDEnergyServiceImpl.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OfdToPngSDEnergyServiceImpl.java index b4f5ae44..5497b301 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OfdToPngSDEnergyServiceImpl.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OfdToPngSDEnergyServiceImpl.java @@ -19,10 +19,10 @@ import java.util.List; @Slf4j public class OfdToPngSDEnergyServiceImpl implements OfdToPngSDEnergyService { - @Value("${yx.url}") + @Value("${yx.url:}") private String yxurl; - @Value("${yx.simsSalt}") + @Value("${yx.simsSalt:}") private String simsSalt; diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java index 6335d3cc..3e36feb8 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java @@ -7,7 +7,6 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONObject; -import com.alibaba.nacos.client.config.common.ConfigConstants; import com.dxhy.base.file.common.ExcelReadContext; import com.dxhy.base.file.handle.ExcelExportHandle; import com.dxhy.order.baseservice.config.BaseServiceConfig; @@ -56,6 +55,8 @@ import com.dxhy.order.model.sk.pdf.InvoicePdf; import com.dxhy.order.utils.*; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.google.common.collect.Maps; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.ibatis.annotations.Param; @@ -72,6 +73,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; +import java.math.BigDecimal; import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; @@ -137,6 +139,7 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { private Executor voucherTaskExecutor; private static final String KEY_PREFIX = "order:red:"; + private static final String KEY_RED_SYJE = "order:red:syje"; /** @@ -1507,12 +1510,20 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { //根据报账单查询蓝字数据 RedInvoiceRespPo orderInvoiceData = this.getOrderInvoiceData(redInvoiceReqPo); List orderInvoiceInfos = orderInvoiceData.getOrderInvoiceInfos(); + //查询报账单是否存在 if(orderInvoiceInfos.size() == 0){ return R.error("根据报账单号未查询到订单");//改为常量 } - //todo 根据蓝字报账单调用SAP接口查询SAP状态,是否允许冲红 明慧开发 + //todo 根据蓝字报账单调用SAP接口查询SAP状态,是否允许冲红 明慧开发 + List redItemInfoList = orderInvoiceData.getRedItemInfoList(); + if(CollectionUtil.isNotEmpty(redItemInfoList)){ + boolean b = redItemInfoList.stream().allMatch(redItemInfo -> StringUtils.isNotBlank(redItemInfo.getSpbm()) && ConfigureConstant.STRING_0.equals(redItemInfo.getZnfm())); + if(!b){ + return R.error("负数订单存在智能赋码及局端税编的明细行");//改为常量 + } + } //根据orderinfoId,查询红字订单信息 OrderInfo orderInfo = orderInfoMapper.selectOrderInfoByOrderId(redInvoiceReqPo.getOrderInfoId(), Arrays.asList(redInvoiceReqPo.getXhfNsrsbh())); @@ -1540,11 +1551,40 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { if(!orderInfo.getFpzlDm().equals(orderInvoiceInfos.get(0).getFpzlDm())){ return R.error("负数订单的发票种类与对应蓝字报账单号不一致");//改为常量 } - //比较金额(发票剩余金额、如果是专票的话需要加上红字申请的金额、如果是数电票的话需要调用接口查询红字查询) - - - return R.ok(); + //比较金额(发票剩余金额、如果是专票的话需要加上红字申请的金额、如果是数电票的话需要调用接口查询红字查询) + BigDecimal sykchbhsje = new BigDecimal("0.00"); + BigDecimal sykchse = new BigDecimal("0.00"); + for (OrderInvoiceInfoVo orderInvoiceInfo : orderInvoiceInfos) { + if(StringUtils.isNotBlank(orderInvoiceInfo.getSykchbhsje()) && StringUtils.isNotBlank(orderInvoiceInfo.getSykchje()) + && StringUtils.isNotBlank(orderInvoiceInfo.getSykchse()) && new BigDecimal(orderInvoiceInfo.getSykchse()).compareTo(BigDecimal.ZERO) > ConfigureConstant.INT_0){ + sykchbhsje = sykchbhsje.add(new BigDecimal(orderInvoiceInfo.getSykchbhsje())); + sykchse = sykchse.add(new BigDecimal(orderInvoiceInfo.getSykchse())); + } else { + List orderInfos = orderInfoMapper.selectOrderInfoByYfpdmhm(orderInvoiceInfo.getFpdm(), orderInvoiceInfo.getFphm(), Arrays.asList(redInvoiceReqPo.getXhfNsrsbh())); + if(CollectionUtil.isNotEmpty(orderInfos)){ + BigDecimal chbhsje = orderInfos.stream().map(order -> new BigDecimal(order.getHjbhsje())).reduce(BigDecimal.ZERO, BigDecimal::add).abs(); + BigDecimal chse = orderInfos.stream().map(order -> new BigDecimal(order.getHjse())).reduce(BigDecimal.ZERO, BigDecimal::add).abs(); + sykchbhsje = sykchbhsje.add(new BigDecimal(orderInvoiceInfo.getHjbhsje()).subtract(chbhsje)); + sykchse = sykchse.add(new BigDecimal(orderInvoiceInfo.getKpse()).subtract(chse)); + } else { + sykchbhsje = sykchbhsje.add(new BigDecimal(orderInvoiceInfo.getHjbhsje())); + sykchse = sykchse.add(new BigDecimal(orderInvoiceInfo.getKpse())); + } + } + } + if(sykchbhsje.compareTo(BigDecimal.ZERO) > ConfigureConstant.INT_0 && sykchse.compareTo(BigDecimal.ZERO) > ConfigureConstant.INT_0){ + BigDecimal hzddHjbhsje = new BigDecimal(orderInfo.getHjbhsje()).abs(); + BigDecimal hzddHjse = new BigDecimal(orderInfo.getHjse()).abs(); + if (hzddHjbhsje.subtract(sykchbhsje).compareTo(BigDecimal.ZERO) >= ConfigureConstant.INT_0 + && hzddHjse.subtract(sykchse).compareTo(BigDecimal.ZERO) >= ConfigureConstant.INT_0){ + return R.ok().put(OrderManagementConstant.DATA,orderInvoiceData); + } else { + return R.error("蓝字剩余可冲红不含税金额小于负数订单不含税金额或税额");//改为常量 + } + }else { + return R.error("蓝字剩余可冲红不含税金额或者税额小于0");//改为常量 + } } /** @@ -1557,6 +1597,10 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { RedInvoiceRespPo redInvoiceRespPo = new RedInvoiceRespPo(); List orderInvoiceInfoVos = orderInvoiceInfoMapper.selectInvoiceInfoByBzdh(redInvoiceReqPo.getLzbzdh(), Arrays.asList(redInvoiceReqPo.getXhfNsrsbh())); List orderItemInfos = orderItemInfoMapper.selectOrderItemInfoByOrderId(redInvoiceReqPo.getOrderInfoId(), Arrays.asList(redInvoiceReqPo.getXhfNsrsbh())); + OrderInvoiceInfo invoiceInfo = new OrderInvoiceInfo(); + invoiceInfo.setOrderInfoId(redInvoiceReqPo.getOrderInfoId()); + OrderInvoiceInfo orderInvoiceInfo = orderInvoiceInfoMapper.selectOrderInvoiceInfo(invoiceInfo, Arrays.asList(redInvoiceReqPo.getXhfNsrsbh())); + OrderProcessInfo orderProcessInfo = orderInfoMapper.selectProcessByFpqqlsh(orderInvoiceInfo.getFpqqlsh(), Arrays.asList(redInvoiceReqPo.getXhfNsrsbh())); //是否允许勾选,发票状态 orderInvoiceInfoVos.stream().map(t->{ Boolean selected = true; @@ -1574,8 +1618,6 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { selected = false; } - - if(OrderInfoEnum.ORDER_STATUS_5.getKey().equals(t.getDdzt()) && (ConfigureConstant.STRING_1.equals(t.getZfBz()) || ConfigureConstant.STRING_2.equals(t.getZfBz())) @@ -1605,19 +1647,88 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { }).collect(Collectors.toList()); redInvoiceRespPo.setOrderInvoiceInfos(orderInvoiceInfoVos); redInvoiceRespPo.setRedItemInfoList(orderItemInfos); + //明细合并 + if(StringUtils.isNotBlank(redInvoiceReqPo.getSfhb()) && ConfigureConstant.STRING_1.equals(redInvoiceReqPo.getSfhb())){ + Map comparisonMap = Maps.newHashMap(); + for (OrderItemInfo orderItemInfo : orderItemInfos) { + String comparisonKey = orderItemInfo.getZxbm()+orderItemInfo.getXmmc(); + OrderItemInfo itemInfo = comparisonMap.get(comparisonKey); + if(itemInfo == null){ + comparisonMap.put(comparisonKey,orderItemInfo); + }else { + String xmje = new BigDecimal(itemInfo.getXmje()).abs().add(new BigDecimal(orderItemInfo.getXmje()).abs()).toPlainString(); + String se = new BigDecimal(itemInfo.getSe()).abs().add(new BigDecimal(orderItemInfo.getSe()).abs()).toPlainString(); + orderItemInfo.setXmje(xmje); + orderItemInfo.setSe(se); + String redSyjeKey = KEY_RED_SYJE + orderItemInfo.getId(); + String value = redisService.get(redSyjeKey); + if(StringUtils.isNotBlank(value)){ + orderItemInfo.setSykchje(value); + } else { + orderItemInfo.setSykchje(xmje); + } + comparisonMap.put(comparisonKey,orderItemInfo); + } + } + List itemInfos = comparisonMap.entrySet().stream().map(Map.Entry::getValue).collect(Collectors.toList()); + redInvoiceRespPo.setRedItemInfoList(itemInfos); + } + redInvoiceRespPo.setRedFpqqlsh(orderInvoiceInfo.getFpqqlsh()); + redInvoiceRespPo.setRedBzdh(orderProcessInfo.getBzdh()); return redInvoiceRespPo; } + @SneakyThrows @Override public R stageRedInvoiceData(RedInvoiceStageReqPo redInvoiceSaveReqPo){ //存储redis map结构,map外层key是红字fpqqlsh,内层是发票号码+发票代码,将整体发票报文存储在value里 OrderInvoiceInfo blueInvoiceInfo = redInvoiceSaveReqPo.getBlueInvoiceInfo(); String key = KEY_PREFIX + redInvoiceSaveReqPo.getFpqqlsh(); - String innerKey = blueInvoiceInfo.getFpdm() + blueInvoiceInfo.getFphm(); + String innerKey = StringUtils.isBlank(blueInvoiceInfo.getFpdm())?"":blueInvoiceInfo.getFpdm() + blueInvoiceInfo.getFphm(); //组装发票报文 //金额、数量、税额跟跟换为负数,折扣行要与被折扣行合并 //校验重复提交数据覆盖问题 - redisService.putHashMap(key,innerKey, JSONObject.toJSONString(redInvoiceSaveReqPo)); + boolean redRedisLock = redisService.setNx(redInvoiceSaveReqPo.getFpqqlsh(), key, RedisConstant.REDIS_EXPIRE_TIME_2HOUR); + for (int i = 0; i < 3; i++) { + try { + if(redRedisLock){ + Map paramMap = redisService.pullAllHashMap(key); + if(paramMap != null){ + String value = redisService.pullHashMap(key, innerKey); + if(StringUtils.isNotBlank(value)){ + redisService.delHashMap(key,innerKey); + } + } + redisService.putHashMap(key,innerKey, JSONObject.toJSONString(redInvoiceSaveReqPo)); + Map hashMap = Maps.newHashMap(); + if(paramMap != null){ + BigDecimal blueMxje = new BigDecimal("0.00"); + BigDecimal redMxje = new BigDecimal("0.00"); + List redItemList = null; + for (Map.Entry stringEntry : paramMap.entrySet()) { + String entryValue = stringEntry.getValue(); + RedInvoiceStageReqPo invoiceStageReqPo = JSONObject.parseObject(entryValue, RedInvoiceStageReqPo.class); + List blueItemList = invoiceStageReqPo.getBlueItemList(); + blueMxje = blueMxje.add(blueItemList.stream().map(blueItem -> new BigDecimal(blueItem.getXmje())).reduce(BigDecimal.ZERO, BigDecimal::add)); + redItemList = invoiceStageReqPo.getRedItemList(); + } + redMxje = redItemList.stream().map(redItem -> new BigDecimal(redItem.getXmje())).reduce(BigDecimal.ZERO, BigDecimal::add).abs(); + String syfpje = redMxje.subtract(blueMxje).toPlainString(); + String redSyjeKey = KEY_RED_SYJE + redItemList.get(0).getId(); + redisService.set(redSyjeKey,syfpje); + hashMap.put(redItemList.get(0).getId(),syfpje); + } + redisService.del(redInvoiceSaveReqPo.getFpqqlsh()); + return R.ok().put(OrderManagementConstant.DATA,hashMap); + } else { + Thread.sleep(2000); + log.info("获取redis锁请等待,三次之后还是获取锁失败则返回。。。"); + } + } catch (InterruptedException e) { + redisService.del(redInvoiceSaveReqPo.getFpqqlsh()); + throw new RuntimeException(e); + } + } return R.ok(); } diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoicespecial/controller/SpecialInvoiceReversalController.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoicespecial/controller/SpecialInvoiceReversalController.java index 59ebf68a..6f8aef55 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoicespecial/controller/SpecialInvoiceReversalController.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoicespecial/controller/SpecialInvoiceReversalController.java @@ -395,8 +395,8 @@ public class SpecialInvoiceReversalController { specialInvoiceReversalEntity.setSqdscqqlsh(baseService.getGenerateShotKey()); } else { //调用税盘编号生成code - Map resultMap = specialInvoiceService.querySpecialInvoiceReversalCode("", specialInvoiceReversalEntity.getFpzlDm(), nsrsbh, terminalCode); - specialInvoiceReversalEntity.setSqdscqqlsh(resultMap.get(OrderManagementConstant.CODE)); +// Map resultMap = specialInvoiceService.querySpecialInvoiceReversalCode("", specialInvoiceReversalEntity.getFpzlDm(), nsrsbh, terminalCode); +// specialInvoiceReversalEntity.setSqdscqqlsh(resultMap.get(OrderManagementConstant.CODE)); } } @@ -727,12 +727,12 @@ public class SpecialInvoiceReversalController { } - if (OrderInfoEnum.ORDER_INVOICE_TYPE_0.getKey().equals(specialInvoiceReversalEntity.getFpzlDm())) { - if (StringUtils.isBlank(specialInvoiceReversalEntity.getJqbh()) && StringUtils.isBlank(specialInvoiceReversalEntity.getFjh())) { - return R.error(ResponseStatusCodes.ACCESS_POINT_ID_IS_BLANK, "分机号不能为空"); - } - - } +// if (OrderInfoEnum.ORDER_INVOICE_TYPE_0.getKey().equals(specialInvoiceReversalEntity.getFpzlDm())) { +// if (StringUtils.isBlank(specialInvoiceReversalEntity.getJqbh()) && StringUtils.isBlank(specialInvoiceReversalEntity.getFjh())) { +// return R.error(ResponseStatusCodes.ACCESS_POINT_ID_IS_BLANK, "分机号不能为空"); +// } +// +// } //审核状态 if (StringUtils.isNotBlank(specialInvoiceReversalEntity.getStatusCode()) && ArrayUtils.contains(notAllowedEditSubmitStatus, specialInvoiceReversalEntity.getStatusCode())) { diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoicespecial/service/impl/SpecialInvoiceServiceImpl.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoicespecial/service/impl/SpecialInvoiceServiceImpl.java index e173f9ed..ad3d478b 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoicespecial/service/impl/SpecialInvoiceServiceImpl.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoicespecial/service/impl/SpecialInvoiceServiceImpl.java @@ -743,9 +743,9 @@ public class SpecialInvoiceServiceImpl implements SpecialInvoiceService { } } - if (StringUtils.isBlank(resultJqbh)) { - throw new OrderReceiveException("9999", "获取机器编码异常!"); - } +// if (StringUtils.isBlank(resultJqbh)) { +// throw new OrderReceiveException("9999", "获取机器编码异常!"); +// } specialInvoiceReversalCode = resultJqbh + DateUtil.format(new Date(), ConfigureConstant.DATE_FORMAT_DATE_YMDHMS).substring(2); diff --git a/order-management-invoice/src/main/resources/mybatis/mapper/OrderInfoMapper.xml b/order-management-invoice/src/main/resources/mybatis/mapper/OrderInfoMapper.xml index 2524f90e..b110ef4a 100644 --- a/order-management-invoice/src/main/resources/mybatis/mapper/OrderInfoMapper.xml +++ b/order-management-invoice/src/main/resources/mybatis/mapper/OrderInfoMapper.xml @@ -558,8 +558,11 @@ select from order_info - where yfp_dm = #{fpdm,jdbcType=VARCHAR} and yfp_hm = - #{fphm,jdbcType=VARCHAR} + where + yfp_hm = #{fphm,jdbcType=VARCHAR} + + and yfp_dm = #{fpdm,jdbcType=VARCHAR} + and xhf_nsrsbh = '' diff --git a/order-management-invoice/src/main/resources/mybatis/mapper/OrderInvoiceInfoMapper.xml b/order-management-invoice/src/main/resources/mybatis/mapper/OrderInvoiceInfoMapper.xml index d223c09d..b1a832b9 100644 --- a/order-management-invoice/src/main/resources/mybatis/mapper/OrderInvoiceInfoMapper.xml +++ b/order-management-invoice/src/main/resources/mybatis/mapper/OrderInvoiceInfoMapper.xml @@ -245,6 +245,7 @@ + @@ -2294,7 +2295,7 @@ op.ddh, op.bzdh, op.ddzt, - op.fpzldm, + op.fpzl_dm AS fpzldm, op.xhf_nsrsbh, op.xhf_mc, op.ghf_nsrsbh, @@ -2310,22 +2311,24 @@ oii.sykchbhsje, oii.sykchse, oii.zf_bz, - oii.ch_bz + oii.ch_bz, + oii.kprq, + op.ddzt FROM - order_invoice_info oii INNER INTO order_process_info op ON oii.order_info_id = op.order_info_id + order_invoice_info oii INNER JOIN order_process_info op ON oii.order_info_id = op.order_info_id WHERE op.bzdh = #{bzdh,jdbcType=VARCHAR} - and xhf_nsrsbh = '' + and op.xhf_nsrsbh = '' - and xhf_nsrsbh = + and op.xhf_nsrsbh = #{item} - and xhf_nsrsbh in + and op.xhf_nsrsbh in #{item} From 15ea77fc288d08e3d618dbed8d70de65d6ba32f2 Mon Sep 17 00:00:00 2001 From: "zhenghaiyang@ele-cloud.com" Date: Thu, 30 Nov 2023 14:54:18 +0800 Subject: [PATCH 03/16] =?UTF-8?q?feature=201.=E8=BF=98=E5=8E=9F=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- order-management-consumer/src/main/resources/bootstrap.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/order-management-consumer/src/main/resources/bootstrap.yaml b/order-management-consumer/src/main/resources/bootstrap.yaml index 12226ba8..2a9064c5 100644 --- a/order-management-consumer/src/main/resources/bootstrap.yaml +++ b/order-management-consumer/src/main/resources/bootstrap.yaml @@ -6,10 +6,10 @@ spring: name: order-api profiles: # Spring 配置文件读取 -# active: @deployType@ + active: @deployType@ # active: own # active: std - active: dev +# active: dev # active: test jackson: # jackson 日期格式化 From b2dbfd87bad4bd22f57d81ebb40aa1a75963a085 Mon Sep 17 00:00:00 2001 From: "zhenghaiyang@ele-cloud.com" Date: Thu, 30 Nov 2023 14:58:16 +0800 Subject: [PATCH 04/16] =?UTF-8?q?feature=201.=E8=BF=98=E5=8E=9F=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SpecialInvoiceReversalController.java | 16 ++++++++-------- .../service/impl/SpecialInvoiceServiceImpl.java | 6 +++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoicespecial/controller/SpecialInvoiceReversalController.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoicespecial/controller/SpecialInvoiceReversalController.java index 6f8aef55..59ebf68a 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoicespecial/controller/SpecialInvoiceReversalController.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoicespecial/controller/SpecialInvoiceReversalController.java @@ -395,8 +395,8 @@ public class SpecialInvoiceReversalController { specialInvoiceReversalEntity.setSqdscqqlsh(baseService.getGenerateShotKey()); } else { //调用税盘编号生成code -// Map resultMap = specialInvoiceService.querySpecialInvoiceReversalCode("", specialInvoiceReversalEntity.getFpzlDm(), nsrsbh, terminalCode); -// specialInvoiceReversalEntity.setSqdscqqlsh(resultMap.get(OrderManagementConstant.CODE)); + Map resultMap = specialInvoiceService.querySpecialInvoiceReversalCode("", specialInvoiceReversalEntity.getFpzlDm(), nsrsbh, terminalCode); + specialInvoiceReversalEntity.setSqdscqqlsh(resultMap.get(OrderManagementConstant.CODE)); } } @@ -727,12 +727,12 @@ public class SpecialInvoiceReversalController { } -// if (OrderInfoEnum.ORDER_INVOICE_TYPE_0.getKey().equals(specialInvoiceReversalEntity.getFpzlDm())) { -// if (StringUtils.isBlank(specialInvoiceReversalEntity.getJqbh()) && StringUtils.isBlank(specialInvoiceReversalEntity.getFjh())) { -// return R.error(ResponseStatusCodes.ACCESS_POINT_ID_IS_BLANK, "分机号不能为空"); -// } -// -// } + if (OrderInfoEnum.ORDER_INVOICE_TYPE_0.getKey().equals(specialInvoiceReversalEntity.getFpzlDm())) { + if (StringUtils.isBlank(specialInvoiceReversalEntity.getJqbh()) && StringUtils.isBlank(specialInvoiceReversalEntity.getFjh())) { + return R.error(ResponseStatusCodes.ACCESS_POINT_ID_IS_BLANK, "分机号不能为空"); + } + + } //审核状态 if (StringUtils.isNotBlank(specialInvoiceReversalEntity.getStatusCode()) && ArrayUtils.contains(notAllowedEditSubmitStatus, specialInvoiceReversalEntity.getStatusCode())) { diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoicespecial/service/impl/SpecialInvoiceServiceImpl.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoicespecial/service/impl/SpecialInvoiceServiceImpl.java index ad3d478b..e173f9ed 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoicespecial/service/impl/SpecialInvoiceServiceImpl.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoicespecial/service/impl/SpecialInvoiceServiceImpl.java @@ -743,9 +743,9 @@ public class SpecialInvoiceServiceImpl implements SpecialInvoiceService { } } -// if (StringUtils.isBlank(resultJqbh)) { -// throw new OrderReceiveException("9999", "获取机器编码异常!"); -// } + if (StringUtils.isBlank(resultJqbh)) { + throw new OrderReceiveException("9999", "获取机器编码异常!"); + } specialInvoiceReversalCode = resultJqbh + DateUtil.format(new Date(), ConfigureConstant.DATE_FORMAT_DATE_YMDHMS).substring(2); From d9441949e2c303c33fe458f69ea31e831cd335df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B7=AF=E6=98=8E=E6=85=A7?= <1191093413@qq.com> Date: Fri, 1 Dec 2023 10:58:46 +0800 Subject: [PATCH 05/16] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=8A=A5=E8=B4=A6=E5=8D=95=E5=8F=B7=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../baseservice/config/BaseServiceConfig.java | 3 + .../module/invoice/model/po/EsOutput.java | 32 ++++++++++ .../module/invoice/model/po/IsInput.java | 59 +++++++++++++++++++ .../model/po/PoCommonRequestParam.java | 20 +++++++ .../model/po/PoCommonResponseParam.java | 16 +++++ .../impl/OrderInvoiceInfoServiceImpl.java | 34 +++++++++++ 6 files changed, 164 insertions(+) create mode 100644 order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/po/EsOutput.java create mode 100644 order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/po/IsInput.java create mode 100644 order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/po/PoCommonRequestParam.java create mode 100644 order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/po/PoCommonResponseParam.java diff --git a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/config/BaseServiceConfig.java b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/config/BaseServiceConfig.java index 9c8e7fed..c2a6acce 100644 --- a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/config/BaseServiceConfig.java +++ b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/config/BaseServiceConfig.java @@ -300,6 +300,9 @@ public class BaseServiceConfig{ @Value("${order.push.po.userName:}") private String poUserName; + @Value("${order.push.po.bzdStatus:}") + private String bzdStatus; + /** * 调用山能PO password */ diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/po/EsOutput.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/po/EsOutput.java new file mode 100644 index 00000000..1d4c7375 --- /dev/null +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/po/EsOutput.java @@ -0,0 +1,32 @@ +package com.dxhy.order.invoice.module.invoice.model.po; + +import lombok.Data; + +/** + * @Description: PO输出参数 + * @Author liufeilong + * @Date 2023-02-06 + **/ +@Data +public class EsOutput { + /** + * 外围系统数据唯一标识 + */ + private String BSKEY; + /** + * SAP数据唯一标识 + */ + private String SAPKEY; + /** + * 数据处理标识(S:成功,E:失败) + */ + private String ZTYPE; + /** + * 数据处理描述 + */ + private String ZMESSAGE; + /** + * 业务报文 + */ + private String ZDATA; +} diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/po/IsInput.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/po/IsInput.java new file mode 100644 index 00000000..96cacd46 --- /dev/null +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/po/IsInput.java @@ -0,0 +1,59 @@ +package com.dxhy.order.invoice.module.invoice.model.po; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description: PO输入参数 + * @Author liufeilong + * @Date 2023-02-06 + **/ +@Data +public class IsInput implements Serializable { + /** + * 外围系统 + */ + private String SYSID; + /** + * 接口业务ID + */ + private String IFYWID; + /** + * 外围系统数据唯一标识 + */ + private String BSKEY; + /** + * SAP数据唯一标识 + */ + private String SAPKEY; + /** + * 组织机构代码 + */ + private String ZORG; + /** + * SAP模块编码(OA用) + */ + private String ZFILED1; + /** + * 预留字段 + */ + private String ZFILED2; + /** + * 预留字段 + */ + private String ZFILED3; + /** + * 预留字段 + */ + private String ZFILED4; + /** + * SAP Client + */ + private String ZFILED5; + /** + * 业务参数 + */ + private String ZDATA; + +} diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/po/PoCommonRequestParam.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/po/PoCommonRequestParam.java new file mode 100644 index 00000000..2760afca --- /dev/null +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/po/PoCommonRequestParam.java @@ -0,0 +1,20 @@ +package com.dxhy.order.invoice.module.invoice.model.po; + +import com.alibaba.fastjson.annotation.JSONField; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description: PO接口公共请求参数 + * @Author liufeilong + * @Date 2023-02-06 + **/ +@Data +public class PoCommonRequestParam implements Serializable { + /** + * IsInput + */ + @JSONField(name = "IS_INPUT") + private IsInput IS_INPUT; +} diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/po/PoCommonResponseParam.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/po/PoCommonResponseParam.java new file mode 100644 index 00000000..331c4a38 --- /dev/null +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/po/PoCommonResponseParam.java @@ -0,0 +1,16 @@ +package com.dxhy.order.invoice.module.invoice.model.po; + +import lombok.Data; + +/** + * @Description: PO接口公共响应参数 + * @Author liufeilong + * @Date 2023-02-06 + **/ +@Data +public class PoCommonResponseParam { + /** + * ES_OUTPUT + */ + private EsOutput ES_OUTPUT; +} diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java index 3e36feb8..c0e87ab3 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java @@ -27,6 +27,9 @@ import com.dxhy.order.invoice.module.invoice.dao.*; import com.dxhy.order.invoice.module.invoice.model.FileDownLoad; import com.dxhy.order.invoice.module.invoice.model.bo.QueryCountInvoiceBO; import com.dxhy.order.invoice.module.invoice.model.excel.*; +import com.dxhy.order.invoice.module.invoice.model.po.IsInput; +import com.dxhy.order.invoice.module.invoice.model.po.PoCommonRequestParam; +import com.dxhy.order.invoice.module.invoice.model.po.PoCommonResponseParam; import com.dxhy.order.invoice.module.invoice.model.vo.*; import com.dxhy.order.invoice.module.invoice.service.EmailService; import com.dxhy.order.invoice.module.invoice.service.HistoryDataPdfService; @@ -61,6 +64,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.ibatis.annotations.Param; import org.apache.poi.xssf.streaming.SXSSFWorkbook; +import org.apache.xmlbeans.impl.jam.xml.TunnelledException; import org.joda.time.DateTime; import org.joda.time.Duration; import org.springframework.beans.BeanUtils; @@ -1732,5 +1736,35 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { return R.ok(); } + public boolean getBzhStatus(String bzdh,String clint){ + //拼凑报文 + IsInput isInput = new IsInput(); + isInput.setSYSID(OrderInfoEnum.SYS_SIGN_FP.getKey()); + isInput.setIFYWID(OrderInfoEnum.INTERFACE_BUSINESS_ID_GSCLIENT.getKey()); + isInput.setBSKEY(UUID.randomUUID().toString().replace("-", "")); + isInput.setZORG(""); + isInput.setZFILED5(clint); + Map data = new HashMap<>(); + data.put("ZBZDH",bzdh); + isInput.setZDATA(JsonUtils.getInstance().toJsonString(data)); + PoCommonRequestParam poCommonRequestParam = new PoCommonRequestParam(); + poCommonRequestParam.setIS_INPUT(isInput); + String param = JsonUtils.getInstance().toJsonString(poCommonRequestParam); + log.info("{}获取报账单号状态入参:{}",LOGGER_MSG,param); + String result = HttpUtils.sendPo(baseServiceConfig.getPoUrl(), param,baseServiceConfig.getPoUserName(),baseServiceConfig.getPoPassword()); + log.info("{}获取报账单号状态出参:{}",LOGGER_MSG,result); + PoCommonResponseParam poCommonResponseParam = JSONObject.parseObject(result, PoCommonResponseParam.class); + String zdata = poCommonResponseParam.getES_OUTPUT().getZDATA(); + JSONObject response = JSONObject.parseObject(zdata); + String bzdzt = response.getString("BZDZT"); + //校验状态 + String bzdStatus = baseServiceConfig.getBzdStatus(); + if (StringUtils.isBlank(bzdh)||bzdStatus.contains(bzdzt)){ + return false; + } + return true; + } + + } From c5d64d9742f5af835cabb3c1f909318c8dfbe549 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B7=AF=E6=98=8E=E6=85=A7?= <1191093413@qq.com> Date: Fri, 1 Dec 2023 14:47:07 +0800 Subject: [PATCH 06/16] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=8A=A5=E8=B4=A6=E5=8D=95=E5=8F=B7=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/model/page/RedInvoiceRespPo.java | 1 + .../invoice/dao/GsClientFindMapper.java | 9 +++++++ .../module/invoice/model/GsClient.java | 19 ++++++++++++++ .../impl/OrderInvoiceInfoServiceImpl.java | 25 ++++++++++++++++++- .../mybatis/mapper/GsClientFindMapper.xml | 22 ++++++++++++++++ 5 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/dao/GsClientFindMapper.java create mode 100644 order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/GsClient.java create mode 100644 order-management-invoice/src/main/resources/mybatis/mapper/GsClientFindMapper.xml diff --git a/order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoiceRespPo.java b/order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoiceRespPo.java index 1474641b..af362252 100644 --- a/order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoiceRespPo.java +++ b/order-management-common/src/main/java/com/dxhy/order/model/page/RedInvoiceRespPo.java @@ -14,4 +14,5 @@ public class RedInvoiceRespPo { private String redFpqqlsh; private String redBzdh; private String xhfNsrsbh; + private String gsdm; } diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/dao/GsClientFindMapper.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/dao/GsClientFindMapper.java new file mode 100644 index 00000000..0d4952bd --- /dev/null +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/dao/GsClientFindMapper.java @@ -0,0 +1,9 @@ +package com.dxhy.order.invoice.module.invoice.dao; + +import com.dxhy.order.invoice.module.invoice.model.GsClient; +import java.util.List; + +public interface GsClientFindMapper { ; + List selectByGsdm(String gsdm); + +} \ No newline at end of file diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/GsClient.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/GsClient.java new file mode 100644 index 00000000..56836904 --- /dev/null +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/model/GsClient.java @@ -0,0 +1,19 @@ +package com.dxhy.order.invoice.module.invoice.model; + +import lombok.Data; + +import java.util.Date; + +@Data +public class GsClient { + private Integer id; + + private String gsdm; + + private String gsmc; + + private String client; + + private Date createTime; + +} \ No newline at end of file diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java index c0e87ab3..026fb6fc 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java @@ -25,6 +25,7 @@ import com.dxhy.order.exception.OrderReceiveException; import com.dxhy.order.invoice.config.InvoiceConfig; import com.dxhy.order.invoice.module.invoice.dao.*; import com.dxhy.order.invoice.module.invoice.model.FileDownLoad; +import com.dxhy.order.invoice.module.invoice.model.GsClient; import com.dxhy.order.invoice.module.invoice.model.bo.QueryCountInvoiceBO; import com.dxhy.order.invoice.module.invoice.model.excel.*; import com.dxhy.order.invoice.module.invoice.model.po.IsInput; @@ -61,6 +62,7 @@ import com.github.pagehelper.PageInfo; import com.google.common.collect.Maps; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.ibatis.annotations.Param; import org.apache.poi.xssf.streaming.SXSSFWorkbook; @@ -108,6 +110,9 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { private OrderInfoJdcMapper orderInfoJdcMapper; @Resource private OrderInfoEscMapper orderInfoEscMapper; + + @Resource + private GsClientFindMapper gsClientFindMapper; @Resource private HistoryDataPdfService historyDataPdfService; @Resource @@ -1521,6 +1526,22 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { } //todo 根据蓝字报账单调用SAP接口查询SAP状态,是否允许冲红 明慧开发 + //查询公司client + List gsClients = gsClientFindMapper.selectByGsdm(orderInvoiceData.getGsdm()); + if (ObjectUtils.isEmpty(gsClients)){ + return R.error("未查询到公司client"); + } + + try { + boolean bzhStatus = getBzhStatus(orderInvoiceData.getRedBzdh(), gsClients.get(0).getClient()); + + if (bzhStatus) { + return R.error("蓝字报账单状态不允许冲红"); + } + }catch (Exception e){ + log.error("{}获取蓝字报账单状态异常", LOGGER_MSG,e); + return R.error("未查询到订单"); + } List redItemInfoList = orderInvoiceData.getRedItemInfoList(); if(CollectionUtil.isNotEmpty(redItemInfoList)){ boolean b = redItemInfoList.stream().allMatch(redItemInfo -> StringUtils.isNotBlank(redItemInfo.getSpbm()) && ConfigureConstant.STRING_0.equals(redItemInfo.getZnfm())); @@ -1679,6 +1700,7 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { } redInvoiceRespPo.setRedFpqqlsh(orderInvoiceInfo.getFpqqlsh()); redInvoiceRespPo.setRedBzdh(orderProcessInfo.getBzdh()); + redInvoiceRespPo.setGsdm(orderProcessInfo.getGsdm()); return redInvoiceRespPo; } @@ -1759,7 +1781,8 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { String bzdzt = response.getString("BZDZT"); //校验状态 String bzdStatus = baseServiceConfig.getBzdStatus(); - if (StringUtils.isBlank(bzdh)||bzdStatus.contains(bzdzt)){ + String[] split = bzdStatus.split(","); + if (StringUtils.isNotBlank(bzdh)||Arrays.asList(split).contains(bzdzt)){ return false; } return true; diff --git a/order-management-invoice/src/main/resources/mybatis/mapper/GsClientFindMapper.xml b/order-management-invoice/src/main/resources/mybatis/mapper/GsClientFindMapper.xml new file mode 100644 index 00000000..5e86d1fd --- /dev/null +++ b/order-management-invoice/src/main/resources/mybatis/mapper/GsClientFindMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + id, gsdm, gsmc, client, create_time + + + + + \ No newline at end of file From 778ddfeae85c878e1820cc16f17193cc3cfbaa60 Mon Sep 17 00:00:00 2001 From: "zhenghaiyang@ele-cloud.com" Date: Mon, 4 Dec 2023 15:07:48 +0800 Subject: [PATCH 07/16] =?UTF-8?q?feature=201.=E4=BF=AE=E6=94=B9=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/OrderInvoiceInfoServiceImpl.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java index 026fb6fc..a6743eda 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java @@ -1622,10 +1622,10 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { RedInvoiceRespPo redInvoiceRespPo = new RedInvoiceRespPo(); List orderInvoiceInfoVos = orderInvoiceInfoMapper.selectInvoiceInfoByBzdh(redInvoiceReqPo.getLzbzdh(), Arrays.asList(redInvoiceReqPo.getXhfNsrsbh())); List orderItemInfos = orderItemInfoMapper.selectOrderItemInfoByOrderId(redInvoiceReqPo.getOrderInfoId(), Arrays.asList(redInvoiceReqPo.getXhfNsrsbh())); - OrderInvoiceInfo invoiceInfo = new OrderInvoiceInfo(); - invoiceInfo.setOrderInfoId(redInvoiceReqPo.getOrderInfoId()); - OrderInvoiceInfo orderInvoiceInfo = orderInvoiceInfoMapper.selectOrderInvoiceInfo(invoiceInfo, Arrays.asList(redInvoiceReqPo.getXhfNsrsbh())); - OrderProcessInfo orderProcessInfo = orderInfoMapper.selectProcessByFpqqlsh(orderInvoiceInfo.getFpqqlsh(), Arrays.asList(redInvoiceReqPo.getXhfNsrsbh())); +// OrderInvoiceInfo invoiceInfo = new OrderInvoiceInfo(); +// invoiceInfo.setOrderInfoId(redInvoiceReqPo.getOrderInfoId()); + OrderInfo orderInfo = orderInfoMapper.selectOrderInfoByOrderId(redInvoiceReqPo.getOrderInfoId(), Arrays.asList(redInvoiceReqPo.getXhfNsrsbh())); + OrderProcessInfo orderProcessInfo = orderInfoMapper.selectProcessByFpqqlsh(orderInfo.getFpqqlsh(), Arrays.asList(redInvoiceReqPo.getXhfNsrsbh())); //是否允许勾选,发票状态 orderInvoiceInfoVos.stream().map(t->{ Boolean selected = true; @@ -1698,7 +1698,7 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { List itemInfos = comparisonMap.entrySet().stream().map(Map.Entry::getValue).collect(Collectors.toList()); redInvoiceRespPo.setRedItemInfoList(itemInfos); } - redInvoiceRespPo.setRedFpqqlsh(orderInvoiceInfo.getFpqqlsh()); + redInvoiceRespPo.setRedFpqqlsh(orderInfo.getFpqqlsh()); redInvoiceRespPo.setRedBzdh(orderProcessInfo.getBzdh()); redInvoiceRespPo.setGsdm(orderProcessInfo.getGsdm()); return redInvoiceRespPo; From cde377881e4b8e6023f241a16d9158eec066e010 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B7=AF=E6=98=8E=E6=85=A7?= <1191093413@qq.com> Date: Mon, 4 Dec 2023 15:25:01 +0800 Subject: [PATCH 08/16] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=90=8D=E5=86=99=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/dxhy/order/constant/OrderInfoEnum.java | 1 + .../invoice/service/impl/OrderInvoiceInfoServiceImpl.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoEnum.java b/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoEnum.java index 140f52ed..8de080a1 100644 --- a/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoEnum.java +++ b/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoEnum.java @@ -1286,6 +1286,7 @@ public enum OrderInfoEnum { INTERFACE_BUSINESS_ID_ZYKSSFFM("FI005","同步会计信息"), INTERFACE_BUSINESS_ID_DEPT("FI871","组织信息变更"), + INTERFACE_BUSINESS_ID_BZDSTATUS("FI890","获取报账单状态"), /** * 发票备注配置项枚举 */ diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java index a6743eda..c9b66c95 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java @@ -1762,7 +1762,7 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { //拼凑报文 IsInput isInput = new IsInput(); isInput.setSYSID(OrderInfoEnum.SYS_SIGN_FP.getKey()); - isInput.setIFYWID(OrderInfoEnum.INTERFACE_BUSINESS_ID_GSCLIENT.getKey()); + isInput.setIFYWID(OrderInfoEnum.INTERFACE_BUSINESS_ID_BZDSTATUS.getKey()); isInput.setBSKEY(UUID.randomUUID().toString().replace("-", "")); isInput.setZORG(""); isInput.setZFILED5(clint); From ac87ae023256ade5559c79fc66fba6a1c4b2e6b7 Mon Sep 17 00:00:00 2001 From: "zhenghaiyang@ele-cloud.com" Date: Tue, 5 Dec 2023 09:49:48 +0800 Subject: [PATCH 09/16] =?UTF-8?q?feature=201.=E6=9B=B4=E6=8D=A2redis?= =?UTF-8?q?=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- order-management-consumer/pom.xml | 2 - order-management-invoice/pom.xml | 7 +++- .../order/invoice/config/RedissonConfig.java | 40 +++++++++++++++++++ .../impl/OrderInvoiceInfoServiceImpl.java | 16 +++++--- 4 files changed, 56 insertions(+), 9 deletions(-) create mode 100644 order-management-invoice/src/main/java/com/dxhy/order/invoice/config/RedissonConfig.java diff --git a/order-management-consumer/pom.xml b/order-management-consumer/pom.xml index d62ea91f..39f1ab77 100644 --- a/order-management-consumer/pom.xml +++ b/order-management-consumer/pom.xml @@ -16,8 +16,6 @@ - - diff --git a/order-management-invoice/pom.xml b/order-management-invoice/pom.xml index c86bd38b..388550ea 100644 --- a/order-management-invoice/pom.xml +++ b/order-management-invoice/pom.xml @@ -17,8 +17,11 @@ - - + + org.redisson + redisson-spring-boot-starter + 3.23.1 + diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/config/RedissonConfig.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/config/RedissonConfig.java new file mode 100644 index 00000000..d0252f2e --- /dev/null +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/config/RedissonConfig.java @@ -0,0 +1,40 @@ +//package com.dxhy.order.invoice.config; +// +//import org.apache.commons.lang3.StringUtils; +//import org.redisson.Redisson; +//import org.redisson.api.RedissonClient; +//import org.redisson.config.Config; +//import org.redisson.config.ReadMode; +//import org.redisson.config.SentinelServersConfig; +//import org.springframework.boot.autoconfigure.data.redis.RedisProperties; +//import org.springframework.context.annotation.Bean; +// +//import javax.annotation.Resource; +//import java.util.List; +// +//public class RedissonConfig { +// +// @Resource +// private RedisProperties redisProperties; +// +// //哨兵模式配置 +// @Bean +// RedissonClient redissonSentinel() { +// Config config = new Config(); +// RedisProperties.Sentinel sentinel = redisProperties.getSentinel(); +// List newNodes = sentinel.getNodes(); +// newNodes.stream().forEach((index) -> newNodes.add( +// index.startsWith("redis://") ? index : "redis://" + index)); +// +// SentinelServersConfig serverConfig = config.useSentinelServers() +// .addSentinelAddress(newNodes.toArray(new String[0])) +// .setMasterName(sentinel.getMaster()) +// .setReadMode(ReadMode.SLAVE); +// +// if (StringUtils.isNotBlank(redisProperties.getPassword())) { +// serverConfig.setPassword(redisProperties.getPassword()); +// } +// return Redisson.create(config); +// } +// +//} diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java index c9b66c95..0e7db9cb 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java @@ -66,9 +66,10 @@ import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.ibatis.annotations.Param; import org.apache.poi.xssf.streaming.SXSSFWorkbook; -import org.apache.xmlbeans.impl.jam.xml.TunnelledException; import org.joda.time.DateTime; import org.joda.time.Duration; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; @@ -1704,6 +1705,9 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { return redInvoiceRespPo; } + @Resource + private RedissonClient redisson; + @SneakyThrows @Override public R stageRedInvoiceData(RedInvoiceStageReqPo redInvoiceSaveReqPo){ @@ -1714,10 +1718,12 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { //组装发票报文 //金额、数量、税额跟跟换为负数,折扣行要与被折扣行合并 //校验重复提交数据覆盖问题 - boolean redRedisLock = redisService.setNx(redInvoiceSaveReqPo.getFpqqlsh(), key, RedisConstant.REDIS_EXPIRE_TIME_2HOUR); + RLock lock = redisson.getLock(redInvoiceSaveReqPo.getFpqqlsh()); +// boolean redRedisLock = redisService.setNx(redInvoiceSaveReqPo.getFpqqlsh(), key, RedisConstant.REDIS_EXPIRE_TIME_2HOUR); for (int i = 0; i < 3; i++) { try { - if(redRedisLock){ + if(!lock.isLocked()){ + lock.lock(); Map paramMap = redisService.pullAllHashMap(key); if(paramMap != null){ String value = redisService.pullHashMap(key, innerKey); @@ -1744,14 +1750,14 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { redisService.set(redSyjeKey,syfpje); hashMap.put(redItemList.get(0).getId(),syfpje); } - redisService.del(redInvoiceSaveReqPo.getFpqqlsh()); + lock.unlock(); return R.ok().put(OrderManagementConstant.DATA,hashMap); } else { Thread.sleep(2000); log.info("获取redis锁请等待,三次之后还是获取锁失败则返回。。。"); } } catch (InterruptedException e) { - redisService.del(redInvoiceSaveReqPo.getFpqqlsh()); + lock.unlock(); throw new RuntimeException(e); } } From f17032b1b484a76a11f665d114c22d61459019dc Mon Sep 17 00:00:00 2001 From: "zhenghaiyang@ele-cloud.com" Date: Tue, 5 Dec 2023 13:35:02 +0800 Subject: [PATCH 10/16] =?UTF-8?q?feature=201.=E6=9B=B4=E6=8D=A2redis?= =?UTF-8?q?=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/invoice/config/RedissonConfig.java | 80 +++++++++---------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/config/RedissonConfig.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/config/RedissonConfig.java index d0252f2e..806bb0f8 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/config/RedissonConfig.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/config/RedissonConfig.java @@ -1,40 +1,40 @@ -//package com.dxhy.order.invoice.config; -// -//import org.apache.commons.lang3.StringUtils; -//import org.redisson.Redisson; -//import org.redisson.api.RedissonClient; -//import org.redisson.config.Config; -//import org.redisson.config.ReadMode; -//import org.redisson.config.SentinelServersConfig; -//import org.springframework.boot.autoconfigure.data.redis.RedisProperties; -//import org.springframework.context.annotation.Bean; -// -//import javax.annotation.Resource; -//import java.util.List; -// -//public class RedissonConfig { -// -// @Resource -// private RedisProperties redisProperties; -// -// //哨兵模式配置 -// @Bean -// RedissonClient redissonSentinel() { -// Config config = new Config(); -// RedisProperties.Sentinel sentinel = redisProperties.getSentinel(); -// List newNodes = sentinel.getNodes(); -// newNodes.stream().forEach((index) -> newNodes.add( -// index.startsWith("redis://") ? index : "redis://" + index)); -// -// SentinelServersConfig serverConfig = config.useSentinelServers() -// .addSentinelAddress(newNodes.toArray(new String[0])) -// .setMasterName(sentinel.getMaster()) -// .setReadMode(ReadMode.SLAVE); -// -// if (StringUtils.isNotBlank(redisProperties.getPassword())) { -// serverConfig.setPassword(redisProperties.getPassword()); -// } -// return Redisson.create(config); -// } -// -//} +package com.dxhy.order.invoice.config; + +import org.apache.commons.lang3.StringUtils; +import org.redisson.Redisson; +import org.redisson.api.RedissonClient; +import org.redisson.config.Config; +import org.redisson.config.ReadMode; +import org.redisson.config.SentinelServersConfig; +import org.springframework.boot.autoconfigure.data.redis.RedisProperties; +import org.springframework.context.annotation.Bean; + +import javax.annotation.Resource; +import java.util.List; + +public class RedissonConfig { + + @Resource + private RedisProperties redisProperties; + + //哨兵模式配置 + @Bean + RedissonClient redissonSentinel() { + Config config = new Config(); + RedisProperties.Sentinel sentinel = redisProperties.getSentinel(); + List newNodes = sentinel.getNodes(); + newNodes.stream().forEach((index) -> newNodes.add( + index.startsWith("redis://") ? index : "redis://" + index)); + + SentinelServersConfig serverConfig = config.useSentinelServers() + .addSentinelAddress(newNodes.toArray(new String[0])) + .setMasterName(sentinel.getMaster()) + .setReadMode(ReadMode.SLAVE); + + if (StringUtils.isNotBlank(redisProperties.getPassword())) { + serverConfig.setPassword(redisProperties.getPassword()); + } + return Redisson.create(config); + } + +} From 7a75cb538a540c17e967175dd1e901e2607afe70 Mon Sep 17 00:00:00 2001 From: "zhenghaiyang@ele-cloud.com" Date: Tue, 5 Dec 2023 13:49:42 +0800 Subject: [PATCH 11/16] =?UTF-8?q?feature=201.=E8=BF=98=E6=BA=90=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/invoice/config/RedissonConfig.java | 80 +++++++++---------- .../impl/OrderInvoiceInfoServiceImpl.java | 30 +++---- 2 files changed, 55 insertions(+), 55 deletions(-) diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/config/RedissonConfig.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/config/RedissonConfig.java index 806bb0f8..d0252f2e 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/config/RedissonConfig.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/config/RedissonConfig.java @@ -1,40 +1,40 @@ -package com.dxhy.order.invoice.config; - -import org.apache.commons.lang3.StringUtils; -import org.redisson.Redisson; -import org.redisson.api.RedissonClient; -import org.redisson.config.Config; -import org.redisson.config.ReadMode; -import org.redisson.config.SentinelServersConfig; -import org.springframework.boot.autoconfigure.data.redis.RedisProperties; -import org.springframework.context.annotation.Bean; - -import javax.annotation.Resource; -import java.util.List; - -public class RedissonConfig { - - @Resource - private RedisProperties redisProperties; - - //哨兵模式配置 - @Bean - RedissonClient redissonSentinel() { - Config config = new Config(); - RedisProperties.Sentinel sentinel = redisProperties.getSentinel(); - List newNodes = sentinel.getNodes(); - newNodes.stream().forEach((index) -> newNodes.add( - index.startsWith("redis://") ? index : "redis://" + index)); - - SentinelServersConfig serverConfig = config.useSentinelServers() - .addSentinelAddress(newNodes.toArray(new String[0])) - .setMasterName(sentinel.getMaster()) - .setReadMode(ReadMode.SLAVE); - - if (StringUtils.isNotBlank(redisProperties.getPassword())) { - serverConfig.setPassword(redisProperties.getPassword()); - } - return Redisson.create(config); - } - -} +//package com.dxhy.order.invoice.config; +// +//import org.apache.commons.lang3.StringUtils; +//import org.redisson.Redisson; +//import org.redisson.api.RedissonClient; +//import org.redisson.config.Config; +//import org.redisson.config.ReadMode; +//import org.redisson.config.SentinelServersConfig; +//import org.springframework.boot.autoconfigure.data.redis.RedisProperties; +//import org.springframework.context.annotation.Bean; +// +//import javax.annotation.Resource; +//import java.util.List; +// +//public class RedissonConfig { +// +// @Resource +// private RedisProperties redisProperties; +// +// //哨兵模式配置 +// @Bean +// RedissonClient redissonSentinel() { +// Config config = new Config(); +// RedisProperties.Sentinel sentinel = redisProperties.getSentinel(); +// List newNodes = sentinel.getNodes(); +// newNodes.stream().forEach((index) -> newNodes.add( +// index.startsWith("redis://") ? index : "redis://" + index)); +// +// SentinelServersConfig serverConfig = config.useSentinelServers() +// .addSentinelAddress(newNodes.toArray(new String[0])) +// .setMasterName(sentinel.getMaster()) +// .setReadMode(ReadMode.SLAVE); +// +// if (StringUtils.isNotBlank(redisProperties.getPassword())) { +// serverConfig.setPassword(redisProperties.getPassword()); +// } +// return Redisson.create(config); +// } +// +//} diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java index 0e7db9cb..4f9b53c0 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java @@ -1705,8 +1705,8 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { return redInvoiceRespPo; } - @Resource - private RedissonClient redisson; +// @Resource +// private RedissonClient redisson; @SneakyThrows @Override @@ -1718,12 +1718,12 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { //组装发票报文 //金额、数量、税额跟跟换为负数,折扣行要与被折扣行合并 //校验重复提交数据覆盖问题 - RLock lock = redisson.getLock(redInvoiceSaveReqPo.getFpqqlsh()); +// RLock lock = redisson.getLock(redInvoiceSaveReqPo.getFpqqlsh()); // boolean redRedisLock = redisService.setNx(redInvoiceSaveReqPo.getFpqqlsh(), key, RedisConstant.REDIS_EXPIRE_TIME_2HOUR); for (int i = 0; i < 3; i++) { - try { - if(!lock.isLocked()){ - lock.lock(); +// try { +// if(!lock.isLocked()){ +// lock.lock(); Map paramMap = redisService.pullAllHashMap(key); if(paramMap != null){ String value = redisService.pullHashMap(key, innerKey); @@ -1750,16 +1750,16 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { redisService.set(redSyjeKey,syfpje); hashMap.put(redItemList.get(0).getId(),syfpje); } - lock.unlock(); +// lock.unlock(); return R.ok().put(OrderManagementConstant.DATA,hashMap); - } else { - Thread.sleep(2000); - log.info("获取redis锁请等待,三次之后还是获取锁失败则返回。。。"); - } - } catch (InterruptedException e) { - lock.unlock(); - throw new RuntimeException(e); - } +// } else { +// Thread.sleep(2000); +// log.info("获取redis锁请等待,三次之后还是获取锁失败则返回。。。"); +// } +// } catch (InterruptedException e) { +// lock.unlock(); +// throw new RuntimeException(e); +// } } return R.ok(); } From 35cc5c42f1718a08b8657faff59679e340b858a4 Mon Sep 17 00:00:00 2001 From: "zhenghaiyang@ele-cloud.com" Date: Tue, 5 Dec 2023 14:30:13 +0800 Subject: [PATCH 12/16] =?UTF-8?q?feature=201.=E4=BF=AE=E6=94=B9=E4=BE=9D?= =?UTF-8?q?=E8=B5=96redisson=E7=89=88=E6=9C=AC=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- order-management-invoice/pom.xml | 2 +- .../impl/OrderInvoiceInfoServiceImpl.java | 30 +++++++++---------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/order-management-invoice/pom.xml b/order-management-invoice/pom.xml index 388550ea..f05356d5 100644 --- a/order-management-invoice/pom.xml +++ b/order-management-invoice/pom.xml @@ -20,7 +20,7 @@ org.redisson redisson-spring-boot-starter - 3.23.1 + 3.12.5 diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java index 4f9b53c0..0e7db9cb 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java @@ -1705,8 +1705,8 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { return redInvoiceRespPo; } -// @Resource -// private RedissonClient redisson; + @Resource + private RedissonClient redisson; @SneakyThrows @Override @@ -1718,12 +1718,12 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { //组装发票报文 //金额、数量、税额跟跟换为负数,折扣行要与被折扣行合并 //校验重复提交数据覆盖问题 -// RLock lock = redisson.getLock(redInvoiceSaveReqPo.getFpqqlsh()); + RLock lock = redisson.getLock(redInvoiceSaveReqPo.getFpqqlsh()); // boolean redRedisLock = redisService.setNx(redInvoiceSaveReqPo.getFpqqlsh(), key, RedisConstant.REDIS_EXPIRE_TIME_2HOUR); for (int i = 0; i < 3; i++) { -// try { -// if(!lock.isLocked()){ -// lock.lock(); + try { + if(!lock.isLocked()){ + lock.lock(); Map paramMap = redisService.pullAllHashMap(key); if(paramMap != null){ String value = redisService.pullHashMap(key, innerKey); @@ -1750,16 +1750,16 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { redisService.set(redSyjeKey,syfpje); hashMap.put(redItemList.get(0).getId(),syfpje); } -// lock.unlock(); + lock.unlock(); return R.ok().put(OrderManagementConstant.DATA,hashMap); -// } else { -// Thread.sleep(2000); -// log.info("获取redis锁请等待,三次之后还是获取锁失败则返回。。。"); -// } -// } catch (InterruptedException e) { -// lock.unlock(); -// throw new RuntimeException(e); -// } + } else { + Thread.sleep(2000); + log.info("获取redis锁请等待,三次之后还是获取锁失败则返回。。。"); + } + } catch (InterruptedException e) { + lock.unlock(); + throw new RuntimeException(e); + } } return R.ok(); } From a3cf2af3c64dfca6d61a59305838278c33f8a108 Mon Sep 17 00:00:00 2001 From: "zhenghaiyang@ele-cloud.com" Date: Wed, 6 Dec 2023 16:46:45 +0800 Subject: [PATCH 13/16] =?UTF-8?q?feature=201.=E4=BF=AE=E5=A4=8D=E5=88=86?= =?UTF-8?q?=E6=9C=BA=E5=8F=B7=E6=9C=AA=E8=B5=8B=E5=80=BC=E7=9A=84=E6=83=85?= =?UTF-8?q?=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/dxhy/order/model/page/OrderInvoiceInfoVo.java | 1 + .../modules/manager/service/impl/InvoiceServiceImpl.java | 2 ++ .../main/resources/mybatis/mapper/OrderInvoiceInfoMapper.xml | 2 ++ 3 files changed, 5 insertions(+) diff --git a/order-management-common/src/main/java/com/dxhy/order/model/page/OrderInvoiceInfoVo.java b/order-management-common/src/main/java/com/dxhy/order/model/page/OrderInvoiceInfoVo.java index 4470e316..c3c65dc8 100644 --- a/order-management-common/src/main/java/com/dxhy/order/model/page/OrderInvoiceInfoVo.java +++ b/order-management-common/src/main/java/com/dxhy/order/model/page/OrderInvoiceInfoVo.java @@ -107,6 +107,7 @@ public class OrderInvoiceInfoVo { * 系统来源 */ private String xtly; + private String fjh; /** * 数据权限ID */ diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceServiceImpl.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceServiceImpl.java index dadf645e..6640ce9a 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceServiceImpl.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceServiceImpl.java @@ -1661,8 +1661,10 @@ public class InvoiceServiceImpl implements InvoiceService { BigDecimal blueSe = blueItemList.stream().map(blueItem -> new BigDecimal(blueItem.getSe())).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal hjzje = blueMxje.add(blueSe); if(OrderInfoEnum.ORDER_INVOICE_TYPE_0.getKey().equals(blueInvoiceInfo.getFpzlDm())){ + SpecialInvoiceReversalPlus specialInvoiceReversal = new SpecialInvoiceReversalPlus(); BeanUtils.copyProperties(blueInvoiceInfo,specialInvoiceReversal); + specialInvoiceReversal.setFjh(blueInvoiceInfo.getFjh()); specialInvoiceReversal.setYfpHm(blueInvoiceInfo.getFphm()); specialInvoiceReversal.setYfpDm(blueInvoiceInfo.getFpdm()); specialInvoiceReversal.setYfpKprq(blueInvoiceInfo.getKprq()); diff --git a/order-management-invoice/src/main/resources/mybatis/mapper/OrderInvoiceInfoMapper.xml b/order-management-invoice/src/main/resources/mybatis/mapper/OrderInvoiceInfoMapper.xml index b1a832b9..b4e08629 100644 --- a/order-management-invoice/src/main/resources/mybatis/mapper/OrderInvoiceInfoMapper.xml +++ b/order-management-invoice/src/main/resources/mybatis/mapper/OrderInvoiceInfoMapper.xml @@ -245,6 +245,7 @@ + @@ -2313,6 +2314,7 @@ oii.zf_bz, oii.ch_bz, oii.kprq, + oii.fjh, op.ddzt FROM order_invoice_info oii INNER JOIN order_process_info op ON oii.order_info_id = op.order_info_id From fe2438588ccde5b8efd54c02401a47b3e48dddd8 Mon Sep 17 00:00:00 2001 From: "zhenghaiyang@ele-cloud.com" Date: Wed, 6 Dec 2023 18:07:07 +0800 Subject: [PATCH 14/16] =?UTF-8?q?feature=201.=E4=BF=AE=E5=A4=8D=E5=8D=95?= =?UTF-8?q?=E4=BB=B7=E8=B5=8B=E5=80=BC=E6=9C=AA=E8=B4=9F=E6=95=B0=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/manager/service/impl/InvoiceServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceServiceImpl.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceServiceImpl.java index 6640ce9a..88cb5a23 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceServiceImpl.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceServiceImpl.java @@ -1686,7 +1686,7 @@ public class InvoiceServiceImpl implements InvoiceService { BeanUtils.copyProperties(orderItemInfo,invoiceReversalItem); invoiceReversalItem.setXmje("-"+orderItemInfo.getXmje()); invoiceReversalItem.setSe("-"+orderItemInfo.getSe()); - invoiceReversalItem.setXmdj("-"+orderItemInfo.getXmdj()); + invoiceReversalItem.setXmsl("-"+orderItemInfo.getXmsl()); list.add(invoiceReversalItem); } specialInvoiceReversal.setItems(list); From e81587f1dd6caddeedd8ca5a30892e531df0853a Mon Sep 17 00:00:00 2001 From: "zhenghaiyang@ele-cloud.com" Date: Wed, 6 Dec 2023 19:09:57 +0800 Subject: [PATCH 15/16] =?UTF-8?q?feature=201.=E4=BF=AE=E5=A4=8D=E7=A9=BA?= =?UTF-8?q?=E6=8C=87=E9=92=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/OrderInvoiceInfoServiceImpl.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java index 0e7db9cb..369dd886 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java @@ -1744,11 +1744,13 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { blueMxje = blueMxje.add(blueItemList.stream().map(blueItem -> new BigDecimal(blueItem.getXmje())).reduce(BigDecimal.ZERO, BigDecimal::add)); redItemList = invoiceStageReqPo.getRedItemList(); } - redMxje = redItemList.stream().map(redItem -> new BigDecimal(redItem.getXmje())).reduce(BigDecimal.ZERO, BigDecimal::add).abs(); - String syfpje = redMxje.subtract(blueMxje).toPlainString(); - String redSyjeKey = KEY_RED_SYJE + redItemList.get(0).getId(); - redisService.set(redSyjeKey,syfpje); - hashMap.put(redItemList.get(0).getId(),syfpje); + if(redItemList != null){ + redMxje = redItemList.stream().map(redItem -> new BigDecimal(redItem.getXmje())).reduce(BigDecimal.ZERO, BigDecimal::add).abs(); + String syfpje = redMxje.subtract(blueMxje).toPlainString(); + String redSyjeKey = KEY_RED_SYJE + redItemList.get(0).getId(); + redisService.set(redSyjeKey,syfpje); + hashMap.put(redItemList.get(0).getId(),syfpje); + } } lock.unlock(); return R.ok().put(OrderManagementConstant.DATA,hashMap); From 1f7104a242095e888af2ff6eec3a68fb2abec417 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E8=8D=A3=E7=90=B3?= Date: Tue, 12 Dec 2023 16:45:37 +0800 Subject: [PATCH 16/16] =?UTF-8?q?feature:=E5=86=B2=E7=BA=A2=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E6=AF=94=E8=BE=83=E5=89=A9=E4=BD=99=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../invoice/service/impl/OrderInvoiceInfoServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java index 369dd886..5a69e88d 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/service/impl/OrderInvoiceInfoServiceImpl.java @@ -1602,8 +1602,8 @@ public class OrderInvoiceInfoServiceImpl implements OrderInvoiceInfoService { if(sykchbhsje.compareTo(BigDecimal.ZERO) > ConfigureConstant.INT_0 && sykchse.compareTo(BigDecimal.ZERO) > ConfigureConstant.INT_0){ BigDecimal hzddHjbhsje = new BigDecimal(orderInfo.getHjbhsje()).abs(); BigDecimal hzddHjse = new BigDecimal(orderInfo.getHjse()).abs(); - if (hzddHjbhsje.subtract(sykchbhsje).compareTo(BigDecimal.ZERO) >= ConfigureConstant.INT_0 - && hzddHjse.subtract(sykchse).compareTo(BigDecimal.ZERO) >= ConfigureConstant.INT_0){ + if (hzddHjbhsje.subtract(sykchbhsje).compareTo(BigDecimal.ZERO) <= ConfigureConstant.INT_0 + && hzddHjse.subtract(sykchse).compareTo(BigDecimal.ZERO) <= ConfigureConstant.INT_0){ return R.ok().put(OrderManagementConstant.DATA,orderInvoiceData); } else { return R.error("蓝字剩余可冲红不含税金额小于负数订单不含税金额或税额");//改为常量