From 6846288b0df7a2151763402ee49721bc35b51274 Mon Sep 17 00:00:00 2001 From: 18188916393 <2562295436@qq.com> Date: Tue, 11 Oct 2022 19:11:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=86=E9=85=8D=E8=A7=84?= =?UTF-8?q?=E5=88=99=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=8D=8A=E6=89=98=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E5=BC=BA=E5=88=B6=E5=8E=BB=E5=8C=85=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/nl/wms/common/PointUpdateUtil.java | 5 +- .../org/nl/wms/common/StructFindUtil.java | 4 +- .../org/nl/wms/common/wql/QSTRUCT_RULE.wql | 10 +- .../acs/service/impl/AcsToWmsServiceImpl.java | 18 +- .../wms/sch/manage/buss/CallMaterialTask.java | 13 +- .../wms/sch/manage/buss/FmjToPackIngTask.java | 236 ++++++++++++++++++ .../nl/wms/sch/task/AutoOutStructTask.java | 9 +- .../src/main/java/org/nl/wms/wms.xls | Bin 437248 -> 402432 bytes 8 files changed, 271 insertions(+), 24 deletions(-) create mode 100644 wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/FmjToPackIngTask.java 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 34eed99..d550094 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 @@ -32,7 +32,8 @@ public class PointUpdateUtil { 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"))) { @@ -42,12 +43,12 @@ public class PointUpdateUtil { 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); } 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 e1bf085..3372f93 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 @@ -112,7 +112,9 @@ public class StructFindUtil { JSONObject materialObj = materialTable.query("material_id ='" + material_id + "'").uniqueResult(0); //获取可以用的输送线数组 JSONObject result = WQL.getWO("QSTRUCT_RULE").addParam("flag", "6") - .addParam("material_type", materialObj.getString("material_type")).process().uniqueResult(0); + .addParam("material_type", materialObj.getString("material_type")) + .addParam("material_code", materialObj.getString("material_code")) + .process().uniqueResult(0); 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 9f04bfb..2c7a621 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 @@ -27,6 +27,7 @@ 输入.group_device TYPEAS s_string 输入.point_code TYPEAS s_string 输入.material_type TYPEAS s_string + 输入.material_code TYPEAS s_string [临时表] @@ -217,10 +218,14 @@ IF 输入.flag = "6" AND point.MODE <> '0' AND ( point.vehicle_code = '' OR point.vehicle_code IS NULL ) AND task.task_code IS NULL - AND point.point_status ='00' + AND point.point_status = '00' + and point.material_code<>'0' OPTION 输入.material_type <> "" point.material_type = 输入.material_type ENDOPTION + OPTION 输入.material_code <> "" + point.material_code = 输入.material_code + ENDOPTION ENDSELECT ENDQUERY ENDIF @@ -423,6 +428,9 @@ IF 输入.flag = "14" OPTION 输入.material_type <> "" material.material_type = 输入.material_type ENDOPTION + OPTION 输入.material_code <> "" + material.material_code = 输入.material_code + ENDOPTION order by ruledis.out_seq_no ENDSELECT ENDQUERY 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 cd3ac95..0445321 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 @@ -52,6 +52,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { private final ToConveyorTask toConveyorTask; private final TaskService taskService; private final ToPackIngTask toPackIngTask; + private final FmjToPackIngTask fmjToPackIngTask; @Override @@ -143,6 +144,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { toPackIngTask.createTask((JSONObject) JSON.toJSON(jsonObject)); break; } + //假如是半托缓存的几个位置,强制去包装 + if (StrUtil.equals(area_type, AreaEnum.MTPQ.getCode())) { + fmjToPackIngTask.createTask((JSONObject) JSON.toJSON(jsonObject)); + } //假如是分拣机械手的下料位置,则需要将点位上的托盘号写入 if (StrUtil.equals(area_type, AreaEnum.FJQY.getCode())) { String vehicle_code = pointTable.query("point_code ='" + device_code + "'").uniqueResult(0).getString("vehicle_code"); @@ -159,6 +164,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { WmsToJnServiceImpl wmsToJnService = new WmsToJnServiceImpl(); // wmsToJnService.feedBackQualityInfo(record_id); } + break; case "2": //叫料出库 @@ -294,7 +300,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { //产品编码 String product_code = String.valueOf(jsonObject.get("product_code")); //String material_code = (String) jsonObject.get("material_code"); - if (StrUtil.isEmpty(product_code)){ + if (StrUtil.isEmpty(product_code)) { throw new BadRequestException("产品编号不能为空!"); } produceInfoByCode = this.getProduceInfoByCode(device_code); @@ -459,18 +465,16 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String device_id = pointTable.query("point_code ='" + device_code + "'").uniqueResult(0).getString("device_id"); String next_point_code = pointTable.query("device_id ='" + device_id + "' and device_point_type ='02'").uniqueResult(0).getString("point_code"); param.put("next_point_code", next_point_code); - String conveyorTask_id = task.createTask(param); - JSONObject conveyorTaskObj = WQLObject.getWQLObject("sch_base_task").query("task_id='" + conveyorTask_id + "'").uniqueResult(0); - - AcsTaskDto taskDto = new AcsTaskDto(); + // String conveyorTask_id = task.createTask(param); + // JSONObject conveyorTaskObj = WQLObject.getWQLObject("sch_base_task").query("task_id='" + conveyorTask_id + "'").uniqueResult(0); + /*AcsTaskDto taskDto = new AcsTaskDto(); taskDto.setExt_task_uuid(conveyorTaskObj.getString("task_id")); taskDto.setTask_code(conveyorTaskObj.getString("task_code")); taskDto.setRoute_plan_code("normal"); taskDto.setStart_device_code(conveyorTaskObj.getString("start_point_code")); taskDto.setNext_device_code(conveyorTaskObj.getString("next_point_code")); taskDto.setVehicle_code(conveyorTaskObj.getString("vehicle_code")); - - data = (JSONObject) JSONObject.parse(JSON.toJSONString(taskDto)); + data = (JSONObject) JSONObject.parse(JSON.toJSONString(taskDto));*/ } JSONObject result = new JSONObject(); result.put("status", HttpStatus.OK.value()); 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 96a3a2f..893869a 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 @@ -105,18 +105,7 @@ public class CallMaterialTask extends AbstractAcsTask { endpointObj.put("point_status", "02"); endpointObj.put("vehicle_code", vehicle_code); pointTab.update(endpointObj); - //如果起点静置货架,则考虑是不是最后一拖,如果是则考虑改变系统参数 - String start_area = startPointDto.getArea_type(); - if (StrUtil.equals(start_area, AreaEnum.RYHCHJ.getCode())) { - //查询有没有可以出库的货物 如果没有则需要改变系统参数 - JSONObject outCacheStruct = StructFindUtil.getOutCacheStruct(); - if (ObjectUtil.isEmpty(outCacheStruct)) { - WQLObject paramTable = WQLObject.getWQLObject("sys_param"); - JSONObject paramObj = paramTable.query("code='is_canToConveyor'").uniqueResult(0); - paramObj.put("value", "1"); - paramTable.update(paramObj); - } - } + ////如果终点是分拣区域,则更新木托盘铁托盘记录表 String next_area = nextPointDto.getArea_type(); if (StrUtil.equals(next_area, AreaEnum.FJQY.getCode())) { 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 new file mode 100644 index 0000000..9e44e0c --- /dev/null +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/FmjToPackIngTask.java @@ -0,0 +1,236 @@ +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 lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.exception.BadRequestException; +import org.nl.modules.system.util.CodeUtil; +import org.nl.utils.SecurityUtils; +import org.nl.utils.SpringContextHolder; +import org.nl.wms.WorkProcedureEnum; +import org.nl.wms.sch.manage.AbstractAcsTask; +import org.nl.wms.sch.manage.BillTypeEnum; +import org.nl.wms.sch.manage.TaskStatusEnum; +import org.nl.wms.sch.service.PointService; +import org.nl.wms.sch.service.dto.PointDto; +import org.nl.wms.sch.service.impl.PointServiceImpl; +import org.nl.wms.st.ivt.IvtChangeTypeEnum; +import org.nl.wms.st.ivt.StoreIvtServiceImpl; +import org.nl.wql.core.bean.WQLObject; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.HashMap; + +@Service +@RequiredArgsConstructor +@Slf4j +public class FmjToPackIngTask extends AbstractAcsTask { + private final String THIS_CLASS = FmjToPackIngTask.class.getName(); + + + @Override + @Transactional + public void updateTaskStatus(JSONObject taskObj, String status) { + /** + *改变任务状态 + **/ + String task_id = taskObj.getString("task_id"); + WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); + JSONObject jsonTask = taskTab.query("task_id='" + task_id + "'").uniqueResult(0); + if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { + //更新任务状态为执行中 + jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); + jsonTask.put("update_time", DateUtil.now()); + taskTab.update(jsonTask); + HashMap map = new HashMap(); + map.put("update_optid", SecurityUtils.getCurrentUserId()); + map.put("update_optname", SecurityUtils.getNickName()); + map.put("update_time", DateUtil.now()); + map.put("bill_status", "40"); + WQLObject.getWQLObject("ST_IVT_workProcedureIOS").update(map, "task_id='" + jsonTask.getString("task_id") + "'"); + } + + if (TaskStatusEnum.FINISHED.getCode().equals(status)) { + // 更新任务状态为完成 + jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode()); + jsonTask.put("taskfinish_mode", taskObj.getString("taskfinish_mode")); + jsonTask.put("update_time", DateUtil.now()); + jsonTask.put("remark", "任务执行完成"); + 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", ""); + pointTab.update(startPointObj); + ///审核单据 增加库存 改变出入库表的状态 + WQLObject mstTab = WQLObject.getWQLObject("ST_IVT_workProcedureIOS"); + JSONObject mstObj = mstTab.query("task_id='" + task_id + "' and is_delete='0'").uniqueResult(0); + //审核 加库存可和用数量 + StoreIvtServiceImpl ivtService = new StoreIvtServiceImpl(); + mstObj.put("bill_status", "50"); + mstObj.put("confirm_optid", SecurityUtils.getCurrentUserId()); + mstObj.put("confirm_optname", SecurityUtils.getNickName()); + mstObj.put("confirm_time", DateUtil.now()); + mstTab.update(mstObj); + + String iostorinv_id = mstObj.getString("iostorinv_id"); + String next_point_code = mstObj.getString("end_point_code"); + String start_point_code = mstObj.getString("start_point_code"); + JSONObject param = new JSONObject(); + param.put("material_id", mstObj.getString("material_id")); + param.put("bill_id", iostorinv_id); + param.put("qty_unit_id", mstObj.getString("qty_unit_id")); + param.put("pcsn", mstObj.getString("pcsn")); + param.put("change_qty", mstObj.getString("qty")); + param.put("vehicle_code", mstObj.getString("vehicle_code")); + param.put("workprocedure_id", mstObj.getString("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); + } + param.put("struct_id", startPointDto.getPoint_id()); + ivtService.addIvtFlow(param, IvtChangeTypeEnum.SUB_IVT); + } + + } + + @Override + public void findStartPoint() { + + } + + @Override + public void findNextPoint() { + + } + + @Override + @Transactional + public String createTask(JSONObject form) { + String start_point_code = form.getString("start_point_code"); + WQLObject point_table = WQLObject.getWQLObject("sch_base_point"); + WQLObject ivt_table = WQLObject.getWQLObject("st_ivt_structivt"); + JSONObject start_pointObj = point_table.query("point_code='" + start_point_code + "'").uniqueResult(0); + String struct_id = start_pointObj.getString("point_id"); + JSONObject ivtObj = ivt_table.query("struct_id ='" + struct_id + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(ivtObj)) { + throw new BadRequestException("仓位为'" + start_point_code + "'未找到库存信息!"); + } + String next_point_code = "BZSLW"; + String material_id = ivtObj.getString("material_id"); + String is_full = ivtObj.getString("is_full"); + String qty = ivtObj.getString("qty"); + String pcsn = ivtObj.getString("pcsn"); + String vehicle_code = ivtObj.getString("vehicle_code"); + 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") + "' 未完成!"); + } + String task_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + //创建出库单据 + JSONObject iosObj = new JSONObject(); + String 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", BillTypeEnum.FJCK.getCode()); + iosObj.put("workprocedure_id", WorkProcedureEnum.BZGX.getId()); + iosObj.put("ivt_workprocedure_id", WorkProcedureEnum.FJGX.getId()); + iosObj.put("material_id", material_id); + iosObj.put("vehicle_code", vehicle_code); + iosObj.put("producetask_id", ivtObj.getString("producetask_id")); + iosObj.put("qty", qty); + iosObj.put("qty_unit_id", ivtObj.getString("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", start_pointObj.getString("area_type")); + iosObj.put("end_area", "28"); + iosObj.put("create_mode", "01"); + 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); + //加锁 + 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", ivtObj.getString("qty_unit_id")); + param.put("change_qty", qty); + param.put("struct_id", start_pointObj.getString("point_id")); + param.put("vehicle_code", vehicle_code); + param.put("workprocedure_id", WorkProcedureEnum.FJGX.getId()); + ivtService.addIvtFlow(param, IvtChangeTypeEnum.SUB_CAN_USE); + + PointService pointService = SpringContextHolder.getBean(PointService.class); + PointDto startPoint = pointService.findByCode(start_point_code); + String task_status = TaskStatusEnum.START_AND_POINT.getCode(); + PointDto nextPoint = pointService.findByCode(next_point_code); + JSONObject taskObj = new JSONObject(); + taskObj.put("task_id", task_id); + taskObj.put("task_code", CodeUtil.getNewCode("TASK_CODE")); + taskObj.put("task_type", "00"); + taskObj.put("acs_task_type", "1"); + taskObj.put("task_status", task_status); + taskObj.put("start_point_code", start_point_code); + taskObj.put("start_area", startPoint.getArea_type()); + taskObj.put("request_param", form.toJSONString()); + taskObj.put("next_point_code", next_point_code); + taskObj.put("next_area", nextPoint.getArea_type()); + taskObj.put("vehicle_code", vehicle_code); + taskObj.put("handle_class", THIS_CLASS); + taskObj.put("is_auto_issue", "1"); + taskObj.put("create_name", SecurityUtils.getCurrentUsername()); + taskObj.put("create_id", SecurityUtils.getCurrentUserId()); + taskObj.put("create_time", DateUtil.now()); + taskObj.put("is_delete", "0"); + taskTable.insert(taskObj); + return task_id; + } + + + @Override + public void forceFinish(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); + } + + @Override + public void pullBack(String task_id) { + + } + + @Override + public void cancel(String task_id) { + + } + + +} diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/task/AutoOutStructTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/task/AutoOutStructTask.java index 6b975be..cb4e805 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/task/AutoOutStructTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/task/AutoOutStructTask.java @@ -44,7 +44,14 @@ public class AutoOutStructTask { for (int i = 0; i < arr.size(); i++) { JSONObject jo = arr.getJSONObject(i); String material_type = jo.getString("material_type"); - JSONObject outObj = WQL.getWO("QSTRUCT_RULE").addParam("flag", "14").addParam("material_type", material_type).process().uniqueResult(0); + String material_code = jo.getString("material_code"); + if (StrUtil.equals(material_code, "0")) { + material_code = ""; + } + JSONObject outObj = WQL.getWO("QSTRUCT_RULE").addParam("flag", "14") + .addParam("material_type", material_type) + .addParam("material_code", material_code) + .process().uniqueResult(0); if (ObjectUtil.isNotEmpty(outObj)) { material_id = outObj.getString("material_id"); vehicle_code = outObj.getString("vehicle_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 e301bf60e3ab1792372d390c625140b45d9bd6da..db07a12e8abf41cfe437354056ecd398d8351247 100644 GIT binary patch delta 27283 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 tQO;F-4w96R-5a^yN!hHd-@gqM{y*bcV-f%W delta 57697 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