diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/OrderTypeEnum.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/OrderTypeEnum.java new file mode 100644 index 00000000..9dfb2850 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/OrderTypeEnum.java @@ -0,0 +1,48 @@ +package com.zt.plat.module.contractorder.enums; + +import lombok.Getter; + +@Getter +public enum OrderTypeEnum { + // 基础业务订单 + SALE("SALE", "销售", 0), + PUR("PUR", "采购", 1), + ENT("ENT", "委托加工", 2), + ENTED_PUR("ENTED_PUR", "来料加工-采购", 3), + ENTED_SALE("ENTED_SALE", "来料加工-销售", 10), + + // 物流服务订单 + HD_13("13HD", "货运代理", 4), + YS_10("10YS", "货物运输", 5), + CC_11("11CC", "货物保管仓储", 6), + BX_03("03BX", "货物保险", 7); + + /** 订单类型编码(字典键值) */ + private final String code; + /** 订单类型描述(字典标签) */ + private final String description; + /** 排序号(字典排序) */ + private final Integer sort; + + OrderTypeEnum(String code, String description, Integer sort) { + this.code = code; + this.description = description; + this.sort = sort; + } + + /** + * 根据编码获取枚举 + */ + public static OrderTypeEnum getByCode(String code) { + if (code == null || code.trim().isEmpty()) { + return null; + } + for (OrderTypeEnum type : values()) { + if (type.getCode().equals(code.trim())) { + return type; + } + } + return null; + } + +} \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/purchaseorder/ErrorCodeConstants.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/purchaseorder/ErrorCodeConstants.java index 1a6a44a1..070098ff 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/purchaseorder/ErrorCodeConstants.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/purchaseorder/ErrorCodeConstants.java @@ -11,7 +11,7 @@ import com.zt.plat.framework.common.exception.ErrorCode; */ public interface ErrorCodeConstants { - ErrorCode PURCHASE_ORDER_NOT_EXISTS = new ErrorCode(1_008_000_001, "采购订单不存在"); + ErrorCode PURCHASE_ORDER_NOT_EXISTS = new ErrorCode(1_008_000_001, "订单不存在"); ErrorCode ORDER_ID_NOT_EXISTS = new ErrorCode(1_008_000_010, "订单id不能为空"); ErrorCode PRCH_ORD_DTL_NOT_EXISTS = new ErrorCode(1_008_001_001, "采购订单明细不存在"); ErrorCode PURCHASE_ORDER_STATUS_ERROR = new ErrorCode(1_008_001_020, "非法的订单状态"); @@ -22,4 +22,7 @@ public interface ErrorCodeConstants { ErrorCode WAREHOUSE_CODE_OR_FACTORY_CODE_NOT_EXISTS = new ErrorCode(1_008_000_151, "{}"); ErrorCode ERP_ORDER_UPDATE_FAILED = new ErrorCode(1_008_000_160, "erp订单更新失败"); ErrorCode ORDER_DETAIL_NOT_EXISTS = new ErrorCode(1_008_000_060, "订单明细不能为空"); + ErrorCode PURCHASE_ORDER_ID_IS_NULL = new ErrorCode(1_008_000_070, "订单ID不能为空"); + ErrorCode PURCHASE_ORDER_ID_IS_EMPTY = new ErrorCode(1_008_000_080, "业务订单类型非法,请参考字典:SPLY_BSN_TP"); + ErrorCode PURCHASE_ORDER_NOT_ALLOW_BIND = new ErrorCode(1_008_000_090, "来料销售加工订单不允许绑定订单"); } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/PurchaseOrderController.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/PurchaseOrderController.java index 47814ca6..221a90ad 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/PurchaseOrderController.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/PurchaseOrderController.java @@ -104,7 +104,7 @@ public class PurchaseOrderController implements BusinessControllerMarker { public CommonResult> getPurchaseOrderPage(@Valid PurchaseOrderPageReqVO pageReqVO) { PageResult pageResult = purchaseOrderService.getPurchaseOrderPage(pageReqVO); PageResult purchaseOrderRespVOPageResult = BeanUtils.toBean(pageResult, PurchaseOrderRespVO.class); - if (purchaseOrderRespVOPageResult.getList().isEmpty()){ + if (purchaseOrderRespVOPageResult.getList().isEmpty()) { return success(purchaseOrderRespVOPageResult); } purchaseOrderRespVOPageResult.getList().forEach(purchaseOrderRespVO -> purchaseOrderService.setOrderDetails(purchaseOrderRespVO)); @@ -207,7 +207,7 @@ public class PurchaseOrderController implements BusinessControllerMarker { @Operation(summary = "根据订单id和方式获取上或下游订单") @PreAuthorize("@ss.hasAnyPermissions('base:purchase-order:query')") public CommonResult> getOrderByOrderIdAndType(@RequestBody DownOrUpOrderReqVO reqVO) { - return success( purchaseOrderService.getOrderByOrderIdAndType(reqVO)); + return success(purchaseOrderService.getOrderByOrderIdAndType(reqVO)); } @@ -218,5 +218,21 @@ public class PurchaseOrderController implements BusinessControllerMarker { return success(purchaseOrderService.getBindOrderByOrder(reqVO)); } + //无权限查询订单 + @PostMapping("/page-no-permission") + @Operation(summary = "无权限查询订单") + @PreAuthorize("@ss.hasAnyPermissions('base:purchase-order:query')") + public CommonResult> pageOrderNoPermission(@RequestBody PurchaseOrderPageReqVO pageReqVO) { + PageResult pageResult = purchaseOrderService.pageOrderNoPermission(pageReqVO); + return success( BeanUtils.toBean(pageResult, PurchaseOrderRespVO.class)); + } + //关联订单 + @PostMapping("/bound-order") + @Operation(summary = "关联订单") + @PreAuthorize("@ss.hasAnyPermissions('base:purchase-order:update','purchase:order:list:OrderList:edit')") + public CommonResult boundOrder(@RequestBody @Validated BoundOrderReqVO req) { + purchaseOrderService.boundOrder(req); + return success(true); + } } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/BoundOrderReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/BoundOrderReqVO.java new file mode 100644 index 00000000..43a2fc30 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/BoundOrderReqVO.java @@ -0,0 +1,18 @@ +package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.springframework.validation.annotation.Validated; + +@Data +@Validated +@Schema(description = "绑定订单请求参数") +public class BoundOrderReqVO { + @Schema(description = "订单ID") + @NotNull(message = "订单ID不能为空") + private Long id; + @Schema(description = "绑定的订单ID") + @NotNull(message = "被绑定的订单ID不能为空") + private Long boundId; +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderPageReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderPageReqVO.java index b3894f69..973fdf44 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderPageReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderPageReqVO.java @@ -14,7 +14,8 @@ import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH @Schema(description = "管理后台 - 采购订单分页 Request VO") @Data public class PurchaseOrderPageReqVO extends PageParam { - + @Schema(description = "订单主键") + private Long id; @Schema(description = "ERP订单号") private String orderSAPNumber; diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/purchaseorder/PurchaseOrderDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/purchaseorder/PurchaseOrderDO.java index 5d20a9f3..66bd7ea8 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/purchaseorder/PurchaseOrderDO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/purchaseorder/PurchaseOrderDO.java @@ -295,5 +295,9 @@ public class PurchaseOrderDO extends BusinessBaseDO { @TableField("ISS_CAUS") private String issueCause; - + /** + * 关联订单ID + */ + @TableField(value = "REL_ORD_ID") + private Long relatedOrderId; } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/purchaseorder/PurchaseOrderMapper.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/purchaseorder/PurchaseOrderMapper.java index 5cc33c55..88d49c5b 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/purchaseorder/PurchaseOrderMapper.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/purchaseorder/PurchaseOrderMapper.java @@ -3,6 +3,8 @@ package com.zt.plat.module.contractorder.dal.mysql.purchaseorder; import java.util.*; import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.datapermission.core.annotation.CompanyDataPermissionIgnore; +import com.zt.plat.framework.datapermission.core.annotation.DeptDataPermissionIgnore; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; @@ -78,4 +80,50 @@ public interface PurchaseOrderMapper extends BaseMapperX { List selectOrderByAndAllIds(@Param("ids") List ids); PurchaseOrderDO findOrderById(@Param("id") Long id); + + @CompanyDataPermissionIgnore + @DeptDataPermissionIgnore + default PageResult selectLinkPage(PurchaseOrderPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(PurchaseOrderDO::getOrderSAPNumber, reqVO.getOrderSAPNumber()) + .likeIfPresent(PurchaseOrderDO::getSystemOrderNumber, reqVO.getSystemOrderNumber()) + .likeIfPresent(PurchaseOrderDO::getCpNum, reqVO.getCompanyNumber()) + .likeIfPresent(PurchaseOrderDO::getSupplierNumber, reqVO.getSupplierNumber()) + .likeIfPresent(PurchaseOrderDO::getSupplierName, reqVO.getSupplierName()) + .eqIfPresent(PurchaseOrderDO::getType, reqVO.getType()) + .betweenIfPresent(PurchaseOrderDO::getVoucherDate, reqVO.getVoucherDate()) + .eqIfPresent(PurchaseOrderDO::getPurchaseOrganizationCustomsDeclaration, reqVO.getPurchaseOrganizationCustomsDeclaration()) + .likeIfPresent(PurchaseOrderDO::getReceiveFactoryName, reqVO.getReceiveFactoryName()) + .eqIfPresent(PurchaseOrderDO::getReceiveFactoryNumber, reqVO.getReceiveFactoryNumber()) + .likeIfPresent(PurchaseOrderDO::getReceiveWarehouseName, reqVO.getReceiveWarehouseName()) + .eqIfPresent(PurchaseOrderDO::getReceiveWarehouseNumber, reqVO.getReceiveWarehouseNumber()) + .eqIfPresent(PurchaseOrderDO::getPurchaseGroup, reqVO.getPurchaseGroup()) + .eqIfPresent(PurchaseOrderDO::getCurrencyNumber, reqVO.getCurrencyNumber()) + .eqIfPresent(PurchaseOrderDO::getExchangeRate, reqVO.getExchangeRate()) + .likeIfPresent(PurchaseOrderDO::getPaperContractNumber, reqVO.getPaperContractNumber()) + .likeIfPresent(PurchaseOrderDO::getAgreementNumber, reqVO.getAgreementNumber()) + .eqIfPresent(PurchaseOrderDO::getRemark, reqVO.getRemark()) + .eqIfPresent(PurchaseOrderDO::getAgentNumber, reqVO.getAgentNumber()) + .likeIfPresent(PurchaseOrderDO::getAgentName, reqVO.getAgentName()) + .eqIfPresent(PurchaseOrderDO::getMtrlTp, reqVO.getMtrlTp()) +// .eqIfPresent(PurchaseOrderDO::getOrderNumber, reqVO.getOrderNumber()) + .eqIfPresent(PurchaseOrderDO::getContractNumber, reqVO.getContractNumber()) + .eqIfPresent(PurchaseOrderDO::getMaterialNumber, reqVO.getMaterialNumber()) + .likeIfPresent(PurchaseOrderDO::getMaterialName, reqVO.getMaterialName()) + .likeIfPresent(PurchaseOrderDO::getContractName, reqVO.getContractName()) + .likeIfPresent(PurchaseOrderDO::getTenantNumber, reqVO.getTenantNumber()) + .betweenIfPresent(PurchaseOrderDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(PurchaseOrderDO::getErpPurchaseCompanyNumber, reqVO.getErpPurchaseCompanyNumber()) + .likeIfPresent(PurchaseOrderDO::getErpPurchaseCompanyName, reqVO.getErpPurchaseCompanyName()) + .eqIfPresent(PurchaseOrderDO::getErpSalesCompanyNumber, reqVO.getErpSalesCompanyNumber()) + .likeIfPresent(PurchaseOrderDO::getErpSalesCompanyName, reqVO.getErpSalesCompanyName()) + .likeIfPresent(PurchaseOrderDO::getPurchaseOrganizationName, reqVO.getPurchaseOrganizationName()) + .eqIfPresent(PurchaseOrderDO::getErpStatus, reqVO.getErpStatus()) + .eqIfPresent(PurchaseOrderDO::getSplyBsnTp, reqVO.getSplyBsnTp() != null ? reqVO.getSplyBsnTp() : "PUR") + .eqIfPresent(PurchaseOrderDO::getCause, reqVO.getCause()) + .eqIfPresent(PurchaseOrderDO::getStatus, reqVO.getStatus()) + .eqIfPresent(PurchaseOrderDO::getMeteringType, reqVO.getMeteringType()) + .likeIfPresent(PurchaseOrderDO::getPurchaseGroupName, reqVO.getPurchaseGroupName()) + .orderByDesc(PurchaseOrderDO::getId)); + } } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java index 715ad3a0..d9bcb849 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java @@ -9,6 +9,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.framework.datapermission.core.annotation.CompanyDataPermissionIgnore; +import com.zt.plat.framework.datapermission.core.annotation.DeptDataPermissionIgnore; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zt.plat.framework.security.core.LoginUser; import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; @@ -2093,6 +2095,8 @@ public class ContractServiceImpl implements ContractService { @Override @Transactional(rollbackFor = Exception.class) + @CompanyDataPermissionIgnore + @DeptDataPermissionIgnore public void relationContract(RelationContractVO relationContractVO) { //查询当前订单是否已经绑定订单了 ContractMainDO contractMainDO = contractMainMapper.selectById(relationContractVO.getContractId()); diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderService.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderService.java index 997d849a..ada6f8a9 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderService.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderService.java @@ -156,4 +156,12 @@ public interface PurchaseOrderService { * @return 订单和计划数据 */ PageResult queryOrderAndPlanData(OrderAndPlanDataReqDTO reqDTO); + /** + * 分页查询订单数据 + * + * @param pageReqVO 查询条件 + * @return 订单数据 + */ + PageResult pageOrderNoPermission(PurchaseOrderPageReqVO pageReqVO); + void boundOrder(BoundOrderReqVO reqVO); } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderServiceImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderServiceImpl.java index c2d26fb7..2296b795 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderServiceImpl.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderServiceImpl.java @@ -10,6 +10,8 @@ import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.framework.common.pojo.PageParam; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.framework.datapermission.core.annotation.CompanyDataPermissionIgnore; +import com.zt.plat.framework.datapermission.core.annotation.DeptDataPermissionIgnore; import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; import com.zt.plat.module.base.api.materialinfomation.MaterialInfomationApi; import com.zt.plat.module.base.api.materialinfomation.dto.MaterialInfomationPageReqDTO; @@ -23,14 +25,17 @@ import com.zt.plat.module.bpm.enums.task.BpmProcessInstanceStatusEnum; import com.zt.plat.module.contractorder.api.dto.order.OrderAndPlanDataReqDTO; import com.zt.plat.module.contractorder.api.vo.contract.ContractRespVO; import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.*; +import com.zt.plat.module.contractorder.dal.dataobject.contract.ContractMainDO; import com.zt.plat.module.contractorder.dal.dataobject.contract.SystemRelativityDO; import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PrchOrdDtlDO; 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.ContractMainMapper; import com.zt.plat.module.contractorder.dal.mysql.contract.SystemRelativityMapper; import com.zt.plat.module.contractorder.dal.mysql.purchaseorder.PrchOrdDtlMapper; import com.zt.plat.module.contractorder.dal.mysql.purchaseorder.PurchaseOrderMapper; import com.zt.plat.module.contractorder.enums.ErpConstants; +import com.zt.plat.module.contractorder.enums.OrderTypeEnum; 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; @@ -105,6 +110,16 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { private WarehouseFactoryService warehouseFactoryService; @Resource private InternalWarehouseService internalWarehouseService; + @Resource + private ContractMainMapper contractMainMapper; + private static final Map VALID_RELATIONS = new HashMap<>(); + static { + // 初始化合法的双向映射关系 + VALID_RELATIONS.put("ENT", "ENTED_PUR"); + VALID_RELATIONS.put("ENTED_PUR", "ENT"); + VALID_RELATIONS.put("PUR", "SALE"); + VALID_RELATIONS.put("SALE", "PUR"); + } @Override @Transactional(rollbackFor = Exception.class) @@ -903,6 +918,58 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { return new PageResult<>(pageData, (long) allData.size()); } + @Override + @CompanyDataPermissionIgnore + @DeptDataPermissionIgnore + public PageResult pageOrderNoPermission(PurchaseOrderPageReqVO pageReqVO) { + if (pageReqVO.getId() == null){ + throw exception(PURCHASE_ORDER_ID_IS_NULL); + } + PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectById(pageReqVO.getId()); + ContractMainDO contractMainDO = contractMainMapper.selectOne(new LambdaQueryWrapper() + .eq(ContractMainDO::getId, purchaseOrderDO.getContractNumber())); + ContractMainDO relatedContract = contractMainMapper.selectById(contractMainDO.getRelatedContractId()); + String splyBsnTp = VALID_RELATIONS.getOrDefault(purchaseOrderDO.getSplyBsnTp(), null); // 获取供应商业务类型 + if (splyBsnTp == null){ + throw exception(PURCHASE_ORDER_ID_IS_EMPTY); + } + pageReqVO.setContractNumber(relatedContract.getSystemContractNumber()); + pageReqVO.setSplyBsnTp(splyBsnTp); + return purchaseOrderMapper.selectLinkPage(pageReqVO); + } + + @Override + @CompanyDataPermissionIgnore + @DeptDataPermissionIgnore + @Transactional(rollbackFor = Exception.class) + public void boundOrder(BoundOrderReqVO reqVO) { + log.info("开始执行绑定订单操作,请求参数:{}", reqVO); + //查询当前订单是否已经绑定订单 + PurchaseOrderDO orderDO = purchaseOrderMapper.selectById(reqVO.getId()); + PurchaseOrderDO boundOrder = purchaseOrderMapper.selectById(reqVO.getBoundId()); + if (boundOrder == null|| orderDO==null){ + throw exception(PURCHASE_ORDER_NOT_EXISTS); + } + //判断当前订单是否是来料加工销售订单(来料加工消费订单不允许绑定订单) + if (OrderTypeEnum.ENTED_SALE.getCode().equals(orderDO.getSplyBsnTp())) { + throw exception(PURCHASE_ORDER_NOT_ALLOW_BIND); + } + if (orderDO.getRelatedOrderId()!=null){ + //将已绑定的订单置空 + PurchaseOrderDO relatedOrder = purchaseOrderMapper.selectById(orderDO.getRelatedOrderId()); + relatedOrder.setRelatedOrderId(null); + purchaseOrderMapper.updateById(relatedOrder); + log.info("已绑定的订单已解绑,订单ID:{}", relatedOrder.getId()); + } + orderDO.setRelatedOrderId(reqVO.getBoundId()); + purchaseOrderMapper.updateById(orderDO); + log.info("订单ID:{} 已绑定订单ID:{}", reqVO.getId(), reqVO.getBoundId()); + //修改已绑定的的订单 + boundOrder.setRelatedOrderId(reqVO.getId()); + purchaseOrderMapper.updateById(boundOrder); + log.info("绑定订单操作完成,订单ID:{}", reqVO.getId()); + } + public WarehouseFactoryRespVO getBoundFactoryAndWarehouse(String factoryCode, String warehouseCode) { // 1. 查询主库信息,空值直接抛异常(精准异常信息)