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 index 998b3f1..a858257 100644 --- 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 @@ -12,54 +12,48 @@ import org.nl.wql.core.bean.WQLObject; import org.springframework.http.HttpStatus; public class PointUpdateUtil { - public static void updatePoint(JSONArray arr) { - String isConnect = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("IS_CONNECT_ACS").getValue(); - if (StrUtil.equals("0", isConnect)) { - return; - } - new Thread(() -> { - try { - WmsToAcsServiceImpl wmsToAcsServiceImpl = new WmsToAcsServiceImpl(); - JSONObject joo = wmsToAcsServiceImpl.queryPointStatus(arr); - JSONArray pointarr = joo.getJSONArray("data"); - //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 mode = pointjo.getString("mode"); - String point_status = "0" + pointjo.getString("move"); - //String vehicle_code = pointjo.getString("vehicle_code"); - String vehicle_code = pointjo.getString("barcode"); - String device_code = pointjo.getString("device_code"); - //物料类型 - String weight = pointjo.getString("weight"); - //物料 - String material_code = pointjo.getString("material"); - //将托盘类型123,改为 03,04,05,默认给01 - String pallet_type = "01"; - if (!StrUtil.equals("0", pointjo.getString("pallet_type"))) { - pallet_type = "0" + (pointjo.getIntValue("pallet_type") + 2); - } - pointjo.put("point_status", point_status); - if (StrUtil.equals(vehicle_code, "0")) { - vehicle_code = ""; - } - JSONObject pointObj = pointTable.query("point_code ='" + device_code + "'").uniqueResult(0); - pointObj.put("vehicle_code", vehicle_code); - pointObj.put("point_status", point_status); - pointObj.put("vehicle_type", pallet_type); - pointObj.put("material_type", weight); - pointObj.put("material_code", material_code); - pointObj.put("mode", mode); - pointTable.update(pointObj); - } - } catch (Exception e) { - e.printStackTrace(); - } - }).start(); - + public static void updatePoint(JSONArray arr) { + String isConnect = + SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("IS_CONNECT_ACS").getValue(); + if (StrUtil.equals("0", isConnect)) { + return; } + try { + WmsToAcsServiceImpl wmsToAcsServiceImpl = new WmsToAcsServiceImpl(); + JSONObject joo = wmsToAcsServiceImpl.queryPointStatus(arr); + JSONArray pointarr = joo.getJSONArray("data"); + WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); + for (int i = 0; i < pointarr.size(); i++) { + JSONObject pointjo = pointarr.getJSONObject(i); + String mode = pointjo.getString("mode"); + String point_status = "0" + pointjo.getString("move"); + String vehicle_code = pointjo.getString("barcode"); + String device_code = pointjo.getString("device_code"); + // 物料类型 + String weight = pointjo.getString("weight"); + // 物料 + String material_code = pointjo.getString("material"); + // 将托盘类型123,改为 03,04,05,默认给01 + String pallet_type = "01"; + if (!StrUtil.equals("0", pointjo.getString("pallet_type"))) { + pallet_type = "0" + (pointjo.getIntValue("pallet_type") + 2); + } + pointjo.put("point_status", point_status); + if (StrUtil.equals(vehicle_code, "0")) { + vehicle_code = ""; + } + JSONObject pointObj = pointTable.query("point_code ='" + device_code + "'").uniqueResult(0); + pointObj.put("vehicle_code", vehicle_code); + pointObj.put("point_status", point_status); + pointObj.put("vehicle_type", pallet_type); + pointObj.put("material_type", weight); + pointObj.put("material_code", material_code); + pointObj.put("mode", mode); + pointTable.update(pointObj); + } + } catch (Exception e) { - + e.printStackTrace(); + } + } } 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 d8a9f85..f27d0ee 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 @@ -94,7 +94,7 @@ public class StructFindUtil { } } JSONObject result = new JSONObject(); - // 木托盘区 + // 木托盘区--RGV if (StrUtil.equals("05", area_type)) { result = WQL.getWO("QSTRUCT_RULE").addParam("flag", "11") .addParam("area_type", area_type).addParam("vehicle_type", vehicle_type).process().uniqueResult(0); 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 9e6590e..5800641 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 @@ -350,8 +350,9 @@ IF 输入.flag = "11" LEFT JOIN md_pb_vehicle vehicle ON vehicle.vehicle_code = point.vehicle_code AND point.vehicle_code <> '' WHERE - point.lock_type = '00' - AND point.point_status = '01' + point.point_status = '01' + and + ( point.lock_type = '00' or point.lock_type = '01') OPTION 输入.area_type <> "" point.area_type = 输入.area_type ENDOPTION 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 deb413e..c1837f8 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 @@ -15,6 +15,8 @@ public interface AcsToWmsService { */ Map receiveTaskFromAcs(Map jsonObject); + + Map receiveTaskFromAcsTrancs(Map jsonObject); /** * ACS客户端--->WMS服务端 * ACS机械手给WMS发送任务 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 c2626c8..f1a6b28 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 @@ -32,6 +32,7 @@ import org.nl.wms.sch.service.dto.PointDto; import org.nl.wms.sch.service.dto.TaskDto; import org.nl.wql.WQL; import org.nl.wql.core.bean.WQLObject; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -55,8 +56,20 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { private final FmjToPackIngTask fmjToPackIngTask; private final VehicleService vehicleService; + @Autowired + private AcsToWmsService acsToWmsService; + @Override public Map receiveTaskFromAcs(Map jsonObject) { + String type = (String) jsonObject.get("type"); + synchronized (type) { + return acsToWmsService.receiveTaskFromAcsTrancs(jsonObject); + } + } + + @Override + @Transactional + public Map receiveTaskFromAcsTrancs(Map jsonObject) { log.debug("ACS的receiveTaskFromAcs请求参数为:" + jsonObject); String device_code = (String) jsonObject.get("device_code"); String type = (String) jsonObject.get("type"); @@ -72,345 +85,353 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); WQLObject structivtTable = WQLObject.getWQLObject("st_ivt_structivt"); - synchronized (type) { - switch (type) { - // 送料入库 - case "1": - jsonObject.put("start_point_code", device_code); - jsonObject.put("create_mode", "01"); - jsonObject.put("group_id", group_id); - // 假如是半托缓存的几个位置,强制去包装 - String area_type = + + switch (type) { + // 送料入库 + case "1": + jsonObject.put("start_point_code", device_code); + jsonObject.put("create_mode", "01"); + jsonObject.put("group_id", group_id); + // 假如是半托缓存的几个位置,强制去包装 + String area_type = + pointTable + .query("point_code ='" + device_code + "'") + .uniqueResult(0) + .getString("area_type"); + if (StrUtil.equals(area_type, AreaEnum.BTHCQ.getCode())) { + fmjToPackIngTask.createTask((JSONObject) JSON.toJSON(jsonObject)); + // 生成到包装位的任务时,下发托盘类型给RGV + String point_id = pointTable .query("point_code ='" + device_code + "'") .uniqueResult(0) - .getString("area_type"); - if (StrUtil.equals(area_type, AreaEnum.BTHCQ.getCode())) { - fmjToPackIngTask.createTask((JSONObject) JSON.toJSON(jsonObject)); - // 生成到包装位的任务时,下发托盘类型给RGV - String point_id = - pointTable - .query("point_code ='" + device_code + "'") - .uniqueResult(0) - .getString("point_id"); - String material_id = - structivtTable - .query("struct_id ='" + point_id + "'") - .uniqueResult(0) - .getString("material_id"); - JSONObject materiralObj1 = - WQLObject.getWQLObject("md_me_material") - .query("material_id = '" + material_id + "'") - .uniqueResult(0); - // 寻找对应的托盘类型 + .getString("point_id"); + String material_id = + structivtTable + .query("struct_id ='" + point_id + "'") + .uniqueResult(0) + .getString("material_id"); + JSONObject materiralObj1 = + WQLObject.getWQLObject("md_me_material") + .query("material_id = '" + material_id + "'") + .uniqueResult(0); + // 寻找对应的托盘类型 + String vehicle_type = + vehicleService.getVehicleType(materiralObj1.getString("vehicle_type")); + JSONObject jsonObject1 = new JSONObject(); + JSONArray array = new JSONArray(); + jsonObject1.put("device_code", "RGV2"); + jsonObject1.put("code", "to_container_type"); + jsonObject1.put("value", vehicle_type); + array.add(jsonObject1); + wmsToAcsServiceImpl.action(array); + break; + } + if (StrUtil.isEmpty(is_full)) { + throw new BadRequestException("托盘是否满托不能为空!"); + } + String material_code = (String) jsonObject.get("material_code"); + String producetask_id = (String) jsonObject.get("producetask_id"); + String material_id = ""; + JSONObject materialObj = + WQLObject.getWQLObject("md_me_material") + .query("material_code ='" + material_code + "'") + .uniqueResult(0); + if (StrUtil.isEmpty(material_code) + && (!StrUtil.equals(device_code, "CYSSX101")) + && !StrUtil.equals(device_code.substring(0, 4), "BTHC")) { + throw new BadRequestException("物料不能为空!"); + } + if (!StrUtil.equals(device_code, "CYSSX101") + && !StrUtil.equals(device_code.substring(0, 4), "BTHC")) { + material_id = materialObj.getString("material_id"); + } + // 如果是出窑输送线 要从组盘表里面去找物料 + if (StrUtil.equals(device_code, "CYSSX101")) { + String vehicle_code = jsonObject.get("vehicle_code").toString(); + if (StrUtil.isEmpty(vehicle_code)) { + throw new BadRequestException("载具不能为空!"); + } + 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 + "'的组盘信息!"); + } + material_id = vehicleObj.getString("material_id"); + if (ObjectUtil.isEmpty(vehicleObj.getString("qty"))) { + jsonObject.put("qty", "0"); + } else { + jsonObject.put("qty", vehicleObj.getString("qty")); + } + + jsonObject.put("vehicle_code", vehicle_code); + } + jsonObject.put("producetask_id", producetask_id); + 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); + Double stewing_time = materiralObj.getDouble("stewing_time"); + jsonObject.put("stewing_time", stewing_time); + // 假如是压制下料的几个位置,则要考虑是入输送线 还是入立体库 + if (StrUtil.equals(area_type, AreaEnum.YZQY.getCode()) && stewing_time <= 0) { + // 1.首先更新所有输送线的点位状态 + JSONArray pointarr = + WQL.getWO("ACSTOMES_001") + .addParam("area_type", "07") + .addParam("flag", "4") + .process() + .getResultJSONArray(0); + PointUpdateUtil.updatePoint(pointarr); + // 2.找一个合适的输送带 + JSONObject pointObj = StructFindUtil.getConveyor(materiralObj); + // 如果未找到合适的输送带 就去货架 + if (ObjectUtil.isNotEmpty(pointObj)) { + jsonObject.put("next_point_code", pointObj.getString("point_code")); + jsonObject.put("group_id", group_id); + toConveyorTask.createTask((JSONObject) JSON.toJSON(jsonObject)); + // 假如是压制下料的几个位置 需要记 录不合格数量 + if (StrUtil.equals(area_type, AreaEnum.YZQY.getCode())) { + JSONObject joo = new JSONObject(); + joo.put("qty", jsonObject.get("unqualified_qty")); + joo.put("device_code", device_code); + try { + String record_id = PressureUtil.record(joo); + // 回传不合格记录 + WmsToJnServiceImpl wmsToJnService = new WmsToJnServiceImpl(); + wmsToJnService.feedBackQualityInfo(record_id); + } catch (Exception e) { + log.info("回传MES记录不合格异常!"); + e.printStackTrace(); + } + } + break; + } + } + // 假如是分拣机械手的下料位置,并且是满托,则去包装线 + if (StrUtil.equals("1", is_full) && StrUtil.equals(area_type, AreaEnum.FJQY.getCode())) { + String vehicle_code = + pointTable + .query("point_code ='" + device_code + "'") + .uniqueResult(0) + .getString("vehicle_code"); + jsonObject.put("vehicle_code", vehicle_code); + // if (StrUtil.isEmpty(vehicle_code)) { + // throw new BadRequestException("当前点位载具号为空!"); + // } + toPackIngTask.createTask((JSONObject) JSON.toJSON(jsonObject)); + + // 生成到包装位的任务时,下发托盘类型给RGV + JSONObject vehicleObj = + WQLObject.getWQLObject("md_pb_vehicle") + .query("vehicle_code='" + vehicle_code + "'", "create_time desc") + .uniqueResult(0); + if (ObjectUtil.isNotEmpty(vehicleObj)) { String vehicle_type = - vehicleService.getVehicleType(materiralObj1.getString("vehicle_type")); + vehicleService.getVehicleType(vehicleObj.getString("vehicle_type")); JSONObject jsonObject1 = new JSONObject(); JSONArray array = new JSONArray(); jsonObject1.put("device_code", "RGV2"); jsonObject1.put("code", "to_container_type"); jsonObject1.put("value", vehicle_type); array.add(jsonObject1); - wmsToAcsServiceImpl.action(array); - break; - } - if (StrUtil.isEmpty(is_full)) { - throw new BadRequestException("托盘是否满托不能为空!"); - } - String material_code = (String) jsonObject.get("material_code"); - String producetask_id = (String) jsonObject.get("producetask_id"); - String material_id = ""; - JSONObject materialObj = - WQLObject.getWQLObject("md_me_material") - .query("material_code ='" + material_code + "'") - .uniqueResult(0); - if (StrUtil.isEmpty(material_code) - && (!StrUtil.equals(device_code, "CYSSX101")) - && !StrUtil.equals(device_code.substring(0, 4), "BTHC")) { - throw new BadRequestException("物料不能为空!"); - } - if (!StrUtil.equals(device_code, "CYSSX101") - && !StrUtil.equals(device_code.substring(0, 4), "BTHC")) { - material_id = materialObj.getString("material_id"); - } - // 如果是出窑输送线 要从组盘表里面去找物料 - if (StrUtil.equals(device_code, "CYSSX101")) { - String vehicle_code = jsonObject.get("vehicle_code").toString(); - if (StrUtil.isEmpty(vehicle_code)) { - throw new BadRequestException("载具不能为空!"); - } - 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 + "'的组盘信息!"); - } - material_id = vehicleObj.getString("material_id"); - if (ObjectUtil.isEmpty(vehicleObj.getString("qty"))) { - jsonObject.put("qty", "0"); - } else { - jsonObject.put("qty", vehicleObj.getString("qty")); + try { + wmsToAcsServiceImpl.action(array); + } catch (Exception e) { + e.printStackTrace(); } + } + break; + } - jsonObject.put("vehicle_code", vehicle_code); - } - jsonObject.put("producetask_id", producetask_id); - 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); - Double stewing_time = materiralObj.getDouble("stewing_time"); - jsonObject.put("stewing_time", stewing_time); - // 假如是压制下料的几个位置,则要考虑是入输送线 还是入立体库 - if (StrUtil.equals(area_type, AreaEnum.YZQY.getCode()) && stewing_time <= 0) { - // 1.首先更新所有输送线的点位状态 - JSONArray pointarr = - WQL.getWO("ACSTOMES_001") - .addParam("area_type", "07") - .addParam("flag", "4") - .process() - .getResultJSONArray(0); - PointUpdateUtil.updatePoint(pointarr); - // 2.找一个合适的输送带 - JSONObject pointObj = StructFindUtil.getConveyor(materiralObj); - // 如果未找到合适的输送带 就去货架 - if (ObjectUtil.isNotEmpty(pointObj)) { - jsonObject.put("next_point_code", pointObj.getString("point_code")); - jsonObject.put("group_id", group_id); - toConveyorTask.createTask((JSONObject) JSON.toJSON(jsonObject)); - // 假如是压制下料的几个位置 需要记 录不合格数量 - if (StrUtil.equals(area_type, AreaEnum.YZQY.getCode())) { - JSONObject joo = new JSONObject(); - joo.put("qty", jsonObject.get("unqualified_qty")); - joo.put("device_code", device_code); - String record_id = PressureUtil.record(joo); - // 回传不合格记录 - // Wms/api/produceTaskToJnServiceImpl wmsToJnService = new WmsToJnServiceImpl(); - WmsToJnServiceImpl wmsToJnService = new WmsToJnServiceImpl(); - wmsToJnService.feedBackQualityInfo(record_id); - } - break; - } - } - // 假如是分拣机械手的下料位置,并且是满托,则去包装线 - if (StrUtil.equals("1", is_full) && StrUtil.equals(area_type, AreaEnum.FJQY.getCode())) { - String vehicle_code = - pointTable - .query("point_code ='" + device_code + "'") - .uniqueResult(0) - .getString("vehicle_code"); - jsonObject.put("vehicle_code", vehicle_code); - // if (StrUtil.isEmpty(vehicle_code)) { - // throw new BadRequestException("当前点位载具号为空!"); - // } - toPackIngTask.createTask((JSONObject) JSON.toJSON(jsonObject)); + // 假如是分拣机械手的下料位置,则需要将点位上的托盘号写入 + if (StrUtil.equals(area_type, AreaEnum.FJQY.getCode())) { + String vehicle_code = + pointTable + .query("point_code ='" + device_code + "'") + .uniqueResult(0) + .getString("vehicle_code"); + jsonObject.put("vehicle_code", vehicle_code); + } + String task_id = sendMaterialTask.createTask((JSONObject) JSON.toJSON(jsonObject)); + log.info("创建送料任务标识:" + task_id); + // 假如是压制下料的几个位置 需要记录不合格数量 + if (StrUtil.equals(area_type, AreaEnum.YZQY.getCode())) { + WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup"); + JSONObject groupInfo = groupTable.query("task_id='" + task_id + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(groupInfo)) { + log.info("判断送料任务标识异常:" + task_id); - // 生成到包装位的任务时,下发托盘类型给RGV - JSONObject vehicleObj = - WQLObject.getWQLObject("md_pb_vehicle") - .query("vehicle_code='" + vehicle_code + "'", "create_time desc") - .uniqueResult(0); - if (ObjectUtil.isNotEmpty(vehicleObj)) { - String vehicle_type = - vehicleService.getVehicleType(vehicleObj.getString("vehicle_type")); - JSONObject jsonObject1 = new JSONObject(); - JSONArray array = new JSONArray(); - jsonObject1.put("device_code", "RGV2"); - jsonObject1.put("code", "to_container_type"); - jsonObject1.put("value", vehicle_type); - array.add(jsonObject1); - try { - wmsToAcsServiceImpl.action(array); - } catch (Exception e) { - e.printStackTrace(); - } - } - break; + throw new BadRequestException("压制满料扫码组盘错误,任务标识:" + task_id); } + log.info("判断送料任务正常:" + task_id); - // 假如是分拣机械手的下料位置,则需要将点位上的托盘号写入 - if (StrUtil.equals(area_type, AreaEnum.FJQY.getCode())) { - String vehicle_code = - pointTable - .query("point_code ='" + device_code + "'") - .uniqueResult(0) - .getString("vehicle_code"); - jsonObject.put("vehicle_code", vehicle_code); - } - String task_id = sendMaterialTask.createTask((JSONObject) JSON.toJSON(jsonObject)); - log.info("创建送料任务标识:"+task_id); - // 假如是压制下料的几个位置 需要记录不合格数量 - if (StrUtil.equals(area_type, AreaEnum.YZQY.getCode())) { - WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup"); - JSONObject groupInfo = groupTable.query("task_id='" + task_id + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(groupInfo)) { - log.info("判断送料任务标识异常:"+task_id); - - throw new BadRequestException("压制满料扫码组盘错误,任务标识:" + task_id); - } - log.info("判断送料任务正常:"+task_id); - - JSONObject joo = new JSONObject(); - joo.put("qty", jsonObject.get("unqualified_qty")); - joo.put("device_code", device_code); + JSONObject joo = new JSONObject(); + joo.put("qty", jsonObject.get("unqualified_qty")); + joo.put("device_code", device_code); + try { String record_id = PressureUtil.record(joo); // 回传不合格记录 WmsToJnServiceImpl wmsToJnService = new WmsToJnServiceImpl(); wmsToJnService.feedBackQualityInfo(record_id); + } catch (Exception e) { + log.info("回传MES记录不合格异常!"); + e.printStackTrace(); } + } - break; - case "2": - // 叫料出库 - jsonObject.put("next_point_code", device_code); - jsonObject.put("create_mode", "01"); - // 机械手1 is_full给1 ,机械手3is_full给空,半托,跟满托都可以出 - if (StrUtil.equals(device_code, "FJJXSSLW101") - || StrUtil.equals(device_code, "FJJXSSLW102")) { - is_full = "1"; - } - if (StrUtil.equals(device_code, "FJJXSSLW301") - || StrUtil.equals(device_code, "FJJXSSLW302")) { - is_full = "2"; - } - jsonObject.put("is_full", is_full); - produceInfoByCode = this.getProduceInfoByCode(device_code); - // 批次 物料,客户要从排产单里面去取 - jsonObject.put("material_id", produceInfoByCode.getString("material_id")); - callMaterialTask.createTask((JSONObject) JSON.toJSON(jsonObject)); - break; + break; + case "2": + // 叫料出库 + jsonObject.put("next_point_code", device_code); + jsonObject.put("create_mode", "01"); + // 机械手1 is_full给1 ,机械手3is_full给空,半托,跟满托都可以出 + if (StrUtil.equals(device_code, "FJJXSSLW101") + || StrUtil.equals(device_code, "FJJXSSLW102")) { + is_full = "1"; + } + if (StrUtil.equals(device_code, "FJJXSSLW301") + || StrUtil.equals(device_code, "FJJXSSLW302")) { + is_full = "2"; + } + jsonObject.put("is_full", is_full); + produceInfoByCode = this.getProduceInfoByCode(device_code); + // 批次 物料,客户要从排产单里面去取 + jsonObject.put("material_id", produceInfoByCode.getString("material_id")); + callMaterialTask.createTask((JSONObject) JSON.toJSON(jsonObject)); + break; - case "3": - // 送空托盘 - jsonObject.put("start_point_code", device_code); - sendEmptyVehicleTask.createTask((JSONObject) JSON.toJSON(jsonObject)); - break; - case "4": - // 叫空托盘 - jsonObject.put("next_point_code", device_code); - // 如果是叠盘位3 ,则去铁托盘缓存区取 - if (StrUtil.equals(device_code, "KTPDDW3")) { - // 1 更新缓存位 - JSONArray pointarr = - WQL.getWO("ACSTOMES_001") - .addParam("area_type", AreaEnum.KTTHCQ.getCode()) - .addParam("flag", "4") - .process() - .getResultJSONArray(0); - PointUpdateUtil.updatePoint(pointarr); - jsonObject.put("vehicle_type", VehicleTypeEnum.GTP.getCode()); - } else { - produceInfoByCode = this.getProduceInfoByCode(device_code); - // 假如是码垛位的上料位,则去看看有没有当前排产单生产的物料的半满托 - if (StrUtil.equals(device_code, "FJJXSXLW201") - || StrUtil.equals(device_code, "FJJXSXLW202") - || StrUtil.equals(device_code, "FJJXSXLW301") - || StrUtil.equals(device_code, "FJJXSXLW302")) { - - JSONObject joo = pointTable.query("point_code='" + device_code + "'").uniqueResult(0); - material_id = produceInfoByCode.getString("material_id"); - 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) - .addParam("device_id", joo.getString("device_id")) - .process() - .uniqueResult(0); - if (ObjectUtil.isNotEmpty(jsonObject1)) { - // 如果有库存,则出半满托盘 - // 叫料出库 - jsonObject.put("next_point_code", device_code); - jsonObject.put("create_mode", "01"); - jsonObject.put("material_id", material_id); - jsonObject.put("is_full", "0"); - jsonObject.put("workprocedure_id", WorkProcedureEnum.BZGX.getId()); - jsonObject.put("group_device", jsonObject1.getString("group_device_id")); - callMaterialTask.createTask((JSONObject) JSON.toJSON(jsonObject)); - break; - } - // 需要更新覆膜机的托盘类型 - JSONArray pointarr = - WQL.getWO("ACSTOMES_001") - .addParam("area_type", "05") - .addParam("flag", "4") - .process() - .getResultJSONArray(0); - PointUpdateUtil.updatePoint(pointarr); - } - if (ObjectUtil.isEmpty(produceInfoByCode)) { - throw new BadRequestException("未找到点位为'" + device_code + "'对应机械手的生产工单!"); - } - jsonObject.put("vehicle_type", produceInfoByCode.getString("vehicle_type")); - // 需要更新堆叠位的点位状态 - JSONArray pointarr = - WQL.getWO("ACSTOMES_001") - .addParam("point_code", "KTPDDW5") - .addParam("flag", "4") - .process() - .getResultJSONArray(0); - PointUpdateUtil.updatePoint(pointarr); - } - 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.isNotEmpty(taskObj)) { - JSONObject result = new JSONObject(); - result.put("status", HttpStatus.CREATED.value()); - result.put("message", "失败!"); - result.put("data", new JSONObject()); - return result; - } - // 寻找起点 - // 更新所有设备的点位的状态 - // JSONArray pointConveyArr = pointTable.query("area_type='07' and device_point_type ='01' - // ").getResultJSONArray(0); - JSONArray pointConveyArr = + case "3": + // 送空托盘 + jsonObject.put("start_point_code", device_code); + sendEmptyVehicleTask.createTask((JSONObject) JSON.toJSON(jsonObject)); + break; + case "4": + // 叫空托盘 + jsonObject.put("next_point_code", device_code); + // 如果是叠盘位3 ,则去铁托盘缓存区取 + if (StrUtil.equals(device_code, "KTPDDW3")) { + // 1 更新缓存位 + JSONArray pointarr = WQL.getWO("ACSTOMES_001") - .addParam("area_type", "07") + .addParam("area_type", AreaEnum.KTTHCQ.getCode()) .addParam("flag", "4") .process() .getResultJSONArray(0); + PointUpdateUtil.updatePoint(pointarr); + jsonObject.put("vehicle_type", VehicleTypeEnum.GTP.getCode()); + } else { + produceInfoByCode = this.getProduceInfoByCode(device_code); + // 假如是码垛位的上料位,则去看看有没有当前排产单生产的物料的半满托 + if (StrUtil.equals(device_code, "FJJXSXLW201") + || StrUtil.equals(device_code, "FJJXSXLW202") + || StrUtil.equals(device_code, "FJJXSXLW301") + || StrUtil.equals(device_code, "FJJXSXLW302")) { - PointUpdateUtil.updatePoint(pointConveyArr); - // 假如没有设置哪个输送线先出,没有按照先进先出 - 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); + JSONObject joo = pointTable.query("point_code='" + device_code + "'").uniqueResult(0); + material_id = produceInfoByCode.getString("material_id"); + 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) + .addParam("device_id", joo.getString("device_id")) + .process() + .uniqueResult(0); + if (ObjectUtil.isNotEmpty(jsonObject1)) { + // 如果有库存,则出半满托盘 + // 叫料出库 + jsonObject.put("next_point_code", device_code); + jsonObject.put("create_mode", "01"); + jsonObject.put("material_id", material_id); + jsonObject.put("is_full", "0"); + jsonObject.put("workprocedure_id", WorkProcedureEnum.BZGX.getId()); + jsonObject.put("group_device", jsonObject1.getString("group_device_id")); + callMaterialTask.createTask((JSONObject) JSON.toJSON(jsonObject)); + break; + } + // 需要更新覆膜机的托盘类型 + JSONArray pointarr = + WQL.getWO("ACSTOMES_001") + .addParam("area_type", "05") + .addParam("flag", "4") + .process() + .getResultJSONArray(0); + PointUpdateUtil.updatePoint(pointarr); } - if (ObjectUtil.isEmpty(param)) { - throw new BadRequestException("未找到合适的输送线可以出!"); + if (ObjectUtil.isEmpty(produceInfoByCode)) { + throw new BadRequestException("未找到点位为'" + device_code + "'对应机械手的生产工单!"); } - jsonObject.put("start_point_code", param.getString("point_code")); - jsonObject.put("vehicle_code", param.getString("vehicle_code")); - rgvTask.createTask((JSONObject) JSON.toJSON(jsonObject)); - break; - } - JSONObject result = new JSONObject(); - result.put("status", HttpStatus.OK.value()); - result.put("message", "任务状态反馈成功!"); - result.put("data", new JSONObject()); - return result; + jsonObject.put("vehicle_type", produceInfoByCode.getString("vehicle_type")); + // 需要更新堆叠位的点位状态 + JSONArray pointarr = + WQL.getWO("ACSTOMES_001") + .addParam("point_code", "KTPDDW5") + .addParam("flag", "4") + .process() + .getResultJSONArray(0); + PointUpdateUtil.updatePoint(pointarr); + } + 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.isNotEmpty(taskObj)) { + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.CREATED.value()); + result.put("message", "失败!"); + result.put("data", new JSONObject()); + return result; + } + // 寻找起点 + // 更新所有设备的点位的状态 + // JSONArray pointConveyArr = pointTable.query("area_type='07' and device_point_type ='01' + // ").getResultJSONArray(0); + JSONArray pointConveyArr = + WQL.getWO("ACSTOMES_001") + .addParam("area_type", "07") + .addParam("flag", "4") + .process() + .getResultJSONArray(0); + + PointUpdateUtil.updatePoint(pointConveyArr); + // 假如没有设置哪个输送线先出,没有按照先进先出 + 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("未找到合适的输送线可以出!"); + } + jsonObject.put("start_point_code", param.getString("point_code")); + jsonObject.put("vehicle_code", param.getString("vehicle_code")); + rgvTask.createTask((JSONObject) JSON.toJSON(jsonObject)); + break; } + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.OK.value()); + result.put("message", "任务状态反馈成功!"); + result.put("data", new JSONObject()); + return result; } @Override @@ -436,7 +457,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String qty = String.valueOf(jsonObject.get("qty")); // 产品编码 String product_code = String.valueOf(jsonObject.get("product_code")); - // String material_code = (String) jsonObject.get("material_code"); if (StrUtil.isEmpty(product_code)) { throw new BadRequestException("产品编号不能为空!"); } @@ -542,6 +562,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } groubObj.put("vehicle_code", vehicle_code); WQLObject.getWQLObject("st_buss_vehiclegroup").insert(groubObj); + jsonObject.put("type", "1"); jsonObject.put("group_id", group_id); jsonObject.put("producetask_id", producetask_id); @@ -597,9 +618,39 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { groupObj.put("update_time", DateUtil.now()); groupTable.update(groupObj); } else { - String msg = "未找到任务号为" + task_code + "的组盘信息"; - log.error(msg); - throw new BadRequestException(msg); + groupObj = new JSONObject(); + // 压制下料找不到组盘信息,根据任务号补齐组盘信息 + String start_area = taskobj.getString("start_area"); + JSONObject requestParam = taskobj.getJSONObject("request_param"); + if ("22".equals(start_area)) { + JSONObject materialObj = + WQLObject.getWQLObject("MD_ME_Material") + .query("material_id='" + requestParam.getString("material_id") + "'") + .uniqueResult(0); + groupObj.put("material_code", materialObj.getString("material_code")); + groupObj.put("material_name", materialObj.getString("material_name")); + groupObj.put("material_spec", materialObj.getString("material_spec")); + groupObj.put("group_id", requestParam.getString("group_id")); + groupObj.put("vehicle_code", vehicle_code); + groupObj.put("material_id", requestParam.getString("material_id")); + groupObj.put("producetask_id", requestParam.getString("producetask_id")); + groupObj.put("qty", requestParam.getString("qty")); + groupObj.put("is_full", requestParam.getString("is_full")); + groupObj.put("is_autopackage", "1"); + + groupObj.put("task_id", taskobj.getString("task_id")); + groupObj.put("material_move_id", taskobj.getString("task_id")); + + groupObj.put("create_id", UserInfoUtil.getCurrentUserId()); + groupObj.put("create_name", UserInfoUtil.getNickName()); + groupObj.put("create_time", DateUtil.now()); + groupTable.insert(groupObj); + + } else { + String msg = "未找到任务号为" + task_code + "的组盘信息"; + log.error(msg); + throw new BadRequestException(msg); + } } } @@ -854,6 +905,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { wmsToJnServiceImpl.feedBackPackWordShop(map); } } + // 排产工单完成! if (StrUtil.equals("2", type)) { taskObj.put("producetask_status", "05"); taskObj.put("real_qty", qty); @@ -933,11 +985,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { Class clz = Class.forName(processing_class); AbstractAcsTask bean = (AbstractAcsTask) SpringContextHolder.getBean(clz); bean.updateTaskStatus(row, status); - // Object obj = clz.newInstance(); - // // 调用每个任务类的forceFinishInst()强制结束方法 - // Method m = obj.getClass().getDeclaredMethod("updateTaskStatus", - // JSONObject.class, String.class); - // m.invoke(obj, row, status); } catch (Exception e) { e.printStackTrace(); message = e.getMessage(); @@ -1044,7 +1091,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { .query("point_code = '" + device_code + "'") .uniqueResult(0) .getString("vehicle_code"); - // WQLObject CribbingInfo_Table = WQLObject.getWQLObject("MD_ME_CribbingInfo"); WQLObject group_table = WQLObject.getWQLObject("st_buss_vehiclegroup"); // 从组盘表里面去获取组盘信息 JSONObject result = group_table.query("vehicle_code = '" + vehicle_code + "'").uniqueResult(0); 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 index 419950b..60e4329 100644 --- 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 @@ -27,7 +27,6 @@ public class PdaBindingMaterialServiceImpl implements PdaBindingMaterialService 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", "查询成功!"); diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/callEmpty/rest/CallEmptyController.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/callEmpty/rest/CallEmptyController.java index bfa7eaa..4ce15fe 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/callEmpty/rest/CallEmptyController.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/callEmpty/rest/CallEmptyController.java @@ -2,14 +2,12 @@ package org.nl.wms.pda.callEmpty.rest; -import com.alibaba.fastjson.JSONArray; 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.callEmpty.service.CallEmptyService; -import org.nl.wms.pda.sendMaterial.service.SendMaterialService; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendMaterial/rest/SendMaterialController.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendMaterial/rest/SendMaterialController.java index e2c9cab..c01db96 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendMaterial/rest/SendMaterialController.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendMaterial/rest/SendMaterialController.java @@ -2,7 +2,6 @@ package org.nl.wms.pda.sendMaterial.rest; -import com.alibaba.fastjson.JSONArray; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendMaterial/service/impl/SendMaterialServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendMaterial/service/impl/SendMaterialServiceImpl.java index 3f57a09..1a0341a 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendMaterial/service/impl/SendMaterialServiceImpl.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/sendMaterial/service/impl/SendMaterialServiceImpl.java @@ -2,7 +2,6 @@ package org.nl.wms.pda.sendMaterial.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -10,24 +9,18 @@ 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.service.UserService; import org.nl.common.utils.UserInfoUtil; +import org.nl.exception.BadRequestException; import org.nl.wms.WorkProcedureEnum; -import org.nl.wms.database.service.MaterialService; import org.nl.wms.ext.acs.service.impl.AcsToWmsServiceImpl; -import org.nl.wms.pda.sendMaterial.service.SendMaterialService; import org.nl.wms.pda.exception.PdaRequestException; -import org.nl.wms.sch.manage.buss.FmjToPackIngTask; +import org.nl.wms.pda.sendMaterial.service.SendMaterialService; import org.nl.wms.sch.manage.buss.SendMaterialTask; import org.nl.wql.core.bean.WQLObject; -import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestBody; -import java.math.BigDecimal; -import java.util.HashMap; import java.util.Map; @Service diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/ProducetaskServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/ProducetaskServiceImpl.java index ee7a95b..860be48 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/ProducetaskServiceImpl.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/ProducetaskServiceImpl.java @@ -1,7 +1,5 @@ - package org.nl.wms.pdm.service.impl; - import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.poi.excel.ExcelReader; @@ -52,419 +50,467 @@ import javax.servlet.http.HttpServletRequest; * @author geng by * @description 服务实现 * @date 2022-04-26 - **/ + */ @Service @RequiredArgsConstructor @Slf4j public class ProducetaskServiceImpl implements ProducetaskService { - @Autowired - DeviceService deviceService; + @Autowired DeviceService deviceService; - @Override - public Map queryAll(Map whereJson, Pageable page) { - String search = MapUtil.getStr(whereJson, "search"); - String material_id = MapUtil.getStr(whereJson, "material_id"); - String device_id = MapUtil.getStr(whereJson, "device_id"); - String produceline_id = MapUtil.getStr(whereJson, "produceline_id"); - String cust_id = MapUtil.getStr(whereJson, "cust_id"); - String workprocedure_id = MapUtil.getStr(whereJson, "workprocedure_id"); - String producetask_status = MapUtil.getStr(whereJson, "producetask_status"); - String material_name = MapUtil.getStr(whereJson, "material_name"); - String device_name = MapUtil.getStr(whereJson, "device_name"); - JSONObject map = new JSONObject(); - map.put("flag", "1"); - map.put("material_id", material_id); - map.put("device_id", device_id); - map.put("produceline_id", produceline_id); - map.put("cust_id", cust_id); - map.put("workprocedure_id", workprocedure_id); - map.put("producetask_status", producetask_status); - if (ObjectUtil.isNotEmpty(material_name)) { - map.put("material_name", "%" + material_name + "%"); - } - if (ObjectUtil.isNotEmpty(device_name)) { - map.put("device_name", "%" + device_name + "%"); - } - if (ObjectUtil.isNotEmpty(search)) { - map.put("search", "%" + search + "%"); - } - JSONObject json = WQL.getWO("PDM_ProduceTask_01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "task.create_time desc"); - return json; + @Override + public Map queryAll(Map whereJson, Pageable page) { + String search = MapUtil.getStr(whereJson, "search"); + String material_id = MapUtil.getStr(whereJson, "material_id"); + String device_id = MapUtil.getStr(whereJson, "device_id"); + String produceline_id = MapUtil.getStr(whereJson, "produceline_id"); + String cust_id = MapUtil.getStr(whereJson, "cust_id"); + String workprocedure_id = MapUtil.getStr(whereJson, "workprocedure_id"); + String producetask_status = MapUtil.getStr(whereJson, "producetask_status"); + String material_name = MapUtil.getStr(whereJson, "material_name"); + String device_name = MapUtil.getStr(whereJson, "device_name"); + JSONObject map = new JSONObject(); + map.put("flag", "1"); + map.put("material_id", material_id); + map.put("device_id", device_id); + map.put("produceline_id", produceline_id); + map.put("cust_id", cust_id); + map.put("workprocedure_id", workprocedure_id); + map.put("producetask_status", producetask_status); + if (ObjectUtil.isNotEmpty(material_name)) { + map.put("material_name", "%" + material_name + "%"); + } + if (ObjectUtil.isNotEmpty(device_name)) { + map.put("device_name", "%" + device_name + "%"); + } + if (ObjectUtil.isNotEmpty(search)) { + map.put("search", "%" + search + "%"); + } + JSONObject json = + WQL.getWO("PDM_ProduceTask_01") + .addParamMap(map) + .pageQuery(WqlUtil.getHttpContext(page), "task.create_time desc"); + return json; + } + + @Override + public List queryAll(Map whereJson) { + WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); + JSONArray arr = wo.query().getResultJSONArray(0); + if (ObjectUtil.isNotEmpty(arr)) return arr.toJavaList(ProducetaskDto.class); + return null; + } + + @Override + public ProducetaskDto findById(Long producetask_id) { + WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); + JSONObject json = wo.query("producetask_id = '" + producetask_id + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(json)) { + return json.toJavaObject(ProducetaskDto.class); + } + return null; + } + + @Override + public ProducetaskDto findByCode(String code) { + WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); + JSONObject json = + wo.query("is_delete = '0' and producetask_code ='" + code + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(json)) { + return json.toJavaObject(ProducetaskDto.class); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void create(ProducetaskDto dto) { + + // 编码唯一性校验 + String producetask_code = dto.getProducetask_code(); + ProducetaskDto byCode = this.findByCode(producetask_code); + // if (ObjectUtil.isNotEmpty(byCode)) throw new BadRequestException("编码已存在!"); + + Long currentUserId = UserInfoUtil.getCurrentUserId(); + String nickName = UserInfoUtil.getNickName(); + String now = DateUtil.now(); + + String material_id = dto.getMaterial_id().toString(); + // 根据物料去找木托盘类型 + JSONObject materialObj = + WQLObject.getWQLObject("md_me_material") + .query("material_id = '" + material_id + "'") + .uniqueResult(0); + String vehicle_type = materialObj.getString("vehicle_type"); + if (StrUtil.isEmpty(vehicle_type) || StrUtil.equals(vehicle_type, "0")) { + throw new RuntimeException("木托盘类型不可为空!"); + } + dto.setVehicle_type(vehicle_type); + dto.setProducetask_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setProducetask_code(CodeUtil.getNewCode("PRODUCE_CODE")); + dto.setCreate_id(currentUserId); + dto.setCreate_name(nickName); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); + dto.setUpdate_time(now); + dto.setCreate_time(now); + dto.setProducetask_status("01"); + WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + wo.insert(json); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(ProducetaskDto dto) { + ProducetaskDto entity = this.findById(dto.getProducetask_id()); + if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!"); + + // 编码唯一性校验 + WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); + String where = + "is_delete = '0' and producetask_code = '" + + dto.getProducetask_code() + + "' and producetask_id != '" + + dto.getProducetask_id() + + "'"; + + JSONObject jsonObject = wo.query(where).uniqueResult(0); + if (ObjectUtil.isNotEmpty(jsonObject)) { + throw new BadRequestException("编码已存在!"); } - @Override - public List queryAll(Map whereJson) { - WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); - JSONArray arr = wo.query().getResultJSONArray(0); - if (ObjectUtil.isNotEmpty(arr)) return arr.toJavaList(ProducetaskDto.class); - return null; + Long currentUserId = UserInfoUtil.getCurrentUserId(); + String nickName = UserInfoUtil.getNickName(); + + String now = DateUtil.now(); + dto.setUpdate_time(now); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); + + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + wo.update(json); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteAll(Long[] ids) { + WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); + for (Long producetask_id : ids) { + wo.delete("producetask_id = '" + producetask_id + "'"); + } + } + + @Override + public JSONArray getMaterial() { + WQLObject wo = WQLObject.getWQLObject("md_me_material"); + JSONArray arr = wo.query(" is_delete = '0'", "update_time").getResultJSONArray(0); + return arr; + } + + @Override + public JSONArray getDevice(JSONObject param) { + String workprocedure_id = param.getString("workprocedure_id"); + WQLObject wo = WQLObject.getWQLObject("pdm_base_device"); + JSONArray arr = + wo.query( + " is_delete = '0' and workprocedure_id = '" + workprocedure_id + "'", "device_code") + .getResultJSONArray(0); + return arr; + } + + @Override + public JSONArray getDevice1() { + WQLObject wo = WQLObject.getWQLObject("pdm_base_device"); + JSONArray arr = + wo.query(" is_delete = '0' and is_work_device ='1'", "device_code").getResultJSONArray(0); + return arr; + } + + @Override + public void copyAdd(JSONObject param) { + Long currentUserId = UserInfoUtil.getCurrentUserId(); + String nickName = UserInfoUtil.getNickName(); + String now = DateUtil.now(); + JSONObject map = new JSONObject(); + map.put("producetask_id", IdUtil.getSnowflake(1, 1).nextId()); + + map.put("producetask_code", CodeUtil.getNewCode("PRODUCE_CODE")); + map.put("producetask_status", "01"); + map.put("material_id", param.getString("material_id")); + map.put("device_id", param.getString("device_id")); + map.put("produceline_id", param.getString("produceline_id")); + map.put("cust_id", param.getString("cust_id")); + + map.put("seq_no", param.getString("seq_no")); + map.put("plan_qty", param.getString("plan_qty")); + map.put("plan_end_time", param.getString("plan_end_time")); + map.put("plan_start_time", param.getString("plan_start_time")); + map.put("model", param.getString("model")); + map.put("molten_pool", param.getString("molten_pool")); + map.put("stewing_time", param.getString("stewing_time")); + map.put("create_id", currentUserId); + map.put("create_name", nickName); + map.put("create_time", now); + WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); + wo.insert(map); + } + + @Override + public Map getTaskByDeviceId(Map whereJson, Pageable page) { + String device_id = MapUtil.getStr(whereJson, "device_id"); + JSONObject map = new JSONObject(); + map.put("flag", "2"); + map.put("device_id", device_id); + JSONObject json = + WQL.getWO("PDM_ProduceTask_01") + .addParamMap(map) + .pageQuery(WqlUtil.getHttpContext(page), "task.seq_no"); + return json; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void sortUpdate(JSONObject param) { + Long currentUserId = UserInfoUtil.getCurrentUserId(); + String nickName = UserInfoUtil.getNickName(); + String now = DateUtil.now(); + WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); + JSONArray rows = param.getJSONArray("rows"); + for (int i = 0; i < rows.size(); i++) { + JSONObject jsonObject = rows.getJSONObject(i); + String producetask_id = jsonObject.getString("producetask_id"); + String seq_no = jsonObject.getString("seq_no"); + JSONObject map = new JSONObject(); + map.put("seq_no", seq_no); + map.put("update_optid", currentUserId); + map.put("update_optname", nickName); + map.put("update_time", now); + wo.update(map, "producetask_id = '" + producetask_id + "'"); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void mandFinish(JSONObject param) { + Long currentUserId = UserInfoUtil.getCurrentUserId(); + String nickName = UserInfoUtil.getNickName(); + String now = DateUtil.now(); + String producetask_id = param.getString("producetask_id"); + WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); + JSONObject map = new JSONObject(); + map.put("producetask_status", "99"); + map.put("producetask_finish_type", "02"); + param.put("update_optid", currentUserId); + param.put("update_optname", nickName); + param.put("update_time", now); + wo.update(map, "producetask_id = '" + producetask_id + "'"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void issued(JSONObject param) { + Long currentUserId = UserInfoUtil.getCurrentUserId(); + String nickName = UserInfoUtil.getNickName(); + String now = DateUtil.now(); + String producetask_id = param.getString("producetask_id"); + WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); + String device_id = param.getString("device_id"); + WQLObject taskTable = WQLObject.getWQLObject("PDM_MG_produceTask"); + JSONObject jo = + taskTable + .query("device_id='" + device_id + "' and producetask_status in ('02','03','04')") + .uniqueResult(0); + if (ObjectUtil.isNotEmpty(jo)) { + throw new BadRequestException("该设备存在未完成的工单,不能下发!"); } - @Override - public ProducetaskDto findById(Long producetask_id) { - WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); - JSONObject json = wo.query("producetask_id = '" + producetask_id + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(json)) { - return json.toJavaObject(ProducetaskDto.class); - } - return null; + DeviceDto dto = deviceService.findById(Long.valueOf(device_id)); + JSONObject taskObj = new JSONObject(); + // 假如是包装的三台机械手,是将设备当作工单设备 + // 假如是压机下料的机械手,则是将对接为当作工单设备 + if (StrUtil.equals(dto.getDevice_code(), "FJJXS1") + || StrUtil.equals("FJJXS2", dto.getDevice_code()) + || StrUtil.equals("FJJXS3", dto.getDevice_code())) { + taskObj = + WQL.getWO("PDM_ProduceTask_01") + .addParam("flag", "3") + .addParam("producetask_id", producetask_id) + .process() + .uniqueResult(0); + } else { + taskObj = + WQL.getWO("PDM_ProduceTask_01") + .addParam("flag", "4") + .addParam("producetask_id", producetask_id) + .process() + .uniqueResult(0); + } + String product_code = taskObj.getString("product_code"); + String material_code = taskObj.getString("material_code"); + if (ObjectUtil.isEmpty(product_code)) { + throw new BadRequestException("物料【"+material_code+"】的垛形参数未设置!"); } - @Override - public ProducetaskDto findByCode(String code) { - WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); - JSONObject json = wo.query("is_delete = '0' and producetask_code ='" + code + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(json)) { - return json.toJavaObject(ProducetaskDto.class); - } - return null; + taskObj.put("product_type", "wms"); + WmsToAcsService wmsToAcsService = SpringContextHolder.getBean(WmsToAcsService.class); + JSONArray arr = new JSONArray(); + arr.add(taskObj); + Map result = wmsToAcsService.sendProduceTask(arr); + if (result.get("status").toString().equals("400")) { + String message = result.get("message").toString(); + throw new BadRequestException(message); } - - @Override - @Transactional(rollbackFor = Exception.class) - public void create(ProducetaskDto dto) { - - //编码唯一性校验 - String producetask_code = dto.getProducetask_code(); - ProducetaskDto byCode = this.findByCode(producetask_code); - // if (ObjectUtil.isNotEmpty(byCode)) throw new BadRequestException("编码已存在!"); - - Long currentUserId = UserInfoUtil.getCurrentUserId(); - String nickName = UserInfoUtil.getNickName(); - String now = DateUtil.now(); - - - String material_id = dto.getMaterial_id().toString(); - //根据物料去找木托盘类型 - JSONObject materialObj = WQLObject.getWQLObject("md_me_material").query("material_id = '" + material_id + "'").uniqueResult(0); - String vehicle_type = materialObj.getString("vehicle_type"); - if (StrUtil.isEmpty(vehicle_type) || StrUtil.equals(vehicle_type,"0")) { - throw new RuntimeException("木托盘类型不可为空!"); - } - dto.setVehicle_type(vehicle_type); - dto.setProducetask_id(IdUtil.getSnowflake(1, 1).nextId()); - dto.setProducetask_code(CodeUtil.getNewCode("PRODUCE_CODE")); - dto.setCreate_id(currentUserId); - dto.setCreate_name(nickName); - dto.setUpdate_optid(currentUserId); - dto.setUpdate_optname(nickName); - dto.setUpdate_time(now); - dto.setCreate_time(now); - dto.setProducetask_status("01"); - WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); - JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); - wo.insert(json); + JSONObject map = new JSONObject(); + String producetask_status = "02"; + // 压机一 + if (StrUtil.equals(device_id, "1560189462410039296")) { + producetask_status = "04"; } + map.put("producetask_status", producetask_status); + map.put("update_optid", currentUserId); + map.put("update_optname", nickName); + map.put("update_time", now); + wo.update(map, "producetask_id = '" + producetask_id + "'"); + } - @Override - @Transactional(rollbackFor = Exception.class) - public void update(ProducetaskDto dto) { - ProducetaskDto entity = this.findById(dto.getProducetask_id()); - if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!"); + @Override + public void synchro(JSONObject param) { + WmsToJnServiceImpl wmsToJnService = new WmsToJnServiceImpl(); + JSONObject jo = new JSONObject(); + jo.put("startdate", DateUtil.today()); + jo.put("enddate", DateUtil.today()); + wmsToJnService.synchroDaySchedule(jo); + } - //编码唯一性校验 - WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); - String where = "is_delete = '0' and producetask_code = '" + dto.getProducetask_code() + "' and producetask_id != '" + dto.getProducetask_id() + "'"; + @Override + public JSONArray getProduceline() { + WQLObject wo = WQLObject.getWQLObject("pdm_base_produceline"); + JSONArray arr = wo.query(" is_delete = '0'", "produceline_code").getResultJSONArray(0); + return arr; + } - JSONObject jsonObject = wo.query(where).uniqueResult(0); - if (ObjectUtil.isNotEmpty(jsonObject)) { - throw new BadRequestException("编码已存在!"); - } + @Override + public JSONArray getCust() { + WQLObject wo = WQLObject.getWQLObject("MD_CS_CustomerBase"); + JSONArray arr = wo.query(" is_delete = '0'", "update_time").getResultJSONArray(0); + return arr; + } - Long currentUserId = UserInfoUtil.getCurrentUserId(); - String nickName = UserInfoUtil.getNickName(); + @Override + public JSONArray getWorkprocedure() { + WQLObject wo = WQLObject.getWQLObject("pdm_base_workprocedure"); + JSONArray arr = wo.query(" is_delete = '0'", "seq_no").getResultJSONArray(0); + return arr; + } - String now = DateUtil.now(); - dto.setUpdate_time(now); - dto.setUpdate_optid(currentUserId); - dto.setUpdate_optname(nickName); - - - JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); - wo.update(json); + @Override + @Transactional(rollbackFor = Exception.class) + public void excelImport(MultipartFile file, HttpServletRequest request) { + if (file.isEmpty()) { + throw new BadRequestException("文件为空,请添加数据后重新导入"); } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteAll(Long[] ids) { - WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); - for (Long producetask_id : ids) { - wo.delete("producetask_id = '" + producetask_id + "'"); - } + Long currentUserId = UserInfoUtil.getCurrentUserId(); + String nickName = UserInfoUtil.getNickName(); + String now = DateUtil.now(); + // 1.获取上传文件输入流 + InputStream inputStream = null; + try { + inputStream = file.getInputStream(); + } catch (Exception e) { + e.printStackTrace(); } + WQLObject wo = WQLObject.getWQLObject("PDM_MG_produceTask"); + WQLObject wo_material = WQLObject.getWQLObject("MD_ME_Material"); + WQLObject wo_device = WQLObject.getWQLObject("pdm_base_device"); + WQLObject wo_line = WQLObject.getWQLObject("pdm_base_produceline"); + WQLObject wo_cust = WQLObject.getWQLObject("md_cs_customerbase"); - @Override - public JSONArray getMaterial() { - WQLObject wo = WQLObject.getWQLObject("md_me_material"); - JSONArray arr = wo.query(" is_delete = '0'", "update_time").getResultJSONArray(0); - return arr; - } + // 调用用 hutool 方法读取数据 默认调用第一个sheet + ExcelReader excelReader = ExcelUtil.getReader(inputStream); + // 从第二行开始获取数据 excelReader.read的结果是一个2纬的list,外层是行,内层是行对应的所有列 + List> read = excelReader.read(1, excelReader.getRowCount()); + // 循环获取的数据 + for (int i = 0; i < read.size(); i++) { + List list = read.get(i); + JSONObject param = new JSONObject(); + // 按照列获取 + param.put("producetask_id", IdUtil.getSnowflake(1, 1).nextId()); + param.put("producetask_code", CodeUtil.getNewCode("PRODUCE_CODE")); + param.put("producetask_status", "01"); - @Override - public JSONArray getDevice(JSONObject param) { - String workprocedure_id = param.getString("workprocedure_id"); - WQLObject wo = WQLObject.getWQLObject("pdm_base_device"); - JSONArray arr = wo.query(" is_delete = '0' and workprocedure_id = '" + workprocedure_id + "'", "device_code").getResultJSONArray(0); - return arr; - } + String material_code = list.get(0).toString(); + JSONObject json_material = + wo_material + .query("is_delete = '0' and material_code = '" + material_code + "'") + .uniqueResult(0); + if (ObjectUtil.isEmpty(json_material)) { + throw new BadRequestException("第'" + (i + 2) + "'行,物料编码不存在"); + } + param.put("material_id", json_material.getString("material_id")); - @Override - public JSONArray getDevice1() { - WQLObject wo = WQLObject.getWQLObject("pdm_base_device"); - JSONArray arr = wo.query(" is_delete = '0' and is_work_device ='1'", "device_code").getResultJSONArray(0); - return arr; - } + String device_code = list.get(1).toString(); + JSONObject json_device = + wo_device + .query("is_delete = '0' and device_code = '" + device_code + "'") + .uniqueResult(0); + if (ObjectUtil.isEmpty(json_device)) { + throw new BadRequestException("第'" + (i + 2) + "'行,设备编码不存在"); + } + param.put("device_id", json_device.getString("device_id")); - @Override - public void copyAdd(JSONObject param) { - Long currentUserId = UserInfoUtil.getCurrentUserId(); - String nickName = UserInfoUtil.getNickName(); - String now = DateUtil.now(); - JSONObject map = new JSONObject(); - map.put("producetask_id", IdUtil.getSnowflake(1, 1).nextId()); + String produceline_code = list.get(2).toString(); + JSONObject json_produceline = + wo_line + .query("is_delete = '0' and produceline_code = '" + produceline_code + "'") + .uniqueResult(0); + if (ObjectUtil.isEmpty(json_produceline)) { + throw new BadRequestException("第'" + (i + 2) + "'行,产线编码不存在"); + } + param.put("produceline_id", json_produceline.getString("produceline_id")); - map.put("producetask_code", CodeUtil.getNewCode("PRODUCE_CODE")); - map.put("producetask_status", "01"); - map.put("material_id", param.getString("material_id")); - map.put("device_id", param.getString("device_id")); - map.put("produceline_id", param.getString("produceline_id")); - map.put("cust_id", param.getString("cust_id")); + String cust_code = list.get(3).toString(); + JSONObject json_cust = + wo_cust.query("is_delete = '0' and cust_code = '" + cust_code + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(json_cust)) { + throw new BadRequestException("第'" + (i + 2) + "'行,客户编码不存在"); + } + param.put("cust_id", json_cust.getString("cust_id")); - map.put("seq_no", param.getString("seq_no")); - map.put("plan_qty", param.getString("plan_qty")); - map.put("plan_end_time", param.getString("plan_end_time")); - map.put("plan_start_time", param.getString("plan_start_time")); - map.put("model", param.getString("model")); - map.put("molten_pool", param.getString("molten_pool")); - map.put("stewing_time", param.getString("stewing_time")); - map.put("create_id", currentUserId); - map.put("create_name", nickName); - map.put("create_time", now); - WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); - wo.insert(map); - } - - @Override - public Map getTaskByDeviceId(Map whereJson, Pageable page) { - String device_id = MapUtil.getStr(whereJson, "device_id"); - JSONObject map = new JSONObject(); - map.put("flag", "2"); - map.put("device_id", device_id); - JSONObject json = WQL.getWO("PDM_ProduceTask_01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "task.seq_no"); - return json; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void sortUpdate(JSONObject param) { - Long currentUserId = UserInfoUtil.getCurrentUserId(); - String nickName = UserInfoUtil.getNickName(); - String now = DateUtil.now(); - WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); - JSONArray rows = param.getJSONArray("rows"); - for (int i = 0; i < rows.size(); i++) { - JSONObject jsonObject = rows.getJSONObject(i); - String producetask_id = jsonObject.getString("producetask_id"); - String seq_no = jsonObject.getString("seq_no"); - JSONObject map = new JSONObject(); - map.put("seq_no", seq_no); - map.put("update_optid", currentUserId); - map.put("update_optname", nickName); - map.put("update_time", now); - wo.update(map, "producetask_id = '" + producetask_id + "'"); - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void mandFinish(JSONObject param) { - Long currentUserId = UserInfoUtil.getCurrentUserId(); - String nickName = UserInfoUtil.getNickName(); - String now = DateUtil.now(); - String producetask_id = param.getString("producetask_id"); - WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); - JSONObject map = new JSONObject(); - map.put("producetask_status", "99"); - map.put("producetask_finish_type", "02"); - param.put("update_optid", currentUserId); - param.put("update_optname", nickName); - param.put("update_time", now); - wo.update(map, "producetask_id = '" + producetask_id + "'"); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void issued(JSONObject param) { - Long currentUserId = UserInfoUtil.getCurrentUserId(); - String nickName = UserInfoUtil.getNickName(); - String now = DateUtil.now(); - String producetask_id = param.getString("producetask_id"); - WQLObject wo = WQLObject.getWQLObject("pdm_mg_producetask"); - String device_id = param.getString("device_id"); - WQLObject taskTable = WQLObject.getWQLObject("PDM_MG_produceTask"); - JSONObject jo = taskTable.query("device_id='" + device_id + "' and producetask_status in ('02','03','04')").uniqueResult(0); - if (ObjectUtil.isNotEmpty(jo)) { - throw new BadRequestException("该设备存在未完成的工单,不能下发!"); - } - - DeviceDto dto = deviceService.findById(Long.valueOf(device_id)); - JSONObject taskObj = new JSONObject(); - //假如是包装的三台机械手,是将设备当作工单设备 - //假如是压机下料的机械手,则是将对接为当作工单设备 - if (StrUtil.equals(dto.getDevice_code(), "FJJXS1") || StrUtil.equals("FJJXS2", dto.getDevice_code()) || StrUtil.equals("FJJXS3", dto.getDevice_code())) { - taskObj = WQL.getWO("PDM_ProduceTask_01").addParam("flag", "3").addParam("producetask_id", producetask_id).process().uniqueResult(0); + param.put("seq_no", list.get(4).toString()); + param.put("plan_qty", list.get(5).toString()); + if (ObjectUtil.isEmpty(list.get(6))) { + throw new BadRequestException("第'" + (i + 2) + "'行,计划开始时间不能为空"); + } else { + if (this.isLegalTime(list.get(6).toString())) { + param.put("plan_start_time", list.get(6).toString()); } else { - taskObj = WQL.getWO("PDM_ProduceTask_01").addParam("flag", "4").addParam("producetask_id", producetask_id).process().uniqueResult(0); + throw new BadRequestException("第'" + (i + 2) + "'行,计划开始时间日期格式不正确"); } - taskObj.put("product_type", "wms"); - WmsToAcsService wmsToAcsService = SpringContextHolder.getBean(WmsToAcsService.class); - JSONArray arr = new JSONArray(); - arr.add(taskObj); - Map result = wmsToAcsService.sendProduceTask(arr); - if (result.get("status").toString().equals("400")) { - String message = result.get("message").toString(); - throw new BadRequestException(message); + } + if (ObjectUtil.isEmpty(list.get(7))) { + throw new BadRequestException("第'" + (i + 2) + "'行,计划结束时间不能为空"); + } else { + if (this.isLegalTime(list.get(7).toString())) { + param.put("plan_end_time", list.get(7).toString()); + } else { + throw new BadRequestException("第'" + (i + 2) + "'行,计划结束时间日期格式不正确"); } - JSONObject map = new JSONObject(); - String producetask_status = "02"; - if (StrUtil.equals(device_id, "1560189462410039296")) { - producetask_status = "04"; - } - map.put("producetask_status", producetask_status); - map.put("update_optid", currentUserId); - map.put("update_optname", nickName); - map.put("update_time", now); - wo.update(map, "producetask_id = '" + producetask_id + "'"); - } - - @Override - public void synchro(JSONObject param) { - WmsToJnServiceImpl wmsToJnService = new WmsToJnServiceImpl(); - JSONObject jo = new JSONObject(); - jo.put("startdate", DateUtil.today()); - jo.put("enddate", DateUtil.today()); - wmsToJnService.synchroDaySchedule(jo); - } - - @Override - public JSONArray getProduceline() { - WQLObject wo = WQLObject.getWQLObject("pdm_base_produceline"); - JSONArray arr = wo.query(" is_delete = '0'", "produceline_code").getResultJSONArray(0); - return arr; - } - - @Override - public JSONArray getCust() { - WQLObject wo = WQLObject.getWQLObject("MD_CS_CustomerBase"); - JSONArray arr = wo.query(" is_delete = '0'", "update_time").getResultJSONArray(0); - return arr; - } - - @Override - public JSONArray getWorkprocedure() { - WQLObject wo = WQLObject.getWQLObject("pdm_base_workprocedure"); - JSONArray arr = wo.query(" is_delete = '0'", "seq_no").getResultJSONArray(0); - return arr; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void excelImport(MultipartFile file, HttpServletRequest request) { - if (file.isEmpty()) { - throw new BadRequestException("文件为空,请添加数据后重新导入"); - } - Long currentUserId = UserInfoUtil.getCurrentUserId(); - String nickName = UserInfoUtil.getNickName(); - String now = DateUtil.now(); - // 1.获取上传文件输入流 - InputStream inputStream = null; - try { - inputStream = file.getInputStream(); - } catch (Exception e) { - e.printStackTrace(); - } - WQLObject wo = WQLObject.getWQLObject("PDM_MG_produceTask"); - WQLObject wo_material = WQLObject.getWQLObject("MD_ME_Material"); - WQLObject wo_device = WQLObject.getWQLObject("pdm_base_device"); - WQLObject wo_line = WQLObject.getWQLObject("pdm_base_produceline"); - WQLObject wo_cust = WQLObject.getWQLObject("md_cs_customerbase"); - - // 调用用 hutool 方法读取数据 默认调用第一个sheet - ExcelReader excelReader = ExcelUtil.getReader(inputStream); - // 从第二行开始获取数据 excelReader.read的结果是一个2纬的list,外层是行,内层是行对应的所有列 - List> read = excelReader.read(1, excelReader.getRowCount()); - // 循环获取的数据 - for (int i = 0; i < read.size(); i++) { - List list = read.get(i); - JSONObject param = new JSONObject(); - //按照列获取 - param.put("producetask_id", IdUtil.getSnowflake(1, 1).nextId()); - param.put("producetask_code", CodeUtil.getNewCode("PRODUCE_CODE")); - param.put("producetask_status", "01"); - - String material_code = list.get(0).toString(); - JSONObject json_material = wo_material.query("is_delete = '0' and material_code = '" + material_code + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(json_material)) { - throw new BadRequestException("第'" + (i + 2) + "'行,物料编码不存在"); - } - param.put("material_id", json_material.getString("material_id")); - - String device_code = list.get(1).toString(); - JSONObject json_device = wo_device.query("is_delete = '0' and device_code = '" + device_code + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(json_device)) { - throw new BadRequestException("第'" + (i + 2) + "'行,设备编码不存在"); - } - param.put("device_id", json_device.getString("device_id")); - - String produceline_code = list.get(2).toString(); - JSONObject json_produceline = wo_line.query("is_delete = '0' and produceline_code = '" + produceline_code + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(json_produceline)) { - throw new BadRequestException("第'" + (i + 2) + "'行,产线编码不存在"); - } - param.put("produceline_id", json_produceline.getString("produceline_id")); - - String cust_code = list.get(3).toString(); - JSONObject json_cust = wo_cust.query("is_delete = '0' and cust_code = '" + cust_code + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(json_cust)) { - throw new BadRequestException("第'" + (i + 2) + "'行,客户编码不存在"); - } - param.put("cust_id", json_cust.getString("cust_id")); - - param.put("seq_no", list.get(4).toString()); - param.put("plan_qty", list.get(5).toString()); - if (ObjectUtil.isEmpty(list.get(6))) { - throw new BadRequestException("第'" + (i + 2) + "'行,计划开始时间不能为空"); - } else { - if (this.isLegalTime(list.get(6).toString())) { - param.put("plan_start_time", list.get(6).toString()); - } else { - throw new BadRequestException("第'" + (i + 2) + "'行,计划开始时间日期格式不正确"); - } - } - if (ObjectUtil.isEmpty(list.get(7))) { - throw new BadRequestException("第'" + (i + 2) + "'行,计划结束时间不能为空"); - } else { - if (this.isLegalTime(list.get(7).toString())) { - param.put("plan_end_time", list.get(7).toString()); - } else { - throw new BadRequestException("第'" + (i + 2) + "'行,计划结束时间日期格式不正确"); - } - } - param.put("model", list.get(8).toString()); - param.put("molten_pool", list.get(9).toString()); - param.put("create_id", currentUserId); - param.put("create_name", nickName); - param.put("create_time", now); - wo.insert(param); - } - } - - public boolean isLegalTime(String str) { - String formatTime = "^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29) (20|21|22|23|[0-1][0-9]):[0-5][0-9]:[0-5][0-9]$"; - Pattern p = Pattern.compile(formatTime); - Matcher m = p.matcher(str); - return m.matches(); + } + param.put("model", list.get(8).toString()); + param.put("molten_pool", list.get(9).toString()); + param.put("create_id", currentUserId); + param.put("create_name", nickName); + param.put("create_time", now); + wo.insert(param); } + } + public boolean isLegalTime(String str) { + String formatTime = + "^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29) (20|21|22|23|[0-1][0-9]):[0-5][0-9]:[0-5][0-9]$"; + Pattern p = Pattern.compile(formatTime); + Matcher m = p.matcher(str); + return m.matches(); + } } 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 189dc62..88391ac 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 @@ -33,310 +33,342 @@ import java.util.HashMap; */ @Service public class CallEmptyVehicleTask extends AbstractAcsTask { - private final String THIS_CLASS = CallEmptyVehicleTask.class.getName(); - - @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); - HashMap map = new HashMap(); - map.put("bill_status", "40"); - WQLObject.getWQLObject("st_buss_EmptyVehicleRecord").update(map, "task_uuid='" + 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", "任务执行完成"); - ///审核单据 - HashMap map = new HashMap(); - map.put("bill_status", "50"); - WQLObject.getWQLObject("st_buss_EmptyVehicleRecord").update(map, "task_uuid='" + jsonTask.getString("task_id") + "'"); - //解锁仓位,托盘信息,回写到点位上去 - String vehicle_code = jsonTask.getString("vehicle_code"); - //插入刚托盘木托盘表 - String point_code = jsonTask.getString("next_point_code"); - String area_type = WQLObject.getWQLObject("sch_base_point").query("point_code='" + point_code + "'").uniqueResult(0).getString("area_type"); - if (StrUtil.equals(area_type, AreaEnum.FJQY.getCode())) { - JSONObject jo = new JSONObject(); - jo.put("device_code", point_code); - jo.put("vehicle_code", vehicle_code); - SortingUtil.record(jo); - } - - - 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", "01"); - 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); - } + private final String THIS_CLASS = CallEmptyVehicleTask.class.getName(); + @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); + HashMap map = new HashMap(); + map.put("bill_status", "40"); + WQLObject.getWQLObject("st_buss_EmptyVehicleRecord") + .update(map, "task_uuid='" + jsonTask.getString("task_id") + "'"); } - @Override - @Transactional - public void findStartPoint() { - String task_status = TaskStatusEnum.SURE_END.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"); - String next_point_code = taskObj.getString("next_point_code"); - //找一个合适的仓位 - WQLObject Recordtable = WQLObject.getWQLObject("sch_base_task"); - 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("未找到合适的仓位!"); - } - JSONObject workInfo = WQL.getWO("QSTRUCT_RULE").addParam("flag", "1").addParam("code", next_point_code) - .process().uniqueResult(0); - String workprocedure_code = workInfo.getString("workInfo"); - String workprocedure_id = workInfo.getString("workprocedure_id"); - WorkProcedureEnum workProcedureEnum = WorkProcedureEnum.get(workprocedure_id); - String start_area = ""; - String vehicle_type = ""; - switch (workProcedureEnum) { + 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", "任务执行完成"); + /// 审核单据 + HashMap map = new HashMap(); + map.put("bill_status", "50"); + WQLObject.getWQLObject("st_buss_EmptyVehicleRecord") + .update(map, "task_uuid='" + jsonTask.getString("task_id") + "'"); + // 解锁仓位,托盘信息,回写到点位上去 + String vehicle_code = jsonTask.getString("vehicle_code"); + // 插入刚托盘木托盘表 + String point_code = jsonTask.getString("next_point_code"); + String area_type = + WQLObject.getWQLObject("sch_base_point") + .query("point_code='" + point_code + "'") + .uniqueResult(0) + .getString("area_type"); + if (StrUtil.equals(area_type, AreaEnum.FJQY.getCode())) { + JSONObject jo = new JSONObject(); + jo.put("device_code", point_code); + jo.put("vehicle_code", vehicle_code); + SortingUtil.record(jo); + } - // 压制工序 - case YZGX: - vehicle_type = VehicleTypeEnum.GTP.getCode(); - start_area = AreaEnum.KTTDDQ.getCode(); - - //分拣工序 - case FJGX: - vehicle_type = VehicleTypeEnum.MTP.getCode(); - start_area = AreaEnum.MTPQ.getCode(); - default: - vehicle_type = VehicleTypeEnum.LZ.getCode(); - start_area = AreaEnum.KTTDDQ.getCode(); - } - //寻找一个合适的仓位 - JSONObject outStructObj = StructFindUtil.getEmptyVehicleOutStruct(param); - if (ObjectUtil.isEmpty(outStructObj)) { - continue; - } - String start_point_code = outStructObj.getString("struct_code"); - String vehicle_code = outStructObj.getString("vehicle_code"); - //修改单据状态,将终点填入 - IosObj.put("bill_status", "20"); - IosObj.put("start_point_code", start_point_code); - IosObj.put("vehicle_code", vehicle_code); - IosObj.put("start_area", start_area); - Recordtable.update(IosObj); - - //起点加锁 - HashMap lock_map = new HashMap(); - lock_map.put("lock_type", "01"); - WQLObject.getWQLObject("sch_base_point").update(lock_map, "point_code = '" + start_point_code + "'"); - //修改任务状态 - taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); - taskObj.put("update_optid", UserInfoUtil.getCurrentUserId()); - taskObj.put("update_optname", UserInfoUtil.getNickName()); - taskObj.put("update_time", DateUtil.now()); - return; - - } + 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", "01"); + 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 findNextPoint() { + @Override + @Transactional + public void findStartPoint() { + String task_status = TaskStatusEnum.SURE_END.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"); + String next_point_code = taskObj.getString("next_point_code"); + // 找一个合适的仓位 + WQLObject Recordtable = WQLObject.getWQLObject("sch_base_task"); + 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("未找到合适的仓位!"); + } + JSONObject workInfo = + WQL.getWO("QSTRUCT_RULE") + .addParam("flag", "1") + .addParam("code", next_point_code) + .process() + .uniqueResult(0); + String workprocedure_code = workInfo.getString("workInfo"); + String workprocedure_id = workInfo.getString("workprocedure_id"); + WorkProcedureEnum workProcedureEnum = WorkProcedureEnum.get(workprocedure_id); + String start_area = ""; + String vehicle_type = ""; + switch (workProcedureEnum) { + // 压制工序 + case YZGX: + vehicle_type = VehicleTypeEnum.GTP.getCode(); + start_area = AreaEnum.KTTDDQ.getCode(); + // 分拣工序 + case FJGX: + vehicle_type = VehicleTypeEnum.MTP.getCode(); + start_area = AreaEnum.MTPQ.getCode(); + default: + vehicle_type = VehicleTypeEnum.LZ.getCode(); + start_area = AreaEnum.KTTDDQ.getCode(); + } + // 寻找一个合适的仓位 + JSONObject outStructObj = StructFindUtil.getEmptyVehicleOutStruct(param); + if (ObjectUtil.isEmpty(outStructObj)) { + continue; + } + String start_point_code = outStructObj.getString("struct_code"); + String vehicle_code = outStructObj.getString("vehicle_code"); + // 修改单据状态,将终点填入 + IosObj.put("bill_status", "20"); + IosObj.put("start_point_code", start_point_code); + IosObj.put("vehicle_code", vehicle_code); + IosObj.put("start_area", start_area); + Recordtable.update(IosObj); + + // 起点加锁 + HashMap lock_map = new HashMap(); + lock_map.put("lock_type", "01"); + WQLObject.getWQLObject("sch_base_point") + .update(lock_map, "point_code = '" + start_point_code + "'"); + // 修改任务状态 + taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); + taskObj.put("update_optid", UserInfoUtil.getCurrentUserId()); + taskObj.put("update_optname", UserInfoUtil.getNickName()); + taskObj.put("update_time", DateUtil.now()); + return; } + } - @Override - public JSONObject renotifyAcs(String task_id) { - return super.renotifyAcs(task_id); + @Override + public void findNextPoint() {} + + @Override + public JSONObject renotifyAcs(String task_id) { + return super.renotifyAcs(task_id); + } + + @Override + public String createTask(JSONObject form) { + // 请求参数 终点不能为空 起点点位为空时,托盘类型不能为空,托盘不能为空! + String next_point_code = form.getString("next_point_code"); + // 默认给一个测试托盘 + String vehicle_code = "999"; + String is_auto_issue = "1"; + if (StrUtil.isEmpty(next_point_code)) { + throw new BadRequestException("终点不能为空!"); } - - @Override - public String createTask(JSONObject form) { - //请求参数 终点不能为空 起点点位为空时,托盘类型不能为空,托盘不能为空! - String next_point_code = form.getString("next_point_code"); - //默认给一个测试托盘 - String vehicle_code = "999"; - String is_auto_issue = "1"; - if (StrUtil.isEmpty(next_point_code)) { - throw new BadRequestException("终点不能为空!"); - } - String start_point_code = form.getString("start_point_code"); - String vehicle_type = form.getString("vehicle_type"); - WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); - //判断起点有没有未完成的指令 - JSONObject beforTaskObj = taskTable. - query("is_delete='0' and next_point_code='" + next_point_code + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'") - .uniqueResult(0); - if (ObjectUtil.isNotEmpty(beforTaskObj)) { - throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!"); - } - String start_area = ""; - //假如起点为空,根据终点点去找对应工序需要的托盘类型 - if (StrUtil.isEmpty(start_point_code)) { - JSONObject workInfo = WQL.getWO("QSTRUCT_RULE").addParam("flag", "1").addParam("code", next_point_code) - .process().uniqueResult(0); - String workprocedure_id = workInfo.getString("workprocedure_id"); - String device_id = workInfo.getString("device_id"); - WorkProcedureEnum workProcedureEnum = WorkProcedureEnum.get(workprocedure_id); - switch (workProcedureEnum) { - // 压制工序 - case YZGX: - vehicle_type = VehicleTypeEnum.GTP.getCode(); - start_area = AreaEnum.KTTDDQ.getCode(); - start_point_code="KTPDDW5"; - break; - //分拣工序 - case FJGX: - //托盘类型取的物料对应的木托盘类型 - JSONObject produceObj = WQLObject.getWQLObject("PDM_MG_produceTask").query("device_id='" + device_id + "' and producetask_status in('03','04')").uniqueResult(0); - vehicle_type = produceObj.getString("vehicle_type"); - start_area = AreaEnum.MTPQ.getCode(); - is_auto_issue = "0"; - break; - //叠盘工序 - case DPGX: - //托盘类型取的物料对应的木托盘类型 - vehicle_type = VehicleTypeEnum.GTP.getCode(); - start_area = AreaEnum.KTTHCQ.getCode(); - break; - default: - vehicle_type = VehicleTypeEnum.GTP.getCode(); - start_area = AreaEnum.KTTHCQ.getCode(); - } - JSONObject param = new JSONObject(); - //如果托盘类型不是02,则需要加上托盘类型 - if (!StrUtil.equals(vehicle_type, "02")) { - param.put("vehicle_type", vehicle_type); - } - param.put("area_type", start_area); - param.put("point_code",start_point_code); - - JSONObject outStructObj = StructFindUtil.getEmptyVehicleOutStruct(param); - if (ObjectUtil.isEmpty(outStructObj)) { - throw new BadRequestException("未找到合适的空托盘点位"); - } - - vehicle_code = outStructObj.getString("vehicle_code"); - if (StrUtil.isEmpty(vehicle_code)) { - vehicle_code = "999"; - } - //如果是托盘区域/生成一个该类型的托盘 - if (StrUtil.equals(workInfo.getString("area_type"), AreaEnum.FJQY.getCode())) { - vehicle_code = CodeUtil.getNewCode("VEHICCLE_CODE_MTP"); - //将托盘插入托盘表 - WQLObject wo = WQLObject.getWQLObject("MD_PB_Vehicle"); - JSONObject jo = new JSONObject(); - VehicleDto dto = new VehicleDto(); - dto.setVehicle_id(IdUtil.getSnowflake(1, 1).nextId()); - dto.setVehicle_code(vehicle_code); - dto.setCreate_id(UserInfoUtil.getCurrentUserId()); - dto.setVehicle_name(vehicle_code); - dto.setCreate_name(UserInfoUtil.getNickName()); - dto.setUpdate_optid(UserInfoUtil.getCurrentUserId()); - dto.setUpdate_optname(UserInfoUtil.getNickName()); - dto.setUpdate_time(DateUtil.now()); - dto.setCreate_time(DateUtil.now()); - dto.setVehicle_type(vehicle_type); - JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); - wo.insert(json); - } - - start_point_code = outStructObj.getString("struct_code"); - } - PointService pointService = SpringContextHolder.getBean(PointService.class); - PointDto nextPoint = pointService.findByCode(next_point_code); - //生成空托盘搬运的单据 - String task_status = TaskStatusEnum.SURE_END.getCode(); - String bill_status = "10"; - if (StrUtil.isNotEmpty(start_point_code)) { -// PointDto startPoint = pointService.findByCode(start_point_code); - bill_status = "20"; - task_status = TaskStatusEnum.START_AND_POINT.getCode(); - //锁定起点 - HashMap lock_map = new HashMap(); - lock_map.put("lock_type", "01"); - WQLObject.getWQLObject("sch_base_point").update(lock_map, "point_code = '" + start_point_code + "'"); - } - String task_id = IdUtil.getSnowflake(1, 1).nextId() + ""; - //生成空载具搬运单据 - 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("start_point_code", start_point_code); - EmptyVehicleObj.put("next_point_code", next_point_code); - EmptyVehicleObj.put("start_area", start_area); - EmptyVehicleObj.put("end_area", nextPoint.getArea_type()); - EmptyVehicleObj.put("vehicle_code", vehicle_code); - EmptyVehicleObj.put("task_uuid", task_id); - EmptyVehicleObj.put("create_id", UserInfoUtil.getCurrentUserId()); - EmptyVehicleObj.put("create_name", UserInfoUtil.getNickName()); - EmptyVehicleObj.put("create_time", DateUtil.now()); - EmptyVehicleObj.put("is_delete", "0"); - WQLObject.getWQLObject("st_buss_EmptyVehicleRecord").insert(EmptyVehicleObj); - //生成任务 - JSONObject taskObj = new JSONObject(); - taskObj.put("task_id", task_id); - taskObj.put("task_code", IdUtil.getSnowflake(1, 1).nextId() + ""); - taskObj.put("task_type", "03"); - taskObj.put("acs_task_type", "1"); - taskObj.put("task_status", task_status); - taskObj.put("start_point_code", start_point_code); - taskObj.put("start_area", start_area); - 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", is_auto_issue); - taskObj.put("create_name", UserInfoUtil.getNickName()); - taskObj.put("create_id", UserInfoUtil.getCurrentUserId()); - taskObj.put("create_time", DateUtil.now()); - taskObj.put("is_delete", "0"); - taskTable.insert(taskObj); - - return task_id; + String start_point_code = form.getString("start_point_code"); + String vehicle_type = form.getString("vehicle_type"); + WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); + // 判断起点有没有未完成的指令 + JSONObject beforTaskObj = + taskTable + .query( + "is_delete='0' and next_point_code='" + + next_point_code + + "' and task_status <>'" + + TaskStatusEnum.FINISHED.getCode() + + "'") + .uniqueResult(0); + if (ObjectUtil.isNotEmpty(beforTaskObj)) { + throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!"); } + String start_area = ""; + // 假如起点为空,根据终点点去找对应工序需要的托盘类型 + if (StrUtil.isEmpty(start_point_code)) { + JSONObject workInfo = + WQL.getWO("QSTRUCT_RULE") + .addParam("flag", "1") + .addParam("code", next_point_code) + .process() + .uniqueResult(0); + String workprocedure_id = workInfo.getString("workprocedure_id"); + String device_id = workInfo.getString("device_id"); + WorkProcedureEnum workProcedureEnum = WorkProcedureEnum.get(workprocedure_id); + switch (workProcedureEnum) { + // 压制工序 + case YZGX: + vehicle_type = VehicleTypeEnum.GTP.getCode(); + start_area = AreaEnum.KTTDDQ.getCode(); + start_point_code = "KTPDDW5"; + break; + // 分拣工序 + case FJGX: + // 托盘类型取的物料对应的木托盘类型 + JSONObject produceObj = + WQLObject.getWQLObject("PDM_MG_produceTask") + .query("device_id='" + device_id + "' and producetask_status in('02','03','04')") + .uniqueResult(0); + if (ObjectUtil.isEmpty(produceObj)) + throw new BadRequestException("设备未设置工单或者工单状态不正确,请检查LMS设备工单状态!"); + vehicle_type = produceObj.getString("vehicle_type"); + start_area = AreaEnum.MTPQ.getCode(); + is_auto_issue = "0"; + break; + // 叠盘工序 + case DPGX: + // 托盘类型取的物料对应的木托盘类型 + vehicle_type = VehicleTypeEnum.GTP.getCode(); + start_area = AreaEnum.KTTHCQ.getCode(); + break; + default: + vehicle_type = VehicleTypeEnum.GTP.getCode(); + start_area = AreaEnum.KTTHCQ.getCode(); + } + JSONObject param = new JSONObject(); + // 如果托盘类型不是02,则需要加上托盘类型(木托盘) + if (!StrUtil.equals(vehicle_type, "02")) { + param.put("vehicle_type", vehicle_type); + } + param.put("area_type", start_area); + param.put("point_code", start_point_code); - @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()); + JSONObject outStructObj = StructFindUtil.getEmptyVehicleOutStruct(param); + if (ObjectUtil.isEmpty(outStructObj)) { + throw new BadRequestException("未找到合适的空托盘点位"); + } + + vehicle_code = outStructObj.getString("vehicle_code"); + if (StrUtil.isEmpty(vehicle_code)) { + vehicle_code = "999"; + } + // 如果是托盘区域/生成一个该类型的托盘 + if (StrUtil.equals(workInfo.getString("area_type"), AreaEnum.FJQY.getCode())) { + vehicle_code = CodeUtil.getNewCode("VEHICCLE_CODE_MTP"); + // 将托盘插入托盘表 + WQLObject wo = WQLObject.getWQLObject("MD_PB_Vehicle"); + JSONObject jo = new JSONObject(); + VehicleDto dto = new VehicleDto(); + dto.setVehicle_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setVehicle_code(vehicle_code); + dto.setCreate_id(UserInfoUtil.getCurrentUserId()); + dto.setVehicle_name(vehicle_code); + dto.setCreate_name(UserInfoUtil.getNickName()); + dto.setUpdate_optid(UserInfoUtil.getCurrentUserId()); + dto.setUpdate_optname(UserInfoUtil.getNickName()); + dto.setUpdate_time(DateUtil.now()); + dto.setCreate_time(DateUtil.now()); + dto.setVehicle_type(vehicle_type); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + wo.insert(json); + } + + start_point_code = outStructObj.getString("struct_code"); } - - @Override - public void pullBack(String task_id) { - + PointService pointService = SpringContextHolder.getBean(PointService.class); + PointDto nextPoint = pointService.findByCode(next_point_code); + // 生成空托盘搬运的单据 + String task_status = TaskStatusEnum.SURE_END.getCode(); + String bill_status = "10"; + if (StrUtil.isNotEmpty(start_point_code)) { + // PointDto startPoint = pointService.findByCode(start_point_code); + bill_status = "20"; + task_status = TaskStatusEnum.START_AND_POINT.getCode(); + // 锁定起点 + HashMap lock_map = new HashMap(); + lock_map.put("lock_type", "01"); + WQLObject.getWQLObject("sch_base_point") + .update(lock_map, "point_code = '" + start_point_code + "'"); } + String task_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + // 生成空载具搬运单据 + 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("start_point_code", start_point_code); + EmptyVehicleObj.put("next_point_code", next_point_code); + EmptyVehicleObj.put("start_area", start_area); + EmptyVehicleObj.put("end_area", nextPoint.getArea_type()); + EmptyVehicleObj.put("vehicle_code", vehicle_code); + EmptyVehicleObj.put("task_uuid", task_id); + EmptyVehicleObj.put("create_id", UserInfoUtil.getCurrentUserId()); + EmptyVehicleObj.put("create_name", UserInfoUtil.getNickName()); + EmptyVehicleObj.put("create_time", DateUtil.now()); + EmptyVehicleObj.put("is_delete", "0"); + WQLObject.getWQLObject("st_buss_EmptyVehicleRecord").insert(EmptyVehicleObj); + // 生成任务 + JSONObject taskObj = new JSONObject(); + taskObj.put("task_id", task_id); + taskObj.put("task_code", IdUtil.getSnowflake(1, 1).nextId() + ""); + taskObj.put("task_type", "03"); + taskObj.put("acs_task_type", "1"); + taskObj.put("task_status", task_status); + taskObj.put("start_point_code", start_point_code); + taskObj.put("start_area", start_area); + 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", is_auto_issue); + taskObj.put("create_name", UserInfoUtil.getNickName()); + taskObj.put("create_id", UserInfoUtil.getCurrentUserId()); + taskObj.put("create_time", DateUtil.now()); + taskObj.put("is_delete", "0"); + taskTable.insert(taskObj); - @Override - public void cancel(String task_id) { + 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/sch/manage/buss/StructToConveyorTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/StructToConveyorTask.java index ab14e26..b679418 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/StructToConveyorTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/StructToConveyorTask.java @@ -8,9 +8,8 @@ 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.common.utils.UserInfoUtil; +import org.nl.exception.BadRequestException; import org.nl.utils.SpringContextHolder; import org.nl.wms.common.StructFindUtil; import org.nl.wms.sch.manage.AbstractAcsTask; @@ -22,7 +21,6 @@ import org.nl.wms.st.ivt.IvtChangeTypeEnum; import org.nl.wms.st.ivt.StoreIvtServiceImpl; import org.nl.wql.core.bean.WQLObject; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import java.util.HashMap; @@ -157,16 +155,11 @@ public class StructToConveyorTask extends AbstractAcsTask { } @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)) { @@ -182,29 +175,7 @@ public class StructToConveyorTask extends AbstractAcsTask { if (ObjectUtil.isNotEmpty(beforTaskObj)) { throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!"); } - 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",UserInfoUtil.getCurrentUserId()); - jo.put("create_name",UserInfoUtil.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); diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/task/AutoCreateTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/task/AutoCreateTask.java index c25f516..60ac502 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/task/AutoCreateTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/task/AutoCreateTask.java @@ -102,7 +102,9 @@ public class AutoCreateTask { taskList.forEach(item -> { JSONObject taskObj = new JSONObject(); taskObj.put("task_id", item.getExt_task_uuid()); - taskObj.put("task_status", TaskStatusEnum.ISSUE.getCode()); + //下发失败,改状态为了重新下发 + taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); +// taskObj.put("task_status", TaskStatusEnum.ISSUE.getCode()); taskObj.put("remark", "下发失败:" + message); taskObj.put("update_time", DateUtil.now()); taskTab.update(taskObj); @@ -115,6 +117,9 @@ public class AutoCreateTask { JSONObject taskObj = errArr.getJSONObject(i); JSONObject param=new JSONObject(); param.put("remark", "下发失败:"+taskObj.getString("message")); + //下发失败,改状态为了重新下发 + param.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); + param.put("update_time", DateUtil.now()); taskTab.update(param,"task_code = '"+taskObj.getString("task_code")+"'"); } 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 bfbe460..18e7f2a 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/hd/nladmin-system/src/main/resources/logback-spring.xml b/wms/hd/nladmin-system/src/main/resources/logback-spring.xml index ba945de..c4506c9 100644 --- a/wms/hd/nladmin-system/src/main/resources/logback-spring.xml +++ b/wms/hd/nladmin-system/src/main/resources/logback-spring.xml @@ -60,7 +60,7 @@ https://juejin.cn/post/6844903775631572999 - + diff --git a/wms/qd/src/views/login.vue b/wms/qd/src/views/login.vue index a78daa0..dca1ec9 100644 --- a/wms/qd/src/views/login.vue +++ b/wms/qd/src/views/login.vue @@ -46,7 +46,7 @@ import { encrypt } from '@/utils/rsaEncrypt' import Config from '@/settings' import { getCodeImg } from '@/api/login' import Cookies from 'js-cookie' -import Background from '@/assets/images/background2.jpg' +import Background from '@/assets/images/background.jpg' export default { name: 'Login', data() { diff --git a/wms/qd/src/views/wms/pdm/produceTask/index.vue b/wms/qd/src/views/wms/pdm/produceTask/index.vue index 621e657..7ce2ef8 100644 --- a/wms/qd/src/views/wms/pdm/produceTask/index.vue +++ b/wms/qd/src/views/wms/pdm/produceTask/index.vue @@ -257,7 +257,7 @@ {{ dict.label.PRODUCETASK_STATUS[scope.row.producetask_status] }} - + @@ -268,7 +268,7 @@ - + @@ -300,14 +300,21 @@ -