diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCleanLog.java b/wms/hd/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCleanLog.java index 0d7249b..6c2e95e 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCleanLog.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCleanLog.java @@ -20,7 +20,7 @@ import org.nl.wql.core.bean.WQLObject; import org.springframework.stereotype.Component; /** - * 测试用 + * 日志清理 * @author Zheng Jie * @date 2019-01-08 */ diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoUnLockPoint.java b/wms/hd/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoUnLockPoint.java new file mode 100644 index 0000000..4a70ebc --- /dev/null +++ b/wms/hd/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoUnLockPoint.java @@ -0,0 +1,44 @@ +/* + * Copyright 2019-2020 Zheng Jie + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.nl.modules.quartz.task; + +import lombok.extern.slf4j.Slf4j; +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; +import org.nl.wql.WQL; +import org.nl.wql.core.bean.WQLObject; +import org.springframework.stereotype.Component; + +/** + * 自动释放点位锁 + * + * @author Zheng Jie + * @date 2019-01-08 + */ +@Slf4j +@Component +public class AutoUnLockPoint { + + public void run() { + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + JSONArray arr = WQL.getWO("QTASK_01").addParam("flag", "1").process().getResultJSONArray(0); + for (int i = 0; i < arr.size(); i++) { + JSONObject json = arr.getJSONObject(i); + json.put("lock_type", "00"); + pointTab.update(json); + } + } +} diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/modules/quartz/task/QTASK_01.wql b/wms/hd/nladmin-system/src/main/java/org/nl/modules/quartz/task/QTASK_01.wql new file mode 100644 index 0000000..a45ffd7 --- /dev/null +++ b/wms/hd/nladmin-system/src/main/java/org/nl/modules/quartz/task/QTASK_01.wql @@ -0,0 +1,52 @@ +[交易说明] + 交易名: 解锁无任务的点位 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.point_uuid TYPEAS s_string + +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + IF 输入.flag = "1" + QUERY + SELECT point_code,point_uuid from sch_base_point WHERE lock_type='01' and point_code not in ( + + SELECT start_point_code as point_code from sch_base_task task WHERE is_delete='0' and task_status <>'06' + union + SELECT next_point_code as point_code from sch_base_task task WHERE is_delete='0' and task_status <>'06' + ) + ENDSELECT + ENDQUERY + ENDIF + diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/qt/service/impl/QualityTestOrderServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/qt/service/impl/QualityTestOrderServiceImpl.java index afa65a9..6fdb682 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/qt/service/impl/QualityTestOrderServiceImpl.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/qt/service/impl/QualityTestOrderServiceImpl.java @@ -159,11 +159,6 @@ public class QualityTestOrderServiceImpl implements QualityTestOrderService { if (ObjectUtil.isEmpty(ivtObj)) throw new BadRequestException("未在熟化区找到配方为【" + formula + "】,批次为【" + pcsn + "】的库存信息"); - - JSONObject jsonPoint = WQLObject.getWQLObject("sch_base_point").query("point_uuid='" + ivtObj.optString("struct_uuid") + "' and point_status ='02' and lock_type='00'").uniqueResult(0); - if (ObjectUtil.isEmpty(jsonPoint)) { - throw new BadRequestException("该点位无法操作,请检查点位状态"); - } //仓库质检单表【st_qt_qualityTestOrder】 WQLObject qtoTab = WQLObject.getWQLObject("st_qt_qualityTestOrder"); JSONObject qtoObj = new JSONObject(); @@ -184,9 +179,10 @@ public class QualityTestOrderServiceImpl implements QualityTestOrderService { //创建质检单后锁住货位 WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); JSONObject param = new JSONObject(); - jsonPoint.put("lock_type", "01"); - jsonPoint.put("remark", "创建质检单锁住点位"); - pointTab.update(jsonPoint); + param.put("point_uuid", ivtObj.optString("struct_uuid")); + param.put("lock_type", "01"); + param.put("remark", "创建质检单锁住点位"); + pointTab.update(param); } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/qt/wql/QQT_QUERY01.wql b/wms/hd/nladmin-system/src/main/java/org/nl/wms/qt/wql/QQT_QUERY01.wql index 04b497d..6900c70 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/qt/wql/QQT_QUERY01.wql +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/qt/wql/QQT_QUERY01.wql @@ -108,7 +108,8 @@ LEFT JOIN sch_base_point AS point ON ivt.struct_uuid = point.point_uuid WHERE point.area_type IN ( '02', '01' ) - + and point_status='02' + and lock_type='00' OPTION 输入.label_uuid <> "" ivt.label_uuid = 输入.label_uuid ENDOPTION diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/DumpInvTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/DumpInvTask.java index 338fcf1..d3007ba 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/DumpInvTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/DumpInvTask.java @@ -41,10 +41,14 @@ public class DumpInvTask extends AbstractAcsTask { //更新转储单状态相关信息 JSONObject dumpObj = dumpInvTab.query("task_uuid = '" + taskObj.optString("task_uuid") + "'").uniqueResult(0); - dumpObj.put("update_time", DateUtil.now()); - dumpObj.put("bill_status", DumpInvBillStatusEnum.TASK_EXECUTING.getCode()); - dumpObj.put("update_by", SecurityUtils.getCurrentUsername()); - dumpInvTab.update(dumpObj); + if (ObjectUtil.isNotEmpty(dumpObj)) { + dumpObj.put("update_time", DateUtil.now()); + dumpObj.put("bill_status", DumpInvBillStatusEnum.TASK_EXECUTING.getCode()); + dumpObj.put("update_by", SecurityUtils.getCurrentUsername()); + dumpInvTab.update(dumpObj); + } + + } //完成 if (TaskStatusEnum.FINISHED.getCode().equals(status)) { @@ -56,7 +60,7 @@ public class DumpInvTask extends AbstractAcsTask { //更新转储单状态相关信息 JSONObject dumpObj = dumpInvTab.query("task_uuid = '" + taskObj.optString("task_uuid") + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(dumpObj)){ + if (ObjectUtil.isNotEmpty(dumpObj)) { dumpObj.put("update_time", DateUtil.now()); dumpObj.put("bill_status", DumpInvBillStatusEnum.FINISHED.getCode()); dumpObj.put("update_by", SecurityUtils.getCurrentUsername()); @@ -67,25 +71,29 @@ public class DumpInvTask extends AbstractAcsTask { // 点位基础表【sch_base_point】 WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); JSONObject startPoint = pointTab.query("point_code='" + taskObj.optString("start_point_code") + "'").uniqueResult(0); - startPoint.put("lock_type", "00"); - startPoint.put("point_status", "00"); - startPoint.put("vehicle_code", ""); - pointTab.update(startPoint); - + if (ObjectUtil.isNotEmpty(startPoint)) { + startPoint.put("lock_type", "00"); + startPoint.put("point_status", "00"); + startPoint.put("vehicle_code", ""); + pointTab.update(startPoint); + } JSONObject nextPoint = pointTab.query("point_code='" + taskObj.optString("next_point_code") + "'").uniqueResult(0); - nextPoint.put("lock_type", "00"); - nextPoint.put("point_status", "02"); - nextPoint.put("vehicle_code", taskObj.optString("vehicle_code")); - pointTab.update(nextPoint); + if (ObjectUtil.isNotEmpty(nextPoint)) { + nextPoint.put("lock_type", "00"); + nextPoint.put("point_status", "02"); + nextPoint.put("vehicle_code", taskObj.optString("vehicle_code")); + pointTab.update(nextPoint); + } + //更新库存,因为是转储,直接更新货位即可 //仓位库存表【st_ivt_structIvt】 WQLObject ivtTab = WQLObject.getWQLObject("st_ivt_structIvt"); - if (ObjectUtil.isNotEmpty(dumpObj)){ + if (ObjectUtil.isNotEmpty(dumpObj)) { JSONObject turnOutIvtObj = ivtTab.query("struct_uuid = '" + dumpObj.optString("turnout_struct_uuid") + "'").uniqueResult(0); - if (!ObjectUtil.isEmpty(turnOutIvtObj)){ + if (!ObjectUtil.isEmpty(turnOutIvtObj)) { StoreIvtServiceImpl ivtService = new StoreIvtServiceImpl(); JSONObject ivtObj = new JSONObject(); ivtObj.put("struct_uuid", dumpObj.optString("turnin_struct_uuid")); @@ -107,9 +115,7 @@ public class DumpInvTask extends AbstractAcsTask { //转出仓位扣减库存 /*ivtService.addIvtFlow(ivtObj, IvtChangeTypeEnum.SUB_IVT_AND_CAN_USE); ivtObj.put("struct_uuid", dumpObj.optString("turnin_struct_uuid"));*/ - WQLObject.getWQLObject("st_ivt_structIvt").delete("struct_uuid = '"+startPoint.getString("point_uuid")+"'"); - - + WQLObject.getWQLObject("st_ivt_structIvt").delete("struct_uuid = '" + startPoint.getString("point_uuid") + "'"); } @@ -147,6 +153,17 @@ public class DumpInvTask extends AbstractAcsTask { taskObj.put("create_by", SecurityUtils.getCurrentUsername()); taskObj.put("update_time", DateUtil.now()); + + //锁住起点终点 + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + JSONObject pointParam = new JSONObject(); + pointParam.put("lock_type", "01"); + pointParam.put("update_time", DateUtil.now()); + pointParam.put("remark", "转储锁起点"); + pointTab.update(pointParam, "point_code='" + param.optString("start_point_code") + "'"); + pointParam.put("remark", "转储锁终点"); + pointTab.update(pointParam, "point_code='" + param.optString("next_point_code") + "'"); + //任务基础表【sch_base_task】 WQLObject.getWQLObject("sch_base_task").insert(taskObj); return taskObj.optString("task_uuid"); @@ -177,10 +194,9 @@ public class DumpInvTask extends AbstractAcsTask { point_codeflag = point_codeflag.substring(point_codeflag.length() - 2); JSONObject nextPoint = new JSONObject(); if (StrUtil.equals("01", point_codeflag)) { - nextPoint = WQL.getWO("QSCH_DUMP01").addParam("flag", "4").addParam("area_type", "03").process().uniqueResult(0); - } - else { - nextPoint = WQL.getWO("QSCH_DUMP01").addParam("flag", "3").addParam("area_type", "03").process().uniqueResult(0); + nextPoint = WQL.getWO("QSCH_DUMP01").addParam("flag", "4").addParam("area_type", "03").process().uniqueResult(0); + } else { + nextPoint = WQL.getWO("QSCH_DUMP01").addParam("flag", "3").addParam("area_type", "03").process().uniqueResult(0); } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/st/core/service/impl/DumpinvServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/st/core/service/impl/DumpinvServiceImpl.java index e22ce03..2755ebc 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/st/core/service/impl/DumpinvServiceImpl.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/st/core/service/impl/DumpinvServiceImpl.java @@ -173,11 +173,12 @@ public class DumpinvServiceImpl implements DumpinvService { //点位基础表【sch_base_point】 JSONObject startPoint = pointTab.query("point_uuid = '" + json.optString("turnout_struct_uuid") + "'").uniqueResult(0); startPoint.put("lock_type", "01"); - pointTab.update(startPoint); + pointTab.update(startPoint,"point_uuid ='"+startPoint.getString("point_uuid")+"'"); JSONObject nextPoint = pointTab.query("point_uuid = '" + json.optString("turnin_struct_uuid") + "'").uniqueResult(0); nextPoint.put("lock_type", "01"); - pointTab.update(nextPoint); + pointTab.update(nextPoint,"point_uuid ='"+nextPoint.getString("point_uuid")+"'"); + pointTab.update(nextPoint); } diff --git a/wms/qd/lms前端.zip b/wms/qd/lms前端.zip deleted file mode 100644 index b1c5428..0000000 Binary files a/wms/qd/lms前端.zip and /dev/null differ diff --git a/wms/qd/src/App.vue b/wms/qd/src/App.vue index ec9032c..f8183ec 100644 --- a/wms/qd/src/App.vue +++ b/wms/qd/src/App.vue @@ -1,11 +1,36 @@