lyh
21 小时以前 8cd2d2d8c805be35db8f697926aea59792e80b36
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamRepairOrderServiceImpl.java
@@ -19,6 +19,7 @@
import org.jeecg.modules.eam.aspect.annotation.EquipmentHistoryLog;
import org.jeecg.modules.eam.constant.*;
import org.jeecg.modules.eam.dto.EamRepairOrderDto;
import org.jeecg.modules.eam.dto.EamRepairOrderExport;
import org.jeecg.modules.eam.entity.EamEquipment;
import org.jeecg.modules.eam.entity.EamRepairOrder;
import org.jeecg.modules.eam.entity.EamRepairPerson;
@@ -36,6 +37,7 @@
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.flowable.util.TimeUtil;
import org.jeecg.modules.system.entity.BaseFactory;
import org.jeecg.modules.system.entity.BaseFactoryUser;
import org.jeecg.modules.system.service.IBaseFactoryService;
@@ -205,21 +207,36 @@
        }
        BeanUtils.copyProperties(eamRepairOrderDto,eamRepairOrder);
        eamRepairOrder.setRepairStatus(EamRepairOrderRepairStatusEnum.UNDER_MAINTENANCE.name());
        this.updateById(eamRepairOrder);
        eamRepairOrder.setActualEndTime(new Date());
        //计算维修时间与故障时间
        Date startTime;
        Date endTime;
        //维修结束时间-维修开始时间=维修时长
        startTime=eamRepairOrder.getActualStartTime();
        endTime=eamRepairOrder.getActualEndTime();
        eamRepairOrder.setRepairDuration(TimeUtil.howLong(startTime,endTime,2));
        //维修结束时间-故障报修时间=故障时长
        EamReportRepair eamReportRepair=eamReportRepairService.getById(eamRepairOrder.getReportId());
        if (eamReportRepair==null){
            return false;
        }
        startTime=eamReportRepair.getFaultStartTime();
        endTime=eamRepairOrder.getActualEndTime();
        eamRepairOrder.setFaultDuration(TimeUtil.howLong(startTime,endTime,2));
        eamRepairOrder.setFaultStartTime(new Date());
        this.updateById(eamRepairOrder);
        eamReportRepair.setReportStatus(EamRepairOrderRepairStatusEnum.UNDER_MAINTENANCE.name());
        eamReportRepairService.updateById(eamReportRepair);
        List<EamRepairPerson> eamRepairPersonList=new ArrayList<>();
        iEamRepairPersonService.remove(new QueryWrapper<EamRepairPerson>().eq("repair_id",eamRepairOrderDto.getId()));
        if(CollectionUtils.isNotEmpty(eamRepairOrderDto.getEamRepairPersonList())) {
            List<EamRepairPerson> persons = eamRepairOrderDto.getEamRepairPersonList().stream()
                    .map(person -> new EamRepairPerson()
                            .setRepairId(eamRepairOrder.getId())
                            .setDelFlag(CommonConstant.DEL_FLAG_0))
                    .collect(Collectors.toList());
            iEamRepairPersonService.saveBatch(persons);
        if (CollectionUtils.isNotEmpty(eamRepairOrderDto.getEamRepairPersonList())) {
            eamRepairOrderDto.getEamRepairPersonList().forEach(eamRepairPerson -> {
                eamRepairPerson.setId(null);
                eamRepairPerson.setRepairId(eamRepairOrder.getId());
                eamRepairPerson.setDelFlag(CommonConstant.DEL_FLAG_0);
                eamRepairPersonList.add(eamRepairPerson);
            });
            iEamRepairPersonService.saveBatch(eamRepairPersonList);
        }
        return true;
    }
@@ -233,7 +250,21 @@
        if (CollectionUtils.isEmpty(eamRepairPersonList)) {
            throw new RuntimeException("维修人员不能为空");
        }
        if (StrUtil.isEmpty(eamRepairOrder.getRepairCode())) {}
        if (StrUtil.isEmpty(eamRepairOrder.getRepairCode())) {
            throw new RuntimeException("工单编号为空");
        }
        if (StrUtil.isEmpty(eamRepairOrder.getFaultReason())){
            throw new RuntimeException("故障原因为空");
        }
        if (StrUtil.isEmpty(eamRepairOrder.getFaultAnalysis())){
            throw new RuntimeException("故障分析为空");
        }
        if (StrUtil.isEmpty(eamRepairOrder.getFaultProcess())){
            throw new RuntimeException("排故过程为空");
        }
        if (StrUtil.isEmpty(eamRepairOrder.getFaultPrevent())){
            throw new RuntimeException("故障预防为空");
        }
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        EamEquipment eamEquipment = eamEquipmentService.getById(eamRepairOrder.getEquipmentId());
        List<UserSelector> userSelectorList = sysUserService.selectOperatorList(eamEquipment.getEquipmentCode(), eamEquipment.getFactoryOrgCode(), BusinessCodeConst.PCR0001);
@@ -325,7 +356,7 @@
            if ("1".equals(request.getConfirmResult())) {
                order.setRepairStatus(EamRepairOrderRepairStatusEnum.REPAIR_COMPLETED.name());
            }else {
                order.setRepairStatus(EamRepairOrderRepairStatusEnum.UNDER_MAINTENANCE.name());
                order.setRepairStatus(EamRepairOrderRepairStatusEnum.REJECTED.name());
            }
        }
        order.setConfirmer(user.getUsername());
@@ -334,7 +365,7 @@
        order.setConfirmComment(request.getConfirmComment());
        this.baseMapper.updateById(order);
        EamReportRepair eamReportRepair=eamReportRepairService.getById(order.getReportId());
        eamReportRepair.setReportStatus(EamRepairOrderRepairStatusEnum.UNDER_MAINTENANCE.name());
        eamReportRepair.setReportStatus(order.getRepairStatus());
        eamReportRepairService.updateById(eamReportRepair);
        return order;
    }
@@ -349,6 +380,74 @@
        return eamRepairOrderResponse;
    }
    /**
     * 维修工单导出
     * @param eamRepairOrderQuery
     * @return
     */
    @Override
    public List<EamRepairOrderExport> exportList(EamRepairOrderQuery eamRepairOrderQuery){
        QueryWrapper<EamRepairOrderExport> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("wmo.del_flag", CommonConstant.DEL_FLAG_0);
        //用户数据权限
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        if (sysUser == null) {
            return new ArrayList<>();
        }
        if (StringUtils.isNotBlank(sysUser.getEamEquipmentIds())) {
            //选择了设备,根据设备id过滤设备
            List<String> equipArr = Arrays.asList(sysUser.getEamEquipmentIds().split(","));
            queryWrapper.in("e.equipment_code", equipArr);
        } else {
            //没有选择设备,根据中心过滤设备
            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 new ArrayList<>();
            }
        }
        //查询条件过滤
        if (eamRepairOrderQuery != null) {
            if (StringUtils.isNotBlank(eamRepairOrderQuery.getEquipmentId())) {
                queryWrapper.eq("wmo.equipment_id", eamRepairOrderQuery.getEquipmentId());
            }
            if (StringUtils.isNotBlank(eamRepairOrderQuery.getEquipmentCode())) {
                queryWrapper.like("e.equipment_code", eamRepairOrderQuery.getEquipmentCode());
            }
            if (StringUtils.isNotBlank(eamRepairOrderQuery.getEquipmentName())) {
                queryWrapper.like("e.equipment_name", eamRepairOrderQuery.getEquipmentName());
            }
            if (StringUtils.isNotBlank(eamRepairOrderQuery.getRepairStatus())) {
                queryWrapper.eq("wmo.repair_status", eamRepairOrderQuery.getRepairStatus());
            }
            if (StringUtils.isNotBlank(eamRepairOrderQuery.getRepairCode())) {
                queryWrapper.like("wmo.repair_code", eamRepairOrderQuery.getRepairCode());
            }
            //排序
            if (StringUtils.isNotBlank(eamRepairOrderQuery.getColumn()) && StringUtils.isNotBlank(eamRepairOrderQuery.getOrder())) {
                String column = eamRepairOrderQuery.getColumn();
                if (column.endsWith(CommonConstant.DICT_TEXT_SUFFIX)) {
                    column = column.substring(0, column.lastIndexOf(CommonConstant.DICT_TEXT_SUFFIX));
                }
                if (DataBaseConstant.SQL_ASC.equalsIgnoreCase(eamRepairOrderQuery.getOrder())) {
                    queryWrapper.orderByAsc("wmo." + oConvertUtils.camelToUnderline(column));
                } else {
                    queryWrapper.orderByDesc("wmo." + oConvertUtils.camelToUnderline(column));
                }
            } else {
                queryWrapper.orderByDesc("wmo.create_time");
            }
        } else {
            queryWrapper.orderByDesc("wmo.create_time");
        }
        return this.baseMapper.queryExportList(queryWrapper);
    }
    private boolean claimTask(String taskId, LoginUser user) {
        Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
        if (task == null) {