hyingbo
2 天以前 6da57b610d97be3f79084d43440e7823d707b249
设备管理调整
已添加1个文件
已修改8个文件
268 ■■■■■ 文件已修改
db/更新说明/更新说明.md 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/EquipmentCategoryStatistics.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamEquipmentMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentMapper.xml 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentController.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/SysCategory.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
db/¸üÐÂ˵Ã÷/¸üÐÂ˵Ã÷.md
@@ -1,2 +1,8 @@
20250904
同步涉密网设备管理模块代码
同步涉密网设备管理模块代码
设备管理:
1. äºŒä¿çŠ¶æ€ã€ä¸‰ä¿çŠ¶æ€æ·»åŠ å·²è¿‡æœŸç±»åž‹ï¼Œå®šæ—¶ä»»åŠ¡è®¾ç½®çŠ¶æ€è°ƒæ•´ä¸ºå·²è¿‡æœŸ
2. è®¾å¤‡ç®¡ç†-技术状态字典中的“合格”调整为“合格/完好”,来源国家调整为选择框
3. è®¾å¤‡ç®¡ç†-台账页面添加台账统计,统计结果可导出
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/EquipmentCategoryStatistics.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,76 @@
package org.jeecg.modules.eam.dto;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
import java.math.BigDecimal;
@Data
public class EquipmentCategoryStatistics {
    /**
     * è®¾å¤‡ç§ç±»
     */
    @Excel(name = "设备种类", width = 15, orderNum = "1")
    private String equipmentType;
    /**
     * è®¾å¤‡æ€»æ•°
     */
    @Excel(name = "设备总数", width = 15, orderNum = "2")
    private Integer equipmentCount;
    /**
     * æ€»åŽŸå€¼
     */
    @Excel(name = "总原值", width = 15, orderNum = "3")
    private BigDecimal originalValue;
    /**
     * é«˜ç²¾åº¦æ€»æ•°
     */
    @Excel(name = "高精度总数", width = 15, orderNum = "4")
    private Integer highPrecisionCount;
    /**
     * é«˜ç²¾åº¦åŽŸå€¼
     */
    @Excel(name = "高精度原值", width = 15, orderNum = "5")
    private BigDecimal highPrecisionOriginalValue;
    /**
     * å›½äº§æ€»æ•°
     */
    @Excel(name = "国产总数", width = 15, orderNum = "6")
    private Integer domesticCount;
    /**
     * å›½äº§åŽŸå€¼
     */
    @Excel(name = "国产原值", width = 15, orderNum = "7")
    private BigDecimal domesticOriginalValue;
    /**
     * è¿›å£æ€»æ•°
     */
    @Excel(name = "进口总数", width = 15, orderNum = "8")
    private Integer importCount;
    /**
     * è¿›å£åŽŸå€¼
     */
    @Excel(name = "进口原值", width = 15, orderNum = "9")
    private BigDecimal importOriginalValue;
    /**
     * å®Œå¥½æ€»æ•°
     */
    @Excel(name = "完好总数", width = 15, orderNum = "10")
    private Integer intactCount;
    /**
     * å®Œå¥½åŽŸå€¼
     */
    @Excel(name = "完好原值", width = 15, orderNum = "11")
    private BigDecimal intactOriginalValue;
}
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java
@@ -142,8 +142,9 @@
    /**
     * æ¥æºå›½å®¶
     */
    @Excel(name = "来源国家", width = 25, orderNum = "14")
    @Excel(name = "来源国家", width = 25, dicCode = "source_country", orderNum = "14")
    @ApiModelProperty(value = "来源国家")
    @Dict(dicCode = "source_country")
    private String originCountry;
    /**
     * è®¾å¤‡ä¾›åº”商
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamEquipmentMapper.java
@@ -1,5 +1,6 @@
package org.jeecg.modules.eam.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -7,6 +8,7 @@
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.jeecg.modules.eam.entity.EamEquipment;
import org.jeecg.modules.system.entity.SysCategory;
import java.util.List;
@@ -32,4 +34,11 @@
     * @return
     */
    IPage<EamEquipment> queryPageList(IPage<EamEquipment> page, @Param(Constants.WRAPPER) Wrapper<EamEquipment> queryWrapper);
    @InterceptorIgnore(
            tenantLine = "true",   // å¿½ç•¥å¤šç§Ÿæˆ·æ¡ä»¶
            blockAttack = "true", // ç»•过全表操作检查
            illegalSql = "true"   // ç¦ç”¨ SQL æ³¨å…¥æ£€æŸ¥
    )
    List<SysCategory> getCategoryTypeMap();
}
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentMapper.xml
@@ -9,4 +9,58 @@
        on e.id = ext.id
        ${ew.customSqlSegment}
    </select>
    <select id="getCategoryTypeMap" resultType="org.jeecg.modules.system.entity.SysCategory">
        WITH Level2Nodes AS (
            SELECT
                id AS level_id,
                name,
                2 AS node_level
            FROM sys_category
            WHERE pid IN (SELECT id FROM sys_category WHERE pid = '0')
        ),
             Level3Nodes AS (
                 SELECT
                     tn.id AS level_id,
                     tn.name,
                     3 AS node_level
                 FROM sys_category tn
                          INNER JOIN Level2Nodes l2 ON tn.pid = l2.level_id
             ),
             TargetLevels AS (
                 SELECT level_id, node_level, name FROM Level2Nodes
                 UNION ALL
                 SELECT level_id, node_level, name FROM Level3Nodes
             ),
             NodeHierarchy AS (
                 SELECT
                     tl.level_id AS root_id,
                     tl.name,
                     yt.id AS node_id,
                     yt.code AS node_code
                 FROM TargetLevels tl
                          INNER JOIN sys_category yt ON yt.id = tl.level_id
                 UNION ALL
                 SELECT
                     nh.root_id,
                     nh.name,
                     yt.id AS node_id,
                     yt.code AS node_code
                 FROM sys_category yt
                          INNER JOIN NodeHierarchy nh ON yt.pid = nh.node_id
             )
        SELECT
            root_id AS id,
            name,
            STUFF((
                      SELECT ',' + node_code
                      FROM NodeHierarchy nh2
                      WHERE nh2.root_id = nh1.root_id
                      FOR XML PATH(''), TYPE
                ).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS childCodes
        FROM NodeHierarchy nh1
        GROUP BY root_id, name
        ORDER BY root_id
    </select>
</mapper>
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentService.java
@@ -1,12 +1,15 @@
package org.jeecg.modules.eam.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.jeecg.modules.eam.dto.EquipmentCategoryStatistics;
import org.jeecg.modules.eam.entity.EamEquipment;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.eam.request.EamEquipmentQuery;
import org.jeecg.modules.eam.vo.EamEquipmentTree;
import org.jeecg.modules.eam.vo.EquipmentSearchResult;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
@@ -52,4 +55,8 @@
     * @return
     */
    EamEquipment selectByEquipmentCode(String equipmentCode);
    List<EquipmentCategoryStatistics> queryLedgerStatistics();
    ModelAndView exportLedgerStatisticsXls(HttpServletRequest request, Class<EquipmentCategoryStatistics> equipmentCategoryStatisticsClass, String å°è´¦ç»Ÿè®¡);
}
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java
@@ -4,8 +4,11 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.compress.utils.Lists;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.constant.CommonConstant;
@@ -17,6 +20,7 @@
import org.jeecg.modules.eam.constant.EquipmentMaintenanceStatus;
import org.jeecg.modules.eam.constant.EquipmentOperationTagEnum;
import org.jeecg.modules.eam.constant.EquipmentRepairStatus;
import org.jeecg.modules.eam.dto.EquipmentCategoryStatistics;
import org.jeecg.modules.eam.entity.EamEquipment;
import org.jeecg.modules.eam.entity.EamEquipmentExtend;
import org.jeecg.modules.eam.mapper.EamEquipmentMapper;
@@ -27,12 +31,20 @@
import org.jeecg.modules.eam.vo.EamEquipmentTree;
import org.jeecg.modules.eam.vo.EquipmentSearchResult;
import org.jeecg.modules.system.entity.MdcProduction;
import org.jeecg.modules.system.entity.SysCategory;
import org.jeecg.modules.system.service.IMdcProductionService;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -54,6 +66,9 @@
    private IEamEquipmentExtendService equipmentExtendService;
    @Autowired
    private IMdcProductionService mdcProductionService;
    @Value("${jeecg.path.upload}")
    private String upLoadPath;
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -260,6 +275,75 @@
        return eamEquipmentMapper.selectOne(queryWrapper);
    }
    @Override
    public List<EquipmentCategoryStatistics> queryLedgerStatistics() {
        List<EquipmentCategoryStatistics> list = Lists.newArrayList();
        //获取所有已设置设备类别的设备信息
        List<EamEquipment> equipmentList = this.list(new LambdaQueryWrapper<EamEquipment>().isNotNull(EamEquipment::getEquipmentType));
        //获取分类字典二级、三级以下包含当前分类的所有分类id
        List<SysCategory> categoryTypeMap = eamEquipmentMapper.getCategoryTypeMap();
        if (CollectionUtils.isEmpty(equipmentList) || CollectionUtils.isEmpty(categoryTypeMap)) {
            return list;
        }
        for (SysCategory sysCategory : categoryTypeMap) {
            List<EamEquipment> eamEquipmentList = equipmentList.stream().filter(eamEquipment -> Arrays.asList(sysCategory.getChildCodes().split(StringPool.COMMA)).contains(eamEquipment.getEquipmentType())).collect(Collectors.toList());
            if (CollectionUtils.isEmpty(eamEquipmentList)) {
                continue;
            }
            EquipmentCategoryStatistics statistics = new EquipmentCategoryStatistics();
            statistics.setEquipmentType(sysCategory.getName());
            //设置设备总数
            statistics.setEquipmentCount(eamEquipmentList.size());
            statistics.setOriginalValue(eamEquipmentList.stream().filter(eamEquipment -> eamEquipment.getOriginalValue() != null).map(EamEquipment::getOriginalValue).reduce(BigDecimal.ZERO, BigDecimal::add));
            //设置高精度信息
            List<EamEquipment> equipmentCategoryList = eamEquipmentList.stream().filter(eamEquipment -> "JMSB".equals(eamEquipment.getEquipmentCategory())).collect(Collectors.toList());
            statistics.setHighPrecisionCount(CollectionUtils.isNotEmpty(equipmentCategoryList) ? equipmentCategoryList.size() : 0);
            statistics.setHighPrecisionOriginalValue(CollectionUtils.isNotEmpty(equipmentCategoryList) ? equipmentCategoryList.stream().map(eamEquipment -> eamEquipment.getOriginalValue() != null ? eamEquipment.getOriginalValue() : BigDecimal.ZERO).reduce(BigDecimal.ZERO, BigDecimal::add) : BigDecimal.ZERO);
            //设置国产信息
            List<EamEquipment> equipmentDomesticList = eamEquipmentList.stream().filter(eamEquipment -> "china".equals(eamEquipment.getOriginCountry())).collect(Collectors.toList());
            statistics.setDomesticCount(CollectionUtils.isNotEmpty(equipmentDomesticList) ? equipmentDomesticList.size() : 0);
            statistics.setDomesticOriginalValue(CollectionUtils.isNotEmpty(equipmentDomesticList) ? equipmentDomesticList.stream().map(eamEquipment -> eamEquipment.getOriginalValue() != null ? eamEquipment.getOriginalValue() : BigDecimal.ZERO).reduce(BigDecimal.ZERO, BigDecimal::add) : BigDecimal.ZERO);
            //设置进口信息
            List<EamEquipment> equipmentImportList = eamEquipmentList.stream().filter(eamEquipment -> !"china".equals(eamEquipment.getOriginCountry())).collect(Collectors.toList());
            statistics.setImportCount(CollectionUtils.isNotEmpty(equipmentImportList) ? equipmentImportList.size() : 0);
            statistics.setImportOriginalValue(CollectionUtils.isNotEmpty(equipmentImportList) ? equipmentImportList.stream().map(eamEquipment -> eamEquipment.getOriginalValue() != null ? eamEquipment.getOriginalValue() : BigDecimal.ZERO).reduce(BigDecimal.ZERO, BigDecimal::add) : BigDecimal.ZERO);
            //设置完好信息
            List<EamEquipment> equipmentIntactList = eamEquipmentList.stream().filter(eamEquipment -> StringPool.ONE.equals(eamEquipment.getTechnologyStatus())).collect(Collectors.toList());
            statistics.setIntactCount(CollectionUtils.isNotEmpty(equipmentIntactList) ? equipmentIntactList.size() : 0);
            statistics.setIntactOriginalValue(CollectionUtils.isNotEmpty(equipmentIntactList) ? equipmentIntactList.stream().map(eamEquipment -> eamEquipment.getOriginalValue() != null ? eamEquipment.getOriginalValue() : BigDecimal.ZERO).reduce(BigDecimal.ZERO, BigDecimal::add) : BigDecimal.ZERO);
            list.add(statistics);
        }
        return list;
    }
    @Override
    public ModelAndView exportLedgerStatisticsXls(HttpServletRequest request, Class<EquipmentCategoryStatistics> clazz, String title) {
        // èŽ·å–å¯¼å‡ºäºº
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        // Step.2 èŽ·å–å¯¼å‡ºæ•°æ®
        List<EquipmentCategoryStatistics> exportList = queryLedgerStatistics();
        // Step.3 AutoPoi å¯¼å‡ºExcel
        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
        //此处设置的filename无效 ,前端会重更新设置一下
        mv.addObject(NormalExcelConstants.FILE_NAME, title);
        mv.addObject(NormalExcelConstants.CLASS, clazz);
        //update-begin--Author:liusq  Date:20210126 for:图片导出报错,ImageBasePath未设置--------------------
        ExportParams exportParams = new ExportParams(title + "报表", "导出人:" + sysUser.getRealname(), title);
        exportParams.setImageBasePath(upLoadPath);
        //update-end--Author:liusq  Date:20210126 for:图片导出报错,ImageBasePath未设置----------------------
        mv.addObject(NormalExcelConstants.PARAMS, exportParams);
        mv.addObject(NormalExcelConstants.DATA_LIST, exportList);
        return mv;
    }
    /**
     * èŽ·å–æ‰€æœ‰çš„äº§çº¿id(包含所有上级)
     */
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentController.java
@@ -18,6 +18,7 @@
import org.jeecg.modules.eam.entity.EamEquipment;
import org.jeecg.modules.eam.entity.EamEquipmentExtend;
import org.jeecg.modules.eam.request.EamEquipmentQuery;
import org.jeecg.modules.eam.dto.EquipmentCategoryStatistics;
import org.jeecg.modules.eam.service.IEamEquipmentExtendService;
import org.jeecg.modules.eam.service.IEamEquipmentService;
import org.jeecg.modules.eam.vo.EamEquipmentTree;
@@ -85,6 +86,29 @@
    }
    /**
     * è®¾å¤‡å°è´¦-台账统计
     *
     * @return
     */
//    @AutoLog(value = "设备台账-分页列表查询")
    @ApiOperation(value = "设备台账-台账统计", notes = "设备台账-台账统计")
    @GetMapping(value = "/queryLedgerStatistics")
    public Result<?> queryLedgerStatistics() {
        List<EquipmentCategoryStatistics> list = eamEquipmentService.queryLedgerStatistics();
        return Result.OK(list);
    }
    /**
     * å¯¼å‡ºå°è´¦ç»Ÿè®¡excel
     *
     * @param request
     */
    @RequestMapping(value = "/exportLedgerStatisticsXls")
    public ModelAndView exportLedgerStatisticsXls(HttpServletRequest request) {
        return eamEquipmentService.exportLedgerStatisticsXls(request, EquipmentCategoryStatistics.class, "台账统计");
    }
    /**
     * æ·»åŠ 
     *
     * @param eamEquipment
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/SysCategory.java
@@ -86,6 +86,9 @@
    private String parentCode;
    @TableField(exist = false)
    private String childCodes;
    @TableField(exist = false)
    private List<SysCategory> children;
    @Override