diff --git a/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoContentEnum.java b/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoContentEnum.java index 3f503228..fe32208e 100644 --- a/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoContentEnum.java +++ b/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoContentEnum.java @@ -225,6 +225,8 @@ public enum OrderInfoContentEnum { ORDER__SLD_NOT_CPY_ERROR("9638", "开具批次中包含成品油发票,但是受理点是非成品油受理点"), + ORDER__USER_INVALID_PERMISSIONS("9647", "当前用户关联组织权限不足,请关联对应组织再进行补录"), + READY_OPEN_ITEM_DJ_ERROR("9639", "请点击“编辑”按钮,去掉单价和数量,系统将自动按照限额拆分单据开票。"), GENERATE_READY_NCY_ERROR("9640", "农产品订单和非农产品订单不允许合并"), @@ -236,6 +238,8 @@ public enum OrderInfoContentEnum { INVOICE_BZDH_OPERATED("9645", "此报账单已做其他操作"), + INVOICE_BZDH_REPEAT_OPERATED("9646", "此报账单已关联其他发票,请注意重复补录"), + INVOICE_BILLING_ORDERITEM_XMMC_NULL_ERROR("2000", "发票明细中的商品名称为空!"), 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..166a0370 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 @@ -162,24 +162,35 @@ public class OrderInfoController { } } + /** + * + * @param bzdh + * @param orderInfoId + * @param fpqqlsh + * @param xhfNsrsbh + * @param force 是否强制补录,0 不强制,1是强制补录 + * @return + */ @PostMapping("/updateBillNumber") @ApiOperation(value = "发票列表", notes = "发票列表修改报账单号") - @SysLog(operation = "发票列表", operationDesc = "发票列表修改报账单号", key = "订单发票管理") + @SysLog(operation = "发票列表", operationDesc = "补录报账单号", key = "订单发票管理") public R updateBillNumber(@RequestParam("bzdh") String bzdh, @RequestParam("orderInfoId") String orderInfoId, @RequestParam("fpqqlsh")String fpqqlsh, - @RequestParam("xhfNsrsbh")String xhfNsrsbh + @RequestParam("xhfNsrsbh")String xhfNsrsbh, + @RequestParam("force") String force ) { if(StringUtils.isBlank(bzdh)||StringUtils.isBlank(orderInfoId)){ return R.error("请求参数有误"); } try { - orderInfoService.updateBillNumber(bzdh, orderInfoId,fpqqlsh,xhfNsrsbh); + orderInfoService.updateBillNumber(bzdh, orderInfoId,fpqqlsh,xhfNsrsbh,force); return R.ok(); } catch (Exception e) { if(e instanceof OrderReceiveException){ - return R.error(e.getMessage()); + OrderReceiveException e1 = (OrderReceiveException) e; + return R.error(e1.getCode(),e1.getMessage()); } log.error(e.getMessage()); return R.error(OrderInfoContentEnum.INTERNAL_SERVER_ERROR); 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..ff13a006 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 @@ -223,7 +223,7 @@ public interface OrderInfoService { R ratioConversion(List orderInfoIds,String ratio,String xhfNsrsbh,String originUnit,String newUnit); @Transactional - void updateBillNumber(String bzdh,String orderInfoId,String fpqqlsh,String xhfNsrsbh) throws Exception; + void updateBillNumber(String bzdh,String orderInfoId,String fpqqlsh,String xhfNsrsbh,String force) throws Exception; @Transactional R logicalDeleteByOrderInfoId(List pageRequestList); 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..0247d74e 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 @@ -22,6 +22,7 @@ import com.dxhy.order.baseservice.module.taxclass.dao.TaxClassCodeMapper; import com.dxhy.order.baseservice.module.taxclass.model.TaxClassCodeEntity; import com.dxhy.order.baseservice.module.thirdservice.simsback.service.SimsBackService; import com.dxhy.order.baseservice.module.thirdservice.user.model.DeptEntity; +import com.dxhy.order.baseservice.module.thirdservice.user.model.TaxPlayerCodeDept; import com.dxhy.order.baseservice.module.thirdservice.user.service.UserInfoService; import com.dxhy.order.baseservice.utils.BaseServiceBeanTransitionUtils; import com.dxhy.order.constant.*; @@ -64,7 +65,6 @@ import com.dxhy.order.model.qdsk.taxpayerinfo.Qdjcxx; import com.dxhy.order.utils.*; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -1752,31 +1752,67 @@ public class OrderInfoServiceImpl implements OrderInfoService { } @Override - public void updateBillNumber(String bzdh,String orderInfoId,String fpqqlsh,String xhfNsrsbh) throws Exception{ + public void updateBillNumber(String bzdh,String orderInfoId,String fpqqlsh,String xhfNsrsbh,String force) throws Exception{ //通过报账单查询订单,如果存在则删除 List orderProcessInfos = orderProcessInfoMapper.queryOrderProcessInfoByBzdh(bzdh,"", Arrays.asList(xhfNsrsbh)); OrderProcessInfo orderProcessInfo = null; - if(orderProcessInfos.size() > 1){ + List orderProcessInfoList = orderProcessInfos.stream().filter(t -> OrderInfoEnum.ORDER_STATUS_0.getKey().equals(t.getDdzt())).collect(Collectors.toList()); + if(orderProcessInfoList.size() > 1){ throw new OrderReceiveException(OrderInfoContentEnum.INVOICE_BZDH_MULTIPLE); } - if(orderProcessInfos.size() == 1){ + if(orderProcessInfos.size() > 0){ orderProcessInfo = orderProcessInfos.get(0); } if(orderProcessInfo != null){ - if(!OrderInfoEnum.ORDER_STATUS_0.getKey().equals(orderProcessInfo.getDdzt())){ + if((!OrderInfoEnum.ORDER_STATUS_0.getKey().equals(orderProcessInfo.getDdzt())||ConfigureConstant.STRING_1.equals(orderProcessInfo.getYzfp())) + && OrderInfoEnum.ORDER_SOURCE_3.getKey().equals(orderProcessInfo.getDdly())){ + throw new OrderReceiveException(OrderInfoContentEnum.INVOICE_BZDH_OPERATED); } - OrderProcessInfo orderProcessInfo1 = new OrderProcessInfo(); - orderProcessInfo1.setOrderStatus(OrderInfoEnum.ORDER_VALID_STATUS_1.getKey()); - orderProcessInfo1.setOrderInfoId(orderProcessInfo.getOrderInfoId()); - orderProcessInfoMapper.updateOrderProcessInfoByFpqqlsh(orderProcessInfo1, Arrays.asList(xhfNsrsbh)); + if((OrderInfoEnum.ORDER_STATUS_5.getKey().equals(orderProcessInfo.getDdzt()) || OrderInfoEnum.ORDER_STATUS_7.getKey().equals(orderProcessInfo.getDdzt())) + &&!OrderInfoEnum.ORDER_SOURCE_3.getKey().equals(orderProcessInfo.getDdly()) && ConfigureConstant.STRING_0.equals(force)){ + throw new OrderReceiveException(OrderInfoContentEnum.INVOICE_BZDH_REPEAT_OPERATED); + } + if(ConfigureConstant.STRING_0.equals(force)){ + OrderProcessInfo orderProcessInfo1 = new OrderProcessInfo(); + orderProcessInfo1.setOrderStatus(OrderInfoEnum.ORDER_VALID_STATUS_1.getKey()); + orderProcessInfo1.setOrderInfoId(orderProcessInfo.getOrderInfoId()); + orderProcessInfoMapper.updateOrderProcessInfoByFpqqlsh(orderProcessInfo1, Arrays.asList(xhfNsrsbh)); + } } OrderProcessInfo orderProcessInfo2 = new OrderProcessInfo(); orderProcessInfo2.setBzdh(bzdh); - orderProcessInfo2.setOrderInfoId(orderInfoId); - orderProcessInfo2.setXtly(orderProcessInfo != null && StringUtils.isNotBlank(orderProcessInfo.getXtly()) ? orderProcessInfo.getXtly() : ""); + orderProcessInfo2.setOrderInfoId(orderInfoId);//作为更新where条件 + orderProcessInfo2.setXtly(orderProcessInfo != null && StringUtils.isNotBlank(orderProcessInfo.getXtly()) ? orderProcessInfo.getXtly() : orderProcessInfos.size() > 0 && StringUtils.isNotBlank(orderProcessInfos.get(0).getXtly())?orderProcessInfos.get(0).getXtly():"SAP"); + //查询entId,判断如果为空 + String gsdm = orderProcessInfo != null && StringUtils.isNotBlank(orderProcessInfo.getGsdm()) ? orderProcessInfo.getGsdm() : orderProcessInfos.size() > 0 && StringUtils.isNotBlank(orderProcessInfos.get(0).getGsdm()) ? orderProcessInfos.get(0).getGsdm() : null; + if(StringUtils.isNotBlank(gsdm)){ + //根据orderInfoId 查询 发票公司代码是否为空 + OrderProcessInfo orderProcessInfo1 = orderProcessInfoMapper.selectByOrderId(orderInfoId, Arrays.asList(xhfNsrsbh)); + if(orderProcessInfo1 != null && StringUtils.isBlank(orderProcessInfo1.getGsdm())){ + //如果为空,根据entID查询大B获取公司代码 + List taxplayercodeDeptList = userInfoService.getUser().getTaxplayercodeDeptList(); + gsdm = taxplayercodeDeptList.stream().filter(t -> orderProcessInfo1.getEntId().equals(t.getDeptId())).map(t -> t.getEnterpriseNumbers()).findFirst().orElse(""); + if(StringUtils.isNotBlank(gsdm)){ + throw new OrderReceiveException(OrderInfoContentEnum.ORDER__USER_INVALID_PERMISSIONS); + } + } + } + orderProcessInfo2.setGsdm(gsdm); + String ddh = orderProcessInfo != null && StringUtils.isNotBlank(orderProcessInfo.getDdh()) ? orderProcessInfo.getDdh() : orderProcessInfos.size() > 0 && StringUtils.isNotBlank(orderProcessInfos.get(0).getDdh()) ? orderProcessInfos.get(0).getDdh() : null; + orderProcessInfo2.setDdh(ddh); int i = orderProcessInfoMapper.updateOrderProcessInfoByFpqqlsh(orderProcessInfo2, Arrays.asList(xhfNsrsbh)); + if(StringUtils.isNotBlank(ddh)){ + OrderInfo orderInfo = new OrderInfo(); + orderInfo.setDdh(ddh); + orderInfo.setId(orderInfoId); + orderMapper.updateOrderInfoByOrderId(orderInfo,Arrays.asList(xhfNsrsbh)); + OrderInvoiceInfo orderInvoiceInfo = new OrderInvoiceInfo(); + orderInvoiceInfo.setOrderInfoId(orderInfoId); + orderInvoiceInfo.setDdh(ddh); + orderInvoiceInfoMapper.updateOrderInvoiceInfoByOrderId(orderInvoiceInfo,Arrays.asList(xhfNsrsbh)); + } if(i > 0) { Map map = new HashMap(); map.put("ddqqlsh",fpqqlsh); 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..000e5374 100644 --- a/order-management-invoice/src/main/resources/mybatis/mapper/OrderInvoiceInfoMapper.xml +++ b/order-management-invoice/src/main/resources/mybatis/mapper/OrderInvoiceInfoMapper.xml @@ -2222,6 +2222,9 @@ fpqqlsh = #{orderInvoiceInfo.fpqqlsh,jdbcType=VARCHAR}, + + ddh = #{orderInvoiceInfo.ddh,jdbcType=VARCHAR}, + update_time = #{orderInvoiceInfo.updateTime,jdbcType=TIMESTAMP},