diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/timing/TimingSendMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/timing/TimingSendMaterialTask.java index 5f759aa..c7bb8f4 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/timing/TimingSendMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/timing/TimingSendMaterialTask.java @@ -142,7 +142,7 @@ public class TimingSendMaterialTask extends AbstractAcsTask { jsonEnd.put("point_status", "1"); jsonEnd.put("update_time", DateUtil.now()); pointTab.update(jsonEnd); - log.info("定时任务完成,终点解锁成功,任务号:{}", taskObj.getString("task_code")); + log.info("定时任务完成,终点解锁成功,任务号:{}", jsonTask.getString("task_code")); //更新起点库存 JSONObject ivtStart = ivtTab.query("point_code = '" + jsonStart.getString("point_code") + "'").uniqueResult(0); @@ -160,7 +160,7 @@ public class TimingSendMaterialTask extends AbstractAcsTask { jsonStart.put("task_id", ""); jsonStart.put("update_time", DateUtil.now()); pointTab.update(jsonStart); - log.info("定时任务完成,起点解锁成功,任务号:{}", taskObj.getString("task_code")); + log.info("定时任务完成,起点解锁成功,任务号:{}", jsonTask.getString("task_code")); } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/structivt/service/KlhcqIvt.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/structivt/service/KlhcqIvt.java index bfa9f21..dd55db0 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/structivt/service/KlhcqIvt.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/structivt/service/KlhcqIvt.java @@ -17,6 +17,7 @@ import java.util.stream.Collectors; /** * @author: geng by * @createDate: 2023/4/12 + * @Des 只是为了在入库到GT01时更新困料区库存 */ public class KlhcqIvt { private static ArrayBlockingQueue> ivtQueue = new ArrayBlockingQueue<>(27); @@ -31,6 +32,8 @@ public class KlhcqIvt { * @throws InterruptedException */ public static void add(Map ivtMap) throws InterruptedException { + //重启程序、出库确认和修改库存信息的如果是一号接驳位库存或困料区库存时会清空队列信息 + //如果入库到GT01时 队列的大小为0 就去数据库中查找困料区库存信息和GT01信息 将信息赋值给队列 if (ivtQueue.size() == MIN_NUM) { WQLObject wo = WQLObject.getWQLObject("st_ivt_structivt"); JSONArray resultJSONArray = wo.query("region_code = '" + RegionTypeEnum.KLZCQ.getCode() + "'", "point_code").getResultJSONArray(0); @@ -48,11 +51,16 @@ public class KlhcqIvt { ivt.put(structivtDto.getVehicle_code(), ObjectUtil.isEmpty(structivtDto.getMaterial_id()) ? "" : structivtDto.getMaterial_id().toString()); ivtQueue.put(ivt); } + //此时队列中的数量为27个 可能困料区和GT01会存在空位的情况 执行此方法 updateHasEmptyInMiddle(); + //如果说困料区或GT01有空位 则不会执行该逻辑 不会从队列头部取出 因为此时队列的个数小于最大队列数 + //如果说没有空位 则会执行该逻辑,从队列中取出头部的数据 if (ivtQueue.size() == MAX_NUM) { ivtQueue.take(); } + //将新入库GT01的信息添加到队列中 ivtQueue.put(ivtMap); + //根据队列信息更新困料区库存 因为在入库完成时会更新GT01的库存 所以不在此方法更新GT01的库存 updateIvt(); } @@ -64,6 +72,7 @@ public class KlhcqIvt { JSONArray resultJSONArray = wo.query("region_code = '" + RegionTypeEnum.KLZCQ.getCode() + "'", "point_code").getResultJSONArray(0); List structivtDtos = resultJSONArray.toJavaList(StructivtDto.class); List> ivtList = ivtQueue.stream().collect(Collectors.toList()); + //因为队列大小是27 而困料区大小为26 队列的前26个为困料区信息 所以-1 防止索引越界 for (int i = 0; i < ivtList.size() - 1; i++) { Map ivt = ivtList.get(i); for (Map.Entry ivtEntry : ivt.entrySet()) { @@ -88,12 +97,15 @@ public class KlhcqIvt { /** * 如果困料区26(包括)到GT01(包括)修改队列中的信息 - * 比如 困料区03中手动调出来了 此时困料区03中队列信息未载具号为空 此刻再入库GT01 - * 困料区03到困料区26的库存不应该更新 而困料区03的信息应该修改为困料区02的 - * 困料区02的应该修改为困料区01的 以此类推 + * 比如 困料区03中手动吊出来了 通过库存管理或者出库确认 修改了困料区03的库存信息为空了 + * 此时队列信息会被清空 当下次入到GT01更新队列信息时 从数据库查询困料区库存更新到队列中时 + * 困料区03中队列信息为载具号为空 因此入库更新库存时 不应该更新困料区03(不包括)到困料区01(包括)的库存 + * 而是应该将困料区03的信息应该修改为原困料区04的 + * 困料区04的应该修改为原困料区05的 以此类推 */ public static void updateHasEmptyInMiddle() { List> ivtList = ivtQueue.stream().collect(Collectors.toList()); + //反转是为了优先将靠近GT01的有空位的信息移除 Collections.reverse(ivtList); Iterator> iterator = ivtList.iterator(); out: @@ -107,8 +119,11 @@ public class KlhcqIvt { } } } + //再反转过来是为了修改库存信息 Collections.reverse(ivtList); + //清空队列信息 clear(); + //将更新好的库存重新添加到队列中 ivtQueue.addAll(ivtList); } diff --git a/lms/nladmin-system/src/main/resources/config/application.yml b/lms/nladmin-system/src/main/resources/config/application.yml index a4d00ab..7e3fbea 100644 --- a/lms/nladmin-system/src/main/resources/config/application.yml +++ b/lms/nladmin-system/src/main/resources/config/application.yml @@ -2,7 +2,7 @@ spring: freemarker: check-template-location: false profiles: - active: prod + active: dev jackson: time-zone: GMT+8 data: