zhangherong
2025-07-11 d073e531919d945344ae37b2df0737f245e345d3
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusEvaluationOrderServiceImpl.java
@@ -1,6 +1,7 @@
package org.jeecg.modules.eam.service.impl;
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;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -9,15 +10,17 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.flowable.engine.TaskService;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.DataBaseConstant;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.eam.constant.BusinessCodeConst;
import org.jeecg.modules.eam.constant.EamTechnicalStatusEvaluationOrderEnum;
import org.jeecg.modules.eam.constant.HfTemplateCategoryEnum;
import org.jeecg.modules.eam.constant.OrderCreationMethodEnum;
import org.jeecg.modules.eam.constant.TechnicalStatusEvaluationOrderStatusEnum;
import org.jeecg.modules.eam.entity.EamBaseHFCode;
import org.jeecg.modules.eam.entity.EamEquipment;
import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationOrder;
@@ -26,18 +29,24 @@
import org.jeecg.modules.eam.request.EamTechnicalStatusEvaluationOrderQuery;
import org.jeecg.modules.eam.request.EamTechnicalStatusEvaluationOrderRequest;
import org.jeecg.modules.eam.service.*;
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.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.ISysBusinessCodeRuleService;
import org.jeecg.modules.system.service.ISysUserService;
import org.jeecg.modules.system.vo.UserSelector;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -46,8 +55,8 @@
 * @Date: 2025-07-09
 * @Version: V1.0
 */
@Service
public class EamTechnicalStatusEvaluationOrderServiceImpl extends ServiceImpl<EamTechnicalStatusEvaluationOrderMapper, EamTechnicalStatusEvaluationOrder> implements IEamTechnicalStatusEvaluationOrderService {
@Service("IEamTechnicalStatusEvaluationOrderService")
public class EamTechnicalStatusEvaluationOrderServiceImpl extends ServiceImpl<EamTechnicalStatusEvaluationOrderMapper, EamTechnicalStatusEvaluationOrder> implements IEamTechnicalStatusEvaluationOrderService, FlowCallBackServiceI {
    @Autowired
    private IBaseFactoryUserService baseFactoryUserService;
@@ -63,6 +72,21 @@
    private IEamTechnicalStatusEvaluationStandardService standardService;
    @Autowired
    private IEamBaseHFCodeService hfCodeService;
    @Autowired
    private FlowCommonService flowCommonService;
    @Autowired
    private IFlowDefinitionService flowDefinitionService;
    @Autowired
    private IFlowMyBusinessService flowMyBusinessService;
    @Autowired
    private TaskService taskService;
    @Autowired
    private IFlowTaskService flowTaskService;
    @Autowired
    private ISysUserService sysUserService;
    @Autowired
    private IEamEquipmentExtendService equipmentExtendService;
    @Override
    public IPage<EamTechnicalStatusEvaluationOrder> queryPageList(Page<EamTechnicalStatusEvaluationOrder> page, EamTechnicalStatusEvaluationOrderQuery query) {
@@ -148,7 +172,7 @@
        request.setOrderNum(codeSeq);
        request.setCreationMethod(OrderCreationMethodEnum.MANUAL.name());
        //状态初始化
        order.setEvaluationStatus(EamTechnicalStatusEvaluationOrderEnum.WAIT_EVALUATION.name());
        order.setEvaluationStatus(TechnicalStatusEvaluationOrderStatusEnum.WAIT_EVALUATION.name());
        order.setCreationMethod(request.getCreationMethod());
        //删除标记
        order.setDelFlag(CommonConstant.DEL_FLAG_0);
@@ -187,4 +211,105 @@
        }
        return true;
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean collect(String id) {
        EamTechnicalStatusEvaluationOrder entity = super.getBaseMapper().selectById(id);
        if (entity == null) {
            throw new JeecgBootException("要领取的工单不存在,请刷新重试!");
        }
        if (!TechnicalStatusEvaluationOrderStatusEnum.WAIT_EVALUATION.name().equals(entity.getEvaluationStatus())) {
            throw new JeecgBootException("该工单已进行过领取!");
        }
        EamTechnicalStatusEvaluationStandard standard = standardService.getById(entity.getStandardId());
        if(standard == null) {
            throw new JeecgBootException("设备保养标准不存在,请检查!");
        }
        EamEquipment equipment = equipmentService.getById(entity.getEquipmentId());
        if (equipment == null) {
            throw new JeecgBootException("设备不存在,添加失败!");
        }
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        if(sysUser == null) {
            throw new JeecgBootException("不是维修工,无法领取此工单!");
        }
        List<UserSelector> userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getFactoryOrgCode(), BusinessCodeConst.PCR0002);
        if (CollectionUtil.isEmpty(userSelectors)) {
            throw new JeecgBootException("设备未分配给维修工,无法领取!");
        }
        List<String> userApprovalList = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList());
        entity.setEvaluator(sysUser.getUsername());
        entity.setEvaluationStatus(TechnicalStatusEvaluationOrderStatusEnum.UNDER_EVALUATION.name());
        entity.setActualStartTime(new Date());
        this.getBaseMapper().updateById(entity);
        //启动流程
        flowCommonService.initActBusiness("工单号: " + entity.getOrderNum() + ";设备编号: " + equipment.getEquipmentCode() + ";安装位置" + equipment.getInstallationPosition(),
                entity.getId(), "IEamTechnicalStatusEvaluationOrderService", "technical_status_evaluation_process", null);
        Map<String, Object> variables = new HashMap<>();
        variables.put("dataId", entity.getId());
        if (StrUtil.isEmpty(entity.getRemark())) {
            variables.put("organization", "技术状态鉴定工单默认启动流程");
            variables.put("comment", "技术状态鉴定工单默认启动流程");
        } else {
            variables.put("organization", entity.getRemark());
            variables.put("comment", entity.getRemark());
        }
        variables.put("proofreading", true);
        if(CommonConstant.STATUS_1.equals(standard.getHasSafetyEquipmentCheck())) {
            variables.put("hasSafetyEquipmentCheck", CommonConstant.STATUS_1);
            variables.put("safety_equipment_check", userApprovalList);
            entity.setSafetyCheckCompleted(CommonConstant.STATUS_0);
        } else {
            variables.put("hasSafetyEquipmentCheck", CommonConstant.STATUS_0);
            variables.put("safety_equipment_check", userApprovalList);
        }
        if(CommonConstant.STATUS_1.equals(standard.getHasPrecisionCheck())) {
            variables.put("hasPrecisionCheck", CommonConstant.STATUS_1);
            variables.put("equipment_precision_check", userApprovalList);
            entity.setPrecisionCheckCompleted(CommonConstant.STATUS_0);
        } else {
            variables.put("hasPrecisionCheck", CommonConstant.STATUS_0);
            variables.put("equipment_precision_check", userApprovalList);
        }
        if(CommonConstant.STATUS_1.equals(standard.getHasOtherCheck())) {
            variables.put("hasOtherCheck", CommonConstant.STATUS_1);
            variables.put("other_check", userApprovalList);
            entity.setOtherCheckCompleted(CommonConstant.STATUS_0);
        } else {
            variables.put("hasOtherCheck ", CommonConstant.STATUS_0);
            variables.put("other_check", userApprovalList);
        }
        Result<?> result = flowDefinitionService.startProcessInstanceByKey("technical_status_evaluation_process", variables);
        if(result == null || !result.isSuccess()) {
            throw new JeecgBootException("启动流程失败,领取失败");
        }
        return true;
    }
    @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) {
        //业务是否干预流程,业务干预,流程干预,指定人员进行处理
        //获取下一步处理人
        Object object = values.get("NextAssignee");
        return (List<String>) object;
    }
}