diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/rest/PdaController.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/rest/PdaController.java index 444b54b..4d494ad 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/rest/PdaController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/rest/PdaController.java @@ -67,10 +67,10 @@ public class PdaController { return this.success(); } - @PostMapping("/vmByVehicle") + @PostMapping("/vmByvehicle") @Log("查询载具及组盘信息") @ApiOperation("查询载具及组盘信息") - public ResponseEntity vmByVehicle(@RequestBody JSONObject param) { + public ResponseEntity vmByVehicle(@RequestBody JSONObject param) { return new ResponseEntity<>(pdaService.vmByVehicle(param.getString("vehicle_code")), HttpStatus.OK); } @@ -83,6 +83,34 @@ public class PdaController { return this.success(); } + @PostMapping("/queryMaterial") + @Log("查询物料") + @ApiOperation("查询物料") + public ResponseEntity queryMaterial() { + return new ResponseEntity<>(pdaService.queryMaterial(), HttpStatus.OK); + } + + @PostMapping("/queryInventory") + @Log("查询可出库信息") + @ApiOperation("查询可出库信息") + public ResponseEntity queryInventory(@RequestBody JSONObject param) { + return new ResponseEntity<>(pdaService.queryInventory(param.getString("material_code"), param.getString("vehicle_code")), HttpStatus.OK); + } + + @PostMapping("/task") + @Log("任务生成") + @ApiOperation("任务生成") + public ResponseEntity task(@RequestBody JSONObject param) { + pdaService.task( + param.getString("type"), + param.getString("point_id"), + param.getString("start_point_id"), + param.getString("next_point_id") + ); + + return this.success(); + } + private ResponseEntity success() { JSONObject result = new JSONObject(); result.put("message", "操作成功"); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/PdaService.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/PdaService.java index 4701cec..b5c3d96 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/PdaService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/PdaService.java @@ -19,7 +19,13 @@ public interface PdaService { void vm(String vehicleCode, JSONArray materials); - JSONObject vmByVehicle(String vehicleCode); + JSONArray vmByVehicle(String vehicleCode); void outbound(String vehicleCode, JSONArray materials); + + JSONArray queryMaterial(); + + JSONObject queryInventory(String materialCode, String vehicleCode); + + void task(String type, String pointId, String startPointId, String nextPointId); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java index bb664e6..48ab2f8 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java @@ -15,6 +15,12 @@ import org.nl.wms.pda.service.PdaService; import org.nl.wms.sch.base.point.LockType; import org.nl.wms.sch.base.point.PointStatus; import org.nl.wms.sch.base.point.PointType; +import org.nl.wms.sch.base.region.RegionEnum; +import org.nl.wms.sch.task.CallEmptyVehicleTask; +import org.nl.wms.sch.task.CallMaterialTask; +import org.nl.wms.sch.task.SendFullVehicleTask; +import org.nl.wms.sch.task.SendResiduesMaterialTask; +import org.nl.wms.sch.task.wql.SendEmptyVehicleTask; import org.nl.wms.util.CommonUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -28,6 +34,15 @@ import org.springframework.transaction.annotation.Transactional; @Slf4j public class PdaServiceImpl implements PdaService { + private final CallEmptyVehicleTask callEmptyVehicleTask; + + private final SendFullVehicleTask sendFullVehicleTask; + + private final CallMaterialTask callMaterialTask; + + private final SendResiduesMaterialTask sendResiduesMaterialTask; + + private final SendEmptyVehicleTask sendEmptyVehicleTask; @Override public JSONArray region() { @@ -178,17 +193,13 @@ public class PdaServiceImpl implements PdaService { } @Override - public JSONObject vmByVehicle(String vehicleCode) { - JSONObject result = new JSONObject(); - JSONArray detail = WQL + public JSONArray vmByVehicle(String vehicleCode) { + return WQL .getWO("PDA") .addParam("flag", "3") .addParam("vehicle_code", vehicleCode) .process() .getResultJSONArray(0); - result.put("detail", detail); - - return result; } @Transactional(rollbackFor = Exception.class) @@ -234,4 +245,146 @@ public class PdaServiceImpl implements PdaService { CommonUtils.addUpdateColum(vehicle); vehicleTable.update(vehicle); } + + @Override + public JSONArray queryMaterial() { + return WQL.getWO("PDA").addParam("flag", "4").process().getResultJSONArray(0); + } + + @Override + public JSONObject queryInventory(String materialCode, String vehicleCode) { + JSONObject vehicle = WQLObject + .getWQLObject("md_pb_vehicle") + .query("vehicle_code = '" + vehicleCode + "'") + .uniqueResult(0); + if (ObjectUtil.isEmpty(vehicle)) { + throw new BadRequestException("该载具号不存在,请从组盘功能添加"); + } + if (StrUtil.equals(vehicle.getString("vehicle_status"), VehicleStatus.EMPTY.getCode())) { + throw new BadRequestException("该载具为空载具"); + } + + JSONObject point = WQLObject + .getWQLObject("sch_base_point") + .query("vehicle_code = '" + vehicleCode + "'") + .uniqueResult(0); + if (ObjectUtil.isEmpty(point)) { + throw new BadRequestException("该载具不存在于点位上"); + } + if (!StrUtil.equals(point.getString("region_id"), RegionEnum.ZC.getCode())) { + throw new BadRequestException("该载具不在暂存区"); + } + if (StrUtil.equals(point.getString("is_used"), "0")) { + throw new BadRequestException("该载具所在点位已被禁用"); + } + + JSONObject result = new JSONObject(); + result.put("point_id", point.getString("point_id")); + result.put("point_name", point.getString("point_name")); + + JSONArray detail = WQL + .getWO("PDA") + .addParam("flag", "5") + .addParam("vehicle_id", vehicle.getString("vehicle_id")) + .process() + .getResultJSONArray(0); + result.put("detail", detail); + + return result; + } + + @Override + public void task(String type, String pointId, String startPointId, String nextPointId) { + switch (type) { + case "1": + JSONObject point = WQLObject.getWQLObject("sch_base_point") + .query("point_id = " + pointId) + .uniqueResult(0); + if (ObjectUtil.isEmpty(point)) { + throw new BadRequestException("该点位不存在"); + } + if (StrUtil.equals(point.getString("point_status"), PointStatus.HAS_VEHICLE.getCode())) { + throw new BadRequestException("该点位上有载具"); + } + if (!StrUtil.equals(point.getString("region_id"), RegionEnum.JL.getCode())) { + throw new BadRequestException("只有接料区可以呼叫空载具"); + } + + JSONObject param = new JSONObject(); + param.put("point_id", pointId); + callEmptyVehicleTask.createTask(param); + break; + case "2": + point = WQLObject.getWQLObject("sch_base_point") + .query("point_id = " + pointId) + .uniqueResult(0); + if (ObjectUtil.isEmpty(point)) { + throw new BadRequestException("该点位不存在"); + } + if (StrUtil.equals(point.getString("point_status"), PointStatus.EMPTY.getCode())) { + throw new BadRequestException("该点位为空位"); + } + if (StrUtil.equals(point.getString("region_id"), RegionEnum.ZC.getCode())) { + throw new BadRequestException("暂存区不能生成入库任务"); + } + + JSONObject vehicle = WQLObject + .getWQLObject("md_pb_vehicle") + .query("vehicle_code = " + point.getString("vehicle_code")) + .uniqueResult(0); + param = new JSONObject(); + param.put("point_id", pointId); + if (StrUtil.equals(vehicle.getString("vehicle_status"), VehicleStatus.EMPTY.getCode())) { + sendEmptyVehicleTask.createTask(param); + } + if (StrUtil.equals(vehicle.getString("vehicle_status"), VehicleStatus.HAS_MATERIAL.getCode())) { + String regionId = point.getString("region_id"); + if (StrUtil.equals(regionId, RegionEnum.JL.getCode())) { + sendFullVehicleTask.createTask(param); + } + if (StrUtil.equals(regionId, RegionEnum.JJ.getCode())) { + sendResiduesMaterialTask.createTask(param); + } + } + break; + case "3": + JSONObject startPoint = WQLObject + .getWQLObject("sch_base_point") + .query("point_id = " + startPointId) + .uniqueResult(0); + if (ObjectUtil.isEmpty(startPoint)) { + throw new BadRequestException("起点不存在"); + } + if (StrUtil.equals(startPoint.getString("point_status"), PointStatus.EMPTY.getCode())) { + throw new BadRequestException("起点为空位"); + } + + JSONObject startVehicle = WQLObject + .getWQLObject("md_pb_vehicle") + .query("vehicle_code = " + startPoint.getString("vehicle_code")) + .uniqueResult(0); + if (StrUtil.equals(startVehicle.getString("vehicle_status"), VehicleStatus.EMPTY.getCode())) { + throw new BadRequestException("起点上的载具为空载具"); + } + + JSONObject nextPoint = WQLObject + .getWQLObject("sch_base_point") + .query("point_id = " + nextPointId) + .uniqueResult(0); + if (ObjectUtil.isEmpty(nextPoint)) { + throw new BadRequestException("终点不存在"); + } + if (StrUtil.equals(nextPoint.getString("point_status"), PointStatus.HAS_VEHICLE.getCode())) { + throw new BadRequestException("终点有载具"); + } + if (StrUtil.equals(nextPoint.getString("region_id"), RegionEnum.JJ.getCode())) { + throw new BadRequestException("只有终点为交接区才能生成出库任务"); + } + + param = new JSONObject(); + param.put("start_point_id", startPointId); + param.put("next_point_id", nextPointId); + callMaterialTask.createTask(param); + } + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/wql/PDA.wql b/lms/nladmin-system/src/main/java/org/nl/wms/pda/wql/PDA.wql index 5a67c5e..53302a9 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/wql/PDA.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/wql/PDA.wql @@ -16,6 +16,7 @@ 输入.flag TYPEAS s_string 输入.region_id TYPEAS s_string 输入.vehicle_code TYPEAS s_string + 输入.vehicle_id TYPEAS s_string [临时表] --这边列出来的临时表就会在运行期动态创建 @@ -61,6 +62,7 @@ sch_base_point WHERE region_id = 输入.region_id + ENDSELECT ENDQUERY ENDIF @@ -80,3 +82,30 @@ ENDSELECT ENDQUERY ENDIF + + IF 输入.flag = "4" + QUERY + SELECT + material_code, + material_name + FROM + md_me_materialbase + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "5" + QUERY + SELECT + material.material_code, + material.material_name, + vm.material_qty, + vm.material_batch AS batch + FROM + st_ivt_vehicle_material vm + LEFT JOIN md_me_materialbase material ON vm.material_id = material.material_id + WHERE + vm.vehicle_id = 输入.vehicle_id + ENDSELECT + ENDQUERY + ENDIF \ No newline at end of file diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/CallMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/CallMaterialTask.java index a8affe3..6cf62e2 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/CallMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/CallMaterialTask.java @@ -86,14 +86,14 @@ public class CallMaterialTask extends AbstractAcsTask { public String createTask(JSONObject param) { WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); JSONObject nextPoint = pointTable - .query("point_id = " + param.getString("point_id")) + .query("point_id = " + param.getString("next_point_id")) .uniqueResult(0); if (ObjectUtil.isEmpty(nextPoint)) { throw new BadRequestException("终点不存在"); } JSONObject startPoint = pointTable - .query("vehicle_code = " + param.getString("vehicle_code")) + .query("point_id = " + param.getString("start_point_id")) .uniqueResult(0); if (ObjectUtil.isEmpty(startPoint)) { throw new BadRequestException("指定的料车点位不存在");