From 25a0ff7d2398f5b11b85549097cd20446e51f0ce Mon Sep 17 00:00:00 2001
From: ZKBH <1113799@qq.com>
Date: 星期四, 04 九月 2025 11:17:30 +0800
Subject: [PATCH] 倍率统计服务

---
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/EquipmentMagnificationJob.java                     |   57 ++++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentMagnificationService.java         |   20 ++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDriveTypeParamConfigService.java           |    3 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentMagnificationServiceImpl.java |  204 ++++++++++++++++++++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentMagnification.java                  |   50 +++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMagnificationMapper.java            |   27 +++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentWorkLineService.java              |    3 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDriveTypeParamConfigServiceImpl.java   |   12 +
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMagnificationMapper.xml         |   33 +++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentMagnificationController.java    |   51 +++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcEquipmentMagnificationVo.java                    |   34 +++
 11 files changed, 494 insertions(+), 0 deletions(-)

diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentMagnificationController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentMagnificationController.java
new file mode 100644
index 0000000..b1703bc
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentMagnificationController.java
@@ -0,0 +1,51 @@
+package org.jeecg.modules.mdc.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.modules.mdc.entity.MdcEquipmentMagnification;
+import org.jeecg.modules.mdc.service.IMdcEquipmentMagnificationService;
+import org.jeecg.modules.mdc.vo.MdcEquipmentMagnificationVo;
+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.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+
+@Slf4j
+@Api(tags = "鍊嶇巼缁熻")
+@RestController
+@RequestMapping("/mdc/magnification")
+public class MdcEquipmentMagnificationController extends JeecgController<MdcEquipmentMagnification, IMdcEquipmentMagnificationService> {
+
+
+    /**
+     * 鍒嗛〉鍒楄〃鏌ヨ
+     *
+     * @param magnificationVo
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    @AutoLog(value = "鍒嗛〉鍒楄〃鏌ヨ")
+    @ApiOperation(value = "鍒嗛〉鍒楄〃鏌ヨ", notes = "鍒嗛〉鍒楄〃鏌ヨ")
+    @GetMapping(value = "/list")
+    public Result<IPage<MdcEquipmentMagnification>> queryPageList(MdcEquipmentMagnificationVo magnificationVo,
+                                                                  @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                                  @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                                  HttpServletRequest req) {
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        String userId = user.getId();
+        IPage<MdcEquipmentMagnification> pageList = service.pageList(userId,magnificationVo,pageNo, pageSize, req);
+        return Result.OK(pageList);
+    }
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentMagnification.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentMagnification.java
new file mode 100644
index 0000000..3261bc8
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentMagnification.java
@@ -0,0 +1,50 @@
+package org.jeecg.modules.mdc.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@TableName("mdc_equipment_magnification")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "mdc_equipment_magnification瀵硅薄", description = "鍊嶇巼缁熻")
+public class MdcEquipmentMagnification implements Serializable {
+    private static final long serialVersionUID = 4440281782659062056L;
+
+    /**
+     * 涓婚敭
+     */
+    private String id;
+    private String equipmentId;
+    //涓昏酱鍊嶇巼   鍊煎拰
+    private BigDecimal spindlebeilvValue;
+    //涓昏酱鍊嶇巼 鏁伴噺
+    private Integer spindlebeilvNumber;
+    //涓昏酱鍊嶇巼   鏁伴噺
+    private BigDecimal feedbeilvValue;
+    //杩涚粰鍊嶇巼   鏁伴噺
+    private Integer feedbeilvNumber;
+    //  涓昏酱鍊嶇巼骞冲潎鍊�
+    private BigDecimal spindlebeilv = new BigDecimal(0);
+    //杩涚粰鍊嶇巼骞冲潎鍊�
+    private BigDecimal feedbeilv = new BigDecimal(0);
+    //鏈夋晥鏃ユ湡
+    @ApiModelProperty(value = "鏈夋晥鏃ユ湡")
+    private String theDate;
+    //鍒涘缓鏃堕棿
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/EquipmentMagnificationJob.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/EquipmentMagnificationJob.java
new file mode 100644
index 0000000..292fd2a
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/EquipmentMagnificationJob.java
@@ -0,0 +1,57 @@
+package org.jeecg.modules.mdc.job;
+
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.util.DateUtils;
+import org.jeecg.modules.mdc.service.IMdcEquipmentMagnificationService;
+import org.jeecg.modules.mdc.util.ThrowableUtil;
+import org.jeecg.modules.quartz.entity.QuartzJob;
+import org.jeecg.modules.quartz.entity.SysQuartzLog;
+import org.jeecg.modules.quartz.service.IQuartzJobService;
+import org.jeecg.modules.quartz.service.ISysQuartzLogService;
+import org.jeecg.modules.system.service.ISysAnnouncementService;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+@Slf4j
+public class EquipmentMagnificationJob implements Job {
+
+    @Resource
+    private IMdcEquipmentMagnificationService mdcEquipmentMagnificationService;
+
+    @Resource
+    private ISysQuartzLogService sysQuartzLogService;
+
+    @Resource
+    private IQuartzJobService quartzJobService;
+
+    @Resource
+    private ISysAnnouncementService sysAnnouncementService;
+
+    @Override
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        SysQuartzLog quartzLog = new SysQuartzLog();
+        quartzLog.setCreateTime(new Date());
+        List<QuartzJob> byJobClassName = this.quartzJobService.findByJobClassName(this.getClass().getName());
+        if (byJobClassName != null && !byJobClassName.isEmpty()) {
+            quartzLog.setJobId(byJobClassName.get(0).getId());
+        }
+        log.info("鍊嶇巼缁熻 EquipmentMagnificationJob start!  鏃堕棿:" + DateUtils.now());
+        long startTime = System.currentTimeMillis();
+        try {
+            mdcEquipmentMagnificationService.savesEquipmentMagnifications();
+            quartzLog.setIsSuccess(0);
+        } catch (Exception e) {
+            quartzLog.setIsSuccess(-1);
+            quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e));
+            // 鍙戦�佹秷鎭�氱煡
+            sysAnnouncementService.jobSendMessage("鍊嶇巼缁熻", quartzLog.getExceptionDetail());
+        }
+        long endTime = System.currentTimeMillis();
+        quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime)));
+        sysQuartzLogService.save(quartzLog);
+    }
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMagnificationMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMagnificationMapper.java
new file mode 100644
index 0000000..b2be2d3
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMagnificationMapper.java
@@ -0,0 +1,27 @@
+package org.jeecg.modules.mdc.mapper;
+
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.jeecg.modules.mdc.entity.MdcEquipmentMagnification;
+import org.jeecg.modules.mdc.vo.MdcEquipmentMagnificationVo;
+
+import java.util.Date;
+import java.util.List;
+
+public interface MdcEquipmentMagnificationMapper extends BaseMapper<MdcEquipmentMagnification> {
+
+    MdcEquipmentMagnification getMaxStaticsData(@Param("equipmentId") String equipmentId);
+
+
+    @InterceptorIgnore(tenantLine = "1")
+    @Select("select DISTINCT  ${englishName} from  ${tableName} " +
+            " where CollectTime > #{startTime} and CollectTime <= #{endTime} and ${englishName} is not null and ${englishName} != ''" )
+    List<Object> getEquipmentSequenceNumber(@Param("tableName") String tableName, @Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("englishName") String englishName);
+
+
+    IPage<MdcEquipmentMagnification> pageList(IPage<MdcEquipmentMagnification> pageData, @Param("magnificationVo") MdcEquipmentMagnificationVo magnificationVo);
+
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMagnificationMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMagnificationMapper.xml
new file mode 100644
index 0000000..871dcd8
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMagnificationMapper.xml
@@ -0,0 +1,33 @@
+<?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.mdc.mapper.MdcEquipmentMagnificationMapper">
+    <select id="getMaxStaticsData" resultType="org.jeecg.modules.mdc.entity.MdcEquipmentMagnification">
+        SELECT TOP 1 * FROM mdc_equipment_magnification WHERE equipment_id = #{equipmentId} ORDER BY the_date DESC
+    </select>
+
+    <!--鍒嗛〉鍒楄〃鏌ヨ-->
+    <select id="pageList" resultType="org.jeecg.modules.mdc.entity.MdcEquipmentMagnification">
+        SELECT
+            *
+        FROM
+        mdc_equipment_magnification t1
+        WHERE 1=1
+        <if test="magnificationVo.equipmentId != null and magnificationVo.equipmentId != ''">
+            AND t1.equipment_id = #{ magnificationVo.equipmentId }
+        </if>
+        <if test="magnificationVo.startTime != null and magnificationVo.startTime != ''">
+            AND t1.the_date &gt;= #{ magnificationVo.startTime }
+        </if>
+        <if test="magnificationVo.endTime != null and magnificationVo.endTime != ''">
+            AND t1.the_date &lt;= #{ magnificationVo.endTime }
+        </if>
+        <if test="magnificationVo.equipmentIdList != null and magnificationVo.equipmentIdList.size() > 0 ">
+            AND t1.equipment_id IN
+            <foreach collection="magnificationVo.equipmentIdList" item="id" index="index" open="(" close=")" separator=",">
+                #{ id }
+            </foreach>
+        </if>
+        ORDER BY t1.the_date ASC
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDriveTypeParamConfigService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDriveTypeParamConfigService.java
index 27e26e5..69eb29a 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDriveTypeParamConfigService.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDriveTypeParamConfigService.java
@@ -29,6 +29,9 @@
      */
     List<MdcDriveTypeParamConfig> getByTypeCodeMdcShowCode(String codeTypeId);
 
+    //鏍规嵁涓枃鍚嶇О鏌ヨ鏁版嵁
+    MdcDriveTypeParamConfig getEnglishName(String chineseName,String driveType );
+
     /**
      * 鑾峰彇鎺у埗绯荤粺绫诲瀷涓嬫媺妗嗛�夐」
      */
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentMagnificationService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentMagnificationService.java
new file mode 100644
index 0000000..527052b
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentMagnificationService.java
@@ -0,0 +1,20 @@
+package org.jeecg.modules.mdc.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.mdc.entity.MdcEquipmentMagnification;
+import org.jeecg.modules.mdc.vo.MdcDeviceCalendarQueryVo;
+import org.jeecg.modules.mdc.vo.MdcDeviceCalendarVo;
+import org.jeecg.modules.mdc.vo.MdcEquipmentMagnificationVo;
+
+import javax.servlet.http.HttpServletRequest;
+
+public interface IMdcEquipmentMagnificationService extends IService<MdcEquipmentMagnification> {
+    /**
+     * 缁熻 鎶ヨ〃鏁版嵁
+     */
+    void savesEquipmentMagnifications();
+
+
+    IPage<MdcEquipmentMagnification> pageList(String userId, MdcEquipmentMagnificationVo magnificationVo, Integer pageNo, Integer pageSize, HttpServletRequest req);
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentWorkLineService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentWorkLineService.java
index bf1be6e..da0be99 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentWorkLineService.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentWorkLineService.java
@@ -15,4 +15,7 @@
      * 鏌ユ壘鎸囧畾鏃ユ湡鐨勬暟鎹�
      */
     List<EquipmentMachingDto> getWorkLineList(MdcWorkChartVo mdcWorkChartVo);
+
+
+
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDriveTypeParamConfigServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDriveTypeParamConfigServiceImpl.java
index 7243625..6fe50bd 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDriveTypeParamConfigServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDriveTypeParamConfigServiceImpl.java
@@ -43,6 +43,18 @@
         return this.baseMapper.selectBatchIds(Arrays.asList(codeTypeId.split(",")));
     }
 
+    @Override
+    public MdcDriveTypeParamConfig getEnglishName(String chineseName,String driveType ) {
+        List<MdcDriveTypeParamConfig> list = lambdaQuery()
+                .eq(MdcDriveTypeParamConfig::getChineseName, chineseName).
+                eq(MdcDriveTypeParamConfig::getShowFlag, CommonConstant.YN_Y).
+                eq(MdcDriveTypeParamConfig::getControlSystemType,driveType).orderByAsc(MdcDriveTypeParamConfig::getSortNo).list();
+        if (list.isEmpty() || list.size() > 1) {
+            return null;
+        }
+        return list.get(0);
+    }
+
     /**
      * 鑾峰彇鎺у埗绯荤粺绫诲瀷涓嬫媺妗嗛�夐」
      */
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentMagnificationServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentMagnificationServiceImpl.java
new file mode 100644
index 0000000..9237246
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentMagnificationServiceImpl.java
@@ -0,0 +1,204 @@
+package org.jeecg.modules.mdc.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang3.StringUtils;
+import org.jeecg.modules.mdc.entity.*;
+import org.jeecg.modules.mdc.mapper.MdcEquipmentMagnificationMapper;
+import org.jeecg.modules.mdc.service.*;
+import org.jeecg.modules.mdc.util.DateUtils;
+import org.jeecg.modules.mdc.vo.MdcDeviceCalendarVo;
+import org.jeecg.modules.mdc.vo.MdcEquipmentMagnificationVo;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
+import java.util.*;
+
+@Service
+public class MdcEquipmentMagnificationServiceImpl extends ServiceImpl<MdcEquipmentMagnificationMapper, MdcEquipmentMagnification> implements IMdcEquipmentMagnificationService {
+
+    @Resource
+    private IEquipmentService equipmentService;
+    @Resource
+    private IMdcDriveTypeParamConfigService mdcDriveTypeParamConfigService;
+    @Resource
+    private IMdcEquipmentRunningSectionService mdcEquipmentRunningSectionService;
+    @Resource
+    private IMdcEquipmentService mdcEquipmentService;
+
+    private static String spindlebeilv = "涓昏酱鍊嶇巼";
+    private static String feedbeilv = "杩涚粰鍊嶇巼";
+    @Override
+    public void savesEquipmentMagnifications() {
+        List<MdcEquipmentMagnification> magnifications = new ArrayList<>();
+        //涓昏酱鍊嶇巼
+        //杩涚粰鍊嶇巼
+       /* Equipment e = equipmentService.getById("12345678");
+        List<Equipment> equipmentList = new ArrayList<>();
+        equipmentList.add(e);*/
+        List<Equipment> equipmentList = equipmentService.list();
+        Map<String,List<MdcDriveTypeParamConfig>> map = new HashMap<>();
+        Date now =  DateUtils.plusTime(DateUtils.getNow(), -1);
+        for (Equipment equipment : equipmentList) {
+            Date start = null;
+            //鏌ヨ鏈�鍚庝竴鏉¤褰�
+            MdcEquipmentMagnification mdcMagnification = super.baseMapper.getMaxStaticsData(equipment.getEquipmentid());
+            if (mdcMagnification == null) {
+                start = DateUtils.plusTime(DateUtils.getNow(), -5);
+            } else {
+                if (now.toString().equals(start.toString())) {
+                    continue;
+                }
+                start = DateUtils.toDate(mdcMagnification.getTheDate(),DateUtils.STR_DATE );
+            }
+            List<String> dates = DateUtils.getDatesStringList(start,now);
+            List<MdcDriveTypeParamConfig> list = new ArrayList<>();
+            if (!map.containsKey(equipment.getDrivetype())) {
+                MdcDriveTypeParamConfig config1 = mdcDriveTypeParamConfigService.getEnglishName(spindlebeilv,equipment.getDrivetype());
+                MdcDriveTypeParamConfig config2 = mdcDriveTypeParamConfigService.getEnglishName(feedbeilv,equipment.getDrivetype());
+                if (config1 != null) {
+                    list.add(config1);
+                }
+                if (config2 != null ) {
+                    list.add(config2);
+                }
+                if (list == null || list.size() == 0) {
+                    for (String date : dates) {
+                        MdcEquipmentMagnification info = new MdcEquipmentMagnification();
+                        info.setEquipmentId(equipment.getEquipmentid());
+                        info.setTheDate(date);
+                        info.setSpindlebeilv(new BigDecimal(0));
+                        info.setFeedbeilv(new BigDecimal(0));
+                        magnifications.add(info);
+                    }
+                    continue;
+                } else {
+                    map.put(equipment.getDrivetype(), list);
+                }
+
+            } else {
+                list = map.get(equipment.getDrivetype());
+            }
+            //寰幆鏃堕棿
+            //鏌ヨ瀛楁 MAP 淇濆瓨
+            for (String date : dates) {
+                MdcEquipmentMagnification magnification = selectMagnification(equipment.getEquipmentid(),date,equipment.getDrivetype(), list);
+                magnifications.add(magnification);
+            }
+        }
+        if (!magnifications.isEmpty() && magnifications.size() > 0) {
+            saveBatch(magnifications);
+        }
+        //鏁版嵁淇濆瓨
+        return;
+    }
+
+    @Override
+    public IPage<MdcEquipmentMagnification> pageList(String userId, MdcEquipmentMagnificationVo magnificationVo, Integer pageNo, Integer pageSize, HttpServletRequest req) {
+        IPage<MdcEquipmentMagnification> pageData = new Page<>(pageNo, pageSize);
+        List<String> equipmentIds = new ArrayList<>();
+        if (StringUtils.isNotEmpty(magnificationVo.getParentId()) && StringUtils.isEmpty(magnificationVo.getEquipmentId())) {
+            if ("2".equals(magnificationVo.getTypeTree())) {
+                // 閮ㄩ棬灞傜骇
+                equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, magnificationVo.getParentId());
+            } else {
+                // 浜х嚎灞傜骇
+                equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, magnificationVo.getParentId());
+            }
+        } else if (StringUtils.isNotEmpty(magnificationVo.getEquipmentId())) {
+            // 鍗曞彴璁惧淇℃伅
+            magnificationVo.setEquipmentIdList(Collections.singletonList(magnificationVo.getEquipmentId()));
+        } else {
+            // 鏌ヨ鐢ㄦ埛鎷ユ湁鐨勬墍鏈夎澶囦俊鎭�
+            if ("2".equals(magnificationVo.getTypeTree())) {
+                //閮ㄩ棬灞傜骇
+                equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, null);
+            } else {
+                //浜х嚎灞傜骇
+                equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, null);
+            }
+        }
+        if (magnificationVo.getEquipmentIdList() == null || magnificationVo.getEquipmentIdList().isEmpty()) {
+            magnificationVo.setEquipmentIdList(equipmentIds);
+        }
+        if (magnificationVo.getEquipmentIdList() == null || magnificationVo.getEquipmentIdList().isEmpty()) {
+            return null;
+        }
+        return this.baseMapper.pageList(pageData, magnificationVo);
+    }
+
+    private MdcEquipmentMagnification selectMagnification(String equipmentId,String date,String drivetype,List<MdcDriveTypeParamConfig> list) {
+        Date startTime = DateUtils.plusTime(DateUtils.getShortDate(date), 0);
+        Date endTime = DateUtils.plusTime(DateUtils.getShortDate(date), 1);
+        List<MdcEquipmentRunningSection> sectionList = mdcEquipmentRunningSectionService.selectRunningData(equipmentId,startTime,endTime);
+        if (sectionList.isEmpty() || sectionList.size() < 1) {
+            MdcEquipmentMagnification info = new MdcEquipmentMagnification();
+            info.setEquipmentId(equipmentId);
+            info.setTheDate(date);
+            info.setSpindlebeilv(new BigDecimal(0));
+            info.setFeedbeilv(new BigDecimal(0));
+            return info;
+        } else {
+
+            //闇�瑕佹椂闂存埅鍙�
+            if (sectionList.get(0).getStartTime().before(startTime)) {
+                sectionList.get(0).setStartTime(startTime);
+            }
+            if (sectionList.size() > 1) {
+                if (sectionList.get(sectionList.size() - 1).getEndTime().after(endTime)) {
+                    sectionList.get(sectionList.size() - 1).setEndTime(endTime);
+                }
+            } else {
+                if (sectionList.get(0).getEndTime().after(endTime)) {
+                    sectionList.get(0).setEndTime(endTime);
+                }
+            }
+            MdcEquipmentMagnification info = new MdcEquipmentMagnification();
+            for (MdcDriveTypeParamConfig config : list) {
+                info.setTheDate(date);
+                info.setEquipmentId(equipmentId);
+                BigDecimal bigDecimal = new BigDecimal(0);
+                int numberSizeList = 0;
+                for (MdcEquipmentRunningSection section : sectionList) {
+                    List<Object> objects = super.baseMapper.getEquipmentSequenceNumber(drivetype+ "_" + equipmentId,section.getStartTime(),
+                            section.getEndTime(),config.getEnglishName());
+                    BigDecimal s = objNumberList(objects);
+                    bigDecimal = bigDecimal.add(s);
+                    numberSizeList += objects.size();
+                }
+                if (config.getChineseName().equals(spindlebeilv)) {
+                    info.setSpindlebeilvValue(bigDecimal);
+                    info.setSpindlebeilvNumber(numberSizeList);
+                    if (bigDecimal.compareTo(BigDecimal.ZERO) >0  && new BigDecimal(numberSizeList).compareTo(BigDecimal.ZERO) > 0) {
+                        info.setSpindlebeilv(bigDecimal.divide(new BigDecimal(numberSizeList)));
+                    }
+                }
+                if (config.getChineseName().equals(feedbeilv)) {
+                    info.setFeedbeilvValue(bigDecimal);
+                    info.setFeedbeilvNumber(numberSizeList);
+                    if (bigDecimal.compareTo(BigDecimal.ZERO) >0  && new BigDecimal(numberSizeList).compareTo(BigDecimal.ZERO) > 0) {
+                        info.setFeedbeilv(bigDecimal.divide(new BigDecimal(numberSizeList)));
+                    }
+                }
+            }
+            return info;
+        }
+    }
+
+    private BigDecimal objNumberList(List<Object> objects) {
+        if (objects == null || objects.size() == 0) {
+            return new BigDecimal(0);
+        } else {
+            BigDecimal bigDecimal = new BigDecimal(0);
+            for (Object object : objects) {
+                if (object != null && object.toString().length() > 0) {
+                    bigDecimal = bigDecimal.add(new BigDecimal(object.toString()));
+                }
+            }
+            return bigDecimal;
+        }
+    }
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcEquipmentMagnificationVo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcEquipmentMagnificationVo.java
new file mode 100644
index 0000000..6bef224
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcEquipmentMagnificationVo.java
@@ -0,0 +1,34 @@
+package org.jeecg.modules.mdc.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class MdcEquipmentMagnificationVo {
+    /**
+     * 寮�濮嬫椂闂�  ->  2025-01-01
+     */
+    private String startTime;
+    /**
+     * 缁撴潫鏃堕棿  ->  2025-01-01
+     */
+    private String endTime;
+    /**
+     * 鏍戠被鍨�    ->  1:杞﹂棿灞傜骇   2:閮ㄩ棬灞傜骇
+     */
+    private String typeTree;
+    /**
+     * 灞傜骇ID
+     */
+    private String parentId;
+    /**
+     * 璁惧Id
+     */
+    private String equipmentId;
+
+    /**
+     * 璁惧ids
+     */
+    private List<String> equipmentIdList;
+}

--
Gitblit v1.9.3