From e5acac8fe3a71f2e3e1a9cb198572ae419c5408f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Wed, 15 Oct 2025 17:28:53 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=AE=A1=E7=90=86=E7=9B=B8?= =?UTF-8?q?=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../purchaseorder/ErrorCodeConstants.java | 2 +- .../PurchaseOrderController.java | 16 +++-- .../purchaseorder/vo/MaterialRespVO.java | 34 +++++++++ .../vo/PurchaseOrderStsReqVO.java | 23 +++++++ .../purchaseorder/PrchOrdDtlDO.java | 2 +- .../purchaseorder/PurchaseOrderDO.java | 5 ++ .../purchaseorder/PrchOrdDtlService.java | 2 + .../purchaseorder/PrchOrdDtlServiceImpl.java | 6 ++ .../purchaseorder/PurchaseOrderService.java | 4 ++ .../PurchaseOrderServiceImpl.java | 69 +++++++++++++++++-- .../purchaseorder/PurchaseOrderMapper.xml | 2 +- .../admin/erp/vo/ErpOrderSaveReqVO.java | 2 +- .../admin/erp/vo/ErpOrderUpdateReqVO.java | 2 +- 13 files changed, 155 insertions(+), 14 deletions(-) create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/MaterialRespVO.java create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderStsReqVO.java 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 faf5d2d..24b95d0 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 @@ -14,5 +14,5 @@ public interface ErrorCodeConstants { 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, "订单状态不存在"); + ErrorCode PURCHASE_ORDER_STATUS_ERROR = new ErrorCode(1_008_001_020, "非法的订单状态"); } 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 eeaadc3..c0c33aa 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 @@ -127,7 +127,7 @@ public class PurchaseOrderController implements BusinessControllerMarker { @PostMapping("/submit-erp061") @Operation(summary = "推送ERP订单", description = "061')") @PreAuthorize("@ss.hasPermission('bse:purchase-order:update')") - public CommonResult submitErp061(@RequestBody @Validated @NotNull(message = "采购订单id不能为空") List ids) { + public CommonResult submitErp061(@RequestBody @Validated @NotEmpty(message = "采购订单id不能为空") List ids) { return success( purchaseOrderService.submitErp061(ids)); } @PostMapping("/submit-erp062") @@ -145,9 +145,17 @@ public class PurchaseOrderController implements BusinessControllerMarker { } //根据订单id修改订单状态 @PutMapping("/update-order-status") - @Operation(summary = "根据订单id修改订单状态", description = "sts取值于字典名称'采购订单状态',字典类型'PRCH_ORD_STS'`") - public CommonResult updateOrderStatus(@RequestParam("orderId") Long orderId, @RequestParam("sts") String sts){ - return success(purchaseOrderService.updateOrderStatus(orderId,sts)); + @Operation(summary = "批量修改订单状态", description = "sts取值于字典名称'采购订单状态',字典类型'PRCH_ORD_STS' 可以根据订单号和订单id修改") + public CommonResult updateOrderStatus(@RequestBody @Validated PurchaseOrderStsReqVO req){ + purchaseOrderService.updateOrderStatusByIdOrOrderNo(req); + return success(true); + } + + //查询物料接口 + @GetMapping("/material") + @Operation(summary = "查询物料接口") + public CommonResult getMaterialList(@RequestParam @Validated @NotEmpty(message = "采购订单号不能为空") String orderNo){ + return purchaseOrderService.getMaterial(orderNo); } } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/MaterialRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/MaterialRespVO.java new file mode 100644 index 0000000..f0b562e --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/MaterialRespVO.java @@ -0,0 +1,34 @@ +package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +@Schema(description = "管理后台 - 物料响应 VO") +public class MaterialRespVO { + @Schema(description = "订单号") + private String orderNo; + @Schema(description = "订单id") + private String id; + @Schema(description = "物料类型") + private String materialType; + @Schema(description = "物料单位") + private String materialUnit; + @Schema(description = "物料明细") + private List materialDetails; + + @Data + public static class MaterialDetails { + @Schema(description = "物料名称") + private String materialName; + @Schema(description = "物料编码") + private String materialCode; + @Schema(description = "物料类型") + private String materialType; + @Schema(description = "物料单位") + private String materialUnit; + } +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderStsReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderStsReqVO.java new file mode 100644 index 0000000..84c5605 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderStsReqVO.java @@ -0,0 +1,23 @@ +package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + + +import java.util.List; + + +@Schema(description = "管理后台 - 采购订单状态 Request VO") +@Data +@ExcelIgnoreUnannotated +public class PurchaseOrderStsReqVO { + @Schema(description = "采购订单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "26419") + private List ids; + @Schema(description = "采购订单状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotEmpty(message = "采购订单状态不能为空") + private String sts; + @Schema(description = "采购订单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private List orderNos; +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/purchaseorder/PrchOrdDtlDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/purchaseorder/PrchOrdDtlDO.java index 8aab3f9..4810f44 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/purchaseorder/PrchOrdDtlDO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/purchaseorder/PrchOrdDtlDO.java @@ -89,7 +89,7 @@ public class PrchOrdDtlDO extends BusinessBaseDO { * 计量单位;推送ERP(必须) */ @TableField("UNT") - private BigDecimal unt; + private String unt; /** * 含税单价;推送ERP(必须) */ 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 a68f1f6..334fbbd 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 @@ -238,6 +238,11 @@ public class PurchaseOrderDO extends BusinessBaseDO { @TableField("IS_PUSH") private int isPush; + /** + * 计量单位 + */ + @TableField("UNT") + private String unt; /** * 物料字典 diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PrchOrdDtlService.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PrchOrdDtlService.java index d3804be..0454f86 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PrchOrdDtlService.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PrchOrdDtlService.java @@ -75,4 +75,6 @@ public interface PrchOrdDtlService { * @param ordIds 编号 */ void deletePrchOrdDtlListByOrdIds(List ordIds); + + List getDetailsByOrderId(Long ordId); } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PrchOrdDtlServiceImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PrchOrdDtlServiceImpl.java index 308f59a..0384013 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PrchOrdDtlServiceImpl.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PrchOrdDtlServiceImpl.java @@ -113,4 +113,10 @@ public class PrchOrdDtlServiceImpl implements PrchOrdDtlService { deletePrchOrdDtlListByIds(convertList(prchOrdDtlDOS, PrchOrdDtlDO::getId)); } + @Override + public List getDetailsByOrderId(Long ordId) { + + return prchOrdDtlMapper.selectList(new LambdaQueryWrapper<>(PrchOrdDtlDO.class).eq(PrchOrdDtlDO::getOrdId, ordId)); + } + } 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 e6506a3..69edf05 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 @@ -2,6 +2,7 @@ package com.zt.plat.module.contractorder.service.purchaseorder; import java.util.*; +import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.*; import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PurchaseOrderDO; import jakarta.validation.*; @@ -83,4 +84,7 @@ public interface PurchaseOrderService { List getOrderByOrderNo(List orderNo); void setOrderDetails(PurchaseOrderRespVO purchaseOrderRespVO); + void updateOrderStatusByIdOrOrderNo(PurchaseOrderStsReqVO reqVO); + + CommonResult getMaterial(String orderNo); } 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 fe7f653..1d82345 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 @@ -4,6 +4,8 @@ import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi; import com.zt.plat.module.bpm.api.task.BpmTaskApi; @@ -125,6 +127,12 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { prchOrdDtlService.deletePrchOrdDtlListByOrdIds(ids); } + private void validatePurchaseOrderNosExists(List orderNos){ + List list = purchaseOrderMapper.selectList(new LambdaQueryWrapper().in(PurchaseOrderDO::getSystemOrderNumber, orderNos)); + if (CollUtil.isEmpty(list) || list.size() != orderNos.size()) { + throw exception(PURCHASE_ORDER_NOT_EXISTS); + } + } private void validatePurchaseOrderExists(List ids) { List list = purchaseOrderMapper.selectByIds(ids); @@ -317,6 +325,62 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { purchaseOrderRespVO.setPrchOrdDtlRespVOS(BeanUtils.toBean(prchOrdDtlDOS, PrchOrdDtlRespVO.class)); } + @Override + public void updateOrderStatusByIdOrOrderNo(PurchaseOrderStsReqVO reqVO) { + // 校验存在 + if (reqVO.getIds()!=null){ + validatePurchaseOrderExists(reqVO.getIds()); + } + if (reqVO.getOrderNos()!=null){ + validatePurchaseOrderNosExists(reqVO.getOrderNos()); + } + PurchaseOrderStatusEnum byCode = PurchaseOrderStatusEnum.getByCode(reqVO.getSts()); + if (byCode == null) { + throw exception(PURCHASE_ORDER_STATUS_ERROR); + } + purchaseOrderMapper.update(new LambdaUpdateWrapper().in(reqVO.getOrderNos()!=null,PurchaseOrderDO::getSystemOrderNumber, reqVO.getOrderNos()).in(reqVO.getIds()!=null,PurchaseOrderDO::getId, reqVO.getIds()).set(PurchaseOrderDO::getStatus, reqVO.getSts())); + } + + @Override + public CommonResult getMaterial(String orderNo) { + PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectOne(new LambdaQueryWrapper().eq(PurchaseOrderDO::getSystemOrderNumber, orderNo)); + if (purchaseOrderDO == null){ + throw exception(PURCHASE_ORDER_NOT_EXISTS); + } + String mtrlTp = purchaseOrderDO.getMtrlTp(); + if ("RAW".equals(mtrlTp)){ + //原料 + MaterialRespVO materialRespVO = new MaterialRespVO(); + materialRespVO.setMaterialType(mtrlTp); + materialRespVO.setMaterialUnit(purchaseOrderDO.getUnt()); + materialRespVO.setOrderNo(purchaseOrderDO.getSystemOrderNumber()); + MaterialRespVO.MaterialDetails materialDetails = new MaterialRespVO.MaterialDetails(); + materialDetails.setMaterialCode(purchaseOrderDO.getMaterialNumber()); + materialDetails.setMaterialName(purchaseOrderDO.getMaterialName()); + materialDetails.setMaterialUnit(purchaseOrderDO.getUnt()); + materialDetails.setMaterialType(purchaseOrderDO.getMtrlTp()); + materialRespVO.setMaterialDetails(List.of(materialDetails)); + return CommonResult.success(materialRespVO); + }else { + List detailsByOrderIds = prchOrdDtlService.getDetailsByOrderId(purchaseOrderDO.getId()); + MaterialRespVO materialRespVO = new MaterialRespVO(); + materialRespVO.setMaterialType(mtrlTp); + materialRespVO.setMaterialUnit(purchaseOrderDO.getUnt()); + materialRespVO.setId(String.valueOf(purchaseOrderDO.getId())); + materialRespVO.setOrderNo(purchaseOrderDO.getSystemOrderNumber()); + materialRespVO.setMaterialDetails(detailsByOrderIds.stream().map(prchOrdDtlDO -> { + MaterialRespVO.MaterialDetails materialDetails = new MaterialRespVO.MaterialDetails(); + materialDetails.setMaterialCode(prchOrdDtlDO.getMtrlNum()); + materialDetails.setMaterialName(prchOrdDtlDO.getMtrlName()); + materialDetails.setMaterialUnit(prchOrdDtlDO.getUnt()); + materialDetails.setMaterialType(purchaseOrderDO.getMtrlTp()); + return materialDetails; + }).toList()); + return CommonResult.success(materialRespVO); + } + + } + private void setValue(ErpOrderUpdateReqVO erpOrderUpdateReqVO, PurchaseOrderWithDetailsVO purchaseOrderWithDetailsVO) { //head PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectById(purchaseOrderWithDetailsVO.getPurchaseOrder().getId()); @@ -328,13 +392,9 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { //itex setItex(erpOrderUpdateReqVO, purchaseOrderWithDetailsVO); //acct - // 使用FastJSON2直接将List转换为JSONArray - // acct部分:转换List为JSONArray List actsCtgrDtlList = purchaseOrderWithDetailsVO.getOrderDetails().stream() .map(PrchOrdDtlDO::getActsCtgrDtl).map(JSONObject::parseObject) .toList(); - - // 直接使用FastJSON2将List转换为JSONArray(关键优化点) JSONArray jsonArray = JSONArray.from(actsCtgrDtlList); // 设置到对象中 @@ -374,7 +434,6 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { }); erpOrderUpdateReqVO.setItexs(itexs); } - private String generateOrderNumber(String materialType) { return sequenceApi.getNextSequence("PURCHASE_ORDER_NUMBER", null, null).getData(); } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/resources/mapper/purchaseorder/PurchaseOrderMapper.xml b/zt-module-contract-order/zt-module-contract-order-server/src/main/resources/mapper/purchaseorder/PurchaseOrderMapper.xml index 82ba488..5be20a8 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/resources/mapper/purchaseorder/PurchaseOrderMapper.xml +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/resources/mapper/purchaseorder/PurchaseOrderMapper.xml @@ -221,7 +221,7 @@ diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderSaveReqVO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderSaveReqVO.java index 5ddee76..473d7b8 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderSaveReqVO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderSaveReqVO.java @@ -78,7 +78,7 @@ public class ErpOrderSaveReqVO { @Schema(description = "计量单位") @NotNull(message = "计量单位不能为空") - private BigDecimal poUnit; // MEINS UNIT3 + private String poUnit; // MEINS UNIT3 @Schema(description = "含税单价") @NotNull(message = "含税单价不能为空") diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderUpdateReqVO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderUpdateReqVO.java index 3003158..444acde 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderUpdateReqVO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderUpdateReqVO.java @@ -97,7 +97,7 @@ public class ErpOrderUpdateReqVO { @Schema(description = "计量单位(MEINS),必须与该物料基本计量单位一致", requiredMode = Schema.RequiredMode.REQUIRED, example = "PC") @NotEmpty(message = "计量单位不能为空") @ExcelProperty("计量单位") - private BigDecimal po_unit; + private String po_unit; @Schema(description = "含税单价(NETPR),保留2位小数", requiredMode = Schema.RequiredMode.REQUIRED, example = "199.99") @NotNull(message = "含税单价不能为空")