doc/ÄþÏÄ-ÖÐÊ¢½¨²Ä.sql
@@ -177,26 +177,59 @@ DROP COLUMN `data_sync_type`, MODIFY COLUMN `data_source_type` tinyint NULL DEFAULT 1 COMMENT 'æ°æ®æ¥æºç±»åï¼1=éé忥 2=æå¨æ°å¢' AFTER `form_modified_time`; -- å 餿§è¡¨ DROP TABLE IF EXISTS `base_param`; DROP TABLE IF EXISTS `product_process_param`; CREATE TABLE `base_param` ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主é®ID', param_key VARCHAR(100) NOT NULL COMMENT 'åæ°å¯ä¸æ è¯', param_name VARCHAR(100) NOT NULL COMMENT 'åæ°åç§°', param_type TINYINT NOT NULL COMMENT 'åæ°ç±»å(1æ°å 2ææ¬)', value_mode TINYINT DEFAULT 1 COMMENT '弿¨¡å¼(1åå¼ 2åºé´)', unit VARCHAR(50) COMMENT 'åä½', default_value VARCHAR(200) COMMENT 'é»è®¤å¼(åå¼åæ°)', default_min DECIMAL(10, 2) COMMENT 'é»è®¤æå°å¼(åºé´åæ°)', default_max DECIMAL(10, 2) COMMENT 'é»è®¤æå¤§å¼(åºé´åæ°)', is_required TINYINT DEFAULT 0 COMMENT 'æ¯å¦å¿ å¡«(0å¦ 1æ¯)', remark VARCHAR(255) COMMENT '夿³¨', create_user VARCHAR(64) COMMENT 'å建人', create_time DATETIME COMMENT 'å建æ¶é´', update_user VARCHAR(64) COMMENT 'ä¿®æ¹äºº', update_time DATETIME COMMENT 'ä¿®æ¹æ¶é´', tenant_id BIGINT NOT NULL COMMENT 'ç§æ·ID' ) COMMENT = 'åºç¡åæ°å®ä¹è¡¨'; `id` bigint NOT NULL AUTO_INCREMENT 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) DEFAULT NULL COMMENT 'åæ°æ ¼å¼', `value_mode` tinyint DEFAULT '1' COMMENT '弿¨¡å¼(1åå¼ 2åºé´)', `unit` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'åä½', `is_required` tinyint DEFAULT '0' COMMENT 'æ¯å¦å¿ å¡«', `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '夿³¨', `create_user` varchar(64) DEFAULT NULL COMMENT 'å建人', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'å建æ¶é´', `update_user` varchar(64) DEFAULT NULL COMMENT 'ä¿®æ¹äºº', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'ä¿®æ¹æ¶é´', `tenant_id` bigint DEFAULT NULL COMMENT 'ç§æ·ID', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 10 DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT ='åºç¡åæ°å®ä¹è¡¨'; CREATE TABLE `product_process_param` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主é®ID', `process_id` bigint NOT NULL COMMENT 'æå±å·¥åºID (product_process.id)', `param_id` bigint NOT NULL COMMENT 'å ³èåºç¡åæ°ID (base_param.id)', `standard_value` varchar(200) 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 '卿¤å·¥åºä¸æ¯å¦å¿ å¡«(0-å¦, 1-æ¯)', `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_process_id` (`process_id`) USING BTREE, KEY `idx_param_id` (`param_id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT ='å·¥åºç»å®åæ°è¡¨'; ALTER TABLE `product_process` MODIFY COLUMN `name` varchar(255) COMMENT 'å·¥åºåç§°'; ALTER TABLE `product_process` MODIFY COLUMN `no` varchar(255) COMMENT 'å·¥åºç¼å·'; ALTER TABLE `product_process` ADD COLUMN `status` tinyint(1) DEFAULT '1' COMMENT 'ç¶æï¼0-åç¨ï¼1-å¯ç¨' AFTER `no`; ALTER TABLE `product_process` MODIFY COLUMN `type` bigint COMMENT 'ç±»åï¼0-计æ¶ï¼1-计件'; ALTER TABLE `product_process` MODIFY COLUMN `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'å建æ¶é´'; ALTER TABLE `product_process` MODIFY COLUMN `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'ä¿®æ¹æ¶é´'; ALTER TABLE `product-inventory-management-zsjc`.`customer` ADD COLUMN `form_instance_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'å®æè¡¨åå®ä¾ID' AFTER `customer_type`, src/main/java/com/ruoyi/basic/pojo/BaseParam.java
@@ -36,7 +36,7 @@ @ApiModelProperty("åæ°åç§°") private String paramName; @ApiModelProperty("åæ°ç±»å(1æ°å 2ææ¬)") @ApiModelProperty("åæ°ç±»å(1æ°å 2ææ¬ 3䏿鿩 4æ¶é´)") private Integer paramType; @ApiModelProperty("åæ°æ ¼å¼") @@ -47,15 +47,6 @@ @ApiModelProperty("åä½") private String unit; @ApiModelProperty("é»è®¤å¼(åå¼åæ°)") private String defaultValue; @ApiModelProperty("é»è®¤æå°å¼(åºé´åæ°)") private BigDecimal defaultMin; @ApiModelProperty("é»è®¤æå¤§å¼(åºé´åæ°)") private BigDecimal defaultMax; @ApiModelProperty("æ¯å¦å¿ å¡«(0å¦ 1æ¯)") private Integer isRequired; src/main/java/com/ruoyi/basic/service/impl/BaseParamServiceImpl.java
@@ -11,8 +11,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -41,21 +41,31 @@ if (list == null || list.isEmpty()) { return new ArrayList<>(0); } // å¤çæ¥ææ ¼å¼å±ç¤º list.forEach(item -> { if (Integer.valueOf(4).equals(item.getParamType()) && StringUtils.isNotEmpty(item.getParamFormat())) { item.setParamFormat(toUpperCasePattern(item.getParamFormat())); } }); return list; } @Override public int addBaseParam(BaseParam baseParam) { if (baseParam == null) { throw new RuntimeException("æ°å¢åæ°ä¸è½ä¸ºç©º"); } // åæ°æ ¡éª checkBaseParam(baseParam, false); checkBaseParam(baseParam); // èªå¨çæparamKey baseParam.setParamKey(generateParamKey()); baseParam.setCreateUser(SecurityUtils.getUsername()); baseParam.setCreateTime(LocalDateTime.now()); // 设置é»è®¤å¼ if (baseParam.getIsRequired() == null) baseParam.setIsRequired(0); if (baseParam.getValueMode() == null) baseParam.setValueMode(1); return baseMapper.insert(baseParam); } @@ -66,7 +76,7 @@ throw new RuntimeException("ä¿®æ¹åæ°IDä¸è½ä¸ºç©º"); } // åæ°æ ¡éª checkBaseParam(baseParam, true); checkBaseParam(baseParam); baseParam.setUpdateUser(SecurityUtils.getUsername()); baseParam.setUpdateTime(LocalDateTime.now()); @@ -74,76 +84,76 @@ } /** * çæåæ°å¯ä¸key * åæ°å®ä¹åæ³æ ¡éª */ private void checkBaseParam(BaseParam baseParam) { if (StringUtils.isEmpty(baseParam.getParamName())) { throw new RuntimeException("åæ°åç§°ä¸è½ä¸ºç©º"); } // ç±»åæ ¡éª (1:æ°å, 2:ææ¬, 3:䏿鿩, 4:æ¥ææ¶é´) List<Integer> validTypes = Arrays.asList(1, 2, 3, 4); if (baseParam.getParamType() == null || !validTypes.contains(baseParam.getParamType())) { throw new RuntimeException("éæ³åæ°ç±»å"); } // å¦ææ¯æ¥æç±»åï¼æ ¡éªæ¥ææ ¼å¼é ç½® if (Integer.valueOf(4).equals(baseParam.getParamType())) { if (StringUtils.isEmpty(baseParam.getParamFormat())) { throw new RuntimeException("æ¥æç±»åå¿ é¡»é ç½®åæ°æ ¼å¼(å¦: yyyy-MM-dd)"); } try { String standardPattern = normalizePattern(baseParam.getParamFormat()); DateTimeFormatter.ofPattern(standardPattern); baseParam.setParamFormat(standardPattern); } catch (Exception e) { throw new RuntimeException("æ¥ææ ¼å¼éæ³: " + baseParam.getParamFormat()); } } } /** * çæåæ°å¯ä¸key (PARAM_XXX) */ private String generateParamKey() { String prefix = "PARAM_"; // æ¥è¯¢å½åæå¤§key LambdaQueryWrapper<BaseParam> wrapper = new LambdaQueryWrapper<>(); wrapper.select(BaseParam::getParamKey) .likeRight(BaseParam::getParamKey, prefix) .orderByDesc(BaseParam::getParamKey) .last("limit 1"); BaseParam last = baseMapper.selectOne(wrapper); int nextNum = 1; if (last != null) { String lastKey = last.getParamKey(); String numStr = lastKey.replace(prefix, ""); nextNum = Integer.parseInt(numStr) + 1; if (last != null && StringUtils.isNotEmpty(last.getParamKey())) { try { String numStr = last.getParamKey().replace(prefix, ""); nextNum = Integer.parseInt(numStr) + 1; } catch (Exception e) { log.error("è§£æParamKeyå¼å¸¸", e); } } return prefix + String.format("%04d", nextNum); } /** * åæ°åæ³æ§æ ¡éª * æ¥ææ ¼å¼å */ private void checkBaseParam(BaseParam baseParam, boolean isUpdate) { if (baseParam == null) { throw new RuntimeException("åæ°å¯¹è±¡ä¸è½ä¸ºç©º"); } if (StringUtils.isEmpty(baseParam.getParamName())) { throw new RuntimeException("åæ°åç§°ä¸è½ä¸ºç©º"); } if (baseParam.getParamType() == null || !(baseParam.getParamType() == 1 || baseParam.getParamType() == 2)) { throw new RuntimeException("åæ°ç±»åå¿ é¡»ä¸º1(æ°å)æ2(ææ¬)"); } if (baseParam.getValueMode() == null || !(baseParam.getValueMode() == 1 || baseParam.getValueMode() == 2)) { throw new RuntimeException("弿¨¡å¼å¿ 须为1(åå¼)æ2(åºé´)"); } private String normalizePattern(String pattern) { if (StringUtils.isEmpty(pattern)) return "yyyy-MM-dd"; return pattern.replace("YYYY", "yyyy") .replace("DD", "dd") .replace("SS", "ss"); } // å弿¨¡å¼ if (baseParam.getValueMode() == 1) { if (StringUtils.isEmpty(baseParam.getDefaultValue())) { throw new RuntimeException("åå¼åæ°é»è®¤å¼ä¸è½ä¸ºç©º"); } if (baseParam.getParamType() == 1) { try { new BigDecimal(baseParam.getDefaultValue()); } catch (Exception e) { throw new RuntimeException("é»è®¤å¼å¿ 须为æ°å"); } } baseParam.setDefaultMin(null); baseParam.setDefaultMax(null); } // åºé´æ¨¡å¼ if (baseParam.getValueMode() == 2) { if (baseParam.getParamType() != 1) { throw new RuntimeException("åªææ°åç±»åæè½ä½¿ç¨åºé´æ¨¡å¼"); } if (baseParam.getDefaultMin() == null || baseParam.getDefaultMax() == null) { throw new RuntimeException("åºé´åæ°æå°å¼åæå¤§å¼ä¸è½ä¸ºç©º"); } if (baseParam.getDefaultMin().compareTo(baseParam.getDefaultMax()) > 0) { throw new RuntimeException("æå°å¼ä¸è½å¤§äºæå¤§å¼"); } baseParam.setDefaultValue(null); } /** * 转æ¢ä¸ºå ¨å¤§åæ¾ç¤º */ private String toUpperCasePattern(String pattern) { if (StringUtils.isEmpty(pattern)) return ""; return pattern.replace("yyyy", "YYYY") .replace("dd", "DD") .replace("ss", "SS"); } @Override @@ -151,7 +161,6 @@ if (ids == null || ids.length == 0) { throw new RuntimeException("å é¤IDä¸è½ä¸ºç©º"); } return baseMapper.deleteBatchIds(Arrays.asList(ids)); } } src/main/java/com/ruoyi/production/controller/ProductProcessParamController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,71 @@ package com.ruoyi.production.controller; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.production.dto.ProductProcessParamSortDTO; import com.ruoyi.production.pojo.ProductProcessParam; import com.ruoyi.production.service.ProductProcessParamService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; /** * <br> * å·¥åºç»å®åæ°æ§å¶å± * </br> * * @author deslrey * @version 1.0 * @since 2026/03/14 13:33 */ @RestController @RequestMapping("/productProcessParam") @Api(tags = "å·¥åºåæ°ç»å®ç®¡ç") public class ProductProcessParamController { @Autowired private ProductProcessParamService productProcessParamService; @GetMapping("/list/{productProcessId}") @Log(title = "æ ¹æ®å·¥åºIDæ¥è¯¢å¯¹åºçåæ°", businessType = BusinessType.OTHER) @ApiOperation("æ ¹æ®å·¥åºIDæ¥è¯¢å¯¹åºçåæ°") public AjaxResult listByProcessId(@PathVariable("productProcessId") Long productProcessId) { return AjaxResult.success(productProcessParamService.listByProcessId(productProcessId)); } @PostMapping("/add") @Log(title = "æ°å¢å·¥åºç»å®åæ°", businessType = BusinessType.INSERT) @ApiOperation("æ°å¢å·¥åºç»å®åæ°") public AjaxResult add(@RequestBody ProductProcessParam productProcessParam) { productProcessParamService.add(productProcessParam); return AjaxResult.success(); } @PutMapping("/edit") @Log(title = "ä¿®æ¹å·¥åºç»å®åæ°", businessType = BusinessType.UPDATE) @ApiOperation("ä¿®æ¹å·¥åºç»å®åæ°") public AjaxResult edit(@RequestBody ProductProcessParam productProcessParam) { productProcessParamService.edit(productProcessParam); return AjaxResult.success(); } @DeleteMapping("/{ids}") @Log(title = "å é¤å·¥åºç»å®åæ°", businessType = BusinessType.DELETE) @ApiOperation("å é¤å·¥åºç»å®åæ°") public AjaxResult remove(@PathVariable List<Long> ids) { productProcessParamService.deleteByIds(ids); return AjaxResult.success(); } @PutMapping("/sort") @Log(title = "æ´æ°å·¥åºåæ°æåº", businessType = BusinessType.UPDATE) @ApiOperation("æ´æ°å·¥åºåæ°æåº") public AjaxResult updateSort(@RequestBody ProductProcessParamSortDTO dto) { productProcessParamService.updateSort(dto); return AjaxResult.success(); } } src/main/java/com/ruoyi/production/dto/ProductProcessParamDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,73 @@ package com.ruoyi.production.dto; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.Api; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; /** * <br> * å·¥åºç»å®åæ°Dto * </br> * * @author deslrey * @version 1.0 * @since 2026/03/14 15:33 */ @Data @ApiModel(value = "ProductProcessParamDto对象", description = "å·¥åºç»å®åæ°Dto") public class ProductProcessParamDto { @ApiModelProperty("主é®ID") private Long id; @ApiModelProperty("æå±å·¥åºID (product_process.id)") private Long processId; @ApiModelProperty("å ³èåºç¡åæ°ID (base_param.id)") private Long paramId; @ApiModelProperty("卿¤å·¥åºè®¾å®çæ åå¼(å弿¨¡å¼ä½¿ç¨)") private String standardValue; @ApiModelProperty("卿¤å·¥åºè®¾å®çæ åæå°å¼(åºé´æ¨¡å¼ä½¿ç¨)") private BigDecimal minValue; @ApiModelProperty("卿¤å·¥åºè®¾å®çæ åæå¤§å¼(åºé´æ¨¡å¼ä½¿ç¨)") private BigDecimal maxValue; @ApiModelProperty("卿¤å·¥åºä¸æ¯å¦å¿ å¡«(0-å¦, 1-æ¯)") private Integer isRequired; @ApiModelProperty("æåºå·") private Integer sort; @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("å建æ¶é´") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createTime; @ApiModelProperty("æ´æ°æ¶é´") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date updateTime; } src/main/java/com/ruoyi/production/dto/ProductProcessParamSortDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,35 @@ package com.ruoyi.production.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * <br> * å·¥åºåæ°æåº DTO * </br> * * @author deslrey * @version 1.0 * @since 2026/03/14 14:25 */ @Data @ApiModel("å·¥åºåæ°æåºå ¥å") public class ProductProcessParamSortDTO { @ApiModelProperty("æåºé¡¹å表") private List<SortItem> items; @Data @ApiModel("æåºé¡¹") public static class SortItem { @ApiModelProperty("è®°å½ID") private Long id; @ApiModelProperty("æåºå·") private Integer sort; } } src/main/java/com/ruoyi/production/mapper/ProductProcessParamMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,24 @@ package com.ruoyi.production.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.production.dto.ProductProcessParamDto; import com.ruoyi.production.pojo.ProductProcessParam; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <br> * å·¥åºç»å®åæ° Mapper æ¥å£ * </br> * * @author deslrey * @version 1.0 * @since 2026/03/14 13:16 */ public interface ProductProcessParamMapper extends BaseMapper<ProductProcessParam> { List<ProductProcessParamDto> selectDtoListByProcessId(@Param("processId") Long processId); } src/main/java/com/ruoyi/production/pojo/ProductProcess.java
@@ -42,6 +42,11 @@ @Excel(name = "夿³¨") private String remark; /** * ç¶æï¼0-åç¨ï¼1-å¯ç¨ */ private Boolean status; /** * å·¥èµå®é¢ @@ -75,7 +80,7 @@ @TableField(fill = FieldFill.INSERT) private Long tenantId; @ApiModelProperty(value ="æ¯å¦è´¨æ£") @ApiModelProperty(value = "æ¯å¦è´¨æ£") private Boolean isQuality; src/main/java/com/ruoyi/production/pojo/ProductProcessParam.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,64 @@ package com.ruoyi.production.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.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; /** * å·¥åºç»å®åæ°å®ä½ç±» * * @author deslrey * @version 1.0 * @since 2026/03/14 13:14 */ @Data @TableName("product_process_param") @ApiModel(value = "ProductProcessParam对象", description = "å·¥åºç»å®åæ°è¡¨") public class ProductProcessParam implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty("主é®ID") @TableId(value = "id", type = IdType.AUTO) private Long id; @ApiModelProperty("æå±å·¥åºID (product_process.id)") private Long processId; @ApiModelProperty("å ³èåºç¡åæ°ID (base_param.id)") private Long paramId; @ApiModelProperty("卿¤å·¥åºè®¾å®çæ åå¼(å弿¨¡å¼ä½¿ç¨)") private String standardValue; @ApiModelProperty("卿¤å·¥åºè®¾å®çæ åæå°å¼(åºé´æ¨¡å¼ä½¿ç¨)") private BigDecimal minValue; @ApiModelProperty("卿¤å·¥åºè®¾å®çæ åæå¤§å¼(åºé´æ¨¡å¼ä½¿ç¨)") private BigDecimal maxValue; @ApiModelProperty("卿¤å·¥åºä¸æ¯å¦å¿ å¡«(0-å¦, 1-æ¯)") private Integer isRequired; @ApiModelProperty("æåºå·") private Integer sort; @ApiModelProperty("ç§æ·ID") private Long tenantId; @ApiModelProperty("å建æ¶é´") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createTime; @ApiModelProperty("æ´æ°æ¶é´") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date updateTime; } src/main/java/com/ruoyi/production/service/ProductProcessParamService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,30 @@ package com.ruoyi.production.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.production.dto.ProductProcessParamDto; import com.ruoyi.production.dto.ProductProcessParamSortDTO; import com.ruoyi.production.pojo.ProductProcessParam; import java.util.List; /** * <br> * å·¥åºç»å®åæ°æ¥å£ * </br> * * @author deslrey * @version 1.0 * @since 2026/03/14 13:17 */ public interface ProductProcessParamService extends IService<ProductProcessParam> { List<ProductProcessParamDto> listByProcessId(Long processId); void add(ProductProcessParam productProcessParam); void edit(ProductProcessParam productProcessParam); void deleteByIds(List<Long> ids); void updateSort(ProductProcessParamSortDTO dto); } src/main/java/com/ruoyi/production/service/impl/ProductProcessParamServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,91 @@ package com.ruoyi.production.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.basic.service.BaseParamService; import com.ruoyi.production.dto.ProductProcessParamDto; import com.ruoyi.production.dto.ProductProcessParamSortDTO; import com.ruoyi.production.mapper.ProductProcessParamMapper; import com.ruoyi.production.pojo.ProductProcessParam; import com.ruoyi.production.service.ProductProcessParamService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * <br> * å·¥åºç»å®åæ°æ¥å£å®ç°ç±» * </br> * * @author deslrey * @version 1.0 * @since 2026/03/14 13:18 */ @Slf4j @Service public class ProductProcessParamServiceImpl extends ServiceImpl<ProductProcessParamMapper, ProductProcessParam> implements ProductProcessParamService { @Autowired private BaseParamService baseParamService; @Override public List<ProductProcessParamDto> listByProcessId(Long processId) { if (processId == null) { throw new IllegalArgumentException("å·¥åºIDä¸è½ä¸ºç©º"); } return baseMapper.selectDtoListByProcessId(processId); } @Override public void add(ProductProcessParam productProcessParam) { if (productProcessParam.getProcessId() == null) { throw new IllegalArgumentException("å ³èå·¥åºIDä¸è½ä¸ºç©º"); } if (productProcessParam.getParamId() == null) { throw new IllegalArgumentException("å ³èåºç¡åæ°IDä¸è½ä¸ºç©º"); } productProcessParam.setCreateTime(new Date()); if (!this.save(productProcessParam)) { throw new RuntimeException("æ°å¢å¤±è´¥"); } } @Override public void edit(ProductProcessParam productProcessParam) { if (productProcessParam.getId() == null) { throw new IllegalArgumentException("IDä¸è½ä¸ºç©º"); } productProcessParam.setUpdateTime(new Date()); if (!this.updateById(productProcessParam)) { throw new RuntimeException("ä¿®æ¹å¤±è´¥"); } } @Override public void deleteByIds(List<Long> ids) { if (ids == null || ids.isEmpty()) { throw new IllegalArgumentException("IDä¸è½ä¸ºç©º"); } if (!this.removeByIds(ids)) { throw new RuntimeException("å é¤å¤±è´¥"); } } @Override public void updateSort(ProductProcessParamSortDTO dto) { if (dto == null || dto.getItems() == null || dto.getItems().isEmpty()) { throw new IllegalArgumentException("æåºæ°æ®ä¸è½ä¸ºç©º"); } List<ProductProcessParam> list = new ArrayList<>(); for (ProductProcessParamSortDTO.SortItem item : dto.getItems()) { ProductProcessParam param = new ProductProcessParam(); param.setId(item.getId()); param.setSort(item.getSort()); list.add(param); } this.updateBatchById(list); } } src/main/resources/mapper/basic/BaseParamMapper.xml
@@ -10,9 +10,6 @@ <result column="param_format" property="paramFormat"/> <result column="value_mode" property="valueMode"/> <result column="unit" property="unit"/> <result column="default_value" property="defaultValue"/> <result column="default_min" property="defaultMin"/> <result column="default_max" property="defaultMax"/> <result column="is_required" property="isRequired"/> <result column="remark" property="remark"/> <result column="create_user" property="createUser"/> src/main/resources/mapper/production/ProductProcessParamMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,45 @@ <?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.ProductProcessParamMapper"> <resultMap id="ProductProcessParamResult" type="com.ruoyi.production.pojo.ProductProcessParam"> <id property="id" column="id"/> <result property="processId" column="process_id"/> <result property="paramId" column="param_id"/> <result property="standardValue" column="standard_value"/> <result property="minValue" column="min_value"/> <result property="maxValue" column="max_value"/> <result property="isRequired" column="is_required"/> <result property="sort" column="sort"/> <result property="tenantId" column="tenant_id"/> <result property="createTime" column="create_time"/> <result property="updateTime" column="update_time"/> </resultMap> <select id="selectDtoListByProcessId" resultType="com.ruoyi.production.dto.ProductProcessParamDto" parameterType="java.lang.Long"> SELECT ppp.id, ppp.process_id, ppp.param_id, ppp.standard_value, ppp.min_value, ppp.max_value, ppp.is_required, ppp.sort, ppp.create_time, ppp.update_time, bp.param_name, bp.param_type, bp.param_format, bp.value_mode, bp.unit FROM product_process_param ppp LEFT JOIN base_param bp ON ppp.param_id = bp.id WHERE ppp.process_id = #{processId} ORDER BY ppp.sort ASC </select> </mapper>