diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_truss/LnshKilnTrussDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_truss/LnshKilnTrussDeviceDriver.java index 2dd594d..f66f168 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_truss/LnshKilnTrussDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_kiln_truss/LnshKilnTrussDeviceDriver.java @@ -216,6 +216,7 @@ public class LnshKilnTrussDeviceDriver extends AbstractOpcDeviceDriver implement JSONObject param = new JSONObject(); param.put("kiln_number", kiln_number); param.put("vehicle_code", barcode); + param.put("type", "1"); HttpResponse response = acsToWmsService.inKiln(param); if (ObjectUtil.isNotEmpty(response)) { if (response.getStatus() == HttpStatus.OK.value()) { diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/ItemProtocol.java index 0d7eef3..2189bbe 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/ItemProtocol.java @@ -22,6 +22,8 @@ public class ItemProtocol { public static String item_standby_time = "standby_time"; public static String item_production_time = "production_time"; public static String item_error_time = "error_time"; + public static String item_cool_number = "cool_number"; + public static String item_to_command = "to_command"; public static String item_to_target = "to_target"; public static String item_to_task = "to_task"; @@ -84,6 +86,10 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_to_task); } + public int getCool_number() { + return this.getOpcIntegerValue(item_cool_number); + } + //是否有货 public int hasGoods(int move) { return move; @@ -113,23 +119,24 @@ public class ItemProtocol { } public static List getReadableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(item_heartbeat, "心跳", "DB1.B0")); - list.add(new ItemDto(item_mode, "工作模式", "DB1.B1", Boolean.valueOf(true))); + ArrayList list = new ArrayList<>(); + list.add(new ItemDto(item_heartbeat, "心跳", "DB100.B0")); + list.add(new ItemDto(item_mode, "工作模式", "DB1.B1", Boolean.TRUE)); list.add(new ItemDto(item_status, "设备状态", "DB1.B2")); list.add(new ItemDto(item_outKiln_move, "出窑光电", "DB1.B3")); list.add(new ItemDto(item_outKiln_barcode, "出窑条码", "DB1.W4")); list.add(new ItemDto(item_outKiln_device, "出窑设备", "DB1.D6")); - list.add(new ItemDto(item_open_time, "开机时间", "DB1.STRING10.50")); - list.add(new ItemDto(item_standby_time, "待机时间", "DB1.D62")); - list.add(new ItemDto(item_production_time, "生产时间", "DB1.D66")); - list.add(new ItemDto(item_error_time, "故障时间", "DB1.D70")); + list.add(new ItemDto(item_cool_number, "冷却道号", "DB1.D10")); + list.add(new ItemDto(item_open_time, "开机时间", "DB1.STRING14.50")); + list.add(new ItemDto(item_standby_time, "待机时间", "DB1.D66")); + list.add(new ItemDto(item_production_time, "生产时间", "DB1.D70")); + list.add(new ItemDto(item_error_time, "故障时间", "DB1.D74")); return list; } public static List getWriteableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发指令", "DB1.W0", Boolean.valueOf(true))); + ArrayList list = new ArrayList<>(); + list.add(new ItemDto(item_to_command, "下发指令", "DB1.W0", Boolean.TRUE)); list.add(new ItemDto(item_to_target, "下发目标站", "DB1.W2")); list.add(new ItemDto(item_to_task, "下发任务号", "DB1.D4")); return list; diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/LnshOutKilnTrussDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/LnshOutKilnTrussDefination.java index 668d493..7828ecb 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/LnshOutKilnTrussDefination.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/LnshOutKilnTrussDefination.java @@ -54,18 +54,7 @@ public class LnshOutKilnTrussDefination implements OpcDeviceDriverDefination { } public static List getReadableItemDtos2() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB1.B0")); - list.add(new ItemDto(ItemProtocol.item_mode, "工作模式", "DB1.B1", Boolean.valueOf(true))); - list.add(new ItemDto(ItemProtocol.item_status, "设备状态", "DB1.B2")); - list.add(new ItemDto(ItemProtocol.item_outKiln_move, "出窑光电", "DB1.B3")); - list.add(new ItemDto(ItemProtocol.item_outKiln_barcode, "出窑条码", "DB1.W4")); - list.add(new ItemDto(ItemProtocol.item_outKiln_device, "出窑设备", "DB1.D6")); - list.add(new ItemDto(ItemProtocol.item_open_time, "开机时间", "DB1.STRING10.50")); - list.add(new ItemDto(ItemProtocol.item_standby_time, "待机时间", "DB1.D62")); - list.add(new ItemDto(ItemProtocol.item_production_time, "生产时间", "DB1.D66")); - list.add(new ItemDto(ItemProtocol.item_error_time, "故障时间", "DB1.D70")); - return list; + return ItemProtocol.getReadableItemDtos(); } @Override diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/LnshOutKilnTrussDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/LnshOutKilnTrussDeviceDriver.java index 7d7ed8b..add1ba7 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/LnshOutKilnTrussDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/LnshOutKilnTrussDeviceDriver.java @@ -23,7 +23,6 @@ import org.nl.acs.route.service.RouteLineService; import org.nl.acs.task.service.TaskService; import org.nl.modules.wql.util.SpringContextHolder; import org.openscada.opc.lib.da.Server; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import java.util.Date; @@ -102,6 +101,9 @@ public class LnshOutKilnTrussDeviceDriver extends AbstractOpcDeviceDriver implem //出窑设备 int outKiln_device = 0; int last_outKiln_device = 0; + // 冷却道号 + int cool_number = 0; + int last_cool_number = 0; @Override public Device getDevice() { @@ -123,6 +125,7 @@ public class LnshOutKilnTrussDeviceDriver extends AbstractOpcDeviceDriver implem outKiln_move = this.itemProtocol.getOutKiln_move(); outKiln_barcode = this.itemProtocol.getOutKiln_barcode(); outKiln_device = this.itemProtocol.getOutKiln_device(); + cool_number = this.itemProtocol.getCool_number(); if (mode != last_mode) { this.setRequireSucess(false); @@ -202,10 +205,16 @@ public class LnshOutKilnTrussDeviceDriver extends AbstractOpcDeviceDriver implem break; case 5: - if (!requireSucess && outKiln_move != 0) { + if (!requireSucess && outKiln_move != 0 && outKiln_barcode != 0) { outKiln(); } break; + + case 17: + if (!requireSucess && outKiln_move != 0 && outKiln_barcode != 0 && cool_number != 0) { + outKilnConfirm(); + } + break; } } @@ -218,6 +227,7 @@ public class LnshOutKilnTrussDeviceDriver extends AbstractOpcDeviceDriver implem last_outKiln_move = outKiln_move; last_outKiln_barcode = outKiln_barcode; last_outKiln_device = outKiln_device; + last_cool_number = cool_number; } @@ -254,7 +264,6 @@ public class LnshOutKilnTrussDeviceDriver extends AbstractOpcDeviceDriver implem if (result.getStatus() == HttpStatus.OK.value()) { JSONObject jsonObject = JSONObject.parseObject(result.body()); if (ObjectUtil.isNotEmpty(jsonObject) && "200".equals(jsonObject.getString("status"))) { - this.writing(jsonObject.getBooleanValue("data") ? 22 : 23); this.writing(jsonObject.getBooleanValue("data") ? 22 : 23); this.setRequireSucess(true); } @@ -293,6 +302,29 @@ public class LnshOutKilnTrussDeviceDriver extends AbstractOpcDeviceDriver implem logServer.deviceExecuteLog(this.device_code, "", "", param + " 写入 " + value); } + public synchronized void outKilnConfirm() { + Date date = new Date(); + if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); + } else { + this.instruction_require_time = date; + JSONObject param = new JSONObject(); + param.put("cool_number", cool_number); + param.put("vehicle_code", outKiln_barcode); + param.put("type", "2"); + HttpResponse response = acsToWmsService.inKiln(param); + if (ObjectUtil.isNotEmpty(response)) { + if (response.getStatus() == HttpStatus.OK.value()) { + JSONObject jsonObject = JSONObject.parseObject(response.body()); + if (ObjectUtil.isNotEmpty(jsonObject) && "200".equals(jsonObject.getString("status"))) { + this.writing(this.mode); + this.requireSucess = true; + } + } + } + } + } + @Override public JSONObject getDeviceStatusName() throws Exception { String mode; diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_press/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_press/ItemProtocol.java index bb88a7d..20fac26 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_press/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_press/ItemProtocol.java @@ -27,6 +27,7 @@ public class ItemProtocol { public static String item_qualified = "qualified"; public static String item_unqualified = "unqualified"; public static String item_order_No = "order_No"; + public static String item_avg_piece_weight = "avg_piece_weight"; public static String item_to_command = "to_command"; public static String item_to_error = "to_error"; public static String item_to_order_No = "to_order_No"; @@ -141,6 +142,10 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_to_Wthickness); } + public int getAvg_piece_weight() { + return this.getOpcIntegerValue(item_avg_piece_weight); + } + //是否有货 public int hasGoods(int move) { return move; @@ -171,36 +176,37 @@ public class ItemProtocol { } public static List getReadableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(item_heartbeat, "心跳", "DB8.B0")); - list.add(new ItemDto(item_mode, "工作模式", "DB8.B1", Boolean.valueOf(true))); - list.add(new ItemDto(item_status, "设备状态", "DB8.B2")); - list.add(new ItemDto(item_error, "故障", "DB8.B3")); - list.add(new ItemDto(item_open_time, "开机时间", "DB8.STRING4.50")); - list.add(new ItemDto(item_standby_time, "待机时间", "DB8.D56")); - list.add(new ItemDto(item_production_time, "生产时间", "DB8.D60")); - list.add(new ItemDto(item_error_time, "故障时间", "DB8.D64")); - list.add(new ItemDto(item_material, "当前生产物料", "DB8.STRING68.50")); - list.add(new ItemDto(item_qty, "当前已生产数量", "DB8.D120")); - list.add(new ItemDto(item_weight, "当前已生产重量", "DB8.D124")); - list.add(new ItemDto(item_qualified, "当前已生产合格数", "DB8.D128")); - list.add(new ItemDto(item_unqualified, "当前已生产不合格数", "DB8.D132")); - list.add(new ItemDto(item_order_No, "工单号", "DB8.STRING136.50")); + ArrayList list = new ArrayList<>(); + list.add(new ItemDto(item_heartbeat, "心跳", "DB.B0")); + list.add(new ItemDto(item_mode, "工作模式", "DB.B1", Boolean.TRUE)); + list.add(new ItemDto(item_status, "设备状态", "DB.B2")); + list.add(new ItemDto(item_error, "故障", "DB.B3")); + list.add(new ItemDto(item_open_time, "开机时间", "DB.STRING4.50")); + list.add(new ItemDto(item_standby_time, "待机时间", "DB.D56")); + list.add(new ItemDto(item_production_time, "生产时间", "DB.D60")); + list.add(new ItemDto(item_error_time, "故障时间", "DB.D64")); + list.add(new ItemDto(item_material, "当前生产物料", "DB.STRING68.50")); + list.add(new ItemDto(item_qty, "当前已生产数量", "DB.D120")); + list.add(new ItemDto(item_weight, "当前已生产重量", "DB.D124")); + list.add(new ItemDto(item_qualified, "当前已生产合格数", "DB.D128")); + list.add(new ItemDto(item_unqualified, "当前已生产不合格数", "DB.D132")); + list.add(new ItemDto(item_order_No, "工单号", "DB.STRING136.50")); + list.add(new ItemDto(item_avg_piece_weight, "当前工单平均单重", "DB.D188")); return list; } public static List getWriteableItemDtos() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "反馈", "DB9.W0", Boolean.valueOf(true))); - list.add(new ItemDto(item_to_error, "error", "DB9.W2")); - list.add(new ItemDto(item_to_order_No, "工单号", "DB9.STRING4.50")); - list.add(new ItemDto(item_to_qty, "生产重量", "DB9.D56")); - list.add(new ItemDto(item_to_material_code, "下发物料编号", "DB9.STRING60.50")); - list.add(new ItemDto(item_to_product_code, "产品编号", "DB4.W112")); - list.add(new ItemDto(item_to_AlongSide, "A长边", "DB4.W114")); - list.add(new ItemDto(item_to_BshortSide, "B短边", "DB4.W116")); - list.add(new ItemDto(item_to_Htrapezoidal, "H梯形高", "DB4.W118")); - list.add(new ItemDto(item_to_Wthickness, "W厚度", "DB4.W120")); + ArrayList list = new ArrayList<>(); + list.add(new ItemDto(item_to_command, "反馈", "DB.W0", Boolean.TRUE)); + list.add(new ItemDto(item_to_error, "error", "DB.W2")); + list.add(new ItemDto(item_to_order_No, "工单号", "DB.STRING4.50")); + list.add(new ItemDto(item_to_qty, "生产重量", "DB.D56")); + list.add(new ItemDto(item_to_material_code, "下发物料编号", "DB.STRING60.50")); + list.add(new ItemDto(item_to_product_code, "产品编号", "DB.W112")); + list.add(new ItemDto(item_to_AlongSide, "A长边", "DB.W114")); + list.add(new ItemDto(item_to_BshortSide, "B短边", "DB.W116")); + list.add(new ItemDto(item_to_Htrapezoidal, "H梯形高", "DB.W118")); + list.add(new ItemDto(item_to_Wthickness, "W厚度", "DB.W120")); return list; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_press/LnshPressDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_press/LnshPressDefination.java index 58f77f5..9c23d60 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_press/LnshPressDefination.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_press/LnshPressDefination.java @@ -56,22 +56,7 @@ public class LnshPressDefination implements OpcDeviceDriverDefination { } public static List getReadableItemDtos2() { - ArrayList list = new ArrayList(); - list.add(new ItemDto(ItemProtocol.item_heartbeat, "心跳", "DB8.B0")); - list.add(new ItemDto(ItemProtocol.item_mode, "工作模式", "DB8.B1", Boolean.valueOf(true))); - list.add(new ItemDto(ItemProtocol.item_status, "设备状态", "DB8.B2")); - list.add(new ItemDto(ItemProtocol.item_error, "故障", "DB8.B3")); - list.add(new ItemDto(ItemProtocol.item_open_time, "开机时间", "DB8.STRING4.50")); - list.add(new ItemDto(ItemProtocol.item_standby_time, "待机时间", "DB8.D56")); - list.add(new ItemDto(ItemProtocol.item_production_time, "生产时间", "DB8.D60")); - list.add(new ItemDto(ItemProtocol.item_error_time, "故障时间", "DB8.D64")); - list.add(new ItemDto(ItemProtocol.item_material, "当前生产物料", "DB8.STRING68.50")); - list.add(new ItemDto(ItemProtocol.item_qty, "当前已生产数量", "DB8.D120")); - list.add(new ItemDto(ItemProtocol.item_weight, "当前已生产重量", "DB8.D124")); - list.add(new ItemDto(ItemProtocol.item_qualified, "当前已生产合格数", "DB8.D128")); - list.add(new ItemDto(ItemProtocol.item_unqualified, "当前已生产不合格数", "DB8.D132")); - list.add(new ItemDto(ItemProtocol.item_order_No, "工单号", "DB8.STRING136.50")); - return list; + return ItemProtocol.getReadableItemDtos(); } @Override diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_press/LnshPressDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_press/LnshPressDeviceDriver.java index 7cdebe7..08cf8ca 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_press/LnshPressDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_press/LnshPressDeviceDriver.java @@ -110,6 +110,8 @@ public class LnshPressDeviceDriver extends AbstractOpcDeviceDriver implements De int last_unqualified = 0; String order_No = "0"; String last_order_No = "0"; + int avg_piece_weight = 0; + int last_avg_piece_weight = 0; @Override public Device getDevice() { @@ -135,6 +137,7 @@ public class LnshPressDeviceDriver extends AbstractOpcDeviceDriver implements De unqualified = this.itemProtocol.getUnqualified(); qty = this.itemProtocol.getQty(); material = this.itemProtocol.getMaterial(); + avg_piece_weight = this.itemProtocol.getAvg_piece_weight(); if (mode != last_mode) { this.setRequireSucess(false); @@ -189,6 +192,10 @@ public class LnshPressDeviceDriver extends AbstractOpcDeviceDriver implements De logServer.deviceItemValue(this.device_code, "order_No", order_No); logServer.deviceExecuteLog(this.device_code, "", "", "信号order_No:" + last_order_No + " -> " + order_No); } + if (avg_piece_weight != last_avg_piece_weight) { + logServer.deviceItemValue(this.device_code, "avg_piece_weight", String.valueOf(avg_piece_weight)); + logServer.deviceExecuteLog(this.device_code, "", "", "avg_piece_weight:" + last_avg_piece_weight + " -> " + avg_piece_weight); + } } catch (Exception var17) { return; @@ -218,7 +225,7 @@ public class LnshPressDeviceDriver extends AbstractOpcDeviceDriver implements De case 2: break; case 3: - //排产单确认 + // 工单确认确认 if (!requireSucess && !"0".equals(order_No) && StrUtil.isNotBlank(order_No)) { JSONObject json = new JSONObject(); json.put("workorder_code", order_No); @@ -227,19 +234,46 @@ public class LnshPressDeviceDriver extends AbstractOpcDeviceDriver implements De } break; case 4: - //工单完成反馈 + // 工单完成 if (!requireSucess && !"0".equals(order_No) && StrUtil.isNotBlank(order_No)) { JSONObject json = new JSONObject(); json.put("workorder_code", order_No); json.put("qty", qty); + json.put("qualified_qty", qualified); json.put("unqualified_qty", unqualified); + json.put("weight", weight); + json.put("avg_piece_weight", avg_piece_weight); json.put("type", "2"); enterProduction(json); } break; + case 5: + // 报工 + if (!requireSucess && !"0".equals(order_No) && StrUtil.isNotBlank(order_No)) { + JSONObject json = new JSONObject(); + json.put("workorder_code", order_No); + json.put("qty", qty); + json.put("qualified_qty", qualified); + json.put("unqualified_qty", unqualified); + json.put("weight", weight); + json.put("avg_piece_weight", avg_piece_weight); + this.reportForWork(json); + } + case 6: + // 工单暂停 + if (!requireSucess && !"0".equals(order_No) && StrUtil.isNotBlank(order_No)) { + JSONObject json = new JSONObject(); + json.put("workorder_code", order_No); + json.put("qty", qty); + json.put("qualified_qty", qualified); + json.put("unqualified_qty", unqualified); + json.put("weight", weight); + json.put("avg_piece_weight", avg_piece_weight); + json.put("type", "3"); + enterProduction(json); + } } - } last_mode = mode; @@ -255,6 +289,7 @@ public class LnshPressDeviceDriver extends AbstractOpcDeviceDriver implements De last_qualified = qualified; last_unqualified = unqualified; last_order_No = order_No; + last_avg_piece_weight = avg_piece_weight; } @@ -284,13 +319,6 @@ public class LnshPressDeviceDriver extends AbstractOpcDeviceDriver implements De if (result.getStatus() == HttpStatus.OK.value()) { JSONObject jsonObject = JSONObject.parseObject(result.body()); if (ObjectUtil.isNotEmpty(jsonObject) && "200".equals(jsonObject.getString("status"))) { -// ProduceshiftorderDto dto = produceshiftorderService.findByCode(order_No); -// if (this.mode == 3) { -// dto.setOrder_status("1"); -// } else if (this.mode == 4) { -// dto.setOrder_status("2"); -// } -// produceshiftorderService.update(dto); this.writing(this.mode); this.setRequireSucess(true); } @@ -300,6 +328,29 @@ public class LnshPressDeviceDriver extends AbstractOpcDeviceDriver implements De } } + public synchronized boolean reportForWork(JSONObject json) { + Date date = new Date(); + if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); + return false; + } else { + this.instruction_require_time = date; + HttpResponse result = acsToWmsService.reportForWork(json); + if (ObjectUtil.isNotEmpty(result) && HttpStatus.OK.value() == result.getStatus()) { + JSONObject responseBody = JSONObject.parseObject(result.body()); + if (ObjectUtil.isNotEmpty(responseBody)) { + if (HttpStatus.OK.value() == responseBody.getIntValue("status")) { + this.writing(this.mode); + this.setRequireSucess(true); + } else { + this.writing(7); + } + } + } + return true; + } + } + public boolean exe_business() { return true; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_station/LnshStationDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_station/LnshStationDeviceDriver.java index 5877509..ce83a62 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_station/LnshStationDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_station/LnshStationDeviceDriver.java @@ -281,7 +281,7 @@ public class LnshStationDeviceDriver extends AbstractOpcDeviceDriver implements } case 17: // 反向组盘 - if (!requireSucess && this.move != 0 && this.task != 0) { + if (!requireSucess && this.move != 0 && this.task != 0 && this.barcode != 0) { reverseGroup(); } } @@ -541,15 +541,14 @@ public class LnshStationDeviceDriver extends AbstractOpcDeviceDriver implements log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); } else { this.instruction_require_time = date; - Instruction inst = SpringContextHolder.getBean(InstructionService.class).findByCode(String.valueOf(task)); - if (!StrUtil.startWith(inst.getTask_code(), "-")) { - JSONObject json = new JSONObject(); - json.put("task_code", inst.getTask_code()); - json.put("vehicle_code", barcode); - HttpResponse result = acsToWmsService.reverseGroup(json); - if (ObjectUtil.isNotEmpty(result)) { - JSONObject jsonObject = JSONObject.parseObject(result.body()); - if (result.getStatus() == 200 || StrUtil.equals(jsonObject.getString("status"), "200")) { + JSONObject json = new JSONObject(); + json.put("device_code", this.device_code); + json.put("vehicle_code", this.barcode); + HttpResponse response = acsToWmsService.reverseGroup(json); + if (ObjectUtil.isNotEmpty(response)) { + if (response.getStatus() == HttpStatus.OK.value()) { + JSONObject jsonObject = JSONObject.parseObject(response.body()); + if (ObjectUtil.isNotEmpty(jsonObject) && "200".equals(jsonObject.getString("status"))) { this.writing(this.mode); this.setRequireSucess(true); } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java index d677a0c..09496a1 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java @@ -174,4 +174,6 @@ public interface AcsToWmsService { HttpResponse feedbackVehicleType(JSONObject param); HttpResponse mark(JSONObject param); + + HttpResponse reportForWork(JSONObject param); } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java index 3d02ede..8fa318e 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java @@ -997,9 +997,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { .execute(); log.info("reverseGroup - 响应参数 {}", result.body()); } catch (Exception e) { - String msg = e.getMessage(); - //网络不通 - System.out.println(msg); + log.error("reverseGroup - 请求错误!", e); } return result; } finally { @@ -1059,4 +1057,29 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { MDC.remove(log_file_type); } } + + @Override + public HttpResponse reportForWork(JSONObject param) { + try { + MDC.put(log_file_type, log_type); + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + + HttpResponse result = null; + log.info("reportForWork - 请求参数 {}", param); + AddressDto addressDto = addressService.findByCode("reportForWork"); + String methods_url = addressDto.getMethods_url(); + try { + result = HttpRequest + .post(wmsurl + methods_url) + .body(param.toJSONString()) + .execute(); + log.info("reportForWork - 响应参数 {}", result.body()); + } catch (Exception e) { + log.error("reportForWork - 请求错误!", e); + } + return result; + } finally { + MDC.remove(log_file_type); + } + } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java index ffcb134..c7a6f90 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java @@ -259,8 +259,9 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { JSONObject json = orders.getJSONObject(i); String producetask_code = json.getString("workorder_code"); String device_code = json.getString("device_code"); - String material_code = json.getString("material_code"); + String material_code = json.getString("material_number"); String qty = json.getString("plan_qty"); + String weight = json.getString("plan_weight"); String product_code = json.getString("product_code"); String AlongSide = json.getString("a"); String BshortSide = json.getString("b"); @@ -285,7 +286,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { if (lnshMixingMillDeviceDriver.getMode() == 0) { throw new BadRequestException("设备未联机,下发失败!"); } - if (StrUtil.isEmpty(qty)) { + if (StrUtil.isEmpty(weight)) { throw new BadRequestException("重量不能为空!"); } if (StrUtil.isEmpty(material_code)) { @@ -293,7 +294,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { } HashMap map = new HashMap<>(); map.put("to_order_No", producetask_code); - map.put("to_weight", qty); + map.put("to_weight", weight); map.put("to_material_code", material_code); map.put("to_command", 1); lnshMixingMillDeviceDriver.writing(map); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java index 8ba0454..61ab956 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java @@ -309,8 +309,6 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { task_code = CodeUtil.getNewCode("TASK_NO"); task_code = "-" + task_code; } - String start_point_code = dto.getStart_point_code(); - String next_point_code = dto.getNext_point_code(); String start_device_code = dto.getStart_device_code(); String next_device_code = dto.getNext_device_code(); String route_plan_code = dto.getRoute_plan_code(); @@ -327,19 +325,12 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { } String plan_code = dto.getRoute_plan_code(); //判断起点终点设备类型 - String startDeviceType = deviceAppService.findDeviceTypeByCode(dto.getStart_device_code()); - String nextDeviceType = deviceAppService.findDeviceTypeByCode(dto.getNext_device_code()); if (routelineserver.getShortPathLines(dto.getStart_device_code(), dto.getNext_device_code(), plan_code).size() == 0) { throw new Exception(dto.getStart_point_code() + "->" + dto.getNext_point_code() + "路由不通!"); } - String createTaskCheck = acsConfigService.findByCode(AcsConfig.CREATETASKCHECK).getValue(); - DeviceService deviceService = SpringContextHolder.getBean(DeviceServiceImpl.class); DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - Device nextdevice = appService.findDeviceByCode(next_device_code); Device startdevice = appService.findDeviceByCode(start_device_code); dto.setMaterial(startdevice.getMaterial_type()); - StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver; - StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver; WQLObject wo = WQLObject.getWQLObject("acs_task"); JSONObject json = (JSONObject) JSONObject.toJSON(dto); diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateInst.java b/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateInst.java index 8677789..c6cd796 100644 --- a/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateInst.java +++ b/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateInst.java @@ -56,9 +56,8 @@ public class AutoCreateInst { String route_plan_code = acsTask.getRoute_plan_code(); String vehicleType = acsTask.getVehicle_type(); //是否复合任务 =0非复合任务 - String compound_task = acsTask.getCompound_task(); String compound_task_data = null; - String next_point_code = acsTask.getNext_point_code(); + String next_point_code; String next_device_code = acsTask.getNext_device_code(); if (StrUtil.isEmpty(start_device_code)) { log.info("任务 [" + taskcode + "] 起点设备为空,无法生成指令。"); diff --git a/acs/nladmin-system/src/main/java/org/nl/start/auto/run/NDCSocketConnectionAutoRun.java b/acs/nladmin-system/src/main/java/org/nl/start/auto/run/NDCSocketConnectionAutoRun.java index ef1f424..51d2d53 100644 --- a/acs/nladmin-system/src/main/java/org/nl/start/auto/run/NDCSocketConnectionAutoRun.java +++ b/acs/nladmin-system/src/main/java/org/nl/start/auto/run/NDCSocketConnectionAutoRun.java @@ -36,6 +36,7 @@ import org.springframework.stereotype.Component; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; +import java.net.InetSocketAddress; import java.net.Socket; import java.util.Date; import java.util.Map; @@ -90,7 +91,9 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { ip = acsConfigService.findByCode(AcsConfig.AGVURL).getValue(); port = Integer.parseInt(acsConfigService.findByCode(AcsConfig.AGVPORT).getValue()); byte[] b = new byte[1028]; - s = new Socket(ip, port); + s = new Socket(); + s.connect(new InetSocketAddress(ip, port), 2 * 1000); + s.setKeepAlive(true); dos = new DataOutputStream(s.getOutputStream()); dis = new DataInputStream(s.getInputStream()); @@ -154,8 +157,6 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { StandardAutodoorDeviceDriver standardAutodoorDeviceDriver; LnshStationDeviceDriver lnshStationDeviceDriver; LnshPalletizingManipulatorSiteDeviceDriver lnshPalletizingManipulatorSiteDeviceDriver; - int type = Integer.parseInt(acsConfigService.findByCode(AcsConfig.BUSINESSTYPE).getValue()); - try { if (phase == 0x01) { data = AgvService.sendAgvOneModeInst(phase, index); diff --git a/acs/nladmin-system/src/main/resources/config/application-dev.yml b/acs/nladmin-system/src/main/resources/config/application-dev.yml index 7eb57bd..1436d67 100644 --- a/acs/nladmin-system/src/main/resources/config/application-dev.yml +++ b/acs/nladmin-system/src/main/resources/config/application-dev.yml @@ -6,7 +6,7 @@ spring: druid: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy - url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:lnsh_acs2}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true + url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:yksh_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true username: ${DB_USER:root} password: ${DB_PWD:123456} # 初始连接数 diff --git a/acs/nladmin-system/src/main/resources/config/application-prod.yml b/acs/nladmin-system/src/main/resources/config/application-prod.yml index fdcbec5..e0e3fcd 100644 --- a/acs/nladmin-system/src/main/resources/config/application-prod.yml +++ b/acs/nladmin-system/src/main/resources/config/application-prod.yml @@ -6,7 +6,7 @@ spring: druid: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy - url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.4.210}:${DB_PORT:3306}/${DB_NAME:acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true + url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.4.210}:${DB_PORT:3306}/${DB_NAME:acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true username: ${DB_USER:root} password: ${DB_PWD:123456} # 初始连接数 @@ -52,7 +52,7 @@ spring: multi-statement-allow: true redis: #数据库索引 - database: ${REDIS_DB:2} + database: ${REDIS_DB:1} host: ${REDIS_HOST:127.0.0.1} port: ${REDIS_PORT:6379} password: ${REDIS_PWD:} diff --git a/acs/nladmin-ui/src/views/acs/device/driver/lnsh/lnsh_station.vue b/acs/nladmin-ui/src/views/acs/device/driver/lnsh/lnsh_station.vue index 5633cc5..145664f 100644 --- a/acs/nladmin-ui/src/views/acs/device/driver/lnsh/lnsh_station.vue +++ b/acs/nladmin-ui/src/views/acs/device/driver/lnsh/lnsh_station.vue @@ -337,31 +337,31 @@ export default { } for (const val in this.data1) { if (this.data1[val].code.indexOf('heartbeat') !== -1) { - this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) - 1) + this.data1[val].db = beforeStr + '.' + 'B0' } if (this.data1[val].code.indexOf('move') !== -1) { - this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 1) + this.data1[val].db = beforeStr + '.' + 'B2' } if (this.data1[val].code.indexOf('action') !== -1) { - this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 2) + this.data1[val].db = beforeStr + '.' + 'B3' } if (this.data1[val].code.indexOf('ioaction') !== -1) { - this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 3) + this.data1[val].db = beforeStr + '.' + 'B4' } if (this.data1[val].code.indexOf('error') !== -1) { - this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 4) + this.data1[val].db = beforeStr + '.' + 'B5' } if (this.data1[val].code.indexOf('task') !== -1) { - this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 5) + this.data1[val].db = beforeStr + '.' + 'D6' } if (this.data1[val].code.indexOf('weight') !== -1) { - this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 9) + this.data1[val].db = beforeStr + '.' + 'D10' } if (this.data1[val].code.indexOf('material') !== -1) { - this.data1[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 13) + '.50' + this.data1[val].db = beforeStr + '.' + 'STRING14.50' } if (this.data1[val].code.indexOf('barcode') !== -1) { - this.data1[val].db = beforeStr + '.' + 'W' + (parseInt(endNumber) + 63) + this.data1[val].db = beforeStr + '.' + 'W66' } } } @@ -382,10 +382,10 @@ export default { } for (const val in this.data2) { if (this.data2[val].code.indexOf('to_target') !== -1) { - this.data2[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 2) + this.data2[val].db = beforeStr + '.' + 'W2' } if (this.data2[val].code.indexOf('to_task') !== -1) { - this.data2[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 4) + this.data2[val].db = beforeStr + '.' + 'D4' } } } diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/common/utils/PointUpdateUtil.java b/lms/nladmin-system/src/main/java/org/nl/modules/common/utils/PointUpdateUtil.java index a3bf136..ae106da 100644 --- a/lms/nladmin-system/src/main/java/org/nl/modules/common/utils/PointUpdateUtil.java +++ b/lms/nladmin-system/src/main/java/org/nl/modules/common/utils/PointUpdateUtil.java @@ -35,7 +35,7 @@ public class PointUpdateUtil { pointObj.put("weight_unit_id", ""); pointObj.put("instorage_time", ""); pointObj.put("is_full", "0"); - pointObj.put("standing_time", "0"); + pointObj.put("stand_time", "0"); pointObj.put("warn_time", "0"); pointObj.put("group_id", ""); pointTab.update(pointObj); @@ -56,7 +56,7 @@ public class PointUpdateUtil { pointObj.put("ivt_qty", "0"); pointObj.put("pcsn", null); pointObj.put("material_id", null); - pointObj.put("standing_time", "0"); + pointObj.put("stand_time", "0"); pointTab.update(pointObj); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/MaterialDetailDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/MaterialDetailDto.java index ba6021e..c79d143 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/MaterialDetailDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/MaterialDetailDto.java @@ -24,7 +24,7 @@ public class MaterialDetailDto implements Serializable { /** * 物料编码 */ - private String material_code; + private String material_number; /** * 物料名称 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/MaterialbaseDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/MaterialbaseDto.java index 09fd61a..4ebee8d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/MaterialbaseDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/MaterialbaseDto.java @@ -5,7 +5,6 @@ import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; -import java.math.BigDecimal; /** * @author zhouz @@ -21,9 +20,10 @@ public class MaterialbaseDto implements Serializable { @JsonSerialize(using = ToStringSerializer.class) private Long material_id; - private String material_code; + private String material_number; + private String material_name; - private Integer standing_time; + private Integer stand_time; private Integer threshold_time; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/impl/MaterialbaseServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/impl/MaterialbaseServiceImpl.java index bd4e5cf..f63d50f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/impl/MaterialbaseServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/impl/MaterialbaseServiceImpl.java @@ -29,8 +29,6 @@ import org.springframework.transaction.annotation.Transactional; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Set; -import java.util.stream.Collectors; /** * @author zhouz @@ -50,11 +48,8 @@ public class MaterialbaseServiceImpl implements MaterialbaseService { HashMap map = new HashMap<>(); map.put("flag", "1"); - map.put("search", name); - map.put("material_type", MapUtil.getStr(whereJson, "material_type")); - map.put("order_code", MapUtil.getStr(whereJson, "order_code")); - map.put("product_grade", MapUtil.getStr(whereJson, "product_grade")); - map.put("brick_type", MapUtil.getStr(whereJson, "brick_type")); + map.put("material_number", MapUtil.getStr(whereJson, "material_number")); + map.put("material_name", MapUtil.getStr(whereJson, "material_name")); return WQL.getWO("QMD_ME_MATERIAL").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "create_time DESC"); } @@ -81,7 +76,7 @@ public class MaterialbaseServiceImpl implements MaterialbaseService { if (StrUtil.isNotEmpty(code) && code.contains("\\")) { code = code.replace("\\", "\\\\"); } - JSONObject json = wo.query("material_code ='" + code + "'").uniqueResult(0); + JSONObject json = wo.query("material_number ='" + code + "'").uniqueResult(0); if (ObjectUtil.isEmpty(json)) return null; String unit_name = WQLObject.getWQLObject("md_pb_measureunit").query("measure_unit_id= '" + json.getString("base_unit_id") + "'").uniqueResult(0).getString("unit_name"); json.put("base_unit_name", unit_name); @@ -93,10 +88,10 @@ public class MaterialbaseServiceImpl implements MaterialbaseService { @Transactional(rollbackFor = Exception.class) public void create(MaterialbaseDto dto) { WQLObject wo = WQLObject.getWQLObject("md_me_materialbase"); - String material_code = dto.getMaterial_code(); - JSONObject material = wo.query("material_code = '" + material_code + "'").uniqueResult(0); + String material_number = dto.getMaterial_number(); + JSONObject material = wo.query("material_number = '" + material_number + "'").uniqueResult(0); if (ObjectUtil.isNotEmpty(material)) { - throw new BadRequestException("物料编码 [" + material_code + "] 已存在!"); + throw new BadRequestException("物料号 [" + material_number + "] 已存在!"); } Long currentUserId = SecurityUtils.getCurrentUserId(); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/wql/QMD_ME_MATERIAL.wql b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/wql/QMD_ME_MATERIAL.wql index ac1de57..91ce79d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/wql/QMD_ME_MATERIAL.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/wql/QMD_ME_MATERIAL.wql @@ -22,6 +22,8 @@ 输入.order_code TYPEAS s_string 输入.product_grade TYPEAS s_string 输入.brick_type TYPEAS s_string + 输入.material_number TYPEAS s_string + 输入.material_name TYPEAS s_string [临时表] --这边列出来的临时表就会在运行期动态创建 @@ -53,20 +55,11 @@ md_me_materialbase mb WHERE is_delete = '0' - OPTION 输入.search <> "" - mb.material_code like '%' 输入.search '%' + OPTION 输入.material_number <> "" + mb.material_number like '%' 输入.material_number '%' ENDOPTION - OPTION 输入.material_type <> "" - mb.material_type = 输入.material_type - ENDOPTION - OPTION 输入.order_code <> "" - mb.order_code LIKE '%' 输入.order_code '%' - ENDOPTION - OPTION 输入.product_grade <> "" - mb.product_grade LIKE '%' 输入.product_grade '%' - ENDOPTION - OPTION 输入.brick_type <> "" - mb.brick_type LIKE '%' 输入.brick_type '%' + OPTION 输入.material_name <> "" + mb.material_name = like '%' 输入.material_name '%' ENDOPTION ENDSELECT ENDPAGEQUERY diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/wql/QMD_PB_STORAGEVEHICLEINFO.wql b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/wql/QMD_PB_STORAGEVEHICLEINFO.wql index 36ac5f7..0d33527 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/wql/QMD_PB_STORAGEVEHICLEINFO.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/wql/QMD_PB_STORAGEVEHICLEINFO.wql @@ -46,7 +46,7 @@ SELECT s.*, d.label AS storagevehicle_type_name, - mater.material_code, + mater.material_number, mater.material_name, point.point_code, point.point_name diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/dashboard/service/DashboardService.java b/lms/nladmin-system/src/main/java/org/nl/wms/dashboard/service/DashboardService.java index 640ba11..bb506aa 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/dashboard/service/DashboardService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/dashboard/service/DashboardService.java @@ -712,9 +712,9 @@ public class DashboardService { monthlyFailureStatistics.put("average", average); // 真实获取 average.put("mix", mixData.isEmpty() ? 0 : mixData.stream().mapToInt(o -> ((JSONObject) o).getIntValue("count")).sum() / mixData.size()); - average.put("press", mixData.isEmpty() ? 0 : pressData.stream().mapToInt(o -> ((JSONObject) o).getIntValue("count")).sum() / mixData.size()); - average.put("dry", mixData.isEmpty() ? 0 : dryData.stream().mapToInt(o -> ((JSONObject) o).getIntValue("count")).sum() / mixData.size()); - average.put("sort", mixData.isEmpty() ? 0 : sortData.stream().mapToInt(o -> ((JSONObject) o).getIntValue("count")).sum() / mixData.size()); + average.put("press", pressData.isEmpty() ? 0 : pressData.stream().mapToInt(o -> ((JSONObject) o).getIntValue("count")).sum() / mixData.size()); + average.put("dry", dryData.isEmpty() ? 0 : dryData.stream().mapToInt(o -> ((JSONObject) o).getIntValue("count")).sum() / mixData.size()); + average.put("sort", sortData.isEmpty() ? 0 : sortData.stream().mapToInt(o -> ((JSONObject) o).getIntValue("count")).sum() / mixData.size()); // 当日工序生产统计------------------------------------------------------------------------------------------------ JSONObject dailyProductionStatistics = new JSONObject(); @@ -776,6 +776,7 @@ public class DashboardService { * * @return 大屏首页设备数据 */ + @SuppressWarnings("all") public JSONObject homepageEquipment1() { JSONObject result = new JSONObject(); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java index 5d7d155..09cc9a3 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java @@ -68,7 +68,7 @@ public class AcsToWmsController { RLock lock = SpringContextHolder.getBean(RedissonClient.class).getFairLock(type); boolean try_lock = false; try { - try_lock = lock.tryLock(5, TimeUnit.SECONDS); + try_lock = lock.tryLock(10, TimeUnit.SECONDS); if (try_lock) { return new ResponseEntity<>(acsToWmsService.apply(whereJson), HttpStatus.OK); } @@ -150,8 +150,8 @@ public class AcsToWmsController { } @PostMapping("/getVehicleInfoBycode") - @Log("根据设备编码编码获取托盘信息") - @ApiOperation("根据设备编码编码获取托盘信息") + @Log("根据设备号编码获取托盘信息") + @ApiOperation("根据设备号编码获取托盘信息") @SaIgnore public ResponseEntity getVehicleInfoByDevice_code(@RequestBody Map whereJson) { return new ResponseEntity<>(acsToWmsService.getVehicleInfoByDeviceCode(whereJson), HttpStatus.OK); @@ -189,4 +189,12 @@ public class AcsToWmsController { public ResponseEntity inKiln(@RequestBody JSONObject param) { return ResponseEntity.ok(acsToWmsService.inKiln(param)); } + + @PostMapping("/reportForWork") + @Log("报工") + @ApiOperation("报工") + @SaIgnore + public ResponseEntity reportForWork(@RequestBody JSONObject param) { + return ResponseEntity.ok(acsToWmsService.reportForWork(param)); + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java index 0d4c7de..7ea841c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java @@ -96,7 +96,7 @@ public interface AcsToWmsService { JSONObject reverseGroup(JSONObject whereJson); /** - * 根据设备编码获取托盘信息 + * 根据设备号获取托盘信息 * * @param jsonObject 条件 * @return Map @@ -108,4 +108,6 @@ public interface AcsToWmsService { JSONObject outKiln(JSONObject whereJson); JSONObject inKiln(JSONObject param); + + JSONObject reportForWork(JSONObject param); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 45934fc..5f6c8ee 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -14,37 +14,21 @@ import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; -import org.nl.wms.basedata.eum.StandStatus; import org.nl.wms.basedata.eum.TrueOrFalse; import org.nl.wms.basedata.eum.VehicleType; import org.nl.wms.basedata.service.dto.VehicleDto; -import org.nl.wms.common.PickType; import org.nl.wms.ext.acs.service.AcsToWmsService; -import org.nl.wms.ext.acs.service.WmsToAcsService; +import org.nl.wms.pdm.service.WorkordeService; import org.nl.wms.sch.manage.*; -import org.nl.wms.sch.task.call.empty.FJCallEmptyTask; -import org.nl.wms.sch.task.call.empty.GTKCallEmptyTask; -import org.nl.wms.sch.task.call.empty.HLCallEmptyTask; import org.nl.wms.sch.task.call.empty.YZCallEmptyTask; -import org.nl.wms.sch.task.call.material.FJCallMaterialTask; -import org.nl.wms.sch.task.call.material.SZCallMaterialTask; -import org.nl.wms.sch.task.call.material.YZCallMaterialTask; -import org.nl.wms.sch.task.send.empty.FJSendEmptyTask; -import org.nl.wms.sch.task.send.empty.YZSendEmptyTask; -import org.nl.wms.sch.task.send.material.FJSendMaterialTask; -import org.nl.wms.sch.task.send.material.HLSendMaterialTask; -import org.nl.wms.sch.task.send.material.SZSendMaterialTask; +import org.nl.wms.sch.task.call.material.GZCallMaterialTask; import org.nl.wms.sch.task.send.material.YZSendMaterialTask; -import org.nl.wms.sch.task.to.pack.BTHCToPackageTask; -import org.nl.wms.sch.task.to.pack.FJToPackageTask; import org.nl.wms.sch.task.util.TaskUtils; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.lang.reflect.Method; -import java.math.BigDecimal; -import java.util.Date; import java.util.Map; @Service @@ -52,37 +36,13 @@ import java.util.Map; @Slf4j public class AcsToWmsServiceImpl implements AcsToWmsService { - private final HLCallEmptyTask hlCallEmptyTask; - - private final HLSendMaterialTask hlSendMaterialTask; + private final WorkordeService workordeService; private final YZCallEmptyTask yzCallEmptyTask; private final YZSendMaterialTask yzSendMaterialTask; - private final SZSendMaterialTask szSendMaterialTask; - - private final FJCallMaterialTask fjCallMaterialTask; - - private final FJSendEmptyTask fjSendEmptyTask; - - private final GTKCallEmptyTask gtkCallEmptyTask; - - private final FJSendMaterialTask fjSendMaterialTask; - - private final FJCallEmptyTask fjCallEmptyTask; - - private final FJToPackageTask fjToPackageTask; - - private final BTHCToPackageTask bthcToPackageTask; - - private final YZCallMaterialTask yzCallMaterialTask; - - private final YZSendEmptyTask yzSendEmptyTask; - - private final SZCallMaterialTask szCallMaterialTask; - - private final WmsToAcsService wmsToAcsService; + private final GZCallMaterialTask gzCallMaterialTask; /** * task_id:任务标识 @@ -207,7 +167,91 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { @Override @Transactional(rollbackFor = Exception.class) public JSONObject apply(JSONObject param) { - return null; + String type = param.getString("type"); + if (StrUtil.isBlank(type)) { + throw new BadRequestException("任务类型不能为空!"); + } + String pointCode = param.getString("device_code"); + if (StrUtil.isBlank(pointCode)) { + throw new BadRequestException("点位不能为空!"); + } + + JSONObject point = param.getJSONObject("point"); + if (ObjectUtil.isEmpty(point)) { + point = WQLObject + .getWQLObject("sch_base_point") + .query("is_used = '1' AND point_code = '" + pointCode + "'") + .uniqueResult(0); + if (ObjectUtil.isEmpty(point)) { + throw new BadRequestException("[" + pointCode + "] 已删除或未启用!"); + } + } + + TaskUtils.isLocked(point); + + JSONObject methodParam = new JSONObject(); + methodParam.put("point", point); + methodParam.put("create_mode", CreateMode.ACSSQ.value()); + String request_param = param.getString("request_param"); + if (StrUtil.isBlank(request_param)) { + request_param = param.toJSONString(); + } + methodParam.put("request_param", request_param); + methodParam.put("create_id", ACSSystem.id); + methodParam.put("create_name", ACSSystem.nick_name); + + Region region = Region.get(point.getString("region_code")); + String taskCode = null; + switch (type) { + case "1": + // 送料 + switch (region) { + case YZ: + methodParam.put("workorder", param.getJSONObject("workorder")); + methodParam.put("vd", param.getJSONObject("vd")); + taskCode = yzSendMaterialTask.createTask(methodParam); + break; + default: + throw new BadRequestException("[" + region.label() + "] 不能发起送料任务!"); + } + break; + case "2": + // 叫料 + switch (region) { + case GZ: + taskCode = gzCallMaterialTask.createTask(methodParam); + break; + default: + throw new BadRequestException("[" + region.label() + "] 不能发起叫料任务!"); + } + break; + case "3": + // 送空 + break; + case "4": + // 叫空 + JSONObject workOrder = WQLObject + .getWQLObject("pdm_bd_workorder") + .query("is_delete = '0' AND device_code = '" + point.getString("device_code") + "' AND order_status = '3'") + .uniqueResult(0); + methodParam.put("workorder", workOrder); + + switch (region) { + case YZ: + taskCode = yzCallEmptyTask.createTask(methodParam); + break; + default: + throw new BadRequestException("[" + region.label() + "] 不能发起叫空任务!"); + } + break; + default: + throw new BadRequestException("未知任务类型!"); + } + + JSONObject result = new JSONObject(); + result.put("message", "申请任务成功,任务编码 [" + taskCode + "]"); + result.put("status", HttpStatus.OK.value()); + return result; } /** @@ -263,7 +307,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { vd.put("vehicle_code", vehicle_code); vd.put("material_id", workorder.getString("material_id")); vd.put("qty", qty); - vd.put("weight", weight); + vd.put("weight", Long.parseLong(weight) / 1000.00); vd.put("is_full", is_full); vd.put("workorder_id", workorder.getString("workorder_id")); vd.put("point_code", point_code); @@ -395,52 +439,83 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { if (StrUtil.isEmpty(type)) { throw new BadRequestException("类型不能为空!"); } - String workorder_code = jsonObject.getString("workorder_code"); - if (StrUtil.isEmpty(type)) { - throw new BadRequestException("工单编码不能为空!"); + String WorkOrderCode = jsonObject.getString("workorder_code"); + if (StrUtil.isEmpty(WorkOrderCode)) { + throw new BadRequestException("工单号不能为空!"); } - WQLObject workorder_table = WQLObject.getWQLObject("pdm_bd_workorder"); - JSONObject workorder = workorder_table - .query("workorder_code = '" + workorder_code + "'") + WQLObject workOrderTable = WQLObject.getWQLObject("pdm_bd_workorder"); + JSONObject workOrder = workOrderTable + .query("workorder_code = '" + WorkOrderCode + "'") .uniqueResult(0); + if (ObjectUtil.isEmpty(workOrder)) { + throw new BadRequestException("工单不存在!"); + } + long workOrderId = workOrder.getLongValue("workorder_id"); - if ("1".equals(type)) { - // 排产确认 - if (workorder.getIntValue("order_status") < 3) { - workorder.put("order_status", WorkOrderEnum.ORDER_STATUS_PRODUCING.value()); - workorder.put("realproducestart_date", DateUtil.now()); - TaskUtils.addACSUpdateColum(workorder); - workorder_table.update(workorder); - } - } else if ("2".equals(type)) { - // 工单完成 - String qty = jsonObject.getString("qty"); - if (StrUtil.isBlank(qty)) { - throw new BadRequestException("数量不能为空!"); - } + switch (type) { + case "1": + // 工单确认 + workOrder.put("order_status", WorkOrderEnum.ORDER_STATUS_PRODUCING.value()); + workOrder.put("realproducestart_date", DateUtil.now()); + TaskUtils.addACSUpdateColum(workOrder); + workOrderTable.update(workOrder); + break; + case "2": + // 工单完成 + { + int qty = jsonObject.getIntValue("qty"); + int qualifiedQty = jsonObject.getIntValue("qualified_qty"); + int unqualifiedQty = jsonObject.getIntValue("unqualified_qty"); + int weightG = jsonObject.getIntValue("weight"); + double weightKG = weightG / 1000.00; + int avgPieceWeightG = jsonObject.getIntValue("avg_piece_weight"); + double avgPieceWeightKG = avgPieceWeightG / 1000.00; - if (workorder.getIntValue("order_status") < 5) { - workorder.put("order_status", WorkOrderEnum.ORDER_STATUS_FINISH.value()); - if (!"0".equals(qty)) { - workorder.put("real_qty", qty); - } else { - workorder.put("real_qty", workorder.getIntValue("unqualified_qty") + workorder.getIntValue("qualified_qty")); - } - String unqualified_qty = jsonObject.getString("unqualified_qty"); - if (StrUtil.isNotBlank(unqualified_qty) && !"0".equals(unqualified_qty)) { - workorder.put("unqualified_qty", unqualified_qty); - } - String qualified_qty = jsonObject.getString("qualified_qty"); - if (StrUtil.isNotBlank(qualified_qty) && !"0".equals(qualified_qty)) { - workorder.put("qualified_qty", qualified_qty); - } else { - workorder.put("qualified_qty", workorder.getIntValue("real_qty") - workorder.getIntValue("unqualified_qty")); - } + // 报工 + workordeService.reportWorkOrderDaily(workOrderId, qty, qualifiedQty, unqualifiedQty, weightKG, avgPieceWeightKG); - workorder.put("realproduceend_date", DateUtil.now()); - TaskUtils.addACSUpdateColum(workorder); - workorder_table.update(workorder); + // 汇总 + JSONArray workOrderDailyList = WQLObject.getWQLObject("pdm_bd_work_order_daily").query("workorder_id = " + workOrderId).getResultJSONArray(0); + workOrder.put("real_qty", workOrderDailyList.stream().mapToInt(o -> ((JSONObject) o).getIntValue("qty")).sum()); + workOrder.put("real_weight", workOrderDailyList.stream().mapToDouble(o -> ((JSONObject) o).getDoubleValue("weight")).sum()); + workOrder.put("qualified_qty", workOrderDailyList.stream().mapToInt(o -> ((JSONObject) o).getIntValue("qualified_qty")).sum()); + workOrder.put("unqualified_qty", workOrderDailyList.stream().mapToInt(o -> ((JSONObject) o).getIntValue("unqualified_qty")).sum()); + workOrder.put("avg_piece_weight", workOrderDailyList.stream().mapToDouble(o -> ((JSONObject) o).getDoubleValue("avg_piece_weight")).sum() / workOrderDailyList.size()); + workOrder.put("order_status", WorkOrderEnum.ORDER_STATUS_FINISH.value()); + workOrder.put("realproduceend_date", DateUtil.now()); + TaskUtils.addACSUpdateColum(workOrder); + workOrderTable.update(workOrder); } + break; + case "3": + // 工单暂停 + { + int qty = jsonObject.getIntValue("qty"); + int qualifiedQty = jsonObject.getIntValue("qualified_qty"); + int unqualifiedQty = jsonObject.getIntValue("unqualified_qty"); + int weightG = jsonObject.getIntValue("weight"); + double weightKG = weightG / 1000.00; + int avgPieceWeightG = jsonObject.getIntValue("avg_piece_weight"); + double avgPieceWeightKG = avgPieceWeightG / 1000.00; + + // 报工 + workordeService.reportWorkOrderDaily(workOrderId, qty, qualifiedQty, unqualifiedQty, weightKG, avgPieceWeightKG); + + // 汇总 + JSONArray workOrderDailyList = WQLObject.getWQLObject("pdm_bd_work_order_daily").query("workorder_id = " + workOrderId).getResultJSONArray(0); + workOrder.put("real_qty", workOrderDailyList.stream().mapToInt(o -> ((JSONObject) o).getIntValue("qty")).sum()); + workOrder.put("real_weight", workOrderDailyList.stream().mapToDouble(o -> ((JSONObject) o).getDoubleValue("weight")).sum()); + workOrder.put("qualified_qty", workOrderDailyList.stream().mapToInt(o -> ((JSONObject) o).getIntValue("qualified_qty")).sum()); + workOrder.put("unqualified_qty", workOrderDailyList.stream().mapToInt(o -> ((JSONObject) o).getIntValue("unqualified_qty")).sum()); + workOrder.put("avg_piece_weight", workOrderDailyList.stream().mapToDouble(o -> ((JSONObject) o).getDoubleValue("avg_piece_weight")).sum() / workOrderDailyList.size()); + workOrder.put("order_status", WorkOrderEnum.ORDER_STATUS_STOP.value()); + workOrder.put("realproduceend_date", DateUtil.now()); + TaskUtils.addACSUpdateColum(workOrder); + workOrderTable.update(workOrder); + } + break; + default: + throw new BadRequestException("未知操作类型!"); } JSONObject result = new JSONObject(); @@ -475,27 +550,42 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { /** * 入窑口反向组盘 * - * @param whereJson + * @param param */ @Override @Transactional(rollbackFor = Exception.class) - public JSONObject reverseGroup(JSONObject whereJson) { - String vehicle_code = whereJson.getString("vehicle_code"); - if (StrUtil.isBlank(vehicle_code)) { + public JSONObject reverseGroup(JSONObject param) { + String vehicle_code = TaskUtils.formatVehicleCode(param.getString("vehicle_code")); + if ("0000".equals(vehicle_code)) { throw new BadRequestException("条码不能为空!"); } - String task_code = whereJson.getString("task_code"); - if (StrUtil.isBlank(task_code)) { - throw new BadRequestException("任务编码不能为空!"); + String device_code = param.getString("device_code"); + if (StrUtil.isBlank(device_code)) { + throw new BadRequestException("设备号不能为空!"); } - JSONObject task = WQLObject.getWQLObject("sch_base_task").query("task_code = '" + task_code + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(task)) { - throw new BadRequestException("未查询到任务 [" + task_code + "] !"); + WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); + JSONObject point = pointTable.query("point_code = '" + device_code + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(point)) { + throw new BadRequestException("[" + device_code + "] 点位不存在!"); + } + // 等待任务完成 + TaskUtils.isLocked(point); + + String vdId = point.getString("vd_id"); + if (StrUtil.isNotBlank(vdId)) { + JSONObject vdUpdate = new JSONObject(); + vdUpdate.put("vehicle_code", vehicle_code); + WQLObject.getWQLObject("st_ivt_vehicle_detail").update(vdUpdate, "vd_id = " + vdId); + + // 解绑点位防止人工放料出错 + point.put("vehicle_type", ""); + point.put("vehicle_code", ""); + point.put("vd_id", null); + point.put("point_status", PointStatus.EMPTY.value()); + TaskUtils.addACSUpdateColum(point); + pointTable.update(point); } - JSONObject vd_update = new JSONObject(); - vd_update.put("vehicle_code", vehicle_code); - WQLObject.getWQLObject("st_ivt_vehicle_detail").update(vd_update, "vd_id = " + task.getString("group_id")); JSONObject result = new JSONObject(); result.put("status", HttpStatus.OK.value()); @@ -504,7 +594,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } /** - * 根据设备编码获取托盘信息 + * 根据设备号获取托盘信息 * * @param jsonObject 条件 * @return Map @@ -622,12 +712,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { .query("is_delete = '0' AND vehicle_type = '2' AND vehicle_code = '" + vehicle_code + "'") .uniqueResult(0); if (ObjectUtil.isNotEmpty(vd)) { - vd.put("is_fire", "1"); - vd.put("is_in_kiln", "0"); - vd_table.update(vd); - JSONObject workorder = WQLObject.getWQLObject("pdm_bd_workorder").query("workorder_id = " + vd.getString("workorder_id")).uniqueResult(0); to_package = TrueOrFalse.trueOrFalse(workorder.getString("is_pri")); + + vd.put("out_kiln_time", DateUtil.now()); + TaskUtils.addACSUpdateColum(vd); + vd_table.update(vd); } JSONObject result = new JSONObject(); @@ -645,13 +735,25 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { @Override public JSONObject inKiln(JSONObject param) { String vehicle_code = TaskUtils.formatVehicleCode(param.getString("vehicle_code")); - if (StrUtil.isNotBlank(vehicle_code)) { - String kiln_number = param.getString("kiln_number"); - if (StrUtil.isNotBlank(kiln_number)) { - JSONObject vd_update = new JSONObject(); - vd_update.put("kiln_number", "Y0" + kiln_number); - vd_update.put("in_kiln_time", DateUtil.now()); - WQLObject.getWQLObject("st_ivt_vehicle_detail").update(vd_update, "is_delete = '0' AND vehicle_code = '" + vehicle_code + "'"); + if (!"0000".equals(vehicle_code)) { + String type = param.getString("type"); + if ("1".equals(type)) { + String kilnNumber = param.getString("kiln_number"); + if (StrUtil.isNotBlank(kilnNumber) && !"0".equals(kilnNumber)) { + JSONObject vd_update = new JSONObject(); + vd_update.put("kiln_number", "Y0" + kilnNumber); + vd_update.put("in_kiln_time", DateUtil.now()); + TaskUtils.addACSUpdateColum(vd_update); + WQLObject.getWQLObject("st_ivt_vehicle_detail").update(vd_update, "is_delete = '0' AND vehicle_code = '" + vehicle_code + "'"); + } + } else if ("2".equals(type)) { + String coolNumber = param.getString("cool_number"); + if (StrUtil.isNotBlank(coolNumber) && !"0".equals(coolNumber)) { + JSONObject vd_update = new JSONObject(); + vd_update.put("cool_number", "LQD0" + coolNumber); + TaskUtils.addACSUpdateColum(vd_update); + WQLObject.getWQLObject("st_ivt_vehicle_detail").update(vd_update, "is_delete = '0' AND vehicle_code = '" + vehicle_code + "'"); + } } } @@ -660,4 +762,67 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { result.put("message", "反馈成功!"); return result; } + + @Override + public JSONObject reportForWork(JSONObject param) { + String WorkOrderCode = param.getString("workorder_code"); + if (StrUtil.isEmpty(WorkOrderCode)) { + throw new BadRequestException("工单号不能为空!"); + } + WQLObject workOrderTable = WQLObject.getWQLObject("pdm_bd_workorder"); + JSONObject workOrder = workOrderTable + .query("workorder_code = '" + WorkOrderCode + "'") + .uniqueResult(0); + if (ObjectUtil.isEmpty(workOrder)) { + throw new BadRequestException("工单不存在!"); + } + long workOrderId = workOrder.getLongValue("workorder_id"); + int qty = param.getIntValue("qty"); + int qualifiedQty = param.getIntValue("qualified_qty"); + int unqualifiedQty = param.getIntValue("unqualified_qty"); + int weightG = param.getIntValue("weight"); + double weightKG = weightG / 1000.00; + int avgPieceWeightG = param.getIntValue("avg_piece_weight"); + double avgPieceWeightKG = avgPieceWeightG / 1000.00; + + String today = DateUtil.today(); + WQLObject wodTable = WQLObject.getWQLObject("pdm_bd_work_order_daily"); + JSONObject workOrderDaily = wodTable.query("workorder_id = " + workOrderId + " AND date = '" + today + "'").uniqueResult(0); + + if (ObjectUtil.isEmpty(workOrderDaily)) { + workOrderDaily = new JSONObject(); + workOrderDaily.put("id", IdUtil.getSnowflake().nextId()); + workOrderDaily.put("date", today); + workOrderDaily.put("workorder_id", workOrderId); + workOrderDaily.put("qty", qty); + workOrderDaily.put("qualified_qty", qualifiedQty); + workOrderDaily.put("unqualified_qty", unqualifiedQty); + workOrderDaily.put("weight", weightKG); + workOrderDaily.put("avg_piece_weight", avgPieceWeightKG); + workOrderDaily.put("is_report", TrueOrFalse.TRUE.value()); + TaskUtils.addACSCreateColum(workOrderDaily); + wodTable.insert(workOrderDaily); + } else { + if ("1".equals(workOrderDaily.getString("is_report"))) { + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.CREATED.value()); + result.put("message", "当日已报工!"); + return result; + } + + workOrderDaily.put("qty", qty); + workOrderDaily.put("qualified_qty", qualifiedQty); + workOrderDaily.put("unqualified_qty", unqualifiedQty); + workOrderDaily.put("weight", weightKG); + workOrderDaily.put("avg_piece_weight", avgPieceWeightKG); + workOrderDaily.put("is_report", TrueOrFalse.TRUE.value()); + TaskUtils.addACSUpdateColum(workOrderDaily); + wodTable.update(workOrderDaily); + } + + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.OK.value()); + result.put("message", "反馈成功!"); + return result; + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/wql/ACS_TO_WMS.wql b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/wql/ACS_TO_WMS.wql index 796d970..0b2b2f9 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/wql/ACS_TO_WMS.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/wql/ACS_TO_WMS.wql @@ -78,7 +78,7 @@ QUERY SELECT vd.is_package, - material.material_code, + material.material_number, material.furnace, material.material_brick_type, material.product_grade, diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/PdaService.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/PdaService.java index 8e4bc53..79ec05a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/PdaService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/PdaService.java @@ -32,7 +32,7 @@ public interface PdaService { * 查询设备 * * @param func 手持功能 - * @return 设备编码 设备名称 + * @return 设备号 设备名称 */ JSONArray device(String func); @@ -47,7 +47,7 @@ public interface PdaService { /** * 不合格品上报 * - * @param device_code 设备编码 + * @param device_code 设备号 * @param unqualified_qty 不合格数量 */ void report(String device_code, String unqualified_qty); @@ -120,7 +120,7 @@ public interface PdaService { /** * 呼叫次品料 * - * @param device_code 设备编码 + * @param device_code 设备号 */ void callDefective(String device_code, String request_param); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/WorkordeService.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/WorkordeService.java index 1bd390d..118d0de 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/WorkordeService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/WorkordeService.java @@ -126,4 +126,6 @@ public interface WorkordeService { JSONArray getMaterial(); void downloadExcel(Map params, HttpServletResponse response); + + void reportWorkOrderDaily(long workOrderId, int qty, int qualifiedQty, int unqualifiedQty, double weight, double avgPieceWeight); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/dto/DeviceDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/dto/DeviceDto.java index 736ed46..5874ee4 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/dto/DeviceDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/dto/DeviceDto.java @@ -23,7 +23,7 @@ public class DeviceDto implements Serializable { private Long device_id; /** - * 设备编码 + * 设备号 */ private String device_code; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/dto/WorkorderDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/dto/WorkorderDto.java index 54b1207..6a5b57d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/dto/WorkorderDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/dto/WorkorderDto.java @@ -65,7 +65,7 @@ public class WorkorderDto implements Serializable { /** 回传MES状态 */ private String passback_status; - /** 设备编码 */ + /** 设备号 */ private String device_code; /** 外部标识 */ @@ -96,7 +96,7 @@ public class WorkorderDto implements Serializable { private String update_time; /** 静置时间 */ - private String standing_time; + private String stand_time; /** 阈值时间 */ private String warn_time; @@ -112,4 +112,10 @@ public class WorkorderDto implements Serializable { private String region_code; private String plan_date; + + private BigDecimal plan_weight; + + private BigDecimal real_weight; + + private BigDecimal avg_piece_weight; } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/WorkorderServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/WorkorderServiceImpl.java index 7ee8172..e73c8b1 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/WorkorderServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/WorkorderServiceImpl.java @@ -19,12 +19,10 @@ import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.WqlUtil; import org.nl.wms.basedata.eum.TrueOrFalse; -import org.nl.wms.basedata.eum.VehicleType; import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.pdm.service.WorkordeService; import org.nl.wms.pdm.service.dto.WorkorderDto; import org.nl.wms.sch.manage.Region; -import org.nl.wms.sch.manage.RegionInType; import org.nl.wms.sch.manage.WorkOrderEnum; import org.nl.wms.sch.task.util.TaskUtils; import org.springframework.data.domain.Pageable; @@ -34,7 +32,6 @@ import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -127,15 +124,7 @@ public class WorkorderServiceImpl implements WorkordeService { work_order.put("planproducestart_date", dto.getPlanproducestart_date()); work_order.put("planproduceend_date", dto.getPlanproduceend_date()); work_order.put("material_id", dto.getMaterial_id()); - String region_code = dto.getRegion_code(); String vehicle_type = dto.getVehicle_type(); - if (!Region.FJ.value().equals(region_code)) { - if (Region.YZ.value().equals(region_code)) { - vehicle_type = VehicleType.STEEL_TRAY.value(); - } else if (Region.HL.value().equals(region_code)) { - vehicle_type = VehicleType.CUP.value(); - } - } work_order.put("vehicle_type", vehicle_type); work_order.put("device_id", dto.getDevice_id()); work_order.put("device_code", dto.getDevice_code()); @@ -145,6 +134,7 @@ public class WorkorderServiceImpl implements WorkordeService { work_order.put("ext_code", dto.getExt_code()); work_order.put("is_delete", TrueOrFalse.FALSE.value()); work_order.put("plan_date", dto.getPlan_date()); + work_order.put("plan_weight", dto.getPlan_weight()); Long user_id = SecurityUtils.getCurrentUserId(); String nick_name = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); @@ -209,8 +199,20 @@ public class WorkorderServiceImpl implements WorkordeService { .addParam("workorder_id", workorder_id) .process() .uniqueResult(0); - if (submit_obj.getIntValue("order_status") > 2) { - throw new BadRequestException("工单已开工!"); + int orderStatus = submit_obj.getIntValue("order_status"); + if (orderStatus == 3) { + throw new BadRequestException("工单已在生产中!"); + } + if (orderStatus == 5) { + throw new BadRequestException("工单已完成!"); + } + int product_code = submit_obj.getIntValue("product_code"); + int a = submit_obj.getIntValue("a"); + int b = submit_obj.getIntValue("b"); + int h = submit_obj.getIntValue("h"); + int w = submit_obj.getIntValue("w"); + if (product_code == 0 || a == 0 || b == 0 || h == 0 || w == 0) { + throw new BadRequestException("工单所生产物料的砖型参数未正确配置!"); } JSONObject workorder = WQLObject @@ -222,29 +224,34 @@ public class WorkorderServiceImpl implements WorkordeService { } if (Region.HL.value().equals(submit_obj.getString("region_code"))) { - String material_code = submit_obj.getString("material_code"); - submit_obj.put("material_code", material_code.substring(5, 11)); - } + JSONObject order_update = new JSONObject(); + order_update.put("order_status", WorkOrderEnum.ORDER_STATUS_PRODUCING.value()); + TaskUtils.addCurrentUpdateColum(order_update); + WQLObject + .getWQLObject("pdm_bd_workorder") + .update(order_update, "workorder_id = " + workorder_id); + } else { - JSONArray request = new JSONArray(); - request.add(submit_obj); - Map result; - try { - result = wmsToAcsService.order(request); - } catch (Exception e) { - log.error("工单开工报错!", e); - throw new RuntimeException(e); - } - if (HttpStatus.OK.value() != MapUtil.getInt(result, "status")) { - throw new BadRequestException(String.valueOf(result.get("message"))); - } + JSONArray request = new JSONArray(); + request.add(submit_obj); + Map result; + try { + result = wmsToAcsService.order(request); + } catch (Exception e) { + log.error("工单开工报错!", e); + throw new BadRequestException(e.getMessage()); + } + if (HttpStatus.OK.value() != MapUtil.getInt(result, "status")) { + throw new BadRequestException(String.valueOf(result.get("message"))); + } - JSONObject order_update = new JSONObject(); - order_update.put("order_status", WorkOrderEnum.ORDER_STATUS_DELIVERED.value()); - TaskUtils.addCurrentUpdateColum(order_update); - WQLObject - .getWQLObject("pdm_bd_workorder") - .update(order_update, "workorder_id = " + workorder_id); + JSONObject order_update = new JSONObject(); + order_update.put("order_status", WorkOrderEnum.ORDER_STATUS_DELIVERED.value()); + TaskUtils.addCurrentUpdateColum(order_update); + WQLObject + .getWQLObject("pdm_bd_workorder") + .update(order_update, "workorder_id = " + workorder_id); + } } @Override @@ -307,7 +314,7 @@ public class WorkorderServiceImpl implements WorkordeService { String workprocedure_id = row.getString("workprocedure_id"); String produceorder_code = row.getString("produceorder_code"); String material_id = row.getString("material_id"); - String material_code = row.getString("material_code"); + String material_number = row.getString("material_number"); String material_name = row.getString("material_name"); String material_spec = row.getString("material_spec"); String is_needmove = row.getString("is_needmove"); @@ -323,7 +330,7 @@ public class WorkorderServiceImpl implements WorkordeService { produceorderMap.put("update_optid", currentUserId); produceorderMap.put("update_optname", nickName); produceorderMap.put("update_time", now); - if (order_status.equals("01")){ + if (order_status.equals("01")) { produceorderMap.put("realproducestart_date", now); } wo.update(produceorderMap); @@ -346,15 +353,15 @@ public class WorkorderServiceImpl implements WorkordeService { // TODO JSONArray array = new JSONArray(); JSONObject acsObj = new JSONObject(); - acsObj.put("ext_order_id",workorder_id); - acsObj.put("is_needmove",is_needmove); - acsObj.put("order_code",produceorder_code); - acsObj.put("qty",plan_qty); - acsObj.put("material_uuid",material_id); - acsObj.put("material_code",material_code); - acsObj.put("material_name",material_name); - acsObj.put("material_spec",material_spec); - acsObj.put("device_code",device_code); + acsObj.put("ext_order_id", workorder_id); + acsObj.put("is_needmove", is_needmove); + acsObj.put("order_code", produceorder_code); + acsObj.put("qty", plan_qty); + acsObj.put("material_uuid", material_id); + acsObj.put("material_number", material_number); + acsObj.put("material_name", material_name); + acsObj.put("material_spec", material_spec); + acsObj.put("device_code", device_code); array.add(acsObj); wmsToAcsService.order(array); } else { @@ -372,8 +379,8 @@ public class WorkorderServiceImpl implements WorkordeService { // TODO JSONArray array = new JSONArray(); JSONObject map = new JSONObject(); - map.put("ext_order_id",workorder_id); - map.put("type","2"); + map.put("ext_order_id", workorder_id); + map.put("type", "2"); array.add(map); wmsToAcsService.orderStatusUpdate(array); } @@ -395,12 +402,12 @@ public class WorkorderServiceImpl implements WorkordeService { WQLObject wo = WQLObject.getWQLObject("PDM_BD_WORKORDER"); JSONObject jsonObject = wo.query("workorder_id = '" + workorder_id + "'").uniqueResult(0); JSONObject produceorderMap = new JSONObject(); - produceorderMap.put("workorder_id",workorder_id); - if (row.getString("report_qty").equals("0") || StrUtil.isEmpty(row.getString("report_qty"))){ - produceorderMap.put("report_qty",report_qty); - }else { + produceorderMap.put("workorder_id", workorder_id); + if (row.getString("report_qty").equals("0") || StrUtil.isEmpty(row.getString("report_qty"))) { + produceorderMap.put("report_qty", report_qty); + } else { Integer sum = Integer.parseInt(row.getString("report_qty")) + Integer.parseInt(report_qty); - produceorderMap.put("report_qty",sum); + produceorderMap.put("report_qty", sum); } produceorderMap.put("order_status", "03"); produceorderMap.put("update_optid", currentUserId); @@ -410,20 +417,20 @@ public class WorkorderServiceImpl implements WorkordeService { //同时修改这条工单对应的记录表中最新的一条数据的报工数量 WQLObject wo_record = WQLObject.getWQLObject("MPS_BD_MacOperateRecord"); //获取最新的工单的对应记录信息 - JSONObject newRecord = wo_record.query("workorder_id = '"+workorder_id+"' and (operatetime_end is null or operatetime_end = '')").uniqueResult(0); - newRecord.put("report_qty",report_qty); - newRecord.put("finish_qty",jsonObject.getString("real_qty")); + JSONObject newRecord = wo_record.query("workorder_id = '" + workorder_id + "' and (operatetime_end is null or operatetime_end = '')").uniqueResult(0); + newRecord.put("report_qty", report_qty); + newRecord.put("finish_qty", jsonObject.getString("real_qty")); Integer finishproduct_qty = Integer.parseInt(jsonObject.getString("real_qty")) - Integer.parseInt(newRecord.getString("init_qty")); - newRecord.put("finishproduct_qty",finishproduct_qty); - newRecord.put("operatetime_end",now); + newRecord.put("finishproduct_qty", finishproduct_qty); + newRecord.put("operatetime_end", now); wo_record.update(newRecord); //wms向acs发送请求 工单暂停 // 报工的时候同时向acs发送工单暂停状态 // TODO JSONArray array = new JSONArray(); JSONObject map = new JSONObject(); - map.put("ext_order_id",workorder_id); - map.put("type","1"); + map.put("ext_order_id", workorder_id); + map.put("type", "1"); array.add(map); wmsToAcsService.orderStatusUpdate(array); } @@ -468,11 +475,11 @@ public class WorkorderServiceImpl implements WorkordeService { JSONObject jsonProduceShiftOrder = wo.query("workorder_id = '" + workorder_id + "'").uniqueResult(0); WQLObject wo_record = WQLObject.getWQLObject("MPS_BD_MacOperateRecord"); //获取最新的工单的对应记录信息 - JSONObject jsonObject = wo_record.query("workorder_id = '"+workorder_id+"' and (operatetime_end is null or operatetime_end = '')").uniqueResult(0); + JSONObject jsonObject = wo_record.query("workorder_id = '" + workorder_id + "' and (operatetime_end is null or operatetime_end = '')").uniqueResult(0); String finish_qty = jsonProduceShiftOrder.getString("real_qty"); - jsonObject.put("finish_qty",finish_qty); + jsonObject.put("finish_qty", finish_qty); Integer finishproduct_qty = Integer.parseInt(finish_qty) - Integer.parseInt(jsonObject.getString("init_qty")); - jsonObject.put("finishproduct_qty",finishproduct_qty); + jsonObject.put("finishproduct_qty", finishproduct_qty); return jsonObject; } @@ -486,8 +493,8 @@ public class WorkorderServiceImpl implements WorkordeService { public JSONArray getDtl(JSONObject param) { final String workorder_id = param.getString("workorder_id"); JSONObject map = new JSONObject(); - map.put("flag","5"); - map.put("workorder_id",workorder_id); + map.put("flag", "5"); + map.put("workorder_id", workorder_id); JSONArray resultJSONArray = WQL.getWO("MPS_PRODUCEDURE001").addParamMap(map).process().getResultJSONArray(0); return resultJSONArray; } @@ -532,10 +539,10 @@ public class WorkorderServiceImpl implements WorkordeService { List> list = workorders.stream().map(o -> { JSONObject workorder = (JSONObject) o; Map workorder_map = new LinkedHashMap<>(); - workorder_map.put("工单编码", workorder.getString("workorder_code")); + workorder_map.put("工单号", workorder.getString("workorder_code")); workorder_map.put("工单状态", workorder.getString("order_status")); workorder_map.put("设备", workorder.getString("device_name")); - workorder_map.put("物料编码", workorder.getString("material_code")); + workorder_map.put("物料编码", workorder.getString("material_number")); workorder_map.put("载具类型", workorder.getString("vehicle_type")); workorder_map.put("计划数量", workorder.getString("plan_qty")); workorder_map.put("计划生产日期", workorder.getString("plan_date")); @@ -553,4 +560,35 @@ public class WorkorderServiceImpl implements WorkordeService { throw new RuntimeException(e); } } + + @Override + public void reportWorkOrderDaily(long workOrderId, int qty, int qualifiedQty, int unqualifiedQty, double weight, double avgPieceWeight) { + String today = DateUtil.today(); + WQLObject wodTable = WQLObject.getWQLObject("pdm_bd_work_order_daily"); + JSONObject workOrderDaily = wodTable.query("workorder_id = " + workOrderId + " AND date = '" + today + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(workOrderDaily)) { + workOrderDaily = new JSONObject(); + workOrderDaily.put("id", IdUtil.getSnowflake().nextId()); + workOrderDaily.put("date", today); + workOrderDaily.put("workorder_id", workOrderId); + workOrderDaily.put("qty", qty); + workOrderDaily.put("qualified_qty", qualifiedQty); + workOrderDaily.put("unqualified_qty", unqualifiedQty); + workOrderDaily.put("weight", weight); + workOrderDaily.put("avg_piece_weight", avgPieceWeight); + workOrderDaily.put("is_report", "1"); + TaskUtils.addACSCreateColum(workOrderDaily); + wodTable.insert(workOrderDaily); + } else { + workOrderDaily.put("qty", qty); + workOrderDaily.put("qualified_qty", qualifiedQty); + workOrderDaily.put("unqualified_qty", unqualifiedQty); + workOrderDaily.put("weight", weight); + workOrderDaily.put("avg_piece_weight", avgPieceWeight); + workOrderDaily.put("is_report", "1"); + TaskUtils.addACSUpdateColum(workOrderDaily); + wodTable.update(workOrderDaily); + } + + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/MPS_PRODUCEDURE001.wql b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/MPS_PRODUCEDURE001.wql index 1deca4c..ccf1f58 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/MPS_PRODUCEDURE001.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/MPS_PRODUCEDURE001.wql @@ -55,7 +55,8 @@ PAGEQUERY SELECT ShiftOrder.*, - material.material_code, + material.material_number, + material.material_name, device.device_name FROM PDM_BD_WORKORDER ShiftOrder @@ -84,7 +85,7 @@ ENDOPTION OPTION 输入.material <> "" ( - material.material_code like 输入.material + material.material_number like 输入.material ) ENDOPTION OPTION 输入.region_code <> "" @@ -115,7 +116,7 @@ SELECT shiftOrder.*, workprocedure.workprocedure_name, - material.material_code, + material.material_number, material.material_spec FROM PDM_BD_WORKORDER shiftOrder @@ -172,7 +173,7 @@ workorder.order_status, workorder.device_id, device.device_code, - material.material_code, + material.material_number, material.product_code, material.a, material.b, @@ -197,7 +198,7 @@ ShiftOrder.workorder_code, d1.label AS order_status, device.device_name, - material.material_code, + material.material_number, d2.label AS vehicle_type, ShiftOrder.plan_qty, ShiftOrder.plan_date, @@ -235,7 +236,7 @@ ENDOPTION OPTION 输入.material <> "" ( - material.material_code like 输入.material + material.material_number like 输入.material ) ENDOPTION OPTION 输入.region_code <> "" diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java index 3863e34..102f3e0 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java @@ -257,6 +257,7 @@ public abstract class AbstractAcsTask { point1.put("task_code", ""); point1.put("vehicle_type", ""); point1.put("vehicle_code", ""); + point1.put("vd_id", null); point1.put("point_status", PointStatus.EMPTY.value()); TaskUtils.addACSUpdateColum(point1); point_table.update(point1); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoCreateTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoCreateTask.java index 4276dfc..45c7b88 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoCreateTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoCreateTask.java @@ -11,18 +11,20 @@ import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; import org.nl.wms.sch.AcsUtil; import org.nl.wms.sch.task.AcsTaskDTO; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; import org.reflections.Reflections; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; import java.util.Set; +import java.util.concurrent.TimeUnit; @Slf4j @Component("autoCreateTask") public class AutoCreateTask { // 下发acs的任务集合 - private List taskList = null; private Set> subTypes = null; WQLObject taskTab = null; @@ -34,13 +36,26 @@ public class AutoCreateTask { subTypes = reflections.getSubTypesOf(AbstractAcsTask.class); } if (ObjectUtil.isNull(taskTab)) taskTab = WQLObject.getWQLObject("sch_base_task"); - taskList = new ArrayList<>(); - this.doExecute(); + RLock lock = SpringContextHolder.getBean(RedissonClient.class).getFairLock("autoCreateTask"); + boolean try_lock = false; + try { + try_lock = lock.tryLock(0, TimeUnit.SECONDS); + if (try_lock) { + this.doExecute(); + } + } catch (Exception e) { + log.error("auto create task error !", e); + } finally { + if (try_lock) { + lock.unlock(); + } + } } private void doExecute() { + ArrayList taskList = new ArrayList<>(); subTypes.forEach(clz -> { // 调用AbstractAcsTask类的每个子类的schedule()方法 try { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoUpdateStandStatus.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoUpdateStandStatus.java index eadf5b8..32dffb7 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoUpdateStandStatus.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoUpdateStandStatus.java @@ -36,7 +36,7 @@ public class AutoUpdateStandStatus { for (int i = 0; i < vds.size(); i++) { JSONObject vd = vds.getJSONObject(i); DateTime create_time = DateUtil.parse(vd.getString("create_time")); - DateTime time = DateUtil.offsetMinute(create_time, vd.getIntValue("standing_time")); + DateTime time = DateUtil.offsetMinute(create_time, vd.getIntValue("stand_time")); int compare = DateUtil.compare(DateUtil.date(), time); if (compare >= 0) { ids.add(vd.getLong("vd_id")); @@ -58,8 +58,8 @@ public class AutoUpdateStandStatus { JSONObject vd = vds.getJSONObject(i); DateTime create_time = DateUtil.parse(vd.getString("create_time")); int threshold_time = vd.getIntValue("threshold_time"); - int standing_time = vd.getIntValue("standing_time"); - if (threshold_time != 0 && threshold_time < standing_time) { + int stand_time = vd.getIntValue("stand_time"); + if (threshold_time != 0 && threshold_time < stand_time) { DateTime time = DateUtil.offsetMinute(create_time, threshold_time); int compare = DateUtil.compare(DateUtil.date(), time); if (compare >= 0) { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/PointStatus.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/PointStatus.java index 41aae09..e22df5a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/PointStatus.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/PointStatus.java @@ -12,7 +12,7 @@ public enum PointStatus { EMPTY("空位", "1"), EMPTY_VEHICLE("空载具", "2"), - HAS_GOODS("有货", "3"); + HAS_GOODS("有箱有料", "3"); private final String label; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/Region.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/Region.java index 549bbe5..c8dd013 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/Region.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/Region.java @@ -17,10 +17,10 @@ public enum Region { HL("混料区", "HL"), KLHJ("困料货架", "KLHJ"), YZ("压制区", "YZ"), - BCPHJ("半成品货架", "BCPHJ"), - SZ("烧制区", "SZ"), + YQHJ("窑前货架", "YQHJ"), + GZ("干燥区", "GZ"), + YHHJ("窑后货架", "YHHJ"), FJ("分拣区", "FJ"), - BTHC("半托缓存区", "BTHC"), GTK("钢托库", "GTK"); private final String label; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/wql/MANAGE_QUERY.wql b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/wql/MANAGE_QUERY.wql index 2e574ff..fbbea6e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/wql/MANAGE_QUERY.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/wql/MANAGE_QUERY.wql @@ -41,7 +41,7 @@ QUERY SELECT vd.*, - mb.standing_time + mb.stand_time FROM st_ivt_vehicle_detail vd LEFT JOIN md_me_materialbase mb ON vd.material_id = mb.material_id @@ -57,7 +57,7 @@ QUERY SELECT vd.*, - mb.standing_time, + mb.stand_time, mb.threshold_time FROM st_ivt_vehicle_detail vd diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/PointDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/PointDto.java index 68062d7..a0f22c9 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/PointDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/PointDto.java @@ -43,7 +43,7 @@ public class PointDto implements Serializable { /** 锁定类型 */ private String lock_type; - /** 设备编码 */ + /** 设备号 */ private String device_code; /** 载具类型 */ diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/TaskQueryDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/TaskQueryDto.java index 24911c7..9eae8e3 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/TaskQueryDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/TaskQueryDto.java @@ -72,7 +72,7 @@ public class TaskQueryDto implements Serializable { /** * 物料编码 */ - private String material_code; + private String material_number; /** * 车号 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java index 45ad63f..a4b2541 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java @@ -112,7 +112,7 @@ public class PointServiceImpl implements PointService { String point_code = dto.getPoint_code(); PointDto byCode = this.findByCode(point_code); if (ObjectUtil.isNotEmpty(byCode)) { - throw new BadRequestException("存在相同的点位编码"); + throw new BadRequestException("存在相同的点位号"); } Long currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getCurrentNickName(); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/RegionServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/RegionServiceImpl.java index 4faf50e..af5ed84 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/RegionServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/RegionServiceImpl.java @@ -45,7 +45,7 @@ public class RegionServiceImpl implements RegionService { map.put("flag", "1"); if (ObjectUtil.isNotEmpty(region_code)) map.put("region_code",region_code+"%"); - JSONObject json = WQL.getWO("QSCH_REGION_01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "region.region_code ASC"); + JSONObject json = WQL.getWO("QSCH_REGION_01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "region.create_time DESC"); return json; } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/call/empty/YZCallEmptyTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/call/empty/YZCallEmptyTask.java index 0795382..25af5b2 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/call/empty/YZCallEmptyTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/call/empty/YZCallEmptyTask.java @@ -39,12 +39,12 @@ public class YZCallEmptyTask extends AbstractAcsTask { @Override public String createTask(JSONObject form) { JSONObject point = form.getJSONObject("point"); - JSONObject work_order = form.getJSONObject("workorder"); + JSONObject workOrder = form.getJSONObject("workorder"); int priority = 1; - String material_id = null; - if (ObjectUtil.isNotEmpty(work_order)) { - priority = TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? 50 : 1; - material_id = work_order.getString("material_id"); + String materialId = null; + if (ObjectUtil.isNotEmpty(workOrder)) { + priority = TrueOrFalse.trueOrFalse(workOrder.getString("is_urgent")) ? 2 : 1; + materialId = workOrder.getString("material_id"); } JSONObject task = TaskUtils.buildTask( @@ -54,7 +54,7 @@ public class YZCallEmptyTask extends AbstractAcsTask { null, point.getString("point_code"), null, - material_id, + materialId, VehicleType.STEEL_TRAY.value(), null, priority, @@ -90,34 +90,52 @@ public class YZCallEmptyTask extends AbstractAcsTask { JSONObject point = null; String material_id = task.getString("material_id"); if (StrUtil.isNotBlank(material_id)) { - point = WQL + point = WQL .getWO("CALL_EMPTY_TASK") - .addParam("flag", "1") + .addParam("flag", "2") .addParam("point_code", task.getString("point_code2")) .addParam("material_id", material_id) .process() .uniqueResult(0); + + if (ObjectUtil.isNotEmpty(point)) { + task.put("task_status", TaskStatus.START_AND_END.value()); + task.put("point_code1", point.getString("point_code")); + task.put("vehicle_type", VehicleType.STEEL_TRAY.value()); + task.put("vehicle_code", TaskUtils.formatVehicleCode(point.getString("vehicle_code"))); + task.put("group_id", point.getLongValue("vd_id")); + task.put("remark", ""); + TaskUtils.addAutoUpdateColum(task); + task_table.update(task); + + point.put("lock_type", LockType.TASK_LOCKED.value()); + point.put("task_code", task.getString("task_code")); + TaskUtils.addAutoUpdateColum(point); + point_table.update(point); + } } if (ObjectUtil.isEmpty(point)) { - task.put("material_id", null); point = WQL .getWO("CALL_EMPTY_TASK") - .addParam("flag", "2") + .addParam("flag", "1") .process() .uniqueResult(0); - } - if (ObjectUtil.isNotEmpty(point)) { - task.put("task_status", TaskStatus.START_AND_END.value()); - task.put("point_code1", point.getString("point_code")); - task.put("vehicle_code", TaskUtils.formatVehicleCode(point.getString("vehicle_code"))); - task.put("remark", ""); - TaskUtils.addAutoUpdateColum(task); - task_table.update(task); - point.put("lock_type", LockType.TASK_LOCKED.value()); - point.put("task_code", task.getString("task_code")); - TaskUtils.addAutoUpdateColum(point); - point_table.update(point); + if (ObjectUtil.isNotEmpty(point)) { + task.put("task_status", TaskStatus.START_AND_END.value()); + task.put("point_code1", point.getString("point_code")); + task.put("vehicle_type", VehicleType.STEEL_TRAY.value()); + task.put("vehicle_code", TaskUtils.formatVehicleCode(point.getString("vehicle_code"))); + task.put("material_id", null); + task.put("remark", ""); + TaskUtils.addAutoUpdateColum(task); + task_table.update(task); + + point.put("lock_type", LockType.TASK_LOCKED.value()); + point.put("task_code", task.getString("task_code")); + TaskUtils.addAutoUpdateColum(point); + point_table.update(point); + } } } } @@ -186,14 +204,14 @@ public class YZCallEmptyTask extends AbstractAcsTask { } } - public void finishTask(JSONObject task, OperationType operation_type) { + public void finishTask(JSONObject task, OperationType operation_type) { int current_task_status = task.getIntValue("task_status"); if (current_task_status < Integer.parseInt(TaskStatus.FINISHED.value())) { if (operation_type == OperationType.MANUAL - && current_task_status < Integer.parseInt(TaskStatus.START_AND_END.value())) { + && current_task_status < Integer.parseInt(TaskStatus.START_AND_END.value())) { throw new BadRequestException("只能手动完成 [确认起点和终点] 之后的任务!"); } - + task.put("task_status", TaskStatus.FINISHED.value()); if (operation_type == OperationType.AUTO) { TaskUtils.addACSUpdateColum(task); @@ -232,6 +250,7 @@ public class YZCallEmptyTask extends AbstractAcsTask { point2.put("task_code", ""); point2.put("vehicle_type", task.getString("vehicle_type")); point2.put("vehicle_code", task.getString("vehicle_code")); + point2.put("vd_id", task.getString("group_id")); point2.put("point_status", PointStatus.EMPTY_VEHICLE.value()); if (operation_type == OperationType.AUTO) { TaskUtils.addACSUpdateColum(point2); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/call/empty/wql/CALL_EMPTY_TASK.wql b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/call/empty/wql/CALL_EMPTY_TASK.wql index 64eef90..a2bbeeb 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/call/empty/wql/CALL_EMPTY_TASK.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/call/empty/wql/CALL_EMPTY_TASK.wql @@ -15,7 +15,6 @@ ################################################# 输入.flag TYPEAS s_string 输入.point_code TYPEAS s_string - 输入.vehicle_type TYPEAS s_string 输入.material_id TYPEAS f_string [临时表] @@ -42,29 +41,6 @@ IF 输入.flag = "1" QUERY - SELECT - * - FROM - sch_base_point point - LEFT JOIN st_ivt_vehicle_detail vd ON point.vehicle_type = vd.vehicle_type - AND point.vehicle_code = vd.vehicle_code - WHERE - point.is_used = '1' - AND point.lock_type = '1' - AND point.region_code = 'BCPHJ' - AND point.point_status = '1' - AND point.vehicle_type = '2' - AND vd.is_delete = '0' - AND vd.point_code = 输入.point_code - AND vd.material_id = 输入.material_id - AND vd.is_full = '0' - AND vd.is_in_kiln = '0' - ENDSELECT - ENDQUERY - ENDIF - - IF 输入.flag = "2" - QUERY SELECT * FROM @@ -73,90 +49,25 @@ is_used = '1' AND lock_type = '1' AND region_code = 'GTK' - AND point_type = '3' + AND point_type = '1' ENDSELECT - ENDQUERY - ENDIF + ENDQUERY + ENDIF - IF 输入.flag = "3" - QUERY - SELECT - point.* + IF 输入.flag = "2" + QUERY + SELECT + p.* FROM - sch_base_point point - LEFT JOIN sch_base_task task ON point.point_code = task.point_code1 - AND task.task_status <> '7' - AND task_status <> '8' + sch_base_point p + LEFT JOIN st_ivt_vehicle_detail vd ON p.vd_id = vd.vd_id WHERE - point.is_used = '1' - AND point.lock_type = '1' - AND point.region_code = 'GTK' - AND point.point_type = '1' - AND task.task_id IS NULL - ENDSELECT - ENDQUERY - ENDIF - - IF 输入.flag = "4" - QUERY - SELECT - tpw.* - FROM - sch_base_point tpw - LEFT JOIN sch_base_point djw ON tpw.device_code = djw.point_code - WHERE - tpw.is_used = '1' - AND djw.is_used = '1' - AND tpw.region_code = 'FJ' - AND djw.region_code = 'FJ' - AND tpw.point_type = '4' - AND djw.point_type = '3' - AND djw.lock_type = '1' - AND tpw.vehicle_type = 输入.vehicle_type - ENDSELECT - ENDQUERY - ENDIF - - IF 输入.flag = "5" - QUERY - SELECT - point.* - FROM - sch_base_point point - LEFT JOIN st_ivt_vehicle_detail vd ON point.vehicle_type = vd.vehicle_type - AND point.vehicle_code = vd.vehicle_code - AND vd.is_delete = '0' - WHERE - is_used = '1' - AND lock_type = '1' - AND region_code = 'KLHJ' - AND point_type = '1' - AND point_status = '1' - AND point.vehicle_type = '1' - AND vd.vd_id IS NULL - ENDSELECT - ENDQUERY - ENDIF - - IF 输入.flag = "6" - QUERY - SELECT - point.*, - vd.vd_id - FROM - sch_base_point point - LEFT JOIN st_ivt_vehicle_detail vd ON point.vehicle_type = vd.vehicle_type - AND point.vehicle_code = vd.vehicle_code + p.is_used = '1' + AND p.lock_type = '1' AND vd.is_delete = '0' - WHERE - point.is_used = '1' - AND point.lock_type = '1' - AND point.region_code = 'BTHC' - AND point.point_type = '1' - AND point.point_status = '1' - AND point.vehicle_type = 输入.vehicle_type - AND vd.material_id = 输入.material_id + AND vd.is_full = '0' AND vd.point_code = 输入.point_code + AND vd.material_id = 输入.material_id ENDSELECT - ENDQUERY - ENDIF + ENDQUERY + ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/call/material/SZCallMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/call/material/GZCallMaterialTask.java similarity index 94% rename from lms/nladmin-system/src/main/java/org/nl/wms/sch/task/call/material/SZCallMaterialTask.java rename to lms/nladmin-system/src/main/java/org/nl/wms/sch/task/call/material/GZCallMaterialTask.java index 6ae5e32..f4444b2 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/call/material/SZCallMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/call/material/GZCallMaterialTask.java @@ -2,7 +2,6 @@ package org.nl.wms.sch.task.call.material; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import org.nl.modules.common.exception.BadRequestException; @@ -18,7 +17,7 @@ import org.springframework.stereotype.Component; */ @RequiredArgsConstructor @Component -public class SZCallMaterialTask extends AbstractAcsTask { +public class GZCallMaterialTask extends AbstractAcsTask { @Override @@ -40,7 +39,7 @@ public class SZCallMaterialTask extends AbstractAcsTask { JSONObject point = form.getJSONObject("point"); JSONObject task = TaskUtils.buildTask( - "烧制区叫料", + "干燥区叫料", TaskType.CALL_MATERIAL.value(), TaskStatus.SURE_END.value(), null, @@ -50,7 +49,7 @@ public class SZCallMaterialTask extends AbstractAcsTask { VehicleType.STEEL_TRAY.value(), null, 1, - SZCallMaterialTask.class.getName(), + GZCallMaterialTask.class.getName(), form.getString("create_mode"), form.getString("request_param"), form.getString("create_id"), @@ -181,6 +180,7 @@ public class SZCallMaterialTask extends AbstractAcsTask { point1.put("task_code", ""); point1.put("vehicle_type", ""); point1.put("vehicle_code", ""); + point1.put("vd_id", null); point1.put("point_status", PointStatus.EMPTY.value()); if (operation_type == OperationType.AUTO) { TaskUtils.addACSUpdateColum(point1); @@ -191,8 +191,12 @@ public class SZCallMaterialTask extends AbstractAcsTask { } JSONObject point2 = new JSONObject(); + point2.put("point_status", PointStatus.HAS_GOODS.value()); point2.put("lock_type", LockType.UNLOCKED.value()); point2.put("task_code", ""); + point2.put("vehicle_type", task.getString("vehicle_type")); + point2.put("vehicle_code", task.getString("vehicle_code")); + point2.put("vd_id", task.getString("group_id")); if (operation_type == OperationType.AUTO) { TaskUtils.addACSUpdateColum(point2); } else if (operation_type == OperationType.MANUAL) { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/call/material/wql/CALL_MATERIAL_TASK.wql b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/call/material/wql/CALL_MATERIAL_TASK.wql index 806c5c5..b509ae0 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/call/material/wql/CALL_MATERIAL_TASK.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/call/material/wql/CALL_MATERIAL_TASK.wql @@ -42,26 +42,22 @@ IF 输入.flag = "1" QUERY SELECT - point.*, - vd.vd_id, + p.*, vd.material_id, - workorder.is_urgent + wo.is_urgent FROM - sch_base_point point - JOIN st_ivt_vehicle_detail vd ON point.vehicle_type = vd.vehicle_type - AND point.vehicle_code = vd.vehicle_code - AND vd.is_delete = '0' - LEFT JOIN pdm_bd_workorder workorder ON vd.workorder_id = workorder.workorder_id + sch_base_point p + LEFT JOIN st_ivt_vehicle_detail vd ON p.vd_id = vd.vd_id + LEFT JOIN pdm_bd_workorder wo ON vd.workorder_id = wo.workorder_id WHERE - point.is_used = '1' - AND point.lock_type = '1' - AND point.region_code = 'BCPHJ' - AND point.point_status = '1' - AND point.vehicle_type = '2' - AND vd.is_fire = '0' - AND vd.is_in_kiln = '1' + p.is_used = '1' + AND p.lock_type = '1' + AND p.region_code = 'YQHJ' + AND p.point_type = '1' + AND p.point_status = '3' ORDER BY - workorder.is_urgent DESC, vd.create_time ASC + wo.is_urgent DESC, + vd.create_time ASC ENDSELECT ENDQUERY ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/SZSendMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/GZSendMaterialTask.java similarity index 98% rename from lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/SZSendMaterialTask.java rename to lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/GZSendMaterialTask.java index 4c93bfc..3c22800 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/SZSendMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/GZSendMaterialTask.java @@ -17,7 +17,7 @@ import org.springframework.stereotype.Component; */ @RequiredArgsConstructor @Component -public class SZSendMaterialTask extends AbstractAcsTask { +public class GZSendMaterialTask extends AbstractAcsTask { @Override @@ -50,7 +50,7 @@ public class SZSendMaterialTask extends AbstractAcsTask { vd.getString("vehicle_type"), vd.getString("vehicle_code"), 1, - SZSendMaterialTask.class.getName(), + GZSendMaterialTask.class.getName(), form.getString("create_mode"), form.getString("request_param"), form.getString("create_id"), @@ -71,7 +71,7 @@ public class SZSendMaterialTask extends AbstractAcsTask { public void findNextPoint() { WQLObject task_table = WQLObject.getWQLObject("sch_base_task"); JSONArray tasks = task_table - .query("is_delete = '0' AND task_status = '" + TaskStatus.SURE_START.value() + "' AND handle_class = '" + SZSendMaterialTask.class.getName() + "'", "priority DESC, create_time ASC") + .query("is_delete = '0' AND task_status = '" + TaskStatus.SURE_START.value() + "' AND handle_class = '" + GZSendMaterialTask.class.getName() + "'", "priority DESC, create_time ASC") .getResultJSONArray(0); if (ObjectUtil.isNotEmpty(tasks)) { WQLObject point_table = WQLObject.getWQLObject("sch_base_point"); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/YZSendMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/YZSendMaterialTask.java index 83541d6..4ecb3dc 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/YZSendMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/YZSendMaterialTask.java @@ -39,7 +39,7 @@ public class YZSendMaterialTask extends AbstractAcsTask { public String createTask(JSONObject form) { JSONObject point = form.getJSONObject("point"); JSONObject work_order = form.getJSONObject("workorder"); - int priority = TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? 50 : 1; + int priority = TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? 2 : 1; JSONObject vd = form.getJSONObject("vd"); JSONObject task = TaskUtils.buildTask( @@ -48,7 +48,7 @@ public class YZSendMaterialTask extends AbstractAcsTask { TaskStatus.SURE_START.value(), point.getString("point_code"), null, - vd.getLong("vd_id"), + vd.getLongValue("vd_id"), vd.getString("material_id"), vd.getString("vehicle_type"), vd.getString("vehicle_code"), @@ -63,6 +63,7 @@ public class YZSendMaterialTask extends AbstractAcsTask { point.put("lock_type", LockType.TASK_LOCKED.value()); point.put("task_code", task.getString("task_code")); + point.put("vd_id", vd.getLongValue("vd_id")); TaskUtils.addFormUpdateColum(point, form); WQLObject.getWQLObject("sch_base_point").update(point); @@ -145,6 +146,7 @@ public class YZSendMaterialTask extends AbstractAcsTask { && task.getString("task_code").equals(point1.getString("task_code"))) { point1.put("lock_type", LockType.UNLOCKED.value()); point1.put("task_code", ""); + point1.put("vd_id", null); if (operation_type == OperationType.AUTO) { TaskUtils.addACSUpdateColum(point1); } else if (operation_type == OperationType.MANUAL) { @@ -172,14 +174,14 @@ public class YZSendMaterialTask extends AbstractAcsTask { } - public void finishTask(JSONObject task, OperationType operation_type) { + public void finishTask(JSONObject task, OperationType operation_type) { int current_task_status = task.getIntValue("task_status"); if (current_task_status < Integer.parseInt(TaskStatus.FINISHED.value())) { if (operation_type == OperationType.MANUAL - && current_task_status < Integer.parseInt(TaskStatus.START_AND_END.value())) { + && current_task_status < Integer.parseInt(TaskStatus.START_AND_END.value())) { throw new BadRequestException("只能手动完成 [确认起点和终点] 之后的任务!"); } - + task.put("task_status", TaskStatus.FINISHED.value()); if (operation_type == OperationType.AUTO) { TaskUtils.addACSUpdateColum(task); @@ -217,6 +219,7 @@ public class YZSendMaterialTask extends AbstractAcsTask { point2.put("task_code", ""); point2.put("vehicle_type", task.getString("vehicle_type")); point2.put("vehicle_code", task.getString("vehicle_code")); + point2.put("vd_id", task.getLongValue("group_id")); point2.put("point_status", PointStatus.HAS_GOODS.value()); if (operation_type == OperationType.AUTO) { TaskUtils.addACSUpdateColum(point2); @@ -225,19 +228,6 @@ public class YZSendMaterialTask extends AbstractAcsTask { } point_table.update(point2, "point_code = '" + point_code2 + "'"); } - - JSONObject workorder = WQL - .getWO("SEND_MATERIAL_TASK") - .addParam("flag", "7") - .addParam("vd_id", task.getString("group_id")) - .process() - .uniqueResult(0); - - JSONObject workorder_update = new JSONObject(); - workorder_update.put("real_qty", workorder.getIntValue("real_qty") + workorder.getIntValue("qty")); - workorder_update.put("qualified_qty", workorder.getIntValue("qualified_qty") + workorder.getIntValue("qty")); - TaskUtils.addACSUpdateColum(workorder_update); - WQLObject.getWQLObject("pdm_bd_workorder").update(workorder_update, "workorder_id = " + workorder.getString("workorder_id")); } } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/wql/SEND_MATERIAL_TASK.wql b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/wql/SEND_MATERIAL_TASK.wql index 4d94fa2..f50924a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/wql/SEND_MATERIAL_TASK.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/wql/SEND_MATERIAL_TASK.wql @@ -50,11 +50,9 @@ WHERE is_used = '1' AND lock_type = '1' - AND region_code = 'BCPHJ' + AND point_status = '1' + AND region_code = 'YQHJ' AND point_type = '1' - AND point_status = '0' - ORDER BY - point_code ASC ENDSELECT ENDQUERY ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/util/TaskUtils.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/util/TaskUtils.java index d5518f2..53ab5e0 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/util/TaskUtils.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/util/TaskUtils.java @@ -132,6 +132,12 @@ public class TaskUtils { return vehicle_code; } + public static void addACSCreateColum(JSONObject row) { + row.put("create_id", ACSSystem.id); + row.put("create_name", ACSSystem.nick_name); + row.put("create_time", DateUtil.now()); + } + public static void addACSUpdateColum(JSONObject row) { row.put("update_optid", ACSSystem.id); row.put("update_optname", ACSSystem.nick_name); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/util/wql/TASK_UTILS.wql b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/util/wql/TASK_UTILS.wql index 1e4d311..fe314b7 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/util/wql/TASK_UTILS.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/util/wql/TASK_UTILS.wql @@ -45,7 +45,7 @@ vd.qty, vd.weight AS vd_weight, material.weight AS material_weight, - material.material_code, + material.material_number, material.order_code FROM st_ivt_vehicle_detail vd @@ -60,7 +60,7 @@ QUERY SELECT workorder.unqualified_qty AS qty, - material.material_code AS material_code, + material.material_number AS material_number, material.weight AS material_weight, material.order_code, device.region_code diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/wql/QSCH_BASE_POINT.wql b/lms/nladmin-system/src/main/java/org/nl/wms/sch/wql/QSCH_BASE_POINT.wql index 816cf5c..bada08e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/wql/QSCH_BASE_POINT.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/wql/QSCH_BASE_POINT.wql @@ -50,10 +50,10 @@ PAGEQUERY SELECT point.*, - material.material_code + material.material_number FROM sch_base_point point - LEFT JOIN st_ivt_vehicle_detail vd ON point.vehicle_type = vd.vehicle_type AND point.vehicle_code = vd.vehicle_code AND vd.is_delete = '0' + LEFT JOIN st_ivt_vehicle_detail vd ON point.vd_id = vd.vd_id LEFT JOIN md_me_materialbase material ON vd.material_id = material.material_id WHERE 1 = 1 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/wql/QSCH_TASK_01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/sch/wql/QSCH_TASK_01.wql index aa46e8b..7df36fc 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/wql/QSCH_TASK_01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/wql/QSCH_TASK_01.wql @@ -56,7 +56,7 @@ point1.region_name AS point1_region_name, point2.point_name AS point2_name, point2.region_name AS point2_region_name, - material.material_code, + material.material_number, dd.label AS task_status_name FROM sch_base_task task diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/wms.xls b/lms/nladmin-system/src/main/java/org/nl/wms/wms.xls index 471100b..27e8d3f 100644 Binary files a/lms/nladmin-system/src/main/java/org/nl/wms/wms.xls and b/lms/nladmin-system/src/main/java/org/nl/wms/wms.xls differ diff --git a/lms/nladmin-system/src/main/resources/config/application-prod.yml b/lms/nladmin-system/src/main/resources/config/application-prod.yml index 14d60b1..527a6ba 100644 --- a/lms/nladmin-system/src/main/resources/config/application-prod.yml +++ b/lms/nladmin-system/src/main/resources/config/application-prod.yml @@ -6,7 +6,7 @@ spring: druid: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy - url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.4.220}:${DB_PORT:3306}/${DB_NAME:lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useOldAliasMetadataBehavior=true + url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.4.220}:${DB_PORT:3306}/${DB_NAME:lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true username: ${DB_USER:root} password: ${DB_PWD:123456} # 初始连接数 diff --git a/lms/nladmin-system/src/main/resources/config/application.yml b/lms/nladmin-system/src/main/resources/config/application.yml index 6f01423..942ceff 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: dev + active: prod jackson: time-zone: GMT+8 data: diff --git a/lms/nladmin-system/src/test/java/org/nl/test/PointTest.java b/lms/nladmin-system/src/test/java/org/nl/test/PointTest.java index 3d46780..bc597c3 100644 --- a/lms/nladmin-system/src/test/java/org/nl/test/PointTest.java +++ b/lms/nladmin-system/src/test/java/org/nl/test/PointTest.java @@ -22,14 +22,14 @@ public class PointTest { JSONObject point = new JSONObject(); WQLObject point_table = WQLObject.getWQLObject("sch_base_point"); String now = DateUtil.now(); - for (int i = 1; i < 10; i++) { + for (int i = 1; i <= 24; i++) { point.put("point_id", IdUtil.getSnowflake(1L, 1L).nextId()); - point.put("point_code", "YJ" + String.format("%02d", i + 1) + "SL01"); - point.put("point_name", "压机" + (i + 1) + "上料位"); - point.put("region_id", "1643438714497667072"); - point.put("region_code", "YZ"); - point.put("region_name", "压制区"); - point.put("point_type", "2"); + point.put("point_code", "YHHW" + String.format("%02d", i)); + point.put("point_name", "窑后货位" + i); + point.put("region_id", 1695713466955993088L); + point.put("region_code", "YHHJ"); + point.put("region_name", "窑后货架"); + point.put("point_type", "1"); point.put("lock_type", "1"); point.put("create_id", 1); point.put("create_name", "管理员"); diff --git a/lms/nladmin-ui/src/views/generator/index.vue b/lms/nladmin-ui/src/views/generator/index.vue index 8bdf5a8..b67f670 100644 --- a/lms/nladmin-ui/src/views/generator/index.vue +++ b/lms/nladmin-ui/src/views/generator/index.vue @@ -25,7 +25,7 @@ - + - + @@ -198,11 +198,6 @@ {{ dict.label.true_or_false[scope.row.is_urgent] }} - - - @@ -274,7 +269,7 @@ const defaultForm = { plan_qty: null, real_qty: null, material_id: null, - material_code: null, + material_number: null, material_weight: null, vehicle_type: '1', planproducestart_date: null, @@ -303,7 +298,7 @@ const defaultForm = { is_new: '1', is_package: '1', warn_time: '0', - standing_time: '0', + stand_time: '0', is_urgent: '0', is_pri: '0', ext_code: null, @@ -350,8 +345,8 @@ export default { plan_qty: [ { required: true, message: '计划数量不能为空', trigger: 'blur' } ], - material_code: [ - { required: true, message: '物料编码不能为空', trigger: 'change' } + material_number: [ + { required: true, message: '物料号不能为空', trigger: 'change' } ], vehicle_type: [ { required: true, message: '木托盘类型不能为空', trigger: 'blur' } @@ -430,7 +425,7 @@ export default { }, setMaterValue(row) { this.form.material_id = row.material_id - this.form.material_code = row.material_code + this.form.material_number = row.material_number }, // 下发 submits(row) { diff --git a/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue b/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue index 8e6610a..3ce0d5a 100644 --- a/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue +++ b/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue @@ -20,11 +20,11 @@ @keyup.enter.native="crud.toQuery" /> - + @@ -88,16 +88,6 @@ > 强制完成 - - 导出Excel - - + @@ -139,13 +129,23 @@ - + + + + 千克 + + + @@ -194,8 +194,8 @@ @@ -210,22 +210,14 @@ {{ dict.label.pdm_workorder_status[scope.row.order_status] }} - + - - - + - - + + diff --git a/lms/nladmin-ui/src/views/wms/pub/DeviceDialog.vue b/lms/nladmin-ui/src/views/wms/pub/DeviceDialog.vue index d9a4445..0dda6df 100644 --- a/lms/nladmin-ui/src/views/wms/pub/DeviceDialog.vue +++ b/lms/nladmin-ui/src/views/wms/pub/DeviceDialog.vue @@ -15,11 +15,11 @@ label-width="90px" label-suffix=":" > - + @@ -45,7 +45,7 @@ - + - + diff --git a/lms/nladmin-ui/src/views/wms/pub/MaterDialog.vue b/lms/nladmin-ui/src/views/wms/pub/MaterDialog.vue index 1409ddd..0e5a226 100644 --- a/lms/nladmin-ui/src/views/wms/pub/MaterDialog.vue +++ b/lms/nladmin-ui/src/views/wms/pub/MaterDialog.vue @@ -15,30 +15,21 @@ label-width="90px" label-suffix=":" > - + - + - - - @@ -64,10 +55,8 @@ - - - - + + diff --git a/lms/nladmin-ui/src/views/wms/pub/PointDialog.vue b/lms/nladmin-ui/src/views/wms/pub/PointDialog.vue index 0916e1e..9ca97bc 100644 --- a/lms/nladmin-ui/src/views/wms/pub/PointDialog.vue +++ b/lms/nladmin-ui/src/views/wms/pub/PointDialog.vue @@ -12,7 +12,7 @@ - + @@ -39,7 +39,7 @@ - + diff --git a/lms/nladmin-ui/src/views/wms/sch/point/MaterialDialog.vue b/lms/nladmin-ui/src/views/wms/sch/point/MaterialDialog.vue index b5f8400..64b2c43 100644 --- a/lms/nladmin-ui/src/views/wms/sch/point/MaterialDialog.vue +++ b/lms/nladmin-ui/src/views/wms/sch/point/MaterialDialog.vue @@ -47,13 +47,13 @@ - + - + diff --git a/lms/nladmin-ui/src/views/wms/sch/point/ViewDialog.vue b/lms/nladmin-ui/src/views/wms/sch/point/ViewDialog.vue index d8321dc..3a6ab90 100644 --- a/lms/nladmin-ui/src/views/wms/sch/point/ViewDialog.vue +++ b/lms/nladmin-ui/src/views/wms/sch/point/ViewDialog.vue @@ -14,36 +14,36 @@ - - + + - + - - + + - + - + - + - + - + - - + + - + @@ -56,30 +56,30 @@ - - + + - + - + - + - + - + - + - + @@ -91,30 +91,30 @@ - - + + - + - + - + - + - + - + - + @@ -126,30 +126,30 @@ - - + + - + - + - + - + - + - + - + @@ -169,15 +169,15 @@ :highlight-current-row="true" :header-cell-style="{background:'#f5f7fa',color:'#606266'}" > - - - - - - - - - + + + + + + + + + - + + @click="changeShowTab" + > 编辑 + @click="doEdit(crud.data)" + > 保存 - - + + @@ -204,6 +210,7 @@ > @@ -218,23 +225,23 @@ - - + + - + - - + + @@ -259,7 +267,7 @@ - +