zhangherong
15 小时以前 57df7097f99ffe16a4b81876f23aebf38b637ec5
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusChangeServiceImpl.java
@@ -15,22 +15,16 @@
import org.jeecg.common.constant.DataBaseConstant;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.DateUtils;
import org.jeecg.common.util.TranslateDictTextUtils;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.eam.constant.BusinessCodeConst;
import org.jeecg.modules.eam.constant.HfTemplateCategoryEnum;
import org.jeecg.modules.eam.constant.TechnicalStatusChangeOrderStatusEnum;
import org.jeecg.modules.eam.constant.TechnicalStatusEvaluationOrderChangeStatusEnum;
import org.jeecg.modules.eam.entity.EamBaseHFCode;
import org.jeecg.modules.eam.entity.EamEquipment;
import org.jeecg.modules.eam.entity.EamTechnicalStatusChange;
import org.jeecg.modules.eam.constant.*;
import org.jeecg.modules.eam.entity.*;
import org.jeecg.modules.eam.mapper.EamTechnicalStatusChangeMapper;
import org.jeecg.modules.eam.request.EamTechnicalStatusChangeQuery;
import org.jeecg.modules.eam.request.EamTechnicalStatusChangeRequest;
import org.jeecg.modules.eam.service.IEamBaseHFCodeService;
import org.jeecg.modules.eam.service.IEamEquipmentService;
import org.jeecg.modules.eam.service.IEamTechnicalStatusChangeDetailService;
import org.jeecg.modules.eam.service.IEamTechnicalStatusChangeService;
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;
@@ -48,6 +42,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
@@ -83,6 +78,12 @@
    private IFlowTaskService flowTaskService;
    @Autowired
    private TranslateDictTextUtils translateDictTextUtils;
    @Autowired
    private IEamEquipmentExtendService equipmentExtendService;
    @Autowired
    private IEamTechnicalStatusEvaluationStandardService evaluationStandardService;
    @Autowired
    private IEamTechnicalStatusEvaluationOrderService evaluationOrderService;
    @Override
    public IPage<EamTechnicalStatusChange> queryPageList(Page<EamTechnicalStatusChange> page, EamTechnicalStatusChangeQuery query) {
@@ -175,6 +176,7 @@
            detail.setCreateTime(null);
            detail.setUpdateBy(null);
            detail.setUpdateTime(null);
            detail.setChangeOrderId(order.getId());
        });
        changeDetailService.saveBatch(request.getTableDetailList());
        return true;
@@ -211,6 +213,7 @@
            detail.setCreateTime(null);
            detail.setUpdateBy(null);
            detail.setUpdateTime(null);
            detail.setChangeOrderId(entity.getId());
        });
        changeDetailService.saveBatch(request.getTableDetailList());
        return true;
@@ -370,6 +373,70 @@
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean acceptance(EamTechnicalStatusChangeDetail request) {
        // 获取当前登录用户
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        if (user == null || StrUtil.isBlank(user.getId())) {
            throw new JeecgBootException("未获取到登录用户,请重新登录后再试!");
        }
        EamTechnicalStatusChange order = this.getBaseMapper().selectById(request.getChangeOrderId());
        if(order == null) {
            throw new JeecgBootException("变更工单不存在,请刷新重试!");
        }
        if(!TechnicalStatusChangeOrderStatusEnum.COMPLETED.name().equals(order.getChangeStatus())) {
            throw new JeecgBootException("变更工单未完成,无法提交验收!");
        }
        TechnicalStatusChangeReasonEnum instance = TechnicalStatusChangeReasonEnum.getInstance(request.getChangeCategory());
        if(instance == null) {
            throw new JeecgBootException("变更原因无效,操作失败!");
        }
        EamEquipment equipment = equipmentService.getById(request.getEquipmentId());
        if(equipment == null) {
            throw new JeecgBootException("设备信息不存在,操作失败!");
        }
        EamEquipmentExtend extend = equipmentExtendService.getById(request.getEquipmentId());
        if(extend == null) {
            throw new JeecgBootException("设备信息不存在,操作失败!");
        }
        switch (instance) {
            case EQUIPMENT_MAJOR:
            case EQUIPMENT_RETROFITTING:
            case OTHER:
                //设备大修、改造、其他的逻辑
                request.setAcceptanceChecker(user.getUsername());
                request.setAcceptanceCheckTime(new Date());
                changeDetailService.updateById(request);
                //更新设备技术鉴定状态
                equipmentExtendService.updateTechnologyParam(request.getEquipmentId(), request.getAcceptanceCheckResult(), DateUtils.localDateToDate(LocalDate.now()), null);
                break;
            case EQUIPMENT_RELOCATION:
                //设备搬迁逻辑
                request.setAcceptanceChecker(user.getUsername());
                request.setAcceptanceCheckTime(new Date());
                request.setAcceptanceCheckResult(null);
                changeDetailService.updateById(request);
                //生成技术状态鉴定工单
                EamTechnicalStatusEvaluationStandard standard = evaluationStandardService.queryEnableStandard(request.getId());
                if (standard == null) {
                    throw new JeecgBootException("设备:{"+equipment.getEquipmentCode()+"},未配置技术状态鉴定规范,无法生成技术鉴定工单!");
                }
                EamTechnicalStatusEvaluationOrderRequest orderRequest = new EamTechnicalStatusEvaluationOrderRequest();
                orderRequest.setEquipmentId(extend.getId());
                orderRequest.setStandardId(standard.getId());
                orderRequest.setEvaluationDate(DateUtils.localDateToDate(LocalDate.now()));
                orderRequest.setFreezeOrderDate(null);
                orderRequest.setOrderExpirationDate(null);
                orderRequest.setCreationMethod(OrderCreationMethodEnum.AUTO.name());
                evaluationOrderService.addTechnicalStatusEvaluationOrder(orderRequest);
                //更新扩展表中的生成标识
                equipmentExtendService.updateTechnologyParam(equipment.getId(), null, null, CommonConstant.STATUS_1);
                break;
        }
        return false;
    }
    @Override
    public void afterFlowHandle(FlowMyBusiness business) {
        business.getTaskNameId();//接下来审批的节点
        business.getValues();//前端传进来的参数