From d219290089df8c9acd2e84ab0f135fc42e3b682d Mon Sep 17 00:00:00 2001
From: ZengTao <2773468879@qq.com>
Date: 星期二, 03 十二月 2024 09:11:02 +0800
Subject: [PATCH] 大理片调度逻辑修改,进出片改为升序,调度逻辑修改
---
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java | 130 +++++++++++++++++++++++++++++++++----------
1 files changed, 99 insertions(+), 31 deletions(-)
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
index 474bbf0..3d20506 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
@@ -80,6 +80,12 @@
@Value("${mes.max.secondLength}")
private String secondLength;
+ @Value("${mes.cache.cacheWidth}")
+ private double cacheWidth;
+
+ @Value("${mes.cache.cacheHeight}")
+ private double cacheHeight;
+
@Value("${mes.min.one.firstLength}")
private String minOneFirstLength;
@@ -94,7 +100,7 @@
public static String engineerId = "";
- //@Scheduled(fixedDelay = 1000)
+ @Scheduled(fixedDelay = 500)
public void plcHomeEdgTask() {
Date startDate = new Date();
log.info("鏈浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate);
@@ -104,9 +110,22 @@
String confirmationWrodValue = plcParameterObject.getPlcParameter("MES_confirmation_word").getValue();
//A08 A09琛ㄧず绾胯矾鐩稿悓 鍙仛绛変环 鏃犳暟鎹浆int寮傚父
String out08Glassstate = plcParameterObject.getPlcParameter("A08_glass_status").getValue();
+ String out09Glassstate = plcParameterObject.getPlcParameter("A09_glass_status").getValue();
String out10Glassstate = plcParameterObject.getPlcParameter("A10_glass_status").getValue();
String confirmationWrodAddress = plcParameterObject.getPlcParameter("MES_confirmation_word").getAddress();
String currentSlot = plcParameterObject.getPlcParameter("Current_slot").getValue();
+
+ if ("1".equals(out09Glassstate)) {
+ log.info("A09绌洪棽");
+ out08Glassstate = "1";
+ }
+
+// taskRequestTypeValue = "3";
+// out08Glassstate = "1";
+// out10Glassstate = "1";
+// currentSlot = "1";
+// confirmationWrodValue = "0";
+// glassIdeValue = "P24110201|17|1";
log.info("1銆佽幏鍙栧埌鐨勮姹傚瓧涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{}锛岃幏鍙栧埌鐨勭‘璁ゅ瓧涓猴細{}锛岃幏鍙栧埌鐨勫嚭鐗囩姸鎬佸垎鍒负锛欰09:{}銆丄10:{},褰撳墠鏍煎瓙鍙蜂负锛歿}",
taskRequestTypeValue, glassIdeValue, confirmationWrodValue, out08Glassstate, out10Glassstate, currentSlot);
@@ -128,12 +147,12 @@
if ("1".equals(taskRequestTypeValue) && result) {
log.info("2銆佽繘鐗囪姹傦紝涓旂‘璁ゅ瓧涓�0锛屾墽琛岃繘鐗囦换鍔�,鎵爜閲嶅ID楠岃瘉銆愭湁閲嶅=false,鏃犻噸澶�=true銆戯細{}", result);
inTo(glassIdeValue, confirmationWrodAddress, currentSlot);
- } else if ("2".equals(taskRequestTypeValue)) {
+ } else if ("2".equals(taskRequestTypeValue) && result) {
//09绌洪棽 锛�1 10绌洪棽 锛�2 閮界┖闂诧細3 鍏朵粬0
log.info("2銆佸嚭鐗囪姹傦紝涓旂‘璁ゅ瓧涓�0锛屾墽琛屽嚭鐗囦换鍔�");
outTo(Integer.parseInt(out08Glassstate),
- Integer.parseInt(out10Glassstate), confirmationWrodAddress, "", 0);
- } else if ("3".equals(taskRequestTypeValue)) {
+ Integer.parseInt(out10Glassstate), confirmationWrodAddress, "", Integer.parseInt(currentSlot));
+ } else if ("3".equals(taskRequestTypeValue) && result) {
log.info("2銆佽繘鐗囧拰鍑虹墖閮界┖闂诧紝鎵ц鍑虹墖浠诲姟");
//鍔犵瀛愰噷闈㈡槸鍚︽湁鐜荤拑锛屾湁鍏堝嚭锛屾棤鐜荤拑鍏堣繘
boolean outFlase = outTo(Integer.parseInt(out08Glassstate),
@@ -148,7 +167,7 @@
}
- @Scheduled(fixedDelay = 1000)
+ @Scheduled(fixedDelay = 500)
public void dealDamageTask() {
Date startDate = new Date();
log.info("鍗у紡鐞嗙墖鐮存崯鐜荤拑娓呴櫎浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate);
@@ -165,9 +184,9 @@
Damage damage = new Damage();
damage.setGlassId(e.getGlassId());
damage.setLine(e.getEndCell());
- damage.setWorkingProcedure("鍐峰姞宸�");
+ damage.setWorkingProcedure("纾ㄨ竟");
damage.setRemark("纾ㄨ竟鍓嶅崸寮忕悊鐗�");
- damage.setStatus(0);
+ damage.setStatus(1);
damage.setType(e.getTaskStatus());
return damage;
}).collect(Collectors.toList());
@@ -187,6 +206,16 @@
*/
public void inTo(String glassId, String confirmationWrodAddress, String currentSlot) {
log.info("1銆佹寜鐓х幓鐠僫d:{}鑾峰彇鐜荤拑灏忕墖淇℃伅,褰撳墠鏍煎瓙涓�:{}", glassId, currentSlot);
+
+ GlassInfo feedGlassInfo = glassInfoService.getOne(
+ new LambdaQueryWrapper<GlassInfo>()
+ .eq(GlassInfo::getGlassId, glassId)
+ );
+ if (Math.max(feedGlassInfo.getWidth(), feedGlassInfo.getHeight()) > cacheWidth || Math.min(feedGlassInfo.getWidth(), feedGlassInfo.getHeight()) > cacheHeight) {
+ log.info("1.1銆佺幓鐠冭秴杩囧崸寮忕悊鐗囨渶澶у昂瀵�:{}", feedGlassInfo);
+ return;
+ }
+
//娣诲姞杩涚墖浠诲姟 鏌ユ壘绌烘牸
EdgStorageCage nearestEmpty = edgStorageCageService.selectNearestEmpty(Integer.parseInt(currentSlot), Boolean.FALSE);
Assert.isTrue(null != nearestEmpty, "鏍煎瓙宸叉弧");
@@ -208,6 +237,7 @@
details.setSlot(nearestEmpty.getSlot());
details.setDeviceId(nearestEmpty.getDeviceId());
edgStorageCageDetailsService.save(details);
+ damageService.deleteByGlassId(glassId);
log.info("5銆佺幓鐠冧俊鎭凡瀛樺叆鐞嗙墖绗艰鎯呰〃锛岀幓鐠冧俊鎭负{}", details);
//娣诲姞杩涚墖浠诲姟
boolean taskCache = saveTaskCache(details.getGlassId(), 0, nearestEmpty.getSlot(), Const.GLASS_CACHE_TYPE_IN);
@@ -233,11 +263,13 @@
.eq(GlassInfo::getHeight, glassInfo.getHeight())
.eq(GlassInfo::getThickness, glassInfo.getThickness())
.eq(GlassInfo::getFilmsid, glassInfo.getFilmsid())
+ .eq(GlassInfo::getFlowCardId, glassInfo.getFlowCardId())
.eq(GlassInfo::getTotalLayer, glassInfo.getTotalLayer())
.eq(GlassInfo::getLayer, glassInfo.getLayer())
.eq(GlassInfo::getEngineerId, glassInfo.getEngineerId())
.notInSql(GlassInfo::getGlassId, "select distinct glass_id from edg_storage_cage_details " +
- "where engineer_id = '" + glassInfo.getEngineerId() + "' and width = " + glassInfo.getWidth() + " and height = " + glassInfo.getHeight())
+ "where engineer_id = '" + glassInfo.getEngineerId() + "' and width = " + glassInfo.getWidth() + " and height = " + glassInfo.getHeight()
+ + " and state != 100")
.orderByAsc(GlassInfo::getTemperingLayoutId)
.orderBy(Boolean.TRUE, sequenceOrder, GlassInfo::getTemperingFeedSequence)
.last("Limit 1");
@@ -272,17 +304,28 @@
// 鑾峰彇寰呭嚭绗肩殑鐜荤拑闇�瑕佹浛鎹㈢殑鐜荤拑淇℃伅
EdgStorageCageDetails swapGlassDetailInfo = edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
.eq(EdgStorageCageDetails::getGlassId, swapGlassId).eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN));
+
// 鐜荤拑灏忕墖琛ㄤ腑鐜荤拑宸茬粡鏇挎崲锛屾洿鏂板崸鐞嗙鍐呯幇鏈夌殑鍑嗗鍑虹鐨勭幓鐠冧俊鎭紝
if (null == swapGlassDetailInfo) {
+ GlassInfo glassInfoBase = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>()
+ .eq(GlassInfo::getGlassId, glassId));
//闇�瑕佹浛鎹㈢殑鐜荤拑涓哄瓨杩涘崸鐞嗭紝浠呴渶鏇存柊褰撳墠闇�瑕佸嚭绗肩殑鐜荤拑淇℃伅鍗冲彲
edgStorageCageDetailsService.update(new LambdaUpdateWrapper<EdgStorageCageDetails>()
- .eq(EdgStorageCageDetails::getGlassId, glassId).set(EdgStorageCageDetails::getGlassId, swapGlassId));
+ .eq(EdgStorageCageDetails::getGlassId, glassId)
+ .set(EdgStorageCageDetails::getTemperingLayoutId, glassInfoBase.getTemperingLayoutId())
+ .set(EdgStorageCageDetails::getTemperingFeedSequence, glassInfoBase.getTemperingFeedSequence()));
} else {
//闇�瑕佹浛鎹㈢殑鐜荤拑閮藉湪鍗х悊鍐咃紝鎸夌収鐜荤拑id瀵硅皟鐜荤拑淇℃伅锛氬璋冪幓鐠僫d鍗冲彲
edgStorageCageDetailsService.update(new LambdaUpdateWrapper<EdgStorageCageDetails>()
- .eq(EdgStorageCageDetails::getId, glassInfo.getId()).set(EdgStorageCageDetails::getGlassId, swapGlassId));
+ .eq(EdgStorageCageDetails::getId, glassInfo.getId())
+ .set(EdgStorageCageDetails::getTemperingLayoutId, swapGlassDetailInfo.getTemperingLayoutId())
+ .set(EdgStorageCageDetails::getTemperingFeedSequence, swapGlassDetailInfo.getTemperingFeedSequence())
+ );
edgStorageCageDetailsService.update(new LambdaUpdateWrapper<EdgStorageCageDetails>()
- .eq(EdgStorageCageDetails::getId, swapGlassDetailInfo.getId()).set(EdgStorageCageDetails::getGlassId, glassId));
+ .eq(EdgStorageCageDetails::getId, swapGlassDetailInfo.getId())
+ .set(EdgStorageCageDetails::getTemperingLayoutId, glassInfo.getTemperingLayoutId())
+ .set(EdgStorageCageDetails::getTemperingFeedSequence, glassInfo.getTemperingFeedSequence())
+ );
}
}
@@ -309,14 +352,27 @@
// 1.2.3銆佹寜鐓у嚭鐗囦俊鎭幓璇︽儏琛ㄦ煡璇㈡牸瀛愬湪绗煎瓙閲岄潰鍓╀綑鐩稿悓灏哄鐨勭幓鐠冩暟鎹笖浠ョ増鍥緄d銆佺増搴忓崌搴忔帓搴� 鍙栫涓�鍧楃幓鐠冨嚭鐗�
// 2銆佸鏋滄病鏈夊巻鍙插嚭鐗囦换鍔�
// 2.1銆佸嚭褰撳墠鐗堝浘id鏈�灏忕増搴忔渶灏忕殑鐜荤拑锛堥棶棰橈細涓ゆ潯绾块兘娌℃湁鍘嗗彶浠诲姟锛屽嚭鐗囨椂涓ゆ潯绾跨殑鐜荤拑灏哄鐩稿悓锛屾槸鍚︽壘灏哄涓嶅悓鐨勶級
- if ((out08Glassstate == 2 && out10Glassstate == 2) || (out08Glassstate == 0 && out10Glassstate == 0)) {
+// if ((out08Glassstate == 2 && out10Glassstate == 2) || (out08Glassstate == 0 && out10Glassstate == 0)) {
+// log.info("A09銆丄10涓簕},{}闈炶嚜鍔ㄧ姸鎬侊紝鏃犳硶鍑虹墖", out08Glassstate, out10Glassstate);
+// return Boolean.FALSE;
+// }
+ if ((out08Glassstate == 2 && out10Glassstate == 2)) {
log.info("A09銆丄10涓簕},{}闈炶嚜鍔ㄧ姸鎬侊紝鏃犳硶鍑虹墖", out08Glassstate, out10Glassstate);
return Boolean.FALSE;
+ }
+ if ((out08Glassstate == 0 && out10Glassstate == 0)) {
+ out10Glassstate = 1;
}
log.info("0銆佸嚭鐗囦换鍔″嚭鐨勭姸鎬�:A09:銆恵}銆�;A10:銆恵}銆�)", out08Glassstate, out10Glassstate);
//瀹氫箟鍑虹墖鐜荤拑淇℃伅
int endcell = 0;
EdgStorageCageDetails glassInfo = null;
+ //褰撶瀛愬凡婊℃椂锛屼笉鑰冭檻鍗у紡鐞嗙墖鍓嶇殑鐜荤拑
+ EdgStorageCage nearestEmpty = edgStorageCageService.selectNearestEmpty(currentSlot, Boolean.FALSE);
+ if (nearestEmpty == null) {
+ glassId = "";
+ }
+
boolean flag = queryMaxMinDiff(threshold);
log.info("1銆佽幏鍙栭挗鍖栫増鍥炬槸鍚﹁秴杩囬槇鍊�:{}", flag);
if (flag) {
@@ -337,7 +393,7 @@
if (out08Glassstate == 1 && out10Glassstate == 1) {
EdgStorageCageDetails a09EdgGlass = queryGlassByTaskCache(Const.A09_OUT_TARGET_POSITION, Const.GLASS_CACHE_TYPE_OUT_ALL);
EdgStorageCageDetails a10EdgGlass = queryGlassByTaskCache(Const.A10_OUT_TARGET_POSITION, Const.GLASS_CACHE_TYPE_OUT_ALL);
- if (a09EdgGlass == null && a10EdgGlass == null) {
+ if (a09EdgGlass != null || a10EdgGlass != null) {
MPJQueryWrapper<EdgStorageCageDetails> wrapper = new MPJQueryWrapper<>();
wrapper.select("count(t.glass_id), t.width, t.height")
.eq("t.state", Const.GLASS_STATE_IN)
@@ -417,7 +473,7 @@
}
}
}
- return saveOutGlassMessage(glassInfo, endcell, confirmationWrodAddress, glassId, currentSlot);
+ return saveOutGlassMessageBySlot(glassInfo, endcell, confirmationWrodAddress, glassId, currentSlot);
}
/**
@@ -659,6 +715,7 @@
log.info("4銆佹坊鍔犲嚭鐗囦换鍔★紝鐜荤拑id锛歿}锛屼换鍔$被鍨嬶細{}锛岃捣濮嬩綅缃細{}锛岀粨鏉熶綅缃細{}", glassInfo.getGlassId(),
2, glassInfo.getSlot(), endcell);
if (glassInfo.getGlassId().equals(glassId)) {
+
log.info("5銆佺洿閫氫换鍔�,灏嗙幓鐠冧俊鎭彃鍏ュ崸寮忕悊鐗囩,褰撳墠鐜荤拑淇℃伅:{}", glassInfo);
EdgStorageCageDetails details = new EdgStorageCageDetails();
BeanUtils.copyProperties(glassInfo, details);
@@ -718,7 +775,7 @@
BeanUtils.copyProperties(glassInfo, details);
} else {
GlassInfo one = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId));
- BeanUtils.copyProperties(glassInfo, details);
+ BeanUtils.copyProperties(one, details);
}
EdgStorageCage nearestEmpty = edgStorageCageService.selectNearestEmpty(currentSlot, Boolean.TRUE);
Assert.isTrue(null != nearestEmpty, "鏍煎瓙宸叉弧,鏃犳硶鎵ц鐩撮�氫换鍔�");
@@ -730,7 +787,7 @@
log.info("6銆佹坊鍔犲嚭鐗囦换鍔℃槸鍚﹀畬鎴愶細{}", taskCacheStatus);
} else {
log.info("5銆侀潪鐩撮�氫换鍔�,灏嗙幓鐠冧俊鎭彃鍏ュ崸寮忕悊鐗囩,褰撳墠鐜荤拑淇℃伅:{}", glassInfo);
- if (endcell != currentSlot) {
+ if (!glassInfo.getSlot().equals(currentSlot)) {
EdgStorageCageDetails currentGlass = edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
.eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN)
.eq(EdgStorageCageDetails::getSlot, currentSlot).eq(EdgStorageCageDetails::getWidth, glassInfo.getWidth())
@@ -738,13 +795,12 @@
);
if (null != currentGlass) {
glassInfo = currentGlass;
- endcell = currentSlot;
}
}
- //鐜荤拑淇℃伅鏇挎崲
- String glassIdChange = queryAndChangeGlass(glassInfo.getGlassId());
- //澶勭悊鍦ㄥ崸鐞嗗唴鐨勭幓鐠冧俊鎭細绗煎唴鐨勬暟鎹鐞�
- queryEdgAndChangeGlass(glassInfo.getGlassId(), glassIdChange);
+// //鐜荤拑淇℃伅鏇挎崲
+// String glassIdChange = queryAndChangeGlass(glassInfo.getGlassId());
+// //澶勭悊鍦ㄥ崸鐞嗗唴鐨勭幓鐠冧俊鎭細绗煎唴鐨勬暟鎹鐞�
+// queryEdgAndChangeGlass(glassInfo.getGlassId(), glassIdChange);
LambdaUpdateWrapper<EdgStorageCageDetails> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(EdgStorageCageDetails::getGlassId, glassInfo.getGlassId()).set(EdgStorageCageDetails::getState, Const.GLASS_STATE_OUT);
edgStorageCageDetailsService.update(wrapper);
@@ -764,6 +820,7 @@
damage.setType(1);
damage.setRemark("杩囧崸寮忕悊鐗�");
damageService.insertDamage(damage);
+ damageService.deleteByGlassId(glassId);
return Boolean.TRUE;
}
return Boolean.FALSE;
@@ -819,20 +876,31 @@
* @return
*/
private int computerLineByState(int out08Glassstate, int out10Glassstate) {
- if (out08Glassstate == 0) {
- if (out10Glassstate == 2) {
- return Const.A09_OUT_TARGET_POSITION;
- } else {
+// if (out08Glassstate == 0) {
+// if (out10Glassstate == 2) {
+// return Const.A09_OUT_TARGET_POSITION;
+// } else {
+// return Const.A10_OUT_TARGET_POSITION;
+// }
+// } else if (out08Glassstate == 1) {
+// return Const.A09_OUT_TARGET_POSITION;
+// } else {
+// return Const.A10_OUT_TARGET_POSITION;
+// }
+ if (out10Glassstate == 0) {
+ if (out08Glassstate == 2) {
return Const.A10_OUT_TARGET_POSITION;
+ } else {
+ return Const.A09_OUT_TARGET_POSITION;
}
- } else if (out08Glassstate == 1) {
- return Const.A09_OUT_TARGET_POSITION;
- } else {
+ } else if (out10Glassstate == 1) {
return Const.A10_OUT_TARGET_POSITION;
+ } else {
+ return Const.A09_OUT_TARGET_POSITION;
}
}
- @Scheduled(fixedDelay = 1000)
+ @Scheduled(fixedDelay = 500)
public void CacheGlassTasks() {
JSONObject jsonObject = new JSONObject();
List<Map<String, Object>> currentCutTerritorys = edgStorageCageDetailsService.selectCutTerritory();
@@ -859,7 +927,7 @@
}
}
- @Scheduled(fixedDelay = 1000)
+ @Scheduled(fixedDelay = 500)
public void cacheGlassIsRun() {
JSONObject jsonObject = new JSONObject();
//姝e湪杩涜鐨勪换鍔�
@@ -877,7 +945,7 @@
}
}
- @Scheduled(fixedDelay = 1000)
+ @Scheduled(fixedDelay = 500)
public void CacheGlassTaskss() {
JSONObject jsonObject = new JSONObject();
//log.info("鏈璇嗗埆鐗堝浘{},++++{}",engineerId,currentCutTerritorys);
--
Gitblit v1.8.0