From 7bec214d03538b874e51ba90f09b388df243b713 Mon Sep 17 00:00:00 2001
From: Lius <Lius2225@163.com>
Date: 星期五, 11 七月 2025 17:42:07 +0800
Subject: [PATCH] 三保工单基础代码

---
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceOrderServiceImpl.java |  287 ++++++++++++++++++++++++++++++--------------------------
 1 files changed, 153 insertions(+), 134 deletions(-)

diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceOrderServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceOrderServiceImpl.java
index 219caca..fdff9fd 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceOrderServiceImpl.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceOrderServiceImpl.java
@@ -3,8 +3,10 @@
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fasterxml.jackson.core.JsonProcessingException;
@@ -38,6 +40,10 @@
 import org.jeecg.modules.flowable.apithird.service.FlowCommonService;
 import org.jeecg.modules.flowable.service.IFlowDefinitionService;
 import org.jeecg.modules.flowable.service.IFlowTaskService;
+import org.jeecg.modules.system.entity.BaseFactory;
+import org.jeecg.modules.system.entity.BaseFactoryUser;
+import org.jeecg.modules.system.service.IBaseFactoryService;
+import org.jeecg.modules.system.service.IBaseFactoryUserService;
 import org.jeecg.modules.system.service.ISysUserService;
 import org.jeecg.modules.system.vo.UserSelector;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -82,6 +88,11 @@
     @Autowired
     private IEamPrecisionCheckDetailService precisionCheckDetailService;
 
+    @Resource
+    private IBaseFactoryUserService baseFactoryUserService;
+    @Resource
+    private IBaseFactoryService baseFactoryService;
+
     @Override
     public IPage<EamThirdMaintenanceOrder> queryPageList(Page<EamThirdMaintenanceOrder> page, EamThirdMaintenanceQuery query) {
         QueryWrapper<EamThirdMaintenanceOrder> queryWrapper = new QueryWrapper<>();
@@ -95,8 +106,16 @@
             List<String> equipArr = Arrays.asList(sysUser.getEquipmentIds().split(","));
             queryWrapper.in("e.equipment_code", equipArr);
         } else {
-            //娌℃湁閫夋嫨璁惧锛屾牴鎹溅闂磋繃婊よ澶�
-            queryWrapper.exists("select 1 from mdc_user_production t where t.user_id={0} and t.pro_id=e.org_id ", sysUser.getId());
+            //娌℃湁閫夋嫨璁惧锛屾牴鎹腑蹇冭繃婊よ澶�
+            List<BaseFactoryUser> baseFactoryUserList = baseFactoryUserService.
+                    list(new LambdaQueryWrapper<BaseFactoryUser>().eq(BaseFactoryUser::getUserId, sysUser.getId()));
+            if (!CollectionUtils.isEmpty(baseFactoryUserList)) {
+                Set<String> factoryIds = baseFactoryUserList.stream().map(BaseFactoryUser::getFactoryId).collect(Collectors.toSet());
+                Set<String> factoryCode = baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getOrgCode).collect(Collectors.toSet());
+                queryWrapper.in("e.factory_org_code", factoryCode);
+            }else {
+                return page;
+            }
         }
         //鏌ヨ鏉′欢杩囨护
         if (query != null) {
@@ -330,138 +349,138 @@
         if (entity == null) {
             throw new JeecgBootException("瀹℃壒鐨勬暟鎹凡鍒犻櫎锛岃鍒锋柊閲嶈瘯锛�");
         }
-        // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛
-        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-        if (user == null || StrUtil.isBlank(user.getId())) {
-            throw new JeecgBootException("鏈幏鍙栧埌鐧诲綍鐢ㄦ埛锛岃閲嶆柊鐧诲綍鍚庡啀璇曪紒");
-        }
-        request.setAssignee(user.getUsername());
-        // 鑾峰彇娴佺▼涓氬姟璁板綍
-        FlowMyBusiness flowMyBusiness = flowMyBusinessService.getFlowMyBusiness(request.getInstanceId(), request.getTaskId());
-        if (flowMyBusiness == null) {
-            throw new JeecgBootException("娴佺▼瀹炰緥涓嶅瓨鍦紝璇峰埛鏂板悗閲嶈瘯锛�");
-        }
-
-        boolean userAuthorized = isUserAuthorized(flowMyBusiness, user);
-        if (!userAuthorized) {
-            throw new JeecgBootException("鐢ㄦ埛鏃犳潈鎿嶄綔姝や换鍔★紝璇峰埛鏂板悗閲嶈瘯锛�");
-        }
-        // 璁ら浠诲姟
-        if (!claimTask(flowMyBusiness.getTaskId(), user)) {
-            throw new JeecgBootException("浠诲姟涓嶅瓨鍦ㄣ�佸凡瀹屾垚鎴栧凡琚粬浜鸿棰嗭紒");
-        }
-
-        EamEquipment equipment = eamEquipmentService.getById(entity.getEquipmentId());
-        if (equipment == null) {
-            throw new JeecgBootException("璁惧涓嶅瓨鍦紝璇锋鏌ワ紒");
-        }
-
-        ThirdMaintenanceStatusEnum status = ThirdMaintenanceStatusEnum.getInstance(entity.getMaintenanceStatus());
-        if (status == null) {
-            return null;
-        }
-        //娴佺▼鍙橀噺
-        Map<String, Object> values = new HashMap<>();
-        List<String> userApprovalList;
-        List<UserSelector> userSelectors;
-        switch (status) {
-            case UNDER_MAINTENANCE:
-                boolean parallelCompletion = flowTaskService.checkParallelCompletion(flowMyBusiness.getTaskId());
-                //鎵ц瀹屾垚
-                userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), null, BusinessCodeConst.PCR0006);
-                if (CollectionUtil.isEmpty(userSelectors)) {
-                    throw new JeecgBootException("璁惧鏈垎閰嶇粰杞﹂棿鐝粍闀匡紝鏃犳硶杩涘叆涓嬬骇瀹℃壒锛�");
-                }
-                userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
-                values.put("dataId", entity.getId());
-                values.put("organization", "涓変繚鎵ц缁撴潫");
-                values.put("comment", "涓変繚鎵ц缁撴潫");
-                if (parallelCompletion) {
-                    values.put("NextAssignee", userApprovalList);
-                }
-                request.setComment("涓変繚鎵ц缁撴潫");
-                //璁剧疆entity
-                if (parallelCompletion) {
-                    entity.setMaintenanceStatus(ThirdMaintenanceStatusEnum.WAIT_CONFIRM.name());
-                    entity.setActualEndTime(new Date());
-                }
-                if ("maintenance_execution".equals(flowMyBusiness.getTaskNameId())) {
-                    //鎵ц淇濆吇
-                    //澶勭悊闄勪欢
-                    if (CollectionUtil.isNotEmpty(request.getImageFilesResult())) {
-                        List<FileUploadResult> fileUploadResultList = request.getImageFilesResult();
-                        ObjectMapper mapper = new ObjectMapper();
-                        try {
-                            String referenceFile = mapper.writeValueAsString(fileUploadResultList);
-                            entity.setImageFiles(referenceFile);
-                        } catch (JsonProcessingException e) {
-                            log.error("JSON杞崲澶辫触锛�" + e.getMessage(), e);
-                        }
-                    }
-                    //澶勭悊璇︽儏
-                    if (CollectionUtil.isNotEmpty(request.getTableDetailList())) {
-                        thirdMaintenanceOrderDetailService.updateBatchById(request.getTableDetailList());
-                    }
-                } else if ("precision_check".equals(flowMyBusiness.getTaskNameId())) {
-                    entity.setPrecisionChecker(user.getUsername());
-                    entity.setPrecisionCheckTime(new Date());
-                    //澶勭悊绮惧害妫�楠�
-                    if (CollectionUtil.isNotEmpty(request.getPrecisionDetailList())) {
-                        precisionCheckDetailService.updateBatchById(request.getPrecisionDetailList());
-                    }
-                }
-                if (parallelCompletion) {
-                    //鏇存柊璁惧淇濆吇鐘舵��
-                    eamEquipmentExtendService.updateEquipmentMaintenanceStatus(entity.getEquipmentId(), EquipmentMaintenanceStatus.THIRD_MAINTENANCE_WAIT_CONFIRM.name());
-                }
-                break;
-            case WAIT_CONFIRM:
-                userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(),null, BusinessCodeConst.PCR0003);
-                if (CollectionUtil.isEmpty(userSelectors)) {
-                    throw new JeecgBootException("璁惧鏈垎閰嶇粰杞﹂棿鐝粍闀匡紝鏃犳硶杩涘叆涓嬬骇瀹℃壒锛�");
-                }
-                //鐝粍闀跨‘璁�
-                userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
-                values.put("dataId", entity.getId());
-                values.put("organization", request.getConfirmComment());
-                values.put("comment", request.getConfirmComment());
-                values.put("NextAssignee", userApprovalList);
-                values.put("confirmation", request.getConfirmDealType());
-                request.setComment(request.getConfirmComment());
-                //璁剧疆entity
-                entity.setMaintenanceStatus(ThirdMaintenanceStatusEnum.WAIT_LEADER_CONFIRM.name());
-                entity.setConfirmUser(user.getUsername());
-                entity.setConfirmComment(request.getConfirmComment());
-                entity.setConfirmTime(new Date());
-                //澶勭悊鎶ヤ慨
-                List<EamThirdMaintenanceOrderDetail> collect = request.getTableDetailList().stream().filter((detail) -> CommonConstant.DEFAULT_1.equals(detail.getReportFlag())).collect(Collectors.toList());
-                if (CollectionUtil.isNotEmpty(collect)) {
-                    eamReportRepairService.reportRepairFromThirdMaintenance(equipment.getId(), entity.getOperator(), collect);
-                }
-                break;
-            case WAIT_LEADER_CONFIRM:
-                values.put("dataId", entity.getId());
-                values.put("organization", request.getLeaderConfirmComment());
-                values.put("comment", request.getLeaderConfirmComment());
-                request.setComment(request.getLeaderConfirmComment());
-                //璁剧疆entity
-                entity.setMaintenanceStatus(ThirdMaintenanceStatusEnum.COMPLETE.name());
-                entity.setConfirmLeader(user.getUsername());
-                entity.setLeaderConfirmComment(request.getLeaderConfirmComment());
-                entity.setLeaderConfirmTime(new Date());
-                //鏇存柊璁惧淇濆吇鐘舵��
-                eamEquipmentExtendService.updateEquipmentMaintenanceStatus(entity.getEquipmentId(), EquipmentMaintenanceStatus.NORMAL.name());
-                break;
-        }
-        request.setValues(values);
-
-        // 瀹屾垚娴佺▼浠诲姟
-        Result result = flowTaskService.complete(request);
-        if (!result.isSuccess()) {
-            throw new JeecgBootException("瀹℃壒澶辫触锛岃鍒锋柊鏌ョ湅锛�");
-        }
-        //淇濆瓨宸ュ崟
-        eamThirdMaintenanceOrderMapper.updateById(entity);
+//        // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛
+//        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+//        if (user == null || StrUtil.isBlank(user.getId())) {
+//            throw new JeecgBootException("鏈幏鍙栧埌鐧诲綍鐢ㄦ埛锛岃閲嶆柊鐧诲綍鍚庡啀璇曪紒");
+//        }
+//        request.setAssignee(user.getUsername());
+//        // 鑾峰彇娴佺▼涓氬姟璁板綍
+//        FlowMyBusiness flowMyBusiness = flowMyBusinessService.getFlowMyBusiness(request.getInstanceId(), request.getTaskId());
+//        if (flowMyBusiness == null) {
+//            throw new JeecgBootException("娴佺▼瀹炰緥涓嶅瓨鍦紝璇峰埛鏂板悗閲嶈瘯锛�");
+//        }
+//
+//        boolean userAuthorized = isUserAuthorized(flowMyBusiness, user);
+//        if (!userAuthorized) {
+//            throw new JeecgBootException("鐢ㄦ埛鏃犳潈鎿嶄綔姝や换鍔★紝璇峰埛鏂板悗閲嶈瘯锛�");
+//        }
+//        // 璁ら浠诲姟
+//        if (!claimTask(flowMyBusiness.getTaskId(), user)) {
+//            throw new JeecgBootException("浠诲姟涓嶅瓨鍦ㄣ�佸凡瀹屾垚鎴栧凡琚粬浜鸿棰嗭紒");
+//        }
+//
+//        EamEquipment equipment = eamEquipmentService.getById(entity.getEquipmentId());
+//        if (equipment == null) {
+//            throw new JeecgBootException("璁惧涓嶅瓨鍦紝璇锋鏌ワ紒");
+//        }
+//
+//        ThirdMaintenanceStatusEnum status = ThirdMaintenanceStatusEnum.getInstance(entity.getMaintenanceStatus());
+//        if (status == null) {
+//            return null;
+//        }
+//        //娴佺▼鍙橀噺
+//        Map<String, Object> values = new HashMap<>();
+//        List<String> userApprovalList;
+//        List<UserSelector> userSelectors;
+//        switch (status) {
+//            case UNDER_MAINTENANCE:
+//                boolean parallelCompletion = flowTaskService.checkParallelCompletion(flowMyBusiness.getTaskId());
+//                //鎵ц瀹屾垚
+//                userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), null, BusinessCodeConst.PCR0006);
+//                if (CollectionUtil.isEmpty(userSelectors)) {
+//                    throw new JeecgBootException("璁惧鏈垎閰嶇粰杞﹂棿鐝粍闀匡紝鏃犳硶杩涘叆涓嬬骇瀹℃壒锛�");
+//                }
+//                userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
+//                values.put("dataId", entity.getId());
+//                values.put("organization", "涓変繚鎵ц缁撴潫");
+//                values.put("comment", "涓変繚鎵ц缁撴潫");
+//                if (parallelCompletion) {
+//                    values.put("NextAssignee", userApprovalList);
+//                }
+//                request.setComment("涓変繚鎵ц缁撴潫");
+//                //璁剧疆entity
+//                if (parallelCompletion) {
+//                    entity.setMaintenanceStatus(ThirdMaintenanceStatusEnum.WAIT_CONFIRM.name());
+//                    entity.setActualEndTime(new Date());
+//                }
+//                if ("maintenance_execution".equals(flowMyBusiness.getTaskNameId())) {
+//                    //鎵ц淇濆吇
+//                    //澶勭悊闄勪欢
+//                    if (CollectionUtil.isNotEmpty(request.getImageFilesResult())) {
+//                        List<FileUploadResult> fileUploadResultList = request.getImageFilesResult();
+//                        ObjectMapper mapper = new ObjectMapper();
+//                        try {
+//                            String referenceFile = mapper.writeValueAsString(fileUploadResultList);
+//                            entity.setImageFiles(referenceFile);
+//                        } catch (JsonProcessingException e) {
+//                            log.error("JSON杞崲澶辫触锛�" + e.getMessage(), e);
+//                        }
+//                    }
+//                    //澶勭悊璇︽儏
+//                    if (CollectionUtil.isNotEmpty(request.getTableDetailList())) {
+//                        thirdMaintenanceOrderDetailService.updateBatchById(request.getTableDetailList());
+//                    }
+//                } else if ("precision_check".equals(flowMyBusiness.getTaskNameId())) {
+//                    entity.setPrecisionChecker(user.getUsername());
+//                    entity.setPrecisionCheckTime(new Date());
+//                    //澶勭悊绮惧害妫�楠�
+//                    if (CollectionUtil.isNotEmpty(request.getPrecisionDetailList())) {
+//                        precisionCheckDetailService.updateBatchById(request.getPrecisionDetailList());
+//                    }
+//                }
+//                if (parallelCompletion) {
+//                    //鏇存柊璁惧淇濆吇鐘舵��
+//                    eamEquipmentExtendService.updateEquipmentMaintenanceStatus(entity.getEquipmentId(), EquipmentMaintenanceStatus.THIRD_MAINTENANCE_WAIT_CONFIRM.name());
+//                }
+//                break;
+//            case WAIT_CONFIRM:
+//                userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(),null, BusinessCodeConst.PCR0003);
+//                if (CollectionUtil.isEmpty(userSelectors)) {
+//                    throw new JeecgBootException("璁惧鏈垎閰嶇粰杞﹂棿鐝粍闀匡紝鏃犳硶杩涘叆涓嬬骇瀹℃壒锛�");
+//                }
+//                //鐝粍闀跨‘璁�
+//                userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
+//                values.put("dataId", entity.getId());
+//                values.put("organization", request.getConfirmComment());
+//                values.put("comment", request.getConfirmComment());
+//                values.put("NextAssignee", userApprovalList);
+//                values.put("confirmation", request.getConfirmDealType());
+//                request.setComment(request.getConfirmComment());
+//                //璁剧疆entity
+//                entity.setMaintenanceStatus(ThirdMaintenanceStatusEnum.WAIT_LEADER_CONFIRM.name());
+//                entity.setConfirmUser(user.getUsername());
+//                entity.setConfirmComment(request.getConfirmComment());
+//                entity.setConfirmTime(new Date());
+//                //澶勭悊鎶ヤ慨
+//                List<EamThirdMaintenanceOrderDetail> collect = request.getTableDetailList().stream().filter((detail) -> CommonConstant.DEFAULT_1.equals(detail.getReportFlag())).collect(Collectors.toList());
+//                if (CollectionUtil.isNotEmpty(collect)) {
+//                    eamReportRepairService.reportRepairFromThirdMaintenance(equipment.getId(), entity.getOperator(), collect);
+//                }
+//                break;
+//            case WAIT_LEADER_CONFIRM:
+//                values.put("dataId", entity.getId());
+//                values.put("organization", request.getLeaderConfirmComment());
+//                values.put("comment", request.getLeaderConfirmComment());
+//                request.setComment(request.getLeaderConfirmComment());
+//                //璁剧疆entity
+//                entity.setMaintenanceStatus(ThirdMaintenanceStatusEnum.COMPLETE.name());
+//                entity.setConfirmLeader(user.getUsername());
+//                entity.setLeaderConfirmComment(request.getLeaderConfirmComment());
+//                entity.setLeaderConfirmTime(new Date());
+//                //鏇存柊璁惧淇濆吇鐘舵��
+//                eamEquipmentExtendService.updateEquipmentMaintenanceStatus(entity.getEquipmentId(), EquipmentMaintenanceStatus.NORMAL.name());
+//                break;
+//        }
+//        request.setValues(values);
+//
+//        // 瀹屾垚娴佺▼浠诲姟
+//        Result result = flowTaskService.complete(request);
+//        if (!result.isSuccess()) {
+//            throw new JeecgBootException("瀹℃壒澶辫触锛岃鍒锋柊鏌ョ湅锛�");
+//        }
+//        //淇濆瓨宸ュ崟
+//        eamThirdMaintenanceOrderMapper.updateById(entity);
         return entity;
     }
 

--
Gitblit v1.9.3