From 7f7993e0fde1e08bfd37982ab6eb9e5a08545b2d Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期五, 20 三月 2026 11:24:33 +0800
Subject: [PATCH] refactor: 生产订单绑定工艺路线的子表重命名
---
src/main/java/com/ruoyi/production/dto/ProductionOrderRouteItemParamDto.java | 27 +
src/main/java/com/ruoyi/production/controller/ProductionOrderRouteItemParamController.java | 57 ++
src/main/resources/mapper/production/ProductionOrderRouteItemMapper.xml | 19
src/main/java/com/ruoyi/production/service/impl/ProductionOrderStructureServiceImpl.java | 151 ++++++
src/main/java/com/ruoyi/production/mapper/ProductionOrderStructureMapper.java | 16
src/main/java/com/ruoyi/production/controller/ProductionOrderStructureController.java | 43 +
src/main/java/com/ruoyi/production/service/impl/ProductionOrderRouteItemServiceImpl.java | 85 +-
src/main/java/com/ruoyi/production/service/IProductionOrderAppendixService.java | 6
doc/宁夏-中盛建材.sql | 167 +++---
src/main/resources/mapper/production/ProductionOrderStructureMapper.xml | 19
src/main/java/com/ruoyi/production/controller/ProductionOrderAppendixController.java | 40 +
src/main/java/com/ruoyi/production/dto/ProductionOrderStructureDto.java | 34 +
src/main/java/com/ruoyi/production/pojo/ProductionOrderRouteItem.java | 69 ++
src/main/resources/mapper/production/ProductionOrderRouteItemParamMapper.xml | 28 +
src/main/java/com/ruoyi/production/service/IProductionOrderRouteItemParamService.java | 26 +
src/main/java/com/ruoyi/production/service/IProductionOrderRouteItemService.java | 28 +
src/main/java/com/ruoyi/production/dto/ProductionOrderRouteItemDto.java | 23
src/main/java/com/ruoyi/production/pojo/ProductionOrderRouteItemParam.java | 97 +++
src/main/java/com/ruoyi/production/service/IProductionOrderStructureService.java | 22
src/main/java/com/ruoyi/production/mapper/ProductionOrderRouteItemMapper.java | 16
/dev/null | 153 ------
src/main/java/com/ruoyi/production/controller/ProductionOrderRouteItemController.java | 64 ++
src/main/java/com/ruoyi/production/service/impl/ProductionOrderRouteItemParamServiceImpl.java | 122 ++++
src/main/java/com/ruoyi/production/service/impl/ProductionOrderAppendixServiceImpl.java | 66 +-
src/main/java/com/ruoyi/production/mapper/ProductionOrderRouteItemParamMapper.java | 16
src/main/java/com/ruoyi/production/pojo/ProductionOrderStructure.java | 62 ++
26 files changed, 1,132 insertions(+), 324 deletions(-)
diff --git "a/doc/\345\256\201\345\244\217-\344\270\255\347\233\233\345\273\272\346\235\220.sql" "b/doc/\345\256\201\345\244\217-\344\270\255\347\233\233\345\273\272\346\235\220.sql"
index d9c5e24..f91a888 100644
--- "a/doc/\345\256\201\345\244\217-\344\270\255\347\233\233\345\273\272\346\235\220.sql"
+++ "b/doc/\345\256\201\345\244\217-\344\270\255\347\233\233\345\273\272\346\235\220.sql"
@@ -281,95 +281,6 @@
ALTER TABLE `product-inventory-management-zsjc`.`product_order`
ADD COLUMN `status` int NULL COMMENT '鐘舵�侊紙1.寰呭紑濮嬨��2.杩涜涓��3.宸插畬鎴愩��4.宸插彇娑堬級' AFTER `plan_complete_time`;
-DROP TABLE IF EXISTS `process_route_item_instance`;
-CREATE TABLE `process_route_item_instance`
-(
- `id` bigint NOT NULL AUTO_INCREMENT,
- `route_id` bigint NOT NULL DEFAULT 0 COMMENT '宸ヨ壓璺嚎id',
- `product_model_id` bigint NULL DEFAULT 0 COMMENT '浜у搧id',
- `process_id` bigint NOT NULL DEFAULT 0 COMMENT '宸ュ簭id',
- `tenant_id` bigint NOT NULL COMMENT '绉熸埛id',
- `create_time` datetime NULL DEFAULT NULL COMMENT '褰曞叆鏃堕棿',
- `update_time` datetime NULL DEFAULT NULL COMMENT '鏇存柊鏃堕棿',
- `drag_sort` int NULL DEFAULT NULL COMMENT '鎷栧姩鎺掑簭',
- `is_quality` tinyint(1) NULL DEFAULT 1 COMMENT '鏄惁璐ㄦ宸ュ簭',
- PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB
- AUTO_INCREMENT = 83
- CHARACTER SET = utf8mb4
- COLLATE = utf8mb4_0900_ai_ci COMMENT = '宸ヨ壓璺嚎瀛愰泦-闄勮〃'
- ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Table structure for process_route_item_param_instance
--- ----------------------------
-DROP TABLE IF EXISTS `process_route_item_param_instance`;
-
-CREATE TABLE `process_route_item_param_instance`
-(
- `id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭ID',
- `order_id` bigint DEFAULT NULL COMMENT '鐢熶骇璁㈠崟ID',
- `route_item_id` bigint NOT NULL COMMENT '鍏宠仈宸ヨ壓璺嚎鏄庣粏ID (process_route_item.id)',
- `process_param_id` bigint DEFAULT NULL COMMENT '鏉ユ簮宸ュ簭鍙傛暟ID',
- `param_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '鍙傛暟鍞竴鏍囪瘑',
- `param_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '鍙傛暟鍚嶇О',
- `param_type` tinyint NOT NULL COMMENT '鍙傛暟绫诲瀷(1鏁板瓧 2鏂囨湰 3涓嬫媺閫夋嫨 4鏃堕棿)',
- `param_format` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '鍙傛暟鏍煎紡',
- `value_mode` tinyint DEFAULT '1' COMMENT '鍊兼ā寮�(1鍗曞�� 2鍖洪棿)',
- `unit` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '鍗曚綅',
- `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '澶囨敞',
- `standard_value` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '鏍囧噯鍊�',
- `min_value` decimal(10, 2) DEFAULT NULL COMMENT '姝よ矾绾胯妭鐐硅瀹氱殑鏍囧噯鏈�灏忓��',
- `max_value` decimal(10, 2) DEFAULT NULL COMMENT '姝よ矾绾胯妭鐐硅瀹氱殑鏍囧噯鏈�澶у��',
- `is_required` tinyint NOT NULL DEFAULT '0' COMMENT '鏄惁蹇呭~',
- `sort` int NOT NULL DEFAULT '0' COMMENT '鎺掑簭',
- `tenant_id` bigint DEFAULT NULL COMMENT '绉熸埛ID',
- `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
- `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
- PRIMARY KEY (`id`) USING BTREE,
- KEY `idx_route_item_id` (`route_item_id`) USING BTREE,
- KEY `idx_param_key` (`param_key`)
-) ENGINE = InnoDB
- AUTO_INCREMENT = 1
- DEFAULT CHARSET = utf8mb4
- COLLATE = utf8mb4_0900_ai_ci
- ROW_FORMAT = DYNAMIC COMMENT ='宸ヨ壓璺嚎宸ュ簭鍙傛暟瀹炰緥琛�';
-
--- ----------------------------
--- Table structure for product_structure_instance
--- ----------------------------
-DROP TABLE IF EXISTS `product_structure_instance`;
-CREATE TABLE `product_structure_instance`
-(
- `id` bigint NOT NULL AUTO_INCREMENT,
- `parent_id` bigint NULL DEFAULT NULL COMMENT '鐖惰妭鐐笽D',
- `product_model_id` bigint NULL DEFAULT NULL COMMENT '浜у搧id',
- `process_id` bigint NULL DEFAULT NULL COMMENT '宸ュ簭id',
- `unit_quantity` decimal(16, 4) NOT NULL COMMENT '鍗曚綅浜у嚭闇�瑕佹暟閲�',
- `demanded_quantity` decimal(16, 4) NULL DEFAULT NULL COMMENT '闇�姹傛暟閲�',
- `unit` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '鍗曚綅',
- `tenant_id` bigint NULL DEFAULT NULL COMMENT '绉熸埛id',
- `bom_id` bigint NOT NULL COMMENT 'bom鐨刬d',
- PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB
- CHARACTER SET = utf8mb4
- COLLATE = utf8mb4_0900_ai_ci COMMENT = 'BOM瀛愰泦-闄勮〃'
- ROW_FORMAT = Dynamic;
-
-SET FOREIGN_KEY_CHECKS = 1;
-
-
-ALTER TABLE `process_route_item_instance`
- ADD COLUMN `order_id` bigint NOT NULL COMMENT '鐢熶骇璁㈠崟id' AFTER `id`,
- ADD INDEX `idx_order_id` (`order_id`);
-
-ALTER TABLE `process_route_item_param_instance`
- ADD COLUMN `order_id` bigint NOT NULL COMMENT '鐢熶骇璁㈠崟id' AFTER `id`,
- ADD INDEX `idx_order_id` (`order_id`);
-
-ALTER TABLE `product_structure_instance`
- ADD COLUMN `order_id` bigint NOT NULL COMMENT '鐢熶骇璁㈠崟id' AFTER `id`,
- ADD INDEX `idx_order_id` (`order_id`);
ALTER TABLE `product-inventory-management-zsjc`.`product_order`
ADD COLUMN `strength` varchar(255) NULL COMMENT '浜у搧绫诲瀷' AFTER `plan_complete_time`;
@@ -427,4 +338,80 @@
ALTER TABLE `product-inventory-management-zsjc`.`product_structure`
MODIFY COLUMN `unit_quantity` decimal(20, 15) NOT NULL COMMENT '鍗曚綅浜у嚭闇�瑕佹暟閲�' AFTER `process_id`,
- MODIFY COLUMN `demanded_quantity` decimal(20, 15) NULL DEFAULT NULL COMMENT '闇�姹傛暟閲�' AFTER `unit_quantity`,
\ No newline at end of file
+ MODIFY COLUMN `demanded_quantity` decimal(20, 15) NULL DEFAULT NULL COMMENT '闇�姹傛暟閲�' AFTER `unit_quantity`,
+
+
+CREATE TABLE `production_order_route_item`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT,
+ `order_id` bigint NOT NULL COMMENT '鐢熶骇璁㈠崟id',
+ `route_id` bigint NOT NULL DEFAULT '0' COMMENT '宸ヨ壓璺嚎id',
+ `product_model_id` bigint DEFAULT '0' COMMENT '浜у搧id',
+ `process_id` bigint NOT NULL DEFAULT '0' COMMENT '宸ュ簭id',
+ `tenant_id` bigint NOT NULL COMMENT '绉熸埛id',
+ `create_time` datetime DEFAULT NULL COMMENT '褰曞叆鏃堕棿',
+ `update_time` datetime DEFAULT NULL COMMENT '鏇存柊鏃堕棿',
+ `drag_sort` int DEFAULT NULL COMMENT '鎷栧姩鎺掑簭',
+ `is_quality` tinyint(1) DEFAULT '1' COMMENT '鏄惁璐ㄦ宸ュ簭',
+ PRIMARY KEY (`id`) USING BTREE,
+ KEY `idx_order_id` (`order_id`)
+) ENGINE = InnoDB
+ AUTO_INCREMENT = 83
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci
+ ROW_FORMAT = DYNAMIC
+ COMMENT ='鐢熶骇璁㈠崟缁戝畾鐨勫伐鑹鸿矾绾�--宸ュ簭琛�';
+
+CREATE TABLE `production_order_route_item_param`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭ID',
+ `order_id` bigint DEFAULT NULL COMMENT '鐢熶骇璁㈠崟ID',
+ `route_item_id` bigint NOT NULL COMMENT '鍏宠仈宸ヨ壓璺嚎鏄庣粏ID (production_order_route_item.id)',
+ `process_param_id` bigint DEFAULT NULL COMMENT '鏉ユ簮宸ュ簭鍙傛暟ID',
+ `param_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '鍙傛暟鍞竴鏍囪瘑',
+ `param_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '鍙傛暟鍚嶇О',
+ `param_type` tinyint NOT NULL COMMENT '鍙傛暟绫诲瀷(1鏁板瓧 2鏂囨湰 3涓嬫媺閫夋嫨 4鏃堕棿)',
+ `param_format` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '鍙傛暟鏍煎紡',
+ `value_mode` tinyint DEFAULT '1' COMMENT '鍊兼ā寮�(1鍗曞�� 2鍖洪棿)',
+ `unit` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '鍗曚綅',
+ `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '澶囨敞',
+ `standard_value` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '鏍囧噯鍊�',
+ `min_value` decimal(10, 2) DEFAULT NULL COMMENT '姝よ矾绾胯妭鐐硅瀹氱殑鏍囧噯鏈�灏忓��',
+ `max_value` decimal(10, 2) DEFAULT NULL COMMENT '姝よ矾绾胯妭鐐硅瀹氱殑鏍囧噯鏈�澶у��',
+ `is_required` tinyint NOT NULL DEFAULT '0' COMMENT '鏄惁蹇呭~',
+ `sort` int NOT NULL DEFAULT '0' COMMENT '鎺掑簭',
+ `tenant_id` bigint DEFAULT NULL COMMENT '绉熸埛ID',
+ `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+ `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+ PRIMARY KEY (`id`) USING BTREE,
+ KEY `idx_route_item_id` (`route_item_id`) USING BTREE,
+ KEY `idx_param_key` (`param_key`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci
+ ROW_FORMAT = DYNAMIC
+ COMMENT ='鐢熶骇璁㈠崟缁戝畾鐨勫伐鑹鸿矾绾垮伐搴�--鍙傛暟琛�';
+
+CREATE TABLE `production_order_structure`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT,
+ `order_id` bigint NOT NULL COMMENT '鐢熶骇璁㈠崟id',
+ `parent_id` bigint DEFAULT NULL COMMENT '鐖惰妭鐐笽D',
+ `product_model_id` bigint DEFAULT NULL COMMENT '浜у搧id',
+ `process_id` bigint DEFAULT NULL COMMENT '宸ュ簭id',
+ `unit_quantity` decimal(16, 4) NOT NULL COMMENT '鍗曚綅浜у嚭闇�瑕佹暟閲�',
+ `demanded_quantity` decimal(16, 4) DEFAULT NULL COMMENT '闇�姹傛暟閲�',
+ `unit` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '鍗曚綅',
+ `tenant_id` bigint DEFAULT NULL COMMENT '绉熸埛id',
+ `bom_id` bigint NOT NULL COMMENT 'bom鐨刬d',
+ PRIMARY KEY (`id`) USING BTREE,
+ KEY `idx_order_id` (`order_id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_0900_ai_ci
+ ROW_FORMAT = DYNAMIC
+ COMMENT ='鐢熶骇璁㈠崟缁戝畾鐨凚OM瀛愯〃';
+
+DROP TABLE IF EXISTS process_route_item_instance;
+DROP TABLE IF EXISTS process_route_item_param_instance;
+DROP TABLE IF EXISTS product_structure_instance;
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/appendix/controller/AppendixController.java b/src/main/java/com/ruoyi/appendix/controller/AppendixController.java
deleted file mode 100644
index e4d4d2f..0000000
--- a/src/main/java/com/ruoyi/appendix/controller/AppendixController.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.ruoyi.appendix.controller;
-
-import com.ruoyi.appendix.service.AppendixService;
-import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.production.pojo.ProductOrder;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-
-/**
- * <br>
- * BOM-宸ヨ壓璺嚎闄勮〃鎺у埗灞�
- * </br>
- *
- * @author deslrey
- * @version 1.0
- * @since 2026/03/18 14:44
- */
-@RestController
-@RequestMapping("/appendix")
-@Api("BOM-宸ヨ壓璺嚎闄勮〃鎺у埗灞�")
-public class AppendixController {
-
- @Resource
- private AppendixService appendixService;
-
- @PostMapping("/bindingRoute")
- @ApiOperation("鐢熶骇璁㈠崟缁戝畾宸ヨ壓璺嚎")
- public AjaxResult bindingRoute(@RequestBody ProductOrder productOrder) {
- appendixService.populateData(productOrder);
- return AjaxResult.success();
- }
-
-}
diff --git a/src/main/java/com/ruoyi/appendix/controller/ProcessRouteItemInstanceController.java b/src/main/java/com/ruoyi/appendix/controller/ProcessRouteItemInstanceController.java
deleted file mode 100644
index 587b9d9..0000000
--- a/src/main/java/com/ruoyi/appendix/controller/ProcessRouteItemInstanceController.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package com.ruoyi.appendix.controller;
-
-import com.ruoyi.appendix.dto.ProcessRouteItemInstanceDto;
-import com.ruoyi.appendix.service.ProcessRouteItemInstanceService;
-import com.ruoyi.framework.web.domain.AjaxResult;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import java.util.List;
-
-/**
- * <br>
- * 宸ヨ壓璺嚎瀛愰泦-闄勮〃鎺у埗灞�
- * </br>
- *
- * @author deslrey
- * @version 1.0
- * @since 2026/03/18 13:07
- */
-@RestController
-@RequestMapping("/processRouteItemInstance")
-@Api("鑹鸿矾绾垮瓙闆�-闄勮〃鎺у埗灞�")
-public class ProcessRouteItemInstanceController {
-
- @Resource
- private ProcessRouteItemInstanceService processRouteItemInstanceService;
-
- @GetMapping("/list/{orderId}")
- @ApiOperation("鑾峰彇宸ュ簭鍒楄〃")
- public AjaxResult getProcessItem(@PathVariable Long orderId) {
- List<ProcessRouteItemInstanceDto> list = processRouteItemInstanceService.getProcessItem(orderId);
- return AjaxResult.success(list);
- }
-
- @PostMapping("add")
- @ApiOperation("鏂板宸ュ簭")
- public AjaxResult addProcessItem(@RequestBody ProcessRouteItemInstanceDto dto) {
- processRouteItemInstanceService.addProcessItem(dto);
- return AjaxResult.success();
- }
-
- @PutMapping("/update")
- @ApiOperation("淇敼宸ュ簭")
- public AjaxResult updateProcessItem(@RequestBody ProcessRouteItemInstanceDto dto) {
- processRouteItemInstanceService.updateProcessItem(dto);
- return AjaxResult.success();
- }
-
- @DeleteMapping("/delete/{id}")
- @ApiOperation("鍒犻櫎宸ュ簭")
- public AjaxResult deleteProcessItem(@PathVariable Long id) {
- processRouteItemInstanceService.deleteProcessItem(id);
- return AjaxResult.success();
- }
-
- @PostMapping("/sort")
- @ApiOperation("宸ュ簭鎺掑簭")
- public AjaxResult sortProcessItem(@RequestBody ProcessRouteItemInstanceDto dto) {
- processRouteItemInstanceService.sortProcessItem(dto);
- return AjaxResult.success();
- }
-
-}
diff --git a/src/main/java/com/ruoyi/appendix/controller/ProcessRouteItemParamInstanceController.java b/src/main/java/com/ruoyi/appendix/controller/ProcessRouteItemParamInstanceController.java
deleted file mode 100644
index 39dde3e..0000000
--- a/src/main/java/com/ruoyi/appendix/controller/ProcessRouteItemParamInstanceController.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package com.ruoyi.appendix.controller;
-
-import com.ruoyi.appendix.dto.ProcessRouteItemParamInstanceDto;
-import com.ruoyi.appendix.service.ProcessRouteItemParamInstanceService;
-import com.ruoyi.framework.web.domain.AjaxResult;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import java.util.List;
-
-/**
- * <br>
- * 宸ヨ壓璺嚎宸ュ簭鍙傛暟鎺ュ彛
- * </br>
- *
- * @author deslrey
- * @version 1.0
- * @since 2026/03/18 13:14
- */
-
-@Api(tags = "宸ヨ壓璺嚎宸ュ簭鍙傛暟鎺ュ彛")
-@RestController
-@RequestMapping("/processRouteItemParamInstance")
-public class ProcessRouteItemParamInstanceController {
-
- @Resource
- private ProcessRouteItemParamInstanceService processRouteItemParamInstanceService;
-
- @GetMapping("/list")
- @ApiOperation("鐢熶骇璁㈠崟-鑾峰彇宸ュ簭缁戝畾鐨勫弬鏁板垪琛�")
- public AjaxResult routeItemParamList(@RequestParam("orderId") Long orderId, @RequestParam("routeItemId") Long routeItemId) {
- List<ProcessRouteItemParamInstanceDto> list = processRouteItemParamInstanceService.routeItemParamList(orderId, routeItemId);
- return AjaxResult.success(list);
- }
-
- @PostMapping("/add")
- @ApiOperation("鐢熶骇璁㈠崟-宸ュ簭鏂板鍙傛暟")
- public AjaxResult addRouteItemParam(@RequestBody ProcessRouteItemParamInstanceDto dto) {
- processRouteItemParamInstanceService.addRouteItemParam(dto);
- return AjaxResult.success();
- }
-
- @PutMapping("/update")
- @ApiOperation("鐢熶骇璁㈠崟-宸ュ簭鏇存柊鍙傛暟")
- public AjaxResult updateRouteItemParam(@RequestBody ProcessRouteItemParamInstanceDto dto){
- processRouteItemParamInstanceService.updateRouteItemParam(dto);
- return AjaxResult.success();
- }
-
- @DeleteMapping("/delete/{id}")
- @ApiOperation("鐢熶骇璁㈠崟-宸ュ簭鍒犻櫎鍙傛暟")
- public AjaxResult deleteRouteItemParam(@PathVariable Long id) {
- processRouteItemParamInstanceService.deleteRouteItemParam(id);
- return AjaxResult.success();
- }
-
-
-}
diff --git a/src/main/java/com/ruoyi/appendix/controller/ProductStructureInstanceController.java b/src/main/java/com/ruoyi/appendix/controller/ProductStructureInstanceController.java
deleted file mode 100644
index 9867f7a..0000000
--- a/src/main/java/com/ruoyi/appendix/controller/ProductStructureInstanceController.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.ruoyi.appendix.controller;
-
-import com.ruoyi.appendix.dto.ProductStructureInstanceDto;
-import com.ruoyi.appendix.service.ProductStructureInstanceService;
-import com.ruoyi.framework.web.domain.AjaxResult;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import java.util.List;
-
-/**
- * <br>
- * BOM瀛愰泦-闄勮〃Controller
- * </br>
- *
- * @author deslrey
- * @version 1.0
- * @since 2026/03/18 13:22
- */
-@Api(tags = "BOM缁撴瀯鎺ュ彛")
-@RestController
-@RequestMapping("/productStructureInstance")
-public class ProductStructureInstanceController {
-
- @Resource
- private ProductStructureInstanceService productStructureInstanceService;
-
- @GetMapping("/getBomStructs/{orderId}")
- @ApiOperation("鏍规嵁鐢熶骇璁㈠崟ID鑾峰彇缁戝畾鐨凚OM瀛愰泦缁撴瀯鏍�")
- public AjaxResult getBomStructs(@PathVariable Long orderId) {
- List<ProductStructureInstanceDto> list = productStructureInstanceService.listByOrderId(orderId);
- return AjaxResult.success(list);
- }
-
- @PutMapping("/addOrUpdateBomStructs")
- @ApiOperation("鏂板/鏇存柊BOM瀛愰泦缁撴瀯")
- public AjaxResult addOrUpdateBomStructs(@RequestBody ProductStructureInstanceDto instanceDto) {
- productStructureInstanceService.addOrUpdateBomStructs(instanceDto);
- return AjaxResult.success();
- }
-
-}
diff --git a/src/main/java/com/ruoyi/appendix/dto/ProcessRouteItemInstanceDto.java b/src/main/java/com/ruoyi/appendix/dto/ProcessRouteItemInstanceDto.java
deleted file mode 100644
index fc113b4..0000000
--- a/src/main/java/com/ruoyi/appendix/dto/ProcessRouteItemInstanceDto.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.ruoyi.appendix.dto;
-
-import com.ruoyi.appendix.pojo.ProcessRouteItemInstance;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * <br>
- * 宸ヨ壓璺嚎瀛愰泦-闄勮〃Dto
- * </br>
- *
- * @author deslrey
- * @version 1.0
- * @since 2026/03/19 10:46
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-public class ProcessRouteItemInstanceDto extends ProcessRouteItemInstance {
-
- @ApiModelProperty("宸ュ簭鍚嶇О")
- private String processName;
-
-}
diff --git a/src/main/java/com/ruoyi/appendix/dto/ProcessRouteItemParamInstanceDto.java b/src/main/java/com/ruoyi/appendix/dto/ProcessRouteItemParamInstanceDto.java
deleted file mode 100644
index e385c55..0000000
--- a/src/main/java/com/ruoyi/appendix/dto/ProcessRouteItemParamInstanceDto.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.ruoyi.appendix.dto;
-
-import com.ruoyi.appendix.pojo.ProcessRouteItemParamInstance;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * <br>
- *
- * </br>
- *
- * @author deslrey
- * @version 1.0
- * @since 2026/03/19 11:49
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-public class ProcessRouteItemParamInstanceDto extends ProcessRouteItemParamInstance {
-
- @ApiModelProperty("宸ュ簭ID")
- private Long processId;
-
-}
diff --git a/src/main/java/com/ruoyi/appendix/dto/ProductStructureInstanceDto.java b/src/main/java/com/ruoyi/appendix/dto/ProductStructureInstanceDto.java
deleted file mode 100644
index 8a70ed3..0000000
--- a/src/main/java/com/ruoyi/appendix/dto/ProductStructureInstanceDto.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.ruoyi.appendix.dto;
-
-import com.ruoyi.appendix.pojo.ProductStructureInstance;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * <br>
- * BOM瀛愰泦-闄勮〃Dto
- * </br>
- *
- * @author deslrey
- * @version 1.0
- * @since 2026/03/19 10:08
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-public class ProductStructureInstanceDto extends ProductStructureInstance {
-
- @ApiModelProperty("瀛愮被")
- private List<ProductStructureInstanceDto> children = new ArrayList<>();
-
- @ApiModelProperty("涓存椂ID")
- private String tempId;
-
- @ApiModelProperty("鐖惰妭鐐逛复鏃禝D")
- private String parentTempId;
-}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/appendix/mapper/ProcessRouteItemInstanceMapper.java b/src/main/java/com/ruoyi/appendix/mapper/ProcessRouteItemInstanceMapper.java
deleted file mode 100644
index 2048f3c..0000000
--- a/src/main/java/com/ruoyi/appendix/mapper/ProcessRouteItemInstanceMapper.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.ruoyi.appendix.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.ruoyi.appendix.pojo.ProcessRouteItemInstance;
-
-/**
- * <br>
- * 宸ヨ壓璺嚎瀛愰泦-闄勮〃Mapper
- * </br>
- *
- * @author deslrey
- * @version 1.0
- * @since 2026/03/18 13:02
- */
-public interface ProcessRouteItemInstanceMapper extends BaseMapper<ProcessRouteItemInstance> {
-}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/appendix/mapper/ProcessRouteItemParamInstanceMapper.java b/src/main/java/com/ruoyi/appendix/mapper/ProcessRouteItemParamInstanceMapper.java
deleted file mode 100644
index f4e88e2..0000000
--- a/src/main/java/com/ruoyi/appendix/mapper/ProcessRouteItemParamInstanceMapper.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.ruoyi.appendix.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.ruoyi.appendix.pojo.ProcessRouteItemParamInstance;
-
-/**
- * <br>
- * 宸ヨ壓璺嚎宸ュ簭鍙傛暟-闄勮〃Mapper
- * </br>
- *
- * @author deslrey
- * @version 1.0
- * @since 2026/03/18 13:10
- */
-public interface ProcessRouteItemParamInstanceMapper extends BaseMapper<ProcessRouteItemParamInstance> {
-}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/appendix/mapper/ProductStructureInstanceMapper.java b/src/main/java/com/ruoyi/appendix/mapper/ProductStructureInstanceMapper.java
deleted file mode 100644
index 859feca..0000000
--- a/src/main/java/com/ruoyi/appendix/mapper/ProductStructureInstanceMapper.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.ruoyi.appendix.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.ruoyi.appendix.pojo.ProductStructureInstance;
-
-/**
- * <br>
- * BOM瀛愰泦-闄勮〃Mapper
- * </br>
- *
- * @author deslrey
- * @version 1.0
- * @since 2026/03/18 13:20
- */
-public interface ProductStructureInstanceMapper extends BaseMapper<ProductStructureInstance> {
-}
diff --git a/src/main/java/com/ruoyi/appendix/pojo/ProcessRouteItemInstance.java b/src/main/java/com/ruoyi/appendix/pojo/ProcessRouteItemInstance.java
deleted file mode 100644
index cbe09a3..0000000
--- a/src/main/java/com/ruoyi/appendix/pojo/ProcessRouteItemInstance.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.ruoyi.appendix.pojo;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-/**
- * <br>
- * 宸ヨ壓璺嚎瀛愰泦-闄勮〃
- * </br>
- *
- * @author deslrey
- * @version 1.0
- * @since 2026/03/18 11:43
- */
-@Data
-@TableName("process_route_item_instance")
-@Api(tags = "宸ヨ壓璺嚎瀛愰泦-闄勮〃")
-public class ProcessRouteItemInstance {
-
- @TableId(type = IdType.AUTO)
- private Long id;
-
- @ApiModelProperty("鐢熶骇璁㈠崟id")
- private Long orderId;
-
- @ApiModelProperty("宸ヨ壓璺嚎id")
- private Long routeId;
-
- @ApiModelProperty("浜у搧id")
- private Long productModelId;
-
- @ApiModelProperty("宸ュ簭id")
- private Long processId;
-
- @ApiModelProperty("绉熸埛id")
- private Long tenantId;
-
- @ApiModelProperty("褰曞叆鏃堕棿")
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- private LocalDateTime createTime;
-
- @ApiModelProperty("鏇存柊鏃堕棿")
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- private LocalDateTime updateTime;
-
- @ApiModelProperty("鎷栧姩鎺掑簭")
- private Integer dragSort;
-
- @ApiModelProperty("鏄惁璐ㄦ宸ュ簭")
- private Integer isQuality;
-}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/appendix/pojo/ProcessRouteItemParamInstance.java b/src/main/java/com/ruoyi/appendix/pojo/ProcessRouteItemParamInstance.java
deleted file mode 100644
index c363898..0000000
--- a/src/main/java/com/ruoyi/appendix/pojo/ProcessRouteItemParamInstance.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package com.ruoyi.appendix.pojo;
-
-import com.baomidou.mybatisplus.annotation.*;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-/**
- * <br>
- * 宸ヨ壓璺嚎宸ュ簭鍙傛暟-闄勮〃
- * </br>
- *
- * @author deslrey
- * @version 1.0
- * @since 2026/03/18 13:09
- */
-@Data
-@TableName("process_route_item_param_instance")
-@Api(tags = "宸ヨ壓璺嚎宸ュ簭鍙傛暟-闄勮〃")
-public class ProcessRouteItemParamInstance {
-
- @TableId(type = IdType.AUTO)
- @ApiModelProperty("涓婚敭ID")
- private Long id;
-
- @ApiModelProperty("鐢熶骇璁㈠崟id")
- private Long orderId;
-
- @ApiModelProperty("鍏宠仈宸ヨ壓璺嚎鏄庣粏ID")
- private Long routeItemId;
-
- @ApiModelProperty("鍙傛暟鍞竴鏍囪瘑")
- private String paramKey;
-
- @ApiModelProperty("鍙傛暟鍚嶇О")
- private String paramName;
-
- @ApiModelProperty("鍙傛暟绫诲瀷(1鏁板瓧 2鏂囨湰 3涓嬫媺閫夋嫨 4鏃堕棿)")
- private Integer paramType;
-
- @ApiModelProperty("鍙傛暟鏍煎紡")
- private String paramFormat;
-
- @ApiModelProperty("鍊兼ā寮�(1鍗曞�� 2鍖洪棿)")
- private Integer valueMode;
-
- @ApiModelProperty("鍗曚綅")
- private String unit;
-
- @ApiModelProperty("澶囨敞")
- private String remark;
-
- @ApiModelProperty("鏍囧噯鍊�")
- private String standardValue;
-
- @ApiModelProperty("鏈�灏忓��")
- private BigDecimal minValue;
-
- @ApiModelProperty("鏈�澶у��")
- private BigDecimal maxValue;
-
- @ApiModelProperty("鏄惁蹇呭~")
- private Boolean isRequired;
-
- @ApiModelProperty("鎺掑簭")
- private Integer sort;
-
- @ApiModelProperty("绉熸埛ID")
- private Long tenantId;
-
- @ApiModelProperty("鍒涘缓鏃堕棿")
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- @TableField(fill = FieldFill.INSERT)
- private LocalDateTime createTime;
-
- @ApiModelProperty("鏇存柊鏃堕棿")
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- @TableField(fill = FieldFill.INSERT_UPDATE)
- private LocalDateTime updateTime;
-}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/appendix/pojo/ProductStructureInstance.java b/src/main/java/com/ruoyi/appendix/pojo/ProductStructureInstance.java
deleted file mode 100644
index fe28f35..0000000
--- a/src/main/java/com/ruoyi/appendix/pojo/ProductStructureInstance.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.ruoyi.appendix.pojo;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.math.BigDecimal;
-
-/**
- * <br>
- * BOM瀛愰泦-闄勮〃
- * </br>
- *
- * @author deslrey
- * @version 1.0
- * @since 2026/03/18 13:20
- */
-@Data
-@TableName("product_structure_instance")
-@Api(tags = "BOM瀛愰泦-闄勮〃")
-public class ProductStructureInstance {
-
- @TableId(type = IdType.AUTO)
- @ApiModelProperty("涓婚敭ID")
- private Long id;
-
- @ApiModelProperty("鐢熶骇璁㈠崟id")
- private Long orderId;
-
- @ApiModelProperty("鐖惰妭鐐笽D")
- private Long parentId;
-
- @ApiModelProperty("浜у搧ID")
- private Long productModelId;
-
- @ApiModelProperty("宸ュ簭ID")
- private Long processId;
-
- @ApiModelProperty("鍗曚綅浜у嚭闇�瑕佹暟閲�")
- private BigDecimal unitQuantity;
-
- @ApiModelProperty("闇�姹傛暟閲�")
- private BigDecimal demandedQuantity;
-
- @ApiModelProperty("鍗曚綅")
- private String unit;
-
- @ApiModelProperty("绉熸埛ID")
- private Long tenantId;
-
- @ApiModelProperty("BOM ID")
- private Long bomId;
-
-}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/appendix/service/ProcessRouteItemInstanceService.java b/src/main/java/com/ruoyi/appendix/service/ProcessRouteItemInstanceService.java
deleted file mode 100644
index 31d6025..0000000
--- a/src/main/java/com/ruoyi/appendix/service/ProcessRouteItemInstanceService.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.ruoyi.appendix.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.appendix.dto.ProcessRouteItemInstanceDto;
-import com.ruoyi.appendix.pojo.ProcessRouteItemInstance;
-
-import java.util.List;
-
-/**
- * <br>
- * 宸ヨ壓璺嚎瀛愰泦-闄勮〃Service
- * </br>
- *
- * @author deslrey
- * @version 1.0
- * @since 2026/03/18 13:07
- */
-public interface ProcessRouteItemInstanceService extends IService<ProcessRouteItemInstance> {
- List<ProcessRouteItemInstanceDto> getProcessItem(Long orderId);
-
- void addProcessItem(ProcessRouteItemInstanceDto dto);
-
- void updateProcessItem(ProcessRouteItemInstanceDto dto);
-
- void deleteProcessItem(Long id);
-
- void sortProcessItem(ProcessRouteItemInstanceDto dto);
-}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/appendix/service/ProcessRouteItemParamInstanceService.java b/src/main/java/com/ruoyi/appendix/service/ProcessRouteItemParamInstanceService.java
deleted file mode 100644
index 8233b33..0000000
--- a/src/main/java/com/ruoyi/appendix/service/ProcessRouteItemParamInstanceService.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.ruoyi.appendix.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.appendix.dto.ProcessRouteItemParamInstanceDto;
-import com.ruoyi.appendix.pojo.ProcessRouteItemParamInstance;
-
-import java.util.List;
-
-/**
- * <br>
- * 宸ヨ壓璺嚎宸ュ簭鍙傛暟-闄勮〃Service
- * </br>
- *
- * @author deslrey
- * @version 1.0
- * @since 2026/03/18 13:11
- */
-public interface ProcessRouteItemParamInstanceService extends IService<ProcessRouteItemParamInstance> {
-
- List<ProcessRouteItemParamInstanceDto> routeItemParamList(Long orderId, Long routeItemId);
-
- void addRouteItemParam(ProcessRouteItemParamInstanceDto dto);
-
- void updateRouteItemParam(ProcessRouteItemParamInstanceDto dto);
-
- void deleteRouteItemParam(Long id);
-
-}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/appendix/service/ProductStructureInstanceService.java b/src/main/java/com/ruoyi/appendix/service/ProductStructureInstanceService.java
deleted file mode 100644
index 631428c..0000000
--- a/src/main/java/com/ruoyi/appendix/service/ProductStructureInstanceService.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.ruoyi.appendix.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.appendix.dto.ProductStructureInstanceDto;
-import com.ruoyi.appendix.pojo.ProductStructureInstance;
-
-import java.util.List;
-
-/**
- * <br>
- * BOM瀛愰泦-闄勮〃Service鎺ュ彛
- * </br>
- *
- * @author deslrey
- * @version 1.0
- * @since 2026/03/18 13:21
- */
-public interface ProductStructureInstanceService extends IService<ProductStructureInstance> {
-
- List<ProductStructureInstanceDto> listByOrderId(Long orderId);
-
- void addOrUpdateBomStructs(ProductStructureInstanceDto instanceDto);
-}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/appendix/service/impl/ProcessRouteItemParamInstanceServiceImpl.java b/src/main/java/com/ruoyi/appendix/service/impl/ProcessRouteItemParamInstanceServiceImpl.java
deleted file mode 100644
index 73d3d77..0000000
--- a/src/main/java/com/ruoyi/appendix/service/impl/ProcessRouteItemParamInstanceServiceImpl.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package com.ruoyi.appendix.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.appendix.dto.ProcessRouteItemParamInstanceDto;
-import com.ruoyi.appendix.mapper.ProcessRouteItemParamInstanceMapper;
-import com.ruoyi.appendix.pojo.ProcessRouteItemParamInstance;
-import com.ruoyi.appendix.service.ProcessRouteItemParamInstanceService;
-import com.ruoyi.common.exception.ServiceException;
-import com.ruoyi.common.utils.SecurityUtils;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.BeanUtils;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.time.LocalDateTime;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * <br>
- * 宸ヨ壓璺嚎宸ュ簭鍙傛暟-闄勮〃Service瀹炵幇绫�
- * </br>
- *
- * @author deslrey
- * @version 1.0
- * @since 2026/03/18 13:12
- */
-@Slf4j
-@Service
-public class ProcessRouteItemParamInstanceServiceImpl extends ServiceImpl<ProcessRouteItemParamInstanceMapper, ProcessRouteItemParamInstance> implements ProcessRouteItemParamInstanceService {
-
- @Override
- public List<ProcessRouteItemParamInstanceDto> routeItemParamList(Long orderId, Long routeItemId) {
- List<ProcessRouteItemParamInstance> list = list(new LambdaQueryWrapper<ProcessRouteItemParamInstance>()
- .eq(ProcessRouteItemParamInstance::getOrderId, orderId)
- .eq(ProcessRouteItemParamInstance::getRouteItemId, routeItemId)
- .orderByAsc(ProcessRouteItemParamInstance::getSort));
-
- return list.stream().map(item -> {
- ProcessRouteItemParamInstanceDto dto = new ProcessRouteItemParamInstanceDto();
- BeanUtils.copyProperties(item, dto);
- return dto;
- }).collect(Collectors.toList());
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void addRouteItemParam(ProcessRouteItemParamInstanceDto dto) {
- if (dto == null) {
- throw new ServiceException("鏂板鏁版嵁涓嶈兘涓虹┖");
- }
- if (dto.getOrderId() == null) {
- throw new ServiceException("鐢熶骇璁㈠崟ID涓嶈兘涓虹┖");
- }
- if (dto.getRouteItemId() == null) {
- throw new ServiceException("宸ヨ壓璺嚎鏄庣粏ID涓嶈兘涓虹┖");
- }
- Long tenantId = SecurityUtils.getLoginUser().getTenantId();
-
- ProcessRouteItemParamInstance entity = new ProcessRouteItemParamInstance();
- BeanUtils.copyProperties(dto, entity);
- entity.setId(null);
- entity.setOrderId(dto.getOrderId());
- entity.setRouteItemId(dto.getRouteItemId());
- entity.setIsRequired(dto.getIsRequired());
- // 鍙栧綋鍓嶈鍗�+璺嚎鏄庣粏涓嬫渶澶� sort + 1
- ProcessRouteItemParamInstance maxSortItem = getOne(new LambdaQueryWrapper<ProcessRouteItemParamInstance>()
- .select(ProcessRouteItemParamInstance::getSort)
- .eq(ProcessRouteItemParamInstance::getOrderId, dto.getOrderId())
- .eq(ProcessRouteItemParamInstance::getRouteItemId, dto.getRouteItemId())
- .orderByDesc(ProcessRouteItemParamInstance::getSort)
- .last("limit 1"));
- entity.setSort(maxSortItem != null && maxSortItem.getSort() != null ? maxSortItem.getSort() + 1 : 1);
- entity.setTenantId(tenantId);
- entity.setCreateTime(LocalDateTime.now());
- save(entity);
- }
-
- @Override
- public void updateRouteItemParam(ProcessRouteItemParamInstanceDto dto) {
- if (dto == null || dto.getId() == null) {
- throw new ServiceException("鏇存柊鏁版嵁鎴朓D涓嶈兘涓虹┖");
- }
- if (getById(dto.getId()) == null) {
- throw new ServiceException("鏁版嵁涓嶅瓨鍦�");
- }
- ProcessRouteItemParamInstance entity = new ProcessRouteItemParamInstance();
- BeanUtils.copyProperties(dto, entity);
- entity.setUpdateTime(LocalDateTime.now());
- updateById(entity);
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void deleteRouteItemParam(Long id) {
- if (id == null) {
- throw new ServiceException("ID涓嶈兘涓虹┖");
- }
- if (getById(id) == null) {
- throw new ServiceException("鏁版嵁涓嶅瓨鍦�");
- }
- removeById(id);
- }
-}
diff --git a/src/main/java/com/ruoyi/appendix/service/impl/ProductStructureInstanceServiceImpl.java b/src/main/java/com/ruoyi/appendix/service/impl/ProductStructureInstanceServiceImpl.java
deleted file mode 100644
index 5b2f9c2..0000000
--- a/src/main/java/com/ruoyi/appendix/service/impl/ProductStructureInstanceServiceImpl.java
+++ /dev/null
@@ -1,153 +0,0 @@
-package com.ruoyi.appendix.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.appendix.dto.ProductStructureInstanceDto;
-import com.ruoyi.appendix.mapper.ProductStructureInstanceMapper;
-import com.ruoyi.appendix.pojo.ProductStructureInstance;
-import com.ruoyi.appendix.service.ProductStructureInstanceService;
-import com.ruoyi.common.utils.bean.BeanUtils;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-/**
- * <br>
- * BOM瀛愰泦-闄勮〃Service瀹炵幇绫�
- * </br>
- *
- * @author deslrey
- * @version 1.0
- * @since 2026/03/18 13:21
- */
-@Slf4j
-@Service
-public class ProductStructureInstanceServiceImpl extends ServiceImpl<ProductStructureInstanceMapper, ProductStructureInstance> implements ProductStructureInstanceService {
-
- @Override
- public List<ProductStructureInstanceDto> listByOrderId(Long orderId) {
- List<ProductStructureInstance> list = list(new LambdaQueryWrapper<ProductStructureInstance>().eq(ProductStructureInstance::getOrderId, orderId));
-
- List<ProductStructureInstanceDto> dtoList = list.stream().map(item -> {
- ProductStructureInstanceDto dto = new ProductStructureInstanceDto();
- BeanUtils.copyProperties(item, dto);
- return dto;
- }).collect(java.util.stream.Collectors.toList());
-
- Map<Long, ProductStructureInstanceDto> map = new HashMap<>();
- for (ProductStructureInstanceDto node : dtoList) {
- map.put(node.getId(), node);
- }
-
- List<ProductStructureInstanceDto> tree = new ArrayList<>();
- for (ProductStructureInstanceDto node : dtoList) {
- Long parentId = node.getParentId();
- if (parentId == null || !map.containsKey(parentId)) {
- tree.add(node);
- } else {
- map.get(parentId).getChildren().add(node);
- }
- }
- return tree;
- }
-
- @Override
- public void addOrUpdateBomStructs(ProductStructureInstanceDto instanceDto) {
- Long orderId = instanceDto.getOrderId();
-
- // 鎵佸钩鍖栧墠绔紶鍏ョ殑鏍�
- List<ProductStructureInstanceDto> flatList = new ArrayList<>();
- flattenTree(instanceDto.getChildren(), flatList);
-
- // 鏌ヨ鏁版嵁搴撳凡鏈夋暟鎹�
- List<ProductStructureInstance> dbList = list(new LambdaQueryWrapper<ProductStructureInstance>()
- .eq(ProductStructureInstance::getOrderId, orderId));
-
- // 鍓嶇宸叉湁id闆嗗悎
- Set<Long> frontendIds = flatList.stream()
- .map(ProductStructureInstanceDto::getId)
- .filter(Objects::nonNull)
- .collect(Collectors.toSet());
-
- // 闇�瑕佸垹闄ょ殑鑺傜偣
- Set<Long> deleteIds = dbList.stream()
- .map(ProductStructureInstance::getId)
- .filter(id -> !frontendIds.contains(id))
- .collect(Collectors.toSet());
- if (!deleteIds.isEmpty()) {
- removeByIds(deleteIds);
- }
-
- List<ProductStructureInstance> insertList = new ArrayList<>();
- List<ProductStructureInstance> updateList = new ArrayList<>();
- Map<String, ProductStructureInstance> tempEntityMap = new HashMap<>();
-
- for (ProductStructureInstanceDto dto : flatList) {
- ProductStructureInstance entity = new ProductStructureInstance();
- BeanUtils.copyProperties(dto, entity);
- entity.setOrderId(orderId);
- if (dto.getId() == null) {
- entity.setId(null);
- entity.setParentId(null);
- insertList.add(entity);
- if (dto.getTempId() != null) {
- tempEntityMap.put(dto.getTempId(), entity);
- }
- } else {
- updateList.add(entity);
- }
- }
-
- if (!insertList.isEmpty()) {
- saveBatch(insertList);
- }
-
- // 鍥炲啓鏂板鑺傜偣鐨� parentId
- List<ProductStructureInstance> parentFixList = new ArrayList<>();
- for (ProductStructureInstanceDto dto : flatList) {
- if (dto.getId() != null) continue;
- ProductStructureInstance child = tempEntityMap.get(dto.getTempId());
- if (child == null) continue;
- String parentTempId = dto.getParentTempId();
- if (parentTempId != null && !parentTempId.isEmpty()) {
- Long realParentId;
- if (tempEntityMap.containsKey(parentTempId)) {
- realParentId = tempEntityMap.get(parentTempId).getId();
- } else {
- try {
- realParentId = Long.valueOf(parentTempId);
- } catch (NumberFormatException e) {
- realParentId = 0L;
- }
- }
- child.setParentId(realParentId);
- } else {
- child.setParentId(0L);
- }
- parentFixList.add(child);
- }
-
- if (!parentFixList.isEmpty()) {
- updateBatchById(parentFixList);
- }
- if (!updateList.isEmpty()) {
- updateBatchById(updateList);
- }
- }
-
- private void flattenTree(List<ProductStructureInstanceDto> source, List<ProductStructureInstanceDto> result) {
- if (source == null) return;
- for (ProductStructureInstanceDto node : source) {
- result.add(node);
- flattenTree(node.getChildren(), result);
- }
- }
-}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/production/controller/ProductionOrderAppendixController.java b/src/main/java/com/ruoyi/production/controller/ProductionOrderAppendixController.java
new file mode 100644
index 0000000..8a3d93b
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/controller/ProductionOrderAppendixController.java
@@ -0,0 +1,40 @@
+package com.ruoyi.production.controller;
+
+import com.ruoyi.appendix.service.AppendixService;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.production.pojo.ProductOrder;
+import com.ruoyi.production.service.IProductionOrderAppendixService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * <br>
+ * BOM-宸ヨ壓璺嚎闄勮〃鎺у埗灞�
+ * </br>
+ *
+ * @author deslrey
+ * @version 1.0
+ * @since 2026/03/20
+ */
+@RestController
+@RequestMapping("/appendix")
+@Api("BOM-宸ヨ壓璺嚎闄勮〃鎺у埗灞�")
+public class ProductionOrderAppendixController {
+
+ @Resource
+ private IProductionOrderAppendixService iProductionOrderAppendixService;
+
+ @PostMapping("/bindingRoute")
+ @ApiOperation("鐢熶骇璁㈠崟缁戝畾宸ヨ壓璺嚎")
+ public AjaxResult bindingRoute(@RequestBody ProductOrder productOrder) {
+ iProductionOrderAppendixService.populateData(productOrder);
+ return AjaxResult.success();
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/production/controller/ProductionOrderRouteItemController.java b/src/main/java/com/ruoyi/production/controller/ProductionOrderRouteItemController.java
new file mode 100644
index 0000000..6e6fe6a
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/controller/ProductionOrderRouteItemController.java
@@ -0,0 +1,64 @@
+package com.ruoyi.production.controller;
+
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.production.dto.ProductionOrderRouteItemDto;
+import com.ruoyi.production.service.IProductionOrderRouteItemService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ * 鐢熶骇璁㈠崟缁戝畾鐨勫伐鑹鸿矾绾�--宸ュ簭琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author deslrey
+ * @since 2026-03-20
+ */
+@RestController
+@RequestMapping("/productionOrderRouteItem")
+@Api(tags = "宸ヨ壓璺嚎宸ュ簭鎺ュ彛")
+public class ProductionOrderRouteItemController {
+
+ @Resource
+ private IProductionOrderRouteItemService productionOrderRouteItemService;
+
+ @GetMapping("/list/{orderId}")
+ @ApiOperation("鑾峰彇宸ュ簭鍒楄〃")
+ public AjaxResult getProcessItem(@PathVariable Long orderId) {
+ List<ProductionOrderRouteItemDto> list = productionOrderRouteItemService.getProcessItem(orderId);
+ return AjaxResult.success(list);
+ }
+
+ @PostMapping("/add")
+ @ApiOperation("鏂板宸ュ簭")
+ public AjaxResult addProcessItem(@RequestBody ProductionOrderRouteItemDto dto) {
+ productionOrderRouteItemService.addProcessItem(dto);
+ return AjaxResult.success();
+ }
+
+ @PutMapping("/update")
+ @ApiOperation("淇敼宸ュ簭")
+ public AjaxResult updateProcessItem(@RequestBody ProductionOrderRouteItemDto dto) {
+ productionOrderRouteItemService.updateProcessItem(dto);
+ return AjaxResult.success();
+ }
+
+ @DeleteMapping("/delete/{id}")
+ @ApiOperation("鍒犻櫎宸ュ簭")
+ public AjaxResult deleteProcessItem(@PathVariable Long id) {
+ productionOrderRouteItemService.deleteProcessItem(id);
+ return AjaxResult.success();
+ }
+
+ @PostMapping("/sort")
+ @ApiOperation("宸ュ簭鎺掑簭")
+ public AjaxResult sortProcessItem(@RequestBody ProductionOrderRouteItemDto dto) {
+ productionOrderRouteItemService.sortProcessItem(dto);
+ return AjaxResult.success();
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/production/controller/ProductionOrderRouteItemParamController.java b/src/main/java/com/ruoyi/production/controller/ProductionOrderRouteItemParamController.java
new file mode 100644
index 0000000..a240b45
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/controller/ProductionOrderRouteItemParamController.java
@@ -0,0 +1,57 @@
+package com.ruoyi.production.controller;
+
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.production.dto.ProductionOrderRouteItemParamDto;
+import com.ruoyi.production.service.IProductionOrderRouteItemParamService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ * 鐢熶骇璁㈠崟缁戝畾鐨勫伐鑹鸿矾绾垮伐搴�--鍙傛暟琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author deslrey
+ * @since 2026-03-20
+ */
+@Api(tags = "宸ヨ壓璺嚎宸ュ簭鍙傛暟鎺ュ彛")
+@RestController
+@RequestMapping("/productionOrderRouteItemParam")
+public class ProductionOrderRouteItemParamController {
+
+ @Resource
+ private IProductionOrderRouteItemParamService productionOrderRouteItemParamService;
+
+ @GetMapping("/list")
+ @ApiOperation("鐢熶骇璁㈠崟-鑾峰彇宸ュ簭缁戝畾鐨勫弬鏁板垪琛�")
+ public AjaxResult routeItemParamList(@RequestParam("orderId") Long orderId, @RequestParam("routeItemId") Long routeItemId) {
+ List<ProductionOrderRouteItemParamDto> list = productionOrderRouteItemParamService.routeItemParamList(orderId, routeItemId);
+ return AjaxResult.success(list);
+ }
+
+ @PostMapping("/add")
+ @ApiOperation("鐢熶骇璁㈠崟-宸ュ簭鏂板鍙傛暟")
+ public AjaxResult addRouteItemParam(@RequestBody ProductionOrderRouteItemParamDto dto) {
+ productionOrderRouteItemParamService.addRouteItemParam(dto);
+ return AjaxResult.success();
+ }
+
+ @PutMapping("/update")
+ @ApiOperation("鐢熶骇璁㈠崟-宸ュ簭鏇存柊鍙傛暟")
+ public AjaxResult updateRouteItemParam(@RequestBody ProductionOrderRouteItemParamDto dto) {
+ productionOrderRouteItemParamService.updateRouteItemParam(dto);
+ return AjaxResult.success();
+ }
+
+ @DeleteMapping("/delete/{id}")
+ @ApiOperation("鐢熶骇璁㈠崟-宸ュ簭鍒犻櫎鍙傛暟")
+ public AjaxResult deleteRouteItemParam(@PathVariable Long id) {
+ productionOrderRouteItemParamService.deleteRouteItemParam(id);
+ return AjaxResult.success();
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/production/controller/ProductionOrderStructureController.java b/src/main/java/com/ruoyi/production/controller/ProductionOrderStructureController.java
new file mode 100644
index 0000000..912e99f
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/controller/ProductionOrderStructureController.java
@@ -0,0 +1,43 @@
+package com.ruoyi.production.controller;
+
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.production.dto.ProductionOrderStructureDto;
+import com.ruoyi.production.service.IProductionOrderStructureService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ * 鐢熶骇璁㈠崟缁戝畾鐨凚OM瀛愯〃 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author deslrey
+ * @since 2026-03-20
+ */
+@Api(tags = "BOM缁撴瀯鎺ュ彛")
+@RestController
+@RequestMapping("/productionOrderStructure")
+public class ProductionOrderStructureController {
+
+ @Resource
+ private IProductionOrderStructureService productionOrderStructureService;
+
+ @GetMapping("/getBomStructs/{orderId}")
+ @ApiOperation("鏍规嵁鐢熶骇璁㈠崟ID鑾峰彇缁戝畾鐨凚OM瀛愰泦缁撴瀯鏍�")
+ public AjaxResult getBomStructs(@PathVariable Long orderId) {
+ List<ProductionOrderStructureDto> list = productionOrderStructureService.listByOrderId(orderId);
+ return AjaxResult.success(list);
+ }
+
+ @PutMapping("/addOrUpdateBomStructs")
+ @ApiOperation("鏂板/鏇存柊BOM瀛愰泦缁撴瀯")
+ public AjaxResult addOrUpdateBomStructs(@RequestBody ProductionOrderStructureDto instanceDto) {
+ productionOrderStructureService.addOrUpdateBomStructs(instanceDto);
+ return AjaxResult.success();
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/production/dto/ProductionOrderRouteItemDto.java b/src/main/java/com/ruoyi/production/dto/ProductionOrderRouteItemDto.java
new file mode 100644
index 0000000..4d71901
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/dto/ProductionOrderRouteItemDto.java
@@ -0,0 +1,23 @@
+package com.ruoyi.production.dto;
+
+import com.ruoyi.production.pojo.ProductionOrderRouteItem;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <br>
+ * 鐢熶骇璁㈠崟缁戝畾鐨勫伐鑹鸿矾绾�--宸ュ簭琛―to
+ * </br>
+ *
+ * @author deslrey
+ * @since 2026/03/20
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ProductionOrderRouteItemDto extends ProductionOrderRouteItem {
+
+ @ApiModelProperty("宸ュ簭鍚嶇О")
+ private String processName;
+
+}
diff --git a/src/main/java/com/ruoyi/production/dto/ProductionOrderRouteItemParamDto.java b/src/main/java/com/ruoyi/production/dto/ProductionOrderRouteItemParamDto.java
new file mode 100644
index 0000000..e75e0eb
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/dto/ProductionOrderRouteItemParamDto.java
@@ -0,0 +1,27 @@
+package com.ruoyi.production.dto;
+
+import com.ruoyi.production.pojo.ProductionOrderRouteItemParam;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <br>
+ * 鐢熶骇璁㈠崟缁戝畾鐨勫伐鑹鸿矾绾垮伐搴�--鍙傛暟琛―to
+ * </br>
+ *
+ * @author deslrey
+ * @version 1.0
+ * @since 2026/03/20 10:11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ProductionOrderRouteItemParamDto extends ProductionOrderRouteItemParam {
+
+ @ApiModelProperty("宸ュ簭ID")
+ private Long processId;
+
+ @ApiModelProperty("鍩烘湰鍙傛暟ID")
+ private Long paramId;
+
+}
diff --git a/src/main/java/com/ruoyi/production/dto/ProductionOrderStructureDto.java b/src/main/java/com/ruoyi/production/dto/ProductionOrderStructureDto.java
new file mode 100644
index 0000000..a0757ac
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/dto/ProductionOrderStructureDto.java
@@ -0,0 +1,34 @@
+package com.ruoyi.production.dto;
+
+import com.ruoyi.production.pojo.ProductionOrderStructure;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <br>
+ * 鐢熶骇璁㈠崟缁戝畾鐨凚OM瀛愯〃Dto
+ * </br>
+ *
+ * @author deslrey
+ * @version 1.0
+ * @since 2026/03/20 10:12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ProductionOrderStructureDto extends ProductionOrderStructure {
+
+
+ @ApiModelProperty("瀛愮被")
+ private List<ProductionOrderStructureDto> children = new ArrayList<>();
+
+ @ApiModelProperty("涓存椂ID")
+ private String tempId;
+
+ @ApiModelProperty("鐖惰妭鐐逛复鏃禝D")
+ private String parentTempId;
+
+}
diff --git a/src/main/java/com/ruoyi/production/mapper/ProductionOrderRouteItemMapper.java b/src/main/java/com/ruoyi/production/mapper/ProductionOrderRouteItemMapper.java
new file mode 100644
index 0000000..0682512
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/mapper/ProductionOrderRouteItemMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.production.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.production.pojo.ProductionOrderRouteItem;
+
+/**
+ * <p>
+ * 鐢熶骇璁㈠崟缁戝畾鐨勫伐鑹鸿矾绾�--宸ュ簭琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author deslrey
+ * @since 2026-03-20
+ */
+public interface ProductionOrderRouteItemMapper extends BaseMapper<ProductionOrderRouteItem> {
+
+}
diff --git a/src/main/java/com/ruoyi/production/mapper/ProductionOrderRouteItemParamMapper.java b/src/main/java/com/ruoyi/production/mapper/ProductionOrderRouteItemParamMapper.java
new file mode 100644
index 0000000..7c6a1b1
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/mapper/ProductionOrderRouteItemParamMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.production.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.production.pojo.ProductionOrderRouteItemParam;
+
+/**
+ * <p>
+ * 鐢熶骇璁㈠崟缁戝畾鐨勫伐鑹鸿矾绾垮伐搴�--鍙傛暟琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author deslrey
+ * @since 2026-03-20
+ */
+public interface ProductionOrderRouteItemParamMapper extends BaseMapper<ProductionOrderRouteItemParam> {
+
+}
diff --git a/src/main/java/com/ruoyi/production/mapper/ProductionOrderStructureMapper.java b/src/main/java/com/ruoyi/production/mapper/ProductionOrderStructureMapper.java
new file mode 100644
index 0000000..191fbdd
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/mapper/ProductionOrderStructureMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.production.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.production.pojo.ProductionOrderStructure;
+
+/**
+ * <p>
+ * 鐢熶骇璁㈠崟缁戝畾鐨凚OM瀛愯〃 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author deslrey
+ * @since 2026-03-20
+ */
+public interface ProductionOrderStructureMapper extends BaseMapper<ProductionOrderStructure> {
+
+}
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductionOrderRouteItem.java b/src/main/java/com/ruoyi/production/pojo/ProductionOrderRouteItem.java
new file mode 100644
index 0000000..e0a02d2
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/pojo/ProductionOrderRouteItem.java
@@ -0,0 +1,69 @@
+package com.ruoyi.production.pojo;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 鐢熶骇璁㈠崟缁戝畾鐨勫伐鑹鸿矾绾�--宸ュ簭琛�
+ * </p>
+ *
+ * @author deslrey
+ * @since 2026-03-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("production_order_route_item")
+@ApiModel(value="ProductionOrderRouteItem瀵硅薄", description="鐢熶骇璁㈠崟缁戝畾鐨勫伐鑹鸿矾绾�--宸ュ簭琛�")
+public class ProductionOrderRouteItem implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty(value = "鐢熶骇璁㈠崟id")
+ private Long orderId;
+
+ @ApiModelProperty(value = "宸ヨ壓璺嚎id")
+ private Long routeId;
+
+ @ApiModelProperty(value = "浜у搧id")
+ private Long productModelId;
+
+ @ApiModelProperty(value = "宸ュ簭id")
+ private Long processId;
+
+ @ApiModelProperty(value = "绉熸埛id")
+ private Long tenantId;
+
+ @ApiModelProperty(value = "褰曞叆鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty(value = "鏇存柊鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty(value = "鎷栧姩鎺掑簭")
+ private Integer dragSort;
+
+ @ApiModelProperty(value = "鏄惁璐ㄦ宸ュ簭(0鍚� 1鏄�)")
+ private Integer isQuality;
+
+
+}
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductionOrderRouteItemParam.java b/src/main/java/com/ruoyi/production/pojo/ProductionOrderRouteItemParam.java
new file mode 100644
index 0000000..71885d1
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/pojo/ProductionOrderRouteItemParam.java
@@ -0,0 +1,97 @@
+package com.ruoyi.production.pojo;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * <p>
+ * 鐢熶骇璁㈠崟缁戝畾鐨勫伐鑹鸿矾绾垮伐搴�--鍙傛暟琛�
+ * </p>
+ *
+ * @author deslrey
+ * @since 2026-03-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("production_order_route_item_param")
+@ApiModel(value="ProductionOrderRouteItemParam瀵硅薄", description="鐢熶骇璁㈠崟缁戝畾鐨勫伐鑹鸿矾绾垮伐搴�--鍙傛暟琛�")
+public class ProductionOrderRouteItemParam implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value = "涓婚敭ID")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty(value = "鐢熶骇璁㈠崟ID")
+ private Long orderId;
+
+ @ApiModelProperty(value = "鍏宠仈宸ヨ壓璺嚎鏄庣粏ID (production_order_route_item.id)")
+ private Long routeItemId;
+
+ @ApiModelProperty(value = "鏉ユ簮宸ュ簭鍙傛暟ID")
+ private Long processParamId;
+
+ @ApiModelProperty(value = "鍙傛暟鍞竴鏍囪瘑")
+ private String paramKey;
+
+ @ApiModelProperty(value = "鍙傛暟鍚嶇О")
+ private String paramName;
+
+ @ApiModelProperty(value = "鍙傛暟绫诲瀷(1鏁板瓧 2鏂囨湰 3涓嬫媺閫夋嫨 4鏃堕棿)")
+ private Integer paramType;
+
+ @ApiModelProperty(value = "鍙傛暟鏍煎紡")
+ private String paramFormat;
+
+ @ApiModelProperty(value = "鍊兼ā寮�(1鍗曞�� 2鍖洪棿)")
+ private Integer valueMode;
+
+ @ApiModelProperty(value = "鍗曚綅")
+ private String unit;
+
+ @ApiModelProperty(value = "澶囨敞")
+ private String remark;
+
+ @ApiModelProperty(value = "鏍囧噯鍊�")
+ private String standardValue;
+
+ @ApiModelProperty(value = "姝よ矾绾胯妭鐐硅瀹氱殑鏍囧噯鏈�灏忓��")
+ private BigDecimal minValue;
+
+ @ApiModelProperty(value = "姝よ矾绾胯妭鐐硅瀹氱殑鏍囧噯鏈�澶у��")
+ private BigDecimal maxValue;
+
+ @ApiModelProperty(value = "鏄惁蹇呭~")
+ private Boolean isRequired;
+
+ @ApiModelProperty(value = "鎺掑簭")
+ private Integer sort;
+
+ @ApiModelProperty(value = "绉熸埛ID")
+ private Long tenantId;
+
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty(value = "鏇存柊鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+
+}
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductionOrderStructure.java b/src/main/java/com/ruoyi/production/pojo/ProductionOrderStructure.java
new file mode 100644
index 0000000..8b7ad26
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/pojo/ProductionOrderStructure.java
@@ -0,0 +1,62 @@
+package com.ruoyi.production.pojo;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 鐢熶骇璁㈠崟缁戝畾鐨凚OM瀛愯〃
+ * </p>
+ *
+ * @author deslrey
+ * @since 2026-03-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("production_order_structure")
+@ApiModel(value="ProductionOrderStructure瀵硅薄", description="鐢熶骇璁㈠崟缁戝畾鐨凚OM瀛愯〃")
+public class ProductionOrderStructure implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty(value = "鐢熶骇璁㈠崟id")
+ private Long orderId;
+
+ @ApiModelProperty(value = "鐖惰妭鐐笽D")
+ private Long parentId;
+
+ @ApiModelProperty(value = "浜у搧id")
+ private Long productModelId;
+
+ @ApiModelProperty(value = "宸ュ簭id")
+ private Long processId;
+
+ @ApiModelProperty(value = "鍗曚綅浜у嚭闇�瑕佹暟閲�")
+ private BigDecimal unitQuantity;
+
+ @ApiModelProperty(value = "闇�姹傛暟閲�")
+ private BigDecimal demandedQuantity;
+
+ @ApiModelProperty(value = "鍗曚綅")
+ private String unit;
+
+ @ApiModelProperty(value = "绉熸埛id")
+ private Long tenantId;
+
+ @ApiModelProperty(value = "bom鐨刬d")
+ private Long bomId;
+
+
+}
diff --git a/src/main/java/com/ruoyi/appendix/service/AppendixService.java b/src/main/java/com/ruoyi/production/service/IProductionOrderAppendixService.java
similarity index 90%
rename from src/main/java/com/ruoyi/appendix/service/AppendixService.java
rename to src/main/java/com/ruoyi/production/service/IProductionOrderAppendixService.java
index b706266..acdca2c 100644
--- a/src/main/java/com/ruoyi/appendix/service/AppendixService.java
+++ b/src/main/java/com/ruoyi/production/service/IProductionOrderAppendixService.java
@@ -1,4 +1,4 @@
-package com.ruoyi.appendix.service;
+package com.ruoyi.production.service;
import com.ruoyi.production.pojo.ProductOrder;
import com.ruoyi.productionPlan.dto.ProductionPlanDto;
@@ -10,9 +10,9 @@
*
* @author deslrey
* @version 1.0
- * @since 2026/03/18 14:45
+ * @since 2026/03/20
*/
-public interface AppendixService {
+public interface IProductionOrderAppendixService {
/**
* 灏嗗搴旂殑宸ヨ壓璺嚎瀛愰泦涓庣粦瀹氱殑BOM瀛愰泦濉厖鍒伴檮琛ㄤ腑
diff --git a/src/main/java/com/ruoyi/production/service/IProductionOrderRouteItemParamService.java b/src/main/java/com/ruoyi/production/service/IProductionOrderRouteItemParamService.java
new file mode 100644
index 0000000..840f23b
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/service/IProductionOrderRouteItemParamService.java
@@ -0,0 +1,26 @@
+package com.ruoyi.production.service;
+
+import com.ruoyi.production.dto.ProductionOrderRouteItemParamDto;
+import com.ruoyi.production.pojo.ProductionOrderRouteItemParam;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 鐢熶骇璁㈠崟缁戝畾鐨勫伐鑹鸿矾绾垮伐搴�--鍙傛暟琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author deslrey
+ * @since 2026-03-20
+ */
+public interface IProductionOrderRouteItemParamService extends IService<ProductionOrderRouteItemParam> {
+
+ List<ProductionOrderRouteItemParamDto> routeItemParamList(Long orderId, Long routeItemId);
+
+ void addRouteItemParam(ProductionOrderRouteItemParamDto dto);
+
+ void updateRouteItemParam(ProductionOrderRouteItemParamDto dto);
+
+ void deleteRouteItemParam(Long id);
+}
diff --git a/src/main/java/com/ruoyi/production/service/IProductionOrderRouteItemService.java b/src/main/java/com/ruoyi/production/service/IProductionOrderRouteItemService.java
new file mode 100644
index 0000000..efe43f8
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/service/IProductionOrderRouteItemService.java
@@ -0,0 +1,28 @@
+package com.ruoyi.production.service;
+
+import com.ruoyi.production.dto.ProductionOrderRouteItemDto;
+import com.ruoyi.production.pojo.ProductionOrderRouteItem;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 鐢熶骇璁㈠崟缁戝畾鐨勫伐鑹鸿矾绾�--宸ュ簭琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author deslrey
+ * @since 2026-03-20
+ */
+public interface IProductionOrderRouteItemService extends IService<ProductionOrderRouteItem> {
+
+ List<ProductionOrderRouteItemDto> getProcessItem(Long orderId);
+
+ void addProcessItem(ProductionOrderRouteItemDto dto);
+
+ void updateProcessItem(ProductionOrderRouteItemDto dto);
+
+ void deleteProcessItem(Long id);
+
+ void sortProcessItem(ProductionOrderRouteItemDto dto);
+}
diff --git a/src/main/java/com/ruoyi/production/service/IProductionOrderStructureService.java b/src/main/java/com/ruoyi/production/service/IProductionOrderStructureService.java
new file mode 100644
index 0000000..9b74d02
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/service/IProductionOrderStructureService.java
@@ -0,0 +1,22 @@
+package com.ruoyi.production.service;
+
+import com.ruoyi.production.dto.ProductionOrderStructureDto;
+import com.ruoyi.production.pojo.ProductionOrderStructure;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 鐢熶骇璁㈠崟缁戝畾鐨凚OM瀛愯〃 鏈嶅姟绫�
+ * </p>
+ *
+ * @author deslrey
+ * @since 2026-03-20
+ */
+public interface IProductionOrderStructureService extends IService<ProductionOrderStructure> {
+
+ List<ProductionOrderStructureDto> listByOrderId(Long orderId);
+
+ void addOrUpdateBomStructs(ProductionOrderStructureDto instanceDto);
+}
diff --git a/src/main/java/com/ruoyi/appendix/service/impl/AppendixServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionOrderAppendixServiceImpl.java
similarity index 75%
rename from src/main/java/com/ruoyi/appendix/service/impl/AppendixServiceImpl.java
rename to src/main/java/com/ruoyi/production/service/impl/ProductionOrderAppendixServiceImpl.java
index 890785d..bc6d03e 100644
--- a/src/main/java/com/ruoyi/appendix/service/impl/AppendixServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionOrderAppendixServiceImpl.java
@@ -1,10 +1,6 @@
-package com.ruoyi.appendix.service.impl;
+package com.ruoyi.production.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.ruoyi.appendix.pojo.ProcessRouteItemInstance;
-import com.ruoyi.appendix.pojo.ProcessRouteItemParamInstance;
-import com.ruoyi.appendix.pojo.ProductStructureInstance;
-import com.ruoyi.appendix.service.*;
import com.ruoyi.basic.service.BaseParamService;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
@@ -23,25 +19,25 @@
/**
* <br>
- * BOM-宸ヨ壓璺嚎闄勮〃Service鎺ュ彛瀹炵幇绫�
+ *
* </br>
*
* @author deslrey
* @version 1.0
- * @since 2026/03/18 14:45
+ * @since 2026/03/20
*/
@Slf4j
@Service
-public class AppendixServiceImpl implements AppendixService {
+public class ProductionOrderAppendixServiceImpl implements IProductionOrderAppendixService {
@Resource
- private ProcessRouteItemInstanceService processRouteItemInstanceService;
+ private IProductionOrderRouteItemService productionOrderRouteItemService;
@Resource
- private ProcessRouteItemParamInstanceService processRouteItemParamInstanceService;
+ private IProductionOrderRouteItemParamService productionOrderRouteItemParamService;
@Resource
- private ProductStructureInstanceService productStructureInstanceService;
+ private IProductionOrderStructureService productionOrderStructureService;
@Resource
private BaseParamService baseParamService;
@@ -114,20 +110,20 @@
@Override
public void deleteData(Long orderId, Long processRouteId) {
// 鍒犻櫎宸ヨ壓璺嚎宸ュ簭鍙傛暟闄勮〃
- processRouteItemParamInstanceService.remove(new LambdaQueryWrapper<ProcessRouteItemParamInstance>()
- .eq(ProcessRouteItemParamInstance::getOrderId, orderId));
+ productionOrderRouteItemParamService.remove(new LambdaQueryWrapper<ProductionOrderRouteItemParam>()
+ .eq(ProductionOrderRouteItemParam::getOrderId, orderId));
// 鍒犻櫎宸ヨ壓璺嚎瀛愰泦闄勮〃
- processRouteItemInstanceService.remove(new LambdaQueryWrapper<ProcessRouteItemInstance>()
- .eq(ProcessRouteItemInstance::getOrderId, orderId)
- .eq(ProcessRouteItemInstance::getRouteId, processRouteId));
+ productionOrderRouteItemService.remove(new LambdaQueryWrapper<ProductionOrderRouteItem>()
+ .eq(ProductionOrderRouteItem::getOrderId, orderId)
+ .eq(ProductionOrderRouteItem::getRouteId, processRouteId));
// 鍒犻櫎BOM瀛愰泦闄勮〃
ProcessRoute processRoute = processRouteService.getById(processRouteId);
if (processRoute != null && processRoute.getBomId() != null) {
- productStructureInstanceService.remove(new LambdaQueryWrapper<ProductStructureInstance>()
- .eq(ProductStructureInstance::getOrderId, orderId)
- .eq(ProductStructureInstance::getBomId, processRoute.getBomId()));
+ productionOrderStructureService.remove(new LambdaQueryWrapper<ProductionOrderStructure>()
+ .eq(ProductionOrderStructure::getOrderId, orderId)
+ .eq(ProductionOrderStructure::getBomId, processRoute.getBomId()));
}
}
@@ -138,12 +134,12 @@
// 杩佺Щ宸ヨ壓璺嚎瀛愰泦琛ㄦ暟鎹紝杩斿洖鏃d->鏂癷nstance鏄犲皠
List<ProcessRouteItem> processRouteItemList = processRouteItemService.list(
new LambdaQueryWrapper<ProcessRouteItem>().eq(ProcessRouteItem::getRouteId, processRoute.getId()));
- Map<Long, ProcessRouteItemInstance> routeItemOldIdMap = migrationProcessRouteItem(orderId, processRouteItemList);
+ Map<Long, ProductionOrderRouteItem> routeItemOldIdMap = migrationProcessRouteItem(orderId, processRouteItemList);
// 杩佺Щ宸ヨ壓璺嚎鍐呯粦瀹氱殑宸ュ簭鍙傛暟
if (processRouteItemList != null && !processRouteItemList.isEmpty()) {
for (ProcessRouteItem item : processRouteItemList) {
- ProcessRouteItemInstance newInstance = routeItemOldIdMap.get(item.getId());
+ ProductionOrderRouteItem newInstance = routeItemOldIdMap.get(item.getId());
Long newRouteItemInstanceId = newInstance != null ? newInstance.getId() : item.getId();
List<ProcessRouteItemParam> paramList = processRouteItemParamService.list(
@@ -160,13 +156,13 @@
}
}
- private Map<Long, ProcessRouteItemInstance> migrationProcessRouteItem(Long orderId, List<ProcessRouteItem> list) {
- Map<Long, ProcessRouteItemInstance> oldIdMap = new HashMap<>();
+ private Map<Long, ProductionOrderRouteItem> migrationProcessRouteItem(Long orderId, List<ProcessRouteItem> list) {
+ Map<Long, ProductionOrderRouteItem> oldIdMap = new HashMap<>();
if (list == null || list.isEmpty()) {
return oldIdMap;
}
- List<ProcessRouteItemInstance> instances = list.stream().map(item -> {
- ProcessRouteItemInstance instance = new ProcessRouteItemInstance();
+ List<ProductionOrderRouteItem> instances = list.stream().map(item -> {
+ ProductionOrderRouteItem instance = new ProductionOrderRouteItem();
BeanUtils.copyProperties(item, instance, "id");
instance.setIsQuality(item.getIsQuality() != null && item.getIsQuality() ? 1 : 0);
instance.setOrderId(orderId);
@@ -175,7 +171,7 @@
}
return instance;
}).collect(Collectors.toList());
- processRouteItemInstanceService.saveBatch(instances);
+ productionOrderRouteItemService.saveBatch(instances);
return oldIdMap;
}
@@ -183,23 +179,23 @@
if (list == null || list.isEmpty()) {
return;
}
- List<ProcessRouteItemParamInstance> instances = list.stream().map(item -> {
- ProcessRouteItemParamInstance instance = new ProcessRouteItemParamInstance();
+ List<ProductionOrderRouteItemParam> instances = list.stream().map(item -> {
+ ProductionOrderRouteItemParam instance = new ProductionOrderRouteItemParam();
BeanUtils.copyProperties(item, instance, "id");
instance.setOrderId(orderId);
instance.setRouteItemId(newRouteItemInstanceId);
return instance;
}).collect(Collectors.toList());
- processRouteItemParamInstanceService.saveBatch(instances);
+ productionOrderRouteItemParamService.saveBatch(instances);
}
private void migrationProductStructure(Long orderId, List<ProductStructure> list) {
if (list == null || list.isEmpty()) {
return;
}
- Map<Long, ProductStructureInstance> oldIdMap = new HashMap<>();
- List<ProductStructureInstance> instances = list.stream().map(item -> {
- ProductStructureInstance instance = new ProductStructureInstance();
+ Map<Long, ProductionOrderStructure> oldIdMap = new HashMap<>();
+ List<ProductionOrderStructure> instances = list.stream().map(item -> {
+ ProductionOrderStructure instance = new ProductionOrderStructure();
BeanUtils.copyProperties(item, instance, "id");
instance.setBomId(item.getBomId() != null ? item.getBomId().longValue() : null);
instance.setOrderId(orderId);
@@ -208,7 +204,7 @@
}
return instance;
}).collect(Collectors.toList());
- productStructureInstanceService.saveBatch(instances);
+ productionOrderStructureService.saveBatch(instances);
// 鏂板鍚庢湁id锛屾棫id->鏂癷d锛屼慨姝arentId
Map<Long, Long> oldToNewId = new HashMap<>();
@@ -218,12 +214,12 @@
}
});
- List<ProductStructureInstance> toUpdate = instances.stream()
+ List<ProductionOrderStructure> toUpdate = instances.stream()
.filter(i -> i.getParentId() != null && oldToNewId.containsKey(i.getParentId()))
.peek(i -> i.setParentId(oldToNewId.get(i.getParentId())))
.collect(Collectors.toList());
if (!toUpdate.isEmpty()) {
- productStructureInstanceService.updateBatchById(toUpdate);
+ productionOrderStructureService.updateBatchById(toUpdate);
}
}
}
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionOrderRouteItemParamServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionOrderRouteItemParamServiceImpl.java
new file mode 100644
index 0000000..8cb5947
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionOrderRouteItemParamServiceImpl.java
@@ -0,0 +1,122 @@
+package com.ruoyi.production.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.pojo.BaseParam;
+import com.ruoyi.basic.service.BaseParamService;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.production.dto.ProductionOrderRouteItemParamDto;
+import com.ruoyi.production.mapper.ProductionOrderRouteItemParamMapper;
+import com.ruoyi.production.pojo.ProductionOrderRouteItemParam;
+import com.ruoyi.production.service.IProductionOrderRouteItemParamService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 鐢熶骇璁㈠崟缁戝畾鐨勫伐鑹鸿矾绾垮伐搴�--鍙傛暟琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author deslrey
+ * @since 2026-03-20
+ */
+@Slf4j
+@Service
+public class ProductionOrderRouteItemParamServiceImpl extends ServiceImpl<ProductionOrderRouteItemParamMapper, ProductionOrderRouteItemParam> implements IProductionOrderRouteItemParamService {
+
+ @Autowired
+ private BaseParamService baseParamService;
+
+ @Override
+ public List<ProductionOrderRouteItemParamDto> routeItemParamList(Long orderId, Long routeItemId) {
+ List<ProductionOrderRouteItemParam> list = list(new LambdaQueryWrapper<ProductionOrderRouteItemParam>()
+ .eq(ProductionOrderRouteItemParam::getOrderId, orderId)
+ .eq(ProductionOrderRouteItemParam::getRouteItemId, routeItemId)
+ .orderByAsc(ProductionOrderRouteItemParam::getSort));
+
+ return list.stream().map(item -> {
+ ProductionOrderRouteItemParamDto dto = new ProductionOrderRouteItemParamDto();
+ BeanUtils.copyProperties(item, dto);
+ return dto;
+ }).collect(Collectors.toList());
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void addRouteItemParam(ProductionOrderRouteItemParamDto dto) {
+ if (dto == null) {
+ throw new ServiceException("鏂板鏁版嵁涓嶈兘涓虹┖");
+ }
+ if (dto.getOrderId() == null) {
+ throw new ServiceException("鐢熶骇璁㈠崟ID涓嶈兘涓虹┖");
+ }
+ if (dto.getRouteItemId() == null) {
+ throw new ServiceException("宸ヨ壓璺嚎鏄庣粏ID涓嶈兘涓虹┖");
+ }
+ Long tenantId = SecurityUtils.getLoginUser().getTenantId();
+
+ BaseParam baseParam = baseParamService.getById(dto.getParamId());
+ if (baseParam == null) {
+ throw new ServiceException("鏂板鍙傛暟涓嶅瓨鍦�");
+ }
+
+ ProductionOrderRouteItemParam entity = new ProductionOrderRouteItemParam();
+ BeanUtils.copyProperties(dto, entity);
+ entity.setId(null);
+ entity.setOrderId(dto.getOrderId());
+ entity.setRouteItemId(dto.getRouteItemId());
+ entity.setIsRequired(dto.getIsRequired());
+ // 鍙栧綋鍓嶈鍗�+璺嚎鏄庣粏涓嬫渶澶� sort + 1
+ ProductionOrderRouteItemParam maxSortItem = getOne(new LambdaQueryWrapper<ProductionOrderRouteItemParam>()
+ .select(ProductionOrderRouteItemParam::getSort)
+ .eq(ProductionOrderRouteItemParam::getOrderId, dto.getOrderId())
+ .eq(ProductionOrderRouteItemParam::getRouteItemId, dto.getRouteItemId())
+ .orderByDesc(ProductionOrderRouteItemParam::getSort)
+ .last("limit 1"));
+ entity.setSort(maxSortItem != null && maxSortItem.getSort() != null ? maxSortItem.getSort() + 1 : 1);
+ entity.setParamKey(baseParam.getParamKey());
+ entity.setParamName(baseParam.getParamName());
+ entity.setParamFormat(baseParam.getParamFormat());
+ entity.setParamType(baseParam.getParamType());
+ entity.setValueMode(baseParam.getValueMode());
+ entity.setUnit(baseParam.getUnit());
+ entity.setRemark(baseParam.getRemark());
+ entity.setTenantId(tenantId);
+ entity.setCreateTime(LocalDateTime.now());
+ save(entity);
+ }
+
+ @Override
+ public void updateRouteItemParam(ProductionOrderRouteItemParamDto dto) {
+ if (dto == null || dto.getId() == null) {
+ throw new ServiceException("鏇存柊鏁版嵁鎴朓D涓嶈兘涓虹┖");
+ }
+ if (getById(dto.getId()) == null) {
+ throw new ServiceException("鏁版嵁涓嶅瓨鍦�");
+ }
+ ProductionOrderRouteItemParam entity = new ProductionOrderRouteItemParam();
+ BeanUtils.copyProperties(dto, entity);
+ entity.setUpdateTime(LocalDateTime.now());
+ updateById(entity);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void deleteRouteItemParam(Long id) {
+ if (id == null) {
+ throw new ServiceException("ID涓嶈兘涓虹┖");
+ }
+ if (getById(id) == null) {
+ throw new ServiceException("鏁版嵁涓嶅瓨鍦�");
+ }
+ removeById(id);
+ }
+}
diff --git a/src/main/java/com/ruoyi/appendix/service/impl/ProcessRouteItemInstanceServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionOrderRouteItemServiceImpl.java
similarity index 62%
rename from src/main/java/com/ruoyi/appendix/service/impl/ProcessRouteItemInstanceServiceImpl.java
rename to src/main/java/com/ruoyi/production/service/impl/ProductionOrderRouteItemServiceImpl.java
index 79e30e5..696a7de 100644
--- a/src/main/java/com/ruoyi/appendix/service/impl/ProcessRouteItemInstanceServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionOrderRouteItemServiceImpl.java
@@ -1,17 +1,17 @@
-package com.ruoyi.appendix.service.impl;
+package com.ruoyi.production.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.appendix.dto.ProcessRouteItemInstanceDto;
-import com.ruoyi.appendix.mapper.ProcessRouteItemInstanceMapper;
-import com.ruoyi.appendix.pojo.ProcessRouteItemInstance;
-import com.ruoyi.appendix.pojo.ProcessRouteItemParamInstance;
-import com.ruoyi.appendix.service.ProcessRouteItemInstanceService;
-import com.ruoyi.appendix.service.ProcessRouteItemParamInstanceService;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.production.dto.ProductionOrderRouteItemDto;
+import com.ruoyi.production.mapper.ProductionOrderRouteItemMapper;
import com.ruoyi.production.pojo.ProcessRouteItemParam;
import com.ruoyi.production.pojo.ProductProcess;
+import com.ruoyi.production.pojo.ProductionOrderRouteItem;
+import com.ruoyi.production.pojo.ProductionOrderRouteItemParam;
+import com.ruoyi.production.service.IProductionOrderRouteItemParamService;
+import com.ruoyi.production.service.IProductionOrderRouteItemService;
import com.ruoyi.production.service.ProcessRouteItemParamService;
import com.ruoyi.production.service.ProductProcessService;
import lombok.extern.slf4j.Slf4j;
@@ -24,34 +24,33 @@
import java.util.stream.Collectors;
/**
- * <br>
- * 宸ヨ壓璺嚎瀛愰泦-闄勮〃Service瀹炵幇绫�
- * </br>
+ * <p>
+ * 鐢熶骇璁㈠崟缁戝畾鐨勫伐鑹鸿矾绾�--宸ュ簭琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
*
* @author deslrey
- * @version 1.0
- * @since 2026/03/18 13:08
+ * @since 2026-03-20
*/
@Slf4j
@Service
-public class ProcessRouteItemInstanceServiceImpl extends ServiceImpl<ProcessRouteItemInstanceMapper, ProcessRouteItemInstance> implements ProcessRouteItemInstanceService {
+public class ProductionOrderRouteItemServiceImpl extends ServiceImpl<ProductionOrderRouteItemMapper, ProductionOrderRouteItem> implements IProductionOrderRouteItemService {
@Resource
private ProductProcessService productProcessService;
@Resource
- private ProcessRouteItemParamInstanceService processRouteItemParamInstanceService;
+ private IProductionOrderRouteItemParamService productionOrderRouteItemParamService;
@Resource
private ProcessRouteItemParamService processRouteItemParamService;
@Override
- public List<ProcessRouteItemInstanceDto> getProcessItem(Long orderId) {
- List<ProcessRouteItemInstance> list = list(new LambdaQueryWrapper<ProcessRouteItemInstance>()
- .eq(ProcessRouteItemInstance::getOrderId, orderId)
- .orderByAsc(ProcessRouteItemInstance::getDragSort));
+ public List<ProductionOrderRouteItemDto> getProcessItem(Long orderId) {
+ List<ProductionOrderRouteItem> list = list(new LambdaQueryWrapper<ProductionOrderRouteItem>()
+ .eq(ProductionOrderRouteItem::getOrderId, orderId)
+ .orderByAsc(ProductionOrderRouteItem::getDragSort));
return list.stream().map(item -> {
- ProcessRouteItemInstanceDto dto = new ProcessRouteItemInstanceDto();
+ ProductionOrderRouteItemDto dto = new ProductionOrderRouteItemDto();
BeanUtils.copyProperties(item, dto);
if (item.getProcessId() != null) {
ProductProcess process = productProcessService.getById(item.getProcessId());
@@ -64,7 +63,7 @@
}
@Override
- public void addProcessItem(ProcessRouteItemInstanceDto dto) {
+ public void addProcessItem(ProductionOrderRouteItemDto dto) {
if (dto == null) {
throw new ServiceException("鏂板鏁版嵁涓嶈兘涓虹┖");
}
@@ -74,51 +73,51 @@
if (dto.getProcessId() == null) {
throw new ServiceException("宸ュ簭ID涓嶈兘涓虹┖");
}
- ProcessRouteItemInstance entity = new ProcessRouteItemInstance();
+ ProductionOrderRouteItem entity = new ProductionOrderRouteItem();
BeanUtils.copyProperties(dto, entity);
entity.setId(null);
entity.setTenantId(SecurityUtils.getLoginUser().getTenantId());
entity.setCreateTime(LocalDateTime.now());
// 鍙栧綋鍓嶈鍗曚笅鏈�澶� dragSort + 1
- ProcessRouteItemInstance maxSortItem = getOne(new LambdaQueryWrapper<ProcessRouteItemInstance>()
- .eq(ProcessRouteItemInstance::getOrderId, dto.getOrderId())
- .orderByDesc(ProcessRouteItemInstance::getDragSort)
+ ProductionOrderRouteItem maxSortItem = getOne(new LambdaQueryWrapper<ProductionOrderRouteItem>()
+ .eq(ProductionOrderRouteItem::getOrderId, dto.getOrderId())
+ .orderByDesc(ProductionOrderRouteItem::getDragSort)
.last("limit 1"));
entity.setDragSort(maxSortItem != null && maxSortItem.getDragSort() != null ? maxSortItem.getDragSort() + 1 : 1);
save(entity);
}
@Override
- public void updateProcessItem(ProcessRouteItemInstanceDto dto) {
+ public void updateProcessItem(ProductionOrderRouteItemDto dto) {
if (dto == null || dto.getId() == null) {
throw new ServiceException("鏇存柊鏁版嵁鎴朓D涓嶈兘涓虹┖");
}
- ProcessRouteItemInstance old = getById(dto.getId());
+ ProductionOrderRouteItem old = getById(dto.getId());
if (old == null) {
throw new ServiceException("鏁版嵁涓嶅瓨鍦�");
}
// 宸ュ簭鍙樻洿锛屽垹闄ゆ棫鍙傛暟闄勮〃锛岃縼绉绘柊宸ュ簭鍙傛暟
if (dto.getProcessId() != null && !dto.getProcessId().equals(old.getProcessId())) {
// 鍒犻櫎宸ヨ壓璺嚎宸ュ簭鍙傛暟闄勮〃
- processRouteItemParamInstanceService.remove(new LambdaQueryWrapper<ProcessRouteItemParamInstance>()
- .eq(ProcessRouteItemParamInstance::getOrderId, old.getOrderId())
- .eq(ProcessRouteItemParamInstance::getRouteItemId, old.getId()));
+ productionOrderRouteItemParamService.remove(new LambdaQueryWrapper<ProductionOrderRouteItemParam>()
+ .eq(ProductionOrderRouteItemParam::getOrderId, old.getOrderId())
+ .eq(ProductionOrderRouteItemParam::getRouteItemId, old.getId()));
// 杩佺Щ鏂板伐搴忕殑 process_route_item_param
List<ProcessRouteItemParam> routeItemParams = processRouteItemParamService.list(
new LambdaQueryWrapper<ProcessRouteItemParam>().eq(ProcessRouteItemParam::getRouteItemId, old.getId()));
if (!routeItemParams.isEmpty()) {
- List<ProcessRouteItemParamInstance> newInstances = routeItemParams.stream().map(p -> {
- ProcessRouteItemParamInstance instance = new ProcessRouteItemParamInstance();
+ List<ProductionOrderRouteItemParam> newInstances = routeItemParams.stream().map(p -> {
+ ProductionOrderRouteItemParam instance = new ProductionOrderRouteItemParam();
BeanUtils.copyProperties(p, instance, "id");
instance.setOrderId(old.getOrderId());
return instance;
}).collect(Collectors.toList());
- processRouteItemParamInstanceService.saveBatch(newInstances);
+ productionOrderRouteItemParamService.saveBatch(newInstances);
}
}
- ProcessRouteItemInstance entity = new ProcessRouteItemInstance();
+ ProductionOrderRouteItem entity = new ProductionOrderRouteItem();
BeanUtils.copyProperties(dto, entity);
entity.setUpdateTime(LocalDateTime.now());
updateById(entity);
@@ -129,35 +128,35 @@
if (id == null) {
throw new ServiceException("ID涓嶈兘涓虹┖");
}
- ProcessRouteItemInstance old = getById(id);
+ ProductionOrderRouteItem old = getById(id);
if (old == null) {
throw new ServiceException("鏁版嵁涓嶅瓨鍦�");
}
// 鍒犻櫎宸ヨ壓璺嚎宸ュ簭鍙傛暟闄勮〃
- processRouteItemParamInstanceService.remove(new LambdaQueryWrapper<ProcessRouteItemParamInstance>()
- .eq(ProcessRouteItemParamInstance::getOrderId, old.getOrderId())
- .eq(ProcessRouteItemParamInstance::getRouteItemId, id));
+ productionOrderRouteItemParamService.remove(new LambdaQueryWrapper<ProductionOrderRouteItemParam>()
+ .eq(ProductionOrderRouteItemParam::getOrderId, old.getOrderId())
+ .eq(ProductionOrderRouteItemParam::getRouteItemId, id));
removeById(id);
}
@Override
- public void sortProcessItem(ProcessRouteItemInstanceDto dto) {
+ public void sortProcessItem(ProductionOrderRouteItemDto dto) {
if (dto == null || dto.getId() == null) {
throw new ServiceException("鏁版嵁鎴朓D涓嶈兘涓虹┖");
}
- ProcessRouteItemInstance old = getById(dto.getId());
+ ProductionOrderRouteItem old = getById(dto.getId());
if (old == null) {
throw new ServiceException("鏁版嵁涓嶅瓨鍦�");
}
- List<ProcessRouteItemInstance> items = list(new LambdaQueryWrapper<ProcessRouteItemInstance>()
- .eq(ProcessRouteItemInstance::getOrderId, old.getOrderId())
- .orderByAsc(ProcessRouteItemInstance::getDragSort));
+ List<ProductionOrderRouteItem> items = list(new LambdaQueryWrapper<ProductionOrderRouteItem>()
+ .eq(ProductionOrderRouteItem::getOrderId, old.getOrderId())
+ .orderByAsc(ProductionOrderRouteItem::getDragSort));
Integer targetPosition = dto.getDragSort();
if (targetPosition != null && targetPosition >= 1) {
items.removeIf(item -> item.getId().equals(old.getId()));
items.add(targetPosition - 1, old);
for (int i = 0; i < items.size(); i++) {
- ProcessRouteItemInstance item = items.get(i);
+ ProductionOrderRouteItem item = items.get(i);
int newSort = i + 1;
if (!item.getId().equals(old.getId())) {
if (!Integer.valueOf(newSort).equals(item.getDragSort())) {
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionOrderStructureServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionOrderStructureServiceImpl.java
new file mode 100644
index 0000000..21f14df
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionOrderStructureServiceImpl.java
@@ -0,0 +1,151 @@
+package com.ruoyi.production.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.production.dto.ProductionOrderStructureDto;
+import com.ruoyi.production.mapper.ProductionOrderStructureMapper;
+import com.ruoyi.production.pojo.ProductionOrderStructure;
+import com.ruoyi.production.service.IProductionOrderStructureService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 鐢熶骇璁㈠崟缁戝畾鐨凚OM瀛愯〃 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author deslrey
+ * @since 2026-03-20
+ */
+@Slf4j
+@Service
+public class ProductionOrderStructureServiceImpl extends ServiceImpl<ProductionOrderStructureMapper, ProductionOrderStructure> implements IProductionOrderStructureService {
+
+ @Override
+ public List<ProductionOrderStructureDto> listByOrderId(Long orderId) {
+ List<ProductionOrderStructure> list = list(new LambdaQueryWrapper<ProductionOrderStructure>().eq(ProductionOrderStructure::getOrderId, orderId));
+
+ List<ProductionOrderStructureDto> dtoList = list.stream().map(item -> {
+ ProductionOrderStructureDto dto = new ProductionOrderStructureDto();
+ BeanUtils.copyProperties(item, dto);
+ return dto;
+ }).collect(Collectors.toList());
+
+ Map<Long, ProductionOrderStructureDto> map = new HashMap<>();
+ for (ProductionOrderStructureDto node : dtoList) {
+ map.put(node.getId(), node);
+ }
+
+ List<ProductionOrderStructureDto> tree = new ArrayList<>();
+ for (ProductionOrderStructureDto node : dtoList) {
+ Long parentId = node.getParentId();
+ if (parentId == null || !map.containsKey(parentId)) {
+ tree.add(node);
+ } else {
+ map.get(parentId).getChildren().add(node);
+ }
+ }
+ return tree;
+ }
+
+ @Override
+ public void addOrUpdateBomStructs(ProductionOrderStructureDto instanceDto) {
+ Long orderId = instanceDto.getOrderId();
+
+ // 鎵佸钩鍖栧墠绔紶鍏ョ殑鏍�
+ List<ProductionOrderStructureDto> flatList = new ArrayList<>();
+ flattenTree(instanceDto.getChildren(), flatList);
+
+ // 鏌ヨ鏁版嵁搴撳凡鏈夋暟鎹�
+ List<ProductionOrderStructure> dbList = list(new LambdaQueryWrapper<ProductionOrderStructure>()
+ .eq(ProductionOrderStructure::getOrderId, orderId));
+
+ // 鍓嶇宸叉湁id闆嗗悎
+ Set<Long> frontendIds = flatList.stream()
+ .map(ProductionOrderStructureDto::getId)
+ .filter(Objects::nonNull)
+ .collect(Collectors.toSet());
+
+ // 闇�瑕佸垹闄ょ殑鑺傜偣
+ Set<Long> deleteIds = dbList.stream()
+ .map(ProductionOrderStructure::getId)
+ .filter(id -> !frontendIds.contains(id))
+ .collect(Collectors.toSet());
+ if (!deleteIds.isEmpty()) {
+ removeByIds(deleteIds);
+ }
+
+ List<ProductionOrderStructure> insertList = new ArrayList<>();
+ List<ProductionOrderStructure> updateList = new ArrayList<>();
+ Map<String, ProductionOrderStructure> tempEntityMap = new HashMap<>();
+
+ for (ProductionOrderStructureDto dto : flatList) {
+ ProductionOrderStructure entity = new ProductionOrderStructure();
+ BeanUtils.copyProperties(dto, entity);
+ entity.setOrderId(orderId);
+ if (dto.getId() == null) {
+ entity.setId(null);
+ entity.setParentId(null);
+ insertList.add(entity);
+ if (dto.getTempId() != null) {
+ tempEntityMap.put(dto.getTempId(), entity);
+ }
+ } else {
+ updateList.add(entity);
+ }
+ }
+
+ if (!insertList.isEmpty()) {
+ saveBatch(insertList);
+ }
+
+ // 鍥炲啓鏂板鑺傜偣鐨� parentId
+ List<ProductionOrderStructure> parentFixList = new ArrayList<>();
+ for (ProductionOrderStructureDto dto : flatList) {
+ if (dto.getId() != null) continue;
+ ProductionOrderStructure child = tempEntityMap.get(dto.getTempId());
+ if (child == null) continue;
+ String parentTempId = dto.getParentTempId();
+ if (parentTempId != null && !parentTempId.isEmpty()) {
+ Long realParentId;
+ if (tempEntityMap.containsKey(parentTempId)) {
+ realParentId = tempEntityMap.get(parentTempId).getId();
+ } else {
+ try {
+ realParentId = Long.valueOf(parentTempId);
+ } catch (NumberFormatException e) {
+ realParentId = 0L;
+ }
+ }
+ child.setParentId(realParentId);
+ } else {
+ child.setParentId(0L);
+ }
+ parentFixList.add(child);
+ }
+
+ if (!parentFixList.isEmpty()) {
+ updateBatchById(parentFixList);
+ }
+ if (!updateList.isEmpty()) {
+ updateBatchById(updateList);
+ }
+ }
+
+ private void flattenTree(List<ProductionOrderStructureDto> source, List<ProductionOrderStructureDto> result) {
+ if (source == null) return;
+ for (ProductionOrderStructureDto node : source) {
+ result.add(node);
+ flattenTree(node.getChildren(), result);
+ }
+ }
+}
diff --git a/src/main/resources/mapper/production/ProductionOrderRouteItemMapper.xml b/src/main/resources/mapper/production/ProductionOrderRouteItemMapper.xml
new file mode 100644
index 0000000..7d8e8a6
--- /dev/null
+++ b/src/main/resources/mapper/production/ProductionOrderRouteItemMapper.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.production.mapper.ProductionOrderRouteItemMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.production.pojo.ProductionOrderRouteItem">
+ <id column="id" property="id"/>
+ <result column="order_id" property="orderId"/>
+ <result column="route_id" property="routeId"/>
+ <result column="product_model_id" property="productModelId"/>
+ <result column="process_id" property="processId"/>
+ <result column="tenant_id" property="tenantId"/>
+ <result column="create_time" property="createTime"/>
+ <result column="update_time" property="updateTime"/>
+ <result column="drag_sort" property="dragSort"/>
+ <result column="is_quality" property="isQuality"/>
+ </resultMap>
+
+</mapper>
diff --git a/src/main/resources/mapper/production/ProductionOrderRouteItemParamMapper.xml b/src/main/resources/mapper/production/ProductionOrderRouteItemParamMapper.xml
new file mode 100644
index 0000000..b4654d3
--- /dev/null
+++ b/src/main/resources/mapper/production/ProductionOrderRouteItemParamMapper.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.production.mapper.ProductionOrderRouteItemParamMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.production.pojo.ProductionOrderRouteItemParam">
+ <id column="id" property="id"/>
+ <result column="order_id" property="orderId"/>
+ <result column="route_item_id" property="routeItemId"/>
+ <result column="process_param_id" property="processParamId"/>
+ <result column="param_key" property="paramKey"/>
+ <result column="param_name" property="paramName"/>
+ <result column="param_type" property="paramType"/>
+ <result column="param_format" property="paramFormat"/>
+ <result column="value_mode" property="valueMode"/>
+ <result column="unit" property="unit"/>
+ <result column="remark" property="remark"/>
+ <result column="standard_value" property="standardValue"/>
+ <result column="min_value" property="minValue"/>
+ <result column="max_value" property="maxValue"/>
+ <result column="is_required" property="isRequired"/>
+ <result column="sort" property="sort"/>
+ <result column="tenant_id" property="tenantId"/>
+ <result column="create_time" property="createTime"/>
+ <result column="update_time" property="updateTime"/>
+ </resultMap>
+
+</mapper>
diff --git a/src/main/resources/mapper/production/ProductionOrderStructureMapper.xml b/src/main/resources/mapper/production/ProductionOrderStructureMapper.xml
new file mode 100644
index 0000000..4bbafbe
--- /dev/null
+++ b/src/main/resources/mapper/production/ProductionOrderStructureMapper.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.production.mapper.ProductionOrderStructureMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.production.pojo.ProductionOrderStructure">
+ <id column="id" property="id"/>
+ <result column="order_id" property="orderId"/>
+ <result column="parent_id" property="parentId"/>
+ <result column="product_model_id" property="productModelId"/>
+ <result column="process_id" property="processId"/>
+ <result column="unit_quantity" property="unitQuantity"/>
+ <result column="demanded_quantity" property="demandedQuantity"/>
+ <result column="unit" property="unit"/>
+ <result column="tenant_id" property="tenantId"/>
+ <result column="bom_id" property="bomId"/>
+ </resultMap>
+
+</mapper>
--
Gitblit v1.9.3