lyh
20 小时以前 582bb2627712f66157b5608c8f5798775fc38266
设备管理首页
已添加8个文件
已修改12个文件
761 ■■■■■ 文件已修改
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/EchartsDto.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamFactorySecondMaintPlan.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamEquipmentMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamFactorySecondMaintPlanMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamReportRepairMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentMapper.xml 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamFactorySecondMaintPlanMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamReportRepairMapper.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamFactorySecondMaintPlanService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamReportRepairService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamFactorySecondMaintPlanServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportRepairServiceImpl.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamFactorySecondMaintPlanController.java 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamHomeController.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamThirdMaintenanceOrderMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamThirdMaintenanceOrderMapper.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamThirdMaintenanceOrderService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamThirdMaintenanceOrderServiceImpl.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
}
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;
}
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);
}
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> {
}
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);
}
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>
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>
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>
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();
}
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> {
}
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();
}
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) {
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 {
}
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) + "%";
    }
    // è¾…助方法:创建EchartsDto对象
    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;
    }
}
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);
  }
}
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);
    }
}
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
     */
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>
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();
}
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) {