From ed839069a1df066d9559263129e999de7e9c2ccc Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期三, 19 三月 2025 13:40:58 +0800
Subject: [PATCH] 修改产品结构树,修改指派程序至设备

---
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/AssignFileStreamServiceImpl.java |  125 +++++++++++++++++++++++------------------
 1 files changed, 71 insertions(+), 54 deletions(-)

diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/AssignFileStreamServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/AssignFileStreamServiceImpl.java
index df6ebb3..a3c1e93 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/AssignFileStreamServiceImpl.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/AssignFileStreamServiceImpl.java
@@ -48,7 +48,6 @@
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -91,15 +90,11 @@
     @Autowired
     private ISynchronizedFlagService synchronizedFlagService;
     @Autowired
-    private IDeviceGroupService deviceGroupService;
-    @Autowired
     private IDeviceCharactersService iDeviceCharactersService;
     @Autowired
     private IMdcEquipmentService iMdcEquipmentService;
     @Autowired
     private IMdcProductionService iMdcProductionService;
-    @Autowired
-    private StringRedisTemplate redisTemplate;
     @Autowired
     private TaskService taskService;
     @Resource
@@ -108,6 +103,8 @@
     private IFlowDefinitionService flowDefinitionService;
     @Autowired
     private IFlowTaskService flowTaskService;
+    @Autowired
+    private IDeviceTypeService deviceTypeService;
 
     @Value("${securedoc.whether}")
     private String whether;
@@ -192,15 +189,18 @@
         DocInfo docInfo = getDocInfo(stream);
         MdcEquipment mdcEquipment = getMdcEquipment(stream);
         DocFile docFile = docFileService.getById(stream.getFileId());
-        DocInfo deviceDoc = docInfoService.getByDocAttrAndDocId(stream.getDocId(), 4, stream.getDeviceId());
+        DocInfo deviceDoc = docInfoService.getByDocAttrAndDocId(stream.getDocId(), 7, stream.getDeviceId());
         if (deviceDoc != null) {
             handleExistingDeviceDoc(docFile, mdcEquipment, stream.getDeviceId());
         }
-        deviceDoc = docInfoService.findByAttrAndDocName(docInfo.getDocName(), 4, stream.getDeviceId());
+        deviceDoc = docInfoService.findByAttrAndDocName(docInfo.getDocName(), 7, stream.getDeviceId());
         if (deviceDoc != null) {
             handleExistingDeviceDoc(docFile, mdcEquipment, stream.getDeviceId());
         }
         PermissionStreamNew permissionStreams = getPermissionStreams(stream);
+        if (permissionStreams==null){
+            return Result.error("鐢ㄦ埛娌℃湁鏉冮檺");
+        }
         LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         String userId = user.getId();
         saveBusinessObject(stream, userId);
@@ -209,8 +209,19 @@
                 stream.getStreamId(), "IAssignFileStreamService", "assign_nc_to_device", null);
         Map<String, Object> variables = new HashMap<>();
         variables.put("dataId", stream.getStreamId());
-        variables.put("organization", stream.getApplyReason());
-        return flowDefinitionService.startProcessInstanceByKey("assign_nc_to_device", variables);
+        if (stream.getApplyReason() != null) {
+            variables.put("organization", stream.getApplyReason());
+        }else {
+            variables.put("organization", "");
+        }
+        Result result= flowDefinitionService.startProcessInstanceByKey("assign_nc_to_device", variables);
+        if (result.isSuccess()){
+            return Result.OK("鎿嶄綔鎴愬姛");
+        }else {
+            super.removeById(stream.getStreamId());
+
+            return Result.error("鎿嶄綔澶辫触");
+        }
     }
 
     @Override
@@ -221,7 +232,7 @@
         DocInfo docInfo = getDocInfo(stream);
         MdcEquipment mdcEquipment = getMdcEquipment(stream);
         DocFile docFile = getDocFile(stream);
-        DocInfo deviceDoc = docInfoService.getByDocAttrAndDocId(stream.getDocId(), 4, stream.getDeviceId());
+        DocInfo deviceDoc = docInfoService.getByDocAttrAndDocId(stream.getDocId(), 7, stream.getDeviceId());
         if(deviceDoc != null) {
             // 鍒犻櫎 澶囦唤  瑕嗙洊 鍘熸湁鐨�
             List<String> strings=iMdcProductionService.findListParentTreeAll(mdcEquipment.getId());
@@ -231,16 +242,6 @@
                         docFile.getFileName(), docFile.getFileSuffix());
             }
         }
-        /*deviceDoc = docInfoService.findByAttrAndDocName(docInfo.getDocName(), 4, stream.getDeviceId());
-        if(deviceDoc != null) {
-            // 鍒犻櫎 澶囦唤  瑕嗙洊 鍘熸湁鐨�
-            List<String> strings =  deviceGroupService.findListParentTreeAll(deviceInfo.getGroupId());
-            if (strings != null && !strings.isEmpty()) {
-                String path = StringUtils.join(strings.toArray(), "/");
-                boolean copyFileNc = FileUtilS.copyFileNcToBak(path + "/"+ deviceInfo.getDeviceNo(),
-                        docFile.getFileName(), docFile.getFileSuffix());
-            }
-        }*/
         getPermissionStreams(stream);
         //鎻掑叆鏂囨。鍒拌澶囧彂閫佹枃妗�
         if(deviceDoc == null) {
@@ -250,7 +251,7 @@
             DocRelative docRelative = new DocRelative();
             docRelative.setDocId(docInfo.getDocId());
             docRelative.setClassificationId(classification.getClassificationId());
-            docRelative.setAttributionType(4);
+            docRelative.setAttributionType(7);
             docRelative.setAttributionId(stream.getDeviceId());
             boolean b = docRelativeService.save(docRelative);
             if(!b) {
@@ -303,20 +304,20 @@
             DocInfo docInfo;
             //鍚屾剰鎿嶄綔
             if (StrUtil.isNotEmpty(en.getStepId())){
-                //宸ユ鎸囨淳
-                docInfo = docInfoService.getByDocAttrAndDocId(en.getDocId(), 6, en.getStepId());
+                //宸ユ涓嬭澶囩被鎸囨淳
+                docInfo = docInfoService.getByDocAttrAndDocId(en.getDocId(), 6, en.getDeviceTypeId());
             }else {
-                docInfo = docInfoService.getByDocAttrAndDocId(en.getDocId(), 5, en.getProcessId());
+                docInfo = docInfoService.getByDocAttrAndDocId(en.getDocId(), 5, en.getDeviceTypeId());
             }
             if(docInfo == null || docInfo.getDocStatus() == 3)
-                ExceptionCast.cast(ActivitiCode.ACT_DOC_ERROR);
+                               ExceptionCast.cast(ActivitiCode.ACT_DOC_ERROR);
             MdcEquipment mdcEquipment = iMdcEquipmentService.getById(en.getDeviceId());
             if(mdcEquipment == null)
                 ExceptionCast.cast(ActivitiCode.ACT_ASSIGN_DEVICE_NONE);
             DocFile docFile = docFileService.getById(en.getFileId());
             if(docFile == null)
                 ExceptionCast.cast(ActivitiCode.ACT_FILE_ERROR);
-            DocInfo deviceDoc = docInfoService.getByDocAttrAndDocId(en.getDocId(),4, en.getDeviceId());
+            DocInfo deviceDoc = docInfoService.getByDocAttrAndDocId(en.getDocId(),7, en.getDeviceId());
             if(deviceDoc != null) {
                 // 鍒犻櫎 澶囦唤  瑕嗙洊 鍘熸湁鐨�
                 List<String> strings =  iMdcProductionService.findListParentTreeAll(mdcEquipment.getId());
@@ -325,7 +326,7 @@
                     boolean copyFileNc = FileUtilS.copyFileNcToBak(path + "/"+ mdcEquipment.getEquipmentId(),
                             docFile.getFileName(), docFile.getFileSuffix());
                   /*  //docInfoService.getBaseMapper().deleteById(deviceDoc.getDocId());
-                    boolean doc = docRelativeService.deleteCopyDocByAttrNext(deviceDoc.getDocId(),4,stream.getDeviceId());
+                    boolean doc = docRelativeService.deleteCopyDocByAttrNext(deviceDoc.getDocId(),7,stream.getDeviceId());
                     if (!doc) {
                         ExceptionCast.cast(ActivitiCode.ACT_DOC_ERROR_DELEVE);
                     }*/
@@ -339,7 +340,7 @@
                 DocRelative docRelative = new DocRelative();
                 docRelative.setDocId(docInfo.getDocId());
                 docRelative.setClassificationId(classification.getClassificationId());
-                docRelative.setAttributionType(4);
+                docRelative.setAttributionType(7);
                 docRelative.setAttributionId(en.getDeviceId());
                 b = docRelativeService.save(docRelative);
             }
@@ -471,7 +472,7 @@
         if(deviceInfo == null)
             ExceptionCast.cast(DeviceCode.DEVICE_NOT_EXIST);
         //鍒犻櫎鍘熸潵璁惧涓嬬殑鎵�鏈夋枃妗�
-        docRelativeService.deleteByDocAttr(4, deviceInfo.getDeviceId());
+        docRelativeService.deleteByDocAttr(7, deviceInfo.getDeviceId());
         List<DocInfo> docInfoList = docInfoService.getByProcessIds(streams);
         if(docInfoList == null || docInfoList.isEmpty())
             ExceptionCast.cast(DocumentCode.DOC_NOT_EXIST);
@@ -490,7 +491,7 @@
             DocRelative docRelative = new DocRelative();
             docRelative.setDocId(docInfo.getDocId());
             docRelative.setClassificationId(classification.getClassificationId());
-            docRelative.setAttributionType(4);
+            docRelative.setAttributionType(7);
             docRelative.setAttributionId(deviceInfo.getDeviceId());
             boolean b = docRelativeService.save(docRelative);
             if(!b)
@@ -559,8 +560,8 @@
             if (!copyFileNc) {
                 ExceptionCast.cast(ActivitiCode.ACT_FILE_ERROR);
             } else {
-                DocInfo deviceDoc = docInfoService.getByDocAttrAndDocId(deviceId, 4, deviceId);
-                boolean doc = docRelativeService.deleteDocByAttr(deviceDoc.getDocId(), 4, deviceId);
+                DocInfo deviceDoc = docInfoService.getByDocAttrAndDocId(deviceId, 7, deviceId);
+                boolean doc = docRelativeService.deleteDocByAttr(deviceDoc.getDocId(), 7, deviceId);
                 if (!doc) {
                     ExceptionCast.cast(ActivitiCode.ACT_DOC_ERROR_DELEVE);
                 }
@@ -568,40 +569,56 @@
         }
     }
 
-    //鏉冮檺鏍¢獙
     private PermissionStreamNew getPermissionStreams(AssignFileStream stream) {
-        PermissionStreamNew permissionStreams;
         LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        DeviceType deviceType = deviceTypeService.getById(stream.getAttributionId());
+        String attributionId = deviceType != null ? deviceType.getAttributionId() : stream.getAttributionId();
+
+        PermissionStreamNew permissionStreams;
         if (stream.getAttributionType().equals("5")) {
             // 宸ュ簭
-            ProcessStream processStream = processStreamService.getById(stream.getAttributionId());
-            if (processStream == null) {
-                ExceptionCast.cast(CommonCode.INVALID_PARAM);
-            }
-            stream.setProductId(processStream.getProductId());
-            stream.setComponentId(processStream.getComponentId());
-            stream.setPartsId(processStream.getPartsId());
-            stream.setProcessId(processStream.getProcessId());
-            permissionStreams = permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(processStream.getProcessId(),user.getId(),"5");
+            permissionStreams = handleProcess(stream, attributionId, user);
         } else {
             // 宸ユ
-            WorkStep workStep = workStepService.getById(stream.getAttributionId());
-            if (workStep == null) {
-                ExceptionCast.cast(CommonCode.INVALID_PARAM);
-            }
-            stream.setProductId(workStep.getProductId());
-            stream.setComponentId(workStep.getComponentId());
-            stream.setPartsId(workStep.getPartsId());
-            stream.setProcessId(workStep.getProcessId());
-            stream.setStepId(workStep.getId());
-            permissionStreams = permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(workStep.getId(),user.getId(),"6");
+            permissionStreams = handleWorkStep(stream, attributionId, user);
         }
-        if (permissionStreams == null ) {
+        if (permissionStreams == null) {
             ExceptionCast.cast(ActivitiCode.ACT_NODE_DEPART_NONE);
         }
         return permissionStreams;
     }
 
+    private PermissionStreamNew handleProcess(AssignFileStream stream, String attributionId, LoginUser user) {
+        ProcessStream processStream = processStreamService.getById(attributionId);
+        if (processStream == null) {
+            ExceptionCast.cast(CommonCode.INVALID_PARAM);
+        }
+        stream.setProductId(processStream.getProductId());
+        stream.setComponentId(processStream.getComponentId());
+        stream.setPartsId(processStream.getPartsId());
+        stream.setProcessId(processStream.getProcessId());
+        if (deviceTypeService.getById(stream.getAttributionId()) != null) {
+            stream.setDeviceTypeId(deviceTypeService.getById(stream.getAttributionId()).getId());
+        }
+        return permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(processStream.getProcessId(), user.getId(), "5");
+    }
+
+    private PermissionStreamNew handleWorkStep(AssignFileStream stream, String attributionId, LoginUser user) {
+        WorkStep workStep = workStepService.getById(attributionId);
+        if (workStep == null) {
+            ExceptionCast.cast(CommonCode.INVALID_PARAM);
+        }
+        stream.setProductId(workStep.getProductId());
+        stream.setComponentId(workStep.getComponentId());
+        stream.setPartsId(workStep.getPartsId());
+        stream.setProcessId(workStep.getProcessId());
+        stream.setStepId(workStep.getId());
+        if (deviceTypeService.getById(stream.getAttributionId()) != null) {
+            stream.setDeviceTypeId(deviceTypeService.getById(stream.getAttributionId()).getId());
+        }
+        return permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(workStep.getId(), user.getId(), "6");
+    }
+
     //鑾峰彇閮ㄩ棬淇℃伅
     //todo 淇敼
     private List<String> getDepartIds(List<PermissionStream> permissionStreams, String userId) {

--
Gitblit v1.9.3