From 5c1c365628826eba34b6a9d84b8691454484ad92 Mon Sep 17 00:00:00 2001
From: wu <731351411@qq.com>
Date: 星期一, 09 九月 2024 08:52:58 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes

---
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/TemperingTask.java |  108 +++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 83 insertions(+), 25 deletions(-)

diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/TemperingTask.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/TemperingTask.java
index ac92054..86343e1 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/TemperingTask.java
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/TemperingTask.java
@@ -8,15 +8,21 @@
 import com.mes.damage.entity.Damage;
 import com.mes.damage.service.DamageService;
 import com.mes.device.PlcParameterObject;
+import com.mes.sysdict.entity.SysDictData;
+import com.mes.sysdict.service.SysDictDataService;
 import com.mes.temperingglass.entity.TemperingGlassInfo;
 import com.mes.temperingglass.service.TemperingGlassInfoService;
 import com.mes.temperingrecord.entity.TemperingRecord;
 import com.mes.temperingrecord.service.TemperingRecordService;
+import com.mes.tools.S7control;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
+import java.util.Comparator;
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -31,7 +37,7 @@
 public class TemperingTask {
 
     @Autowired
-    private TemperingRecordService temporalRecordService;
+    private TemperingRecordService temperingRecordService;
 
     @Autowired
     private TemperingGlassInfoService temporaryGlassInfoService;
@@ -39,53 +45,105 @@
     @Autowired
     private DamageService damageService;
 
+    @Autowired
+    private SysDictDataService sysDictDataService;
+
     private static final String ALONE_STATE = "0";
 
+    @Value("${mes.width}")
+    private Integer temperingWidth;
+    @Value("${mes.height}")
+    private Integer temperingHeight;
 
     @Scheduled(fixedDelay = 1000)
     public void temperingGlassBefore() {
         Date startDate = new Date();
         log.info("鏈浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate);
         PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
+        S7control plcControl = S7object.getinstance().plccontrol;
         String state = plcParameterObject.getPlcParameter("state").getValue();
 //        褰撳墠杩炵嚎鐘舵�佷负
         if (ALONE_STATE.equals(state)) {
-            log.info("褰撳墠閽㈠寲鐐夎繛绾挎ā寮忎负锛歿},涓嶆墽琛岃浠诲姟", state);
+            log.info("褰撳墠閽㈠寲鐐夎繛绾挎ā寮忎负锛歿}锛�(0锛氭墜鍔紱1锛氳繛绾�),涓嶆墽琛岃浠诲姟", state);
             return;
         }
         //灏嗙‘璁ゅ瓧缃负0
-        S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("confirmationWord").getAddress(), 0);
-
-        //todo:鑾峰彇閽㈠寲鐗堝浘涓姸鎬佷负2鐨勶紙杩涚倝瀹屾垚鐨勭幓鐠冧俊鎭級  涓斾笉瀛樺湪閽㈠寲璁板綍琛ㄥ唴鐨�
-        List<Object> temperRecordIdListObj = temporalRecordService.listObjs(new QueryWrapper<TemperingRecord>().select("distinct tempering_layout_id"));
-
-        List<String> temperRecordIdList = temperRecordIdListObj.stream().map(String::valueOf).collect(Collectors.toList());
-        if (CollectionUtils.isEmpty(temperRecordIdList)) {
+        plcControl.writeWord(plcParameterObject.getPlcParameter("confirmationWord").getAddress(), 0);
+        //鍙兘鏈夊嚑鐐夌幓鐠冨悓鏃跺湪閽紝闇�瑕佽幏鍙栭挗鍖栧皬鐗囪〃涓殑鏁版嵁淇℃伅鐘舵�佷负2锛堟棆杞彴鐜荤拑宸查�佸嚭鏈挗鍖栵紝姝e湪閽㈠寲锛�
+        List<TemperingGlassInfo> temperingGlassInfoList = temporaryGlassInfoService.list(new LambdaQueryWrapper<TemperingGlassInfo>()
+                .eq(TemperingGlassInfo::getState, Const.TEMPERING_START));
+        if (CollectionUtils.isEmpty(temperingGlassInfoList)) {
             log.info("褰撳墠绯荤粺娌℃湁闇�瑕侀挗鍖栫殑鐜荤拑淇℃伅");
             return;
         }
-        List<TemperingGlassInfo> list = temporaryGlassInfoService.list(new LambdaQueryWrapper<TemperingGlassInfo>()
-                .eq(TemperingGlassInfo::getState, Const.TEMPERING_START).notIn(TemperingGlassInfo::getTemperingLayoutId, temperRecordIdList));
-        if (CollectionUtils.isEmpty(list)) {
-            log.info("褰撳墠绯荤粺娌℃湁闇�瑕侀挗鍖栫殑鐜荤拑淇℃伅");
-            return;
-        }
-        List<Integer> temperingLayoutIdList = list.stream().map(TemperingGlassInfo::getTemperingLayoutId).distinct().collect(Collectors.toList());
-        if (CollectionUtils.isNotEmpty(temperRecordIdList)) {
-            temperingLayoutIdList.removeAll(temperRecordIdList);
-        }
-        if (CollectionUtils.isEmpty(temperingLayoutIdList)) {
-            log.info("褰撳墠鐜荤拑鏈夋鍦ㄩ挗鍖栫殑浠诲姟");
-        }
-//        鑾峰彇閽㈠寲涓嬬墖琛ㄧ姸鎬佷负2鐨勭幓鐠冧俊鎭�
+        TemperingGlassInfo maxGlassInfo = temperingGlassInfoList.stream().max(Comparator.comparingLong(TemperingGlassInfo::getId)).get();
+        //鎷垮埌宸ョ▼id鍙婄倝鍙�
+//        List<EngineerTemperingDTO> engineerTemperingList = temperingGlassInfoList.stream().map(e -> {
+//            EngineerTemperingDTO engineerTemperingDTO = new EngineerTemperingDTO();
+//            BeanUtils.copyProperties(e, engineerTemperingDTO);
+//            return engineerTemperingDTO;
+//        }).distinct().collect(Collectors.toList());
+        //灏嗘鍦ㄩ挗鍖栫殑鐐夊彿杩囨护鎺夛紝浠呰幏鍙栧緟閽㈠寲鐨勭幓鐠�
+//        List<TemperingRecord> temperingRecords = temperingRecordService.list(new LambdaQueryWrapper<TemperingRecord>().and(i -> i.isNull(TemperingRecord::getCoolEnergy).or().eq(TemperingRecord::getCoolEnergy, "")));
+//        List<EngineerTemperingDTO> temperingList = new ArrayList<>();
+//        if (CollectionUtils.isNotEmpty(temperingRecords)) {
+//            temperingList = temperingRecords.stream().map(e -> {
+//                EngineerTemperingDTO engineerTemperingDTO = new EngineerTemperingDTO();
+//                BeanUtils.copyProperties(e, engineerTemperingDTO);
+//                return engineerTemperingDTO;
+//            }).collect(Collectors.toList());
+//        }
+//        engineerTemperingList.removeAll(temperingList);
+//        if (CollectionUtils.isEmpty(engineerTemperingList)) {
+//            log.info("娌℃湁寰呴挗鍖栫殑浠诲姟锛岀粨鏉�");
+//            return;
+//        }
+//        if (engineerTemperingList.size() > 1) {
+//            log.info("瀛樺湪澶氱倝寰呴挗鍖栫殑浠诲姟锛岃妫�鏌ョ幇鍦烘槸鍚︽湁寮傚父鏁版嵁鏈鐞�");
+//            return;
+//        }
+//        EngineerTemperingDTO temperingDTO = engineerTemperingList.get(0);
+        //鑾峰彇寰呴挗鍖栫殑鎵�鏈夌幓鐠冧俊鎭�
+        List<TemperingGlassInfo> temperingGlassList = temperingGlassInfoList.stream()
+                .filter(e -> e.getEngineerId().equals(maxGlassInfo.getEngineerId())
+                        && e.getTemperingLayoutId().equals(maxGlassInfo.getTemperingLayoutId()))
+                .sorted(Comparator.comparing(TemperingGlassInfo::getTemperingFeedSequence)).collect(Collectors.toList());
+        //鎸夌収鑶滅郴鑾峰彇鐜荤拑鏉愯川
+        SysDictData glassTypeSysDictData = sysDictDataService.getOne(new QueryWrapper<SysDictData>()
+                .eq(StringUtils.isNotBlank(temperingGlassList.get(0).getFilmsid()), "dict_label", temperingGlassList.get(0).getFilmsid()));
 
+        double sumArea = temperingGlassList.stream().mapToDouble(e -> e.getWidth() * e.getHeight()).sum();
+        double maxArea = temperingGlassList.stream().mapToDouble(e -> e.getWidth() * e.getHeight()).max().orElse(0.0);
+        double minArea = temperingGlassList.stream().mapToDouble(e -> e.getWidth() * e.getHeight()).min().orElse(0.0);
+        double areaDifference = (10000 * (maxArea - minArea) / maxArea);
+        double loadingRate = (int) (10000 * sumArea / (temperingHeight * temperingWidth));
+        TemperingRecord temperingRecord = new TemperingRecord();
+        temperingRecord.setEngineerId(maxGlassInfo.getEngineerId());
+        temperingRecord.setTemperingLayoutId(maxGlassInfo.getTemperingLayoutId());
+        temperingRecord.setGlassType(Integer.parseInt(glassTypeSysDictData.getDictTypeValue()));
+        temperingRecord.setTemperingType(1);//鍏ㄩ挗
+        temperingRecord.setThickness(temperingGlassList.get(0).getThickness());
+        temperingRecord.setAreaDifference(areaDifference);
+        temperingRecord.setLoadingRate(loadingRate);
+        temperingRecord.setState(Const.GLASS_STATE_NEW);
+        //濡傛灉鍑虹幇鍚屼竴鐐夐噸璇昏澶勭悊锛屼富閿洿鎺ュ紓甯稿鐞嗭紝涓嶄細鍙戠粰plc閽㈠寲淇℃伅
+        temperingRecordService.save(temperingRecord);
+//      鍚憄lc鍙戦�侀挗鍖栦俊鎭�
+        plcControl.writeWord(plcParameterObject.getPlcParameter("temperingLayoutId").getAddress(), maxGlassInfo.getTemperingLayoutId());
+        plcControl.writeWord(plcParameterObject.getPlcParameter("filmsid").getAddress(), Integer.parseInt(glassTypeSysDictData.getDictTypeValue()));
+        plcControl.writeWord(plcParameterObject.getPlcParameter("temperingType").getAddress(), 1);
+        plcControl.writeWord(plcParameterObject.getPlcParameter("thickness").getAddress(), (int) (temperingGlassList.get(0).getThickness() * 10));
+        plcControl.writeWord(plcParameterObject.getPlcParameter("areaDifference").getAddress(), (int) areaDifference);
+        plcControl.writeWord(plcParameterObject.getPlcParameter("loadingRate").getAddress(), (int) loadingRate);
         //瀹屾垚浠诲姟灏嗙‘璁ゅ瓧缃负1
-        S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("confirmationWord").getAddress(), 1);
+        plcControl.writeWord(plcParameterObject.getPlcParameter("confirmationWord").getAddress(), 1);
+        Date endDate = new Date();
+        log.info("鏈浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms", endDate, endDate.getTime() - startDate.getTime());
     }
 
     @Scheduled(fixedDelay = 1000)
     public void temperingGlassAfter() {
-
+        //鏆備笉澶勭悊
     }
 
     @Scheduled(fixedDelay = 1000)

--
Gitblit v1.8.0