zhangherong
2025-04-18 faf06098c4bf5c351cc190f97a743ddcf2d3fd0c
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamInspectionOrderServiceImpl.java
@@ -4,22 +4,33 @@
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.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.constant.DataBaseConstant;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.eam.constant.InspectionStatus;
import org.jeecg.modules.eam.constant.ReportRepairEnum;
import org.jeecg.modules.eam.entity.*;
import org.jeecg.modules.eam.entity.EamEquipment;
import org.jeecg.modules.eam.entity.EamInspectionOrder;
import org.jeecg.modules.eam.entity.EamInspectionOrderDetail;
import org.jeecg.modules.eam.entity.EamWeekMaintenanceOrder;
import org.jeecg.modules.eam.mapper.EamInspectionOrderMapper;
import org.jeecg.modules.eam.request.EamInspectionOrderQuery;
import org.jeecg.modules.eam.request.EamInspectionOrderRequest;
import org.jeecg.modules.eam.service.*;
import org.jeecg.modules.eam.service.IEamEquipmentService;
import org.jeecg.modules.eam.service.IEamInspectionOrderDetailService;
import org.jeecg.modules.eam.service.IEamInspectionOrderService;
import org.jeecg.modules.eam.service.IEamReportRepairService;
import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness;
import org.jeecg.modules.flowable.apithird.business.service.impl.FlowMyBusinessServiceImpl;
import org.jeecg.modules.flowable.apithird.service.FlowCallBackServiceI;
@@ -45,6 +56,9 @@
 */
@Service("IEamInspectionOrderService")
public class EamInspectionOrderServiceImpl extends ServiceImpl<EamInspectionOrderMapper, EamInspectionOrder> implements IEamInspectionOrderService, FlowCallBackServiceI {
    @Resource
    private EamInspectionOrderMapper eamInspectionOrderMapper;
    @Autowired
    private IEamInspectionOrderDetailService eamInspectionOrderDetailService;
    @Resource
@@ -65,8 +79,57 @@
    private IMdcUserProductionService mdcUserProductionService;
    @Autowired
    private IEamReportRepairService eamReportRepairService;
    @Autowired
    private IEamEquipmentFaultReasonService eamEquipmentFaultReasonService;
    @Override
    public IPage<EamInspectionOrder> queryPageList(Page<EamInspectionOrder> page, EamInspectionOrderQuery query) {
        QueryWrapper<EamInspectionOrder> queryWrapper = new QueryWrapper<>();
        //用户数据权限
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        if (sysUser == null) {
            return page;
        }
        if (StringUtils.isNotBlank(sysUser.getEquipmentIds())) {
            //选择了设备,根据设备id过滤设备
            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());
        }
        //查询条件过滤
        if (query != null) {
            if (StringUtils.isNotBlank(query.getEquipmentId())) {
                queryWrapper.eq("wmo.equipment_id", query.getEquipmentId());
            }
            if (StringUtils.isNotBlank(query.getOrderNum())) {
                queryWrapper.like("wmo.order_num", query.getOrderNum());
            }
            if (StringUtils.isNotBlank(query.getInspectionStatus())) {
                queryWrapper.eq("wmo.inspection_status", query.getInspectionStatus());
            }
            if (query.getInspectionDateBegin() != null && query.getInspectionDateEnd() != null) {
                queryWrapper.between("wmo.inspection_date", query.getInspectionDateBegin(), query.getInspectionDateEnd());
            }
            //排序
            if (StringUtils.isNotBlank(query.getColumn()) && StringUtils.isNotBlank(query.getOrder())) {
                String column = query.getColumn();
                if (column.endsWith(CommonConstant.DICT_TEXT_SUFFIX)) {
                    column = column.substring(0, column.lastIndexOf(CommonConstant.DICT_TEXT_SUFFIX));
                }
                if (DataBaseConstant.SQL_ASC.equalsIgnoreCase(query.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 eamInspectionOrderMapper.queryPageList(page, queryWrapper);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -75,11 +138,11 @@
        BeanUtils.copyProperties(eamInspectionOrderRequest,eamInspectionOrder);
        //修改状态
        if (StrUtil.isNotBlank(eamInspectionOrderRequest.getOperator())){
            eamInspectionOrder.setInspectionStatus(InspectionStatus.IN_PROGRESS.getCode());
            eamInspectionOrder.setInspectionStatus(InspectionStatus.UNDER_INSPECTION.name());
        }else {
            eamInspectionOrder.setInspectionStatus(InspectionStatus.INIT.getCode());
            eamInspectionOrder.setInspectionStatus(InspectionStatus.WAIT_INSPECTION.name());
        }
        save(eamInspectionOrder);
        //处理明细数据
        if(CollectionUtil.isNotEmpty(eamInspectionOrderRequest.getTableDetailList())) {
            eamInspectionOrderRequest.getTableDetailList().forEach(tableDetail -> {
@@ -99,7 +162,6 @@
                log.error("JSON转换失败:" + e.getMessage(), e);
            }
        }
        save(eamInspectionOrder);
        if (StrUtil.isNotBlank(eamInspectionOrderRequest.getOperator())){
            triggerProcess(eamInspectionOrder);
        }
@@ -144,13 +206,14 @@
        EamInspectionOrder eamInspectionOrder = new EamInspectionOrder();
        BeanUtils.copyProperties(eamInspectionOrderRequest, eamInspectionOrder);
        if (StrUtil.isNotEmpty(eamInspectionOrder.getOperator())){
            eamInspectionOrder.setInspectionStatus(InspectionStatus.IN_PROGRESS.getCode());
            eamInspectionOrder.setInspectionStatus(InspectionStatus.UNDER_INSPECTION.name());
        }
        updateById(eamInspectionOrder);
        super.updateById(eamInspectionOrder);
        //处理明细数据
        if (CollectionUtil.isNotEmpty(eamInspectionOrderRequest.getTableDetailList())) {
            eamInspectionOrderRequest.getTableDetailList().forEach(tableDetail -> {
                tableDetail.setOrderId(eamInspectionOrder.getId());
                tableDetail.setCreateTime(new Date());
            });
            //删除明细
            eamInspectionOrderDetailService.remove(new QueryWrapper<EamInspectionOrderDetail>().eq("order_id", eamInspectionOrder.getId()));
@@ -173,7 +236,7 @@
        }else {
            eamInspectionOrder.setOperator(user.getUsername());
            //修改状态
            eamInspectionOrder.setInspectionStatus(InspectionStatus.IN_PROGRESS.getCode());
            eamInspectionOrder.setInspectionStatus(InspectionStatus.UNDER_INSPECTION.name());
            this.triggerProcess(eamInspectionOrder);
            this.updateById(eamInspectionOrder);
            return true;
@@ -191,7 +254,7 @@
        if (eamInspectionOrder == null) {
            return false;
        }else {
            eamInspectionOrder.setInspectionStatus("5");
            eamInspectionOrder.setInspectionStatus(InspectionStatus.ABOLISH.name());
            return updateById(eamInspectionOrder);
        }
    }
@@ -251,7 +314,7 @@
            updateEamInspectionOrder(eamInspectionOrder);
            //查询数据,进行设备维修处理
            if (eamInspectionOrder.getInspectionStatus().equals(InspectionStatus.CONFIRMED.getCode())){
            if (eamInspectionOrder.getInspectionStatus().equals(InspectionStatus.WAIT_CONFIRM.name())){
                updateEamInspectionOrderDetail(eamInspectionOrder);
            }
@@ -260,6 +323,8 @@
            return Result.error("操作失败:" + e.getMessage());
        }
    }
    private boolean isValidRequest(EamInspectionOrderRequest request) {
        return StrUtil.isNotBlank(request.getTaskId()) && StrUtil.isNotBlank(request.getDataId());
@@ -302,7 +367,7 @@
    private void setupProcessVariables(EamInspectionOrderRequest request, EamInspectionOrder order, LoginUser user) {
        Map<String, Object> values = new HashMap<>();
        if (InspectionStatus.IN_PROGRESS.getCode().equals(order.getInspectionStatus()) && user.getUsername().equals(order.getOperator())) {
        if (InspectionStatus.UNDER_INSPECTION.name().equals(order.getInspectionStatus()) && user.getUsername().equals(order.getOperator())) {
            // 点检人点检结束
            String orgId = Optional.ofNullable(iEamEquipmentService.getById(order.getEquipmentId()))
                    .map(equipment -> equipment.getOrgId())
@@ -323,15 +388,15 @@
        } else {
            // 班组长确认
            values.put("dataId", order.getId());
            values.put("organization", request.getDealSuggestion());
            values.put("comment", request.getDealSuggestion());
            values.put("confirmation", request.getDealType());
            request.setComment(request.getDealSuggestion());
            if ("2".equals(request.getDealType())) {
            values.put("organization", request.getConfirmComment());
            values.put("comment", request.getConfirmComment());
            values.put("confirmation", request.getConfirmDealType());
            request.setComment(request.getConfirmComment());
            if ("2".equals(request.getConfirmDealType())) {
                // 班组长驳回
                List<String> usernames = new ArrayList<>();
                usernames.add(order.getOperator());
                order.setInspectionStatus("2");
                order.setInspectionStatus(InspectionStatus.UNDER_INSPECTION.name());
                values.put("NextAssignee", usernames);
            }
        }
@@ -340,16 +405,18 @@
    private void updateOrderStatus(Result result, EamInspectionOrderRequest request, EamInspectionOrder order, LoginUser user) {
        if (result.isSuccess()) {
            if (InspectionStatus.IN_PROGRESS.getCode().equals(order.getInspectionStatus()) && StrUtil.isEmpty(request.getDealType())) {
            if (InspectionStatus.UNDER_INSPECTION.name().equals(order.getInspectionStatus()) && StrUtil.isEmpty(request.getConfirmDealType())) {
                // 点检完成
                order.setInspectionStatus("3");
                order.setInspectionStatus(InspectionStatus.WAIT_CONFIRM.name());
                order.setOperateTime(new Date());
                eamInspectionOrderDetailService.remove(new QueryWrapper<EamInspectionOrderDetail>().eq("order_id", order.getId()));
                eamInspectionOrderDetailService.saveBatch(request.getTableDetailList());
            } else if (InspectionStatus.COMPLETED.getCode().equals(order.getInspectionStatus()) && StrUtil.isNotEmpty(request.getDealType())) {
            } else if (InspectionStatus.WAIT_CONFIRM.name().equals(order.getInspectionStatus()) && StrUtil.isNotEmpty(request.getConfirmDealType())) {
                // 班组长确认任务
                order.setInspectionStatus("4");
                order.setInspectionStatus(InspectionStatus.COMPLETE.name());
                order.setConfirmUser(user.getUsername());
                order.setConfirmComment(request.getConfirmComment());
                order.setConfirmDealType(request.getConfirmDealType());
                order.setConfirmTime(new Date());
            }
        }
@@ -364,30 +431,10 @@
     * @param eamInspectionOrder
     */
    private void updateEamInspectionOrderDetail(EamInspectionOrder eamInspectionOrder) {
        EamEquipmentFaultReason eamEquipmentFaultReason=eamEquipmentFaultReasonService.
                getOne(new QueryWrapper<EamEquipmentFaultReason>().eq("fault_code","EFR20250003"));
        List<EamInspectionOrderDetail> eamInspectionOrderDetails = eamInspectionOrderDetailService
                .list(new QueryWrapper<EamInspectionOrderDetail>()
                        .eq("order_id", eamInspectionOrder.getId()).eq("report_flag","1"));
        List<EamReportRepair> eamReportRepairs = new ArrayList<>();
        if (!eamInspectionOrderDetails.isEmpty()) {
            eamInspectionOrderDetails.forEach(item->{
                EamReportRepair eamReportRepair=new EamReportRepair();
                eamReportRepair.setEquipmentId(eamInspectionOrder.getEquipmentId());
                eamReportRepair.setFaultName(eamEquipmentFaultReason.getFaultName());
                eamReportRepair.setFaultType(eamEquipmentFaultReason.getFaultCategory());
                eamReportRepair.setFaultDescription(eamEquipmentFaultReason.getFaultDescription());
                eamReportRepair.setReportStatus(ReportRepairEnum.WAIT_REPAIR.name());
                eamReportRepair.setBreakdownFlag("1");
                eamReportRepair.setDelFlag(CommonConstant.DEL_FLAG_0);
                eamReportRepair.setFaultStartTime(new Date());
                eamReportRepair.setRemark(item.getExceptionDescription());
                eamReportRepairs.add(eamReportRepair);
            });
        }
        if (!eamReportRepairs.isEmpty()) {
            eamReportRepairService.saveBatch(eamReportRepairs);
        }
                        .eq("order_id", eamInspectionOrder.getId()).eq("report_flag","1").eq("inspection_result", "2"));
        eamReportRepairService.reportRepairFromInspection(eamInspectionOrder.getEquipmentId(), eamInspectionOrder.getOperator(), eamInspectionOrderDetails);
    }
    /**
@@ -406,12 +453,12 @@
        List<String> list = Arrays.asList(ids.split(","));
        QueryWrapper<EamInspectionOrder> queryWrapper =new QueryWrapper<>();
        queryWrapper.in("id", list);
        queryWrapper.eq("inspection_status", "1");
        queryWrapper.eq("inspection_status", InspectionStatus.WAIT_INSPECTION.name());
        List<EamInspectionOrder> eamInspectionOrderList =this.list(queryWrapper);
        if (!eamInspectionOrderList.isEmpty()){
            eamInspectionOrderList.forEach(eamInspectionOrder -> {
                eamInspectionOrder.setInspectionStatus(type);
                if (type.equals("2")){
                if (InspectionStatus.UNDER_INSPECTION.name().equals(type)){
                    eamInspectionOrder.setOperator(loginUser.getUsername());
                    this.triggerProcess(eamInspectionOrder);
                }else {