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 14fbf30..3fdbfda 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 @@ -21,8 +21,13 @@ public class PointUpdateUtil { WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); for (int i = 0; i < pointarr.size(); i++) { JSONObject pointjo = pointarr.getJSONObject(i); + + //有无货:move :0 无货 1 有货 + //允许取放货:action:0 不允许 1 允许 + //工作模式:mode: 0单机 1:手动 2:联机 String mode = pointjo.getString("mode"); String point_status = "0" + pointjo.getString("move"); + String point_action = pointjo.getString("action"); String vehicle_code = pointjo.getString("barcode"); String device_code = pointjo.getString("device_code"); // 物料类型 @@ -44,6 +49,7 @@ public class PointUpdateUtil { pointObj.put("vehicle_type", pallet_type); pointObj.put("material_type", weight); pointObj.put("material_code", material_code); + pointObj.put("action", point_action); pointObj.put("mode", mode); pointTable.update(pointObj); } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/StructFindUtil.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/StructFindUtil.java index 7bf202e..5fef238 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/StructFindUtil.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/StructFindUtil.java @@ -106,6 +106,7 @@ public class StructFindUtil { .addParam("point_code", point_code). process().uniqueResult(0); } + result.put("vehicle_type",vehicle_type); return result; } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/wql/QSTRUCT_RULE.wql b/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/wql/QSTRUCT_RULE.wql index 941ba2b..8c160a1 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/wql/QSTRUCT_RULE.wql +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/wql/QSTRUCT_RULE.wql @@ -399,6 +399,7 @@ IF 输入.flag = "13" point.area_type = '07' AND device_point_type = '01' AND point.`mode` <> '0' + AND point.`action` <> '0' AND point.point_status='00' AND ( point.vehicle_code = '' OR point.vehicle_code IS NULL ) AND task.task_code IS NULL 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 91d331d..8dc121a 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 @@ -15,12 +15,10 @@ import org.nl.common.utils.UserInfoUtil; import org.nl.exception.BadRequestException; import org.nl.modules.system.util.CodeUtil; import org.nl.utils.SpringContextHolder; -import org.nl.wms.WorkProcedureEnum; import org.nl.wms.common.KilnUtil; import org.nl.wms.common.PointUpdateUtil; import org.nl.wms.common.PressureUtil; import org.nl.wms.common.StructFindUtil; -import org.nl.wms.database.service.VehicleService; import org.nl.wms.database.service.dto.VehicleDto; import org.nl.wms.ext.acs.service.AcsToWmsService; import org.nl.wms.sch.manage.AbstractAcsTask; @@ -51,15 +49,13 @@ import java.util.concurrent.TimeUnit; public class AcsToWmsServiceImpl implements AcsToWmsService { private final SendMaterialTask sendMaterialTask; private final CallMaterialTask callMaterialTask; + private final BTHCToXLTask bphcToXLTask; private final SendEmptyVehicleTask sendEmptyVehicleTask; private final CallEmptyVehicleTask callEmptyVehicleTask; - private final RgvTask rgvTask; - private final WmsToAcsServiceImpl wmsToAcsServiceImpl; private final ToConveyorTask toConveyorTask; private final TaskService taskService; private final ToPackIngTask toPackIngTask; private final FmjToPackIngTask fmjToPackIngTask; - private final VehicleService vehicleService; @Autowired private RedissonClient redissonClient; @@ -89,7 +85,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { @Override @Transactional public Map receiveTaskFromAcsTrans(Map jsonObject) { - log.debug("ACS的receiveTaskFromAcs请求参数为:" + jsonObject); + log.debug("ACS的receiveTaskFromAcs请求参数为:" + jsonObject.toString()); String device_code = (String) jsonObject.get("device_code"); String type = (String) jsonObject.get("type"); String group_id = (String) jsonObject.get("group_id"); @@ -125,17 +121,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { if (ObjectUtil.isEmpty(groupObj)) { throw new BadRequestException("找不到组盘信息,载具号:" + jsonObject3.getString("vehicle_code")); } - String material_id = groupObj.getString("material_id"); - JSONObject materiralObj1 = WQLObject.getWQLObject("md_me_material").query("material_id = '" + material_id + "'").uniqueResult(0); - // 寻找对应的托盘类型 - 托盘类型对应转换 - String vehicle_type = vehicleService.getVehicleType(materiralObj1.getString("vehicle_type")); - JSONObject jsonObject1 = new JSONObject(); - JSONArray array = new JSONArray(); - jsonObject1.put("device_code", "RGV2"); - jsonObject1.put("code", "to_container_type"); - jsonObject1.put("value", vehicle_type); - array.add(jsonObject1); - wmsToAcsServiceImpl.action(array); break; } // ========================== @@ -222,24 +207,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { produceInfoByCode = this.getProduceInfoByCode(device_code); jsonObject.put("vehicle_type", produceInfoByCode.getString("vehicle_type")); toPackIngTask.createTask((JSONObject) JSON.toJSON(jsonObject)); - - // 生成到包装位的任务时,下发托盘类型给RGV -// JSONObject vehicleObj = WQLObject.getWQLObject("md_pb_vehicle").query("vehicle_code='" + vehicle_code + "'", "create_time desc").uniqueResult(0); -// if (ObjectUtil.isNotEmpty(vehicleObj)) { -// String vehicle_type = vehicleService.getVehicleType(vehicleObj.getString("vehicle_type")); -// JSONObject jsonObject1 = new JSONObject(); -// JSONArray array = new JSONArray(); -// jsonObject1.put("device_code", "RGV2"); -// jsonObject1.put("code", "to_container_type"); -// jsonObject1.put("value", vehicle_type); -// array.add(jsonObject1); -// try { -// wmsToAcsServiceImpl.action(array); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } - break; } // ========================== @@ -314,20 +281,18 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { || StrUtil.equals(device_code, "FJJXSXLW301") || StrUtil.equals(device_code, "FJJXSXLW302")) { - JSONObject joo = pointTable.query("point_code='" + device_code + "'").uniqueResult(0); material_id = produceInfoByCode.getString("material_id"); - String workprocedure_id = WorkProcedureEnum.FJGX.getId(); - JSONObject jsonObject1 = WQL.getWO("ACSTOMES_001").addParam("flag", "1").addParam("workprocedure_id", workprocedure_id).addParam("material_id", material_id).addParam("device_id", joo.getString("device_id")).process().uniqueResult(0); - if (ObjectUtil.isNotEmpty(jsonObject1)) { + + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + JSONObject startPoint= pointTab.query("area_type ='06' and lock_type='00' and point_status='02' and material_id = '"+material_id+"' and vehicle_type= '"+produceInfoByCode.getString("vehicle_type")+"'").uniqueResult(0); + + if (ObjectUtil.isNotEmpty(startPoint)) { // 如果有库存,则出半满托盘 // 叫料出库 jsonObject.put("next_point_code", device_code); jsonObject.put("create_mode", "01"); - jsonObject.put("material_id", material_id); - jsonObject.put("is_full", "0"); - jsonObject.put("workprocedure_id", WorkProcedureEnum.BZGX.getId()); - jsonObject.put("group_device", jsonObject1.getString("group_device_id")); - callMaterialTask.createTask((JSONObject) JSON.toJSON(jsonObject)); + jsonObject.put("start_point_code", startPoint.getString("point_code")); + bphcToXLTask.createTask((JSONObject) JSON.toJSON(jsonObject)); break; } // 需要更新覆膜机的托盘类型 @@ -353,7 +318,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } @Override - @Transactional(rollbackFor = Exception.class) +// @Transactional(rollbackFor = Exception.class) public Map manipulatorApply(Map jsonObject) { log.debug("ACS的manipulatorApply请求参数为:" + jsonObject); String device_code = (String) jsonObject.get("device_code"); @@ -479,8 +444,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { jsonObject.put("producetask_id", producetask_id); jsonObject.put("material_code", materialObj.getString("material_code")); this.receiveTaskFromAcs(jsonObject); - - JSONObject result = new JSONObject(); result.put("status", HttpStatus.OK.value()); result.put("message", "任务状态反馈成功!"); @@ -935,17 +898,16 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { public Map queryCribbingInfo(Map jsonObject) { log.debug("ACS的queryCribbingInfo请求参数为:" + jsonObject); String device_code = (String) jsonObject.get("device_code"); - JSONObject task = WQLObject.getWQLObject("sch_base_task").query( - "is_delete = '0' AND task_status <> '07' AND next_point_code = '" + device_code + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(task)) { - throw new BadRequestException("当前点位有空托任务未完成!"); - } + WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); - String vehicle_code = pointTable.query("point_code = '" + device_code + "'").uniqueResult(0).getString("vehicle_code"); - WQLObject group_table = WQLObject.getWQLObject("st_buss_vehiclegroup"); - // 从组盘表里面去获取组盘信息 - JSONObject result = group_table.query("vehicle_code = '" + vehicle_code + "'").uniqueResult(0); + //从点位上获取半木托组盘参数 + String ext_data = pointTable.query("point_code = '" + device_code + "'").uniqueResult(0).getString("ext_data"); + JSONObject result=null; + if (ObjectUtil.isNotEmpty(ext_data)){ + result=JSONObject.parseObject(ext_data); + } + if (ObjectUtil.isNotEmpty(result)) { String product_code = WQLObject.getWQLObject("md_me_cribbinginfo").query("material_id = " + result.getString("material_id")).uniqueResult(0).getString("product_code"); result.put("product_code", product_code); diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/wql/ACSTOMES_001.wql b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/wql/ACSTOMES_001.wql index 2f22a94..cb9c77e 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/wql/ACSTOMES_001.wql +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/wql/ACSTOMES_001.wql @@ -119,7 +119,6 @@ IF 输入.flag = "4" QUERY SELECT - point.point_code as device_code FROM sch_base_point point diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java index 074475d..2841fd3 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java @@ -1,5 +1,6 @@ package org.nl.wms.sch.manage; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -65,6 +66,12 @@ public abstract class AbstractAcsTask { taskDto.setStart_device_code2(json.getString("start_point_code2")); taskDto.setNext_device_code2(json.getString("next_point_code2")); taskDto.setVehicle_code(json.getString("vehicle_code")); + //木托盘载具类型,传给ACS的时候需要转换 + JSONObject muVehicle = WQLObject.getWQLObject("sys_dict_detail").query("name= 'MD_MTPVEHICLE_TYPE' and value = '" +json.getString("vehicle_type") + "'").uniqueResult(0);// + if (ObjectUtil.isNotEmpty(muVehicle)){ + taskDto.setVehicle_type(muVehicle.getString("dict_sort")); + } + arr.add(taskDto); } return arr; @@ -101,7 +108,7 @@ public abstract class AbstractAcsTask { * @param form 创建任务需要的参数 * @return 返回任务标识 */ - public abstract String createTask(JSONObject form); + public abstract String createTask(JSONObject form); /** * 自动生成任务 diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/BTHCToXLTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/BTHCToXLTask.java new file mode 100644 index 0000000..db4ec34 --- /dev/null +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/BTHCToXLTask.java @@ -0,0 +1,156 @@ +package org.nl.wms.sch.manage.buss; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.nl.common.utils.UserInfoUtil; +import org.nl.exception.BadRequestException; +import org.nl.modules.system.util.CodeUtil; +import org.nl.utils.SpringContextHolder; +import org.nl.wms.WorkProcedureEnum; +import org.nl.wms.common.PointUpdateUtil; +import org.nl.wms.common.SortingUtil; +import org.nl.wms.common.StructFindUtil; +import org.nl.wms.ext.acs.service.impl.WmsToJnServiceImpl; +import org.nl.wms.sch.manage.AbstractAcsTask; +import org.nl.wms.sch.manage.AreaEnum; +import org.nl.wms.sch.manage.BillTypeEnum; +import org.nl.wms.sch.manage.TaskStatusEnum; +import org.nl.wms.sch.service.dto.PointDto; +import org.nl.wms.sch.service.impl.PointServiceImpl; +import org.nl.wms.st.ivt.IvtChangeTypeEnum; +import org.nl.wms.st.ivt.StoreIvtServiceImpl; +import org.nl.wql.WQL; +import org.nl.wql.core.bean.WQLObject; +import org.springframework.stereotype.Service; + +import java.util.HashMap; + +/** + * 1、半托缓存到分拣机械手下料位 + * + */ +@Service +public class BTHCToXLTask extends AbstractAcsTask { + private final String THIS_CLASS = BTHCToXLTask.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); + } + + 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); + startPointObj.put("lock_type", "00"); + startPointObj.put("point_status", "00"); + startPointObj.put("vehicle_code", ""); + startPointObj.put("vehicle_type", ""); + startPointObj.put("material_id", ""); + startPointObj.put("update_time", DateUtil.now()); + pointTab.update(startPointObj); + + + JSONObject endPoint = pointTab.query("point_code='" + jsonTask.getString("next_point_code") + "'").uniqueResult(0); + endPoint.put("lock_type", "00"); + endPoint.put("point_status", "02"); + endPoint.put("vehicle_code", jsonTask.getString("vehicle_code")); + endPoint.put("vehicle_type", jsonTask.getString("vehicle_type")); + endPoint.put("material_id", jsonTask.getString("material_id")); + endPoint.put("update_time", DateUtil.now()); + pointTab.update(endPoint); + + } + } + + @Override + public void findStartPoint() { + } + + @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 vehicle_type = form.getString("vehicle_type"); + String task_status = TaskStatusEnum.START_AND_POINT.getCode(); + String material_id = form.getString("material_id"); + String create_mode = form.getString("create_mode"); + + + 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", "01"); + taskObj.put("acs_task_type", "1"); + taskObj.put("task_status", task_status); + taskObj.put("start_point_code", start_point_code); + taskObj.put("request_param", form.toJSONString()); + taskObj.put("next_point_code", next_point_code); + taskObj.put("material_id", material_id); + taskObj.put("vehicle_code", vehicle_code); + taskObj.put("vehicle_type", vehicle_type); + 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"); + taskObj.put("create_mode", create_mode); + + //锁住起点 + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + JSONObject startPointObj = pointTab.query("point_code='" + taskObj.getString("start_point_code") + "'").uniqueResult(0); + + taskObj.put("vehicle_code", startPointObj.getString("vehicle_code")); + taskObj.put("vehicle_type", startPointObj.getString("vehicle_type")); + taskObj.put("material_id", startPointObj.getString("material_id")); + + WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); + taskTab.insert(taskObj); + + + startPointObj.put("lock_type", "01"); + startPointObj.put("update_time", DateUtil.now()); + pointTab.update(startPointObj); + 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/CallEmptyVehicleTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/CallEmptyVehicleTask.java index 670717a..82378f4 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 @@ -234,6 +234,7 @@ public class CallEmptyVehicleTask extends AbstractAcsTask { } vehicle_code = outStructObj.getString("vehicle_code"); + vehicle_type = outStructObj.getString("vehicle_type"); if (StrUtil.isEmpty(vehicle_code)) { vehicle_code = "999"; } @@ -305,6 +306,7 @@ public class CallEmptyVehicleTask extends AbstractAcsTask { taskObj.put("next_point_code", next_point_code); taskObj.put("next_area", nextPoint.getArea_type()); taskObj.put("vehicle_code", vehicle_code); + taskObj.put("vehicle_type", vehicle_type); taskObj.put("handle_class", THIS_CLASS); taskObj.put("is_auto_issue", is_auto_issue); taskObj.put("create_name", UserInfoUtil.getNickName()); 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 833696d..c520a56 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 @@ -48,13 +48,6 @@ public class CallMaterialTask extends AbstractAcsTask { 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)) { @@ -146,6 +139,7 @@ public class CallMaterialTask extends AbstractAcsTask { startPointObj.put("lock_type", "00"); startPointObj.put("point_status", "00"); startPointObj.put("vehicle_code", ""); + startPointObj.put("ext_data", ""); startPointObj.put("update_time", DateUtil.now()); pointTab.update(startPointObj); taskTab.update(jsonTask); 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 b1232c3..8a319d6 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 @@ -65,6 +65,9 @@ public class FmjToPackIngTask extends AbstractAcsTask { startPointObj.put("lock_type", "00"); startPointObj.put("point_status", "00"); startPointObj.put("vehicle_code", ""); + startPointObj.put("vehicle_type", ""); + startPointObj.put("material_id", ""); + startPointObj.put("ext_data", ""); startPointObj.put("update_time", DateUtil.now()); pointTab.update(startPointObj); //调用mes接口 @@ -128,6 +131,7 @@ public class FmjToPackIngTask extends AbstractAcsTask { taskObj.put("next_point_code", next_point_code); taskObj.put("next_area", nextPoint.getArea_type()); taskObj.put("vehicle_code", vehicle_code); + taskObj.put("vehicle_type", start_pointObj.getString("vehicle_type")); taskObj.put("handle_class", THIS_CLASS); taskObj.put("is_auto_issue", "1"); taskObj.put("create_name", UserInfoUtil.getNickName()); @@ -144,8 +148,6 @@ public class FmjToPackIngTask extends AbstractAcsTask { record1.put("end_time", DateUtil.now()); recordTab.update(record1); } - - return task_id; } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/RgvTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/RgvTask.java deleted file mode 100644 index 1c0983d..0000000 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/RgvTask.java +++ /dev/null @@ -1,122 +0,0 @@ -package org.nl.wms.sch.manage.buss; - -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSONObject; -import org.nl.common.utils.UserInfoUtil; -import org.nl.exception.BadRequestException; -import org.nl.wms.sch.manage.AbstractAcsTask; -import org.nl.wms.sch.manage.AreaEnum; -import org.nl.wms.sch.manage.TaskStatusEnum; -import org.nl.wql.core.bean.WQLObject; -import org.springframework.stereotype.Service; - -/** - * 入库任务生成 - */ -@Service -public class RgvTask extends AbstractAcsTask { - private final String THIS_CLASS = RgvTask.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); - } - - if (TaskStatusEnum.FINISHED.getCode().equals(status)) { - // 更新任务状态为完成 - jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode()); - jsonTask.put("taskfinish_mode", taskObj.getString("taskfinish_mode")); - jsonTask.put("update_time", DateUtil.now()); - jsonTask.put("remark", "任务执行完成"); - taskTab.update(jsonTask); - } - - } - - @Override - public void findStartPoint() { - - } - - @Override - public void findNextPoint() { - } - - @Override - public String createTask(JSONObject form) { - JSONObject taskObj = new JSONObject(); - //只需要传起点就好,跟载具,终点永远是入窑口 - String vehicle_code = form.getString("vehicle_code"); - String start_point_code = form.getString("start_point_code"); - String next_point_code = form.getString("next_point_code"); - if (StrUtil.isEmpty(vehicle_code)) { - throw new BadRequestException("载具不能为空!"); - } - if (StrUtil.isEmpty(start_point_code)) { - throw new BadRequestException("起点不能为空!"); - } - JSONObject beforTaskObj = WQLObject.getWQLObject("sch_base_task").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") + "' 未完成!"); - } - - taskObj.put("task_id", IdUtil.getSnowflake(1, 1).nextId() + ""); - String task_status = TaskStatusEnum.START_AND_POINT.getCode(); - taskObj.put("task_code", IdUtil.getSnowflake(1, 1).nextId() + ""); - taskObj.put("task_type", "05"); - //输送任务 - taskObj.put("acs_task_type", "2"); - String start_area = AreaEnum.RYSSXQ.getCode(); - String next_area = AreaEnum.YQY.getCode(); - taskObj.put("task_status", task_status); - taskObj.put("start_point_code", start_point_code); - taskObj.put("start_area", start_area); - taskObj.put("next_area", next_area); - taskObj.put("next_point_code", next_point_code); - taskObj.put("vehicle_code", vehicle_code); - taskObj.put("create_name", UserInfoUtil.getNickName()); - taskObj.put("create_id", UserInfoUtil.getCurrentUserId()); - taskObj.put("create_time", DateUtil.now()); - taskObj.put("update_optid", UserInfoUtil.getCurrentUserId()); - taskObj.put("update_name", UserInfoUtil.getNickName()); - taskObj.put("update_time", DateUtil.now()); - taskObj.put("handle_class", THIS_CLASS); - //任务基础表【sch_base_task】 - WQLObject.getWQLObject("sch_base_task").insert(taskObj); - return taskObj.getString("task_id"); - } - - - @Override - public void forceFinish(String task_id) { - if (StrUtil.isEmpty(task_id)) { - throw new BadRequestException("任务id不能为空!"); - } - JSONObject taskjo = WQLObject.getWQLObject("sch_base_task").query("task_id='" + task_id + "'").uniqueResult(0); - taskjo.getString("taskfinish_mode"); - this.updateTaskStatus(taskjo, TaskStatusEnum.FINISHED.getCode()); - } - - @Override - public void pullBack(String task_id) { - - } - - @Override - public void cancel(String task_id) { - - } -} diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/SendMaterialTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/SendMaterialTask.java index 47fd17f..0370fe9 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 @@ -108,6 +108,9 @@ public class SendMaterialTask extends AbstractAcsTask { endpointObj.put("lock_type", "00"); endpointObj.put("point_status", "02"); endpointObj.put("vehicle_code", vehicle_code); + endpointObj.put("vehicle_type", jsonTask.getString("vehicle_type")); + endpointObj.put("ext_data", jsonTask.getString("request_param")); + endpointObj.put("material_id", jsonTask.getString("material_id")); endpointObj.put("update_time", DateUtil.now()); pointTab.update(endpointObj); @@ -267,6 +270,7 @@ public class SendMaterialTask extends AbstractAcsTask { 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; @@ -322,6 +326,22 @@ public class SendMaterialTask extends AbstractAcsTask { } String task_status = TaskStatusEnum.START_AND_POINT.getCode(); PointDto nextPoint = pointService.findByCode(next_point_code); + + + // 如果是压料制下,或者是分拣送料需要更新组盘信息,将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); + } + } + + // 终点点加锁 HashMap lock_map = new HashMap(); lock_map.put("lock_type", "01"); @@ -342,22 +362,27 @@ public class SendMaterialTask extends AbstractAcsTask { taskObj.put("create_name", UserInfoUtil.getNickName()); taskObj.put("create_id", UserInfoUtil.getCurrentUserId()); taskObj.put("create_time", DateUtil.now()); + taskObj.put("update_name", UserInfoUtil.getNickName()); + taskObj.put("update_id", UserInfoUtil.getCurrentUserId()); + taskObj.put("update_time", DateUtil.now()); + taskObj.put("vehicle_code", vehicle_code); taskObj.put("is_delete", "0"); + //包装工序,把木托盘类型 + if (StrUtil.equals(WorkProcedureEnum.FJGX.getCode(), workInfo.getString("workprocedure_code"))){ + String device_id = workInfo.getString("device_id"); + 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设备工单状态!"); + //木托盘类型 + taskObj.put("vehicle_type", produceObj.getString("vehicle_type")); + taskObj.put("material_id", produceObj.getString("material_id")); + taskObj.put("producetask_id", produceObj.getString("producetask_id")); + } 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); - } - } + //结束木托和钢托绑定时间 // 载具点位记录表【SCH_BASE_vehiclePointRecord】 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 18bfcd1..b9cbb5a 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 @@ -4,7 +4,6 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; @@ -12,18 +11,10 @@ import lombok.extern.slf4j.Slf4j; import org.nl.common.utils.UserInfoUtil; import org.nl.exception.BadRequestException; import org.nl.modules.system.util.CodeUtil; -import org.nl.utils.SpringContextHolder; -import org.nl.wms.WorkProcedureEnum; import org.nl.wms.common.PointUpdateUtil; -import org.nl.wms.common.StructFindUtil; -import org.nl.wms.database.service.VehicleService; -import org.nl.wms.ext.acs.service.impl.WmsToAcsServiceImpl; import org.nl.wms.ext.acs.service.impl.WmsToJnServiceImpl; import org.nl.wms.sch.manage.AbstractAcsTask; -import org.nl.wms.sch.manage.AreaEnum; import org.nl.wms.sch.manage.TaskStatusEnum; -import org.nl.wms.sch.service.PointService; -import org.nl.wms.sch.service.dto.PointDto; import org.nl.wql.WQL; import org.nl.wql.core.bean.WQLObject; import org.springframework.stereotype.Service; @@ -40,8 +31,7 @@ import java.util.HashMap; @Slf4j public class ToPackIngTask extends AbstractAcsTask { private final String THIS_CLASS = ToPackIngTask.class.getName(); - private final VehicleService vehicleService; - private final WmsToAcsServiceImpl wmsToAcsServiceImpl; + @Override public void updateTaskStatus(JSONObject taskObj, String status) { @@ -63,6 +53,7 @@ public class ToPackIngTask extends AbstractAcsTask { } if (TaskStatusEnum.FINISHED.getCode().equals(status)) { + //覆膜或者半托 String startPointCode2 = jsonTask.getString("start_point_code2"); String nextPointCode2 = jsonTask.getString("next_point_code2"); // 更新任务状态为完成 @@ -76,18 +67,22 @@ public class ToPackIngTask extends AbstractAcsTask { 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); + JSONObject startPointCode2Obj = pointTab.query("point_code='" + startPointCode2 + "'").uniqueResult(0); JSONObject nextPointCode2Obj = pointTab.query("point_code='" + nextPointCode2 + "'").uniqueResult(0); + //覆膜或者半托 if (ObjectUtil.isNotEmpty(startPointCode2Obj)) { startPointCode2Obj.put("lock_type", "00"); startPointCode2Obj.put("point_status", "00"); startPointCode2Obj.put("vehicle_code", ""); + startPointCode2Obj.put("vehicle_type", ""); + startPointCode2Obj.put("material_id", ""); startPointCode2Obj.put("update_time", DateUtil.now()); pointTab.update(startPointCode2Obj); } + //分拣机械手下料位 if (ObjectUtil.isNotEmpty(nextPointCode2Obj)) { nextPointCode2Obj.put("lock_type", "00"); nextPointCode2Obj.put("point_status", "00"); @@ -162,10 +157,10 @@ public class ToPackIngTask extends AbstractAcsTask { 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); + JSONObject startPoint = pointTable.query("point_code='" + start_point_code + "'").uniqueResult(0); + 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() + ""); @@ -173,10 +168,9 @@ public class ToPackIngTask extends AbstractAcsTask { 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("start_area", startPoint.getString("area_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"); @@ -190,16 +184,27 @@ public class ToPackIngTask extends AbstractAcsTask { String vehicle_type = form.getString("vehicle_type"); String start_area = ""; String point = ""; - String workprocedure_id = WorkProcedureEnum.FJGX.getId(); - JSONObject joo = pointTable.query("point_code='" + start_point_code + "'").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)) { - // 如果有库存,则出半满托盘 - // 叫料出库 - point = jsonObject1.getString("point_code"); - vehicle_code = jsonObject1.getString("vehicle_code"); - vehicle_type = jsonObject1.getString("vehicle_type"); - taskObj.put("start_point_code2", jsonObject1.getString("point_code")); + + //生产工单信息 + JSONObject workInfo = WQL.getWO("QSTRUCT_RULE").addParam("flag", "1").addParam("code", start_point_code) + .process().uniqueResult(0); + String device_id = workInfo.getString("device_id"); + + 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设备工单状态!"); + + + //查找半托缓存位 + JSONObject start_Point2 = pointTable.query("area_type='06' and vehicle_type = '"+produceObj.getString("vehicle_type")+"' and material_id = '"+produceObj.getString("material_id")+"'").uniqueResult(0); + + // 如果半托缓存有库存,则出半满托盘 + if (ObjectUtil.isNotEmpty(start_Point2)) { + point = start_Point2.getString("point_code"); + vehicle_code = start_Point2.getString("vehicle_code"); + vehicle_type = start_Point2.getString("vehicle_type"); + taskObj.put("start_point_code2", start_Point2.getString("point_code")); taskObj.put("next_point_code2", start_point_code); } else { // 找空木托盘 @@ -211,49 +216,25 @@ public class ToPackIngTask extends AbstractAcsTask { JSONArray pointarr2 = WQL.getWO("ACSTOMES_001").addParam("point_code", "KTPDDW5").addParam("flag", "4") .process().getResultJSONArray(0); PointUpdateUtil.updatePoint(pointarr2); - JSONObject workInfo = WQL.getWO("QSTRUCT_RULE").addParam("flag", "1").addParam("code", start_point_code) - .process().uniqueResult(0); - String device_id = workInfo.getString("device_id"); - 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(); - JSONObject param = new JSONObject(); - 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_type = produceObj.getString("vehicle_type"); + start_Point2 = pointTable.query("area_type='05' and vehicle_type = '"+produceObj.getString("vehicle_type")+"'").uniqueResult(0); + if (ObjectUtil.isEmpty(start_Point2)) { + throw new BadRequestException("覆膜区未找到合适的木托盘类型"); } - point = outStructObj.getString("struct_code"); - taskObj.put("start_point_code2", outStructObj.getString("struct_code")); + taskObj.put("start_point_code2", start_Point2.getString("point_code")); taskObj.put("next_point_code2", start_point_code); vehicle_code = CodeUtil.getNewCode("VEHICCLE_CODE_MTP"); } - // 把载具类型给RGV - JSONObject js = new JSONObject(); - JSONArray array = new JSONArray(); - js.put("device_code", "RGV2"); - js.put("code", "to_container_type"); - js.put("value", vehicle_type); - array.add(js); - try { - wmsToAcsServiceImpl.action(array); - } catch (Exception e) { - e.printStackTrace(); - } - // todo: start_point_code设置新的载具类型和载具编码 - joo.put("vehicle_code", vehicle_code); - joo.put("vehicle_type", vehicle_type); - WQLObject.getWQLObject("sch_base_point").update(joo); + startPoint.put("vehicle_code", vehicle_code); + WQLObject.getWQLObject("sch_base_point").update(startPoint); // 锁住点位 HashMap lock_map = new HashMap(); lock_map.put("lock_type", "01"); - WQLObject.getWQLObject("sch_base_point") - .update(lock_map, "point_code = '" + point + "'"); + WQLObject.getWQLObject("sch_base_point").update(lock_map, "point_code = '" + point + "'"); + + //木托盘类型 + taskObj.put("vehicle_type", vehicle_type); taskTable.insert(taskObj); return task_id; } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/st/basedata/service/wql/SCH_Base_Kiln01.wql b/wms/hd/nladmin-system/src/main/java/org/nl/wms/st/basedata/service/wql/SCH_Base_Kiln01.wql index 5adcfbe..f371ab9 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/st/basedata/service/wql/SCH_Base_Kiln01.wql +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/st/basedata/service/wql/SCH_Base_Kiln01.wql @@ -47,7 +47,6 @@ point.*, structattr.struct_id, structivt.stockrecord_id, - structivt.material_id, structivt.is_full, structivt.ivt_qty, protask.producetask_code, diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/wms.xls b/wms/hd/nladmin-system/src/main/java/org/nl/wms/wms.xls index f33bcd2..cb05667 100644 Binary files a/wms/hd/nladmin-system/src/main/java/org/nl/wms/wms.xls and b/wms/hd/nladmin-system/src/main/java/org/nl/wms/wms.xls differ diff --git a/wms/hd/nladmin-system/src/main/resources/config/application-prod.yml b/wms/hd/nladmin-system/src/main/resources/config/application-prod.yml index a1c0e09..bdf921f 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 @@ -1,5 +1,10 @@ server: port: 8012 + tomcat: + max-threads: 1000 + accept-count: 1000 + max-connections: 20000 + min-spare-threads: 100 #配置数据源 spring: datasource: