diff --git a/wms/hd/nladmin-system/pom.xml b/wms/hd/nladmin-system/pom.xml index 8444781..7e8de71 100644 --- a/wms/hd/nladmin-system/pom.xml +++ b/wms/hd/nladmin-system/pom.xml @@ -18,7 +18,6 @@ 5.5.0 - org.reflections reflections 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 2f6ec28..d8a9f85 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 @@ -13,21 +13,10 @@ import org.nl.wql.core.bean.WQLObject; public class StructFindUtil { public static JSONObject getInStruct(JSONObject jsonObject) { - String material_id = jsonObject.getString("material_id"); String area_type = jsonObject.getString("area_type"); - /* String vehicle_code = jsonObject.getString("vehicle_code"); - if (StrUtil.isEmpty(vehicle_code)) { - throw new BadRequestException("托盘不能为空!"); - } - //根据托盘找托盘类型, - JSONObject vehicleObj = WQLObject.getWQLObject("md_pb_vehicle").query("vehicle_code='" + vehicle_code + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(vehicleObj)) { - throw new BadRequestException("未找到托盘号为'" + vehicle_code + "' 托盘信息!"); - }*/ if (StrUtil.isEmpty(area_type)) { throw new BadRequestException("区域不能为空!"); } - // String vehice_type = vehicleObj.getString("vehicle_type"); JSONObject result = WQL.getWO("QSTRUCT_RULE").addParam("flag", "2") .addParam("area_type", area_type).process().uniqueResult(0); return result; @@ -105,10 +94,18 @@ public class StructFindUtil { } } JSONObject result = new JSONObject(); + // 木托盘区 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); - } else { + }else + // 单口空铁托盘区--->堆叠铁托盘区 查找单口空铁托盘区 + if (StrUtil.equals("03", area_type)) { + result = WQL.getWO("QSTRUCT_RUL01").addParam("flag", "1") + .addParam("area_type", area_type).addParam("vehicle_type", vehicle_type).process().uniqueResult(0); + } + + else { result = WQL.getWO("QSTRUCT_RULE").addParam("flag", "5") .addParam("area_type", area_type).addParam("vehicle_type", vehicle_type) .addParam("point_code", point_code). diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/wql/QSTRUCT_RUL01.wql b/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/wql/QSTRUCT_RUL01.wql new file mode 100644 index 0000000..7abbcb2 --- /dev/null +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/wql/QSTRUCT_RUL01.wql @@ -0,0 +1,80 @@ +[交易说明] + 交易名: 生产管理之产线管理下工序参数设置 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.code TYPEAS s_string + 输入.material_id TYPEAS s_string + 输入.sect_id TYPEAS s_string + 输入.area_type TYPEAS s_string + 输入.vehicle_type TYPEAS s_string + 输入.workprocedure_id TYPEAS s_string + 输入.is_full TYPEAS s_string + 输入.material_id TYPEAS s_string + 输入.next_point_code TYPEAS s_string + 输入.point_code TYPEAS s_string + 输入.group_device TYPEAS s_string + 输入.point_code TYPEAS s_string + 输入.material_type TYPEAS s_string + 输入.material_code TYPEAS s_string + + +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + +IF 输入.flag = "1" + QUERY + SELECT DISTINCT + point.point_id AS struct_id, + point.point_code AS struct_code, + point.point_name AS struct_name, + point.vehicle_code + FROM + sch_base_point point + LEFT JOIN md_pb_vehicle vehicle ON vehicle.vehicle_code = point.vehicle_code + AND point.vehicle_code <> '' + WHERE + point.point_status = '01' + OPTION 输入.area_type <> "" + point.area_type = 输入.area_type + ENDOPTION + OPTION 输入.point_code <> "" + point.point_code = 输入.point_code + ENDOPTION + OPTION 输入.vehicle_type <> "" + vehicle.vehicle_type = 输入.vehicle_type + ENDOPTION + ENDSELECT + ENDQUERY +ENDIF \ No newline at end of file diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java index ef8fb90..1b0b2e7 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java @@ -43,7 +43,6 @@ public class AcsToWmsController { //@Log("ACS机械手给WMS发送任务") @ApiOperation("ACS机械手给WMS发送任务") public ResponseEntity manipulatorApply(@RequestBody Map whereJson) { - return new ResponseEntity<>( acsToWmsService.manipulatorApply(whereJson),HttpStatus.OK); } 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 42c5875..c2626c8 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 @@ -9,9 +9,9 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.common.utils.UserInfoUtil; import org.nl.exception.BadRequestException; import org.nl.modules.system.util.CodeUtil; -import org.nl.common.utils.UserInfoUtil; import org.nl.utils.SpringContextHolder; import org.nl.wms.WorkProcedureEnum; import org.nl.wms.common.KilnUtil; @@ -30,15 +30,12 @@ import org.nl.wms.sch.service.PointService; import org.nl.wms.sch.service.TaskService; import org.nl.wms.sch.service.dto.PointDto; import org.nl.wms.sch.service.dto.TaskDto; -import org.nl.wms.sch.task.AcsTaskDto; import org.nl.wql.WQL; import org.nl.wql.core.bean.WQLObject; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; @@ -46,946 +43,1104 @@ import java.util.Map; @RequiredArgsConstructor @Slf4j public class AcsToWmsServiceImpl implements AcsToWmsService { - private final SendMaterialTask sendMaterialTask; - private final CallMaterialTask callMaterialTask; - private final SendEmptyVehicleTask sendEmptyVehicleTask; - private final CallEmptyVehicleTask callEmptyVehicleTask; - private final RgvTask rgvTask; - private final WmsToAcsServiceImpl wmsToAcsServiceImpl; - private final ToConveyorTask toConveyorTask; - private final TaskService taskService; - private final ToPackIngTask toPackIngTask; - private final FmjToPackIngTask fmjToPackIngTask; - private final VehicleService vehicleService; + private final SendMaterialTask sendMaterialTask; + private final CallMaterialTask callMaterialTask; + private final SendEmptyVehicleTask sendEmptyVehicleTask; + private final CallEmptyVehicleTask callEmptyVehicleTask; + private final RgvTask rgvTask; + private final WmsToAcsServiceImpl wmsToAcsServiceImpl; + private final ToConveyorTask toConveyorTask; + private final TaskService taskService; + private final ToPackIngTask toPackIngTask; + private final FmjToPackIngTask fmjToPackIngTask; + private final VehicleService vehicleService; + @Override + public Map receiveTaskFromAcs(Map jsonObject) { + log.debug("ACS的receiveTaskFromAcs请求参数为:" + jsonObject); + String device_code = (String) jsonObject.get("device_code"); + String type = (String) jsonObject.get("type"); + String group_id = (String) jsonObject.get("group_id"); + String is_full = (String) jsonObject.get("is_full"); - @Override - @Transactional(rollbackFor = Exception.class) - public Map receiveTaskFromAcs(Map jsonObject) { - log.debug("ACS的receiveTaskFromAcs请求参数为:" + jsonObject); - String device_code = (String) jsonObject.get("device_code"); - String type = (String) jsonObject.get("type"); - String group_id = (String) jsonObject.get("group_id"); - String is_full = (String) jsonObject.get("is_full"); + JSONObject produceInfoByCode = new JSONObject(); + if (StrUtil.isEmpty(device_code)) { + throw new BadRequestException("设备不能为空!"); + } + if (StrUtil.isEmpty(type)) { + throw new BadRequestException("类型不能为空!"); + } + 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 = + 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); + // 寻找对应的托盘类型 + 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 produceInfoByCode = new JSONObject(); - if (StrUtil.isEmpty(device_code)) { - throw new BadRequestException("设备不能为空!"); - } - if (StrUtil.isEmpty(type)) { - throw new BadRequestException("类型不能为空!"); - } - WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); - WQLObject structivtTable = WQLObject.getWQLObject("st_ivt_structivt"); - 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("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"); - jsonObject.put("qty", vehicleObj.getString("qty")); - jsonObject.put("vehicle_code", vehicle_code); - } - jsonObject.put("producetask_id", producetask_id); + 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)); + + // 生成到包装位的任务时,下发托盘类型给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; + } + + // 假如是分拣机械手的下料位置,则需要将点位上的托盘号写入 + 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); + String record_id = PressureUtil.record(joo); + // 回传不合格记录 + WmsToJnServiceImpl wmsToJnService = new WmsToJnServiceImpl(); + wmsToJnService.feedBackQualityInfo(record_id); + } + + 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 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)); - - //生成到包装位的任务时,下发托盘类型给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; - } - - //假如是分拣机械手的下料位置,则需要将点位上的托盘号写入 - 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); - } - sendMaterialTask.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); - //回传不合格记录 - WmsToJnServiceImpl wmsToJnService = new WmsToJnServiceImpl(); - wmsToJnService.feedBackQualityInfo(record_id); - } - - 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")); + 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; - - 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 = 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 - @Transactional(rollbackFor = Exception.class) - public Map manipulatorApply(Map jsonObject) { - log.debug("ACS的manipulatorApply请求参数为:" + jsonObject); - String device_code = (String) jsonObject.get("device_code"); - if (StrUtil.isEmpty(device_code)) { - throw new BadRequestException("设备点位不能为空!"); - } - String vehicle_code = ""; - JSONObject produceInfoByCode = new JSONObject(); - String is_full = (String) jsonObject.get("is_full"); - if (ObjectUtil.isNotEmpty(jsonObject.get("vehicle_code")) && !StrUtil.equals(jsonObject.get("vehicle_code").toString(), "0000") && !"0".equals(jsonObject.get("vehicle_code").toString())) { - vehicle_code = jsonObject.get("vehicle_code").toString(); - } - if (device_code.startsWith("FJJXSXLW") && StrUtil.isNotBlank(vehicle_code)) { - WQLObject.getWQLObject("st_buss_vehiclegroup").delete("vehicle_code = '" + vehicle_code + "'"); - } - 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("产品编号不能为空!"); - } - produceInfoByCode = this.getProduceInfoByCode(device_code); - String material_id = (String) produceInfoByCode.get("material_id"); - String cust_id = (String) produceInfoByCode.get("cust_id"); - String producetask_code = (String) produceInfoByCode.get("producetask_code"); - JSONObject materialObj = WQLObject.getWQLObject("MD_ME_Material").query("material_id='" + material_id + "'").uniqueResult(0); - String producetask_id = WQLObject.getWQLObject("pdm_mg_producetask").query("producetask_code='" + producetask_code + "'").uniqueResult(0).getString("producetask_id"); - JSONObject groubObj = new JSONObject(); - String group_id = IdUtil.getSnowflake(1, 1).nextId() + ""; - groubObj.put("device_id", produceInfoByCode.getString("device_id")); - groubObj.put("group_id", group_id); - groubObj.put("material_id", material_id); - groubObj.put("material_code", materialObj.getString("material_code")); - groubObj.put("material_name", materialObj.getString("material_name")); - groubObj.put("product_code", product_code); - groubObj.put("cust_id", cust_id); - groubObj.put("qty", qty); - groubObj.put("producetask_id", producetask_id); - groubObj.put("AlongSide", jsonObject.get("AlongSide")); - groubObj.put("BshortSide", jsonObject.get("BshortSide")); - groubObj.put("Htrapezoidal", jsonObject.get("Htrapezoidal")); - groubObj.put("Wthickness", jsonObject.get("Wthickness")); - groubObj.put("tray_qty", jsonObject.get("tray_qty")); - groubObj.put("crib_category", jsonObject.get("crib_category")); - groubObj.put("tray_high", jsonObject.get("tray_high")); - groubObj.put("palletX1_line", jsonObject.get("palletX1_line")); - groubObj.put("palletY1_row", jsonObject.get("palletY1_row")); - groubObj.put("palletA1_angle", jsonObject.get("palletA1_angle")); - groubObj.put("palletX2_line", jsonObject.get("palletX2_line")); - groubObj.put("palletY2_row", jsonObject.get("palletY2_row")); - groubObj.put("palletA2_angle", jsonObject.get("palletA2_angle")); - groubObj.put("palletX3_line", jsonObject.get("palletX3_line")); - groubObj.put("palletY3_row", jsonObject.get("palletY3_row")); - groubObj.put("pressCribX1_line", jsonObject.get("pressCribX1_line")); - groubObj.put("palletA3_angle", jsonObject.get("palletA3_angle")); - groubObj.put("pressCribY1_row", jsonObject.get("pressCribY1_row")); - groubObj.put("pressCribA1_angle", jsonObject.get("pressCribA1_angle")); - groubObj.put("pressCribX2_line", jsonObject.get("pressCribX2_line")); - groubObj.put("pressCribY2_row", jsonObject.get("pressCribY2_row")); - groubObj.put("pressCribA2_angle", jsonObject.get("pressCribA2_angle")); - groubObj.put("pressCribX3_line", jsonObject.get("pressCribX3_line")); - groubObj.put("pressCribY3_row", jsonObject.get("pressCribY3_row")); - groubObj.put("pressCribA3_angle", jsonObject.get("pressCribA3_angle")); - groubObj.put("Zoffset", jsonObject.get("Zoffset")); - groubObj.put("pallet_layerQty", jsonObject.get("pallet_layerQty")); - groubObj.put("pressCrib_layerQty", jsonObject.get("pressCrib_layerQty")); - groubObj.put("codeLayerX1_interval", jsonObject.get("codeLayerX1_interval")); - groubObj.put("codeLayerY1_interval", jsonObject.get("codeLayerY1_interval")); - groubObj.put("pressCrib_layerQty", jsonObject.get("pressCrib_layerQty")); - groubObj.put("codeLayerX2_interval", jsonObject.get("codeLayerX2_interval")); - groubObj.put("codeLayerY2_interval", jsonObject.get("codeLayerY2_interval")); - groubObj.put("codeLayerX3_interval", jsonObject.get("codeLayerX3_interval")); - groubObj.put("codeLayerY3_interval", jsonObject.get("codeLayerY3_interval")); - groubObj.put("codeLayerY1_offset", jsonObject.get("codeLayerY1_offset")); - groubObj.put("codeLayerX1_offset", jsonObject.get("codeLayerX1_offset")); - groubObj.put("codeLayerX3_interval", jsonObject.get("codeLayerX3_interval")); - groubObj.put("codeLayerX2_offset", jsonObject.get("codeLayerX2_offset")); - groubObj.put("codeLayerX3_offset", jsonObject.get("codeLayerX3_offset")); - groubObj.put("codeLayerY3_offset", jsonObject.get("codeLayerY3_offset")); - groubObj.put("pressLayerX1_interval", jsonObject.get("pressLayerX1_interval")); - groubObj.put("pressLayerY1_interval", jsonObject.get("pressLayerY1_interval")); - groubObj.put("pressLayerX2_interval", jsonObject.get("pressLayerX2_interval")); - groubObj.put("pressLayerY2_interval", jsonObject.get("pressLayerY2_interval")); - groubObj.put("pressLayerX3_interval", jsonObject.get("pressLayerX3_interval")); - groubObj.put("pressLayerY3_interval", jsonObject.get("pressLayerY3_interval")); - groubObj.put("pressLayerX1_offset", jsonObject.get("pressLayerX1_offset")); - groubObj.put("pressLayerY1_offset", jsonObject.get("pressLayerY1_offset")); - groubObj.put("pressLayerX2_offset", jsonObject.get("pressLayerX2_offset")); - groubObj.put("pressLayerY2_offset", jsonObject.get("pressLayerY2_offset")); - groubObj.put("pressLayerX3_offset", jsonObject.get("pressLayerX3_offset")); - groubObj.put("pressLayerY3_offset", jsonObject.get("pressLayerY3_offset")); - groubObj.put("one_cribTotal", jsonObject.get("one_cribTotal")); - groubObj.put("two_cribTotal", jsonObject.get("two_cribTotal")); - groubObj.put("one_qty", jsonObject.get("one_qty")); - groubObj.put("two_qty", jsonObject.get("two_qty")); - groubObj.put("tool_coordinate", jsonObject.get("tool_coordinate")); - groubObj.put("create_id", UserInfoUtil.getCurrentUserId()); - groubObj.put("create_name", UserInfoUtil.getNickName()); - groubObj.put("create_time", DateUtil.now()); - groubObj.put("is_full", is_full); - //去自动码垛还是人工码垛从物料信息里面去取 - groubObj.put("is_autopackage", materialObj.getString("is_auto_package")); - //假如是分拣机械手,并且托盘为空,则托盘从点位上取 - if ((StrUtil.equals(device_code, "FJJXSXLW201") || - StrUtil.equals(device_code, "FJJXSXLW202") || - StrUtil.equals(device_code, "FJJXSXLW301") || - StrUtil.equals(device_code, "FJJXSXLW302")) && (StrUtil.isEmpty(vehicle_code) || "0000".equals(vehicle_code) || "0".equals(vehicle_code)) - ) { - PointService pointService = SpringContextHolder.getBean(PointService.class); - PointDto startPoint = pointService.findByCode(device_code); - vehicle_code = startPoint.getVehicle_code(); - } - 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); - jsonObject.put("material_code", materialObj.getString("material_code")); - this.receiveTaskFromAcs(jsonObject); - JSONObject result = new JSONObject(); - result.put("status", HttpStatus.OK.value()); - result.put("message", "任务状态反馈成功!"); - result.put("data", new JSONObject()); - return result; - } - - @Override - public Map group(Map jsonObject) { - log.debug("ACS的group请求参数为:" + jsonObject); - String task_code = jsonObject.get("task_code").toString(); - String vehicle_code = jsonObject.get("vehicle_code").toString(); - //永远判断生成不生成输送任务 - String device_code = (String) jsonObject.get("device_code"); - if (StrUtil.isEmpty(task_code)) { - throw new BadRequestException("任务号不能为空!"); - } - if (StrUtil.isEmpty(vehicle_code)) { - throw new BadRequestException("载具号不能为空!"); - } - if (StrUtil.isEmpty(device_code)) { - throw new BadRequestException("设备点位不能为空!"); - } - //1组盘 - WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup"); - WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); - - JSONObject taskobj = taskTable.query("task_code='" + task_code + "'").uniqueResult(0); - String task_id = ""; - if (ObjectUtil.isNotEmpty(taskobj)) { - task_id = taskobj.getString("task_id"); - } else { - throw new BadRequestException("未找到指令号'" + task_id); - } - //将之前的托盘信息删除 -// groupTable.delete("vehicle_code='" + vehicle_code + "' and task_id <>'" + task_id + "'"); - // 如果是送料任务需要反向组盘 - String handle_class = taskobj.getString("handle_class"); - if (SendMaterialTask.class.getName().equals(handle_class) || ToConveyorTask.class.getName().equals(handle_class)) { - groupTable.delete("vehicle_code = '" + vehicle_code + "' AND task_id <> '" + task_id + "'"); - JSONObject groupObj = groupTable.query("task_id='" + task_id + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(groupObj)) { - groupObj.put("vehicle_code", vehicle_code); - groupObj.put("update_optid", UserInfoUtil.getCurrentUserId()); - groupObj.put("update_optname", UserInfoUtil.getNickName()); - groupObj.put("update_time", DateUtil.now()); - groupTable.update(groupObj); - } else { - String msg = "未找到任务号为" + task_code + "的组盘信息"; - log.error(msg); - throw new BadRequestException(msg); + } + // 需要更新覆膜机的托盘类型 + JSONArray pointarr = + WQL.getWO("ACSTOMES_001") + .addParam("area_type", "05") + .addParam("flag", "4") + .process() + .getResultJSONArray(0); + PointUpdateUtil.updatePoint(pointarr); } - } - - //更新入库单单据的托盘条码 - WQLObject iosTable = WQLObject.getWQLObject("ST_IVT_workProcedureIOS"); - JSONObject iosObj = iosTable.query("task_id ='" + task_id + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(iosObj)) { - iosObj.put("vehicle_code", vehicle_code); - iosTable.update(iosObj); - } - //更新任务的条码 - JSONObject taskObj = taskTable.query("task_id ='" + task_id + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(taskObj)) { - taskObj.put("vehicle_code", vehicle_code); - taskTable.update(taskObj); - } - //假如是入窑输送线对接口,生成输送任务 - JSONObject data = new JSONObject(); - if (StrUtil.equals("RYSSX101", device_code) || StrUtil.equals("RYSSX201", device_code) - || StrUtil.equals("RYSSX301", device_code) || StrUtil.equals("RYSSX401", device_code)) { - JSONObject param = new JSONObject(); - param.put("start_point_code", device_code); - param.put("vehicle_code", vehicle_code); - //根据起点去找终点 - ConveyorTask task = new ConveyorTask(); - - WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); - String device_id = pointTable.query("point_code ='" + device_code + "'").uniqueResult(0).getString("device_id"); - String next_point_code = pointTable.query("device_id ='" + device_id + "' and device_point_type ='02'").uniqueResult(0).getString("point_code"); - param.put("next_point_code", next_point_code); - // String conveyorTask_id = task.createTask(param); - // JSONObject conveyorTaskObj = WQLObject.getWQLObject("sch_base_task").query("task_id='" + conveyorTask_id + "'").uniqueResult(0); - /*AcsTaskDto taskDto = new AcsTaskDto(); - taskDto.setExt_task_uuid(conveyorTaskObj.getString("task_id")); - taskDto.setTask_code(conveyorTaskObj.getString("task_code")); - taskDto.setRoute_plan_code("normal"); - taskDto.setStart_device_code(conveyorTaskObj.getString("start_point_code")); - taskDto.setNext_device_code(conveyorTaskObj.getString("next_point_code")); - taskDto.setVehicle_code(conveyorTaskObj.getString("vehicle_code")); - data = (JSONObject) JSONObject.parse(JSON.toJSONString(taskDto));*/ - } - JSONObject result = new JSONObject(); - result.put("status", HttpStatus.OK.value()); - result.put("message", "任务状态反馈成功!"); - result.put("data", data); - return result; - } - - @Override - public Map inKiln(Map jsonObject) { - log.debug("ACS的inKiln请求参数为:" + jsonObject); - String vehicle_code = String.valueOf(jsonObject.get("vehicle_code")); - KilnUtil.inKiln(vehicle_code); - JSONObject jo = new JSONObject(); - jo.put("vehicle_code", vehicle_code); - //调用wms的接口 - WmsToJnServiceImpl wmsToJnService = new WmsToJnServiceImpl(); - wmsToJnService.feedBackInKiln(jo); - JSONObject result = new JSONObject(); - result.put("status", HttpStatus.OK.value()); - result.put("message", "任务状态反馈成功!"); - result.put("data", new JSONObject()); - return result; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public Map ispackage(Map jsonObject) { - log.debug("ACS的ispackage请求参数为:" + jsonObject); - 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 + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(vehicleObj)) { - throw new BadRequestException("为找到托盘号为'" + vehicle_code + "'的组盘信息!"); - } - WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup"); - JSONObject groupObj = groupTable.query("vehicle_code ='" + vehicle_code + "'").uniqueResult(0); - groupTable.query("vehicle_code ='" + vehicle_code + "'").uniqueResult(0); - ; - String is_autopackage = groupObj.getString("is_autopackage"); - //code的值 1:自动码垛;2:人工码垛; - String code = ""; - if (StrUtil.equals("0", is_autopackage)) { - code = "1"; - } else { - code = "2"; - } - //更新窑的信息 - KilnUtil.outKiln(vehicle_code); - - JSONObject jo = new JSONObject(); - jo.put("vehicle_code", vehicle_code); - //调用wms的接口 - WmsToJnServiceImpl wmsToJnService = new WmsToJnServiceImpl(); - wmsToJnService.feedBackOutKiln(jo); - - JSONObject result = new JSONObject(); - result.put("status", HttpStatus.OK.value()); - result.put("message", "任务状态反馈成功!"); - result.put("code", code); - return result; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public Map getEmptyVehicle_code(Map jsonObject) { - log.debug("ACS的getEmptyVehicle_code请求参数为:" + jsonObject); - //获取一个空的托盘号 - String code = "VEHICCLE_CODE_MTP"; - String vehicle_type = "03"; - WQLObject vehicle_table = WQLObject.getWQLObject("MD_PB_Vehicle"); - VehicleDto dto = new VehicleDto(); - dto.setVehicle_id(IdUtil.getSnowflake(1, 1).nextId()); - String vehicle_code = CodeUtil.getNewCode(code); - Long currentUserId = UserInfoUtil.getCurrentUserId(); - String nickName = UserInfoUtil.getNickName(); - String now = DateUtil.now(); - dto.setVehicle_code(vehicle_code); - dto.setCreate_id(currentUserId); - dto.setVehicle_name(vehicle_code); - dto.setCreate_name(nickName); - dto.setUpdate_optid(currentUserId); - dto.setUpdate_optname(nickName); - dto.setUpdate_time(now); - dto.setCreate_time(now); - dto.setVehicle_type(vehicle_type); - JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); - vehicle_table.insert(json); - JSONObject returnjo = new JSONObject(); - returnjo.put("vehicle_code", vehicle_code); - return returnjo; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public Map getDevicecodeByVehicle_ype(Map jsonObject) { - log.debug("ACS的getDevicecodeByVehicle_ype请求参数为:" + jsonObject); - String vehicle_type = (String) jsonObject.get("vehicle_type"); - if (StrUtil.isEmpty(vehicle_type)) { - throw new BadRequestException("托盘类型不能为空!"); - } - WQLObject point_table = WQLObject.getWQLObject("sch_base_point"); - JSONObject pointObj = point_table.query("vehicle_type='" + vehicle_type + "' and area_type='27'").uniqueResult(0); - if (ObjectUtil.isEmpty(pointObj)) { - throw new BadRequestException("为找到类型为'" + vehicle_type + "' 的设备点位"); - } - JSONObject returnjo = new JSONObject(); - returnjo.put("device_code", pointObj.getString("point_code")); - return returnjo; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public Map getVehicleInfoBycode(Map jsonObject) { - log.debug("ACS的getVehicleInfoBycode请求参数为:" + jsonObject); - String device_code = (String) jsonObject.get("device_code"); - WQLObject point_table = WQLObject.getWQLObject("sch_base_point"); - String vehicle_code = point_table.query("point_code='" + device_code + "'").uniqueResult(0).getString("vehicle_code"); - if (StrUtil.isEmpty(vehicle_code)) { - throw new BadRequestException("未找到该点位上的托盘信息!"); - } - JSONObject vehicleObj = WQLObject.getWQLObject("st_buss_vehiclegroup").query("vehicle_code='" + vehicle_code + "' AND is_delete='0'").uniqueResult(0); - if (ObjectUtil.isEmpty(vehicleObj)) { - throw new BadRequestException("未找到托盘号为'" + vehicle_code + "'的托盘信息!"); - } - JSONObject result = new JSONObject(); - result.put("status", HttpStatus.OK.value()); - result.put("message", "任务状态反馈成功!"); - result.put("content", vehicleObj); - return result; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public Map sureProduceTask(Map jsonObject) { - log.debug("ACS的sureProduceTask请求参数为:" + jsonObject); - String producetask_code = (String) jsonObject.get("producetask_code"); - String device_code = (String) jsonObject.get("device_code"); - String material_code = (String) jsonObject.get("material_code"); - String qty = String.valueOf(jsonObject.get("qty")); - String type = (String) jsonObject.get("type"); - if (StrUtil.isEmpty(type)) { - throw new BadRequestException("类型不能为空!"); - } - WQLObject taskTable = WQLObject.getWQLObject("PDM_MG_produceTask"); - JSONObject taskObj = taskTable.query("producetask_code='" + producetask_code + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException("未找到工单号为'" + producetask_code + "'的工单信息!"); - } - //1为确认 - //2为完成 - if (StrUtil.equals(type, "1")) { - if (StrUtil.isEmpty(producetask_code)) { - throw new BadRequestException("工单号不能为空!"); + if (ObjectUtil.isEmpty(produceInfoByCode)) { + throw new BadRequestException("未找到点位为'" + device_code + "'对应机械手的生产工单!"); } - if (StrUtil.isEmpty(device_code)) { - throw new BadRequestException("设备点位不能为空!"); - } - if (StrUtil.isEmpty(material_code)) { - throw new BadRequestException("物料编码不能为空!"); - } - //根据设备去找设备id - String device_id = ""; - if (StrUtil.equals("FJJXS1", device_code) || StrUtil.equals("FJJXS2", device_code) || StrUtil.equals("FJJXS3", device_code)) { - device_id = WQLObject.getWQLObject("pdm_base_device").query("device_code ='" + device_code + "'").uniqueResult(0).getString("device_id"); - } else { - device_id = WQLObject.getWQLObject("sch_base_point").query("point_code='" + device_code + "'").uniqueResult(0).getString("device_id"); - - } - //根据物料code 去找物料id - JSONObject materiObj = WQLObject.getWQLObject("MD_ME_Material").query("material_code='" + material_code + "'").uniqueResult(0); - if (!StrUtil.equals(device_id, taskObj.getString("device_id"))) { - throw new BadRequestException("设备标识不一样!"); - } - if (!StrUtil.equals(materiObj.getString("material_id"), taskObj.getString("material_id"))) { - throw new BadRequestException("物料标识不一样!"); - } - taskObj.put("producetask_status", "04"); - - if (StrUtil.equals("FJJXS1", device_code) || StrUtil.equals("FJJXS2", device_code) || StrUtil.equals("FJJXS3", device_code)) { - //调用mes接口 - HashMap map = new HashMap(); - map.put("producetask_code", producetask_code); - WmsToJnServiceImpl wmsToJnServiceImpl = new WmsToJnServiceImpl(); - wmsToJnServiceImpl.feedBackPackWordShop(map); - } - - } - if (StrUtil.equals("2", type)) { - taskObj.put("producetask_status", "05"); - taskObj.put("real_qty", qty); - } - taskTable.update(taskObj); - JSONObject result = new JSONObject(); - result.put("status", HttpStatus.OK.value()); - result.put("message", "任务状态反馈成功!"); - result.put("data", new JSONObject()); - return result; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateVehicleType(Map jsonObject) { - log.debug("ACS的updateVehicleType请求参数为:" + jsonObject); - String vehicle_type = (String) jsonObject.get("vehicle_type"); - if (vehicle_type.equals("1")) { - vehicle_type = "03"; - } else if (vehicle_type.equals("2")) { - vehicle_type = "04"; - } else if (vehicle_type.equals("3")) { - vehicle_type = "05"; - } else if (vehicle_type.equals("4")) { - vehicle_type = "06"; - } else if (vehicle_type.equals("5")) { - vehicle_type = "07"; - } - String device_code = (String) jsonObject.get("device_code"); - String vehicle_code = jsonObject.get("vehicle_code").toString(); - if (StrUtil.isEmpty(vehicle_type)) { - throw new BadRequestException("托盘类型不能为空!"); - } - if (StrUtil.isEmpty(device_code)) { - throw new BadRequestException("设备点位不能为空"); - } - if (StrUtil.isEmpty(vehicle_code)) { - throw new BadRequestException("托盘号不能为空!"); - } - WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); - JSONObject pointObj = pointTable.query("point_code='" + device_code + "' and area_type='05'").uniqueResult(0); - pointObj.put("vehicle_type", vehicle_type); - pointObj.put("vehicle_code", vehicle_code); - pointObj.put("point_status", "01"); - pointTable.update(pointObj); - - } - - @Override - @Transactional(rollbackFor = Exception.class) - public Map receiveTaskStatusAcs(String string) { - { - JSONArray array = JSONArray.parseArray(string); - log.debug("ACS的receiveTaskStatusAcs请求参数为:" + array); - //返回处理失败的任务 - JSONArray errArr = new JSONArray(); - for (int i = 0; i < array.size(); i++) { - JSONObject row = array.getJSONObject(i); - String task_id = row.getString("ext_task_uuid"); - row.put("task_id", task_id); - TaskDto taskDto = taskService.findById(task_id); - String processing_class = taskDto.getHandle_class(); - //1:执行中,2:完成 ,3:acs取消 - String acs_task_status = row.getString("task_status"); - String message = ""; - String status = ""; - if ("1".equals(acs_task_status)) { - status = TaskStatusEnum.EXECUTING.getCode(); - } - if ("2".equals(acs_task_status)) { - status = TaskStatusEnum.FINISHED.getCode(); - } - // 任务处理类 - try { - 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(); - log.info("任务状态更新失败:{}", message); - - JSONObject json = new JSONObject(); - json.put("task_id", task_id); - json.put("message", message); - errArr.add(json); - - } - } - + 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.OK.value()); - result.put("message", "任务状态反馈成功!"); + result.put("status", HttpStatus.CREATED.value()); + result.put("message", "失败!"); result.put("data", new JSONObject()); - result.put("errArr", errArr); 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 + @Transactional(rollbackFor = Exception.class) + public Map manipulatorApply(Map jsonObject) { + log.debug("ACS的manipulatorApply请求参数为:" + jsonObject); + String device_code = (String) jsonObject.get("device_code"); + if (StrUtil.isEmpty(device_code)) { + throw new BadRequestException("设备点位不能为空!"); + } + String vehicle_code = ""; + JSONObject produceInfoByCode = new JSONObject(); + String is_full = (String) jsonObject.get("is_full"); + if (ObjectUtil.isNotEmpty(jsonObject.get("vehicle_code")) + && !StrUtil.equals(jsonObject.get("vehicle_code").toString(), "0000") + && !"0".equals(jsonObject.get("vehicle_code").toString())) { + vehicle_code = jsonObject.get("vehicle_code").toString(); + } + if (device_code.startsWith("FJJXSXLW") && StrUtil.isNotBlank(vehicle_code)) { + WQLObject.getWQLObject("st_buss_vehiclegroup") + .delete("vehicle_code = '" + vehicle_code + "'"); + } + 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("产品编号不能为空!"); + } + produceInfoByCode = this.getProduceInfoByCode(device_code); + String material_id = (String) produceInfoByCode.get("material_id"); + String cust_id = (String) produceInfoByCode.get("cust_id"); + String producetask_code = (String) produceInfoByCode.get("producetask_code"); + JSONObject materialObj = + WQLObject.getWQLObject("MD_ME_Material") + .query("material_id='" + material_id + "'") + .uniqueResult(0); + String producetask_id = + WQLObject.getWQLObject("pdm_mg_producetask") + .query("producetask_code='" + producetask_code + "'") + .uniqueResult(0) + .getString("producetask_id"); + JSONObject groubObj = new JSONObject(); + String group_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + groubObj.put("device_id", produceInfoByCode.getString("device_id")); + groubObj.put("group_id", group_id); + groubObj.put("material_id", material_id); + groubObj.put("material_code", materialObj.getString("material_code")); + groubObj.put("material_name", materialObj.getString("material_name")); + groubObj.put("product_code", product_code); + groubObj.put("cust_id", cust_id); + groubObj.put("qty", qty); + groubObj.put("producetask_id", producetask_id); + groubObj.put("AlongSide", jsonObject.get("AlongSide")); + groubObj.put("BshortSide", jsonObject.get("BshortSide")); + groubObj.put("Htrapezoidal", jsonObject.get("Htrapezoidal")); + groubObj.put("Wthickness", jsonObject.get("Wthickness")); + groubObj.put("tray_qty", jsonObject.get("tray_qty")); + groubObj.put("crib_category", jsonObject.get("crib_category")); + groubObj.put("tray_high", jsonObject.get("tray_high")); + groubObj.put("palletX1_line", jsonObject.get("palletX1_line")); + groubObj.put("palletY1_row", jsonObject.get("palletY1_row")); + groubObj.put("palletA1_angle", jsonObject.get("palletA1_angle")); + groubObj.put("palletX2_line", jsonObject.get("palletX2_line")); + groubObj.put("palletY2_row", jsonObject.get("palletY2_row")); + groubObj.put("palletA2_angle", jsonObject.get("palletA2_angle")); + groubObj.put("palletX3_line", jsonObject.get("palletX3_line")); + groubObj.put("palletY3_row", jsonObject.get("palletY3_row")); + groubObj.put("pressCribX1_line", jsonObject.get("pressCribX1_line")); + groubObj.put("palletA3_angle", jsonObject.get("palletA3_angle")); + groubObj.put("pressCribY1_row", jsonObject.get("pressCribY1_row")); + groubObj.put("pressCribA1_angle", jsonObject.get("pressCribA1_angle")); + groubObj.put("pressCribX2_line", jsonObject.get("pressCribX2_line")); + groubObj.put("pressCribY2_row", jsonObject.get("pressCribY2_row")); + groubObj.put("pressCribA2_angle", jsonObject.get("pressCribA2_angle")); + groubObj.put("pressCribX3_line", jsonObject.get("pressCribX3_line")); + groubObj.put("pressCribY3_row", jsonObject.get("pressCribY3_row")); + groubObj.put("pressCribA3_angle", jsonObject.get("pressCribA3_angle")); + groubObj.put("Zoffset", jsonObject.get("Zoffset")); + groubObj.put("pallet_layerQty", jsonObject.get("pallet_layerQty")); + groubObj.put("pressCrib_layerQty", jsonObject.get("pressCrib_layerQty")); + groubObj.put("codeLayerX1_interval", jsonObject.get("codeLayerX1_interval")); + groubObj.put("codeLayerY1_interval", jsonObject.get("codeLayerY1_interval")); + groubObj.put("pressCrib_layerQty", jsonObject.get("pressCrib_layerQty")); + groubObj.put("codeLayerX2_interval", jsonObject.get("codeLayerX2_interval")); + groubObj.put("codeLayerY2_interval", jsonObject.get("codeLayerY2_interval")); + groubObj.put("codeLayerX3_interval", jsonObject.get("codeLayerX3_interval")); + groubObj.put("codeLayerY3_interval", jsonObject.get("codeLayerY3_interval")); + groubObj.put("codeLayerY1_offset", jsonObject.get("codeLayerY1_offset")); + groubObj.put("codeLayerX1_offset", jsonObject.get("codeLayerX1_offset")); + groubObj.put("codeLayerX3_interval", jsonObject.get("codeLayerX3_interval")); + groubObj.put("codeLayerX2_offset", jsonObject.get("codeLayerX2_offset")); + groubObj.put("codeLayerX3_offset", jsonObject.get("codeLayerX3_offset")); + groubObj.put("codeLayerY3_offset", jsonObject.get("codeLayerY3_offset")); + groubObj.put("pressLayerX1_interval", jsonObject.get("pressLayerX1_interval")); + groubObj.put("pressLayerY1_interval", jsonObject.get("pressLayerY1_interval")); + groubObj.put("pressLayerX2_interval", jsonObject.get("pressLayerX2_interval")); + groubObj.put("pressLayerY2_interval", jsonObject.get("pressLayerY2_interval")); + groubObj.put("pressLayerX3_interval", jsonObject.get("pressLayerX3_interval")); + groubObj.put("pressLayerY3_interval", jsonObject.get("pressLayerY3_interval")); + groubObj.put("pressLayerX1_offset", jsonObject.get("pressLayerX1_offset")); + groubObj.put("pressLayerY1_offset", jsonObject.get("pressLayerY1_offset")); + groubObj.put("pressLayerX2_offset", jsonObject.get("pressLayerX2_offset")); + groubObj.put("pressLayerY2_offset", jsonObject.get("pressLayerY2_offset")); + groubObj.put("pressLayerX3_offset", jsonObject.get("pressLayerX3_offset")); + groubObj.put("pressLayerY3_offset", jsonObject.get("pressLayerY3_offset")); + groubObj.put("one_cribTotal", jsonObject.get("one_cribTotal")); + groubObj.put("two_cribTotal", jsonObject.get("two_cribTotal")); + groubObj.put("one_qty", jsonObject.get("one_qty")); + groubObj.put("two_qty", jsonObject.get("two_qty")); + groubObj.put("tool_coordinate", jsonObject.get("tool_coordinate")); + groubObj.put("create_id", UserInfoUtil.getCurrentUserId()); + groubObj.put("create_name", UserInfoUtil.getNickName()); + groubObj.put("create_time", DateUtil.now()); + groubObj.put("is_full", is_full); + // 去自动码垛还是人工码垛从物料信息里面去取 + groubObj.put("is_autopackage", materialObj.getString("is_auto_package")); + // 假如是分拣机械手,并且托盘为空,则托盘从点位上取 + if ((StrUtil.equals(device_code, "FJJXSXLW201") + || StrUtil.equals(device_code, "FJJXSXLW202") + || StrUtil.equals(device_code, "FJJXSXLW301") + || StrUtil.equals(device_code, "FJJXSXLW302")) + && (StrUtil.isEmpty(vehicle_code) + || "0000".equals(vehicle_code) + || "0".equals(vehicle_code))) { + PointService pointService = SpringContextHolder.getBean(PointService.class); + PointDto startPoint = pointService.findByCode(device_code); + vehicle_code = startPoint.getVehicle_code(); + } + 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); + jsonObject.put("material_code", materialObj.getString("material_code")); + this.receiveTaskFromAcs(jsonObject); + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.OK.value()); + result.put("message", "任务状态反馈成功!"); + result.put("data", new JSONObject()); + return result; + } + + @Override + public Map group(Map jsonObject) { + log.debug("ACS的group请求参数为:" + jsonObject); + String task_code = jsonObject.get("task_code").toString(); + String vehicle_code = jsonObject.get("vehicle_code").toString(); + // 永远判断生成不生成输送任务 + String device_code = (String) jsonObject.get("device_code"); + if (StrUtil.isEmpty(task_code)) { + throw new BadRequestException("任务号不能为空!"); + } + if (StrUtil.isEmpty(vehicle_code)) { + throw new BadRequestException("载具号不能为空!"); + } + if (StrUtil.isEmpty(device_code)) { + throw new BadRequestException("设备点位不能为空!"); + } + // 1组盘 + WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup"); + WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); + + JSONObject taskobj = taskTable.query("task_code='" + task_code + "'").uniqueResult(0); + String task_id = ""; + if (ObjectUtil.isNotEmpty(taskobj)) { + task_id = taskobj.getString("task_id"); + } else { + throw new BadRequestException("未找到指令号'" + task_id); + } + // 将之前的托盘信息删除 + // groupTable.delete("vehicle_code='" + vehicle_code + "' and task_id <>'" + task_id + + // "'"); + // 如果是送料任务需要反向组盘 + String handle_class = taskobj.getString("handle_class"); + if (SendMaterialTask.class.getName().equals(handle_class) + || ToConveyorTask.class.getName().equals(handle_class)) { + groupTable.delete("vehicle_code = '" + vehicle_code + "' AND task_id <> '" + task_id + "'"); + JSONObject groupObj = groupTable.query("task_id='" + task_id + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(groupObj)) { + groupObj.put("vehicle_code", vehicle_code); + groupObj.put("update_optid", UserInfoUtil.getCurrentUserId()); + groupObj.put("update_optname", UserInfoUtil.getNickName()); + groupObj.put("update_time", DateUtil.now()); + groupTable.update(groupObj); + } else { + String msg = "未找到任务号为" + task_code + "的组盘信息"; + log.error(msg); + throw new BadRequestException(msg); + } } - @Override - public Map CribbingInfoByCode(String material_code) { - log.debug("ACS的CribbingInfoByCode请求参数为:" + material_code); - if (StrUtil.isEmpty(material_code)) { - throw new BadRequestException("物料条码不能为空!"); + // 更新入库单单据的托盘条码 + WQLObject iosTable = WQLObject.getWQLObject("ST_IVT_workProcedureIOS"); + JSONObject iosObj = iosTable.query("task_id ='" + task_id + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(iosObj)) { + iosObj.put("vehicle_code", vehicle_code); + iosTable.update(iosObj); + } + // 更新任务的条码 + JSONObject taskObj = taskTable.query("task_id ='" + task_id + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(taskObj)) { + taskObj.put("vehicle_code", vehicle_code); + taskTable.update(taskObj); + } + // 假如是入窑输送线对接口,生成输送任务 + JSONObject data = new JSONObject(); + if (StrUtil.equals("RYSSX101", device_code) + || StrUtil.equals("RYSSX201", device_code) + || StrUtil.equals("RYSSX301", device_code) + || StrUtil.equals("RYSSX401", device_code)) { + JSONObject param = new JSONObject(); + param.put("start_point_code", device_code); + param.put("vehicle_code", vehicle_code); + // 根据起点去找终点 + ConveyorTask task = new ConveyorTask(); + + WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); + String device_id = + pointTable + .query("point_code ='" + device_code + "'") + .uniqueResult(0) + .getString("device_id"); + String next_point_code = + pointTable + .query("device_id ='" + device_id + "' and device_point_type ='02'") + .uniqueResult(0) + .getString("point_code"); + param.put("next_point_code", next_point_code); + } + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.OK.value()); + result.put("message", "任务状态反馈成功!"); + result.put("data", data); + return result; + } + + @Override + public Map inKiln(Map jsonObject) { + log.debug("ACS的inKiln请求参数为:" + jsonObject); + String vehicle_code = String.valueOf(jsonObject.get("vehicle_code")); + KilnUtil.inKiln(vehicle_code); + JSONObject jo = new JSONObject(); + jo.put("vehicle_code", vehicle_code); + // 调用wms的接口 + WmsToJnServiceImpl wmsToJnService = new WmsToJnServiceImpl(); + wmsToJnService.feedBackInKiln(jo); + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.OK.value()); + result.put("message", "任务状态反馈成功!"); + result.put("data", new JSONObject()); + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Map ispackage(Map jsonObject) { + log.debug("ACS的ispackage请求参数为:" + jsonObject); + 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 + "'") + .uniqueResult(0); + if (ObjectUtil.isEmpty(vehicleObj)) { + throw new BadRequestException("为找到托盘号为'" + vehicle_code + "'的组盘信息!"); + } + WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup"); + JSONObject groupObj = groupTable.query("vehicle_code ='" + vehicle_code + "'").uniqueResult(0); + groupTable.query("vehicle_code ='" + vehicle_code + "'").uniqueResult(0); + String is_autopackage = groupObj.getString("is_autopackage"); + // code的值 1:自动码垛;2:人工码垛; + String code = ""; + if (StrUtil.equals("0", is_autopackage)) { + code = "1"; + } else { + code = "2"; + } + // 更新窑的信息 + KilnUtil.outKiln(vehicle_code); + + JSONObject jo = new JSONObject(); + jo.put("vehicle_code", vehicle_code); + // 调用wms的接口 + WmsToJnServiceImpl wmsToJnService = new WmsToJnServiceImpl(); + wmsToJnService.feedBackOutKiln(jo); + + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.OK.value()); + result.put("message", "任务状态反馈成功!"); + result.put("code", code); + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Map getEmptyVehicle_code(Map jsonObject) { + log.debug("ACS的getEmptyVehicle_code请求参数为:" + jsonObject); + // 获取一个空的托盘号 + String code = "VEHICCLE_CODE_MTP"; + String vehicle_type = "03"; + WQLObject vehicle_table = WQLObject.getWQLObject("MD_PB_Vehicle"); + VehicleDto dto = new VehicleDto(); + dto.setVehicle_id(IdUtil.getSnowflake(1, 1).nextId()); + String vehicle_code = CodeUtil.getNewCode(code); + Long currentUserId = UserInfoUtil.getCurrentUserId(); + String nickName = UserInfoUtil.getNickName(); + String now = DateUtil.now(); + dto.setVehicle_code(vehicle_code); + dto.setCreate_id(currentUserId); + dto.setVehicle_name(vehicle_code); + dto.setCreate_name(nickName); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); + dto.setUpdate_time(now); + dto.setCreate_time(now); + dto.setVehicle_type(vehicle_type); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + vehicle_table.insert(json); + JSONObject returnjo = new JSONObject(); + returnjo.put("vehicle_code", vehicle_code); + return returnjo; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Map getDevicecodeByVehicle_ype(Map jsonObject) { + log.debug("ACS的getDevicecodeByVehicle_ype请求参数为:" + jsonObject); + String vehicle_type = (String) jsonObject.get("vehicle_type"); + if (StrUtil.isEmpty(vehicle_type)) { + throw new BadRequestException("托盘类型不能为空!"); + } + WQLObject point_table = WQLObject.getWQLObject("sch_base_point"); + JSONObject pointObj = + point_table.query("vehicle_type='" + vehicle_type + "' and area_type='27'").uniqueResult(0); + if (ObjectUtil.isEmpty(pointObj)) { + throw new BadRequestException("为找到类型为'" + vehicle_type + "' 的设备点位"); + } + JSONObject returnjo = new JSONObject(); + returnjo.put("device_code", pointObj.getString("point_code")); + return returnjo; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Map getVehicleInfoBycode(Map jsonObject) { + log.debug("ACS的getVehicleInfoBycode请求参数为:" + jsonObject); + String device_code = (String) jsonObject.get("device_code"); + WQLObject point_table = WQLObject.getWQLObject("sch_base_point"); + String vehicle_code = + point_table + .query("point_code='" + device_code + "'") + .uniqueResult(0) + .getString("vehicle_code"); + if (StrUtil.isEmpty(vehicle_code)) { + throw new BadRequestException("未找到该点位上的托盘信息!"); + } + JSONObject vehicleObj = + WQLObject.getWQLObject("st_buss_vehiclegroup") + .query("vehicle_code='" + vehicle_code + "' AND is_delete='0'") + .uniqueResult(0); + if (ObjectUtil.isEmpty(vehicleObj)) { + throw new BadRequestException("未找到托盘号为'" + vehicle_code + "'的托盘信息!"); + } + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.OK.value()); + result.put("message", "任务状态反馈成功!"); + result.put("content", vehicleObj); + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Map sureProduceTask(Map jsonObject) { + log.debug("ACS的sureProduceTask请求参数为:" + jsonObject); + String producetask_code = (String) jsonObject.get("producetask_code"); + String device_code = (String) jsonObject.get("device_code"); + String material_code = (String) jsonObject.get("material_code"); + String qty = String.valueOf(jsonObject.get("qty")); + String type = (String) jsonObject.get("type"); + if (StrUtil.isEmpty(type)) { + throw new BadRequestException("类型不能为空!"); + } + WQLObject taskTable = WQLObject.getWQLObject("PDM_MG_produceTask"); + JSONObject taskObj = + taskTable.query("producetask_code='" + producetask_code + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("未找到工单号为'" + producetask_code + "'的工单信息!"); + } + // 1为确认 + // 2为完成 + if (StrUtil.equals(type, "1")) { + if (StrUtil.isEmpty(producetask_code)) { + throw new BadRequestException("工单号不能为空!"); + } + if (StrUtil.isEmpty(device_code)) { + throw new BadRequestException("设备点位不能为空!"); + } + if (StrUtil.isEmpty(material_code)) { + throw new BadRequestException("物料编码不能为空!"); + } + // 根据设备去找设备id + String device_id = ""; + if (StrUtil.equals("FJJXS1", device_code) + || StrUtil.equals("FJJXS2", device_code) + || StrUtil.equals("FJJXS3", device_code)) { + device_id = + WQLObject.getWQLObject("pdm_base_device") + .query("device_code ='" + device_code + "'") + .uniqueResult(0) + .getString("device_id"); + } else { + device_id = + WQLObject.getWQLObject("sch_base_point") + .query("point_code='" + device_code + "'") + .uniqueResult(0) + .getString("device_id"); + } + // 根据物料code 去找物料id + JSONObject materiObj = + WQLObject.getWQLObject("MD_ME_Material") + .query("material_code='" + material_code + "'") + .uniqueResult(0); + if (!StrUtil.equals(device_id, taskObj.getString("device_id"))) { + throw new BadRequestException("设备标识不一样!"); + } + if (!StrUtil.equals(materiObj.getString("material_id"), taskObj.getString("material_id"))) { + throw new BadRequestException("物料标识不一样!"); + } + taskObj.put("producetask_status", "04"); + + if (StrUtil.equals("FJJXS1", device_code) + || StrUtil.equals("FJJXS2", device_code) + || StrUtil.equals("FJJXS3", device_code)) { + // 调用mes接口 + HashMap map = new HashMap(); + map.put("producetask_code", producetask_code); + WmsToJnServiceImpl wmsToJnServiceImpl = new WmsToJnServiceImpl(); + wmsToJnServiceImpl.feedBackPackWordShop(map); + } + } + if (StrUtil.equals("2", type)) { + taskObj.put("producetask_status", "05"); + taskObj.put("real_qty", qty); + } + taskTable.update(taskObj); + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.OK.value()); + result.put("message", "任务状态反馈成功!"); + result.put("data", new JSONObject()); + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateVehicleType(Map jsonObject) { + log.debug("ACS的updateVehicleType请求参数为:" + jsonObject); + String vehicle_type = (String) jsonObject.get("vehicle_type"); + if (vehicle_type.equals("1")) { + vehicle_type = "03"; + } else if (vehicle_type.equals("2")) { + vehicle_type = "04"; + } else if (vehicle_type.equals("3")) { + vehicle_type = "05"; + } else if (vehicle_type.equals("4")) { + vehicle_type = "06"; + } else if (vehicle_type.equals("5")) { + vehicle_type = "07"; + } + String device_code = (String) jsonObject.get("device_code"); + String vehicle_code = jsonObject.get("vehicle_code").toString(); + if (StrUtil.isEmpty(vehicle_type)) { + throw new BadRequestException("托盘类型不能为空!"); + } + if (StrUtil.isEmpty(device_code)) { + throw new BadRequestException("设备点位不能为空"); + } + if (StrUtil.isEmpty(vehicle_code)) { + throw new BadRequestException("托盘号不能为空!"); + } + WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); + JSONObject pointObj = + pointTable.query("point_code='" + device_code + "' and area_type='05'").uniqueResult(0); + pointObj.put("vehicle_type", vehicle_type); + pointObj.put("vehicle_code", vehicle_code); + pointObj.put("point_status", "01"); + pointTable.update(pointObj); + } + + @Override + public Map receiveTaskStatusAcs(String string) { + { + JSONArray array = JSONArray.parseArray(string); + log.debug("ACS的receiveTaskStatusAcs请求参数为:" + array); + // 返回处理失败的任务 + JSONArray errArr = new JSONArray(); + for (int i = 0; i < array.size(); i++) { + JSONObject row = array.getJSONObject(i); + String task_id = row.getString("ext_task_uuid"); + row.put("task_id", task_id); + TaskDto taskDto = taskService.findById(task_id); + String processing_class = taskDto.getHandle_class(); + // 1:执行中,2:完成 ,3:acs取消 + String acs_task_status = row.getString("task_status"); + String message = ""; + String status = ""; + if ("1".equals(acs_task_status)) { + status = TaskStatusEnum.EXECUTING.getCode(); } - JSONObject returnjo = WQLObject.getWQLObject("MD_ME_CribbingInfo").query("material_code='" + material_code + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(returnjo)) { - throw new BadRequestException("未找到物料编码为'" + material_code + "'的垛形参数信息!"); + if ("2".equals(acs_task_status)) { + status = TaskStatusEnum.FINISHED.getCode(); } - JSONObject result = new JSONObject(); - result.put("status", HttpStatus.OK.value()); - result.put("message", "任务状态反馈成功!"); - result.put("data", returnjo); - return result; + if (ObjectUtil.isEmpty(status)) { + status = acs_task_status; + } + // 任务处理类 + try { + 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(); + log.info("任务状态更新失败:{}", message); + + JSONObject json = new JSONObject(); + json.put("task_id", task_id); + json.put("message", message); + errArr.add(json); + } + } + + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.OK.value()); + result.put("message", "任务状态反馈成功!"); + result.put("data", new JSONObject()); + result.put("errArr", errArr); + return result; + } + } + + @Override + public Map CribbingInfoByCode(String material_code) { + log.debug("ACS的CribbingInfoByCode请求参数为:" + material_code); + if (StrUtil.isEmpty(material_code)) { + throw new BadRequestException("物料条码不能为空!"); + } + JSONObject returnjo = + WQLObject.getWQLObject("MD_ME_CribbingInfo") + .query("material_code='" + material_code + "'") + .uniqueResult(0); + if (ObjectUtil.isEmpty(returnjo)) { + throw new BadRequestException("未找到物料编码为'" + material_code + "'的垛形参数信息!"); + } + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.OK.value()); + result.put("message", "任务状态反馈成功!"); + result.put("data", returnjo); + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Map receiveAgvStatus(JSONArray arr) { + log.debug("ACS的receiveAgvStatus请求参数为:" + arr); + WQLObject deviceStatus_table = WQLObject.getWQLObject("st_buss_deviceStatus"); + for (int i = 0; i < arr.size(); i++) { + JSONObject jo = arr.getJSONObject(i); + String agv_no = jo.getString("device_code"); + String status = jo.getString("status"); + String device_status = ""; + // 1-搬运中 2-充电 3-等待 4-故障 5-停用 + if (StrUtil.equals(status, "EXECUTING")) { + device_status = "1"; + } + if (StrUtil.equals(status, "CHARGING")) { + device_status = "2"; + } + if (StrUtil.equals(status, "IDLE")) { + device_status = "3"; + } + if (StrUtil.equals(status, "ERROR")) { + device_status = "4"; + } + if (StrUtil.equals(status, "UNKNOWN") || StrUtil.equals("UNAVAILABLE", status)) { + device_status = "5"; + } + JSONObject statsObj = + deviceStatus_table + .query("device_type ='1' and device_code ='" + agv_no + "'") + .uniqueResult(0); + statsObj.put("device_status", device_status); + statsObj.put("update_time", DateUtil.now()); + deviceStatus_table.update(statsObj); } - @Override - @Transactional(rollbackFor = Exception.class) - public Map receiveAgvStatus(JSONArray arr) { - log.debug("ACS的receiveAgvStatus请求参数为:" + arr); - WQLObject deviceStatus_table = WQLObject.getWQLObject("st_buss_deviceStatus"); - for (int i = 0; i < arr.size(); i++) { - JSONObject jo = arr.getJSONObject(i); - String agv_no = jo.getString("device_code"); - String status = jo.getString("status"); - String device_status = ""; - // 1-搬运中 2-充电 3-等待 4-故障 5-停用 - if (StrUtil.equals(status, "EXECUTING")) { - device_status = "1"; - } - if (StrUtil.equals(status, "CHARGING")) { - device_status = "2"; - } - if (StrUtil.equals(status, "IDLE")) { - device_status = "3"; - } - if (StrUtil.equals(status, "ERROR")) { - device_status = "4"; - } - if (StrUtil.equals(status, "UNKNOWN") || StrUtil.equals("UNAVAILABLE", status)) { - device_status = "5"; - } - JSONObject statsObj = deviceStatus_table.query("device_type ='1' and device_code ='" + agv_no + "'").uniqueResult(0); - statsObj.put("device_status", device_status); - statsObj.put("update_time", DateUtil.now()); - deviceStatus_table.update(statsObj); - } + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.OK.value()); + result.put("message", "任务状态反馈成功!"); + result.put("data", new JSONObject()); + return result; + } - JSONObject result = new JSONObject(); - result.put("status", HttpStatus.OK.value()); - result.put("message", "任务状态反馈成功!"); - result.put("data", new JSONObject()); - return result; - } - - - @Override - public Map queryCribbingInfo(Map jsonObject) { - log.debug("ACS的queryCribbingInfo请求参数为:" + jsonObject); - String device_code = (String) jsonObject.get("device_code"); - JSONObject task = WQLObject - .getWQLObject("sch_base_task") - .query("is_delete = '0' AND task_status <> '07' AND next_point_code = '" + device_code + "'") - .uniqueResult(0); - if (ObjectUtil.isNotEmpty(task)) { - throw new BadRequestException("当前点位有空托任务未完成!"); - } - WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); -// JSONObject produceInfoByCode = this.getProduceInfoByCode(device_code); - //根据点位获取排产单 -// String material_id = produceInfoByCode.getString("material_id"); - String vehicle_code = pointTable.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); - if (ObjectUtil.isNotEmpty(result)) { - String product_code = WQLObject - .getWQLObject("md_me_cribbinginfo") - .query("material_id = " + result.getString("material_id")) - .uniqueResult(0) - .getString("product_code"); - result.put("product_code", product_code); - } - JSONObject resultJSON = new JSONObject(); - resultJSON.put("content", result); - resultJSON.put("status", HttpStatus.OK.value()); - resultJSON.put("message", "托盘信息反馈成功"); - return resultJSON; - - } - - @Override - - public Map queryPrintInfoByCode(Map jsonObject) { - log.debug("ACS的queryPrintInfoByCode请求参数为:" + jsonObject); - //找出最近的一个到包装位的任务 - JSONObject taskObj = WQLObject.getWQLObject("sch_base_task").query("next_point_code='BZSLW' and is_delete='0' and task_type='07'", "update_time desc").uniqueResult(0); - JSONObject result = WQL.getWO("ACSTOMES_001").addParam("flag", "9").addParam("task_id", taskObj.getString("task_id")).process().uniqueResult(0); - return result; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public Map deleteTask(Map jsonObject) { - log.debug("ACS的deleteTask请求参数为:" + jsonObject); - String task_code = jsonObject.get("task_code").toString(); - WQLObject task_table = WQLObject.getWQLObject("sch_base_task"); - WQLObject group_table = WQLObject.getWQLObject("st_buss_vehiclegroup"); - WQLObject point_table = WQLObject.getWQLObject("sch_base_point"); - - JSONObject taskObj = task_table.query("task_code ='" + task_code + "' and task_status='06'and is_delete='0'").uniqueResult(0); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException("任务号为'" + task_code + "' 执行中的任务未找到"); - } - String start_point_code = taskObj.getString("start_point_code"); - String next_point_code = taskObj.getString("next_point_code"); - JSONObject startObj = point_table.query("point_code ='" + start_point_code + "'").uniqueResult(0); - - if (!StrUtil.equals(startObj.getString("area_type"), AreaEnum.YZQY.getCode())) { - throw new BadRequestException("只能取消任务类型为下料任务!"); - } - JSONObject nextObj = point_table.query("point_code ='" + next_point_code + "'").uniqueResult(0); - //删除任务,解锁终点,删除组盘表 - nextObj.put("lock_type", "00"); - point_table.update(nextObj); - task_table.delete(taskObj); - JSONObject groupObj = group_table.query("task_id ='" + taskObj.getString("task_id") + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(groupObj)) { - throw new BadRequestException("找不到task_id为" + taskObj.getString("task_id") + "的盘信息"); - } - group_table.delete(groupObj); - - JSONObject result = new JSONObject(); - result.put("status", HttpStatus.OK.value()); - result.put("message", "任务状态反馈成功!"); - result.put("data", new JSONObject()); - return result; - } - - public static JSONObject getProduceInfoByCode(String code) { - //根据 设备点位去找生产任务信息 - //1 根据点位去找设备,去找对应的设备信息 - JSONObject pointObj = WQLObject.getWQLObject("sch_base_point").query("point_code ='" + code + "'").uniqueResult(0); - String device_id = pointObj.getString("device_id"); - //2 根据设备去找对应的生产任务 - JSONObject productTaskObj = WQLObject.getWQLObject("PDM_MG_produceTask") - .query("device_id ='" + device_id + "' and producetask_status in ('03','02','04')") - .uniqueResult(0); - if (ObjectUtil.isEmpty(productTaskObj)) { - throw new BadRequestException("未找到点位为'" + code + "'的生产任务!"); - } - - return productTaskObj; + @Override + public Map queryCribbingInfo(Map jsonObject) { + log.debug("ACS的queryCribbingInfo请求参数为:" + jsonObject); + String device_code = (String) jsonObject.get("device_code"); + JSONObject task = + WQLObject.getWQLObject("sch_base_task") + .query( + "is_delete = '0' AND task_status <> '07' AND next_point_code = '" + + device_code + + "'") + .uniqueResult(0); + if (ObjectUtil.isNotEmpty(task)) { + throw new BadRequestException("当前点位有空托任务未完成!"); + } + WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); + // JSONObject produceInfoByCode = this.getProduceInfoByCode(device_code); + // 根据点位获取排产单 + // String material_id = produceInfoByCode.getString("material_id"); + String vehicle_code = + pointTable + .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); + if (ObjectUtil.isNotEmpty(result)) { + String product_code = + WQLObject.getWQLObject("md_me_cribbinginfo") + .query("material_id = " + result.getString("material_id")) + .uniqueResult(0) + .getString("product_code"); + result.put("product_code", product_code); + } + JSONObject resultJSON = new JSONObject(); + resultJSON.put("content", result); + resultJSON.put("status", HttpStatus.OK.value()); + resultJSON.put("message", "托盘信息反馈成功"); + return resultJSON; + } + + @Override + public Map queryPrintInfoByCode(Map jsonObject) { + log.debug("ACS的queryPrintInfoByCode请求参数为:" + jsonObject); + // 找出最近的一个到包装位的任务 + JSONObject taskObj = + WQLObject.getWQLObject("sch_base_task") + .query( + "next_point_code='BZSLW' and is_delete='0' and task_type='07'", "update_time desc") + .uniqueResult(0); + JSONObject result = + WQL.getWO("ACSTOMES_001") + .addParam("flag", "9") + .addParam("task_id", taskObj.getString("task_id")) + .process() + .uniqueResult(0); + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Map deleteTask(Map jsonObject) { + log.debug("ACS的deleteTask请求参数为:" + jsonObject); + String task_code = jsonObject.get("task_code").toString(); + WQLObject task_table = WQLObject.getWQLObject("sch_base_task"); + WQLObject group_table = WQLObject.getWQLObject("st_buss_vehiclegroup"); + WQLObject point_table = WQLObject.getWQLObject("sch_base_point"); + + JSONObject taskObj = + task_table + .query("task_code ='" + task_code + "' and task_status='06'and is_delete='0'") + .uniqueResult(0); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("任务号为'" + task_code + "' 执行中的任务未找到"); + } + String start_point_code = taskObj.getString("start_point_code"); + String next_point_code = taskObj.getString("next_point_code"); + JSONObject startObj = + point_table.query("point_code ='" + start_point_code + "'").uniqueResult(0); + + if (!StrUtil.equals(startObj.getString("area_type"), AreaEnum.YZQY.getCode())) { + throw new BadRequestException("只能取消任务类型为下料任务!"); + } + JSONObject nextObj = point_table.query("point_code ='" + next_point_code + "'").uniqueResult(0); + // 删除任务,解锁终点,删除组盘表 + nextObj.put("lock_type", "00"); + point_table.update(nextObj); + task_table.delete(taskObj); + JSONObject groupObj = + group_table.query("task_id ='" + taskObj.getString("task_id") + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(groupObj)) { + throw new BadRequestException("找不到task_id为" + taskObj.getString("task_id") + "的盘信息"); + } + group_table.delete(groupObj); + + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.OK.value()); + result.put("message", "任务状态反馈成功!"); + result.put("data", new JSONObject()); + return result; + } + + public static JSONObject getProduceInfoByCode(String code) { + // 根据 设备点位去找生产任务信息 + // 1 根据点位去找设备,去找对应的设备信息 + JSONObject pointObj = + WQLObject.getWQLObject("sch_base_point") + .query("point_code ='" + code + "'") + .uniqueResult(0); + String device_id = pointObj.getString("device_id"); + // 2 根据设备去找对应的生产任务 + JSONObject productTaskObj = + WQLObject.getWQLObject("PDM_MG_produceTask") + .query("device_id ='" + device_id + "' and producetask_status in ('03','02','04')") + .uniqueResult(0); + if (ObjectUtil.isEmpty(productTaskObj)) { + throw new BadRequestException("未找到点位为'" + code + "'的生产任务!"); } + return productTaskObj; + } } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToJnServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToJnServiceImpl.java index d75962b..b45f404 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToJnServiceImpl.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToJnServiceImpl.java @@ -11,7 +11,6 @@ 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.wms.ext.acs.service.WmsToJnService; import org.nl.wql.WQL; import org.nl.wql.core.bean.WQLObject; @@ -26,895 +25,1127 @@ import java.util.Map; @RequiredArgsConstructor @Slf4j public class WmsToJnServiceImpl implements WmsToJnService { - private String URL = "http://61.177.143.218:8888/ZQ_ZLGL_JsonFacade/ZQJT/MES/MES_ProductionFacade.asmx"; - final static int timeout = 3000; + private String URL = "http://61.177.143.218:8888/ZQ_ZLGL_JsonFacade/ZQJT/MES/MES_ProductionFacade.asmx"; + static final int timeout = 500; + @Override + public Map synchroDaySchedule(Map whereJson) { + try { + String value = + WQLObject.getWQLObject("sys_param") + .query("code='IS_CONNECT_JN'") + .uniqueResult(0) + .getString("value"); + if (StrUtil.equals(value, "0")) { + return null; + } - @Override - public Map synchroDaySchedule(Map whereJson) { - String value = WQLObject.getWQLObject("sys_param").query("code='IS_CONNECT_JN'").uniqueResult(0).getString("value"); - if (StrUtil.equals(value, "0")) { - return null; + String methon = "/getshoporder"; + String today = DateUtil.today(); + // 同步日计划 + JSONObject obj = new JSONObject(); + obj.put("startdate", whereJson.get("startdate")); + obj.put("enddate", whereJson.get("enddate")); + obj.put("ticker", "WLXT"); + log.info("诺力请求同步嘉耐mes物料入参为{}", obj.toString()); + + String resultMsg = null; + try { + resultMsg = + HttpRequest.post(URL + methon) + .body(String.valueOf(obj)) + .timeout(timeout) + .execute() + .body(); + } catch (Exception e) { + log.info("wms同步嘉耐工单失败!{}", e.getMessage()); + return null; + } + JSONObject result = JSONObject.parseObject(resultMsg); + log.info("诺力请求同步嘉耐mes物料出参为{}", resultMsg); + String status = result.getString("status"); + if (StrUtil.isNotEmpty(status) && status.equals("1")) { + log.info("wms同步嘉耐工单成功!"); + } else { + log.info("wms同步嘉耐工单失败!"); + } + WQLObject produceTaskTable = WQLObject.getWQLObject("PDM_MG_produceTask"); + WQLObject material_table = WQLObject.getWQLObject("MD_ME_Material"); + WQLObject device_Table = WQLObject.getWQLObject("PDM_BASE_DEVICE"); + JSONArray dayScheduleArr = result.getJSONObject("returnData").getJSONArray("Table"); + for (int i = 0; i < dayScheduleArr.size(); i++) { + JSONObject dayScheduleObj = dayScheduleArr.getJSONObject(i); + // 计划单号 + String SHOPORDERNO = dayScheduleObj.getString("SHOPORDERNO"); + // 物料代码 + String ITEMCODE = dayScheduleObj.getString("ITEMCODE"); + // 压机编号 + String SBDM = dayScheduleObj.getString("SBDM"); + if (StrUtil.isEmpty(SBDM)) { + throw new BadRequestException("压机编号为空!"); } + JSONObject materialObj = + material_table.query("material_code ='" + ITEMCODE + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(materialObj)) { + this.synchroMaterial(new JSONObject()); + materialObj = material_table.query("material_code ='" + ITEMCODE + "'").uniqueResult(0); + } + JSONObject deviceObj = device_Table.query("ext_device_code='" + SBDM + "'").uniqueResult(0); + JSONObject scheduleObj = + produceTaskTable.query("ext_shoporder_no='" + SHOPORDERNO + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(scheduleObj)) { + JSONObject jo = new JSONObject(); + jo.put("producetask_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("producetask_code", CodeUtil.getNewCode("PRODUCE_CODE")); + jo.put("producetask_status", "01"); + jo.put("material_id", materialObj.getString("material_id")); + jo.put("device_id", deviceObj.getString("device_id")); + jo.put("plan_qty", dayScheduleObj.getString("REQQTY")); + jo.put("vehicle_type", dayScheduleObj.getString("STOCKTYPE")); + jo.put("plan_date", dayScheduleObj.getString("PLANSTARTDATE")); + jo.put("classes", dayScheduleObj.getString("BANCI")); + jo.put("ext_shoporder_no", dayScheduleObj.getString("SHOPORDERNO")); + jo.put("print_type", dayScheduleObj.getString("PRINTTYPE")); + jo.put("print_dm", dayScheduleObj.getString("PRINTDM")); + jo.put("print_name", dayScheduleObj.getString("PRINTNAME")); + jo.put("print_gg", dayScheduleObj.getString("PRINTGG")); + jo.put("print_pc", dayScheduleObj.getString("PRINTPC")); + jo.put("yh_name", dayScheduleObj.getString("YHNAME")); + jo.put("is_export", "1"); + jo.put("create_id", "1"); + jo.put("create_name", "管理员"); + jo.put("create_time", DateUtil.now()); + produceTaskTable.insert(jo); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + JSONObject returnjo = new JSONObject(); + returnjo.put("status", HttpStatus.OK.value()); + returnjo.put("message", "任务状态反馈成功!"); + return returnjo; + } - String methon = "/getshoporder"; - String today = DateUtil.today(); - //同步日计划 + @Override + @Transactional(rollbackFor = Exception.class) + public Map synchroMaterial(Map whereJson) { + try { + String value = + WQLObject.getWQLObject("sys_param") + .query("code='IS_CONNECT_JN'") + .uniqueResult(0) + .getString("value"); + if (StrUtil.equals(value, "0")) { + return null; + } + + String methon = "/getItems"; + /** + * DM: "物料代码", NAME: "物料名称", GG: "规格型号", JLDWNAME: "计量单位", PRINTTYPE: "打印模板编码", + * WAITTIME:”静止时间(分钟)”, ISAUTO:”是否自动码垛” 0-否 1-是 + */ + WQLObject material_table = WQLObject.getWQLObject("MD_ME_Material"); + JSONObject obj = new JSONObject(); + obj.put("ticker", "WLXT"); + log.info("诺力请求同步嘉耐mes物料入参为{}", obj.toString()); + String resultMsg = null; + try { + resultMsg = + HttpRequest.post(URL + methon) + .body(String.valueOf(obj)) + .timeout(timeout) + .execute() + .body(); + } catch (Exception e) { + log.info("wms同步嘉耐物料失败!{}", e.getMessage()); + return null; + } + + log.info("诺力请求同步嘉耐mes物料出参为{}", resultMsg); + JSONObject result = JSONObject.parseObject(resultMsg); + String status = result.getString("status"); + if (StrUtil.isNotEmpty(status) && status.equals("1")) { + log.info("wms同步嘉耐物料成功!"); + } else { + log.info("wms同步嘉耐物料失败!"); + } + JSONArray Table = new JSONArray(); + JSONObject param = new JSONObject(); + + JSONArray materialarr = result.getJSONObject("returnData").getJSONArray("Table"); + for (int i = 0; i < materialarr.size(); i++) { + JSONObject materialjo = materialarr.getJSONObject(i); + String DM = materialjo.getString("DM"); + param.put("ITEMCODE", DM); + Table.add(param); + JSONObject material_jo = material_table.query("material_code='" + DM + "'").uniqueResult(0); + // 如果有就更新,没有就插入 + if (ObjectUtil.isNotEmpty(material_jo)) { + String stewing_time = "0"; + if (StrUtil.isNotEmpty(materialjo.getString("WAITTIME"))) { + stewing_time = materialjo.getString("WAITTIME"); + } + material_jo.put("material_name", materialjo.getString("NAME")); + material_jo.put("material_spec", materialjo.getString("GG")); + material_jo.put("material_model", materialjo.getString("STOCKTYPE")); + material_jo.put("english_name", materialjo.getString("NAME")); + material_jo.put("stewing_time", stewing_time); + material_jo.put("print_model", materialjo.getString("PRINTTYPE")); + material_jo.put("is_auto_package", materialjo.getString("ISAUTO")); + material_jo.put("material_type", materialjo.getString("TYPEID")); + material_jo.put("vehicle_type", materialjo.getString("VEHICLETYPE")); + material_jo.put("is_used", "1"); + material_jo.put("update_optid", "1"); + material_jo.put("update_optname", "管理员"); + material_jo.put("update_time", DateUtil.now()); + material_table.update(material_jo); + } else { + String stewing_time = "0"; + if (StrUtil.isNotEmpty(materialjo.getString("WAITTIME"))) { + stewing_time = materialjo.getString("WAITTIME"); + } + JSONObject materialObj = new JSONObject(); + materialObj.put("material_id", IdUtil.getSnowflake(1, 1).nextId()); + materialObj.put("material_name", materialjo.getString("NAME")); + materialObj.put("material_code", materialjo.getString("DM")); + materialObj.put("material_model", materialjo.getString("GG")); + materialObj.put("english_name", materialjo.getString("NAME")); + materialObj.put("stewing_time", stewing_time); + materialObj.put("print_model", materialjo.getString("PRINTTYPE")); + materialObj.put("is_auto_package", materialjo.getString("ISAUTO")); + materialObj.put("is_used", "1"); + materialObj.put("create_id", "1"); + materialObj.put("create_name", "管理员"); + materialObj.put("create_time", DateUtil.now()); + material_table.insert(materialObj); + } + // 反馈嘉耐已经同步了该物料 + HashMap map = new HashMap(); + map.put("material_code", materialjo.getString("DM")); + this.feedMaterial(map); + } + } catch (Exception e) { + e.printStackTrace(); + } + + JSONObject returnjo = new JSONObject(); + returnjo.put("status", HttpStatus.OK.value()); + returnjo.put("message", "任务状态反馈成功!"); + return returnjo; + } + + @Override + public Map feedMaterial(Map whereJson) { + try { + + String value = + WQLObject.getWQLObject("sys_param") + .query("code='IS_CONNECT_JN'") + .uniqueResult(0) + .getString("value"); + if (StrUtil.equals(value, "0")) { + return null; + } + String method = "/setItems"; + JSONObject obj = new JSONObject(); + obj.put("ticker", "WLXT"); + obj.put("stringData", JSONObject.toJSON(whereJson).toString()); + log.info("诺力请求嘉耐反馈物料同步入参{}", obj.toString()); + String resultMsg = null; + try { + resultMsg = + HttpRequest.post(URL + method) + .body(String.valueOf(obj)) + .timeout(timeout) + .execute() + .body(); + } catch (Exception e) { + log.info("wms反馈嘉耐物料失败!{}", e.getMessage()); + return null; + } + JSONObject result = JSONObject.parseObject(resultMsg); + log.info("诺力请求嘉耐反馈物料同步出参{}", resultMsg); + // 调用接口告诉wms 调用已经同步该物料 + // String returnResultMsg = HttpRequest.post(URL) + // .body(String.valueOf(obj)).timeout(timeout) + // .execute().body(); + // JSONObject returnResult = JSONObject.parseObject(returnResultMsg); + String returnStatus = result.getString("status"); + if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { + log.info("wms反馈嘉耐物料成功!"); + } else { + log.info("wms反馈嘉耐物料失败!"); + } + } catch (Exception e) { + e.printStackTrace(); + } + + return null; + } + + @Override + public Map feedBackStatus(Map whereJson) { + try { + + WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); + String value = + WQLObject.getWQLObject("sys_param") + .query("code='IS_CONNECT_JN'") + .uniqueResult(0) + .getString("value"); + if (StrUtil.equals(value, "0")) { + return null; + } + JSONArray results = + WQL.getWO("WMSTOJN_001").addParam("flag", "7").process().getResultJSONArray(0); + String method = "/upDEVStatus"; + for (int i = 0; i < results.size(); i++) { + JSONObject param = results.getJSONObject(0); JSONObject obj = new JSONObject(); - obj.put("startdate", whereJson.get("startdate")); - obj.put("enddate", whereJson.get("enddate")); obj.put("ticker", "WLXT"); - log.info("诺力请求同步嘉耐mes物料入参为{}", obj.toString()); - + obj.put("stringData", param); + log.info("诺力请求嘉耐反馈设备状态入参{}", obj.toString()); String resultMsg = null; try { - resultMsg = HttpRequest.post(URL + methon) - .body(String.valueOf(obj)).timeout(timeout) - .execute().body(); + resultMsg = + HttpRequest.post(URL + method) + .body(String.valueOf(obj)) + .timeout(timeout) + .execute() + .body(); } catch (Exception e) { - log.info("wms同步嘉耐工单失败!{}",e.getMessage()); - return null; - } - JSONObject result = JSONObject.parseObject(resultMsg); - log.info("诺力请求同步嘉耐mes物料出参为{}", resultMsg); - String status = result.getString("status"); - if (StrUtil.isNotEmpty(status) && status.equals("1")) { - log.info("wms同步嘉耐工单成功!"); - } else { - log.info("wms同步嘉耐工单失败!"); - } - WQLObject produceTaskTable = WQLObject.getWQLObject("PDM_MG_produceTask"); - WQLObject material_table = WQLObject.getWQLObject("MD_ME_Material"); - WQLObject device_Table = WQLObject.getWQLObject("PDM_BASE_DEVICE"); - JSONArray dayScheduleArr = result.getJSONObject("returnData").getJSONArray("Table"); - for (int i = 0; i < dayScheduleArr.size(); i++) { - JSONObject dayScheduleObj = dayScheduleArr.getJSONObject(i); - //计划单号 - String SHOPORDERNO = dayScheduleObj.getString("SHOPORDERNO"); - //物料代码 - String ITEMCODE = dayScheduleObj.getString("ITEMCODE"); - //压机编号 - String SBDM = dayScheduleObj.getString("SBDM"); - if (StrUtil.isEmpty(SBDM)) { - throw new BadRequestException("压机编号为空!"); - } - JSONObject materialObj = material_table.query("material_code ='" + ITEMCODE + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(materialObj)) { - this.synchroMaterial(new JSONObject()); - materialObj = material_table.query("material_code ='" + ITEMCODE + "'").uniqueResult(0); - } - JSONObject deviceObj = device_Table.query("ext_device_code='" + SBDM + "'").uniqueResult(0); - JSONObject scheduleObj = produceTaskTable.query("ext_shoporder_no='" + SHOPORDERNO + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(scheduleObj)) { - JSONObject jo = new JSONObject(); - jo.put("producetask_id", IdUtil.getSnowflake(1, 1).nextId()); - jo.put("producetask_code", CodeUtil.getNewCode("PRODUCE_CODE")); - jo.put("producetask_status", "01"); - jo.put("material_id", materialObj.getString("material_id")); - jo.put("device_id", deviceObj.getString("device_id")); - jo.put("plan_qty", dayScheduleObj.getString("REQQTY")); - jo.put("vehicle_type", dayScheduleObj.getString("STOCKTYPE")); - jo.put("plan_date", dayScheduleObj.getString("PLANSTARTDATE")); - jo.put("classes", dayScheduleObj.getString("BANCI")); - jo.put("ext_shoporder_no", dayScheduleObj.getString("SHOPORDERNO")); - jo.put("print_type", dayScheduleObj.getString("PRINTTYPE")); - jo.put("print_dm", dayScheduleObj.getString("PRINTDM")); - jo.put("print_name", dayScheduleObj.getString("PRINTNAME")); - jo.put("print_gg", dayScheduleObj.getString("PRINTGG")); - jo.put("print_pc", dayScheduleObj.getString("PRINTPC")); - jo.put("yh_name", dayScheduleObj.getString("YHNAME")); - jo.put("is_export", "1"); - jo.put("create_id", "1"); - jo.put("create_name", "管理员"); - jo.put("create_time", DateUtil.now()); - produceTaskTable.insert(jo); - } - } - JSONObject returnjo = new JSONObject(); - returnjo.put("status", HttpStatus.OK.value()); - returnjo.put("message", "任务状态反馈成功!"); - return returnjo; - } + log.info("诺力请求嘉耐反馈设备状失败!{}", e.getMessage()); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("status", "2"); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); - @Override - @Transactional(rollbackFor = Exception.class) - public Map synchroMaterial(Map whereJson) { - String value = WQLObject.getWQLObject("sys_param").query("code='IS_CONNECT_JN'").uniqueResult(0).getString("value"); - if (StrUtil.equals(value, "0")) { - return null; - } - - String methon = "/getItems"; - /** - * DM: "物料代码", - * NAME: "物料名称", - * GG: "规格型号", - * JLDWNAME: "计量单位", - * PRINTTYPE: "打印模板编码", - * WAITTIME:”静止时间(分钟)”, - * ISAUTO:”是否自动码垛” 0-否 1-是 - */ - WQLObject material_table = WQLObject.getWQLObject("MD_ME_Material"); - JSONObject obj = new JSONObject(); - obj.put("ticker", "WLXT"); - log.info("诺力请求同步嘉耐mes物料入参为{}", obj.toString()); - String resultMsg = null; - try { - resultMsg = HttpRequest.post(URL + methon) - .body(String.valueOf(obj)).timeout(timeout) - .execute().body(); - } catch (Exception e) { - log.info("wms同步嘉耐物料失败!{}",e.getMessage()); - return null; - } - - log.info("诺力请求同步嘉耐mes物料出参为{}", resultMsg); - JSONObject result = JSONObject.parseObject(resultMsg); - String status = result.getString("status"); - if (StrUtil.isNotEmpty(status) && status.equals("1")) { - log.info("wms同步嘉耐物料成功!"); - } else { - log.info("wms同步嘉耐物料失败!"); - } - JSONArray Table = new JSONArray(); - JSONObject param = new JSONObject(); - - JSONArray materialarr = result.getJSONObject("returnData").getJSONArray("Table"); - for (int i = 0; i < materialarr.size(); i++) { - JSONObject materialjo = materialarr.getJSONObject(i); - String DM = materialjo.getString("DM"); - param.put("ITEMCODE", DM); - Table.add(param); - JSONObject material_jo = material_table.query("material_code='" + DM + "'").uniqueResult(0); - //如果有就更新,没有就插入 - if (ObjectUtil.isNotEmpty(material_jo)) { - String stewing_time = "0"; - if (StrUtil.isNotEmpty(materialjo.getString("WAITTIME"))) { - stewing_time = materialjo.getString("WAITTIME"); - } - material_jo.put("material_name", materialjo.getString("NAME")); - material_jo.put("material_spec", materialjo.getString("GG")); - material_jo.put("material_model", materialjo.getString("STOCKTYPE")); - material_jo.put("english_name", materialjo.getString("NAME")); - material_jo.put("stewing_time", stewing_time); - material_jo.put("print_model", materialjo.getString("PRINTTYPE")); - material_jo.put("is_auto_package", materialjo.getString("ISAUTO")); - material_jo.put("material_type", materialjo.getString("TYPEID")); - material_jo.put("vehicle_type", materialjo.getString("VEHICLETYPE")); - material_jo.put("is_used", "1"); - material_jo.put("update_optid", "1"); - material_jo.put("update_optname", "管理员"); - material_jo.put("update_time", DateUtil.now()); - material_table.update(material_jo); - } else { - String stewing_time = "0"; - if (StrUtil.isNotEmpty(materialjo.getString("WAITTIME"))) { - stewing_time = materialjo.getString("WAITTIME"); - } - JSONObject materialObj = new JSONObject(); - materialObj.put("material_id", IdUtil.getSnowflake(1, 1).nextId()); - materialObj.put("material_name", materialjo.getString("NAME")); - materialObj.put("material_code", materialjo.getString("DM")); - materialObj.put("material_model", materialjo.getString("GG")); - materialObj.put("english_name", materialjo.getString("NAME")); - materialObj.put("stewing_time", stewing_time); - materialObj.put("print_model", materialjo.getString("PRINTTYPE")); - materialObj.put("is_auto_package", materialjo.getString("ISAUTO")); - materialObj.put("is_used", "1"); - materialObj.put("create_id", "1"); - materialObj.put("create_name", "管理员"); - materialObj.put("create_time", DateUtil.now()); - material_table.insert(materialObj); - } - //反馈嘉耐已经同步了该物料 - HashMap map = new HashMap(); - map.put("material_code", materialjo.getString("DM")); - this.feedMaterial(map); - - } - - JSONObject returnjo = new JSONObject(); - returnjo.put("status", HttpStatus.OK.value()); - returnjo.put("message", "任务状态反馈成功!"); - return returnjo; - } - - @Override - public Map feedMaterial(Map whereJson) { - String value = WQLObject.getWQLObject("sys_param").query("code='IS_CONNECT_JN'").uniqueResult(0).getString("value"); - if (StrUtil.equals(value, "0")) { - return null; - } - String method = "/setItems"; - JSONObject obj = new JSONObject(); - obj.put("ticker", "WLXT"); - obj.put("stringData", JSONObject.toJSON(whereJson).toString()); - log.info("诺力请求嘉耐反馈物料同步入参{}", obj.toString()); - String resultMsg = null; - try { - resultMsg = HttpRequest.post(URL + method) - .body(String.valueOf(obj)).timeout(timeout) - .execute().body(); - } catch (Exception e) { - log.info("wms反馈嘉耐物料失败!{}",e.getMessage()); - return null; - } - JSONObject result = JSONObject.parseObject(resultMsg); - log.info("诺力请求嘉耐反馈物料同步出参{}", resultMsg); - //调用接口告诉wms 调用已经同步该物料 -// String returnResultMsg = HttpRequest.post(URL) -// .body(String.valueOf(obj)).timeout(timeout) -// .execute().body(); -// JSONObject returnResult = JSONObject.parseObject(returnResultMsg); - String returnStatus = result.getString("status"); - if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { - log.info("wms反馈嘉耐物料成功!"); - } else { - log.info("wms反馈嘉耐物料失败!"); - } - - - return null; - } - - @Override - public Map feedBackStatus(Map whereJson) { - WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); - String value = WQLObject.getWQLObject("sys_param").query("code='IS_CONNECT_JN'").uniqueResult(0).getString("value"); - if (StrUtil.equals(value, "0")) { - return null; - } - JSONArray results = WQL.getWO("WMSTOJN_001").addParam("flag", "7").process().getResultJSONArray(0); - String method = "/upDEVStatus"; - for (int i = 0; i < results.size(); i++) { - JSONObject param = results.getJSONObject(0); - JSONObject obj = new JSONObject(); - obj.put("ticker", "WLXT"); - obj.put("stringData", param); - log.info("诺力请求嘉耐反馈设备状态入参{}", obj.toString()); - String resultMsg = null; - try { - resultMsg = HttpRequest.post(URL + method) - .body(String.valueOf(obj)).timeout(timeout) - .execute().body(); - } catch (Exception e) { - log.info("诺力请求嘉耐反馈设备状失败!{}",e.getMessage()); - JSONObject jo = new JSONObject(); - jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); - jo.put("method", method); - jo.put("status", "2"); - jo.put("content", obj); - jo.put("create_time", DateUtil.now()); - wo.insert(jo); - - return null; - } - JSONObject returnResult = JSONObject.parseObject(resultMsg); - String returnStatus = returnResult.getString("status"); - if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { - log.info("诺力请求嘉耐反馈设备状成功!"); - } else { - log.info("诺力请求嘉耐反馈设备状失败!"); - JSONObject jo = new JSONObject(); - jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); - jo.put("method", method); - jo.put("status", "2"); - jo.put("content", obj); - jo.put("create_time", DateUtil.now()); - wo.insert(jo); - } - log.info("诺力请求嘉耐反馈设备状出参{}", resultMsg); - } - JSONObject returnjo = new JSONObject(); - returnjo.put("status", HttpStatus.OK.value()); - returnjo.put("message", "任务状态反馈成功!"); - return returnjo; - } - - - @Override - public Map feedBackCarryRecord(Map whereJson) { - WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); - String value = WQLObject.getWQLObject("sys_param").query("code='IS_CONNECT_JN'").uniqueResult(0).getString("value"); - if (StrUtil.equals(value, "0")) { - return null; - } - String method = "/InsertPressInfo"; - String task_id = (String) whereJson.get("task_id"); - String next_point_code = (String) whereJson.get("next_point_code"); - JSONObject jsonObject = WQL.getWO("WMSTOJN_001").addParam("flag", "1").addParam("task_id", task_id).process().uniqueResult(0); - jsonObject.put("LOCDESC",next_point_code); - JSONObject obj = new JSONObject(); - obj.put("ticker", "WLXT"); - obj.put("stringData", jsonObject.toString()); - log.info("诺力请求嘉耐回传搬运记录入参{}", obj.toString()); - String returnResultMsg = null; - try { - returnResultMsg = HttpRequest.post(URL + method) - .body(String.valueOf(obj)).timeout(timeout) - .execute().body(); - } catch (Exception e) { - log.info("诺力请求嘉耐回传搬运记录入参失败!{}",e.getMessage()); - JSONObject jo = new JSONObject(); - jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); - jo.put("method", method); - jo.put("status", "2"); - jo.put("content", obj); - jo.put("create_time", DateUtil.now()); - wo.insert(jo); - - return null; - } - JSONObject returnResult = JSONObject.parseObject(returnResultMsg); - String returnStatus = returnResult.getString("status"); - if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { - log.info("诺力请求嘉耐回传搬运记录入参成功!"); - } else { - log.info("诺力请求嘉耐回传搬运记录入参失败!"); - JSONObject jo = new JSONObject(); - jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); - jo.put("method", method); - jo.put("status", "2"); - jo.put("content", obj); - jo.put("create_time", DateUtil.now()); - wo.insert(jo); - } - log.info("诺力请求嘉耐回传搬运记录出参{}", returnResultMsg); - return null; - } - - @Override - public Map feedBackInKiln(Map whereJson) { - WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); - String value = WQLObject.getWQLObject("sys_param").query("code='IS_CONNECT_JN'").uniqueResult(0).getString("value"); - if (StrUtil.equals(value, "0")) { - return null; - } - String method = "/InKiln"; - String vehicle_code = (String) whereJson.get("vehicle_code"); - JSONObject jsonObject = WQL.getWO("WMSTOJN_001").addParam("flag", "2").addParam("vehicle_code", vehicle_code).process().uniqueResult(0); - JSONObject obj = new JSONObject(); - obj.put("ticker", "WLXT"); - obj.put("stringData", jsonObject.toString()); - log.info("诺力请求嘉耐回传入窑信息入参{}", obj.toString()); - String returnResultMsg = null; - try { - returnResultMsg = HttpRequest.post(URL + method) - .body(String.valueOf(obj)).timeout(timeout) - .execute().body(); - } catch (Exception e) { - log.info("诺力请求嘉耐回传入窑信息失败!{}",e.getMessage()); - JSONObject jo = new JSONObject(); - jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); - jo.put("method", method); - jo.put("status", "2"); - jo.put("content", obj); - jo.put("create_time", DateUtil.now()); - wo.insert(jo); - - return null; - } - JSONObject returnResult = JSONObject.parseObject(returnResultMsg); - String returnStatus = returnResult.getString("status"); - if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { - log.info("诺力请求嘉耐回传入窑信息成功!"); - } else { - log.info("诺力请求嘉耐回传入窑信息失败!"); - JSONObject jo = new JSONObject(); - jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); - jo.put("method", method); - jo.put("status", "2"); - jo.put("content", obj); - jo.put("create_time", DateUtil.now()); - wo.insert(jo); - } - log.info("诺力请求嘉耐回传入窑信息出参{}", returnResultMsg); - return null; - } - - @Override - public Map feedBackOutKiln(Map whereJson) { - WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); - String value = WQLObject.getWQLObject("sys_param").query("code='IS_CONNECT_JN'").uniqueResult(0).getString("value"); - if (StrUtil.equals(value, "0")) { - return null; - } - String vehicle_code = (String) whereJson.get("vehicle_code"); - JSONObject jsonObject = WQL.getWO("WMSTOJN_001").addParam("flag", "3").addParam("vehicle_code", vehicle_code).process().uniqueResult(0); - String method = "/OutKiln"; - JSONObject obj = new JSONObject(); - obj.put("ticker", "WLXT"); - obj.put("stringData", jsonObject.toString()); - log.info("诺力请求嘉耐回传出窑信息入参{}", obj.toString()); - String returnResultMsg = null; - try { - returnResultMsg = HttpRequest.post(URL + method) - .body(String.valueOf(obj)).timeout(timeout) - .execute().body(); - } catch (Exception e) { - log.info("诺力请求嘉耐回传出窑信息失败!{}",e.getMessage()); - JSONObject jo = new JSONObject(); - jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); - jo.put("method", method); - jo.put("status", "2"); - jo.put("content", obj); - jo.put("create_time", DateUtil.now()); - wo.insert(jo); - - return null; - } - JSONObject returnResult = JSONObject.parseObject(returnResultMsg); - String returnStatus = returnResult.getString("status"); - if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { - log.info("诺力请求嘉耐回传出窑信息成功!"); - } else { - log.info("诺力请求嘉耐回传出窑信息失败!"); - JSONObject jo = new JSONObject(); - jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); - jo.put("method", method); - jo.put("status", "2"); - jo.put("content", obj); - jo.put("create_time", DateUtil.now()); - wo.insert(jo); - } - log.info("诺力请求嘉耐回传出窑信息出参{}", returnResultMsg); - return null; - } - - @Override - public Map feedBackPackage(Map whereJson) { - WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); - String value = WQLObject.getWQLObject("sys_param").query("code='IS_CONNECT_JN'").uniqueResult(0).getString("value"); - if (StrUtil.equals(value, "0")) { - return null; - } - //木托盘号码 - String vehicle_code = (String) whereJson.get("vehicle_code"); - if (StrUtil.isEmpty(vehicle_code)) { - throw new BadRequestException("托盘编码不能为空!"); - } - JSONObject mstObj = WQL.getWO("WMSTOJN_001").addParam("flag", "9").addParam("vehicle_code", vehicle_code).process().uniqueResult(0); - JSONArray dtlarr = WQL.getWO("WMSTOJN_001").addParam("flag", "8").addParam("record_id", mstObj.getString("record_id")).process().getResultJSONArray(0); - mstObj.put("DETAILS", dtlarr); - String method = "/Packing"; - JSONObject obj = new JSONObject(); - obj.put("ticker", "WLXT"); - obj.put("stringData", mstObj.toString()); - log.info("诺力请求嘉耐回传组盘记录入参{}", obj.toString()); - String resultMsg = null; - try { - resultMsg = HttpRequest.post(URL + method) - .body(String.valueOf(obj)).timeout(timeout) - .execute().body(); - } catch (Exception e) { - log.info("诺力请求嘉耐回传组盘记录失败!{}",e.getMessage()); - JSONObject jo = new JSONObject(); - jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); - jo.put("method", method); - jo.put("status", "2"); - jo.put("content", obj); - jo.put("create_time", DateUtil.now()); - wo.insert(jo); - - return null; + return null; } JSONObject returnResult = JSONObject.parseObject(resultMsg); String returnStatus = returnResult.getString("status"); if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { - log.info("诺力请求嘉耐回传组盘记录成功!"); + log.info("诺力请求嘉耐反馈设备状成功!"); } else { - log.info("诺力请求嘉耐回传组盘记录失败!"); - JSONObject jo = new JSONObject(); - jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); - jo.put("method", method); - jo.put("status", "2"); - jo.put("content", obj); - jo.put("create_time", DateUtil.now()); - wo.insert(jo); + log.info("诺力请求嘉耐反馈设备状失败!"); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("status", "2"); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); } - log.info("诺力请求嘉耐回传组盘记录出参{}", resultMsg); + log.info("诺力请求嘉耐反馈设备状出参{}", resultMsg); + } + } catch (Exception e2) { + e2.printStackTrace(); + } + + JSONObject returnjo = new JSONObject(); + returnjo.put("status", HttpStatus.OK.value()); + returnjo.put("message", "任务状态反馈成功!"); + return returnjo; + } + + @Override + public Map feedBackCarryRecord(Map whereJson) { + try { + WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); + String value = + WQLObject.getWQLObject("sys_param") + .query("code='IS_CONNECT_JN'") + .uniqueResult(0) + .getString("value"); + if (StrUtil.equals(value, "0")) { + return null; + } + String method = "/InsertPressInfo"; + String task_id = (String) whereJson.get("task_id"); + String next_point_code = (String) whereJson.get("next_point_code"); + JSONObject jsonObject = + WQL.getWO("WMSTOJN_001") + .addParam("flag", "1") + .addParam("task_id", task_id) + .process() + .uniqueResult(0); + jsonObject.put("LOCDESC", next_point_code); + JSONObject obj = new JSONObject(); + obj.put("ticker", "WLXT"); + obj.put("stringData", jsonObject.toString()); + log.info("诺力请求嘉耐回传搬运记录入参{}", obj.toString()); + String returnResultMsg = null; + try { + returnResultMsg = + HttpRequest.post(URL + method) + .body(String.valueOf(obj)) + .timeout(timeout) + .execute() + .body(); + } catch (Exception e) { + log.info("诺力请求嘉耐回传搬运记录入参失败!{}", e.getMessage()); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("status", "2"); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); return null; + } + JSONObject returnResult = JSONObject.parseObject(returnResultMsg); + String returnStatus = returnResult.getString("status"); + if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { + log.info("诺力请求嘉耐回传搬运记录入参成功!"); + } else { + log.info("诺力请求嘉耐回传搬运记录入参失败!"); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("status", "2"); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); + } + } catch (Exception e) { + e.printStackTrace(); } + return null; + } - @Override - public Map feedBackQualityInfo(String record_id) { - WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); - String value = WQLObject.getWQLObject("sys_param").query("code='IS_CONNECT_JN'").uniqueResult(0).getString("value"); - if (StrUtil.equals(value, "0")) { - return null; - } - WQLObject recordTable = WQLObject.getWQLObject("st_buss_qualityRecord"); - JSONObject recordObj = WQL.getWO("WMSTOJN_001").addParam("flag", "6").addParam("record_id", record_id).process().uniqueResult(0); - if (ObjectUtil.isEmpty(recordObj)) { - throw new BadRequestException("未找到记录标识为'" + record_id + "'的记录"); - } - String method = "/InsertQualityInfo"; - JSONObject obj = new JSONObject(); - obj.put("ticker", "WLXT"); - obj.put("stringData", recordObj.toString()); - log.info("诺力请求嘉耐回传不合格记录入参{}", obj.toString()); - String resultMsg = null; - try { - resultMsg = HttpRequest.post(URL + method) - .body(String.valueOf(obj)).timeout(timeout) - .execute().body(); - } catch (Exception e) { - log.info("诺力请求嘉耐回传组盘记录失败{}",e.getMessage()); - JSONObject jo = new JSONObject(); - jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); - jo.put("method", method); - jo.put("status", "2"); - jo.put("content", obj); - jo.put("create_time", DateUtil.now()); - wo.insert(jo); + @Override + public Map feedBackInKiln(Map whereJson) { + try { - return null; - } - - JSONObject returnResult = JSONObject.parseObject(resultMsg); - String returnStatus = returnResult.getString("status"); - if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { - log.info("诺力请求嘉耐回传组盘记录成功!"); - } else { - log.info("诺力请求嘉耐回传组盘记录失败!"); - JSONObject jo = new JSONObject(); - jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); - jo.put("method", method); - jo.put("status", "2"); - jo.put("content", obj); - jo.put("create_time", DateUtil.now()); - wo.insert(jo); - } - log.info("诺力请求嘉耐回传不合格记录出参{}", resultMsg); + WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); + String value = + WQLObject.getWQLObject("sys_param") + .query("code='IS_CONNECT_JN'") + .uniqueResult(0) + .getString("value"); + if (StrUtil.equals(value, "0")) { return null; - } + } + String method = "/InKiln"; + String vehicle_code = (String) whereJson.get("vehicle_code"); + JSONObject jsonObject = + WQL.getWO("WMSTOJN_001") + .addParam("flag", "2") + .addParam("vehicle_code", vehicle_code) + .process() + .uniqueResult(0); + JSONObject obj = new JSONObject(); + obj.put("ticker", "WLXT"); + obj.put("stringData", jsonObject.toString()); + log.info("诺力请求嘉耐回传入窑信息入参{}", obj.toString()); + String returnResultMsg = null; + try { + returnResultMsg = + HttpRequest.post(URL + method) + .body(String.valueOf(obj)) + .timeout(timeout) + .execute() + .body(); + } catch (Exception e) { + log.info("诺力请求嘉耐回传入窑信息失败!{}", e.getMessage()); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("status", "2"); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); - @Override - public JSONObject queryCurrentOrder(Map whereJson) { - String value = WQLObject.getWQLObject("sys_param").query("code='IS_CONNECT_JN'").uniqueResult(0).getString("value"); - if (StrUtil.equals(value, "0")) { - return null; - } - String device_code = (String) whereJson.get("device_code"); - if (StrUtil.isEmpty(device_code)) { - throw new BadRequestException("设备编码不能为空!"); - } - String method = "/getPressWorkShop"; - JSONObject obj = new JSONObject(); - obj.put("ticker", "Sbdm"); - obj.put("device_code", device_code); - log.info("诺力请求嘉耐当前生产工单入参{}", obj.toString()); - String resultMsg = null; - try { - resultMsg = HttpRequest.post(URL + method) - .body(String.valueOf(obj)).timeout(timeout) - .execute().body(); - } catch (Exception e) { - log.info("诺力请求嘉耐当前生产工单超时{}", e.getMessage()); - return null; - } - JSONObject result = JSONObject.parseObject(resultMsg); - log.info("诺力请求嘉耐当前生产工单出参{}", resultMsg); - String status = result.getString("status"); - if (StrUtil.isNotEmpty(status) && status.equals("1")) { - log.info("诺力请求嘉耐当前生产工单成功!"); - } else { - log.info("诺力请求嘉耐当前生产工单失败!"); - } - JSONObject joo = result.getJSONObject("returnData").getJSONObject("Table"); - - return joo; - } - - @Override - public Map feedBackInWait(Map whereJson) { - WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); - String value = WQLObject.getWQLObject("sys_param").query("code='IS_CONNECT_JN'").uniqueResult(0).getString("value"); - if (StrUtil.equals(value, "0")) { - return null; - } - String method = "/InWait"; - String task_id = (String) whereJson.get("task_id"); - JSONObject jsonObject = WQL.getWO("WMSTOJN_001").addParam("flag", "10").addParam("task_id", task_id).process().uniqueResult(0); - JSONObject obj = new JSONObject(); - obj.put("ticker", "WLXT"); - obj.put("stringData", jsonObject.toString()); - log.info("诺力请求嘉耐反馈入冷却缓冲区入参{}", obj.toString()); - String returnResultMsg = null; - try { - returnResultMsg = HttpRequest.post(URL + method) - .body(String.valueOf(obj)).timeout(timeout) - .execute().body(); - } catch (Exception e) { - log.info("诺力请求嘉耐反馈入冷却缓冲区失败{}!",e.getMessage()); - JSONObject jo = new JSONObject(); - jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); - jo.put("method", method); - jo.put("status", "2"); - jo.put("content", obj); - jo.put("create_time", DateUtil.now()); - wo.insert(jo); - - return null; - } - JSONObject returnResult = JSONObject.parseObject(returnResultMsg); - String returnStatus = returnResult.getString("status"); - if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { - log.info("诺力请求嘉耐反馈入冷却缓冲区成功!"); - } else { - log.info("诺力请求嘉耐反馈入冷却缓冲区失败!"); - JSONObject jo = new JSONObject(); - jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); - jo.put("method", method); - jo.put("status", "2"); - jo.put("content", obj); - jo.put("create_time", DateUtil.now()); - wo.insert(jo); - } - log.info("诺力请求嘉耐反馈入冷却缓冲区出参{}", returnResultMsg); return null; + } + JSONObject returnResult = JSONObject.parseObject(returnResultMsg); + String returnStatus = returnResult.getString("status"); + if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { + log.info("诺力请求嘉耐回传入窑信息成功!"); + } else { + log.info("诺力请求嘉耐回传入窑信息失败!"); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("status", "2"); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); + } + log.info("诺力请求嘉耐回传入窑信息出参{}", returnResultMsg); + } catch (Exception e) { + e.printStackTrace(); } + return null; + } - @Override - public Map feedBackOutWait(Map whereJson) { - WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); - String value = WQLObject.getWQLObject("sys_param").query("code='IS_CONNECT_JN'").uniqueResult(0).getString("value"); - if (StrUtil.equals(value, "0")) { - return null; - } - String method = "/outWait"; - String task_id = (String) whereJson.get("task_id"); - JSONObject jsonObject = WQL.getWO("WMSTOJN_001").addParam("flag", "11").addParam("task_id", task_id).process().uniqueResult(0); - JSONObject obj = new JSONObject(); - obj.put("ticker", "WLXT"); - obj.put("stringData", jsonObject.toString()); - log.info("诺力请求嘉耐反馈出冷却缓冲区入参{}", obj.toString()); - String returnResultMsg = null; - try { - returnResultMsg = HttpRequest.post(URL + method) - .body(String.valueOf(obj)).timeout(timeout) - .execute().body(); - } catch (Exception e) { - log.info("诺力请求嘉耐反馈出冷却缓冲区失败!{}",e.getMessage()); - JSONObject jo = new JSONObject(); - jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); - jo.put("method", method); - jo.put("status", "2"); - jo.put("content", obj); - jo.put("create_time", DateUtil.now()); - wo.insert(jo); + @Override + public Map feedBackOutKiln(Map whereJson) { + try { - return null; - } - JSONObject returnResult = JSONObject.parseObject(returnResultMsg); - String returnStatus = returnResult.getString("status"); - if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { - log.info("诺力请求嘉耐反馈出冷却缓冲区成功!"); - } else { - log.info("诺力请求嘉耐反馈出冷却缓冲区失败!"); - JSONObject jo = new JSONObject(); - jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); - jo.put("method", method); - jo.put("status", "2"); - jo.put("content", obj); - jo.put("create_time", DateUtil.now()); - wo.insert(jo); - } - log.info("诺力请求嘉耐反馈出冷却缓冲区出参{}", returnResultMsg); + WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); + String value = + WQLObject.getWQLObject("sys_param") + .query("code='IS_CONNECT_JN'") + .uniqueResult(0) + .getString("value"); + if (StrUtil.equals(value, "0")) { return null; - } + } + String vehicle_code = (String) whereJson.get("vehicle_code"); + JSONObject jsonObject = + WQL.getWO("WMSTOJN_001") + .addParam("flag", "3") + .addParam("vehicle_code", vehicle_code) + .process() + .uniqueResult(0); + String method = "/OutKiln"; + JSONObject obj = new JSONObject(); + obj.put("ticker", "WLXT"); + obj.put("stringData", jsonObject.toString()); + log.info("诺力请求嘉耐回传出窑信息入参{}", obj.toString()); + String returnResultMsg = null; + try { + returnResultMsg = + HttpRequest.post(URL + method) + .body(String.valueOf(obj)) + .timeout(timeout) + .execute() + .body(); + } catch (Exception e) { + log.info("诺力请求嘉耐回传出窑信息失败!{}", e.getMessage()); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("status", "2"); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); - @Override - public Map feedBackInPartStock(Map whereJson) { - WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); - String value = WQLObject.getWQLObject("sys_param").query("code='IS_CONNECT_JN'").uniqueResult(0).getString("value"); - if (StrUtil.equals(value, "0")) { - return null; - } - String method = "/InPartStock"; - String task_id = (String) whereJson.get("task_id"); - JSONObject jsonObject = WQL.getWO("WMSTOJN_001").addParam("flag", "12").addParam("task_id", task_id).process().uniqueResult(0); - JSONObject obj = new JSONObject(); - obj.put("ticker", "WLXT"); - obj.put("stringData", jsonObject.toString()); - log.info("诺力请求嘉耐反馈半木托入临时库区入参{}", obj.toString()); - String returnResultMsg = null; - try { - returnResultMsg = HttpRequest.post(URL + method) - .body(String.valueOf(obj)).timeout(timeout) - .execute().body(); - } catch (Exception e) { - log.info("诺力请求嘉耐反馈半木托入临时库区失败!{}",e.getMessage()); - JSONObject jo = new JSONObject(); - jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); - jo.put("method", method); - jo.put("status", "2"); - jo.put("content", obj); - jo.put("create_time", DateUtil.now()); - wo.insert(jo); - - return null; - } - JSONObject returnResult = JSONObject.parseObject(returnResultMsg); - String returnStatus = returnResult.getString("status"); - if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { - log.info("诺力请求嘉耐反馈半木托入临时库区成功!"); - } else { - log.info("诺力请求嘉耐反馈半木托入临时库区失败!"); - JSONObject jo = new JSONObject(); - jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); - jo.put("method", method); - jo.put("status", "2"); - jo.put("content", obj); - jo.put("create_time", DateUtil.now()); - wo.insert(jo); - } - log.info("诺力请求嘉耐反馈半木托入临时库区出参{}", returnResultMsg); return null; + } + JSONObject returnResult = JSONObject.parseObject(returnResultMsg); + String returnStatus = returnResult.getString("status"); + if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { + log.info("诺力请求嘉耐回传出窑信息成功!"); + } else { + log.info("诺力请求嘉耐回传出窑信息失败!"); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("status", "2"); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); + } + log.info("诺力请求嘉耐回传出窑信息出参{}", returnResultMsg); + } catch (Exception e) { + e.printStackTrace(); } + return null; + } - @Override - public Map feedBackOutPartStock(Map whereJson) { - WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); - String value = WQLObject.getWQLObject("sys_param").query("code='IS_CONNECT_JN'").uniqueResult(0).getString("value"); - if (StrUtil.equals(value, "0")) { - return null; - } - String method = "/outWait"; - String task_id = (String) whereJson.get("task_id"); - JSONObject jsonObject = WQL.getWO("WMSTOJN_001").addParam("flag", "13").addParam("task_id", task_id).process().uniqueResult(0); - JSONObject obj = new JSONObject(); - obj.put("ticker", "WLXT"); - obj.put("stringData", jsonObject.toString()); - log.info("诺力请求嘉耐反馈半木托出临时库区入参{}", obj.toString()); - String returnResultMsg = null; - try { - returnResultMsg = HttpRequest.post(URL + method) - .body(String.valueOf(obj)).timeout(timeout) - .execute().body(); - } catch (Exception e) { - log.info("诺力请求嘉耐反馈半木托出临时库区失败!{}",e.getMessage()); - JSONObject jo = new JSONObject(); - jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); - jo.put("method", method); - jo.put("status", "2"); - jo.put("content", obj); - jo.put("create_time", DateUtil.now()); - wo.insert(jo); - - return null; - } - JSONObject returnResult = JSONObject.parseObject(returnResultMsg); - String returnStatus = returnResult.getString("status"); - if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { - log.info("诺力请求嘉耐反馈半木托出临时库区成功!"); - } else { - log.info("诺力请求嘉耐反馈半木托出临时库区失败!"); - JSONObject jo = new JSONObject(); - jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); - jo.put("method", method); - jo.put("status", "2"); - jo.put("content", obj); - jo.put("create_time", DateUtil.now()); - wo.insert(jo); - } - log.info("诺力请求嘉耐反馈半木托出临时库区出参{}", returnResultMsg); + @Override + public Map feedBackPackage(Map whereJson) { + try { + WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); + String value = + WQLObject.getWQLObject("sys_param") + .query("code='IS_CONNECT_JN'") + .uniqueResult(0) + .getString("value"); + if (StrUtil.equals(value, "0")) { return null; - } + } + // 木托盘号码 + String vehicle_code = (String) whereJson.get("vehicle_code"); + if (StrUtil.isEmpty(vehicle_code)) { +// throw new BadRequestException("托盘编码不能为空!"); + } + JSONObject mstObj = + WQL.getWO("WMSTOJN_001") + .addParam("flag", "9") + .addParam("vehicle_code", vehicle_code) + .process() + .uniqueResult(0); + JSONArray dtlarr = + WQL.getWO("WMSTOJN_001") + .addParam("flag", "8") + .addParam("record_id", mstObj.getString("record_id")) + .process() + .getResultJSONArray(0); + mstObj.put("DETAILS", dtlarr); + String method = "/Packing"; + JSONObject obj = new JSONObject(); + obj.put("ticker", "WLXT"); + obj.put("stringData", mstObj.toString()); + log.info("诺力请求嘉耐回传组盘记录入参{}", obj.toString()); + String resultMsg = null; + try { + resultMsg = + HttpRequest.post(URL + method) + .body(String.valueOf(obj)) + .timeout(timeout) + .execute() + .body(); + } catch (Exception e) { + log.info("诺力请求嘉耐回传组盘记录失败!{}", e.getMessage()); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("status", "2"); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); - @Override - public Map feedBackPackWordShop(Map whereJson) { - WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); - String value = WQLObject.getWQLObject("sys_param").query("code='IS_CONNECT_JN'").uniqueResult(0).getString("value"); - if (StrUtil.equals(value, "0")) { - return null; - } - String method = "/PackWordShop"; - String producetask_code = (String) whereJson.get("producetask_code"); - JSONObject jsonObject = WQL.getWO("WMSTOJN_001").addParam("flag", "14").addParam("producetask_code", producetask_code).process().uniqueResult(0); - JSONObject obj = new JSONObject(); - obj.put("ticker", "WLXT"); - obj.put("stringData", jsonObject.toString()); - log.info("诺力请求嘉耐反馈包装工单入参{}", obj.toString()); - String returnResultMsg = null; - try { - returnResultMsg = HttpRequest.post(URL + method) - .body(String.valueOf(obj)).timeout(timeout) - .execute().body(); - } catch (Exception e) { - log.info("诺力请求嘉耐反馈包装工单失败!{}",e.getMessage()); - JSONObject jo = new JSONObject(); - jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); - jo.put("method", method); - jo.put("status", "2"); - jo.put("content", obj); - jo.put("create_time", DateUtil.now()); - wo.insert(jo); - - return null; - } - JSONObject returnResult = JSONObject.parseObject(returnResultMsg); - String returnStatus = returnResult.getString("status"); - if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { - log.info("诺力请求嘉耐反馈包装工单成功!"); - } else { - log.info("诺力请求嘉耐反馈包装工单失败!"); - JSONObject jo = new JSONObject(); - jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); - jo.put("method", method); - jo.put("status", "2"); - jo.put("content", obj); - jo.put("create_time", DateUtil.now()); - wo.insert(jo); - } - log.info("诺力请求嘉耐反馈包装工单出参{}", returnResultMsg); return null; + } + JSONObject returnResult = JSONObject.parseObject(resultMsg); + String returnStatus = returnResult.getString("status"); + if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { + log.info("诺力请求嘉耐回传组盘记录成功!"); + } else { + log.info("诺力请求嘉耐回传组盘记录失败!"); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("status", "2"); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); + } + log.info("诺力请求嘉耐回传组盘记录出参{}", resultMsg); + } catch (Exception e) { + e.printStackTrace(); } + return null; + } - @Override - public Map feedBackTrayBak(Map whereJson) { - WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); - String value = WQLObject.getWQLObject("sys_param").query("code='IS_CONNECT_JN'").uniqueResult(0).getString("value"); - if (StrUtil.equals(value, "0")) { - return null; - } - String method = "/TrayBak"; - String vehicle_code = (String) whereJson.get("vehicle_code"); - if (StrUtil.isBlank(vehicle_code) || "0".equals(vehicle_code) || "0000".equals(vehicle_code) || "999".equals(vehicle_code)) { - return null; - } - JSONObject jsonObject = WQL.getWO("WMSTOJN_001").addParam("flag", "15").addParam("vehicle_code", vehicle_code).process().uniqueResult(0); - if (ObjectUtil.isEmpty(jsonObject)) { - return null; - } - jsonObject.put("outdate",DateUtil.now()); - JSONObject obj = new JSONObject(); - obj.put("ticker", "WLXT"); - obj.put("stringData", jsonObject.toString()); - log.info("诺力请求嘉耐反馈钢托盘回收入参{}", obj.toString()); - String returnResultMsg = null; - try { - returnResultMsg = HttpRequest.post(URL + method) - .body(String.valueOf(obj)).timeout(timeout) - .execute().body(); - } catch (Exception e) { - log.info("诺力请求嘉耐反馈钢托盘回收失败!{}",e.getMessage()); - JSONObject jo = new JSONObject(); - jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); - jo.put("method", method); - jo.put("status", "2"); - jo.put("content", obj); - jo.put("create_time", DateUtil.now()); - wo.insert(jo); - - return null; - } - JSONObject returnResult = JSONObject.parseObject(returnResultMsg); - String returnStatus = returnResult.getString("status"); - if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { - log.info("诺力请求嘉耐反馈钢托盘回收成功!"); - } else { - log.info("诺力请求嘉耐反馈钢托盘回收失败!"); - JSONObject jo = new JSONObject(); - jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); - jo.put("method", method); - jo.put("status", "2"); - jo.put("content", obj); - jo.put("create_time", DateUtil.now()); - wo.insert(jo); - } - log.info("诺力请求嘉耐反馈钢托盘回收出参{}", returnResultMsg); + @Override + public Map feedBackQualityInfo(String record_id) { + try { + WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); + String value = + WQLObject.getWQLObject("sys_param") + .query("code='IS_CONNECT_JN'") + .uniqueResult(0) + .getString("value"); + if (StrUtil.equals(value, "0")) { return null; - } + } + WQLObject recordTable = WQLObject.getWQLObject("st_buss_qualityRecord"); + JSONObject recordObj = + WQL.getWO("WMSTOJN_001") + .addParam("flag", "6") + .addParam("record_id", record_id) + .process() + .uniqueResult(0); + if (ObjectUtil.isEmpty(recordObj)) { + throw new BadRequestException("未找到记录标识为'" + record_id + "'的记录"); + } + String method = "/InsertQualityInfo"; + JSONObject obj = new JSONObject(); + obj.put("ticker", "WLXT"); + obj.put("stringData", recordObj.toString()); + log.info("诺力请求嘉耐回传不合格记录入参{}", obj.toString()); + String resultMsg = null; + try { + resultMsg = + HttpRequest.post(URL + method) + .body(String.valueOf(obj)) + .timeout(timeout) + .execute() + .body(); + } catch (Exception e) { + log.info("诺力请求嘉耐回传组盘记录失败{}", e.getMessage()); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("status", "2"); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); - @Override - public Map feedBackStartWorkShop(Map whereJson) { return null; - } + } - @Override - public Map feedBackFinishWorkShop(Map whereJson) { - return null; + JSONObject returnResult = JSONObject.parseObject(resultMsg); + String returnStatus = returnResult.getString("status"); + if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { + log.info("诺力请求嘉耐回传组盘记录成功!"); + } else { + log.info("诺力请求嘉耐回传组盘记录失败!"); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("status", "2"); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); + } + log.info("诺力请求嘉耐回传不合格记录出参{}", resultMsg); + } catch (Exception e) { + e.printStackTrace(); } + return null; + } + + @Override + public JSONObject queryCurrentOrder(Map whereJson) { + String resultMsg = null; + try { + String value = + WQLObject.getWQLObject("sys_param") + .query("code='IS_CONNECT_JN'") + .uniqueResult(0) + .getString("value"); + if (StrUtil.equals(value, "0")) { + return null; + } + String device_code = (String) whereJson.get("device_code"); + if (StrUtil.isEmpty(device_code)) { + throw new BadRequestException("设备编码不能为空!"); + } + String method = "/getPressWorkShop"; + JSONObject obj = new JSONObject(); + obj.put("ticker", "Sbdm"); + obj.put("device_code", device_code); + log.info("诺力请求嘉耐当前生产工单入参{}", obj.toString()); + + resultMsg = + HttpRequest.post(URL + method) + .body(String.valueOf(obj)) + .timeout(timeout) + .execute() + .body(); + } catch (Exception e) { + log.info("诺力请求嘉耐当前生产工单超时{}", e.getMessage()); + return null; + } + JSONObject result = JSONObject.parseObject(resultMsg); + log.info("诺力请求嘉耐当前生产工单出参{}", resultMsg); + String status = result.getString("status"); + if (StrUtil.isNotEmpty(status) && status.equals("1")) { + log.info("诺力请求嘉耐当前生产工单成功!"); + } else { + log.info("诺力请求嘉耐当前生产工单失败!"); + } + JSONObject joo = result.getJSONObject("returnData").getJSONObject("Table"); + return joo; + } + + @Override + public Map feedBackInWait(Map whereJson) { + try { + WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); + String value = + WQLObject.getWQLObject("sys_param") + .query("code='IS_CONNECT_JN'") + .uniqueResult(0) + .getString("value"); + if (StrUtil.equals(value, "0")) { + return null; + } + String method = "/InWait"; + String task_id = (String) whereJson.get("task_id"); + JSONObject jsonObject = + WQL.getWO("WMSTOJN_001") + .addParam("flag", "10") + .addParam("task_id", task_id) + .process() + .uniqueResult(0); + JSONObject obj = new JSONObject(); + obj.put("ticker", "WLXT"); + obj.put("stringData", jsonObject.toString()); + log.info("诺力请求嘉耐反馈入冷却缓冲区入参{}", obj.toString()); + String returnResultMsg = null; + try { + returnResultMsg = + HttpRequest.post(URL + method) + .body(String.valueOf(obj)) + .timeout(timeout) + .execute() + .body(); + } catch (Exception e) { + log.info("诺力请求嘉耐反馈入冷却缓冲区失败{}!", e.getMessage()); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("status", "2"); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); + + return null; + } + JSONObject returnResult = JSONObject.parseObject(returnResultMsg); + String returnStatus = returnResult.getString("status"); + if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { + log.info("诺力请求嘉耐反馈入冷却缓冲区成功!"); + } else { + log.info("诺力请求嘉耐反馈入冷却缓冲区失败!"); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("status", "2"); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); + } + log.info("诺力请求嘉耐反馈入冷却缓冲区出参{}", returnResultMsg); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + @Override + public Map feedBackOutWait(Map whereJson) { + try { + WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); + String value = + WQLObject.getWQLObject("sys_param") + .query("code='IS_CONNECT_JN'") + .uniqueResult(0) + .getString("value"); + if (StrUtil.equals(value, "0")) { + return null; + } + String method = "/outWait"; + String task_id = (String) whereJson.get("task_id"); + JSONObject jsonObject = + WQL.getWO("WMSTOJN_001") + .addParam("flag", "11") + .addParam("task_id", task_id) + .process() + .uniqueResult(0); + JSONObject obj = new JSONObject(); + obj.put("ticker", "WLXT"); + obj.put("stringData", jsonObject.toString()); + log.info("诺力请求嘉耐反馈出冷却缓冲区入参{}", obj.toString()); + String returnResultMsg = null; + try { + returnResultMsg = + HttpRequest.post(URL + method) + .body(String.valueOf(obj)) + .timeout(timeout) + .execute() + .body(); + } catch (Exception e) { + log.info("诺力请求嘉耐反馈出冷却缓冲区失败!{}", e.getMessage()); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("status", "2"); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); + + return null; + } + JSONObject returnResult = JSONObject.parseObject(returnResultMsg); + String returnStatus = returnResult.getString("status"); + if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { + log.info("诺力请求嘉耐反馈出冷却缓冲区成功!"); + } else { + log.info("诺力请求嘉耐反馈出冷却缓冲区失败!"); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("status", "2"); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); + } + log.info("诺力请求嘉耐反馈出冷却缓冲区出参{}", returnResultMsg); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + @Override + public Map feedBackInPartStock(Map whereJson) { + try { + WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); + String value = + WQLObject.getWQLObject("sys_param") + .query("code='IS_CONNECT_JN'") + .uniqueResult(0) + .getString("value"); + if (StrUtil.equals(value, "0")) { + return null; + } + String method = "/InPartStock"; + String task_id = (String) whereJson.get("task_id"); + JSONObject jsonObject = + WQL.getWO("WMSTOJN_001") + .addParam("flag", "12") + .addParam("task_id", task_id) + .process() + .uniqueResult(0); + JSONObject obj = new JSONObject(); + obj.put("ticker", "WLXT"); + obj.put("stringData", jsonObject.toString()); + log.info("诺力请求嘉耐反馈半木托入临时库区入参{}", obj.toString()); + String returnResultMsg = null; + try { + returnResultMsg = + HttpRequest.post(URL + method) + .body(String.valueOf(obj)) + .timeout(timeout) + .execute() + .body(); + } catch (Exception e) { + log.info("诺力请求嘉耐反馈半木托入临时库区失败!{}", e.getMessage()); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("status", "2"); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); + + return null; + } + JSONObject returnResult = JSONObject.parseObject(returnResultMsg); + String returnStatus = returnResult.getString("status"); + if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { + log.info("诺力请求嘉耐反馈半木托入临时库区成功!"); + } else { + log.info("诺力请求嘉耐反馈半木托入临时库区失败!"); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("status", "2"); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); + } + log.info("诺力请求嘉耐反馈半木托入临时库区出参{}", returnResultMsg); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + @Override + public Map feedBackOutPartStock(Map whereJson) { + try { + WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); + String value = + WQLObject.getWQLObject("sys_param") + .query("code='IS_CONNECT_JN'") + .uniqueResult(0) + .getString("value"); + if (StrUtil.equals(value, "0")) { + return null; + } + String method = "/outWait"; + String task_id = (String) whereJson.get("task_id"); + JSONObject jsonObject = + WQL.getWO("WMSTOJN_001") + .addParam("flag", "13") + .addParam("task_id", task_id) + .process() + .uniqueResult(0); + JSONObject obj = new JSONObject(); + obj.put("ticker", "WLXT"); + obj.put("stringData", jsonObject.toString()); + log.info("诺力请求嘉耐反馈半木托出临时库区入参{}", obj.toString()); + String returnResultMsg = null; + try { + returnResultMsg = + HttpRequest.post(URL + method) + .body(String.valueOf(obj)) + .timeout(timeout) + .execute() + .body(); + } catch (Exception e) { + log.info("诺力请求嘉耐反馈半木托出临时库区失败!{}", e.getMessage()); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("status", "2"); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); + + return null; + } + JSONObject returnResult = JSONObject.parseObject(returnResultMsg); + String returnStatus = returnResult.getString("status"); + if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { + log.info("诺力请求嘉耐反馈半木托出临时库区成功!"); + } else { + log.info("诺力请求嘉耐反馈半木托出临时库区失败!"); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("status", "2"); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); + } + log.info("诺力请求嘉耐反馈半木托出临时库区出参{}", returnResultMsg); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + @Override + public Map feedBackPackWordShop(Map whereJson) { + try { + WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); + String value = + WQLObject.getWQLObject("sys_param") + .query("code='IS_CONNECT_JN'") + .uniqueResult(0) + .getString("value"); + if (StrUtil.equals(value, "0")) { + return null; + } + String method = "/PackWordShop"; + String producetask_code = (String) whereJson.get("producetask_code"); + JSONObject jsonObject = + WQL.getWO("WMSTOJN_001") + .addParam("flag", "14") + .addParam("producetask_code", producetask_code) + .process() + .uniqueResult(0); + JSONObject obj = new JSONObject(); + obj.put("ticker", "WLXT"); + obj.put("stringData", jsonObject.toString()); + log.info("诺力请求嘉耐反馈包装工单入参{}", obj.toString()); + String returnResultMsg = null; + try { + returnResultMsg = + HttpRequest.post(URL + method) + .body(String.valueOf(obj)) + .timeout(timeout) + .execute() + .body(); + } catch (Exception e) { + log.info("诺力请求嘉耐反馈包装工单失败!{}", e.getMessage()); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("status", "2"); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); + + return null; + } + JSONObject returnResult = JSONObject.parseObject(returnResultMsg); + String returnStatus = returnResult.getString("status"); + if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { + log.info("诺力请求嘉耐反馈包装工单成功!"); + } else { + log.info("诺力请求嘉耐反馈包装工单失败!"); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("status", "2"); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); + } + log.info("诺力请求嘉耐反馈包装工单出参{}", returnResultMsg); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + @Override + public Map feedBackTrayBak(Map whereJson) { + try { + WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); + String value = + WQLObject.getWQLObject("sys_param") + .query("code='IS_CONNECT_JN'") + .uniqueResult(0) + .getString("value"); + if (StrUtil.equals(value, "0")) { + return null; + } + String method = "/TrayBak"; + String vehicle_code = (String) whereJson.get("vehicle_code"); + if (StrUtil.isBlank(vehicle_code) + || "0".equals(vehicle_code) + || "0000".equals(vehicle_code) + || "999".equals(vehicle_code)) { + return null; + } + JSONObject jsonObject = + WQL.getWO("WMSTOJN_001") + .addParam("flag", "15") + .addParam("vehicle_code", vehicle_code) + .process() + .uniqueResult(0); + if (ObjectUtil.isEmpty(jsonObject)) { + return null; + } + jsonObject.put("outdate", DateUtil.now()); + JSONObject obj = new JSONObject(); + obj.put("ticker", "WLXT"); + obj.put("stringData", jsonObject.toString()); + log.info("诺力请求嘉耐反馈钢托盘回收入参{}", obj.toString()); + String returnResultMsg = null; + try { + returnResultMsg = + HttpRequest.post(URL + method) + .body(String.valueOf(obj)) + .timeout(timeout) + .execute() + .body(); + } catch (Exception e) { + log.info("诺力请求嘉耐反馈钢托盘回收失败!{}", e.getMessage()); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("status", "2"); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); + + return null; + } + JSONObject returnResult = JSONObject.parseObject(returnResultMsg); + String returnStatus = returnResult.getString("status"); + if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { + log.info("诺力请求嘉耐反馈钢托盘回收成功!"); + } else { + log.info("诺力请求嘉耐反馈钢托盘回收失败!"); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("status", "2"); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); + } + log.info("诺力请求嘉耐反馈钢托盘回收出参{}", returnResultMsg); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + @Override + public Map feedBackStartWorkShop(Map whereJson) { + return null; + } + + @Override + public Map feedBackFinishWorkShop(Map whereJson) { + return null; + } } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/QTASK_01.wql b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/QTASK_01.wql new file mode 100644 index 0000000..f7d84b6 --- /dev/null +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/QTASK_01.wql @@ -0,0 +1,51 @@ +[交易说明] + 交易名: 解锁无任务的点位 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.point_uuid TYPEAS s_string + +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + IF 输入.flag = "1" + QUERY + SELECT point_id from sch_base_point WHERE lock_type='01' and point_code not in ( + SELECT start_point_code as point_code from sch_base_task task WHERE is_delete='0' and task_status <>'07' + union + SELECT next_point_code as point_code from sch_base_task task WHERE is_delete='0' and task_status <>'07' + ) + ENDSELECT + ENDQUERY + ENDIF + diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/CallEmptyVehicleTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/CallEmptyVehicleTask.java index cd274cf..189dc62 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 @@ -36,7 +36,6 @@ public class CallEmptyVehicleTask extends AbstractAcsTask { private final String THIS_CLASS = CallEmptyVehicleTask.class.getName(); @Override - @Transactional public void updateTaskStatus(JSONObject taskObj, String status) { /** *改变任务状态 @@ -304,7 +303,7 @@ public class CallEmptyVehicleTask extends AbstractAcsTask { //生成任务 JSONObject taskObj = new JSONObject(); taskObj.put("task_id", task_id); - taskObj.put("task_code", CodeUtil.getNewCode("TASK_CODE")); + 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); diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/CallMaterialTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/CallMaterialTask.java index ad68dbd..716a75d 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/CallMaterialTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/CallMaterialTask.java @@ -36,7 +36,6 @@ public class CallMaterialTask extends AbstractAcsTask { private final String THIS_CLASS = CallMaterialTask.class.getName(); @Override - @Transactional public void updateTaskStatus(JSONObject taskObj, String status) { /** *改变任务状态 @@ -427,7 +426,7 @@ public class CallMaterialTask extends AbstractAcsTask { ivtService.addIvtFlow(param, IvtChangeTypeEnum.SUB_CAN_USE); JSONObject taskObj = new JSONObject(); taskObj.put("task_id", task_id); - taskObj.put("task_code", CodeUtil.getNewCode("TASK_CODE")); + taskObj.put("task_code", IdUtil.getSnowflake(1, 1).nextId() + ""); taskObj.put("task_type", "01"); taskObj.put("acs_task_type", "1"); taskObj.put("task_status", task_status); diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/ConveyorTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/ConveyorTask.java index 42ba948..5e33135 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/ConveyorTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/ConveyorTask.java @@ -22,7 +22,6 @@ import org.springframework.transaction.annotation.Transactional; public class ConveyorTask extends AbstractAcsTask { private final String THIS_CLASS = ConveyorTask.class.getName(); - @Transactional @Override public void updateTaskStatus(JSONObject taskObj, String status) { /** @@ -74,7 +73,7 @@ public class ConveyorTask extends AbstractAcsTask { } taskObj.put("task_id", IdUtil.getSnowflake(1, 1).nextId() + ""); String task_status = TaskStatusEnum.EXECUTING.getCode(); - taskObj.put("task_code", CodeUtil.getNewCode("TASK_CODE")); + taskObj.put("task_code", IdUtil.getSnowflake(1, 1).nextId() + ""); taskObj.put("task_type", "06"); //输送任务 taskObj.put("acs_task_type", "2"); diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/FmjToPackIngTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/FmjToPackIngTask.java index 881c452..51c6ea8 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/FmjToPackIngTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/FmjToPackIngTask.java @@ -35,7 +35,6 @@ public class FmjToPackIngTask extends AbstractAcsTask { @Override - @Transactional public void updateTaskStatus(JSONObject taskObj, String status) { /** *改变任务状态 @@ -201,7 +200,7 @@ public class FmjToPackIngTask extends AbstractAcsTask { PointDto nextPoint = pointService.findByCode(next_point_code); JSONObject taskObj = new JSONObject(); taskObj.put("task_id", task_id); - taskObj.put("task_code", CodeUtil.getNewCode("TASK_CODE")); + taskObj.put("task_code", IdUtil.getSnowflake(1, 1).nextId() + ""); taskObj.put("task_type", "00"); taskObj.put("acs_task_type", "1"); taskObj.put("task_status", task_status); diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/RgvTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/RgvTask.java index 40f9c74..3a09c42 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/RgvTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/RgvTask.java @@ -23,9 +23,7 @@ import org.springframework.transaction.annotation.Transactional; public class RgvTask extends AbstractAcsTask { private final String THIS_CLASS = RgvTask.class.getName(); - @Transactional @Override - public void updateTaskStatus(JSONObject taskObj, String status) { /** *改变任务状态 @@ -83,7 +81,7 @@ public class RgvTask extends AbstractAcsTask { taskObj.put("task_id", IdUtil.getSnowflake(1, 1).nextId() + ""); String task_status = TaskStatusEnum.START_AND_POINT.getCode(); - taskObj.put("task_code", CodeUtil.getNewCode("TASK_CODE")); + taskObj.put("task_code", IdUtil.getSnowflake(1, 1).nextId() + ""); taskObj.put("task_type", "05"); //输送任务 taskObj.put("acs_task_type", "2"); diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/SendEmptyVehicleTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/SendEmptyVehicleTask.java index 58d9c05..a7ac725 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/SendEmptyVehicleTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/SendEmptyVehicleTask.java @@ -8,23 +8,17 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.common.utils.UserInfoUtil; import org.nl.exception.BadRequestException; import org.nl.modules.system.util.CodeUtil; -import org.nl.common.utils.UserInfoUtil; import org.nl.utils.SpringContextHolder; -import org.nl.wms.BussConstant; -import org.nl.wms.WorkProcedureEnum; import org.nl.wms.common.PointUpdateUtil; -import org.nl.wms.common.StructFindUtil; import org.nl.wms.ext.acs.service.impl.WmsToJnServiceImpl; import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.AreaEnum; import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.sch.service.PointService; import org.nl.wms.sch.service.dto.PointDto; -import org.nl.wms.sch.service.impl.PointServiceImpl; -import org.nl.wms.st.ivt.IvtChangeTypeEnum; -import org.nl.wms.st.ivt.StoreIvtServiceImpl; import org.nl.wql.WQL; import org.nl.wql.core.bean.WQLObject; import org.springframework.stereotype.Service; @@ -37,187 +31,173 @@ import java.util.HashMap; @Service public class SendEmptyVehicleTask extends AbstractAcsTask { - private final String THIS_CLASS = SendEmptyVehicleTask.class.getName(); - - @Override - @Transactional - public void updateTaskStatus(JSONObject taskObj, String status) { - /** - *改变任务状态 - **/ - String task_id = taskObj.getString("task_id"); - WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); - JSONObject jsonTask = taskTab.query("task_id='" + task_id + "'").uniqueResult(0); - if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { - //更新任务状态为执行中 - jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); - jsonTask.put("update_time", DateUtil.now()); - taskTab.update(jsonTask); - HashMap map = new HashMap(); - map.put("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"); - 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); - //调用mes接口 - HashMap hashMap = new HashMap(); - hashMap.put("vehicle_code", startPointObj.getString("vehicle_code")); - WmsToJnServiceImpl wmsToJnServiceImpl = new WmsToJnServiceImpl(); - wmsToJnServiceImpl.feedBackTrayBak(hashMap); - - startPointObj.put("lock_type", "00"); - startPointObj.put("point_status", "00"); - startPointObj.put("vehicle_code", ""); - pointTab.update(startPointObj); - taskTab.update(jsonTask); - - //将组盘表删除 - WQLObject.getWQLObject("st_buss_vehiclegroup") - .delete("vehicle_code = '" + vehicle_code + "'"); - } + private final String THIS_CLASS = SendEmptyVehicleTask.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); } - @Override - public void findStartPoint() { + 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", "任务执行完成"); + // 解锁仓位,托盘信息,回写到点位上去 + String vehicle_code = jsonTask.getString("vehicle_code"); + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + JSONObject endpointObj = + pointTab + .query("point_code='" + jsonTask.getString("next_point_code") + "'") + .uniqueResult(0); + endpointObj.put("lock_type", "00"); + endpointObj.put("point_status", "01"); + endpointObj.put("vehicle_code", vehicle_code); + pointTab.update(endpointObj); + + JSONObject startPointObj = + pointTab + .query("point_code='" + jsonTask.getString("start_point_code") + "'") + .uniqueResult(0); + // 调用mes接口 + HashMap hashMap = new HashMap(); + hashMap.put("vehicle_code", startPointObj.getString("vehicle_code")); + WmsToJnServiceImpl wmsToJnServiceImpl = new WmsToJnServiceImpl(); + wmsToJnServiceImpl.feedBackTrayBak(hashMap); + + startPointObj.put("lock_type", "00"); + startPointObj.put("point_status", "00"); + startPointObj.put("vehicle_code", ""); + pointTab.update(startPointObj); + taskTab.update(jsonTask); + + // 将组盘表删除 + WQLObject.getWQLObject("st_buss_vehiclegroup") + .delete("vehicle_code = '" + vehicle_code + "'"); + } + } + + @Override + public void findStartPoint() {} + + @Override + public void findNextPoint() {} + + @Override + public String createTask(JSONObject form) { + // 送空托盘只会有钢托盘有这个需求, 所以终点永远都是 KTPDDW1 都是从码垛机械手送到KTPDDW1 + // 除开送到ktphcw 还有从空托盘缓存位3 送到堆叠区 + PointService pointService = SpringContextHolder.getBean(PointService.class); + // 起点,托盘 不能为空,终点可以为空 + String vehicle_code = form.getString("vehicle_code"); + String start_point_code = form.getString("start_point_code"); + String next_point_code = "KTPDDW1"; + String next_area = AreaEnum.KTTDDQ.getCode(); + // 假如起点是KTPHCW3,就需要送到堆叠位 + if (StrUtil.equals(start_point_code, "KTPDDW3")) { + WQLObject point_table = WQLObject.getWQLObject("sch_base_point"); + JSONArray pointarr = + WQL.getWO("ACSTOMES_001") + .addParam("area_type", AreaEnum.KTTHCQ.getCode()) + .addParam("flag", "4") + .process() + .getResultJSONArray(0); + // 更新点位 + PointUpdateUtil.updatePoint(pointarr); + // 查询有没有空的点位 + JSONObject pointObj = + point_table + .query("area_type='" + AreaEnum.KTTHCQ.getCode() + "' and point_status='00'") + .uniqueResult(0); + if (ObjectUtil.isEmpty(pointObj)) { + throw new BadRequestException("未找到合适的点位"); + } + next_point_code = (String) pointObj.get("point_code"); + next_area = AreaEnum.KTTHCQ.getCode(); } - @Override - public void findNextPoint() { + String task_status = TaskStatusEnum.START_AND_POINT.getCode(); + + WQLObject taskTable = WQLObject.getWQLObject("SCH_BASE_Task"); + if (StrUtil.isEmpty(start_point_code)) { + throw new BadRequestException("起点不能为空!"); } - - @Override - @Transactional - public String createTask(JSONObject form) { - //送空托盘只会有钢托盘有这个需求, 所以终点永远都是 KTPDDW1 都是从码垛机械手送到KTPDDW1 - //除开送到ktphcw 还有从空托盘缓存位3 送到堆叠区 - PointService pointService = SpringContextHolder.getBean(PointService.class); - //起点,托盘 不能为空,终点可以为空 - String vehicle_code = form.getString("vehicle_code"); - String start_point_code = form.getString("start_point_code"); - String next_point_code = "KTPDDW1"; - String next_area = AreaEnum.KTTDDQ.getCode(); - //假如起点是KTPHCW3,就需要送到堆叠位 - if (StrUtil.equals(start_point_code, "KTPDDW3")) { - WQLObject point_table = WQLObject.getWQLObject("sch_base_point"); - JSONArray pointarr = WQL.getWO("ACSTOMES_001").addParam("area_type", AreaEnum.KTTHCQ.getCode()).addParam("flag", "4").process().getResultJSONArray(0); - //更新点位 - PointUpdateUtil.updatePoint(pointarr); - //查询有没有空的点位 - JSONObject pointObj = point_table.query("area_type='" + AreaEnum.KTTHCQ.getCode() + "' and point_status='00'").uniqueResult(0); - if (ObjectUtil.isEmpty(pointObj)) { - throw new BadRequestException("未找到合适的点位"); - } - next_point_code = (String) pointObj.get("point_code"); - next_area = AreaEnum.KTTHCQ.getCode(); - } - - String task_status = TaskStatusEnum.START_AND_POINT.getCode(); - - WQLObject taskTable = WQLObject.getWQLObject("SCH_BASE_Task"); - if (StrUtil.isEmpty(start_point_code)) { - throw new BadRequestException("起点不能为空!"); - } - PointDto startPoint = pointService.findByCode(start_point_code); - //假如载具为空,去点位表里面去取空托盘 - if (StrUtil.isEmpty(vehicle_code) || "0000".equals(vehicle_code) || "0".equals(vehicle_code)) { - vehicle_code = startPoint.getVehicle_code(); - } -// if (StrUtil.isEmpty(vehicle_code)) { -// throw new BadRequestException("载具未找到!"); -// } - //判断起点有没有未完成的指令 - JSONObject beforTaskObj = taskTable. - query("is_delete='0' and start_point_code='" + start_point_code + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'") - .uniqueResult(0); - if (ObjectUtil.isNotEmpty(beforTaskObj)) { - throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!"); - } - if (StrUtil.isNotEmpty(next_point_code)) { - PointDto nextPoint = pointService.findByCode(next_point_code); - 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 = '" + next_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", "20"); - EmptyVehicleObj.put("start_point_code", start_point_code); - EmptyVehicleObj.put("next_point_code", next_point_code); - EmptyVehicleObj.put("start_area", startPoint.getArea_type()); - EmptyVehicleObj.put("end_area", next_area); - 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", CodeUtil.getNewCode("TASK_CODE")); - taskObj.put("task_type", "02"); - taskObj.put("acs_task_type", "1"); - taskObj.put("task_status", task_status); - taskObj.put("start_point_code", start_point_code); - taskObj.put("start_area", startPoint.getArea_type()); - taskObj.put("request_param", form.toJSONString()); - taskObj.put("next_point_code", next_point_code); - taskObj.put("next_area", next_area); - taskObj.put("vehicle_code", vehicle_code); - taskObj.put("handle_class", THIS_CLASS); - taskObj.put("is_auto_issue", "1"); - 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; + PointDto startPoint = pointService.findByCode(start_point_code); + // 假如载具为空,去点位表里面去取空托盘 + if (StrUtil.isEmpty(vehicle_code) || "0000".equals(vehicle_code) || "0".equals(vehicle_code)) { + vehicle_code = startPoint.getVehicle_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()); + // if (StrUtil.isEmpty(vehicle_code)) { + // throw new BadRequestException("载具未找到!"); + // } + // 判断起点有没有未完成的指令 + JSONObject beforTaskObj = + taskTable + .query( + "is_delete='0' and start_point_code='" + + start_point_code + + "' and task_status <>'" + + TaskStatusEnum.FINISHED.getCode() + + "'") + .uniqueResult(0); + if (ObjectUtil.isNotEmpty(beforTaskObj)) { + throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!"); } - - @Override - public void pullBack(String task_id) { - + if (StrUtil.isNotEmpty(next_point_code)) { + PointDto nextPoint = pointService.findByCode(next_point_code); + 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 = '" + next_point_code + "'"); } + String task_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + // 生成任务 + JSONObject taskObj = new JSONObject(); + taskObj.put("task_id", task_id); + taskObj.put("task_code", IdUtil.getSnowflake(1, 1).nextId() + ""); + taskObj.put("task_type", "02"); + taskObj.put("acs_task_type", "1"); + taskObj.put("task_status", task_status); + taskObj.put("start_point_code", start_point_code); + taskObj.put("start_area", startPoint.getArea_type()); + taskObj.put("request_param", form.toJSONString()); + taskObj.put("next_point_code", next_point_code); + taskObj.put("next_area", next_area); + taskObj.put("vehicle_code", vehicle_code); + taskObj.put("handle_class", THIS_CLASS); + taskObj.put("is_auto_issue", "1"); + 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; + } - @Override - public void cancel(String 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/SendMaterialTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/SendMaterialTask.java index 1837f95..8f85b24 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/SendMaterialTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/SendMaterialTask.java @@ -27,368 +27,390 @@ import org.nl.wms.st.ivt.StoreIvtServiceImpl; import org.nl.wql.WQL; import org.nl.wql.core.bean.WQLObject; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import java.util.HashMap; @Service @Slf4j public class SendMaterialTask extends AbstractAcsTask { - private final String THIS_CLASS = SendMaterialTask.class.getName(); + private final String THIS_CLASS = SendMaterialTask.class.getName(); + @Override + public void updateTaskStatus(JSONObject taskObj, String status) { + /** 改变任务状态2 */ + String task_id = taskObj.getString("task_id"); + String car_no = taskObj.getString("car_no"); + 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()); - @Override - @Transactional - public void updateTaskStatus(JSONObject taskObj, String status) { - /** - *改变任务状态2 - **/ - String task_id = taskObj.getString("task_id"); - String car_no = taskObj.getString("car_no"); - WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); - JSONObject jsonTask = taskTab.query("task_id='" + task_id + "'").uniqueResult(0); - if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { - //更新任务状态为执行中 - jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); - jsonTask.put("update_time", DateUtil.now()); - - taskTab.update(jsonTask); - HashMap map = new HashMap(); - map.put("update_optid", UserInfoUtil.getCurrentUserId()); - map.put("update_optname", UserInfoUtil.getNickName()); - map.put("update_time", DateUtil.now()); - map.put("bill_status", "40"); - WQLObject.getWQLObject("ST_IVT_workProcedureIOS").update(map, "task_id='" + jsonTask.getString("task_id") + "'"); - } - - if (TaskStatusEnum.FINISHED.getCode().equals(status)) { - // 更新任务状态为完成 - jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode()); - jsonTask.put("taskfinish_mode", taskObj.getString("taskfinish_mode")); - jsonTask.put("update_time", DateUtil.now()); - jsonTask.put("car_no", car_no); - jsonTask.put("remark", "任务执行完成"); - ///审核单据 增加库存 改变出入库表的状态 - WQLObject mstTab = WQLObject.getWQLObject("ST_IVT_workProcedureIOS"); - JSONObject mstObj = mstTab.query("task_id='" + task_id + "' and is_delete='0'").uniqueResult(0); - //审核 加库存可和用数量 - StoreIvtServiceImpl ivtService = new StoreIvtServiceImpl(); - mstObj.put("bill_status", "50"); - mstObj.put("confirm_optid", UserInfoUtil.getCurrentUserId()); - mstObj.put("confirm_optname", UserInfoUtil.getNickName()); - mstObj.put("confirm_time", DateUtil.now()); - mstTab.update(mstObj); - - String iostorinv_id = mstObj.getString("iostorinv_id"); - String next_point_code = mstObj.getString("end_point_code"); - String start_point_code = mstObj.getString("start_point_code"); - JSONObject param = new JSONObject(); - param.put("material_id", mstObj.getString("material_id")); - param.put("bill_id", iostorinv_id); - param.put("qty_unit_id", mstObj.getString("qty_unit_id")); - param.put("pcsn", mstObj.getString("pcsn")); - param.put("change_qty", mstObj.getString("qty")); - param.put("vehicle_code", mstObj.getString("vehicle_code")); - param.put("workprocedure_id", mstObj.getString("workprocedure_id")); - param.put("is_full", mstObj.getString("is_full")); - param.put("stewing_time", mstObj.getString("stewing_time")); - param.put("producetask_id", mstObj.getString("producetask_id")); - - PointServiceImpl pointService = SpringContextHolder.getBean(PointServiceImpl.class); - PointDto nextPointDto = pointService.findByCode(next_point_code); - if (ObjectUtil.isNull(nextPointDto)) { - throw new BadRequestException("未找到可用点位:" + next_point_code); - } - PointDto startPointDto = pointService.findByCode(start_point_code); - if (ObjectUtil.isNull(startPointDto)) { - throw new BadRequestException("未找到可用点位:" + start_point_code); - } - param.put("struct_id", nextPointDto.getPoint_id()); - ivtService.addIvtFlow(param, IvtChangeTypeEnum.ADD_IVT_AND_CAN_USE); - //解锁仓位,托盘信息,回写到点位上去 - String vehicle_code = jsonTask.getString("vehicle_code"); - WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); - JSONObject endpointObj = pointTab.query("point_code='" + jsonTask.getString("next_point_code") + "'").uniqueResult(0); - endpointObj.put("lock_type", "00"); - endpointObj.put("point_status", "02"); - endpointObj.put("vehicle_code", vehicle_code); - pointTab.update(endpointObj); - - JSONObject startPointObj = pointTab.query("point_code='" + jsonTask.getString("start_point_code") + "'").uniqueResult(0); - - startPointObj.put("lock_type", "00"); - startPointObj.put("point_status", "00"); - startPointObj.put("vehicle_code", ""); - pointTab.update(startPointObj); - - taskTab.update(jsonTask); - String area_type = endpointObj.getString("area_type"); - //1压机下料货架调用接口反馈给嘉耐 搬运任务 - //2是出窑缓存货架,调用反馈入冷却缓冲区 - //3是木托盘缓存货架,调用反馈半木托入临时库区 - JSONObject jo = new JSONObject(); - jo.put("task_id", task_id); - jo.put("next_point_code", jsonTask.getString("next_point_code")); - WmsToJnServiceImpl wmsToJnServiceImpl = new WmsToJnServiceImpl(); - if (StrUtil.equals(area_type, AreaEnum.RYHCHJ.getCode())) { - wmsToJnServiceImpl.feedBackCarryRecord(jo); - } - if (StrUtil.equals(area_type, AreaEnum.CYHCHJ.getCode())) { - wmsToJnServiceImpl.feedBackInWait(jo); - } - if (StrUtil.equals(area_type, AreaEnum.BTHCQ.getCode())) { - wmsToJnServiceImpl.feedBackInPartStock(jo); - } - - } - + taskTab.update(jsonTask); + HashMap map = new HashMap(); + map.put("update_optid", UserInfoUtil.getCurrentUserId()); + map.put("update_optname", UserInfoUtil.getNickName()); + map.put("update_time", DateUtil.now()); + map.put("bill_status", "40"); + WQLObject.getWQLObject("ST_IVT_workProcedureIOS") + .update(map, "task_id='" + jsonTask.getString("task_id") + "'"); } - @Override - public void findStartPoint() { + 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("car_no", car_no); + jsonTask.put("remark", "任务执行完成"); + /// 审核单据 增加库存 改变出入库表的状态 + WQLObject mstTab = WQLObject.getWQLObject("ST_IVT_workProcedureIOS"); + JSONObject mstObj = + mstTab.query("task_id='" + task_id + "' and is_delete='0'").uniqueResult(0); + // 审核 加库存可和用数量 + StoreIvtServiceImpl ivtService = new StoreIvtServiceImpl(); + mstObj.put("bill_status", "50"); + mstObj.put("confirm_optid", UserInfoUtil.getCurrentUserId()); + mstObj.put("confirm_optname", UserInfoUtil.getNickName()); + mstObj.put("confirm_time", DateUtil.now()); + mstTab.update(mstObj); + String iostorinv_id = mstObj.getString("iostorinv_id"); + String next_point_code = mstObj.getString("end_point_code"); + String start_point_code = mstObj.getString("start_point_code"); + JSONObject param = new JSONObject(); + param.put("material_id", mstObj.getString("material_id")); + param.put("bill_id", iostorinv_id); + param.put("qty_unit_id", mstObj.getString("qty_unit_id")); + param.put("pcsn", mstObj.getString("pcsn")); + param.put("change_qty", mstObj.getString("qty")); + param.put("vehicle_code", mstObj.getString("vehicle_code")); + param.put("workprocedure_id", mstObj.getString("workprocedure_id")); + param.put("is_full", mstObj.getString("is_full")); + param.put("stewing_time", mstObj.getString("stewing_time")); + param.put("producetask_id", mstObj.getString("producetask_id")); + + PointServiceImpl pointService = SpringContextHolder.getBean(PointServiceImpl.class); + PointDto nextPointDto = pointService.findByCode(next_point_code); + if (ObjectUtil.isNull(nextPointDto)) { + throw new BadRequestException("未找到可用点位:" + next_point_code); + } + PointDto startPointDto = pointService.findByCode(start_point_code); + if (ObjectUtil.isNull(startPointDto)) { + throw new BadRequestException("未找到可用点位:" + start_point_code); + } + param.put("struct_id", nextPointDto.getPoint_id()); + ivtService.addIvtFlow(param, IvtChangeTypeEnum.ADD_IVT_AND_CAN_USE); + // 解锁仓位,托盘信息,回写到点位上去 + String vehicle_code = jsonTask.getString("vehicle_code"); + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + JSONObject endpointObj = + pointTab + .query("point_code='" + jsonTask.getString("next_point_code") + "'") + .uniqueResult(0); + endpointObj.put("lock_type", "00"); + endpointObj.put("point_status", "02"); + endpointObj.put("vehicle_code", vehicle_code); + pointTab.update(endpointObj); + + JSONObject startPointObj = + pointTab + .query("point_code='" + jsonTask.getString("start_point_code") + "'") + .uniqueResult(0); + + startPointObj.put("lock_type", "00"); + startPointObj.put("point_status", "00"); + startPointObj.put("vehicle_code", ""); + pointTab.update(startPointObj); + + taskTab.update(jsonTask); + String area_type = endpointObj.getString("area_type"); + // 1压机下料货架调用接口反馈给嘉耐 搬运任务 + // 2是出窑缓存货架,调用反馈入冷却缓冲区 + // 3是木托盘缓存货架,调用反馈半木托入临时库区 + JSONObject jo = new JSONObject(); + jo.put("task_id", task_id); + jo.put("next_point_code", jsonTask.getString("next_point_code")); + WmsToJnServiceImpl wmsToJnServiceImpl = new WmsToJnServiceImpl(); + if (StrUtil.equals(area_type, AreaEnum.RYHCHJ.getCode())) { + wmsToJnServiceImpl.feedBackCarryRecord(jo); + } + if (StrUtil.equals(area_type, AreaEnum.CYHCHJ.getCode())) { + wmsToJnServiceImpl.feedBackInWait(jo); + } + if (StrUtil.equals(area_type, AreaEnum.BTHCQ.getCode())) { + wmsToJnServiceImpl.feedBackInPartStock(jo); + } } + } - @Override - public void findNextPoint() { - String task_status = TaskStatusEnum.SURE_START.getCode(); - WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); - JSONArray taskArry = taskTab.query("task_status='" + task_status + "' AND handle_class='" + THIS_CLASS + "' AND is_delete='0' ").getResultJSONArray(0); - for (int i = 0; i < taskArry.size(); i++) { - JSONObject taskObj = taskArry.getJSONObject(i); - String task_id = taskObj.getString("task_id"); - String start_point_code = taskObj.getString("start_point_code"); - //1 将任务修改为分配 2将终点写入,完成分配,3 加锁点位 - //找一个合适的仓位 - WQLObject ProcedureIOStable = WQLObject.getWQLObject("ST_IVT_workProcedureIOS"); - JSONObject IosObj = ProcedureIOStable.query("task_id='" + task_id + "' and is_delete ='0'").uniqueResult(0); - if (ObjectUtil.isEmpty(IosObj)) { - throw new BadRequestException("未找到任务号为'" + taskObj.getString("task_code") + "'的入库单据!"); - } - JSONObject param = new JSONObject(); - param.put("material_id", IosObj.getString("material_id")); - param.put("area_type", IosObj.getString("end_area")); - param.put("vehicle_code", IosObj.getString("vehicle_code")); - JSONObject inStructObj = StructFindUtil.getInStruct(param); - if (ObjectUtil.isEmpty(inStructObj)) { - throw new BadRequestException("未找到合适的入库仓位!"); - } - //修改单据状态,将终点填入 - IosObj.put("bill_status", "20"); - IosObj.put("end_point_code", inStructObj.getString("struct_code")); - ProcedureIOStable.update(IosObj); - //终点加锁 - HashMap lock_map = new HashMap(); - lock_map.put("lock_type", "01"); - WQLObject.getWQLObject("sch_base_point").update(lock_map, "point_code = '" + inStructObj.getString("struct_code") + "'"); - //修改任务状态 - taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); - taskObj.put("update_optid", UserInfoUtil.getCurrentUserId()); - taskObj.put("update_optname", UserInfoUtil.getNickName()); - taskObj.put("update_time", DateUtil.now()); - taskTab.update(taskObj); - - - } - + @Override + public void findStartPoint() {} + @Override + public void findNextPoint() { + String task_status = TaskStatusEnum.SURE_START.getCode(); + WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); + JSONArray taskArry = + taskTab + .query( + "task_status='" + + task_status + + "' AND handle_class='" + + THIS_CLASS + + "' AND is_delete='0' ") + .getResultJSONArray(0); + for (int i = 0; i < taskArry.size(); i++) { + JSONObject taskObj = taskArry.getJSONObject(i); + String task_id = taskObj.getString("task_id"); + String start_point_code = taskObj.getString("start_point_code"); + // 1 将任务修改为分配 2将终点写入,完成分配,3 加锁点位 + // 找一个合适的仓位 + WQLObject ProcedureIOStable = WQLObject.getWQLObject("ST_IVT_workProcedureIOS"); + JSONObject IosObj = + ProcedureIOStable.query("task_id='" + task_id + "' and is_delete ='0'").uniqueResult(0); + if (ObjectUtil.isEmpty(IosObj)) { + throw new BadRequestException("未找到任务号为'" + taskObj.getString("task_code") + "'的入库单据!"); + } + JSONObject param = new JSONObject(); + param.put("material_id", IosObj.getString("material_id")); + param.put("area_type", IosObj.getString("end_area")); + param.put("vehicle_code", IosObj.getString("vehicle_code")); + JSONObject inStructObj = StructFindUtil.getInStruct(param); + if (ObjectUtil.isEmpty(inStructObj)) { + throw new BadRequestException("未找到合适的入库仓位!"); + } + // 修改单据状态,将终点填入 + IosObj.put("bill_status", "20"); + IosObj.put("end_point_code", inStructObj.getString("struct_code")); + ProcedureIOStable.update(IosObj); + // 终点加锁 + HashMap lock_map = new HashMap(); + lock_map.put("lock_type", "01"); + WQLObject.getWQLObject("sch_base_point") + .update(lock_map, "point_code = '" + inStructObj.getString("struct_code") + "'"); + // 修改任务状态 + taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); + taskObj.put("update_optid", UserInfoUtil.getCurrentUserId()); + taskObj.put("update_optname", UserInfoUtil.getNickName()); + taskObj.put("update_time", DateUtil.now()); + taskTab.update(taskObj); } + } - @Override - @Transactional(rollbackFor = Exception.class) - public String createTask(JSONObject form) { - //请求参数 载具、起点 物料,数量,客户,批次,创建方式 是否满托不能为空! 终点可以不为空时,入库单据编号不能为空 - 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 stewing_time = form.getString("stewing_time"); - String producetask_id = form.getString("producetask_id"); - String is_full = form.getString("is_full"); - String qty = form.getString("qty"); - String cust_id = form.getString("cust_id"); - String create_mode = form.getString("create_mode"); - String pcsn = form.getString("pcsn"); - String vehicle_code = form.getString("vehicle_code"); - String group_id = form.getString("group_id"); - String print_pc = form.getString("print_pc"); - WQLObject taskTable = WQLObject.getWQLObject("SCH_BASE_Task"); - if (StrUtil.isEmpty(start_point_code)) { - throw new BadRequestException("起点不能为空!"); - } - //判断起点有没有未完成的指令 - JSONObject beforTaskObj = taskTable. - query("is_delete='0' and start_point_code='" + start_point_code + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'") - .uniqueResult(0); - if (ObjectUtil.isNotEmpty(beforTaskObj)) { - throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!"); - } - PointService pointService = SpringContextHolder.getBean(PointService.class); - PointDto startPoint = pointService.findByCode(start_point_code); - String task_id = IdUtil.getSnowflake(1, 1).nextId() + ""; - String qty_unit_id = ""; - String endArea_type = ""; - String bill_type = ""; - WQLObject iosTable = WQLObject.getWQLObject("ST_IVT_workProcedureIOS"); - //如果给了终点,更新入库单据,给pc、手持调用 - if (StrUtil.isNotEmpty(next_point_code)) { - String iostorinv_id = form.getString("iostorinv_id"); - if (StrUtil.isEmpty(iostorinv_id)) { - throw new BadRequestException("入库单据号不能为空!"); - } - JSONObject IosObj = iosTable.query("iostorinv_id='" + iostorinv_id + "'").uniqueResult(0); - IosObj.put("bill_status", "20"); - iosTable.update(IosObj); - } - //如果没给终点,根据起点去找工序,找一个合适的仓位 并且生成入库单,并且锁定点位 - if (StrUtil.isEmpty(next_point_code)) { - if (StrUtil.isEmpty(material_id)) { - throw new BadRequestException("物料标识不能为空!"); - } - if (StrUtil.isEmpty(qty)) { - throw new BadRequestException("数量数值不能为空!"); - } - if (StrUtil.isEmpty(create_mode)) { - throw new BadRequestException("创建方式不能为空!"); - } - if (StrUtil.isEmpty(is_full)) { - throw new BadRequestException("是否满托不能为空!"); - } - JSONObject workInfo = WQL.getWO("QSTRUCT_RULE").addParam("flag", "1").addParam("code", start_point_code) - .process().uniqueResult(0); - String workprocedure_id = workInfo.getString("workprocedure_id"); - WorkProcedureEnum workProcedureEnum = WorkProcedureEnum.get(workprocedure_id); - //用于判断是不是压制工序, - switch (workProcedureEnum) { - // 压制工序 - case YZGX: - qty_unit_id = BussConstant.HN_IN_QTY_UNIT_ID; - endArea_type = AreaEnum.RYHCHJ.getCode(); - bill_type = BillTypeEnum.YZRK.getCode(); - break; - //烧制工序 - case SZGX: - qty_unit_id = BussConstant.YZ_IN_QTY_UNIT_ID; - bill_type = BillTypeEnum.SZRK.getCode(); - endArea_type = AreaEnum.CYHCHJ.getCode(); - break; - //分拣工序 - case FJGX: - qty_unit_id = BussConstant.HN_IN_QTY_UNIT_ID; - bill_type = BillTypeEnum.SZRK.getCode(); - endArea_type = AreaEnum.BTHCQ.getCode(); - break; - default: - qty_unit_id = BussConstant.HN_IN_QTY_UNIT_ID; - break; - } - JSONObject param = new JSONObject(); - param.put("material_id", material_id); - param.put("area_type", endArea_type); - JSONObject inStructObj = StructFindUtil.getInStruct(param); - if (ObjectUtil.isEmpty(inStructObj)) { - throw new BadRequestException("未找到合适的入库仓位!"); - } - next_point_code = inStructObj.getString("struct_code"); - //创建入库单据 - //假如静置时间为0 或者为空,则取物料表上的静置时间 - if (StrUtil.isEmpty(stewing_time) || StrUtil.equals(stewing_time, "0") || "0.0".equals(stewing_time)) { - stewing_time = WQLObject.getWQLObject("md_me_material").query("material_id ='" + material_id + "'"). - uniqueResult(0).getString("stewing_time"); - } - //假如是烧制工序,静置时间都是0 - if (StrUtil.equals(workProcedureEnum.getCode(), WorkProcedureEnum.SZGX.getCode())) { - stewing_time = "0"; - } - JSONObject iosObj = new JSONObject(); - iosObj.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId()); - iosObj.put("bill_code", CodeUtil.getNewCode("IN_STORE_CODE")); - iosObj.put("io_type", "0"); - iosObj.put("bill_type", bill_type); - iosObj.put("workprocedure_id", workprocedure_id); - iosObj.put("ivt_workprocedure_id", workprocedure_id); - iosObj.put("material_id", material_id); - iosObj.put("producetask_id", producetask_id); - iosObj.put("stewing_time", stewing_time); - iosObj.put("qty", qty); - iosObj.put("qty_unit_id", qty_unit_id); - iosObj.put("print_pc", print_pc); - //默认是分配状态 - iosObj.put("bill_status", "20"); - iosObj.put("start_point_code", start_point_code); - iosObj.put("end_point_code", next_point_code); - iosObj.put("start_area", startPoint.getArea_type()); - iosObj.put("end_area", endArea_type); - iosObj.put("cust_id", cust_id); - iosObj.put("create_mode", create_mode); - iosObj.put("task_id", task_id); - iosObj.put("pcsn", pcsn); - iosObj.put("create_id", UserInfoUtil.getCurrentUserId()); - iosObj.put("create_name", UserInfoUtil.getNickName()); - iosObj.put("create_time", DateUtil.now()); - iosObj.put("is_full", is_full); - iosObj.put("vehicle_code", vehicle_code); - WQLObject.getWQLObject("ST_IVT_workProcedureIOS").insert(iosObj); - - } - String task_status = TaskStatusEnum.START_AND_POINT.getCode(); - PointDto nextPoint = pointService.findByCode(next_point_code); - //终点点加锁 - HashMap lock_map = new HashMap(); - lock_map.put("lock_type", "01"); - WQLObject.getWQLObject("sch_base_point").update(lock_map, "point_code = '" + next_point_code + "'"); - JSONObject taskObj = new JSONObject(); - taskObj.put("task_id", task_id); - taskObj.put("task_code", CodeUtil.getNewCode("TASK_CODE")); - taskObj.put("task_type", "00"); - taskObj.put("acs_task_type", "1"); - taskObj.put("task_status", task_status); - taskObj.put("start_point_code", start_point_code); - taskObj.put("start_area", startPoint.getArea_type()); - taskObj.put("request_param", form.toJSONString()); - taskObj.put("next_point_code", next_point_code); - taskObj.put("next_area", nextPoint.getArea_type()); - taskObj.put("handle_class", THIS_CLASS); - taskObj.put("is_auto_issue", "1"); - taskObj.put("create_name", UserInfoUtil.getNickName()); - taskObj.put("create_id", UserInfoUtil.getCurrentUserId()); - taskObj.put("create_time", DateUtil.now()); - taskObj.put("vehicle_code", vehicle_code); - taskObj.put("is_delete", "0"); - taskTable.insert(taskObj); - - // 如果是压料制下,或者是分拣送料需要更新组盘信息,将task_id 更新 - JSONObject workInfo = WQL.getWO("QSTRUCT_RULE").addParam("flag", "1").addParam("code", start_point_code) - .process().uniqueResult(0); - if (StrUtil.equals(WorkProcedureEnum.YZGX.getCode(), workInfo.getString("workprocedure_code")) - || StrUtil.equals(WorkProcedureEnum.FJGX.getCode(), workInfo.getString("workprocedure_code"))) { - WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup"); - JSONObject groupInfo = groupTable.query("group_id='" + group_id + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(groupInfo)) { - groupInfo.put("task_id", task_id); - groupInfo.put("material_move_id", task_id); - groupTable.update(groupInfo); - } - - } - return task_id; + @Override + // @Transactional(rollbackFor = Exception.class) + public String createTask(JSONObject form) { + // 请求参数 载具、起点 物料,数量,客户,批次,创建方式 是否满托不能为空! 终点可以不为空时,入库单据编号不能为空 + 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 stewing_time = form.getString("stewing_time"); + String producetask_id = form.getString("producetask_id"); + String is_full = form.getString("is_full"); + String qty = form.getString("qty"); + String cust_id = form.getString("cust_id"); + String create_mode = form.getString("create_mode"); + String pcsn = form.getString("pcsn"); + String vehicle_code = form.getString("vehicle_code"); + String group_id = form.getString("group_id"); + String print_pc = form.getString("print_pc"); + WQLObject taskTable = WQLObject.getWQLObject("SCH_BASE_Task"); + if (StrUtil.isEmpty(start_point_code)) { + throw new BadRequestException("起点不能为空!"); } - - - @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 beforTaskObj = + taskTable + .query( + "is_delete='0' and start_point_code='" + + start_point_code + + "' and task_status <>'" + + TaskStatusEnum.FINISHED.getCode() + + "'") + .uniqueResult(0); + if (ObjectUtil.isNotEmpty(beforTaskObj)) { + throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!"); } - - @Override - public void pullBack(String task_id) { - + PointService pointService = SpringContextHolder.getBean(PointService.class); + PointDto startPoint = pointService.findByCode(start_point_code); + String task_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String qty_unit_id = ""; + String endArea_type = ""; + String bill_type = ""; + WQLObject iosTable = WQLObject.getWQLObject("ST_IVT_workProcedureIOS"); + // 如果给了终点,更新入库单据,给pc、手持调用 + if (StrUtil.isNotEmpty(next_point_code)) { + String iostorinv_id = form.getString("iostorinv_id"); + if (StrUtil.isEmpty(iostorinv_id)) { + throw new BadRequestException("入库单据号不能为空!"); + } + JSONObject IosObj = iosTable.query("iostorinv_id='" + iostorinv_id + "'").uniqueResult(0); + IosObj.put("bill_status", "20"); + iosTable.update(IosObj); } - - @Override - public void cancel(String task_id) { - + // 如果没给终点,根据起点去找工序,找一个合适的仓位 并且生成入库单,并且锁定点位 + if (StrUtil.isEmpty(next_point_code)) { + if (StrUtil.isEmpty(material_id)) { + throw new BadRequestException("物料标识不能为空!"); + } + if (StrUtil.isEmpty(qty)) { + throw new BadRequestException("数量数值不能为空!"); + } + if (StrUtil.isEmpty(create_mode)) { + throw new BadRequestException("创建方式不能为空!"); + } + if (StrUtil.isEmpty(is_full)) { + throw new BadRequestException("是否满托不能为空!"); + } + JSONObject workInfo = + WQL.getWO("QSTRUCT_RULE") + .addParam("flag", "1") + .addParam("code", start_point_code) + .process() + .uniqueResult(0); + String workprocedure_id = workInfo.getString("workprocedure_id"); + WorkProcedureEnum workProcedureEnum = WorkProcedureEnum.get(workprocedure_id); + // 用于判断是不是压制工序, + switch (workProcedureEnum) { + // 压制工序 + case YZGX: + qty_unit_id = BussConstant.HN_IN_QTY_UNIT_ID; + endArea_type = AreaEnum.RYHCHJ.getCode(); + bill_type = BillTypeEnum.YZRK.getCode(); + break; + // 烧制工序 + case SZGX: + qty_unit_id = BussConstant.YZ_IN_QTY_UNIT_ID; + bill_type = BillTypeEnum.SZRK.getCode(); + endArea_type = AreaEnum.CYHCHJ.getCode(); + break; + // 分拣工序 + case FJGX: + qty_unit_id = BussConstant.HN_IN_QTY_UNIT_ID; + bill_type = BillTypeEnum.SZRK.getCode(); + endArea_type = AreaEnum.BTHCQ.getCode(); + break; + default: + qty_unit_id = BussConstant.HN_IN_QTY_UNIT_ID; + break; + } + JSONObject param = new JSONObject(); + param.put("material_id", material_id); + param.put("area_type", endArea_type); + JSONObject inStructObj = StructFindUtil.getInStruct(param); + if (ObjectUtil.isEmpty(inStructObj)) { + throw new BadRequestException("未找到合适的入库仓位!"); + } + next_point_code = inStructObj.getString("struct_code"); + // 创建入库单据 + // 假如静置时间为0 或者为空,则取物料表上的静置时间 + if (StrUtil.isEmpty(stewing_time) + || StrUtil.equals(stewing_time, "0") + || "0.0".equals(stewing_time)) { + stewing_time = + WQLObject.getWQLObject("md_me_material") + .query("material_id ='" + material_id + "'") + .uniqueResult(0) + .getString("stewing_time"); + } + // 假如是烧制工序,静置时间都是0 + if (StrUtil.equals(workProcedureEnum.getCode(), WorkProcedureEnum.SZGX.getCode())) { + stewing_time = "0"; + } + JSONObject iosObj = new JSONObject(); + iosObj.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId()); + iosObj.put("bill_code", CodeUtil.getNewCode("IN_STORE_CODE")); + iosObj.put("io_type", "0"); + iosObj.put("bill_type", bill_type); + iosObj.put("workprocedure_id", workprocedure_id); + iosObj.put("ivt_workprocedure_id", workprocedure_id); + iosObj.put("material_id", material_id); + iosObj.put("producetask_id", producetask_id); + iosObj.put("stewing_time", stewing_time); + iosObj.put("qty", qty); + iosObj.put("qty_unit_id", qty_unit_id); + iosObj.put("print_pc", print_pc); + // 默认是分配状态 + iosObj.put("bill_status", "20"); + iosObj.put("start_point_code", start_point_code); + iosObj.put("end_point_code", next_point_code); + iosObj.put("start_area", startPoint.getArea_type()); + iosObj.put("end_area", endArea_type); + iosObj.put("cust_id", cust_id); + iosObj.put("create_mode", create_mode); + iosObj.put("task_id", task_id); + iosObj.put("pcsn", pcsn); + iosObj.put("create_id", UserInfoUtil.getCurrentUserId()); + iosObj.put("create_name", UserInfoUtil.getNickName()); + iosObj.put("create_time", DateUtil.now()); + iosObj.put("is_full", is_full); + iosObj.put("vehicle_code", vehicle_code); + WQLObject.getWQLObject("ST_IVT_workProcedureIOS").insert(iosObj); } + String task_status = TaskStatusEnum.START_AND_POINT.getCode(); + PointDto nextPoint = pointService.findByCode(next_point_code); + // 终点点加锁 + HashMap lock_map = new HashMap(); + lock_map.put("lock_type", "01"); + WQLObject.getWQLObject("sch_base_point") + .update(lock_map, "point_code = '" + next_point_code + "'"); + JSONObject taskObj = new JSONObject(); + taskObj.put("task_id", task_id); + taskObj.put("task_code", IdUtil.getSnowflake(1, 1).nextId() + ""); + taskObj.put("task_type", "00"); + taskObj.put("acs_task_type", "1"); + taskObj.put("task_status", task_status); + taskObj.put("start_point_code", start_point_code); + taskObj.put("start_area", startPoint.getArea_type()); + taskObj.put("request_param", form.toJSONString()); + taskObj.put("next_point_code", next_point_code); + taskObj.put("next_area", nextPoint.getArea_type()); + taskObj.put("handle_class", THIS_CLASS); + taskObj.put("is_auto_issue", "1"); + taskObj.put("create_name", UserInfoUtil.getNickName()); + taskObj.put("create_id", UserInfoUtil.getCurrentUserId()); + taskObj.put("create_time", DateUtil.now()); + taskObj.put("vehicle_code", vehicle_code); + taskObj.put("is_delete", "0"); + taskTable.insert(taskObj); + // 如果是压料制下,或者是分拣送料需要更新组盘信息,将task_id 更新 + JSONObject workInfo = + WQL.getWO("QSTRUCT_RULE") + .addParam("flag", "1") + .addParam("code", start_point_code) + .process() + .uniqueResult(0); + if (StrUtil.equals(WorkProcedureEnum.YZGX.getCode(), workInfo.getString("workprocedure_code")) + || StrUtil.equals( + WorkProcedureEnum.FJGX.getCode(), workInfo.getString("workprocedure_code"))) { + WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup"); + JSONObject groupInfo = groupTable.query("group_id='" + group_id + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(groupInfo)) { + groupInfo.put("task_id", task_id); + groupInfo.put("material_move_id", task_id); + groupTable.update(groupInfo); + } + } + 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) { + System.out.println("acs取消"); + } } 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 6523e8d..ab14e26 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 @@ -34,7 +34,6 @@ public class StructToConveyorTask extends AbstractAcsTask { @Override - @Transactional public void updateTaskStatus(JSONObject taskObj, String status) { /** *改变任务状态 @@ -214,7 +213,7 @@ public class StructToConveyorTask extends AbstractAcsTask { PointDto nextPoint = pointService.findByCode(next_point_code); JSONObject taskObj = new JSONObject(); taskObj.put("task_id", task_id); - taskObj.put("task_code", CodeUtil.getNewCode("TASK_CODE")); + taskObj.put("task_code", IdUtil.getSnowflake(1, 1).nextId() + ""); taskObj.put("task_type", "00"); taskObj.put("acs_task_type", "1"); taskObj.put("task_status", task_status); diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/ToConveyorTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/ToConveyorTask.java index 9d1617d..209c54d 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/ToConveyorTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/ToConveyorTask.java @@ -41,7 +41,6 @@ public class ToConveyorTask extends AbstractAcsTask { @Override - @Transactional public void updateTaskStatus(JSONObject taskObj, String status) { /** *改变任务状态 @@ -138,7 +137,7 @@ public class ToConveyorTask extends AbstractAcsTask { PointDto nextPoint = pointService.findByCode(next_point_code); JSONObject taskObj = new JSONObject(); taskObj.put("task_id", task_id); - taskObj.put("task_code", CodeUtil.getNewCode("TASK_CODE")); + taskObj.put("task_code", IdUtil.getSnowflake(1, 1).nextId() + ""); taskObj.put("task_type", "06"); taskObj.put("acs_task_type", "1"); taskObj.put("task_status", task_status); diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/ToPackIngTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/ToPackIngTask.java index 1cf21f7..f3e814c 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/ToPackIngTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/ToPackIngTask.java @@ -28,148 +28,150 @@ import java.util.HashMap; @RequiredArgsConstructor @Slf4j public class ToPackIngTask extends AbstractAcsTask { - private final String THIS_CLASS = ToPackIngTask.class.getName(); - - - @Override - @Transactional - public void updateTaskStatus(JSONObject taskObj, String status) { - /** - *改变任务状态 - **/ - String task_id = taskObj.getString("task_id"); - WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); - JSONObject jsonTask = taskTab.query("task_id='" + task_id + "'").uniqueResult(0); - if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { - //更新任务状态为执行中 - jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); - jsonTask.put("update_time", DateUtil.now()); - taskTab.update(jsonTask); - HashMap map = new HashMap(); - map.put("update_optid", UserInfoUtil.getCurrentUserId()); - map.put("update_optname", UserInfoUtil.getNickName()); - map.put("update_time", DateUtil.now()); - map.put("bill_status", "40"); - WQLObject.getWQLObject("ST_IVT_workProcedureIOS").update(map, "task_id='" + jsonTask.getString("task_id") + "'"); - } - - if (TaskStatusEnum.FINISHED.getCode().equals(status)) { - // 更新任务状态为完成 - jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode()); - jsonTask.put("taskfinish_mode", taskObj.getString("taskfinish_mode")); - jsonTask.put("update_time", DateUtil.now()); - jsonTask.put("remark", "任务执行完成"); - taskTab.update(jsonTask); - WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); - //将起点的载具清除 - JSONObject startPointObj = pointTab.query("point_code='" + jsonTask.getString("start_point_code") + "'").uniqueResult(0); - //假如起点是码垛位置则不需要更新 - if (!(StrUtil.equals(jsonTask.getString("start_point_code"), "FJJXSXLW201") || - StrUtil.equals(jsonTask.getString("start_point_code"), "FJJXSXLW202") || - StrUtil.equals(jsonTask.getString("start_point_code"), "FJJXSXLW301") || - StrUtil.equals(jsonTask.getString("start_point_code"), "FJJXSXLW302")) - - ) { - startPointObj.put("lock_type", "00"); - startPointObj.put("point_status", "00"); - startPointObj.put("vehicle_code", ""); - pointTab.update(startPointObj); - } - //调用mes接口 - HashMap map = new HashMap(); - map.put("vehicle_code",jsonTask.getString("vehicle_code")); - WmsToJnServiceImpl wmsToJnServiceImpl = new WmsToJnServiceImpl(); - wmsToJnServiceImpl.feedBackPackage(map); - //将组盘表删除 - WQLObject group_Table = WQLObject.getWQLObject("st_buss_vehiclegroup"); - JSONObject groupObj = group_Table.query("vehicle_code='" + jsonTask.getString("vehicle_code") + "' and is_delete='0'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(groupObj)) { - groupObj.put("is_delete", "0"); - group_Table.update(groupObj); - } - } + private final String THIS_CLASS = ToPackIngTask.class.getName(); + @Override + @Transactional + public void updateTaskStatus(JSONObject taskObj, String status) { + /** 改变任务状态 */ + String task_id = taskObj.getString("task_id"); + WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); + JSONObject jsonTask = taskTab.query("task_id='" + task_id + "'").uniqueResult(0); + if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { + // 更新任务状态为执行中 + jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); + jsonTask.put("update_time", DateUtil.now()); + taskTab.update(jsonTask); + HashMap map = new HashMap(); + map.put("update_optid", UserInfoUtil.getCurrentUserId()); + map.put("update_optname", UserInfoUtil.getNickName()); + map.put("update_time", DateUtil.now()); + map.put("bill_status", "40"); + WQLObject.getWQLObject("ST_IVT_workProcedureIOS") + .update(map, "task_id='" + jsonTask.getString("task_id") + "'"); } - @Override - public void findStartPoint() { + if (TaskStatusEnum.FINISHED.getCode().equals(status)) { + // 更新任务状态为完成 + jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode()); + jsonTask.put("taskfinish_mode", taskObj.getString("taskfinish_mode")); + jsonTask.put("update_time", DateUtil.now()); + jsonTask.put("remark", "任务执行完成"); + taskTab.update(jsonTask); + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + // 将起点的载具清除 + JSONObject startPointObj = + pointTab + .query("point_code='" + jsonTask.getString("start_point_code") + "'") + .uniqueResult(0); + // 假如起点是码垛位置则不需要更新 + if (!(StrUtil.equals(jsonTask.getString("start_point_code"), "FJJXSXLW201") + || StrUtil.equals(jsonTask.getString("start_point_code"), "FJJXSXLW202") + || StrUtil.equals(jsonTask.getString("start_point_code"), "FJJXSXLW301") + || StrUtil.equals(jsonTask.getString("start_point_code"), "FJJXSXLW302"))) { + startPointObj.put("lock_type", "00"); + startPointObj.put("point_status", "00"); + startPointObj.put("vehicle_code", ""); + pointTab.update(startPointObj); + } + // 调用mes接口 + HashMap map = new HashMap(); + map.put("vehicle_code", jsonTask.getString("vehicle_code")); + WmsToJnServiceImpl wmsToJnServiceImpl = new WmsToJnServiceImpl(); + + wmsToJnServiceImpl.feedBackPackage(map); + + + // 将组盘表删除 + WQLObject group_Table = WQLObject.getWQLObject("st_buss_vehiclegroup"); + JSONObject groupObj = + group_Table + .query("vehicle_code='" + jsonTask.getString("vehicle_code") + "' and is_delete='0'") + .uniqueResult(0); + if (ObjectUtil.isNotEmpty(groupObj)) { + groupObj.put("is_delete", "0"); + group_Table.update(groupObj); + } } + } - @Override - public void findNextPoint() { + @Override + public void findStartPoint() {} + @Override + public void findNextPoint() {} + + @Override + 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 = "BZSLW"; + String material_id = form.getString("material_id"); + String is_full = form.getString("is_full"); + String qty = form.getString("qty"); + String pcsn = form.getString("pcsn"); + String group_id = form.getString("group_id"); + WQLObject taskTable = WQLObject.getWQLObject("SCH_BASE_Task"); + if (StrUtil.isEmpty(start_point_code)) { + throw new BadRequestException("起点不能为空!"); } - - @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 = "BZSLW"; - String material_id = form.getString("material_id"); - String is_full = form.getString("is_full"); - String qty = form.getString("qty"); - String pcsn = form.getString("pcsn"); - String group_id = form.getString("group_id"); - WQLObject taskTable = WQLObject.getWQLObject("SCH_BASE_Task"); - if (StrUtil.isEmpty(start_point_code)) { - throw new BadRequestException("起点不能为空!"); - } - if (StrUtil.isEmpty(next_point_code)){ - throw new BadRequestException("终点不能为空!"); - } - //判断起点有没有未完成的指令 - JSONObject beforTaskObj = taskTable. - query("is_delete='0' and start_point_code='" + start_point_code + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'") - .uniqueResult(0); - if (ObjectUtil.isNotEmpty(beforTaskObj)) { - throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!"); - } - String task_id = IdUtil.getSnowflake(1, 1).nextId() + ""; - PointService pointService = SpringContextHolder.getBean(PointService.class); - PointDto startPoint = pointService.findByCode(start_point_code); - String task_status = TaskStatusEnum.START_AND_POINT.getCode(); - PointDto nextPoint = pointService.findByCode(next_point_code); - JSONObject taskObj = new JSONObject(); - taskObj.put("task_id", task_id); - taskObj.put("task_code", CodeUtil.getNewCode("TASK_CODE")); - taskObj.put("task_type", "00"); - taskObj.put("acs_task_type", "1"); - taskObj.put("task_status", task_status); - taskObj.put("start_point_code", start_point_code); - taskObj.put("start_area", startPoint.getArea_type()); - taskObj.put("request_param", form.toJSONString()); - taskObj.put("next_point_code", next_point_code); - taskObj.put("next_area", nextPoint.getArea_type()); - taskObj.put("vehicle_code", vehicle_code); - taskObj.put("handle_class", THIS_CLASS); - taskObj.put("is_auto_issue", "1"); - taskObj.put("create_name", 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; + if (StrUtil.isEmpty(next_point_code)) { + throw new BadRequestException("终点不能为空!"); } - - - @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 beforTaskObj = + taskTable + .query( + "is_delete='0' and start_point_code='" + + start_point_code + + "' and task_status <>'" + + TaskStatusEnum.FINISHED.getCode() + + "'") + .uniqueResult(0); + if (ObjectUtil.isNotEmpty(beforTaskObj)) { + throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!"); } + String task_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + PointService pointService = SpringContextHolder.getBean(PointService.class); + PointDto startPoint = pointService.findByCode(start_point_code); + String task_status = TaskStatusEnum.START_AND_POINT.getCode(); + PointDto nextPoint = pointService.findByCode(next_point_code); + JSONObject taskObj = new JSONObject(); + taskObj.put("task_id", task_id); + taskObj.put("task_code", IdUtil.getSnowflake(1, 1).nextId() + ""); + taskObj.put("task_type", "00"); + taskObj.put("acs_task_type", "1"); + taskObj.put("task_status", task_status); + taskObj.put("start_point_code", start_point_code); + taskObj.put("start_area", startPoint.getArea_type()); + taskObj.put("request_param", form.toJSONString()); + taskObj.put("next_point_code", next_point_code); + taskObj.put("next_area", nextPoint.getArea_type()); + taskObj.put("vehicle_code", vehicle_code); + taskObj.put("handle_class", THIS_CLASS); + taskObj.put("is_auto_issue", "1"); + taskObj.put("create_name", 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; + } - @Override - public void pullBack(String task_id) { - - } - - @Override - public void cancel(String 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/task/AutoUnLockPointTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/task/AutoUnLockPointTask.java new file mode 100644 index 0000000..2930d9c --- /dev/null +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/task/AutoUnLockPointTask.java @@ -0,0 +1,30 @@ +package org.nl.wms.sch.task; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.wql.WQL; +import org.nl.wql.core.bean.WQLObject; +import org.springframework.stereotype.Component; + +/** + * @author ldjun + * @version 1.0 + * @date 2023年04月12日 22:29 + * @desc desc + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class AutoUnLockPointTask { + public void run() { + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + JSONArray arr = WQL.getWO("QTASK_01").addParam("flag", "1").process().getResultJSONArray(0); + for (int i = 0; i < arr.size(); i++) { + JSONObject json = arr.getJSONObject(i); + json.put("lock_type", "00"); + pointTab.update(json); + } + } +} diff --git a/wms/hd/nladmin-system/src/main/resources/config/application-dev.yml b/wms/hd/nladmin-system/src/main/resources/config/application-dev.yml index 1654c34..e7b1c52 100644 --- a/wms/hd/nladmin-system/src/main/resources/config/application-dev.yml +++ b/wms/hd/nladmin-system/src/main/resources/config/application-dev.yml @@ -6,12 +6,12 @@ spring: druid: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy - #url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:jl_wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true - url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:jn_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true +# url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:jl_wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true + url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:jn_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true username: ${DB_USER:root} - #password: ${DB_PWD:P@ssw0rd} + password: ${DB_PWD:P@ssw0rd} # password: ${DB_PWD:root} - password: ${DB_PWD:123456} +# password: ${DB_PWD:Root.123456} # 初始连接数 initial-size: 5 # 最小连接数 diff --git a/wms/hd/nladmin-system/src/main/resources/config/application-prod.yml b/wms/hd/nladmin-system/src/main/resources/config/application-prod.yml index 3b6d0ec..a1e2b75 100644 --- a/wms/hd/nladmin-system/src/main/resources/config/application-prod.yml +++ b/wms/hd/nladmin-system/src/main/resources/config/application-prod.yml @@ -51,11 +51,11 @@ spring: wall: config: multi-statement-allow: true -# data: -# mongodb: -# host: 127.0.0.1 -# port: 27017 -# database: logdb + # data: + # mongodb: + # host: 127.0.0.1 + # port: 27017 + # database: logdb redis: #数据库索引 database: ${REDIS_DB:0} 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 28ee01d..ba945de 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/.env.development b/wms/qd/.env.development index 412e652..809e77f 100644 --- a/wms/qd/.env.development +++ b/wms/qd/.env.development @@ -1,8 +1,8 @@ ENV = 'development' # 接口地址 -VUE_APP_BASE_API = 'http://localhost:8012' -VUE_APP_WS_API = 'ws://localhost:8012' +VUE_APP_BASE_API = 'http://localhost:8010' +VUE_APP_WS_API = 'ws://localhost:8010' # 是否启用 babel-plugin-dynamic-import-node插件 VUE_CLI_BABEL_TRANSPILE_MODULES = true diff --git a/wms/qd/.env.production b/wms/qd/.env.production index 786bd42..4d69a14 100644 --- a/wms/qd/.env.production +++ b/wms/qd/.env.production @@ -2,6 +2,6 @@ ENV = 'production' # 如果使用 Nginx 代理后端接口,那么此处需要改为 '/',文件查看 Docker 部署篇,Nginx 配置 # 接口地址,注意协议,如果你没有配置 ssl,需要将 https 改为 http -VUE_APP_BASE_API = 'http://47.97.157.227:8010' +VUE_APP_BASE_API = 'http://localhost:8010' # 如果接口是 http 形式, wss 需要改为 ws -VUE_APP_WS_API = 'ws://47.97.157.227:8010' +VUE_APP_WS_API = 'ws://localhost:8010'