From b214dd2ebed935a5873a7a74d6ba2495bc94cc4e Mon Sep 17 00:00:00 2001 From: liuxy Date: Sat, 4 Feb 2023 21:42:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../acs/service/impl/AcsToWmsServiceImpl.java | 454 +++++++++--------- .../impl/ProductionOutServiceImpl.java | 4 + .../service/impl/CheckOutBillServiceImpl.java | 2 + .../org/nl/wms/st/outbill/wql/ST_OUTIVT01.wql | 4 + 4 files changed, 239 insertions(+), 225 deletions(-) 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 d0df921a6..0dc46287f 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 @@ -182,65 +182,66 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { @Transactional(rollbackFor = Exception.class) public JSONObject apply(JSONObject whereJson) { log.info("apply请求参数:---------------------------------------------"+whereJson.toString()); - String type = whereJson.getString("type"); - String device_code = whereJson.getString("device_code"); - String vehicle_code = whereJson.getString("vehicle_code"); + synchronized (AcsToWmsServiceImpl.class) { + String type = whereJson.getString("type"); + String device_code = whereJson.getString("device_code"); + String vehicle_code = whereJson.getString("vehicle_code"); - WQLObject point_table = WQLObject.getWQLObject("SCH_BASE_Point"); - WQLObject struct_table = WQLObject.getWQLObject("ST_IVT_StructAttr"); + WQLObject point_table = WQLObject.getWQLObject("SCH_BASE_Point"); + WQLObject struct_table = WQLObject.getWQLObject("ST_IVT_StructAttr"); - if (ObjectUtil.isEmpty(type)) throw new BadRequestException("ACS申请任务失败!任务类型不能为空"); - if (ObjectUtil.isEmpty(device_code)) throw new BadRequestException("ACS申请任务失败!点位不能为空"); + if (ObjectUtil.isEmpty(type)) throw new BadRequestException("ACS申请任务失败!任务类型不能为空"); + if (ObjectUtil.isEmpty(device_code)) throw new BadRequestException("ACS申请任务失败!点位不能为空"); - /* - * 根据type判断是什么业务类型: - * 1.入库任务 - * 2.空盘入库任务 - * 3.空盘出库任务 - * 4.出库口申请入发货区任务 - */ - if (type.equals("1")) { - boolean checked = true; - boolean auto_div = false; - if (ObjectUtil.isEmpty(vehicle_code)) throw new BadRequestException("ACS申请任务失败!载具不能为空"); - //通过该木箱码查询对应的分配明细 - JSONArray dis_rows = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParam("box_no",vehicle_code).addParam("flag","28").process().getResultJSONArray(0); - if (ObjectUtil.isEmpty(dis_rows)) { - throw new BadRequestException("未查询到木箱:" + vehicle_code + "相关入库分配明细记录!"); - } - ArrayList dis_list = new ArrayList<>(); - for (int i = 0; i < dis_rows.size(); i++) { - HashMap dis_map = new HashMap<>(); - JSONObject dis_row = dis_rows.getJSONObject(i); - dis_map.put("box_no",dis_row.getString("box_no")); - dis_map.put("point_code",device_code); - dis_map.put("sect_id",dis_row.getString("sect_id")); - dis_map.put("sect_code",dis_row.getString("sect_code")); - dis_map.put("sect_name",dis_row.getString("sect_name")); - dis_map.put("struct_id",dis_row.getString("struct_id")); - dis_map.put("struct_code",dis_row.getString("struct_code")); - if (StrUtil.isNotEmpty(dis_row.getString("struct_code"))){ - auto_div = true; - checked = false; + /* + * 根据type判断是什么业务类型: + * 1.入库任务 + * 2.空盘入库任务 + * 3.空盘出库任务 + * 4.出库口申请入发货区任务 + */ + if (type.equals("1")) { + boolean checked = true; + boolean auto_div = false; + if (ObjectUtil.isEmpty(vehicle_code)) throw new BadRequestException("ACS申请任务失败!载具不能为空"); + //通过该木箱码查询对应的分配明细 + JSONArray dis_rows = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParam("box_no",vehicle_code).addParam("flag","28").process().getResultJSONArray(0); + if (ObjectUtil.isEmpty(dis_rows)) { + throw new BadRequestException("未查询到木箱:" + vehicle_code + "相关入库分配明细记录!"); } - dis_map.put("struct_name",dis_row.getString("struct_name")); - dis_map.put("iostorinv_id",dis_row.getString("iostorinv_id")); - dis_list.add(dis_map); + ArrayList dis_list = new ArrayList<>(); + for (int i = 0; i < dis_rows.size(); i++) { + HashMap dis_map = new HashMap<>(); + JSONObject dis_row = dis_rows.getJSONObject(i); + dis_map.put("box_no",dis_row.getString("box_no")); + dis_map.put("point_code",device_code); + dis_map.put("sect_id",dis_row.getString("sect_id")); + dis_map.put("sect_code",dis_row.getString("sect_code")); + dis_map.put("sect_name",dis_row.getString("sect_name")); + dis_map.put("struct_id",dis_row.getString("struct_id")); + dis_map.put("struct_code",dis_row.getString("struct_code")); + if (StrUtil.isNotEmpty(dis_row.getString("struct_code"))){ + auto_div = true; + checked = false; + } + dis_map.put("struct_name",dis_row.getString("struct_name")); + dis_map.put("iostorinv_id",dis_row.getString("iostorinv_id")); + dis_list.add(dis_map); + } + Map map = new HashMap(); + //查询主存区的sect + JSONObject sect_jo = WQLObject.getWQLObject("st_ivt_sectattr").query("sect_type_attr = '00' AND is_used = '1'").uniqueResult(0); + map.put("tableMater", dis_list); + map.put("point_code", device_code); + map.put("sect_id", sect_jo.getString("sect_id")); + map.put("checked", checked); + map.put("auto_div", auto_div); + map.put("auto_issue", "1"); + //自动分配货位并下发任务 + rawAssistIStorService.divStruct(map); } - Map map = new HashMap(); - //查询主存区的sect - JSONObject sect_jo = WQLObject.getWQLObject("st_ivt_sectattr").query("sect_type_attr = '00' AND is_used = '1'").uniqueResult(0); - map.put("tableMater", dis_list); - map.put("point_code", device_code); - map.put("sect_id", sect_jo.getString("sect_id")); - map.put("checked", checked); - map.put("auto_div", auto_div); - map.put("auto_issue", "1"); - //自动分配货位并下发任务 - rawAssistIStorService.divStruct(map); - } - if (type.equals("2")) { - //查询一个可用的空载具点位并下发给ACS + if (type.equals("2")) { + //查询一个可用的空载具点位并下发给ACS /* * 1、优先存放空托盘区、托盘号默认99999;空托盘区没有位置,再找空巷道,或者空巷道有空位置的货位。 2、分配货位规则: @@ -248,190 +249,193 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { b、没有,则优先找空的巷道;按空位置顺序分配; 3、任务下发,判断巷道的任务类型,只能为空盘入库或者无任务类型; * */ - vehicle_code = CodeUtil.getNewCode("VEHICCLE_CODE_KTP"); - JSONObject empty_row = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParam("flag", "21").process().uniqueResult(0); + vehicle_code = CodeUtil.getNewCode("VEHICCLE_CODE_KTP"); + JSONObject empty_row = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParam("flag", "21").process().uniqueResult(0); - JSONObject struct_jo = new JSONObject(); - if (ObjectUtil.isNotEmpty(empty_row)) { - String block_num = empty_row.getString("block_num"); - String row_num = empty_row.getString("row_num"); - String placement_type = empty_row.getString("placement_type"); + JSONObject struct_jo = new JSONObject(); + if (ObjectUtil.isNotEmpty(empty_row)) { + String block_num = empty_row.getString("block_num"); + String row_num = empty_row.getString("row_num"); + String placement_type = empty_row.getString("placement_type"); - if (placement_type.equals("03")) { - // 右通 - struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq desc").uniqueResult(0); - } else if (placement_type.equals("02")) { - // 左通 - struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq").uniqueResult(0); - } else { - // 双通 - - // 先倒序找到第一个木箱、判断上一个是否有货位 - JSONObject jsonDescBox = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq DESC").uniqueResult(0); - String out_order_seq = jsonDescBox.getString("out_order_seq"); - // 上一个货位顺序号 - String out_order_seq_desc = String.valueOf(NumberUtil.add(out_order_seq, "1")); - JSONObject jsonDescStruct = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' and out_order_seq = '" + out_order_seq_desc + "'").uniqueResult(0); - - if (ObjectUtil.isNotEmpty(jsonDescStruct)) { - struct_jo = jsonDescStruct; + if (placement_type.equals("03")) { + // 右通 + struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq desc").uniqueResult(0); + } else if (placement_type.equals("02")) { + // 左通 + struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq").uniqueResult(0); } else { - // 没有就正序找到第一个物料、判断上一个是否有货位 - JSONObject jsonAscBox = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq ASC").uniqueResult(0); - String out_order_seq2 = jsonAscBox.getString("out_order_seq"); - // 上一个货位顺序号 - String out_order_seq_asc = String.valueOf(NumberUtil.sub(out_order_seq2, "1")); - JSONObject jsonAscStruct = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' and out_order_seq = '"+out_order_seq_asc+"'").uniqueResult(0); + // 双通 - if (ObjectUtil.isNotEmpty(jsonAscStruct)) { - struct_jo = jsonAscStruct; + // 先倒序找到第一个托盘、判断上一个是否有货位 + JSONObject jsonDescBox = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq DESC").uniqueResult(0); + String out_order_seq = jsonDescBox.getString("out_order_seq"); + // 上一个货位顺序号 + String out_order_seq_desc = String.valueOf(NumberUtil.add(out_order_seq, "1")); + JSONObject jsonDescStruct = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' and out_order_seq = '" + out_order_seq_desc + "'").uniqueResult(0); + + if (ObjectUtil.isNotEmpty(jsonDescStruct)) { + struct_jo = jsonDescStruct; + } else { + // 没有就正序找到第一个托盘、判断上一个是否有货位 + JSONObject jsonAscBox = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq ASC").uniqueResult(0); + String out_order_seq2 = jsonAscBox.getString("out_order_seq"); + // 上一个货位顺序号 + String out_order_seq_asc = String.valueOf(NumberUtil.sub(out_order_seq2, "1")); + JSONObject jsonAscStruct = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' and out_order_seq = '"+out_order_seq_asc+"'").uniqueResult(0); + + if (ObjectUtil.isNotEmpty(jsonAscStruct)) { + struct_jo = jsonAscStruct; + } + } + + } + } + if (ObjectUtil.isEmpty(struct_jo)) { + throw new BadRequestException("未查询到可用的空载具存放点位!"); + } + + JSONObject task_jo = new JSONObject(); + task_jo.put("point_code1", device_code); + task_jo.put("point_code2", struct_jo.getString("struct_code")); + task_jo.put("task_type", "010502"); + task_jo.put("vehicle_code", vehicle_code); + EmptyVehicleTask task = new EmptyVehicleTask(); + task.createTask(task_jo); + + //锁定终点、货位点位 + HashMap map = new HashMap(); + map.put("lock_type", "5"); + point_table.update(map, "point_code = '" + struct_jo.getString("struct_code") + "'"); + struct_table.update(map, "struct_code = '" + struct_jo.getString("struct_code") + "'"); + } + if (type.equals("3")) { + //查询一个可用的空载具点位并下发给ACS + /* + * 1、优先存放空托盘区、托盘号默认99999;空托盘区没有位置,再找空巷道,或者空巷道有空位置的货位。 + 2、分配货位规则: + a、查找片区内,有空位的巷道,并且两头能够通畅的巷道排;判断巷道的任务类型,只能为入库或者无任务类型; + b、没有,则优先找空的巷道;按空位置顺序分配; + 3、任务下发,判断巷道的任务类型,只能为空盘入库或者无任务类型; + * */ + JSONObject empty_row = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParam("flag", "22").process().uniqueResult(0); + + JSONObject struct_jo = new JSONObject(); + if (ObjectUtil.isNotEmpty(empty_row)) { + String block_num = empty_row.getString("block_num"); + String row_num = empty_row.getString("row_num"); + String placement_type = empty_row.getString("placement_type"); + + if (placement_type.equals("01") || placement_type.equals("03")) { + struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq").uniqueResult(0); + } else { + struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq desc").uniqueResult(0); + } + } + if (ObjectUtil.isEmpty(struct_jo)) { + throw new BadRequestException("未查询到可用的空载具!"); + } + + JSONObject task_jo = new JSONObject(); + task_jo.put("point_code1", struct_jo.getString("struct_code")); + task_jo.put("point_code2", device_code); + task_jo.put("task_type", "010504"); + task_jo.put("vehicle_code", struct_jo.getString("storagevehicle_code")); + EmptyVehicleTask task = new EmptyVehicleTask(); + task.createTask(task_jo); + + //锁定终点、货位点位 + HashMap map = new HashMap(); + map.put("lock_type", "4"); + point_table.update(map, "point_code = '" + struct_jo.getString("struct_code") + "'"); + struct_table.update(map, "struct_code = '" + struct_jo.getString("struct_code") + "'"); + } + if (type.equals("4")) { + //查询该木箱对应的包装关系 + JSONObject sub_jo = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("package_box_sn = '" + vehicle_code + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(sub_jo)) { + throw new BadRequestException("未查询到该木箱对应的包装关系!"); + } + String sale_order_name = sub_jo.getString("sale_order_name"); + + //查询是否存在可用的空位 + String point_code = ""; + JSONArray joArr = new JSONArray(); + + // 查找此订单号所在的所有排 + JSONArray joRow = WQL.getWO("QST_ACSTOLMSTYPE4").addParam("flag", "1").addParam("sale_order_name", sale_order_name).process().getResultJSONArray(0); + for (int j = 0; j < joRow.size(); j++) { + JSONObject json = joRow.getJSONObject(j); + String row_num = json.getString("row_num"); + + // 查找此排下的所有空位 + JSONArray joEmpPoint = WQL.getWO("QST_ACSTOLMSTYPE4").addParam("flag", "2").addParam("row_num", row_num).process().getResultJSONArray(0); + + if (ObjectUtil.isNotEmpty(joEmpPoint)) { + for (int n = 0; n < joEmpPoint.size(); n++) { + joArr.add(joEmpPoint.getJSONObject(n)); } } - } - } - if (ObjectUtil.isEmpty(struct_jo)) { - throw new BadRequestException("未查询到可用的空载具存放点位!"); - } - JSONObject task_jo = new JSONObject(); - task_jo.put("point_code1", device_code); - task_jo.put("point_code2", struct_jo.getString("struct_code")); - task_jo.put("task_type", "010502"); - task_jo.put("vehicle_code", vehicle_code); - EmptyVehicleTask task = new EmptyVehicleTask(); - task.createTask(task_jo); - - //锁定终点、货位点位 - HashMap map = new HashMap(); - map.put("lock_type", "5"); - point_table.update(map, "point_code = '" + struct_jo.getString("struct_code") + "'"); - struct_table.update(map, "struct_code = '" + struct_jo.getString("struct_code") + "'"); - } - if (type.equals("3")) { - //查询一个可用的空载具点位并下发给ACS - /* - * 1、优先存放空托盘区、托盘号默认99999;空托盘区没有位置,再找空巷道,或者空巷道有空位置的货位。 - 2、分配货位规则: - a、查找片区内,有空位的巷道,并且两头能够通畅的巷道排;判断巷道的任务类型,只能为入库或者无任务类型; - b、没有,则优先找空的巷道;按空位置顺序分配; - 3、任务下发,判断巷道的任务类型,只能为空盘入库或者无任务类型; - * */ - JSONObject empty_row = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParam("flag", "22").process().uniqueResult(0); - - JSONObject struct_jo = new JSONObject(); - if (ObjectUtil.isNotEmpty(empty_row)) { - String block_num = empty_row.getString("block_num"); - String row_num = empty_row.getString("row_num"); - String placement_type = empty_row.getString("placement_type"); - - if (placement_type.equals("01") || placement_type.equals("03")) { - struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq").uniqueResult(0); - } else { - struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq desc").uniqueResult(0); - } - } - if (ObjectUtil.isEmpty(struct_jo)) { - throw new BadRequestException("未查询到可用的空载具!"); - } - - JSONObject task_jo = new JSONObject(); - task_jo.put("point_code1", struct_jo.getString("struct_code")); - task_jo.put("point_code2", device_code); - task_jo.put("task_type", "010504"); - task_jo.put("vehicle_code", struct_jo.getString("storagevehicle_code")); - EmptyVehicleTask task = new EmptyVehicleTask(); - task.createTask(task_jo); - - //锁定终点、货位点位 - HashMap map = new HashMap(); - map.put("lock_type", "4"); - point_table.update(map, "point_code = '" + struct_jo.getString("struct_code") + "'"); - struct_table.update(map, "struct_code = '" + struct_jo.getString("struct_code") + "'"); - } - if (type.equals("4")) { - //查询该木箱对应的包装关系 - JSONObject sub_jo = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("package_box_sn = '" + vehicle_code + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(sub_jo)) { - throw new BadRequestException("未查询到该木箱对应的包装关系!"); - } - String sale_order_name = sub_jo.getString("sale_order_name"); - - //查询是否存在可用的空位 - String point_code = ""; - JSONArray joArr = new JSONArray(); - - // 查找此订单号所在的所有排 - JSONArray joRow = WQL.getWO("QST_ACSTOLMSTYPE4").addParam("flag", "1").addParam("sale_order_name", sale_order_name).process().getResultJSONArray(0); - for (int j = 0; j < joRow.size(); j++) { - JSONObject json = joRow.getJSONObject(j); - String row_num = json.getString("row_num"); - - // 查找此排下的所有空位 - JSONArray joEmpPoint = WQL.getWO("QST_ACSTOLMSTYPE4").addParam("flag", "2").addParam("row_num", row_num).process().getResultJSONArray(0); - - if (ObjectUtil.isNotEmpty(joEmpPoint)) { - for (int n = 0; n < joEmpPoint.size(); n++) { - joArr.add(joEmpPoint.getJSONObject(n)); - } - } - } - - if (ObjectUtil.isEmpty(joArr)) { - //查询新的一排 - JSONObject point_jo = WQL.getWO("QST_ACSTOLMSTYPE4").addParam("flag", "3").process().uniqueResult(0); - if (ObjectUtil.isEmpty(point_jo)) { - throw new BadRequestException("未查询到相同销售订单的放货区点位或空的一排!"); - } else { - JSONObject jsonNewRow = WQLObject.getWQLObject("sch_base_point").query("row_num = '" + point_jo.getString("row_num") + "' AND point_type ='9' AND is_delete = '0' order by out_order_seq ASC").uniqueResult(0); - point_code = jsonNewRow.getString("point_code"); - } - } else { - // 校验此货位是否被堵住:1.如果被堵住则判断下一个是否被堵住 2.如果全部被堵住则新开一排 - for (int i = 0; i < joArr.size(); i++) { - JSONObject json = joArr.getJSONObject(i); - // 判断是否被挡住 - JSONArray jsonArray = WQL.getWO("QST_ACSTOLMSTYPE4") - .addParam("flag", "4") - .addParam("point_code", json.getString("point_code")) - .process().getResultJSONArray(0); - - if (ObjectUtil.isNotEmpty(jsonArray)) { - // 堵住则判断下一个 - continue; + if (ObjectUtil.isEmpty(joArr)) { + //查询新的一排 + JSONObject point_jo = WQL.getWO("QST_ACSTOLMSTYPE4").addParam("flag", "3").process().uniqueResult(0); + if (ObjectUtil.isEmpty(point_jo)) { + throw new BadRequestException("未查询到相同销售订单的放货区点位或空的一排!"); } else { - // 未堵住: 跳出循环 - point_code = json.getString("point_code"); - break; + JSONObject jsonNewRow = WQLObject.getWQLObject("sch_base_point").query("row_num = '" + point_jo.getString("row_num") + "' AND point_type ='9' AND is_delete = '0' order by out_order_seq ASC").uniqueResult(0); + point_code = jsonNewRow.getString("point_code"); } - - } - } - - if (ObjectUtil.isEmpty(point_code)) { - // 为空则新开一排 - JSONObject point_jo = WQL.getWO("QST_ACSTOLMSTYPE4").addParam("flag", "3").process().uniqueResult(0); - if (ObjectUtil.isEmpty(point_jo)) { - throw new BadRequestException("未查询到相同销售订单的放货区点位或空的一排!"); } else { - JSONObject jsonNewRow = WQLObject.getWQLObject("sch_base_point").query("row_num = '" + point_jo.getString("row_num") + "' AND point_type ='9' AND is_delete = '0' order by out_order_seq ASC").uniqueResult(0); - point_code = jsonNewRow.getString("point_code"); - } - } + // 校验此货位是否被堵住:1.如果被堵住则判断下一个是否被堵住 2.如果全部被堵住则新开一排 + for (int i = 0; i < joArr.size(); i++) { + JSONObject json = joArr.getJSONObject(i); + // 判断是否被挡住 + JSONArray jsonArray = WQL.getWO("QST_ACSTOLMSTYPE4") + .addParam("flag", "4") + .addParam("point_code", json.getString("point_code")) + .process().getResultJSONArray(0); - //创建任务 - JSONObject task_jo = new JSONObject(); - task_jo.put("point_code1", device_code); - task_jo.put("point_code2", point_code); - task_jo.put("vehicle_code", vehicle_code); - task_jo.put("task_type", "010506"); - SendOutTask sendOutTask = new SendOutTask(); - sendOutTask.createTask(task_jo); + if (ObjectUtil.isNotEmpty(jsonArray)) { + // 堵住则判断下一个 + continue; + } else { + // 未堵住: 跳出循环 + point_code = json.getString("point_code"); + break; + } + + } + } + + if (ObjectUtil.isEmpty(point_code)) { + // 为空则新开一排 + JSONObject point_jo = WQL.getWO("QST_ACSTOLMSTYPE4").addParam("flag", "3").process().uniqueResult(0); + if (ObjectUtil.isEmpty(point_jo)) { + throw new BadRequestException("未查询到相同销售订单的放货区点位或空的一排!"); + } else { + JSONObject jsonNewRow = WQLObject.getWQLObject("sch_base_point").query("row_num = '" + point_jo.getString("row_num") + "' AND point_type ='9' AND is_delete = '0' order by out_order_seq ASC").uniqueResult(0); + point_code = jsonNewRow.getString("point_code"); + } + } + + //创建任务 + JSONObject task_jo = new JSONObject(); + task_jo.put("point_code1", device_code); + task_jo.put("point_code2", point_code); + task_jo.put("vehicle_code", vehicle_code); + task_jo.put("task_type", "010506"); + SendOutTask sendOutTask = new SendOutTask(); + sendOutTask.createTask(task_jo); + } + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.OK.value()); + result.put("message", "下发成功!"); + return result; } - JSONObject result = new JSONObject(); - result.put("status", HttpStatus.OK.value()); - result.put("message", "下发成功!"); - return result; + + } @Override diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/ProductionOutServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/ProductionOutServiceImpl.java index e322502c7..f879fd1fc 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/ProductionOutServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/ProductionOutServiceImpl.java @@ -67,6 +67,10 @@ public class ProductionOutServiceImpl implements ProductionOutService { if (ObjectUtil.isEmpty(box_no)) throw new BadRequestException("木箱不能为空"); JSONObject jsonPoint = pointTab.query("vehicle_code = '" + box_no + "' and is_delete = '0' and is_used = '1'").uniqueResult(0); + + if (ObjectUtil.isEmpty(jsonPoint)) { + throw new BadRequestException("请输入正确的木箱"); + } /* * 生产区确认 * a.解锁出库点位、清除木箱号 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java index c2d87d5ee..1d4539b6d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java @@ -943,12 +943,14 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { JSONObject map = new JSONObject(); map.put("flag", "5"); map.put("material_id", dtl.getString("material_id")); + map.put("box_no", dtl.getString("box_no")); map.put("iostorinv_id", iostorinv_id); map.put("iostorinvdtl_id", dtl.getString("iostorinvdtl_id")); JSONArray dtlArr = WQL.getWO("ST_OUTIVT01").addParamMap(map).process().getResultJSONArray(0); if (dtlArr.size() == 0) { Struct_map.put(jsonIvt.getString("struct_id"), jsonIvt); } + } HashMap map_dtl = new HashMap(); //更新明细 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/ST_OUTIVT01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/ST_OUTIVT01.wql index 930376121..725460a42 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/ST_OUTIVT01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/ST_OUTIVT01.wql @@ -226,6 +226,10 @@ dtl.iostorinvdtl_id <> 输入.iostorinvdtl_id ENDOPTION + OPTION 输入.box_no <> "" + dtl.box_no = 输入.box_no + ENDOPTION + ENDSELECT ENDQUERY ENDIF \ No newline at end of file