From fccfe7d50f42f5be4c4612d61b7ae852e2ef37cd Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期四, 17 四月 2025 15:26:09 +0800
Subject: [PATCH] 优化指派设备与审签设备的权限校验查询,新增导入电子样板触发审签流程,新增电子样板指派设备功能

---
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductInfoServiceImpl.java |  111 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 109 insertions(+), 2 deletions(-)

diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductInfoServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductInfoServiceImpl.java
index 4204924..d289e58 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductInfoServiceImpl.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductInfoServiceImpl.java
@@ -1,5 +1,7 @@
 package org.jeecg.modules.dnc.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -13,6 +15,8 @@
 import org.jeecg.modules.dnc.entity.*;
 import org.jeecg.modules.dnc.exception.ExceptionCast;
 import org.jeecg.modules.dnc.mapper.ProductInfoMapper;
+import org.jeecg.modules.dnc.request.DocInfoQueryRequest;
+import org.jeecg.modules.dnc.request.TreeInfoRequest;
 import org.jeecg.modules.dnc.response.*;
 import org.jeecg.modules.dnc.service.*;
 import org.jeecg.modules.dnc.service.support.ProductTreeWrapper;
@@ -80,6 +84,9 @@
     private IWorkStepPermissionService iWorkStepPermissionService;
     @Autowired
     private IProductMixService productMixService;
+    @Autowired
+    @Lazy
+    private IDocInfoService docInfoService;
 
     @Override
     @Transactional(rollbackFor = {Exception.class})
@@ -108,14 +115,31 @@
             ExceptionCast.cast(ProductInfoCode.PRODUCT_SAVE_ERROR);
         }
         //娣诲姞缁撴瀯鏍�
-        ProductMix productMix = new ProductMix(Long.parseLong(productInfo.getProductId()),0L,productInfo.getProductName(),productInfo.getProductNo(),1);
+        ProductMix productMix = new ProductMix(Long.parseLong(productInfo.getProductId()),0L,
+                productInfo.getProductName(),productInfo.getProductNo(),1,new Date());
         productMixService.save(productMix);
+        //娣诲姞鐢ㄦ埛閮ㄩ棬
+        if(StrUtil.isNotBlank(user.getProductionIds())){
+            String[] split = user.getProductionIds().split(",");
+            String[] departIds = split;
+            for (String departId : departIds) {
+                ProductDepartment productDepartment = new ProductDepartment();
+                productDepartment.setProductId(productInfo.getProductId());
+                productDepartment.setDepartId(departId);
+                productDepartmentService.save(productDepartment);
+                PermissionStreamNew stream = new PermissionStreamNew();
+                stream.setBusinessId(productInfo.getProductId());
+                stream.setDepartId(departId);
+                stream.setBusinessType("1");
+                permissionStreamNewService.save(stream);
+            }
+        }
         //娣诲姞鐢ㄦ埛鏉冮檺
         PermissionStreamNew stream = new PermissionStreamNew();
         stream.setBusinessId(productInfo.getProductId());
         stream.setUserId(userId);
         stream.setBusinessType("1");
-        return permissionStreamNewService.save(stream);
+        return permissionStreamNewService.addPermissionStreamNew(stream);
     }
 
     @Override
@@ -999,6 +1023,89 @@
     }
 
     /**
+     * 閫氳繃浠e彿銆佸悕绉般�佹潗璐ㄧ瓑鏌ヨ瀵瑰簲鐢靛瓙鏍锋澘
+     * @param treeInfoRequest
+     * @return
+     */
+    @Override
+    public List<DocInfo> getByTreeOtherFileInfo(TreeInfoRequest treeInfoRequest){
+        switch (treeInfoRequest.getAttributionType()){
+            case 1:
+                LambdaQueryWrapper<ProductInfo> queryWrapper = new LambdaQueryWrapper<>();
+                // 鏄庣‘鏉′欢锛氫粎褰揳ttributionType涓�1涓攁ttributionId闈炵┖鏃舵坊鍔犳潯浠�
+                if (treeInfoRequest.getAttributionType() == 1 && StrUtil.isNotBlank(treeInfoRequest.getAttributionId())) {
+                    queryWrapper.eq(ProductInfo::getProductId, treeInfoRequest.getAttributionId());
+                }
+                // 绠�鍖栨潯浠跺垽鏂�
+                queryWrapper.like(StrUtil.isNotBlank(treeInfoRequest.getTreeCode()), ProductInfo::getProductNo, treeInfoRequest.getTreeCode())
+                        .like(StrUtil.isNotBlank(treeInfoRequest.getTreeName()), ProductInfo::getProductName, treeInfoRequest.getTreeName());
+                List<ProductInfo> productInfoList = super.list(queryWrapper);
+                List<DocInfo> docInfos = new ArrayList<>();
+                if (StrUtil.isNotBlank(treeInfoRequest.getStructureType())){
+                    productInfoList=new ArrayList<>();
+                }
+                if (CollectionUtil.isNotEmpty(productInfoList)) {
+                    // 浣跨敤ID鍒楄〃鑰岄潪鎷兼帴瀛楃涓�
+                    List<String> productIds = productInfoList.stream()
+                            .map(ProductInfo::getProductId)
+                            .collect(Collectors.toList());
+                    DocInfoQueryRequest docQuery = new DocInfoQueryRequest();
+                    BeanUtil.copyProperties(treeInfoRequest, docQuery);
+                    docQuery.setAttributionIds(productIds.toString()); // 鍋囪setAttributionIds鎺ュ彈List<String>
+                    docQuery.setDocClassCode("OTHER");
+                    docQuery.setAttributionType(1);
+                    docInfos = docInfoService.findListByDocQuery(docQuery);
+                }
+                // 鍒涘缓鏂拌姹傚璞¢伩鍏嶆薄鏌撳師鍙傛暟
+                TreeInfoRequest componentRequest = new TreeInfoRequest();
+                BeanUtil.copyProperties(treeInfoRequest, componentRequest);
+                componentRequest.setProductIds(Collections.singletonList(treeInfoRequest.getAttributionId()));
+                // 鍚堝苟鏌ヨ缁撴灉
+                docInfos.addAll(componentInfoService.getByComponentInfo(componentRequest));
+                docInfos.addAll(partsInfoService.getByPartsInfo(componentRequest));
+                docInfos.addAll(processSpecVersionService.getByProcessSpecVersion(componentRequest));
+                return getByTreeOtherFileInfo(docInfos);
+            case 2:
+                return getByTreeOtherFileInfo(componentInfoService.getByComponentInfo(treeInfoRequest));
+            case 3:
+                return getByTreeOtherFileInfo(partsInfoService.getByPartsInfo(treeInfoRequest));
+            case 4:
+                return getByTreeOtherFileInfo(processSpecVersionService.getByProcessSpecVersion(treeInfoRequest));
+        }
+        return new ArrayList<>();
+    }
+
+    private List<DocInfo> getByTreeOtherFileInfo(List<DocInfo> docInfos){
+        //瀵规墍灞瀒d杩涜缈昏瘧
+        if (docInfos != null && !docInfos.isEmpty()) {
+            docInfos.forEach(docInfo -> {
+                switch (docInfo.getAttributionType()){
+                    case 1:
+                        ProductInfo productInfo=this.getById(docInfo.getAttributionId());
+                        docInfo.setNodeName(productInfo.getProductName());
+                        docInfo.setNodeCode(productInfo.getProductNo());
+                        break;
+                    case 2:
+                        ComponentInfo componentInfo=componentInfoService.getById(docInfo.getAttributionId());
+                        docInfo.setNodeName(componentInfo.getComponentName());
+                        docInfo.setNodeCode(componentInfo.getComponentCode());
+                        break;
+                    case 3:
+                        PartsInfo partsInfo=partsInfoService.getById(docInfo.getAttributionId());
+                        docInfo.setNodeCode(partsInfo.getPartsCode());
+                        docInfo.setNodeName(partsInfo.getPartsName());
+                        break;
+                    case 4:
+                        ProcessSpecVersion processSpecVersion=processSpecVersionService.getById(docInfo.getAttributionId());
+                        docInfo.setNodeName(processSpecVersion.getProcessSpecVersionName());
+                        docInfo.setNodeCode(processSpecVersion.getProcessSpecVersionCode());
+                }
+            });
+        }
+        return docInfos;
+    }
+
+    /**
      * 楠岃瘉杈撳叆鍙傛暟
      */
     private void validateInputParameters(Integer nodeType, String paramId, Integer relativeFlag, String type, String[] paramIds) {

--
Gitblit v1.9.3