lyh
7 天以前 99d6db0aab044b740ce02f57872c1e38ae647b58
三不原则分析 中心修改 台账导入导出字段修改
已添加3个文件
已修改12个文件
748 ■■■■■ 文件已修改
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EamReportThreeNoSpareEnum.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/EamEquipmentDto.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/EamReportThreeNoSpareDto.java 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamReportThreeNoSpare.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamRepairOrderMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamReportThreeNoSpareMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamReportThreeNoSpareMapper.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/request/EamReportThreeNoSpareQuery.java 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamReportThreeNoSpareService.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportRepairServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportThreeNoSpareServiceImpl.java 298 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamReportThreeNoSpareController.java 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/BaseFactoryServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EamReportThreeNoSpareEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package org.jeecg.modules.eam.constant;
public enum EamReportThreeNoSpareEnum {
    //待提交
    PENDING_SUBMIT,
    //待审批
    PENDING_APPROVAL,
    //已完成
    REPAIR_COMPLETED,
    //已驳回
    REJECTED;
}
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/EamEquipmentDto.java
@@ -269,7 +269,7 @@
    /**
     * éªŒæ”¶æ—¥æœŸ
     */
    @Excel(name = "投用日期", width = 25, format = "yyyy/MM/dd", orderNum = "29")
    @Excel(name = "验收日期", width = 25, format = "yyyy/MM/dd", orderNum = "29")
    @ApiModelProperty(value = "验收日期")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/EamReportThreeNoSpareDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,131 @@
package org.jeecg.modules.eam.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
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;
/**
 * @Description: â€œä¸‰ä¸æ”¾è¿‡çš„原则”分析表
 * @Author: jeecg-boot
 * @Date:   2025-07-17
 * @Version: V1.0
 */
@Data
@TableName("eam_report_three_no_spare")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="eam_report_three_no_spare对象", description="“三不放过的原则”分析表")
public class EamReportThreeNoSpareDto extends FlowTaskVo implements Serializable {
    private static final long serialVersionUID = 1L;
    /**主键*/
    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键")
    private String id;
    /**创建人*/
    @ApiModelProperty(value = "创建人")
    private String createBy;
    /**创建日期*/
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "创建日期")
    private Date createTime;
    /**更新人*/
    @ApiModelProperty(value = "更新人")
    private String updateBy;
    /**更新日期*/
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "更新日期")
    private Date updateTime;
    /**删除标记*/
    @Excel(name = "删除标记", width = 15)
    @ApiModelProperty(value = "删除标记")
    @TableLogic
    private Integer delFlag;
    /**报修ID*/
    @Excel(name = "报修ID", width = 15)
    @ApiModelProperty(value = "报修ID")
    private String reportId;
    /**设备ID*/
    @Excel(name = "设备ID", width = 15)
    @ApiModelProperty(value = "设备ID")
    private String equipmentId;
    /**提交状态*/
    @Excel(name = "提交状态", width = 15)
    @ApiModelProperty(value = "提交状态")
    private String submitStatus;
    /**原因分析*/
    @Excel(name = "原因分析", width = 15)
    @ApiModelProperty(value = "原因分析")
    private String causeAnalysis;
    /**培训教育*/
    @Excel(name = "培训教育", width = 15)
    @ApiModelProperty(value = "培训教育")
    private String isTrainingEducation;
    /**培训形式*/
    @Excel(name = "培训形式", width = 15)
    @ApiModelProperty(value = "培训形式")
    private String trainingFormat;
    /**培训内容*/
    @Excel(name = "培训内容", width = 15)
    @ApiModelProperty(value = "培训内容")
    private String trainingContent;
    /**培训人*/
    @Excel(name = "培训人", width = 15)
    @ApiModelProperty(value = "培训人")
    private String trainingUser;
    /**培训时间*/
    @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 trainingUserTime;
    /**预防措施*/
    @Excel(name = "预防措施", width = 15)
    @ApiModelProperty(value = "预防措施")
    private String preventionMeasures;
    /**单位领导*/
    @Excel(name = "单位领导", width = 15)
    @ApiModelProperty(value = "单位领导")
    private String unitLeader;
    /**领导意见*/
    @Excel(name = "领导意见", width = 15)
    @ApiModelProperty(value = "领导意见")
    private String leaderOpinion;
    /**领导确认结果*/
    @Excel(name = "领导确认结果", width = 15)
    @ApiModelProperty(value = "领导确认结果")
    private String leaderConfirmResult;
    /**领导确认时间*/
    @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 leaderConfirmTime;
    /**事故现象*/
    @Excel(name = "事故现象", width = 15)
    @ApiModelProperty(value = "事故现象")
    private transient String accidentPhenomenon;
    /**采取措施*/
    @Excel(name = "采取措施", width = 15)
    @ApiModelProperty(value = "采取措施")
    private transient String measure;
    /**造成结果*/
    @Excel(name = "造成结果", width = 15)
    @ApiModelProperty(value = "造成结果")
    private transient String causingResults;
}
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java
@@ -280,7 +280,7 @@
    /**
     * éªŒæ”¶æ—¥æœŸ
     */
    @Excel(name = "投用日期", width = 25, format = "yyyy/MM/dd", orderNum = "29")
    @Excel(name = "验收日期", width = 25, format = "yyyy/MM/dd", orderNum = "29")
    @ApiModelProperty(value = "验收日期")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamReportThreeNoSpare.java
@@ -56,7 +56,7 @@
    @Excel(name = "删除标记", width = 15)
    @ApiModelProperty(value = "删除标记")
    @TableLogic
    private String delFlag;
    private Integer delFlag;
    /**报修ID*/
    @Excel(name = "报修ID", width = 15)
    @ApiModelProperty(value = "报修ID")
@@ -65,13 +65,18 @@
    @Excel(name = "设备ID", width = 15)
    @ApiModelProperty(value = "设备ID")
    private String equipmentId;
    /**提交状态*/
    @Excel(name = "提交状态", width = 15)
    @ApiModelProperty(value = "提交状态")
    @Dict(dicCode = "report_three_no_spare_submit_status")
    private String submitStatus;
    /**原因分析*/
    @Excel(name = "原因分析", width = 15)
    @ApiModelProperty(value = "原因分析")
    private String causeAnalysis;
    /**培训教育是 å¦*/
    @Excel(name = "培训教育是 å¦", width = 15)
    @ApiModelProperty(value = "培训教育是 å¦")
    /**培训教育*/
    @Excel(name = "培训教育", width = 15)
    @ApiModelProperty(value = "培训教育")
    private String isTrainingEducation;
    /**培训形式*/
    @Excel(name = "培训形式", width = 15)
@@ -91,4 +96,38 @@
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "培训时间")
    private Date trainingUserTime;
    /**预防措施*/
    @Excel(name = "预防措施", width = 15)
    @ApiModelProperty(value = "预防措施")
    private String preventionMeasures;
    /**单位领导*/
    @Excel(name = "单位领导", width = 15)
    @ApiModelProperty(value = "单位领导")
    private String unitLeader;
    /**领导意见*/
    @Excel(name = "领导意见", width = 15)
    @ApiModelProperty(value = "领导意见")
    private String leaderOpinion;
    /**领导确认时间*/
    @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 leaderConfirmTime;
    /**领导确认结果*/
    @Excel(name = "领导确认结果", width = 15)
    @ApiModelProperty(value = "领导确认结果")
    private String leaderConfirmResult;
    /**事故现象*/
    @Excel(name = "事故现象", width = 15)
    @ApiModelProperty(value = "事故现象")
    private transient String accidentPhenomenon;
    /**采取措施*/
    @Excel(name = "采取措施", width = 15)
    @ApiModelProperty(value = "采取措施")
    private transient String measure;
    /**造成结果*/
    @Excel(name = "造成结果", width = 15)
    @ApiModelProperty(value = "造成结果")
    private transient String causingResults;
}
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamRepairOrderMapper.java
@@ -12,7 +12,7 @@
import java.util.List;
/**
 * @Description: ç»´ä¿®å·¥å•
 * @Description: ertns
 * @Author: Lius
 * @Date: 2025-04-03
 */
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamReportThreeNoSpareMapper.java
@@ -2,9 +2,13 @@
import java.util.List;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.eam.entity.EamReportThreeNoSpare;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.eam.request.EamReportThreeNoSpareQuery;
/**
 * @Description: â€œä¸‰ä¸æ”¾è¿‡çš„原则”分析表
@@ -14,4 +18,5 @@
 */
public interface EamReportThreeNoSpareMapper extends BaseMapper<EamReportThreeNoSpare> {
    IPage<EamReportThreeNoSpareQuery> queryPageList(IPage<EamReportThreeNoSpareQuery> page, @Param(Constants.WRAPPER) QueryWrapper<EamReportThreeNoSpareQuery> EamReportThreeNoSpareQuery);
}
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamReportThreeNoSpareMapper.xml
@@ -2,4 +2,23 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.eam.mapper.EamReportThreeNoSpareMapper">
    <select id="queryPageList" resultType="org.jeecg.modules.eam.request.EamReportThreeNoSpareQuery">
        SELECT
            ertns.*,
            e.equipment_code,
            e.equipment_name,
            e.equipment_model,
            e.installation_position,
            erar.accident_phenomenon,
            erar.measure,
            erar.causing_results
        FROM eam_report_three_no_spare ertns
                 LEFT JOIN eam_report_accidents_register erar
                           ON ertns.report_id = erar.report_id
                               AND erar.del_flag = 0
                 INNER JOIN eam_equipment e
                            ON erar.equipment_id = e.id
                                AND e.del_flag = 0
            ${ew.customSqlSegment}
    </select>
</mapper>
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/request/EamReportThreeNoSpareQuery.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,139 @@
package org.jeecg.modules.eam.request;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="三不原则", description="三不原则")
public class EamReportThreeNoSpareQuery implements Serializable {
    private static final long serialVersionUID = 1L;
    /**主键*/
    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键")
    private String id;
    /**创建人*/
    @ApiModelProperty(value = "创建人")
    private String createBy;
    /**创建日期*/
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "创建日期")
    private Date createTime;
    /**更新人*/
    @ApiModelProperty(value = "更新人")
    private String updateBy;
    /**更新日期*/
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "更新日期")
    private Date updateTime;
    /**删除标记*/
    @Excel(name = "删除标记", width = 15)
    @ApiModelProperty(value = "删除标记")
    @TableLogic
    private Integer delFlag;
    /**报修ID*/
    @Excel(name = "报修ID", width = 15)
    @ApiModelProperty(value = "报修ID")
    private String reportId;
    /**设备ID*/
    @Excel(name = "设备ID", width = 15)
    @ApiModelProperty(value = "设备ID")
    private String equipmentId;
    /**提交状态*/
    @Excel(name = "提交状态", width = 15)
    @ApiModelProperty(value = "提交状态")
    @Dict(dicCode = "report_three_no_spare_submit_status")
    private String submitStatus;
    /**原因分析*/
    @Excel(name = "原因分析", width = 15)
    @ApiModelProperty(value = "原因分析")
    private String causeAnalysis;
    /**培训教育*/
    @Excel(name = "培训教育", width = 15)
    @ApiModelProperty(value = "培训教育")
    @Dict(dicCode = "yn")
    private String isTrainingEducation;
    /**培训形式*/
    @Excel(name = "培训形式", width = 15)
    @ApiModelProperty(value = "培训形式")
    private String trainingFormat;
    /**培训内容*/
    @Excel(name = "培训内容", width = 15)
    @ApiModelProperty(value = "培训内容")
    private String trainingContent;
    /**培训人*/
    @Excel(name = "培训人", width = 15)
    @ApiModelProperty(value = "培训人")
    @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "username")
    private String trainingUser;
    /**培训时间*/
    @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 trainingUserTime;
    /**预防措施*/
    @Excel(name = "预防措施", width = 15)
    @ApiModelProperty(value = "预防措施")
    private String preventionMeasures;
    /**单位领导*/
    @Excel(name = "单位领导", width = 15)
    @ApiModelProperty(value = "单位领导")
    @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "username")
    private String unitLeader;
    /**领导意见*/
    @Excel(name = "领导意见", width = 15)
    @ApiModelProperty(value = "领导意见")
    private String leaderOpinion;
    /**领导确认结果*/
    @Excel(name = "领导确认结果", width = 15)
    @ApiModelProperty(value = "领导确认结果")
    private String leaderConfirmResult;
    /**领导确认时间*/
    @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 leaderConfirmTime;
    /**事故现象*/
    @Excel(name = "事故现象", width = 15)
    @ApiModelProperty(value = "事故现象")
    private transient String accidentPhenomenon;
    /**采取措施*/
    @Excel(name = "采取措施", width = 15)
    @ApiModelProperty(value = "采取措施")
    private transient String measure;
    /**造成结果*/
    @Excel(name = "造成结果", width = 15)
    @ApiModelProperty(value = "造成结果")
    private transient String causingResults;
    //列表展示
    @TableField(exist = false)
    private String equipmentCode;
    @TableField(exist = false)
    private String equipmentName;
    @TableField(exist = false)
    private String equipmentModel;
    @TableField(exist = false)
    private String installationPosition;
    private String column;
    private String order;
}
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamReportThreeNoSpareService.java
@@ -1,7 +1,13 @@
package org.jeecg.modules.eam.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.eam.dto.EamReportAccidentsRegisterDto;
import org.jeecg.modules.eam.dto.EamReportThreeNoSpareDto;
import org.jeecg.modules.eam.entity.EamReportThreeNoSpare;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.eam.request.EamReportThreeNoSpareQuery;
/**
 * @Description: â€œä¸‰ä¸æ”¾è¿‡çš„原则”分析表
@@ -11,4 +17,25 @@
 */
public interface IEamReportThreeNoSpareService extends IService<EamReportThreeNoSpare> {
    /**
     * åˆ†é¡µåˆ—表
     * @param page
     * @param EamReportThreeNoSpareQuery
     * @return
     */
    IPage<EamReportThreeNoSpareQuery> pageList(Page<EamReportThreeNoSpareQuery> page, EamReportThreeNoSpareQuery EamReportThreeNoSpareQuery);
    /**
     * æ“ä½œå·¥æäº¤-发起流程
     * @param id
     * @return
     */
    Result<?> submit(String id);
    /**
     * æµç¨‹å®¡æ ¸
     * @param eamReportThreeNoSpareDto
     */
    Result<?> audit(EamReportThreeNoSpareDto eamReportThreeNoSpareDto);
}
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java
@@ -62,7 +62,7 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
//    @EquipmentHistoryLog(operationTag = EquipmentOperationTagEnum.ACCEPTANCE, businessTable = "eam_equipment")
    @EquipmentHistoryLog(operationTag = EquipmentOperationTagEnum.ACCEPTANCE, businessTable = "eam_equipment")
    public EamEquipment saveEquipment(EamEquipment eamEquipment) {
        if (eamEquipment == null) {
            return null;
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportRepairServiceImpl.java
@@ -63,6 +63,8 @@
    private IEamRepairOrderService iEamRepairOrderService;
    @Autowired
    private ISysBusinessCodeRuleService businessCodeRuleService;
    @Autowired
    private IEamReportThreeNoSpareService eamReportThreeNoSpareService;
    /**
     * åˆ†é¡µåˆ—表
     *
@@ -205,10 +207,20 @@
            //添加设备事故登记表
            EamReportAccidentsRegister eamReportAccidentsRegister = new EamReportAccidentsRegister();
            BeanUtils.copyProperties(eamReportRepairRequest, eamReportAccidentsRegister);
            eamReportAccidentsRegister.setId(null);
            eamReportAccidentsRegister.setReportId(eamReportRepair.getId());
            eamReportAccidentsRegister.setDelFlag(Integer.valueOf(CommonConstant.DEFAULT_0));
            eamReportAccidentsRegister.setRegisterStatus(EamReportAccidentsRegisterEnum.PENDING_SUBMIT.name());
            iEamReportAccidentsRegisterService.save(eamReportAccidentsRegister);
            //生成三不原则
            EamReportThreeNoSpare eamReportThreeNoSpare = new EamReportThreeNoSpare();
            BeanUtils.copyProperties(eamReportRepairRequest, eamReportThreeNoSpare);
            eamReportThreeNoSpare.setId(null);
            eamReportThreeNoSpare.setReportId(eamReportRepair.getId());
            eamReportThreeNoSpare.setPreventionMeasures(eamReportAccidentsRegister.getTakeSteps());
            eamReportThreeNoSpare.setSubmitStatus(EamReportThreeNoSpareEnum.PENDING_SUBMIT.name());
            eamReportThreeNoSpare.setDelFlag(Integer.valueOf(CommonConstant.DEFAULT_0));
            eamReportThreeNoSpareService.save(eamReportThreeNoSpare);
        }
        //生成维修工单
        EamRepairOrder eamRepairOrder=new EamRepairOrder();
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportThreeNoSpareServiceImpl.java
@@ -1,11 +1,53 @@
package org.jeecg.modules.eam.service.impl;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
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.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.Result;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.DataBaseConstant;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.eam.constant.BusinessCodeConst;
import org.jeecg.modules.eam.constant.EamReportThreeNoSpareEnum;
import org.jeecg.modules.eam.dto.EamReportThreeNoSpareDto;
import org.jeecg.modules.eam.entity.EamEquipment;
import org.jeecg.modules.eam.entity.EamReportThreeNoSpare;
import org.jeecg.modules.eam.mapper.EamReportThreeNoSpareMapper;
import org.jeecg.modules.eam.request.EamReportThreeNoSpareQuery;
import org.jeecg.modules.eam.service.IEamEquipmentService;
import org.jeecg.modules.eam.service.IEamReportRepairService;
import org.jeecg.modules.eam.service.IEamReportThreeNoSpareService;
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;
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.BaseFactory;
import org.jeecg.modules.system.entity.BaseFactoryUser;
import org.jeecg.modules.system.service.IBaseFactoryService;
import org.jeecg.modules.system.service.IBaseFactoryUserService;
import org.jeecg.modules.system.service.ISysUserService;
import org.jeecg.modules.system.vo.UserSelector;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
/**
 * @Description: â€œä¸‰ä¸æ”¾è¿‡çš„原则”分析表
@@ -13,7 +55,259 @@
 * @Date:   2025-07-17
 * @Version: V1.0
 */
@Service
public class EamReportThreeNoSpareServiceImpl extends ServiceImpl<EamReportThreeNoSpareMapper, EamReportThreeNoSpare> implements IEamReportThreeNoSpareService {
@Service("eamReportThreeNoSpareService")
public class EamReportThreeNoSpareServiceImpl extends ServiceImpl<EamReportThreeNoSpareMapper, EamReportThreeNoSpare> implements IEamReportThreeNoSpareService , FlowCallBackServiceI {
    @Autowired
    private IBaseFactoryUserService baseFactoryUserService;
    @Autowired
    private IBaseFactoryService baseFactoryService;
    @Autowired
    @Lazy
    private IEamReportRepairService iEamReportRepairService;
    @Resource
    private FlowCommonService flowCommonService;
    @Resource
    private IFlowDefinitionService flowDefinitionService;
    @Resource
    private IEamEquipmentService eamEquipmentService;
    @Resource
    private IFlowMyBusinessService flowMyBusinessService;
    @Resource
    private TaskService taskService;
    @Resource
    private IFlowTaskService flowTaskService;
    @Autowired
    private ISysUserService sysUserService;
    /**
     * åˆ†é¡µåˆ—表
     * @param page
     * @param EamReportThreeNoSpareQuery
     * @return
     */
    @Override
    public IPage<EamReportThreeNoSpareQuery> pageList(Page<EamReportThreeNoSpareQuery> page, EamReportThreeNoSpareQuery EamReportThreeNoSpareQuery){
        QueryWrapper<EamReportThreeNoSpareQuery> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("ertns.del_flag", CommonConstant.DEL_FLAG_0);
        //用户数据权限
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        if (sysUser == null) {
            return page;
        }
        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 page;
            }
        }
        //查询条件过滤
        if (EamReportThreeNoSpareQuery != null) {
            if (StringUtils.isNotBlank(EamReportThreeNoSpareQuery.getEquipmentId())) {
                queryWrapper.eq("ertns.equipment_id", EamReportThreeNoSpareQuery.getEquipmentId());
            }
            if (StringUtils.isNotBlank(EamReportThreeNoSpareQuery.getEquipmentCode())) {
                queryWrapper.like("e.equipment_code", EamReportThreeNoSpareQuery.getEquipmentCode());
            }
            if (StringUtils.isNotBlank(EamReportThreeNoSpareQuery.getEquipmentName())) {
                queryWrapper.like("e.equipment_name", EamReportThreeNoSpareQuery.getEquipmentName());
            }
            if (StringUtils.isNotBlank(EamReportThreeNoSpareQuery.getSubmitStatus())) {
                queryWrapper.eq("ertns.submit_status", EamReportThreeNoSpareQuery.getSubmitStatus());
            }
            if (StringUtils.isNotBlank(EamReportThreeNoSpareQuery.getCauseAnalysis())) {
                queryWrapper.like("ertns.cause_analysis", EamReportThreeNoSpareQuery.getCauseAnalysis());
            }
            if (StringUtils.isNotBlank(EamReportThreeNoSpareQuery.getTrainingFormat())) {
                queryWrapper.like("ertns.training_format", EamReportThreeNoSpareQuery.getTrainingFormat());
            }
            if (StringUtils.isNotBlank(EamReportThreeNoSpareQuery.getTrainingContent())) {
                queryWrapper.like("ertns.training_content", EamReportThreeNoSpareQuery.getTrainingContent());
            }
            //排序
            if (StringUtils.isNotBlank(EamReportThreeNoSpareQuery.getColumn()) && StringUtils.isNotBlank(EamReportThreeNoSpareQuery.getOrder())) {
                String column = EamReportThreeNoSpareQuery.getColumn();
                if (column.endsWith(CommonConstant.DICT_TEXT_SUFFIX)) {
                    column = column.substring(0, column.lastIndexOf(CommonConstant.DICT_TEXT_SUFFIX));
                }
                if (DataBaseConstant.SQL_ASC.equalsIgnoreCase(EamReportThreeNoSpareQuery.getOrder())) {
                    queryWrapper.orderByAsc("ertns." + oConvertUtils.camelToUnderline(column));
                } else {
                    queryWrapper.orderByDesc("ertns." + oConvertUtils.camelToUnderline(column));
                }
            } else {
                queryWrapper.orderByDesc("ertns.create_time");
            }
        } else {
            queryWrapper.orderByDesc("ertns.create_time");
        }
        return baseMapper.queryPageList(page, queryWrapper);
    }
    /**
     * æ“ä½œå·¥æäº¤-发起流程
     * @param id
     * @return
     */
    @Override
    public Result<?> submit(String id){
        EamReportThreeNoSpare eamReportThreeNoSpare=this.getById(id);
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        EamEquipment eamEquipment = eamEquipmentService.getById(eamReportThreeNoSpare.getEquipmentId());
        //根据user的岗位进行判断下一步处理人
        List<UserSelector> userSelectorList = sysUserService.selectOperatorList(eamEquipment.getEquipmentCode(), eamEquipment.getFactoryOrgCode(), BusinessCodeConst.PCR0019);
        // å¯åŠ¨è®¾å¤‡äº‹æ•…ç™»è®°æµç¨‹
        flowCommonService.initActBusiness("设备编号:" + eamEquipment.getEquipmentCode() + ", è®¾å¤‡åç§°ï¼š" + eamEquipment.getEquipmentName()+"发起“三不放过的原则”分析流程",
                eamReportThreeNoSpare.getId(),
                "eamReportThreeNoSpareService",
                "eam_report_three_no_spare",
                null);
        Map<String, Object> variables = new HashMap<>();
        variables.put("dataId", eamReportThreeNoSpare.getId());
        variables.put("organization", "培训人提交启动流程");
        variables.put("comment", "培训人提交单启动流程");
        variables.put("proofreading", true);
        if (CollectionUtils.isEmpty(userSelectorList)) {
            throw new JeecgBootException("设备未存在审核领导,无法进入下级审批!");
        }else {
            List<String> usernameList = userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.toList());
            variables.put("NextAssignee", usernameList);
        }
        Result result = flowDefinitionService.startProcessInstanceByKey("eam_report_three_no_spare", variables);
        if (!result.isSuccess()) {
            return Result.error("流程启动失败");
        } else {
            eamReportThreeNoSpare.setTrainingUser(user.getUsername());
            eamReportThreeNoSpare.setTrainingUserTime(new Date());
            eamReportThreeNoSpare.setSubmitStatus(EamReportThreeNoSpareEnum.PENDING_APPROVAL.name());
            this.updateById(eamReportThreeNoSpare);
            return result;
        }
    }
    /**
     * æµç¨‹å®¡æ ¸
     * @param eamReportThreeNoSpareDto
     */
    @Override
    public Result<?> audit(EamReportThreeNoSpareDto eamReportThreeNoSpareDto){
        EamReportThreeNoSpare eamReportThreeNoSpare = this.baseMapper.selectById(eamReportThreeNoSpareDto.getId());
        if (eamReportThreeNoSpare == null) {
            throw new JeecgBootException("工单不存在,请刷新重试!");
        }
        // èŽ·å–å½“å‰ç™»å½•ç”¨æˆ·
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        if (user == null || StrUtil.isBlank(user.getId())) {
            throw new JeecgBootException("未获取到登录用户,请重新登录后再试!");
        }
        eamReportThreeNoSpareDto.setAssignee(user.getUsername());
        // èŽ·å–æµç¨‹ä¸šåŠ¡è®°å½•
        FlowMyBusiness flowMyBusiness = flowMyBusinessService.getFlowMyBusiness(eamReportThreeNoSpareDto.getInstanceId());
        if (flowMyBusiness == null) {
            throw new JeecgBootException("流程实例不存在,请刷新后重试!");
        }
        boolean userAuthorized = isUserAuthorized(flowMyBusiness, user);
        if (!userAuthorized) {
            throw new JeecgBootException("用户无权操作此任务,请刷新后重试!");
        }
        // è®¤é¢†ä»»åŠ¡
        if (!claimTask(flowMyBusiness.getTaskId(), user)) {
            throw new JeecgBootException("任务不存在、已完成或已被他人认领!");
        }
        EamEquipment equipment = eamEquipmentService.getById(eamReportThreeNoSpareDto.getEquipmentId());
        if (equipment == null) {
            throw new JeecgBootException("设备不存在,请检查!");
        }
        //流程变量
        Map<String, Object> values = new HashMap<>();
        values.put("dataId", eamReportThreeNoSpareDto.getId());
        values.put("assignee", user.getId());
        if(StrUtil.isEmpty(eamReportThreeNoSpareDto.getLeaderOpinion())){
            eamReportThreeNoSpareDto.setLeaderOpinion("");
        }
        values.put("organization", eamReportThreeNoSpareDto.getLeaderOpinion());
        values.put("comment", eamReportThreeNoSpareDto.getLeaderOpinion());
        values.put("leaderConfirmResult", eamReportThreeNoSpareDto.getLeaderConfirmResult());
        values.put("proofreading", true);
        if ("1".equals(eamReportThreeNoSpareDto.getLeaderConfirmResult())){
            eamReportThreeNoSpare.setSubmitStatus(EamReportThreeNoSpareEnum.REPAIR_COMPLETED.name());
        }else {
            eamReportThreeNoSpare.setSubmitStatus(EamReportThreeNoSpareEnum.REJECTED.name());
        }
        eamReportThreeNoSpare.setUnitLeader(user.getUsername());
        eamReportThreeNoSpare.setLeaderOpinion(eamReportThreeNoSpareDto.getLeaderOpinion());
        eamReportThreeNoSpare.setLeaderConfirmResult(eamReportThreeNoSpareDto.getLeaderConfirmResult());
        eamReportThreeNoSpare.setLeaderConfirmTime(new Date());
        eamReportThreeNoSpareDto.setComment(eamReportThreeNoSpareDto.getLeaderOpinion());
        eamReportThreeNoSpareDto.setValues(values);
        //保存工单
        this.updateById(eamReportThreeNoSpare);
        Result result = flowTaskService.complete(eamReportThreeNoSpareDto);
        if (!result.isSuccess()) {
            throw new JeecgBootException("审批失败,请刷新查看!");
        }
        return Result.ok("审批成功");
    }
    private boolean claimTask(String taskId, LoginUser user) {
        Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
        if (task == null) {
            return false;
        }
        if (task.getAssignee() != null && !task.getAssignee().equals(user.getUsername())) {
            return false;
        }
        taskService.claim(taskId, user.getUsername());
        return true;
    }
    /**
     * åˆ¤æ–­ç”¨æˆ·æ˜¯å¦æ‹¥æœ‰æ­¤æƒé™
     * @param flowMyBusiness
     * @param user
     * @return
     */
    private boolean isUserAuthorized(FlowMyBusiness flowMyBusiness, LoginUser user) {
        List<String> todoUsers = JSON.parseArray(flowMyBusiness.getTodoUsers(), String.class);
        return todoUsers != null && todoUsers.contains(user.getUsername());
    }
    @Override
    public void afterFlowHandle(FlowMyBusiness business) {
    }
    @Override
    public Object getBusinessDataById(String dataId) {
        return null;
    }
    @Override
    public Map<String, Object> flowValuesOfTask(String taskNameId, Map<String, Object> values) {
        return Collections.emptyMap();
    }
    @Override
    public List<String> flowCandidateUsernamesOfTask(String taskNameId, Map<String, Object> values) {
        //获取下一步处理人
        Object object = values.get("NextAssignee");
        return (List<String>) object;
    }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamReportThreeNoSpareController.java
@@ -1,6 +1,7 @@
package org.jeecg.modules.eam.controller;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -9,10 +10,16 @@
import java.net.URLDecoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.util.StrUtil;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.eam.dto.EamReportThreeNoSpareDto;
import org.jeecg.modules.eam.entity.EamReportThreeNoSpare;
import org.jeecg.modules.eam.request.EamReportThreeNoSpareQuery;
import org.jeecg.modules.eam.service.IEamReportThreeNoSpareService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -53,7 +60,7 @@
    /**
     * åˆ†é¡µåˆ—表查询
     *
     * @param eamReportThreeNoSpare
     * @param eamReportThreeNoSpareQuery
     * @param pageNo
     * @param pageSize
     * @param req
@@ -62,13 +69,12 @@
    //@AutoLog(value = "“三不放过的原则”分析表-分页列表查询")
    @ApiOperation(value="“三不放过的原则”分析表-分页列表查询", notes="“三不放过的原则”分析表-分页列表查询")
    @GetMapping(value = "/list")
    public Result<IPage<EamReportThreeNoSpare>> queryPageList(EamReportThreeNoSpare eamReportThreeNoSpare,
    public Result<IPage<EamReportThreeNoSpareQuery>> queryPageList(EamReportThreeNoSpareQuery eamReportThreeNoSpareQuery,
                                   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                                   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
                                   HttpServletRequest req) {
        QueryWrapper<EamReportThreeNoSpare> queryWrapper = QueryGenerator.initQueryWrapper(eamReportThreeNoSpare, req.getParameterMap());
        Page<EamReportThreeNoSpare> page = new Page<EamReportThreeNoSpare>(pageNo, pageSize);
        IPage<EamReportThreeNoSpare> pageList = eamReportThreeNoSpareService.page(page, queryWrapper);
        Page<EamReportThreeNoSpareQuery> page = new Page<EamReportThreeNoSpareQuery>(pageNo, pageSize);
        IPage<EamReportThreeNoSpareQuery> pageList = eamReportThreeNoSpareService.pageList(page, eamReportThreeNoSpareQuery);
        return Result.OK(pageList);
    }
@@ -98,10 +104,43 @@
    //@RequiresPermissions("org.jeecg.modules.mdc:eam_report_three_no_spare:edit")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
    public Result<String> edit(@RequestBody EamReportThreeNoSpare eamReportThreeNoSpare) {
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        eamReportThreeNoSpare.setTrainingUser(user.getUsername());
        eamReportThreeNoSpare.setTrainingUserTime(new Date());
        eamReportThreeNoSpareService.updateById(eamReportThreeNoSpare);
        return Result.OK("编辑成功!");
    }
     /**
      * æ“ä½œå·¥æäº¤-发起流程
      * @param id
      * @return
      */
     @ApiOperation(value = "“三不放过的原则”分析表--提交", notes = "“三不放过的原则”分析表--提交")
     @GetMapping(value = "/submit")
     public Result<?> submit(String id){
         eamReportThreeNoSpareService.submit(id);
         return Result.OK("提交成功!");
     }
     /**
      * æµç¨‹å®¡æ ¸
      * @param eamReportThreeNoSpareDto
      */
     @AutoLog(value = "“三不放过的原则”分析表--执行/审批")
     @ApiOperation(value = "“三不放过的原则”分析表--执行/审批", notes = "“三不放过的原则”分析表--执行/审批")
     @PostMapping(value = "/perform")
     public Result<?> audit(@RequestBody EamReportThreeNoSpareDto eamReportThreeNoSpareDto){
         if (eamReportThreeNoSpareDto == null) {
             return Result.error("审批的对象不能为空!");
         }
         // æ£€æŸ¥è¯·æ±‚参数
         if (StrUtil.isBlank(eamReportThreeNoSpareDto.getTaskId()) || StrUtil.isBlank(eamReportThreeNoSpareDto.getDataId()) || StrUtil.isBlank(eamReportThreeNoSpareDto.getInstanceId())) {
             return Result.error("审批任务错误或不存在!");
         }
         return eamReportThreeNoSpareService.audit(eamReportThreeNoSpareDto);
     }
    /**
     *   é€šè¿‡id删除
     *
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/BaseFactoryServiceImpl.java
@@ -225,6 +225,7 @@
        QueryWrapper<BaseFactory> baseFactoryQueryWrapper = new QueryWrapper<>();
        baseFactoryQueryWrapper.eq(StrUtil.isNotEmpty(baseFactory.getFactoryCode()), "factory_code", baseFactory.getFactoryCode());
        baseFactoryQueryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0.toString());
        baseFactoryQueryWrapper.ne(baseFactory.getId() != null, "id", baseFactory.getId());
        if (this.getOne(baseFactoryQueryWrapper) != null) {
            throw new JeecgBootException("机构编码已存在");
        }