已添加51个文件
已修改20个文件
4243 ■■■■■ 文件已修改
db/430设备管理数据库设计.pdma.json 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-boot-base-core/src/main/java/org/jeecg/common/util/WordParseUtils.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/EamEquipmentDto.java 413 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentController.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamMaintenanceStandardController.java 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamTechnicalStatusChangeController.java 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamTechnicalStatusChangeDetailController.java 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamTechnicalStatusDeactivateController.java 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamTechnicalStatusDeactivateDetailController.java 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamTechnicalStatusEvaluationApplicationController.java 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamTechnicalStatusEvaluationOrderChangeController.java 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamTechnicalStatusEvaluationOrderController.java 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamTechnicalStatusEvaluationOrderDetailController.java 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamTechnicalStatusEvaluationStandardController.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamTechnicalStatusChange.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamTechnicalStatusChangeDetail.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamTechnicalStatusDeactivate.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamTechnicalStatusDeactivateDetail.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamTechnicalStatusEvaluationApplication.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamTechnicalStatusEvaluationOrder.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamTechnicalStatusEvaluationOrderChange.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamTechnicalStatusEvaluationOrderDetail.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamTechnicalStatusChangeDetailMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamTechnicalStatusChangeMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamTechnicalStatusDeactivateDetailMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamTechnicalStatusDeactivateMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamTechnicalStatusEvaluationApplicationMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamTechnicalStatusEvaluationOrderChangeMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamTechnicalStatusEvaluationOrderDetailMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamTechnicalStatusEvaluationOrderMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamTechnicalStatusChangeDetailMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamTechnicalStatusChangeMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamTechnicalStatusDeactivateDetailMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamTechnicalStatusDeactivateMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamTechnicalStatusEvaluationApplicationMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamTechnicalStatusEvaluationOrderChangeMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamTechnicalStatusEvaluationOrderDetailMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamTechnicalStatusEvaluationOrderMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamMaintenanceStandardService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamTechnicalStatusChangeDetailService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamTechnicalStatusChangeService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamTechnicalStatusDeactivateDetailService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamTechnicalStatusDeactivateService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamTechnicalStatusEvaluationApplicationService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamTechnicalStatusEvaluationOrderChangeService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamTechnicalStatusEvaluationOrderDetailService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamTechnicalStatusEvaluationOrderService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamTechnicalStatusEvaluationStandardDetailService.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamTechnicalStatusEvaluationStandardService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamInspectionOrderServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java 482 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusChangeDetailServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusChangeServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusDeactivateDetailServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusDeactivateServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusEvaluationApplicationServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusEvaluationOrderChangeServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusEvaluationOrderDetailServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusEvaluationOrderServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusEvaluationStandardDetailServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusEvaluationStandardServiceImpl.java 513 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/BaseFactoryController.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IBaseFactoryService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IBaseFactoryUserService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/BaseFactoryServiceImpl.java 89 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/BaseFactoryUserServiceImpl.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/EamBaseFactoryVo.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
db/430É豸¹ÜÀíÊý¾Ý¿âÉè¼Æ.pdma.json
@@ -4,7 +4,7 @@
  "avatar": "",
  "version": "4.9.2",
  "createdTime": "2025-3-10 16:38:19",
  "updatedTime": "2025-7-8 15:34:54",
  "updatedTime": "2025-7-9 19:20:22",
  "dbConns": [],
  "profile": {
    "default": {
@@ -24945,7 +24945,7 @@
          "id": "F19406B3-1B81-484F-B916-81143EB092A4"
        },
        {
          "defKey": "process_technician​_signature",
          "defKey": "process_technician_signature",
          "defName": "工艺员签字",
          "comment": "",
          "type": "",
@@ -24963,7 +24963,7 @@
          "id": "44FAEC7F-5BA9-4AD0-8692-DA36C64E4B7C"
        },
        {
          "defKey": "process_technician​_signature_time",
          "defKey": "process_technician_signature_time",
          "defName": "工艺员签字时间",
          "comment": "",
          "type": "",
lxzn-boot-base-core/src/main/java/org/jeecg/common/util/WordParseUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
package org.jeecg.common.util;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
public class WordParseUtils {
    /**
     * å…¼å®¹ç‰ˆå•元格文本提取
     */
    public static String getCellText(XWPFTableCell cell) {
        if (cell == null) {
            return "";
        }
        String text = cell.getText();
        return text.toString();
    }
    /**
     * å†…容清理
     */
    private String cleanContent(String text) {
        if (text == null) {
            return "";
        }
        // æ›¿æ¢ç‰¹æ®Šç©ºæ ¼å’Œåˆå¹¶è¿žç»­ç©ºæ ¼
        text = text.replace('\u00A0', ' ')
                .replace('\u2007', ' ')
                .replace('\u202F', ' ')
                .replaceAll("\\s+", " ");
        // è§„范标点符号
        return text.replace(',', '、')
                .replace(',', '、')
                .replace(';', ';')
                .replace(';', ';')
                .replace(':', ':')
                .replace(':', ':')
                .trim();
    }
}
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/EamEquipmentDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,413 @@
package org.jeecg.modules.eam.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
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.aspect.annotation.Dict;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
/**
 * è®¾å¤‡å°è´¦å¯¼å…¥ä¸“用
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class EamEquipmentDto {
    /**
     * ä¸»é”®
     */
    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键")
    private String id;
    /**
     * åˆ›å»ºäºº
     */
    @ApiModelProperty(value = "创建人")
    @Dict(dicCode = "sys_user, realname, username")
    private String createBy;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    @ApiModelProperty(value = "创建时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss ")
    private Date createTime;
    /**
     * æ›´æ–°äºº
     */
    @ApiModelProperty(value = "更新人")
    @Dict(dicCode = "sys_user, realname, username")
    private String updateBy;
    /**
     * æ›´æ–°æ—¶é—´
     */
    @ApiModelProperty(value = "更新时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss ")
    private Date updateTime;
    /**
     * åˆ é™¤æ ‡è®°
     */
    @ApiModelProperty(value = "删除标记")
    private Integer delFlag;
    /**
     * å…³é”®è®¾å¤‡æ ‡è¯†
     */
    @Excel(name = "关键设备标识", width = 15, orderNum = "1")
    @ApiModelProperty(value = "关键设备标识")
    @Dict(dicCode = "equipment_importance")
    private String equipmentImportance;
    /**
     * ç»Ÿä¸€ç¼–码
     */
    @Excel(name = "统一编码", width = 15, orderNum = "2")
    @ApiModelProperty(value = "统一编码")
    private String equipmentCode;
    /**
     * è®¾å¤‡åç§°
     */
    @Excel(name = "设备名称", width = 15, orderNum = "3")
    @ApiModelProperty(value = "设备名称")
    private String equipmentName;
    /**
     * å·¥æ®µ
     */
    @Excel(name = "中心/工区/工段", width = 15, orderNum = "4",dictTable = "eam_base_factory",dicText = "factory_name",dicCode = "org_code")
    @ApiModelProperty(value = "中心/工区/工段")
    @Dict(dictTable = "eam_base_factory",dicText = "factory_name",dicCode = "factory_code")
    private String factoryOrgCode;
    /**
     * æ‰€å±žåˆ†ç±»
     */
    @Excel(name = "所属分类", width = 15, orderNum = "5")
    @ApiModelProperty(value = "所属分类")
    @Dict(dicCode = "equipment_category")
    private String equipmentCategory;
    @TableField(exist = false)
    @Excel(name = "保养状态", width = 15, orderNum = "6",dicCode = "equipment_maintenance_status")
    @ApiModelProperty(value = "保养状态")
    @Dict(dicCode = "equipment_maintenance_status")
    private String maintenanceStatus;
    @TableField(exist = false)
    @Excel(name = "维修状态", width = 15, orderNum = "7",dicCode = "equipment_repair_status")
    @ApiModelProperty(value = "维修状态")
    @Dict(dicCode = "equipment_repair_status")
    private String repairStatus;
    /**技术状态*/
    @TableField(exist = false)
    @Excel(name = "技术状态", width = 15, orderNum = "8",dicCode = "equipment_technology_status")
    @ApiModelProperty(value = "技术状态")
    @Dict(dicCode = "equipment_technology_status")
    private String technologyStatus;
    /**
     * ABC标识
     */
    @Excel(name = "ABC标识", width = 15, orderNum = "9",dicCode = "abc_flag")
    @ApiModelProperty(value = "ABC标识")
    @Dict(dicCode = "abc_flag")
    private String abcFlag;
    /**
     * ç»´ä¿®ç­ç»„
     */
    @Excel(name = "维修班组", width = 15, orderNum = "10",dictTable = "eam_base_repair_depart",dicText = "depart_name",dicCode = "org_code")
    @ApiModelProperty(value = "维修班组")
    @Dict(dictTable = "eam_base_repair_depart",dicText = "depart_name",dicCode = "org_code")
    private String repairDepartOrgCode;
    /**
     * å®‰å…¨é…ç½®
     */
    @Excel(name = "安全配置", width = 15, orderNum = "11")
    @ApiModelProperty(value = "安全配置")
    private String securityConfiguration;
    /**
     * å†·å´ç³»ç»Ÿ
     */
    @Excel(name = "冷却系统", width = 15, orderNum = "15",dicCode = "cooling_system")
    @ApiModelProperty(value = "冷却系统")
    @Dict(dicCode = "cooling_system")
    private String coolSystem;
    /**
     * ç­ç«å™¨
     */
    @Excel(name = "灭火器", width = 15, orderNum = "16")
    @ApiModelProperty(value = "灭火器")
    private String fireExtinguisher;
    /**
     * ç­ç«å™¨æœ‰æ•ˆæœŸè‡³
     */
    @Excel(name = "灭火器有效期至", width = 15, orderNum = "17")
    @ApiModelProperty(value = "灭火器有效期至")
    private String fireExtinguisherExpirationDate;
    /**
     * æ“ä½œç³»ç»Ÿ
     */
    @Excel(name = "操作系统", width = 15, orderNum = "18",dicCode = "yn")
    @ApiModelProperty(value = "操作系统")
    @Dict(dicCode = "yn")
    private String operationSystem;
    /**
     * ç³»ç»Ÿ
     */
    @Excel(name = "系统", width = 15, orderNum = "19")
    @ApiModelProperty(value = "系统")
    private String system;
    /**
     * è®¾å¤‡ç«¯å£
     */
    @Excel(name = "设备端口", width = 15, orderNum = "20")
    @ApiModelProperty(value = "设备端口")
    private String equipmentPort;
    /**
     * åæ ‡æ•°é‡
     */
    @Excel(name = "坐标数量", width = 15, orderNum = "21")
    @ApiModelProperty(value = "坐标数量")
    private Integer coordinateNum;
    /**
     * é‡é‡(吨)
     */
    @Excel(name = "重量(吨)", width = 15, orderNum = "22")
    @ApiModelProperty(value = "重量(吨)")
    private BigDecimal equipmentWeight;
    /**
     * é‡é‡è®¡é‡å•位
     */
    @Excel(name = "重量计量单位", width = 15, orderNum = "23")
    @ApiModelProperty(value = "重量计量单位")
    private String weightUnit;
    /**
     * åŠŸèƒ½ä½ç½®
     */
    @Excel(name = "功能位置", width = 15, orderNum = "24")
    @ApiModelProperty(value = "功能位置")
    private String functionalLocation;
    /**
     * å®‰è£…位置
     */
    @Excel(name = "安装位置", width = 15, orderNum = "25")
    @ApiModelProperty(value = "安装位置")
    private String installationPosition;
    /**
     * å‡ºåŽ‚æ—¥æœŸ
     */
    @Excel(name = "出厂日期", width = 25, format = "yyyy/MM/dd", orderNum = "26")
    @ApiModelProperty(value = "出厂日期")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date leaveFactoryDate;
    /**
     * ç«‹é¡¹å¡å·
     */
    @Excel(name = "立项卡号", width = 15, orderNum = "27")
    @ApiModelProperty(value = "立项卡号")
    private String cardNumber;
    /**
     * èµ„金来源
     */
    @Excel(name = "资金来源", width = 15, orderNum = "28")
    @ApiModelProperty(value = "资金来源")
    private String fundingSource;
    /**
     * éªŒæ”¶æ—¥æœŸ
     */
    @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")
    private Date acceptanceCheckDate;
    /**
     * å‡ºåŽ‚ç¼–å·
     */
    @Excel(name = "出厂编号", width = 15, orderNum = "30")
    @ApiModelProperty(value = "出厂编号")
    private String factoryNumber;
    /**
     * èµ„产制造商
     */
    @Excel(name = "资产制造商", width = 25, orderNum = "31")
    @ApiModelProperty(value = "资产制造商")
    private String manufacturingEnterprise;
    /**
     * èµ„产来源国家
     */
    @Excel(name = "资产来源国家", width = 25, orderNum = "32")
    @ApiModelProperty(value = "资产来源国家")
    private String originCountry;
    /**
     * åž‹å·
     */
    @Excel(name = "型号", width = 15, orderNum = "33")
    @ApiModelProperty(value = "型号")
    private String equipmentModel;
    /**
     * è®¾å¤‡è§„æ ¼
     */
    @Excel(name = "设备规格", width = 15, orderNum = "34")
    @ApiModelProperty(value = "设备规格")
    private String equipmentSpecification;
    /**
     * æ€»åŠŸçŽ‡(KW)
     */
    @Excel(name = "总功率(KW)", width = 15, orderNum = "35")
    @ApiModelProperty(value = "总功率")
    private String equipmentPower;
    /**
     * è´¨ä¿å¼€å§‹æ—¥æœŸ
     */
    @Excel(name = "质保开始日期", width = 15, orderNum = "36")
    @ApiModelProperty(value = "质保开始日期")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date warrantyStartDate;
    /**
     * è´¨ä¿ç»“束日期
     */
    @Excel(name = "质保结束日期", width = 15, orderNum = "37")
    @ApiModelProperty(value = "质保结束日期")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date warrantyEndDate;
    /**
     * èµ„产状态
     */
    @Excel(name = "资产状态", width = 15, orderNum = "38",dicCode = "asset_status")
    @ApiModelProperty(value = "资产状态")
    @Dict(dicCode = "asset_status")
    private String assetStatus;
    /**最新二保日期*/
    @TableField(exist = false)
    @Excel(name = "最新二保日期", width = 15, orderNum = "39")
    @ApiModelProperty(value = "最新二保日期")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private java.util.Date latestSecondMaintenance;
    /**下次二保日期*/
    @TableField(exist = false)
    @Excel(name = "下次二保日期", width = 15, orderNum = "40")
    @ApiModelProperty(value = "下次二保日期")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private java.util.Date nextSecondMaintenance;
    /**本次三保日期*/
    @TableField(exist = false)
    @Excel(name = "本次三保日期", width = 15, orderNum = "41")
    @ApiModelProperty(value = "本次三保日期")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private java.util.Date latestThirdMaintenance;
    /**下次三保日期*/
    @TableField(exist = false)
    @Excel(name = "下次三保日期", width = 15, orderNum = "42")
    @ApiModelProperty(value = "下次三保日期")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private java.util.Date nextThirdMaintenance;
    /**三保周期(å¹´)*/
    @TableField(exist = false)
    @Excel(name = "三保周期(å¹´)", width = 15, orderNum = "43")
    @ApiModelProperty(value = "三保周期(å¹´)")
    private Integer thirdMaintenancePeriod;
    /**最新技术状态鉴定日期*/
    @TableField(exist = false)
    @Excel(name = "最新技术状态鉴定日期", width = 15, orderNum = "44")
    @ApiModelProperty(value = "最新技术状态鉴定日期")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private java.util.Date latestTechnologyCheck;
    /**技术状态下次鉴定日期*/
    @TableField(exist = false)
    @Excel(name = "技术状态下次鉴定日期", width = 15, orderNum = "45")
    @ApiModelProperty(value = "技术状态下次鉴定日期")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private java.util.Date nextTechnologyCheck;
    /**技术鉴定周期(å¹´)*/
    @TableField(exist = false)
    @Excel(name = "技术鉴定周期(å¹´)", width = 15, orderNum = "46")
    @ApiModelProperty(value = "技术鉴定周期(å¹´)")
    private Integer technologyCheckPeriod;
    /**
     * æ˜¯å¦ä¸»è®¾å¤‡
     */
    @Excel(name = "是否主设备", width = 15, dicCode = "yn", orderNum = "47")
    @ApiModelProperty(value = "是否主设备")
    @Dict(dicCode = "yn")
    private String masterFlag;
    /**
     * æ˜¯å¦æœ‰å·¥è‰ºå‚æ•°
     */
    @Excel(name = "有无工艺参数", width = 15, dicCode = "yn", orderNum = "48")
    @ApiModelProperty(value = "是否有工艺参数")
    @Dict(dicCode = "yn")
    private String processParametersFlag;
    /**
     * æ˜¯å¦æœ‰ç²¾åº¦å‚æ•°
     */
    @Excel(name = "有无精度参数", width = 15, dicCode = "yn", orderNum = "49")
    @ApiModelProperty(value = "是否有精度参数")
    @Dict(dicCode = "yn")
    private String precisionParametersFlag;
    /**
     * å¤‡æ³¨
     */
    @Excel(name = "备注", width = 50, orderNum = "50")
    @ApiModelProperty(value = "备注")
    private String remark;
}
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java
@@ -118,9 +118,9 @@
    /**
     * å·¥æ®µ
     */
    @Excel(name = "中心/工区/工段", width = 15, orderNum = "4",dictTable = "eam_base_factory",dicText = "factory_name",dicCode = "org_code")
    @Excel(name = "中心/工区/工段", width = 15, orderNum = "4")
    @ApiModelProperty(value = "中心/工区/工段")
    @Dict(dictTable = "eam_base_factory",dicText = "factory_name",dicCode = "org_code")
    @Dict(dictTable = "eam_base_factory",dicText = "factory_name",dicCode = "factory_code")
    private String factoryOrgCode;
    /**
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentMapper.xml
@@ -42,6 +42,6 @@
        select * from
                     eam_equipment
                 where del_flag = 0
        and factory_org_code =(select org_cod,e from eam_base_factory where eam_base_factory.id=#{eamCenterId})
        and factory_org_code =(select org_code from eam_base_factory where eam_base_factory.id=#{eamCenterId})
    </select>
</mapper>
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java
@@ -167,9 +167,11 @@
            List<BaseFactoryUser> baseFactoryUserList=baseFactoryUserService.
                    list(new LambdaQueryWrapper<BaseFactoryUser>().eq(BaseFactoryUser::getUserId,sysUser.getId()));
            if(!CollectionUtils.isEmpty(baseFactoryUserList)){
                List<String> factoryIds = baseFactoryUserList.stream().map(BaseFactoryUser::getFactoryId).collect(Collectors.toList());
                List<String> factoryCode= baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getFactoryCode).collect(Collectors.toList());
                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;
            }
        }
        //查询条件过滤
@@ -255,9 +257,11 @@
            List<BaseFactoryUser> baseFactoryUserList=baseFactoryUserService.
                    list(new LambdaQueryWrapper<BaseFactoryUser>().eq(BaseFactoryUser::getUserId,sysUser.getId()));
            if(!CollectionUtils.isEmpty(baseFactoryUserList)){
                List<String> factoryIds = baseFactoryUserList.stream().map(BaseFactoryUser::getFactoryId).collect(Collectors.toList());
                List<String> factoryCode= baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getFactoryCode).collect(Collectors.toList());
                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 Collections.emptyList();
            }
        }
@@ -288,9 +292,9 @@
        if (sysUser == null) {
            return null;
        }
        if (StringUtils.isNotBlank(sysUser.getEquipmentIds())) {
        if (StringUtils.isNotBlank(sysUser.getEamEquipmentIds())) {
            //选择了设备,根据设备id过滤设备
            List<String> equipArr = Arrays.asList(sysUser.getEquipmentIds().split(","));
            List<String> equipArr = Arrays.asList(sysUser.getEamEquipmentIds().split(","));
            queryWrapper.in("equipment_code", equipArr);
        } else {
            //没有选择设备,根据车间过滤设备
@@ -298,7 +302,7 @@
                    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> factoryCodeList = baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getFactoryCode).collect(Collectors.toSet());
                Set<String> factoryCodeList = baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getOrgCode).collect(Collectors.toSet());
                queryWrapper.in("factory_org_code", factoryCodeList);
            } else {
                return null;
@@ -334,9 +338,11 @@
            List<BaseFactoryUser> baseFactoryUserList=baseFactoryUserService.
                    list(new LambdaQueryWrapper<BaseFactoryUser>().eq(BaseFactoryUser::getUserId,sysUser.getId()));
            if(!CollectionUtils.isEmpty(baseFactoryUserList)){
                List<String> factoryIds = baseFactoryUserList.stream().map(BaseFactoryUser::getFactoryId).collect(Collectors.toList());
                List<String> factoryCode= baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getFactoryCode).collect(Collectors.toList());
                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 Collections.emptyList();
            }
        }
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentController.java
@@ -18,6 +18,7 @@
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.TranslateDictTextUtils;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.eam.dto.EamEquipmentDto;
import org.jeecg.modules.eam.entity.EamEquipment;
import org.jeecg.modules.eam.entity.EamEquipmentExtend;
import org.jeecg.modules.eam.request.EamEquipmentQuery;
@@ -27,11 +28,14 @@
import org.jeecg.modules.eam.vo.EquipmentSearchResult;
//import org.jeecg.modules.mdc.entity.MdcEquipment;
//import org.jeecg.modules.mdc.service.IMdcEquipmentService;
import org.jeecg.modules.system.entity.BaseFactory;
import org.jeecg.modules.system.service.IBaseFactoryService;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -41,6 +45,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@@ -70,6 +75,8 @@
    private ObjectMapper objectMapper;
    @Autowired
    private TranslateDictTextUtils translateDictTextUtils;
    @Autowired
    private IBaseFactoryService baseFactoryService;
    /**
     * åˆ†é¡µåˆ—表查询
@@ -211,18 +218,23 @@
    public ModelAndView exportXls(HttpServletRequest request,EamEquipmentQuery eamEquipment) {
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        List<EamEquipment> equipmentList=eamEquipmentService.exportList(eamEquipment);
        List<EamEquipmentDto> eamEquipmentDtos=new ArrayList<>();
        String selections = request.getParameter("selections");
        if (oConvertUtils.isNotEmpty(selections)) {
            List<String> selectionList = Arrays.asList(selections.split(","));
            equipmentList = equipmentList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList());
        }
        equipmentList.forEach(item -> {
            EamEquipmentDto eamEquipmentDto = new EamEquipmentDto();
            BeanUtils.copyProperties(item,eamEquipmentDto);
            eamEquipmentDtos.add(eamEquipmentDto);
        });
        // Step.3 AutoPoi å¯¼å‡ºExcel
        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
        mv.addObject(NormalExcelConstants.FILE_NAME, "设备台账"); //此处设置的filename无效 ,前端会重更新设置一下
        mv.addObject(NormalExcelConstants.CLASS, EamEquipment.class);
        mv.addObject(NormalExcelConstants.CLASS, EamEquipmentDto.class);
        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("设备台账" + "报表", "导出人:" + sysUser.getRealname(), "设备台账"));
        mv.addObject(NormalExcelConstants.DATA_LIST, equipmentList);
        mv.addObject(NormalExcelConstants.DATA_LIST, eamEquipmentDtos);
        return mv;
    }
@@ -268,6 +280,13 @@
                        sb.append(String.format("设备编码[%s]已存在,无法重复导入\n\r", eamEquipment.getEquipmentCode()));
                        continue;
                    }
                    BaseFactory baseFactory=baseFactoryService.searchCenterByKeyWord(eamEquipment.getFactoryOrgCode());
                    if(baseFactory==null){
                        sb.append(String.format("EAM中心信息[%s]不存在,无法导入\n\r", eamEquipment.getFactoryOrgCode()));
                        continue;
                    }else {
                        eamEquipment.setFactoryOrgCode(baseFactory.getOrgCode());
                    }
                    EamEquipment equipment = eamEquipmentService.saveEquipment(eamEquipment);
                    if (equipment == null) {
                        //保存失败,跳过本次循环
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamMaintenanceStandardController.java
@@ -282,17 +282,8 @@
            for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
                MultipartFile file = entity.getValue();
                String fileName = file.getOriginalFilename();
                Result<?> importResult = eamMaintenanceStandardService.importPointInspectionExcel(file);
                if (importResult.isSuccess()) {
                    results.put(fileName, "成功: " + importResult.getMessage());
                    successCount++;
                } else {
                    results.put(fileName, "失败: " + importResult.getMessage());
                    failureCount++;
                }
                file.getOriginalFilename();
                return eamMaintenanceStandardService.importPointInspectionExcel(file);
            }
            // æž„建响应
@@ -302,13 +293,7 @@
            response.put("successCount", successCount);
            response.put("failureCount", failureCount);
            if (failureCount == 0) {
                return Result.ok("所有点检文件导入成功"+response);
            } else if (successCount == 0) {
                return Result.error("所有点检文件导入失败", response);
            } else {
                return Result.error("部分点检文件导入失败", response);
            }
            return Result.ok("导入完成" + response);
        } catch (Exception e) {
            log.error("点检导入处理异常", e);
@@ -333,17 +318,8 @@
            for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
                MultipartFile file = entity.getValue();
                String fileName = file.getOriginalFilename();
                Result<?> importResult = eamMaintenanceStandardService.importMaintenanceStandard(file, "SECOND");
                if (importResult.isSuccess()) {
                    results.put(fileName, "成功: " + importResult.getMessage());
                    successCount++;
                } else {
                    results.put(fileName, "失败: " + importResult.getMessage());
                    failureCount++;
                }
                file.getOriginalFilename();
                return eamMaintenanceStandardService.importMaintenanceStandard(file, "SECOND");
            }
            // æž„建最终响应
@@ -353,11 +329,7 @@
            response.put("successCount", successCount);
            response.put("failureCount", failureCount);
            if (failureCount > 0) {
                return Result.error("部分文件导入失败", response);
            }
            return Result.ok("所有文件导入成功"+response);
            return Result.ok("导入完成"+response);
        } catch (Exception e) {
            log.error("导入处理异常", e);
@@ -381,17 +353,8 @@
            for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
                MultipartFile file = entity.getValue();
                String fileName = file.getOriginalFilename();
                Result<?> importResult = eamMaintenanceStandardService.importMaintenanceStandard(file, "THIRD");
                if (importResult.isSuccess()) {
                    results.put(fileName, "成功: " + importResult.getMessage());
                    successCount++;
                } else {
                    results.put(fileName, "失败: " + importResult.getMessage());
                    failureCount++;
                }
                file.getOriginalFilename();
                return eamMaintenanceStandardService.importMaintenanceStandard(file, "THIRD");
            }
            // æž„建最终响应
@@ -401,11 +364,7 @@
            response.put("successCount", successCount);
            response.put("failureCount", failureCount);
            if (failureCount > 0) {
                return Result.error("部分文件导入失败", response);
            }
            return Result.ok("所有文件导入成功"+response);
            return Result.ok("导入完成"+response);
        } catch (Exception e) {
            log.error("导入处理异常", e);
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamTechnicalStatusChangeController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,151 @@
package org.jeecg.modules.eam.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.modules.eam.entity.EamTechnicalStatusChange;
import org.jeecg.modules.eam.service.IEamTechnicalStatusChangeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
 /**
 * @Description: æŠ€æœ¯çŠ¶æ€å˜æ›´ç”³è¯·
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
@Slf4j
@Api(tags="技术状态变更申请")
@RestController
@RequestMapping("/eam/eamTechnicalStatusChange")
public class EamTechnicalStatusChangeController extends JeecgController<EamTechnicalStatusChange, IEamTechnicalStatusChangeService> {
    @Autowired
    private IEamTechnicalStatusChangeService eamTechnicalStatusChangeService;
    /**
     * åˆ†é¡µåˆ—表查询
     *
     * @param eamTechnicalStatusChange
     * @param pageNo
     * @param pageSize
     * @param req
     * @return
     */
    @ApiOperation(value="技术状态变更申请-分页列表查询", notes="技术状态变更申请-分页列表查询")
    @GetMapping(value = "/list")
    public Result<?> queryPageList(EamTechnicalStatusChange eamTechnicalStatusChange,
                                   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                                   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
                                   HttpServletRequest req) {
        QueryWrapper<EamTechnicalStatusChange> queryWrapper = QueryGenerator.initQueryWrapper(eamTechnicalStatusChange, req.getParameterMap());
        Page<EamTechnicalStatusChange> page = new Page<EamTechnicalStatusChange>(pageNo, pageSize);
        IPage<EamTechnicalStatusChange> pageList = eamTechnicalStatusChangeService.page(page, queryWrapper);
        return Result.OK(pageList);
    }
    /**
     * æ·»åŠ 
     *
     * @param eamTechnicalStatusChange
     * @return
     */
    @AutoLog(value = "技术状态变更申请-添加")
    @ApiOperation(value="技术状态变更申请-添加", notes="技术状态变更申请-添加")
    @PostMapping(value = "/add")
    public Result<?> add(@RequestBody EamTechnicalStatusChange eamTechnicalStatusChange) {
        eamTechnicalStatusChangeService.save(eamTechnicalStatusChange);
        return Result.OK("添加成功!");
    }
    /**
     * ç¼–辑
     *
     * @param eamTechnicalStatusChange
     * @return
     */
    @AutoLog(value = "技术状态变更申请-编辑")
    @ApiOperation(value="技术状态变更申请-编辑", notes="技术状态变更申请-编辑")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
    public Result<?> edit(@RequestBody EamTechnicalStatusChange eamTechnicalStatusChange) {
        eamTechnicalStatusChangeService.updateById(eamTechnicalStatusChange);
        return Result.OK("编辑成功!");
    }
    /**
     * é€šè¿‡id删除
     *
     * @param id
     * @return
     */
    @AutoLog(value = "技术状态变更申请-通过id删除")
    @ApiOperation(value="技术状态变更申请-通过id删除", notes="技术状态变更申请-通过id删除")
    @DeleteMapping(value = "/delete")
    public Result<?> delete(@RequestParam(name="id",required=true) String id) {
        eamTechnicalStatusChangeService.removeById(id);
        return Result.OK("删除成功!");
    }
    /**
     * æ‰¹é‡åˆ é™¤
     *
     * @param ids
     * @return
     */
    @AutoLog(value = "技术状态变更申请-批量删除")
    @ApiOperation(value="技术状态变更申请-批量删除", notes="技术状态变更申请-批量删除")
    @DeleteMapping(value = "/deleteBatch")
    public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
        this.eamTechnicalStatusChangeService.removeByIds(Arrays.asList(ids.split(",")));
        return Result.OK("批量删除成功!");
    }
    /**
     * é€šè¿‡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) {
        EamTechnicalStatusChange eamTechnicalStatusChange = eamTechnicalStatusChangeService.getById(id);
        return Result.OK(eamTechnicalStatusChange);
    }
  /**
   * å¯¼å‡ºexcel
   *
   * @param request
   * @param eamTechnicalStatusChange
   */
  @RequestMapping(value = "/exportXls")
  public ModelAndView exportXls(HttpServletRequest request, EamTechnicalStatusChange eamTechnicalStatusChange) {
      return super.exportXls(request, eamTechnicalStatusChange, EamTechnicalStatusChange.class, "技术状态变更申请");
  }
  /**
   * é€šè¿‡excel导入数据
   *
   * @param request
   * @param response
   * @return
   */
  @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
  public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
      return super.importExcel(request, response, EamTechnicalStatusChange.class);
  }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamTechnicalStatusChangeDetailController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,151 @@
package org.jeecg.modules.eam.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.modules.eam.entity.EamTechnicalStatusChangeDetail;
import org.jeecg.modules.eam.service.IEamTechnicalStatusChangeDetailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
 /**
 * @Description: æŠ€æœ¯çŠ¶æ€å˜æ›´ç”³è¯·æ˜Žç»†
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
@Slf4j
@Api(tags="技术状态变更申请明细")
@RestController
@RequestMapping("/eam/eamTechnicalStatusChangeDetail")
public class EamTechnicalStatusChangeDetailController extends JeecgController<EamTechnicalStatusChangeDetail, IEamTechnicalStatusChangeDetailService> {
    @Autowired
    private IEamTechnicalStatusChangeDetailService eamTechnicalStatusChangeDetailService;
    /**
     * åˆ†é¡µåˆ—表查询
     *
     * @param eamTechnicalStatusChangeDetail
     * @param pageNo
     * @param pageSize
     * @param req
     * @return
     */
    @ApiOperation(value="技术状态变更申请明细-分页列表查询", notes="技术状态变更申请明细-分页列表查询")
    @GetMapping(value = "/list")
    public Result<?> queryPageList(EamTechnicalStatusChangeDetail eamTechnicalStatusChangeDetail,
                                   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                                   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
                                   HttpServletRequest req) {
        QueryWrapper<EamTechnicalStatusChangeDetail> queryWrapper = QueryGenerator.initQueryWrapper(eamTechnicalStatusChangeDetail, req.getParameterMap());
        Page<EamTechnicalStatusChangeDetail> page = new Page<EamTechnicalStatusChangeDetail>(pageNo, pageSize);
        IPage<EamTechnicalStatusChangeDetail> pageList = eamTechnicalStatusChangeDetailService.page(page, queryWrapper);
        return Result.OK(pageList);
    }
    /**
     * æ·»åŠ 
     *
     * @param eamTechnicalStatusChangeDetail
     * @return
     */
    @AutoLog(value = "技术状态变更申请明细-添加")
    @ApiOperation(value="技术状态变更申请明细-添加", notes="技术状态变更申请明细-添加")
    @PostMapping(value = "/add")
    public Result<?> add(@RequestBody EamTechnicalStatusChangeDetail eamTechnicalStatusChangeDetail) {
        eamTechnicalStatusChangeDetailService.save(eamTechnicalStatusChangeDetail);
        return Result.OK("添加成功!");
    }
    /**
     * ç¼–辑
     *
     * @param eamTechnicalStatusChangeDetail
     * @return
     */
    @AutoLog(value = "技术状态变更申请明细-编辑")
    @ApiOperation(value="技术状态变更申请明细-编辑", notes="技术状态变更申请明细-编辑")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
    public Result<?> edit(@RequestBody EamTechnicalStatusChangeDetail eamTechnicalStatusChangeDetail) {
        eamTechnicalStatusChangeDetailService.updateById(eamTechnicalStatusChangeDetail);
        return Result.OK("编辑成功!");
    }
    /**
     * é€šè¿‡id删除
     *
     * @param id
     * @return
     */
    @AutoLog(value = "技术状态变更申请明细-通过id删除")
    @ApiOperation(value="技术状态变更申请明细-通过id删除", notes="技术状态变更申请明细-通过id删除")
    @DeleteMapping(value = "/delete")
    public Result<?> delete(@RequestParam(name="id",required=true) String id) {
        eamTechnicalStatusChangeDetailService.removeById(id);
        return Result.OK("删除成功!");
    }
    /**
     * æ‰¹é‡åˆ é™¤
     *
     * @param ids
     * @return
     */
    @AutoLog(value = "技术状态变更申请明细-批量删除")
    @ApiOperation(value="技术状态变更申请明细-批量删除", notes="技术状态变更申请明细-批量删除")
    @DeleteMapping(value = "/deleteBatch")
    public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
        this.eamTechnicalStatusChangeDetailService.removeByIds(Arrays.asList(ids.split(",")));
        return Result.OK("批量删除成功!");
    }
    /**
     * é€šè¿‡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) {
        EamTechnicalStatusChangeDetail eamTechnicalStatusChangeDetail = eamTechnicalStatusChangeDetailService.getById(id);
        return Result.OK(eamTechnicalStatusChangeDetail);
    }
  /**
   * å¯¼å‡ºexcel
   *
   * @param request
   * @param eamTechnicalStatusChangeDetail
   */
  @RequestMapping(value = "/exportXls")
  public ModelAndView exportXls(HttpServletRequest request, EamTechnicalStatusChangeDetail eamTechnicalStatusChangeDetail) {
      return super.exportXls(request, eamTechnicalStatusChangeDetail, EamTechnicalStatusChangeDetail.class, "技术状态变更申请明细");
  }
  /**
   * é€šè¿‡excel导入数据
   *
   * @param request
   * @param response
   * @return
   */
  @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
  public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
      return super.importExcel(request, response, EamTechnicalStatusChangeDetail.class);
  }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamTechnicalStatusDeactivateController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,151 @@
package org.jeecg.modules.eam.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.modules.eam.entity.EamTechnicalStatusDeactivate;
import org.jeecg.modules.eam.service.IEamTechnicalStatusDeactivateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
 /**
 * @Description: åœç”¨åŠ å·¥è®¾å¤‡ç”³è¯·å•
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
@Slf4j
@Api(tags="停用加工设备申请单")
@RestController
@RequestMapping("/eam/eamTechnicalStatusDeactivate")
public class EamTechnicalStatusDeactivateController extends JeecgController<EamTechnicalStatusDeactivate, IEamTechnicalStatusDeactivateService> {
    @Autowired
    private IEamTechnicalStatusDeactivateService eamTechnicalStatusDeactivateService;
    /**
     * åˆ†é¡µåˆ—表查询
     *
     * @param eamTechnicalStatusDeactivate
     * @param pageNo
     * @param pageSize
     * @param req
     * @return
     */
    @ApiOperation(value="停用加工设备申请单-分页列表查询", notes="停用加工设备申请单-分页列表查询")
    @GetMapping(value = "/list")
    public Result<?> queryPageList(EamTechnicalStatusDeactivate eamTechnicalStatusDeactivate,
                                   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                                   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
                                   HttpServletRequest req) {
        QueryWrapper<EamTechnicalStatusDeactivate> queryWrapper = QueryGenerator.initQueryWrapper(eamTechnicalStatusDeactivate, req.getParameterMap());
        Page<EamTechnicalStatusDeactivate> page = new Page<EamTechnicalStatusDeactivate>(pageNo, pageSize);
        IPage<EamTechnicalStatusDeactivate> pageList = eamTechnicalStatusDeactivateService.page(page, queryWrapper);
        return Result.OK(pageList);
    }
    /**
     * æ·»åŠ 
     *
     * @param eamTechnicalStatusDeactivate
     * @return
     */
    @AutoLog(value = "停用加工设备申请单-添加")
    @ApiOperation(value="停用加工设备申请单-添加", notes="停用加工设备申请单-添加")
    @PostMapping(value = "/add")
    public Result<?> add(@RequestBody EamTechnicalStatusDeactivate eamTechnicalStatusDeactivate) {
        eamTechnicalStatusDeactivateService.save(eamTechnicalStatusDeactivate);
        return Result.OK("添加成功!");
    }
    /**
     * ç¼–辑
     *
     * @param eamTechnicalStatusDeactivate
     * @return
     */
    @AutoLog(value = "停用加工设备申请单-编辑")
    @ApiOperation(value="停用加工设备申请单-编辑", notes="停用加工设备申请单-编辑")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
    public Result<?> edit(@RequestBody EamTechnicalStatusDeactivate eamTechnicalStatusDeactivate) {
        eamTechnicalStatusDeactivateService.updateById(eamTechnicalStatusDeactivate);
        return Result.OK("编辑成功!");
    }
    /**
     * é€šè¿‡id删除
     *
     * @param id
     * @return
     */
    @AutoLog(value = "停用加工设备申请单-通过id删除")
    @ApiOperation(value="停用加工设备申请单-通过id删除", notes="停用加工设备申请单-通过id删除")
    @DeleteMapping(value = "/delete")
    public Result<?> delete(@RequestParam(name="id",required=true) String id) {
        eamTechnicalStatusDeactivateService.removeById(id);
        return Result.OK("删除成功!");
    }
    /**
     * æ‰¹é‡åˆ é™¤
     *
     * @param ids
     * @return
     */
    @AutoLog(value = "停用加工设备申请单-批量删除")
    @ApiOperation(value="停用加工设备申请单-批量删除", notes="停用加工设备申请单-批量删除")
    @DeleteMapping(value = "/deleteBatch")
    public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
        this.eamTechnicalStatusDeactivateService.removeByIds(Arrays.asList(ids.split(",")));
        return Result.OK("批量删除成功!");
    }
    /**
     * é€šè¿‡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) {
        EamTechnicalStatusDeactivate eamTechnicalStatusDeactivate = eamTechnicalStatusDeactivateService.getById(id);
        return Result.OK(eamTechnicalStatusDeactivate);
    }
  /**
   * å¯¼å‡ºexcel
   *
   * @param request
   * @param eamTechnicalStatusDeactivate
   */
  @RequestMapping(value = "/exportXls")
  public ModelAndView exportXls(HttpServletRequest request, EamTechnicalStatusDeactivate eamTechnicalStatusDeactivate) {
      return super.exportXls(request, eamTechnicalStatusDeactivate, EamTechnicalStatusDeactivate.class, "停用加工设备申请单");
  }
  /**
   * é€šè¿‡excel导入数据
   *
   * @param request
   * @param response
   * @return
   */
  @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
  public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
      return super.importExcel(request, response, EamTechnicalStatusDeactivate.class);
  }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamTechnicalStatusDeactivateDetailController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,151 @@
package org.jeecg.modules.eam.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.modules.eam.entity.EamTechnicalStatusDeactivateDetail;
import org.jeecg.modules.eam.service.IEamTechnicalStatusDeactivateDetailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
 /**
 * @Description: åœç”¨åŠ å·¥è®¾å¤‡ç”³è¯·å•æ˜Žç»†
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
@Slf4j
@Api(tags="停用加工设备申请单明细")
@RestController
@RequestMapping("/eam/eamTechnicalStatusDeactivateDetail")
public class EamTechnicalStatusDeactivateDetailController extends JeecgController<EamTechnicalStatusDeactivateDetail, IEamTechnicalStatusDeactivateDetailService> {
    @Autowired
    private IEamTechnicalStatusDeactivateDetailService eamTechnicalStatusDeactivateDetailService;
    /**
     * åˆ†é¡µåˆ—表查询
     *
     * @param eamTechnicalStatusDeactivateDetail
     * @param pageNo
     * @param pageSize
     * @param req
     * @return
     */
    @ApiOperation(value="停用加工设备申请单明细-分页列表查询", notes="停用加工设备申请单明细-分页列表查询")
    @GetMapping(value = "/list")
    public Result<?> queryPageList(EamTechnicalStatusDeactivateDetail eamTechnicalStatusDeactivateDetail,
                                   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                                   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
                                   HttpServletRequest req) {
        QueryWrapper<EamTechnicalStatusDeactivateDetail> queryWrapper = QueryGenerator.initQueryWrapper(eamTechnicalStatusDeactivateDetail, req.getParameterMap());
        Page<EamTechnicalStatusDeactivateDetail> page = new Page<EamTechnicalStatusDeactivateDetail>(pageNo, pageSize);
        IPage<EamTechnicalStatusDeactivateDetail> pageList = eamTechnicalStatusDeactivateDetailService.page(page, queryWrapper);
        return Result.OK(pageList);
    }
    /**
     * æ·»åŠ 
     *
     * @param eamTechnicalStatusDeactivateDetail
     * @return
     */
    @AutoLog(value = "停用加工设备申请单明细-添加")
    @ApiOperation(value="停用加工设备申请单明细-添加", notes="停用加工设备申请单明细-添加")
    @PostMapping(value = "/add")
    public Result<?> add(@RequestBody EamTechnicalStatusDeactivateDetail eamTechnicalStatusDeactivateDetail) {
        eamTechnicalStatusDeactivateDetailService.save(eamTechnicalStatusDeactivateDetail);
        return Result.OK("添加成功!");
    }
    /**
     * ç¼–辑
     *
     * @param eamTechnicalStatusDeactivateDetail
     * @return
     */
    @AutoLog(value = "停用加工设备申请单明细-编辑")
    @ApiOperation(value="停用加工设备申请单明细-编辑", notes="停用加工设备申请单明细-编辑")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
    public Result<?> edit(@RequestBody EamTechnicalStatusDeactivateDetail eamTechnicalStatusDeactivateDetail) {
        eamTechnicalStatusDeactivateDetailService.updateById(eamTechnicalStatusDeactivateDetail);
        return Result.OK("编辑成功!");
    }
    /**
     * é€šè¿‡id删除
     *
     * @param id
     * @return
     */
    @AutoLog(value = "停用加工设备申请单明细-通过id删除")
    @ApiOperation(value="停用加工设备申请单明细-通过id删除", notes="停用加工设备申请单明细-通过id删除")
    @DeleteMapping(value = "/delete")
    public Result<?> delete(@RequestParam(name="id",required=true) String id) {
        eamTechnicalStatusDeactivateDetailService.removeById(id);
        return Result.OK("删除成功!");
    }
    /**
     * æ‰¹é‡åˆ é™¤
     *
     * @param ids
     * @return
     */
    @AutoLog(value = "停用加工设备申请单明细-批量删除")
    @ApiOperation(value="停用加工设备申请单明细-批量删除", notes="停用加工设备申请单明细-批量删除")
    @DeleteMapping(value = "/deleteBatch")
    public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
        this.eamTechnicalStatusDeactivateDetailService.removeByIds(Arrays.asList(ids.split(",")));
        return Result.OK("批量删除成功!");
    }
    /**
     * é€šè¿‡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) {
        EamTechnicalStatusDeactivateDetail eamTechnicalStatusDeactivateDetail = eamTechnicalStatusDeactivateDetailService.getById(id);
        return Result.OK(eamTechnicalStatusDeactivateDetail);
    }
  /**
   * å¯¼å‡ºexcel
   *
   * @param request
   * @param eamTechnicalStatusDeactivateDetail
   */
  @RequestMapping(value = "/exportXls")
  public ModelAndView exportXls(HttpServletRequest request, EamTechnicalStatusDeactivateDetail eamTechnicalStatusDeactivateDetail) {
      return super.exportXls(request, eamTechnicalStatusDeactivateDetail, EamTechnicalStatusDeactivateDetail.class, "停用加工设备申请单明细");
  }
  /**
   * é€šè¿‡excel导入数据
   *
   * @param request
   * @param response
   * @return
   */
  @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
  public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
      return super.importExcel(request, response, EamTechnicalStatusDeactivateDetail.class);
  }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamTechnicalStatusEvaluationApplicationController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,151 @@
package org.jeecg.modules.eam.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.modules.eam.entity.EamTechnicalStatusEvaluationApplication;
import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationApplicationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
 /**
 * @Description: åŠ å·¥è®¾å¤‡æŠ€æœ¯é‰´å®šç”³è¯·
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
@Slf4j
@Api(tags="加工设备技术鉴定申请")
@RestController
@RequestMapping("/eam/eamTechnicalStatusEvaluationApplication")
public class EamTechnicalStatusEvaluationApplicationController extends JeecgController<EamTechnicalStatusEvaluationApplication, IEamTechnicalStatusEvaluationApplicationService> {
    @Autowired
    private IEamTechnicalStatusEvaluationApplicationService eamTechnicalStatusEvaluationApplicationService;
    /**
     * åˆ†é¡µåˆ—表查询
     *
     * @param eamTechnicalStatusEvaluationApplication
     * @param pageNo
     * @param pageSize
     * @param req
     * @return
     */
    @ApiOperation(value="加工设备技术鉴定申请-分页列表查询", notes="加工设备技术鉴定申请-分页列表查询")
    @GetMapping(value = "/list")
    public Result<?> queryPageList(EamTechnicalStatusEvaluationApplication eamTechnicalStatusEvaluationApplication,
                                   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                                   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
                                   HttpServletRequest req) {
        QueryWrapper<EamTechnicalStatusEvaluationApplication> queryWrapper = QueryGenerator.initQueryWrapper(eamTechnicalStatusEvaluationApplication, req.getParameterMap());
        Page<EamTechnicalStatusEvaluationApplication> page = new Page<EamTechnicalStatusEvaluationApplication>(pageNo, pageSize);
        IPage<EamTechnicalStatusEvaluationApplication> pageList = eamTechnicalStatusEvaluationApplicationService.page(page, queryWrapper);
        return Result.OK(pageList);
    }
    /**
     * æ·»åŠ 
     *
     * @param eamTechnicalStatusEvaluationApplication
     * @return
     */
    @AutoLog(value = "加工设备技术鉴定申请-添加")
    @ApiOperation(value="加工设备技术鉴定申请-添加", notes="加工设备技术鉴定申请-添加")
    @PostMapping(value = "/add")
    public Result<?> add(@RequestBody EamTechnicalStatusEvaluationApplication eamTechnicalStatusEvaluationApplication) {
        eamTechnicalStatusEvaluationApplicationService.save(eamTechnicalStatusEvaluationApplication);
        return Result.OK("添加成功!");
    }
    /**
     * ç¼–辑
     *
     * @param eamTechnicalStatusEvaluationApplication
     * @return
     */
    @AutoLog(value = "加工设备技术鉴定申请-编辑")
    @ApiOperation(value="加工设备技术鉴定申请-编辑", notes="加工设备技术鉴定申请-编辑")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
    public Result<?> edit(@RequestBody EamTechnicalStatusEvaluationApplication eamTechnicalStatusEvaluationApplication) {
        eamTechnicalStatusEvaluationApplicationService.updateById(eamTechnicalStatusEvaluationApplication);
        return Result.OK("编辑成功!");
    }
    /**
     * é€šè¿‡id删除
     *
     * @param id
     * @return
     */
    @AutoLog(value = "加工设备技术鉴定申请-通过id删除")
    @ApiOperation(value="加工设备技术鉴定申请-通过id删除", notes="加工设备技术鉴定申请-通过id删除")
    @DeleteMapping(value = "/delete")
    public Result<?> delete(@RequestParam(name="id",required=true) String id) {
        eamTechnicalStatusEvaluationApplicationService.removeById(id);
        return Result.OK("删除成功!");
    }
    /**
     * æ‰¹é‡åˆ é™¤
     *
     * @param ids
     * @return
     */
    @AutoLog(value = "加工设备技术鉴定申请-批量删除")
    @ApiOperation(value="加工设备技术鉴定申请-批量删除", notes="加工设备技术鉴定申请-批量删除")
    @DeleteMapping(value = "/deleteBatch")
    public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
        this.eamTechnicalStatusEvaluationApplicationService.removeByIds(Arrays.asList(ids.split(",")));
        return Result.OK("批量删除成功!");
    }
    /**
     * é€šè¿‡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) {
        EamTechnicalStatusEvaluationApplication eamTechnicalStatusEvaluationApplication = eamTechnicalStatusEvaluationApplicationService.getById(id);
        return Result.OK(eamTechnicalStatusEvaluationApplication);
    }
  /**
   * å¯¼å‡ºexcel
   *
   * @param request
   * @param eamTechnicalStatusEvaluationApplication
   */
  @RequestMapping(value = "/exportXls")
  public ModelAndView exportXls(HttpServletRequest request, EamTechnicalStatusEvaluationApplication eamTechnicalStatusEvaluationApplication) {
      return super.exportXls(request, eamTechnicalStatusEvaluationApplication, EamTechnicalStatusEvaluationApplication.class, "加工设备技术鉴定申请");
  }
  /**
   * é€šè¿‡excel导入数据
   *
   * @param request
   * @param response
   * @return
   */
  @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
  public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
      return super.importExcel(request, response, EamTechnicalStatusEvaluationApplication.class);
  }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamTechnicalStatusEvaluationOrderChangeController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,151 @@
package org.jeecg.modules.eam.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.modules.eam.entity.EamTechnicalStatusEvaluationOrderChange;
import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationOrderChangeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
 /**
 * @Description: æŠ€æœ¯çŠ¶æ€é‰´å®šå·¥å•å˜æ›´
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
@Slf4j
@Api(tags="技术状态鉴定工单变更")
@RestController
@RequestMapping("/eam/eamTechnicalStatusEvaluationOrderChange")
public class EamTechnicalStatusEvaluationOrderChangeController extends JeecgController<EamTechnicalStatusEvaluationOrderChange, IEamTechnicalStatusEvaluationOrderChangeService> {
    @Autowired
    private IEamTechnicalStatusEvaluationOrderChangeService eamTechnicalStatusEvaluationOrderChangeService;
    /**
     * åˆ†é¡µåˆ—表查询
     *
     * @param eamTechnicalStatusEvaluationOrderChange
     * @param pageNo
     * @param pageSize
     * @param req
     * @return
     */
    @ApiOperation(value="技术状态鉴定工单变更-分页列表查询", notes="技术状态鉴定工单变更-分页列表查询")
    @GetMapping(value = "/list")
    public Result<?> queryPageList(EamTechnicalStatusEvaluationOrderChange eamTechnicalStatusEvaluationOrderChange,
                                   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                                   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
                                   HttpServletRequest req) {
        QueryWrapper<EamTechnicalStatusEvaluationOrderChange> queryWrapper = QueryGenerator.initQueryWrapper(eamTechnicalStatusEvaluationOrderChange, req.getParameterMap());
        Page<EamTechnicalStatusEvaluationOrderChange> page = new Page<EamTechnicalStatusEvaluationOrderChange>(pageNo, pageSize);
        IPage<EamTechnicalStatusEvaluationOrderChange> pageList = eamTechnicalStatusEvaluationOrderChangeService.page(page, queryWrapper);
        return Result.OK(pageList);
    }
    /**
     * æ·»åŠ 
     *
     * @param eamTechnicalStatusEvaluationOrderChange
     * @return
     */
    @AutoLog(value = "技术状态鉴定工单变更-添加")
    @ApiOperation(value="技术状态鉴定工单变更-添加", notes="技术状态鉴定工单变更-添加")
    @PostMapping(value = "/add")
    public Result<?> add(@RequestBody EamTechnicalStatusEvaluationOrderChange eamTechnicalStatusEvaluationOrderChange) {
        eamTechnicalStatusEvaluationOrderChangeService.save(eamTechnicalStatusEvaluationOrderChange);
        return Result.OK("添加成功!");
    }
    /**
     * ç¼–辑
     *
     * @param eamTechnicalStatusEvaluationOrderChange
     * @return
     */
    @AutoLog(value = "技术状态鉴定工单变更-编辑")
    @ApiOperation(value="技术状态鉴定工单变更-编辑", notes="技术状态鉴定工单变更-编辑")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
    public Result<?> edit(@RequestBody EamTechnicalStatusEvaluationOrderChange eamTechnicalStatusEvaluationOrderChange) {
        eamTechnicalStatusEvaluationOrderChangeService.updateById(eamTechnicalStatusEvaluationOrderChange);
        return Result.OK("编辑成功!");
    }
    /**
     * é€šè¿‡id删除
     *
     * @param id
     * @return
     */
    @AutoLog(value = "技术状态鉴定工单变更-通过id删除")
    @ApiOperation(value="技术状态鉴定工单变更-通过id删除", notes="技术状态鉴定工单变更-通过id删除")
    @DeleteMapping(value = "/delete")
    public Result<?> delete(@RequestParam(name="id",required=true) String id) {
        eamTechnicalStatusEvaluationOrderChangeService.removeById(id);
        return Result.OK("删除成功!");
    }
    /**
     * æ‰¹é‡åˆ é™¤
     *
     * @param ids
     * @return
     */
    @AutoLog(value = "技术状态鉴定工单变更-批量删除")
    @ApiOperation(value="技术状态鉴定工单变更-批量删除", notes="技术状态鉴定工单变更-批量删除")
    @DeleteMapping(value = "/deleteBatch")
    public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
        this.eamTechnicalStatusEvaluationOrderChangeService.removeByIds(Arrays.asList(ids.split(",")));
        return Result.OK("批量删除成功!");
    }
    /**
     * é€šè¿‡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) {
        EamTechnicalStatusEvaluationOrderChange eamTechnicalStatusEvaluationOrderChange = eamTechnicalStatusEvaluationOrderChangeService.getById(id);
        return Result.OK(eamTechnicalStatusEvaluationOrderChange);
    }
  /**
   * å¯¼å‡ºexcel
   *
   * @param request
   * @param eamTechnicalStatusEvaluationOrderChange
   */
  @RequestMapping(value = "/exportXls")
  public ModelAndView exportXls(HttpServletRequest request, EamTechnicalStatusEvaluationOrderChange eamTechnicalStatusEvaluationOrderChange) {
      return super.exportXls(request, eamTechnicalStatusEvaluationOrderChange, EamTechnicalStatusEvaluationOrderChange.class, "技术状态鉴定工单变更");
  }
  /**
   * é€šè¿‡excel导入数据
   *
   * @param request
   * @param response
   * @return
   */
  @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
  public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
      return super.importExcel(request, response, EamTechnicalStatusEvaluationOrderChange.class);
  }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamTechnicalStatusEvaluationOrderController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,151 @@
package org.jeecg.modules.eam.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.modules.eam.entity.EamTechnicalStatusEvaluationOrder;
import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
 /**
 * @Description: æŠ€æœ¯çŠ¶æ€é‰´å®šå·¥å•
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
@Slf4j
@Api(tags="技术状态鉴定工单")
@RestController
@RequestMapping("/eam/eamTechnicalStatusEvaluationOrder")
public class EamTechnicalStatusEvaluationOrderController extends JeecgController<EamTechnicalStatusEvaluationOrder, IEamTechnicalStatusEvaluationOrderService> {
    @Autowired
    private IEamTechnicalStatusEvaluationOrderService eamTechnicalStatusEvaluationOrderService;
    /**
     * åˆ†é¡µåˆ—表查询
     *
     * @param eamTechnicalStatusEvaluationOrder
     * @param pageNo
     * @param pageSize
     * @param req
     * @return
     */
    @ApiOperation(value="技术状态鉴定工单-分页列表查询", notes="技术状态鉴定工单-分页列表查询")
    @GetMapping(value = "/list")
    public Result<?> queryPageList(EamTechnicalStatusEvaluationOrder eamTechnicalStatusEvaluationOrder,
                                   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                                   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
                                   HttpServletRequest req) {
        QueryWrapper<EamTechnicalStatusEvaluationOrder> queryWrapper = QueryGenerator.initQueryWrapper(eamTechnicalStatusEvaluationOrder, req.getParameterMap());
        Page<EamTechnicalStatusEvaluationOrder> page = new Page<EamTechnicalStatusEvaluationOrder>(pageNo, pageSize);
        IPage<EamTechnicalStatusEvaluationOrder> pageList = eamTechnicalStatusEvaluationOrderService.page(page, queryWrapper);
        return Result.OK(pageList);
    }
    /**
     * æ·»åŠ 
     *
     * @param eamTechnicalStatusEvaluationOrder
     * @return
     */
    @AutoLog(value = "技术状态鉴定工单-添加")
    @ApiOperation(value="技术状态鉴定工单-添加", notes="技术状态鉴定工单-添加")
    @PostMapping(value = "/add")
    public Result<?> add(@RequestBody EamTechnicalStatusEvaluationOrder eamTechnicalStatusEvaluationOrder) {
        eamTechnicalStatusEvaluationOrderService.save(eamTechnicalStatusEvaluationOrder);
        return Result.OK("添加成功!");
    }
    /**
     * ç¼–辑
     *
     * @param eamTechnicalStatusEvaluationOrder
     * @return
     */
    @AutoLog(value = "技术状态鉴定工单-编辑")
    @ApiOperation(value="技术状态鉴定工单-编辑", notes="技术状态鉴定工单-编辑")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
    public Result<?> edit(@RequestBody EamTechnicalStatusEvaluationOrder eamTechnicalStatusEvaluationOrder) {
        eamTechnicalStatusEvaluationOrderService.updateById(eamTechnicalStatusEvaluationOrder);
        return Result.OK("编辑成功!");
    }
    /**
     * é€šè¿‡id删除
     *
     * @param id
     * @return
     */
    @AutoLog(value = "技术状态鉴定工单-通过id删除")
    @ApiOperation(value="技术状态鉴定工单-通过id删除", notes="技术状态鉴定工单-通过id删除")
    @DeleteMapping(value = "/delete")
    public Result<?> delete(@RequestParam(name="id",required=true) String id) {
        eamTechnicalStatusEvaluationOrderService.removeById(id);
        return Result.OK("删除成功!");
    }
    /**
     * æ‰¹é‡åˆ é™¤
     *
     * @param ids
     * @return
     */
    @AutoLog(value = "技术状态鉴定工单-批量删除")
    @ApiOperation(value="技术状态鉴定工单-批量删除", notes="技术状态鉴定工单-批量删除")
    @DeleteMapping(value = "/deleteBatch")
    public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
        this.eamTechnicalStatusEvaluationOrderService.removeByIds(Arrays.asList(ids.split(",")));
        return Result.OK("批量删除成功!");
    }
    /**
     * é€šè¿‡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) {
        EamTechnicalStatusEvaluationOrder eamTechnicalStatusEvaluationOrder = eamTechnicalStatusEvaluationOrderService.getById(id);
        return Result.OK(eamTechnicalStatusEvaluationOrder);
    }
  /**
   * å¯¼å‡ºexcel
   *
   * @param request
   * @param eamTechnicalStatusEvaluationOrder
   */
  @RequestMapping(value = "/exportXls")
  public ModelAndView exportXls(HttpServletRequest request, EamTechnicalStatusEvaluationOrder eamTechnicalStatusEvaluationOrder) {
      return super.exportXls(request, eamTechnicalStatusEvaluationOrder, EamTechnicalStatusEvaluationOrder.class, "技术状态鉴定工单");
  }
  /**
   * é€šè¿‡excel导入数据
   *
   * @param request
   * @param response
   * @return
   */
  @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
  public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
      return super.importExcel(request, response, EamTechnicalStatusEvaluationOrder.class);
  }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamTechnicalStatusEvaluationOrderDetailController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,151 @@
package org.jeecg.modules.eam.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.modules.eam.entity.EamTechnicalStatusEvaluationOrderDetail;
import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationOrderDetailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
 /**
 * @Description: æŠ€æœ¯çŠ¶æ€é‰´å®šå·¥å•æ˜Žç»†
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
@Slf4j
@Api(tags="技术状态鉴定工单明细")
@RestController
@RequestMapping("/eam/eamTechnicalStatusEvaluationOrderDetail")
public class EamTechnicalStatusEvaluationOrderDetailController extends JeecgController<EamTechnicalStatusEvaluationOrderDetail, IEamTechnicalStatusEvaluationOrderDetailService> {
    @Autowired
    private IEamTechnicalStatusEvaluationOrderDetailService eamTechnicalStatusEvaluationOrderDetailService;
    /**
     * åˆ†é¡µåˆ—表查询
     *
     * @param eamTechnicalStatusEvaluationOrderDetail
     * @param pageNo
     * @param pageSize
     * @param req
     * @return
     */
    @ApiOperation(value="技术状态鉴定工单明细-分页列表查询", notes="技术状态鉴定工单明细-分页列表查询")
    @GetMapping(value = "/list")
    public Result<?> queryPageList(EamTechnicalStatusEvaluationOrderDetail eamTechnicalStatusEvaluationOrderDetail,
                                   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                                   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
                                   HttpServletRequest req) {
        QueryWrapper<EamTechnicalStatusEvaluationOrderDetail> queryWrapper = QueryGenerator.initQueryWrapper(eamTechnicalStatusEvaluationOrderDetail, req.getParameterMap());
        Page<EamTechnicalStatusEvaluationOrderDetail> page = new Page<EamTechnicalStatusEvaluationOrderDetail>(pageNo, pageSize);
        IPage<EamTechnicalStatusEvaluationOrderDetail> pageList = eamTechnicalStatusEvaluationOrderDetailService.page(page, queryWrapper);
        return Result.OK(pageList);
    }
    /**
     * æ·»åŠ 
     *
     * @param eamTechnicalStatusEvaluationOrderDetail
     * @return
     */
    @AutoLog(value = "技术状态鉴定工单明细-添加")
    @ApiOperation(value="技术状态鉴定工单明细-添加", notes="技术状态鉴定工单明细-添加")
    @PostMapping(value = "/add")
    public Result<?> add(@RequestBody EamTechnicalStatusEvaluationOrderDetail eamTechnicalStatusEvaluationOrderDetail) {
        eamTechnicalStatusEvaluationOrderDetailService.save(eamTechnicalStatusEvaluationOrderDetail);
        return Result.OK("添加成功!");
    }
    /**
     * ç¼–辑
     *
     * @param eamTechnicalStatusEvaluationOrderDetail
     * @return
     */
    @AutoLog(value = "技术状态鉴定工单明细-编辑")
    @ApiOperation(value="技术状态鉴定工单明细-编辑", notes="技术状态鉴定工单明细-编辑")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
    public Result<?> edit(@RequestBody EamTechnicalStatusEvaluationOrderDetail eamTechnicalStatusEvaluationOrderDetail) {
        eamTechnicalStatusEvaluationOrderDetailService.updateById(eamTechnicalStatusEvaluationOrderDetail);
        return Result.OK("编辑成功!");
    }
    /**
     * é€šè¿‡id删除
     *
     * @param id
     * @return
     */
    @AutoLog(value = "技术状态鉴定工单明细-通过id删除")
    @ApiOperation(value="技术状态鉴定工单明细-通过id删除", notes="技术状态鉴定工单明细-通过id删除")
    @DeleteMapping(value = "/delete")
    public Result<?> delete(@RequestParam(name="id",required=true) String id) {
        eamTechnicalStatusEvaluationOrderDetailService.removeById(id);
        return Result.OK("删除成功!");
    }
    /**
     * æ‰¹é‡åˆ é™¤
     *
     * @param ids
     * @return
     */
    @AutoLog(value = "技术状态鉴定工单明细-批量删除")
    @ApiOperation(value="技术状态鉴定工单明细-批量删除", notes="技术状态鉴定工单明细-批量删除")
    @DeleteMapping(value = "/deleteBatch")
    public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
        this.eamTechnicalStatusEvaluationOrderDetailService.removeByIds(Arrays.asList(ids.split(",")));
        return Result.OK("批量删除成功!");
    }
    /**
     * é€šè¿‡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) {
        EamTechnicalStatusEvaluationOrderDetail eamTechnicalStatusEvaluationOrderDetail = eamTechnicalStatusEvaluationOrderDetailService.getById(id);
        return Result.OK(eamTechnicalStatusEvaluationOrderDetail);
    }
  /**
   * å¯¼å‡ºexcel
   *
   * @param request
   * @param eamTechnicalStatusEvaluationOrderDetail
   */
  @RequestMapping(value = "/exportXls")
  public ModelAndView exportXls(HttpServletRequest request, EamTechnicalStatusEvaluationOrderDetail eamTechnicalStatusEvaluationOrderDetail) {
      return super.exportXls(request, eamTechnicalStatusEvaluationOrderDetail, EamTechnicalStatusEvaluationOrderDetail.class, "技术状态鉴定工单明细");
  }
  /**
   * é€šè¿‡excel导入数据
   *
   * @param request
   * @param response
   * @return
   */
  @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
  public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
      return super.importExcel(request, response, EamTechnicalStatusEvaluationOrderDetail.class);
  }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamTechnicalStatusEvaluationStandardController.java
@@ -8,20 +8,24 @@
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.modules.eam.constant.BusinessCodeConst;
import org.jeecg.modules.eam.constant.TechnicalStatusEvaluationStandardEnum;
import org.jeecg.modules.eam.entity.EamMaintenanceStandard;
import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationStandard;
import org.jeecg.modules.eam.request.EamTechnicalStatusEvaluationStandardRequest;
import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationStandardService;
import org.jeecg.modules.system.service.ISysBusinessCodeRuleService;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
 * @Description: æŠ€æœ¯çŠ¶æ€é‰´å®šè§„èŒƒ
@@ -146,6 +150,7 @@
    /**
     * æäº¤
     *
     * @param id
     * @return
     */
@@ -162,15 +167,105 @@
    }
    /**
     * é€šè¿‡excel导入数据
     * å®‰å…¨è£…置检查明细导入
     *
     * @param request
     * @param response
     * @return
     */
    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
        return super.importExcel(request, response, EamTechnicalStatusEvaluationStandard.class);
    @PostMapping(value = "/importSafetyEquipmentCheck")
    public Result<?> importSafetyEquipmentCheck(HttpServletRequest request) {
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        Map<String, String> results = new LinkedHashMap<>();
        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
        // ç»Ÿè®¡å¯¼å…¥ç»“æžœ
        int successCount = 0;
        int failureCount = 0;
        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
            MultipartFile file = entity.getValue();
            String fileName = file.getOriginalFilename();
            Result<?> importResult = eamTechnicalStatusEvaluationStandardService.importSafetyEquipmentCheck(file);
            if (importResult.isSuccess()) {
                successCount++;
            } else {
                results.put(fileName, importResult.getMessage());
                failureCount++;
            }
        }
        // æž„建最终响应
        return getResult(results, fileMap.size(), successCount, failureCount);
    }
    /**
     * å®‰å…¨è£…置检查明细导入
     *
     * @param request
     * @return
     */
    @PostMapping(value = "/importPrecisionCheck")
    public Result<?> importPrecisionCheck(HttpServletRequest request) {
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        Map<String, String> results = new LinkedHashMap<>();
        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
        // ç»Ÿè®¡å¯¼å…¥ç»“æžœ
        int successCount = 0;
        int failureCount = 0;
        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
            MultipartFile file = entity.getValue();
            String fileName = file.getOriginalFilename();
            Result<?> importResult = eamTechnicalStatusEvaluationStandardService.importPrecisionCheck(file);
            if (importResult.isSuccess()) {
                successCount++;
            } else {
                results.put(fileName, importResult.getMessage());
                failureCount++;
            }
        }
        // æž„建最终响应
        return getResult(results, fileMap.size(), successCount, failureCount);
    }
    /**
     * å®‰å…¨è£…置检查明细导入
     *
     * @param request
     * @return
     */
    @PostMapping(value = "/importOtherCheck")
    public Result<?> importOtherCheck(HttpServletRequest request) {
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        Map<String, String> results = new LinkedHashMap<>();
        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
        // ç»Ÿè®¡å¯¼å…¥ç»“æžœ
        int successCount = 0;
        int failureCount = 0;
        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
            MultipartFile file = entity.getValue();
            String fileName = file.getOriginalFilename();
            Result<?> importResult = eamTechnicalStatusEvaluationStandardService.importOtherCheck(file);
            if (importResult.isSuccess()) {
                successCount++;
            } else {
                results.put(fileName, importResult.getMessage());
                failureCount++;
            }
        }
        // æž„建最终响应
        return getResult(results, fileMap.size(), successCount, failureCount);
    }
    @NotNull
    private Result<?> getResult(Map<String, String> results, int fileCount, int successCount, int failureCount) {
        List<String> response = new ArrayList<>();
        response.add("总文件数:" + fileCount);
        response.add("成功数:" + successCount);
        response.add("失败数:" + failureCount);
        if (failureCount > 0) {
            response.add("错误信息:" + results.values());
            return Result.error("部分文件导入失败:" + response);
        }
        return Result.ok("所有文件导入成功:" + response);
    }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamTechnicalStatusChange.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,79 @@
package org.jeecg.modules.eam.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
 * @Description: æŠ€æœ¯çŠ¶æ€å˜æ›´ç”³è¯·
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
@Data
@TableName("eam_technical_status_change")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="eam_technical_status_change对象", description="技术状态变更申请")
public class EamTechnicalStatusChange {
    /**主键*/
    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键")
    private String id;
    /**创建人*/
    @ApiModelProperty(value = "创建人")
    private String createBy;
    /**创建时间*/
    @ApiModelProperty(value = "创建时间")
    private Date createTime;
    /**更新人*/
    @ApiModelProperty(value = "更新人")
    private String updateBy;
    /**更新时间*/
    @ApiModelProperty(value = "更新时间")
    private Date updateTime;
    /**删除标记*/
    @ApiModelProperty(value = "删除标记")
    private Integer delFlag;
    /**变更单号*/
    @ApiModelProperty(value = "变更单号")
    private String changeOrderNum;
    /**变更单状态*/
    @ApiModelProperty(value = "变更单状态")
    private String changeStatus;
    /**编制人*/
    @ApiModelProperty(value = "编制人")
    private String designer;
    /**编制时间*/
    @ApiModelProperty(value = "编制时间")
    private Date designerTime;
    /**使用单位室主管签字*/
    @ApiModelProperty(value = "使用单位室主管签字")
    private String departHeaderSignature;
    /**使用单位室主管签字时间*/
    @ApiModelProperty(value = "使用单位室主管签字时间")
    private Date departHeaderSignatureTime;
    /**使用单位室主管意见*/
    @ApiModelProperty(value = "使用单位室主管意见")
    private String departHeaderSignatureComment;
    /**使用单位部主管签字*/
    @ApiModelProperty(value = "使用单位部主管签字")
    private String departLeaderSignature;
    /**使用单位部主管签字时间*/
    @ApiModelProperty(value = "使用单位部主管签字时间")
    private Date departLeaderSignatureTime;
    /**使用单位部主管签字*/
    @ApiModelProperty(value = "使用单位部主管签字")
    private String departLeaderSignatureComment;
    /**HF编码*/
    @ApiModelProperty(value = "HF编码")
    private String hfCode;
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamTechnicalStatusChangeDetail.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,67 @@
package org.jeecg.modules.eam.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
 * @Description: æŠ€æœ¯çŠ¶æ€å˜æ›´ç”³è¯·æ˜Žç»†
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
@Data
@TableName("eam_technical_status_change_detail")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="eam_technical_status_change_detail对象", description="技术状态变更申请明细")
public class EamTechnicalStatusChangeDetail {
    /**主键*/
    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键")
    private String id;
    /**创建人*/
    @ApiModelProperty(value = "创建人")
    private String createBy;
    /**创建时间*/
    @ApiModelProperty(value = "创建时间")
    private Date createTime;
    /**更新人*/
    @ApiModelProperty(value = "更新人")
    private String updateBy;
    /**更新时间*/
    @ApiModelProperty(value = "更新时间")
    private Date updateTime;
    /**设备ID*/
    @ApiModelProperty(value = "设备ID")
    private String equipmentId;
    /**变更原因;搬迁、大修、改造、其他*/
    @ApiModelProperty(value = "变更原因;搬迁、大修、改造、其他")
    private String changeCategory;
    /**变更日期*/
    @ApiModelProperty(value = "变更日期")
    private Date changeDate;
    /**变更后技术状态;变更通过后默认设备技术状态改为禁用*/
    @ApiModelProperty(value = "变更后技术状态;变更通过后默认设备技术状态改为禁用")
    private String changeTechnicalStatus;
    /**验收检查人*/
    @ApiModelProperty(value = "验收检查人")
    private String acceptanceChecker;
    /**验收检查时间*/
    @ApiModelProperty(value = "验收检查时间")
    private Date acceptanceCheckTime;
    /**验收检查结果;大修、改造 éœ€è¦å¡«å†™éªŒæ”¶ç»“果,搬迁按照技术状态鉴定工单维护,其他暂未使用到,只预留此类型*/
    @ApiModelProperty(value = "验收检查结果;大修、改造 éœ€è¦å¡«å†™éªŒæ”¶ç»“果,搬迁按照技术状态鉴定工单维护,其他暂未使用到,只预留此类型")
    private String acceptanceCheckResult;
    /**技术状态鉴定工单ID;搬迁使用*/
    @ApiModelProperty(value = "技术状态鉴定工单ID;搬迁使用")
    private String orderId;
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamTechnicalStatusDeactivate.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,82 @@
package org.jeecg.modules.eam.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
 * @Description: åœç”¨åŠ å·¥è®¾å¤‡ç”³è¯·å•
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
@Data
@TableName("eam_technical_status_deactivate")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="eam_technical_status_deactivate对象", description="停用加工设备申请单")
public class EamTechnicalStatusDeactivate {
    /**主键*/
    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键")
    private String id;
    /**创建人*/
    @ApiModelProperty(value = "创建人")
    private String createBy;
    /**创建时间*/
    @ApiModelProperty(value = "创建时间")
    private Date createTime;
    /**更新人*/
    @ApiModelProperty(value = "更新人")
    private String updateBy;
    /**更新时间*/
    @ApiModelProperty(value = "更新时间")
    private Date updateTime;
    /**删除标记*/
    @ApiModelProperty(value = "删除标记")
    private Integer delFlag;
    /**停用单号*/
    @ApiModelProperty(value = "停用单号")
    private String deactivateOrderNum;
    /**申请人*/
    @ApiModelProperty(value = "申请人")
    private String applicant;
    /**申请部门*/
    @ApiModelProperty(value = "申请部门")
    private String factoryOrgCode;
    /**申请日期*/
    @ApiModelProperty(value = "申请日期")
    private Date applyDate;
    /**申请单状态;待提交、待单位室级领导审核、生产设备管理主管审核、待保障部领导审核、已作废、已完成*/
    @ApiModelProperty(value = "申请单状态;待提交、待单位室级领导审核、生产设备管理主管审核、待保障部领导审核、已作废、已完成")
    private String applicationStatus;
    /**使用单位室主管签字*/
    @ApiModelProperty(value = "使用单位室主管签字")
    private String departHeaderSignature;
    /**使用单位室主管签字时间*/
    @ApiModelProperty(value = "使用单位室主管签字时间")
    private Date departHeaderSignatureTime;
    /**使用单位室主管意见*/
    @ApiModelProperty(value = "使用单位室主管意见")
    private String departHeaderSignatureComment;
    /**使用单位部主管签字*/
    @ApiModelProperty(value = "使用单位部主管签字")
    private String departLeaderSignature;
    /**使用单位部主管签字时间*/
    @ApiModelProperty(value = "使用单位部主管签字时间")
    private Date departLeaderSignatureTime;
    /**使用单位部主管签字*/
    @ApiModelProperty(value = "使用单位部主管签字")
    private String departLeaderSignatureComment;
    /**HF编码*/
    @ApiModelProperty(value = "HF编码")
    private String hfCode;
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamTechnicalStatusDeactivateDetail.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
package org.jeecg.modules.eam.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
 * @Description: åœç”¨åŠ å·¥è®¾å¤‡ç”³è¯·å•æ˜Žç»†
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
@Data
@TableName("eam_technical_status_deactivate_detail")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="eam_technical_status_deactivate_detail对象", description="停用加工设备申请单明细")
public class EamTechnicalStatusDeactivateDetail {
    /**主键*/
    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键")
    private String id;
    /**创建人*/
    @ApiModelProperty(value = "创建人")
    private String createBy;
    /**创建时间*/
    @ApiModelProperty(value = "创建时间")
    private Date createTime;
    /**更新人*/
    @ApiModelProperty(value = "更新人")
    private String updateBy;
    /**更新时间*/
    @ApiModelProperty(value = "更新时间")
    private Date updateTime;
    /**设备ID*/
    @ApiModelProperty(value = "设备ID")
    private String equipmentId;
    /**停用原因*/
    @ApiModelProperty(value = "停用原因")
    private String deactivateReason;
    /**停用时长*/
    @ApiModelProperty(value = "停用时长")
    private java.math.BigDecimal deactivateDuration;
    /**停用时长单位;天、月、年*/
    @ApiModelProperty(value = "停用时长单位;天、月、年")
    private String deactivateDurationUnit;
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamTechnicalStatusEvaluationApplication.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,91 @@
package org.jeecg.modules.eam.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
 * @Description: åŠ å·¥è®¾å¤‡æŠ€æœ¯é‰´å®šç”³è¯·
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
@Data
@TableName("eam_technical_status_evaluation_application")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="eam_technical_status_evaluation_application对象", description="加工设备技术鉴定申请")
public class EamTechnicalStatusEvaluationApplication {
    /**主键*/
    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键")
    private String id;
    /**创建人*/
    @ApiModelProperty(value = "创建人")
    private String createBy;
    /**创建时间*/
    @ApiModelProperty(value = "创建时间")
    private Date createTime;
    /**更新人*/
    @ApiModelProperty(value = "更新人")
    private String updateBy;
    /**更新时间*/
    @ApiModelProperty(value = "更新时间")
    private Date updateTime;
    /**删除标记*/
    @ApiModelProperty(value = "删除标记")
    private Integer delFlag;
    /**申请单号*/
    @ApiModelProperty(value = "申请单号")
    private String applicationOrderNum;
    /**申请人*/
    @ApiModelProperty(value = "申请人")
    private String applicant;
    /**申请部门*/
    @ApiModelProperty(value = "申请部门")
    private String factoryOrgCode;
    /**申请日期*/
    @ApiModelProperty(value = "申请日期")
    private Date applyDate;
    /**申请单状态;待提交、待单位室级领导审核、生产设备管理主管审核、待保障部领导审核、已作废、已完成*/
    @ApiModelProperty(value = "申请单状态;待提交、待单位室级领导审核、生产设备管理主管审核、待保障部领导审核、已作废、已完成")
    private String applicationStatus;
    /**申请单位室级领导签字*/
    @ApiModelProperty(value = "申请单位室级领导签字")
    private String departHeaderSignature;
    /**申请单位室级领导签字时间*/
    @ApiModelProperty(value = "申请单位室级领导签字时间")
    private Date departHeaderSignatureTime;
    /**申请单位室级领导意见*/
    @ApiModelProperty(value = "申请单位室级领导意见")
    private String departHeaderComment;
    /**生产设备管理主管签字*/
    @ApiModelProperty(value = "生产设备管理主管签字")
    private String productionHeaderSignature;
    /**生产设备管理主管签字四件*/
    @ApiModelProperty(value = "生产设备管理主管签字四件")
    private Date productionHeaderSignatureTime;
    /**生产设备管理主管意见*/
    @ApiModelProperty(value = "生产设备管理主管意见")
    private String productionHeaderComment;
    /**生产保障部领导签字*/
    @ApiModelProperty(value = "生产保障部领导签字")
    private String productionSupportSignature;
    /**生产保障部领导签字时间*/
    @ApiModelProperty(value = "生产保障部领导签字时间")
    private Date productionSupportSignatureTime;
    /**生产保障部领导意见*/
    @ApiModelProperty(value = "生产保障部领导意见")
    private String productionSupportComment;
    /**HF编码*/
    @ApiModelProperty(value = "HF编码")
    private String hfCode;
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamTechnicalStatusEvaluationOrder.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,133 @@
package org.jeecg.modules.eam.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
 * @Description: æŠ€æœ¯çŠ¶æ€é‰´å®šå·¥å•
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
@Data
@TableName("eam_technical_status_evaluation_order")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="eam_technical_status_evaluation_order对象", description="技术状态鉴定工单")
public class EamTechnicalStatusEvaluationOrder {
    /**主键*/
    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键")
    private String id;
    /**创建人*/
    @ApiModelProperty(value = "创建人")
    private String createBy;
    /**创建时间*/
    @ApiModelProperty(value = "创建时间")
    private Date createTime;
    /**更新人*/
    @ApiModelProperty(value = "更新人")
    private String updateBy;
    /**更新时间*/
    @ApiModelProperty(value = "更新时间")
    private Date updateTime;
    /**删除标记*/
    @ApiModelProperty(value = "删除标记")
    private Integer delFlag;
    /**工单号*/
    @ApiModelProperty(value = "工单号")
    private String orderNum;
    /**设备ID*/
    @ApiModelProperty(value = "设备ID")
    private String equipmentId;
    /**规范ID*/
    @ApiModelProperty(value = "规范ID")
    private String standardId;
    /**计划鉴定日期;提前70天生成工单*/
    @ApiModelProperty(value = "计划鉴定日期;提前70天生成工单")
    private Date evaluationDate;
    /**锁定工单日期;提前55天锁定工单*/
    @ApiModelProperty(value = "锁定工单日期;提前55天锁定工单")
    private Date freezeOrderDate;
    /**工单过期日期;到期未做直接过期,并修改设备技术状态为禁用*/
    @ApiModelProperty(value = "工单过期日期;到期未做直接过期,并修改设备技术状态为禁用")
    private Date orderExpirationDate;
    /**实际开始时间*/
    @ApiModelProperty(value = "实际开始时间")
    private Date actualStartTime;
    /**实际结束时间*/
    @ApiModelProperty(value = "实际结束时间")
    private Date actualEndTime;
    /**鉴定人*/
    @ApiModelProperty(value = "鉴定人")
    private String evaluator;
    /**鉴定状态;待鉴定、鉴定中、维修室主任签字、工艺人员签字、技术主管签字、设备检验员签字、已完成、已锁定、变更中、已过期*/
    @ApiModelProperty(value = "鉴定状态;待鉴定、鉴定中、维修室主任签字、工艺人员签字、技术主管签字、设备检验员签字、已完成、已锁定、变更中、已过期")
    private String evaluationStatus;
    /**创建方式*/
    @ApiModelProperty(value = "创建方式")
    private String creationMethod;
    /**安全装置检查结果;是、否*/
    @ApiModelProperty(value = "安全装置检查结果;是、否")
    private String safetyEquipmentCheckResult;
    /**精度参数检查结果;是、否、无*/
    @ApiModelProperty(value = "精度参数检查结果;是、否、无")
    private String precisionCheckResult;
    /**功能状态检查结果;是、否*/
    @ApiModelProperty(value = "功能状态检查结果;是、否")
    private String functionalCheckResult;
    /**其他检查结果;是、否、无*/
    @ApiModelProperty(value = "其他检查结果;是、否、无")
    private String otherCheckResult;
    /**维修室主任签字*/
    @ApiModelProperty(value = "维修室主任签字")
    private String repairManagerSignature;
    /**维修室主任签字时间*/
    @ApiModelProperty(value = "维修室主任签字时间")
    private Date repairManagerSignatureTime1;
    /**试件检查结果;合格、不合格*/
    @ApiModelProperty(value = "试件检查结果;合格、不合格")
    private String sampleCheckResult;
    /**工艺员签字*/
    @ApiModelProperty(value = "工艺员签字")
    private String processTechnicianSignature;
    /**工艺员签字时间*/
    @ApiModelProperty(value = "工艺员签字时间")
    private Date processTechnicianSignatureTime;
    /**鉴定结果;合格、限用、禁用*/
    @ApiModelProperty(value = "鉴定结果;合格、限用、禁用")
    private String evaluationResult;
    /**限\禁用原因(多选);安全装置、设备功能、精度、试件、其他*/
    @ApiModelProperty(value = "限/禁用原因(多选);安全装置、设备功能、精度、试件、其他")
    private String evaluationReason;
    /**设备检查人签字*/
    @ApiModelProperty(value = "设备检查人签字")
    private String inspectorSignature;
    /**设备检查人签字时间*/
    @ApiModelProperty(value = "设备检查人签字时间")
    private Date inspectorSignatureTime;
    /**附录A HF编码*/
    @ApiModelProperty(value = "附录A HF编码")
    private String hfCodeA;
    /**附录B HF编码*/
    @ApiModelProperty(value = "附录B HF编码")
    private String hfCodeB;
    /**附录C HF编码*/
    @ApiModelProperty(value = "附录C HF编码")
    private String hfCodeC;
    /**附录D HF编码*/
    @ApiModelProperty(value = "附录D HF编码")
    private String hfCodeD;
    /**备注*/
    @ApiModelProperty(value = "备注")
    private String remark;
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamTechnicalStatusEvaluationOrderChange.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
package org.jeecg.modules.eam.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
 * @Description: æŠ€æœ¯çŠ¶æ€é‰´å®šå·¥å•å˜æ›´
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
@Data
@TableName("eam_technical_status_evaluation_order_change")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="eam_technical_status_evaluation_order_change对象", description="技术状态鉴定工单变更")
public class EamTechnicalStatusEvaluationOrderChange {
    /**主键*/
    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键")
    private String id;
    /**创建人*/
    @ApiModelProperty(value = "创建人")
    private String createBy;
    /**创建时间*/
    @ApiModelProperty(value = "创建时间")
    private Date createTime;
    /**更新人*/
    @ApiModelProperty(value = "更新人")
    private String updateBy;
    /**更新时间*/
    @ApiModelProperty(value = "更新时间")
    private Date updateTime;
    /**删除标记*/
    @ApiModelProperty(value = "删除标记")
    private Integer delFlag;
    /**工单ID*/
    @ApiModelProperty(value = "工单ID")
    private String orderId;
    /**变更单号*/
    @ApiModelProperty(value = "变更单号")
    private String changeOrderNum;
    /**申请人*/
    @ApiModelProperty(value = "申请人")
    private String applicant;
    /**申请部门*/
    @ApiModelProperty(value = "申请部门")
    private String factoryOrgCode;
    /**申请日期*/
    @ApiModelProperty(value = "申请日期")
    private Date applyDate;
    /**变更状态;待提交、待主管审核、待部门确认、待保障部确认、已作废、已完成*/
    @ApiModelProperty(value = "变更状态;待提交、待主管审核、待部门确认、待保障部确认、已作废、已完成")
    private String changeStatus;
    /**变更原因;生产任务急无法停机、设备故障正处于维修状态、设备已报废、设备大修、搬迁、改造*/
    @ApiModelProperty(value = "变更原因;生产任务急无法停机、设备故障正处于维修状态、设备已报废、设备大修、搬迁、改造")
    private String applyReason;
    /**变更鉴定日期*/
    @ApiModelProperty(value = "变更鉴定日期")
    private Date deferredMaintenanceDate;
    /**主管领导签字*/
    @ApiModelProperty(value = "主管领导签字")
    private String equipmentManagerSignature;
    /**主管领导签字时间*/
    @ApiModelProperty(value = "主管领导签字时间")
    private Date equipmentManagerSignatureTime;
    /**部门领导签字;根据变更原因类型区分不同的人审批*/
    @ApiModelProperty(value = "部门领导签字;根据变更原因类型区分不同的人审批")
    private String departManagerSignature;
    /**部门领导签字时间*/
    @ApiModelProperty(value = "部门领导签字时间")
    private Date departManagerSignatureTime;
    /**部门领导意见*/
    @ApiModelProperty(value = "部门领导意见")
    private String departManagerComment;
    /**生产保障部领导签字*/
    @ApiModelProperty(value = "生产保障部领导签字")
    private String productionSupportSignature;
    /**生产保障部领导签字时间*/
    @ApiModelProperty(value = "生产保障部领导签字时间")
    private Date productionSupportSignatureTime;
    /**生产保障部领导意见*/
    @ApiModelProperty(value = "生产保障部领导意见")
    private String productionSupportComment;
    /**HF编码*/
    @ApiModelProperty(value = "HF编码")
    private String hfCode;
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamTechnicalStatusEvaluationOrderDetail.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,73 @@
package org.jeecg.modules.eam.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
 * @Description: æŠ€æœ¯çŠ¶æ€é‰´å®šå·¥å•æ˜Žç»†
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
@Data
@TableName("eam_technical_status_evaluation_order_detail")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="eam_technical_status_evaluation_order_detail对象", description="技术状态鉴定工单明细")
public class EamTechnicalStatusEvaluationOrderDetail {
    /**主键*/
    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键")
    private String id;
    /**创建人*/
    @ApiModelProperty(value = "创建人")
    private String createBy;
    /**创建时间*/
    @ApiModelProperty(value = "创建时间")
    private Date createTime;
    /**更新人*/
    @ApiModelProperty(value = "更新人")
    private String updateBy;
    /**更新时间*/
    @ApiModelProperty(value = "更新时间")
    private Date updateTime;
    /**序号*/
    @ApiModelProperty(value = "序号")
    private Integer itemCode;
    /**检查分类;精度检查、安全装置检查、其他检查*/
    @ApiModelProperty(value = "检查分类;精度检查、安全装置检查、其他检查")
    private String checkCategory;
    /**检查项目*/
    @ApiModelProperty(value = "检查项目")
    private String itemName;
    /**允差值;精度检查展示*/
    @ApiModelProperty(value = "允差值;精度检查展示")
    private String toleranceValue;
    /**检查子项目;精度检查展示,可以为空*/
    @ApiModelProperty(value = "检查子项目;精度检查展示,可以为空")
    private String subItemName;
    /**安全装置检查结果;是、否、无*/
    @ApiModelProperty(value = "安全装置检查结果;是、否、无")
    private String safetyEquipmentCheckResult;
    /**其他检查结果*/
    @ApiModelProperty(value = "其他检查结果")
    private String otherCheckResult;
    /**精度检验结果*/
    @ApiModelProperty(value = "精度检验结果")
    private java.math.BigDecimal precisionCheckResult;
    /**维修人/精度检查者签字*/
    @ApiModelProperty(value = "维修人/精度检查者签字")
    private String repairmanSignature;
    /**维修人/精度检查者签字时间*/
    @ApiModelProperty(value = "维修人/精度检查者签字时间")
    private Date repairmanSignatureTime;
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamTechnicalStatusChangeDetailMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package org.jeecg.modules.eam.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.eam.entity.EamTechnicalStatusChangeDetail;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * @Description: æŠ€æœ¯çŠ¶æ€å˜æ›´ç”³è¯·æ˜Žç»†
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
public interface EamTechnicalStatusChangeDetailMapper extends BaseMapper<EamTechnicalStatusChangeDetail> {
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamTechnicalStatusChangeMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package org.jeecg.modules.eam.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.eam.entity.EamTechnicalStatusChange;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * @Description: æŠ€æœ¯çŠ¶æ€å˜æ›´ç”³è¯·
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
public interface EamTechnicalStatusChangeMapper extends BaseMapper<EamTechnicalStatusChange> {
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamTechnicalStatusDeactivateDetailMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package org.jeecg.modules.eam.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.eam.entity.EamTechnicalStatusDeactivateDetail;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * @Description: åœç”¨åŠ å·¥è®¾å¤‡ç”³è¯·å•æ˜Žç»†
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
public interface EamTechnicalStatusDeactivateDetailMapper extends BaseMapper<EamTechnicalStatusDeactivateDetail> {
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamTechnicalStatusDeactivateMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package org.jeecg.modules.eam.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.eam.entity.EamTechnicalStatusDeactivate;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * @Description: åœç”¨åŠ å·¥è®¾å¤‡ç”³è¯·å•
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
public interface EamTechnicalStatusDeactivateMapper extends BaseMapper<EamTechnicalStatusDeactivate> {
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamTechnicalStatusEvaluationApplicationMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package org.jeecg.modules.eam.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationApplication;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * @Description: åŠ å·¥è®¾å¤‡æŠ€æœ¯é‰´å®šç”³è¯·
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
public interface EamTechnicalStatusEvaluationApplicationMapper extends BaseMapper<EamTechnicalStatusEvaluationApplication> {
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamTechnicalStatusEvaluationOrderChangeMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package org.jeecg.modules.eam.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationOrderChange;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * @Description: æŠ€æœ¯çŠ¶æ€é‰´å®šå·¥å•å˜æ›´
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
public interface EamTechnicalStatusEvaluationOrderChangeMapper extends BaseMapper<EamTechnicalStatusEvaluationOrderChange> {
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamTechnicalStatusEvaluationOrderDetailMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package org.jeecg.modules.eam.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationOrderDetail;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * @Description: æŠ€æœ¯çŠ¶æ€é‰´å®šå·¥å•æ˜Žç»†
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
public interface EamTechnicalStatusEvaluationOrderDetailMapper extends BaseMapper<EamTechnicalStatusEvaluationOrderDetail> {
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamTechnicalStatusEvaluationOrderMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package org.jeecg.modules.eam.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationOrder;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * @Description: æŠ€æœ¯çŠ¶æ€é‰´å®šå·¥å•
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
public interface EamTechnicalStatusEvaluationOrderMapper extends BaseMapper<EamTechnicalStatusEvaluationOrder> {
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamTechnicalStatusChangeDetailMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!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.EamTechnicalStatusChangeDetailMapper">
</mapper>
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamTechnicalStatusChangeMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!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.EamTechnicalStatusChangeMapper">
</mapper>
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamTechnicalStatusDeactivateDetailMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!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.EamTechnicalStatusDeactivateDetailMapper">
</mapper>
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamTechnicalStatusDeactivateMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!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.EamTechnicalStatusDeactivateMapper">
</mapper>
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamTechnicalStatusEvaluationApplicationMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!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.EamTechnicalStatusEvaluationApplicationMapper">
</mapper>
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamTechnicalStatusEvaluationOrderChangeMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!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.EamTechnicalStatusEvaluationOrderChangeMapper">
</mapper>
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamTechnicalStatusEvaluationOrderDetailMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!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.EamTechnicalStatusEvaluationOrderDetailMapper">
</mapper>
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamTechnicalStatusEvaluationOrderMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!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.EamTechnicalStatusEvaluationOrderMapper">
</mapper>
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamMaintenanceStandardService.java
@@ -52,7 +52,7 @@
     * @param maintenanceCategory ä¿å…»ç±»åž‹
     * @return
     */
    EamMaintenanceStandard checkDuplicate(String equipmentId, String maintenanceCategory);
    EamMaintenanceStandard checkDuplicate(String equipmentId, String maintenanceCategory,String standardStatus);
    /**
     * æŸ¥è¯¢æ ‡å‡†åˆ—表-前端展示该用户拥有的标准
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamTechnicalStatusChangeDetailService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package org.jeecg.modules.eam.service;
import org.jeecg.modules.eam.entity.EamTechnicalStatusChangeDetail;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * @Description: æŠ€æœ¯çŠ¶æ€å˜æ›´ç”³è¯·æ˜Žç»†
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
public interface IEamTechnicalStatusChangeDetailService extends IService<EamTechnicalStatusChangeDetail> {
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamTechnicalStatusChangeService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package org.jeecg.modules.eam.service;
import org.jeecg.modules.eam.entity.EamTechnicalStatusChange;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * @Description: æŠ€æœ¯çŠ¶æ€å˜æ›´ç”³è¯·
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
public interface IEamTechnicalStatusChangeService extends IService<EamTechnicalStatusChange> {
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamTechnicalStatusDeactivateDetailService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package org.jeecg.modules.eam.service;
import org.jeecg.modules.eam.entity.EamTechnicalStatusDeactivateDetail;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * @Description: åœç”¨åŠ å·¥è®¾å¤‡ç”³è¯·å•æ˜Žç»†
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
public interface IEamTechnicalStatusDeactivateDetailService extends IService<EamTechnicalStatusDeactivateDetail> {
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamTechnicalStatusDeactivateService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package org.jeecg.modules.eam.service;
import org.jeecg.modules.eam.entity.EamTechnicalStatusDeactivate;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * @Description: åœç”¨åŠ å·¥è®¾å¤‡ç”³è¯·å•
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
public interface IEamTechnicalStatusDeactivateService extends IService<EamTechnicalStatusDeactivate> {
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamTechnicalStatusEvaluationApplicationService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package org.jeecg.modules.eam.service;
import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationApplication;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * @Description: åŠ å·¥è®¾å¤‡æŠ€æœ¯é‰´å®šç”³è¯·
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
public interface IEamTechnicalStatusEvaluationApplicationService extends IService<EamTechnicalStatusEvaluationApplication> {
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamTechnicalStatusEvaluationOrderChangeService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package org.jeecg.modules.eam.service;
import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationOrderChange;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * @Description: æŠ€æœ¯çŠ¶æ€é‰´å®šå·¥å•å˜æ›´
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
public interface IEamTechnicalStatusEvaluationOrderChangeService extends IService<EamTechnicalStatusEvaluationOrderChange> {
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamTechnicalStatusEvaluationOrderDetailService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package org.jeecg.modules.eam.service;
import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationOrderDetail;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * @Description: æŠ€æœ¯çŠ¶æ€é‰´å®šå·¥å•æ˜Žç»†
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
public interface IEamTechnicalStatusEvaluationOrderDetailService extends IService<EamTechnicalStatusEvaluationOrderDetail> {
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamTechnicalStatusEvaluationOrderService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package org.jeecg.modules.eam.service;
import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationOrder;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * @Description: æŠ€æœ¯çŠ¶æ€é‰´å®šå·¥å•
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
public interface IEamTechnicalStatusEvaluationOrderService extends IService<EamTechnicalStatusEvaluationOrder> {
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamTechnicalStatusEvaluationStandardDetailService.java
@@ -13,7 +13,14 @@
    /**
     * æ ¹æ®è§„范ID删除检查项
     * @param standardId
     * @param standardId è§„范ID
     */
    void removeByStandardId(String standardId);
    /**
     * æ ¹æ®è§„范ID删除检查项
     * @param standardId è§„范ID
     * @param category åˆ†ç±»
     */
    void removeByStandardIdAndCategory(String standardId, String category);
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamTechnicalStatusEvaluationStandardService.java
@@ -3,8 +3,10 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationStandard;
import org.jeecg.modules.eam.request.EamTechnicalStatusEvaluationStandardRequest;
import org.springframework.web.multipart.MultipartFile;
/**
 * @Description: æŠ€æœ¯çŠ¶æ€é‰´å®šè§„èŒƒ
@@ -50,4 +52,25 @@
     * @return
     */
    boolean upgrade(EamTechnicalStatusEvaluationStandardRequest request);
    /**
     * å®‰å…¨è£…置导入
     * @param file
     * @return
     */
    Result<?> importSafetyEquipmentCheck(MultipartFile file);
    /**
     * è®¾å¤‡ç²¾åº¦å¯¼å…¥
     * @param file
     * @return
     */
    Result<?> importPrecisionCheck(MultipartFile file);
    /**
     * å…¶ä»–检查导入
     * @param file
     * @return
     */
    Result<?> importOtherCheck(MultipartFile file);
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamInspectionOrderServiceImpl.java
@@ -102,9 +102,11 @@
            List<BaseFactoryUser> baseFactoryUserList = baseFactoryUserService.
                    list(new LambdaQueryWrapper<BaseFactoryUser>().eq(BaseFactoryUser::getUserId, sysUser.getId()));
            if (!CollectionUtils.isEmpty(baseFactoryUserList)) {
                List<String> factoryIds = baseFactoryUserList.stream().map(BaseFactoryUser::getFactoryId).collect(Collectors.toList());
                List<String> factoryCode = baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getFactoryCode).collect(Collectors.toList());
                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;
            }
        }
        //查询条件过滤
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java
@@ -127,9 +127,11 @@
            List<BaseFactoryUser> baseFactoryUserList=baseFactoryUserService.
                    list(new LambdaQueryWrapper<BaseFactoryUser>().eq(BaseFactoryUser::getUserId,sysUser.getId()));
            if(!CollectionUtils.isEmpty(baseFactoryUserList)){
                List<String> factoryIds = baseFactoryUserList.stream().map(BaseFactoryUser::getFactoryId).collect(Collectors.toList());
                List<String> factoryCode= baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getFactoryCode).collect(Collectors.toList());
                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(eamMaintenanceStandard != null) {
@@ -181,7 +183,7 @@
        //删除标记
        entity.setDelFlag(CommonConstant.DEL_FLAG_0);
        //重复性校验
        EamMaintenanceStandard exist = checkDuplicate(entity.getEquipmentId(), entity.getMaintenanceCategory());
        EamMaintenanceStandard exist = checkDuplicate(entity.getEquipmentId(), entity.getMaintenanceCategory(),MaintenanceStandardStatusEnum.WAIT_SUBMIT.name());
        if(exist != null){
            throw new JeecgBootException("设备标准已存在,不能重复添加!");
        }
@@ -265,7 +267,7 @@
        //删除标记
        newEntity.setDelFlag(CommonConstant.DEL_FLAG_0);
        //重复性校验
        EamMaintenanceStandard exist = checkDuplicate(newEntity.getEquipmentId(), newEntity.getMaintenanceCategory());
        EamMaintenanceStandard exist = checkDuplicate(newEntity.getEquipmentId(), newEntity.getMaintenanceCategory(),MaintenanceStandardStatusEnum.WAIT_SUBMIT.name());
        if(exist != null){
            throw new JeecgBootException("设备标准已存在,不能重复添加!");
        }
@@ -286,12 +288,12 @@
    }
    @Override
    public EamMaintenanceStandard checkDuplicate(String equipmentId, String maintenanceCategory) {
    public EamMaintenanceStandard checkDuplicate(String equipmentId, String maintenanceCategory,String standardStatus) {
        LambdaQueryWrapper<EamMaintenanceStandard> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(EamMaintenanceStandard::getEquipmentId, equipmentId);
        queryWrapper.eq(EamMaintenanceStandard::getMaintenanceCategory, maintenanceCategory);
        queryWrapper.eq(EamMaintenanceStandard::getDelFlag, CommonConstant.DEL_FLAG_0);
        queryWrapper.eq(EamMaintenanceStandard::getStandardStatus, MaintenanceStandardStatusEnum.WAIT_SUBMIT.name());
        queryWrapper.eq(EamMaintenanceStandard::getStandardStatus, standardStatus);
        queryWrapper.orderByDesc(EamMaintenanceStandard::getStandardVersion);
        List<EamMaintenanceStandard> list = eamMaintenanceStandardMapper.selectList(queryWrapper);
@@ -567,6 +569,12 @@
            }
            eamMaintenanceStandard.setStandardName(name);
            EamMaintenanceStandard exist = checkDuplicate(eamMaintenanceStandard.getEquipmentId(), eamMaintenanceStandard.getMaintenanceCategory(),MaintenanceStandardStatusEnum.START.name());
            if(exist != null){
                return Result.error(name + ": è®¾å¤‡æ ‡å‡†å·²å­˜åœ¨ï¼Œä¸èƒ½é‡å¤æ·»åŠ ");
            }
            eamMaintenanceStandardMapper.insert(eamMaintenanceStandard);
            // 2. æå–每日点检项目
@@ -932,6 +940,7 @@
    /*导入点检文件Excel--------------------------结束*/
    /*导入二保三保文件Excel--------------------------开始*/
    /**
     * ç»Ÿä¸€ä¿å…»è§„范导入入口
     * @param file ä¸Šä¼ æ–‡ä»¶
@@ -949,40 +958,68 @@
                return Result.error(fileName + ": æ–‡æ¡£ä¸­æœªæ‰¾åˆ°è¡¨æ ¼");
            }
            XWPFTable table = doc.getTables().get(0);
            List<XWPFTable> tables = doc.getTables();
            EamMaintenanceStandard standard = null;
            List<EamMaintenanceStandardDetail> items = new ArrayList<>();
            String standardId = null;
            // æ–‡æ¡£ç±»åž‹æ ¡éªŒ - é˜²æ­¢äºŒä¿ä¼ å…¥ä¸‰ä¿æˆ–反之
            if (isWrongDocumentType(table, type)) {
                return Result.error(fileName + ": æ–‡æ¡£ç±»åž‹ä¸åŒ¹é… - " +
                        ("SECOND".equals(type) ? "请导入二级保养文档" : "请导入三级保养文档"));
            // 1. å¤„理所有表格
            for (int i = 0; i < tables.size(); i++) {
                XWPFTable table = tables.get(i);
                if (i == 0) { // ç¬¬ä¸€é¡µè¡¨æ ¼
                    // éªŒè¯è®¾å¤‡ä¿¡æ¯è¡¨æ ¼
                    if (isWrongDocumentType(table, type)) {
                        return Result.error(fileName + ": æ–‡æ¡£ç±»åž‹ä¸åŒ¹é… - " +
                                ("SECOND".equals(type) ? "请导入二级保养文档" : "请导入三级保养文档"));
                    }
                    // æå–设备信息
                    standard = extractDeviceInfo(table,type);
                    if (standard == null) {
                        return Result.error(fileName + ": è®¾å¤‡ä¿¡æ¯æå–失败");
                    }
                    // é…ç½®ç±»åž‹ç›¸å…³å‚æ•°
                    configureStandard(standard, type, file);
                    EamMaintenanceStandard exist = checkDuplicate(standard.getEquipmentId(), standard.getMaintenanceCategory(),MaintenanceStandardStatusEnum.START.name());
                    if(exist != null){
                        return Result.error(fileName + ": è®¾å¤‡æ ‡å‡†å·²å­˜åœ¨ï¼Œä¸èƒ½é‡å¤æ·»åŠ ");
                    }
                    eamMaintenanceStandardMapper.insert(standard);
                    standardId = standard.getId();
                    // æå–第一页的保养项目
                    if ("SECOND".equals(type)) {
                        items.addAll(extractSecondMaintenanceItems(table, standardId, true));
                    } else if ("THIRD".equals(type)) {
                        items.addAll(extractThirdMaintenanceItems(table, standardId, true));
                    }
                } else { // åŽç»­é¡µé¢
                    // æå–后续页面的保养项目
                    if ("SECOND".equals(type)) {
                        items.addAll(extractSecondMaintenanceItems(table, standardId, false));
                    } else if ("THIRD".equals(type)) {
                        items.addAll(extractThirdMaintenanceItems(table, standardId, false));
                    }
                }
            }
            EamMaintenanceStandard standard = extractDeviceInfo(table);
            // éªŒè¯è®¾å¤‡ä¿¡æ¯æå–
            if (standard == null) {
                return Result.error(fileName + ": è®¾å¤‡ä¿¡æ¯æå–失败");
            }
            // é…ç½®ç±»åž‹ç›¸å…³å‚æ•°
            configureStandard(standard, type, file);
            eamMaintenanceStandardMapper.insert(standard);
            String standardId = standard.getId();
            // 2. åŽå¤„理:根据不同类型进行处理
            processItemsAfterExtraction(items, type);
            // æå–保养项目
            List<EamMaintenanceStandardDetail> items;
            if ("SECOND".equals(type)) {
                items = extractSecondMaintenanceItems(table, standardId);
            } else if ("THIRD".equals(type)) {
                items = extractThirdMaintenanceItems(table, standardId);
            } else {
                return Result.error(fileName + ": ä¸æ”¯æŒçš„保养类型: " + type);
            }
            // é¡¹ç›®éªŒè¯
            // 3. é¡¹ç›®éªŒè¯
            if (items.isEmpty()) {
                return Result.error(fileName + ": æœªæå–到任何保养项目");
            }
            // ä¿å­˜é¡¹ç›®
            // 4. ä¿å­˜é¡¹ç›®
            eamMaintenanceStandardDetailService.saveBatch(items);
            return Result.ok(fileName + ": å¯¼å…¥æˆåŠŸ, é¡¹ç›®æ•°: " + items.size());
@@ -992,6 +1029,194 @@
        } catch (Exception e) {
            return Result.error(fileName + ": ç³»ç»Ÿé”™è¯¯ - " + e.getClass().getSimpleName());
        }
    }
    /**
     * åŽå¤„理方法:根据不同类型进行处理
    */
    private void processItemsAfterExtraction(List<EamMaintenanceStandardDetail> items, String type) {
        if ("SECOND".equals(type)) {
            // äºŒçº§ä¿å…»: åˆ é™¤æ²¡æœ‰åºå·çš„æ•°æ®
            items.removeIf(item -> item.getItemCode() == null);
        } else {
            // ä¸‰çº§ä¿å…»:
            // 1. åˆ é™¤ç¬¬ä¸€æ¡æ•°æ®ï¼ˆé€šå¸¸æ˜¯æ ‡é¢˜è¡Œï¼‰
            if (!items.isEmpty()) {
                items.remove(0);
            }
            // 2. ä¸ºç¼ºå¤±éƒ¨ä½çš„æ•°æ®å¡«å……前一条的保养部位
            String lastPart = "";
            for (EamMaintenanceStandardDetail item : items) {
                if (item.getItemPart() != null && !item.getItemPart().isEmpty()) {
                    lastPart = item.getItemPart();
                } else if (!lastPart.isEmpty()) {
                    item.setItemPart(lastPart);
                }
            }
        }
    }
    /**
     * æå–二级保养项目(区分第一页和后续页面)
     */
    private List<EamMaintenanceStandardDetail> extractSecondMaintenanceItems(
            XWPFTable table, String standardId, boolean isFirstTable) {
        List<EamMaintenanceStandardDetail> items = new ArrayList<>();
        String currentCategory = null;
        int startRow = 0;
        // å¯¹äºŽç¬¬ä¸€é¡µè¡¨æ ¼ï¼Œè·³è¿‡å‰ä¸¤è¡Œï¼ˆè®¾å¤‡ä¿¡æ¯è¡Œï¼‰
        if (isFirstTable && table.getNumberOfRows() > 2) {
            startRow = 2; // ä»Žç¬¬ä¸‰è¡Œå¼€å§‹æ˜¯ä¿å…»å†…容
        }
        for (int i = startRow; i < table.getNumberOfRows(); i++) {
            XWPFTableRow row = table.getRow(i);
            if (row == null) continue;
            // æ£€æŸ¥æ˜¯å¦æ˜¯æ ‡é¢˜è¡Œï¼ˆç»´ä¿®äººå‘˜ä¿å…»å†…容或操作人员保养内容)
            String firstCell = getCellText(row.getCell(0));
            // å¤„理空行后的部位继承
            if (firstCell.contains(REPAIR_TITLE)) {
                currentCategory = "REPAIRER_MAINTENANCE";
            } else if (firstCell.contains(OPERATOR_TITLE)) {
                currentCategory = "OPERATOR_MAINTENANCE";
            }
            // å¤„理普通项目行
            if (currentCategory != null && isValidItemRow(row)) {
                EamMaintenanceStandardDetail item = new EamMaintenanceStandardDetail();
                item.setItemCategory(currentCategory);
                item.setStandardId(standardId);
                // æå–序号(第二列)
                if (row.getTableCells().size() > 1) {
                    String seqText = getCellText(row.getCell(1));
                    try {
                        if (!seqText.equals("序号")){
                            item.setItemCode(Integer.parseInt(seqText.trim()));
                        }
                    } catch (NumberFormatException e) {
                        // å¿½ç•¥åºå·è§£æžé”™è¯¯
                    }
                }
                // æå–内容(第三列)
                if (row.getTableCells().size() > 2) {
                    String seqText = getCellText(row.getCell(2));
                    item.setItemName(seqText);
                }
                items.add(item);
            }
        }
        return items;
    }
    /**
     * æå–三级保养项目(解决跨页空行问题)
     */
    private List<EamMaintenanceStandardDetail> extractThirdMaintenanceItems(
            XWPFTable table, String standardId, boolean isFirstTable) {
        List<EamMaintenanceStandardDetail> items = new ArrayList<>();
        String currentPart = "";
        int startRow = 0;
        // å¯¹äºŽç¬¬ä¸€é¡µè¡¨æ ¼ï¼Œè·³è¿‡å‰ä¸¤è¡Œï¼ˆè®¾å¤‡ä¿¡æ¯è¡Œï¼‰
        if (isFirstTable && table.getNumberOfRows() > 2) {
            startRow = 2; // ä»Žç¬¬ä¸‰è¡Œå¼€å§‹æ˜¯ä¿å…»å†…容
        }
        for (int i = startRow; i < table.getNumberOfRows(); i++) {
            XWPFTableRow row = table.getRow(i);
            if (row == null) continue;  // ç¡®ä¿è¡Œå¯¹è±¡ä¸ä¸ºç©º
            // æ£€æŸ¥æ˜¯å¦æ˜¯ç©ºè¡Œï¼ˆåŒ…含所有单元格都为空的情况)
            if (isRowEmpty(row)) {
                // ç©ºè¡Œå¤„理:保留当前位置但不创建项目
                continue;
            }
            // åˆ›å»ºä¿å…»é¡¹ç›®
            EamMaintenanceStandardDetail item = new EamMaintenanceStandardDetail();
            item.setItemCategory("THIRD_MAINTENANCE");
            item.setStandardId(standardId);
            int colCount = row.getTableCells().size();
            // å¤„理部位列(第一列)
            if (colCount > 0) {
                String firstCell = getCellText(row.getCell(0)).trim();
                // å…³é”®æ”¹è¿›ï¼šæ­£ç¡®å¤„理空行后的部位继承
                if (!firstCell.isEmpty() && !firstCell.equals("保养部位")) {
                    // æ›´æ–°å½“前部位
                    currentPart = firstCell;
                }
                item.setItemPart(currentPart);
            } else {
                // å¦‚果没有单元格,使用当前部位
                item.setItemPart(currentPart);
            }
            // æ ¹æ®åˆ—数提取内容(考虑合并单元格情况)
            List<String> cellContents = new ArrayList<>();
            for (int j = 0; j < colCount; j++) {
                XWPFTableCell cell = row.getCell(j);
                String text = getCellText(cell).trim();
                // ç‰¹æ®Šå¤„理:第二页第一行可能是空行后的内容
                if (j == 0 && !text.isEmpty() && !text.equals(currentPart)) {
                    // å¦‚果不是部位列,则添加为内容
                    cellContents.add(text);
                } else if (j > 0) {
                    // å…¶ä»–列作为内容
                    cellContents.add(text);
                }
            }
            // æ™ºèƒ½è§£æžå•元格内容
            if (cellContents.size() >= 2) {
                // é»˜è®¤å¤„理方式:最后两个作为内容和标准
                item.setItemName(cellContents.get(cellContents.size() - 2));
                item.setItemDemand(cellContents.get(cellContents.size() - 1));
            } else if (cellContents.size() == 1) {
                // å•列模式:视为内容
                item.setItemName(cellContents.get(0));
            } else if (!isRowEmpty(row)) {
                // ç‰¹æ®Šå¤„理:行非空但没有提取到内容(可能是复杂合并单元格)
                // å°è¯•提取整行文本作为内容
                StringBuilder content = new StringBuilder();
                for (XWPFTableCell cell : row.getTableCells()) {
                    content.append(getCellText(cell).trim()).append(" ");
                }
                item.setItemName(content.toString().trim());
            }
            items.add(item);
        }
        return items;
    }
    /**
     * ä¼˜åŒ–后的空行检测(解决跨页空行问题)
     */
    private boolean isRowEmpty(XWPFTableRow row) {
        if (row == null || row.getTableCells().isEmpty()) {
            return true;
        }
        boolean allCellsEmpty = true;
        for (XWPFTableCell cell : row.getTableCells()) {
            String text = getCellText(cell).trim();
            // ä¿ç•™åŒ…含换行符等的单元格作为非空行
            if (!text.isEmpty() && !text.replaceAll("\\s+", "").isEmpty()) {
                allCellsEmpty = false;
                break;
            }
        }
        return allCellsEmpty;
    }
    /**
@@ -1043,7 +1268,7 @@
    /**
     * æå–设备基本信息
     */
    private EamMaintenanceStandard extractDeviceInfo(XWPFTable table) {
    private EamMaintenanceStandard extractDeviceInfo(XWPFTable table,String type) {
        if (table.getNumberOfRows() < 2) return null;
        // æå–前两行数据
@@ -1065,15 +1290,15 @@
            }else {
                standard.setEquipmentId(equipments.getId());
            }
            if (type.equals("THIRD")){
                EamEquipmentExtend eamEquipmentExtend=eamEquipmentExtendService.getById(standard.getEquipmentId());
                standard.setMaintenancePeriod(eamEquipmentExtend.getThirdMaintenancePeriod());
            }
        }
        return standard;
    }
    // ç®€æ˜“版字符串非空判断
    private boolean isNotBlank(String str) {
        return str != null && !str.trim().isEmpty();
    }
    /**
     * è¡¨æ ¼è¡Œæ•°æ®è§£æž
@@ -1157,161 +1382,6 @@
    }
    /**
     * æå–二级保养项目
     */
    private List<EamMaintenanceStandardDetail> extractSecondMaintenanceItems(
            XWPFTable table, String standardId) {
        List<EamMaintenanceStandardDetail> items = new ArrayList<>();
        EamMaintenanceStandardDetailCategory currentCategory = null;
        for (int i = 0; i < table.getNumberOfRows(); i++) {
            XWPFTableRow row = table.getRow(i);
            if (row == null) continue;
            // æ£€æŸ¥æ˜¯å¦æ˜¯æ ‡é¢˜è¡Œï¼ˆç»´ä¿®äººå‘˜ä¿å…»å†…容或操作人员保养内容)
            String firstCell = getCellText(row.getCell(0));
            if (firstCell != null) {
                for (String title : SECOND_CATEGORY_MAPPING.keySet()) {
                    if (firstCell.contains(title)) {
                        currentCategory = SECOND_CATEGORY_MAPPING.get(title);
                        // æ£€æŸ¥ç¬¬äºŒåˆ—和第三列是否是"序号"和"保养内容"
                        if (row.getTableCells().size() > 2) {
                            String secondCell = getCellText(row.getCell(1));
                            String thirdCell = getCellText(row.getCell(2));
                            // æ˜Žç¡®è·³è¿‡æ ‡é¢˜è¡Œ
                            if ("序号".equals(secondCell) && "保养内容".equals(thirdCell)) {
                                continue; // è·³è¿‡è¿™ä¸€è¡Œ
                            }
                        }
                        // å°è¯•提取标题行中的项目(如果存在)
                        if (row.getTableCells().size() > 2) {
                            String content = getCellText(row.getCell(2));
                            if (content != null && !content.trim().isEmpty() &&
                                    !"保养内容".equals(content.trim())) { // è¿‡æ»¤æ— æ•ˆå†…容
                                items.add(createItem(currentCategory, content.trim(), standardId));
                            }
                        }
                        continue;
                    }
                }
            }
            // å¤„理普通项目行
            if (currentCategory != null && isValidItemRow(row)) {
                // èŽ·å–å†…å®¹
                String content = row.getTableCells().size() > 2 ?
                        getCellText(row.getCell(2)) : "";
                // æŽ’除标题内容
                if ("保养内容".equals(content) ||
                        "序号".equals(content) ||
                        content.contains("维修人员保养内容") ||
                        content.contains("操作人员保养内容")) {
                    continue;
                }
                EamMaintenanceStandardDetail item = new EamMaintenanceStandardDetail();
                item.setItemCategory(String.valueOf(currentCategory));
                item.setStandardId(standardId);
                item.setItemName(cleanContent(content));
                // å¤„理序号(第二列)
                if (row.getTableCells().size() > 1) {
                    String seqText = getCellText(row.getCell(1));
                    try {
                        if (seqText != null && !seqText.trim().isEmpty()) {
                            item.setItemCode(Integer.parseInt(seqText.trim()));
                        }
                    } catch (NumberFormatException e) {
                        // å¿½ç•¥åºå·è§£æžé”™è¯¯
                    }
                }
                items.add(item);
            }
        }
        return items;
    }
    /**
     * åˆ›å»ºä¿å…»é¡¹ç›®
     */
    private EamMaintenanceStandardDetail createItem(
            EamMaintenanceStandardDetailCategory category,
            String content,
            String standardId) {
        EamMaintenanceStandardDetail item = new EamMaintenanceStandardDetail();
        item.setItemCategory(category.name());
        item.setStandardId(standardId);
        item.setItemName(cleanContent(content));
        return item;
    }
    /**
     * æå–三级保养项目(无类型)
     */
    private List<EamMaintenanceStandardDetail> extractThirdMaintenanceItems(
            XWPFTable table, String standardId) {
        List<EamMaintenanceStandardDetail> items = new ArrayList<>();
        String currentPart = "";
        int itemCount = 1;
        // ä»Žç¬¬ä¸‰è¡Œå¼€å§‹ï¼ˆè·³è¿‡è¡¨å¤´å’Œè®¾å¤‡ä¿¡æ¯ï¼‰
        for (int i = 2; i < table.getNumberOfRows(); i++) {
            XWPFTableRow row = table.getRow(i);
            if (row == null || isRowEmpty(row)) continue;
            // è·³è¿‡"保养部位"标题行
            String firstCell = getCellText(row.getCell(0));
            if ("保养部位".equals(firstCell)) {
                continue;
            }
            EamMaintenanceStandardDetail item = new EamMaintenanceStandardDetail();
            // ä¸‰çº§ä¿å…»ä¸éœ€è¦ç±»åž‹ï¼Œä¸è®¾ç½®itemCategory
            item.setStandardId(standardId);
            item.setItemCode(itemCount++);
            // å¤„理部位列
            if (!row.getTableCells().isEmpty()) {
                String partCell = getCellText(row.getCell(0));
                if (!partCell.trim().isEmpty()) {
                    currentPart = partCell.trim();
                }
            }
            item.setItemPart(currentPart);
            // æ ¹æ®åˆ—数确定内容和标准的位置
            int cellCount = row.getTableCells().size();
            if (cellCount == 3) { // éƒ¨ä½|内容|标准
                item.setItemName(getCellText(row.getCell(1)));
                item.setItemDemand(getCellText(row.getCell(2)));
            }
            else if (cellCount == 2) { // å†…容|标准
                item.setItemName(getCellText(row.getCell(0)));
                item.setItemDemand(getCellText(row.getCell(1)));
            }
            else if (cellCount == 1) { // å•列内容
                item.setItemName(getCellText(row.getCell(0)));
            }
            else if (cellCount > 3) { // å¤šåˆ—处理
                // å–第2列作为内容,最后一列作为标准
                item.setItemName(getCellText(row.getCell(1)));
                item.setItemDemand(getCellText(row.getCell(cellCount - 1)));
            }
            items.add(item);
        }
        return items;
    }
    /**
     * å…¼å®¹ç‰ˆå•元格文本提取
     */
    private String getCellText(XWPFTableCell cell) {
@@ -1334,48 +1404,12 @@
    }
    /**
     * å†…容清理
     */
    private String cleanContent(String text) {
        if (text == null) return "";
        // æ›¿æ¢ç‰¹æ®Šç©ºæ ¼å’Œåˆå¹¶è¿žç»­ç©ºæ ¼
        text = text.replace('\u00A0', ' ')
                .replace('\u2007', ' ')
                .replace('\u202F', ' ')
                .replaceAll("\\s+", " ");
        // è§„范标点符号
        return text.replace(',', '、')
                .replace(',', '、')
                .replace(';', ';')
                .replace(';', ';')
                .replace(':', ':')
                .replace(':', ':')
                .trim();
    }
    /**
     * éªŒè¯æœ‰æ•ˆé¡¹ç›®è¡Œ
     */
    private boolean isValidItemRow(XWPFTableRow row) {
        return row != null &&
                row.getTableCells().size() >= 2 &&
                !getCellText(row.getCell(1)).trim().isEmpty();
    }
    /**
     * ç©ºè¡Œæ£€æµ‹
     */
    private boolean isRowEmpty(XWPFTableRow row) {
        if (row == null) return true;
        for (XWPFTableCell cell : row.getTableCells()) {
            String text = getCellText(cell);
            if (text != null && !text.trim().isEmpty()) {
                return false;
            }
        }
        return true;
    }
    /*导入二保三保文件Excel--------------------------结束*/
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusChangeDetailServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package org.jeecg.modules.eam.service.impl;
import org.jeecg.modules.eam.entity.EamTechnicalStatusChangeDetail;
import org.jeecg.modules.eam.mapper.EamTechnicalStatusChangeDetailMapper;
import org.jeecg.modules.eam.service.IEamTechnicalStatusChangeDetailService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
 * @Description: æŠ€æœ¯çŠ¶æ€å˜æ›´ç”³è¯·æ˜Žç»†
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
@Service
public class EamTechnicalStatusChangeDetailServiceImpl extends ServiceImpl<EamTechnicalStatusChangeDetailMapper, EamTechnicalStatusChangeDetail> implements IEamTechnicalStatusChangeDetailService {
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusChangeServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package org.jeecg.modules.eam.service.impl;
import org.jeecg.modules.eam.entity.EamTechnicalStatusChange;
import org.jeecg.modules.eam.mapper.EamTechnicalStatusChangeMapper;
import org.jeecg.modules.eam.service.IEamTechnicalStatusChangeService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
 * @Description: æŠ€æœ¯çŠ¶æ€å˜æ›´ç”³è¯·
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
@Service
public class EamTechnicalStatusChangeServiceImpl extends ServiceImpl<EamTechnicalStatusChangeMapper, EamTechnicalStatusChange> implements IEamTechnicalStatusChangeService {
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusDeactivateDetailServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package org.jeecg.modules.eam.service.impl;
import org.jeecg.modules.eam.entity.EamTechnicalStatusDeactivateDetail;
import org.jeecg.modules.eam.mapper.EamTechnicalStatusDeactivateDetailMapper;
import org.jeecg.modules.eam.service.IEamTechnicalStatusDeactivateDetailService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
 * @Description: åœç”¨åŠ å·¥è®¾å¤‡ç”³è¯·å•æ˜Žç»†
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
@Service
public class EamTechnicalStatusDeactivateDetailServiceImpl extends ServiceImpl<EamTechnicalStatusDeactivateDetailMapper, EamTechnicalStatusDeactivateDetail> implements IEamTechnicalStatusDeactivateDetailService {
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusDeactivateServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package org.jeecg.modules.eam.service.impl;
import org.jeecg.modules.eam.entity.EamTechnicalStatusDeactivate;
import org.jeecg.modules.eam.mapper.EamTechnicalStatusDeactivateMapper;
import org.jeecg.modules.eam.service.IEamTechnicalStatusDeactivateService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
 * @Description: åœç”¨åŠ å·¥è®¾å¤‡ç”³è¯·å•
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
@Service
public class EamTechnicalStatusDeactivateServiceImpl extends ServiceImpl<EamTechnicalStatusDeactivateMapper, EamTechnicalStatusDeactivate> implements IEamTechnicalStatusDeactivateService {
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusEvaluationApplicationServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package org.jeecg.modules.eam.service.impl;
import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationApplication;
import org.jeecg.modules.eam.mapper.EamTechnicalStatusEvaluationApplicationMapper;
import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationApplicationService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
 * @Description: åŠ å·¥è®¾å¤‡æŠ€æœ¯é‰´å®šç”³è¯·
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
@Service
public class EamTechnicalStatusEvaluationApplicationServiceImpl extends ServiceImpl<EamTechnicalStatusEvaluationApplicationMapper, EamTechnicalStatusEvaluationApplication> implements IEamTechnicalStatusEvaluationApplicationService {
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusEvaluationOrderChangeServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package org.jeecg.modules.eam.service.impl;
import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationOrderChange;
import org.jeecg.modules.eam.mapper.EamTechnicalStatusEvaluationOrderChangeMapper;
import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationOrderChangeService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
 * @Description: æŠ€æœ¯çŠ¶æ€é‰´å®šå·¥å•å˜æ›´
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
@Service
public class EamTechnicalStatusEvaluationOrderChangeServiceImpl extends ServiceImpl<EamTechnicalStatusEvaluationOrderChangeMapper, EamTechnicalStatusEvaluationOrderChange> implements IEamTechnicalStatusEvaluationOrderChangeService {
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusEvaluationOrderDetailServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package org.jeecg.modules.eam.service.impl;
import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationOrderDetail;
import org.jeecg.modules.eam.mapper.EamTechnicalStatusEvaluationOrderDetailMapper;
import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationOrderDetailService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
 * @Description: æŠ€æœ¯çŠ¶æ€é‰´å®šå·¥å•æ˜Žç»†
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
@Service
public class EamTechnicalStatusEvaluationOrderDetailServiceImpl extends ServiceImpl<EamTechnicalStatusEvaluationOrderDetailMapper, EamTechnicalStatusEvaluationOrderDetail> implements IEamTechnicalStatusEvaluationOrderDetailService {
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusEvaluationOrderServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package org.jeecg.modules.eam.service.impl;
import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationOrder;
import org.jeecg.modules.eam.mapper.EamTechnicalStatusEvaluationOrderMapper;
import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationOrderService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
 * @Description: æŠ€æœ¯çŠ¶æ€é‰´å®šå·¥å•
 * @Author: jeecg-boot
 * @Date:   2025-07-09
 * @Version: V1.0
 */
@Service
public class EamTechnicalStatusEvaluationOrderServiceImpl extends ServiceImpl<EamTechnicalStatusEvaluationOrderMapper, EamTechnicalStatusEvaluationOrder> implements IEamTechnicalStatusEvaluationOrderService {
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusEvaluationStandardDetailServiceImpl.java
@@ -25,4 +25,13 @@
        wrapper.eq(EamTechnicalStatusEvaluationStandardDetail::getStandardId, standardId);
        this.getBaseMapper().delete(wrapper);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void removeByStandardIdAndCategory(String standardId, String category) {
        LambdaQueryWrapper<EamTechnicalStatusEvaluationStandardDetail> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(EamTechnicalStatusEvaluationStandardDetail::getStandardId, standardId);
        wrapper.eq(EamTechnicalStatusEvaluationStandardDetail::getCheckCategory, category);
        this.getBaseMapper().delete(wrapper);
    }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusEvaluationStandardServiceImpl.java
@@ -7,31 +7,42 @@
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.FileUtil;
import org.jeecg.common.util.SimpleVersionGenerateUtil;
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.eam.constant.BusinessCodeConst;
import org.jeecg.modules.eam.constant.TechnicalStatusEvaluationCheckCategoryEnum;
import org.jeecg.modules.eam.constant.TechnicalStatusEvaluationStandardEnum;
import org.jeecg.modules.eam.entity.EamEquipment;
import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationStandard;
import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationStandardDetail;
import org.jeecg.modules.eam.mapper.EamTechnicalStatusEvaluationStandardMapper;
import org.jeecg.modules.eam.request.EamTechnicalStatusEvaluationStandardRequest;
import org.jeecg.modules.eam.service.IEamEquipmentService;
import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationStandardDetailService;
import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationStandardService;
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.ISysBusinessCodeRuleService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.util.Arrays;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -41,6 +52,7 @@
 * @Version: V1.0
 */
@Service
@Slf4j
public class EamTechnicalStatusEvaluationStandardServiceImpl extends ServiceImpl<EamTechnicalStatusEvaluationStandardMapper, EamTechnicalStatusEvaluationStandard> implements IEamTechnicalStatusEvaluationStandardService {
    @Autowired
@@ -49,6 +61,10 @@
    private IBaseFactoryService baseFactoryService;
    @Autowired
    private IEamTechnicalStatusEvaluationStandardDetailService standardDetailService;
    @Autowired
    private IEamEquipmentService equipmentService;
    @Autowired
    private ISysBusinessCodeRuleService businessCodeRuleService;
    @Override
    public IPage<EamTechnicalStatusEvaluationStandard> queryPageList(Page<EamTechnicalStatusEvaluationStandard> page, EamTechnicalStatusEvaluationStandard query) {
@@ -68,9 +84,9 @@
            List<BaseFactoryUser> baseFactoryUserList = baseFactoryUserService.
                    list(new LambdaQueryWrapper<BaseFactoryUser>().eq(BaseFactoryUser::getUserId, sysUser.getId()));
            if (!CollectionUtils.isEmpty(baseFactoryUserList)) {
                List<String> factoryIds = baseFactoryUserList.stream().map(BaseFactoryUser::getFactoryId).collect(Collectors.toList());
                List<String> factoryCode = baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getFactoryCode).collect(Collectors.toList());
                queryWrapper.in("e.factory_org_code", factoryCode);
                Set<String> factoryIds = baseFactoryUserList.stream().map(BaseFactoryUser::getFactoryId).collect(Collectors.toSet());
                Set<String> factoryCodeList = baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getOrgCode).collect(Collectors.toSet());
                queryWrapper.in("e.factory_org_code", factoryCodeList);
            } else {
                return page;
            }
@@ -101,7 +117,7 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean addEamTechnicalStatusEvaluationStandard(EamTechnicalStatusEvaluationStandardRequest request) {
        if(!CommonConstant.STATUS_1.equals(request.getHasOtherCheck()) && !CommonConstant.STATUS_1.equals(request.getHasSafetyEquipmentCheck()) && !CommonConstant.STATUS_1.equals(request.getHasPrecisionCheck())) {
        if (!CommonConstant.STATUS_1.equals(request.getHasOtherCheck()) && !CommonConstant.STATUS_1.equals(request.getHasSafetyEquipmentCheck()) && !CommonConstant.STATUS_1.equals(request.getHasPrecisionCheck())) {
            //必须要选择一个检查分类
            throw new JeecgBootException("必须要选择一个检查分类!");
        }
@@ -116,36 +132,36 @@
        entity.setDelFlag(CommonConstant.DEL_FLAG_0);
        //重复性校验
        EamTechnicalStatusEvaluationStandard exist = checkDuplicate(entity.getEquipmentId(), null);
        if(exist != null){
        if (exist != null) {
            throw new JeecgBootException("规范已存在,不能重复添加!");
        }
        this.getBaseMapper().insert(entity);
        //处理明细数据
        if(CollectionUtil.isNotEmpty(request.getTableDetailList())) {
        if (CollectionUtil.isNotEmpty(request.getTableDetailList())) {
            request.getTableDetailList().forEach(tableDetail -> {
                tableDetail.setStandardId(entity.getId());
            });
            //根据分类判断是否保存
            if(CommonConstant.STATUS_1.equals(entity.getHasOtherCheck())) {
            if (CommonConstant.STATUS_1.equals(entity.getHasOtherCheck())) {
                //保存其他分类
                List<EamTechnicalStatusEvaluationStandardDetail> collect = request.getTableDetailList().stream().filter(item -> TechnicalStatusEvaluationCheckCategoryEnum.OTHER_CHECK.name().equals(item.getCheckCategory())).collect(Collectors.toList());
                if(CollectionUtils.isEmpty(collect)) {
                if (CollectionUtils.isEmpty(collect)) {
                    throw new JeecgBootException("其他检查明细不能为空!");
                }
                standardDetailService.saveBatch(collect);
            }
            if(CommonConstant.STATUS_1.equals(entity.getHasSafetyEquipmentCheck())) {
            if (CommonConstant.STATUS_1.equals(entity.getHasSafetyEquipmentCheck())) {
                //保存安全装置分类
                List<EamTechnicalStatusEvaluationStandardDetail> collect = request.getTableDetailList().stream().filter(item -> TechnicalStatusEvaluationCheckCategoryEnum.SAFETY_EQUIPMENT_CHECK.name().equals(item.getCheckCategory())).collect(Collectors.toList());
                if(CollectionUtils.isEmpty(collect)) {
                if (CollectionUtils.isEmpty(collect)) {
                    throw new JeecgBootException("安全装置检查明细不能为空!");
                }
                standardDetailService.saveBatch(collect);
            }
            if(CommonConstant.STATUS_1.equals(entity.getHasPrecisionCheck())) {
            if (CommonConstant.STATUS_1.equals(entity.getHasPrecisionCheck())) {
                //保存精度检验分类
                List<EamTechnicalStatusEvaluationStandardDetail> collect = request.getTableDetailList().stream().filter(item -> TechnicalStatusEvaluationCheckCategoryEnum.PRECISION_CHECK.name().equals(item.getCheckCategory())).collect(Collectors.toList());
                if(CollectionUtils.isEmpty(collect)) {
                if (CollectionUtils.isEmpty(collect)) {
                    throw new JeecgBootException("精度检查明细不能为空!");
                }
                standardDetailService.saveBatch(collect);
@@ -162,11 +178,11 @@
        //待提交、启用状态
        queryWrapper.in(EamTechnicalStatusEvaluationStandard::getStandardStatus, Arrays.asList(TechnicalStatusEvaluationStandardEnum.ENABLE.name(), TechnicalStatusEvaluationStandardEnum.WAIT_SUBMIT.name()));
        queryWrapper.orderByDesc(EamTechnicalStatusEvaluationStandard::getStandardVersion);
        if(StringUtils.isNotBlank(id)){
        if (StringUtils.isNotBlank(id)) {
            queryWrapper.ne(EamTechnicalStatusEvaluationStandard::getId, id);
        }
        List<EamTechnicalStatusEvaluationStandard> list = this.getBaseMapper().selectList(queryWrapper);
        if(CollectionUtil.isEmpty(list)) {
        if (CollectionUtil.isEmpty(list)) {
            return null;
        }
        return list.get(0);
@@ -175,12 +191,12 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean editEamTechnicalStatusEvaluationStandard(EamTechnicalStatusEvaluationStandardRequest request) {
        if(!CommonConstant.STATUS_1.equals(request.getHasOtherCheck()) && !CommonConstant.STATUS_1.equals(request.getHasSafetyEquipmentCheck()) && !CommonConstant.STATUS_1.equals(request.getHasPrecisionCheck())) {
        if (!CommonConstant.STATUS_1.equals(request.getHasOtherCheck()) && !CommonConstant.STATUS_1.equals(request.getHasSafetyEquipmentCheck()) && !CommonConstant.STATUS_1.equals(request.getHasPrecisionCheck())) {
            //必须要选择一个检查分类
            throw new JeecgBootException("必须要选择一个检查分类!");
        }
        EamTechnicalStatusEvaluationStandard entity = this.getBaseMapper().selectById(request.getId());
        if(entity == null){
        if (entity == null) {
            throw new JeecgBootException("编辑的数据已删除,请刷新重试!");
        }
        entity.setStandardName(request.getStandardName());
@@ -191,33 +207,33 @@
        entity.setRemark(request.getRemark());
        this.getBaseMapper().updateById(entity);
        //处理详情
        if(CollectionUtil.isNotEmpty(request.getTableDetailList())) {
        if (CollectionUtil.isNotEmpty(request.getTableDetailList())) {
            //先删除检查项
            standardDetailService.removeByStandardId(entity.getId());
            request.getTableDetailList().forEach(tableDetail -> {
                tableDetail.setStandardId(entity.getId());
            });
            //根据分类判断是否保存
            if(CommonConstant.STATUS_1.equals(entity.getHasOtherCheck())) {
            if (CommonConstant.STATUS_1.equals(entity.getHasOtherCheck())) {
                //保存其他分类
                List<EamTechnicalStatusEvaluationStandardDetail> collect = request.getTableDetailList().stream().filter(item -> TechnicalStatusEvaluationCheckCategoryEnum.OTHER_CHECK.name().equals(item.getCheckCategory())).collect(Collectors.toList());
                if(CollectionUtils.isEmpty(collect)) {
                if (CollectionUtils.isEmpty(collect)) {
                    throw new JeecgBootException("其他检查明细不能为空!");
                }
                standardDetailService.saveBatch(collect);
            }
            if(CommonConstant.STATUS_1.equals(entity.getHasSafetyEquipmentCheck())) {
            if (CommonConstant.STATUS_1.equals(entity.getHasSafetyEquipmentCheck())) {
                //保存安全装置分类
                List<EamTechnicalStatusEvaluationStandardDetail> collect = request.getTableDetailList().stream().filter(item -> TechnicalStatusEvaluationCheckCategoryEnum.SAFETY_EQUIPMENT_CHECK.name().equals(item.getCheckCategory())).collect(Collectors.toList());
                if(CollectionUtils.isEmpty(collect)) {
                if (CollectionUtils.isEmpty(collect)) {
                    throw new JeecgBootException("安全装置检查明细不能为空!");
                }
                standardDetailService.saveBatch(collect);
            }
            if(CommonConstant.STATUS_1.equals(entity.getHasPrecisionCheck())) {
            if (CommonConstant.STATUS_1.equals(entity.getHasPrecisionCheck())) {
                //保存精度检验分类
                List<EamTechnicalStatusEvaluationStandardDetail> collect = request.getTableDetailList().stream().filter(item -> TechnicalStatusEvaluationCheckCategoryEnum.PRECISION_CHECK.name().equals(item.getCheckCategory())).collect(Collectors.toList());
                if(CollectionUtils.isEmpty(collect)) {
                if (CollectionUtils.isEmpty(collect)) {
                    throw new JeecgBootException("精度检查明细不能为空!");
                }
                standardDetailService.saveBatch(collect);
@@ -229,12 +245,12 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean upgrade(EamTechnicalStatusEvaluationStandardRequest request) {
        if(!CommonConstant.STATUS_1.equals(request.getHasOtherCheck()) && !CommonConstant.STATUS_1.equals(request.getHasSafetyEquipmentCheck()) && !CommonConstant.STATUS_1.equals(request.getHasPrecisionCheck())) {
        if (!CommonConstant.STATUS_1.equals(request.getHasOtherCheck()) && !CommonConstant.STATUS_1.equals(request.getHasSafetyEquipmentCheck()) && !CommonConstant.STATUS_1.equals(request.getHasPrecisionCheck())) {
            //必须要选择一个检查分类
            throw new JeecgBootException("必须要选择一个检查分类!");
        }
        EamTechnicalStatusEvaluationStandard entity = this.getBaseMapper().selectById(request.getId());
        if(entity == null){
        if (entity == null) {
            throw new JeecgBootException("升版的数据已删除,请刷新重试!");
        }
@@ -256,12 +272,12 @@
        newEntity.setRemark(request.getRemark());
        //重复性校验
        EamTechnicalStatusEvaluationStandard exist = checkDuplicate(newEntity.getEquipmentId(), entity.getId());
        if(exist != null){
        if (exist != null) {
            throw new JeecgBootException("鉴定规范已存在,不能重复添加!");
        }
        this.getBaseMapper().insert(newEntity);
        //处理明细数据
        if(CollectionUtil.isNotEmpty(request.getTableDetailList())) {
        if (CollectionUtil.isNotEmpty(request.getTableDetailList())) {
            request.getTableDetailList().forEach(tableDetail -> {
                tableDetail.setId(null);
                tableDetail.setCreateBy(null);
@@ -271,26 +287,26 @@
                tableDetail.setStandardId(newEntity.getId());
            });
            //根据分类判断是否保存
            if(CommonConstant.STATUS_1.equals(entity.getHasOtherCheck())) {
            if (CommonConstant.STATUS_1.equals(entity.getHasOtherCheck())) {
                //保存其他分类
                List<EamTechnicalStatusEvaluationStandardDetail> collect = request.getTableDetailList().stream().filter(item -> TechnicalStatusEvaluationCheckCategoryEnum.OTHER_CHECK.name().equals(item.getCheckCategory())).collect(Collectors.toList());
                if(CollectionUtils.isEmpty(collect)) {
                if (CollectionUtils.isEmpty(collect)) {
                    throw new JeecgBootException("其他检查明细不能为空!");
                }
                standardDetailService.saveBatch(collect);
            }
            if(CommonConstant.STATUS_1.equals(entity.getHasSafetyEquipmentCheck())) {
            if (CommonConstant.STATUS_1.equals(entity.getHasSafetyEquipmentCheck())) {
                //保存安全装置分类
                List<EamTechnicalStatusEvaluationStandardDetail> collect = request.getTableDetailList().stream().filter(item -> TechnicalStatusEvaluationCheckCategoryEnum.SAFETY_EQUIPMENT_CHECK.name().equals(item.getCheckCategory())).collect(Collectors.toList());
                if(CollectionUtils.isEmpty(collect)) {
                if (CollectionUtils.isEmpty(collect)) {
                    throw new JeecgBootException("安全装置检查明细不能为空!");
                }
                standardDetailService.saveBatch(collect);
            }
            if(CommonConstant.STATUS_1.equals(entity.getHasPrecisionCheck())) {
            if (CommonConstant.STATUS_1.equals(entity.getHasPrecisionCheck())) {
                //保存精度检验分类
                List<EamTechnicalStatusEvaluationStandardDetail> collect = request.getTableDetailList().stream().filter(item -> TechnicalStatusEvaluationCheckCategoryEnum.PRECISION_CHECK.name().equals(item.getCheckCategory())).collect(Collectors.toList());
                if(CollectionUtils.isEmpty(collect)) {
                if (CollectionUtils.isEmpty(collect)) {
                    throw new JeecgBootException("精度检查明细不能为空!");
                }
                standardDetailService.saveBatch(collect);
@@ -301,4 +317,423 @@
        this.getBaseMapper().updateById(entity);
        return true;
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result<?> importSafetyEquipmentCheck(MultipartFile file) {
        String fileName = file.getOriginalFilename();
        if (StringUtils.isBlank(fileName)) {
            return Result.error(fileName + ":文件格式错误,无法解析!");
        }
        String fileSuffix = FileUtil.getFileSuffix(fileName);
        //只支持 .docx çš„word文档
        if ("docx".equals(fileSuffix)) {
            try (XWPFDocument doc = new XWPFDocument(file.getInputStream())) {
                List<XWPFParagraph> paragraphs = doc.getParagraphs();
                List<XWPFTable> tables = doc.getTables();
                if (CollectionUtil.isEmpty(paragraphs) || CollectionUtil.isEmpty(tables)) {
                    return Result.error(fileName + ":此文件不符合安全装置检查模板规范,请检查!");
                }
                //获取文件标题
                StringBuilder builder = new StringBuilder();
                paragraphs.forEach(paragraph -> {
                    if (StringUtils.isNotBlank(paragraph.getText())) {
                        builder.append(paragraph.getText().trim());
                    }
                });
                if (checkImportCategory(builder.toString(), TechnicalStatusEvaluationCheckCategoryEnum.SAFETY_EQUIPMENT_CHECK)) {
                    return Result.error(fileName + ":此文件不符合安全装置检查模板规范,请检查!");
                }
                //获取设备信息
                EamEquipment equipment = extractEquipmentInfo(tables.get(0));
                //查看是否有此设备启用的规范信息
                EamTechnicalStatusEvaluationStandard originalStandard = checkDuplicate(equipment.getId(), null);
                if (originalStandard != null && TechnicalStatusEvaluationStandardEnum.ENABLE.name().equals(originalStandard.getStandardStatus())) {
                    return Result.error(fileName + ":此设备已存在启用的规范,请进行编辑或升版!");
                }
                //获取检查项信息
                List<EamTechnicalStatusEvaluationStandardDetail> detailList = extractSafetyEquipmentCheckItems(tables);
                if(CollectionUtil.isEmpty(detailList)){
                    return Result.error(fileName + ":未解析到检查项内容,请检查!");
                }
                if(originalStandard != null) {
                    //已存在技术状态鉴定规范,且规范状态为已提交
                    originalStandard.setHasSafetyEquipmentCheck(CommonConstant.STATUS_1);
                    originalStandard.setStandardStatus(TechnicalStatusEvaluationStandardEnum.WAIT_SUBMIT.name());
                    super.getBaseMapper().updateById(originalStandard);
                    detailList.forEach(standardDetail -> {
                        standardDetail.setStandardId(originalStandard.getId());
                    });
                    //先删除,后添加
                    standardDetailService.removeByStandardIdAndCategory(originalStandard.getId(), TechnicalStatusEvaluationCheckCategoryEnum.SAFETY_EQUIPMENT_CHECK.name());
                    //重新添加
                    standardDetailService.saveBatch(detailList);
                }else {
                    String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.TECHNICAL_STATUS_EVALUATION_STANDARD_CODE_RULE);
                    //新增技术状态鉴定规范
                    EamTechnicalStatusEvaluationStandardRequest request = new EamTechnicalStatusEvaluationStandardRequest();
                    request.setEquipmentId(equipment.getId());
                    request.setHasSafetyEquipmentCheck(CommonConstant.STATUS_1);
                    request.setHasOtherCheck(CommonConstant.STATUS_0);
                    request.setHasPrecisionCheck(CommonConstant.STATUS_0);
                    request.setStandardCode(codeSeq);
                    request.setStandardName(equipment.getEquipmentName() + "技术状态鉴定规范");
                    request.setTableDetailList(detailList);
                    this.addEamTechnicalStatusEvaluationStandard(request);
                }
            } catch (Exception e) {
                log.error(e.getMessage(), e);
                return Result.error(fileName + ":" + e.getMessage() + "!");
            }
        } else {
            return Result.error(fileName + ":文件格式错误,无法解析!");
        }
        return Result.OK(fileName + ":导入成功!");
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result<?> importPrecisionCheck(MultipartFile file) {
        String fileName = file.getOriginalFilename();
        if (StringUtils.isBlank(fileName)) {
            return Result.error(fileName + ":文件格式错误,无法解析!");
        }
        String fileSuffix = FileUtil.getFileSuffix(fileName);
        //只支持 .docx çš„word文档
        if ("docx".equals(fileSuffix)) {
            try (XWPFDocument doc = new XWPFDocument(file.getInputStream())) {
                List<XWPFParagraph> paragraphs = doc.getParagraphs();
                List<XWPFTable> tables = doc.getTables();
                if (CollectionUtil.isEmpty(paragraphs) || CollectionUtil.isEmpty(tables)) {
                    return Result.error(fileName + ":此文件不符合设备精度检查模板规范,请检查!");
                }
                //获取文件标题
                StringBuilder builder = new StringBuilder();
                paragraphs.forEach(paragraph -> {
                    if (StringUtils.isNotBlank(paragraph.getText())) {
                        builder.append(paragraph.getText().trim());
                    }
                });
                if (checkImportCategory(builder.toString(), TechnicalStatusEvaluationCheckCategoryEnum.PRECISION_CHECK)) {
                    return Result.error(fileName + ":此文件不符合设备精度检查模板规范,请检查!");
                }
                //获取设备信息
                EamEquipment equipment = extractEquipmentInfo(tables.get(0));
                //查看是否有此设备启用的规范信息
                EamTechnicalStatusEvaluationStandard originalStandard = checkDuplicate(equipment.getId(), null);
                if (originalStandard != null && TechnicalStatusEvaluationStandardEnum.ENABLE.name().equals(originalStandard.getStandardStatus())) {
                    return Result.error(fileName + ":此设备已存在启用的规范,请进行编辑或升版!");
                }
                //获取检查项信息
                List<EamTechnicalStatusEvaluationStandardDetail> detailList = extractPrecisionCheckItems(tables);
                if(CollectionUtil.isEmpty(detailList)){
                    return Result.error(fileName + ":未解析到检查项内容,请检查!");
                }
                if(originalStandard != null) {
                    //已存在技术状态鉴定规范,且规范状态为已提交
                    originalStandard.setHasPrecisionCheck(CommonConstant.STATUS_1);
                    originalStandard.setStandardStatus(TechnicalStatusEvaluationStandardEnum.WAIT_SUBMIT.name());
                    super.getBaseMapper().updateById(originalStandard);
                    detailList.forEach(standardDetail -> {
                        standardDetail.setStandardId(originalStandard.getId());
                    });
                    //先删除,后添加
                    standardDetailService.removeByStandardIdAndCategory(originalStandard.getId(), TechnicalStatusEvaluationCheckCategoryEnum.PRECISION_CHECK.name());
                    //重新添加
                    standardDetailService.saveBatch(detailList);
                }else {
                    String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.TECHNICAL_STATUS_EVALUATION_STANDARD_CODE_RULE);
                    //新增技术状态鉴定规范
                    EamTechnicalStatusEvaluationStandardRequest request = new EamTechnicalStatusEvaluationStandardRequest();
                    request.setEquipmentId(equipment.getId());
                    request.setHasSafetyEquipmentCheck(CommonConstant.STATUS_0);
                    request.setHasOtherCheck(CommonConstant.STATUS_0);
                    request.setHasPrecisionCheck(CommonConstant.STATUS_1);
                    request.setStandardCode(codeSeq);
                    request.setStandardName(equipment.getEquipmentName() + "技术状态鉴定规范");
                    request.setTableDetailList(detailList);
                    this.addEamTechnicalStatusEvaluationStandard(request);
                }
            } catch (Exception e) {
                log.error(e.getMessage(), e);
                return Result.error(fileName + ":" + e.getMessage() + "!");
            }
        } else {
            return Result.error(fileName + ":文件格式错误,无法解析!");
        }
        return Result.OK(fileName + ":导入成功!");
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result<?> importOtherCheck(MultipartFile file) {
        String fileName = file.getOriginalFilename();
        if (StringUtils.isBlank(fileName)) {
            return Result.error(fileName + ":文件格式错误,无法解析!");
        }
        String fileSuffix = FileUtil.getFileSuffix(fileName);
        //只支持 .docx çš„word文档
        if ("docx".equals(fileSuffix)) {
            try (XWPFDocument doc = new XWPFDocument(file.getInputStream())) {
                List<XWPFParagraph> paragraphs = doc.getParagraphs();
                List<XWPFTable> tables = doc.getTables();
                if (CollectionUtil.isEmpty(paragraphs) || CollectionUtil.isEmpty(tables)) {
                    return Result.error(fileName + ":此文件不符合安全装置检查模板规范,请检查!");
                }
                //获取文件标题
                StringBuilder builder = new StringBuilder();
                paragraphs.forEach(paragraph -> {
                    if (StringUtils.isNotBlank(paragraph.getText())) {
                        builder.append(paragraph.getText().trim());
                    }
                });
                if (checkImportCategory(builder.toString(), TechnicalStatusEvaluationCheckCategoryEnum.OTHER_CHECK)) {
                    return Result.error(fileName + ":此文件不符合其他检查模板规范,请检查!");
                }
                //获取设备信息
                EamEquipment equipment = extractEquipmentInfo(tables.get(0));
                //查看是否有此设备启用的规范信息
                EamTechnicalStatusEvaluationStandard originalStandard = checkDuplicate(equipment.getId(), null);
                if (originalStandard != null && TechnicalStatusEvaluationStandardEnum.ENABLE.name().equals(originalStandard.getStandardStatus())) {
                    return Result.error(fileName + ":此设备已存在启用的规范,请进行编辑或升版!");
                }
                //获取检查项信息
                List<EamTechnicalStatusEvaluationStandardDetail> detailList = extractOtherCheckItems(tables);
                if(CollectionUtil.isEmpty(detailList)){
                    return Result.error(fileName + ":未解析到检查项内容,请检查!");
                }
                if(originalStandard != null) {
                    //已存在技术状态鉴定规范,且规范状态为已提交
                    originalStandard.setHasOtherCheck(CommonConstant.STATUS_1);
                    originalStandard.setStandardStatus(TechnicalStatusEvaluationStandardEnum.WAIT_SUBMIT.name());
                    super.getBaseMapper().updateById(originalStandard);
                    detailList.forEach(standardDetail -> {
                        standardDetail.setStandardId(originalStandard.getId());
                    });
                    //先删除,后添加
                    standardDetailService.removeByStandardIdAndCategory(originalStandard.getId(), TechnicalStatusEvaluationCheckCategoryEnum.OTHER_CHECK.name());
                    //重新添加
                    standardDetailService.saveBatch(detailList);
                }else {
                    String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.TECHNICAL_STATUS_EVALUATION_STANDARD_CODE_RULE);
                    //新增技术状态鉴定规范
                    EamTechnicalStatusEvaluationStandardRequest request = new EamTechnicalStatusEvaluationStandardRequest();
                    request.setEquipmentId(equipment.getId());
                    request.setHasSafetyEquipmentCheck(CommonConstant.STATUS_0);
                    request.setHasOtherCheck(CommonConstant.STATUS_1);
                    request.setHasPrecisionCheck(CommonConstant.STATUS_0);
                    request.setStandardCode(codeSeq);
                    request.setStandardName(equipment.getEquipmentName() + "技术状态鉴定规范");
                    request.setTableDetailList(detailList);
                    this.addEamTechnicalStatusEvaluationStandard(request);
                }
            } catch (Exception e) {
                log.error(e.getMessage(), e);
                return Result.error(fileName + ":" + e.getMessage() + "!");
            }
        } else {
            return Result.error(fileName + ":文件格式错误,无法解析!");
        }
        return Result.OK(fileName + ":导入成功!");
    }
    /**
     * æ£€æŸ¥å¯¼å…¥æ–‡ä»¶åˆ†ç±»æ˜¯å¦åŒ¹é…
     * @param title æ ‡é¢˜æ®µè½å­—符串
     * @param category åˆ†ç±»
     * @return true ä¸åŒ¹é…ï¼Œ false  åŒ¹é…
     */
    private boolean checkImportCategory(String title, TechnicalStatusEvaluationCheckCategoryEnum category) {
        switch (category) {
            case SAFETY_EQUIPMENT_CHECK:
                return !title.contains("安全装置检查");
            case PRECISION_CHECK:
                return !title.contains("精度检查单");
            case OTHER_CHECK:
                return !title.contains("其他检查");
        }
        return true;
    }
    /**
     * æå–设备基本信息
     */
    private EamEquipment extractEquipmentInfo(XWPFTable table) {
        if (table.getNumberOfRows() < 4) {
            //如果 table å°äºŽ4行 ä»£è¡¨ä¸ç¬¦åˆæ¨¡æ¿è§„范,导入失败
            throw new JeecgBootException("此文件不符合安全装置检查模板规范,请检查");
        }
        // æå–第二行数据
        Map<String, String> row2Data = extractHeadRowData(table.getRow(1));
        //获取设备统一编码
        String equipmentCode = row2Data.get("统一编号") == null ? null : row2Data.get("统一编号").trim();
        EamEquipment eamEquipment = equipmentService.selectByEquipmentCode(equipmentCode);
        if (eamEquipment == null) {
            throw new JeecgBootException("未找到设备信息,请查看设备台账是否有此设备");
        }
        return eamEquipment;
    }
    /**
     * è¡¨æ ¼è¡¨å¤´æ•°æ®è§£æž
     */
    private Map<String, String> extractHeadRowData(XWPFTableRow row) {
        Map<String, String> data = new HashMap<>();
        if(CollectionUtil.isEmpty(row.getTableCells()) || row.getTableCells().size() != 4) {
            throw new JeecgBootException("此文件不符合安全装置检查模板规范,请检查");
        }
        int cellCount = row.getTableCells().size();
        for (int i = 0; i < cellCount; i += 2) {
            String key = row.getCell(i).getText().trim();
            String value = row.getCell(i + 1).getText().trim();
            if (StringUtils.isNotBlank(key) && StringUtils.isNotBlank(value)) {
                data.put(key, value);
            }
        }
        return data;
    }
    /**
     * æå–安全装置检查明细
     */
    private List<EamTechnicalStatusEvaluationStandardDetail> extractSafetyEquipmentCheckItems(List<XWPFTable> tableList) {
        List<EamTechnicalStatusEvaluationStandardDetail> items = new ArrayList<>();
        EamTechnicalStatusEvaluationStandardDetail item = null;
        //解析第一个表格,带设备信息
        XWPFTable table = tableList.get(0);
        for (int i = 0; i < table.getNumberOfRows(); i++) {
            XWPFTableRow row = table.getRow(i);
            if (row == null || CollectionUtil.isEmpty(row.getTableCells()) || row.getTableCells().size() < 2) {
                //读取到空row值
                continue;
            }
            //检查是否到检查项序号
            String firstCell = row.getCell(0).getText().trim();
            Integer itemCode = null;
            try {
                itemCode = Integer.parseInt(firstCell);
            } catch (NumberFormatException e) {
                //不是检查项内容,跳过此行
                continue;
            }
            //获取第二个单元格
            String secondCell = row.getCell(1).getText().trim();
            //如果这一行为序号则解析整行
            if (StringUtils.isNotBlank(secondCell)) {
                item = new EamTechnicalStatusEvaluationStandardDetail();
                item.setItemCode(itemCode);
                item.setItemName(secondCell);
                item.setCheckCategory(TechnicalStatusEvaluationCheckCategoryEnum.SAFETY_EQUIPMENT_CHECK.name());
                items.add(item);
            }
        }
        return items;
    }
    /**
     * æå–其他检查项明细内容
     * @param tables
     * @return
     */
    private List<EamTechnicalStatusEvaluationStandardDetail> extractOtherCheckItems(List<XWPFTable> tables) {
        List<EamTechnicalStatusEvaluationStandardDetail> items = new ArrayList<>();
        EamTechnicalStatusEvaluationStandardDetail item = null;
        //解析第一个表格,带设备信息
        XWPFTable table = tables.get(0);
        for (int i = 0; i < table.getNumberOfRows(); i++) {
            XWPFTableRow row = table.getRow(i);
            if (row == null || CollectionUtil.isEmpty(row.getTableCells()) || row.getTableCells().size() < 2) {
                //读取到空row值
                continue;
            }
            //检查是否到检查项序号
            String firstCell = row.getCell(0).getText().trim();
            Integer itemCode = null;
            try {
                itemCode = Integer.parseInt(firstCell);
            } catch (NumberFormatException e) {
                //不是检查项内容,跳过此行
                continue;
            }
            //获取第二个单元格
            String secondCell = row.getCell(1).getText().trim();
            //如果这一行为序号则解析整行
            if (StringUtils.isNotBlank(secondCell)) {
                item = new EamTechnicalStatusEvaluationStandardDetail();
                item.setItemCode(itemCode);
                item.setItemName(secondCell);
                item.setCheckCategory(TechnicalStatusEvaluationCheckCategoryEnum.OTHER_CHECK.name());
                items.add(item);
            }
        }
        return items;
    }
    private List<EamTechnicalStatusEvaluationStandardDetail> extractPrecisionCheckItems(List<XWPFTable> tables) {
        List<EamTechnicalStatusEvaluationStandardDetail> items = new ArrayList<>();
        EamTechnicalStatusEvaluationStandardDetail item = null;
        //解析第一个表格,带设备信息
        XWPFTable table = tables.get(0);
        for (int i = 0; i < table.getNumberOfRows(); i++) {
            XWPFTableRow row = table.getRow(i);
            if (row == null || CollectionUtil.isEmpty(row.getTableCells()) || row.getTableCells().size() < 2) {
                //读取到空row值
                continue;
            }
            //检查是否到检查项序号
            String firstCell = row.getCell(0).getText().trim();
            Integer itemCode = null;
            try {
                itemCode = Integer.parseInt(firstCell);
            } catch (NumberFormatException e) {
                //不是检查项内容,跳过此行
                if(item == null) {
                    continue;
                }else {
                    itemCode = item.getItemCode();
                }
            }
            //获取第二个单元格
            String itemName = row.getCell(1).getText().trim();
            if(StringUtils.isBlank(itemName)) {
                if(item != null) {
                    itemName = item.getItemName();
                }else {
                    continue;
                }
            }
            String subItemName = null;
            String toleranceValue = null;
            if(row.getTableCells().size() == 4) {
                toleranceValue = row.getCell(2).getText().trim();
            }else if(row.getTableCells().size() == 5) {
                subItemName = row.getCell(2).getText().trim();
                toleranceValue = row.getCell(3).getText().trim();
            }else {
                continue;
            }
            if(StringUtils.isBlank(toleranceValue)) {
               //允差值不存在,跳过
               if(item != null) {
                   toleranceValue = item.getToleranceValue();
               }else {
                   continue;
               }
            }
            //拼装明细数据
            item = new EamTechnicalStatusEvaluationStandardDetail();
            item.setItemCode(itemCode);
            item.setItemName(itemName);
            item.setSubItemName(subItemName);
            item.setToleranceValue(toleranceValue);
            item.setCheckCategory(TechnicalStatusEvaluationCheckCategoryEnum.PRECISION_CHECK.name());
            items.add(item);
        }
        return items;
    }
}
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/BaseFactoryController.java
@@ -4,7 +4,11 @@
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.util.StrUtil;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.system.entity.BaseFactory;
@@ -98,16 +102,22 @@
     /**
      * æ·»åŠ 
      *
      * @param BaseFactory
      * @param baseFactory
      * @return
      */
     @AutoLog(value = "设备车间管理-添加")
     @ApiOperation(value = "设备车间管理-添加", notes = "设备车间管理-添加")
     @PostMapping(value = "/add")
     public Result<BaseFactory> add(@RequestBody BaseFactory BaseFactory) {
     public Result<?> add(@RequestBody BaseFactory baseFactory) {
         Result<BaseFactory> result = new Result<>();
         try {
             BaseFactoryService.saveBaseFactoryData(BaseFactory);
             QueryWrapper<BaseFactory> baseFactoryQueryWrapper = new QueryWrapper<>();
             baseFactoryQueryWrapper.eq(StrUtil.isNotEmpty(baseFactory.getFactoryCode()), "factory_code", baseFactory.getFactoryCode());
             baseFactoryQueryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0.toString());
             if (BaseFactoryService.getOne(baseFactoryQueryWrapper) != null) {
                 return Result.error("机构编码已存在");
             }
             BaseFactoryService.saveBaseFactoryData(baseFactory);
             result.success("添加成功!");
         } catch (Exception e) {
             log.error(e.getMessage(), e);
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java
@@ -167,6 +167,7 @@
                item.setOrgCodeTxt(useDepNames.get(item.getId()));
                item.setProductionName(useProNames.get(item.getId()));
                item.setRepairDepartName(useRepDepNames.get(item.getId()));
                item.setEamFactoryIds( String.join(",",iBaseFactoryUserService.queryEamCenterIdsByUserId(item.getId())));
            });
        }
        result.setSuccess(true);
@@ -184,6 +185,7 @@
        String selectedDeparts = jsonObject.getString("selecteddeparts");
        String selectedProductions = jsonObject.getString("selectedProduction");
        String selectedRepairDeparts = jsonObject.getString("selectedRepairDeparts");
        String factoryIds=jsonObject.getString("selectedBaseFactory");
        try {
            SysUser user = JSON.parseObject(jsonObject.toJSONString(), SysUser.class);
            user.setCreateTime(new Date());//设置创建时间
@@ -199,6 +201,9 @@
            user.setOrgCode(null);
            // ä¿å­˜ç”¨æˆ·èµ°ä¸€ä¸ªservice ä¿è¯äº‹åŠ¡
            sysUserService.saveUser(user, selectedRoles, selectedDeparts, selectedProductions, selectedRepairDeparts);
            if (oConvertUtils.isNotEmpty(factoryIds)) {
                iBaseFactoryUserService.addUserFactory(user.getId(), factoryIds);
            }
            baseCommonService.addLog("添加用户,username: " + user.getUsername(), CommonConstant.LOG_TYPE_2, 2);
            result.success("添加成功!");
        } catch (Exception e) {
@@ -227,6 +232,7 @@
                String departs = jsonObject.getString("selecteddeparts");
                String productions = jsonObject.getString("selectedProduction");
                String repairDeparts = jsonObject.getString("selectedRepairDeparts");
                String factoryIds=jsonObject.getString("selectedBaseFactory");
                if (oConvertUtils.isEmpty(departs)) {
                    //vue3.0前端只传递了departIds
                    departs = user.getDepartIds();
@@ -237,6 +243,9 @@
                if (oConvertUtils.isNotEmpty(repairDeparts)) {
                    repairDeparts = user.getRepairDepartIds();
                }
                if (oConvertUtils.isNotEmpty(factoryIds)) {
                    iBaseFactoryUserService.addUserFactory(user.getId(), factoryIds);
                }
                //用户表字段org_code不能在这里设置他的值
                user.setOrgCode(null);
                // ä¿®æ”¹ç”¨æˆ·èµ°ä¸€ä¸ªservice ä¿è¯äº‹åŠ¡
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IBaseFactoryService.java
@@ -33,6 +33,11 @@
    List<EamBaseFactoryTreeModel> searchByKeyWord(String keyWord);
    /**
     * æ ¹æ®å…³é”®å­—获取中心数据
     */
    BaseFactory searchCenterByKeyWord(String keyWord);
    /**
     * ä¿å­˜äº§çº¿æ•°æ®
     */
    void saveBaseFactoryData(BaseFactory BaseFactory);
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IBaseFactoryUserService.java
@@ -19,4 +19,16 @@
     * æ ¹æ®æŒ‡å®šç”¨æˆ·id查询产线信息
     */
    List<EamBaseFactoryIdModel> queryEamBaseFactoryIdsOfUser(String userId);
    /**
     * æ ¹æ®æŒ‡å®šç”¨æˆ·id查询EAM中心信息
     */
    List<String> queryEamCenterIdsByUserId(String userId);
    /**
     * æ·»åŠ å•ä¸ªç”¨æˆ·ä¸Žä¸€ç»„ä¸­å¿ƒ
     * @param userId
     * @param factoryIds
     */
    void addUserFactory(String userId, String factoryIds);
}
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/BaseFactoryServiceImpl.java
@@ -3,10 +3,12 @@
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.FillRuleConstant;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.util.FillRuleUtil;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.system.entity.BaseFactory;
@@ -100,32 +102,81 @@
        return Collections.emptyList();
    }
    public BaseFactory searchCenterByKeyWord(String keyWord) {
        if (StringUtils.isBlank(keyWord)) {
            return null;
        }
        if (keyWord.contains("/")) {
            return searchByHierarchy(keyWord);
        } else {
            return searchByCode(keyWord);
        }
    }
    private BaseFactory searchByHierarchy(String path) {
        String[] levels = path.split("/");
        int depth = levels.length;
        // æ£€æŸ¥å±‚级深度
        if (depth < 2 || depth > 3) {
            return null; // æ— æ•ˆçš„层级深度
        }
        // æŸ¥è¯¢ç¬¬ä¸€çº§ä¸­å¿ƒ
        BaseFactory center = findFactory(levels[0], 1, null);
        if (center == null) return null;
        // æŸ¥è¯¢ç¬¬äºŒçº§å·¥åŒº
        BaseFactory workArea = findFactory(levels[1], null, center.getId());
        if (workArea == null || depth == 2) return workArea;
        // æŸ¥è¯¢ç¬¬ä¸‰çº§å·¥æ®µ
        return findFactory(levels[2], null, workArea.getId());
    }
    private BaseFactory searchByCode(String code) {
        LambdaQueryWrapper<BaseFactory> query = new LambdaQueryWrapper<>();
        query.like(BaseFactory::getFactoryCode, code);
        return this.baseMapper.selectOne(query); // ä½¿ç”¨selectOne避免多个结果
    }
    private BaseFactory findFactory(String name, Integer category, String parentId) {
        LambdaQueryWrapper<BaseFactory> query = new LambdaQueryWrapper<>();
        query.eq(BaseFactory::getFactoryName, name);
        if (category != null) query.eq(BaseFactory::getFactoryCategory, category);
        if (parentId != null) query.eq(BaseFactory::getParentId, parentId);
        return this.baseMapper.selectOne(query);
    }
    /**
     * saveProductionData å¯¹åº” add ä¿å­˜ç”¨æˆ·åœ¨é¡µé¢æ·»åŠ çš„æ–°çš„è®¾å¤‡è½¦é—´ç®¡ç†å¯¹è±¡æ•°æ®
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void saveBaseFactoryData(BaseFactory BaseFactory) {
        if (BaseFactory != null) {
            if (BaseFactory.getParentId() == null|| StrUtil.isEmpty(BaseFactory.getParentId())) {
                BaseFactory.setParentId("");
                BaseFactory.setFactoryCategory("0");
    public void saveBaseFactoryData(BaseFactory baseFactory) {
        if (baseFactory != null) {
            if (baseFactory.getParentId() == null|| StrUtil.isEmpty(baseFactory.getParentId())) {
                baseFactory.setParentId("");
                baseFactory.setFactoryCategory("0");
            }
            if (BaseFactory.getFactoryCategory() == null|| StrUtil.isEmpty(BaseFactory.getFactoryCategory())) {
                BaseFactory.setFactoryCategory("1");
            if (baseFactory.getFactoryCategory() == null|| StrUtil.isEmpty(baseFactory.getFactoryCategory())) {
                baseFactory.setFactoryCategory("1");
            }
            BaseFactory.setId(IdWorker.getIdStr(BaseFactory));
            baseFactory.setId(IdWorker.getIdStr(baseFactory));
            // å…ˆåˆ¤æ–­è¯¥å¯¹è±¡æœ‰æ— çˆ¶çº§ID,有则意味着不是最高级,否则意味着是最高级
            // èŽ·å–çˆ¶çº§ID
            String parentId = BaseFactory.getParentId();
            String parentId = baseFactory.getParentId();
            JSONObject formData = new JSONObject();
            formData.put("parentId",parentId);
            String[] codeArray = (String[]) FillRuleUtil.executeRule(FillRuleConstant.WORKSHOP,formData);
            BaseFactory.setOrgCode(codeArray[0]);
            baseFactory.setOrgCode(codeArray[0]);
            String orgType = codeArray[1];
            BaseFactory.setOrgType(String.valueOf(orgType));
            BaseFactory.setDelFlag(CommonConstant.DEL_FLAG_0.toString());
            this.save(BaseFactory);
            baseFactory.setOrgType(String.valueOf(orgType));
            baseFactory.setDelFlag(CommonConstant.DEL_FLAG_0.toString());
            this.save(baseFactory);
        }
    }
@@ -145,9 +196,15 @@
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean updateBaseFactoryDataById(BaseFactory BaseFactory) {
        if (BaseFactory != null) {
            this.updateById(BaseFactory);
    public boolean updateBaseFactoryDataById(BaseFactory baseFactory) {
        QueryWrapper<BaseFactory> baseFactoryQueryWrapper = new QueryWrapper<>();
        baseFactoryQueryWrapper.eq(StrUtil.isNotEmpty(baseFactory.getFactoryCode()), "factory_code", baseFactory.getFactoryCode());
        baseFactoryQueryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0.toString());
        if (this.getOne(baseFactoryQueryWrapper) != null) {
            throw new JeecgBootException("机构编码已存在");
        }
        if (baseFactory != null) {
            this.updateById(baseFactory);
            return true;
        }
        return false;
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/BaseFactoryUserServiceImpl.java
@@ -58,4 +58,47 @@
        }
        return null;
    }
    /**
     * æ ¹æ®æŒ‡å®šç”¨æˆ·id查询EAM中心信息
     */
    @Override
    public List<String> queryEamCenterIdsByUserId(String userId){
        LambdaQueryWrapper<BaseFactoryUser> factoryUserLambdaQueryWrapper=new LambdaQueryWrapper<>();
        factoryUserLambdaQueryWrapper.eq(BaseFactoryUser::getUserId, userId);
        factoryUserLambdaQueryWrapper.exists("select 1 from eam_base_factory b where b.id=eam_base_factory_user.factory_id and b.del_flag=0");
        List<BaseFactoryUser> baseFactoryUsers=this.list(factoryUserLambdaQueryWrapper);
        List<String> eamCenterIds=new ArrayList<>();
        if(baseFactoryUsers!=null&& !baseFactoryUsers.isEmpty()) {
            for (BaseFactoryUser baseFactoryUser : baseFactoryUsers) {
                eamCenterIds.add(baseFactoryUser.getFactoryId());
            }
        }
        return eamCenterIds;
    }
    /**
     * æ·»åŠ å•ä¸ªç”¨æˆ·ä¸Žä¸€ç»„ä¸­å¿ƒ
     * @param userId
     * @param factoryIds
     */
    @Override
    public void addUserFactory(String userId, String factoryIds){
        if (factoryIds.contains(",")){
            //先查询
            List<String> eamCenterIds=this.queryEamCenterIdsByUserId(userId);
            if (eamCenterIds != null && !eamCenterIds.isEmpty()) {
                for (String eamCenterId : eamCenterIds) {
                    this.remove(new LambdaQueryWrapper<BaseFactoryUser>().eq(BaseFactoryUser::getUserId, userId).eq(BaseFactoryUser::getFactoryId, eamCenterId));
                }
            }
            String [] factoryIdArray=factoryIds.split(",");
            for(String factoryId:factoryIdArray){
                BaseFactoryUser baseFactoryUser=new BaseFactoryUser();
                baseFactoryUser.setUserId(userId);
                baseFactoryUser.setFactoryId(factoryId);
                this.save(baseFactoryUser);
            }
        }
    }
}
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/vo/EamBaseFactoryVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package org.jeecg.modules.system.vo;
import lombok.Data;
/**
 * @Author: Lius
 * @CreateTime: 2025-07-03
 * @Description:
 */
@Data
public class EamBaseFactoryVo {
    private String userId;
    private String factoryName;
}