1、订单管理相关 2、销售订单相关接口

This commit is contained in:
潘荣晟
2025-10-24 18:05:23 +08:00
parent 6454719d36
commit deb2cd12a8
6 changed files with 143 additions and 7 deletions

View File

@@ -77,7 +77,7 @@ public class PrchOrdDtlDTO {
* 税码(字典: PRCH_TAX);推送ERP * 税码(字典: PRCH_TAX);推送ERP
*/ */
private BigDecimal taxNum; private String taxNum;
/** /**
* 是否基于GR的发票校验;推送ERP * 是否基于GR的发票校验;推送ERP
*/ */

View File

@@ -1,5 +1,7 @@
package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo; 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 io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
@@ -41,7 +43,7 @@ public class DownOrUpOrderRespVO {
* 订单 * 订单
*/ */
@Schema(description = "订单") @Schema(description = "订单")
private PurchaseOrderRespVO order; private Object order;
} }

View File

@@ -49,7 +49,7 @@ public class SalesOrderController implements BusinessControllerMarker {
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建采购订单") @Operation(summary = "创建销售订单")
@PreAuthorize("@ss.hasPermission('base:sales-order:create')") @PreAuthorize("@ss.hasPermission('base:sales-order:create')")
public CommonResult<SalesOrderRespVO> createSalesOrder(@Valid @RequestBody SalesOrderSaveReqVO createReqVO) { public CommonResult<SalesOrderRespVO> createSalesOrder(@Valid @RequestBody SalesOrderSaveReqVO createReqVO) {
return success(salesOrderService.createSalesOrder(createReqVO)); return success(salesOrderService.createSalesOrder(createReqVO));
@@ -141,6 +141,25 @@ public class SalesOrderController implements BusinessControllerMarker {
public CommonResult<Boolean> orderPassReject(@RequestBody SalesOrderReviewReqVO reqVO) { public CommonResult<Boolean> orderPassReject(@RequestBody SalesOrderReviewReqVO reqVO) {
return success(salesOrderService.orderPassReject(reqVO)); return success(salesOrderService.orderPassReject(reqVO));
} }
//关联订单
@PostMapping("/link-order")
@Operation(summary = "关联订单")
public CommonResult<Boolean> linkOrder(@RequestBody @Validated LinkOrderReqVO req) {
return success(salesOrderService.linkOrder(req));
}
//根据订单id和方式获取上或下游订单
@PostMapping("/order-by-order-id-and-type")
@Operation(summary = "根据订单id和方式获取上或下游订单")
public CommonResult<List<DownOrUpOrderRespVO>> getOrderByOrderIdAndType(@RequestBody DownOrUpOrderReqVO reqVO) {
return success( salesOrderService.getOrderByOrderIdAndType(reqVO));
}
@PostMapping("/bound-order")
@Operation(summary = "获取已绑定的订单")
public CommonResult<List<PurchaseOrderRespVO>> boundOrder(@RequestBody DownOrUpOrderReqVO reqVO) {
return success(salesOrderService.getBindOrderByOrder(reqVO));
}
} }

View File

@@ -2,7 +2,7 @@ package com.zt.plat.module.contractorder.service.salesorder;
import java.util.*; 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.SalesOrderPageReqVO;
import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderRespVO; import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderRespVO;
import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderReviewReqVO; import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderReviewReqVO;
@@ -91,4 +91,27 @@ public interface SalesOrderService {
* *
*/ */
boolean orderPassReject(SalesOrderReviewReqVO salesOrderReviewReqVO); boolean orderPassReject(SalesOrderReviewReqVO salesOrderReviewReqVO);
/**
* 消费订单关联采购订单
*
* @param reqVO 采购订单
*
*/
boolean linkOrder(LinkOrderReqVO reqVO);
/**
* 获取消费订单详情
*
* @param reqVO 采购订单
*
*/
List<DownOrUpOrderRespVO> getOrderByOrderIdAndType(DownOrUpOrderReqVO reqVO);
/**
* 获取已绑定消费订单详情
*
* @param reqVO 采购订单
*
*/
List<PurchaseOrderRespVO> getBindOrderByOrder(DownOrUpOrderReqVO reqVO);
} }

View File

@@ -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.BpmTaskApi;
import com.zt.plat.module.bpm.api.task.dto.*; import com.zt.plat.module.bpm.api.task.dto.*;
import com.zt.plat.module.bpm.enums.task.BpmProcessInstanceStatusEnum; 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.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.purchaseorder.PurchaseOrderDO;
import com.zt.plat.module.contractorder.dal.dataobject.salesorder.SalesOrderDO; 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.dal.mysql.salesorder.SalesOrderMapper;
import com.zt.plat.module.contractorder.enums.contract.DictEnum; import com.zt.plat.module.contractorder.enums.contract.DictEnum;
import com.zt.plat.module.contractorder.enums.purchaseorder.OrderStatusEnum; 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.contractorder.util.constants.ProcessDefinitionKeyConstants;
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpSalesOrderSaveReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpSalesOrderSaveReqVO;
import com.zt.plat.module.erp.service.erp.ErpOrderService; 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.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.*; import static com.zt.plat.module.contractorder.enums.purchaseorder.ErrorCodeConstants.*;
@@ -72,6 +80,13 @@ public class SalesOrderServiceImpl implements SalesOrderService {
@Resource @Resource
private ErpOrderService erpOrderService; private ErpOrderService erpOrderService;
@Resource
private SystemRelativityMapper systemRelativityMapper;
@Resource
private ContractService contractService;
@Override @Override
@Transactional @Transactional
@@ -249,7 +264,7 @@ public class SalesOrderServiceImpl implements SalesOrderService {
AdminUserRespDTO adminUserRespDTO = adminUserApi.getUser(SecurityFrameworkUtils.getLoginUserId()).getData(); AdminUserRespDTO adminUserRespDTO = adminUserApi.getUser(SecurityFrameworkUtils.getLoginUserId()).getData();
if (ObjectUtils.isEmpty(salesOrderDO.getProcessInstanceId())) { if (ObjectUtils.isEmpty(salesOrderDO.getProcessInstanceId())) {
BpmProcessInstanceCreateReqDTO pidto = new BpmProcessInstanceCreateReqDTO(); BpmProcessInstanceCreateReqDTO pidto = new BpmProcessInstanceCreateReqDTO();
pidto.setProcessDefinitionKey(ProcessDefinitionKeyConstants.PURCHASE_ORDER_REVIEW_PROCESS); pidto.setProcessDefinitionKey(ProcessDefinitionKeyConstants.SALES_ORDER_REVIEW_PROCESS);
pidto.setBusinessKey(String.valueOf(id)); pidto.setBusinessKey(String.valueOf(id));
String data = bpmProcessInstanceApi.createProcessInstance(adminUserRespDTO.getId(), pidto).getData(); String data = bpmProcessInstanceApi.createProcessInstance(adminUserRespDTO.getId(), pidto).getData();
if (StringUtils.isNotBlank(data)) { if (StringUtils.isNotBlank(data)) {
@@ -277,7 +292,7 @@ public class SalesOrderServiceImpl implements SalesOrderService {
if (BpmProcessInstanceStatusEnum.REJECT.getStatus().equals(approvalDetail.getStatus())) { if (BpmProcessInstanceStatusEnum.REJECT.getStatus().equals(approvalDetail.getStatus())) {
// 如果状态是驳回状态,需要重新创建一个流程实例 // 如果状态是驳回状态,需要重新创建一个流程实例
BpmProcessInstanceCreateReqDTO pidtoNew = new BpmProcessInstanceCreateReqDTO(); BpmProcessInstanceCreateReqDTO pidtoNew = new BpmProcessInstanceCreateReqDTO();
pidtoNew.setProcessDefinitionKey(ProcessDefinitionKeyConstants.PURCHASE_ORDER_REVIEW_PROCESS); pidtoNew.setProcessDefinitionKey(ProcessDefinitionKeyConstants.SALES_ORDER_REVIEW_PROCESS);
pidtoNew.setBusinessKey(String.valueOf(id)); pidtoNew.setBusinessKey(String.valueOf(id));
String data = bpmProcessInstanceApi.createProcessInstance(adminUserRespDTO.getId(), pidtoNew).getData(); String data = bpmProcessInstanceApi.createProcessInstance(adminUserRespDTO.getId(), pidtoNew).getData();
if (StringUtils.isNotBlank(data)) { if (StringUtils.isNotBlank(data)) {
@@ -350,5 +365,81 @@ public class SalesOrderServiceImpl implements SalesOrderService {
return false; 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<SystemRelativityDO>().eq(SystemRelativityDO::getUpId, saveDO.getUpId()).eq(SystemRelativityDO::getDownId, saveDO.getDownId())) > 0) {
throw exception(CONTRACT_ORDER_EXISTS);
}
return systemRelativityMapper.insert(saveDO) > 0;
}
@Override
public List<DownOrUpOrderRespVO> 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<DownOrUpOrderRespVO> orderList = new ArrayList<>();
if (upRelation != null) {
String systemContractNumber = upRelation.getSystemContractNumber();
List<SalesOrderDO> salesOrderDOS = salesOrderMapper.selectList(new LambdaQueryWrapper<SalesOrderDO>().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<PurchaseOrderRespVO> getBindOrderByOrder(DownOrUpOrderReqVO reqVO) {
List<PurchaseOrderRespVO> orderList = new ArrayList<>();
if ("up".equals(reqVO.getOrderType())) {
log.info("获取上游订单");
//上游
List<SystemRelativityDO> systemRelativityDOS = systemRelativityMapper.selectList(new LambdaQueryWrapper<SystemRelativityDO>().eq(SystemRelativityDO::getDownId, reqVO.getOrderId()));
if (!systemRelativityDOS.isEmpty()) {
List<SalesOrderDO> salesOrderDOS = salesOrderMapper.selectByIds(systemRelativityDOS.stream().map(SystemRelativityDO::getUpId).toList());
orderList = BeanUtils.toBean(salesOrderDOS, PurchaseOrderRespVO.class);
}
} else {
//下游
log.info("获取下游订单");
List<SystemRelativityDO> systemRelativityDOS = systemRelativityMapper.selectList(new LambdaQueryWrapper<SystemRelativityDO>().eq(SystemRelativityDO::getUpId, reqVO.getOrderId()));
if (!systemRelativityDOS.isEmpty()) {
List<SalesOrderDO> purchaseOrderDOS = salesOrderMapper.selectByIds(systemRelativityDOS.stream().map(SystemRelativityDO::getDownId).toList());
orderList = BeanUtils.toBean(purchaseOrderDOS, PurchaseOrderRespVO.class);
}
}
return orderList;
}
}

View File

@@ -3,4 +3,5 @@ package com.zt.plat.module.contractorder.util.constants;
public interface ProcessDefinitionKeyConstants { public interface ProcessDefinitionKeyConstants {
String PURCHASE_ORDER_REVIEW_PROCESS = "purchase_order_review"; String PURCHASE_ORDER_REVIEW_PROCESS = "purchase_order_review";
String SALES_ORDER_REVIEW_PROCESS = "sales_order_review";
} }