hbx преди 1 седмица
родител
ревизия
7101306977

+ 32 - 3
src/main/java/com/jeesite/modules/mes/web/MesProductRecordController.java

@@ -2174,10 +2174,10 @@ public class MesProductRecordController extends BaseController {
 						logger.info("=== 发现前工位NG oprno:{} ===", op);
 						break;
 					}
-					if(mpr.getContent().equals("UDF")){
-						lxres = "QD"; // 前工位未加工
+					if(mpr.getContent().equals("UDF") || inRest(mpr)){
+						lxres = "QD"; // 前工位未加工 / 静置未完成
 						op = mpr.getOprno();
-						logger.info("=== 发现前工位漏加工 oprno:{} ===", op);
+						logger.info("=== 发现前工位漏加工/静置未完成 oprno:{} ===", op);
 						break;
 					}
 				}
@@ -2203,6 +2203,35 @@ public class MesProductRecordController extends BaseController {
 		return ret;
 	}
 
+	/**
+	 * 判断前工位是否仍在静置期内(配置 mes.rest.oprno,格式"工位:分钟")
+	 * 前工位结果为 OK 且工位在配置里时,用记录的 update_date 到现在的分钟数与配置时长比较
+	 * 未配置或解析出错返回 false,不影响生产
+	 */
+	private boolean inRest(MesProductRecord mpr){
+		try{
+			if(!"OK".equals(mpr.getContent())){
+				return false;
+			}
+			String cfg = Global.getConfig("mes.rest.oprno");
+			if(StringUtils.isEmpty(cfg)){
+				return false;
+			}
+			String[] arr = cfg.split(":");
+			if(arr.length != 2 || !CommonUitl.formatOprno(mpr.getOprno()).equals(arr[0].trim())){
+				return false;
+			}
+			int minutes = Integer.parseInt(arr[1].trim());
+			if(minutes <= 0 || mpr.getUpdateDate() == null){
+				return false;
+			}
+			long elapsed = (System.currentTimeMillis() - mpr.getUpdateDate().getTime()) / 60000;
+			return elapsed < minutes;
+		}catch (Exception e){
+			return false;
+		}
+	}
+
 	//上传质量结果
 	//msg=aaaabbbbbABWMQDWGWOP040 GY100000ID151245P00000106200123062900001      RSOKDA2023-08-18ZT14:32:33YHjinjushijinjushi1111
 	//msg=aaaabbbbbABWMQDWGWOP080 GY100000LX  ID151245P00000106200123062900001      RSOKDA2023-08-18ZT14:32:33YHjinjushijinjushi111105Y11111111N22222222Y33333333Y44444444Y55555555

+ 2 - 1
src/main/java/com/jeesite/modules/scheduling/ProductGh.java

@@ -30,7 +30,8 @@ public class ProductGh {
     @Autowired
     private MesProductRecordService mesProductRecordService;
 
-    @Scheduled(fixedRate=30000)
+    // 停用旧的静置固化定时任务:静置管控已改为 checkQualityResult 中按配置 mes.rest.oprno 判断,避免两套逻辑重复
+//    @Scheduled(fixedRate=30000)
     private void configureTasks() { //OP310
         try{
             MesDeviceTime mesDeviceTime = new MesDeviceTime();

+ 9 - 5
src/main/resources/config/application.yml

@@ -54,14 +54,15 @@ jdbc:
   # Mysql 数据库配置
   type: mysql
   driver: com.mysql.cj.jdbc.Driver
-  url: jdbc:mysql://127.0.0.1:3306/mes_cloud_t09?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
+#  url: jdbc:mysql://127.0.0.1:3306/mes_cloud_t09?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
 #  url: jdbc:mysql://192.168.114.99:3306/mes_cloud_t09?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
 #  url: jdbc:mysql://192.168.110.99:3306/mes_cloud?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
+  url: jdbc:mysql://192.168.100.128:3307/mes_cloud_t09?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
 
-  username: mes_cloud
-  password: RTCk7KxGPAPyy7pJ
-#  username: root
-#  password: 123456
+#  username: mes_cloud
+#  password: RTCk7KxGPAPyy7pJ
+  username: root
+  password: 123456
 
   testSql: SELECT 1
 
@@ -1035,3 +1036,6 @@ mes:
       timeoutMs: 2000
       # 部分老服务返回 row.data 而无 prefixMap 时,按此规则把 data 注入到指定前缀
       peerPrefixHints:
+  # 工位静置时长:前工位完成后未满静置时长的,下一工位进站返回 QD。格式:工位:分钟
+  rest:
+    oprno: OP310:60