From 582bb2627712f66157b5608c8f5798775fc38266 Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期五, 22 八月 2025 15:20:31 +0800
Subject: [PATCH] 设备管理首页

---
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamReportRepairMapper.xml                   |   13 +
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamThirdMaintenanceOrderMapper.xml                 |   11 
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamFactorySecondMaintPlanMapper.xml         |    5 
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java              |   34 ++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceOrderServiceImpl.java         |   80 ++++++
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentMapper.xml                      |   48 +++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamFactorySecondMaintPlanController.java           |  167 ++++++++++++
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamFactorySecondMaintPlanMapper.java            |   17 +
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamEquipmentMapper.java                         |    8 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamThirdMaintenanceOrderMapper.java                    |    5 
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportRepairServiceImpl.java           |  103 +++++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamThirdMaintenanceOrderService.java                 |    7 
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentService.java                      |   10 
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamReportRepairService.java                   |    6 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamHomeController.java                             |   86 ++++++
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamFactorySecondMaintPlanService.java         |   14 +
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamReportRepairMapper.java                      |    7 
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamFactorySecondMaintPlanServiceImpl.java |   19 +
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/EchartsDto.java                                    |   52 ++++
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamFactorySecondMaintPlan.java                  |   69 +++++
 20 files changed, 761 insertions(+), 0 deletions(-)

diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/EchartsDto.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/EchartsDto.java
new file mode 100644
index 0000000..b7d7637
--- /dev/null
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/EchartsDto.java
@@ -0,0 +1,52 @@
+package org.jeecg.modules.eam.dto;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ *  @Description: EchartsDto
+ *  @Date:2021/5/20
+ *  @Version:V1.0
+ */
+@Data
+@Accessors(chain = true)
+public class EchartsDto {
+
+    public EchartsDto() {
+
+    }
+
+    public EchartsDto(String code, String name, String value, String total, String percentage) {
+        this.code = code;
+        this.name = name;
+        this.value = value;
+        this.total = total;
+        this.percentage = percentage;
+    }
+
+    /**
+     * code
+     */
+    private String code;
+    /**
+     * name
+     */
+    private String name;
+    /**
+     * 鍊�
+     */
+    private String value;
+
+    /**
+     * 鎬绘暟
+     */
+    private String total;
+
+    /**
+     * 鍗犳瘮
+     */
+    private String percentage;
+
+
+
+}
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamFactorySecondMaintPlan.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamFactorySecondMaintPlan.java
new file mode 100644
index 0000000..7995efa
--- /dev/null
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamFactorySecondMaintPlan.java
@@ -0,0 +1,69 @@
+package org.jeecg.modules.eam.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+/**
+ * @Description: 鈥滈椤佃溅闂翠簩淇濊鍒�
+ * @Author: jeecg-boot
+ * @Date:   2025-08-22
+ * @Version: V1.0
+ */
+@Data
+@TableName("eam_factory_second_maint_plan")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="eam_factory_second_maint_plan瀵硅薄", description="鈥滈椤佃溅闂翠簩淇濊鍒�")
+public class EamFactorySecondMaintPlan {
+
+	/**涓婚敭*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+	private String id;
+	/**鍒涘缓浜�*/
+	@Excel(name = "鍒涘缓浜�", width = 15)
+    @ApiModelProperty(value = "鍒涘缓浜�")
+	private String createBy;
+	/**鍒涘缓鏃堕棿*/
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+	private Date createTime;
+	/**鏇存柊浜�*/
+	@Excel(name = "鏇存柊浜�", width = 15)
+    @ApiModelProperty(value = "鏇存柊浜�")
+	private String updateBy;
+	/**鏇存柊鏃堕棿*/
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+	private Date updateTime;
+	/**鍒犻櫎鏍囪*/
+	@Excel(name = "鍒犻櫎鏍囪", width = 15)
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+	private Integer delFlag;
+	/**宸ュ巶ID*/
+	@Excel(name = "宸ュ巶ID", width = 15)
+    @ApiModelProperty(value = "宸ュ巶ID")
+	private String factoryId;
+	/**宸ュ巶鍚嶇О*/
+	@Excel(name = "宸ュ巶鍚嶇О", width = 15)
+    @ApiModelProperty(value = "宸ュ巶鍚嶇О")
+	private String factoryName;
+	/**璁″垝鏈堜唤*/
+	@Excel(name = "璁″垝鏈堜唤", width = 15)
+    @ApiModelProperty(value = "璁″垝鏈堜唤")
+	private String monthPlan;
+	/**鏁伴噺*/
+	@Excel(name = "鏁伴噺", width = 15)
+    @ApiModelProperty(value = "鏁伴噺")
+	private String quantity;
+}
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamEquipmentMapper.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamEquipmentMapper.java
index 30d1106..984e76b 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamEquipmentMapper.java
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamEquipmentMapper.java
@@ -7,6 +7,7 @@
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
+import org.jeecg.modules.eam.dto.EchartsDto;
 import org.jeecg.modules.eam.entity.EamEquipment;
 
 import java.util.List;
@@ -60,4 +61,11 @@
      */
     List<EamEquipment> selectThreeMaintenanceEquipmentList(@Param(Constants.WRAPPER) Wrapper<EamEquipment> queryWrapper);
 
+    /**
+     * 璁惧绠$悊棣栭〉
+     * @param ids
+     * @return
+     */
+    List<EchartsDto> echartsList(List<String> ids);
+
 }
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamFactorySecondMaintPlanMapper.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamFactorySecondMaintPlanMapper.java
new file mode 100644
index 0000000..b47bad4
--- /dev/null
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamFactorySecondMaintPlanMapper.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.EamFactorySecondMaintPlan;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 鈥滈椤佃溅闂翠簩淇濊鍒�
+ * @Author: jeecg-boot
+ * @Date:   2025-08-22
+ * @Version: V1.0
+ */
+public interface EamFactorySecondMaintPlanMapper extends BaseMapper<EamFactorySecondMaintPlan> {
+
+}
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamReportRepairMapper.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamReportRepairMapper.java
index 6c1eca2..7220a2a 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamReportRepairMapper.java
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamReportRepairMapper.java
@@ -36,4 +36,11 @@
      * @return
      */
     IPage<EamReportRepairDto> queryPageList(Page<EamReportRepairDto> page, @Param(Constants.WRAPPER) QueryWrapper<EamReportRepairDto> queryWrapper);
+
+    /**
+     * 鍒楄〃鏌ヨ
+     * @param queryWrapper
+     * @return
+     */
+    List<EamReportRepairDto> queryList(@Param(Constants.WRAPPER) QueryWrapper<EamReportRepairDto> queryWrapper);
 }
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentMapper.xml b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentMapper.xml
index bea93b0..b32141a 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentMapper.xml
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentMapper.xml
@@ -77,4 +77,52 @@
         on e.id = ext.id
         ${ew.customSqlSegment}
     </select>
+    <select id="echartsList" resultType="org.jeecg.modules.eam.dto.EchartsDto">
+        SELECT COUNT
+               ( t.technology_status ) AS "value",
+               item.item_text AS "name",
+               item.item_value AS "code",
+               ( SELECT COUNT ( a.id ) FROM eam_equipment_extend a WHERE a.technology_status IS NOT NULL
+                                                <if test="ids != null and ids != ''">
+                                                    AND a.id IN
+                                                    <foreach collection="ids" item="id" index="index" open="(" close=")" separator=",">
+                                                        #{id}
+                                                    </foreach>
+                                                </if>
+                                                                   ) AS "total",
+               concat (
+                       round(
+                               ISNULL (
+                                       COUNT ( t.id ) / ( SELECT COUNT ( a.id ) FROM eam_equipment_extend a WHERE a.technology_status IS NOT NULL
+                                                    <if test="ids != null and ids != ''">
+                                                        AND a.id IN
+                                                        <foreach collection="ids" item="id" index="index" open="(" close=")" separator=",">
+                                                            #{id}
+                                                        </foreach>
+                                                    </if>),
+                                       0
+                               ) * 100,
+                               2
+                       ),
+                       '%'
+               ) AS "percentage"
+        FROM
+            sys_dict c
+                LEFT JOIN sys_dict_item item ON c.id = item.dict_id
+                LEFT JOIN eam_equipment_extend t ON t.technology_status = item.item_value
+                <if test="ids != null and ids != ''">
+                    AND t.id IN
+                    <foreach collection="ids" item="id" index="index" open="(" close=")" separator=",">
+                        #{id}
+                    </foreach>
+                </if>
+        WHERE
+            c.dict_code = 'equipment_technology_status'
+        GROUP BY
+            item.item_text,
+            t.technology_status,
+            item.item_value
+        ORDER BY
+            item.item_value
+    </select>
 </mapper>
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamFactorySecondMaintPlanMapper.xml b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamFactorySecondMaintPlanMapper.xml
new file mode 100644
index 0000000..8218c89
--- /dev/null
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamFactorySecondMaintPlanMapper.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.EamFactorySecondMaintPlanMapper">
+
+</mapper>
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamReportRepairMapper.xml b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamReportRepairMapper.xml
index 036a908..a4d054b 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamReportRepairMapper.xml
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamReportRepairMapper.xml
@@ -61,4 +61,17 @@
         and aar.del_flag=0
         ${ew.customSqlSegment}
     </select>
+    <select id="queryList" resultType="org.jeecg.modules.eam.dto.EamReportRepairDto">
+        select wmo.*, e.equipment_code, e.equipment_name,e.equipment_model, e.installation_position,
+               aar.operation_certificate, power_off_restart, batch_first_piece, variable_factors,
+               variable_factors_value, execute_nc, accident_phenomenon, measure, causing_results
+        from eam_report_repair wmo
+                 inner join eam_equipment e
+                            on wmo.equipment_id = e.id
+                                and e.del_flag=0
+                 left join eam_report_accidents_register aar
+                           on wmo.id = aar.report_id
+                               and aar.del_flag=0
+            ${ew.customSqlSegment}
+    </select>
 </mapper>
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentService.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentService.java
index a10838d..fb8dd6a 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentService.java
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentService.java
@@ -1,6 +1,10 @@
 package org.jeecg.modules.eam.service;
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.eam.dto.EchartsDto;
 import org.jeecg.modules.eam.entity.EamEquipment;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.eam.request.EamEquipmentQuery;
@@ -82,4 +86,10 @@
      * 鑾峰彇鍙敓鎴愪笁淇濆伐鍗曠殑璁惧鍒楄〃
      */
     List<EamEquipment> selectThreeMaintenanceEquipmentList();
+
+    /**
+     * 璁惧绠$悊棣栭〉-鎶�鏈姸鎬�
+     * @return
+     */
+    List<EchartsDto> echartsList();
 }
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamFactorySecondMaintPlanService.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamFactorySecondMaintPlanService.java
new file mode 100644
index 0000000..d6982db
--- /dev/null
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamFactorySecondMaintPlanService.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.eam.service;
+
+import org.jeecg.modules.eam.entity.EamFactorySecondMaintPlan;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 鈥滈椤佃溅闂翠簩淇濊鍒�
+ * @Author: jeecg-boot
+ * @Date:   2025-08-22
+ * @Version: V1.0
+ */
+public interface IEamFactorySecondMaintPlanService extends IService<EamFactorySecondMaintPlan> {
+
+}
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamReportRepairService.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamReportRepairService.java
index c6252d3..66ac3ee 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamReportRepairService.java
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamReportRepairService.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.eam.dto.EamReportRepairDto;
+import org.jeecg.modules.eam.dto.EchartsDto;
 import org.jeecg.modules.eam.entity.*;
 import org.jeecg.modules.eam.request.EamReportRepairQuery;
 import org.jeecg.modules.eam.request.EamReportRepairRequest;
@@ -68,4 +69,9 @@
      */
     EamReportRepair reportRepairFromThirdMaintenance(String equipmentId, String reportUser, List<EamThirdMaintenanceOrderDetail> detailList);
 
+    /**
+     * 璁惧绠$悊棣栭〉-璁惧鎶ヤ慨鏁呴殰鎯呭喌
+     * @return
+     */
+    List<EchartsDto> reportRepairList();
 }
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java
index 20b1c9b..24afdf3 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java
@@ -15,6 +15,7 @@
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.eam.aspect.annotation.EquipmentHistoryLog;
 import org.jeecg.modules.eam.constant.*;
+import org.jeecg.modules.eam.dto.EchartsDto;
 import org.jeecg.modules.eam.entity.EamEquipment;
 import org.jeecg.modules.eam.entity.EamEquipmentExtend;
 import org.jeecg.modules.eam.mapper.EamEquipmentMapper;
@@ -428,6 +429,39 @@
     }
 
     /**
+     * 璁惧绠$悊棣栭〉-鎶�鏈姸鎬�
+     * @return
+     */
+    @Override
+    public List<EchartsDto> echartsList(){
+        QueryWrapper<EamEquipment> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("e.del_flag", CommonConstant.DEL_FLAG_0);
+        //鐢ㄦ埛鏁版嵁鏉冮檺
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        if (sysUser == null) {
+            return null;
+        }
+        if (StringUtils.isNotBlank(sysUser.getEamEquipmentIds())) {
+            //閫夋嫨浜嗚澶囷紝鏍规嵁璁惧id杩囨护璁惧
+            List<String> equipArr = Arrays.asList(sysUser.getEamEquipmentIds().split(","));
+            queryWrapper.in("e.equipment_code", equipArr);
+        } else {
+            //娌℃湁閫夋嫨璁惧锛屾牴鎹腑蹇冭繃婊よ澶�
+            List<BaseFactoryUser> baseFactoryUserList=baseFactoryUserService.
+                    list(new LambdaQueryWrapper<BaseFactoryUser>().eq(BaseFactoryUser::getUserId,sysUser.getId()));
+            if(!CollectionUtils.isEmpty(baseFactoryUserList)){
+                Set<String> factoryIds = baseFactoryUserList.stream().map(BaseFactoryUser::getFactoryId).collect(Collectors.toSet());
+                Set<String> factoryCode= baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getOrgCode).collect(Collectors.toSet());
+                queryWrapper.in("e.factory_org_code", factoryCode);
+            }else {
+                return null;
+            }
+        }
+        List<String> ids=this.baseMapper.queryList(queryWrapper).stream().map(EamEquipment::getId).collect(Collectors.toList());
+        return this.baseMapper.echartsList(ids);
+    }
+
+    /**
      * 鑾峰彇鎵�鏈夌殑浜х嚎id锛堝寘鍚墍鏈変笂绾э級
      */
     private void getAllProductionIds(List<MdcProduction> productionList, String productionId, List<String> allProductionIds) {
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamFactorySecondMaintPlanServiceImpl.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamFactorySecondMaintPlanServiceImpl.java
new file mode 100644
index 0000000..04ed629
--- /dev/null
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamFactorySecondMaintPlanServiceImpl.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.eam.service.impl;
+
+import org.jeecg.modules.eam.entity.EamFactorySecondMaintPlan;
+import org.jeecg.modules.eam.mapper.EamFactorySecondMaintPlanMapper;
+import org.jeecg.modules.eam.service.IEamFactorySecondMaintPlanService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 鈥滈椤佃溅闂翠簩淇濊鍒�
+ * @Author: jeecg-boot
+ * @Date:   2025-08-22
+ * @Version: V1.0
+ */
+@Service
+public class EamFactorySecondMaintPlanServiceImpl extends ServiceImpl<EamFactorySecondMaintPlanMapper, EamFactorySecondMaintPlan> implements IEamFactorySecondMaintPlanService {
+
+}
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportRepairServiceImpl.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportRepairServiceImpl.java
index 331183b..a3e0161 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportRepairServiceImpl.java
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportRepairServiceImpl.java
@@ -17,7 +17,9 @@
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.eam.aspect.annotation.EquipmentHistoryLog;
 import org.jeecg.modules.eam.constant.*;
+import org.jeecg.modules.eam.dto.EamRepairOrderDto;
 import org.jeecg.modules.eam.dto.EamReportRepairDto;
+import org.jeecg.modules.eam.dto.EchartsDto;
 import org.jeecg.modules.eam.entity.*;
 import org.jeecg.modules.eam.mapper.EamReportRepairMapper;
 import org.jeecg.modules.eam.request.EamReportRepairQuery;
@@ -37,6 +39,8 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -354,4 +358,103 @@
         eamEquipmentExtendService.updateEquipmentRepairStatus(entity.getEquipmentId(), EquipmentRepairStatus.WAIT_REPAIR.name());
         return entity;
     }
+
+    public List<EchartsDto> reportRepairList() {
+        List<EchartsDto> echartsDtoList = new ArrayList<>();
+
+        // 鐢ㄦ埛鏁版嵁鏉冮檺妫�鏌�
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        if (sysUser == null) {
+            return echartsDtoList; // 杩斿洖绌哄垪琛ㄨ�岄潪null
+        }
+
+        QueryWrapper<EamReportRepairDto> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("wmo.del_flag", CommonConstant.DEL_FLAG_0);
+
+        // 璁惧杩囨护閫昏緫
+        if (StringUtils.isNotBlank(sysUser.getEamEquipmentIds())) {
+            List<String> equipArr = Arrays.asList(sysUser.getEamEquipmentIds().split(","));
+            queryWrapper.in("e.equipment_code", equipArr);
+        } else {
+            List<BaseFactoryUser> baseFactoryUserList = baseFactoryUserService
+                    .list(new LambdaQueryWrapper<BaseFactoryUser>()
+                            .eq(BaseFactoryUser::getUserId, sysUser.getId()));
+
+            if (CollectionUtils.isEmpty(baseFactoryUserList)) {
+                return echartsDtoList; // 杩斿洖绌哄垪琛ㄨ�岄潪null
+            }
+
+            Set<String> factoryIds = baseFactoryUserList.stream()
+                    .map(BaseFactoryUser::getFactoryId)
+                    .collect(Collectors.toSet());
+
+            Set<String> factoryCodes = baseFactoryService.listByIds(factoryIds)
+                    .stream()
+                    .map(BaseFactory::getOrgCode)
+                    .collect(Collectors.toSet());
+
+            queryWrapper.in("e.factory_org_code", factoryCodes);
+        }
+
+        // 鑾峰彇鍩虹鏁版嵁
+        List<EamReportRepairDto> baseList = this.baseMapper.queryList(queryWrapper);
+        int totalCount = baseList.size();
+
+        // 鑾峰彇鍋滄満鏁伴噺
+        int shutdownCount = this.baseMapper.queryList(
+                queryWrapper.clone().eq("breakdown_flag", "1")
+        ).size();
+
+        // 璁$畻杩愯鏁伴噺
+        int runningCount = totalCount - shutdownCount;
+
+        // 澶勭悊闆跺�兼儏鍐�
+        if (totalCount == 0) {
+            // 娣诲姞鎵�鏈夐浂鍊兼暟鎹」
+            addZeroValueData(echartsDtoList, "鎶ヤ慨鎬绘暟", "bx");
+            addZeroValueData(echartsDtoList, "鍋滄満鎬绘暟", "stop");
+            addZeroValueData(echartsDtoList, "杩愯鎬绘暟", "run");
+            return echartsDtoList;
+        }
+
+        // 璁$畻鐧惧垎姣�
+        BigDecimal total = new BigDecimal(totalCount);
+        String bxPercentage = calculatePercentage(totalCount, BigDecimal.valueOf(totalCount));
+        String stopPercentage = calculatePercentage(shutdownCount, BigDecimal.valueOf(totalCount));
+        String runPercentage = calculatePercentage(runningCount, BigDecimal.valueOf(totalCount));
+
+        // 鏋勫缓杩斿洖鏁版嵁
+        echartsDtoList.add(createEchartsDto("鎶ヤ慨鎬绘暟", "bx", totalCount, bxPercentage));
+        echartsDtoList.add(createEchartsDto("鍋滄満鎬绘暟", "stop", shutdownCount, stopPercentage));
+        echartsDtoList.add(createEchartsDto("杩愯鎬绘暟", "run", runningCount, runPercentage));
+
+        return echartsDtoList;
+    }
+
+    // 杈呭姪鏂规硶锛氭坊鍔犻浂鍊兼暟鎹�
+    private void addZeroValueData(List<EchartsDto> list, String name, String code) {
+        EchartsDto dto = new EchartsDto();
+        dto.setName(name);
+        dto.setCode(code);
+        dto.setValue("0");
+        dto.setPercentage("0.00%");
+        list.add(dto);
+    }
+
+    // 杈呭姪鏂规硶锛氳绠楃櫨鍒嗘瘮
+    private String calculatePercentage(int value, BigDecimal total) {
+        return new BigDecimal(value)
+                .multiply(new BigDecimal(100))
+                .divide(total, 2, RoundingMode.HALF_UP) + "%";
+    }
+
+    // 杈呭姪鏂规硶锛氬垱寤篍chartsDto瀵硅薄
+    private EchartsDto createEchartsDto(String name, String code, int value, String percentage) {
+        EchartsDto dto = new EchartsDto();
+        dto.setName(name);
+        dto.setCode(code);
+        dto.setValue(String.valueOf(value));
+        dto.setPercentage(percentage);
+        return dto;
+    }
 }
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamFactorySecondMaintPlanController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamFactorySecondMaintPlanController.java
new file mode 100644
index 0000000..b5e6fc8
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamFactorySecondMaintPlanController.java
@@ -0,0 +1,167 @@
+package org.jeecg.modules.eam.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.eam.entity.EamFactorySecondMaintPlan;
+import org.jeecg.modules.eam.service.IEamFactorySecondMaintPlanService;
+import java.util.Date;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.system.base.controller.JeecgController;
+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.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+ /**
+ * @Description: 鈥滈椤佃溅闂翠簩淇濊鍒�
+ * @Author: jeecg-boot
+ * @Date:   2025-08-22
+ * @Version: V1.0
+ */
+@Slf4j
+@Api(tags="鈥滈椤佃溅闂翠簩淇濊鍒�")
+@RestController
+@RequestMapping("/eam/eamFactorySecondMaintPlan")
+public class EamFactorySecondMaintPlanController extends JeecgController<EamFactorySecondMaintPlan, IEamFactorySecondMaintPlanService> {
+	@Autowired
+	private IEamFactorySecondMaintPlanService eamFactorySecondMaintPlanService;
+
+	/**
+	 * 鍒嗛〉鍒楄〃鏌ヨ
+	 *
+	 * @param eamFactorySecondMaintPlan
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	@AutoLog(value = "鈥滈椤佃溅闂翠簩淇濊鍒�-鍒嗛〉鍒楄〃鏌ヨ")
+	@ApiOperation(value="鈥滈椤佃溅闂翠簩淇濊鍒�-鍒嗛〉鍒楄〃鏌ヨ", notes="鈥滈椤佃溅闂翠簩淇濊鍒�-鍒嗛〉鍒楄〃鏌ヨ")
+	@GetMapping(value = "/list")
+	public Result<?> queryPageList(EamFactorySecondMaintPlan eamFactorySecondMaintPlan,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<EamFactorySecondMaintPlan> queryWrapper = QueryGenerator.initQueryWrapper(eamFactorySecondMaintPlan, req.getParameterMap());
+		Page<EamFactorySecondMaintPlan> page = new Page<EamFactorySecondMaintPlan>(pageNo, pageSize);
+		IPage<EamFactorySecondMaintPlan> pageList = eamFactorySecondMaintPlanService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+
+	/**
+	 * 娣诲姞
+	 *
+	 * @param eamFactorySecondMaintPlan
+	 * @return
+	 */
+	@AutoLog(value = "鈥滈椤佃溅闂翠簩淇濊鍒�-娣诲姞")
+	@ApiOperation(value="鈥滈椤佃溅闂翠簩淇濊鍒�-娣诲姞", notes="鈥滈椤佃溅闂翠簩淇濊鍒�-娣诲姞")
+	@PostMapping(value = "/add")
+	public Result<?> add(@RequestBody EamFactorySecondMaintPlan eamFactorySecondMaintPlan) {
+		eamFactorySecondMaintPlanService.save(eamFactorySecondMaintPlan);
+		return Result.OK("娣诲姞鎴愬姛锛�");
+	}
+
+	/**
+	 * 缂栬緫
+	 *
+	 * @param eamFactorySecondMaintPlan
+	 * @return
+	 */
+	@AutoLog(value = "鈥滈椤佃溅闂翠簩淇濊鍒�-缂栬緫")
+	@ApiOperation(value="鈥滈椤佃溅闂翠簩淇濊鍒�-缂栬緫", notes="鈥滈椤佃溅闂翠簩淇濊鍒�-缂栬緫")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<?> edit(@RequestBody EamFactorySecondMaintPlan eamFactorySecondMaintPlan) {
+		eamFactorySecondMaintPlanService.updateById(eamFactorySecondMaintPlan);
+		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) {
+		eamFactorySecondMaintPlanService.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.eamFactorySecondMaintPlanService.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) {
+		EamFactorySecondMaintPlan eamFactorySecondMaintPlan = eamFactorySecondMaintPlanService.getById(id);
+		return Result.OK(eamFactorySecondMaintPlan);
+	}
+
+  /**
+   * 瀵煎嚭excel
+   *
+   * @param request
+   * @param eamFactorySecondMaintPlan
+   */
+  @RequestMapping(value = "/exportXls")
+  public ModelAndView exportXls(HttpServletRequest request, EamFactorySecondMaintPlan eamFactorySecondMaintPlan) {
+      return super.exportXls(request, eamFactorySecondMaintPlan, EamFactorySecondMaintPlan.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, EamFactorySecondMaintPlan.class);
+  }
+
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamHomeController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamHomeController.java
new file mode 100644
index 0000000..bf90445
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamHomeController.java
@@ -0,0 +1,86 @@
+package org.jeecg.modules.eam.controller;
+
+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.modules.eam.dto.EchartsDto;
+import org.jeecg.modules.eam.entity.EamFactorySecondMaintPlan;
+import org.jeecg.modules.eam.service.IEamEquipmentService;
+import org.jeecg.modules.eam.service.IEamFactorySecondMaintPlanService;
+import org.jeecg.modules.eam.service.IEamReportRepairService;
+import org.jeecg.modules.eam.service.IEamThirdMaintenanceOrderService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author Lyh
+ * @Description: EAM棣栭〉鎺ュ彛
+ * @date 2024/3/13 14:27
+ */
+@Slf4j
+@Api(tags = "EAM棣栭〉鎺ュ彛")
+@RestController
+@RequestMapping("/eam/home")
+public class EamHomeController {
+    @Autowired
+    private IEamEquipmentService iEamEquipmentService;
+
+    @Autowired
+    private IEamReportRepairService iEamReportRepairService;
+
+    @Autowired
+    private IEamThirdMaintenanceOrderService iEamThirdMaintenanceOrderService;
+
+    @Autowired
+    private IEamFactorySecondMaintPlanService iEamFactorySecondMaintPlanService;
+
+    /**
+     * 璁惧绠$悊棣栭〉-鎶�鏈姸鎬佷笌璁惧鎶ヤ慨鏁呴殰鎯呭喌
+     * @param
+     * @return
+     */
+    @ApiOperation(value = "璁惧绠$悊棣栭〉-鎶�鏈姸鎬佷笌璁惧鎶ヤ慨鏁呴殰鎯呭喌", notes = "璁惧绠$悊棣栭〉-鎶�鏈姸鎬佷笌璁惧鎶ヤ慨鏁呴殰鎯呭喌")
+    @GetMapping(value = "/techornology")
+    public Result<?> techOrNology() {
+        //鎶�鏈姸鎬�
+        List<EchartsDto> echartsDtoList=iEamEquipmentService.echartsList();
+        //璁惧鎶ヤ慨鏁呴殰鎯呭喌
+        List<EchartsDto> echartsDtoList1=iEamReportRepairService.reportRepairList();
+        Map<String,Object> map=new HashMap<>();
+        map.put("jszt",echartsDtoList);
+        map.put("bxqk",echartsDtoList1);
+        return Result.ok(map);
+    }
+
+    /**
+     * 璁惧绠$悊棣栭〉-涓夌骇淇濆吇
+     * @param
+     * @return
+     */
+    @ApiOperation(value = "璁惧绠$悊棣栭〉-涓夌骇淇濆吇", notes = "璁惧绠$悊棣栭〉-涓夌骇淇濆吇")
+    @GetMapping(value = "/maintenance")
+    public Result<?> maintenance() {
+        //涓夌骇淇濆吇
+        List<EchartsDto> echartsDtoList = iEamThirdMaintenanceOrderService.selectList();
+        return Result.ok(echartsDtoList);
+    }
+
+    /**
+     * 璁惧绠$悊棣栭〉-浜屼繚鍒楄〃
+     * @param
+     */
+    @ApiOperation(value = "璁惧绠$悊棣栭〉-浜屼繚鍒楄〃", notes = "璁惧绠$悊棣栭〉-浜屼繚鍒楄〃")
+    @GetMapping(value = "/secondmaintenance")
+    public Result<?> secondmaintenance() {
+        //浜岀骇淇濆吇
+        List<EamFactorySecondMaintPlan> echartsDtoList = iEamFactorySecondMaintPlanService.list();
+        return Result.ok(echartsDtoList);
+    }
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamThirdMaintenanceOrderMapper.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamThirdMaintenanceOrderMapper.java
index 54e5579..677695a 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamThirdMaintenanceOrderMapper.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamThirdMaintenanceOrderMapper.java
@@ -31,6 +31,11 @@
 
     /**
      * 鍒楄〃鏌ヨ
+     */
+    List<EamThirdMaintenanceOrder> queryAsList(@Param(Constants.WRAPPER) QueryWrapper<EamThirdMaintenanceOrder> queryWrapper);
+
+    /**
+     * 鍒楄〃鏌ヨ
      * @param queryWrapper
      * @return
      */
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamThirdMaintenanceOrderMapper.xml b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamThirdMaintenanceOrderMapper.xml
index e89ebba..498f3ef 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamThirdMaintenanceOrderMapper.xml
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamThirdMaintenanceOrderMapper.xml
@@ -49,4 +49,15 @@
                  LEFT JOIN eam_base_factory f ON f.org_code = SUBSTRING ( e.factory_org_code , 1, 6 )
             ${ew.customSqlSegment}
     </select>
+    <select id="queryAsList" resultType="org.jeecg.modules.eam.entity.EamThirdMaintenanceOrder">
+        select wmo.*, e.equipment_code, e.equipment_name, e.equipment_model,f.process_instance_id as 'procInstId',
+               f.process_definition_key,
+               f.process_definition_id,
+               f.process_instance_id
+        from eam_third_maintenance_order wmo
+                 inner join eam_equipment e
+                            on wmo.equipment_id = e.id
+                 left join flow_my_business f on f.data_id=wmo.id
+            ${ew.customSqlSegment}
+    </select>
 </mapper>
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamThirdMaintenanceOrderService.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamThirdMaintenanceOrderService.java
index 3c74110..ba1132b 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamThirdMaintenanceOrderService.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamThirdMaintenanceOrderService.java
@@ -6,6 +6,7 @@
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.eam.dto.EamThirdMaintenanceOrderExport;
 import org.jeecg.modules.eam.dto.EamThirdMaintenanceOrderExportYj;
+import org.jeecg.modules.eam.dto.EchartsDto;
 import org.jeecg.modules.eam.entity.EamThirdMaintenanceOrder;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.eam.request.EamThirdMaintenanceQuery;
@@ -102,4 +103,10 @@
      * 鎵归噺鎵撳嵃鍔犲伐璁惧涓夌骇淇濆吇楠屾敹鍗�
      */
     List<EamThirdMaintenanceOrderExport> exportAcceptance(String ids);
+
+    /**
+     * 璁惧绠$悊棣栭〉-涓変繚璁″垝
+     * @return
+     */
+    List<EchartsDto> selectList();
 }
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceOrderServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceOrderServiceImpl.java
index be80f73..ffdd2f4 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceOrderServiceImpl.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceOrderServiceImpl.java
@@ -27,6 +27,7 @@
 import org.jeecg.modules.eam.dto.EamThirdMaintenanceOrderExport;
 import org.jeecg.modules.eam.dto.EamThirdMaintenanceOrderExport;
 import org.jeecg.modules.eam.dto.EamThirdMaintenanceOrderExportYj;
+import org.jeecg.modules.eam.dto.EchartsDto;
 import org.jeecg.modules.eam.entity.*;
 import org.jeecg.modules.eam.mapper.EamThirdMaintenanceOrderMapper;
 import org.jeecg.modules.eam.request.EamThirdMaintenanceBaseResponse;
@@ -54,6 +55,7 @@
 
 import javax.annotation.Resource;
 import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -700,6 +702,84 @@
     }
 
     /**
+     * 璁惧绠$悊棣栭〉-涓変繚璁″垝
+     * @return
+     */
+    @Override
+    public List<EchartsDto> selectList() {
+        List<EchartsDto> echartsDtos = new ArrayList<>();
+
+        // 鐢ㄦ埛鏁版嵁鏉冮檺妫�鏌�
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        if (sysUser == null) {
+            return echartsDtos; // 杩斿洖绌哄垪琛ㄨ�岄潪null
+        }
+
+        QueryWrapper<EamThirdMaintenanceOrder> queryWrapper = new QueryWrapper<>();
+
+        // 璁惧杩囨护閫昏緫
+        if (StringUtils.isNotBlank(sysUser.getEamEquipmentIds())) {
+            List<String> equipArr = Arrays.asList(sysUser.getEamEquipmentIds().split(","));
+            queryWrapper.in("e.equipment_code", equipArr);
+        } else {
+            List<BaseFactoryUser> baseFactoryUserList = baseFactoryUserService
+                    .list(new LambdaQueryWrapper<BaseFactoryUser>()
+                            .eq(BaseFactoryUser::getUserId, sysUser.getId()));
+
+            if (CollectionUtils.isEmpty(baseFactoryUserList)) {
+                return echartsDtos; // 杩斿洖绌哄垪琛ㄨ�岄潪null
+            }
+
+            Set<String> factoryIds = baseFactoryUserList.stream()
+                    .map(BaseFactoryUser::getFactoryId)
+                    .collect(Collectors.toSet());
+
+            Set<String> factoryCodes = baseFactoryService.listByIds(factoryIds)
+                    .stream()
+                    .map(BaseFactory::getOrgCode)
+                    .collect(Collectors.toSet());
+
+            queryWrapper.in("e.factory_org_code", factoryCodes);
+        }
+
+        // 鑾峰彇褰撳墠骞存湀鍜屼笅涓や釜鏈堢殑骞存湀瀛楃涓�
+        String currentYearMonth = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM"));
+        String nextMonth = LocalDate.now().plusMonths(1).format(DateTimeFormatter.ofPattern("yyyy-MM"));
+        String nextNextMonth = LocalDate.now().plusMonths(2).format(DateTimeFormatter.ofPattern("yyyy-MM"));
+
+        // 鏈湀涓変繚璁″垝鎬绘暟
+        List<EamThirdMaintenanceOrder> currentMonthOrders = this.baseMapper.queryAsList(
+                queryWrapper.clone().like("maintenance_date", currentYearMonth)
+        );
+        echartsDtos.add(new EchartsDto("bysbzs", "鏈湀涓変繚璁″垝鎬绘暟",
+                String.valueOf(currentMonthOrders.size()), null, null));
+
+        // 鏈湀瀹屾垚
+        List<EamThirdMaintenanceOrder> currentMonthCompleted = this.baseMapper.queryAsList(
+                queryWrapper.clone().like("maintenance_date", currentYearMonth)
+                        .eq("maintenance_status", ThirdMaintenanceStatusEnum.COMPLETE.name())
+        );
+        echartsDtos.add(new EchartsDto("bwc", "鏈湀瀹屾垚",
+                String.valueOf(currentMonthCompleted.size()), null, null));
+
+        // 涓嬫湀涓変繚璁″垝
+        List<EamThirdMaintenanceOrder> nextMonthOrders = this.baseMapper.queryAsList(
+                queryWrapper.clone().like("maintenance_date", nextMonth)
+        );
+        echartsDtos.add(new EchartsDto("xysb", "涓嬫湀涓変繚璁″垝",
+                String.valueOf(nextMonthOrders.size()), null, null));
+
+        // 涓嬩笅鏈堜笁淇濊鍒�
+        List<EamThirdMaintenanceOrder> nextNextMonthOrders = this.baseMapper.queryAsList(
+                queryWrapper.clone().like("maintenance_date", nextNextMonth)
+        );
+        echartsDtos.add(new EchartsDto("xxysb", "涓嬩笅鏈堜笁淇濊鍒�",
+                String.valueOf(nextNextMonthOrders.size()), null, null));
+
+        return echartsDtos;
+    }
+
+    /**
      * 鏇存柊宸ュ崟鐘舵��
      */
     private void updateOrderStatus(Result result, EamThirdMaintenanceRequest request, EamThirdMaintenanceOrder order, LoginUser user) {

--
Gitblit v1.9.3