diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/PrchOrdDtlDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/PrchOrdDtlDTO.java index 6963bd1..37edaea 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/PrchOrdDtlDTO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/PrchOrdDtlDTO.java @@ -77,7 +77,7 @@ public class PrchOrdDtlDTO { * 税码(字典: PRCH_TAX);推送ERP */ - private BigDecimal taxNum; + private String taxNum; /** * 是否基于GR的发票校验;推送ERP */ diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/DownOrUpOrderRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/DownOrUpOrderRespVO.java index 3f8b114..8533e85 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/DownOrUpOrderRespVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/DownOrUpOrderRespVO.java @@ -1,5 +1,7 @@ package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo; +import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SaleOrderDetailsRespVO; +import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderRespVO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -41,7 +43,7 @@ public class DownOrUpOrderRespVO { * 订单 */ @Schema(description = "订单") - private PurchaseOrderRespVO order; + private Object order; } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/SalesOrderController.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/SalesOrderController.java index 7de8564..d010e10 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/SalesOrderController.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/SalesOrderController.java @@ -49,7 +49,7 @@ public class SalesOrderController implements BusinessControllerMarker { @PostMapping("/create") - @Operation(summary = "创建采购订单") + @Operation(summary = "创建销售订单") @PreAuthorize("@ss.hasPermission('base:sales-order:create')") public CommonResult createSalesOrder(@Valid @RequestBody SalesOrderSaveReqVO createReqVO) { return success(salesOrderService.createSalesOrder(createReqVO)); @@ -141,6 +141,25 @@ public class SalesOrderController implements BusinessControllerMarker { public CommonResult orderPassReject(@RequestBody SalesOrderReviewReqVO reqVO) { return success(salesOrderService.orderPassReject(reqVO)); } + //关联订单 + @PostMapping("/link-order") + @Operation(summary = "关联订单") + public CommonResult linkOrder(@RequestBody @Validated LinkOrderReqVO req) { + return success(salesOrderService.linkOrder(req)); + } + //根据订单id和方式获取上或下游订单 + @PostMapping("/order-by-order-id-and-type") + @Operation(summary = "根据订单id和方式获取上或下游订单") + public CommonResult> getOrderByOrderIdAndType(@RequestBody DownOrUpOrderReqVO reqVO) { + return success( salesOrderService.getOrderByOrderIdAndType(reqVO)); + } + + + @PostMapping("/bound-order") + @Operation(summary = "获取已绑定的订单") + public CommonResult> boundOrder(@RequestBody DownOrUpOrderReqVO reqVO) { + return success(salesOrderService.getBindOrderByOrder(reqVO)); + } } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderService.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderService.java index d73c7f7..5fcfc33 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderService.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderService.java @@ -2,7 +2,7 @@ package com.zt.plat.module.contractorder.service.salesorder; import java.util.*; -import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PurchaseorderReqVO; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.*; import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderPageReqVO; import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderRespVO; import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderReviewReqVO; @@ -91,4 +91,27 @@ public interface SalesOrderService { * */ boolean orderPassReject(SalesOrderReviewReqVO salesOrderReviewReqVO); + /** + * 消费订单关联采购订单 + * + * @param reqVO 采购订单 + * + */ + boolean linkOrder(LinkOrderReqVO reqVO); + /** + * 获取消费订单详情 + * + * @param reqVO 采购订单 + * + */ + + List getOrderByOrderIdAndType(DownOrUpOrderReqVO reqVO); + /** + * 获取已绑定消费订单详情 + * + * @param reqVO 采购订单 + * + */ + + List getBindOrderByOrder(DownOrUpOrderReqVO reqVO); } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderServiceImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderServiceImpl.java index 22e9255..b6743e3 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderServiceImpl.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderServiceImpl.java @@ -10,13 +10,20 @@ import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi; import com.zt.plat.module.bpm.api.task.BpmTaskApi; import com.zt.plat.module.bpm.api.task.dto.*; import com.zt.plat.module.bpm.enums.task.BpmProcessInstanceStatusEnum; -import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PurchaseorderReqVO; +import com.zt.plat.module.contractorder.api.vo.contract.ContractRespVO; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.DownOrUpOrderReqVO; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.DownOrUpOrderRespVO; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.LinkOrderReqVO; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PurchaseOrderRespVO; import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.*; +import com.zt.plat.module.contractorder.dal.dataobject.contract.SystemRelativityDO; import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PurchaseOrderDO; import com.zt.plat.module.contractorder.dal.dataobject.salesorder.SalesOrderDO; +import com.zt.plat.module.contractorder.dal.mysql.contract.SystemRelativityMapper; import com.zt.plat.module.contractorder.dal.mysql.salesorder.SalesOrderMapper; import com.zt.plat.module.contractorder.enums.contract.DictEnum; import com.zt.plat.module.contractorder.enums.purchaseorder.OrderStatusEnum; +import com.zt.plat.module.contractorder.service.contract.ContractService; import com.zt.plat.module.contractorder.util.constants.ProcessDefinitionKeyConstants; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpSalesOrderSaveReqVO; import com.zt.plat.module.erp.service.erp.ErpOrderService; @@ -40,6 +47,7 @@ import com.zt.plat.framework.common.util.object.BeanUtils; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.contractorder.enums.ErrorCodeConstants.CONTRACT_ORDER_EXISTS; import static com.zt.plat.module.contractorder.enums.purchaseorder.ErrorCodeConstants.*; @@ -72,6 +80,13 @@ public class SalesOrderServiceImpl implements SalesOrderService { @Resource private ErpOrderService erpOrderService; + @Resource + private SystemRelativityMapper systemRelativityMapper; + + @Resource + private ContractService contractService; + + @Override @Transactional @@ -249,7 +264,7 @@ public class SalesOrderServiceImpl implements SalesOrderService { AdminUserRespDTO adminUserRespDTO = adminUserApi.getUser(SecurityFrameworkUtils.getLoginUserId()).getData(); if (ObjectUtils.isEmpty(salesOrderDO.getProcessInstanceId())) { BpmProcessInstanceCreateReqDTO pidto = new BpmProcessInstanceCreateReqDTO(); - pidto.setProcessDefinitionKey(ProcessDefinitionKeyConstants.PURCHASE_ORDER_REVIEW_PROCESS); + pidto.setProcessDefinitionKey(ProcessDefinitionKeyConstants.SALES_ORDER_REVIEW_PROCESS); pidto.setBusinessKey(String.valueOf(id)); String data = bpmProcessInstanceApi.createProcessInstance(adminUserRespDTO.getId(), pidto).getData(); if (StringUtils.isNotBlank(data)) { @@ -277,7 +292,7 @@ public class SalesOrderServiceImpl implements SalesOrderService { if (BpmProcessInstanceStatusEnum.REJECT.getStatus().equals(approvalDetail.getStatus())) { // 如果状态是驳回状态,需要重新创建一个流程实例 BpmProcessInstanceCreateReqDTO pidtoNew = new BpmProcessInstanceCreateReqDTO(); - pidtoNew.setProcessDefinitionKey(ProcessDefinitionKeyConstants.PURCHASE_ORDER_REVIEW_PROCESS); + pidtoNew.setProcessDefinitionKey(ProcessDefinitionKeyConstants.SALES_ORDER_REVIEW_PROCESS); pidtoNew.setBusinessKey(String.valueOf(id)); String data = bpmProcessInstanceApi.createProcessInstance(adminUserRespDTO.getId(), pidtoNew).getData(); if (StringUtils.isNotBlank(data)) { @@ -350,5 +365,81 @@ public class SalesOrderServiceImpl implements SalesOrderService { return false; } + @Override + public boolean linkOrder(LinkOrderReqVO LinkOrderReqVO) { + SystemRelativityDO saveDO = new SystemRelativityDO(); + saveDO.setStatus(DictEnum.BSE_SYS_REL_TP_ORDER.getCode()); + saveDO.setUpId(LinkOrderReqVO.getUpOrderId()); + saveDO.setDownId(LinkOrderReqVO.getDownOrderId()); + //判断订单有没有关联过 + if (systemRelativityMapper.selectCount(new LambdaQueryWrapper().eq(SystemRelativityDO::getUpId, saveDO.getUpId()).eq(SystemRelativityDO::getDownId, saveDO.getDownId())) > 0) { + throw exception(CONTRACT_ORDER_EXISTS); + } + return systemRelativityMapper.insert(saveDO) > 0; + } + + + @Override + public List getOrderByOrderIdAndType(DownOrUpOrderReqVO reqVO) { + SalesOrderDO salesOrderDO = salesOrderMapper.selectById(reqVO.getOrderId()); + if (salesOrderDO == null) { + throw exception(PURCHASE_ORDER_NOT_EXISTS); + } + String contractNumber = salesOrderDO.getContractNumber();// 合同号 + + ContractRespVO upRelation = null; + if ("up".equals(reqVO.getOrderType())) { + log.info("获取上游订单"); + //上游 + upRelation = contractService.getUpRelation(Long.valueOf(contractNumber)); + } else { + //下游 + log.info("获取下游订单"); + upRelation = contractService.getDownRelation(Long.valueOf(contractNumber)); + } + List orderList = new ArrayList<>(); + if (upRelation != null) { + String systemContractNumber = upRelation.getSystemContractNumber(); + + List salesOrderDOS = salesOrderMapper.selectList(new LambdaQueryWrapper().eq(SalesOrderDO::getContractNumber, systemContractNumber)); + salesOrderDOS.forEach(p -> { + DownOrUpOrderRespVO downOrUpOrderRespVO = new DownOrUpOrderRespVO(); + downOrUpOrderRespVO.setOrderId(String.valueOf(p.getId())); + downOrUpOrderRespVO.setOrderNo(p.getSystemOrderNumber()); + downOrUpOrderRespVO.setOrderType(reqVO.getOrderType()); + downOrUpOrderRespVO.setContractId(String.valueOf(p.getId())); + downOrUpOrderRespVO.setContractName(p.getContractName()); + downOrUpOrderRespVO.setContractNumber(p.getContractNumber()); + downOrUpOrderRespVO.setOrder(BeanUtils.toBean(p, SalesOrderRespVO.class)); + orderList.add(downOrUpOrderRespVO); + } + ); + + } + return orderList; + } + + @Override + public List getBindOrderByOrder(DownOrUpOrderReqVO reqVO) { + List orderList = new ArrayList<>(); + if ("up".equals(reqVO.getOrderType())) { + log.info("获取上游订单"); + //上游 + List systemRelativityDOS = systemRelativityMapper.selectList(new LambdaQueryWrapper().eq(SystemRelativityDO::getDownId, reqVO.getOrderId())); + if (!systemRelativityDOS.isEmpty()) { + List salesOrderDOS = salesOrderMapper.selectByIds(systemRelativityDOS.stream().map(SystemRelativityDO::getUpId).toList()); + orderList = BeanUtils.toBean(salesOrderDOS, PurchaseOrderRespVO.class); + } + } else { + //下游 + log.info("获取下游订单"); + List systemRelativityDOS = systemRelativityMapper.selectList(new LambdaQueryWrapper().eq(SystemRelativityDO::getUpId, reqVO.getOrderId())); + if (!systemRelativityDOS.isEmpty()) { + List purchaseOrderDOS = salesOrderMapper.selectByIds(systemRelativityDOS.stream().map(SystemRelativityDO::getDownId).toList()); + orderList = BeanUtils.toBean(purchaseOrderDOS, PurchaseOrderRespVO.class); + } + } + return orderList; + } } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/util/constants/ProcessDefinitionKeyConstants.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/util/constants/ProcessDefinitionKeyConstants.java index 2a15e8e..c9f41ad 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/util/constants/ProcessDefinitionKeyConstants.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/util/constants/ProcessDefinitionKeyConstants.java @@ -3,4 +3,5 @@ package com.zt.plat.module.contractorder.util.constants; public interface ProcessDefinitionKeyConstants { String PURCHASE_ORDER_REVIEW_PROCESS = "purchase_order_review"; + String SALES_ORDER_REVIEW_PROCESS = "sales_order_review"; }