From efab6957a33508df78538c42c34668c55cb61123 Mon Sep 17 00:00:00 2001 From: liss <1780094091@qq.com> Date: Wed, 24 Sep 2025 10:02:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95url,sply=E6=94=B9=E4=B8=BAerp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/erp/ErpAssetController.java | 2 +- .../admin/erp/ErpBomController.java | 2 +- .../admin/erp/ErpBomDetailController.java | 2 +- .../admin/erp/ErpCompanyController.java | 2 +- .../admin/erp/ErpCostcenterController.java | 2 +- .../admin/erp/ErpCustomerController.java | 2 +- .../admin/erp/ErpFactoryController.java | 2 +- .../admin/erp/ErpInternalOrderController.java | 2 +- .../admin/erp/ErpMaterialController.java | 2 +- .../admin/erp/ErpProcessController.java | 2 +- .../admin/erp/ErpProcessDetailController.java | 2 +- .../erp/ErpProductiveOrderController.java | 2 +- .../erp/ErpProductiveVersionController.java | 2 +- .../ErpPurchaseOrganizationController.java | 2 +- .../erp/ErpSalesOrganizationController.java | 2 +- .../admin/erp/ErpWarehouseController.java | 2 +- .../admin/erp/vo/ErpBomDetailPageReqVO.java | 2 +- .../admin/erp/vo/ErpBomDetailRespVO.java | 2 +- .../admin/erp/vo/ErpBomDetailSaveReqVO.java | 2 +- .../erp/dal/dataobject/erp/ErpBomDO.java | 4 - .../dal/dataobject/erp/ErpBomDetailDO.java | 2 +- .../erp/dal/mysql/erp/ErpBomMapper.java | 1 + .../erp/service/erp/ErpBomDetailService.java | 1 + .../service/erp/ErpBomDetailServiceImpl.java | 45 +++++++++- .../erp/service/erp/ErpBomServiceImpl.java | 89 +++++++++++-------- .../main/resources/mapper/ErpBomMapper.xml | 4 + 26 files changed, 120 insertions(+), 64 deletions(-) diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpAssetController.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpAssetController.java index 2f09d5e..76a9a8f 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpAssetController.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpAssetController.java @@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - ERP资产卡片") @RestController -@RequestMapping("/sply/erp-asset") +@RequestMapping("/erp/erp-asset") @Validated public class ErpAssetController { diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpBomController.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpBomController.java index bfb21f3..8a1a78a 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpBomController.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpBomController.java @@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - ERP物料清单(BOM)") @RestController -@RequestMapping("/sply/erp-bom") +@RequestMapping("/erp/erp-bom") @Validated public class ErpBomController { diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpBomDetailController.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpBomDetailController.java index ade5e23..985ef85 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpBomDetailController.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpBomDetailController.java @@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - ERP物料清单(BOM)明细") @RestController -@RequestMapping("/sply/erp-bom-detail") +@RequestMapping("/erp/erp-bom-detail") @Validated public class ErpBomDetailController { diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCompanyController.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCompanyController.java index a05399a..e4bbce7 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCompanyController.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCompanyController.java @@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - ERP公司") @RestController -@RequestMapping("/sply/erp-company") +@RequestMapping("/erp/erp-company") @Validated public class ErpCompanyController { diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCostcenterController.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCostcenterController.java index 329a3dd..08c2f61 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCostcenterController.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCostcenterController.java @@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - ERP成本中心") @RestController -@RequestMapping("/sply/erp-costcenter") +@RequestMapping("/erp/erp-costcenter") @Validated public class ErpCostcenterController { diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCustomerController.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCustomerController.java index 97c72bf..753f9a3 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCustomerController.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCustomerController.java @@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - ERP客商信息") @RestController -@RequestMapping("/sply/erp-customer") +@RequestMapping("/erp/erp-customer") @Validated public class ErpCustomerController { diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpFactoryController.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpFactoryController.java index ba1026d..aa78d24 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpFactoryController.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpFactoryController.java @@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - ERP工厂") @RestController -@RequestMapping("/sply/erp-factory") +@RequestMapping("/erp/erp-factory") @Validated public class ErpFactoryController { diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpInternalOrderController.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpInternalOrderController.java index 77ca90f..99ef3a3 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpInternalOrderController.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpInternalOrderController.java @@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - ERP内部订单") @RestController -@RequestMapping("/sply/erp-internal-order") +@RequestMapping("/erp/erp-internal-order") @Validated public class ErpInternalOrderController { diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpMaterialController.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpMaterialController.java index 3d19c67..227bd07 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpMaterialController.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpMaterialController.java @@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - ERP物料信息") @RestController -@RequestMapping("/sply/erp-material") +@RequestMapping("/erp/erp-material") @Validated public class ErpMaterialController { diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpProcessController.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpProcessController.java index a3ef944..fa1c8ba 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpProcessController.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpProcessController.java @@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - ERP工艺路线") @RestController -@RequestMapping("/sply/erp-process") +@RequestMapping("/erp/erp-process") @Validated public class ErpProcessController { diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpProcessDetailController.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpProcessDetailController.java index 4a55078..ba78aab 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpProcessDetailController.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpProcessDetailController.java @@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - ERP工艺路线明细") @RestController -@RequestMapping("/sply/erp-process-detail") +@RequestMapping("/erp/erp-process-detail") @Validated public class ErpProcessDetailController { diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpProductiveOrderController.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpProductiveOrderController.java index a18f52d..502fc5e 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpProductiveOrderController.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpProductiveOrderController.java @@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - ERP生产订单") @RestController -@RequestMapping("/sply/erp-productive-order") +@RequestMapping("/erp/erp-productive-order") @Validated public class ErpProductiveOrderController { diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpProductiveVersionController.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpProductiveVersionController.java index 27cd2a6..aaee9a6 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpProductiveVersionController.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpProductiveVersionController.java @@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - ERP生产版本") @RestController -@RequestMapping("/sply/erp-productive-version") +@RequestMapping("/erp/erp-productive-version") @Validated public class ErpProductiveVersionController { diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpPurchaseOrganizationController.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpPurchaseOrganizationController.java index 23978bf..525c2be 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpPurchaseOrganizationController.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpPurchaseOrganizationController.java @@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - ERP采购组织") @RestController -@RequestMapping("/sply/erp-purchase-organization") +@RequestMapping("/erp/erp-purchase-organization") @Validated public class ErpPurchaseOrganizationController { diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpSalesOrganizationController.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpSalesOrganizationController.java index 0500b10..1fa1bc0 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpSalesOrganizationController.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpSalesOrganizationController.java @@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - ERP销售组织") @RestController -@RequestMapping("/sply/erp-sales-organization") +@RequestMapping("/erp/erp-sales-organization") @Validated public class ErpSalesOrganizationController { diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpWarehouseController.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpWarehouseController.java index 98e464c..0759d1b 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpWarehouseController.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpWarehouseController.java @@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - ERP库位") @RestController -@RequestMapping("/sply/erp-warehouse") +@RequestMapping("/erp/erp-warehouse") @Validated public class ErpWarehouseController { diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpBomDetailPageReqVO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpBomDetailPageReqVO.java index 009d960..06df364 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpBomDetailPageReqVO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpBomDetailPageReqVO.java @@ -20,7 +20,7 @@ public class ErpBomDetailPageReqVO extends PageParam { private String childMaterialNumber; @Schema(description = "子项物料描述") - private BigDecimal childMaterialDescription; + private String childMaterialDescription; @Schema(description = "子项类别") private String category; diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpBomDetailRespVO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpBomDetailRespVO.java index 8aeb745..97a9bac 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpBomDetailRespVO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpBomDetailRespVO.java @@ -30,7 +30,7 @@ public class ErpBomDetailRespVO { @Schema(description = "子项物料描述", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("子项物料描述") - private BigDecimal childMaterialDescription; + private String childMaterialDescription; @Schema(description = "子项类别", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("子项类别") diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpBomDetailSaveReqVO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpBomDetailSaveReqVO.java index 8a3b994..2f9ba8c 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpBomDetailSaveReqVO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpBomDetailSaveReqVO.java @@ -28,7 +28,7 @@ public class ErpBomDetailSaveReqVO { @Schema(description = "子项物料描述", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "子项物料描述不能为空") - private BigDecimal childMaterialDescription; + private String childMaterialDescription; @Schema(description = "子项类别", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "子项类别不能为空") diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/dataobject/erp/ErpBomDO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/dataobject/erp/ErpBomDO.java index 69dcb82..a60ac01 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/dataobject/erp/ErpBomDO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/dataobject/erp/ErpBomDO.java @@ -60,8 +60,4 @@ public class ErpBomDO { */ @TableField("UNT") private String unit; - - @TableField(fill = FieldFill.INSERT) - private List erpBomDetailDOList; - } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/dataobject/erp/ErpBomDetailDO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/dataobject/erp/ErpBomDetailDO.java index 00a166b..a3bd057 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/dataobject/erp/ErpBomDetailDO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/dataobject/erp/ErpBomDetailDO.java @@ -49,7 +49,7 @@ public class ErpBomDetailDO { * 子项物料描述 */ @TableField("CHD_MTRL_DSP") - private BigDecimal childMaterialDescription; + private String childMaterialDescription; /** * 子项类别 */ diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpBomMapper.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpBomMapper.java index 732ee7e..a00e6c7 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpBomMapper.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpBomMapper.java @@ -26,4 +26,5 @@ public interface ErpBomMapper extends BaseMapperX { .orderByDesc(ErpBomDO::getId)); } + Long insertGetId(ErpBomDO aDo); } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBomDetailService.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBomDetailService.java index bee2db8..cd4f518 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBomDetailService.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBomDetailService.java @@ -61,4 +61,5 @@ public interface ErpBomDetailService { */ PageResult getErpBomDetailPage(ErpBomDetailPageReqVO pageReqVO); + void saveOrUpdateErpBomDetail(List updateReqVO); } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBomDetailServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBomDetailServiceImpl.java index e6264ac..ccb4961 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBomDetailServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBomDetailServiceImpl.java @@ -3,16 +3,23 @@ package com.zt.plat.module.erp.service.erp; import cn.hutool.core.collection.CollUtil; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.module.erp.common.conf.ErpConfig; +import com.zt.plat.module.erp.common.enums.OftenEnum; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomDetailPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomDetailRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomDetailSaveReqVO; +import com.zt.plat.module.erp.dal.dataobject.erp.ErpBomDO; import com.zt.plat.module.erp.dal.dataobject.erp.ErpBomDetailDO; import com.zt.plat.module.erp.dal.mysql.erp.ErpBomDetailMapper; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_BOM_DETAIL_NOT_EXISTS; @@ -29,6 +36,9 @@ public class ErpBomDetailServiceImpl implements ErpBomDetailService { @Resource private ErpBomDetailMapper erpBomDetailMapper; + @Resource + private ErpConfig erpConfig; + @Override public ErpBomDetailRespVO createErpBomDetail(ErpBomDetailSaveReqVO createReqVO) { // 插入 @@ -56,12 +66,12 @@ public class ErpBomDetailServiceImpl implements ErpBomDetailService { } @Override - public void deleteErpBomDetailListByIds(List ids) { + public void deleteErpBomDetailListByIds(List ids) { // 校验存在 validateErpBomDetailExists(ids); // 删除 erpBomDetailMapper.deleteByIds(ids); - } + } private void validateErpBomDetailExists(List ids) { List list = erpBomDetailMapper.selectByIds(ids); @@ -86,4 +96,35 @@ public class ErpBomDetailServiceImpl implements ErpBomDetailService { return erpBomDetailMapper.selectPage(pageReqVO); } + @Override + public void saveOrUpdateErpBomDetail(List updateReqVO) { + String key = "erpMap" + OftenEnum.FuncnrEnum.BOM清单.getFuncnr()+ "Detail"; + if (erpConfig.getRedisCacheMap(key).isEmpty()) { + initializeMap(key); + } + List toUpdate = new ArrayList<>(); + List toInsert = new ArrayList<>(); + + Map existingNumbers = erpConfig.getRedisCacheMap(key); +// for (ErpBomDetailDO updateReqVO : updateReqVO){ +// String mapKey = updateReqVO.getBomId() + "-" + updateReqVO.getErpBomId(); +// if (existingNumbers.get(mapKey)!=null) { +// +// updateReqVO.setId(existingNumbers.get(mapKey)); +// } +// } + + +// erpBomDetailMapper.saveOrUpdateErpBomDetail(updateReqVO); + } + + private void initializeMap(String key) { + List assets = erpBomDetailMapper.selectList(new LambdaQueryWrapperX()); + Map existingNumbers = new HashMap<>(); + for (ErpBomDetailDO asset : assets) { + String mapKey = asset.getBomId() + "-" + asset.getErpBomId(); + existingNumbers.put(mapKey, asset.getId()); + } + erpConfig.addRedisCacheMap(key, existingNumbers); + } } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBomServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBomServiceImpl.java index bf9d4bd..5355fad 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBomServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBomServiceImpl.java @@ -3,6 +3,7 @@ package com.zt.plat.module.erp.service.erp; import cn.hutool.core.collection.CollUtil; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zt.plat.module.erp.api.ErpExternalApi; import com.zt.plat.module.erp.api.dto.ErpSubmitReqDTO; import com.zt.plat.module.erp.common.conf.ErpConfig; @@ -10,6 +11,7 @@ import com.zt.plat.module.erp.common.enums.OftenEnum; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomSaveReqVO; +import com.zt.plat.module.erp.dal.dataobject.erp.ErpAssetDO; import com.zt.plat.module.erp.dal.dataobject.erp.ErpBomDO; import com.zt.plat.module.erp.dal.dataobject.erp.ErpBomDO; import com.zt.plat.module.erp.dal.dataobject.erp.ErpBomDetailDO; @@ -48,6 +50,9 @@ public class ErpBomServiceImpl implements ErpBomService { @Resource public ErpExternalApi erpExternalApi; + @Resource + private ErpBomDetailServiceImpl bomDetailService; + @Override public ErpBomRespVO createErpBom(ErpBomSaveReqVO createReqVO) { // 插入 @@ -112,13 +117,18 @@ public class ErpBomServiceImpl implements ErpBomService { try { OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.BOM清单; String funcnr = funcnrEnum.getFuncnr(); + String key = "erpMap" + funcnr; + if (erpConfig.getRedisCacheMap(key).isEmpty()) { + initializeMap(key); + } Map req = new HashMap<>(); JSONArray dataArrayALL = new JSONArray(); - List redisCache = erpConfig.getRedisCache(OftenEnum.FuncnrEnum.工厂信息.getFuncnr()); + String factKey = "erpMap" + OftenEnum.FuncnrEnum.工厂信息.getFuncnr(); + Map redisCache = erpConfig.getRedisCacheMap(factKey); if (CollUtil.isEmpty(redisCache)) { return; } - for (String factoryNumber : redisCache) { + for (String factoryNumber : redisCache.keySet()) { req.put("WERKS", factoryNumber); // 1. 调用ERP接口获取数据 JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); @@ -143,14 +153,13 @@ public class ErpBomServiceImpl implements ErpBomService { /** * 处理数据,区分新增和更新 */ - private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { - String key = "erp" + funcnr.getFuncnr(); + private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnrEnum) { + String key = "erpMap" + funcnrEnum.getFuncnr(); Map numbers = erpConfig.getRedisCacheMap(key); - Map numberDetails = erpConfig.getRedisCacheMap(key+"details"); List toUpdate = new ArrayList<>(); - List toInsert = new ArrayList<>(); List allnumbers = new ArrayList<>(); + List erpBomDetailDOList = new ArrayList<>(); for (int i = 0; i < dataArray.size(); i++) { JSONObject dataJson = dataArray.getJSONObject(i); if (dataJson != null) { @@ -162,42 +171,37 @@ public class ErpBomServiceImpl implements ErpBomService { DO.setMaterialDescription(dataJson.getString("MAKTX")); DO.setQuantity(dataJson.getBigDecimal("BMENG")); DO.setUnit(dataJson.getString("BMEIN")); - String number =DO.getUpMaterial()+"-"+DO.getUseItem()+"-"+DO.getFactoryNumber(); - if (numbers.get(number)!=null) { + String number = DO.getFactoryNumber() + "-" + DO.getUpMaterial() + "-" + DO.getUseItem(); + if (numbers.get(number) != null) { // 更新 DO.setId(numbers.get(number)); toUpdate.add(DO); } else { - // 新增 - toInsert.add(DO); + // 为了避免数据重复,先将主表数据插入数据库,再获取主表ID,再插入子表数据 + erpBomMapper.insert(DO); + numbers.put(number, DO.getId()); } JSONArray dataJsonItem = dataJson.getJSONArray("ITEM"); if (dataJsonItem != null) { - List erpBomDetailDOList =new ArrayList<>(); - for (int j = 0; j < dataJsonItem.size(); j++){ + for (int j = 0; j < dataJsonItem.size(); j++) { JSONObject dataJsonItemJson = dataJsonItem.getJSONObject(j); ErpBomDetailDO detailDO = new ErpBomDetailDO(); - String numberDel = number+dataJsonItemJson.getString("STVKN"); - if (numberDetails.get( numberDel) != null){ - detailDO.setId(Long.valueOf(numberDetails.get( numberDel))); - } - detailDO.setBomId(String.valueOf(numbers.get(number))); + detailDO.setBomId(String.valueOf(DO.getId())); detailDO.setErpBomId(dataJsonItemJson.getString("STVKN")); - detailDO.setErpBomId(dataJsonItemJson.getString("IDNRK")); - detailDO.setErpBomId(dataJsonItemJson.getString("OJTXP")); - detailDO.setErpBomId(dataJsonItemJson.getString("POSTP")); - detailDO.setErpBomId(dataJsonItemJson.getString("MENGE")); - detailDO.setErpBomId(dataJsonItemJson.getString("MEINS")); - detailDO.setErpBomId(dataJsonItemJson.getString("WLCAT")); + detailDO.setChildMaterialNumber(dataJsonItemJson.getString("IDNRK")); + detailDO.setChildMaterialDescription(dataJsonItemJson.getString("OJTXP")); + detailDO.setCategory(dataJsonItemJson.getString("POSTP")); + detailDO.setQuantity(dataJsonItemJson.getBigDecimal("MENGE")); + detailDO.setUnit(dataJsonItemJson.getString("MEINS")); + detailDO.setIdentificationType(dataJsonItemJson.getString("WLCAT")); erpBomDetailDOList.add(detailDO); } - DO.setErpBomDetailDOList(erpBomDetailDOList); } } } - return new ProcessingResult(toUpdate, toInsert, key, allnumbers); + return new ProcessingResult(toUpdate, erpBomDetailDOList,key, allnumbers); } /** @@ -205,13 +209,12 @@ public class ErpBomServiceImpl implements ErpBomService { */ private void saveData(ProcessingResult result) { // 批量新增和更新 - if (!result.toInsert.isEmpty()) { - erpBomMapper.insertBatch(result.toInsert); - } if (!result.toUpdate.isEmpty()) { erpBomMapper.updateBatch(result.toUpdate); } - erpConfig.updateRedisCache(result.key, result.allnumbers); + if (!result.erpBomDetailDOList.isEmpty()) { + bomDetailService.saveOrUpdateErpBomDetail(result.erpBomDetailDOList); + } } /** @@ -219,34 +222,44 @@ public class ErpBomServiceImpl implements ErpBomService { */ private static class ProcessingResult { private final List toUpdate; - private final List toInsert; + private final List erpBomDetailDOList; private final String key; private final List allnumbers; - public ProcessingResult(List toUpdate, List toInsert, String key, List allnumbers) { + public ProcessingResult(List toUpdate, List erpBomDetailDOList, String key, List allnumbers) { this.toUpdate = toUpdate; - this.toInsert = toInsert; + this.erpBomDetailDOList = erpBomDetailDOList; this.key = key; this.allnumbers = allnumbers; } } + private void initializeMap(String key) { + List assets = erpBomMapper.selectList(new LambdaQueryWrapperX()); + Map existingNumbers = new HashMap<>(); + for (ErpBomDO asset : assets) { + String mapKey = asset.getFactoryNumber() + "-" + asset.getUpMaterial() + "-" + asset.getUseItem(); + existingNumbers.put(mapKey, asset.getId()); + } + erpConfig.addRedisCacheMap(key, existingNumbers); + } + @Override public void submitDataToErp() { - ErpSubmitReqDTO reqDTO = new ErpSubmitReqDTO(); + ErpSubmitReqDTO reqDTO = new ErpSubmitReqDTO(); reqDTO.setSrcsys("MOM"); reqDTO.setFuncnr("061"); reqDTO.setBskey("POTEST011"); reqDTO.setUsrid("cuibin"); reqDTO.setUsrnm("崔斌"); - + Map req = new HashMap<>(); - + Map exte = new HashMap<>(); exte.put("zzhth", "成品采购合同0406-1-xt"); req.put("exte", exte); - + Map head = new HashMap<>(); head.put("pur_group", "120"); head.put("purch_org", "3017"); @@ -258,7 +271,7 @@ public class ErpBomServiceImpl implements ErpBomService { head.put("doc_type", "PO01"); head.put("zzhth", "成品采购合同0406-1-xt"); req.put("head", head); - + List> items = new ArrayList<>(); Map item = new HashMap<>(); item.put("material", "000000000000226986"); @@ -275,7 +288,7 @@ public class ErpBomServiceImpl implements ErpBomService { req.put("item", items); reqDTO.setReq(req); ResponseEntity response = erpExternalApi.submitDataToErp(reqDTO); - if (response.getStatusCode() == HttpStatus.OK){ + if (response.getStatusCode() == HttpStatus.OK) { log.info("ERP数据提交成功"); } } diff --git a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpBomMapper.xml b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpBomMapper.xml index 4575a08..85d4dfb 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpBomMapper.xml +++ b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpBomMapper.xml @@ -9,6 +9,10 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> + + + + UPDATE sply_erp_fact