|
|
@@ -1593,6 +1593,42 @@ public class MesProductRecordService extends CrudService<MesProductRecordDao, Me
|
|
|
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) {
|
|
|
if (rows == null) {
|
|
|
return;
|