Browse Source

L2模块和大屏模块优化

wangxiaofei 2 tuần trước cách đây
mục cha
commit
3402f9555d
23 tập tin đã thay đổi với 590 bổ sung298 xóa
  1. 0 3
      taphole-iron/src/main/java/com/sckj/iron/controller/TIronVisualScreenController.java
  2. 1 1
      taphole-iron/src/main/java/com/sckj/iron/dto/IronTimeNoDTO.java
  3. 43 37
      taphole-iron/src/main/java/com/sckj/iron/socketio/DeviceEventListener.java
  4. 10 1
      taphole-l2-start/src/main/java/com/sckj/l2start/TapholeL2StartApplication.java
  5. 230 0
      taphole-l2-start/src/main/java/com/sckj/l2start/listener/L2EventListener.java
  6. 30 0
      taphole-l2-start/src/main/resources/application-dev.yml
  7. 25 0
      taphole-l2-start/src/main/resources/application-prod.yml
  8. 32 0
      taphole-l2-start/src/main/resources/application-test.yml
  9. 78 0
      taphole-l2-start/src/main/resources/application.yml
  10. 9 0
      taphole-l2-start/src/main/resources/banner.txt
  11. 85 0
      taphole-l2-start/src/main/resources/log4j2-spring.xml
  12. 3 13
      taphole-l2/pom.xml
  13. 3 3
      taphole-l2/src/main/java/com/sckj/l2/dto/L2Data.java
  14. 32 4
      taphole-l2/src/main/java/com/sckj/l2/entity/TL2Data.java
  15. 1 1
      taphole-l2/src/main/java/com/sckj/l2/entity/TL2Material.java
  16. 1 1
      taphole-l2/src/main/java/com/sckj/l2/service/impl/TL2DataServiceImpl.java
  17. 1 1
      taphole-opc/src/main/java/com/sckj/opc/controller/OPCDAController.java
  18. 1 1
      taphole-opc/src/main/java/com/sckj/opc/controller/OPCUAController.java
  19. 1 2
      taphole-opc/src/main/java/com/sckj/opc/dauaservice/OPCDAServiceImpl.java
  20. 1 5
      taphole-opc/src/main/java/com/sckj/opc/dauaservice/OPCUAServiceImpl.java
  21. 0 149
      taphole-opc/src/main/java/com/sckj/opc/dto/L2Data.java
  22. 0 76
      taphole-opc/src/main/java/com/sckj/opc/dto/L2Material.java
  23. 3 0
      taphole-opc/src/main/java/com/sckj/opc/entity/OPCPoint.java

+ 0 - 3
taphole-iron/src/main/java/com/sckj/iron/controller/TIronVisualScreenController.java

@@ -6,13 +6,11 @@ import com.sckj.common.aop.Log;
 import com.sckj.common.aop.NotLogin;
 import com.sckj.common.aop.NotPower;
 import com.sckj.common.core.AjaxResult;
-import com.sckj.common.util.RedisUtils;
 import com.sckj.device.validate.TCameraUpdateDTO;
 import com.sckj.iron.dto.*;
 import com.sckj.iron.entity.TIronData;
 import com.sckj.iron.entity.TIronParam;
 import com.sckj.iron.service.impl.*;
-import com.sckj.iron.socketio.DeviceEventListener;
 import com.sckj.iron.validate.IronLoginValidate;
 import com.sckj.iron.validate.TIronDataSearchScreenValidate;
 import com.sckj.iron.vo.IronLoginVo;
@@ -20,7 +18,6 @@ import com.sckj.l2.dto.TL2DataDTO;
 import com.sckj.l2.dto.TrendDTO;
 import com.sckj.l2.dto.TrendRequest;
 import com.sckj.l2.service.impl.TL2DataServiceImpl;
-import com.sckj.opc.dto.L2Data;
 import com.sckj.opc.service.OPCDataServiceImpl;
 import com.sckj.warn.dto.WarnDTO;
 import com.sckj.warn.service.impl.TExceptionLogServiceImpl;

+ 1 - 1
taphole-iron/src/main/java/com/sckj/iron/dto/IronTimeNoDTO.java

@@ -8,6 +8,6 @@ import lombok.Data;
 @Data
 public class IronTimeNoDTO {
     private String date;
-    private String ironNo;
+    private Long ironNo;
     private String desc;
 }

+ 43 - 37
taphole-iron/src/main/java/com/sckj/iron/socketio/DeviceEventListener.java

@@ -25,10 +25,10 @@ import com.sckj.l2.entity.TL2Material;
 import com.sckj.l2.service.impl.L2DataServiceImpl;
 import com.sckj.l2.service.impl.TL2DataServiceImpl;
 import com.sckj.l2.service.impl.TL2MaterialServiceImpl;
-import com.sckj.opc.dto.L2Data;
-import com.sckj.opc.dto.L2Material;
+import com.sckj.l2.dto.L2Data;
+import com.sckj.l2.dto.L2Material;
 import com.sckj.opc.entity.OPCData;
-import com.sckj.opc.opcua.OPCDAServiceImpl;
+import com.sckj.opc.dauaservice.OPCDAServiceImpl;
 import com.sckj.opc.service.OPCDataServiceImpl;
 import com.sckj.opc.utils.CustomUtil;
 import com.sckj.warn.entity.TAudio;
@@ -37,6 +37,7 @@ import com.sckj.warn.service.impl.TAudioServiceImpl;
 import com.sckj.warn.validate.TExceptionLogCreateValidate;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.autoconfigure.web.ServerProperties;
@@ -113,6 +114,9 @@ public class DeviceEventListener extends EventListener implements ApplicationLis
     OPCDAServiceImpl opcdaService;
 
 
+    //炉前申请出铁
+    private static final String STEP_LQCT = "lqct";
+
     //预判和确认出铁
     private static final String STEP_YPQRCT = "lnct";
 
@@ -208,7 +212,7 @@ public class DeviceEventListener extends EventListener implements ApplicationLis
     //实时出铁总重量/总流量
     private BigDecimal mTotalWeight = BigDecimal.ZERO;
     //总干量
-    private BigDecimal mTotalDry = BigDecimal.ZERO;
+//    private BigDecimal mTotalDry = BigDecimal.ZERO;
     //耗时(单位:s)
     private AtomicInteger mSecondsElapsed = new AtomicInteger(0);
 
@@ -322,13 +326,13 @@ public class DeviceEventListener extends EventListener implements ApplicationLis
 
         //实时数据
         taskExecutor.submit(() -> {
-
+            setRealtimeDataAndStatus(opcData, null);
         });
-        setRealtimeDataAndStatus(opcData, null);
+
     }
 
     //出铁次数编号
-    private String mIronNo;
+    private Long mIronNo;
 
     /***
      * L2数据项
@@ -348,45 +352,36 @@ public class DeviceEventListener extends EventListener implements ApplicationLis
         ironTimeNoDTO.setDesc(String.format("%s第%s次出铁", dateString, ironTimeNoDTO.getIronNo()));
         PushData.send2IronTimeNo(ironTimeNoDTO);
 
-        TL2Data tl2Data = new TL2Data();
-        //出铁操作
-        BeanUtils.copyProperties(l2Data, tl2Data);
-        //将L2实时数据保存到数据库
-        taskExecutor.submit(() -> {
-            tl2DataService.saveOrUpdate(tl2Data);
-        });
-
-        //将L2实时数据保存到Redis
-        taskExecutor.submit(() -> {
-            RedisUtils.addFixedElement(IRON_ELEMENT, l2Data, MAX_REDIS_COUNT);
-        });
 
         //推送实时数据
         taskExecutor.submit(() -> {
             setRealtimeDataAndStatus(null, l2Data);
         });
 
+
+    }
+
+    private void showTheoryWeight(List<TL2Data> latest2DataList) {
         taskExecutor.submit(() -> {
             for (IronStepVO stepDTO : mSteps) {
                 if (NODE.equalsIgnoreCase(stepDTO.getNodeType())) {
                     //处理子项
                     for (IronStepVO child : stepDTO.getChilds()) {
                         if (STEP_TLC.equals(child.getIdentifier())) {
-                            List<L2Data> latest2Data = (List<L2Data>) RedisUtils.getFixedElement(IRON_ELEMENT, 2);
-                            if (latest2Data.size() >= 2) {
+                            if (latest2DataList.size() >= 2) {
                                 HashMap[] hashMaps = new HashMap[6];
                                 child.setExtraInfo(hashMaps);
                                 //理论出铁量 = 矿批 × 综合品位 × 1.06
                                 //铁量差 = 理论出铁量 - 实际出铁量
-                                L2Data tl2Data1Last = latest2Data.get(0);
-                                BigDecimal llLast = new BigDecimal(tl2Data1Last.getTotalDry()).multiply(new BigDecimal(1.0)).multiply(new BigDecimal(1.06));
-                                BigDecimal ironWeightLast = new BigDecimal(tl2Data1Last.getIronWeight());
-                                BigDecimal tlcLast = llLast.subtract(ironWeightLast);
+                                TL2Data tl2Data1Last = latest2DataList.get(0);
+                                BigDecimal llLast = new BigDecimal(tl2Data1Last.getTheoryWeight()).setScale(2, BigDecimal.ROUND_HALF_UP);
+                                BigDecimal ironWeightLast = new BigDecimal(tl2Data1Last.getIronWeight()).setScale(2, BigDecimal.ROUND_HALF_UP);
+                                BigDecimal tlcLast = llLast.subtract(ironWeightLast).setScale(2, BigDecimal.ROUND_HALF_UP);
 
-                                L2Data tl2Data1LastLast = latest2Data.get(1);
-                                BigDecimal llLastLast = new BigDecimal(tl2Data1LastLast.getTotalDry()).multiply(new BigDecimal(1.0)).multiply(new BigDecimal(1.06));
-                                BigDecimal ironWeightLastLast = new BigDecimal(tl2Data1Last.getIronWeight());
-                                BigDecimal tlcLastLast = llLastLast.subtract(ironWeightLastLast);
+                                TL2Data tl2Data1LastLast = latest2DataList.get(1);
+                                BigDecimal llLastLast = new BigDecimal(tl2Data1LastLast.getTheoryWeight()).setScale(2, BigDecimal.ROUND_HALF_UP);
+                                BigDecimal ironWeightLastLast = new BigDecimal(tl2Data1LastLast.getIronWeight()).setScale(2, BigDecimal.ROUND_HALF_UP);
+                                BigDecimal tlcLastLast = llLastLast.subtract(ironWeightLastLast).setScale(2, BigDecimal.ROUND_HALF_UP);
 
                                 //铁量差在合理范围内
                                 // 上一次铁量差:-30       上上次铁量差:20 t
@@ -402,16 +397,22 @@ public class DeviceEventListener extends EventListener implements ApplicationLis
                                 for (IronStepVO grandChild : child.getChilds()) {
                                     if (sctlc.equals(grandChild.getIdentifier())) {
                                         grandChild.setData(tlcLast);
+                                        grandChild.setStepName(StringUtils.substringBefore(grandChild.getStepName(), ":") + ":" + grandChild.getData());
                                     } else if (ssctlc.equals(grandChild.getIdentifier())) {
                                         grandChild.setData(tlcLastLast);
+                                        grandChild.setStepName(StringUtils.substringBefore(grandChild.getStepName(), ":") + ":" + grandChild.getData());
                                     } else if (scll.equals(grandChild.getIdentifier())) {
                                         grandChild.setData(llLast);
+                                        grandChild.setStepName(StringUtils.substringBefore(grandChild.getStepName(), ":") + ":" + grandChild.getData());
                                     } else if (sscll.equals(grandChild.getIdentifier())) {
                                         grandChild.setData(llLastLast);
+                                        grandChild.setStepName(StringUtils.substringBefore(grandChild.getStepName(), ":") + ":" + grandChild.getData());
                                     } else if (scsj.equals(grandChild.getIdentifier())) {
                                         grandChild.setData(ironWeightLast);
+                                        grandChild.setStepName(StringUtils.substringBefore(grandChild.getStepName(), ":") + ":" + grandChild.getData());
                                     } else if (sscsj.equals(grandChild.getIdentifier())) {
                                         grandChild.setData(ironWeightLastLast);
+                                        grandChild.setStepName(StringUtils.substringBefore(grandChild.getStepName(), ":") + ":" + grandChild.getData());
                                     }
                                 }
                             }
@@ -422,7 +423,6 @@ public class DeviceEventListener extends EventListener implements ApplicationLis
             setStepResult(mSteps);
             PushData.send2Operation(mSteps, ironLoading1.get());
         });
-
     }
 
 
@@ -437,12 +437,12 @@ public class DeviceEventListener extends EventListener implements ApplicationLis
             tl2MaterialService.save(tl2Material);
         });
 
-        if (ironLoading1.get()) {
-            BigDecimal bigDecimalNew = new BigDecimal(material.getDryWeight());
-            mTotalDry = mTotalDry.add(bigDecimalNew);
-        } else {
-            mTotalDry = BigDecimal.ZERO;
-        }
+//        if (ironLoading1.get()) {
+//            BigDecimal bigDecimalNew = new BigDecimal(material.getDryWeight());
+//            mTotalDry = mTotalDry.add(bigDecimalNew);
+//        } else {
+//            mTotalDry = BigDecimal.ZERO;
+//        }
 
     }
 
@@ -559,7 +559,7 @@ public class DeviceEventListener extends EventListener implements ApplicationLis
     private void taphole1End() {
         //由 1-> 0 表明1号铁口结束出铁
         mTotalWeight = BigDecimal.ZERO;
-        mTotalDry = BigDecimal.ZERO;
+//        mTotalDry = BigDecimal.ZERO;
         scheduledTaskManager.cancelTask(TaskNameConstants.TASKNAME_OPEN_WARN);
         scheduledTaskManager.cancelTask(TaskNameConstants.TASKNAME_CLOSE_WARN);
         scheduledTaskManager.cancelTask(TaskNameConstants.TASKNAME_TAPPING_WARN);
@@ -918,6 +918,12 @@ public class DeviceEventListener extends EventListener implements ApplicationLis
         PushData.send2Operation(mSteps, ironLoading1.get());
 
         for (IronStepVO stepDTO : mSteps) {
+            if (STEP_LQCT.equals(stepDTO.getIdentifier()) && stepDTO.getPassResult() == 1) {
+                //
+                List<TL2Data> tl2DataList = tl2DataService.getLatest2Data();
+                showTheoryWeight(tl2DataList);
+            }
+
             for (IronStepVO child : stepDTO.getChilds()) {
                 if (Objects.equals(child.getIdentifier(), CAR_STATUS)) {
                     RealtimeData realtimeData = new RealtimeData();

+ 10 - 1
taphole-l2-start/src/main/java/com/sckj/l2start/TapholeL2StartApplication.java

@@ -1,9 +1,18 @@
 package com.sckj.l2start;
 
+import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
 
-@SpringBootApplication
+@Configuration
+@ComponentScan(basePackages = {"com.sckj"})
+@MapperScan(basePackages = {"com.sckj.**.mapper"})
+@EnableTransactionManagement
+@SpringBootApplication(exclude = {RedisRepositoriesAutoConfiguration.class})
 public class TapholeL2StartApplication {
 
     public static void main(String[] args) {

+ 230 - 0
taphole-l2-start/src/main/java/com/sckj/l2start/listener/L2EventListener.java

@@ -0,0 +1,230 @@
+package com.sckj.l2start.listener;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.google.common.eventbus.Subscribe;
+import com.sckj.common.eventbus.EventListener;
+import com.sckj.common.util.RedisUtils;
+import com.sckj.l2.dto.L2Data;
+import com.sckj.l2.dto.L2Material;
+import com.sckj.l2.entity.TL2Data;
+import com.sckj.l2.entity.TL2Material;
+import com.sckj.l2.service.impl.TL2DataServiceImpl;
+import com.sckj.l2.service.impl.TL2MaterialServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.List;
+
+/***
+ * DeviceEventListener
+ */
+@Component
+@Slf4j
+public class L2EventListener extends EventListener {
+    //参数
+    @Resource
+    TL2DataServiceImpl tl2DataService;
+
+    @Resource
+    TL2MaterialServiceImpl tl2MaterialService;
+
+    //出铁次数编号
+    private Long mIronNo;
+
+    //多任务
+    @Resource(name = "taskExecutor")
+    ThreadPoolTaskExecutor taskExecutor;
+
+    //总干量
+    private BigDecimal mTotalDry = BigDecimal.ZERO;
+
+    /***
+     * L2数据项
+     * @param l2Data
+     */
+    @Subscribe
+    public void onL2DataMessageEvent(L2Data l2Data) {
+        log.info("L2EventListener >>> {}", l2Data);
+        if (ObjectUtils.isNotEmpty(l2Data.getIronNo())) {
+            if (!mIronNo.equals(l2Data.getIronNo())) {
+                mTotalDry = BigDecimal.ZERO;
+            }
+            //只要是新的出铁次数编号,后续都一直用这个编号,直到有新的出铁编号
+            mIronNo = l2Data.getIronNo();
+        }
+//        //记录出铁日期和次数,并返回给前端
+//        IronTimeNoDTO ironTimeNoDTO = new IronTimeNoDTO();
+//        String dateString = LocalDateUtils.formatDate(new Date(), DateTimeFormatter.ofPattern("MM月dd日"));
+//        ironTimeNoDTO.setDate(dateString);
+//        ironTimeNoDTO.setIronNo(mIronNo);
+//        ironTimeNoDTO.setDesc(String.format("%s第%s次出铁", dateString, ironTimeNoDTO.getIronNo()));
+//        PushData.send2IronTimeNo(ironTimeNoDTO);
+//
+        TL2Data tl2Data = new TL2Data();
+        //出铁操作
+        BeanUtils.copyProperties(l2Data, tl2Data);
+        //将L2实时数据保存到数据库
+        taskExecutor.submit(() -> {
+            tl2DataService.saveOrUpdate(tl2Data);
+        });
+
+        //将L2实时数据保存到Redis
+        taskExecutor.submit(() -> {
+            RedisUtils.addFixedElement("ironElement", l2Data, 10);
+        });
+//
+//        //推送实时数据
+//        taskExecutor.submit(() -> {
+//            setRealtimeDataAndStatus(null, l2Data);
+//        });
+//
+//        taskExecutor.submit(() -> {
+//            for (IronStepVO stepDTO : mSteps) {
+//                if (NODE.equalsIgnoreCase(stepDTO.getNodeType())) {
+//                    //处理子项
+//                    for (IronStepVO child : stepDTO.getChilds()) {
+//                        if (STEP_TLC.equals(child.getIdentifier())) {
+//                            List<L2Data> latest2Data = (List<L2Data>) RedisUtils.getFixedElement(IRON_ELEMENT, 2);
+//                            if (latest2Data.size() >= 2) {
+//                                HashMap[] hashMaps = new HashMap[6];
+//                                child.setExtraInfo(hashMaps);
+//                                //理论出铁量 = 矿批 × 综合品位 × 1.06
+//                                //铁量差 = 理论出铁量 - 实际出铁量
+//                                L2Data tl2Data1Last = latest2Data.get(0);
+//                                BigDecimal llLast = new BigDecimal(tl2Data1Last.getTotalDry()).multiply(new BigDecimal(1.0)).multiply(new BigDecimal(1.06));
+//                                BigDecimal ironWeightLast = new BigDecimal(tl2Data1Last.getIronWeight());
+//                                BigDecimal tlcLast = llLast.subtract(ironWeightLast);
+//
+//                                L2Data tl2Data1LastLast = latest2Data.get(1);
+//                                BigDecimal llLastLast = new BigDecimal(tl2Data1LastLast.getTotalDry()).multiply(new BigDecimal(1.0)).multiply(new BigDecimal(1.06));
+//                                BigDecimal ironWeightLastLast = new BigDecimal(tl2Data1Last.getIronWeight());
+//                                BigDecimal tlcLastLast = llLastLast.subtract(ironWeightLastLast);
+//
+//                                //铁量差在合理范围内
+//                                // 上一次铁量差:-30       上上次铁量差:20 t
+//                                // 理论出铁量:1500 t      理论出铁量:1400 t
+//                                // 实际出铁量:1530 t      实际出铁量: 1380 t
+//                                final String sctlc = "sctlc";
+//                                final String ssctlc = "ssctlc";
+//                                final String scll = "scll";
+//                                final String sscll = "sscll";
+//                                final String scsj = "scsj";
+//                                final String sscsj = "sscsj";
+//
+//                                for (IronStepVO grandChild : child.getChilds()) {
+//                                    if (sctlc.equals(grandChild.getIdentifier())) {
+//                                        grandChild.setData(tlcLast);
+//                                    } else if (ssctlc.equals(grandChild.getIdentifier())) {
+//                                        grandChild.setData(tlcLastLast);
+//                                    } else if (scll.equals(grandChild.getIdentifier())) {
+//                                        grandChild.setData(llLast);
+//                                    } else if (sscll.equals(grandChild.getIdentifier())) {
+//                                        grandChild.setData(llLastLast);
+//                                    } else if (scsj.equals(grandChild.getIdentifier())) {
+//                                        grandChild.setData(ironWeightLast);
+//                                    } else if (sscsj.equals(grandChild.getIdentifier())) {
+//                                        grandChild.setData(ironWeightLastLast);
+//                                    }
+//                                }
+//                            }
+//                        }
+//                    }
+//                }
+//            }
+//            setStepResult(mSteps);
+//            PushData.send2Operation(mSteps, ironLoading1.get());
+//        });
+
+    }
+
+
+    @Subscribe
+    public void onL2MaterialMessageEvent(L2Material material) {
+        TL2Material tl2Material = new TL2Material();
+        tl2Material.setIronNo(mIronNo);
+        //出铁操作
+        BeanUtils.copyProperties(material, tl2Material);
+        //将L2上料实时数据保存到数据库
+        taskExecutor.submit(() -> {
+            tl2MaterialService.save(tl2Material);
+            LambdaQueryWrapper<TL2Material> eq = new QueryWrapper<TL2Material>().lambda().eq(TL2Material::getIronNo, mIronNo);
+            List<TL2Material> materialList = tl2MaterialService.list(eq);
+            if (ObjectUtils.isNotEmpty(materialList)) {
+                //计算矿石中铁的总量
+                BigDecimal totalIron = BigDecimal.ZERO;
+                //焦炭总量
+                BigDecimal totalCoke = BigDecimal.ZERO;
+                //副原料总量
+                BigDecimal totalAsstmaterial = BigDecimal.ZERO;
+
+                for (TL2Material mater : materialList) {
+                    //干量
+                    String dryWeight = mater.getDryWeight();
+                    //矿石装入量
+                    String oreWeight = StringUtils.defaultIfBlank(mater.getOreWeight(), "0");
+                    //焦炭装入量
+                    String cokeWeight = StringUtils.defaultIfBlank(mater.getCokeWeight(), "0");
+                    //副原料装入量
+                    String asstmaterialWeight = StringUtils.defaultIfBlank(mater.getAsstmaterialWeight(), "0");
+                    //综合品味(小数)
+                    String compositeTaste = mater.getCompositeTaste();
+                    //
+                    totalIron = totalIron.add(new BigDecimal(oreWeight).multiply(new BigDecimal(compositeTaste)));
+                    totalCoke = totalCoke.add(new BigDecimal(cokeWeight));
+                    totalAsstmaterial = totalAsstmaterial.add(new BigDecimal(asstmaterialWeight));
+                }
+                //计算理论铁量
+                BigDecimal a = new BigDecimal("0.004");
+                BigDecimal b = new BigDecimal("0.002");
+
+                BigDecimal theoryWeight = calculateTheoreticalIron(totalIron, totalCoke, totalAsstmaterial, a, b);
+
+
+                TL2Data tl2Data = new TL2Data();
+                tl2Data.setIronNo(mIronNo);
+                //保存计算的理论铁量
+                tl2Data.setTheoryWeight(theoryWeight.toPlainString());
+                tl2DataService.saveOrUpdate(tl2Data);
+
+            }
+        });
+
+
+//        if (ironLoading1.get()) {
+//            BigDecimal bigDecimalNew = new BigDecimal(material.getDryWeight());
+//            mTotalDry = mTotalDry.add(bigDecimalNew);
+//        } else {
+//            mTotalDry = BigDecimal.ZERO;
+//        }
+
+    }
+
+
+    /***
+     * 计算理论铁量
+     *
+     * @param totalIron
+     * @param totalCoke
+     * @param totalAsstmaterial
+     * @param a  每吨焦炭使铁的回收率提高0.4%
+     * @param b  每吨副原料使铁的回收率0.2%
+     * @return
+     */
+    public static BigDecimal calculateTheoreticalIron(BigDecimal totalIron, BigDecimal totalCoke, BigDecimal totalAsstmaterial, BigDecimal a, BigDecimal b) {
+        // 计算焦炭和副原料对铁回收率的影响
+        BigDecimal cokeEffect = a.multiply(totalCoke).divide(totalIron, 10, BigDecimal.ROUND_HALF_UP);
+        BigDecimal asstmaterialEffect = b.multiply(totalAsstmaterial).divide(totalIron, 10, BigDecimal.ROUND_HALF_UP);
+
+        // 计算理论铁量
+        BigDecimal recoveryFactor = BigDecimal.ONE.add(cokeEffect).add(asstmaterialEffect);
+        return totalIron.multiply(recoveryFactor).setScale(2, BigDecimal.ROUND_HALF_UP);
+    }
+
+}

+ 30 - 0
taphole-l2-start/src/main/resources/application-dev.yml

@@ -0,0 +1,30 @@
+# 服务配置
+server:
+  port: 38080
+  servlet:
+    context-path: /
+
+# 框架配置
+spring:
+  # 数据源配置
+  datasource:
+    url: jdbc:mysql://192.168.110.130:13306/taphole?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
+    type: com.alibaba.druid.pool.DruidDataSource # 数据源类型
+    driver-class-name: com.mysql.jdbc.Driver # MySql的驱动
+    username: root # 数据库账号
+    password: root # 数据库密码
+  # Redis配置
+  redis:
+    host: 192.168.110.130   # Redis服务地址
+    port: 16379        # Redis端口
+    password:         # Redis密码
+    database: 5       # 数据库索引
+#    lettuce:
+#      pool:
+#        max-wait: 30000 # 连接池最大阻塞等待时间(使用负数表示没有限制,默认-1)
+#        max-active: 100 # 连接池最大连接数(使用负数表示没有限制,默认8)
+#        max-idle: 20    # 连接池中的最大空闲连接(默认8)
+#        min-idle: 0     # 连接池中的最小空闲连接(默认0)
+
+
+

+ 25 - 0
taphole-l2-start/src/main/resources/application-prod.yml

@@ -0,0 +1,25 @@
+# 服务配置
+server:
+  port: 38080
+  servlet:
+    context-path: /
+# 框架配置
+spring:
+  # 数据源配置
+  datasource:
+    url: jdbc:mysql://mysql:3306/taphole?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
+    type: com.alibaba.druid.pool.DruidDataSource # 数据源类型
+    driver-class-name: com.mysql.jdbc.Driver # MySql的驱动
+    username: root # 数据库账号
+    password: root # 数据库密码
+  # Redis配置
+  redis:
+    host: redis   # Redis服务地址
+    port: 6379        # Redis端口
+#    password: sckj@1234        # Redis密码
+#    database: 5       # 数据库索引
+
+# Mybatis-plus配置 【是否开启SQL日志输出】
+#mybatis-plus:
+#    configuration:
+#      log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

+ 32 - 0
taphole-l2-start/src/main/resources/application-test.yml

@@ -0,0 +1,32 @@
+# 服务配置
+server:
+  port: 38080
+  servlet:
+    context-path: /
+
+# 框架配置
+spring:
+  # 数据源配置
+  datasource:
+    url: jdbc:mysql://192.168.110.130:13306/taphole?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
+    type: com.alibaba.druid.pool.DruidDataSource # 数据源类型
+    driver-class-name: com.mysql.jdbc.Driver # MySql的驱动
+    username: root # 数据库账号
+    password: root # 数据库密码
+  # Redis配置
+  redis:
+    host: 192.168.110.130   # Redis服务地址
+    port: 16379        # Redis端口
+    password:         # Redis密码
+    database: 5       # 数据库索引
+#    lettuce:
+#      pool:
+#        max-wait: 30000 # 连接池最大阻塞等待时间(使用负数表示没有限制,默认-1)
+#        max-active: 100 # 连接池最大连接数(使用负数表示没有限制,默认8)
+#        max-idle: 20    # 连接池中的最大空闲连接(默认8)
+#        min-idle: 0     # 连接池中的最小空闲连接(默认0)
+
+# Mybatis-plus配置 【是否开启SQL日志输出】
+#mybatis-plus:
+#    configuration:
+#      log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

+ 78 - 0
taphole-l2-start/src/main/resources/application.yml

@@ -0,0 +1,78 @@
+# 项目配置
+like:
+  #upload-directory: /www/uploads/likeadmin-java/ # 上传目录
+  # 验证码配置
+  captcha:
+    # 是否开启验证码
+    status: false
+    # 验证码有效时长
+    expire: 120
+    # 验证码缓存键名
+    token: "captcha:key:"
+  # Swagger配置
+  swagger:
+    # 是否开启swagger
+    enabled: true
+    # 请求前缀
+    pathMapping: /
+
+# 框架配置
+spring:
+  profiles:
+    active: dev
+  mvc:
+    static-path-pattern: /api/static/**
+    throw-exception-if-no-handler-found: true
+    pathmatch:
+      matching-strategy: ant_path_matcher
+  # 限制配置
+  servlet:
+    multipart:
+      max-file-size: 100MB    # 文件上传大小限制
+      max-request-size: 100MB # 文件最大请求限制
+      enabled: true
+  # Redis配置
+  redis:
+    lettuce:
+      pool:
+        max-wait: 30000 # 连接池最大阻塞等待时间(使用负数表示没有限制,默认-1)
+        max-active: 100 # 连接池最大连接数(使用负数表示没有限制,默认8)
+        max-idle: 20    # 连接池中的最大空闲连接(默认8)
+        min-idle: 0     # 连接池中的最小空闲连接(默认0)
+  jackson:
+    date-format: yyyy-MM-dd HH:mm:ss
+    time-zone: GMT+8
+
+# Mybatis-plus配置
+mybatis-plus:
+  mapper-locations: classpath*:/mapper/**Mapper.xml
+  typeAliasesPackage: com.sckj.**.mapper
+  global-config:
+    banner: false
+    db-config:
+      table-prefix: la_
+  configuration-properties:
+    prefix: la_
+
+# Sa-token配置
+sa-token:
+  token-name: token  # token的名称
+  timeout: 2592000        # token有效期单位s(默认30天,-1代表永不过期)
+  activity-timeout: -1    # token临时有效期(指定时间无操作掉线)
+  is-concurrent: true     # 是否允许同一账号并发登录
+  is-share: false         # 多人同登账号共用token
+  token-style: random-64  # token生成的风格
+  is-print: false         # 打印版本字符画
+  is-log: false           # 是否输出操作日志
+
+socketio:
+  # host: 127.0.0.1		#主机名,默认是 0.0.0.0 (这个设不设置无所谓,因为后面的 SocketConfig 类一般不用设置这个)
+  port: 63000			#监听端口
+  maxFramePayloadLength: 1048576
+  maxHttpContentLength: 1048576
+  bossCount: 1
+  workCount: 100
+  allowCustomRequests: true
+  upgradeTimeout: 1000000		#协议升级超时时间(毫秒),默认10000。HTTP握手升级为ws协议超时时间
+  pingTimeout: 6000000		    #Ping消息超时时间(毫秒),默认60000,这个时间间隔内没有接收到心跳消息就会发送超时事件
+  pingInterval: 25000			#Ping消息间隔(毫秒),默认25000。客户端向服务器发送一条心跳消息间隔

+ 9 - 0
taphole-l2-start/src/main/resources/banner.txt

@@ -0,0 +1,9 @@
+Spring Boot Version: ${spring-boot.version}
+
+
+#####   ##   #####  #    #  ####  #      ######
+  #    #  #  #    # #    # #    # #      #
+  #   #    # #    # ###### #    # #      #####
+  #   ###### #####  #    # #    # #      #
+  #   #    # #      #    # #    # #      #
+  #   #    # #      #    #  ####  ###### ######

+ 85 - 0
taphole-l2-start/src/main/resources/log4j2-spring.xml

@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- 日志级别排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
+<configuration monitorInterval="5">
+
+    <!-- 变量配置 -->
+    <Properties>
+        <property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />
+        <property name="FILE_PATH" value="./logs/l2" />
+        <property name="FILE_NAME" value="admin-log4j2" />
+    </Properties>
+
+    <appenders>
+        <!-- 控制台输出 -->
+        <console name="Console" target="SYSTEM_OUT">
+            <PatternLayout pattern="${LOG_PATTERN}"/>
+            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
+        </console>
+
+        <!-- 临时测试日志 -->
+        <File name="Filelog" fileName="${FILE_PATH}/test.log" append="false">
+            <PatternLayout pattern="${LOG_PATTERN}"/>
+        </File>
+
+        <!-- Info日志分割压缩 -->
+        <RollingFile name="RollingFileInfo" fileName="${FILE_PATH}/info.log" filePattern="${FILE_PATH}/${FILE_NAME}-INFO-%d{yyyy-MM-dd}_%i.log.gz">
+            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
+            <PatternLayout pattern="${LOG_PATTERN}"/>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1"/>
+                <SizeBasedTriggeringPolicy size="10MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="15"/>
+        </RollingFile>
+
+        <!-- warn日志分割压缩 -->
+        <RollingFile name="RollingFileWarn" fileName="${FILE_PATH}/warn.log" filePattern="${FILE_PATH}/${FILE_NAME}-WARN-%d{yyyy-MM-dd}_%i.log.gz">
+            <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
+            <PatternLayout pattern="${LOG_PATTERN}"/>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1"/>
+                <SizeBasedTriggeringPolicy size="10MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="15"/>
+        </RollingFile>
+
+        <!-- error日志分割压缩 -->
+        <RollingFile name="RollingFileError" fileName="${FILE_PATH}/error.log" filePattern="${FILE_PATH}/${FILE_NAME}-ERROR-%d{yyyy-MM-dd}_%i.log.gz">
+            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
+            <PatternLayout pattern="${LOG_PATTERN}"/>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1"/>
+                <SizeBasedTriggeringPolicy size="10MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="15"/>
+        </RollingFile>
+    </appenders>
+
+    <loggers>
+        <!-- 过滤指定DEBUG信息 -->
+        <logger name="org.mybatis" level="info" additivity="false">
+            <AppenderRef ref="Console"/>
+        </logger>
+
+        <!-- 监控系统信息 -->
+        <Logger name="org.springframework" level="info" additivity="false">
+            <AppenderRef ref="Console"/>
+        </Logger>
+
+        <!-- 监控系统信息 -->
+        <Logger name="org.jinterop" level="error" additivity="false">
+            <AppenderRef ref="Console"/>
+        </Logger>
+
+        <!-- 初始化日志 -->
+        <root level="info">
+            <appender-ref ref="Console"/>
+            <appender-ref ref="Filelog"/>
+            <appender-ref ref="RollingFileInfo"/>
+            <appender-ref ref="RollingFileWarn"/>
+            <appender-ref ref="RollingFileError"/>
+        </root>
+    </loggers>
+
+</configuration>

+ 3 - 13
taphole-l2/pom.xml

@@ -8,23 +8,13 @@
         <groupId>com.sckj</groupId>
         <version>1.0.0</version>
     </parent>
-
     <modelVersion>4.0.0</modelVersion>
-    <artifactId>taphole-l2</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter</artifactId>
-        </dependency>
 
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-test</artifactId>
-            <scope>test</scope>
-        </dependency>
+    <artifactId>taphole-l2</artifactId>
 
+    <name>taphole-l2</name>
 
+    <dependencies>
         <dependency>
             <groupId>com.sckj</groupId>
             <artifactId>taphole-common</artifactId>

+ 3 - 3
taphole-l2/src/main/java/com/sckj/l2/dto/L2Data.java

@@ -19,7 +19,7 @@ public class L2Data implements Serializable {
     private String tapholeId;
 
     @ApiModelProperty(value = "出铁次数编号")
-    private String ironNo;
+    private Long ironNo;
 
     @ApiModelProperty(value = "出铁时间")
     private String ironCosttime;
@@ -78,7 +78,7 @@ public class L2Data implements Serializable {
 
     public void toDataStream(DataOutputStream dos) throws Exception {
         dos.writeUTF(tapholeId);
-        dos.writeUTF(ironNo);
+        dos.writeLong(ironNo);
         dos.writeUTF(ironCosttime);
         dos.writeUTF(ironWeight);
         dos.writeUTF(slagWeight);
@@ -100,7 +100,7 @@ public class L2Data implements Serializable {
     public static L2Data fromDataStream(DataInputStream dis) throws Exception {
         L2Data data = new L2Data();
         data.tapholeId = dis.readUTF();
-        data.ironNo = dis.readUTF();
+        data.ironNo = dis.readLong();
         data.ironCosttime = dis.readUTF();
         data.ironWeight = dis.readUTF();
         data.slagWeight = dis.readUTF();

+ 32 - 4
taphole-l2/src/main/java/com/sckj/l2/entity/TL2Data.java

@@ -17,7 +17,9 @@ import lombok.Data;
 import java.io.Serializable;
 import java.util.Date;
 
-
+@HeadStyle(fillPatternType = FillPatternTypeEnum.NO_FILL,fillForegroundColor = -1)
+@HeadFontStyle(fontHeightInPoints = 16)
+@HeadRowHeight(40)
 @Data
 @ApiModel("L2数据")
 @TableName("t_l2_data")
@@ -26,69 +28,95 @@ public class TL2Data implements Serializable {
     private static final long serialVersionUID = 1L;
 
     @ApiModelProperty(value = "创建时间")
+    @ExcelIgnore
     private Date createTime;
 
-
     @ApiModelProperty(value = "id")
+    @ExcelIgnore
     private Long id;
 
     @ApiModelProperty(value = "锅炉编号")
+    @ExcelIgnore
     private Long boilerId;
 
     @ApiModelProperty(value = "铁口区域编号")
+    @ExcelIgnore
     private Long tapholeId;
 
-    @TableId(value="id", type= IdType.INPUT)
+    @TableId(value = "id", type = IdType.INPUT)
     @ApiModelProperty(value = "出铁次数编号")
-    private String ironNo;
+    @ExcelProperty("出铁次数编号")
+    @ColumnWidth(25)
+    private Long ironNo;
 
     @ApiModelProperty(value = "出铁时间")
+    @ExcelProperty("出铁时间")
+    @ColumnWidth(25)
     private String ironCosttime;
 
     @ApiModelProperty(value = "实际出铁量")
+    @ExcelProperty("实际出铁量")
+    @ColumnWidth(25)
     private Double ironWeight;
 
     @ApiModelProperty(value = "实际渣量")
+    @ExcelProperty("实际渣量")
+    @ColumnWidth(25)
     private String slagWeight;
 
     @ApiModelProperty(value = "铁水平均温度")
+    @ExcelIgnore
     private String avgTemp;
 
     @ApiModelProperty(value = "泥炮量")
     private String mudWeight;
 
     @ApiModelProperty(value = "钻杆直径")
+    @ExcelIgnore
     private String pollMm;
 
     @ApiModelProperty(value = "开口深度")
+    @ExcelIgnore
     private String openDepth;
 
     @ApiModelProperty(value = "上料总干量")
+    @ExcelIgnore
     private Double totalDry;
 
     @ApiModelProperty(value = "开始时间")
+    @ExcelIgnore
     private String ironStarttime;
 
     @ExcelProperty("结束时间")
+    @ExcelIgnore
     private String ironEndtime;
 
     @ApiModelProperty(value = "碳")
+    @ExcelIgnore
     private String elementC;
 
+    @ApiModelProperty(value = "硅")
     @ExcelIgnore
     private String elementSi;
 
+    @ApiModelProperty(value = "锰")
     @ExcelIgnore
     private String elementMn;
 
+    @ApiModelProperty(value = "磷")
     @ExcelIgnore
     private String elementP;
 
+    @ApiModelProperty(value = "硫")
     @ExcelIgnore
     private String elementS;
 
+    @ApiModelProperty(value = "钛")
     @ExcelIgnore
     private String elementTi;
 
+    @ApiModelProperty(value = "理论铁量")
+    @ExcelIgnore
+    private String theoryWeight;
 
 }

+ 1 - 1
taphole-l2/src/main/java/com/sckj/l2/entity/TL2Material.java

@@ -41,7 +41,7 @@ public class TL2Material implements Serializable {
     private Long tapholeId;
 
     @ApiModelProperty(value = "出铁次数编号")
-    private String ironNo;
+    private Long ironNo;
 
     @ApiModelProperty(value = "L1发过来的charge号")
     private String chargeNo;

+ 1 - 1
taphole-l2/src/main/java/com/sckj/l2/service/impl/TL2DataServiceImpl.java

@@ -37,7 +37,7 @@ public class TL2DataServiceImpl extends ServiceImpl<TL2DataMapper, TL2Data> {
      */
     public List<TL2Data> getLatest2Data() {
         LambdaQueryWrapper<TL2Data> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.isNotNull(TL2Data::getIronEndtime).orderByDesc(TL2Data::getIronNo).last("limit 2");
+        queryWrapper.isNotNull(TL2Data::getIronNo).isNotNull(TL2Data::getIronWeight).isNotNull(TL2Data::getTheoryWeight).orderByDesc(TL2Data::getIronNo).last("limit 2");
         List<TL2Data> list = list(queryWrapper);
         return list;
     }

+ 1 - 1
taphole-opc/src/main/java/com/sckj/opc/controller/OPCDAController.java

@@ -5,7 +5,7 @@ import com.sckj.common.core.AjaxResult;
 import com.sckj.common.enums.ErrorEnum;
 import com.sckj.opc.entity.OPCPoint;
 import com.sckj.opc.entity.OPCServer;
-import com.sckj.opc.opcua.OPCDAServiceImpl;
+import com.sckj.opc.dauaservice.OPCDAServiceImpl;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.PostMapping;

+ 1 - 1
taphole-opc/src/main/java/com/sckj/opc/controller/OPCUAController.java

@@ -4,7 +4,7 @@ import com.sckj.common.aop.NotLogin;
 import com.sckj.common.core.AjaxResult;
 import com.sckj.opc.entity.OPCPoint;
 import com.sckj.opc.entity.OPCServer;
-import com.sckj.opc.opcua.OPCUAServiceImpl;
+import com.sckj.opc.dauaservice.OPCUAServiceImpl;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.PostMapping;

+ 1 - 2
taphole-opc/src/main/java/com/sckj/opc/opcua/OPCDAServiceImpl.java → taphole-opc/src/main/java/com/sckj/opc/dauaservice/OPCDAServiceImpl.java

@@ -1,4 +1,4 @@
-package com.sckj.opc.opcua;
+package com.sckj.opc.dauaservice;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.google.common.eventbus.AsyncEventBus;
@@ -12,7 +12,6 @@ import com.sckj.opc.service.OPCServerServiceImpl;
 import com.sckj.opc.utils.CustomUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
-import org.apache.commons.lang3.StringUtils;
 import org.jinterop.dcom.common.JIException;
 import org.openscada.opc.lib.common.ConnectionInformation;
 import org.openscada.opc.lib.da.*;

+ 1 - 5
taphole-opc/src/main/java/com/sckj/opc/opcua/OPCUAServiceImpl.java → taphole-opc/src/main/java/com/sckj/opc/dauaservice/OPCUAServiceImpl.java

@@ -1,4 +1,4 @@
-package com.sckj.opc.opcua;
+package com.sckj.opc.dauaservice;
 
 import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -17,9 +17,6 @@ import com.sckj.opc.utils.KeyStoreLoader;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
 import org.eclipse.milo.opcua.sdk.client.OpcUaClient;
-import org.eclipse.milo.opcua.sdk.client.SessionActivityListener;
-import org.eclipse.milo.opcua.sdk.client.api.ServiceFaultListener;
-import org.eclipse.milo.opcua.sdk.client.api.UaSession;
 import org.eclipse.milo.opcua.sdk.client.api.config.OpcUaClientConfigBuilder;
 import org.eclipse.milo.opcua.sdk.client.api.identity.AnonymousProvider;
 import org.eclipse.milo.opcua.sdk.client.api.identity.IdentityProvider;
@@ -40,7 +37,6 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
 import javax.annotation.Resource;
 import java.net.URI;

+ 0 - 149
taphole-opc/src/main/java/com/sckj/opc/dto/L2Data.java

@@ -1,149 +0,0 @@
-package com.sckj.opc.dto;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * @Author feng
- * @Date 2024-12-18 上午 09:47
- * @Description TODO
- */
-@Data
-public class L2Data implements Serializable {
-
-    @ApiModelProperty(value = "铁口区域编号")
-    private String tapholeId;
-
-    @ApiModelProperty(value = "出铁次数编号")
-    private String ironNo;
-
-    @ApiModelProperty(value = "出铁时间")
-    private String ironCosttime;
-
-    @ApiModelProperty(value = "实际出铁量")
-    private String ironWeight;
-
-    @ApiModelProperty(value = "实际渣量")
-    private String slagWeight;
-
-    @ApiModelProperty(value = "铁水平均温度")
-    private String avgTemp;
-
-    @ApiModelProperty(value = "泥炮量")
-    private String mudWeight;
-
-    @ApiModelProperty(value = "钻杆直径")
-    private String pollMm;
-
-    @ApiModelProperty(value = "开口深度")
-    private String openDepth;
-
-    @ApiModelProperty(value = "上料总干量")
-    private String totalDry;
-
-    @ApiModelProperty(value = "开始时间")
-    private String ironStarttime;
-
-    @ApiModelProperty(value = "结束时间")
-    private String ironEndtime;
-
-    //铁水成分 碳
-    @ApiModelProperty(value = "碳")
-    private String elementC;
-
-    //铁水成分 硅
-    @ApiModelProperty(value = "硅")
-    private String elementSi;
-
-    //铁水成分 锰
-    @ApiModelProperty(value = "锰")
-    private String elementMn;
-
-    //铁水成分 磷
-    @ApiModelProperty(value = "磷")
-    private String elementP;
-
-    //铁水成分 硫
-    @ApiModelProperty(value = "硫")
-    private String elementS;
-
-    //铁水成分 钛
-    @ApiModelProperty(value = "钛")
-    private String elementTi;
-
-
-    public void toDataStream(DataOutputStream dos) throws Exception {
-        dos.writeUTF(tapholeId);
-        dos.writeUTF(ironNo);
-        dos.writeUTF(ironCosttime);
-        dos.writeUTF(ironWeight);
-        dos.writeUTF(slagWeight);
-        dos.writeUTF(avgTemp);
-        dos.writeUTF(mudWeight);
-        dos.writeUTF(pollMm);
-        dos.writeUTF(openDepth);
-        dos.writeUTF(totalDry);
-        dos.writeUTF(ironStarttime);
-        dos.writeUTF(ironEndtime);
-        dos.writeUTF(elementC);
-        dos.writeUTF(elementSi);
-        dos.writeUTF(elementMn);
-        dos.writeUTF(elementP);
-        dos.writeUTF(elementS);
-        dos.writeUTF(elementTi);
-    }
-
-    public static L2Data fromDataStream(DataInputStream dis) throws Exception {
-        L2Data data = new L2Data();
-        data.tapholeId = dis.readUTF();
-        data.ironNo = dis.readUTF();
-        data.ironCosttime = dis.readUTF();
-        data.ironWeight = dis.readUTF();
-        data.slagWeight = dis.readUTF();
-        data.avgTemp = dis.readUTF();
-        data.mudWeight = dis.readUTF();
-        data.pollMm = dis.readUTF();
-        data.openDepth = dis.readUTF();
-        data.totalDry = dis.readUTF();
-        data.ironStarttime = dis.readUTF();
-        data.ironEndtime = dis.readUTF();
-        data.elementC = dis.readUTF();
-        data.elementSi = dis.readUTF();
-        data.elementMn = dis.readUTF();
-        data.elementP = dis.readUTF();
-        data.elementS = dis.readUTF();
-        data.elementTi = dis.readUTF();
-        return data;
-    }
-
-    @Override
-    public String toString() {
-        return "L2Data{" +
-                "tapholeId='" + tapholeId + '\'' +
-                ", ironNo='" + ironNo + '\'' +
-                ", ironCosttime='" + ironCosttime + '\'' +
-                ", ironWeight='" + ironWeight + '\'' +
-                ", slagWeight='" + slagWeight + '\'' +
-                ", avgTemp='" + avgTemp + '\'' +
-                ", mudWeight='" + mudWeight + '\'' +
-                ", pollMm='" + pollMm + '\'' +
-                ", openDepth='" + openDepth + '\'' +
-                ", totalDry='" + totalDry + '\'' +
-                ", ironStarttime='" + ironStarttime + '\'' +
-                ", ironEndtime='" + ironEndtime + '\'' +
-                ", elementC='" + elementC + '\'' +
-                ", elementSi='" + elementSi + '\'' +
-                ", elementMn='" + elementMn + '\'' +
-                ", elementP='" + elementP + '\'' +
-                ", elementS='" + elementS + '\'' +
-                ", elementTi='" + elementTi + '\'' +
-                '}';
-    }
-}

+ 0 - 76
taphole-opc/src/main/java/com/sckj/opc/dto/L2Material.java

@@ -1,76 +0,0 @@
-package com.sckj.opc.dto;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.Serializable;
-import java.util.Date;
-
-@Data
-public class L2Material implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "创建时间")
-    private Date createTime;
-
-    @TableId(value = "id", type = IdType.AUTO)
-    @ApiModelProperty(value = "id")
-    private Long id;
-
-    @ApiModelProperty(value = "锅炉编号")
-    private Long boilerId;
-
-    @ApiModelProperty(value = "铁口区域编号")
-    private Long tapholeId;
-
-    @ApiModelProperty(value = "L1发过来的charge号")
-    private String chargeNo;
-
-    @ApiModelProperty(value = "下料时间点")
-    private String downTime;
-
-    @ApiModelProperty(value = "干量")
-    private String dryWeight;
-
-    @ApiModelProperty(value = "矿石装入量")
-    private String oreWeight;
-
-    @ApiModelProperty(value = "焦炭装入量")
-    private String cokeWeight;
-
-    @ApiModelProperty(value = "副原料装入量")
-    private String asstmaterialWeight;
-
-    @ApiModelProperty(value = "综合品味")
-    private String compositeTaste;
-
-
-    public void toDataStream(DataOutputStream dos) throws Exception {
-        dos.writeUTF(chargeNo);
-        dos.writeUTF(downTime);
-        dos.writeUTF(dryWeight);
-        dos.writeUTF(oreWeight);
-        dos.writeUTF(cokeWeight);
-        dos.writeUTF(asstmaterialWeight);
-        dos.writeUTF(compositeTaste);
-    }
-
-    public static L2Material fromDataStream(DataInputStream dis) throws Exception {
-        L2Material data = new L2Material();
-        data.chargeNo = dis.readUTF();
-        data.downTime = dis.readUTF();
-        data.dryWeight = dis.readUTF();
-        data.oreWeight = dis.readUTF();
-        data.cokeWeight = dis.readUTF();
-        data.asstmaterialWeight = dis.readUTF();
-        data.compositeTaste = dis.readUTF();
-        return data;
-    }
-
-
-}

+ 3 - 0
taphole-opc/src/main/java/com/sckj/opc/entity/OPCPoint.java

@@ -55,4 +55,7 @@ public class OPCPoint {
     @ApiModelProperty(value = "请求频率(秒)")
     private int period;
 
+    @ApiModelProperty(value = "数据类型")
+    private String dataType;
+
 }