Browse Source

CCD显示总成气密NG数

liuwei 2 months ago
parent
commit
7dff09c249

+ 9 - 0
src/main/java/com/jeesite/modules/mes/dao/MesProductRecordDao.java

@@ -56,4 +56,13 @@ public interface MesProductRecordDao extends CrudDao<MesProductRecord> {
             @Param("startTime") Date startTime,
             @Param("startTime") Date startTime,
             @Param("endTime") Date endTime);
             @Param("endTime") Date endTime);
 
 
+    /**
+     * 统计指定产线、工位前缀、时间段内 craft=100000 且 content=NG 的条数
+     */
+    Long countNgByLineAndOprnoPrefix(
+            @Param("lineSn") String lineSn,
+            @Param("oprnoPrefix") String oprnoPrefix,
+            @Param("startTime") Date startTime,
+            @Param("endTime") Date endTime);
+
 }
 }

+ 36 - 0
src/main/java/com/jeesite/modules/mes/service/MesProductRecordService.java

@@ -1593,6 +1593,42 @@ public class MesProductRecordService extends CrudService<MesProductRecordDao, Me
 		return c == null ? 0 : c.intValue();
 		return c == null ? 0 : c.intValue();
 	}
 	}
 
 
+	/**
+	 * 固定两班制当前班次:指定工位 craft=100000 且 content=NG 的数量。
+	 * 白班 08:00–20:00;夜班 20:00–次日 08:00。
+	 */
+	public int countNgInCurrentFixedTwoShift(String lineSn, String oprnoPrefix) {
+		if (StringUtils.isBlank(lineSn) || StringUtils.isBlank(oprnoPrefix)) {
+			return 0;
+		}
+		Calendar now = Calendar.getInstance();
+		int hour = now.get(Calendar.HOUR_OF_DAY);
+		Calendar startCal = Calendar.getInstance();
+		Calendar endCal = Calendar.getInstance();
+		startCal.set(Calendar.MINUTE, 0);
+		startCal.set(Calendar.SECOND, 0);
+		startCal.set(Calendar.MILLISECOND, 0);
+		endCal.set(Calendar.MINUTE, 0);
+		endCal.set(Calendar.SECOND, 0);
+		endCal.set(Calendar.MILLISECOND, 0);
+		if (hour >= 8 && hour < 20) {
+			startCal.set(Calendar.HOUR_OF_DAY, 8);
+			endCal.set(Calendar.HOUR_OF_DAY, 20);
+		} else if (hour >= 20) {
+			startCal.set(Calendar.HOUR_OF_DAY, 20);
+			endCal.add(Calendar.DAY_OF_MONTH, 1);
+			endCal.set(Calendar.HOUR_OF_DAY, 8);
+		} else {
+			endCal.set(Calendar.HOUR_OF_DAY, 8);
+			startCal.add(Calendar.DAY_OF_MONTH, -1);
+			startCal.set(Calendar.HOUR_OF_DAY, 20);
+		}
+		Long c = mesProductRecordDao.countNgByLineAndOprnoPrefix(
+				lineSn.trim(), CommonUitl.formatOprno(oprnoPrefix.trim()),
+				startCal.getTime(), endCal.getTime());
+		return c == null ? 0 : c.intValue();
+	}
+
 	private void fillHourlyCounts(List<Map<String, Object>> rows, int[] bucket) {
 	private void fillHourlyCounts(List<Map<String, Object>> rows, int[] bucket) {
 		if (rows == null) {
 		if (rows == null) {
 			return;
 			return;

+ 28 - 0
src/main/java/com/jeesite/modules/mes/web/MesProductScreenController.java

@@ -255,6 +255,34 @@ public class MesProductScreenController extends BaseController {
 		return resp;
 		return resp;
 	}
 	}
 
 
+	/**
+	 * OP360 当前班次 NG 个数(固定两班:08:00–20:00 / 20:00–次日 08:00)。
+	 * 无需入参;产线默认读 mes.framework.qm.lineSn,否则 XT。
+	 */
+	@RequestMapping(value = "op360ShiftNgCount")
+	@ResponseBody
+	public CommonResp<Integer> op360ShiftNgCount() {
+		CommonResp<Integer> resp = new CommonResp<>();
+		try {
+			String lineSn = Global.getConfig("mes.framework.qm.lineSn");
+			if (StringUtils.isBlank(lineSn)) {
+				lineSn = "XT";
+			}
+			String oprno = Global.getConfig("mes.framework.qm.oprno");
+			if (StringUtils.isBlank(oprno)) {
+				oprno = "OP360";
+			}
+			int ng = mesProductRecordService.countNgInCurrentFixedTwoShift(lineSn.trim(), oprno.trim());
+			resp.setData(ng);
+			resp.setResult(Global.TRUE);
+		} catch (Exception e) {
+			resp.setData(0);
+			resp.setResult(Global.FALSE);
+			resp.setMessage(e.getMessage());
+		}
+		return resp;
+	}
+
 	private int parseIntSafe(String val) {
 	private int parseIntSafe(String val) {
 		if (StringUtils.isBlank(val)) {
 		if (StringUtils.isBlank(val)) {
 			return 0;
 			return 0;

+ 2 - 1
src/main/resources/config/application.yml

@@ -55,7 +55,7 @@ jdbc:
   driver: com.mysql.cj.jdbc.Driver
   driver: com.mysql.cj.jdbc.Driver
 #  url: jdbc:mysql://127.0.0.1:3306/mes_cloud_ljr?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_ljr?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
   url: jdbc:mysql://10.0.20.10:3306/mes_cloud_ljr?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
   url: jdbc:mysql://10.0.20.10:3306/mes_cloud_ljr?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
-# 0 url: jdbc:mysql://192.168.22.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.22.99:3306/mes_cloud?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
 #  username: mes_cloud
 #  username: mes_cloud
 #  password: YD57bSRabiyWBwkZ
 #  password: YD57bSRabiyWBwkZ
   username: root
   username: root
@@ -648,6 +648,7 @@ shiro:
     ${adminPath}/mes/mesProduct/screenData = anon
     ${adminPath}/mes/mesProduct/screenData = anon
     ${adminPath}/mes/mesProductScreen/latestConfig = anon
     ${adminPath}/mes/mesProductScreen/latestConfig = anon
     ${adminPath}/mes/mesProductScreen/lineProcessList = anon
     ${adminPath}/mes/mesProductScreen/lineProcessList = anon
+    ${adminPath}/mes/mesProductScreen/op360ShiftNgCount = anon
     ${adminPath}/mes/mesProductRecord/weekQualityData = anon
     ${adminPath}/mes/mesProductRecord/weekQualityData = anon
     ${adminPath}/mes/mesProductCcd/testDate = anon
     ${adminPath}/mes/mesProductCcd/testDate = anon
     ${adminPath}/mes/mesProductCcd/add = anon
     ${adminPath}/mes/mesProductCcd/add = anon

+ 11 - 0
src/main/resources/mappings/modules/mes/MesProductRecordDao.xml

@@ -85,4 +85,15 @@
           AND UPPER(TRIM(IFNULL(a.content, ''))) = 'OK'
           AND UPPER(TRIM(IFNULL(a.content, ''))) = 'OK'
           AND a.oprno LIKE CONCAT(#{oprnoPrefix}, '%')
           AND a.oprno LIKE CONCAT(#{oprnoPrefix}, '%')
     </select>
     </select>
+
+    <select id="countNgByLineAndOprnoPrefix" resultType="java.lang.Long">
+        SELECT COUNT(1)
+        FROM mes_product_record a
+        WHERE a.update_date <![CDATA[ >= ]]> #{startTime}
+          AND a.update_date <![CDATA[ < ]]> #{endTime}
+          AND a.line_sn = #{lineSn}
+          AND a.craft = '100000'
+          AND UPPER(TRIM(IFNULL(a.content, ''))) = 'NG'
+          AND a.oprno LIKE CONCAT(#{oprnoPrefix}, '%')
+    </select>
 </mapper>
 </mapper>