lyh
2025-04-08 bf30552ba8237818b2d71b8dadfd0f1538457131
点检工单
已添加2个文件
已修改7个文件
678 ■■■■■ 文件已修改
lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/controller/DispatchFileController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/InspectionStatus.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/pom.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamInspectionOrderController.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamInspectionOrderDetailController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamInspectionOrder.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamInspectionOrderRequest.java 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamInspectionOrderService.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamInspectionOrderServiceImpl.java 344 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/controller/DispatchFileController.java
@@ -183,6 +183,12 @@
        return Result.OK(dispatchFile);
    }
    /**
     * æŸ¥è¯¢å®¡ç­¾åŸºæœ¬ä¿¡æ¯
     * @param id
     * @return
     */
    @ApiOperation(value = "查询审签基本信息", notes = "查询审签基本信息")
     @GetMapping(value = "/selectVoById")
     public Result<?> selectVoById(@RequestParam(name="id") String id){
         return dispatchFileService.queryDispatchFile(id);
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/InspectionStatus.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package org.jeecg.modules.eam.constant;
public enum InspectionStatus {
    INIT("1", "待点检"),
    IN_PROGRESS("2", "点检中"),
    COMPLETED("3", "点检完成" ),
    CONFIRMED("4", "已确认" );
    private final String code;
    private final String desc;
    InspectionStatus(String code, String desc) {
        this.code = code;
        this.desc = desc;
    }
    // Getters
    public String getCode() { return code; }
    public String getDesc() { return desc; }
}
lxzn-module-eam/pom.xml
@@ -30,6 +30,11 @@
            <artifactId>lxzn-module-mdc-common</artifactId>
            <version>3.4.3</version>
        </dependency>
        <dependency>
            <groupId>org.jeecgframework.boot</groupId>
            <artifactId>lxzn-module-flowable</artifactId>
            <version>${jeecgboot.version}</version>
        </dependency>
    </dependencies>
</project>
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamInspectionOrderController.java
@@ -10,8 +10,13 @@
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.modules.eam.constant.BusinessCodeConst;
import org.jeecg.modules.eam.constant.OrderCreationMethodEnum;
import org.jeecg.modules.eam.entity.EamInspectionOrder;
import org.jeecg.modules.eam.request.EamInspectionOrderRequest;
import org.jeecg.modules.eam.service.IEamInspectionOrderService;
import org.jeecg.modules.eam.service.IEamMaintenanceStandardService;
import org.jeecg.modules.system.service.ISysBusinessCodeRuleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
@@ -33,7 +38,10 @@
public class EamInspectionOrderController extends JeecgController<EamInspectionOrder, IEamInspectionOrderService> {
    @Autowired
    private IEamInspectionOrderService eamInspectionOrderService;
     @Autowired
     private ISysBusinessCodeRuleService businessCodeRuleService;
     @Autowired
     private IEamMaintenanceStandardService eamMaintenanceStandardService;
    /**
     * åˆ†é¡µåˆ—表查询
     *
@@ -57,36 +65,102 @@
    }
    /**
      * æŸ¥è¯¢ç‚¹æ£€å·¥å•基本信息
      * @param id
      * @return
      */
     @ApiOperation(value = "查询点检工单基本信息", notes = "查询点检工单基本信息")
     @GetMapping(value = "/selectVoById")
     public Result<?> selectVoById(@RequestParam(name="id") String id){
         return eamInspectionOrderService.selectVoById(id);
     }
    /**
     *   æ·»åŠ 
     *
     * @param eamInspectionOrder
     * @param eamInspectionOrderRequest
     * @return
     */
    @AutoLog(value = "点检工单-添加")
    @ApiOperation(value="点检工单-添加", notes="点检工单-添加")
    //@RequiresPermissions("org.jeecg.modules:点检工单:add")
    @PostMapping(value = "/add")
    public Result<String> add(@RequestBody EamInspectionOrder eamInspectionOrder) {
        eamInspectionOrderService.save(eamInspectionOrder);
    public Result<String> add(@RequestBody EamInspectionOrderRequest eamInspectionOrderRequest) {
        String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.INSPECTION_ORDER_CODE_RULE);
        eamInspectionOrderRequest.setOrderNum(codeSeq);
        eamInspectionOrderRequest.setCreationMethod(String.valueOf(OrderCreationMethodEnum.AUTO));
        eamInspectionOrderService.addInspectionOrder(eamInspectionOrderRequest);
        return Result.OK("添加成功!");
    }
    /**
     *  ç¼–辑
     *
     * @param eamInspectionOrder
     * @param eamInspectionOrderRequest
     * @return
     */
    @AutoLog(value = "点检工单-编辑")
    @ApiOperation(value="点检工单-编辑", notes="点检工单-编辑")
    //@RequiresPermissions("org.jeecg.modules:点检工单:edit")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
    public Result<String> edit(@RequestBody EamInspectionOrder eamInspectionOrder) {
        eamInspectionOrderService.updateById(eamInspectionOrder);
    public Result<String> edit(@RequestBody EamInspectionOrderRequest eamInspectionOrderRequest) {
        eamInspectionOrderService.editInspectionOrder(eamInspectionOrderRequest);
        return Result.OK("编辑成功!");
    }
    /**
      * é¢†å–点检工单
      * @param id
      * @return
      */
     @AutoLog(value = "点检工单-领取点检工单")
     @ApiOperation(value="点检工单-领取点检工单", notes="点检工单-领取点检工单")
     @GetMapping(value = "/receiveInspectionOrder")
     public Result<String> receiveInspectionOrder(@RequestParam(name="id") String id) {
         eamInspectionOrderService.takeInspectionOrder(id);
         return Result.OK("领取成功");
     }
     /**
      * ä½œåºŸç‚¹æ£€å·¥å•
      * @param id
      * @return
      */
     @AutoLog(value = "点检工单-作废点检工单")
     @ApiOperation(value="点检工单-作废点检工单", notes="点检工单-作废点检工单")
     @GetMapping(value = "/cancelInspectionOrder")
     public Result<String> cancelInspectionOrder(@RequestParam(name="id") String id) {
         eamInspectionOrderService.cancelInspectionOrder(id);
         return Result.OK("作废成功");
     }
     /**
      * æ‰¹é‡ä½œåºŸä¸Žé¢†å–
      * @param ids
      * @param type
      * @return
      */
     @AutoLog(value = "点检工单-批量作废与领取")
     @ApiOperation(value="点检工单-批量作废与领取", notes="点检工单-批量作废与领取")
     @GetMapping(value = "/cancelOrReceive")
     public Result<?> cancelOrReceive(@RequestParam(name="ids") String ids, @RequestParam(name="type") String type) {
         return eamInspectionOrderService.batchCancelOrTakeInspectionOrder(ids, type);
     }
     /**
      * ç‚¹æ£€æµç¨‹
      * @param eamInspectionOrderRequest
      * @return
      */
     @AutoLog(value = "点检流程")
     @ApiOperation(value="点检工单-点检流程", notes="点检工单-点检流程")
     @PostMapping("/approval")
     public Result<?> approval(@RequestBody EamInspectionOrderRequest eamInspectionOrderRequest) {
         return eamInspectionOrderService.inspectionProcess(eamInspectionOrderRequest);
     }
    /**
     *   é€šè¿‡id删除
     *
     * @param id
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamInspectionOrderDetailController.java
@@ -1,5 +1,6 @@
package org.jeecg.modules.eam.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -19,6 +20,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.List;
 /**
 * @Description: ç‚¹æ£€å·¥å•明细
@@ -158,4 +160,20 @@
        return super.importExcel(request, response, EamInspectionOrderDetail.class);
    }
    /**
     * ä¸€æ¬¡åŠ è½½
     *
     * @param orderId
     * @return
     */
    @ApiOperation(value = "保养标准明细-不分页列表查询", notes = "保养标准明细-不分页列表查询")
    @GetMapping(value = "/queryList")
    public Result<?> queryList(@RequestParam("orderId") String orderId) {
        LambdaQueryWrapper<EamInspectionOrderDetail> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(EamInspectionOrderDetail::getOrderId, orderId);
        queryWrapper.orderByAsc(EamInspectionOrderDetail::getItemCode);
        List<EamInspectionOrderDetail> list = eamInspectionOrderDetailService.list(queryWrapper);
        return Result.OK(list);
    }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamInspectionOrder.java
@@ -64,12 +64,12 @@
    /**设备ID*/
    @Excel(name = "设备ID", width = 15)
    @ApiModelProperty(value = "设备ID")
    @Dict(dictTable = "eam_equipment", dicCode = "equipment_code", dicText = "id")
    @Dict(dictTable = "eam_equipment", dicCode = "id", dicText = "equipment_code")
    private String equipmentId;
    /**标准ID*/
    @Excel(name = "保养标准ID", width = 15)
    @ApiModelProperty(value = "保养标准ID")
    @Dict(dictTable = "eam_maintenance_standard", dicCode = "standard_code", dicText = "id")
    @Dict(dictTable = "eam_maintenance_standard", dicCode = "id", dicText = "standard_code")
    private String standardId;
    /**点检日期*/
    @Excel(name = "点检日期(计划)", width = 15, format = "yyyy-MM-dd")
@@ -97,10 +97,12 @@
    /**创建方式*/
    @Excel(name = "创建方式", width = 15)
    @ApiModelProperty(value = "创建方式")
    @Dict(dicCode = "order_creation_method")
    private String creationMethod;
    /**点检状态*/
    @Excel(name = "点检状态", width = 15)
    @ApiModelProperty(value = "点检状态   å¾…点检-待确认-已完成")
    @ApiModelProperty(value = "点检状态   å¾…点检-点检中-待确认-已完成-作废")
    @Dict(dicCode = "inspection_status")
    private String inspectionStatus;
    /**班组长确认*/
    @Excel(name = "班组长确认", width = 15)
@@ -121,4 +123,14 @@
    @Excel(name = "照片文件ids;id以逗号分隔-执行时", width = 15)
    @ApiModelProperty(value = "照片文件ids;id以逗号分隔")
    private String imageFiles;
    /**标准名称*/
    @ApiModelProperty(value = "标准名称")
    private transient String standardName;
    /**保养周期;单位:天*/
    @ApiModelProperty(value = "保养周期;单位:天")
    private transient Integer maintenancePeriod;
    /**设备编号*/
    @ApiModelProperty(value = "设备编号")
    private transient String equipmentCode;
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamInspectionOrderRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,126 @@
package org.jeecg.modules.eam.request;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecg.common.api.vo.FileUploadResult;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecg.modules.eam.entity.EamInspectionOrderDetail;
import org.jeecg.modules.flowable.domain.vo.FlowTaskVo;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class EamInspectionOrderRequest extends FlowTaskVo implements Serializable {
    private static final long serialVersionUID = 1L;
    /**主键*/
    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键")
    private String id;
    /**创建人*/
    @ApiModelProperty(value = "创建人")
    @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname")
    private String createBy;
    /**创建时间*/
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "创建时间")
    private Date createTime;
    /**更新人*/
    @ApiModelProperty(value = "更新人")
    private String updateBy;
    /**更新时间*/
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "更新时间")
    private Date updateTime;
    /**删除标记*/
    @Excel(name = "删除标记", width = 15)
    @ApiModelProperty(value = "删除标记")
    @TableLogic
    private Integer delFlag;
    /**工单号*/
    @Excel(name = "工单号", width = 15)
    @ApiModelProperty(value = "工单号")
    private String orderNum;
    /**设备ID*/
    @Excel(name = "设备ID", width = 15)
    @ApiModelProperty(value = "设备ID")
    @Dict(dictTable = "eam_equipment", dicCode = "equipment_code", dicText = "id")
    private String equipmentId;
    /**标准ID*/
    @Excel(name = "保养标准ID", width = 15)
    @ApiModelProperty(value = "保养标准ID")
    @Dict(dictTable = "eam_maintenance_standard", dicCode = "standard_code", dicText = "id")
    private String standardId;
    /**点检日期*/
    @Excel(name = "点检日期(计划)", width = 15, format = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "点检日期")
    private Date inspectionDate;
    /**点检过期时间*/
    @Excel(name = "点检过期时间", width = 15, format = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "点检过期时间")
    private Date expirationTime;
    /**点检时间*/
    @Excel(name = "点检时间(实际)", width = 15, format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "点检时间")
    private Date operateTime;
    /**点检人*/
    @Excel(name = "点检人", width = 15)
    @ApiModelProperty(value = "点检人-是领取人")
    @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname")
    private String operator;
    /**创建方式*/
    @Excel(name = "创建方式", width = 15)
    @ApiModelProperty(value = "创建方式")
    private String creationMethod;
    /**点检状态*/
    @Excel(name = "点检状态", width = 15)
    @ApiModelProperty(value = "点检状态   å¾…点检-待确认-已完成")
    private String inspectionStatus;
    /**班组长确认*/
    @Excel(name = "班组长确认", width = 15)
    @ApiModelProperty(value = "班组长确认--领取后产生")
    @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname")
    private String confirmUser;
    /**确认时间*/
    @Excel(name = "确认时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "确认时间")
    private Date confirmTime;
    /**备注*/
    @Excel(name = "备注", width = 15)
    @ApiModelProperty(value = "备注-点检工单创建备注")
    private String remark;
    /**照片文件ids;id以逗号分隔*/
    @Excel(name = "照片文件ids;id以逗号分隔-执行时", width = 15)
    @ApiModelProperty(value = "照片文件ids;id以逗号分隔")
    private String imageFiles;
    /**上传文件对系*/
    @ApiModelProperty(value = "上传文件对象")
    private List<FileUploadResult> fileList;
    /**列表 ä¿å…»é¡¹æ˜Žç»†*/
    @ApiModelProperty(value = "列表 ä¿å…»é¡¹æ˜Žç»†")
    private List<EamInspectionOrderDetail> tableDetailList;
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamInspectionOrderService.java
@@ -1,7 +1,9 @@
package org.jeecg.modules.eam.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.eam.entity.EamInspectionOrder;
import org.jeecg.modules.eam.request.EamInspectionOrderRequest;
/**
 * @Description: ç‚¹æ£€å·¥å•
@@ -11,4 +13,54 @@
 */
public interface IEamInspectionOrderService extends IService<EamInspectionOrder> {
    /**
     * æ–°å¢žç‚¹æ£€å·¥å•
     * @param eamInspectionOrderRequest
     * @return
     */
    boolean addInspectionOrder(EamInspectionOrderRequest eamInspectionOrderRequest);
    /**
     * ç¼–辑点检工单
     * @param eamInspectionOrderRequest
     * @return
     */
    boolean editInspectionOrder(EamInspectionOrderRequest eamInspectionOrderRequest);
    /**
     * é¢†å–点检工单
     * @param id
     * @return
     */
    boolean takeInspectionOrder(String id);
    /**
     * ä½œåºŸç‚¹æ£€å·¥å•
     * @param id
     * @return
     */
    boolean cancelInspectionOrder(String id);
    /**
     * æ‰¹é‡ä½œåºŸä¸Žé¢†å–
     * @param ids
     * @param type
     * @return
     */
    Result<?> batchCancelOrTakeInspectionOrder(String ids, String type);
    /**
     * æŸ¥è¯¢ç‚¹æ£€å·¥å•基本信息
     * @param id
     * @return
     */
    Result<?> selectVoById(String id);
    /**
     * ç‚¹æ£€æµç¨‹
     * @param eamInspectionOrderRequest
     * @return
     */
    Result<?> inspectionProcess(EamInspectionOrderRequest eamInspectionOrderRequest);
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamInspectionOrderServiceImpl.java
@@ -1,10 +1,40 @@
package org.jeecg.modules.eam.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.shiro.SecurityUtils;
import org.flowable.engine.TaskService;
import org.flowable.task.api.Task;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.modules.eam.constant.InspectionStatus;
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.mapper.EamInspectionOrderMapper;
import org.jeecg.modules.eam.request.EamInspectionOrderRequest;
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.flowable.apithird.business.entity.FlowMyBusiness;
import org.jeecg.modules.flowable.apithird.business.service.impl.FlowMyBusinessServiceImpl;
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.SysUser;
import org.jeecg.modules.system.service.IMdcUserProductionService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
/**
 * @Description: ç‚¹æ£€å·¥å•
@@ -12,7 +42,317 @@
 * @Date:   2025-04-02
 * @Version: V1.0
 */
@Service
public class EamInspectionOrderServiceImpl extends ServiceImpl<EamInspectionOrderMapper, EamInspectionOrder> implements IEamInspectionOrderService {
@Service("IEamInspectionOrderService")
public class EamInspectionOrderServiceImpl extends ServiceImpl<EamInspectionOrderMapper, EamInspectionOrder> implements IEamInspectionOrderService, FlowCallBackServiceI {
    @Autowired
    private IEamInspectionOrderDetailService eamInspectionOrderDetailService;
    @Resource
    private FlowCommonService flowCommonService;
    @Resource
    private IFlowDefinitionService flowDefinitionService;
    @Autowired
    private IFlowTaskService flowTaskService;
    @Autowired
    private IEamEquipmentService eamEquipmentService;
    @Autowired
    private FlowMyBusinessServiceImpl flowMyBusinessService;
    @Autowired
    private TaskService taskService;
    @Autowired
    private IEamEquipmentService iEamEquipmentService;
    @Autowired
    private IMdcUserProductionService mdcUserProductionService;
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean addInspectionOrder(EamInspectionOrderRequest eamInspectionOrderRequest) {
        EamInspectionOrder eamInspectionOrder = new EamInspectionOrder();
        BeanUtils.copyProperties(eamInspectionOrderRequest,eamInspectionOrder);
        //修改状态
        if (StrUtil.isNotBlank(eamInspectionOrderRequest.getOperator())){
            eamInspectionOrder.setInspectionStatus(InspectionStatus.IN_PROGRESS.getCode());
        }else {
            eamInspectionOrder.setInspectionStatus(InspectionStatus.INIT.getCode());
        }
        save(eamInspectionOrder);
        //处理明细数据
        if(CollectionUtil.isNotEmpty(eamInspectionOrderRequest.getTableDetailList())) {
            eamInspectionOrderRequest.getTableDetailList().forEach(tableDetail -> {
                tableDetail.setOrderId(eamInspectionOrder.getId());
                tableDetail.setId(null);
            });
            eamInspectionOrderDetailService.saveBatch(eamInspectionOrderRequest.getTableDetailList());
        }
        if (StrUtil.isNotBlank(eamInspectionOrderRequest.getOperator())){
            triggerProcess(eamInspectionOrder);
        }
        return true;
    }
    /**
     * è§¦å‘流程
     * @param eamInspectionOrder
     * @return
     */
    public boolean triggerProcess(EamInspectionOrder eamInspectionOrder) {
        EamEquipment equipment = eamEquipmentService.getById(eamInspectionOrder.getEquipmentId());
        if (equipment == null) {
            return false;
        }else {
            eamInspectionOrder.setEquipmentCode(equipment.getEquipmentCode());
        }
        System.out.println("设备点检:" + eamInspectionOrder.getId());
        flowCommonService.initActBusiness("工单号:"+eamInspectionOrder.getOrderNum()+"设备编号"+eamInspectionOrder.getEquipmentCode()+"进行设备点检",
                eamInspectionOrder.getId(), "IEamInspectionOrderService", "eam_inspection", null);
        Map<String, Object> variables = new HashMap<>();
        variables.put("dataId", eamInspectionOrder.getId());
        if (StrUtil.isEmpty(eamInspectionOrder.getRemark())){
            variables.put("organization", "新增点检工单默认启动流程");
            variables.put("comment", "新增点检工单默认启动流程");
        }else {
            variables.put("organization", eamInspectionOrder.getRemark());
            variables.put("comment", eamInspectionOrder.getRemark());
        }
        variables.put("proofreading",true);
        List<String> usernames=new ArrayList<>();
        usernames.add(eamInspectionOrder.getOperator());
        variables.put("NextAssignee", usernames);
        Result result= flowDefinitionService.startProcessInstanceByKey("eam_inspection", variables);
        return result.isSuccess();
    }
    @Override
    public boolean editInspectionOrder(EamInspectionOrderRequest eamInspectionOrderRequest) {
        EamInspectionOrder eamInspectionOrder = new EamInspectionOrder();
        BeanUtils.copyProperties(eamInspectionOrderRequest, eamInspectionOrder);
        updateById(eamInspectionOrder);
        //处理明细数据
        if (CollectionUtil.isNotEmpty(eamInspectionOrderRequest.getTableDetailList())) {
            eamInspectionOrderRequest.getTableDetailList().forEach(tableDetail -> {
                tableDetail.setOrderId(eamInspectionOrder.getId());
            });
            //删除明细
            eamInspectionOrderDetailService.remove(new QueryWrapper<EamInspectionOrderDetail>().eq("order_id", eamInspectionOrder.getId()));
            eamInspectionOrderDetailService.saveBatch(eamInspectionOrderRequest.getTableDetailList());
        }
        return true;
    }
    /**
     * é¢†å–点检工单
     * @param id
     * @return
     */
    @Override
    public boolean takeInspectionOrder(String id){
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        EamInspectionOrder eamInspectionOrder=this.getById(id);
        if (eamInspectionOrder==null) {
            return false;
        }else {
            eamInspectionOrder.setOperator(user.getUsername());
            //修改状态
            eamInspectionOrder.setInspectionStatus(InspectionStatus.IN_PROGRESS.getCode());
            this.triggerProcess(eamInspectionOrder);
            this.updateById(eamInspectionOrder);
            return true;
        }
    }
    /**
     * ä½œåºŸç‚¹æ£€å·¥å•
     * @param id
     * @return
     */
    @Override
    public boolean cancelInspectionOrder(String id){
        EamInspectionOrder eamInspectionOrder = this.getById(id);
        if (eamInspectionOrder == null) {
            return false;
        }else {
            eamInspectionOrder.setInspectionStatus("5");
            return updateById(eamInspectionOrder);
        }
    }
    /**
     * ç‚¹æ£€æµç¨‹
     * @param eamInspectionOrderRequest
     * @return
     */
    @Override
    @Transactional
    public Result<?> inspectionProcess(EamInspectionOrderRequest eamInspectionOrderRequest){
        try {
            // å‚数校验
            if (!StrUtil.isNotBlank(eamInspectionOrderRequest.getTaskId()) || !StrUtil.isNotBlank(eamInspectionOrderRequest.getDataId())) {
                return Result.error("非法参数");
            }
            LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
            String userId = user.getId();
            eamInspectionOrderRequest.setAssignee(user.getUsername());
            if (!StrUtil.isNotBlank(userId)) {
                return Result.error("账号不存在");
            }
            // æ•°æ®æŸ¥è¯¢
            EamInspectionOrder eamInspectionOrder = this.getById(eamInspectionOrderRequest.getDataId());
            if (eamInspectionOrder == null) {
                return Result.error("未找到对应数据");
            }
            // 2. æŸ¥è¯¢æµç¨‹ä¸šåŠ¡è®°å½•ï¼ˆå¤„ç†ç©ºç»“æžœï¼‰
            List<FlowMyBusiness> businessList = flowMyBusinessService.list(
                    new QueryWrapper<FlowMyBusiness>()
                            .eq("process_instance_id", eamInspectionOrderRequest.getInstanceId())
            );
            if (businessList.isEmpty()) {
                return Result.error("流程记录不存在");
            }
            FlowMyBusiness flowMyBusiness = businessList.get(0);
            // 3. æ ¡éªŒç”¨æˆ·æ˜¯å¦ä¸ºå€™é€‰å¤„理人
            List<String> todoUsers = JSON.parseArray(flowMyBusiness.getTodoUsers(), String.class);
            if (todoUsers == null || !todoUsers.contains(user.getUsername())) {
                return Result.error("用户无权操作此任务");
            }
            // 4. è®¤é¢†ä»»åŠ¡ï¼ˆå¤„ç†å·²è¢«è®¤é¢†çš„æƒ…å†µï¼‰
            String taskId = flowMyBusiness.getTaskId();
            Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
            if (task == null) {
                return Result.error("任务不存在或已完成");
            }
            if (task.getAssignee() != null && !task.getAssignee().equals(user.getUsername())) {
                return Result.error("任务已被他人认领");
            }
            taskService.claim(taskId, user.getUsername());
            Map<String, Object> values = new HashMap<>();
            if ((InspectionStatus.IN_PROGRESS.getCode()).equals(eamInspectionOrder.getInspectionStatus())) {
                //点检人点检结束
                //查询对应班组长,作为下一节点处理人,存在多个处理人
                String orgId=iEamEquipmentService.getById(eamInspectionOrder.getEquipmentId()).getOrgId();
                //筛选出班组长岗位,post为PCR0003
                List<SysUser> sysUserList= mdcUserProductionService.queryByPostAndProId("PCR0003",orgId);
                List<String> usernameList;
                if (sysUserList.isEmpty()){
                    return Result.error("未找到该设备对应车间的班组长,请联系管理员处理");
                }else {
                    usernameList = sysUserList.stream().map(SysUser::getUsername).collect(Collectors.toList());
                }
                // è®¾ç½®æµç¨‹å˜é‡
                values.put("dataId", eamInspectionOrder.getId());
                values.put("organization", "点检人点检结束");
                values.put("comment","点检人点检结束" );
                values.put("NextAssignee", usernameList);
                eamInspectionOrderRequest.setComment("点检人点检结束");
            }else {
                //班组长确认
                values.put("dataId", eamInspectionOrder.getId());
                values.put("organization", "班组长确认");
                values.put("comment","班组长确认" );
                eamInspectionOrderRequest.setComment("班组长确认");
            }
            eamInspectionOrderRequest.setValues(values);
            // å®Œæˆæµç¨‹ä»»åŠ¡
            Result result = flowTaskService.complete(eamInspectionOrderRequest);
            if (result.isSuccess()) {
                // æ›´æ–°çŠ¶æ€
                if ((InspectionStatus.IN_PROGRESS.getCode()).equals(eamInspectionOrder.getInspectionStatus())) {
                    //点检完成
                    eamInspectionOrder.setInspectionStatus("3");
                    eamInspectionOrder.setInspectionDate(new Date());
                    eamInspectionOrderDetailService.remove(new QueryWrapper<EamInspectionOrderDetail>().eq("order_id", eamInspectionOrder.getId()));
                    eamInspectionOrderDetailService.saveBatch(eamInspectionOrderRequest.getTableDetailList());
                    this.updateById(eamInspectionOrder);
                }
            } else if ((InspectionStatus.COMPLETED.getCode()).equals(eamInspectionOrder.getInspectionStatus())){
                // ç­ç»„长确认任务
                eamInspectionOrder.setInspectionStatus("4");
                eamInspectionOrder.setConfirmUser(user.getUsername());
                eamInspectionOrder.setConfirmTime(new Date());
                this.updateById(eamInspectionOrder);
                //处理异常数据进入维修单
                return result;
            }
            return Result.OK("操作成功");
        } catch (Exception e) {
            return Result.error("操作失败:" + e.getMessage());
        }
    }
    /**
     * æ‰¹é‡ä½œåºŸä¸Žé¢†å–
     * @param ids
     * @param type
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result<?> batchCancelOrTakeInspectionOrder(String ids, String type){
        if (type == null) {
            return Result.error("请选择操作类型");
        }
        LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        List<String> list = Arrays.asList(ids.split(","));
        QueryWrapper<EamInspectionOrder> queryWrapper =new QueryWrapper<>();
        queryWrapper.in("id", list);
        queryWrapper.eq("inspection_status", "1");
        List<EamInspectionOrder> eamInspectionOrderList =this.list(queryWrapper);
        if (!eamInspectionOrderList.isEmpty()){
            eamInspectionOrderList.forEach(eamInspectionOrder -> {
                eamInspectionOrder.setInspectionStatus(type);
                if (type.equals("2")){
                    eamInspectionOrder.setOperator(loginUser.getUsername());
                }else {
                    eamInspectionOrder.setOperator(null);
                }
            });
            this.updateBatchById(eamInspectionOrderList);
        }
        return Result.OK("操作成功");
    }
    @Override
    public Result<?> selectVoById(String id){
        List<EamInspectionOrder> eamInspectionOrders=this.list(new QueryWrapper<EamInspectionOrder>().eq("id", id));
        List<EamInspectionOrderRequest> eamInspectionOrderRequestList=new ArrayList<>();
        eamInspectionOrders.forEach(eamInspectionOrder -> {
            EamInspectionOrderRequest eamInspectionOrderRequest=new EamInspectionOrderRequest();
            BeanUtils.copyProperties(eamInspectionOrder,eamInspectionOrderRequest);
            List<EamInspectionOrderDetail> eamInspectionOrderDetails=eamInspectionOrderDetailService
                    .list(new QueryWrapper<EamInspectionOrderDetail>().eq("order_id", eamInspectionOrder.getId()));
            eamInspectionOrderRequest.setTableDetailList(eamInspectionOrderDetails);
            eamInspectionOrderRequestList.add(eamInspectionOrderRequest);
        });
        return Result.ok(eamInspectionOrderRequestList);
    }
    @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;
    }
}