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 e36add8..118620e 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 @@ -104,6 +104,13 @@ public class AcsToWmsController { return new ResponseEntity<>(acsToWmsService.getDeviceCodeByVehicleType(whereJson), HttpStatus.OK); } + @PostMapping("/getVehicleInfoBycode") + @Log("根据设备编码编码获取托盘信息") + @ApiOperation("根据设备编码编码获取托盘信息") + public ResponseEntity getVehicleInfoByDevice_code(@RequestBody Map whereJson) { + return new ResponseEntity<>(acsToWmsService.getVehicleInfoByDeviceCode(whereJson), HttpStatus.OK); + } + @PostMapping("/againApply") @Log("二次申请任务") @ApiOperation("二次申请任务") diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/WmsToAcsController.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/WmsToAcsController.java index c2f627c..61c60c9 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/WmsToAcsController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/WmsToAcsController.java @@ -79,5 +79,12 @@ public class WmsToAcsController { return new ResponseEntity<>(wmsToAcsService.getPointStatus(whereJson), HttpStatus.OK); } + @PostMapping("/queryTray") + @Log("WMS向acs发送获取载具") + @ApiOperation("WMS向acs发送获取载具") + public ResponseEntity getTray(@RequestBody JSONArray whereJson) { + return new ResponseEntity<>(wmsToAcsService.getTray(whereJson), HttpStatus.OK); + } + } 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 2f35dc5..2b07547 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 @@ -92,4 +92,12 @@ public interface AcsToWmsService { * @param whereJson */ void reverseGroup(JSONObject whereJson); + + /** + * 根据设备编码获取托盘信息 + * + * @param jsonObject 条件 + * @return Map + */ + Map getVehicleInfoByDeviceCode(Map jsonObject); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java index 3735345..7cd3033 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java @@ -55,4 +55,11 @@ public interface WmsToAcsService { * @return */ JSONObject getPointStatus(JSONArray whereJson); + + /** + * 获取木托盘 + * @param whereJson + * @return + */ + JSONObject getTray(JSONArray whereJson); } 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 21624fd..0d47eeb 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 @@ -22,11 +22,11 @@ import org.nl.wms.sch.manage.RegionEnum; import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.sch.manage.WorkOrderEnum; import org.nl.wms.sch.service.TaskService; +import org.nl.wms.sch.tasks.PointUpdateUtil; import org.nl.wms.sch.tasks.callEmpty.FjCallEmptyVehicleTask; import org.nl.wms.sch.tasks.callEmpty.HnCallEmptyVehicleTask; import org.nl.wms.sch.tasks.callEmpty.YzjCallEmptyVehicleTask; import org.nl.wms.sch.tasks.callMaterial.FjCallMaterialTask; -import org.nl.wms.sch.tasks.callMaterial.SzCallMaterialTask; import org.nl.wms.sch.tasks.callMaterial.YzjCallMaterialTask; import org.nl.wms.sch.tasks.sendEmpty.DpSendEmpVehicleTask; import org.nl.wms.sch.tasks.sendEmpty.FjSendEmpVehicleTask; @@ -185,62 +185,23 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String weight = whereJson.getString("weight"); String qty = whereJson.getString("qty"); - if (ObjectUtil.isEmpty(type)) throw new BadRequestException("类型不能为空"); if (ObjectUtil.isEmpty(point_code)) throw new BadRequestException("点位不能为空"); - // 类型映射 + /** + * 类型映射 + * 1: 送料入库 + * 2: 叫料出库 + * 3: 送空托盘 + * 4: 叫空托盘 + */ String regionId = WQLObject .getWQLObject("sch_base_point") .query("point_code = '" + point_code + "'") .uniqueResult(0) .getString("region_id"); - switch (type) { - case "1": - // 设备送料入库 - if (StrUtil.equals(regionId, RegionEnum.HNQ.getId())) { - type = "1"; - } else if (StrUtil.equals(regionId, RegionEnum.YZQ.getId())) { - type = "5"; - } else if (StrUtil.equals(regionId, RegionEnum.YQ.getId())) { - type = "8"; - } else if (StrUtil.equals(regionId, RegionEnum.ZDCDX.getId())) { - type = "11"; - } - break; - case "2": - // 设备叫料出库 - if (StrUtil.equals(regionId, RegionEnum.YZQ.getId())) { - type = "3"; - } else if (StrUtil.equals(regionId, RegionEnum.YQ.getId())) { - type = "7"; - } else if (StrUtil.equals(regionId, RegionEnum.ZDCDX.getId())) { - type = "9"; - } - break; - case "3": - // 设备送空托盘 - if (StrUtil.equals(regionId, RegionEnum.YZQ.getId())) { - type = "4"; - } else if (StrUtil.equals(regionId, RegionEnum.ZDCDX.getId())) { - type = "10"; - } else if (StrUtil.equals(regionId, RegionEnum.KGTDPQ.getId())) { - type = "13"; - } - break; - case "4": - // 设备叫空托盘 - if (StrUtil.equals(regionId, RegionEnum.HNQ.getId())) { - type = "2"; - } else if (StrUtil.equals(regionId, RegionEnum.YZQ.getId())) { - type = "6"; - } else if (StrUtil.equals(regionId, RegionEnum.ZDCDX.getId())) { - type = "12"; - } - break; - default: - throw new BadRequestException("ACS任务类型错误"); - } + + RegionEnum regionEnum = RegionEnum.get(regionId); // 参数统一获取 JSONObject param = new JSONObject(); @@ -257,7 +218,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { * 4.压制机上料位送空盅 * 5.压制机满料入库 * 6.压制机呼叫空钢托盘 - * 7.烧制叫料出库 * 8.烧制送料入库 * 9.分拣叫料出库 * 10.分拣送空钢托盘 @@ -267,76 +227,99 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { */ switch (type) { case "1": - // 1.混碾机送料入库:混碾机物料送到困料货架 - // 创建任务 - param.put("point_code1", point_code); // 起点 - SpringContextHolder.getBean(HnSendMaterialTask.class).createTask(param); + switch (regionEnum) { + case HNQ: + // 1.混碾机送料入库:混碾机物料送到困料货架 + // 创建任务 + param.put("point_code1", point_code); // 起点 + SpringContextHolder.getBean(HnSendMaterialTask.class).createTask(param); + break; + case YZQ: + // 5.压制机满料入库 + param.put("point_code1", point_code); // 起点 + param.put("group_id", whereJson.getString("group_id")); // 组盘标识 - 机械手过来的 + // 创建任务 + SpringContextHolder.getBean(YzjSendMaterialTask.class).createTask(param); + break; + case YQ: + // 8.烧制送料入库 + param.put("point_code1", point_code); // 起点 + SpringContextHolder.getBean(SzSendMaterialTask.class).createTask(param); + break; + case ZDCDX: + // 11.分拣送料入库 + param.put("point_code1", point_code); // 起点 + param.put("group_id", whereJson.getString("group_id")); // 组盘标识 - 机械手过来的 + SpringContextHolder.getBean(FjSendMaterialTask.class).createTask(param); + break; + default: + throw new BadRequestException("ACS任务类型错误"); + } break; case "2": - param.put("point_code2", point_code); // 终点 - // 创建任务 - SpringContextHolder.getBean(HnCallEmptyVehicleTask.class).createTask(param); + switch (regionEnum) { + case YZQ: + // 3.压制机叫料任务 + param.put("point_code2", point_code); // 终点 + // 创建任务 + SpringContextHolder.getBean(YzjCallMaterialTask.class).createTask(param); + break; + case ZDCDX: + // 9.分拣叫料出库 + param.put("point_code2", point_code); // 终点 + SpringContextHolder.getBean(FjCallMaterialTask.class).createTask(param); + break; + default: + throw new BadRequestException("ACS任务类型错误"); + } break; case "3": - // 压制机叫料任务 - param.put("point_code2", point_code); // 终点 - // 创建任务 - SpringContextHolder.getBean(YzjCallMaterialTask.class).createTask(param); + switch (regionEnum) { + case YZQ: + // 4.压制机送空盅 + param.put("point_code1", point_code); // 起点 + // 创建任务 + SpringContextHolder.getBean(YzjSendEmpVehicleTask.class).createTask(param); + break; + case ZDCDX: + // 10.分拣送钢托盘 + param.put("point_code1", point_code); // 起点 + SpringContextHolder.getBean(FjSendEmpVehicleTask.class).createTask(param); + break; + case KGTDPQ: + // 13.叠盘区送空钢托盘 + param.put("point_code1", point_code); // 起点 + SpringContextHolder.getBean(DpSendEmpVehicleTask.class).createTask(param); + break; + default: + throw new BadRequestException("ACS任务类型错误"); + } break; case "4": - // 压制机送空盅 - param.put("point_code1", point_code); // 起点 - // 创建任务 - SpringContextHolder.getBean(YzjSendEmpVehicleTask.class).createTask(param); - break; - case "5": - // 压制机满料入库 - param.put("point_code1", point_code); // 起点 - param.put("group_id", whereJson.getString("group_id")); // 组盘标识 - // 创建任务 - SpringContextHolder.getBean(YzjSendMaterialTask.class).createTask(param); - break; - case "6": - // 压制机呼叫空托盘 - param.put("point_code2", point_code); // 终点 - // 创建任务 - SpringContextHolder.getBean(YzjCallEmptyVehicleTask.class).createTask(param); - break; - case "7": - // 烧制叫料出库 - param.put("point_code2", point_code); // 终点 - SpringContextHolder.getBean(SzCallMaterialTask.class).createTask(param); - break; - case "8": - // 烧制送料入库 - param.put("point_code1", point_code); // 起点 - SpringContextHolder.getBean(SzSendMaterialTask.class).createTask(param); - break; - case "9": - // 分拣叫料出库 - param.put("point_code2", point_code); // 终点 - SpringContextHolder.getBean(FjCallMaterialTask.class).createTask(param); - break; - case "10": - // 分拣送钢托盘 - param.put("point_code1", point_code); // 起点 - SpringContextHolder.getBean(FjSendEmpVehicleTask.class).createTask(param); - break; - case "11": - // 分拣送料入库 - param.put("point_code1", point_code); // 起点 - SpringContextHolder.getBean(FjSendMaterialTask.class).createTask(param); - break; - case "12": - // 分拣呼叫木托盘 - param.put("point_code2", point_code); // 起点 - SpringContextHolder.getBean(FjCallEmptyVehicleTask.class).createTask(param); - break; - case "13": - // 叠盘区送空钢托盘 - param.put("point_code1", point_code); // 起点 - SpringContextHolder.getBean(DpSendEmpVehicleTask.class).createTask(param); + switch (regionEnum) { + case HNQ: + // 2.混碾机呼叫空托盘 + param.put("point_code2", point_code); // 终点 + // 创建任务 + SpringContextHolder.getBean(HnCallEmptyVehicleTask.class).createTask(param); + break; + case YZQ: + // 6.压制机呼叫空托盘 + param.put("point_code2", point_code); // 终点 + // 创建任务 + SpringContextHolder.getBean(YzjCallEmptyVehicleTask.class).createTask(param); + break; + case ZDCDX: + // 12.分拣呼叫木托盘 -- xxx + param.put("point_code2", point_code); // 起点 + SpringContextHolder.getBean(FjCallEmptyVehicleTask.class).createTask(param); + break; + default: + throw new BadRequestException("ACS任务类型错误"); + } break; + default: + throw new BadRequestException("ACS任务类型错误"); } return null; } @@ -349,6 +332,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { */ @Override public void manipulatorApply(JSONObject jsonObject) { + WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point"); + WQLObject groupTab = WQLObject.getWQLObject("st_buss_vehiclegroup"); //组盘 JSONObject produceInfoByCode = new JSONObject(); String device_code = (String) jsonObject.get("device_code"); // 对接位 @@ -358,99 +343,105 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { produceInfoByCode = this.getProduceInfoByCode(device_code); // 获取设备的 String material_id = (String) produceInfoByCode.get("material_id"); String cust_id = (String) produceInfoByCode.get("cust_id"); - String producetask_id = (String) produceInfoByCode.get("producetask_id"); - WQLObject.getWQLObject("st_buss_vehiclegroup").delete("vehicle_code ='" + vehicle_code + "'"); -// // 如果上报不了,则去点位上取(木托盘情况) -// if (StrUtil.equals("0", vehicle_code)) { -// vehicle_code = produceInfoByCode.getString("vehicle_code"); -// } - + String producetask_id = (String) produceInfoByCode.get("workorder_id"); + // 物料 JSONObject materialObj = WQLObject .getWQLObject("MD_ME_MaterialBase") - .query("material_id='" + material_id + "'") + .query("material_id = '" + material_id + "'") .uniqueResult(0); - JSONObject groubObj = new JSONObject(); - long nextId = IdUtil.getSnowflake(1, 1).nextId(); - groubObj.put("group_id", nextId); - groubObj.put("vehicle_code", vehicle_code); - groubObj.put("material_uuid", material_id); - groubObj.put("material_code", materialObj.getString("material_code")); - groubObj.put("material_name", materialObj.getString("material_name")); - groubObj.put("cust_id", cust_id); - groubObj.put("qty", qty); - groubObj.put("producetask_id", producetask_id); -// groubObj.put("AlongSide", jsonObject.get("AlongSide")); -// groubObj.put("BshortSide", jsonObject.get("BshortSide")); -// groubObj.put("Htrapezoidal", jsonObject.get("Htrapezoidal")); -// groubObj.put("Wthickness", jsonObject.get("Wthickness")); - groubObj.put("tray_qty", jsonObject.get("tray_qty")); - groubObj.put("crib_category", jsonObject.get("crib_category")); - groubObj.put("tray_high", jsonObject.get("tray_high")); - groubObj.put("palletX1_line", jsonObject.get("palletX1_line")); - groubObj.put("palletY1_row", jsonObject.get("palletY1_row")); - groubObj.put("palletA1_angle", jsonObject.get("palletA1_angle")); - groubObj.put("palletX2_line", jsonObject.get("palletX2_line")); - groubObj.put("palletY2_row", jsonObject.get("palletY2_row")); - groubObj.put("palletA2_angle", jsonObject.get("palletA2_angle")); - groubObj.put("palletX3_line", jsonObject.get("palletX3_line")); - groubObj.put("palletY3_row", jsonObject.get("palletY3_row")); - groubObj.put("pressCribX1_line", jsonObject.get("pressCribX1_line")); - groubObj.put("palletA3_angle", jsonObject.get("palletA3_angle")); - groubObj.put("pressCribY1_row", jsonObject.get("pressCribY1_row")); - groubObj.put("pressCribA1_angle", jsonObject.get("pressCribA1_angle")); - groubObj.put("pressCribX2_line", jsonObject.get("pressCribX2_line")); - groubObj.put("pressCribY2_row", jsonObject.get("pressCribY2_row")); - groubObj.put("pressCribA2_angle", jsonObject.get("pressCribA2_angle")); - groubObj.put("pressCribX3_line", jsonObject.get("pressCribX3_line")); - groubObj.put("pressCribY3_row", jsonObject.get("pressCribY3_row")); - groubObj.put("pressCribA3_angle", jsonObject.get("pressCribA3_angle")); - groubObj.put("Zoffset", jsonObject.get("Zoffset")); - groubObj.put("pallet_layerQty", jsonObject.get("pallet_layerQty")); - groubObj.put("pressCrib_layerQty", jsonObject.get("pressCrib_layerQty")); - groubObj.put("codeLayerX1_interval", jsonObject.get("codeLayerX1_interval")); - groubObj.put("codeLayerY1_interval", jsonObject.get("codeLayerY1_interval")); - groubObj.put("pressCrib_layerQty", jsonObject.get("pressCrib_layerQty")); - groubObj.put("codeLayerX2_interval", jsonObject.get("codeLayerX2_interval")); - groubObj.put("codeLayerY2_interval", jsonObject.get("codeLayerY2_interval")); - groubObj.put("codeLayerX3_interval", jsonObject.get("codeLayerX3_interval")); - groubObj.put("codeLayerY3_interval", jsonObject.get("codeLayerY3_interval")); - groubObj.put("codeLayerY1_offset", jsonObject.get("codeLayerY1_offset")); - groubObj.put("codeLayerX1_offset", jsonObject.get("codeLayerX1_offset")); - groubObj.put("codeLayerX3_interval", jsonObject.get("codeLayerX3_interval")); - groubObj.put("codeLayerX2_offset", jsonObject.get("codeLayerX2_offset")); - groubObj.put("codeLayerX3_offset", jsonObject.get("codeLayerX3_offset")); - groubObj.put("codeLayerY3_offset", jsonObject.get("codeLayerY3_offset")); - groubObj.put("pressLayerX1_interval", jsonObject.get("pressLayerX1_interval")); - groubObj.put("pressLayerY1_interval", jsonObject.get("pressLayerY1_interval")); - groubObj.put("pressLayerX2_interval", jsonObject.get("pressLayerX2_interval")); - groubObj.put("pressLayerY2_interval", jsonObject.get("pressLayerY2_interval")); - groubObj.put("pressLayerX3_interval", jsonObject.get("pressLayerX3_interval")); - groubObj.put("pressLayerY3_interval", jsonObject.get("pressLayerY3_interval")); - groubObj.put("pressLayerX1_offset", jsonObject.get("pressLayerX1_offset")); - groubObj.put("pressLayerY1_offset", jsonObject.get("pressLayerY1_offset")); - groubObj.put("pressLayerX2_offset", jsonObject.get("pressLayerX2_offset")); - groubObj.put("pressLayerY2_offset", jsonObject.get("pressLayerY2_offset")); - groubObj.put("pressLayerX3_offset", jsonObject.get("pressLayerX3_offset")); - groubObj.put("pressLayerY3_offset", jsonObject.get("pressLayerY3_offset")); - groubObj.put("one_cribTotal", jsonObject.get("one_cribTotal")); - groubObj.put("two_cribTotal", jsonObject.get("two_cribTotal")); - groubObj.put("one_qty", jsonObject.get("one_qty")); - groubObj.put("two_qty", jsonObject.get("two_qty")); - groubObj.put("tool_coordinate", jsonObject.get("tool_coordinate")); - groubObj.put("create_id", SecurityUtils.getCurrentUserId()); - groubObj.put("create_name", SecurityUtils.getCurrentNickName()); - groubObj.put("create_time", DateUtil.now()); - WQLObject.getWQLObject("st_buss_vehiclegroup").insert(groubObj); - jsonObject.put("group_id", nextId); // 组盘标识 - // 判断是分拣还是压制的送料入库 - if (device_code.startsWith("FJCD")) { - jsonObject.put("type", "11"); + // 机械手下料位 + JSONObject pointObj = pointTab.query("point_code = '" + device_code + "'").uniqueResult(0); + JSONObject groupObj = new JSONObject(); + if (ObjectUtil.isNotEmpty(pointObj.getString("group_id"))) { // 存在组盘id,表示是半托 + // 半托只需要修改参数即可 + groupObj = groupTab.query("group_id = '" + pointObj.getString("group_id") + "'").uniqueResult(0); + jsonObject.put("group_id", ObjectUtil.isNotEmpty(pointObj.getString("group_id"))); // 组盘标识 } else { - jsonObject.put("type", "5"); + long nextId = IdUtil.getSnowflake(1, 1).nextId(); + groupObj.put("group_id", nextId); + jsonObject.put("group_id", nextId); // 组盘标识 } - this.apply(jsonObject); + groupObj.put("vehicle_code", vehicle_code); + groupObj.put("material_uuid", material_id); + groupObj.put("material_code", materialObj.getString("material_code")); + groupObj.put("material_name", materialObj.getString("material_name")); + groupObj.put("cust_id", cust_id); + groupObj.put("qty", qty); + groupObj.put("producetask_id", producetask_id); + groupObj.put("tray_qty", jsonObject.get("tray_qty")); + groupObj.put("crib_category", jsonObject.get("crib_category")); + groupObj.put("tray_high", jsonObject.get("tray_high")); + groupObj.put("palletX1_line", jsonObject.get("palletX1_line")); + groupObj.put("palletY1_row", jsonObject.get("palletY1_row")); + groupObj.put("palletA1_angle", jsonObject.get("palletA1_angle")); + groupObj.put("palletX2_line", jsonObject.get("palletX2_line")); + groupObj.put("palletY2_row", jsonObject.get("palletY2_row")); + groupObj.put("palletA2_angle", jsonObject.get("palletA2_angle")); + groupObj.put("palletX3_line", jsonObject.get("palletX3_line")); + groupObj.put("palletY3_row", jsonObject.get("palletY3_row")); + groupObj.put("pressCribX1_line", jsonObject.get("pressCribX1_line")); + groupObj.put("palletA3_angle", jsonObject.get("palletA3_angle")); + groupObj.put("pressCribY1_row", jsonObject.get("pressCribY1_row")); + groupObj.put("pressCribA1_angle", jsonObject.get("pressCribA1_angle")); + groupObj.put("pressCribX2_line", jsonObject.get("pressCribX2_line")); + groupObj.put("pressCribY2_row", jsonObject.get("pressCribY2_row")); + groupObj.put("pressCribA2_angle", jsonObject.get("pressCribA2_angle")); + groupObj.put("pressCribX3_line", jsonObject.get("pressCribX3_line")); + groupObj.put("pressCribY3_row", jsonObject.get("pressCribY3_row")); + groupObj.put("pressCribA3_angle", jsonObject.get("pressCribA3_angle")); + groupObj.put("Zoffset", jsonObject.get("Zoffset")); + groupObj.put("pallet_layerQty", jsonObject.get("pallet_layerQty")); + groupObj.put("pressCrib_layerQty", jsonObject.get("pressCrib_layerQty")); + groupObj.put("codeLayerX1_interval", jsonObject.get("codeLayerX1_interval")); + groupObj.put("codeLayerY1_interval", jsonObject.get("codeLayerY1_interval")); + groupObj.put("pressCrib_layerQty", jsonObject.get("pressCrib_layerQty")); + groupObj.put("codeLayerX2_interval", jsonObject.get("codeLayerX2_interval")); + groupObj.put("codeLayerY2_interval", jsonObject.get("codeLayerY2_interval")); + groupObj.put("codeLayerX3_interval", jsonObject.get("codeLayerX3_interval")); + groupObj.put("codeLayerY3_interval", jsonObject.get("codeLayerY3_interval")); + groupObj.put("codeLayerY1_offset", jsonObject.get("codeLayerY1_offset")); + groupObj.put("codeLayerX1_offset", jsonObject.get("codeLayerX1_offset")); + groupObj.put("codeLayerX3_interval", jsonObject.get("codeLayerX3_interval")); + groupObj.put("codeLayerX2_offset", jsonObject.get("codeLayerX2_offset")); + groupObj.put("codeLayerX3_offset", jsonObject.get("codeLayerX3_offset")); + groupObj.put("codeLayerY3_offset", jsonObject.get("codeLayerY3_offset")); + groupObj.put("pressLayerX1_interval", jsonObject.get("pressLayerX1_interval")); + groupObj.put("pressLayerY1_interval", jsonObject.get("pressLayerY1_interval")); + groupObj.put("pressLayerX2_interval", jsonObject.get("pressLayerX2_interval")); + groupObj.put("pressLayerY2_interval", jsonObject.get("pressLayerY2_interval")); + groupObj.put("pressLayerX3_interval", jsonObject.get("pressLayerX3_interval")); + groupObj.put("pressLayerY3_interval", jsonObject.get("pressLayerY3_interval")); + groupObj.put("pressLayerX1_offset", jsonObject.get("pressLayerX1_offset")); + groupObj.put("pressLayerY1_offset", jsonObject.get("pressLayerY1_offset")); + groupObj.put("pressLayerX2_offset", jsonObject.get("pressLayerX2_offset")); + groupObj.put("pressLayerY2_offset", jsonObject.get("pressLayerY2_offset")); + groupObj.put("pressLayerX3_offset", jsonObject.get("pressLayerX3_offset")); + groupObj.put("pressLayerY3_offset", jsonObject.get("pressLayerY3_offset")); + groupObj.put("one_cribTotal", jsonObject.get("one_cribTotal")); + groupObj.put("two_cribTotal", jsonObject.get("two_cribTotal")); + groupObj.put("one_qty", jsonObject.get("one_qty")); + groupObj.put("two_qty", jsonObject.get("two_qty")); + groupObj.put("tool_coordinate", jsonObject.get("tool_coordinate")); + groupObj.put("create_id", SecurityUtils.getCurrentUserId()); + groupObj.put("create_name", SecurityUtils.getCurrentNickName()); + groupObj.put("create_time", DateUtil.now()); + if (ObjectUtil.isNotEmpty(pointObj.getString("group_id"))) { + groupTab.update(groupObj); + // 清除对接位的组盘标识 + pointObj.put("group_id", null); + pointTab.update(pointObj); + } else { + groupTab.insert(groupObj); + } + // 物料更新 + materialObj.put("AlongSide", jsonObject.get("AlongSide")); + materialObj.put("BshortSide", jsonObject.get("BshortSide")); + materialObj.put("Htrapezoidal", jsonObject.get("Htrapezoidal")); + materialObj.put("Wthickness", jsonObject.get("Wthickness")); + WQLObject.getWQLObject("MD_ME_MaterialBase").insert(materialObj); + // 入库 jsonObject.put("type", "1"); - this.apply((JSONObject) jsonObject); + this.apply(jsonObject); } /** @@ -466,21 +457,17 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { if (StrUtil.isEmpty(vehicle_code)) { throw new BadRequestException("托盘条码不能为空!"); } - // 组盘表 - JSONObject vehicleObj = WQLObject.getWQLObject("st_buss_vehiclegroup").query("vehicle_code='" + vehicle_code + "'").uniqueResult(0); + // 组盘表 - 对应的是钢托盘 + JSONObject vehicleObj = WQLObject.getWQLObject("st_buss_vehiclegroup").query("vehicle_code = '" + vehicle_code + "'", "create_time desc").uniqueResult(0); if (ObjectUtil.isEmpty(vehicleObj)) { throw new BadRequestException("未找到托盘号为'" + vehicle_code + "'的组盘信息!"); } // 获取工单 - String workorder_id = vehicleObj.getString("producetask_id"); + String workorder_id = vehicleObj.getString("producetask_id"); // workorder_id JSONObject taskObj = WQLObject.getWQLObject("PDM_BD_WorkOrder").query("workorder_id='" + workorder_id + "'").uniqueResult(0); //1代表去出窑,2 是优先包装 - String is_package = "1"; - if (StrUtil.equals(taskObj.getString("is_package"), "1")) { - is_package = "2"; - } JSONObject returnjo = new JSONObject(); - returnjo.put("is_package", is_package); + returnjo.put("is_package", taskObj.getString("is_package")); return returnjo; } @@ -629,9 +616,49 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String vehicle_code = whereJson.getString("vehicle_code"); JSONObject rywPoint = pointTab.query("point_code = 'RYW'").uniqueResult(0); String group_id = rywPoint.getString("group_id"); + if (ObjectUtil.isEmpty(group_id)) return; JSONObject group = groupTab.query("group_id = '" + group_id + "'").uniqueResult(0); group.put("vehicle_code", vehicle_code); + group.put("create_time", DateUtil.now()); groupTab.update(group); + // 清理点位 + rywPoint.put("group_id", null); + pointTab.update(rywPoint); + } + + /** + * 根据设备编码获取托盘信息 + * + * @param jsonObject 条件 + * @return Map + */ + @Override + public Map getVehicleInfoByDeviceCode(Map jsonObject) { + WQLObject groupTab = WQLObject.getWQLObject("st_buss_vehiclegroup"); + WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point"); + WQLObject materialTab = WQLObject.getWQLObject("MD_ME_MaterialBase"); + String point_code = (String) jsonObject.get("device_code"); + JSONObject point = pointTab.query("point_code = '" + point_code + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(point)) throw new BadRequestException("未找到点位编码为'"+ point_code +"'的点位信息"); + String group_id = point.getString("group_id"); + JSONObject vehicleObj = groupTab.query("group_id = '" + group_id + "' AND is_delete='0'").uniqueResult(0); + if (ObjectUtil.isEmpty(vehicleObj)){ + throw new BadRequestException("未找到组盘信息"); + } + // 还需要返回砖型 + String material_id = point.getString("material_id"); + JSONObject materialObj = materialTab.query("material_id = '" + material_id + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(materialObj)) { + vehicleObj.put("AlongSide", materialObj.get("AlongSide")); + vehicleObj.put("BshortSide", materialObj.get("BshortSide")); + vehicleObj.put("Htrapezoidal", materialObj.get("Htrapezoidal")); + vehicleObj.put("Wthickness", materialObj.get("Wthickness")); + } + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.OK.value()); + result.put("message", "反馈成功!"); + result.put("data", vehicleObj); + return result; } private JSONObject getProduceInfoByCode(String code) { // 查找工单 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java index 9c28278..fbf2142 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java @@ -54,4 +54,10 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { return AcsUtil.notifyAcs(api, whereJson); } + @Override + public JSONObject getTray(JSONArray whereJson) { + String api = "api/wms/queryTray"; + return AcsUtil.notifyAcs(api, whereJson); + } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/RegionEnum.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/RegionEnum.java index 1120e52..c41ade8 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/RegionEnum.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/RegionEnum.java @@ -1,5 +1,6 @@ package org.nl.wms.sch.manage; +import cn.hutool.core.util.StrUtil; import lombok.AllArgsConstructor; import lombok.Getter; @@ -30,4 +31,13 @@ public enum RegionEnum { private String id; private String code; private String name; + + public static RegionEnum get(String id) { + for (RegionEnum regionEnum : RegionEnum.values()) { + if (StrUtil.equals(regionEnum.id, id)) { + return regionEnum; + } + } + return null; + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/RegionIOEnum.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/RegionIOEnum.java index 04969a8..63b083e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/RegionIOEnum.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/RegionIOEnum.java @@ -17,7 +17,10 @@ public enum RegionIOEnum { CREATE_MODE_PC("1", "PC产生"), CREATE_MODE_ACS("2", "ACS申请"), CREATE_MODE_PDA("3", "手持创建"), - CREATE_MODE_INTERFACE("4", "外部接口产生"); + CREATE_MODE_INTERFACE("4", "外部接口产生"), + // 计量单位 + UNIT_ID_B("1", "块"), + UNIT_ID_T("2", "吨"); private final String code; private final String name; 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 9a97af1..5ae69da 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 @@ -19,6 +19,7 @@ import org.nl.wms.sch.service.PointService; import org.nl.wms.sch.service.RegionService; import org.nl.wms.sch.service.dto.PointDto; import org.nl.wms.sch.service.dto.RegionDto; +import org.nl.wms.sch.tasks.PointUpdateUtil; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -167,15 +168,16 @@ public class PointServiceImpl implements PointService { String pointStatus = dto.getPoint_status(); if (ObjectUtil.isNotEmpty(pointStatus) && pointStatus.equals("1")) { // 空位 - dto.setMaterial_id(""); - dto.setVehicle_type(""); - dto.setVehicle_code(""); - dto.setVehicle_qty(""); - dto.setPcsn(""); - dto.setTask_id(null); - dto.setIvt_qty(BigDecimal.valueOf(0)); - dto.setInstorage_time(null); - dto.setStanding_time(BigDecimal.valueOf(0)); +// dto.setMaterial_id(""); +// dto.setVehicle_type(""); +// dto.setVehicle_code(""); +// dto.setVehicle_qty(""); +// dto.setPcsn(""); +// dto.setTask_id(null); +// dto.setIvt_qty(BigDecimal.valueOf(0)); +// dto.setInstorage_time(null); +// dto.setStanding_time(BigDecimal.valueOf(0)); + PointUpdateUtil.clearPoint(dto.getPoint_code()); } else if (pointStatus.equals("2")) { // 空载具 dto.setMaterial_id(null); dto.setInstorage_time(now); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PointUpdateUtil.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PointUpdateUtil.java index 2759a9b..61bc4d0 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PointUpdateUtil.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PointUpdateUtil.java @@ -1,8 +1,14 @@ package org.nl.wms.sch.tasks; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.wms.ext.acs.service.WmsToAcsService; +import org.nl.wms.ext.acs.service.impl.WmsToAcsServiceImpl; import org.nl.wms.sch.manage.PointEnum; /** @@ -11,7 +17,6 @@ import org.nl.wms.sch.manage.PointEnum; * @Date: 2022/11/23 */ public class PointUpdateUtil { - /** * 清理点位 */ @@ -55,4 +60,33 @@ public class PointUpdateUtil { pointObj.put("standing_time", "0"); pointTab.update(pointObj); } + + /** + * 访问acs获取点位数据更新点位信息: + * 分拣呼叫空托盘、空钢托盘叠盘架 + * @param pointCodes + * @deprecated 只更新点位状态和载具类型 + */ + public static void updatePoint(JSONArray pointCodes) { + WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); + WmsToAcsServiceImpl wmsToAcsService = new WmsToAcsServiceImpl(); + // 向ACS查询点位状态 + JSONObject pointStatus = wmsToAcsService.getPointStatus(pointCodes); + // 找到对应的载具类型再去下发 + JSONArray deviceDatas = pointStatus.getJSONArray("data"); + for (int j = 0; j < deviceDatas.size(); j++) { + JSONObject pointObj = deviceDatas.getJSONObject(j); + String mode = pointObj.getString("mode"); // 工作状态:0脱机,其他正常 + String error = pointObj.getString("error"); // 0是正常 + if (mode.equals("0") || !error.equals("0")) continue; // 点位异常 + String point_status = pointObj.getString("move"); // 点位状态:0无货,1有货(具体是空载具还是物料不知道) + String point_code = pointObj.getString("device_code"); + //将托盘类型456.... + String vehicle_type = pointObj.getString("container_type"); + JSONObject pointObj2 = pointTable.query("point_code = '" + point_code + "'").uniqueResult(0); + pointObj2.put("point_status", Integer.parseInt(point_status) + 1); // 1空位, 2空载具 + pointObj2.put("vehicle_type", vehicle_type); + pointTable.update(pointObj2); + } + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/SzCallMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/autoCallMaterial/RykCallMaterialTask.java similarity index 78% rename from lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/SzCallMaterialTask.java rename to lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/autoCallMaterial/RykCallMaterialTask.java index 20ca49e..8b3d3c3 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/SzCallMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/autoCallMaterial/RykCallMaterialTask.java @@ -1,4 +1,4 @@ -package org.nl.wms.sch.tasks.callMaterial; +package org.nl.wms.sch.tasks.autoCallMaterial; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; @@ -6,8 +6,6 @@ import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.utils.SecurityUtils; import org.nl.modules.system.util.CodeUtil; @@ -18,21 +16,18 @@ import org.nl.wms.sch.manage.*; import org.nl.wms.sch.tasks.AcsTaskDto; import org.nl.wms.sch.tasks.PointUpdateUtil; import org.nl.wms.util.IdUtil; -import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; /** * @author: lyd - * @description: 烧制工序叫料 - 入窑位 - * @Date: 2022/11/10 + * @description: 入窑缓存自动送料 + * @Date: 2022/11/24 */ -@Service -@RequiredArgsConstructor -@Slf4j -public class SzCallMaterialTask extends AbstractAcsTask { - private final String THIS_CLASS = SzCallMaterialTask.class.getName(); +public class RykCallMaterialTask extends AbstractAcsTask { + private final String THIS_CLASS = RykCallMaterialTask.class.getName(); /** * 添加任务进行下发 * @@ -79,6 +74,7 @@ public class SzCallMaterialTask extends AbstractAcsTask { String task_id = task.getString("task_id"); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); + String point_code2 = taskObj.getString("point_code2"); // 物料点 JSONObject material_point = pointTab.query("point_code = '" + taskObj.getString("point_code1") + "'").uniqueResult(0); //任务取消 @@ -112,7 +108,7 @@ public class SzCallMaterialTask extends AbstractAcsTask { taskObj.put("update_time", DateUtil.now()); taskTab.update(taskObj); - JSONObject requestObj = task.getJSONObject("request_param"); + if (ObjectUtil.isEmpty(material_point)) return; //区域出入表【st_ivt_regionIO】 WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO"); @@ -126,10 +122,11 @@ public class SzCallMaterialTask extends AbstractAcsTask { regionIoObj.put("region_name", material_point.getString("region_name")); regionIoObj.put("material_id", taskObj.getString("material_id")); regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code")); - regionIoObj.put("qty", requestObj.getString("qty")); + regionIoObj.put("qty", material_point.getString("qty")); + regionIoObj.put("ivt_weight", material_point.getString("weight")); regionIoObj.put("bill_status", RegionIOEnum.BILL_STATUS_FINISH.getCode()); regionIoObj.put("start_point_code", taskObj.getString("point_code1")); - regionIoObj.put("end_point_code", taskObj.getString("point_code2")); + regionIoObj.put("end_point_code", point_code2); regionIoObj.put("create_mode", RegionIOEnum.CREATE_MODE_ACS.getCode()); regionIoObj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd")); regionIoObj.put("create_id", SecurityUtils.getCurrentUserId()); @@ -137,12 +134,50 @@ public class SzCallMaterialTask extends AbstractAcsTask { regionIoObj.put("create_time", DateUtil.now()); regionIoTab.insert(regionIoObj); - //完成后 + /** + * 完成后将组盘id和任务id赋值到入窑口 + */ + JSONObject uniqueResult = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); + uniqueResult.put("group_id", material_point.getString("group_id")); + uniqueResult.put("task_id", material_point.getString("task_id")); + pointTab.update(uniqueResult); // 物料点位解锁 并设置空位 PointUpdateUtil.clearPoint(material_point.getString("point_code")); } } + /** + * 自动生成任务 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void autoCreate() { + String point_code2 = "RYW"; + //任务表【SCH_BASE_Task】 + WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); + //点位基础表【SCH_BASE_Point】 + WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point"); + //判断当前点是否有未完成的任务 + JSONObject taskObj = taskTab.query("is_delete='0' and point_code2 = '" + point_code2 + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(taskObj)) return; + JSONObject object = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(object.getString("group_id"))) return; + // todo 判断是否有货 + SchTaskDto dto = SchTaskDto.builder() + .task_id(IdUtil.getLongId()) + .task_code(CodeUtil.getNewCode("TASK_CODE")) + .task_type("task_type") + .task_name("烧制出库") + .task_status(TaskStatusEnum.SURE_END.getCode()) + .point_code2(point_code2) + .vehicle_type(PointEnum.VEHICLE_TYPE_STEEL_TRAY.getCode()) + .handle_class(THIS_CLASS) + .create_time(DateUtil.now()) + .build(); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + taskTab.insert(json); + } + /** * @param form 创建任务需要的参数 * @return 返回任务标识 @@ -150,9 +185,7 @@ public class SzCallMaterialTask extends AbstractAcsTask { @Override public String createTask(JSONObject form) { String point_code2 = form.getString("point_code2"); - String vehicle_type = form.getString("vehicle_type"); - String vehicle_code = form.getString("vehicle_code"); - String qty = form.getString("material_num"); + String qty = form.getString("qty"); //生产工单表【PDM_BD_WorkOrder】 WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder"); @@ -175,10 +208,9 @@ public class SzCallMaterialTask extends AbstractAcsTask { .material_qty(qty) .task_status(TaskStatusEnum.SURE_END.getCode()) .point_code2(point_code2) - .vehicle_code(vehicle_code) .workorder_id(workOrderObj.getLong("workorder_id")) .material_id(workOrderObj.getLong("material_id")) - .vehicle_type(vehicle_type) + .vehicle_type(PointEnum.VEHICLE_TYPE_STEEL_TRAY.getCode()) .handle_class(THIS_CLASS) .create_time(DateUtil.now()) .request_param(form.toJSONString()) @@ -199,6 +231,7 @@ public class SzCallMaterialTask extends AbstractAcsTask { */ @Override public void findStartPoint() { + // 到入窑缓存区找一托物料 WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表 WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); // 点位表 @@ -206,14 +239,12 @@ public class SzCallMaterialTask extends AbstractAcsTask { for (int i = 0; i < taskArr.size(); i++) { JSONObject taskObj = taskArr.getJSONObject(i); String material_id = taskObj.getString("material_id"); - String vehicle_type = taskObj.getString("vehicle_type"); JSONObject queryParam = new JSONObject(); queryParam.put("flag", "1"); queryParam.put("material_id", material_id); queryParam.put("region_code", "RYZCQ"); - queryParam.put("vehicle_type", "%" + vehicle_type + "%"); // 到入窑暂存区找,优先找满拖的 - JSONObject json1 = WQL.getWO("QSCH_szCallMaterial_01").addParamMap(queryParam).process().uniqueResult(0); + JSONObject json1 = WQL.getWO("QSCH_rykCallMaterial_01").addParamMap(queryParam).process().uniqueResult(0); if (ObjectUtil.isNotEmpty(json1)) { // 拿到点位 JSONObject material_point = pointTab.query("point_id = '" + json1.getString("point_id") + "' and lock_type = '1'").uniqueResult(0); @@ -223,8 +254,9 @@ public class SzCallMaterialTask extends AbstractAcsTask { pointTab.update(material_point); taskObj.put("point_code1", material_point.getString("point_code")); + taskObj.put("material_id", material_point.getString("material_id")); taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); - taskObj.put("acs_task_type", "2"); + taskObj.put("task_id", taskObj.getString("task_id")); taskObj.put("update_time", DateUtil.now()); taskTab.update(taskObj); } else { @@ -247,11 +279,8 @@ public class SzCallMaterialTask extends AbstractAcsTask { public void forceFinish(String task_id) { WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0); - if (ObjectUtil.isNotEmpty(taskObj)) - this.updateTaskStatus(taskObj,"2"); - else { - throw new BadRequestException("未找到该任务或者任务已完成!"); - } + if (ObjectUtil.isEmpty(taskObj))throw new BadRequestException("未找到该任务或者任务已完成!"); + this.updateTaskStatus(taskObj, UpdateTaskStatusEnum.FORCEFINISH.getCode()); } /** diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/wql/QSCH_szCallMaterial_01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/autoCallMaterial/wql/QSCH_rykCallMaterial_01.wql similarity index 89% rename from lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/wql/QSCH_szCallMaterial_01.wql rename to lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/autoCallMaterial/wql/QSCH_rykCallMaterial_01.wql index d91c3f6..fa0caf3 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/wql/QSCH_szCallMaterial_01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/autoCallMaterial/wql/QSCH_rykCallMaterial_01.wql @@ -1,5 +1,5 @@ [交易说明] - 交易名: 烧制叫料 + 交易名: 入窑口自动任务 - 叫料 所属模块: 功能简述: 版权所有: @@ -56,16 +56,13 @@ AND is_delete = '0' AND lock_type = '1' AND point_status = '3' + AND is_full = '1' OPTION 输入.material_id <> "" p.material_id = 输入.material_id ENDOPTION OPTION 输入.region_code <> "" p.region_code = 输入.region_code ENDOPTION - OPTION 输入.vehicle_type <> "" - p.can_vehicle_type like 输入.vehicle_type - ENDOPTION - ORDER BY is_full desc ENDSELECT ENDQUERY ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/FjCallEmptyVehicleTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/FjCallEmptyVehicleTask.java index 325859b..b7dad73 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/FjCallEmptyVehicleTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/FjCallEmptyVehicleTask.java @@ -19,6 +19,7 @@ import org.nl.wms.sch.manage.RegionIOEnum; import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.sch.manage.UpdateTaskStatusEnum; import org.nl.wms.sch.tasks.AcsTaskDto; +import org.nl.wms.sch.tasks.PointUpdateUtil; import org.nl.wms.util.IdUtil; import org.springframework.stereotype.Service; @@ -125,21 +126,9 @@ public class FjCallEmptyVehicleTask extends AbstractAcsTask { regionIoObj.put("create_time", DateUtil.now()); regionIoTab.insert(regionIoObj); // 点位更新,起点:空位,解锁; - startPoint.put("point_status", "1"); + PointUpdateUtil.clearPoint(startPoint.getString("point_code")); + } else { // 钢托盘每次就一个 startPoint.put("lock_type", "1"); - startPoint.put("task_id", ""); - startPoint.put("pcsn", ""); - startPoint.put("ivt_qty", "0"); - startPoint.put("material_id", ""); - startPoint.put("instorage_time", ""); - startPoint.put("is_full", "2"); - startPoint.put("standing_time", "0"); - startPoint.put("vehicle_type", ""); - startPoint.put("vehicle_code", ""); - } else { // 钢托盘每次就一个 --- 如果是堆叠位5需要更新设备状态?? - startPoint.put("point_status", "1"); - startPoint.put("lock_type", "1"); - startPoint.put("vehicle_qty", "0"); } pointTab.update(startPoint); } @@ -162,9 +151,7 @@ public class FjCallEmptyVehicleTask extends AbstractAcsTask { String point_code2 = form.getString("point_code2"); - String sub_device_code = point_code2.substring(0, point_code2.indexOf("_")); - - String device_code = pointTab.query("point_code = '" + sub_device_code + "'").uniqueResult(0).getString("device_code"); + String device_code = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0).getString("device_code"); JSONObject workOrderObj = workOrderTab.query("device_code = '" + device_code + "' and order_status = '3' and is_delete ='0'").uniqueResult(0); if (ObjectUtil.isEmpty(workOrderObj)) throw new BadRequestException("该设备当前未生产或者已删除"); @@ -182,6 +169,7 @@ public class FjCallEmptyVehicleTask extends AbstractAcsTask { .task_group_id(org.nl.wms.util.IdUtil.getLongId()) .handle_class(THIS_CLASS) .create_time(DateUtil.now()) + .request_param(form.toJSONString()) .build(); JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); taskTab.insert(json); @@ -215,6 +203,7 @@ public class FjCallEmptyVehicleTask extends AbstractAcsTask { if (ObjectUtil.isNotEmpty(noFullPoint)) { // 找到半满托盘,叫料出库 taskObj.put("update_time", DateUtil.now()); taskObj.put("point_code1", noFullPoint.getString("point_code")); + taskObj.put("group_id", noFullPoint.getString("group_id")); // 组盘信息挪到任务中 taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); taskTab.update(taskObj); @@ -223,6 +212,7 @@ public class FjCallEmptyVehicleTask extends AbstractAcsTask { noFullPoint.put("lock_type", "2"); pointTab.update(noFullPoint); } else { // 没有就呼叫空的木托盘 + // todo JSONObject param = new JSONObject(); param.put("flag", "2"); param.put("region_code", "BZZCQ"); @@ -258,11 +248,8 @@ public class FjCallEmptyVehicleTask extends AbstractAcsTask { public void forceFinish(String task_id) { WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0); - if (ObjectUtil.isNotEmpty(taskObj)) - this.updateTaskStatus(taskObj,"2"); - else { - throw new BadRequestException("未找到该任务或者任务已完成!"); - } + if (ObjectUtil.isEmpty(taskObj))throw new BadRequestException("未找到该任务或者任务已完成!"); + this.updateTaskStatus(taskObj, UpdateTaskStatusEnum.FORCEFINISH.getCode()); } /** diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/HnCallEmptyVehicleTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/HnCallEmptyVehicleTask.java index 35e0bc8..f613220 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/HnCallEmptyVehicleTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/HnCallEmptyVehicleTask.java @@ -233,16 +233,10 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask { */ @Override public void forceFinish(String task_id) { - /* - * 强制完成 - */ WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0); - if (ObjectUtil.isNotEmpty(taskObj)) - this.updateTaskStatus(taskObj,UpdateTaskStatusEnum.FORCEFINISH.getCode()); - else { - throw new BadRequestException("未找到该任务或者任务已完成!"); - } + if (ObjectUtil.isEmpty(taskObj))throw new BadRequestException("未找到该任务或者任务已完成!"); + this.updateTaskStatus(taskObj, UpdateTaskStatusEnum.FORCEFINISH.getCode()); } /** diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/YzjCallEmptyVehicleTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/YzjCallEmptyVehicleTask.java index 4635593..1ff8364 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/YzjCallEmptyVehicleTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/YzjCallEmptyVehicleTask.java @@ -85,6 +85,7 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask { JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); String point_code1 = task.getString("point_code1"); + String point_code2 = task.getString("point_code2"); if (StrUtil.equals(status, UpdateTaskStatusEnum.CANCEL.getCode())) { /* @@ -97,7 +98,7 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask { taskObj.put("update_time", DateUtil.now()); taskObj.put("remark", "已取消"); taskTab.update(taskObj); - if (ObjectUtil.isNotEmpty(point_code1) && !point_code1.equals("KGTDDW05")) { + if (ObjectUtil.isNotEmpty(point_code1)) { JSONObject startPoint = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0); startPoint.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode()); pointTab.update(startPoint); @@ -121,9 +122,9 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask { taskObj.put("update_optname", SecurityUtils.getCurrentUsername()); taskObj.put("update_time", DateUtil.now()); taskTab.update(taskObj); - JSONObject startPoint = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0); - if (point_code1.startsWith("R")) { // 入窑缓存位 + if (ObjectUtil.isEmpty(startPoint)) return; + if (point_code1.startsWith("R")) { // 入窑缓存位 - 半托出库 // 插入出库单 JSONObject regionIoObj = new JSONObject(); regionIoObj.put("iostorinv_id", IdUtil.getLongId()); @@ -136,6 +137,7 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask { regionIoObj.put("material_id", taskObj.getString("material_id")); regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code")); regionIoObj.put("qty", requestObj.getString("qty")); + regionIoObj.put("weight_unit_id", RegionIOEnum.UNIT_ID_B.getCode()); regionIoObj.put("bill_status", RegionIOEnum.BILL_STATUS_FINISH.getCode()); regionIoObj.put("start_point_code", taskObj.getString("point_code1")); regionIoObj.put("end_point_code", taskObj.getString("point_code2")); @@ -147,7 +149,14 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask { regionIoTab.insert(regionIoObj); // 点位更新,起点:空位,解锁; PointUpdateUtil.clearPoint(startPoint.getString("point_code")); + // 终点:压制机对接位,将半托的组盘id放进去 + JSONObject endPoint = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); + endPoint.put("group_id", taskObj.getString("group_id")); + pointTab.update(endPoint); } + // 起点解锁 + startPoint.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode()); + pointTab.update(startPoint); } } @@ -224,6 +233,7 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask { JSONObject noFullPoint = WQL.getWO("QSCH_yzjCallEmptyVehicle_01").addParamMap(noFull).process().uniqueResult(0); if (ObjectUtil.isNotEmpty(noFullPoint)) { // 找到半满托盘,叫料出库 taskObj.put("update_time", DateUtil.now()); + taskObj.put("group_id", noFullPoint.getString("group_id")); // 组盘信息挪到任务中 taskObj.put("point_code1", noFullPoint.getString("point_code")); taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); taskTab.update(taskObj); @@ -233,7 +243,13 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask { noFullPoint.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode()); pointTab.update(noFullPoint); } else { // 到KGTDDW05找空钢托盘 + // 访问acs更新点位状态 // 向ACS查询是否有空钢托盘 + JSONArray params = new JSONArray(); + JSONObject deviceCode = new JSONObject(); + deviceCode.put("device_code", "KGTDDW05"); + params.add(deviceCode); + PointUpdateUtil.updatePoint(params); JSONObject param = new JSONObject(); param.put("flag", "2"); param.put("region_code", "KGTCPQ"); @@ -269,11 +285,8 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask { public void forceFinish(String task_id) { WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0); - if (ObjectUtil.isNotEmpty(taskObj)) - this.updateTaskStatus(taskObj,"2"); - else { - throw new BadRequestException("未找到该任务或者任务已完成!"); - } + if (ObjectUtil.isEmpty(taskObj))throw new BadRequestException("未找到该任务或者任务已完成!"); + this.updateTaskStatus(taskObj, UpdateTaskStatusEnum.FORCEFINISH.getCode()); } /** @@ -285,10 +298,7 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask { public void cancel(String task_id) { WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0); - if (ObjectUtil.isNotEmpty(taskObj)) - this.updateTaskStatus(taskObj,"0"); - else { - throw new BadRequestException("未找到该任务或者任务已完成!"); - } + if (ObjectUtil.isEmpty(taskObj))throw new BadRequestException("未找到该任务或者任务已完成!"); + this.updateTaskStatus(taskObj, UpdateTaskStatusEnum.CANCEL.getCode()); } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/wql/QSCH_fjCallEmptyVehicle_01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/wql/QSCH_fjCallEmptyVehicle_01.wql index 5c66b1f..47bc055 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/wql/QSCH_fjCallEmptyVehicle_01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/wql/QSCH_fjCallEmptyVehicle_01.wql @@ -52,13 +52,13 @@ lock_type = '1' AND is_used = '1' AND is_delete = '0' - AND is_full = '2' + AND is_full = '0' AND point_status = '3' AND point_type = '1' OPTION 输入.region_code <> "" p.region_code = 输入.region_code ENDOPTION - ORDER BY col_num,row_num,layer_num + ORDER BY instorage_time desc ENDSELECT ENDQUERY ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/FjCallMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/FjCallMaterialTask.java index f4dad83..6c5b21e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/FjCallMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/FjCallMaterialTask.java @@ -14,9 +14,9 @@ import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.sch.SchTaskDto; -import org.nl.wms.sch.manage.AbstractAcsTask; -import org.nl.wms.sch.manage.TaskStatusEnum; +import org.nl.wms.sch.manage.*; import org.nl.wms.sch.tasks.AcsTaskDto; +import org.nl.wms.sch.tasks.PointUpdateUtil; import org.nl.wms.util.IdUtil; import org.springframework.stereotype.Service; @@ -82,7 +82,7 @@ public class FjCallMaterialTask extends AbstractAcsTask { // 物料点 JSONObject material_point = pointTab.query("point_code = '" + taskObj.getString("point_code1") + "'").uniqueResult(0); //任务取消 - if (StrUtil.equals(status, "0")) { + if (StrUtil.equals(status, UpdateTaskStatusEnum.CANCEL.getCode())) { // 取消删除任务 if (StrUtil.equals(taskObj.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) { throw new BadRequestException("已完成不能取消!"); @@ -93,12 +93,12 @@ public class FjCallMaterialTask extends AbstractAcsTask { if (ObjectUtil.isNotEmpty(material_point)) { // 点位解锁 - material_point.put("lock_type", "1"); + material_point.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode()); pointTab.update(material_point); } } - if ("1".equals(status)) { + if (UpdateTaskStatusEnum.EXECUTION.getCode().equals(status)) { // 更新任务状态为执行中 taskObj.put("task_status", TaskStatusEnum.EXECUTING.getCode()); taskObj.put("update_time", DateUtil.now()); @@ -106,7 +106,7 @@ public class FjCallMaterialTask extends AbstractAcsTask { taskTab.update(taskObj); } - if (StrUtil.equals(status, "2")) { + if (StrUtil.equals(status, UpdateTaskStatusEnum.FORCEFINISH.getCode())) { // 更改任务状态为完成 taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode()); taskObj.put("update_time", DateUtil.now()); @@ -120,37 +120,28 @@ public class FjCallMaterialTask extends AbstractAcsTask { regionIoObj.put("iostorinv_id", IdUtil.getLongId()); regionIoObj.put("bill_code", CodeUtil.getNewCode("IN_STORE_CODE")); regionIoObj.put("buss_date", DateUtil.today()); - regionIoObj.put("io_type", "2"); // 出库 + regionIoObj.put("io_type", RegionIOEnum.IO_TYPE_OUT.getCode()); // 出库 regionIoObj.put("region_id", material_point.getString("region_id")); regionIoObj.put("region_code", material_point.getString("region_code")); regionIoObj.put("region_name", material_point.getString("region_name")); regionIoObj.put("material_id", taskObj.getString("material_id")); regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code")); regionIoObj.put("qty", requestObj.getString("qty")); - regionIoObj.put("bill_status", "3"); + regionIoObj.put("weight_unit_id", RegionIOEnum.UNIT_ID_B.getCode()); + regionIoObj.put("bill_status", RegionIOEnum.BILL_STATUS_FINISH.getCode()); regionIoObj.put("start_point_code", taskObj.getString("point_code1")); regionIoObj.put("end_point_code", taskObj.getString("point_code2")); - regionIoObj.put("create_mode", "2"); + regionIoObj.put("create_mode", RegionIOEnum.CREATE_MODE_ACS.getCode()); regionIoObj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd")); regionIoObj.put("create_id", SecurityUtils.getCurrentUserId()); regionIoObj.put("create_name", SecurityUtils.getCurrentNickName()); regionIoObj.put("create_time", DateUtil.now()); + regionIoObj.put("task_id", taskObj.getString("task_id")); regionIoTab.insert(regionIoObj); //完成后 // 物料点位解锁 并设置空位 - material_point.put("lock_type", "1"); - material_point.put("point_status", "1"); - material_point.put("task_id", ""); - material_point.put("pcsn", ""); - material_point.put("ivt_qty", "0"); - material_point.put("material_id", ""); - material_point.put("instorage_time", ""); - material_point.put("is_full", "2"); - material_point.put("standing_time", "0"); - material_point.put("vehicle_type", ""); - material_point.put("vehicle_code", ""); - pointTab.update(material_point); + PointUpdateUtil.clearPoint(material_point.getString("point_code")); } } @@ -161,16 +152,14 @@ public class FjCallMaterialTask extends AbstractAcsTask { @Override public String createTask(JSONObject form) { String point_code2 = form.getString("point_code2"); - String vehicle_type = form.getString("vehicle_type"); - String vehicle_code = form.getString("vehicle_code"); - String qty = form.getString("material_num"); + String qty = form.getString("qty"); //生产工单表【PDM_BD_WorkOrder】 WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder"); //任务表【SCH_BASE_Task】 WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); //判断当前点是否有未完成的任务 - JSONObject taskObj = taskTab.query("is_delete='0' and point_code2 = '" + point_code2 + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0); + JSONObject taskObj = taskTab.query("is_delete = '0' and point_code2 = '" + point_code2 + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0); if (ObjectUtil.isNotEmpty(taskObj)) throw new BadRequestException("当前点位" + point_code2 + "存在未完成的任务"); //点位基础表【SCH_BASE_Point】 WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point"); @@ -186,10 +175,9 @@ public class FjCallMaterialTask extends AbstractAcsTask { .material_qty(qty) .task_status(TaskStatusEnum.SURE_END.getCode()) .point_code2(point_code2) - .vehicle_code(vehicle_code) .workorder_id(workOrderObj.getLong("workorder_id")) .material_id(workOrderObj.getLong("material_id")) - .vehicle_type(vehicle_type) + .vehicle_type(PointEnum.VEHICLE_TYPE_STEEL_TRAY.getCode()) .handle_class(THIS_CLASS) .create_time(DateUtil.now()) .request_param(form.toJSONString()) @@ -213,16 +201,15 @@ public class FjCallMaterialTask extends AbstractAcsTask { // 到出窑缓存区找一托物料 WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表 WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); // 点位表 + WQLObject groupTab = WQLObject.getWQLObject("st_buss_vehiclegroup"); // 组盘表 JSONArray taskArr = taskTab.query("handle_class = '" + THIS_CLASS + "'and is_delete = '0' and task_status = '" + TaskStatusEnum.SURE_END.getCode() + "'").getResultJSONArray(0); for (int i = 0; i < taskArr.size(); i++) { JSONObject taskObj = taskArr.getJSONObject(i); String material_id = taskObj.getString("material_id"); - String vehicle_type = taskObj.getString("vehicle_type"); JSONObject queryParam = new JSONObject(); queryParam.put("flag", "1"); queryParam.put("material_id", material_id); queryParam.put("region_code", "CYZCQ"); - queryParam.put("vehicle_type", "%" + vehicle_type + "%"); // 到出窑暂存区找 JSONObject json1 = WQL.getWO("QSCH_cyCallMaterial_01").addParamMap(queryParam).process().uniqueResult(0); if (ObjectUtil.isNotEmpty(json1)) { @@ -230,12 +217,16 @@ public class FjCallMaterialTask extends AbstractAcsTask { JSONObject material_point = pointTab.query("point_id = '" + json1.getString("point_id") + "' and lock_type = '1'").uniqueResult(0); if (ObjectUtil.isEmpty(material_point)) throw new BadRequestException("数据错误,请校验!"); // 物料点位上锁 - material_point.put("lock_type", "2"); + material_point.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode()); + material_point.put("task_id", taskObj.getString("task_id")); pointTab.update(material_point); + // 将组盘标识赋给任务 + taskObj.put("group_id", material_point.getString("group_id")); + JSONObject object = groupTab.query("group_id = '" + material_point.getString("group_id") + "'").uniqueResult(0); + taskObj.put("vehicle_code", object.getString("vehicle_code")); taskObj.put("point_code1", material_point.getString("point_code")); taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); - taskObj.put("acs_task_type", "2"); taskObj.put("update_time", DateUtil.now()); taskTab.update(taskObj); } else { @@ -256,7 +247,10 @@ public class FjCallMaterialTask extends AbstractAcsTask { */ @Override public void forceFinish(String task_id) { - + WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); + JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0); + if (ObjectUtil.isEmpty(taskObj))throw new BadRequestException("未找到该任务或者任务已完成!"); + this.updateTaskStatus(taskObj, UpdateTaskStatusEnum.FORCEFINISH.getCode()); } /** @@ -266,6 +260,12 @@ public class FjCallMaterialTask extends AbstractAcsTask { */ @Override public void cancel(String task_id) { - + WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); + JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0); + if (ObjectUtil.isNotEmpty(taskObj)) + this.updateTaskStatus(taskObj,UpdateTaskStatusEnum.CANCEL.getCode()); + else { + throw new BadRequestException("未找到该任务或者任务已完成!"); + } } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/YzjCallMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/YzjCallMaterialTask.java index f3cdb1a..8d461a9 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/YzjCallMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/YzjCallMaterialTask.java @@ -126,6 +126,8 @@ public class YzjCallMaterialTask extends AbstractAcsTask { regionIoObj.put("material_id", taskObj.getString("material_id")); regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code")); regionIoObj.put("qty", requestObj.getString("qty")); + regionIoObj.put("ivt_weight", requestObj.getString("weight")); + regionIoObj.put("weight_unit_id", RegionIOEnum.UNIT_ID_T.getCode()); regionIoObj.put("bill_status", RegionIOEnum.BILL_STATUS_FINISH.getCode()); regionIoObj.put("start_point_code", taskObj.getString("point_code1")); regionIoObj.put("end_point_code", taskObj.getString("point_code2")); @@ -150,7 +152,7 @@ public class YzjCallMaterialTask extends AbstractAcsTask { String point_code2 = form.getString("point_code2"); String vehicle_type = form.getString("vehicle_type"); String vehicle_code = form.getString("vehicle_code"); - String qty = form.getString("material_num"); + String qty = form.getString("qty"); //生产工单表【PDM_BD_WorkOrder】 WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder"); @@ -271,11 +273,8 @@ public class YzjCallMaterialTask extends AbstractAcsTask { public void forceFinish(String task_id) { WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0); - if (ObjectUtil.isNotEmpty(taskObj)) - this.updateTaskStatus(taskObj,"2"); - else { - throw new BadRequestException("未找到该任务或者任务已完成!"); - } + if (ObjectUtil.isEmpty(taskObj))throw new BadRequestException("未找到该任务或者任务已完成!"); + this.updateTaskStatus(taskObj, UpdateTaskStatusEnum.FORCEFINISH.getCode()); } /** diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/wql/QSCH_cyCallMaterial_01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/wql/QSCH_cyCallMaterial_01.wql index 3ea0e4d..674b0d4 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/wql/QSCH_cyCallMaterial_01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/wql/QSCH_cyCallMaterial_01.wql @@ -62,10 +62,7 @@ OPTION 输入.region_code <> "" p.region_code = 输入.region_code ENDOPTION - OPTION 输入.vehicle_type <> "" - p.can_vehicle_type like 输入.vehicle_type - ENDOPTION - ORDER BY col_num,row_num,layer_num + ORDER BY instorage_time ENDSELECT ENDQUERY ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/DpSendEmpVehicleTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/DpSendEmpVehicleTask.java index e25b657..a1e1202 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/DpSendEmpVehicleTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/DpSendEmpVehicleTask.java @@ -15,9 +15,11 @@ import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.sch.SchTaskDto; import org.nl.wms.sch.manage.AbstractAcsTask; +import org.nl.wms.sch.manage.PointEnum; import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.sch.manage.UpdateTaskStatusEnum; import org.nl.wms.sch.tasks.AcsTaskDto; +import org.nl.wms.sch.tasks.PointUpdateUtil; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -109,7 +111,7 @@ public class DpSendEmpVehicleTask extends AbstractAcsTask { pointTab.update(point_2); // 起点设置为空位 JSONObject point_1 = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0); - point_1.put("point_status", "1"); + point_1.put("point_status", PointEnum.POINT_STATUS_EMPTY_POSITION.getCode()); pointTab.update(point_1); } } @@ -126,15 +128,17 @@ public class DpSendEmpVehicleTask extends AbstractAcsTask { WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表 String point_code1 = form.getString("point_code1"); + //判断当前点是否有未完成的任务 + JSONObject taskObj = taskTab.query("is_delete='0' and point_code1 = '" + point_code1 + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(taskObj)) throw new BadRequestException("当前点位" + point_code1 + "存在未完成的任务"); SchTaskDto dto = SchTaskDto.builder().task_id(org.nl.wms.util.IdUtil.getLongId()) .task_code(CodeUtil.getNewCode("TASK_CODE")) .task_type("") - .task_name("叠盘空钢托盘入库") + .task_name("空钢托叠盘区->空钢托拆盘区") .task_status(TaskStatusEnum.SURE_START.getCode()) .point_code1(point_code1) - .vehicle_code(form.getString("vehicle_code")) - .vehicle_type(form.getString("vehicle_type")) + .vehicle_type(PointEnum.VEHICLE_TYPE_STEEL_TRAY.getCode()) .vehicle_qty(form.getIntValue("qty")) .handle_class(THIS_CLASS) .create_time(DateUtil.now()) @@ -160,8 +164,15 @@ public class DpSendEmpVehicleTask extends AbstractAcsTask { JSONArray taskArr = taskTab.query("handle_class = '" + THIS_CLASS + "'and is_delete = '0' and task_status = '2'").getResultJSONArray(0); for (int i = 0; i < taskArr.size(); i++) { JSONObject taskObj = taskArr.getJSONObject(i); + // 请求acs查看堆叠位是否可以搬运,修改对应点的点位 + JSONArray params = new JSONArray(); + JSONObject param = new JSONObject(); + param.put("device_code", "KGTDDW01"); + params.add(param); + PointUpdateUtil.updatePoint(params); // 直接找 - JSONObject endPoint = pointTab.query("point_code = 'KGTDDW01' AND lock_type = '1' AND is_used='1'").uniqueResult(0); + JSONObject endPoint = pointTab.query("point_code = 'KGTDDW01' AND lock_type = '1' AND is_used = '1' AND is_delete = '0'").uniqueResult(0); + if (ObjectUtil.isEmpty(endPoint)) { taskObj.put("remark", "钢托盘堆叠位不可用!"); taskObj.put("task_status", TaskStatusEnum.SURE_START.getCode()); @@ -175,7 +186,7 @@ public class DpSendEmpVehicleTask extends AbstractAcsTask { //锁住终点 endPoint.put("task_id", taskObj.getString("task_id")); - endPoint.put("lock_type", "2"); + endPoint.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode()); pointTab.update(endPoint); } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/FjSendEmpVehicleTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/FjSendEmpVehicleTask.java index e09e1ea..505d64c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/FjSendEmpVehicleTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/FjSendEmpVehicleTask.java @@ -16,7 +16,9 @@ import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.sch.SchTaskDto; import org.nl.wms.sch.manage.AbstractAcsTask; +import org.nl.wms.sch.manage.PointEnum; import org.nl.wms.sch.manage.TaskStatusEnum; +import org.nl.wms.sch.manage.UpdateTaskStatusEnum; import org.nl.wms.sch.tasks.AcsTaskDto; import org.springframework.stereotype.Service; @@ -59,7 +61,7 @@ public class FjSendEmpVehicleTask extends AbstractAcsTask { String point_code2 = taskObj.getString("point_code2"); JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); - if (StrUtil.equals(status, "0")) { + if (StrUtil.equals(status, UpdateTaskStatusEnum.CANCEL.getCode())) { // 取消删除任务 if (StrUtil.equals(jsonTask.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) { throw new BadRequestException("已完成不能取消!"); @@ -67,7 +69,7 @@ public class FjSendEmpVehicleTask extends AbstractAcsTask { // 解锁终点位置 if (ObjectUtil.isNotEmpty(point_code2)) { // 未找到终点的取消只需要完成任务就行 JSONObject point2 = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); - point2.put("lock_type", "1"); + point2.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode()); pointTab.update(point2); } // 任务设置为完成 @@ -76,7 +78,7 @@ public class FjSendEmpVehicleTask extends AbstractAcsTask { taskTab.update(jsonTask); } - if ("1".equals(status)) { + if (UpdateTaskStatusEnum.EXECUTION.getCode().equals(status)) { // 更新任务状态为执行中 jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); jsonTask.put("update_time", DateUtil.now()); @@ -84,7 +86,7 @@ public class FjSendEmpVehicleTask extends AbstractAcsTask { taskTab.update(jsonTask); } - if (StrUtil.equals(status, "2")) { + if (StrUtil.equals(status, UpdateTaskStatusEnum.FORCEFINISH.getCode())) { // 更改任务状态为完成 jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode()); jsonTask.put("update_optid", SecurityUtils.getCurrentUserId()); @@ -94,16 +96,8 @@ public class FjSendEmpVehicleTask extends AbstractAcsTask { // 释放点位 if (ObjectUtil.isNotEmpty(point_code2)) { // 防止只有确定起点的任务完成 JSONObject point_2 = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); - point_2.put("lock_type", "1"); - point_2.put("point_status", "2"); - point_2.put("vehicle_code", jsonTask.getString("vehicle_code")); + point_2.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode()); point_2.put("vehicle_qty", NumberUtil.add(point_2.getString("vehicle_qty"), jsonTask.getString("vehicle_qty"))); - point_2.put("instorage_time", DateUtil.now()); - point_2.put("is_full", "1"); - point_2.put("ivt_qty", "0"); - point_2.put("pcsn", ""); - point_2.put("material_id", ""); - point_2.put("standing_time", "0"); pointTab.update(point_2); } } @@ -119,16 +113,19 @@ public class FjSendEmpVehicleTask extends AbstractAcsTask { WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表 String point_code1 = form.getString("point_code1"); + //判断当前点是否有未完成的任务 + JSONObject taskObj = taskTab.query("is_delete = '0' and point_code2 = '" + point_code1 + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(taskObj)) throw new BadRequestException("当前点位" + point_code1 + "存在未完成的任务"); SchTaskDto dto = SchTaskDto.builder().task_id(org.nl.wms.util.IdUtil.getLongId()) .task_code(CodeUtil.getNewCode("TASK_CODE")) .task_type("") - .task_name("分拣空钢托盘入库") + .task_name("分拣送空钢托盘") .task_status(TaskStatusEnum.SURE_START.getCode()) .point_code1(point_code1) .vehicle_code(form.getString("vehicle_code")) .vehicle_type(form.getString("vehicle_type")) - .vehicle_qty(form.getIntValue("qty")) + .vehicle_qty(1) .handle_class(THIS_CLASS) .create_time(DateUtil.now()) .build(); @@ -153,7 +150,7 @@ public class FjSendEmpVehicleTask extends AbstractAcsTask { for (int i = 0; i < taskArr.size(); i++) { JSONObject taskObj = taskArr.getJSONObject(i); // 直接找 - JSONObject endPoint = pointTab.query("point_code = 'KGTDTW01' AND lock_type = '1' AND is_used='1'").uniqueResult(0); + JSONObject endPoint = pointTab.query("point_code = 'KGTDTW01' AND lock_type = '1'").uniqueResult(0); if (ObjectUtil.isEmpty(endPoint)) { taskObj.put("remark", "钢托盘叠托位不可用!"); taskObj.put("task_status", TaskStatusEnum.SURE_START.getCode()); @@ -167,7 +164,7 @@ public class FjSendEmpVehicleTask extends AbstractAcsTask { //锁住终点 endPoint.put("task_id", taskObj.getString("task_id")); - endPoint.put("lock_type", "2"); + endPoint.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode()); pointTab.update(endPoint); } } @@ -182,7 +179,10 @@ public class FjSendEmpVehicleTask extends AbstractAcsTask { */ @Override public void forceFinish(String task_id) { - + WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); + JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0); + if (ObjectUtil.isEmpty(taskObj))throw new BadRequestException("未找到该任务或者任务已完成!"); + this.updateTaskStatus(taskObj, UpdateTaskStatusEnum.FORCEFINISH.getCode()); } /** @@ -192,6 +192,9 @@ public class FjSendEmpVehicleTask extends AbstractAcsTask { */ @Override public void cancel(String task_id) { - + WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); + JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0); + if (ObjectUtil.isEmpty(taskObj))throw new BadRequestException("未找到该任务或者任务已完成!"); + this.updateTaskStatus(taskObj,UpdateTaskStatusEnum.CANCEL.getCode()); } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/YzjSendEmpVehicleTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/YzjSendEmpVehicleTask.java index f3c39eb..6e61fe7 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/YzjSendEmpVehicleTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/YzjSendEmpVehicleTask.java @@ -210,16 +210,10 @@ public class YzjSendEmpVehicleTask extends AbstractAcsTask { */ @Override public void forceFinish(String task_id) { - /* - * 强制完成 - */ WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0); - if (ObjectUtil.isNotEmpty(taskObj)) - this.updateTaskStatus(taskObj,UpdateTaskStatusEnum.FORCEFINISH.getCode()); - else { - throw new BadRequestException("未找到该任务或者任务已完成!"); - } + if (ObjectUtil.isEmpty(taskObj))throw new BadRequestException("未找到该任务或者任务已完成!"); + this.updateTaskStatus(taskObj, UpdateTaskStatusEnum.FORCEFINISH.getCode()); } /** diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/FjSendMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/FjSendMaterialTask.java index dbfc267..305a1cd 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/FjSendMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/FjSendMaterialTask.java @@ -13,14 +13,17 @@ import org.nl.modules.common.utils.SecurityUtils; import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.sch.SchTaskDto; -import org.nl.wms.sch.manage.AbstractAcsTask; -import org.nl.wms.sch.manage.TaskStatusEnum; +import org.nl.wms.sch.manage.*; import org.nl.wms.sch.tasks.AcsTaskDto; +import org.nl.wms.sch.tasks.PointUpdateUtil; import org.nl.wms.sch.tasks.sendEmpty.FjSendEmpVehicleTask; import org.nl.wms.util.IdUtil; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; /** @@ -33,6 +36,8 @@ import java.util.List; @Slf4j public class FjSendMaterialTask extends AbstractAcsTask { private final String THIS_CLASS = FjSendEmpVehicleTask.class.getName(); + + private final WmsToAcsService wmsToAcsService; /** * 添加任务进行下发 * @@ -40,11 +45,32 @@ public class FjSendMaterialTask extends AbstractAcsTask { */ @Override public List addTask() { - return null; + /* + * 下发给ACS时需要特殊处理 + */ + JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0); + + ArrayList acsTaskArr = new ArrayList<>(); + for (int i = 0; i < arr.size(); i++) { // 任务 + JSONObject json = arr.getJSONObject(i); + AcsTaskDto dto = AcsTaskDto.builder() + .task_id(json.getString("task_id")) + .task_code(json.getString("task_code")) + .task_type(json.getString("acs_task_type")) + .start_device_code(json.getString("point_code1")) + .next_device_code(json.getString("point_code2")) + .vehicle_code(json.getString("vehicle_code")) + .vehicle_type(json.getString("vehicle_type")) + .priority(json.getString("priority")) + .remark(json.getString("remark")) + .build(); + acsTaskArr.add(dto); + } + return acsTaskArr; } /** - * @param taskObj 代表一条任务对象 + * @param task 代表一条任务对象 * @param status 代表wcs任务完成状态: //0:acs,取消,:执行中,2:完成 * @return * @discription wcs请求wms任务完成状态反馈接口, 比如agv从a点往b点走。生成任务的时候绑定b的物料信息,任务完成的时候,清除a的物料信息 @@ -52,23 +78,26 @@ public class FjSendMaterialTask extends AbstractAcsTask { * @created 2019年4月17日 下午8:51:50 */ @Override + @Transactional(rollbackFor = Exception.class) public void updateTaskStatus(JSONObject task, String status) { WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder"); + WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO"); String task_id = task.getString("task_id"); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); //任务取消 - if (StrUtil.equals(status, "0")) { + if (StrUtil.equals(status, UpdateTaskStatusEnum.CANCEL.getCode())) { // 取消删除任务 if (StrUtil.equals(taskObj.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) { throw new BadRequestException("已完成不能取消!"); } String point_code2 = taskObj.getString("point_code2"); - if (ObjectUtil.isEmpty(point_code2)) { + if (ObjectUtil.isNotEmpty(point_code2)) { JSONObject endPoint = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); - endPoint.put("lock_type", "1"); + endPoint.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode()); pointTab.update(endPoint); } taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode()); @@ -76,7 +105,7 @@ public class FjSendMaterialTask extends AbstractAcsTask { taskTab.update(taskObj); } - if ("1".equals(status)) { + if (UpdateTaskStatusEnum.EXECUTION.getCode().equals(status)) { // 更新任务状态为执行中 taskObj.put("task_status", TaskStatusEnum.EXECUTING.getCode()); taskObj.put("update_time", DateUtil.now()); @@ -84,7 +113,11 @@ public class FjSendMaterialTask extends AbstractAcsTask { taskTab.update(taskObj); } - if (StrUtil.equals(status, "2")) { + if (StrUtil.equals(status, UpdateTaskStatusEnum.FORCEFINISH.getCode())) { + /** + * 任务完成: + * 取木托盘完成,送物料完成 + */ // 更改任务状态为完成 taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode()); taskObj.put("update_optid", SecurityUtils.getCurrentUserId()); @@ -92,52 +125,95 @@ public class FjSendMaterialTask extends AbstractAcsTask { taskObj.put("update_time", DateUtil.now()); taskTab.update(taskObj); + String point_code1 = taskObj.getString("point_code1"); String point_code2 = taskObj.getString("point_code2"); + JSONObject point1Obj = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0); JSONObject point2Obj = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); JSONObject requestObj = task.getJSONObject("request_param"); //工单标识 - String workorder_id = requestObj.getString("workorder_id"); - //生产工单表【PDM_BD_WorkOrder】 - WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder"); - JSONObject workorderObj = workOrderTab.query("workorder_id", workorder_id).uniqueResult(0); - - if (!point_code2.equals("BZX01")) { // 半满到包装暂存区,记录库存 - //区域出入表【st_ivt_regionIO】 - WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO"); + String workorder_id = taskObj.getString("workorder_id"); + JSONObject workorderObj = workOrderTab.query("workorder_id = '" + workorder_id + "'").uniqueResult(0); + String sort_seq = taskObj.getString("sort_seq"); + if (sort_seq.equals("1")) { // 取空托盘任务 + // 避免没有找到位置 + if (ObjectUtil.isEmpty(point1Obj)) return; + // 需要判断取的是否为半满或者是控盘 + // 半托 + if (point1Obj.getString("region_code").equals(RegionEnum.BZZCQ.getCode())) { + // 物料出库 + // 插入出库单 + JSONObject regionIoObj = new JSONObject(); + regionIoObj.put("iostorinv_id", IdUtil.getLongId()); + regionIoObj.put("bill_code", CodeUtil.getNewCode("IN_STORE_CODE")); + regionIoObj.put("buss_date", DateUtil.today()); + regionIoObj.put("io_type", RegionIOEnum.IO_TYPE_OUT.getCode()); // 出库 + regionIoObj.put("region_id", point1Obj.getString("region_id")); + regionIoObj.put("region_code", point1Obj.getString("region_code")); + regionIoObj.put("region_name", point1Obj.getString("region_name")); + regionIoObj.put("material_id", taskObj.getString("material_id")); + regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code")); + regionIoObj.put("qty", requestObj.getString("qty")); + regionIoObj.put("weight_unit_id", RegionIOEnum.UNIT_ID_B.getCode()); + regionIoObj.put("bill_status", RegionIOEnum.BILL_STATUS_FINISH.getCode()); + regionIoObj.put("start_point_code", taskObj.getString("point_code1")); + regionIoObj.put("end_point_code", taskObj.getString("point_code2")); + regionIoObj.put("create_mode", RegionIOEnum.CREATE_MODE_ACS.getCode()); + regionIoObj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd")); + regionIoObj.put("create_id", SecurityUtils.getCurrentUserId()); + regionIoObj.put("create_name", SecurityUtils.getCurrentNickName()); + regionIoObj.put("create_time", DateUtil.now()); + regionIoTab.insert(regionIoObj); + // 点位更新,起点:空位,解锁; + PointUpdateUtil.clearPoint(point1Obj.getString("point_code")); + // 终点:码垛对接位,将半托的组盘id放进去 + point2Obj.put("group_id", taskObj.getString("group_id")); + pointTab.update(point2Obj); + } + // 起点解锁 + point1Obj.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode()); + pointTab.update(point1Obj); + } + if (sort_seq.equals("2")) { // 送物料任务 + // 避免没有找到位置 + if (ObjectUtil.isEmpty(point2Obj)) return; JSONObject regionIoObj = new JSONObject(); regionIoObj.put("iostorinv_id", IdUtil.getLongId()); regionIoObj.put("bill_code", CodeUtil.getNewCode("IN_STORE_CODE")); regionIoObj.put("buss_date", DateUtil.today()); - regionIoObj.put("io_type", "1"); + regionIoObj.put("io_type", RegionIOEnum.IO_TYPE_IN.getCode()); regionIoObj.put("region_id", point2Obj.getString("region_id")); regionIoObj.put("region_code", point2Obj.getString("region_code")); regionIoObj.put("region_name", point2Obj.getString("region_name")); regionIoObj.put("material_id", taskObj.getString("material_id")); regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code")); regionIoObj.put("qty", requestObj.getString("qty")); - regionIoObj.put("bill_status", "3"); + regionIoObj.put("weight_unit_id", RegionIOEnum.UNIT_ID_B.getCode()); + regionIoObj.put("bill_status", RegionIOEnum.BILL_STATUS_FINISH.getCode()); regionIoObj.put("start_point_code", taskObj.getString("point_code1")); regionIoObj.put("end_point_code", taskObj.getString("point_code3")); - regionIoObj.put("create_mode", "2"); + regionIoObj.put("create_mode", RegionIOEnum.CREATE_MODE_ACS.getCode()); regionIoObj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd")); regionIoObj.put("create_id", SecurityUtils.getCurrentUserId()); regionIoObj.put("create_name", SecurityUtils.getCurrentNickName()); regionIoObj.put("create_time", DateUtil.now()); regionIoTab.insert(regionIoObj); - //完成后入库 - point2Obj.put("instorage_time", DateUtil.now()); - point2Obj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd")); - point2Obj.put("ivt_qty", requestObj.getString("qty")); - point2Obj.put("standing_time", workorderObj.getString("standing_time")); - point2Obj.put("material_id", workorderObj.getString("material_id")); - point2Obj.put("vehicle_type", workorderObj.getString("vehicle_type")); - point2Obj.put("vehicle_code", taskObj.getString("vehicle_code")); - point2Obj.put("is_full", requestObj.getString("is_full")); - point2Obj.put("point_status", "3"); + if (!point_code2.equals("BZX01")) { // 半满到包装暂存区,记录库存 + //完成后入库 + point2Obj.put("instorage_time", DateUtil.now()); + point2Obj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd")); + point2Obj.put("ivt_qty", requestObj.getString("qty")); + point2Obj.put("standing_time", workorderObj.getString("standing_time")); + point2Obj.put("material_id", workorderObj.getString("material_id")); + point2Obj.put("vehicle_type", workorderObj.getString("vehicle_type")); + point2Obj.put("vehicle_code", taskObj.getString("vehicle_code")); + point2Obj.put("group_id", taskObj.getString("group_id")); // 组盘标识 + point2Obj.put("is_full", requestObj.getString("is_full")); + point2Obj.put("point_status", PointEnum.POINT_STATUS_HAVE_MATERIAL.getCode()); + } + // 终点解锁 + point2Obj.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode()); + pointTab.update(point2Obj); } - // 终点解锁 - point2Obj.put("lock_type", "1"); - pointTab.update(point2Obj); } } @@ -146,6 +222,7 @@ public class FjSendMaterialTask extends AbstractAcsTask { * @return 返回任务标识 */ @Override + @Transactional(rollbackFor = Exception.class) public String createTask(JSONObject form) { String point_code1 = form.getString("point_code1"); String vehicle_code = form.getString("vehicle_code"); @@ -180,8 +257,11 @@ public class FjSendMaterialTask extends AbstractAcsTask { .workorder_id(workOrderObj.getLong("workorder_id")) .material_id(workOrderObj.getLong("material_id")) .handle_class(THIS_CLASS) + .group_id(form.getLong("group_id")) .create_time(DateUtil.now()) .request_param(form.toJSONString()) + .task_group_id(IdUtil.getLongId()) + .sort_seq(2) .build(); JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); taskTab.insert(json); @@ -197,6 +277,7 @@ public class FjSendMaterialTask extends AbstractAcsTask { * @created 2020年6月12日 下午6:01:06 */ @Override + @Transactional(rollbackFor = Exception.class) public void findNextPoint() { // 判断是否满拖:半满->包装暂存区,满->包装线 WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); @@ -207,27 +288,96 @@ public class FjSendMaterialTask extends AbstractAcsTask { JSONObject requestObj = taskObj.getJSONObject("request_param"); if (requestObj.getString("is_full").equals("1")) { JSONObject endPoint = pointTab.query("point_code = 'BZX01' AND lock_type = '1'").uniqueResult(0); - // 满拖就到包装线 + // 满拖先生成叫半托,没有在呼叫空托盘的任务,在执行去到包装线 + SchTaskDto dto = SchTaskDto.builder() + .task_id(IdUtil.getLongId()) + .task_code(CodeUtil.getNewCode("TASK_CODE")) + .task_type("task_type") + .task_name("分拣呼叫空托盘") + .vehicle_type(taskObj.getString("vehicle_type")) // 与满拖的类型一致,因为工单未结束 + .material_qty(taskObj.getString("material_qty")) + .task_status(TaskStatusEnum.SURE_END.getCode()) + .point_code2(taskObj.getString("point_code2")) + .handle_class(THIS_CLASS) + .create_time(DateUtil.now()) + .sort_seq(1) + .task_group_id(taskObj.getLong("task_group_id")) + .build(); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + taskTab.insert(json); + // 先呼叫半托 + JSONObject halfTray = pointTab.query("region_code = 'BZZCQ' AND lock_type = '1' " + + "AND point_status = '2' AND is_used = '1' AND is_delete = '0'").uniqueResult(0); + // 获取任务 + JSONObject taskEnt = taskTab.query("task_id = '" + dto.getTask_id() + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(halfTray)) { // 半托 + // 去搬运 + taskEnt.put("point_code1", halfTray.getString("point_code")); + taskEnt.put("update_time", DateUtil.now()); + taskEnt.put("group_id", halfTray.getString("group_id")); // 半托要把组盘标识记录起来 + taskEnt.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); + taskTab.update(taskEnt); + // 更新半托点位状态 + halfTray.put("task_id", taskObj.getString("task_id")); + halfTray.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode()); + pointTab.update(halfTray); + } else { + // 没有半托呼叫空木托盘 + // 获取所有的托盘堆叠位 + JSONArray pointCodes = WQL.getWO("QSCH_fjSendMaterial_01").addParam("flag", "2").process().getResultJSONArray(0); + // 更新点位 + PointUpdateUtil.updatePoint(pointCodes); + // 找到载具类型符合的覆膜机位置:真正的位置在device_code + JSONObject emptyTray = pointTab.query("region_code = 'RGCPQ' AND vehicle_type = '" + + taskObj.getString("vehicle_type") + "' AND point_status = '2' " + + "AND is_used = '1' AND is_delete = '0' AND lock_type = '1'").uniqueResult(0); + + if (ObjectUtil.isNotEmpty(emptyTray)) { + // 向ACS申请传送一个空木托盘 + JSONArray jsonArray = new JSONArray(); + JSONObject data = new JSONObject(); + data.put("device_code", emptyTray.getString("point_code")); + jsonArray.add(data); + wmsToAcsService.getTray(jsonArray); + // 去搬运 + taskEnt.put("point_code1", emptyTray.getString("device_code")); + taskEnt.put("update_time", DateUtil.now()); + taskEnt.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); + taskTab.update(taskEnt); + // 更新空托盘点位状态 + emptyTray.put("task_id", taskObj.getString("task_id")); + emptyTray.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode()); + pointTab.update(emptyTray); + } else { + taskEnt.put("remark", "暂无空托盘"); + taskEnt.put("update_time", DateUtil.now()); + taskTab.update(taskEnt); + // 满拖搬运也不下发 + taskObj.put("remark", "暂无空托盘"); + taskObj.put("update_time", DateUtil.now()); + taskTab.update(taskObj); + return; + } + } + // 更新送料任务信息 taskObj.put("update_time", DateUtil.now()); taskObj.put("point_code2", endPoint.getString("point_code")); taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); taskTab.update(taskObj); - //锁住终点 + //锁住送料任务终点 endPoint.put("task_id", taskObj.getString("task_id")); - endPoint.put("lock_type", "2"); + endPoint.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode()); pointTab.update(endPoint); } else { // 半满拖就去包装暂存区 - String vehicle_type = taskObj.getString("vehicle_type"); JSONObject param1 = new JSONObject(); param1.put("flag", "1"); param1.put("region_code", "BZZCQ"); - param1.put("vehicle_type", "%" + vehicle_type + "%"); //1、查找困料货架是否有响应的载具类型和对应的物料 - JSONObject endPoint = WQL.getWO("QSCH_fjCallEmptyVehicle_01").addParamMap(param1).process().uniqueResult(0); + JSONObject endPoint = WQL.getWO("QSCH_fjSendMaterial_01").addParamMap(param1).process().uniqueResult(0); if (ObjectUtil.isEmpty(endPoint)) { - taskObj.put("remark", "包装暂存区无可用货位!"); + taskObj.put("remark", "包装暂存区无可用货位"); taskObj.put("update_time", DateUtil.now()); taskTab.update(taskObj); } else { @@ -238,7 +388,7 @@ public class FjSendMaterialTask extends AbstractAcsTask { //锁住终点 endPoint.put("task_id", taskObj.getString("task_id")); - endPoint.put("lock_type", "2"); + endPoint.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode()); pointTab.update(endPoint); } } @@ -256,11 +406,8 @@ public class FjSendMaterialTask extends AbstractAcsTask { public void forceFinish(String task_id) { WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0); - if (ObjectUtil.isNotEmpty(taskObj)) - this.updateTaskStatus(taskObj,"2"); - else { - throw new BadRequestException("未找到该任务或者任务已完成!"); - } + if (ObjectUtil.isEmpty(taskObj))throw new BadRequestException("未找到该任务或者任务已完成!"); + this.updateTaskStatus(taskObj, UpdateTaskStatusEnum.FORCEFINISH.getCode()); } /** @@ -272,10 +419,7 @@ public class FjSendMaterialTask extends AbstractAcsTask { public void cancel(String task_id) { WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0); - if (ObjectUtil.isNotEmpty(taskObj)) - this.updateTaskStatus(taskObj,"0"); - else { - throw new BadRequestException("未找到该任务或者任务已完成!"); - } + if (ObjectUtil.isEmpty(taskObj))throw new BadRequestException("未找到该任务或者任务已完成!"); + this.updateTaskStatus(taskObj, UpdateTaskStatusEnum.CANCEL.getCode()); } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/HnSendMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/HnSendMaterialTask.java index 32d350a..fb6c891 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/HnSendMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/HnSendMaterialTask.java @@ -146,6 +146,7 @@ public class HnSendMaterialTask extends AbstractAcsTask { regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code")); regionIoObj.put("qty", requestObj.getString("qty")); regionIoObj.put("ivt_weight", requestObj.getString("weight")); + regionIoObj.put("weight_unit_id", RegionIOEnum.UNIT_ID_T.getCode()); regionIoObj.put("bill_status", RegionIOEnum.BILL_STATUS_FINISH.getCode()); regionIoObj.put("start_point_code", taskObj.getString("point_code1")); regionIoObj.put("end_point_code", taskObj.getString("point_code2")); @@ -314,16 +315,10 @@ public class HnSendMaterialTask extends AbstractAcsTask { */ @Override public void forceFinish(String task_id) { - /* - * 强制完成 - */ WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0); - if (ObjectUtil.isNotEmpty(taskObj)) - this.updateTaskStatus(taskObj, UpdateTaskStatusEnum.FORCEFINISH.getCode()); - else { - throw new BadRequestException("未找到该任务或者任务已完成!"); - } + if (ObjectUtil.isEmpty(taskObj))throw new BadRequestException("未找到该任务或者任务已完成!"); + this.updateTaskStatus(taskObj, UpdateTaskStatusEnum.FORCEFINISH.getCode()); } /** diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/SzSendMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/SzSendMaterialTask.java index e040b51..0f13ee1 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/SzSendMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/SzSendMaterialTask.java @@ -14,11 +14,11 @@ import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.sch.SchTaskDto; -import org.nl.wms.sch.manage.AbstractAcsTask; -import org.nl.wms.sch.manage.TaskStatusEnum; +import org.nl.wms.sch.manage.*; import org.nl.wms.sch.tasks.AcsTaskDto; import org.nl.wms.util.IdUtil; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; @@ -73,23 +73,25 @@ public class SzSendMaterialTask extends AbstractAcsTask { * @created 2019年4月17日 下午8:51:50 */ @Override + @Transactional(rollbackFor = Exception.class) public void updateTaskStatus(JSONObject task, String status) { WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + WQLObject groupTab = WQLObject.getWQLObject("st_buss_vehiclegroup"); String task_id = task.getString("task_id"); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); //任务取消 - if (StrUtil.equals(status, "0")) { + if (StrUtil.equals(status, UpdateTaskStatusEnum.CANCEL.getCode())) { // 取消删除任务 if (StrUtil.equals(taskObj.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) { throw new BadRequestException("已完成不能取消!"); } String point_code2 = taskObj.getString("point_code2"); - if (ObjectUtil.isEmpty(point_code2)) { + if (ObjectUtil.isNotEmpty(point_code2)) { JSONObject endPoint = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); - endPoint.put("lock_type", "1"); + endPoint.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode()); pointTab.update(endPoint); } taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode()); @@ -97,7 +99,7 @@ public class SzSendMaterialTask extends AbstractAcsTask { taskTab.update(taskObj); } - if ("1".equals(status)) { + if (UpdateTaskStatusEnum.EXECUTION.getCode().equals(status)) { // 更新任务状态为执行中 taskObj.put("task_status", TaskStatusEnum.EXECUTING.getCode()); taskObj.put("update_time", DateUtil.now()); @@ -105,7 +107,8 @@ public class SzSendMaterialTask extends AbstractAcsTask { taskTab.update(taskObj); } - if (StrUtil.equals(status, "2")) { + if (StrUtil.equals(status, UpdateTaskStatusEnum.FORCEFINISH.getCode())) { + String vehicle_code = taskObj.getString("vehicle_code"); // 更改任务状态为完成 taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode()); taskObj.put("update_optid", SecurityUtils.getCurrentUserId()); @@ -114,31 +117,28 @@ public class SzSendMaterialTask extends AbstractAcsTask { taskTab.update(taskObj); String point_code2 = taskObj.getString("point_code2"); + if (ObjectUtil.isEmpty(point_code2)) return; JSONObject point2Obj = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); JSONObject requestObj = task.getJSONObject("request_param"); - //工单标识 - String workorder_id = requestObj.getString("workorder_id"); - //生产工单表【PDM_BD_WorkOrder】 - WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder"); - JSONObject workorderObj = workOrderTab.query("workorder_id", workorder_id).uniqueResult(0); - + JSONObject groupObj = groupTab.query("group_id = '" + taskObj.getString("group_id") + "'").uniqueResult(0); //区域出入表【st_ivt_regionIO】 WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO"); JSONObject regionIoObj = new JSONObject(); regionIoObj.put("iostorinv_id", IdUtil.getLongId()); regionIoObj.put("bill_code", CodeUtil.getNewCode("IN_STORE_CODE")); regionIoObj.put("buss_date", DateUtil.today()); - regionIoObj.put("io_type", "1"); // 入库 + regionIoObj.put("io_type", RegionIOEnum.IO_TYPE_IN.getCode()); // 入库 regionIoObj.put("region_id", point2Obj.getString("region_id")); regionIoObj.put("region_code", point2Obj.getString("region_code")); regionIoObj.put("region_name", point2Obj.getString("region_name")); regionIoObj.put("material_id", taskObj.getString("material_id")); - regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code")); + regionIoObj.put("vehicle_code", vehicle_code); regionIoObj.put("qty", requestObj.getString("qty")); - regionIoObj.put("bill_status", "3"); + regionIoObj.put("weight_unit_id", RegionIOEnum.UNIT_ID_B.getCode()); + regionIoObj.put("bill_status", RegionIOEnum.BILL_STATUS_FINISH.getCode()); regionIoObj.put("start_point_code", taskObj.getString("point_code1")); regionIoObj.put("end_point_code", taskObj.getString("point_code3")); - regionIoObj.put("create_mode", "2"); + regionIoObj.put("create_mode", RegionIOEnum.CREATE_MODE_ACS.getCode()); regionIoObj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd")); regionIoObj.put("create_id", SecurityUtils.getCurrentUserId()); regionIoObj.put("create_name", SecurityUtils.getCurrentNickName()); @@ -149,15 +149,16 @@ public class SzSendMaterialTask extends AbstractAcsTask { point2Obj.put("instorage_time", DateUtil.now()); point2Obj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd")); point2Obj.put("ivt_qty", requestObj.getString("qty")); - point2Obj.put("standing_time", workorderObj.getString("standing_time")); - point2Obj.put("material_id", workorderObj.getString("material_id")); - point2Obj.put("vehicle_type", workorderObj.getString("vehicle_type")); + point2Obj.put("material_id", taskObj.getString("material_id")); + point2Obj.put("vehicle_type", taskObj.getString("vehicle_type")); point2Obj.put("vehicle_code", taskObj.getString("vehicle_code")); - point2Obj.put("is_full", requestObj.getString("is_full")); + point2Obj.put("vehicle_qty", "1"); // 入库为1个载具 + point2Obj.put("is_full", groupObj.getString("is_full")); + point2Obj.put("group_id", groupObj.getString("group_id")); // 终点解锁 - point2Obj.put("lock_type", "1"); - point2Obj.put("point_status", "3"); + point2Obj.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode()); + point2Obj.put("point_status", PointEnum.POINT_STATUS_HAVE_MATERIAL.getCode()); pointTab.update(point2Obj); } } @@ -171,36 +172,28 @@ public class SzSendMaterialTask extends AbstractAcsTask { public String createTask(JSONObject form) { String point_code1 = form.getString("point_code1"); String vehicle_code = form.getString("vehicle_code"); + WQLObject groupTab = WQLObject.getWQLObject("st_buss_vehiclegroup"); String qty = form.getString("qty"); - String is_full = form.getString("is_full"); - String weight = form.getString("weight"); //任务表【SCH_BASE_Task】 WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); //判断当前点是否有未完成的任务 JSONObject taskObj = taskTab.query("is_delete='0' and point_code1 = '" + point_code1 + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0); if (ObjectUtil.isNotEmpty(taskObj)) throw new BadRequestException("当前点位" + point_code1 + "存在未完成的任务"); - //生产工单表【PDM_BD_WorkOrder】 - WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder"); - //点位基础表【SCH_BASE_Point】 - WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point"); - // 压制机设备编码 - String device_code = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0).getString("device_code"); - JSONObject workOrderObj = workOrderTab.query("device_code = '" + device_code + "' and order_status = '3' and is_delete ='0'").uniqueResult(0); - if (ObjectUtil.isEmpty(workOrderObj)) throw new BadRequestException("该设备当前未生产或者已删除"); - + // 获取到组盘 + JSONObject groupObj = groupTab.query("vehicle_code = '" + vehicle_code + "'", "create_time desc").uniqueResult(0); SchTaskDto dto = SchTaskDto.builder() .task_id(IdUtil.getLongId()) .task_code(CodeUtil.getNewCode("TASK_CODE")) .task_type("task_type") .task_name("烧制入库") + .material_id(groupObj.getLong("material_uuid")) + .group_id(groupObj.getLong("group_id")) .material_qty(qty) .task_status(TaskStatusEnum.SURE_START.getCode()) .point_code1(point_code1) .vehicle_code(vehicle_code) - .vehicle_type(workOrderObj.getString("vehicle_type")) - .workorder_id(workOrderObj.getLong("workorder_id")) - .material_id(workOrderObj.getLong("material_id")) + .vehicle_type(PointEnum.VEHICLE_TYPE_STEEL_TRAY.getCode()) .handle_class(THIS_CLASS) .create_time(DateUtil.now()) .request_param(form.toJSONString()) @@ -226,11 +219,9 @@ public class SzSendMaterialTask extends AbstractAcsTask { JSONArray taskArr = taskTab.query("handle_class = '" + THIS_CLASS + "'and is_delete = '0' and task_status = '2'").getResultJSONArray(0); for (int i = 0; i < taskArr.size(); i++) { JSONObject taskObj = taskArr.getJSONObject(i); - String vehicle_type = taskObj.getString("vehicle_type"); JSONObject param1 = new JSONObject(); param1.put("flag", "1"); param1.put("region_code", "CYZCQ"); - param1.put("vehicle_type", "%" + vehicle_type + "%"); //1、查找出窑缓存区的空位 JSONObject endPoint = WQL.getWO("QSCH_szSendMaterial_01").addParamMap(param1).process().uniqueResult(0); if (ObjectUtil.isEmpty(endPoint)) { @@ -245,7 +236,7 @@ public class SzSendMaterialTask extends AbstractAcsTask { //锁住终点 endPoint.put("task_id", taskObj.getString("task_id")); - endPoint.put("lock_type", "2"); + endPoint.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode()); pointTab.update(endPoint); } } @@ -260,16 +251,10 @@ public class SzSendMaterialTask extends AbstractAcsTask { */ @Override public void forceFinish(String task_id) { - /* - * 强制完成 - */ WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0); - if (ObjectUtil.isNotEmpty(taskObj)) - this.updateTaskStatus(taskObj,"2"); - else { - throw new BadRequestException("未找到该任务或者任务已完成!"); - } + if (ObjectUtil.isEmpty(taskObj))throw new BadRequestException("未找到该任务或者任务已完成!"); + this.updateTaskStatus(taskObj, UpdateTaskStatusEnum.FORCEFINISH.getCode()); } /** diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/YzjSendMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/YzjSendMaterialTask.java index d4ba8a7..5ed29a0 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/YzjSendMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/YzjSendMaterialTask.java @@ -136,6 +136,7 @@ public class YzjSendMaterialTask extends AbstractAcsTask { regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code")); regionIoObj.put("qty", requestObj.getString("qty")); regionIoObj.put("ivt_weight", requestObj.getString("weight")); + regionIoObj.put("weight_unit_id", RegionIOEnum.UNIT_ID_B.getCode()); regionIoObj.put("bill_status", RegionIOEnum.BILL_STATUS_FINISH.getCode()); regionIoObj.put("start_point_code", taskObj.getString("point_code1")); regionIoObj.put("end_point_code", taskObj.getString("point_code3")); @@ -267,16 +268,10 @@ public class YzjSendMaterialTask extends AbstractAcsTask { */ @Override public void forceFinish(String task_id) { - /* - * 强制完成 - */ WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0); - if (ObjectUtil.isNotEmpty(taskObj)) - this.updateTaskStatus(taskObj,UpdateTaskStatusEnum.FORCEFINISH.getCode()); - else { - throw new BadRequestException("未找到该任务或者任务已完成!"); - } + if (ObjectUtil.isEmpty(taskObj))throw new BadRequestException("未找到该任务或者任务已完成!"); + this.updateTaskStatus(taskObj, UpdateTaskStatusEnum.FORCEFINISH.getCode()); } /** @@ -288,10 +283,7 @@ public class YzjSendMaterialTask extends AbstractAcsTask { public void cancel(String task_id) { WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0); - if (ObjectUtil.isNotEmpty(taskObj)) - this.updateTaskStatus(taskObj,UpdateTaskStatusEnum.CANCEL.getCode()); - else { - throw new BadRequestException("未找到该任务或者任务已完成!"); - } + if (ObjectUtil.isEmpty(taskObj))throw new BadRequestException("未找到该任务或者任务已完成!"); + this.updateTaskStatus(taskObj, UpdateTaskStatusEnum.CANCEL.getCode()); } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/wql/QSCH_fjCallEmptyVehicle_01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/wql/QSCH_fjSendMaterial_01.wql similarity index 81% rename from lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/wql/QSCH_fjCallEmptyVehicle_01.wql rename to lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/wql/QSCH_fjSendMaterial_01.wql index b85146d..e1422aa 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/wql/QSCH_fjCallEmptyVehicle_01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/wql/QSCH_fjSendMaterial_01.wql @@ -40,7 +40,7 @@ ########################################## # 3、业务主过程 # ########################################## -IF 输入.flag = "1" + IF 输入.flag = "1" QUERY SELECT p.point_id, @@ -54,13 +54,23 @@ IF 输入.flag = "1" AND is_delete = '0' AND point_status = '1' AND point_type = '1' - OPTION 输入.vehicle_type <> "" - p.can_vehicle_type like 输入.vehicle_type - ENDOPTION OPTION 输入.region_code <> "" p.region_code = 输入.region_code ENDOPTION - ORDER BY col_num,row_num,layer_num + ORDER BY p.instorage_time ENDSELECT ENDQUERY ENDIF + + IF 输入.flag = "2" + QUERY + SELECT + p.point_code AS device_code + FROM + SCH_BASE_Point p + WHERE + region_code = 'RGCPQ' + AND point_type = '2' + ENDSELECT + ENDQUERY + ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/wql/QSCH_szSendMaterial_01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/wql/QSCH_szSendMaterial_01.wql index e840e78..46428f1 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/wql/QSCH_szSendMaterial_01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/wql/QSCH_szSendMaterial_01.wql @@ -40,7 +40,7 @@ ########################################## # 3、业务主过程 # ########################################## -IF 输入.flag = "1" + IF 输入.flag = "1" QUERY SELECT p.point_id, @@ -53,9 +53,6 @@ IF 输入.flag = "1" AND is_used = '1' AND is_delete = '0' AND point_status = '1' - OPTION 输入.vehicle_type <> "" - p.can_vehicle_type like 输入.vehicle_type - ENDOPTION OPTION 输入.region_code <> "" p.region_code = 输入.region_code ENDOPTION 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 1936aed..95fdefc 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-ui/src/views/wms/pdm/workerorder/index.vue b/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue index d3902f1..8ec0811 100644 --- a/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue +++ b/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue @@ -159,7 +159,22 @@ - + + + + + + + + + + + + + + + + +