diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/dao/OrderProcessInfoMapper.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/dao/OrderProcessInfoMapper.java index e5a74e8c..a4ac2e0c 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/dao/OrderProcessInfoMapper.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/dao/OrderProcessInfoMapper.java @@ -168,4 +168,18 @@ public interface OrderProcessInfoMapper { List selectOrderProcessByFpqqlshs(@Param("fpqqlshs") List fpqqlshs, @Param("shList") List shList); List selectOrderProcessByYFpdmHm(@Param("yFpdmHms") List yFpdmHms, @Param("shList") List shList); + + /** + * 功能描述: 根据订单id查询处理信息 + * @param id + * @return : com.dxhy.order.model.OrderProcessInfo + */ + OrderProcessInfo findByOrderId(@Param("id") String id); + + /** + * 功能描述: 根据订单id删除处理表信息 + * @param orderId + * @return : int + */ + int deleteByOrderId(@Param("orderId") String orderId); } diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/filter/OrderFilterConfig.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/filter/OrderFilterConfig.java index 8fff05c0..6021408f 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/filter/OrderFilterConfig.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/filter/OrderFilterConfig.java @@ -22,7 +22,7 @@ public class OrderFilterConfig { FilterRegistrationBean registration = new FilterRegistrationBean<>(); registration.setDispatcherTypes(DispatcherType.REQUEST); registration.setFilter(new XssFilter()); - registration.addUrlPatterns("/*"); + registration.addUrlPatterns("/s/**"); registration.setName("xssFilter"); registration.setOrder(Integer.MAX_VALUE); return registration; @@ -37,7 +37,7 @@ public class OrderFilterConfig { FilterRegistrationBean registration = new FilterRegistrationBean<>(); registration.setName("UserCenterAuthenticationFilter"); registration.setOrder(1); - registration.addUrlPatterns("/*"); + registration.addUrlPatterns("/s/**"); registration.setFilter(new UserCenterAuthenticationFilter()); return registration; } diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInfoController.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInfoController.java index 6d75c528..9d535c22 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInfoController.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInfoController.java @@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.dxhy.order.baseservice.module.commodity.model.CommodityCodeEntity; import com.dxhy.order.constant.*; +import com.dxhy.order.consumer.modules.order.model.dto.ReplaceOddDTO; import com.dxhy.order.consumer.modules.order.model.dto.RewriteBzdhDTO; import com.dxhy.order.consumer.modules.order.model.vo.OrderInfoVo; import com.dxhy.order.consumer.modules.order.model.vo.OrderInfoTotalAmountVO; @@ -67,7 +68,24 @@ public class OrderInfoController { @Resource private TaxSpecialPolicyUtil taxSpecialPolicyUtil; - + + + /** + * 获取订单发票列表 优税小程序调用 + * + * @return + */ + @ApiOperation(value = "替换报账单号", notes = "订单信息管理-替换报账单号") + @PostMapping("/replaceOdd") + @SysLog(operation = "替换报账单号", operationDesc = "替换报账单号", key = "订单列表") + public R replaceOdd(@RequestBody ReplaceOddDTO replaceOddDTO) { + log.info("{}替换报账单号参数:{}", LOGGER_MSG, JsonUtils.getInstance().toJsonString(replaceOddDTO)); + return orderInfoService.replaceOdd(replaceOddDTO); + } + + + + /** * 获取订单发票列表 优税小程序调用 * diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/model/ReplaceOdd.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/model/ReplaceOdd.java new file mode 100644 index 00000000..a5d24a47 --- /dev/null +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/model/ReplaceOdd.java @@ -0,0 +1,15 @@ +package com.dxhy.order.consumer.modules.order.model; + +import lombok.Data; + +/** + * @author xingze + * @date 2023/11/28 + */ +@Data +public class ReplaceOdd { + // 集团cilent + private String MANDT; + // 报账单号 + private String ZBZDH; +} diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/model/ReplaceOddParam.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/model/ReplaceOddParam.java new file mode 100644 index 00000000..84399d09 --- /dev/null +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/model/ReplaceOddParam.java @@ -0,0 +1,17 @@ +package com.dxhy.order.consumer.modules.order.model; + +import com.alibaba.fastjson.annotation.JSONField; +import lombok.Data; + +/** + * @author xingze + * @date 2023/11/28 + */ +@Data +public class ReplaceOddParam { + /** + * IsInput + */ + @JSONField(name = "IS_INPUT") + private ReplaceOdd IS_INPUT; +} diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/model/ReplaceOddResponse.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/model/ReplaceOddResponse.java new file mode 100644 index 00000000..531037c1 --- /dev/null +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/model/ReplaceOddResponse.java @@ -0,0 +1,33 @@ +package com.dxhy.order.consumer.modules.order.model; + +import lombok.Data; + +/** + * @author xingze + * @date 2023/11/28 + */ +@Data +public class ReplaceOddResponse { + // 状态 + private String BZDZT; + /** + * 外围系统数据唯一标识 + */ + private String BSKEY; + /** + * SAP数据唯一标识 + */ + private String SAPKEY; + /** + * 数据处理标识(S:成功,E:失败) + */ + private String ZTYPE; + /** + * 数据处理描述 + */ + private String ZMESSAGE; + /** + * 业务报文 + */ + private Object ZDATA; +} diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/model/ReplaceOddResponseParam.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/model/ReplaceOddResponseParam.java new file mode 100644 index 00000000..291b3a37 --- /dev/null +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/model/ReplaceOddResponseParam.java @@ -0,0 +1,15 @@ +package com.dxhy.order.consumer.modules.order.model; + +import lombok.Data; + +/** + * @author xingze + * @date 2023/11/28 + */ +@Data +public class ReplaceOddResponseParam { + /** + * ES_OUTPUT + */ + private ReplaceOddResponse ES_OUTPUT; +} diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/model/dto/ReplaceOddDTO.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/model/dto/ReplaceOddDTO.java new file mode 100644 index 00000000..5f9acfb9 --- /dev/null +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/model/dto/ReplaceOddDTO.java @@ -0,0 +1,15 @@ +package com.dxhy.order.consumer.modules.order.model.dto; + +import lombok.Data; + +/** + * @author xingze + * @date 2023/11/28 + */ +@Data +public class ReplaceOddDTO { + // 订单id + private String orderId; + // 报账单号 + private String bzdh; +} diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderInfoService.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderInfoService.java index 84972d5c..80bebab5 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderInfoService.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderInfoService.java @@ -2,6 +2,7 @@ package com.dxhy.order.consumer.modules.order.service; import com.alibaba.fastjson.JSONObject; import com.dxhy.order.consumer.model.page.PageRequestVO; +import com.dxhy.order.consumer.modules.order.model.dto.ReplaceOddDTO; import com.dxhy.order.consumer.modules.order.model.vo.OrderInfoVo; import com.dxhy.order.consumer.modules.order.model.vo.OrderInfoTotalAmountVO; import com.dxhy.order.exception.OrderReceiveException; @@ -249,4 +250,12 @@ public interface OrderInfoService { Boolean checkInvoiceRemarksFlag(String entId,String ghfId); R checkInvoiceSync(String operation,String nsrsbh,String param); + + /** + * 功能描述: 替换报账单号 + * @param replaceOddDTO + * @return : com.dxhy.order.model.R + */ + R replaceOdd(ReplaceOddDTO replaceOddDTO); + } diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderInfoServiceImpl.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderInfoServiceImpl.java index 6648f5d5..647de31a 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderInfoServiceImpl.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderInfoServiceImpl.java @@ -32,14 +32,16 @@ import com.dxhy.order.consumer.model.OderDetailInfo; import com.dxhy.order.consumer.model.PageOrderExt; import com.dxhy.order.consumer.model.page.PageRequestVO; import com.dxhy.order.consumer.modules.manager.service.InvoiceDataService; -import com.dxhy.order.consumer.modules.order.model.PageInvoiceItem; -import com.dxhy.order.consumer.modules.order.model.PageKySlReq; -import com.dxhy.order.consumer.modules.order.model.PageKySlRsp; +import com.dxhy.order.consumer.modules.order.model.*; import com.dxhy.order.consumer.modules.order.model.bo.YwlxCountTotalBO; +import com.dxhy.order.consumer.modules.order.model.dto.ReplaceOddDTO; import com.dxhy.order.consumer.modules.order.model.vo.OrderInfoTotalAmountVO; import com.dxhy.order.consumer.modules.order.model.vo.OrderInfoVo; import com.dxhy.order.consumer.modules.order.service.*; import com.dxhy.order.consumer.modules.validate.service.ValidateOrderInfoService; +import com.dxhy.order.consumer.openapi.protocol.po.EsOutput; +import com.dxhy.order.consumer.openapi.protocol.po.PoCommonRequestParam; +import com.dxhy.order.consumer.openapi.protocol.po.PoCommonResponseParam; import com.dxhy.order.consumer.openapi.service.CommonInterfaceService; import com.dxhy.order.consumer.utils.BeanTransitionUtils; import com.dxhy.order.consumer.utils.PageDataDealUtil; @@ -2256,6 +2258,111 @@ public class OrderInfoServiceImpl implements OrderInfoService { return R.ok(); } + /** + * 功能描述: 替换报账单号 + * @param replaceOddDTO + * @return : com.dxhy.order.model.R + */ + @Override + public R replaceOdd(ReplaceOddDTO replaceOddDTO) { + if (StringUtils.isBlank(replaceOddDTO.getOrderId())){ + log.error("{},替换报账单号接口传入订单id为空",LOGGER_MSG); + return R.error("传入订单id为空"); + } + if (StringUtils.isBlank(replaceOddDTO.getOrderId())){ + log.error("{},替换报账单号接口传入报账单号为空",LOGGER_MSG); + return R.error("传入报账单号为空"); + } + try { + // 调用sap获取报账单号状态 + ReplaceOdd replaceOdd = new ReplaceOdd(); + replaceOdd.setMANDT(baseServiceConfig.getPoClient()); + replaceOdd.setZBZDH(replaceOddDTO.getBzdh()); + ReplaceOddParam replaceOddParam = new ReplaceOddParam(); + replaceOddParam.setIS_INPUT(replaceOdd); + String param = JsonUtils.getInstance().toJsonString(replaceOddParam); + log.info("{}调用sap,获取报账单号状态入参:{}",LOGGER_MSG,param); + String result = HttpUtils.sendPo(baseServiceConfig.getPoUrl(), param,baseServiceConfig.getPoUserName(), + baseServiceConfig.getPoPassword()); + log.info("{}调用sap,获取报账单号状态出参:{}",LOGGER_MSG,result); + ReplaceOddResponseParam replaceOddResponseParam = JsonUtils.getInstance().parseObject(result, + ReplaceOddResponseParam.class); + ReplaceOddResponse es_output = replaceOddResponseParam.getES_OUTPUT(); + String ztype = es_output.getZTYPE(); + String zmessage = es_output.getZMESSAGE(); + String bzdzt = es_output.getBZDZT(); + log.info("{},替换报账单号,替换信息:{}",JsonUtils.getInstance().toJsonString(es_output)); + /*if(OrderInfoContentEnum.INVOICE_ERROR_CODE_OP_S.getKey().equals(ztype)){ + if ("50".equals(bzdzt)){ + log.error("{}sap报账单号状态不允许替换,报账单号状态:{}",LOGGER_MSG,bzdzt); + return R.error("该报账单号状态不允许替换"); + } + OrderInfo newOrderInfo = orderMapper.findByFpqqlish(replaceOddDTO.getBzdh()); + if (newOrderInfo == null){ + log.error("{}输入报账单号在该系统未查询到信息,不允许替换",LOGGER_MSG); + return R.error("输入报账单号在该系统未查询到信息,不允许替换"); + } + OrderInfo yOrderInfo = orderMapper.findByOrderId(replaceOddDTO.getOrderId()); + // 判断金额是否一致 + if (!(yOrderInfo.getKphjje().equals(newOrderInfo.getKphjje()))){ + log.error("{}两张报账单金额不一致,不允许替换",LOGGER_MSG); + return R.error("两张报账单金额不一致,不允许替换"); + } + List orderInvoiceInfoList = orderInvoiceInfoMapper.findByOrderId(replaceOddDTO.getOrderId()); + if (orderInvoiceInfoList == null || orderInvoiceInfoList.size() <= 0){ + log.error("{}原报账单号在该系统未查询到发票信息,不允许替换",LOGGER_MSG); + return R.error("原报账单号在该系统未查询到发票信息,不允许替换"); + } + + // 校验原报账单号是否开票成功 + List resultList = new ArrayList<>(); + for (OrderInvoiceInfo orderInvoiceInfo : orderInvoiceInfoList) { + if (!("2".equals(orderInvoiceInfo.getKpzt()))){ + log.error("{}原报账单号未开票成功,不允许替换",LOGGER_MSG); + return R.error("原报账单号未开票成功,不允许替换"); + } + orderInvoiceInfo.setOrderInfoId(newOrderInfo.getId()); + orderInvoiceInfo.setOrderProcessInfoId(newOrderInfo.getProcessId()); + orderInvoiceInfo.setFpqqlsh(newOrderInfo.getFpqqlsh()); + resultList.add(orderInvoiceInfo); + } + // 删除原报账单号 + deleteBzdh(replaceOddDTO.getOrderId()); + // 替换报账单号 + for (OrderInvoiceInfo orderInvoiceInfo : resultList) { + int count = orderInvoiceInfoMapper.updateOrderInvoiceInfoById(orderInvoiceInfo); + if (count > 0){ + log.info("{}替换报账单号接口,更新发票信息成功,发票信息:{}",LOGGER_MSG, + JsonUtils.getInstance().toJsonString(orderInvoiceInfo)); + }else { + log.error("{}替换报账单号接口,更新发票信息失败,发票信息:{}",LOGGER_MSG, + JsonUtils.getInstance().toJsonString(orderInvoiceInfo)); + } + } + }else { + log.error("{}调用sap系统出错,结果不是S,返回错误信息:{}",LOGGER_MSG,zmessage); + }*/ + }catch (Exception e){ + log.error("{},替换保证单号接口异常,异常信息:{}",LOGGER_MSG,e.getMessage()); + } + return null; + } + + // 删除原报账单信息 + private void deleteBzdh(String orderId){ + try { + int countOrderInfo = orderMapper.deleteByOrderId(orderId); + int countOrderProcessInfo = orderProcessInfoMapper.deleteByOrderId(orderId); + int countItem = orderItemInfoMapper.deleteByOrderId(orderId); + log.info("{}替换报账单号,删除原报账单信息:{},{},{}",LOGGER_MSG,countOrderInfo,countOrderProcessInfo,countItem); + if (countOrderInfo > 0 && countOrderProcessInfo > 0 && countItem > 0){ + log.info("{}替换报账单号,删除原报账单信息成功",LOGGER_MSG); + } + }catch (Exception e){ + log.error("{},替换报账单号,删除原报账单号异常,异常信息:{}",LOGGER_MSG,e.getMessage()); + } + } + private void completeCommodityMessageBySpid(OrderItemInfo item, CommodityCodeEntity commodity) { //商品编码 item.setSpbm(commodity.getSpbm()); diff --git a/order-management-consumer/src/main/resources/mybatis/mapper/OrderProcessInfoMapper.xml b/order-management-consumer/src/main/resources/mybatis/mapper/OrderProcessInfoMapper.xml index b8718a88..7f079468 100644 --- a/order-management-consumer/src/main/resources/mybatis/mapper/OrderProcessInfoMapper.xml +++ b/order-management-consumer/src/main/resources/mybatis/mapper/OrderProcessInfoMapper.xml @@ -94,6 +94,9 @@ update_time,xhf_nsrsbh,xhf_mc,ent_id,sksbdm,fg_status,edit_status,num,check_status,check_time, bzdh,xtly,gsdm,bhzt,ygxm,kppzh,pzgzrq,yzfp,origin_ddh,origin_order_id,kb + + delete from order_process_info where order_info_id = #{orderId} + + diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/dao/OrderInfoMapper.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/dao/OrderInfoMapper.java index 64acddf9..63ce72b6 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/dao/OrderInfoMapper.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/dao/OrderInfoMapper.java @@ -79,4 +79,24 @@ public interface OrderInfoMapper { OrderProcessInfo selectProcessByFpqqlsh(@Param("fpqqlsh")String fpqqlsh, @Param("shList") List shList); + /** + * 功能描述: 根据流水号查询订单信息 + * @param bzdh + * @return : com.dxhy.order.model.OrderInfo + */ + OrderInfo findByFpqqlish(@Param("bzdh") String bzdh); + + /** + * 功能描述: 根据订单id查询订单信息 + * @param orderId + * @return : com.dxhy.order.model.OrderInfo + */ + OrderInfo findByOrderId(@Param("id") String orderId); + + /** + * 功能描述: 根据订单id删除订单信息 + * @param orderId + * @return : int + */ + int deleteByOrderId(@Param("orderId") String orderId); } 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..d26c07e6 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 @@ -248,4 +248,18 @@ public interface OrderInvoiceInfoMapper { List countInoviceInfo(@Param("orderInfoIds")List orderInfoIds); List selectInvoiceInfoByFpqqlshs(@Param("fpqqlshs") List fpqqlshs); + + /** + * 功能描述: 根据订单id查询发票信息 + * @param id + * @return : com.dxhy.order.model.OrderInvoiceInfo + */ + List findByOrderId(@Param("orderId") String id); + + /** + * 功能描述: 根据id更新发票信息 + * @param orderInvoiceInfo + * @return : int + */ + int updateOrderInvoiceInfoById(@Param("orderInvoiceInfo") OrderInvoiceInfo orderInvoiceInfo); } diff --git a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/dao/OrderItemInfoMapper.java b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/dao/OrderItemInfoMapper.java index ead1ee0c..e6c14a37 100644 --- a/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/dao/OrderItemInfoMapper.java +++ b/order-management-invoice/src/main/java/com/dxhy/order/invoice/module/invoice/dao/OrderItemInfoMapper.java @@ -59,4 +59,11 @@ public interface OrderItemInfoMapper { int insertOrderItemByList(@Param("list") List resultOrderItemList); int updateOrderItemId(@Param("list") List resultOrderItemList); + + /** + * 功能描述: 根据订单id删除详情信息 + * @param orderId + * @return : int + */ + int deleteByOrderId(@Param("orderId") String orderId); } 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..064360ad 100644 --- a/order-management-invoice/src/main/resources/mybatis/mapper/OrderInfoMapper.xml +++ b/order-management-invoice/src/main/resources/mybatis/mapper/OrderInfoMapper.xml @@ -91,7 +91,10 @@ slkjly,byzd1, byzd2, byzd3, byzd4, byzd5, create_time, update_time - select @@ -632,5 +635,19 @@ + + 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..3e866ff2 100644 --- a/order-management-invoice/src/main/resources/mybatis/mapper/OrderInvoiceInfoMapper.xml +++ b/order-management-invoice/src/main/resources/mybatis/mapper/OrderInvoiceInfoMapper.xml @@ -2249,6 +2249,28 @@ + + update order_invoice_info + + + order_info_id = #{orderInvoiceInfo.orderInfoId,jdbcType=VARCHAR}, + + + order_process_info_id = #{orderInvoiceInfo.orderProcessInfoId,jdbcType=VARCHAR}, + + + fpqqlsh = #{orderInvoiceInfo.fpqqlsh,jdbcType=VARCHAR}, + + + update_time = #{orderInvoiceInfo.updateTime,jdbcType=TIMESTAMP}, + + + + + and id = #{orderInvoiceInfo.id,jdbcType=VARCHAR} + + + + diff --git a/order-management-invoice/src/main/resources/mybatis/mapper/OrderItemInfoMapper.xml b/order-management-invoice/src/main/resources/mybatis/mapper/OrderItemInfoMapper.xml index 2b92c0d5..64377873 100644 --- a/order-management-invoice/src/main/resources/mybatis/mapper/OrderItemInfoMapper.xml +++ b/order-management-invoice/src/main/resources/mybatis/mapper/OrderItemInfoMapper.xml @@ -84,6 +84,9 @@ #{id,jdbcType=VARCHAR} + + delete from order_item_info where order_info_id = #{orderId} + insert into order_item_info (id, order_info_id,