Prechádzať zdrojové kódy

处理稼动率,和经编显示能耗

wukai 2 mesiacov pred
rodič
commit
7b38dabd3b

+ 5 - 1
jjt-admin/src/test/java/com/jjt/task/TaskTest.java

@@ -49,7 +49,11 @@ public class TaskTest {
 //        dayService.day(LocalDate.parse("2025-02-23"));
 //        dayService.day(LocalDate.parse("2025-02-24"));
 //        dayService.day(LocalDate.parse("2025-02-25"));
-        dayService.day(LocalDate.parse("2025-02-26"));
+        for (int i = 1; i < 17; i++) {
+            String d = "2025-03-" + (i < 10 ? "0" + i : i);
+            dayService.day(LocalDate.parse(d));
+
+        }
 ////        empCalcService.calc(DateUtils.toDate(localDate));
 //        LocalDateTime ldt = LocalDateTime.of(localDate, LocalTime.MIN);
 //        for (int i = 11; i < 15; i++) {

+ 17 - 7
jjt-biz/src/main/java/com/jjt/biz/service/impl/ApiServiceImpl.java

@@ -8,7 +8,6 @@ import com.jjt.calc.domain.TwinCalcDay;
 import com.jjt.calc.domain.TwinFormulaInfo;
 import com.jjt.calc.domain.TwinPanHeadInfo;
 import com.jjt.calc.service.ITwinCalcDayService;
-import com.jjt.calc.service.ITwinCalcHourService;
 import com.jjt.calc.service.ITwinFormulaInfoService;
 import com.jjt.calc.service.ITwinPanHeadInfoService;
 import com.jjt.common.constant.CacheConstants;
@@ -16,12 +15,12 @@ import com.jjt.common.core.redis.RedisCache;
 import com.jjt.utils.AsyncService;
 import com.jjt.utils.IotService;
 import com.jjt.utils.Tools;
+import com.jjt.ws.domain.TwinWorkshopCalc;
+import com.jjt.ws.service.ITwinWorkshopCalcService;
+import com.jjt.ws.service.ITwinWorkshopService;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Service;
 
-import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
@@ -44,8 +43,7 @@ import java.util.stream.Collectors;
 public class ApiServiceImpl implements IApiService {
     @Resource
     private ITwinCalcDayService twinCalcDayService;
-    @Resource
-    private ITwinCalcHourService twinCalcHourService;
+
     @Resource
     private ITwinPanHeadInfoService panHeadInfoService;
     @Resource
@@ -59,7 +57,9 @@ public class ApiServiceImpl implements IApiService {
     @Resource
     private RedisCache redisCache;
     @Resource
-    private Environment env;
+    private ITwinWorkshopService workshopService;
+    @Resource
+    private ITwinWorkshopCalcService wsCalcService;
 
     /**
      * 首页统计数据
@@ -103,7 +103,11 @@ public class ApiServiceImpl implements IApiService {
         LocalDateTime ldt = LocalDateTime.now().minusHours(7);
         //获取前面7天的数据
         LocalDate localDate = ldt.toLocalDate().minusDays(7);
+//        TwinWorkshop ws = workshopService.selectTwinWorkshopByWsCode("WS02-D");
         Date date = Date.from(localDate.atStartOfDay(ZoneOffset.of("+8")).toInstant());
+        List<TwinWorkshopCalc> wsCalcList = wsCalcService.listByWsCodeDate("WS02-D", date);
+        //按日期统计用量
+        Map<Date, TwinWorkshopCalc> resultMap = wsCalcList.stream().collect(Collectors.toMap(TwinWorkshopCalc::getDataDate, obj -> obj));
         List<TwinCalcDay> list = twinCalcDayService.selectTwinCalcDayListByTime(date);
         Map<Date, List<TwinCalcDay>> dayGroup = list.stream().collect(Collectors.groupingBy(TwinCalcDay::getTime, LinkedHashMap::new, Collectors.toList()));
         for (Map.Entry<Date, List<TwinCalcDay>> entry : dayGroup.entrySet()) {
@@ -112,6 +116,12 @@ public class ApiServiceImpl implements IApiService {
             day.calcDays(days);
             WeekData weekData = new WeekData();
             weekData.convert(day);
+            TwinWorkshopCalc ws = resultMap.get(entry.getKey());
+            if (ws != null) {
+                weekData.setAKwh(ws.getAValue());
+                weekData.setBKwh(ws.getBValue());
+                weekData.setKwh(ws.getTotalValue());
+            }
             weekDataList.add(weekData);
         }
         indexData.setWeekData(weekDataList);

+ 3 - 2
jjt-biz/src/main/java/com/jjt/calc/service/impl/TwinCalcDayServiceImpl.java

@@ -234,14 +234,15 @@ public class TwinCalcDayServiceImpl implements ITwinCalcDayService {
             day.setEfficiencyB(eb);
             day.setEfficiency(ee);
             //如果米长为0,稼动率处理
+            //20250317 潘工提的需求,把没有开机的设备也需要计算稼动
             if (day.getLengthA().doubleValue() == 0d) {
                 day.setOpenTimeA(BigDecimal.ZERO);
-                day.setCloseTimeA(BigDecimal.ZERO);
+                day.setCloseTimeA(BigDecimal.valueOf(teamTimeA));
                 day.setEfficiencyA(BigDecimal.ZERO);
             }
             if (day.getLengthB().doubleValue() == 0d) {
                 day.setOpenTimeB(BigDecimal.ZERO);
-                day.setCloseTimeB(BigDecimal.ZERO);
+                day.setCloseTimeB(BigDecimal.valueOf(teamTimeB));
                 day.setEfficiencyB(BigDecimal.ZERO);
             }
             if (day.getLength().doubleValue() == 0d) {

+ 14 - 4
jjt-biz/src/main/java/com/jjt/ws/mapper/TwinWorkshopCalcMapper.java

@@ -1,19 +1,19 @@
 package com.jjt.ws.mapper;
 
-import java.util.Date;
-import java.util.List;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.jjt.ws.domain.TwinWorkshopCalc;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
+import java.util.List;
+
 /**
  * 能源统计Mapper接口
  *
  * @author wukai
  * @date 2025-01-17
  */
-public interface TwinWorkshopCalcMapper extends BaseMapper<TwinWorkshopCalc>
-{
+public interface TwinWorkshopCalcMapper extends BaseMapper<TwinWorkshopCalc> {
     /**
      * 查询能源统计
      *
@@ -68,6 +68,7 @@ public interface TwinWorkshopCalcMapper extends BaseMapper<TwinWorkshopCalc>
      * @param date 日期
      */
     void deleteTwinWorkshopCalcByDate(Date date);
+
     /**
      * 按月查询
      *
@@ -76,4 +77,13 @@ public interface TwinWorkshopCalcMapper extends BaseMapper<TwinWorkshopCalc>
      * @return 结果
      */
     List<TwinWorkshopCalc> selectTwinWorkshopCalcListByMonth(@Param("wsId") Long wsId, @Param("month") String month);
+
+    /**
+     * 按车间查询指定时间及之后的用量
+     *
+     * @param wsCode 车间编码
+     * @param date   时间
+     * @return 结果
+     */
+    List<TwinWorkshopCalc> listByWsCodeDate(@Param("wsCode") String wsCode, @Param("date") Date date);
 }

+ 8 - 0
jjt-biz/src/main/java/com/jjt/ws/service/ITwinWorkshopCalcService.java

@@ -86,4 +86,12 @@ public interface ITwinWorkshopCalcService {
      * @return 结果
      */
     List<TwinWorkshopCalc> selectTwinWorkshopCalcListByMonth(Long wsId, String date);
+
+    /**
+     * 按车间查询指定时间及之后的用量
+     * @param wsCode 车间编码
+     * @param date 时间
+     * @return 结果
+     */
+    List<TwinWorkshopCalc> listByWsCodeDate(String wsCode, Date date);
 }

+ 12 - 0
jjt-biz/src/main/java/com/jjt/ws/service/impl/TwinWorkshopCalcServiceImpl.java

@@ -208,4 +208,16 @@ public class TwinWorkshopCalcServiceImpl implements ITwinWorkshopCalcService {
     public List<TwinWorkshopCalc> selectTwinWorkshopCalcListByMonth(Long wsId, String month) {
         return twinWorkshopCalcMapper.selectTwinWorkshopCalcListByMonth(wsId, month);
     }
+
+    /**
+     * 按车间查询指定时间及之后的用量
+     *
+     * @param wsCode 车间编码
+     * @param date   时间
+     * @return 结果
+     */
+    @Override
+    public List<TwinWorkshopCalc> listByWsCodeDate(String wsCode, Date date) {
+        return twinWorkshopCalcMapper.listByWsCodeDate(wsCode, date);
+    }
 }

+ 33 - 18
jjt-biz/src/main/resources/mapper/ws/TwinWorkshopCalcMapper.xml

@@ -5,32 +5,41 @@
 <mapper namespace="com.jjt.ws.mapper.TwinWorkshopCalcMapper">
 
     <resultMap type="TwinWorkshopCalc" id="TwinWorkshopCalcResult">
-        <result property="calcId"    column="CALC_ID"    />
-        <result property="dataDate"    column="DATA_DATE"    />
-        <result property="wsId"    column="WS_ID"    />
-        <result property="totalPrice"    column="TOTAL_PRICE"    />
-        <result property="aPrice"    column="A_PRICE"    />
-        <result property="bPrice"    column="B_PRICE"    />
-        <result property="totalValue"    column="TOTAL_VALUE"    />
-        <result property="aValue"    column="A_VALUE"    />
-        <result property="bValue"    column="B_VALUE"    />
+        <result property="calcId" column="CALC_ID"/>
+        <result property="dataDate" column="DATA_DATE"/>
+        <result property="wsId" column="WS_ID"/>
+        <result property="totalPrice" column="TOTAL_PRICE"/>
+        <result property="aPrice" column="A_PRICE"/>
+        <result property="bPrice" column="B_PRICE"/>
+        <result property="totalValue" column="TOTAL_VALUE"/>
+        <result property="aValue" column="A_VALUE"/>
+        <result property="bValue" column="B_VALUE"/>
     </resultMap>
 
     <sql id="selectTwinWorkshopCalcVo">
-        select CALC_ID, DATA_DATE, WS_ID, TOTAL_PRICE, A_PRICE, B_PRICE, TOTAL_VALUE, A_VALUE, B_VALUE from TWIN_WORKSHOP_CALC
+        select CALC_ID,
+               DATA_DATE,
+               WS_ID,
+               TOTAL_PRICE,
+               A_PRICE,
+               B_PRICE,
+               TOTAL_VALUE,
+               A_VALUE,
+               B_VALUE
+        from TWIN_WORKSHOP_CALC
     </sql>
 
     <select id="selectTwinWorkshopCalcList" parameterType="TwinWorkshopCalc" resultMap="TwinWorkshopCalcResult">
         <include refid="selectTwinWorkshopCalcVo"/>
         <where>
-            <if test="dataDate != null "> and DATA_DATE = #{dataDate}</if>
-            <if test="wsId != null "> and WS_ID = #{wsId}</if>
-            <if test="totalPrice != null "> and TOTAL_PRICE = #{totalPrice}</if>
-            <if test="aPrice != null "> and A_PRICE = #{aPrice}</if>
-            <if test="bPrice != null "> and B_PRICE = #{bPrice}</if>
-            <if test="totalValue != null "> and TOTAL_VALUE = #{totalValue}</if>
-            <if test="aValue != null "> and A_VALUE = #{aValue}</if>
-            <if test="bValue != null "> and B_VALUE = #{bValue}</if>
+            <if test="dataDate != null ">and DATA_DATE = #{dataDate}</if>
+            <if test="wsId != null ">and WS_ID = #{wsId}</if>
+            <if test="totalPrice != null ">and TOTAL_PRICE = #{totalPrice}</if>
+            <if test="aPrice != null ">and A_PRICE = #{aPrice}</if>
+            <if test="bPrice != null ">and B_PRICE = #{bPrice}</if>
+            <if test="totalValue != null ">and TOTAL_VALUE = #{totalValue}</if>
+            <if test="aValue != null ">and A_VALUE = #{aValue}</if>
+            <if test="bValue != null ">and B_VALUE = #{bValue}</if>
         </where>
     </select>
 
@@ -43,6 +52,12 @@
         where ws_id=#{wsId} and FORMAT(DATA_DATE, 'yyyy-MM') = #{month}
         order by DATA_DATE
     </select>
+    <select id="listByWsCodeDate" resultMap="TwinWorkshopCalcResult">
+        <include refid="selectTwinWorkshopCalcVo"/>
+        where ws_id=(select WS_ID from TWIN_WORKSHOP where WS_CODE = #{wsCode})
+        and FORMAT(DATA_DATE, 'yyyy-MM-dd') >= #{date}
+        order by DATA_DATE
+    </select>
 
     <insert id="insertTwinWorkshopCalc" parameterType="TwinWorkshopCalc">
         insert into TWIN_WORKSHOP_CALC