From 7ea8883ca6b47ec014a32ed57c3bea64544e893e Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期四, 19 三月 2026 17:09:34 +0800
Subject: [PATCH] feat: 生产订单绑定工艺路线、BOM、工艺路线、工序参数新增修改

---
 src/main/java/com/ruoyi/appendix/service/impl/ProcessRouteItemParamInstanceServiceImpl.java |   85 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 84 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/ruoyi/appendix/service/impl/ProcessRouteItemParamInstanceServiceImpl.java b/src/main/java/com/ruoyi/appendix/service/impl/ProcessRouteItemParamInstanceServiceImpl.java
index 9b84705..73d3d77 100644
--- a/src/main/java/com/ruoyi/appendix/service/impl/ProcessRouteItemParamInstanceServiceImpl.java
+++ b/src/main/java/com/ruoyi/appendix/service/impl/ProcessRouteItemParamInstanceServiceImpl.java
@@ -1,11 +1,21 @@
 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>
@@ -19,4 +29,77 @@
 @Slf4j
 @Service
 public class ProcessRouteItemParamInstanceServiceImpl extends ServiceImpl<ProcessRouteItemParamInstanceMapper, ProcessRouteItemParamInstance> implements ProcessRouteItemParamInstanceService {
-}
\ No newline at end of file
+
+    @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);
+    }
+}

--
Gitblit v1.9.3