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 fec87b22..31e02916 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 @@ -232,6 +232,10 @@ public enum OrderInfoContentEnum { GENERATE_READY_ESC_ERROR("9642", "二手车种类不允许合并"), GENERATE_READY_JDC_ERROR1("9643", "机动车种类专票不允许合并"), + INVOICE_BZDH_MULTIPLE("9644", "此报账单存在多个结算单"), + + INVOICE_BZDH_OPERATED("9645", "此报账单已做其他操作"), + 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 33676121..ae64512a 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 @@ -5,9 +5,12 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; 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.vo.OrderInfoTotalAmountVO; +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; +import com.dxhy.order.consumer.modules.order.service.OrderBzdhService; import com.dxhy.order.exception.OrderReceiveException; import com.dxhy.order.model.*; import com.dxhy.order.model.page.OrderListQuery; @@ -20,21 +23,33 @@ import com.dxhy.order.baseservice.annotation.SysLog; import com.dxhy.order.baseservice.module.base.service.BaseService; 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.consumer.model.OderDetailInfo; 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.PageSlkjlyYxqRsp; +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.OrderInfoService; import com.dxhy.order.consumer.utils.PageDataDealUtil; import com.dxhy.order.consumer.utils.TaxSpecialPolicyUtil; +import com.dxhy.order.exception.OrderReceiveException; +import com.dxhy.order.model.*; +import com.dxhy.order.model.page.OrderListQuery; +import com.dxhy.order.utils.CommonUtils; +import com.dxhy.order.utils.JsonUtils; +import com.dxhy.order.utils.NsrsbhUtils; +import com.dxhy.order.utils.PageBeanConvertUtil; 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; +import javax.validation.constraints.NotBlank; import java.util.*; import java.util.regex.Matcher; @@ -161,15 +176,15 @@ public class OrderInfoController { @ApiOperation(value = "发票列表", notes = "发票列表修改报账单号") @SysLog(operation = "发票列表", operationDesc = "发票列表修改报账单号", key = "订单发票管理") public R updateBillNumber(@RequestParam("bzdh") String bzdh, - @RequestParam("orderInfoId") String orderInfoId -// @RequestParam("fpqqlsh")String fpqqlsh, -// @RequestParam("xhfNsrsbh")String xhfNsrsbh + @RequestParam("orderInfoId") String orderInfoId, + @RequestParam("fpqqlsh")String fpqqlsh, + @RequestParam("xhfNsrsbh")String xhfNsrsbh ) { if(StringUtils.isBlank(bzdh)||StringUtils.isBlank(orderInfoId)){ return R.error("请求参数有误"); } try { - int i = orderInfoService.updateBillNumber(bzdh, orderInfoId,"",""); + int i = orderInfoService.updateBillNumber(bzdh, orderInfoId,fpqqlsh,xhfNsrsbh); if(i > 0){ return R.ok(); } 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 1312877d..d545b6fe 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 @@ -222,7 +222,8 @@ public interface OrderInfoService { R ratioConversion(List orderInfoIds,String ratio,String xhfNsrsbh,String originUnit,String newUnit); - int updateBillNumber(String bzdh,String orderInfoId,String fpqqlsh,String xhfNsrsbh); + @Transactional + int updateBillNumber(String bzdh,String orderInfoId,String fpqqlsh,String xhfNsrsbh) 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 91970225..eaa3aa1e 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 @@ -64,6 +64,7 @@ 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; @@ -1751,17 +1752,37 @@ public class OrderInfoServiceImpl implements OrderInfoService { } @Override - public int updateBillNumber(String bzdh,String orderInfoId,String fpqqlsh,String xhfNsrsbh){ - OrderProcessInfo orderProcessInfo = new OrderProcessInfo(); - orderProcessInfo.setBzdh(bzdh); - orderProcessInfo.setOrderInfoId(orderInfoId); - int i = orderProcessInfoMapper.updateOrderProcessInfoByFpqqlsh(orderProcessInfo, null); -// if(i > 0) { -// Map map = new HashMap(); -// map.put("ddqqlsh",""); -// map.put("xhfNsrsbh",""); -// invoiceDataService.manualPushInvoice(Arrays.asList(map)); -// } + public int updateBillNumber(String bzdh,String orderInfoId,String fpqqlsh,String xhfNsrsbh) throws Exception{ + //通过报账单查询订单,如果存在则删除 + List orderProcessInfos = orderProcessInfoMapper.queryOrderProcessInfoByBzdh(bzdh, Arrays.asList(xhfNsrsbh)); + OrderProcessInfo orderProcessInfo = null; + if(orderProcessInfos.size() > 1){ + throw new OrderReceiveException(OrderInfoContentEnum.INVOICE_BZDH_MULTIPLE); + } + if(orderProcessInfos.size() == 1){ + orderProcessInfo = orderProcessInfos.get(0); + } + + if(orderProcessInfo != null){ + if(!OrderInfoEnum.ORDER_STATUS_0.getKey().equals(orderProcessInfo.getDdzt())){ + throw new OrderReceiveException(OrderInfoContentEnum.INVOICE_BZDH_OPERATED); + } + OrderProcessInfo orderProcessInfo1 = new OrderProcessInfo(); + orderProcessInfo1.setOrderStatus(OrderInfoEnum.ORDER_VALID_STATUS_1.getKey()); + orderProcessInfo1.setOrderInfoId(orderProcessInfo.getId()); + 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() : ""); + int i = orderProcessInfoMapper.updateOrderProcessInfoByFpqqlsh(orderProcessInfo2, Arrays.asList(xhfNsrsbh)); + if(i > 0) { + Map map = new HashMap(); + map.put("ddqqlsh",fpqqlsh); + map.put("xhfNsrsbh",xhfNsrsbh); + invoiceDataService.manualPushInvoice(Arrays.asList(map)); + } return i; }