lyh
2025-06-26 898dba8c4a14d5c9e50575e81350afcf1fe3479f
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamWeekMaintenanceOrderController.java
@@ -1,26 +1,39 @@
package org.jeecg.modules.eam.controller;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.Feature;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.util.TranslateDictTextUtils;
import org.jeecg.modules.eam.constant.BusinessCodeConst;
import org.jeecg.modules.eam.constant.OrderCreationMethodEnum;
import org.jeecg.modules.eam.constant.WeekMaintenanceStatusEnum;
import org.jeecg.modules.eam.entity.EamWeekMaintenanceOrder;
import org.jeecg.modules.eam.entity.EamWeekMaintenanceOrderDetail;
import org.jeecg.modules.eam.request.EamWeekMaintenanceBatchApprovalRequest;
import org.jeecg.modules.eam.request.EamWeekMaintenanceQuery;
import org.jeecg.modules.eam.request.EamWeekMaintenanceRequest;
import org.jeecg.modules.eam.service.IEamWeekMaintenanceOrderDetailService;
import org.jeecg.modules.eam.service.IEamWeekMaintenanceOrderService;
import org.jeecg.modules.flowable.domain.vo.WorkTaskDataVo;
import org.jeecg.modules.system.service.ISysBusinessCodeRuleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
/**
 * @Description: 周保工单
@@ -37,26 +50,31 @@
    private IEamWeekMaintenanceOrderService eamWeekMaintenanceOrderService;
    @Autowired
    private ISysBusinessCodeRuleService businessCodeRuleService;
    @Autowired
    private ObjectMapper objectMapper;
    @Autowired
    private TranslateDictTextUtils translateDictTextUtils;
    @Autowired
    private IEamWeekMaintenanceOrderDetailService weekMaintenanceOrderDetailService;
    /**
     * 分页列表查询
     *
     * @param eamWeekMaintenanceOrder
     * @param query
     * @param pageNo
     * @param pageSize
     * @param req
     * @return
     */
    @AutoLog(value = "周保工单-分页列表查询")
    @ApiOperation(value = "周保工单-分页列表查询", notes = "周保工单-分页列表查询")
    @GetMapping(value = "/list")
    public Result<?> queryPageList(EamWeekMaintenanceOrder eamWeekMaintenanceOrder,
    public Result<?> queryPageList(EamWeekMaintenanceQuery query,
                                   @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
                                   @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
                                   HttpServletRequest req) {
        QueryWrapper<EamWeekMaintenanceOrder> queryWrapper = QueryGenerator.initQueryWrapper(eamWeekMaintenanceOrder, req.getParameterMap());
        Page<EamWeekMaintenanceOrder> page = new Page<EamWeekMaintenanceOrder>(pageNo, pageSize);
        IPage<EamWeekMaintenanceOrder> pageList = eamWeekMaintenanceOrderService.page(page, queryWrapper);
//        QueryWrapper<EamWeekMaintenanceOrder> queryWrapper = QueryGenerator.initQueryWrapper(eamWeekMaintenanceOrder, req.getParameterMap());
        Page<EamWeekMaintenanceOrder> page = new Page<>(pageNo, pageSize);
        IPage<EamWeekMaintenanceOrder> pageList = eamWeekMaintenanceOrderService.queryPageList(page, query);
        return Result.OK(pageList);
    }
@@ -78,6 +96,7 @@
        }
        String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.WEEK_MAINTENANCE_CODE_RULE);
        request.setOrderNum(codeSeq);
        request.setCreationMethod(OrderCreationMethodEnum.MANUAL.name());
        boolean b = eamWeekMaintenanceOrderService.addWeekMaintenance(request);
        if (!b) {
            return Result.error("添加失败!");
@@ -88,14 +107,23 @@
    /**
     * 编辑
     *
     * @param eamWeekMaintenanceOrder
     * @param request
     * @return
     */
    @AutoLog(value = "周保工单-编辑")
    @ApiOperation(value = "周保工单-编辑", notes = "周保工单-编辑")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
    public Result<?> edit(@RequestBody EamWeekMaintenanceOrder eamWeekMaintenanceOrder) {
        eamWeekMaintenanceOrderService.updateById(eamWeekMaintenanceOrder);
    public Result<?> edit(@RequestBody EamWeekMaintenanceRequest request) {
        if (request == null) {
            return Result.error("添加的对象不能为空!");
        }
        if (CollectionUtil.isEmpty(request.getTableDetailList())) {
            return Result.error("保养项不能为空!");
        }
        boolean b = eamWeekMaintenanceOrderService.editWeekMaintenance(request);
        if (!b) {
            return Result.error("编辑失败!");
        }
        return Result.OK("编辑成功!");
    }
@@ -114,6 +142,45 @@
    }
    /**
     * 通过id作废
     *
     * @param id
     * @return
     */
    @AutoLog(value = "周保工单-作废")
    @ApiOperation(value = "周保工单-作废", notes = "周保工单-作废")
    @DeleteMapping(value = "/abolish")
    public Result<?> abolish(@RequestParam(name = "id", required = true) String id) {
        EamWeekMaintenanceOrder entity = eamWeekMaintenanceOrderService.getById(id);
        if (entity == null) {
            return Result.error("要作废的数据不存在,请刷新重试!");
        }
        if (!WeekMaintenanceStatusEnum.WAIT_MAINTENANCE.name().equals(entity.getMaintenanceStatus())) {
            return Result.error("该状态的数据不允许进行作废!");
        }
        entity.setMaintenanceStatus(WeekMaintenanceStatusEnum.ABOLISH.name());
        eamWeekMaintenanceOrderService.updateById(entity);
        return Result.OK("作废成功!");
    }
    /**
     * 通过id领取
     *
     * @param id
     * @return
     */
    @AutoLog(value = "周保工单-领取")
    @ApiOperation(value = "周保工单-领取", notes = "周保工单-领取")
    @GetMapping(value = "/collect")
    public Result<?> collect(@RequestParam(name = "id", required = true) String id) {
        boolean b = eamWeekMaintenanceOrderService.collect(id);
        if (!b) {
            Result.OK("领取失败!");
        }
        return Result.OK("领取成功!");
    }
    /**
     * 批量删除
     *
     * @param ids
@@ -128,16 +195,178 @@
    }
    /**
     * 通过id批量作废
     *
     * @param ids
     * @return
     */
    @AutoLog(value = "周保工单-批量作废")
    @ApiOperation(value = "周保工单-批量作废", notes = "周保工单-批量作废")
    @DeleteMapping(value = "/abolishBatch")
    public Result<?> abolishBatch(@RequestParam(name = "ids", required = true) String ids) {
        List<String> list = Arrays.asList(ids.split(","));
        AtomicInteger i = new AtomicInteger();
        list.forEach(id -> {
            EamWeekMaintenanceOrder entity = eamWeekMaintenanceOrderService.getById(id);
            if (entity != null && WeekMaintenanceStatusEnum.WAIT_MAINTENANCE.name().equals(entity.getMaintenanceStatus())) {
                entity.setMaintenanceStatus(WeekMaintenanceStatusEnum.ABOLISH.name());
                eamWeekMaintenanceOrderService.updateById(entity);
                i.getAndIncrement();
            }
        });
        return Result.OK("批量作废成功 " + i.get() + " 条工单!");
    }
    /**
     * 通过id批量领取
     *
     * @param ids
     * @return
     */
    @AutoLog(value = "周保工单-批量领取")
    @ApiOperation(value = "周保工单-批量领取", notes = "周保工单-批量领取")
    @DeleteMapping(value = "/collectBatch")
    public Result<?> collectBatch(@RequestParam(name = "ids", required = true) String ids) {
        List<String> list = Arrays.asList(ids.split(","));
        AtomicInteger i = new AtomicInteger();
        list.forEach(id -> {
            EamWeekMaintenanceOrder entity = eamWeekMaintenanceOrderService.getById(id);
            if (entity != null && WeekMaintenanceStatusEnum.WAIT_MAINTENANCE.name().equals(entity.getMaintenanceStatus())) {
                boolean b = eamWeekMaintenanceOrderService.collect(id);
                if (b) {
                    i.getAndIncrement();
                }
            }
        });
        return Result.OK("批量领取成功 " + i.get() + " 条工单!");
    }
    /**
     * 通过id查询
     *
     * @param id
     * @return
     */
    @AutoLog(value = "周保工单-通过id查询")
    @ApiOperation(value = "周保工单-通过id查询", notes = "周保工单-通过id查询")
    @GetMapping(value = "/queryById")
    public Result<?> queryById(@RequestParam(name = "id", required = true) String id) {
        EamWeekMaintenanceOrder eamWeekMaintenanceOrder = eamWeekMaintenanceOrderService.getById(id);
        return Result.OK(eamWeekMaintenanceOrder);
        if (eamWeekMaintenanceOrder == null) {
            return Result.error("未找到对应数据");
        }
        try {
            String json = objectMapper.writeValueAsString(eamWeekMaintenanceOrder);
            JSONObject item = JSONObject.parseObject(json, Feature.OrderedField);
            translateDictTextUtils.translateField("equipmentId", eamWeekMaintenanceOrder.getEquipmentId(), item, "eam_equipment,equipment_code,id");
            translateDictTextUtils.translateField("standardId", eamWeekMaintenanceOrder.getStandardId(), item, "eam_maintenance_standard,standard_name,id");
            translateDictTextUtils.translateField("operator", eamWeekMaintenanceOrder.getOperator(), item, "sys_user,realname,username");
            translateDictTextUtils.translateField("creationMethod", eamWeekMaintenanceOrder.getCreationMethod(), item, "order_creation_method");
            translateDictTextUtils.translateField("maintenanceStatus", eamWeekMaintenanceOrder.getMaintenanceStatus(), item, "week_maintenance_status");
            translateDictTextUtils.translateField("confirmUser", eamWeekMaintenanceOrder.getConfirmUser(), item, "sys_user,realname,username");
            translateDictTextUtils.translateField("confirmDealType", eamWeekMaintenanceOrder.getConfirmDealType(), item, "approved_rejected");
            translateDictTextUtils.translateField("initialAcceptanceUser", eamWeekMaintenanceOrder.getInitialAcceptanceUser(), item, "sys_user,realname,username");
            translateDictTextUtils.translateField("finalAcceptanceUser", eamWeekMaintenanceOrder.getFinalAcceptanceUser(), item, "sys_user,realname,username");
            return Result.OK(item);
        } catch (JsonProcessingException e) {
            return Result.error("数据转译失败!");
        }
    }
    /**
     * 我的待办,审批动作
     *
     * @param request
     * @return
     */
    @ApiOperation(value = "周保工单-执行操作", notes = "周保工单-执行操作")
    @PutMapping(value = "/approval")
    public Result<?> approval(@RequestBody EamWeekMaintenanceRequest request) {
        if (request == null) {
            return Result.error("审批的对象不能为空!");
        }
        if (CollectionUtil.isEmpty(request.getTableDetailList())) {
            return Result.error("保养项不能为空!");
        }
        // 检查请求参数
        if (StrUtil.isBlank(request.getTaskId()) || StrUtil.isBlank(request.getDataId()) || StrUtil.isBlank(request.getInstanceId())) {
            return Result.error("审批任务错误或不存在!");
        }
        EamWeekMaintenanceOrder b = eamWeekMaintenanceOrderService.approval(request);
        if (b == null) {
            return Result.error("操作失败!");
        }
        return Result.ok("操作成功!");
    }
    @ApiOperation(value = "周保工单-批量审批流程", notes = "周保工单-批量审批流程")
    @PostMapping("/batchApproval")
    public Result<?> batchApproval(@RequestBody EamWeekMaintenanceBatchApprovalRequest request) {
        if (request == null || CollectionUtil.isEmpty(request.getTaskList())) {
            return Result.error("没有需要审批的数据!");
        }
        int n = 0;
        StringBuilder errorMsg = new StringBuilder();
        List<WorkTaskDataVo> tastList = request.getTaskList();
        for (WorkTaskDataVo workTaskDataVo : tastList) {
            EamWeekMaintenanceRequest orderRequest = new EamWeekMaintenanceRequest();
            EamWeekMaintenanceOrder order = eamWeekMaintenanceOrderService.getById(workTaskDataVo.getDataId());
            if (order == null) {
                errorMsg.append("工单ID:");
                errorMsg.append(workTaskDataVo.getDataId());
                errorMsg.append(",不存在或已被删除!\n");
                continue;
            }
            if (!(WeekMaintenanceStatusEnum.WAIT_CONFIRM.name().equals(order.getMaintenanceStatus())
                    || WeekMaintenanceStatusEnum.WAIT_INITIAL_ACCEPTANCE.name().equals(order.getMaintenanceStatus())
                    || WeekMaintenanceStatusEnum.WAIT_FINAL_ACCEPTANCE.name().equals(order.getMaintenanceStatus()))) {
                errorMsg.append("工单号:");
                errorMsg.append(order.getOrderNum());
                errorMsg.append(",状态无法批量审批!\n");
                continue;
            }
            List<EamWeekMaintenanceOrderDetail> tableDetailList = weekMaintenanceOrderDetailService.queryListByOrderId(order.getId());
            try {
                orderRequest.setId(order.getId());
                orderRequest.setEquipmentId(order.getEquipmentId());
                //审批信息
                if (WeekMaintenanceStatusEnum.WAIT_CONFIRM.name().equals(order.getMaintenanceStatus())) {
                    orderRequest.setConfirmComment(request.getConfirmComment());
                    orderRequest.setConfirmDealType(request.getConfirmDealType());
                } else if (WeekMaintenanceStatusEnum.WAIT_INITIAL_ACCEPTANCE.name().equals(order.getMaintenanceStatus())) {
                    orderRequest.setInitialAcceptanceComment(request.getInitialAcceptanceComment());
                    orderRequest.setInitialAcceptanceFilesResult(request.getInitialAcceptanceFilesResult());
                } else if (WeekMaintenanceStatusEnum.WAIT_FINAL_ACCEPTANCE.name().equals(order.getMaintenanceStatus())) {
                    orderRequest.setFinalAcceptanceComment(request.getFinalAcceptanceComment());
                    orderRequest.setFinalAcceptanceFilesResult(request.getFinalAcceptanceFilesResult());
                }
                //任务信息
                orderRequest.setDataId(workTaskDataVo.getDataId());
                orderRequest.setTaskId(workTaskDataVo.getId());
                orderRequest.setUserId(workTaskDataVo.getAssignee());
                orderRequest.setInstanceId(workTaskDataVo.getProcInstId());
                orderRequest.setValues(workTaskDataVo.getVariables());
                orderRequest.setTableDetailList(tableDetailList);
                EamWeekMaintenanceOrder result = eamWeekMaintenanceOrderService.approval(orderRequest);
                if (result == null) {
                    errorMsg.append("工单号:");
                    errorMsg.append(order.getOrderNum());
                    errorMsg.append(",审批失败!\n");
                    continue;
                }
                n++;
            } catch (Exception e) {
                errorMsg.append("工单号:");
                errorMsg.append(order.getOrderNum());
                errorMsg.append(",审批失败,错误原因:");
                errorMsg.append(e.getMessage() + "\n");
            }
        }
        if (n > 0) {
            String message = "成功审批通过" + n + "条记录!\n" + errorMsg;
            return Result.OK(message);
        }
        return Result.error(errorMsg.toString());
    }
}