diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/PointUpdateUtil.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/PointUpdateUtil.java new file mode 100644 index 0000000..291c8ea --- /dev/null +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/PointUpdateUtil.java @@ -0,0 +1,33 @@ +package org.nl.wms.common; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.nl.exception.BadRequestException; +import org.nl.wms.ext.acs.service.impl.WmsToAcsServiceImpl; +import org.nl.wql.WQL; +import org.nl.wql.core.bean.WQLObject; + +public class PointUpdateUtil { + public static void updatePoint(JSONArray arr) { + WmsToAcsServiceImpl wmsToAcsServiceImpl = new WmsToAcsServiceImpl(); + + //JSONObject joo = wmsToAcsServiceImpl.queryPointStatus(arr); + //JSONArray pointarr = joo.getJSONArray("arr"); + + JSONArray pointarr =new JSONArray(); + WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); + for (int i = 0; i < pointarr.size(); i++) { + JSONObject pointjo = pointarr.getJSONObject(i); + String point_status = "00"; + String vehicle_code = pointjo.getString("vehicle_code"); + if (StrUtil.isNotEmpty(vehicle_code)) { + point_status = "02"; + } + pointjo.put("point_status", point_status); + pointTable.update(pointjo); + } + } + + +} diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/StructFindUtil.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/StructFindUtil.java index dba858e..1ea2a52 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/StructFindUtil.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/StructFindUtil.java @@ -2,7 +2,9 @@ package org.nl.wms.common; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.alipay.api.domain.BFActivityOpenApiInfo; import org.nl.exception.BadRequestException; import org.nl.start.day01.Struct; import org.nl.wql.WQL; @@ -89,4 +91,34 @@ public class StructFindUtil { return result; } + //获取空闲的输送线的上料位 + public static JSONObject getConveyor(JSONObject jsonObject) { + String material_id = jsonObject.getString("material_id"); + //判断入输送线的规则有没有开启,假如开启需要带上物料,没有开启不需要带上物料 + String value = WQLObject.getWQLObject("sys_param").query("code='is_inrule'").uniqueResult(0).getString("value"); + if (StrUtil.equals(value, "0")) { + material_id = ""; + } + WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); + WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); + //获取可以用的输送线数组 + JSONArray deviceArr = WQL.getWO("QSTRUCT_RULE").addParam("flag", "6") + .addParam("material_id", material_id).process().getResultJSONArray(0); + JSONObject result = new JSONObject(); + for (int i = 0; i < deviceArr.size(); i++) { + JSONObject deviceObj = deviceArr.getJSONObject(i); + int count = deviceObj.getIntValue("count"); + //假如到该输送线上料位置的任务>= 空闲的位置个数,则需要选择下一个输送线 + int task_num = WQL.getWO("QSTRUCT_RULE").addParam("flag", "7").process().uniqueResult(0).getIntValue("count"); + if (count > task_num) { + result = pointTable.query("device_id = '" + deviceObj.getString("device_id") + "' and device_point_type='01'").uniqueResult(0); + + } else { + continue; + } + } + return result; + } + + } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/wql/QSTRUCT_RULE.wql b/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/wql/QSTRUCT_RULE.wql index 3b377b1..51892e4 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/wql/QSTRUCT_RULE.wql +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/wql/QSTRUCT_RULE.wql @@ -18,9 +18,11 @@ 输入.material_id TYPEAS s_string 输入.sect_id TYPEAS s_string 输入.area_type TYPEAS s_string - 输入.vehicle_type TYPEAS s_string - 输入.workprocedure_id TYPEAS s_string + 输入.vehicle_type TYPEAS s_string + 输入.workprocedure_id TYPEAS s_string 输入.is_full TYPEAS s_string + 输入.material_id TYPEAS s_string + 输入.next_point_code TYPEAS s_string [临时表] @@ -172,8 +174,6 @@ IF 输入.flag = "5" point.point_code AS struct_code, point.point_name AS struct_name, point.vehicle_code - - FROM sch_base_point point LEFT JOIN md_pb_vehicle vehicle ON vehicle.vehicle_code = point.vehicle_code @@ -189,4 +189,51 @@ IF 输入.flag = "5" ENDOPTION ENDSELECT ENDQUERY +ENDIF + +IF 输入.flag = "6" + QUERY + SELECT + device.device_id, + device.device_code, + device.device_name, + rule.in_seq_no, + count( * ) AS count + FROM + sch_base_point point + LEFT JOIN st_rule_cacheline rule ON point.device_id = rule.cacheline_id + LEFT JOIN pdm_base_device device ON device.device_id = rule.cacheline_id + WHERE + point.area_type = '07' + AND ( point.vehicle_code = '' OR point.vehicle_code IS NULL ) + OPTION 输入.material_id <> "" + rule.material_id = 输入.material_id + ENDOPTION + GROUP BY + device.device_id, + device.device_code, + device.device_name, + rule.in_seq_no + ORDER BY + rule.in_seq_no + ENDSELECT + ENDQUERY +ENDIF + + + +IF 输入.flag = "7" + QUERY + SELECT + count(*) + FROM + sch_base_task task + WHERE + task.task_status IN ( '04', '05', '06' ) + and task.is_delete ='1' + OPTION 输入.next_point_code <> "" + task.next_point_code = 输入.next_point_code + ENDOPTION + ENDSELECT + ENDQUERY ENDIF \ No newline at end of file diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java index 39f21ce..1c5b8ff 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java @@ -45,17 +45,16 @@ public class AcsToWmsController { return new ResponseEntity<>(HttpStatus.OK); } @PostMapping("/group") - @Log("ACS扫码器组盘") + @Log("ACS扫码器入库组盘") @ApiOperation("ACS扫码器组盘") public ResponseEntity group(@RequestBody Map whereJson) { acsToWmsService.group(whereJson); return new ResponseEntity<>(HttpStatus.OK); } - @PostMapping("/ispackage") - @Log("ACS给WMS请求是否优先包装") - @ApiOperation("ACS给WMS请求是否优先包装") + @Log("ACS给WMS请求是否自动码垛") + @ApiOperation("ACS给WMS请求是否自动码垛") public ResponseEntity ispackage(@RequestBody Map whereJson) { return new ResponseEntity<>(acsToWmsService.ispackage(whereJson), HttpStatus.OK); } @@ -89,4 +88,12 @@ public class AcsToWmsController { return new ResponseEntity<>(HttpStatus.OK); } + @PostMapping("/updateVehicleType") + @Log("更新覆膜机的点位状态") + @ApiOperation("更新覆膜机的点位状态") + public ResponseEntity updateVehicleType(@RequestBody Map whereJson) { + acsToWmsService.updateVehicleType(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } + } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/WmsToAcsController.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/WmsToAcsController.java index bab4ed6..98c1e05 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/WmsToAcsController.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/WmsToAcsController.java @@ -64,5 +64,12 @@ public class WmsToAcsController { return new ResponseEntity<>(wmsToAcsService.action(arr), HttpStatus.OK); } + @PostMapping("/queryPointStatus") + @Log("查询点位状态") + @ApiOperation("查询点位状态") + public ResponseEntity queryPointStatus(@RequestBody Map whereJson) { + JSONArray arr = JSONArray.parseArray(JSON.toJSONString(whereJson.get("data"))); + return new ResponseEntity<>(wmsToAcsService.queryPointStatus(arr), HttpStatus.OK); + } } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java index 86122f8..1bb2a21 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java @@ -74,4 +74,6 @@ public interface AcsToWmsService { void sureProduceTask(Map jsonObject); + void updateVehicleType(Map jsonObject); + } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java index 39d3247..1070761 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java @@ -41,6 +41,12 @@ public interface WmsToAcsService { * @return */ Map action(JSONArray arr); + /** + * 下发动作信号 + * @param arr + * @return + */ + Map queryPointStatus(JSONArray arr); } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 3740d18..6ec272b 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -5,20 +5,20 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; 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.exception.BadRequestException; import org.nl.modules.system.util.CodeUtil; -import org.nl.start.day01.Struct; import org.nl.utils.SecurityUtils; import org.nl.wms.WorkProcedureEnum; +import org.nl.wms.common.PointUpdateUtil; +import org.nl.wms.common.StructFindUtil; import org.nl.wms.database.service.dto.VehicleDto; import org.nl.wms.ext.acs.service.AcsToWmsService; -import org.nl.wms.sch.manage.buss.CallEmptyVehicleTask; -import org.nl.wms.sch.manage.buss.CallMaterialTask; -import org.nl.wms.sch.manage.buss.SendEmptyVehicleTask; -import org.nl.wms.sch.manage.buss.SendMaterialTask; +import org.nl.wms.sch.manage.AreaEnum; +import org.nl.wms.sch.manage.buss.*; import org.nl.wql.WQL; import org.nl.wql.core.bean.WQLObject; import org.springframework.stereotype.Service; @@ -34,7 +34,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { private final CallMaterialTask callMaterialTask; private final SendEmptyVehicleTask sendEmptyVehicleTask; private final CallEmptyVehicleTask callEmptyVehicleTask; - + private final RgvTask rgvTask; + private final WmsToAcsServiceImpl wmsToAcsServiceImpl; + private final ToConveyorTask toConveyorTask; @Override @Transactional(rollbackFor = Exception.class) @@ -49,20 +51,22 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { if (StrUtil.isEmpty(type)) { throw new BadRequestException("类型不能为空!"); } + WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); switch (type) { //送料入库 case "1": jsonObject.put("start_point_code", device_code); jsonObject.put("create_mode", "01"); - String material_id = (String) jsonObject.get("material_id"); + String product_code = (String) jsonObject.get("product_code"); String pcsn = (String) jsonObject.get("pcsn"); - if (StrUtil.isEmpty(material_id)) { + if (StrUtil.isEmpty(product_code)) { throw new BadRequestException("物料不能为空!"); } if (StrUtil.isEmpty(pcsn)) { throw new BadRequestException("批次不能为空!"); } - //批次 物料,客户要从排产单里面去取 + JSONObject materialObj = WQLObject.getWQLObject("md_me_material").query("material_code ='" + product_code + "'").uniqueResult(0); + String material_id = materialObj.getString("material_id"); //如果是出窑输送线 要从组盘表里面去找物料 if (StrUtil.equals(device_code, "CYSSX101")) { String vehicle_code = (String) jsonObject.get("vehicle_code"); @@ -81,9 +85,29 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { jsonObject.put("create_mode", "01"); jsonObject.put("material_id", material_id); JSONObject materiralObj = WQLObject.getWQLObject("md_me_material").query("material_id = '" + material_id + "'").uniqueResult(0); - String stewing_time = materiralObj.getString("stewing_time"); + Double stewing_time = materiralObj.getDouble("stewing_time"); jsonObject.put("stewing_time", stewing_time); jsonObject.put("producetask_id", produceInfoByCode.getString("producetask_id")); + //假如是压制下料的几个位置,则要考虑是入输送线 还是入立体库 + String area_type = pointTable.query("point_code ='" + device_code + "'").uniqueResult(0).getString("area_type"); + if (StrUtil.equals(area_type, AreaEnum.YZQY.getCode()) && stewing_time <= 0) { + //1.首先更新所有输送线的点位状态 + JSONArray pointarr = pointTable.query("area_type ='07'").getResultJSONArray(0); + PointUpdateUtil.updatePoint(pointarr); + //2.找一个合适的输送带 + JSONObject pointObj = StructFindUtil.getConveyor(materiralObj); + + //如果未找到合适的输送带 就去货架 + if (ObjectUtil.isEmpty(pointObj)) { + sendMaterialTask.createTask((JSONObject) JSON.toJSON(jsonObject)); + } else { + jsonObject.put("next_point_code", pointObj.getString("point_code")); + toConveyorTask.createTask((JSONObject) JSON.toJSON(jsonObject)); + break; + } + + + } sendMaterialTask.createTask((JSONObject) JSON.toJSON(jsonObject)); break; case "2": @@ -106,33 +130,16 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { case "4": //叫空托盘 jsonObject.put("next_point_code", device_code); + produceInfoByCode = this.getProduceInfoByCode(device_code); //假如是压制机下料位置或者是码垛位的上料位,则去看看有没有当前排产单生产的物料的半满托 - if (StrUtil.equals(device_code, "YZJ01XL01") || - StrUtil.equals(device_code, "YZJ01XL02") || - StrUtil.equals(device_code, "YZJ02XL01") || - StrUtil.equals(device_code, "YZJ02XL02") || - StrUtil.equals(device_code, "YZJ03XL01") || - StrUtil.equals(device_code, "YZJ03XL02") || - StrUtil.equals(device_code, "YZJ04XL01") || - StrUtil.equals(device_code, "YZJ04XL02") || - StrUtil.equals(device_code, "YZJ05XL01") || - StrUtil.equals(device_code, "YZJ05XL02") || - StrUtil.equals(device_code, "YZJ05XL02") || - StrUtil.equals(device_code, "YZJ06XL01") || - StrUtil.equals(device_code, "YZJ06XL02") || - StrUtil.equals(device_code, "YZJ07XL01") || - StrUtil.equals(device_code, "YZJ07XL02") || - StrUtil.equals(device_code, "YZJ08XL01") || - StrUtil.equals(device_code, "YZJ08XL02") || - StrUtil.equals(device_code, "FJJXS01MD1") || - StrUtil.equals(device_code, "FJJXS01MD2") || - StrUtil.equals(device_code, "FJJXS02MD1") || - StrUtil.equals(device_code, "FJJXS02MD2") + if (StrUtil.equals(device_code, "FJJXSSLW101") || + StrUtil.equals(device_code, "FJJXSSLW102") || + StrUtil.equals(device_code, "FJJXSSLW301") || + StrUtil.equals(device_code, "FJJXSSLW302") ) { - produceInfoByCode = this.getProduceInfoByCode(device_code); + material_id = produceInfoByCode.getString("material_id"); - String cust_id = produceInfoByCode.getString("cust_id"); - String workprocedure_id = WorkProcedureEnum.YZGX.getId(); + String workprocedure_id = WorkProcedureEnum.FJGX.getId(); JSONObject jsonObject1 = WQL.getWO("ACSTOMES_001").addParam("flag", "1") .addParam("workprocedure_id", workprocedure_id) .addParam("material_id", material_id) @@ -144,16 +151,52 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { jsonObject.put("create_mode", "01"); jsonObject.put("pcsn", "pcsn"); jsonObject.put("material_id", material_id); - jsonObject.put("cust_id", cust_id); jsonObject.put("is_full", "0"); jsonObject.put("workprocedure_id", workprocedure_id); callMaterialTask.createTask((JSONObject) JSON.toJSON(jsonObject)); break; } } + if (ObjectUtil.isEmpty(produceInfoByCode)) { + throw new BadRequestException("未找到点位为'" + device_code + "'对应机械手的生产工单!"); + } + jsonObject.put("vehicle_type",produceInfoByCode.getString("vehicle_type")); + callEmptyVehicleTask.createTask((JSONObject) JSON.toJSON(jsonObject)); break; + //生产rgv搬运任务 case "5": + jsonObject.put("next_point_code", device_code); + jsonObject.put("create_mode", "01"); + //1 判断有没有执行的Rgv搬运任务 + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_type='04' and is_delete='0' and acs_task_type<>'07'").uniqueResult(0); + if (ObjectUtil.isEmpty(taskObj)) { + return; + } + //寻找起点 + //更新所有设备的点位的状态 + JSONArray pointarr = pointTable.query("area_type='07' and device_point_type ='01' ").getResultJSONArray(0); + WmsToAcsServiceImpl wmsToAcsService = new WmsToAcsServiceImpl(); + JSONArray reurnPointStatusArr = wmsToAcsService.queryPointStatus(pointarr).getJSONArray("data"); + for (int i = 0; i < reurnPointStatusArr.size(); i++) { + JSONObject reurnPointStatusObj = reurnPointStatusArr.getJSONObject(i); + reurnPointStatusObj.put("update_time", DateUtil.now()); + pointTable.update(reurnPointStatusObj); + } + //假如没有设置哪个输送线先出,没有按照先进先出 + JSONObject param = new JSONObject(); + String rule = WQLObject.getWQLObject("sys_param").query("code='is_outrule'").uniqueResult(0).getString("value"); + if (StrUtil.equals(rule, "1")) { + param = WQL.getWO("ACSTOMES_001").addParam("flag", "3").process().uniqueResult(0); + } else { + param = WQL.getWO("ACSTOMES_001").addParam("flag", "2").process().uniqueResult(0); + } + if (ObjectUtil.isEmpty(param)) { + throw new BadRequestException("未找到合适的输送线可以出!"); + } + param.put("start_point_code", param.getString("point_code")); + rgvTask.createTask((JSONObject) JSON.toJSON(jsonObject)); + break; } } @@ -250,15 +293,51 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { public void group(Map jsonObject) { String task_id = (String) jsonObject.get("task_id"); String vehicle_code = (String) jsonObject.get("vehicle_code"); + //永远判断生成不生成输送任务 + String device_code = (String) jsonObject.get("device_code"); if (StrUtil.isEmpty(task_id)) { throw new BadRequestException("任务标识不能为空!"); } if (StrUtil.isEmpty(vehicle_code)) { throw new BadRequestException("载具号不能为空!"); } + if (StrUtil.isEmpty(device_code)) { + throw new BadRequestException("设备点位不能为空!"); + } //1组盘 - WQLObject.getWQLObject("") - //2 生成任务 + WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup"); + JSONObject groupObj = groupTable.query("task_id='" + task_id + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(groupObj)) { + throw new BadRequestException("未找到指令为'" + task_id + "'的组盘信息!"); + } + groupObj.put("vehicle_code", vehicle_code); + groupObj.put("update_optid", SecurityUtils.getCurrentUserId()); + groupObj.put("update_optname", SecurityUtils.getNickName()); + groupObj.put("update_time", DateUtil.now()); + groupTable.update(groupObj); + //更新入库单单据的托盘条码 + WQLObject iosTable = WQLObject.getWQLObject("ST_IVT_workProcedureIOS"); + JSONObject iosObj = iosTable.query("task_id ='" + task_id + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(iosObj)) { + iosObj.put("vehicle_code", vehicle_code); + iosTable.update(iosObj); + } + //更新任务的条码 + WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); + JSONObject taskObj = taskTable.query("task_id ='" + task_id + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(taskObj)) { + taskObj.put("vehicle_code", vehicle_code); + taskTable.update(taskObj); + } + //假如是入窑输送线对接口,生成输送任务 + if (StrUtil.equals("RYSSX101", device_code) || StrUtil.equals("RYSSX201", device_code) + || StrUtil.equals("RYSSX301", device_code) || StrUtil.equals("RYSSX401", device_code)) { + ConveyorTask conveyorTask = new ConveyorTask(); + JSONObject taskjo = new JSONObject(); + taskjo.put("vehicle_code", vehicle_code); + taskjo.put("start_point_code", device_code); + conveyorTask.createTask(taskjo); + } } @Override @@ -272,10 +351,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { if (ObjectUtil.isEmpty(vehicleObj)) { throw new BadRequestException("为找到托盘号为'" + vehicle_code + "'的组盘信息!"); } - String producetask_id = vehicleObj.getString("producetask_id"); - JSONObject taskObj = WQLObject.getWQLObject("PDM_MG_produceTask").query("producetask_id='" + producetask_id + "'").uniqueResult(0); + WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup"); + JSONObject groupObj = groupTable.query("vehicle_code ='" + vehicle_code + "'").uniqueResult(0); + groupTable.query("vehicle_code ='" + vehicle_code + "'").uniqueResult(0); JSONObject returnjo = new JSONObject(); - returnjo.put("is_package", taskObj.getString("is_package")); + returnjo.put("is_autopackage", groupObj.getString("is_autopackage")); return returnjo; } @@ -391,6 +471,29 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { taskTable.update(taskObj); } + @Override + public void updateVehicleType(Map jsonObject) { + String vehicle_type = (String) jsonObject.get("vehicle_type"); + String device_code = (String) jsonObject.get("device_code"); + String vehicle_code = (String) jsonObject.get("vehicle_code"); + if (StrUtil.isEmpty(vehicle_type)) { + throw new BadRequestException("托盘类型不能为空!"); + } + if (StrUtil.isEmpty(device_code)) { + throw new BadRequestException("设备点位不能为空"); + } + if (StrUtil.isEmpty(vehicle_code)) { + throw new BadRequestException("托盘号不能为空!"); + } + WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); + JSONObject pointObj = pointTable.query("point_code='" + device_code + "' and area_type='05'").uniqueResult(0); + pointObj.put("vehicle_type", vehicle_type); + pointObj.put("vehicle_code", vehicle_code); + pointObj.put("point_status", "01"); + pointTable.update(pointObj); + + } + private JSONObject getProduceInfoByCode(String code) { //根据 设备点位去找生产任务信息 //1 根据点位去找设备,去找对应的设备信息 diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java index f957a5e..5cbf43f 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java @@ -40,6 +40,13 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { return AcsUtil.notifyAcs(api, arr); } + @Override + public JSONObject queryPointStatus(JSONArray arr) { + String api = "api/wms/updateDeviceGoods"; + return AcsUtil.notifyAcs(api, arr); + + } + public static void main(String[] args) { String format = DateUtil.format(new Date(), "yyyy-MM-dd"); System.out.println(format); diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/wql/ACSTOMES_001.wql b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/wql/ACSTOMES_001.wql index 13a4e9a..b46565d 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/wql/ACSTOMES_001.wql +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/wql/ACSTOMES_001.wql @@ -61,3 +61,45 @@ ENDSELECT ENDQUERY ENDIF + + + IF 输入.flag = "2" + QUERY + SELECT + point.point_id, + point.point_code, + point.point_name, + vehiclegroup.vehicle_code + FROM + sch_base_point point + LEFT JOIN st_buss_vehiclegroup vehiclegroup ON point.vehicle_code = vehiclegroup.vehicle_code + WHERE + point.area_type = '07' + AND point.device_point_type = '01' + and (vehiclegroup.vehicle_code <>'' and vehiclegroup .vehicle_code is not null) + ORDER BY + vehiclegroup.create_time + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "3" + QUERY + SELECT + point.point_id, + point.point_code, + point.point_name, + point.area_type, + point.vehicle_code + FROM + sch_base_point point + LEFT JOIN st_rule_cacheline rule on rule.cacheline_id =point.device_id + WHERE + point.area_type = '07' + AND point.device_point_type = '01' + and (point.vehicle_code <>'' and point .vehicle_code is not null) + ORDER BY + rule.out_seq_no + ENDSELECT + ENDQUERY + ENDIF diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/bindMaterial/rest/PdaBindingMaterialController.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/bindMaterial/rest/PdaBindingMaterialController.java new file mode 100644 index 0000000..dd5b1b0 --- /dev/null +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/bindMaterial/rest/PdaBindingMaterialController.java @@ -0,0 +1,46 @@ + +package org.nl.wms.pda.bindMaterial.rest; + + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.annotation.Log; +import org.nl.wms.pda.bindMaterial.service.PdaBindingMaterialService; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Map; + +/** + * @author ldjun + * @date 2021-07-26 + **/ +@RestController +@RequiredArgsConstructor +@Api(tags = "手持托盘组盘绑定接口管理") +@RequestMapping("/api/pda/bindingMaterial") +@Slf4j +public class PdaBindingMaterialController { + + private final PdaBindingMaterialService pdaBindingService; + + @PostMapping("/queryInfoByVehicle") + @Log("根据托盘查询信息") + @ApiOperation("根据托盘查询信息") + public ResponseEntity queryInfoByVehicle(@RequestBody Map param) { + return new ResponseEntity<>(pdaBindingService.queryInfoByVehicle(param), HttpStatus.OK); + } + @PostMapping("/confirm") + @Log("托盘物料绑定确定") + @ApiOperation("托盘物料绑定确定") + public ResponseEntity Confirm(@RequestBody Map param) { + return new ResponseEntity<>(pdaBindingService.Confirm(param), HttpStatus.OK); + } + +} diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/bindMaterial/service/PdaBindingMaterialService.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/bindMaterial/service/PdaBindingMaterialService.java new file mode 100644 index 0000000..b9adbab --- /dev/null +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/bindMaterial/service/PdaBindingMaterialService.java @@ -0,0 +1,16 @@ +package org.nl.wms.pda.bindMaterial.service; + +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.Map; + +public interface PdaBindingMaterialService { + Map queryInfoByVehicle(Map jsonObject); + /** + * 盘点单确认 + * @param param 条件 + * @return Map + * + */ + Map Confirm(@RequestBody Map param); +} diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/bindMaterial/service/impl/PdaBindingMaterialServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/bindMaterial/service/impl/PdaBindingMaterialServiceImpl.java new file mode 100644 index 0000000..419950b --- /dev/null +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/bindMaterial/service/impl/PdaBindingMaterialServiceImpl.java @@ -0,0 +1,61 @@ +package org.nl.wms.pda.bindMaterial.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.modules.system.service.UserService; +import org.nl.wms.database.service.MaterialService; +import org.nl.wms.pda.bindMaterial.service.PdaBindingMaterialService; +import org.nl.wms.pda.exception.PdaRequestException; +import org.nl.wql.WQL; +import org.nl.wql.core.bean.WQLObject; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.Map; + +@Service +@RequiredArgsConstructor +@Slf4j +public class PdaBindingMaterialServiceImpl implements PdaBindingMaterialService { + + @Override + public Map queryInfoByVehicle(Map jsonObject) { + JSONObject returnjo = new JSONObject(); + String vehicle_code = (String) jsonObject.get("vehicle_code"); + //JSONArray materialja = WQLObject.getWQLObject("st_buss_vehiclegroup").query("vehicle_code='"+vehicle_code+"'").getResultJSONArray(0); + JSONObject materialja = WQL.getWO("QPADSERVICE").addParam("vehicle_code", vehicle_code).addParam("flag", "16").process().uniqueResult(0); + returnjo.put("code", "1"); + returnjo.put("desc", "查询成功!"); + returnjo.put("result", materialja); + return returnjo; + } + + @Override + public Map Confirm(@RequestBody Map param) { + + String vehicle_code = (String) param.get("vehicle_code"); + String material_id = (String) param.get("material_id"); + String material_code = (String) param.get("material_code"); + String material_name = (String) param.get("material_name"); + String pcsn = (String) param.get("pcsn"); + String qty = (String) param.get("qty"); + WQLObject table = WQLObject.getWQLObject("st_buss_vehiclegroup"); + JSONObject vehicleObj = table.query("vehicle_code='" + vehicle_code + "'").uniqueResult(0); + vehicleObj.put("material_id", material_id); + vehicleObj.put("material_code", material_code); + vehicleObj.put("material_name", material_name); + vehicleObj.put("pcsn", pcsn); + vehicleObj.put("qty", qty); + table.update(vehicleObj); + JSONObject returnjo = new JSONObject(); + returnjo.put("code", "1"); + returnjo.put("desc", "操作成功!"); + return returnjo; + } + +} diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/binding/rest/PdaBindingController.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/binding/rest/PdaBindingController.java index 72da9de..bf79701 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/binding/rest/PdaBindingController.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/binding/rest/PdaBindingController.java @@ -31,11 +31,19 @@ public class PdaBindingController { private final PdaBindingService pdaBindingService; - @PostMapping("/binding/querypoint") - @Log("查询点位") - @ApiOperation("查询点位") - public ResponseEntity queryPoint(@RequestBody Map param) { - return new ResponseEntity<>(pdaBindingService.queryPoint(param), HttpStatus.OK); + + @PostMapping("/binding/queryArea") + @Log("查询区域") + @ApiOperation("查询区域") + public ResponseEntity queryArea(@RequestBody Map param) { + return new ResponseEntity<>(pdaBindingService.queryArea(param), HttpStatus.OK); + } + + @PostMapping("/binding/queryPointByArea") + @Log("根据区域查询点位") + @ApiOperation("根据区域查询点位") + public ResponseEntity queryPointByArea(@RequestBody Map param) { + return new ResponseEntity<>(pdaBindingService.queryPointByArea(param), HttpStatus.OK); } @PostMapping("/binding/confirm") @Log("托盘点位绑定") diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/binding/service/PdaBindingService.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/binding/service/PdaBindingService.java index 1916448..31c9082 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/binding/service/PdaBindingService.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/binding/service/PdaBindingService.java @@ -5,7 +5,8 @@ import org.springframework.web.bind.annotation.RequestBody; import java.util.Map; public interface PdaBindingService { - Map queryPoint(Map jsonObject); + Map queryArea(Map jsonObject); + Map queryPointByArea(Map jsonObject); /** * 盘点单确认 * @param param 条件 diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/binding/service/impl/PdaBindingServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/binding/service/impl/PdaBindingServiceImpl.java index 2ac3c07..ebbd4a7 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/binding/service/impl/PdaBindingServiceImpl.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/binding/service/impl/PdaBindingServiceImpl.java @@ -15,6 +15,7 @@ import org.nl.utils.SecurityUtils; import org.nl.wms.database.service.MaterialService; import org.nl.wms.pda.binding.service.PdaBindingService; import org.nl.wms.pda.exception.PdaRequestException; +import org.nl.wql.WQL; import org.nl.wql.core.bean.WQLObject; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; @@ -33,15 +34,29 @@ public class PdaBindingServiceImpl implements PdaBindingService { private final MaterialService materialService; @Override - public Map queryPoint(Map jsonObject) { + public Map queryArea(Map param) { + JSONArray areaArr = WQL.getWO("QPAEMPTY").addParam("flag", "4").process().getResultJSONArray(0); JSONObject returnjo = new JSONObject(); - JSONArray materialja = WQLObject.getWQLObject("sch_base_point").query("1=1").getResultJSONArray(0); returnjo.put("code", "1"); - returnjo.put("desc", "查询成功!"); - returnjo.put("result", materialja); + returnjo.put("desc", "操作成功!"); + returnjo.put("result", areaArr); return returnjo; } + + @Override + public Map queryPointByArea(Map param) { + String area_code = (String) param.get("area_code"); + if (StrUtil.isEmpty(area_code)) { + throw new PdaRequestException("区域不能为空!"); + } + JSONArray pointArr = WQL.getWO("QPAEMPTY").addParam("flag", "2").addParam("area_type", area_code).process().getResultJSONArray(0); + JSONObject returnjo = new JSONObject(); + returnjo.put("code", "1"); + returnjo.put("desc", "操作成功!"); + returnjo.put("result", pointArr); + return returnjo; + } @Override public Map Confirm(@RequestBody Map param) { //point_code diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/callEmpty/service/impl/CallEmptyServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/callEmpty/service/impl/CallEmptyServiceImpl.java index 96ccf96..eba0b1b 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/callEmpty/service/impl/CallEmptyServiceImpl.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/callEmpty/service/impl/CallEmptyServiceImpl.java @@ -5,6 +5,8 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.wms.ext.acs.service.AcsToWmsService; +import org.nl.wms.ext.acs.service.impl.AcsToWmsServiceImpl; import org.nl.wms.pda.callEmpty.service.CallEmptyService; import org.nl.wms.pda.exception.PdaRequestException; import org.nl.wms.sch.manage.buss.CallEmptyVehicleTask; @@ -20,10 +22,11 @@ import java.util.Map; @Slf4j public class CallEmptyServiceImpl implements CallEmptyService { private final CallEmptyVehicleTask callEmptyVehicleTask; + private final AcsToWmsServiceImpl acsToWmsServiceimpl; @Override public Map queryArea(Map param) { - JSONArray areaArr = WQL.getWO("QPAEMPTY").addParam("flag", "1").process().getResultJSONArray(0); + JSONArray areaArr = WQL.getWO("QPAEMPTY").addParam("flag", "3").process().getResultJSONArray(0); JSONObject returnjo = new JSONObject(); returnjo.put("code", "1"); returnjo.put("desc", "操作成功!"); @@ -55,7 +58,9 @@ public class CallEmptyServiceImpl implements CallEmptyService { } JSONObject jsonObject = new JSONObject(); jsonObject.put("next_point_code", next_point_code); - callEmptyVehicleTask.createTask(jsonObject); + jsonObject.put("device_code",next_point_code); + jsonObject.put("type","4"); + acsToWmsServiceimpl.receiveTaskFromAcs(jsonObject); JSONObject returnjo = new JSONObject(); returnjo.put("code", "1"); returnjo.put("desc", "操作成功!"); diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/ruleSetting/rest/PdaRuleSettingController.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/ruleSetting/rest/PdaRuleSettingController.java new file mode 100644 index 0000000..cc64d36 --- /dev/null +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/ruleSetting/rest/PdaRuleSettingController.java @@ -0,0 +1,47 @@ + +package org.nl.wms.pda.ruleSetting.rest; + + +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.annotation.Log; +import org.nl.wms.pda.ruleSetting.service.PdaRuleSettingService; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Map; + +/** + * @author ldjun + * @date 2021-07-26 + **/ +@RestController +@RequiredArgsConstructor +@Api(tags = "手持托盘入窑贵州") +@RequestMapping("/api/pda/ruleSetting") +@Slf4j +public class PdaRuleSettingController { + + private final PdaRuleSettingService pdaBindingService; + + @PostMapping("/queryInfo") + @Log("查询规则信息") + @ApiOperation("查询规则信息") + public ResponseEntity queryInfo(@RequestBody Map param) { + return new ResponseEntity<>(pdaBindingService.queryInfo(param), HttpStatus.OK); + } + @PostMapping("/confirm") + @Log("规则确定") + @ApiOperation("规则确定") + public ResponseEntity Confirm(@RequestBody JSONObject param) { + return new ResponseEntity<>(pdaBindingService.Confirm(param), HttpStatus.OK); + } + +} diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/ruleSetting/service/PdaRuleSettingService.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/ruleSetting/service/PdaRuleSettingService.java new file mode 100644 index 0000000..6e6cfa0 --- /dev/null +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/ruleSetting/service/PdaRuleSettingService.java @@ -0,0 +1,17 @@ +package org.nl.wms.pda.ruleSetting.service; + +import com.alibaba.fastjson.JSONObject; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.Map; + +public interface PdaRuleSettingService { + Map queryInfo(Map jsonObject); + /** + * 盘点单确认 + * @param param 条件 + * @return Map + * + */ + Map Confirm( JSONObject param); +} diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/ruleSetting/service/impl/PdaRuleSettingServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/ruleSetting/service/impl/PdaRuleSettingServiceImpl.java new file mode 100644 index 0000000..a5285ae --- /dev/null +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/ruleSetting/service/impl/PdaRuleSettingServiceImpl.java @@ -0,0 +1,83 @@ +package org.nl.wms.pda.ruleSetting.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.modules.system.service.UserService; +import org.nl.wms.database.service.MaterialService; +import org.nl.wms.pda.exception.PdaRequestException; +import org.nl.wms.pda.ruleSetting.service.PdaRuleSettingService; +import org.nl.wql.core.bean.WQLObject; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.Map; + +@Service +@RequiredArgsConstructor +@Slf4j +public class PdaRuleSettingServiceImpl implements PdaRuleSettingService { + + + @Override + public Map queryInfo(Map jsonObject) { + String mode = jsonObject.get("mode"); + //1 为入 2 为出 + JSONArray arr = new JSONArray(); + JSONObject infojo = new JSONObject(); + //1 启用 0 停用 + String is_used = ""; + if (StrUtil.equals("1", mode)) { + arr = WQLObject.getWQLObject("st_rule_cacheline").query("1=1", "in_seq_no ").getResultJSONArray(0); + is_used = WQLObject.getWQLObject("sys_param").query("code='is_inrule'").uniqueResult(0).getString("value"); + } else { + arr = WQLObject.getWQLObject("st_rule_cacheline").query("1=1", "out_seq_no ").getResultJSONArray(0); + is_used = WQLObject.getWQLObject("sys_param").query("code='is_outrule'").uniqueResult(0).getString("value"); + } + infojo.put("is_used", is_used); + infojo.put("JSONArray", arr); + JSONObject returnjo = new JSONObject(); + returnjo.put("code", "1"); + returnjo.put("desc", "查询成功!"); + returnjo.put("result", infojo); + return returnjo; + } + + @Override + public Map Confirm( JSONObject param) { + String mode =(String) param.get("mode"); + String is_used = (String)param.get("is_used"); + JSONArray arr = param.getJSONArray("JSONArray"); + + WQLObject paramTable = WQLObject.getWQLObject("sys_param"); + WQLObject ruleTable = WQLObject.getWQLObject("st_rule_cacheline"); + if (StrUtil.equals(mode, "1")) { + JSONObject paramObj = paramTable.query("code='is_inrule'").uniqueResult(0); + paramObj.put("value", is_used); + paramTable.update(paramObj); + for (int i = 0; i < arr.size(); i++) { + JSONObject joo = arr.getJSONObject(i); + joo.put("in_seq_no",i); + ruleTable.update(joo); + } + } else { + JSONObject paramObj = paramTable.query("code='is_outrule'").uniqueResult(0); + paramObj.put("value", is_used); + paramTable.update(paramObj); + for (int i = 0; i < arr.size(); i++) { + JSONObject joo = arr.getJSONObject(i); + joo.put("out_seq_no",i); + ruleTable.update(joo); + } + } + JSONObject returnjo = new JSONObject(); + returnjo.put("code", "1"); + returnjo.put("desc", "操作成功!"); + return returnjo; + } + +} diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendEmpty/wql/QPAEMPTY.wql b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendEmpty/wql/QPAEMPTY.wql index 18e623a..c5a3b12 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendEmpty/wql/QPAEMPTY.wql +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendEmpty/wql/QPAEMPTY.wql @@ -48,6 +48,7 @@ sys_dict_detail sys WHERE sys.dict_id = '34' + and sys.value='27' ENDSELECT ENDQUERY ENDIF @@ -67,4 +68,31 @@ ENDOPTION ENDSELECT ENDQUERY - ENDIF \ No newline at end of file + ENDIF + + IF 输入.flag = "3" + QUERY + SELECT + sys.`value` as area_code, + sys.label as area_name + FROM + sys_dict_detail sys + WHERE + sys.dict_id = '34' + and (sys.value='27' or sys.value='22') + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "4" + QUERY + SELECT + sys.`value` as area_code, + sys.label as area_name + FROM + sys_dict_detail sys + WHERE + sys.dict_id = '34' + ENDSELECT + ENDQUERY + ENDIF \ No newline at end of file diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendMaterial/wql/QPADSERVICE.wql b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendMaterial/wql/QPADSERVICE.wql index ce130b1..a674f70 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendMaterial/wql/QPADSERVICE.wql +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendMaterial/wql/QPADSERVICE.wql @@ -386,4 +386,28 @@ IF 输入.flag = "13" md_me_material material ENDSELECT ENDPAGEQUERY - ENDIF \ No newline at end of file + ENDIF + +IF 输入.flag = "16" + QUERY + SELECT + vehcilegroup.group_id, + vehcilegroup.vehicle_code, + vehcilegroup.material_id, + vehcilegroup.material_code, + vehcilegroup.material_name, + vehcilegroup.pcsn, + vehcilegroup.qty + FROM + st_buss_vehiclegroup vehcilegroup + WHERE + 1 =1 + OPTION 输入.vehicle_code <> "" + vehcilegroup.vehicle_code = 输入.vehicle_code + ENDOPTION + ENDSELECT + ENDQUERY + ENDIF + + + diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/CallEmptyVehicleTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/CallEmptyVehicleTask.java index 0197888..95d4d6c 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/CallEmptyVehicleTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/CallEmptyVehicleTask.java @@ -30,7 +30,7 @@ import java.util.HashMap; */ @Service public class CallEmptyVehicleTask extends AbstractAcsTask { - private final String THIS_CLASS = SendEmptyVehicleTask.class.getName(); + private final String THIS_CLASS = CallEmptyVehicleTask.class.getName(); @Override @Transactional @@ -190,10 +190,11 @@ public class CallEmptyVehicleTask extends AbstractAcsTask { case YZGX: vehicle_type = VehicleTypeEnum.GTP.getCode(); start_area = AreaEnum.DDKTTPQ.getCode(); + break; //分拣工序 case FJGX: //托盘类型取的物料对应的木托盘类型 - JSONObject produceObj = WQLObject.getWQLObject("PDM_MG_produceTask").query("device_id='" + device_id + "' and producetask_status='04'").uniqueResult(0); + JSONObject produceObj = WQLObject.getWQLObject("PDM_MG_produceTask").query("device_id='" + device_id + "' and producetask_status in('03')").uniqueResult(0); vehicle_type = produceObj.getString("vehicle_type"); start_area = AreaEnum.MTPQ.getCode(); is_auto_issue = "0"; diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/ConveyorTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/ConveyorTask.java new file mode 100644 index 0000000..a62febf --- /dev/null +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/ConveyorTask.java @@ -0,0 +1,125 @@ +package org.nl.wms.sch.manage.buss; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import org.nl.exception.BadRequestException; +import org.nl.modules.system.util.CodeUtil; +import org.nl.utils.SecurityUtils; +import org.nl.wms.sch.manage.AbstractAcsTask; +import org.nl.wms.sch.manage.AreaEnum; +import org.nl.wms.sch.manage.TaskStatusEnum; +import org.nl.wms.sch.task.TaskTypeEnum; +import org.nl.wql.core.bean.WQLObject; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 入库任务生成 + */ +@Service +public class ConveyorTask extends AbstractAcsTask { + private final String THIS_CLASS = ConveyorTask.class.getName(); + + @Transactional + @Override + public void updateTaskStatus(JSONObject taskObj, String status) { + /** + *改变任务状态 + **/ + String task_id = taskObj.getString("task_id"); + WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); + JSONObject jsonTask = taskTab.query("task_id='" + task_id + "'").uniqueResult(0); + if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { + //更新任务状态为执行中 + jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); + jsonTask.put("update_time", DateUtil.now()); + taskTab.update(jsonTask); + } + + if (TaskStatusEnum.FINISHED.getCode().equals(status)) { + // 更新任务状态为完成 + jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode()); + jsonTask.put("taskfinish_mode", taskObj.getString("taskfinish_mode")); + jsonTask.put("update_time", DateUtil.now()); + jsonTask.put("remark", "任务执行完成"); + taskTab.update(jsonTask); + } + + } + + @Override + public void findStartPoint() { + + } + + @Transactional + @Override + public void findNextPoint() { + } + + @Override + public String createTask(JSONObject form) { + JSONObject taskObj = new JSONObject(); + //只需要传起点就好,跟载具,终点永远是入窑口 + String vehicle_code = form.getString("vehicle_code"); + String start_point_code = form.getString("start_point_code"); + if (StrUtil.isEmpty(vehicle_code)) { + throw new BadRequestException("载具不能为空!"); + } + if (StrUtil.isEmpty(start_point_code)) { + throw new BadRequestException("起点不能为空!"); + } + taskObj.put("task_id", IdUtil.getSnowflake(1, 1).nextId() + ""); + String task_status = TaskStatusEnum.START_AND_POINT.getCode(); + taskObj.put("task_code", CodeUtil.getNewCode("TASK_CODE")); + taskObj.put("task_type", TaskTypeEnum.IN_TASK.getCode()); + //输送任务 + taskObj.put("acs_task_type", "2"); + String start_area = AreaEnum.RYSSXQ.getCode(); + String next_area = AreaEnum.RYSSXQ.getCode(); + //根据起点去找终点 + WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); + String device_id = pointTable.query("point_code ='" + start_point_code + "'").uniqueResult(0).getString("device_id"); + String next_point_code = pointTable.query("device_id ='" + device_id + "' and device_point_type ='02'").uniqueResult(0).getString("point_code"); + taskObj.put("task_status", task_status); + taskObj.put("start_point_code", start_point_code); + taskObj.put("start_area", start_area); + taskObj.put("next_area", next_area); + taskObj.put("next_point_code", next_point_code); + taskObj.put("vehicle_code", vehicle_code); + taskObj.put("create_name", SecurityUtils.getNickName()); + taskObj.put("create_id", SecurityUtils.getCurrentUserId()); + taskObj.put("create_time", DateUtil.now()); + taskObj.put("update_optid", SecurityUtils.getCurrentUserId()); + taskObj.put("update_name", SecurityUtils.getNickName()); + taskObj.put("update_time", DateUtil.now()); + taskObj.put("handle_class", THIS_CLASS); + //任务基础表【sch_base_task】 + WQLObject.getWQLObject("sch_base_task").insert(taskObj); + return taskObj.getString("task_id"); + + } + + + @Override + public void forceFinish(String task_id) { + if (StrUtil.isEmpty(task_id)) { + throw new BadRequestException("任务id不能为空!"); + } + JSONObject taskjo = WQLObject.getWQLObject("sch_base_task").query("task_id='" + task_id + "'").uniqueResult(0); + taskjo.getString("taskfinish_mode"); + this.updateTaskStatus(taskjo, TaskStatusEnum.FINISHED.getCode()); + } + + @Override + public void pullBack(String task_id) { + + } + + @Override + public void cancel(String task_id) { + + } +} diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/RgvTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/RgvTask.java new file mode 100644 index 0000000..c967dc5 --- /dev/null +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/RgvTask.java @@ -0,0 +1,122 @@ +package org.nl.wms.sch.manage.buss; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import org.nl.exception.BadRequestException; +import org.nl.modules.system.util.CodeUtil; +import org.nl.utils.SecurityUtils; +import org.nl.wms.sch.manage.AbstractAcsTask; +import org.nl.wms.sch.manage.AreaEnum; +import org.nl.wms.sch.manage.TaskStatusEnum; +import org.nl.wms.sch.task.TaskTypeEnum; +import org.nl.wql.core.bean.WQLObject; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * 入库任务生成 + */ +@Service +public class RgvTask extends AbstractAcsTask { + private final String THIS_CLASS = RgvTask.class.getName(); + + @Transactional + @Override + + public void updateTaskStatus(JSONObject taskObj, String status) { + /** + *改变任务状态 + **/ + String task_id = taskObj.getString("task_id"); + WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); + JSONObject jsonTask = taskTab.query("task_id='" + task_id + "'").uniqueResult(0); + if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { + //更新任务状态为执行中 + jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); + jsonTask.put("update_time", DateUtil.now()); + taskTab.update(jsonTask); + } + + if (TaskStatusEnum.FINISHED.getCode().equals(status)) { + // 更新任务状态为完成 + jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode()); + jsonTask.put("taskfinish_mode", taskObj.getString("taskfinish_mode")); + jsonTask.put("update_time", DateUtil.now()); + jsonTask.put("remark", "任务执行完成"); + taskTab.update(jsonTask); + } + + } + + @Override + public void findStartPoint() { + + } + + @Transactional + @Override + public void findNextPoint() { + } + + @Override + public String createTask(JSONObject form) { + JSONObject taskObj = new JSONObject(); + //只需要传起点就好,跟载具,终点永远是入窑口 + String vehicle_code = form.getString("vehicle_code"); + String start_point_code = form.getString("start_point_code"); + String next_point_code = form.getString("next_point_code"); + if (StrUtil.isEmpty(vehicle_code)) { + throw new BadRequestException("载具不能为空!"); + } + if (StrUtil.isEmpty(start_point_code)) { + throw new BadRequestException("起点不能为空!"); + } + taskObj.put("task_id", IdUtil.getSnowflake(1, 1).nextId() + ""); + String task_status = TaskStatusEnum.START_AND_POINT.getCode(); + taskObj.put("task_code", CodeUtil.getNewCode("TASK_CODE")); + taskObj.put("task_type", TaskTypeEnum.IN_TASK.getCode()); + //输送任务 + taskObj.put("acs_task_type", "2"); + String start_area = AreaEnum.RYSSXQ.getCode(); + String next_area = AreaEnum.YQY.getCode(); + taskObj.put("task_status", task_status); + taskObj.put("start_point_code", start_point_code); + taskObj.put("start_area", start_area); + taskObj.put("next_area", next_area); + taskObj.put("next_point_code", next_point_code); + taskObj.put("vehicle_code", vehicle_code); + taskObj.put("create_name", SecurityUtils.getNickName()); + taskObj.put("create_id", SecurityUtils.getCurrentUserId()); + taskObj.put("create_time", DateUtil.now()); + taskObj.put("update_optid", SecurityUtils.getCurrentUserId()); + taskObj.put("update_name", SecurityUtils.getNickName()); + taskObj.put("update_time", DateUtil.now()); + taskObj.put("handle_class", THIS_CLASS); + //任务基础表【sch_base_task】 + WQLObject.getWQLObject("sch_base_task").insert(taskObj); + return taskObj.getString("task_id"); + } + + + @Override + public void forceFinish(String task_id) { + if (StrUtil.isEmpty(task_id)) { + throw new BadRequestException("任务id不能为空!"); + } + JSONObject taskjo = WQLObject.getWQLObject("sch_base_task").query("task_id='" + task_id + "'").uniqueResult(0); + taskjo.getString("taskfinish_mode"); + this.updateTaskStatus(taskjo, TaskStatusEnum.FINISHED.getCode()); + } + + @Override + public void pullBack(String task_id) { + + } + + @Override + public void cancel(String task_id) { + + } +} diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/SendEmptyVehicleTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/SendEmptyVehicleTask.java index 90caefa..6a5c882 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/SendEmptyVehicleTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/SendEmptyVehicleTask.java @@ -93,55 +93,19 @@ public class SendEmptyVehicleTask extends AbstractAcsTask { } @Override - public void findNextPoint() { - String task_status = TaskStatusEnum.SURE_START.getCode(); - WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); - JSONArray taskArry = taskTab.query("task_status='" + task_status + "' AND handle_class='" + THIS_CLASS + "' AND is_delete='0' ").getResultJSONArray(0); - for (int i = 0; i < taskArry.size(); i++) { - JSONObject taskObj = taskArry.getJSONObject(i); - String task_id = taskObj.getString("task_id"); - //找一个合适的仓位 - WQLObject Recordtable = WQLObject.getWQLObject("st_buss_EmptyVehicleRecord"); - JSONObject IosObj = Recordtable.query("task_id='" + task_id + "' and is_delete ='0'").uniqueResult(0); - if (ObjectUtil.isEmpty(IosObj)) { - throw new BadRequestException("未找到任务号为'" + taskObj.getString("task_code") + "'的单据!"); - } - JSONObject param = new JSONObject(); - param.put("area_type", IosObj.getString("end_area")); - param.put("vehicle_code", IosObj.getString("vehicle_code")); - JSONObject inStructObj = StructFindUtil.getEmptyVehicleInStruct(param); - if (ObjectUtil.isEmpty(inStructObj)) { - throw new BadRequestException("未找到合适的仓位!"); - } - //修改单据状态,将终点填入 - IosObj.put("bill_status", "20"); - IosObj.put("end_point_code", inStructObj.getString("struct_code")); - Recordtable.update(IosObj); - //终点加锁 - HashMap lock_map = new HashMap(); - lock_map.put("lock_type", "01"); - WQLObject.getWQLObject("sch_base_point").update(lock_map, "point_code = '" + inStructObj.getString("struct_code") + "'"); - //修改任务状态 - taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); - taskObj.put("update_optid", SecurityUtils.getCurrentUserId()); - taskObj.put("update_optname", SecurityUtils.getNickName()); - taskObj.put("update_time", DateUtil.now()); - taskTab.update(taskObj); - } - - - } + public void findNextPoint() {} @Override @Transactional public String createTask(JSONObject form) { + //送空托盘只会有钢托盘有这个需求, 所以终点永远都是 KTPHCW5 都是从码垛机械手送到空托盘缓存位5 PointService pointService = SpringContextHolder.getBean(PointService.class); //起点,托盘 不能为空,终点可以为空 String vehicle_code = form.getString("vehicle_code"); String start_point_code = form.getString("start_point_code"); - String next_point_code = form.getString("next_point_code"); - String task_status = TaskStatusEnum.SURE_START.getCode(); - String next_area = form.getString("next_area"); + String next_point_code = "KTPHCW5"; + String task_status = TaskStatusEnum.START_AND_POINT.getCode(); + String next_area = AreaEnum.DKKTTPQ.getCode(); WQLObject taskTable = WQLObject.getWQLObject("SCH_BASE_Task"); if (StrUtil.isEmpty(start_point_code)) { throw new BadRequestException("起点不能为空!"); @@ -154,7 +118,6 @@ public class SendEmptyVehicleTask extends AbstractAcsTask { if (StrUtil.isEmpty(vehicle_code)) { throw new BadRequestException("载具未找到!"); } - //判断起点有没有未完成的指令 JSONObject beforTaskObj = taskTable. query("is_delete='0' and start_point_code='" + start_point_code + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'") @@ -162,36 +125,8 @@ public class SendEmptyVehicleTask extends AbstractAcsTask { if (ObjectUtil.isNotEmpty(beforTaskObj)) { throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!"); } - - //根据起点去找工序,找一个合适的仓位 并且生成单据 - if (StrUtil.isEmpty(next_point_code)) { - JSONObject workInfo = WQL.getWO("QSTRUCT_RULE").addParam("flag", "1").addParam("code", start_point_code) - .process().uniqueResult(0); - String workprocedure_code = workInfo.getString("workInfo"); - String workprocedure_id = workInfo.getString("workprocedure_id"); - WorkProcedureEnum workProcedureEnum = WorkProcedureEnum.get(workprocedure_id); - switch (workProcedureEnum) { - - - //分拣工序 - case FJGX: - next_area = AreaEnum.DDKTTPQ.getCode(); - break; - default: - next_area = AreaEnum.DDKTTPQ.getCode(); - } - JSONObject param = new JSONObject(); - param.put("area_type", next_area); - param.put("vehicle_code", vehicle_code); - JSONObject inStructObj = StructFindUtil.getEmptyVehicleInStruct(param); - next_point_code = inStructObj.getString("struct_code"); - } - String bill_status = "10"; - if (StrUtil.isNotEmpty(next_point_code)) { - task_status = TaskStatusEnum.START_AND_POINT.getCode(); PointDto nextPoint = pointService.findByCode(next_point_code); - bill_status = "20"; task_status = TaskStatusEnum.START_AND_POINT.getCode(); //锁定终点 HashMap lock_map = new HashMap(); @@ -204,7 +139,7 @@ public class SendEmptyVehicleTask extends AbstractAcsTask { JSONObject EmptyVehicleObj = new JSONObject(); EmptyVehicleObj.put("record_uuid", IdUtil.getSnowflake(1, 1).nextId()); EmptyVehicleObj.put("bill_code", CodeUtil.getNewCode("KZJ_BILL_CODE")); - EmptyVehicleObj.put("bill_status", bill_status); + EmptyVehicleObj.put("bill_status", "20"); EmptyVehicleObj.put("start_point_code", start_point_code); EmptyVehicleObj.put("next_point_code", next_point_code); EmptyVehicleObj.put("start_area", startPoint.getArea_type()); diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/SendMaterialTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/SendMaterialTask.java index deb2e20..62a283f 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/SendMaterialTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/SendMaterialTask.java @@ -135,6 +135,7 @@ public class SendMaterialTask extends AbstractAcsTask { for (int i = 0; i < taskArry.size(); i++) { JSONObject taskObj = taskArry.getJSONObject(i); String task_id = taskObj.getString("task_id"); + String start_point_code = taskObj.getString("start_point_code"); //1 将任务修改为分配 2将终点写入,完成分配,3 加锁点位 //找一个合适的仓位 WQLObject ProcedureIOStable = WQLObject.getWQLObject("ST_IVT_workProcedureIOS"); @@ -164,6 +165,9 @@ public class SendMaterialTask extends AbstractAcsTask { taskObj.put("update_optname", SecurityUtils.getNickName()); taskObj.put("update_time", DateUtil.now()); taskTab.update(taskObj); + //组盘 + + } @@ -173,7 +177,6 @@ public class SendMaterialTask extends AbstractAcsTask { @Transactional public String createTask(JSONObject form) { //请求参数 载具、起点 物料,数量,客户,批次,创建方式 是否满托不能为空! 终点可以不为空时,入库单据编号不能为空 - String vehicle_code = form.getString("vehicle_code"); String start_point_code = form.getString("start_point_code"); String next_point_code = form.getString("next_point_code"); String material_id = form.getString("material_id"); @@ -188,9 +191,6 @@ public class SendMaterialTask extends AbstractAcsTask { if (StrUtil.isEmpty(start_point_code)) { throw new BadRequestException("起点不能为空!"); } - if (StrUtil.isEmpty(vehicle_code)) { - throw new BadRequestException("载具不能为空!"); - } //判断起点有没有未完成的指令 JSONObject beforTaskObj = taskTable. query("is_delete='0' and start_point_code='" + start_point_code + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'") @@ -214,6 +214,8 @@ public class SendMaterialTask extends AbstractAcsTask { JSONObject IosObj = iosTable.query("iostorinv_id='" + iostorinv_id + "'").uniqueResult(0); IosObj.put("bill_status", "20"); iosTable.update(IosObj); + //组盘 + } //如果没给终点,根据起点去找工序,找一个合适的仓位 并且生成入库单,并且锁定点位 if (StrUtil.isEmpty(next_point_code)) { @@ -238,7 +240,6 @@ public class SendMaterialTask extends AbstractAcsTask { WorkProcedureEnum workProcedureEnum = WorkProcedureEnum.get(workprocedure_id); switch (workProcedureEnum) { - // 压制工序 case YZGX: qty_unit_id = BussConstant.HN_IN_QTY_UNIT_ID; @@ -264,7 +265,6 @@ public class SendMaterialTask extends AbstractAcsTask { JSONObject param = new JSONObject(); param.put("material_id", material_id); param.put("area_type", endArea_type); - param.put("vehicle_code", vehicle_code); JSONObject inStructObj = StructFindUtil.getInStruct(param); if (ObjectUtil.isEmpty(inStructObj)) { throw new BadRequestException("未找到合适的入库仓位!"); @@ -274,7 +274,7 @@ public class SendMaterialTask extends AbstractAcsTask { //假如静置时间为0 或者为空,则取物料表上的静置时间 if (StrUtil.isEmpty(stewing_time) || StrUtil.equals(stewing_time, "0")) { stewing_time = WQLObject.getWQLObject("md_me_material").query("material_id ='" + material_id + "'"). - uniqueResult(0).getString("stewing_time"); + uniqueResult(0).getString("stewing_time"); } JSONObject iosObj = new JSONObject(); iosObj.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId()); @@ -284,7 +284,6 @@ public class SendMaterialTask extends AbstractAcsTask { iosObj.put("workprocedure_id", workprocedure_id); iosObj.put("ivt_workprocedure_id", workprocedure_id); iosObj.put("material_id", material_id); - iosObj.put("vehicle_code", vehicle_code); iosObj.put("producetask_id", producetask_id); iosObj.put("stewing_time", stewing_time); iosObj.put("qty", qty); @@ -304,6 +303,8 @@ public class SendMaterialTask extends AbstractAcsTask { iosObj.put("create_time", DateUtil.now()); iosObj.put("is_full", is_full); WQLObject.getWQLObject("ST_IVT_workProcedureIOS").insert(iosObj); + //组盘 + } String task_status = TaskStatusEnum.START_AND_POINT.getCode(); PointDto nextPoint = pointService.findByCode(next_point_code); @@ -311,7 +312,6 @@ public class SendMaterialTask extends AbstractAcsTask { HashMap lock_map = new HashMap(); lock_map.put("lock_type", "01"); WQLObject.getWQLObject("sch_base_point").update(lock_map, "point_code = '" + next_point_code + "'"); - CodeUtil.getNewCode("TASK_CODE"); JSONObject taskObj = new JSONObject(); taskObj.put("task_id", task_id); taskObj.put("task_code", CodeUtil.getNewCode("TASK_CODE")); @@ -323,7 +323,6 @@ public class SendMaterialTask extends AbstractAcsTask { taskObj.put("request_param", form.toJSONString()); taskObj.put("next_point_code", next_point_code); taskObj.put("next_area", nextPoint.getArea_type()); - taskObj.put("vehicle_code", vehicle_code); taskObj.put("handle_class", THIS_CLASS); taskObj.put("is_auto_issue", "1"); taskObj.put("create_name", SecurityUtils.getCurrentUsername()); @@ -331,6 +330,23 @@ public class SendMaterialTask extends AbstractAcsTask { taskObj.put("create_time", DateUtil.now()); taskObj.put("is_delete", "0"); taskTable.insert(taskObj); + //组盘 + JSONObject jo = new JSONObject(); + String is_autopackage = "1"; + if (StrUtil.equals(start_point_code, "MDJXS601")) { + is_autopackage = "0"; + } + JSONObject materialObj = WQLObject.getWQLObject("md_me_material").query("material_id='" + material_id + "'").uniqueResult(0); + String group_id = IdUtil.getSnowflake(1, 1).nextIdStr(); + jo.put("group_id", group_id); + jo.put("material_id", material_id); + jo.put("material_code", materialObj.getString("material_code")); + jo.put("material_name", materialObj.getString("material_name")); + jo.put("is_autopackage", is_autopackage); + jo.put("pcsn", pcsn); + jo.put("qty", qty); + WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup"); + groupTable.insert(jo); return task_id; } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/ToConveyorTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/ToConveyorTask.java new file mode 100644 index 0000000..496d01f --- /dev/null +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/ToConveyorTask.java @@ -0,0 +1,259 @@ +package org.nl.wms.sch.manage.buss; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.exception.BadRequestException; +import org.nl.modules.system.util.CodeUtil; +import org.nl.utils.SecurityUtils; +import org.nl.utils.SpringContextHolder; +import org.nl.wms.BussConstant; +import org.nl.wms.WorkProcedureEnum; +import org.nl.wms.common.StructFindUtil; +import org.nl.wms.sch.manage.AbstractAcsTask; +import org.nl.wms.sch.manage.AreaEnum; +import org.nl.wms.sch.manage.BillTypeEnum; +import org.nl.wms.sch.manage.TaskStatusEnum; +import org.nl.wms.sch.service.PointService; +import org.nl.wms.sch.service.dto.PointDto; +import org.nl.wms.sch.service.impl.PointServiceImpl; +import org.nl.wms.st.ivt.IvtChangeTypeEnum; +import org.nl.wms.st.ivt.StoreIvtServiceImpl; +import org.nl.wql.WQL; +import org.nl.wql.core.bean.WQLObject; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.HashMap; + +@Service +@RequiredArgsConstructor +@Slf4j +public class ToConveyorTask extends AbstractAcsTask { + private final String THIS_CLASS = ToConveyorTask.class.getName(); + + + @Override + @Transactional + public void updateTaskStatus(JSONObject taskObj, String status) { + /** + *改变任务状态 + **/ + String task_id = taskObj.getString("task_id"); + WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); + JSONObject jsonTask = taskTab.query("task_id='" + task_id + "'").uniqueResult(0); + if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { + //更新任务状态为执行中 + jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); + jsonTask.put("update_time", DateUtil.now()); + taskTab.update(jsonTask); + HashMap map = new HashMap(); + map.put("update_optid", SecurityUtils.getCurrentUserId()); + map.put("update_optname", SecurityUtils.getNickName()); + map.put("update_time", DateUtil.now()); + map.put("bill_status", "40"); + WQLObject.getWQLObject("ST_IVT_workProcedureIOS").update(map, "task_id='" + jsonTask.getString("task_id") + "'"); + } + + if (TaskStatusEnum.FINISHED.getCode().equals(status)) { + // 更新任务状态为完成 + jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode()); + jsonTask.put("taskfinish_mode", taskObj.getString("taskfinish_mode")); + jsonTask.put("update_time", DateUtil.now()); + jsonTask.put("remark", "任务执行完成"); + ///审核单据 增加库存 改变出入库表的状态 + WQLObject mstTab = WQLObject.getWQLObject("ST_IVT_workProcedureIOS"); + JSONObject mstObj = mstTab.query("task_id='" + task_id + "' and is_delete='0'").uniqueResult(0); + //审核 加库存可和用数量 + StoreIvtServiceImpl ivtService = new StoreIvtServiceImpl(); + mstObj.put("bill_status", "50"); + mstObj.put("confirm_optid", SecurityUtils.getCurrentUserId()); + mstObj.put("confirm_optname", SecurityUtils.getNickName()); + mstObj.put("confirm_time", DateUtil.now()); + mstTab.update(mstObj); + + String iostorinv_id = mstObj.getString("iostorinv_id"); + String next_point_code = mstObj.getString("end_point_code"); + String start_point_code = mstObj.getString("start_point_code"); + JSONObject param = new JSONObject(); + param.put("material_id", mstObj.getString("material_id")); + param.put("bill_id", iostorinv_id); + param.put("qty_unit_id", mstObj.getString("qty_unit_id")); + param.put("pcsn", mstObj.getString("pcsn")); + param.put("change_qty", mstObj.getString("qty")); + param.put("vehicle_code", mstObj.getString("vehicle_code")); + param.put("workprocedure_id", mstObj.getString("workprocedure_id")); + param.put("is_full", mstObj.getString("is_full")); + param.put("stewing_time", mstObj.getString("stewing_time")); + param.put("producetask_id", mstObj.getString("producetask_id")); + + PointServiceImpl pointService = SpringContextHolder.getBean(PointServiceImpl.class); + PointDto nextPointDto = pointService.findByCode(next_point_code); + if (ObjectUtil.isNull(nextPointDto)) { + throw new BadRequestException("未找到可用点位:" + next_point_code); + } + PointDto startPointDto = pointService.findByCode(start_point_code); + if (ObjectUtil.isNull(startPointDto)) { + throw new BadRequestException("未找到可用点位:" + start_point_code); + } + param.put("struct_id", nextPointDto.getPoint_id()); + ivtService.addIvtFlow(param, IvtChangeTypeEnum.ADD_IVT_AND_CAN_USE); + //解锁仓位,托盘信息,回写到点位上去 + String vehicle_code = jsonTask.getString("vehicle_code"); + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + JSONObject endpointObj = pointTab.query("point_code='" + jsonTask.getString("next_point_code") + "'").uniqueResult(0); + endpointObj.put("lock_type", "00"); + endpointObj.put("point_status", "02"); + endpointObj.put("vehicle_code", vehicle_code); + pointTab.update(endpointObj); + + JSONObject startPointObj = pointTab.query("point_code='" + jsonTask.getString("start_point_code") + "'").uniqueResult(0); + startPointObj.put("lock_type", "00"); + startPointObj.put("point_status", "00"); + startPointObj.put("vehicle_code", ""); + pointTab.update(startPointObj); + taskTab.update(jsonTask); + } + + } + + @Override + public void findStartPoint() { + + } + + @Override + public void findNextPoint() { + String task_status = TaskStatusEnum.SURE_START.getCode(); + WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); + JSONArray taskArry = taskTab.query("task_status='" + task_status + "' AND handle_class='" + THIS_CLASS + "' AND is_delete='0' ").getResultJSONArray(0); + for (int i = 0; i < taskArry.size(); i++) { + JSONObject taskObj = taskArry.getJSONObject(i); + String task_id = taskObj.getString("task_id"); + //1 将任务修改为分配 2将终点写入,完成分配,3 加锁点位 + //找一个合适的仓位 + WQLObject ProcedureIOStable = WQLObject.getWQLObject("ST_IVT_workProcedureIOS"); + JSONObject IosObj = ProcedureIOStable.query("task_id='" + task_id + "' and is_delete ='0'").uniqueResult(0); + if (ObjectUtil.isEmpty(IosObj)) { + throw new BadRequestException("未找到任务号为'" + taskObj.getString("task_code") + "'的入库单据!"); + } + JSONObject param = new JSONObject(); + param.put("material_id", IosObj.getString("material_id")); + param.put("area_type", IosObj.getString("end_area")); + param.put("vehicle_code", IosObj.getString("vehicle_code")); + JSONObject inStructObj = StructFindUtil.getInStruct(param); + if (ObjectUtil.isEmpty(inStructObj)) { + throw new BadRequestException("未找到合适的入库仓位!"); + } + //修改单据状态,将终点填入 + IosObj.put("bill_status", "20"); + IosObj.put("end_point_code", inStructObj.getString("struct_code")); + ProcedureIOStable.update(IosObj); + //终点加锁 + HashMap lock_map = new HashMap(); + lock_map.put("lock_type", "01"); + WQLObject.getWQLObject("sch_base_point").update(lock_map, "point_code = '" + inStructObj.getString("struct_code") + "'"); + //修改任务状态 + taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); + taskObj.put("update_optid", SecurityUtils.getCurrentUserId()); + taskObj.put("update_optname", SecurityUtils.getNickName()); + taskObj.put("update_time", DateUtil.now()); + taskTab.update(taskObj); + } + + + } + + @Override + @Transactional + public String createTask(JSONObject form) { + //请求参数 载具、起点 物料,数量,客户,批次,创建方式 是否满托不能为空! 终点可以不为空时,入库单据编号不能为空 + String vehicle_code = form.getString("vehicle_code"); + String start_point_code = form.getString("start_point_code"); + String next_point_code = form.getString("next_point_code"); + String material_id = form.getString("material_id"); + String is_full = form.getString("is_full"); + String qty = form.getString("qty"); + String pcsn = form.getString("pcsn"); + WQLObject taskTable = WQLObject.getWQLObject("SCH_BASE_Task"); + if (StrUtil.isEmpty(start_point_code)) { + throw new BadRequestException("起点不能为空!"); + } + if (StrUtil.isEmpty(next_point_code)){ + throw new BadRequestException("终点不能为空!"); + } + String is_autopackage = "1"; + if (StrUtil.equals(start_point_code, "MDJXS601")) { + is_autopackage = "0"; + } + String task_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + JSONObject materialObj = WQLObject.getWQLObject("md_me_material").query("material_id='" + material_id + "'").uniqueResult(0); + //组盘 + JSONObject jo = new JSONObject(); + String group_id = IdUtil.getSnowflake(1, 1).nextIdStr(); + jo.put("group_id", group_id); + jo.put("material_id", material_id); + jo.put("material_code", materialObj.getString("material_code")); + jo.put("material_name", materialObj.getString("material_name")); + jo.put("vehicle_code", vehicle_code); + jo.put("is_autopackage", is_autopackage); + jo.put("pcsn", pcsn); + jo.put("qty", qty); + jo.put("create_id",SecurityUtils.getCurrentUserId()); + jo.put("create_name",SecurityUtils.getNickName()); + jo.put("create_time",DateUtil.now()); + jo.put("task_id",task_id); + WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup"); + groupTable.insert(jo); + + PointService pointService = SpringContextHolder.getBean(PointService.class); + PointDto startPoint = pointService.findByCode(start_point_code); + + String task_status = TaskStatusEnum.START_AND_POINT.getCode(); + PointDto nextPoint = pointService.findByCode(next_point_code); + JSONObject taskObj = new JSONObject(); + taskObj.put("task_id", task_id); + taskObj.put("task_code", CodeUtil.getNewCode("TASK_CODE")); + taskObj.put("task_type", "00"); + taskObj.put("acs_task_type", "1"); + taskObj.put("task_status", task_status); + taskObj.put("start_point_code", start_point_code); + taskObj.put("start_area", startPoint.getArea_type()); + taskObj.put("request_param", form.toJSONString()); + taskObj.put("next_point_code", next_point_code); + taskObj.put("next_area", nextPoint.getArea_type()); + taskObj.put("vehicle_code", vehicle_code); + taskObj.put("handle_class", THIS_CLASS); + taskObj.put("is_auto_issue", "1"); + taskObj.put("create_name", SecurityUtils.getCurrentUsername()); + taskObj.put("create_id", SecurityUtils.getCurrentUserId()); + taskObj.put("create_time", DateUtil.now()); + taskObj.put("is_delete", "0"); + taskTable.insert(taskObj); + return task_id; + } + + + @Override + public void forceFinish(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); + } + + @Override + public void pullBack(String task_id) { + + } + + @Override + public void cancel(String task_id) { + + } + + +} diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/wms.xls b/wms/hd/nladmin-system/src/main/java/org/nl/wms/wms.xls index 27958d1..a63f05c 100644 Binary files a/wms/hd/nladmin-system/src/main/java/org/nl/wms/wms.xls and b/wms/hd/nladmin-system/src/main/java/org/nl/wms/wms.xls differ diff --git a/wms/qd/src/views/wms/pdm/produceTask/index.vue b/wms/qd/src/views/wms/pdm/produceTask/index.vue index bc1d109..60eee88 100644 --- a/wms/qd/src/views/wms/pdm/produceTask/index.vue +++ b/wms/qd/src/views/wms/pdm/produceTask/index.vue @@ -175,14 +175,6 @@ - - - - - - - - @@ -217,10 +209,6 @@ /> - - - -