From c377d90fe2a01c2118f6c69c3c177f75be7c318b Mon Sep 17 00:00:00 2001
From: wangfei <3597712270@qq.com>
Date: 星期五, 29 十一月 2024 15:20:51 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/OpcNGTemperingTask.java | 157 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 157 insertions(+), 0 deletions(-)
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/OpcNGTemperingTask.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/OpcNGTemperingTask.java
new file mode 100644
index 0000000..cd836a3
--- /dev/null
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/OpcNGTemperingTask.java
@@ -0,0 +1,157 @@
+package com.mes.job;
+
+
+import com.kangaroohy.milo.model.ReadWriteEntity;
+import com.kangaroohy.milo.service.MiloService;
+import com.mes.pp.entity.OptimizeHeatDetail;
+import com.mes.pp.entity.OptimizeHeatLayout;
+import com.mes.pp.service.OptimizeHeatDetailService;
+import com.mes.pp.service.OptimizeHeatLayoutService;
+import com.mes.temperingglass.entity.TemperingGlass;
+import com.mes.temperingglass.entity.TemperingGlassInfo;
+import com.mes.temperingglass.service.TemperingGlassInfoService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.Comparator;
+import java.util.List;
+import java.util.Optional;
+
+
+@Component
+@Slf4j
+public class OpcNGTemperingTask {
+
+ @Autowired(required = false)
+ MiloService miloService;
+
+ @Autowired
+ private TemperingGlassInfoService temperingAgoService;
+
+ @Autowired
+ private OptimizeHeatLayoutService optimizeHeatLayoutService;
+
+ @Autowired
+ private OptimizeHeatDetailService optimizeHeatDetailService;
+
+ /**
+ * 鎽嗙墖鍙拌姹傝繘鐗囬�昏緫澶勭悊
+ * fixedRate : 涓婁竴涓皟鐢ㄥ紑濮嬪悗鍐嶆璋冪敤鐨勫欢鏃讹紙涓嶇敤绛夊緟涓婁竴娆¤皟鐢ㄥ畬鎴愶級
+ * fixedDelay : 涓婁竴涓皟鐢ㄧ粨鏉熷悗鍐嶆璋冪敤鐨勫欢鏃�
+ */
+ //@Scheduled(fixedDelay = 1000)
+ public void requestTemperingTask() throws Exception {
+ ReadWriteEntity requestInTempering = miloService.readFromOpcUa("GH1S7.GH1S7.requestInTempering");//璇锋眰杩涚墖
+ ReadWriteEntity requestTemperingId = miloService.readFromOpcUa("GH1S7.GH1S7.requestTemperingId");//璇锋眰杩涚墖 鐐夊彿ID
+ Integer request = Integer.parseInt(requestInTempering.getValue().toString());
+ Integer id = Integer.parseInt(requestTemperingId.getValue().toString());
+ if (request == 0) {
+ miloService.writeToOpcUa(generateReadWriteEntity("GH1S7.GH1S7.responseInTempering", 0));//鍏佽閫佺墖娓呴浂
+ } else {
+ ReadWriteEntity placedNumber = miloService.readFromOpcUa("GH1S7.GH1S7.placedNumber");//宸叉憜鐗囨暟閲�
+ List<TemperingGlassInfo> glassList = temperingAgoService.selectGlassInfoById(id);
+ if (glassList.size() == Integer.parseInt(placedNumber.getValue().toString())) {
+ miloService.writeToOpcUa(generateReadWriteEntity("GH1S7.GH1S7.responseInTempering", 1));//鍐欏叆鍏佽閫佺墖
+ } else {
+ miloService.writeToOpcUa(generateReadWriteEntity("GH1S7.GH1S7.responseInTempering", 2));//涓嶆弧瓒宠繘鐐夋潯浠�
+ }
+ }
+ }
+
+ /**
+ * 閽㈠寲涓婄墖鍙颁笅鍙戝弬鏁伴�昏緫澶勭悊
+ * fixedRate : 涓婁竴涓皟鐢ㄥ紑濮嬪悗鍐嶆璋冪敤鐨勫欢鏃讹紙涓嶇敤绛夊緟涓婁竴娆¤皟鐢ㄥ畬鎴愶級
+ * fixedDelay : 涓婁竴涓皟鐢ㄧ粨鏉熷悗鍐嶆璋冪敤鐨勫欢鏃�
+ */
+ //@Scheduled(fixedDelay = 1000)
+ public void loadTemperingTask() throws Exception {
+ ReadWriteEntity loadTemperingId = miloService.readFromOpcUa("GH1S7.GH1S7.loadTemperingId");//杩涚墖瀹屾垚 鐐夊彿ID
+ getNewTemperingID(Integer.parseInt(loadTemperingId.getValue().toString()));//杩涚墖瀹屾垚 涓嬪彂鍙傛暟
+ }
+
+ //鑾峰彇鍒扮倝鍙穒d鎵ц鍙傛暟涓嬪彂浠诲姟
+ private void getNewTemperingID(Integer temperingid) throws Exception {
+ ReadWriteEntity AutoStatus = miloService.readFromOpcUa("GH1.GH1.AutoStatus");
+ if (1 != Integer.parseInt(AutoStatus.getValue().toString())) {
+ log.info("褰撳墠涓洪潪鑱旀満鐘舵�侊紝缁撴潫閽㈠寲涓嬪彂鍙傛暟浠诲姟");
+ return;
+ }
+ ReadWriteEntity QandA = miloService.readFromOpcUa("GH1.GH1.QandA");
+ ReadWriteEntity RecipeStatus = miloService.readFromOpcUa("GH1.GH1.RecipeStatus");
+ if (1 == Integer.parseInt(QandA.getValue().toString()) && 2 == Integer.parseInt(RecipeStatus.getValue().toString())) {
+ log.info("鐗堥潰淇℃伅宸茬粡涓嬪彂锛屽苟涓斿凡缁忓尮閰嶅弬鏁帮紝缁撴潫閽㈠寲涓嬪彂鍙傛暟浠诲姟");
+ return;
+ }
+ List<TemperingGlassInfo> glassList = temperingAgoService.selectGlassInfoById(temperingid);
+ if (glassList != null && glassList.size() > 0) {
+ int glasstype = GetGlassType(glassList.get(0).getFilmsid());//鑶滅郴
+ int process = 0;//閽㈠寲绫诲瀷
+ int thiness = (int) glassList.get(0).getThickness();//鍘氬害
+ String engineerId = glassList.get(0).getEngineerId();
+ Integer temperingLayoutId = glassList.get(0).getTemperingLayoutId();
+ OptimizeHeatLayout heatLayoutinfo = optimizeHeatLayoutService.selectHeatLayoutInfo(engineerId, temperingLayoutId);
+ int loadingRate = (int) (heatLayoutinfo.getLayoutRate() * 100); //瑁呰浇鐜�
+ loadingRate = loadingRate > 10000 ? 10000 : loadingRate;
+ List<OptimizeHeatDetail> heatDetailGlassInfoList = optimizeHeatDetailService.selectHeatDetailGlassInfo(engineerId, temperingLayoutId);
+
+ Optional<Double> maxProductOpt = heatDetailGlassInfoList.stream()
+ .map(ohd -> ohd.getWidth() * ohd.getHeight())
+ .max(Double::compareTo);
+ double totalarea = heatDetailGlassInfoList.stream().mapToDouble(ohd -> ohd.getWidth() * ohd.getHeight()).sum();
+
+ int shape = 0; //鏈�澶х墖鍗犳�婚潰绉殑姣斾緥
+ if (maxProductOpt.isPresent()) {
+ shape = (int) (maxProductOpt.get() / totalarea * 100);
+ }
+ shape = shape > 10000 ? 10000 : shape;
+ int workmode = 0; //宸ヤ綅鏁�
+ int furmode = 0; //鍙屽/鑱斿
+
+ miloService.writeToOpcUa(generateReadWriteEntity("GH1.GH1.TemperingId", temperingid));//鍐欏叆鐐夊彿
+ miloService.writeToOpcUa(generateReadWriteEntity("GH1.GH1.GlassType", glasstype));//鍐欏叆鐜荤拑绫诲瀷
+ miloService.writeToOpcUa(generateReadWriteEntity("GH1.GH1.Process", process));//鍐欏叆閽㈠寲绫诲瀷 鍏ㄩ挗 鍗婇挗 闃茬伀
+ miloService.writeToOpcUa(generateReadWriteEntity("GH1.GH1.Thickness", thiness));//鍐欏叆鍘氬害
+ miloService.writeToOpcUa(generateReadWriteEntity("GH1.GH1.LoadingRate", loadingRate));//鍐欏叆瑁呰浇鐜�
+ miloService.writeToOpcUa(generateReadWriteEntity("GH1.GH1.Shape", shape));//鍐欏叆澶х墖姣斾緥
+ miloService.writeToOpcUa(generateReadWriteEntity("GH1.GH1.WorkMode", workmode));//鍐欏叆宸ヤ綅鏁�
+ miloService.writeToOpcUa(generateReadWriteEntity("GH1.GH1.FurnaceMode", furmode));//鍐欏叆鐐変綋宸ヤ綔鏂瑰紡
+ log.info("鐐夊彿" + temperingid + "鐗堥潰淇℃伅灏濊瘯涓嬪彂");
+ }
+ }
+
+
+ //鏍规嵁鑶滅郴杩斿洖鐜荤拑绫诲瀷
+ private int GetGlassType(String glasstype) {
+ int result = 0;
+ String str = glasstype.toLowerCase();
+ if (str.contains("鐧界幓")) {
+ result = 0;
+ }
+ if (str.contains("瓒呯櫧")) {
+ result = 4;
+ }
+ if (str.contains("lowe") || str.contains("low-e")) {
+ result = 1;
+ }
+ if (str.contains("鍙岄摱")) {
+ result = 2;
+ }
+ if (str.contains("涓夐摱")) {
+ result = 3;
+ }
+ if (str.contains("鐑弽灏�")) {
+ result = 5;
+ }
+ return result;
+ }
+
+ private ReadWriteEntity generateReadWriteEntity(String identifier, Object value) {
+ return ReadWriteEntity.builder()
+ .identifier(identifier)
+ //Kep涓槸Long绫诲瀷锛屽嵆锛欼nt32锛孞ava涓殑int绫诲瀷
+ .value(value)
+ .build();
+ }
+}
--
Gitblit v1.8.0