Sfoglia il codice sorgente

全厂孪生界面用能

wukai 2 mesi fa
parent
commit
f6e40322c3

+ 5 - 3
jjt-admin/src/test/java/com/jjt/data/EnergyTest.java

@@ -72,8 +72,10 @@ public class EnergyTest {
 
     @Test
     void day() {
-        String st = "2025-03-09";
-        LocalDate localDate = LocalDate.parse(st);
-        calcService.calc(localDate);
+        for (int i = 8; i < 17; i++) {
+            String d = "2025-03-" + (i < 10 ? "0" + i : i);
+            LocalDate localDate = LocalDate.parse(d);
+            calcService.calc(localDate);
+        }
     }
 }

+ 77 - 5
jjt-biz/src/main/java/com/jjt/biz/service/impl/ApiAllServiceImpl.java

@@ -4,6 +4,9 @@ import com.jjt.biz.service.IApiAllService;
 import com.jjt.biz.vo.*;
 import com.jjt.common.constant.CacheConstants;
 import com.jjt.common.core.redis.RedisCache;
+import com.jjt.common.utils.DateUtils;
+import com.jjt.ws.domain.TwinWorkshopCalc;
+import com.jjt.ws.service.ITwinWorkshopCalcService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
@@ -11,9 +14,9 @@ import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.LocalDate;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import java.time.LocalDateTime;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 首页统计数据
@@ -26,6 +29,8 @@ import java.util.Map;
 public class ApiAllServiceImpl implements IApiAllService {
     @Resource
     private RedisCache redisCache;
+    @Resource
+    private ITwinWorkshopCalcService wsCalcService;
 
     /**
      * 获取当前库存数据
@@ -98,13 +103,80 @@ public class ApiAllServiceImpl implements IApiAllService {
 
     /**
      * 获取能耗趋势
+     * 1	WS02-D	经编车间	经编车间用电
+     * 2	WS03-D-QZ	前整车间	染整线-前整车间用电
+     * 3	WS03-D-YR	印染车间	染整线-印染车间用电
+     * 4	WS03-D-HZ	后整车间	染整线-后整车间用电
+     * 5	WS03-S-YR	印染工业水	染整线-工业水
+     * 6	WS03-Q-DY	低压蒸汽	2/3低压蒸汽
+     * 7	WS03-Q-ZY	中压蒸汽	中压蒸汽
      *
      * @return 结果
      */
     @Override
     public List<EnergyTradeVO> energyTrade() {
-        redisCache.setCacheObject(CacheConstants.ENERGY_TRADE, mockEnergy());
-        return redisCache.getCacheObject(CacheConstants.ENERGY_TRADE);
+//        redisCache.setCacheObject(CacheConstants.ENERGY_TRADE, mockEnergy());
+        List<EnergyTradeVO> list = new ArrayList<>();
+        LocalDate end = LocalDateTime.now().minusHours(7).toLocalDate().minusDays(1);
+        //一个月数据
+        LocalDate start = end.minusMonths(1);
+        List<TwinWorkshopCalc> wsList = wsCalcService.listByWsCodeDate(null, DateUtils.toDate(start));
+        Map<Date, List<TwinWorkshopCalc>> wsMap = wsList.stream().collect(Collectors.groupingBy(TwinWorkshopCalc::getDataDate, LinkedHashMap::new, Collectors.toList()));
+        for (Map.Entry<Date, List<TwinWorkshopCalc>> entry : wsMap.entrySet()) {
+            EnergyTradeVO vo = new EnergyTradeVO();
+            LocalDate ldt = DateUtils.toLocalDate(entry.getKey());
+            List<TwinWorkshopCalc> wss = entry.getValue();
+            vo.setDate(ldt.getDayOfMonth() + "");
+            vo.setTips(ldt.toString());
+            EnergyTradeVO.RZ rz = new EnergyTradeVO.RZ();
+            rz.setElectricity(BigDecimal.ZERO);
+            rz.setPrice(BigDecimal.ZERO);
+            for (TwinWorkshopCalc ws : wss) {
+                switch (ws.getWsCode()) {
+                    case "WS02-D":
+                        //经编车间用电
+                        vo.getJb().setElectricity(ws.getTotalValue());
+                        vo.getJb().setPrice(ws.getTotalPrice() != null ? ws.getTotalPrice() : BigDecimal.ZERO);
+                        break;
+                    case "WS03-D-QZ":
+                        //染整线-前整车间用电
+                    case "WS03-D-YR":
+                        //染整线-印染车间用电
+                    case "WS03-D-HZ":
+                        //染整线-后整车间用电
+                        if (ws.getTotalValue() != null) {
+                            rz.setElectricity(rz.getElectricity().add(ws.getTotalValue()));
+                        }
+                        if (ws.getTotalPrice() != null) {
+                            rz.setPrice(rz.getPrice().add(ws.getTotalPrice()));
+                        }
+                        break;
+                    case "WS03-S-YR":
+                        rz.setWater(ws.getTotalValue());
+                        if (ws.getTotalPrice() != null) {
+                            rz.setPrice(rz.getPrice().add(ws.getTotalPrice()));
+                        }
+                        //染整线-工业水
+                        break;
+                    case "WS03-Q-DY":
+                        rz.setSteam(ws.getTotalValue());
+                        if (ws.getTotalPrice() != null) {
+                            rz.setPrice(rz.getPrice().add(ws.getTotalPrice()));
+                        }
+                        //染整线-工业水
+                        //2/3低压蒸汽
+                        break;
+                    case "WS03-Q-ZY":
+                        //中压蒸汽
+                        break;
+                    default:
+                }
+
+            }
+            vo.setRz(rz);
+            list.add(vo);
+        }
+        return list;
     }
 
     private List<ProdTradeVO> mockProd() {

+ 3 - 3
jjt-biz/src/main/java/com/jjt/biz/vo/CurrYieldVO.java

@@ -76,10 +76,10 @@ public class CurrYieldVO {
         this.jb.openRatio = BigDecimal.valueOf(jdl).setScale(0, RoundingMode.HALF_UP);
         jdl = 70 + 10 * random.nextDouble();
         this.rz.openRatio = BigDecimal.valueOf(jdl).setScale(0, RoundingMode.HALF_UP);
-        this.rz.openLine = 4;
+        this.rz.openLine = 2;
         this.rz.maxLine = 8;
-        this.rz.openNum = 100;
-        this.rz.totalNum = 150;
+        this.rz.openNum = 88;
+        this.rz.totalNum = 267;
 
         this.jb.openNum = 100;
         this.jb.totalNum = 150;

+ 17 - 0
jjt-biz/src/main/java/com/jjt/biz/vo/EnergyTradeVO.java

@@ -37,6 +37,7 @@ public class EnergyTradeVO {
         @ApiModelProperty("价格")
         private BigDecimal price;
     }
+
     @Data
     public static class RZ {
         @ApiModelProperty("电")
@@ -47,6 +48,22 @@ public class EnergyTradeVO {
         private BigDecimal water;
         @ApiModelProperty("价格")
         private BigDecimal price;
+
+        public void addElectricity(BigDecimal electricity) {
+            if (this.electricity == null) {
+                this.electricity = BigDecimal.ZERO;
+            }
+            this.electricity.add(electricity);
+        }
+
+        public void addPrice(BigDecimal price) {
+            if (this.price == null) {
+                this.price = BigDecimal.ZERO;
+            }
+            if (price != null) {
+                this.price.add(price);
+            }
+        }
     }
 
     public EnergyTradeVO() {

+ 5 - 0
jjt-biz/src/main/java/com/jjt/ws/domain/TwinWorkshopCalc.java

@@ -44,6 +44,11 @@ public class TwinWorkshopCalc extends BaseEntity {
     @Excel(name = "车间ID")
     private Long wsId;
 
+    @ApiModelProperty("车间编码")
+    private String wsCode;
+    @ApiModelProperty("车间名称")
+    private String wsName;
+
     /**
      * 总价格
      */

+ 23 - 12
jjt-biz/src/main/resources/mapper/ws/TwinWorkshopCalcMapper.xml

@@ -8,6 +8,8 @@
         <result property="calcId" column="CALC_ID"/>
         <result property="dataDate" column="DATA_DATE"/>
         <result property="wsId" column="WS_ID"/>
+        <result property="wsCode" column="WS_CODE"/>
+        <result property="wsName" column="WS_NAME"/>
         <result property="totalPrice" column="TOTAL_PRICE"/>
         <result property="aPrice" column="A_PRICE"/>
         <result property="bPrice" column="B_PRICE"/>
@@ -17,16 +19,21 @@
     </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 *
+        FROM (SELECT CALC_ID,
+                     DATA_DATE,
+                     A.WS_ID,
+                     TOTAL_PRICE,
+                     A_PRICE,
+                     B_PRICE,
+                     TOTAL_VALUE,
+                     A_VALUE,
+                     B_VALUE,
+                     B.WS_CODE,
+                     b.WS_NAME
+              FROM TWIN_WORKSHOP_CALC A,
+                   TWIN_WORKSHOP B
+              WHERE A.WS_ID = B.WS_ID) T
     </sql>
 
     <select id="selectTwinWorkshopCalcList" parameterType="TwinWorkshopCalc" resultMap="TwinWorkshopCalcResult">
@@ -54,8 +61,12 @@
     </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}
+        <where>
+            <if test="wsCode != null ">
+                and WS_CODE = #{wsCode})
+            </if>
+            and FORMAT(DATA_DATE, 'yyyy-MM-dd') >= #{date}
+        </where>
         order by DATA_DATE
     </select>