From 1b7f266af71b91254a22295f1bafc6a905e0b41f Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期六, 05 七月 2025 18:02:18 +0800
Subject: [PATCH] 保养规范修改流程处理

---
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java |  494 +++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 428 insertions(+), 66 deletions(-)

diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java
index 6d30e4b..b83c998 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java
@@ -1,35 +1,61 @@
 package org.jeecg.modules.eam.service.impl;
 
 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;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.ss.usermodel.WorkbookFactory;
 import org.apache.shiro.SecurityUtils;
+import org.flowable.engine.TaskService;
+import org.flowable.task.api.Task;
 import org.jeecg.common.api.vo.FileUploadResult;
+import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.modules.eam.base.entity.BaseFactory;
+import org.jeecg.modules.eam.base.entity.BaseFactoryUser;
+import org.jeecg.modules.eam.base.service.IBaseFactoryService;
+import org.jeecg.modules.eam.base.service.IBaseFactoryUserService;
+import org.jeecg.modules.eam.constant.BusinessCodeConst;
 import org.jeecg.modules.eam.constant.MaintenanceStandardStatusEnum;
+import org.jeecg.modules.eam.entity.EamEquipment;
 import org.jeecg.modules.eam.entity.EamMaintenanceStandard;
 import org.jeecg.modules.eam.entity.EamMaintenanceStandardDetail;
 import org.jeecg.modules.eam.mapper.EamMaintenanceStandardMapper;
 import org.jeecg.modules.eam.request.EamMaintenanceStandardRequest;
+import org.jeecg.modules.eam.service.IEamEquipmentService;
 import org.jeecg.modules.eam.service.IEamMaintenanceStandardDetailService;
 import org.jeecg.modules.eam.service.IEamMaintenanceStandardService;
+import org.jeecg.modules.eam.vo.EamMaintenanceStandardVo;
+import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness;
+import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService;
+import org.jeecg.modules.flowable.apithird.service.FlowCallBackServiceI;
+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.service.ISysUserService;
+import org.jeecg.modules.system.vo.UserSelector;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 /**
@@ -38,15 +64,31 @@
  * @Date:   2025-03-26
  * @Version: V1.0
  */
-@Service
-public class EamMaintenanceStandardServiceImpl extends ServiceImpl<EamMaintenanceStandardMapper, EamMaintenanceStandard> implements IEamMaintenanceStandardService {
+@Service("IEamMaintenanceStandardService")
+public class EamMaintenanceStandardServiceImpl extends ServiceImpl<EamMaintenanceStandardMapper, EamMaintenanceStandard> implements IEamMaintenanceStandardService , FlowCallBackServiceI {
 
     @Resource
     private EamMaintenanceStandardMapper eamMaintenanceStandardMapper;
-
     @Autowired
     private IEamMaintenanceStandardDetailService eamMaintenanceStandardDetailService;
-
+    @Autowired
+    private IBaseFactoryUserService baseFactoryUserService;
+    @Autowired
+    private IBaseFactoryService baseFactoryService;
+    @Resource
+    private FlowCommonService flowCommonService;
+    @Resource
+    private IFlowDefinitionService flowDefinitionService;
+    @Autowired
+    private IFlowTaskService flowTaskService;
+    @Autowired
+    private TaskService taskService;
+    @Autowired
+    private IFlowMyBusinessService flowMyBusinessService;
+    @Autowired
+    private ISysUserService sysUserService;
+    @Autowired
+    private IEamEquipmentService eamEquipmentService;
     @Override
     public IPage<EamMaintenanceStandard> queryPageList(Page<EamMaintenanceStandard> page, EamMaintenanceStandard eamMaintenanceStandard) {
         QueryWrapper<EamMaintenanceStandard> queryWrapper = new QueryWrapper<>();
@@ -56,13 +98,19 @@
         if (sysUser == null) {
             return page;
         }
-        if (StringUtils.isNotBlank(sysUser.getEquipmentIds())) {
+        if (StringUtils.isNotBlank(sysUser.getEamEquipmentIds())) {
             //閫夋嫨浜嗚澶囷紝鏍规嵁璁惧id杩囨护璁惧
-            List<String> equipArr = Arrays.asList(sysUser.getEquipmentIds().split(","));
+            List<String> equipArr = Arrays.asList(sysUser.getEamEquipmentIds().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)){
+                List<String> factoryIds = baseFactoryUserList.stream().map(BaseFactoryUser::getFactoryId).collect(Collectors.toList());
+                List<String> factoryCode= baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getFactoryCode).collect(Collectors.toList());
+                queryWrapper.in("e.factory_code", factoryCode);
+            }
         }
         if(eamMaintenanceStandard != null) {
             //缂栫爜 妯$硦鏌ヨ
@@ -71,7 +119,7 @@
             }
             //鍚嶇О 妯$硦鏌ヨ
             if(StringUtils.isNotBlank(eamMaintenanceStandard.getStandardName())) {
-                queryWrapper.like("ems.standard_name", eamMaintenanceStandard.getStandardCode());
+                queryWrapper.like("ems.standard_name", eamMaintenanceStandard.getStandardName());
             }
             //璁惧
             if(StringUtils.isNotBlank(eamMaintenanceStandard.getEquipmentId())) {
@@ -91,6 +139,10 @@
                         .or()
                         .like("e.equipment_code", eamMaintenanceStandard.getKeyword()));
             }
+            //id
+            if(StringUtils.isNotBlank(eamMaintenanceStandard.getId())) {
+                queryWrapper.eq("ems.id", eamMaintenanceStandard.getId());
+            }
         }
         queryWrapper.orderByDesc("ems.create_time");
         return eamMaintenanceStandardMapper.queryPageList(page, queryWrapper);
@@ -100,15 +152,10 @@
     @Transactional(rollbackFor = Exception.class)
     public boolean addMaintenanceStandard(EamMaintenanceStandardRequest standardRequest) {
         EamMaintenanceStandard entity = new EamMaintenanceStandard();
-        entity.setStandardCode(standardRequest.getStandardCode());
-        entity.setStandardName(standardRequest.getStandardName());
-        entity.setMaintenanceCategory(standardRequest.getMaintenanceCategory());
-        entity.setMaintenancePeriod(standardRequest.getMaintenancePeriod());
-        entity.setInitialDate(standardRequest.getInitialDate());
-        entity.setFileCode(standardRequest.getFileCode());
-        entity.setStandardStatus(MaintenanceStandardStatusEnum.NORMAL.name());
+        BeanUtils.copyProperties(standardRequest, entity);
+        entity.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_SUBMIT.name());
         //鐗堟湰閫掑
-        entity.setStandardVersion(CommonConstant.OPERATE_TYPE_1);
+        entity.setStandardVersion("v"+CommonConstant.OPERATE_TYPE_1);
         //璁惧澶勭悊
         entity.setEquipmentId(standardRequest.getEquipmentId());
         //鍒犻櫎鏍囪
@@ -117,17 +164,6 @@
         EamMaintenanceStandard exist = checkDuplicate(entity.getEquipmentId(), entity.getMaintenanceCategory());
         if(exist != null){
             throw new JeecgBootException("璁惧鏍囧噯宸插瓨鍦紝涓嶈兘閲嶅娣诲姞锛�");
-        }
-        //澶勭悊闄勪欢
-        if(CollectionUtil.isNotEmpty(standardRequest.getFileList())) {
-            FileUploadResult fileUploadResult = standardRequest.getFileList().get(0);
-            ObjectMapper mapper = new ObjectMapper();
-            try {
-                String referenceFile = mapper.writeValueAsString(fileUploadResult);
-                entity.setReferenceFile(referenceFile);
-            } catch (JsonProcessingException e) {
-                log.error("JSON杞崲澶辫触锛�" + e.getMessage(), e);
-            }
         }
         eamMaintenanceStandardMapper.insert(entity);
         //澶勭悊鏄庣粏鏁版嵁
@@ -149,20 +185,6 @@
         }
         entity.setStandardName(standardRequest.getStandardName());
         entity.setMaintenancePeriod(standardRequest.getMaintenancePeriod());
-        entity.setFileCode(standardRequest.getFileCode());
-        //澶勭悊闄勪欢
-        if(CollectionUtil.isNotEmpty(standardRequest.getFileList())) {
-            FileUploadResult fileUploadResult = standardRequest.getFileList().get(0);
-            ObjectMapper mapper = new ObjectMapper();
-            try {
-                String referenceFile = mapper.writeValueAsString(fileUploadResult);
-                entity.setReferenceFile(referenceFile);
-            } catch (JsonProcessingException e) {
-                log.error("JSON杞崲澶辫触锛�" + e.getMessage(), e);
-            }
-        }else {
-            entity.setReferenceFile(null);
-        }
         eamMaintenanceStandardMapper.updateById(entity);
         //澶勭悊璇︽儏
         if(CollectionUtil.isNotEmpty(standardRequest.getTableDetailList())) {
@@ -197,9 +219,6 @@
         if(entity == null){
             throw new JeecgBootException("缂栬緫鐨勬暟鎹凡鍒犻櫎锛岃鍒锋柊閲嶈瘯锛�");
         }
-        entity.setStandardStatus(MaintenanceStandardStatusEnum.ABOLISH.name());
-        //鍘熸潵鐨勪綔搴�
-        eamMaintenanceStandardMapper.updateById(entity);
 
         //鏂板涓�涓増鏈�
         EamMaintenanceStandard newEntity = new EamMaintenanceStandard();
@@ -208,10 +227,18 @@
         newEntity.setMaintenanceCategory(standardRequest.getMaintenanceCategory());
         newEntity.setMaintenancePeriod(standardRequest.getMaintenancePeriod());
         newEntity.setInitialDate(standardRequest.getInitialDate());
-        newEntity.setFileCode(standardRequest.getFileCode());
-        newEntity.setStandardStatus(MaintenanceStandardStatusEnum.NORMAL.name());
+        newEntity.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_SUBMIT.name());
         //鐗堟湰閫掑
-        newEntity.setStandardVersion(entity.getStandardVersion() + 1);
+        //鑾峰彇鏁板瓧
+        Pattern pattern = Pattern.compile("(\\d+)(?:\\.\\d+)*$");
+        Matcher matcher = pattern.matcher(entity.getStandardVersion());
+        if (matcher.find()) {
+            try {
+                int mainVersion = Integer.parseInt(matcher.group(1));
+                newEntity.setStandardVersion("v"+(mainVersion+1));
+            } catch (NumberFormatException ignored) {
+            }
+        }
         //璁惧澶勭悊
         newEntity.setEquipmentId(standardRequest.getEquipmentId());
         //鍒犻櫎鏍囪
@@ -220,17 +247,6 @@
         EamMaintenanceStandard exist = checkDuplicate(newEntity.getEquipmentId(), newEntity.getMaintenanceCategory());
         if(exist != null){
             throw new JeecgBootException("璁惧鏍囧噯宸插瓨鍦紝涓嶈兘閲嶅娣诲姞锛�");
-        }
-        //澶勭悊闄勪欢
-        if(CollectionUtil.isNotEmpty(standardRequest.getFileList())) {
-            FileUploadResult fileUploadResult = standardRequest.getFileList().get(0);
-            ObjectMapper mapper = new ObjectMapper();
-            try {
-                String referenceFile = mapper.writeValueAsString(fileUploadResult);
-                newEntity.setReferenceFile(referenceFile);
-            } catch (JsonProcessingException e) {
-                log.error("JSON杞崲澶辫触锛�" + e.getMessage(), e);
-            }
         }
         eamMaintenanceStandardMapper.insert(newEntity);
         //澶勭悊鏄庣粏鏁版嵁
@@ -254,7 +270,7 @@
         queryWrapper.eq(EamMaintenanceStandard::getEquipmentId, equipmentId);
         queryWrapper.eq(EamMaintenanceStandard::getMaintenanceCategory, maintenanceCategory);
         queryWrapper.eq(EamMaintenanceStandard::getDelFlag, CommonConstant.DEL_FLAG_0);
-        queryWrapper.eq(EamMaintenanceStandard::getStandardStatus, MaintenanceStandardStatusEnum.NORMAL.name());
+        queryWrapper.eq(EamMaintenanceStandard::getStandardStatus, MaintenanceStandardStatusEnum.WAIT_SUBMIT.name());
         queryWrapper.orderByDesc(EamMaintenanceStandard::getStandardVersion);
 
         List<EamMaintenanceStandard> list = eamMaintenanceStandardMapper.selectList(queryWrapper);
@@ -277,7 +293,7 @@
         query.setEquipmentId(equipmentId);
         query.setKeyword(keyword);
         query.setMaintenanceCategory(maintenanceCategory);
-        query.setStandardStatus(MaintenanceStandardStatusEnum.NORMAL.name());
+        query.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_SUBMIT.name());
         IPage<EamMaintenanceStandard> pageData = this.queryPageList(page, query);
         return pageData.getRecords();
     }
@@ -287,7 +303,353 @@
         LambdaQueryWrapper<EamMaintenanceStandard> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(EamMaintenanceStandard::getDelFlag, CommonConstant.DEL_FLAG_0);
         queryWrapper.eq(EamMaintenanceStandard::getMaintenanceCategory, maintenanceCategory);
-        queryWrapper.eq(EamMaintenanceStandard::getStandardStatus, MaintenanceStandardStatusEnum.NORMAL.name());
+        queryWrapper.eq(EamMaintenanceStandard::getStandardStatus, MaintenanceStandardStatusEnum.WAIT_SUBMIT.name());
         return eamMaintenanceStandardMapper.selectList(queryWrapper);
     }
+
+
+    /*娴佺▼涓氬姟浠g爜--------------------------寮�濮�*/
+
+    /**
+     * 娴佺▼鍚姩,淇濆瓨瀵瑰簲鐨勬暟鎹�
+     * @param id
+     * @return
+     */
+    @Override
+    public Result<?> saveEamMaintenanceStandardProcess(String id){
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        EamMaintenanceStandard maintenanceStandard=this.getById(id);
+        if (maintenanceStandard==null){
+            return Result.error("鏈壘鍒板搴斾繚鍏绘爣鍑�");
+        }
+        System.out.println("淇濆吇瑙勮寖娴佺▼锛�" + maintenanceStandard.getId());
+        flowCommonService.initActBusiness(maintenanceStandard.getStandardName()+"瑙勮寖杩涜娴佺▼瀹℃牳",
+                maintenanceStandard.getId(), "IEamMaintenanceStandardService", "eam_maintenance_standard", null);
+        Map<String, Object> variables = new HashMap<>();
+        variables.put("dataId", maintenanceStandard.getId());
+        variables.put("organization", "淇濆吇瑙勮寖鍚姩娴佺▼");
+        variables.put("comment", "淇濆吇瑙勮寖鍚姩娴佺▼");
+        variables.put("proofreading",true);
+        Result result= flowDefinitionService.startProcessInstanceByKey("eam_maintenance_standard", variables);
+        if (!result.isSuccess()) {
+            super.removeById(maintenanceStandard.getId());
+        }else {
+            maintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_REPAIR_DIRECTOR.name());
+            maintenanceStandard.setDesigner(user.getUsername());
+            maintenanceStandard.setDesignTime(new Date());
+            eamMaintenanceStandardMapper.updateById(maintenanceStandard);
+            //鑾峰彇flow鐨勬祦绋嬪疄渚媔d,璁剧疆涓嬩竴姝ョ殑澶勭悊浜哄憳
+            List<FlowMyBusiness> businessList = flowMyBusinessService.list(
+                    new QueryWrapper<FlowMyBusiness>()
+                            .eq("data_id", maintenanceStandard.getId())
+            );
+            if (businessList.isEmpty()) {
+                return Result.error("娴佺▼璁板綍涓嶅瓨鍦�");
+            }
+            FlowMyBusiness flowMyBusiness = businessList.get(0);
+            EamEquipment eamEquipment=eamEquipmentService.getById(maintenanceStandard.getEquipmentId());
+            BaseFactory baseFactory=baseFactoryService.getOne(new QueryWrapper<BaseFactory>().eq("org_code", eamEquipment.getFactoryOrgCode()));
+            List<UserSelector> userSelectorList=sysUserService.selectOperatorFactoryList(eamEquipment.getEquipmentCode(),baseFactory.getId(), BusinessCodeConst.PCR0007);
+            if (!CollectionUtils.isEmpty(userSelectorList)) {
+                List<String> usernameList=userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.toList());
+                flowMyBusiness.setTodoUsers(JSON.toJSONString(usernameList));
+                flowMyBusinessService.updateById(flowMyBusiness);
+            }
+        }
+        return result;
+    }
+
+    /**
+     * 瀹℃壒鎿嶄綔
+     * @param eamMaintenanceStandardVo
+     * @return
+     */
+    @Override
+    public Result<?> auditEamMaintenanceStandard(EamMaintenanceStandardVo eamMaintenanceStandardVo){
+        try {
+            // 鍙傛暟鏍¢獙
+            if (StrUtil.isEmpty(eamMaintenanceStandardVo.getTaskId()) || StrUtil.isEmpty(eamMaintenanceStandardVo.getDataId())) {
+                return Result.error("鍙傛暟閿欒");
+            }
+            LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+            String userId = user.getId();
+            eamMaintenanceStandardVo.setAssignee(user.getUsername());
+            if (StrUtil.isEmpty(userId)) {
+                return Result.error("鏈壘鍒板搴旂敤鎴�");
+            }
+
+            // 鏁版嵁鏌ヨ
+            EamMaintenanceStandard eamMaintenanceStandard = this.getById(eamMaintenanceStandardVo.getDataId());
+            if (eamMaintenanceStandard == null) {
+                return Result.error("鏈壘鍒板搴斾繚鍏绘爣鍑�");
+            }
+
+            // 2. 鏌ヨ娴佺▼涓氬姟璁板綍锛堝鐞嗙┖缁撴灉锛�
+            List<FlowMyBusiness> businessList = flowMyBusinessService.list(
+                    new QueryWrapper<FlowMyBusiness>()
+                            .eq("process_instance_id", eamMaintenanceStandardVo.getInstanceId())
+            );
+            if (businessList.isEmpty()) {
+                return Result.error("娴佺▼璁板綍涓嶅瓨鍦�");
+            }
+            FlowMyBusiness flowMyBusiness = businessList.get(0);
+
+            // 3. 鏍¢獙鐢ㄦ埛鏄惁涓哄�欓�夊鐞嗕汉
+            List<String> todoUsers = JSON.parseArray(flowMyBusiness.getTodoUsers(), String.class);
+            if (todoUsers == null || !todoUsers.contains(user.getUsername())) {
+                return Result.error("鐢ㄦ埛鏃犳潈鎿嶄綔姝や换鍔�");
+            }
+
+            // 4. 璁ら浠诲姟锛堝鐞嗗凡琚棰嗙殑鎯呭喌锛�
+            String taskId = flowMyBusiness.getTaskId();
+            Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
+            if (task == null) {
+                return Result.error("浠诲姟涓嶅瓨鍦ㄦ垨宸插畬鎴�");
+            }
+            if (task.getAssignee() != null && !task.getAssignee().equals(user.getUsername())) {
+                return Result.error("浠诲姟宸茶浠栦汉璁ら");
+            }
+            taskService.claim(taskId, user.getUsername());
+
+            // 璁剧疆娴佺▼鍙橀噺
+            Map<String, Object> values = setProcessVariables(eamMaintenanceStandard, userId, eamMaintenanceStandardVo);
+            eamMaintenanceStandardVo.setValues(values);
+            eamMaintenanceStandardVo.setComment(values.get("comment").toString());
+            // 瀹屾垚娴佺▼浠诲姟
+            Result result = flowTaskService.complete(eamMaintenanceStandardVo);
+            if (result.isSuccess()) {
+                if (eamMaintenanceStandardVo.getRepairManagerApproveResult() != null) {
+                    if (eamMaintenanceStandardVo.getRepairManagerApproveResult().equals("1")){
+                        List<FlowMyBusiness> newbusinessList = flowMyBusinessService.list(
+                                new QueryWrapper<FlowMyBusiness>()
+                                        .eq("process_instance_id", eamMaintenanceStandardVo.getInstanceId()));
+                        FlowMyBusiness newflowMyBusiness = newbusinessList.get(0);
+                        eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_TECHNICAL_DIRECTOR.name());
+                        //鑾峰彇flow鐨勬祦绋嬪疄渚媔d,璁剧疆涓嬩竴姝ョ殑澶勭悊浜哄憳
+                        EamMaintenanceStandard maintenanceStandard=this.getById(eamMaintenanceStandardVo.getDataId());
+                        EamEquipment eamEquipment=eamEquipmentService.getById(maintenanceStandard.getEquipmentId());
+                        BaseFactory baseFactory=baseFactoryService.getOne(new QueryWrapper<BaseFactory>().eq("org_code", eamEquipment.getFactoryOrgCode()));
+                        List<UserSelector> userSelectorList=sysUserService.selectOperatorFactoryList(eamEquipment.getEquipmentCode(),baseFactory.getId(), BusinessCodeConst.PCR0008);
+                        if (!CollectionUtils.isEmpty(userSelectorList)) {
+                            List<String> usernameList=userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.toList());
+                            newflowMyBusiness.setTodoUsers(JSON.toJSONString(usernameList));
+                            flowMyBusinessService.updateById(newflowMyBusiness);
+                        }
+                    }else {
+                        eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_SUBMIT.name());
+                    }
+                    eamMaintenanceStandard.setRepairManager(user.getUsername());
+                    eamMaintenanceStandard.setRepairManagerApproveResult(eamMaintenanceStandardVo.getRepairManagerApproveResult());
+                    eamMaintenanceStandard.setRepairManagerApproveTime(new Date());
+                    eamMaintenanceStandard.setRepairManagerApproveComment(eamMaintenanceStandardVo.getComment());
+                }
+                if (eamMaintenanceStandardVo.getTechnicalManagerApproveResult() != null) {
+                    if (eamMaintenanceStandardVo.getTechnicalManagerApproveResult().equals("1")){
+                        eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.START.name());
+                        //鍒ゆ柇鏄惁杩涜鍗囩増锛岄�氳繃璁惧缂栧彿銆佷繚鍏诲垎绫汇�佺姸鎬佽繘琛岀瓫閫�
+                        EamMaintenanceStandard maintenanceStandard=this.getById(eamMaintenanceStandardVo.getDataId());
+                        QueryWrapper<EamMaintenanceStandard> queryWrapper=new QueryWrapper<>();
+                        queryWrapper.eq("equipment_id", maintenanceStandard.getEquipmentId());
+                        queryWrapper.eq("maintenance_category", maintenanceStandard.getMaintenanceCategory());
+                        queryWrapper.eq("standard_status", MaintenanceStandardStatusEnum.START.name());
+                        List<EamMaintenanceStandard> list=eamMaintenanceStandardMapper.selectList(queryWrapper);
+                        if (!CollectionUtils.isEmpty(list)) {
+                            //浣滃簾鍘熸湁
+                            for (EamMaintenanceStandard eamMaintenanceStandard1 : list) {
+                                eamMaintenanceStandard1.setStandardStatus(MaintenanceStandardStatusEnum.ABOLISH.name());
+                                this.updateById(eamMaintenanceStandard1);
+                            }
+                        }
+                    }else {
+                        eamMaintenanceStandard.setStandardStatus(MaintenanceStandardStatusEnum.WAIT_SUBMIT.name());
+                    }
+                    eamMaintenanceStandard.setTechnicalManager(user.getUsername());
+                    eamMaintenanceStandard.setTechnicalManagerApproveResult(eamMaintenanceStandardVo.getTechnicalManagerApproveResult());
+                    eamMaintenanceStandard.setTechnicalManagerApproveTime(new Date());
+                    eamMaintenanceStandard.setTechnicalManagerApproveComment(eamMaintenanceStandardVo.getComment());
+                }
+                this.updateById(eamMaintenanceStandard);
+            } else {
+                return result;
+            }
+            return Result.OK("鎿嶄綔鎴愬姛");
+        } catch (Exception e) {
+            return Result.error("鎿嶄綔澶辫触锛�" + e.getMessage());
+        }
+    }
+
+    private Map<String, Object> setProcessVariables(EamMaintenanceStandard eamMaintenanceStandard, String userId, EamMaintenanceStandardVo eamMaintenanceStandardVo) {
+        Map<String, Object> values = new HashMap<>();
+        values.put("dataId", eamMaintenanceStandard.getId());
+        values.put("assignee", userId);
+        if (eamMaintenanceStandardVo.getRepairManagerApproveResult() != null) {
+            values.put("repairManagerApproveResult", eamMaintenanceStandardVo.getRepairManagerApproveResult());
+            values.put("organization", eamMaintenanceStandardVo.getRepairManagerApproveComment());
+            values.put("comment", eamMaintenanceStandardVo.getRepairManagerApproveComment());
+        }
+        if (eamMaintenanceStandardVo.getTechnicalManagerApproveResult() != null) {
+            values.put("technicalManagerApproveResult", eamMaintenanceStandardVo.getTechnicalManagerApproveResult());
+            values.put("organization", eamMaintenanceStandardVo.getTechnicalManagerApproveComment());
+            values.put("comment", eamMaintenanceStandardVo.getTechnicalManagerApproveComment());
+        }
+        return values;
+    }
+
+
+    @Override
+    public void afterFlowHandle(FlowMyBusiness business) {
+        business.getTaskNameId();//鎺ヤ笅鏉ュ鎵圭殑鑺傜偣
+        business.getValues();//鍓嶇浼犺繘鏉ョ殑鍙傛暟
+        business.getActStatus();
+    }
+
+    @Override
+    public Object getBusinessDataById(String dataId) {
+        return this.getById(dataId);
+    }
+
+    @Override
+    public Map<String, Object> flowValuesOfTask(String taskNameId, Map<String, Object> values) {
+        return null;
+    }
+
+    @Override
+    public List<String> flowCandidateUsernamesOfTask(String taskNameId, Map<String, Object> values) {
+        //涓氬姟鏄惁骞查娴佺▼锛屼笟鍔″共棰勶紝娴佺▼骞查锛屾寚瀹氫汉鍛樿繘琛屽鐞�
+        return null;
+    }
+
+    /*娴佺▼涓氬姟浠g爜--------------------------缁撴潫*/
+
+
+    /*瀵煎叆鏂囦欢--------------------------寮�濮�*/
+    /**
+     * 瀵煎叆鐐规琛ㄦ暟鎹�
+     * @param file Excel鏂囦欢
+     * @return 瀵煎叆缁撴灉
+     */
+//    public Result<?> importInspectionData(MultipartFile file) {
+//        int successCount = 0;
+//
+//        try (Workbook workbook = WorkbookFactory.create(file.getInputStream())) {
+//            Sheet sheet = workbook.getSheetAt(0);
+//            // 1. 瑙f瀽琛ㄥご淇℃伅
+//            Map<String, String> header = parseHeader(sheet, errors);
+//
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//
+//        return new ImportResult(successCount, errors);
+//    }
+
+    /**
+     * 瑙f瀽琛ㄥご淇℃伅
+     */
+//    private Map<String, String> parseHeader(Sheet sheet, List<ImportError> errors) {
+//        Map<String, String> header = new HashMap<>();
+//        try {
+//            Row headerRow = sheet.getRow(0);
+//            // 绀轰緥锛氱涓�琛岋細璁惧鍚嶇О:鍓茬偓  鍨嬪彿:gta001  缁熶竴缂栧彿:xc001
+//            String cellValue = getCellStringValue(headerRow.getCell(0));
+//
+//            // 浣跨敤姝e垯琛ㄨ揪寮忚В鏋愬叧閿俊鎭�
+//            Pattern pattern = Pattern.compile("璁惧鍚嶇О[:锛歖(\\S+)\\s+鍨嬪彿[:锛歖(\\S+)\\s+缁熶竴缂栧彿[:锛歖(\\S+)\\s+鏃ユ湡[:锛歖(\\S+)\\s+鍗曚綅[:锛歖(\\S+)");
+//            Matcher matcher = pattern.matcher(cellValue);
+//
+//            if (matcher.find()) {
+//                header.put("deviceName", matcher.group(1));
+//                header.put("deviceModel", matcher.group(2));
+//                header.put("deviceCode", matcher.group(3));
+//                header.put("inspectionMonth", matcher.group(4));
+//                header.put("unit", matcher.group(5));
+//            } else {
+//                errors.add(new ImportError("琛ㄥご鏍煎紡閿欒", cellValue, 1));
+//            }
+//        } catch (Exception e) {
+//            errors.add(new ImportError("瑙f瀽琛ㄥご寮傚父", e.getMessage(), 1));
+//        }
+//        return header;
+//    }
+//
+//    /**
+//     * 瑙f瀽姣忔棩鐐规椤圭洰
+//     */
+//    private List<InspectionItem> parseDailyItems(Sheet sheet, List<ImportError> errors) {
+//        List<InspectionItem> items = new ArrayList<>();
+//
+//        // 鐐规椤圭洰浠庣3琛屽紑濮嬶紙搴忓彿浠�1寮�濮嬶級
+//        int startRow = 2;
+//        int rowNum = startRow;
+//
+//        try {
+//            // 鎵惧埌姣忔棩鐐规琛ㄧ殑缁撴潫浣嶇疆锛堢淮鎶よ矗浠讳汉绛惧瓧锛�
+//            while (rowNum <= sheet.getLastRowNum()) {
+//                Row row = sheet.getRow(rowNum);
+//                if (row == null) {
+//                    rowNum++;
+//                    continue;
+//                }
+//
+//                // 鍒ゆ柇鏄惁鍒拌揪缁撴潫浣嶇疆
+//                String sequenceValue = getCellStringValue(row.getCell(0));
+//                if ("9".equals(sequenceValue) || "缁存姢璐d换浜虹瀛�".contains(sequenceValue)) {
+//                    break;
+//                }
+//
+//                // 瑙f瀽椤圭洰琛�
+//                InspectionItem item = new InspectionItem();
+//                item.setSequence(Integer.parseInt(sequenceValue));
+//                item.setProjectName(getCellStringValue(row.getCell(1)));
+//                item.setRequirement(getCellStringValue(row.getCell(2)));
+//
+//                items.add(item);
+//                rowNum++;
+//            }
+//        } catch (Exception e) {
+//            errors.add(new ImportError("瑙f瀽姣忔棩椤圭洰寮傚父", e.getMessage(), rowNum + 1));
+//        }
+//
+//        return items;
+//    }
+//
+//    /**
+//    * 瑙f瀽鍛ㄤ繚鍏婚」鐩�
+//     */
+//    private List<InspectionItem> parseWeeklyItems(Sheet sheet, List<ImportError> errors) {
+//        List<InspectionItem> items = new ArrayList<>();
+//
+//        try {
+//            // 瀹氫綅鍛ㄤ繚鍏绘爣棰樿锛堣鍙�11锛�
+//            int startRow = 10;
+//
+//            // 浠庣12琛屽紑濮嬫槸鍛ㄤ繚鍏婚」鐩�
+//            for (int rowNum = startRow + 1; rowNum <= sheet.getLastRowNum(); rowNum++) {
+//                Row row = sheet.getRow(rowNum);
+//                if (row == null) continue;
+//
+//                String sequenceValue = getCellStringValue(row.getCell(0));
+//
+//                // 閬囧埌缁撴潫鏍囧織鍒欏仠姝㈣В鏋�
+//                if ("鍛ㄤ繚鍏绘搷浣滆�呮墽琛�".contains(sequenceValue)) break;
+//
+//                try {
+//                    InspectionItem item = new InspectionItem();
+//                    item.setSequence(Integer.parseInt(sequenceValue));
+//                    item.setProjectName(getCellStringValue(row.getCell(1)));
+//                    item.setStandard(getCellStringValue(row.getCell(2)));
+//                    item.setRequirement(getCellStringValue(row.getCell(3))); // 鎵ц璁板綍
+//
+//                    items.add(item);
+//                } catch (Exception e) {
+//                    errors.add(new ImportError("瑙f瀽鍛ㄤ繚鍏婚」鐩紓甯�", e.getMessage(), rowNum + 1));
+//                }
+//            }
+//        } catch (Exception e) {
+//            errors.add(new ImportError("瀹氫綅鍛ㄤ繚鍏婚」鐩紓甯�", e.getMessage(), 0));
+//        }
+//
+//        return items;
+//    }
+    /*瀵煎叆鏂囦欢--------------------------缁撴潫*/
 }

--
Gitblit v1.9.3