diff --git a/wms/hd/nladmin-system/pom.xml b/wms/hd/nladmin-system/pom.xml index 7e8de71..2dc19ad 100644 --- a/wms/hd/nladmin-system/pom.xml +++ b/wms/hd/nladmin-system/pom.xml @@ -18,6 +18,9 @@ 5.5.0 + + + org.reflections reflections @@ -97,6 +100,18 @@ spring-boot-starter-websocket + + org.redisson + redisson-spring-boot-starter + 3.16.4 + + + spring-boot-starter-actuator + org.springframework.boot + + + + io.jsonwebtoken diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/PointUpdateUtil.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/PointUpdateUtil.java index a858257..14fbf30 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/PointUpdateUtil.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/PointUpdateUtil.java @@ -3,57 +3,53 @@ package org.nl.wms.common; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import org.nl.exception.BadRequestException; import org.nl.modules.system.service.impl.ParamServiceImpl; import org.nl.utils.SpringContextHolder; import org.nl.wms.ext.acs.service.impl.WmsToAcsServiceImpl; -import org.nl.wql.WQL; import org.nl.wql.core.bean.WQLObject; -import org.springframework.http.HttpStatus; public class PointUpdateUtil { - public static void updatePoint(JSONArray arr) { - String isConnect = - SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("IS_CONNECT_ACS").getValue(); - if (StrUtil.equals("0", isConnect)) { - return; - } - try { - WmsToAcsServiceImpl wmsToAcsServiceImpl = new WmsToAcsServiceImpl(); - JSONObject joo = wmsToAcsServiceImpl.queryPointStatus(arr); - JSONArray pointarr = joo.getJSONArray("data"); - WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); - for (int i = 0; i < pointarr.size(); i++) { - JSONObject pointjo = pointarr.getJSONObject(i); - String mode = pointjo.getString("mode"); - String point_status = "0" + pointjo.getString("move"); - String vehicle_code = pointjo.getString("barcode"); - String device_code = pointjo.getString("device_code"); - // 物料类型 - String weight = pointjo.getString("weight"); - // 物料 - String material_code = pointjo.getString("material"); - // 将托盘类型123,改为 03,04,05,默认给01 - String pallet_type = "01"; - if (!StrUtil.equals("0", pointjo.getString("pallet_type"))) { - pallet_type = "0" + (pointjo.getIntValue("pallet_type") + 2); + public static void updatePoint(JSONArray arr) { + String isConnect = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("IS_CONNECT_ACS").getValue(); + if (StrUtil.equals("0", isConnect)) { + return; } - pointjo.put("point_status", point_status); - if (StrUtil.equals(vehicle_code, "0")) { - vehicle_code = ""; - } - JSONObject pointObj = pointTable.query("point_code ='" + device_code + "'").uniqueResult(0); - pointObj.put("vehicle_code", vehicle_code); - pointObj.put("point_status", point_status); - pointObj.put("vehicle_type", pallet_type); - pointObj.put("material_type", weight); - pointObj.put("material_code", material_code); - pointObj.put("mode", mode); - pointTable.update(pointObj); - } - } catch (Exception e) { + try { + WmsToAcsServiceImpl wmsToAcsServiceImpl = new WmsToAcsServiceImpl(); + JSONObject joo = wmsToAcsServiceImpl.queryPointStatus(arr); + JSONArray pointarr = joo.getJSONArray("data"); + WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); + for (int i = 0; i < pointarr.size(); i++) { + JSONObject pointjo = pointarr.getJSONObject(i); + String mode = pointjo.getString("mode"); + String point_status = "0" + pointjo.getString("move"); + String vehicle_code = pointjo.getString("barcode"); + String device_code = pointjo.getString("device_code"); + // 物料类型 + String weight = pointjo.getString("weight"); + // 物料 + String material_code = pointjo.getString("material"); + // 将托盘类型123,改为 03,04,05,默认给01 + String pallet_type = "01"; + if (!StrUtil.equals("0", pointjo.getString("pallet_type"))) { + pallet_type = "0" + (pointjo.getIntValue("pallet_type") + 2); + } + pointjo.put("point_status", point_status); + if (StrUtil.equals(vehicle_code, "0")) { + vehicle_code = ""; + } + JSONObject pointObj = pointTable.query("point_code ='" + device_code + "'").uniqueResult(0); + pointObj.put("vehicle_code", vehicle_code); + pointObj.put("point_status", point_status); + pointObj.put("vehicle_type", pallet_type); + pointObj.put("material_type", weight); + pointObj.put("material_code", material_code); + pointObj.put("mode", mode); + pointTable.update(pointObj); + } + } catch (Exception e) { - e.printStackTrace(); + e.printStackTrace(); + } } - } } 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 e933348..8ea2745 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 @@ -7,9 +7,8 @@ import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.google.common.collect.Interner; -import com.google.common.collect.Interners; import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.nl.common.utils.UserInfoUtil; import org.nl.exception.BadRequestException; @@ -34,13 +33,18 @@ import org.nl.wms.sch.service.dto.PointDto; import org.nl.wms.sch.service.dto.TaskDto; import org.nl.wql.WQL; import org.nl.wql.core.bean.WQLObject; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.reactive.TransactionContextManager; +import org.springframework.transaction.support.TransactionSynchronizationManager; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.TimeUnit; @Service @RequiredArgsConstructor @@ -57,17 +61,30 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { private final ToPackIngTask toPackIngTask; private final FmjToPackIngTask fmjToPackIngTask; private final VehicleService vehicleService; + @Autowired + private RedissonClient redissonClient; + @Autowired private AcsToWmsService acsToWmsService; @Override + @SneakyThrows public Map receiveTaskFromAcs(Map jsonObject) { String type = (String) jsonObject.get("type"); - Interner pool = Interners.newWeakInterner(); - synchronized (pool.intern(type)) { - return acsToWmsService.receiveTaskFromAcsTrancs(jsonObject); + RLock lock = redissonClient.getLock("acs_to_wms:" + type); + boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS); + try { + if (tryLock) { + return acsToWmsService.receiveTaskFromAcsTrancs(jsonObject); + } + } finally { + if (tryLock) { + lock.unlock(); + } } + + return null; } @Override @@ -96,24 +113,15 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { 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"); + 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 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")); + String vehicle_type = vehicleService.getVehicleType(materiralObj1.getString("vehicle_type")); JSONObject jsonObject1 = new JSONObject(); JSONArray array = new JSONArray(); jsonObject1.put("device_code", "RGV2"); @@ -129,10 +137,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { 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); + 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")) { @@ -148,9 +153,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { if (StrUtil.isEmpty(vehicle_code)) { throw new BadRequestException("载具不能为空!"); } - JSONObject vehicleObj = WQLObject.getWQLObject("st_buss_vehiclegroup") - .query("vehicle_code='" + vehicle_code + "'", "create_time desc") - .uniqueResult(0); + JSONObject vehicleObj = WQLObject.getWQLObject("st_buss_vehiclegroup").query("vehicle_code='" + vehicle_code + "'", "create_time desc").uniqueResult(0); if (ObjectUtil.isEmpty(vehicleObj)) { throw new BadRequestException("为找到载具号为'" + vehicle_code + "'的组盘信息!"); } @@ -166,21 +169,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { 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); + 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); + 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); @@ -209,25 +204,15 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } // 假如是分拣机械手的下料位置,并且是满托,则去包装线 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"); + 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); + 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")); + String vehicle_type = vehicleService.getVehicleType(vehicleObj.getString("vehicle_type")); JSONObject jsonObject1 = new JSONObject(); JSONArray array = new JSONArray(); jsonObject1.put("device_code", "RGV2"); @@ -245,11 +230,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { // 假如是分拣机械手的下料位置,则需要将点位上的托盘号写入 if (StrUtil.equals(area_type, AreaEnum.FJQY.getCode())) { - String vehicle_code = - pointTable - .query("point_code ='" + device_code + "'") - .uniqueResult(0) - .getString("vehicle_code"); + 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)); @@ -260,7 +241,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { 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); @@ -285,12 +265,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { 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")) { + 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")) { + if (StrUtil.equals(device_code, "FJJXSSLW301") || StrUtil.equals(device_code, "FJJXSSLW302")) { is_full = "2"; } jsonObject.put("is_full", is_full); @@ -298,6 +276,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { // 批次 物料,客户要从排产单里面去取 jsonObject.put("material_id", produceInfoByCode.getString("material_id")); callMaterialTask.createTask((JSONObject) JSON.toJSON(jsonObject)); + break; case "3": @@ -311,12 +290,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { // 如果是叠盘位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); + 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 { @@ -330,14 +304,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { 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); + 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)) { // 如果有库存,则出半满托盘 // 叫料出库 @@ -351,12 +318,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { break; } // 需要更新覆膜机的托盘类型 - JSONArray pointarr = - WQL.getWO("ACSTOMES_001") - .addParam("area_type", "05") - .addParam("flag", "4") - .process() - .getResultJSONArray(0); + JSONArray pointarr = WQL.getWO("ACSTOMES_001").addParam("area_type", "05").addParam("flag", "4").process().getResultJSONArray(0); PointUpdateUtil.updatePoint(pointarr); } if (ObjectUtil.isEmpty(produceInfoByCode)) { @@ -364,12 +326,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } jsonObject.put("vehicle_type", produceInfoByCode.getString("vehicle_type")); // 需要更新堆叠位的点位状态 - JSONArray pointarr = - WQL.getWO("ACSTOMES_001") - .addParam("point_code", "KTPDDW5") - .addParam("flag", "4") - .process() - .getResultJSONArray(0); + 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)); @@ -379,10 +336,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { 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); + 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()); @@ -394,21 +348,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { // 更新所有设备的点位的状态 // 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); + 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"); + 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 { @@ -459,15 +404,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { 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 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")); @@ -598,9 +536,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } 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) @@ -619,10 +554,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String start_area = taskobj.getString("start_area"); JSONObject requestParam = taskobj.getJSONObject("request_param"); if ("22".equals(start_area)) { - JSONObject materialObj = - WQLObject.getWQLObject("MD_ME_Material") - .query("material_id='" + requestParam.getString("material_id") + "'") - .uniqueResult(0); + JSONObject materialObj =WQLObject.getWQLObject("MD_ME_Material").query("material_id='" + requestParam.getString("material_id") + "'").uniqueResult(0); groupObj.put("material_code", materialObj.getString("material_code")); groupObj.put("material_name", materialObj.getString("material_name")); groupObj.put("material_spec", materialObj.getString("material_spec")); @@ -1169,16 +1101,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { public static JSONObject getProduceInfoByCode(String code) { // 根据 设备点位去找生产任务信息 // 1 根据点位去找设备,去找对应的设备信息 - JSONObject pointObj = - WQLObject.getWQLObject("sch_base_point") - .query("point_code ='" + code + "'") - .uniqueResult(0); + 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); + 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 + "'的生产任务!"); } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/ProducetaskServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/ProducetaskServiceImpl.java index 0668987..eba8e5c 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/ProducetaskServiceImpl.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/ProducetaskServiceImpl.java @@ -332,26 +332,18 @@ public class ProducetaskServiceImpl implements ProducetaskService { if (StrUtil.equals(dto.getDevice_code(), "FJJXS1") || StrUtil.equals("FJJXS2", dto.getDevice_code()) || StrUtil.equals("FJJXS3", dto.getDevice_code())) { - taskObj = - WQL.getWO("PDM_ProduceTask_01") - .addParam("flag", "3") - .addParam("producetask_id", producetask_id) - .process() - .uniqueResult(0); + taskObj = WQL.getWO("PDM_ProduceTask_01").addParam("flag", "3").addParam("producetask_id", producetask_id).process().uniqueResult(0); + + String material_code = taskObj.getString("material_code"); + String product_code = taskObj.getString("product_code"); + if (ObjectUtil.isEmpty(product_code)) { + throw new BadRequestException("物料【"+material_code+"】的垛形参数未设置!"); + } } else { - taskObj = - WQL.getWO("PDM_ProduceTask_01") - .addParam("flag", "4") - .addParam("producetask_id", producetask_id) - .process() - .uniqueResult(0); - } - String product_code = taskObj.getString("product_code"); - String material_code = taskObj.getString("material_code"); - if (ObjectUtil.isEmpty(product_code)) { - throw new BadRequestException("物料【"+material_code+"】的垛形参数未设置!"); + taskObj = WQL.getWO("PDM_ProduceTask_01").addParam("flag", "4").addParam("producetask_id", producetask_id).process().uniqueResult(0); } + taskObj.put("product_type", "wms"); WmsToAcsService wmsToAcsService = SpringContextHolder.getBean(WmsToAcsService.class); JSONArray arr = new JSONArray(); 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 96a2625..57ecfb5 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 @@ -32,343 +32,303 @@ import java.util.HashMap; */ @Service public class CallEmptyVehicleTask extends AbstractAcsTask { - private final String THIS_CLASS = CallEmptyVehicleTask.class.getName(); + private final String THIS_CLASS = CallEmptyVehicleTask.class.getName(); - @Override - public void updateTaskStatus(JSONObject taskObj, String status) { - /** 改变任务状态 */ - String task_id = taskObj.getString("task_id"); - WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); - JSONObject jsonTask = taskTab.query("task_id='" + task_id + "'").uniqueResult(0); - if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { - // 更新任务状态为执行中 - jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); - jsonTask.put("update_time", DateUtil.now()); - taskTab.update(jsonTask); - HashMap map = new HashMap(); - map.put("bill_status", "40"); - WQLObject.getWQLObject("st_buss_EmptyVehicleRecord") - .update(map, "task_uuid='" + jsonTask.getString("task_id") + "'"); + @Override + public void updateTaskStatus(JSONObject taskObj, String status) { + /** 改变任务状态 */ + String task_id = taskObj.getString("task_id"); + WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); + JSONObject jsonTask = taskTab.query("task_id='" + task_id + "'").uniqueResult(0); + if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { + // 更新任务状态为执行中 + jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); + jsonTask.put("update_time", DateUtil.now()); + taskTab.update(jsonTask); + HashMap map = new HashMap(); + map.put("bill_status", "40"); + WQLObject.getWQLObject("st_buss_EmptyVehicleRecord") + .update(map, "task_uuid='" + jsonTask.getString("task_id") + "'"); + } + + if (TaskStatusEnum.FINISHED.getCode().equals(status)) { + // 更新任务状态为完成 + jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode()); + jsonTask.put("taskfinish_mode", taskObj.getString("taskfinish_mode")); + jsonTask.put("update_time", DateUtil.now()); + jsonTask.put("remark", "任务执行完成"); + /// 审核单据 + HashMap map = new HashMap(); + map.put("bill_status", "50"); + WQLObject.getWQLObject("st_buss_EmptyVehicleRecord") + .update(map, "task_uuid='" + jsonTask.getString("task_id") + "'"); + // 解锁仓位,托盘信息,回写到点位上去 + String vehicle_code = jsonTask.getString("vehicle_code"); + // 插入刚托盘木托盘表 + String point_code = jsonTask.getString("next_point_code"); + String area_type = WQLObject.getWQLObject("sch_base_point").query("point_code='" + point_code + "'").uniqueResult(0).getString("area_type"); + if (StrUtil.equals(area_type, AreaEnum.FJQY.getCode())) { + JSONObject jo = new JSONObject(); + jo.put("device_code", point_code); + jo.put("vehicle_code", vehicle_code); + SortingUtil.record(jo); + } + + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + JSONObject endpointObj = pointTab.query("point_code='" + jsonTask.getString("next_point_code") + "'").uniqueResult(0); + endpointObj.put("lock_type", "00"); + endpointObj.put("point_status", "01"); + endpointObj.put("vehicle_code", vehicle_code); + endpointObj.put("update_time", DateUtil.now()); + 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", ""); + startPointObj.put("update_time", DateUtil.now()); + pointTab.update(startPointObj); + taskTab.update(jsonTask); + } } - if (TaskStatusEnum.FINISHED.getCode().equals(status)) { - // 更新任务状态为完成 - jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode()); - jsonTask.put("taskfinish_mode", taskObj.getString("taskfinish_mode")); - jsonTask.put("update_time", DateUtil.now()); - jsonTask.put("remark", "任务执行完成"); - /// 审核单据 - HashMap map = new HashMap(); - map.put("bill_status", "50"); - WQLObject.getWQLObject("st_buss_EmptyVehicleRecord") - .update(map, "task_uuid='" + jsonTask.getString("task_id") + "'"); - // 解锁仓位,托盘信息,回写到点位上去 - String vehicle_code = jsonTask.getString("vehicle_code"); - // 插入刚托盘木托盘表 - String point_code = jsonTask.getString("next_point_code"); - String area_type = - WQLObject.getWQLObject("sch_base_point") - .query("point_code='" + point_code + "'") - .uniqueResult(0) - .getString("area_type"); - if (StrUtil.equals(area_type, AreaEnum.FJQY.getCode())) { - JSONObject jo = new JSONObject(); - jo.put("device_code", point_code); - jo.put("vehicle_code", vehicle_code); - SortingUtil.record(jo); - } + @Override + public void findStartPoint() { + String task_status = TaskStatusEnum.SURE_END.getCode(); + WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); + JSONArray taskArry = taskTab.query("task_status='" + task_status + "' AND handle_class='" + THIS_CLASS + "' AND is_delete='0' ").getResultJSONArray(0); + for (int i = 0; i < taskArry.size(); i++) { + JSONObject taskObj = taskArry.getJSONObject(i); + String task_id = taskObj.getString("task_id"); + String next_point_code = taskObj.getString("next_point_code"); + // 找一个合适的仓位 + WQLObject Recordtable = WQLObject.getWQLObject("sch_base_task"); + JSONObject IosObj = + Recordtable.query("task_id='" + task_id + "' and is_delete ='0'").uniqueResult(0); + if (ObjectUtil.isEmpty(IosObj)) { + throw new BadRequestException("未找到任务号为'" + taskObj.getString("task_code") + "'的单据!"); + } + JSONObject param = new JSONObject(); + param.put("area_type", IosObj.getString("end_area")); + param.put("vehicle_code", IosObj.getString("vehicle_code")); + JSONObject inStructObj = StructFindUtil.getEmptyVehicleInStruct(param); + if (ObjectUtil.isEmpty(inStructObj)) { + throw new BadRequestException("未找到合适的仓位!"); + } + JSONObject workInfo = WQL.getWO("QSTRUCT_RULE").addParam("flag", "1").addParam("code", next_point_code).process().uniqueResult(0); + String workprocedure_id = workInfo.getString("workprocedure_id"); + WorkProcedureEnum workProcedureEnum = WorkProcedureEnum.get(workprocedure_id); + String start_area = ""; + String vehicle_type = ""; + switch (workProcedureEnum) { - 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); - endpointObj.put("update_time", DateUtil.now()); - 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", ""); - startPointObj.put("update_time", DateUtil.now()); - pointTab.update(startPointObj); - taskTab.update(jsonTask); + // 压制工序 + case YZGX: + vehicle_type = VehicleTypeEnum.GTP.getCode(); + start_area = AreaEnum.KTTDDQ.getCode(); + + // 分拣工序 + case FJGX: + vehicle_type = VehicleTypeEnum.MTP.getCode(); + start_area = AreaEnum.MTPQ.getCode(); + default: + vehicle_type = VehicleTypeEnum.LZ.getCode(); + start_area = AreaEnum.KTTDDQ.getCode(); + } + // 寻找一个合适的仓位 + JSONObject outStructObj = StructFindUtil.getEmptyVehicleOutStruct(param); + if (ObjectUtil.isEmpty(outStructObj)) { + continue; + } + String start_point_code = outStructObj.getString("struct_code"); + String vehicle_code = outStructObj.getString("vehicle_code"); + // 修改单据状态,将终点填入 + IosObj.put("bill_status", "20"); + IosObj.put("start_point_code", start_point_code); + IosObj.put("vehicle_code", vehicle_code); + IosObj.put("start_area", start_area); + Recordtable.update(IosObj); + + // 起点加锁 + HashMap lock_map = new HashMap(); + lock_map.put("lock_type", "01"); + WQLObject.getWQLObject("sch_base_point").update(lock_map, "point_code = '" + start_point_code + "'"); + // 修改任务状态 + taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); + taskObj.put("update_optid", UserInfoUtil.getCurrentUserId()); + taskObj.put("update_optname", UserInfoUtil.getNickName()); + taskObj.put("update_time", DateUtil.now()); + return; + } } - } - @Override - public void findStartPoint() { - String task_status = TaskStatusEnum.SURE_END.getCode(); - WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); - JSONArray taskArry = - taskTab.query( - "task_status='" - + task_status - + "' AND handle_class='" - + THIS_CLASS - + "' AND is_delete='0' ") - .getResultJSONArray(0); - for (int i = 0; i < taskArry.size(); i++) { - JSONObject taskObj = taskArry.getJSONObject(i); - String task_id = taskObj.getString("task_id"); - String next_point_code = taskObj.getString("next_point_code"); - // 找一个合适的仓位 - WQLObject Recordtable = WQLObject.getWQLObject("sch_base_task"); - JSONObject IosObj = - Recordtable.query("task_id='" + task_id + "' and is_delete ='0'").uniqueResult(0); - if (ObjectUtil.isEmpty(IosObj)) { - throw new BadRequestException("未找到任务号为'" + taskObj.getString("task_code") + "'的单据!"); - } - JSONObject param = new JSONObject(); - param.put("area_type", IosObj.getString("end_area")); - param.put("vehicle_code", IosObj.getString("vehicle_code")); - JSONObject inStructObj = StructFindUtil.getEmptyVehicleInStruct(param); - if (ObjectUtil.isEmpty(inStructObj)) { - throw new BadRequestException("未找到合适的仓位!"); - } - JSONObject workInfo = - WQL.getWO("QSTRUCT_RULE") - .addParam("flag", "1") - .addParam("code", next_point_code) - .process() - .uniqueResult(0); - String workprocedure_code = workInfo.getString("workInfo"); - String workprocedure_id = workInfo.getString("workprocedure_id"); - WorkProcedureEnum workProcedureEnum = WorkProcedureEnum.get(workprocedure_id); - String start_area = ""; - String vehicle_type = ""; - switch (workProcedureEnum) { - - // 压制工序 - case YZGX: - vehicle_type = VehicleTypeEnum.GTP.getCode(); - start_area = AreaEnum.KTTDDQ.getCode(); - - // 分拣工序 - case FJGX: - vehicle_type = VehicleTypeEnum.MTP.getCode(); - start_area = AreaEnum.MTPQ.getCode(); - default: - vehicle_type = VehicleTypeEnum.LZ.getCode(); - start_area = AreaEnum.KTTDDQ.getCode(); - } - // 寻找一个合适的仓位 - JSONObject outStructObj = StructFindUtil.getEmptyVehicleOutStruct(param); - if (ObjectUtil.isEmpty(outStructObj)) { - continue; - } - String start_point_code = outStructObj.getString("struct_code"); - String vehicle_code = outStructObj.getString("vehicle_code"); - // 修改单据状态,将终点填入 - IosObj.put("bill_status", "20"); - IosObj.put("start_point_code", start_point_code); - IosObj.put("vehicle_code", vehicle_code); - IosObj.put("start_area", start_area); - Recordtable.update(IosObj); - - // 起点加锁 - HashMap lock_map = new HashMap(); - lock_map.put("lock_type", "01"); - WQLObject.getWQLObject("sch_base_point") - .update(lock_map, "point_code = '" + start_point_code + "'"); - // 修改任务状态 - taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); - taskObj.put("update_optid", UserInfoUtil.getCurrentUserId()); - taskObj.put("update_optname", UserInfoUtil.getNickName()); - taskObj.put("update_time", DateUtil.now()); - return; + @Override + public void findNextPoint() { } - } - @Override - public void findNextPoint() {} - - @Override - public JSONObject renotifyAcs(String task_id) { - return super.renotifyAcs(task_id); - } - - @Override - public String createTask(JSONObject form) { - // 请求参数 终点不能为空 起点点位为空时,托盘类型不能为空,托盘不能为空! - String next_point_code = form.getString("next_point_code"); - // 默认给一个测试托盘 - String vehicle_code = "999"; - String is_auto_issue = "1"; - if (StrUtil.isEmpty(next_point_code)) { - throw new BadRequestException("终点不能为空!"); + @Override + public JSONObject renotifyAcs(String task_id) { + return super.renotifyAcs(task_id); } - String start_point_code = form.getString("start_point_code"); - String vehicle_type = form.getString("vehicle_type"); - WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); - // 判断起点有没有未完成的指令 - JSONObject beforTaskObj = - taskTable - .query( - "is_delete='0' and next_point_code='" - + next_point_code - + "' and task_status <>'" - + TaskStatusEnum.FINISHED.getCode() - + "'") - .uniqueResult(0); - if (ObjectUtil.isNotEmpty(beforTaskObj)) { - throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!"); + + @Override + public String createTask(JSONObject form) { + // 请求参数 终点不能为空 起点点位为空时,托盘类型不能为空,托盘不能为空! + String next_point_code = form.getString("next_point_code"); + // 默认给一个测试托盘 + String vehicle_code = "999"; + String is_auto_issue = "1"; + if (StrUtil.isEmpty(next_point_code)) { + throw new BadRequestException("终点不能为空!"); + } + String start_point_code = form.getString("start_point_code"); + String vehicle_type = form.getString("vehicle_type"); + WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); + // 判断起点有没有未完成的指令 + JSONObject beforTaskObj = taskTable.query("is_delete='0' and next_point_code='" + next_point_code + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(beforTaskObj)) { + throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!"); + } + String start_area = ""; + // 假如起点为空,根据终点点去找对应工序需要的托盘类型 + if (StrUtil.isEmpty(start_point_code)) { + JSONObject workInfo = WQL.getWO("QSTRUCT_RULE").addParam("flag", "1").addParam("code", next_point_code).process().uniqueResult(0); + String workprocedure_id = workInfo.getString("workprocedure_id"); + String device_id = workInfo.getString("device_id"); + WorkProcedureEnum workProcedureEnum = WorkProcedureEnum.get(workprocedure_id); + switch (workProcedureEnum) { + // 压制工序 + case YZGX: + vehicle_type = VehicleTypeEnum.GTP.getCode(); + start_area = AreaEnum.KTTDDQ.getCode(); + start_point_code = "KTPDDW5"; + break; + // 分拣工序 + case FJGX: + // 托盘类型取的物料对应的木托盘类型 + JSONObject produceObj = WQLObject.getWQLObject("PDM_MG_produceTask").query("device_id='" + device_id + "' and producetask_status in('02','03','04')").uniqueResult(0); + if (ObjectUtil.isEmpty(produceObj)) + throw new BadRequestException("设备未设置工单或者工单状态不正确,请检查LMS设备工单状态!"); + vehicle_type = produceObj.getString("vehicle_type"); + start_area = AreaEnum.MTPQ.getCode(); + is_auto_issue = "0"; + break; + // 叠盘工序 + case DPGX: + // 托盘类型取的物料对应的木托盘类型 + vehicle_type = VehicleTypeEnum.GTP.getCode(); + start_area = AreaEnum.KTTHCQ.getCode(); + break; + default: + vehicle_type = VehicleTypeEnum.GTP.getCode(); + start_area = AreaEnum.KTTHCQ.getCode(); + } + JSONObject param = new JSONObject(); + // 如果托盘类型不是02,则需要加上托盘类型(木托盘) + if (!StrUtil.equals(vehicle_type, "02")) { + param.put("vehicle_type", vehicle_type); + } + param.put("area_type", start_area); + param.put("point_code", start_point_code); + + JSONObject outStructObj = StructFindUtil.getEmptyVehicleOutStruct(param); + if (ObjectUtil.isEmpty(outStructObj)) { + throw new BadRequestException("未找到合适的空托盘点位"); + } + + vehicle_code = outStructObj.getString("vehicle_code"); + if (StrUtil.isEmpty(vehicle_code)) { + vehicle_code = "999"; + } + // 如果是托盘区域/生成一个该类型的托盘 + if (StrUtil.equals(workInfo.getString("area_type"), AreaEnum.FJQY.getCode())) { + vehicle_code = CodeUtil.getNewCode("VEHICCLE_CODE_MTP"); + // 将托盘插入托盘表 + WQLObject wo = WQLObject.getWQLObject("MD_PB_Vehicle"); + JSONObject jo = new JSONObject(); + VehicleDto dto = new VehicleDto(); + dto.setVehicle_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setVehicle_code(vehicle_code); + dto.setCreate_id(UserInfoUtil.getCurrentUserId()); + dto.setVehicle_name(vehicle_code); + dto.setCreate_name(UserInfoUtil.getNickName()); + dto.setUpdate_optid(UserInfoUtil.getCurrentUserId()); + dto.setUpdate_optname(UserInfoUtil.getNickName()); + dto.setUpdate_time(DateUtil.now()); + dto.setCreate_time(DateUtil.now()); + dto.setVehicle_type(vehicle_type); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + wo.insert(json); + } + + start_point_code = outStructObj.getString("struct_code"); + } + PointService pointService = SpringContextHolder.getBean(PointService.class); + PointDto nextPoint = pointService.findByCode(next_point_code); + // 生成空托盘搬运的单据 + String task_status = TaskStatusEnum.SURE_END.getCode(); + String bill_status = "10"; + if (StrUtil.isNotEmpty(start_point_code)) { + // PointDto startPoint = pointService.findByCode(start_point_code); + bill_status = "20"; + task_status = TaskStatusEnum.START_AND_POINT.getCode(); + // 锁定起点 + HashMap lock_map = new HashMap(); + lock_map.put("lock_type", "01"); + WQLObject.getWQLObject("sch_base_point") + .update(lock_map, "point_code = '" + start_point_code + "'"); + } + String task_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + // 生成空载具搬运单据 + JSONObject EmptyVehicleObj = new JSONObject(); + EmptyVehicleObj.put("record_uuid", IdUtil.getSnowflake(1, 1).nextId()); + EmptyVehicleObj.put("bill_code", CodeUtil.getNewCode("KZJ_BILL_CODE")); + EmptyVehicleObj.put("bill_status", bill_status); + EmptyVehicleObj.put("start_point_code", start_point_code); + EmptyVehicleObj.put("next_point_code", next_point_code); + EmptyVehicleObj.put("start_area", start_area); + EmptyVehicleObj.put("end_area", nextPoint.getArea_type()); + EmptyVehicleObj.put("vehicle_code", vehicle_code); + EmptyVehicleObj.put("task_uuid", task_id); + EmptyVehicleObj.put("create_id", UserInfoUtil.getCurrentUserId()); + EmptyVehicleObj.put("create_name", UserInfoUtil.getNickName()); + EmptyVehicleObj.put("create_time", DateUtil.now()); + EmptyVehicleObj.put("is_delete", "0"); + WQLObject.getWQLObject("st_buss_EmptyVehicleRecord").insert(EmptyVehicleObj); + // 生成任务 + JSONObject taskObj = new JSONObject(); + taskObj.put("task_id", task_id); + taskObj.put("task_code", IdUtil.getSnowflake(1, 1).nextId() + ""); + taskObj.put("task_type", "03"); + taskObj.put("acs_task_type", "1"); + taskObj.put("task_status", task_status); + taskObj.put("start_point_code", start_point_code); + taskObj.put("start_area", start_area); + taskObj.put("request_param", form.toJSONString()); + taskObj.put("next_point_code", next_point_code); + taskObj.put("next_area", nextPoint.getArea_type()); + taskObj.put("vehicle_code", vehicle_code); + taskObj.put("handle_class", THIS_CLASS); + taskObj.put("is_auto_issue", is_auto_issue); + taskObj.put("create_name", UserInfoUtil.getNickName()); + taskObj.put("create_id", UserInfoUtil.getCurrentUserId()); + taskObj.put("create_time", DateUtil.now()); + taskObj.put("is_delete", "0"); + taskTable.insert(taskObj); + + return task_id; } - String start_area = ""; - // 假如起点为空,根据终点点去找对应工序需要的托盘类型 - if (StrUtil.isEmpty(start_point_code)) { - JSONObject workInfo = - WQL.getWO("QSTRUCT_RULE") - .addParam("flag", "1") - .addParam("code", next_point_code) - .process() - .uniqueResult(0); - String workprocedure_id = workInfo.getString("workprocedure_id"); - String device_id = workInfo.getString("device_id"); - WorkProcedureEnum workProcedureEnum = WorkProcedureEnum.get(workprocedure_id); - switch (workProcedureEnum) { - // 压制工序 - case YZGX: - vehicle_type = VehicleTypeEnum.GTP.getCode(); - start_area = AreaEnum.KTTDDQ.getCode(); - start_point_code = "KTPDDW5"; - break; - // 分拣工序 - case FJGX: - // 托盘类型取的物料对应的木托盘类型 - JSONObject produceObj = - WQLObject.getWQLObject("PDM_MG_produceTask") - .query("device_id='" + device_id + "' and producetask_status in('02','03','04')") - .uniqueResult(0); - if (ObjectUtil.isEmpty(produceObj)) - throw new BadRequestException("设备未设置工单或者工单状态不正确,请检查LMS设备工单状态!"); - vehicle_type = produceObj.getString("vehicle_type"); - start_area = AreaEnum.MTPQ.getCode(); - is_auto_issue = "0"; - break; - // 叠盘工序 - case DPGX: - // 托盘类型取的物料对应的木托盘类型 - vehicle_type = VehicleTypeEnum.GTP.getCode(); - start_area = AreaEnum.KTTHCQ.getCode(); - break; - default: - vehicle_type = VehicleTypeEnum.GTP.getCode(); - start_area = AreaEnum.KTTHCQ.getCode(); - } - JSONObject param = new JSONObject(); - // 如果托盘类型不是02,则需要加上托盘类型(木托盘) - if (!StrUtil.equals(vehicle_type, "02")) { - param.put("vehicle_type", vehicle_type); - } - param.put("area_type", start_area); - param.put("point_code", start_point_code); - JSONObject outStructObj = StructFindUtil.getEmptyVehicleOutStruct(param); - if (ObjectUtil.isEmpty(outStructObj)) { - throw new BadRequestException("未找到合适的空托盘点位"); - } - - vehicle_code = outStructObj.getString("vehicle_code"); - if (StrUtil.isEmpty(vehicle_code)) { - vehicle_code = "999"; - } - // 如果是托盘区域/生成一个该类型的托盘 - if (StrUtil.equals(workInfo.getString("area_type"), AreaEnum.FJQY.getCode())) { - vehicle_code = CodeUtil.getNewCode("VEHICCLE_CODE_MTP"); - // 将托盘插入托盘表 - WQLObject wo = WQLObject.getWQLObject("MD_PB_Vehicle"); - JSONObject jo = new JSONObject(); - VehicleDto dto = new VehicleDto(); - dto.setVehicle_id(IdUtil.getSnowflake(1, 1).nextId()); - dto.setVehicle_code(vehicle_code); - dto.setCreate_id(UserInfoUtil.getCurrentUserId()); - dto.setVehicle_name(vehicle_code); - dto.setCreate_name(UserInfoUtil.getNickName()); - dto.setUpdate_optid(UserInfoUtil.getCurrentUserId()); - dto.setUpdate_optname(UserInfoUtil.getNickName()); - dto.setUpdate_time(DateUtil.now()); - dto.setCreate_time(DateUtil.now()); - dto.setVehicle_type(vehicle_type); - JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); - wo.insert(json); - } - - start_point_code = outStructObj.getString("struct_code"); + @Override + public void forceFinish(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); } - PointService pointService = SpringContextHolder.getBean(PointService.class); - PointDto nextPoint = pointService.findByCode(next_point_code); - // 生成空托盘搬运的单据 - String task_status = TaskStatusEnum.SURE_END.getCode(); - String bill_status = "10"; - if (StrUtil.isNotEmpty(start_point_code)) { - // PointDto startPoint = pointService.findByCode(start_point_code); - bill_status = "20"; - task_status = TaskStatusEnum.START_AND_POINT.getCode(); - // 锁定起点 - HashMap lock_map = new HashMap(); - lock_map.put("lock_type", "01"); - WQLObject.getWQLObject("sch_base_point") - .update(lock_map, "point_code = '" + start_point_code + "'"); + + @Override + public void pullBack(String task_id) { } - String task_id = IdUtil.getSnowflake(1, 1).nextId() + ""; - // 生成空载具搬运单据 - JSONObject EmptyVehicleObj = new JSONObject(); - EmptyVehicleObj.put("record_uuid", IdUtil.getSnowflake(1, 1).nextId()); - EmptyVehicleObj.put("bill_code", CodeUtil.getNewCode("KZJ_BILL_CODE")); - EmptyVehicleObj.put("bill_status", bill_status); - EmptyVehicleObj.put("start_point_code", start_point_code); - EmptyVehicleObj.put("next_point_code", next_point_code); - EmptyVehicleObj.put("start_area", start_area); - EmptyVehicleObj.put("end_area", nextPoint.getArea_type()); - EmptyVehicleObj.put("vehicle_code", vehicle_code); - EmptyVehicleObj.put("task_uuid", task_id); - EmptyVehicleObj.put("create_id", UserInfoUtil.getCurrentUserId()); - EmptyVehicleObj.put("create_name", UserInfoUtil.getNickName()); - EmptyVehicleObj.put("create_time", DateUtil.now()); - EmptyVehicleObj.put("is_delete", "0"); - WQLObject.getWQLObject("st_buss_EmptyVehicleRecord").insert(EmptyVehicleObj); - // 生成任务 - JSONObject taskObj = new JSONObject(); - taskObj.put("task_id", task_id); - taskObj.put("task_code", IdUtil.getSnowflake(1, 1).nextId() + ""); - taskObj.put("task_type", "03"); - taskObj.put("acs_task_type", "1"); - taskObj.put("task_status", task_status); - taskObj.put("start_point_code", start_point_code); - taskObj.put("start_area", start_area); - taskObj.put("request_param", form.toJSONString()); - taskObj.put("next_point_code", next_point_code); - taskObj.put("next_area", nextPoint.getArea_type()); - taskObj.put("vehicle_code", vehicle_code); - taskObj.put("handle_class", THIS_CLASS); - taskObj.put("is_auto_issue", is_auto_issue); - taskObj.put("create_name", UserInfoUtil.getNickName()); - taskObj.put("create_id", UserInfoUtil.getCurrentUserId()); - taskObj.put("create_time", DateUtil.now()); - taskObj.put("is_delete", "0"); - taskTable.insert(taskObj); - return task_id; - } - - @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) {} + @Override + public void cancel(String task_id) { + } } 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 2e021c3..cb42d8b 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 @@ -33,510 +33,415 @@ import java.util.HashMap; @Service public class CallMaterialTask extends AbstractAcsTask { - private final String THIS_CLASS = CallMaterialTask.class.getName(); + private final String THIS_CLASS = CallMaterialTask.class.getName(); - @Override - public void updateTaskStatus(JSONObject taskObj, String status) { - /** 改变任务状态 */ - String task_id = taskObj.getString("task_id"); - WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); - JSONObject jsonTask = taskTab.query("task_id='" + task_id + "'").uniqueResult(0); - if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { - // 更新任务状态为执行中 - jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); - jsonTask.put("update_time", DateUtil.now()); - taskTab.update(jsonTask); - HashMap map = new HashMap(); - map.put("bill_status", "40"); - map.put("update_optid", UserInfoUtil.getCurrentUserId()); - map.put("update_optname", UserInfoUtil.getNickName()); - map.put("update_time", DateUtil.now()); - WQLObject.getWQLObject("ST_IVT_workProcedureIOS") - .update(map, "task_id='" + jsonTask.getString("task_id") + "'"); - } - - if (TaskStatusEnum.FINISHED.getCode().equals(status)) { - // 更新任务状态为完成 - jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode()); - jsonTask.put("taskfinish_mode", taskObj.getString("taskfinish_mode")); - jsonTask.put("update_time", DateUtil.now()); - jsonTask.put("remark", "任务执行完成"); - /// 审核单据 增加库存 改变出入库表的状态 - WQLObject mstTab = WQLObject.getWQLObject("ST_IVT_workProcedureIOS"); - JSONObject mstObj = - mstTab.query("task_id='" + task_id + "' and is_delete='0'").uniqueResult(0); - // 审核 加库存可和用数量 - StoreIvtServiceImpl ivtService = new StoreIvtServiceImpl(); - mstObj.put("bill_status", "50"); - mstObj.put("confirm_optid", 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("ivt_workprocedure_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); - } - Long point_id = startPointDto.getPoint_id(); - param.put("struct_id", point_id); - ivtService.addIvtFlow(param, IvtChangeTypeEnum.SUB_IVT); - // 解锁仓位,托盘信息,回写到点位上去 - 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); - endpointObj.put("update_time", DateUtil.now()); - pointTab.update(endpointObj); - - //// 如果终点是分拣区域,则更新木托盘铁托盘记录表 - String next_area = nextPointDto.getArea_type(); - if (StrUtil.equals(next_area, AreaEnum.FJQY.getCode())) { - // 如果是下料料位置 托盘则是木托盘 - if (StrUtil.equals(next_point_code, "FJJXSXLW201") - || StrUtil.equals(next_point_code, "FJJXSXLW202") - || StrUtil.equals(next_point_code, "FJJXSXLW301") - || StrUtil.equals(next_point_code, "FJJXSXLW302")) { - JSONObject jo = new JSONObject(); - jo.put("device_code", next_point_code); - jo.put("vehicle_code", vehicle_code); - SortingUtil.record(jo); + @Override + public void updateTaskStatus(JSONObject taskObj, String status) { + /** 改变任务状态 */ + String task_id = taskObj.getString("task_id"); + WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); + JSONObject jsonTask = taskTab.query("task_id='" + task_id + "'").uniqueResult(0); + if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { + // 更新任务状态为执行中 + jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); + jsonTask.put("update_time", DateUtil.now()); + taskTab.update(jsonTask); + HashMap map = new HashMap(); + map.put("bill_status", "40"); + map.put("update_optid", UserInfoUtil.getCurrentUserId()); + map.put("update_optname", UserInfoUtil.getNickName()); + map.put("update_time", DateUtil.now()); + WQLObject.getWQLObject("ST_IVT_workProcedureIOS") + .update(map, "task_id='" + jsonTask.getString("task_id") + "'"); } - // 如果是上料位置 则需要去找点位记录表上的托盘记录 - else { - String flag = "8"; - if (StrUtil.equals(next_point_code, "FJJXSSLW101") - || StrUtil.equals(next_point_code, "FJJXSSLW102")) { - flag = "7"; - } - JSONArray paramArr = - WQL.getWO("ACSTOMES_001").addParam("flag", flag).process().getResultJSONArray(0); - for (int i = 0; i < paramArr.size(); i++) { - JSONObject jo = paramArr.getJSONObject(i); - SortingUtil.record(jo); - } + + if (TaskStatusEnum.FINISHED.getCode().equals(status)) { + // 更新任务状态为完成 + jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode()); + jsonTask.put("taskfinish_mode", taskObj.getString("taskfinish_mode")); + jsonTask.put("update_time", DateUtil.now()); + jsonTask.put("remark", "任务执行完成"); + /// 审核单据 增加库存 改变出入库表的状态 + WQLObject mstTab = WQLObject.getWQLObject("ST_IVT_workProcedureIOS"); + JSONObject mstObj = + mstTab.query("task_id='" + task_id + "' and is_delete='0'").uniqueResult(0); + // 审核 加库存可和用数量 + StoreIvtServiceImpl ivtService = new StoreIvtServiceImpl(); + mstObj.put("bill_status", "50"); + mstObj.put("confirm_optid", 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("ivt_workprocedure_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); + } + Long point_id = startPointDto.getPoint_id(); + try { + param.put("struct_id", point_id); + ivtService.addIvtFlow(param, IvtChangeTypeEnum.SUB_IVT); + } catch (Exception e) { + e.printStackTrace(); + } + + // 解锁仓位,托盘信息,回写到点位上去 + 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); + endpointObj.put("update_time", DateUtil.now()); + pointTab.update(endpointObj); + + // 如果终点是分拣区域,则更新木托盘铁托盘记录表 + String next_area = nextPointDto.getArea_type(); + if (StrUtil.equals(next_area, AreaEnum.FJQY.getCode())) { + // 如果是下料料位置 托盘则是木托盘 + if (StrUtil.equals(next_point_code, "FJJXSXLW201") + || StrUtil.equals(next_point_code, "FJJXSXLW202") + || StrUtil.equals(next_point_code, "FJJXSXLW301") + || StrUtil.equals(next_point_code, "FJJXSXLW302")) { + JSONObject jo = new JSONObject(); + jo.put("device_code", next_point_code); + jo.put("vehicle_code", vehicle_code); + SortingUtil.record(jo); + } + // 如果是上料位置 则需要去找点位记录表上的托盘记录 + else { + String flag = "8"; + if (StrUtil.equals(next_point_code, "FJJXSSLW101") || StrUtil.equals(next_point_code, "FJJXSSLW102")) { + flag = "7"; + } + JSONArray paramArr = WQL.getWO("ACSTOMES_001").addParam("flag", flag).process().getResultJSONArray(0); + for (int i = 0; i < paramArr.size(); i++) { + JSONObject jo = paramArr.getJSONObject(i); + SortingUtil.record(jo); + } + } + } + JSONObject startPointObj = pointTab.query("point_code='" + jsonTask.getString("start_point_code") + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(startPointObj)) { + // 仓位库存表【ST_IVT_StructIvt】 + WQLObject ivtTab = WQLObject.getWQLObject("ST_IVT_StructIvt"); + startPointObj.put("lock_type", "00"); + startPointObj.put("point_status", "00"); + startPointObj.put("vehicle_code", ""); + startPointObj.put("update_time", DateUtil.now()); + pointTab.update(startPointObj); + taskTab.update(jsonTask); + ivtTab.delete("struct_id = '" + point_id + "'"); + } + + // 2是出窑缓存货架,调用反馈出冷却缓冲区 + // 3是木托盘缓存货架,调用反馈半木托出临时库区 + String point_type = startPointObj.getString("point_type"); + JSONObject jo = new JSONObject(); + jo.put("task_id", task_id); + WmsToJnServiceImpl wmsToJnServiceImpl = new WmsToJnServiceImpl(); + if (StrUtil.equals(point_type, AreaEnum.CYHCHJ.getCode())) { + wmsToJnServiceImpl.feedBackOutWait(jo); + } + if (StrUtil.equals(point_type, AreaEnum.BTHCQ.getCode())) { + wmsToJnServiceImpl.feedBackOutPartStock(jo); + } } - } - JSONObject startPointObj = - pointTab - .query("point_code='" + jsonTask.getString("start_point_code") + "'") - .uniqueResult(0); - if (ObjectUtil.isNotEmpty(startPointObj)) { - // 仓位库存表【ST_IVT_StructIvt】 - WQLObject ivtTab = WQLObject.getWQLObject("ST_IVT_StructIvt"); - startPointObj.put("lock_type", "00"); - startPointObj.put("point_status", "00"); - startPointObj.put("vehicle_code", ""); - startPointObj.put("update_time", DateUtil.now()); - pointTab.update(startPointObj); - taskTab.update(jsonTask); - ivtTab.delete("struct_id = '" + point_id + "'"); - } + } - // 2是出窑缓存货架,调用反馈出冷却缓冲区 - // 3是木托盘缓存货架,调用反馈半木托出临时库区 - String point_type = startPointObj.getString("point_type"); - JSONObject jo = new JSONObject(); - jo.put("task_id", task_id); - WmsToJnServiceImpl wmsToJnServiceImpl = new WmsToJnServiceImpl(); - if (StrUtil.equals(point_type, AreaEnum.CYHCHJ.getCode())) { - wmsToJnServiceImpl.feedBackOutWait(jo); - } - if (StrUtil.equals(point_type, AreaEnum.BTHCQ.getCode())) { - wmsToJnServiceImpl.feedBackOutPartStock(jo); - } + @Override + public void findStartPoint() { + String task_status = TaskStatusEnum.SURE_START.getCode(); + WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); + JSONArray taskArry = + taskTab + .query( + "task_status='" + + task_status + + "' AND handle_class='" + + THIS_CLASS + + "' AND is_delete='0' ") + .getResultJSONArray(0); + for (int i = 0; i < taskArry.size(); i++) { + JSONObject taskObj = taskArry.getJSONObject(i); + String task_id = taskObj.getString("task_id"); + // 1 将任务修改为分配 2将终点写入,完成分配,3 加锁点位 + // 找一个合适的仓位 + WQLObject ProcedureIOStable = WQLObject.getWQLObject("ST_IVT_workProcedureIOS"); + JSONObject IosObj = + ProcedureIOStable.query("task_id='" + task_id + "' and is_delete ='0'").uniqueResult(0); + if (ObjectUtil.isEmpty(IosObj)) { + throw new BadRequestException("未找到任务号为'" + taskObj.getString("task_code") + "'的入库单据!"); + } + JSONObject param = new JSONObject(); + param.put("material_id", IosObj.getString("material_id")); + param.put("area_type", IosObj.getString("start_area")); + JSONObject inStructObj = StructFindUtil.getOutStruct(param); + if (ObjectUtil.isEmpty(inStructObj)) { + throw new BadRequestException("未找到合适的出库仓位!"); + } + // 修改单据状态,将终点填入 + IosObj.put("bill_status", "20"); + IosObj.put("start_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() { - String task_status = TaskStatusEnum.SURE_START.getCode(); - WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); - JSONArray taskArry = - taskTab - .query( - "task_status='" - + task_status - + "' AND handle_class='" - + THIS_CLASS - + "' AND is_delete='0' ") - .getResultJSONArray(0); - for (int i = 0; i < taskArry.size(); i++) { - JSONObject taskObj = taskArry.getJSONObject(i); - String task_id = taskObj.getString("task_id"); - // 1 将任务修改为分配 2将终点写入,完成分配,3 加锁点位 - // 找一个合适的仓位 - WQLObject ProcedureIOStable = WQLObject.getWQLObject("ST_IVT_workProcedureIOS"); - JSONObject IosObj = - ProcedureIOStable.query("task_id='" + task_id + "' and is_delete ='0'").uniqueResult(0); - if (ObjectUtil.isEmpty(IosObj)) { - throw new BadRequestException("未找到任务号为'" + taskObj.getString("task_code") + "'的入库单据!"); - } - JSONObject param = new JSONObject(); - param.put("material_id", IosObj.getString("material_id")); - param.put("area_type", IosObj.getString("start_area")); - JSONObject inStructObj = StructFindUtil.getOutStruct(param); - if (ObjectUtil.isEmpty(inStructObj)) { - throw new BadRequestException("未找到合适的出库仓位!"); - } - // 修改单据状态,将终点填入 - IosObj.put("bill_status", "20"); - IosObj.put("start_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 findNextPoint() { } - } - @Override - public void findNextPoint() {} - - @Override - public String createTask(JSONObject form) { - // 请求参数 终点不能为空 物料,数量,客户,批次,创建方式,托盘,是否满托不能为空! 起点点位不为空时,单据编号不能为空! - String start_point_code = form.getString("start_point_code"); - String next_point_code = form.getString("next_point_code"); - String vehicle_code = form.getString("vehicle_code"); - String task_status = TaskStatusEnum.SURE_START.getCode(); - String material_id = form.getString("material_id"); - String create_mode = form.getString("create_mode"); - String pcsn = form.getString("pcsn"); - String is_full = form.getString("is_full"); - String workprocedure_id = form.getString("workprocedure_id"); - String group_device = form.getString("group_device"); - WQLObject taskTable = WQLObject.getWQLObject("SCH_BASE_Task"); - String iostorinv_id = form.getString("iostorinv_id"); - if (StrUtil.isEmpty(next_point_code)) { - throw new BadRequestException("终点不能为空!"); - } - if (StrUtil.isEmpty(material_id)) { - throw new BadRequestException("物料标识不能为空!"); - } - if (StrUtil.isEmpty(create_mode)) { - throw new BadRequestException("创建方式不能为空!"); - } - if (StrUtil.isEmpty(is_full)) { - throw new BadRequestException("是否满托不能为空!"); - } - // 判断终点有没有未完成的指令 - JSONObject beforTaskObj = - taskTable - .query( - "is_delete='0' and next_point_code='" - + next_point_code - + "' and task_status <>'" - + TaskStatusEnum.FINISHED.getCode() - + "'") - .uniqueResult(0); - if (ObjectUtil.isNotEmpty(beforTaskObj)) { - throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!"); - } - PointServiceImpl pointService = SpringContextHolder.getBean(PointServiceImpl.class); - String task_id = IdUtil.getSnowflake(1, 1).nextId() + ""; - String start_area = ""; - String startArea_type = ""; - String bill_type = ""; - String qty = ""; - String qty_unit_id = ""; - String ivt_workprocedure_id = ""; - WQLObject iosTable = WQLObject.getWQLObject("ST_IVT_workProcedureIOS"); - if (StrUtil.isNotEmpty(start_point_code)) { - 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); - PointDto StartPoint = pointService.findByCode(start_point_code); - JSONObject ivtObj = - WQLObject.getWQLObject("ST_IVT_StructIvt") - .query("struct_id='" + StartPoint.getPoint_id() + "'") - .uniqueResult(0); - if (ObjectUtil.isEmpty(ivtObj)) { - throw new BadRequestException("仓位为'" + StartPoint.getPoint_code() + "'的库存信息不存在!"); - } - qty = ivtObj.getString("canuse_qty"); - qty_unit_id = ivtObj.getString("qty_unit_id"); - ivt_workprocedure_id = ivtObj.getString("ivt_workprocedure_id"); - } - PointDto nextPoint = pointService.findByCode(next_point_code); - // 如果没给起点,根据终点去找工序,找一个合适的仓位 并且生成入库单,并且锁定点位 - if (StrUtil.isEmpty(start_point_code)) { - if (StrUtil.isEmpty(workprocedure_id)) { - JSONObject workInfo = - WQL.getWO("QSTRUCT_RULE") - .addParam("flag", "1") - .addParam("code", next_point_code) - .process() + @Override + public String createTask(JSONObject form) { + // 请求参数 终点不能为空 物料,数量,客户,批次,创建方式,托盘,是否满托不能为空! 起点点位不为空时,单据编号不能为空! + String start_point_code = form.getString("start_point_code"); + String next_point_code = form.getString("next_point_code"); + String vehicle_code = form.getString("vehicle_code"); + String task_status = TaskStatusEnum.SURE_START.getCode(); + String material_id = form.getString("material_id"); + String create_mode = form.getString("create_mode"); + String pcsn = form.getString("pcsn"); + String is_full = form.getString("is_full"); + String workprocedure_id = form.getString("workprocedure_id"); + String group_device = form.getString("group_device"); + WQLObject taskTable = WQLObject.getWQLObject("SCH_BASE_Task"); + String iostorinv_id = form.getString("iostorinv_id"); + if (StrUtil.isEmpty(next_point_code)) { + throw new BadRequestException("终点不能为空!"); + } + if (StrUtil.isEmpty(material_id)) { + throw new BadRequestException("物料标识不能为空!"); + } + if (StrUtil.isEmpty(create_mode)) { + throw new BadRequestException("创建方式不能为空!"); + } + if (StrUtil.isEmpty(is_full)) { + throw new BadRequestException("是否满托不能为空!"); + } + // 判断终点有没有未完成的指令 + JSONObject beforTaskObj = taskTable.query("is_delete='0' and next_point_code='" + next_point_code + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'") .uniqueResult(0); - workprocedure_id = workInfo.getString("workprocedure_id"); - WorkProcedureEnum workProcedureEnum = WorkProcedureEnum.get(workprocedure_id); - switch (workProcedureEnum) { - // 烧制工序 - case SZGX: - startArea_type = AreaEnum.RYHCHJ.getCode(); - bill_type = BillTypeEnum.SZCK.getCode(); - ivt_workprocedure_id = WorkProcedureEnum.YZGX.getId(); - break; - // 分拣工序 - case FJGX: - startArea_type = AreaEnum.CYHCHJ.getCode(); - bill_type = BillTypeEnum.FJCK.getCode(); - ivt_workprocedure_id = WorkProcedureEnum.SZGX.getId(); - break; - // 包装工序 - case BZGX: - startArea_type = AreaEnum.BTHCQ.getCode(); - bill_type = BillTypeEnum.FJCK.getCode(); - ivt_workprocedure_id = WorkProcedureEnum.FJGX.getId(); - break; + if (ObjectUtil.isNotEmpty(beforTaskObj)) { + throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!"); } - } else { - // (机械手呼叫空托盘,需要呼叫半满托盘)如果请求有工序,假如是压制工序,则库存工序是压制,起点是出窑货架 - WorkProcedureEnum workProcedureEnum = WorkProcedureEnum.get(workprocedure_id); - switch (workProcedureEnum) { - // 烧制工序 - case SZGX: - startArea_type = AreaEnum.RYHCHJ.getCode(); - bill_type = BillTypeEnum.SZCK.getCode(); - ivt_workprocedure_id = WorkProcedureEnum.YZGX.getId(); - break; - // 分拣工序 - case FJGX: - startArea_type = AreaEnum.CYHCHJ.getCode(); - bill_type = BillTypeEnum.FJCK.getCode(); - ivt_workprocedure_id = WorkProcedureEnum.SZGX.getId(); - break; - case BZGX: - startArea_type = AreaEnum.BTHCQ.getCode(); - bill_type = BillTypeEnum.FJCK.getCode(); - ivt_workprocedure_id = WorkProcedureEnum.FJGX.getId(); - break; + PointServiceImpl pointService = SpringContextHolder.getBean(PointServiceImpl.class); + String task_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + String start_area = ""; + String startArea_type = ""; + String bill_type = ""; + String qty = ""; + String qty_unit_id = ""; + String ivt_workprocedure_id = ""; + WQLObject iosTable = WQLObject.getWQLObject("ST_IVT_workProcedureIOS"); + if (StrUtil.isNotEmpty(start_point_code)) { + 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); + PointDto StartPoint = pointService.findByCode(start_point_code); + JSONObject ivtObj = WQLObject.getWQLObject("ST_IVT_StructIvt").query("struct_id='" + StartPoint.getPoint_id() + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(ivtObj)) { + throw new BadRequestException("仓位为'" + StartPoint.getPoint_code() + "'的库存信息不存在!"); + } + qty = ivtObj.getString("canuse_qty"); + qty_unit_id = ivtObj.getString("qty_unit_id"); + ivt_workprocedure_id = ivtObj.getString("ivt_workprocedure_id"); } - } - JSONObject param = new JSONObject(); - param.put("material_id", material_id); - param.put("area_type", startArea_type); - param.put("workprocedure_id", ivt_workprocedure_id); - param.put("is_full", is_full); - param.put("group_device", group_device); - JSONObject outStructObj = StructFindUtil.getOutStruct(param); - if (ObjectUtil.isEmpty(outStructObj) - && !StrUtil.equals(ivt_workprocedure_id, WorkProcedureEnum.YZGX.getId())) { - // 假如没有货,且下料位两个都为空,并且没有执行中的任务 下发acs动作信号 - WQLObject point_table = WQLObject.getWQLObject("sch_base_point"); - WmsToAcsServiceImpl wmsToAcsService = new WmsToAcsServiceImpl(); - // 更新分拣机械手 上下料位置的点位状态 - JSONArray parr = - WQL.getWO("ACSTOMES_001") - .addParam("area_type", AreaEnum.FJQY.getCode()) - .addParam("flag", "4") - .process() - .getResultJSONArray(0); - // JSONArray parr = point_table.query("area_type ='27'").getResultJSONArray(0); - PointUpdateUtil.updatePoint(parr); - JSONObject nextpointObj = - point_table.query("point_code ='" + next_point_code + "'").uniqueResult(0); - if (StrUtil.equals(nextpointObj.getString("area_type"), "27")) { - // 找拆垛位置的对应的另外一个点位 - String other_point_code = - point_table - .query( - "point_code<>'" - + next_point_code - + "' " - + "and device_id='" - + nextpointObj.getString("device_id") - + "' and device_point_type='02' ") - .uniqueResult(0) - .getString("point_code"); - String point_status01 = - point_table - .query("point_code ='" + next_point_code + "'") - .uniqueResult(0) - .getString("point_status"); - String point_status02 = - point_table - .query("point_code ='" + other_point_code + "'") - .uniqueResult(0) - .getString("point_status"); - // 没有执行中的任务 - WQLObject task_table = WQLObject.getWQLObject("sch_base_task"); - JSONObject task1 = - task_table - .query( - "next_point_code ='" - + next_point_code - + "' and is_delete='0' and task_status<>'07'") - .uniqueResult(0); - JSONObject task2 = - task_table - .query( - "next_point_code ='" - + other_point_code - + "' and is_delete='0' and task_status<>'07'") - .uniqueResult(0); - if (StrUtil.equals(point_status01, "00") - && StrUtil.equals(point_status02, "00") - && ObjectUtil.isEmpty(task1) - && ObjectUtil.isEmpty(task2)) { - JSONObject jo = new JSONObject(); - JSONArray arr = new JSONArray(); - // jo.put("device_code", "FJJXS1"); - // jo.put("code", "to_feedback"); - // jo.put("value", "10"); - // arr.add(jo); - // wmsToAcsService.action(arr); - } - } - if (StrUtil.equals(next_point_code, "FJJXSSLW301") - || StrUtil.equals(next_point_code, "FJJXSSLW301")) { - String point_status01 = - point_table - .query("point_code ='FJJXSSLW301'") - .uniqueResult(0) - .getString("point_status"); - String point_status02 = - point_table - .query("point_code ='FJJXSSLW301'") - .uniqueResult(0) - .getString("point_status"); - if (StrUtil.equals(point_status01, "00") && StrUtil.equals(point_status02, "00")) { - JSONObject jo = new JSONObject(); - JSONArray arr = new JSONArray(); - // jo.put("device_code", "FJJXS3"); - // jo.put("code", "to_feedback"); - // jo.put("value", "10"); - // arr.add(jo); - // wmsToAcsService.action(arr); - } - } - throw new BadRequestException("未找到合适的出库仓位!"); - } - qty = outStructObj.getString("canuse_qty"); - qty_unit_id = outStructObj.getString("qty_unit_id"); + PointDto nextPoint = pointService.findByCode(next_point_code); + // 如果没给起点,根据终点去找工序,找一个合适的仓位 并且生成入库单,并且锁定点位 + if (StrUtil.isEmpty(start_point_code)) { + if (StrUtil.isEmpty(workprocedure_id)) { + JSONObject workInfo = WQL.getWO("QSTRUCT_RULE").addParam("flag", "1") + .addParam("code", next_point_code) + .process() + .uniqueResult(0); + workprocedure_id = workInfo.getString("workprocedure_id"); + WorkProcedureEnum workProcedureEnum = WorkProcedureEnum.get(workprocedure_id); + switch (workProcedureEnum) { + // 烧制工序 + case SZGX: + startArea_type = AreaEnum.RYHCHJ.getCode(); + bill_type = BillTypeEnum.SZCK.getCode(); + ivt_workprocedure_id = WorkProcedureEnum.YZGX.getId(); + break; + // 分拣工序 + case FJGX: + startArea_type = AreaEnum.CYHCHJ.getCode(); + bill_type = BillTypeEnum.FJCK.getCode(); + ivt_workprocedure_id = WorkProcedureEnum.SZGX.getId(); + break; + // 包装工序 + case BZGX: + startArea_type = AreaEnum.BTHCQ.getCode(); + bill_type = BillTypeEnum.FJCK.getCode(); + ivt_workprocedure_id = WorkProcedureEnum.FJGX.getId(); + break; + } + } else { + // (机械手呼叫空托盘,需要呼叫半满托盘)如果请求有工序,假如是压制工序,则库存工序是压制,起点是出窑货架 + WorkProcedureEnum workProcedureEnum = WorkProcedureEnum.get(workprocedure_id); + switch (workProcedureEnum) { + // 烧制工序 + case SZGX: + startArea_type = AreaEnum.RYHCHJ.getCode(); + bill_type = BillTypeEnum.SZCK.getCode(); + ivt_workprocedure_id = WorkProcedureEnum.YZGX.getId(); + break; + // 分拣工序 + case FJGX: + startArea_type = AreaEnum.CYHCHJ.getCode(); + bill_type = BillTypeEnum.FJCK.getCode(); + ivt_workprocedure_id = WorkProcedureEnum.SZGX.getId(); + break; + case BZGX: + startArea_type = AreaEnum.BTHCQ.getCode(); + bill_type = BillTypeEnum.FJCK.getCode(); + ivt_workprocedure_id = WorkProcedureEnum.FJGX.getId(); + break; + } + } + JSONObject param = new JSONObject(); + param.put("material_id", material_id); + param.put("area_type", startArea_type); + param.put("workprocedure_id", ivt_workprocedure_id); + param.put("is_full", is_full); + param.put("group_device", group_device); + JSONObject outStructObj = StructFindUtil.getOutStruct(param); + if (ObjectUtil.isEmpty(outStructObj) && !StrUtil.equals(ivt_workprocedure_id, WorkProcedureEnum.YZGX.getId())) { + // 假如没有货,且下料位两个都为空,并且没有执行中的任务 下发acs动作信号 + // 更新分拣机械手 上下料位置的点位状态 + JSONArray parr = WQL.getWO("ACSTOMES_001").addParam("area_type", AreaEnum.FJQY.getCode()).addParam("flag", "4").process().getResultJSONArray(0); + PointUpdateUtil.updatePoint(parr); + throw new BadRequestException("未找到合适的出库仓位!"); + } + qty = outStructObj.getString("canuse_qty"); + qty_unit_id = outStructObj.getString("qty_unit_id"); - start_point_code = outStructObj.getString("struct_code"); - vehicle_code = outStructObj.getString("vehicle_code"); - // 创建出库单据 - JSONObject iosObj = new JSONObject(); - iostorinv_id = IdUtil.getSnowflake(1, 1).nextId() + ""; - iosObj.put("iostorinv_id", iostorinv_id); - iosObj.put("bill_code", CodeUtil.getNewCode("OUT_STORE_CODE")); - iosObj.put("io_type", "1"); - iosObj.put("bill_type", bill_type); - iosObj.put("workprocedure_id", workprocedure_id); - iosObj.put("ivt_workprocedure_id", ivt_workprocedure_id); - iosObj.put("material_id", material_id); - iosObj.put("vehicle_code", outStructObj.getString("vehicle_code")); - iosObj.put("producetask_id", outStructObj.getString("producetask_id")); - iosObj.put("qty", qty); - iosObj.put("qty_unit_id", qty_unit_id); - // 默认是分配状态 - 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", startArea_type); - iosObj.put("end_area", nextPoint.getArea_type()); - iosObj.put("create_mode", create_mode); - iosObj.put("task_id", task_id); - iosObj.put("pcsn", pcsn); - iosObj.put("create_id", "1"); - iosObj.put("create_name", "管理员"); - iosObj.put("create_time", DateUtil.now()); - WQLObject.getWQLObject("ST_IVT_workProcedureIOS").insert(iosObj); - // 将组盘里面的task_id改为当前的任务 - WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup"); - JSONObject groupObj = groupTable.query("vehicle_code='" + vehicle_code + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(groupObj)) { - groupObj.put("task_id", task_id); - groupTable.update(groupObj); - } + start_point_code = outStructObj.getString("struct_code"); + vehicle_code = outStructObj.getString("vehicle_code"); + // 创建出库单据 + JSONObject iosObj = new JSONObject(); + iostorinv_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + iosObj.put("iostorinv_id", iostorinv_id); + iosObj.put("bill_code", CodeUtil.getNewCode("OUT_STORE_CODE")); + iosObj.put("io_type", "1"); + iosObj.put("bill_type", bill_type); + iosObj.put("workprocedure_id", workprocedure_id); + iosObj.put("ivt_workprocedure_id", ivt_workprocedure_id); + iosObj.put("material_id", material_id); + iosObj.put("vehicle_code", outStructObj.getString("vehicle_code")); + iosObj.put("producetask_id", outStructObj.getString("producetask_id")); + iosObj.put("qty", qty); + iosObj.put("qty_unit_id", qty_unit_id); + // 默认是分配状态 + 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", startArea_type); + iosObj.put("end_area", nextPoint.getArea_type()); + iosObj.put("create_mode", create_mode); + iosObj.put("task_id", task_id); + iosObj.put("pcsn", pcsn); + iosObj.put("create_id", "1"); + iosObj.put("create_name", "管理员"); + iosObj.put("create_time", DateUtil.now()); + WQLObject.getWQLObject("ST_IVT_workProcedureIOS").insert(iosObj); + // 将组盘里面的task_id改为当前的任务 + WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup"); + JSONObject groupObj = groupTable.query("vehicle_code='" + vehicle_code + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(groupObj)) { + groupObj.put("task_id", task_id); + groupTable.update(groupObj); + } + } + + task_status = TaskStatusEnum.START_AND_POINT.getCode(); + + PointDto startPoint = pointService.findByCode(start_point_code); + start_area = nextPoint.getArea_type(); + // 起点点加锁 + HashMap lock_map = new HashMap(); + lock_map.put("lock_type", "01"); + WQLObject.getWQLObject("sch_base_point").update(lock_map, "point_code = '" + start_point_code + "'"); + + + // 减少库存可用数量 + StoreIvtServiceImpl ivtService = new StoreIvtServiceImpl(); + JSONObject param = new JSONObject(); + param.put("material_id", material_id); + param.put("bill_id", iostorinv_id); + param.put("qty_unit_id", qty_unit_id); + param.put("change_qty", qty); + param.put("struct_id", startPoint.getPoint_id()); + param.put("vehicle_code", startPoint.getVehicle_code()); + param.put("workprocedure_id", ivt_workprocedure_id); + + ivtService.addIvtFlow(param, IvtChangeTypeEnum.SUB_CAN_USE); + JSONObject taskObj = new JSONObject(); + taskObj.put("task_id", task_id); + 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); + taskObj.put("start_point_code", start_point_code); + taskObj.put("start_area", start_area); + taskObj.put("request_param", form.toJSONString()); + taskObj.put("next_point_code", next_point_code); + taskObj.put("next_area", nextPoint.getArea_type()); + taskObj.put("vehicle_code", vehicle_code); + taskObj.put("handle_class", THIS_CLASS); + taskObj.put("is_auto_issue", "1"); + taskObj.put("create_name", "管理员"); + taskObj.put("create_id", "1"); + taskObj.put("create_time", DateUtil.now()); + taskObj.put("is_delete", "0"); + taskTable.insert(taskObj); + return task_id; } - task_status = TaskStatusEnum.START_AND_POINT.getCode(); + @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()); + } - PointDto startPoint = pointService.findByCode(start_point_code); - start_area = nextPoint.getArea_type(); - // 起点点加锁 - HashMap lock_map = new HashMap(); - lock_map.put("lock_type", "01"); - WQLObject.getWQLObject("sch_base_point") - .update(lock_map, "point_code = '" + start_point_code + "'"); - // 减少库存可用数量 - StoreIvtServiceImpl ivtService = new StoreIvtServiceImpl(); - JSONObject param = new JSONObject(); - param.put("material_id", material_id); - param.put("bill_id", iostorinv_id); - param.put("qty_unit_id", qty_unit_id); - param.put("change_qty", qty); - param.put("struct_id", startPoint.getPoint_id()); - param.put("vehicle_code", startPoint.getVehicle_code()); - param.put("workprocedure_id", ivt_workprocedure_id); + @Override + public void pullBack(String task_id) { + } - ivtService.addIvtFlow(param, IvtChangeTypeEnum.SUB_CAN_USE); - JSONObject taskObj = new JSONObject(); - taskObj.put("task_id", task_id); - 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); - taskObj.put("start_point_code", start_point_code); - taskObj.put("start_area", start_area); - taskObj.put("request_param", form.toJSONString()); - taskObj.put("next_point_code", next_point_code); - taskObj.put("next_area", nextPoint.getArea_type()); - taskObj.put("vehicle_code", vehicle_code); - taskObj.put("handle_class", THIS_CLASS); - taskObj.put("is_auto_issue", "1"); - taskObj.put("create_name", "管理员"); - taskObj.put("create_id", "1"); - taskObj.put("create_time", DateUtil.now()); - taskObj.put("is_delete", "0"); - taskTable.insert(taskObj); - return task_id; - } - - @Override - public void forceFinish(String task_id) { - JSONObject taskObj = - WQLObject.getWQLObject("SCH_BASE_Task") - .query("task_id = '" + task_id + "'") - .uniqueResult(0); - this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); - } - - @Override - public void pullBack(String task_id) {} - - @Override - public void cancel(String task_id) {} + @Override + public void cancel(String task_id) { + } } 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 d230d65..93a341f 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 @@ -143,9 +143,7 @@ public class FmjToPackIngTask extends AbstractAcsTask { 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); + 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") + "' 未完成!"); } 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 54a57b7..3b68374 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 @@ -29,175 +29,151 @@ import java.util.HashMap; @Service public class SendEmptyVehicleTask extends AbstractAcsTask { - private final String THIS_CLASS = SendEmptyVehicleTask.class.getName(); + 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 updateTaskStatus(JSONObject taskObj, String status) { + /** 改变任务状态 */ + String task_id = taskObj.getString("task_id"); + WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); + JSONObject jsonTask = taskTab.query("task_id='" + task_id + "'").uniqueResult(0); + if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { + // 更新任务状态为执行中 + jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); + jsonTask.put("update_time", DateUtil.now()); + taskTab.update(jsonTask); + } + + if (TaskStatusEnum.FINISHED.getCode().equals(status)) { + // 更新任务状态为完成 + jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode()); + jsonTask.put("taskfinish_mode", taskObj.getString("taskfinish_mode")); + jsonTask.put("update_time", DateUtil.now()); + jsonTask.put("remark", "任务执行完成"); + + // 解锁仓位,托盘信息,回写到点位上去 + 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); + endpointObj.put("update_time", DateUtil.now()); + 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", ""); + startPointObj.put("update_time", DateUtil.now()); + pointTab.update(startPointObj); + taskTab.update(jsonTask); + + // 将组盘表删除 + WQLObject.getWQLObject("st_buss_vehiclegroup").delete("vehicle_code = '" + vehicle_code + "'"); + } } - 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); - endpointObj.put("update_time", DateUtil.now()); - 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", ""); - startPointObj.put("update_time", DateUtil.now()); - 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 findStartPoint() { } - 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 + public void findNextPoint() { } - 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 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 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 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 pullBack(String task_id) {} + String task_status = TaskStatusEnum.START_AND_POINT.getCode(); - @Override - public void cancel(String task_id) {} + 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(); + } + + // 判断起点有没有未完成的指令 + 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 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 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 6ea2d6e..ac955ab 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 @@ -33,378 +33,345 @@ 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 + 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") + "'"); + 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); + endpointObj.put("update_time", DateUtil.now()); + 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", ""); + startPointObj.put("update_time", DateUtil.now()); + 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); + } + } } - 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); - endpointObj.put("update_time", DateUtil.now()); - 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", ""); - startPointObj.put("update_time", DateUtil.now()); - 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 findStartPoint() { } - } - @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 + 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 + @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", 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); + 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", 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); - } + // 如果是压料制下,或者是分拣送料需要更新组盘信息,将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; } - 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 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 pullBack(String task_id) { + } - @Override - public void cancel(String task_id) { - System.out.println("acs取消"); - } + @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/ToConveyorTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/ToConveyorTask.java index d2b0096..eb8aaaa 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 @@ -20,10 +20,14 @@ import org.springframework.stereotype.Service; import java.util.HashMap; +/** + * 压机到货架 + */ @Service @Slf4j public class ToConveyorTask extends AbstractAcsTask { private final String THIS_CLASS = ToConveyorTask.class.getName(); + @Override public void updateTaskStatus(JSONObject taskObj, String status) { /** @@ -36,15 +40,8 @@ public class ToConveyorTask extends AbstractAcsTask { 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)) { @@ -56,7 +53,6 @@ public class ToConveyorTask extends AbstractAcsTask { jsonTask.put("remark", "任务执行完成"); taskTab.update(jsonTask); //调用接口反馈给嘉耐 搬运任务 - JSONObject param = new JSONObject(); param.put("task_id", task_id); WmsToJnService wmsToJnService = new WmsToJnServiceImpl(); @@ -80,10 +76,6 @@ public class ToConveyorTask extends AbstractAcsTask { String vehicle_code = form.getString("vehicle_code"); String start_point_code = form.getString("start_point_code"); String next_point_code = form.getString("next_point_code"); - String material_id = form.getString("material_id"); - String is_full = form.getString("is_full"); - String qty = form.getString("qty"); - String pcsn = form.getString("pcsn"); String group_id = form.getString("group_id"); WQLObject taskTable = WQLObject.getWQLObject("SCH_BASE_Task"); @@ -94,18 +86,11 @@ public class ToConveyorTask extends AbstractAcsTask { 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); + 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 is_autopackage = "1"; - if (StrUtil.equals(start_point_code, "MDJXS601")) { - is_autopackage = "0"; - } String task_id = IdUtil.getSnowflake(1, 1).nextId() + ""; - JSONObject materialObj = WQLObject.getWQLObject("md_me_material").query("material_id='" + material_id + "'").uniqueResult(0); //更新组盘信息,将task_id 更新 WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup"); JSONObject groupInfo = groupTable.query("group_id='" + group_id + "'").uniqueResult(0); 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 5a8e059..3e6d22a 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 @@ -24,150 +24,129 @@ import java.util.HashMap; @RequiredArgsConstructor @Slf4j public class ToPackIngTask extends AbstractAcsTask { - private final String THIS_CLASS = ToPackIngTask.class.getName(); + private final String THIS_CLASS = ToPackIngTask.class.getName(); - @Override - public void updateTaskStatus(JSONObject taskObj, String status) { - /** 改变任务状态 */ - String task_id = taskObj.getString("task_id"); - WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); - JSONObject jsonTask = taskTab.query("task_id='" + task_id + "'").uniqueResult(0); - if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { - // 更新任务状态为执行中 - jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); - jsonTask.put("update_time", DateUtil.now()); - taskTab.update(jsonTask); - HashMap map = new HashMap(); - map.put("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 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", ""); + startPointObj.put("update_time", DateUtil.now()); + 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); + } + } } - 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", ""); - startPointObj.put("update_time", DateUtil.now()); - 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 findStartPoint() { } - } - @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 + public void findNextPoint() { } - if (StrUtil.isEmpty(next_point_code)) { - throw new BadRequestException("终点不能为空!"); + + @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"; + 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", 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; } - // 判断起点有没有未完成的指令 - 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 forceFinish(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); } - 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 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 pullBack(String task_id) {} - - @Override - public void cancel(String task_id) {} + @Override + public void cancel(String task_id) { + } } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/st/basedata/service/impl/KilnServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/st/basedata/service/impl/KilnServiceImpl.java index 9b6bec1..3f3bc31 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/st/basedata/service/impl/KilnServiceImpl.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/st/basedata/service/impl/KilnServiceImpl.java @@ -61,12 +61,6 @@ public class KilnServiceImpl implements KilnService { WQLObject materialTab = WQLObject.getWQLObject("MD_ME_Material"); WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point"); WQLObject workProcedureTab = WQLObject.getWQLObject("PDM_BASE_workProcedure"); - // 共用对象 - JSONObject vehicleGroupObj = null; // 组盘信息 - if (ObjectUtil.isNotEmpty(vehicle_code)) { - vehicleGroupObj = vehicleGroupTab.query("vehicle_code = '" + vehicle_code + "'").uniqueResult(0); - } - JSONObject materialObj = null; // 物料信息 if (ObjectUtil.isNotEmpty(material_id)) { // 获取物料对象 materialObj = materialTab.query("material_id = '" + jsonObject.getString("material_id") + "'").uniqueResult(0); @@ -100,6 +94,9 @@ public class KilnServiceImpl implements KilnService { workprocedure_id = workprocedureObj.getString("workprocedure_id"); } + //先删除库存 永远插入库存 + structIvtTab.delete("struct_id = '"+jsonObject.getString("struct_id")+"'"); + stockrecordId=""; if (ObjectUtil.isEmpty(stockrecordId)) { // 仓位库存id为空,就插入 JSONObject structIvt = new JSONObject(); structIvt.put("stockrecord_id", IdUtil.getSnowflake(1, 1).nextId()); @@ -139,9 +136,14 @@ public class KilnServiceImpl implements KilnService { structIvt.put("instorage_time", DateUtil.now()); structIvtTab.update(structIvt); } + // 组盘表 // 存在相应载具的话删掉在存 - if (ObjectUtil.isNotEmpty(vehicle_code)) vehicleGroupTab.delete("vehicle_code = '" + vehicle_code + "'"); + if (ObjectUtil.isNotEmpty(vehicle_code)) { + vehicleGroupTab.delete("vehicle_code = '" + vehicle_code + "'"); + structIvtTab.delete("vehicle_code <> '" + vehicle_code + "' and struct_id = '"+jsonObject.getString("struct_id")+"'"); + } + JSONObject vehicleGroup = new JSONObject(); vehicleGroup.put("group_id", IdUtil.getSnowflake(1, 1).nextId()); vehicleGroup.put("vehicle_code", vehicle_code); 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 a1e2b75..a1c0e09 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,6 @@ spring: wall: config: multi-statement-allow: true - # data: - # mongodb: - # host: 127.0.0.1 - # port: 27017 - # database: logdb redis: #数据库索引 database: ${REDIS_DB:0} @@ -64,6 +59,16 @@ spring: password: ${REDIS_PWD:} #连接超时时间 timeout: 5000 + redisson: + config: | + threads: 4 + nettyThreads: 4 + singleServerConfig: + connectionMinimumIdleSize: 8 + connectionPoolSize: 8 + address: redis://127.0.0.1:6379 + idleConnectionTimeout: 10000 + timeout: 3000 # 登录相关配置 login: # 登录缓存 diff --git a/wms/hd/nladmin-system/src/main/resources/config/application-test.yml b/wms/hd/nladmin-system/src/main/resources/config/application-test.yml index cbdf87b..3a5f7ff 100644 --- a/wms/hd/nladmin-system/src/main/resources/config/application-test.yml +++ b/wms/hd/nladmin-system/src/main/resources/config/application-test.yml @@ -56,11 +56,6 @@ spring: wall: config: multi-statement-alagvslow: true - data: - mongodb: - host: 192.168.81.251 - port: 27017 - database: nlacs redis: #数据库索引 diff --git a/wms/hd/nladmin-system/src/main/resources/config/application.yml b/wms/hd/nladmin-system/src/main/resources/config/application.yml index e124131..c7ad90c 100644 --- a/wms/hd/nladmin-system/src/main/resources/config/application.yml +++ b/wms/hd/nladmin-system/src/main/resources/config/application.yml @@ -2,7 +2,7 @@ spring: freemarker: check-template-location: false profiles: - active: prod + active: dev jackson: time-zone: GMT+8 data: diff --git a/wms/qd/src/views/wms/sch/point/index.vue b/wms/qd/src/views/wms/sch/point/index.vue index fdec03d..b8217f1 100644 --- a/wms/qd/src/views/wms/sch/point/index.vue +++ b/wms/qd/src/views/wms/sch/point/index.vue @@ -197,6 +197,23 @@ /> + + + + + + +