diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/modules/quartz/task/TestTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCleanLog.java similarity index 76% rename from wms/hd/nladmin-system/src/main/java/org/nl/modules/quartz/task/TestTask.java rename to wms/hd/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCleanLog.java index 0d67ce0..6c2e95e 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/modules/quartz/task/TestTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCleanLog.java @@ -16,26 +16,19 @@ package org.nl.modules.quartz.task; import lombok.extern.slf4j.Slf4j; +import org.nl.wql.core.bean.WQLObject; import org.springframework.stereotype.Component; /** - * 测试用 + * 日志清理 * @author Zheng Jie * @date 2019-01-08 */ @Slf4j @Component -public class TestTask { +public class AutoCleanLog { public void run(){ - log.info("run 执行成功"); - } - - public void run1(String str){ - log.info("run1 执行成功,参数为: {}" + str); - } - - public void run2(){ - log.info("run2 执行成功"); + WQLObject.getWQLObject("sys_log").delete("1=1"); } } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoDelLogTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoDelLogTask.java deleted file mode 100644 index 9bd6948..0000000 --- a/wms/hd/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoDelLogTask.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.nl.modules.quartz.task; - -import lombok.extern.slf4j.Slf4j; -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; -import org.nl.modules.system.service.impl.ParamServiceImpl; -import org.nl.utils.SpringContextHolder; -import org.nl.wql.WQL; -import org.nl.wql.core.bean.WQLObject; -import org.springframework.stereotype.Component; - -@Slf4j -@Component -public class AutoDelLogTask { - - public void run () { - WQLObject logTab = WQLObject.getWQLObject("sys_log"); - String delete_time= SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("LOG_DELETE_TIME").getValue(); - JSONArray jsonArray = WQL.getWO("SYS_LOGS01").addParam("flag", "1").process().getResultJSONArray(0); - for (int i = 0; i < jsonArray.size(); i++) { - JSONObject json = jsonArray.getJSONObject(i); - if (Long.parseLong(delete_time) < json.getLong("time")) { - logTab.delete(json); - } - } - } -} 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..a8bc31d --- /dev/null +++ b/wms/hd/nladmin-system/src/main/java/org/nl/modules/quartz/task/QTASK_01.wql @@ -0,0 +1,58 @@ +[交易说明] + 交易名: 解锁无任务的点位 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为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' + ) + and point_uuid not in ( + SELECT turnin_struct_uuid as point_uuid from st_buss_dumpinv dump WHERE is_delete='0' and bill_status <>'04' + union + SELECT turnout_struct_uuid as point_uuid from st_buss_dumpinv dump WHERE is_delete='0' and bill_status <>'04' + + ) + ENDSELECT + ENDQUERY + ENDIF + diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/modules/quartz/task/SYS_LOGS01.wql b/wms/hd/nladmin-system/src/main/java/org/nl/modules/quartz/task/SYS_LOGS01.wql deleted file mode 100644 index 3564c3c..0000000 --- a/wms/hd/nladmin-system/src/main/java/org/nl/modules/quartz/task/SYS_LOGS01.wql +++ /dev/null @@ -1,57 +0,0 @@ -[交易说明] - 交易名: 日志 - 所属模块: - 功能简述: - 版权所有: - 表引用: - 版本经历: - -[数据库] - --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 - -[IO定义] - ################################################# - ## 表字段对应输入参数 - ################################################# - 输入.flag TYPEAS s_string - - -[临时表] - --这边列出来的临时表就会在运行期动态创建 - -[临时变量] - --所有中间过程变量均可在此处定义 - -[业务过程] - - ########################################## - # 1、输入输出检查 # - ########################################## - - - ########################################## - # 2、主过程前处理 # - ########################################## - - - ########################################## - # 3、业务主过程 # - ########################################## - - IF 输入.flag = "1" - QUERY - SELECT - TIMESTAMPDIFF(DAY,create_time,now()) AS time,request_ip,log_id - FROM - sys_log - WHERE - 1=1 - ORDER BY - create_time - LIMIT 100 - ENDSELECT - ENDQUERY - ENDIF - - - diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/modules/quartz/utils/ExecutionJob.java b/wms/hd/nladmin-system/src/main/java/org/nl/modules/quartz/utils/ExecutionJob.java index a516583..b601526 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/modules/quartz/utils/ExecutionJob.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/modules/quartz/utils/ExecutionJob.java @@ -26,15 +26,19 @@ import org.nl.modules.quartz.domain.QuartzJob; import org.nl.modules.quartz.domain.QuartzLog; import org.nl.modules.quartz.repository.QuartzLogRepository; import org.nl.modules.quartz.service.QuartzJobService; -import org.nl.service.EmailService; import org.nl.utils.RedisUtils; import org.nl.utils.SpringContextHolder; import org.nl.utils.ThrowableUtil; import org.quartz.JobExecutionContext; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.quartz.QuartzJobBean; -import java.util.*; -import java.util.concurrent.*; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.Future; +import java.util.concurrent.ThreadPoolExecutor; /** * 参考人人开源,https://gitee.com/renrenio/renren-security @@ -106,12 +110,12 @@ public class ExecutionJob extends QuartzJobBean { //更新状态 quartzJobService.updateIsPause(quartzJob); } - if(quartzJob.getEmail() != null){ + /*if(quartzJob.getEmail() != null){ EmailService emailService = SpringContextHolder.getBean(EmailService.class); // 邮箱报警 EmailVo emailVo = taskAlarm(quartzJob, ThrowableUtil.getStackTrace(e)); emailService.send(emailVo, emailService.find()); - } + }*/ quartzLogRepository.save(log); } finally { 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 efc90d0..ce68cc7 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 @@ -8,7 +8,6 @@ import net.sf.json.JSONObject; import org.nl.wms.ext.acs.service.AcsToWmsService; import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.sch.service.TaskService; -import org.nl.wms.sch.service.dto.TaskDto; import org.nl.wql.core.bean.WQLObject; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; @@ -33,7 +32,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { * task_code:任务编码 * task_status:1:执行中,2:完成 ,3:acs取消 * - * @param jsonObject 条件 * @return */ public static void main(String[] args) { @@ -48,7 +46,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { JSONArray errArr = new JSONArray(); for (int i = 0; i < array.size(); i++) { JSONObject row = array.getJSONObject(i); - String task_uuid = row.optString("task_uuid"); + String task_uuid = row.optString("ext_task_uuid"); WQLObject wo = WQLObject.getWQLObject("sch_base_task"); JSONObject taskObj = wo.query("task_uuid ='" + task_uuid + "'").uniqueResult(0); diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pc/service/impl/PCOutStoreServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pc/service/impl/PCOutStoreServiceImpl.java index e0b897c..0879260 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pc/service/impl/PCOutStoreServiceImpl.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pc/service/impl/PCOutStoreServiceImpl.java @@ -13,7 +13,6 @@ import net.sf.json.JSONObject; 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.pc.service.PCOutStoreService; import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.sch.service.PointService; @@ -22,8 +21,6 @@ import org.nl.wms.sch.tasks.OutTask; import org.nl.wms.sch.tasks.TaskTypeEnum; import org.nl.wms.st.core.IOStoreMst; import org.nl.wms.st.core.service.IOStoreService; -import org.nl.wms.st.ivt.IvtChangeTypeEnum; -import org.nl.wms.st.ivt.StoreIvtServiceImpl; import org.nl.wms.st.util.StructFindUtil; import org.nl.wql.core.bean.WQLObject; import org.springframework.stereotype.Service; @@ -103,7 +100,7 @@ public class PCOutStoreServiceImpl implements PCOutStoreService { //更新分配表 disTable.update(disjo, "bill_uuid = '" + bill_uuid + "'"); //减少库存可用数量 - StoreIvtServiceImpl ivtService = new StoreIvtServiceImpl(); + /*StoreIvtServiceImpl ivtService = new StoreIvtServiceImpl(); JSONObject param = new JSONObject(); param.put("material_uuid", disjo.optString("material_uuid")); param.put("bill_uuid", disjo.optString("bill_uuid")); @@ -117,7 +114,7 @@ public class PCOutStoreServiceImpl implements PCOutStoreService { param.put("label_uuid",disjo.optString("label_uuid")); param.put("labeldtl_uuid",disjo.optString("labeldtl_uuid")); param.put("label_code",disjo.optString("label_code")); - ivtService.addIvtFlow(param, IvtChangeTypeEnum.SUB_CAN_USE); + ivtService.addIvtFlow(param, IvtChangeTypeEnum.SUB_CAN_USE);*/ //下发任务 JSONObject taskObj = new JSONObject(); String task_status = TaskStatusEnum.START_AND_POINT.getCode(); 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 86f7ccb..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 @@ -24,8 +24,6 @@ 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.tasks.QualityTestTask; -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.nl.wql.util.WqlUtil; @@ -161,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(); @@ -186,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); } @@ -265,7 +259,8 @@ public class QualityTestOrderServiceImpl implements QualityTestOrderService { //仓库质检单表【st_qt_qualityTestOrder】 WQLObject qtoTab = WQLObject.getWQLObject("st_qt_qualityTestOrder"); final JSONObject qtoObj = qtoTab.query("bill_uuid = '" + bill_uuid + "'").uniqueResult(0); - if (StrUtil.equals(QTBillStatusEnum.FINISHED.getCode(), qtoObj.optString("bill_status"))) + + if (StrUtil.equals(QTBillStatusEnum.FINISHED.getCode(), qtoObj.optString("bill_status")) || StrUtil.equals(QTBillStatusEnum.COERCIVE_MEASURE_FINISHED.getCode(), qtoObj.optString("bill_status"))) throw new BadRequestException("已经是完成状态!"); qtoObj.put("bill_status", "06"); @@ -284,11 +279,14 @@ public class QualityTestOrderServiceImpl implements QualityTestOrderService { //更新质检次数 WQLObject ivtTab = WQLObject.getWQLObject("st_ivt_structIvt"); - int qc_num = ivtTab.query("struct_uuid = '" + qtoObj.optString("struct_uuid") + "'").uniqueResult(0).optInt("qc_num"); - qc_num++; - JSONObject ivtParam = new JSONObject(); - ivtParam.put("qc_num", qc_num); - ivtTab.update(ivtParam, "label_uuid = '" + qtoObj.optString("label_uuid") + "'"); + JSONObject ivtObj = ivtTab.query("struct_uuid = '" + qtoObj.optString("struct_uuid") + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(ivtObj)) { + int qc_num = ivtTab.query("struct_uuid = '" + qtoObj.optString("struct_uuid") + "'").uniqueResult(0).optInt("qc_num"); + qc_num++; + JSONObject ivtParam = new JSONObject(); + ivtParam.put("qc_num", qc_num); + ivtTab.update(ivtParam, "struct_uuid = '" + qtoObj.optString("struct_uuid") + "'"); + } //任务基础表【sch_base_task】 @@ -301,7 +299,7 @@ public class QualityTestOrderServiceImpl implements QualityTestOrderService { taskTab.update(outTask); } JSONObject inTask = taskTab.query("task_uuid = '" + qtoObj.optString("intask_uuid") + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(outTask)) { + if (ObjectUtil.isNotEmpty(inTask)) { inTask.put("update_time", DateUtil.now()); inTask.put("update_by", SecurityUtils.getCurrentUsername()); inTask.put("task_status", TaskStatusEnum.FINISHED.getCode()); @@ -379,13 +377,17 @@ public class QualityTestOrderServiceImpl implements QualityTestOrderService { @Override @Transactional(rollbackFor = Exception.class) public void outStock(String bill_uuid) { - JSONObject jsonQc = WQLObject.getWQLObject("st_qt_qualitytestorder").query("bill_uuid = '" + bill_uuid + "' and is_delete = '0' and is_active = '1'").uniqueResult(0); - JSONObject jsonIvt = WQLObject.getWQLObject("st_ivt_structivt").query("struct_uuid = '" + jsonQc.optString("struct_uuid") + "'").uniqueResult(0); + JSONObject jsonQc = WQLObject.getWQLObject("st_qt_qualitytestorder").query("bill_uuid = '" + bill_uuid + "' and is_delete = '0'").uniqueResult(0); + + if (StrUtil.equals(QTBillStatusEnum.COERCIVE_MEASURE_FINISHED.getCode(),jsonQc.getString("bill_status"))) throw new BadRequestException("已经是出库状态"); + WQLObject ivtTab = WQLObject.getWQLObject("st_ivt_structivt"); + + JSONObject jsonIvt = ivtTab.query("struct_uuid = '" + jsonQc.optString("struct_uuid") + "'").uniqueResult(0); if (ObjectUtil.isEmpty(jsonIvt)) { throw new BadRequestException("当前没有可出库的物料"); } //减去库存 - StoreIvtServiceImpl ivtService = new StoreIvtServiceImpl(); + /*StoreIvtServiceImpl ivtService = new StoreIvtServiceImpl(); JSONObject param = new JSONObject(); param.put("material_uuid", jsonQc.optString("material_uuid")); param.put("bill_uuid", jsonQc.optString("bill_uuid")); @@ -396,7 +398,10 @@ public class QualityTestOrderServiceImpl implements QualityTestOrderService { param.put("struct_uuid", jsonIvt.optString("struct_uuid")); param.put("vehicle_code", jsonIvt.optString("vehicle_code")); param.put("label_uuid", jsonIvt.optString("label_uuid")); - ivtService.addIvtFlow(param, IvtChangeTypeEnum.SUB_IVT_AND_CAN_USE); + ivtService.addIvtFlow(param, IvtChangeTypeEnum.SUB_IVT_AND_CAN_USE);*/ + ivtTab.delete("struct_uuid = '" + jsonQc.optString("struct_uuid") + "'"); + + //修改点位状态 PointService pointService = SpringContextHolder.getBean(PointService.class); PointDto dto = pointService.findById(jsonIvt.optString("struct_uuid")); @@ -404,11 +409,14 @@ public class QualityTestOrderServiceImpl implements QualityTestOrderService { dto.setPoint_status("00"); dto.setVehicle_code(""); JSONObject jsonTask = WQLObject.getWQLObject("sch_base_task").query("task_uuid = '" + jsonQc.optString("outtask_uuid") + "'").uniqueResult(0); - WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); - JSONObject jsonPoint = pointTab.query("point_code = '" + jsonTask.optString("next_point_code") + "'").uniqueResult(0); - jsonPoint.put("lock_type", "00"); - pointTab.update(JSONObject.fromObject(dto)); - pointTab.update(jsonPoint); + if (ObjectUtil.isNotEmpty(jsonTask)) { + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + JSONObject jsonPoint = pointTab.query("point_code = '" + jsonTask.optString("next_point_code") + "'").uniqueResult(0); + jsonPoint.put("lock_type", "00"); + pointTab.update(JSONObject.fromObject(dto)); + pointTab.update(jsonPoint); + } + //更新质检单 jsonQc.put("bill_status", QTBillStatusEnum.COERCIVE_MEASURE_FINISHED.getCode()); WQLObject.getWQLObject("st_qt_qualitytestorder").update(jsonQc); 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/AcsUtil.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/AcsUtil.java index 82d0f85..a3aba7b 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/AcsUtil.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/AcsUtil.java @@ -5,11 +5,8 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; import net.sf.json.JSONArray; import net.sf.json.JSONObject; -import org.nl.exception.BadRequestException; import org.nl.modules.system.service.impl.ParamServiceImpl; import org.nl.utils.SpringContextHolder; -import org.nl.wql.WQL; -import org.nl.wql.core.bean.WQLObject; import org.springframework.http.HttpStatus; /** @@ -31,6 +28,7 @@ public class AcsUtil { JSONObject object = list.getJSONObject(i); String value = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode(object.getString("task_type")).getValue(); object.put("priority", value); + object.put("ext_task_uuid", object.getString("task_uuid")); } //ACS地址:127.0.0.1:8010 String acsUrl = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("ACS_URL").getValue(); diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/TaskServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/TaskServiceImpl.java index 950a84a..82c18cb 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/TaskServiceImpl.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/TaskServiceImpl.java @@ -141,6 +141,7 @@ public class TaskServiceImpl implements TaskService { } } + @Transactional(rollbackFor = Exception.class) @Override public void operation(Map map) { String task_uuid = MapUtil.getStr(map, "task_uuid"); diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/AutoCleanUpLogs.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/AutoCleanUpLogs.java deleted file mode 100644 index 62cfb06..0000000 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/AutoCleanUpLogs.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.nl.wms.sch.tasks; - -import cn.hutool.core.date.DateTime; -import cn.hutool.core.date.DateUtil; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.wql.core.bean.WQLObject; -import org.springframework.stereotype.Component; - -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - - -/** - * @author geng by - * 自动清理大于十五天的日志 - */ -@Slf4j -@Component -@RequiredArgsConstructor -public class AutoCleanUpLogs { - - private ExecutorService threadPool = Executors.newCachedThreadPool(); - - public void run() throws Exception { - try { - System.out.println("开始清理日志"); - // 0 0/10 0,1 * * ? * 每天0-1点执行间隔10分钟一次 - //sys_log - //delete from sys_log where DATE(create_time) <= DATE(DATE_SUB(NOW(),INTERVAL 30 day)) limit 10; - WQLObject logTab = WQLObject.getWQLObject("sys_log"); - String days = WQLObject.getWQLObject("sys_param").query("code='clean_day'").uniqueResult(0).getString("value"); - logTab.delete("DATE(create_time) <= DATE(DATE_SUB(NOW(),INTERVAL '" + days + "' day))"); - log.info("自动清理日志执行成功...!"); - } catch (Exception e) { - e.printStackTrace(); - } - } - -} 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/sch/tasks/InTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InTask.java index d0f4d6e..d15e21f 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InTask.java @@ -242,7 +242,7 @@ public class InTask extends AbstractAcsTask { } JSONObject taskjo = WQLObject.getWQLObject("sch_base_task").query("task_uuid='" + task_uuid + "'").uniqueResult(0); taskjo.optString("taskfinish_mode", "02"); - this.updateTaskStatus(taskjo, TaskStatusEnum.FINISHED.getCode()); + this.updateTaskStatus(taskjo, TaskStatusEnum.EXECUTING.getCode()); } @Override diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutEmptyVehicleTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutEmptyVehicleTask.java index a214e8b..24a96d6 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutEmptyVehicleTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutEmptyVehicleTask.java @@ -54,26 +54,35 @@ public class OutEmptyVehicleTask extends AbstractAcsTask { //更新空载具表状态 JSONObject jsonEtv = etvTab.query("task_uuid='" + taskObj.optString("task_uuid") + "'").uniqueResult(0); - jsonEtv.put("update_by", SecurityUtils.getCurrentUsername()); - jsonEtv.put("update_time", DateUtil.now()); - jsonEtv.put("bill_status", EmptyVehicleBillStatusEnum.FINISHED.getCode()); - etvTab.update(jsonEtv); + if (ObjectUtil.isNotEmpty(jsonEtv)){ + jsonEtv.put("update_by", SecurityUtils.getCurrentUsername()); + jsonEtv.put("update_time", DateUtil.now()); + jsonEtv.put("bill_status", EmptyVehicleBillStatusEnum.FINISHED.getCode()); + etvTab.update(jsonEtv); + } //解锁货位 WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); //解锁起始点位 JSONObject startPoint = pointTab.query("point_code='" + jsonEtv.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='" + jsonEtv.optString("next_point_code") + "'").uniqueResult(0); - nextPoint.put("lock_type", "00"); - nextPoint.put("point_status", "01"); - nextPoint.put("vehicle_code", jsonEtv.optString("vehicle_code")); - pointTab.update(nextPoint); + if (ObjectUtil.isNotEmpty(nextPoint)){ + nextPoint.put("lock_type", "00"); + nextPoint.put("point_status", "01"); + if (ObjectUtil.isNotEmpty(jsonEtv)){ + nextPoint.put("vehicle_code", jsonEtv.optString("vehicle_code")); + } + pointTab.update(nextPoint); + } } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutTask.java index 94c7094..3d0bd62 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutTask.java @@ -14,14 +14,11 @@ import org.nl.wms.sch.manage.AbstractAcsTask; 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.st.ivt.IvtChangeTypeEnum; import org.nl.wms.st.ivt.StoreIvtServiceImpl; import org.nl.wms.st.util.StructFindUtil; import org.nl.wql.core.bean.WQLObject; import org.springframework.transaction.annotation.Transactional; -import java.util.List; - /** * 出库任务生成 */ @@ -178,7 +175,11 @@ public class OutTask extends AbstractAcsTask { json.put("vehicle_code", structObj.optString("vehicle_code")); json.put("task_uuid", task_uuid); disTab.update(json); - //减少库存可用数量 + + //直接删除起点 + + + /* //减少库存可用数量 JSONObject param = new JSONObject(); param.put("material_uuid", disObj.optString("material_uuid")); param.put("label_uuid", disObj.optString("label_uuid")); @@ -190,7 +191,7 @@ public class OutTask extends AbstractAcsTask { PointService pointService = SpringContextHolder.getBean(PointService.class); param.put("struct_uuid", pointService.findByCode(struct_code).getPoint_uuid()); param.put("vehicle_code", structObj.optString("vehicle_code")); - ivtService.addIvtFlow(param, IvtChangeTypeEnum.SUB_CAN_USE); + ivtService.addIvtFlow(param, IvtChangeTypeEnum.SUB_CAN_USE);*/ //修改明细表中的状态 JSONObject dtljson = dtlTab.query("billdtl_uuid='" + billdtl_uuid + "'").uniqueResult(0); dtljson.put("bill_status", "30"); diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/QualityTestTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/QualityTestTask.java index 6a343b5..9d1d0d6 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/QualityTestTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/QualityTestTask.java @@ -2,6 +2,7 @@ package org.nl.wms.sch.tasks; 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 net.sf.json.JSONObject; import org.nl.exception.BadRequestException; @@ -75,13 +76,16 @@ public class QualityTestTask extends AbstractAcsTask { qtoTab.update(qtObj, "intask_uuid = '" + task_uuid + "'"); //更新质检次数 //仓位库存表【st_ivt_structIvt】 - String label_uuid = qtoTab.query("intask_uuid = '" + task_uuid + "'").uniqueResult(0).optString("label_uuid"); + String struct_uuid = qtoTab.query("intask_uuid = '" + task_uuid + "'").uniqueResult(0).optString("struct_uuid"); WQLObject ivtTab = WQLObject.getWQLObject("st_ivt_structIvt"); - int qc_num = ivtTab.query("label_uuid = '" + label_uuid + "'").uniqueResult(0).optInt("qc_num"); - qc_num++; - JSONObject ivtParam = new JSONObject(); - ivtParam.put("qc_num", qc_num); - ivtTab.update(ivtParam, "label_uuid = '" + label_uuid + "'"); + JSONObject ivtObj= ivtTab.query("struct_uuid = '" + struct_uuid + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(ivtObj)){ + int qc_num = ivtTab.query("struct_uuid = '" + struct_uuid + "'").uniqueResult(0).optInt("qc_num"); + qc_num++; + JSONObject ivtParam = new JSONObject(); + ivtParam.put("qc_num", qc_num); + ivtTab.update(ivtParam, "struct_uuid = '" + struct_uuid + "'"); + } //更新质检点位状态 JSONObject pointObj = new JSONObject(); 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/hd/nladmin-system/src/main/java/org/nl/wms/st/core/service/impl/IOStoreServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/st/core/service/impl/IOStoreServiceImpl.java index 952d5a9..a47ee0a 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/st/core/service/impl/IOStoreServiceImpl.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/st/core/service/impl/IOStoreServiceImpl.java @@ -245,7 +245,7 @@ public class IOStoreServiceImpl implements IOStoreService { //出库 if (StrUtil.equals("20", buss_type)) { param.put("struct_uuid", pointService.findByCode(disObj.optString("start_point_code")).getPoint_uuid()); - ivtService.addIvtFlow(param, IvtChangeTypeEnum.SUB_CAN_USE); + /*ivtService.addIvtFlow(param, IvtChangeTypeEnum.SUB_CAN_USE);*/ } } @@ -375,7 +375,7 @@ public class IOStoreServiceImpl implements IOStoreService { param.put("change_weight", disObj.optString("realassign_weight")); param.put("struct_uuid", startPoint.getPoint_uuid()); param.put("vehicle_code", vehicle_code); - ivtService.addIvtFlow(param, IvtChangeTypeEnum.SUB_CAN_USE); + /*ivtService.addIvtFlow(param, IvtChangeTypeEnum.SUB_CAN_USE)*/; } } AbstractIOStoreManager manager = new IOStoreManager(); diff --git a/wms/hd/nladmin-system/src/main/resources/logback-spring.xml b/wms/hd/nladmin-system/src/main/resources/logback-spring.xml index 67a968e..7169ebb 100644 --- a/wms/hd/nladmin-system/src/main/resources/logback-spring.xml +++ b/wms/hd/nladmin-system/src/main/resources/logback-spring.xml @@ -56,7 +56,7 @@ https://juejin.cn/post/6844903775631572999 - + 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 @@ diff --git a/wms/qd/src/views/wms/pdm/produceTask/bigScreen.vue b/wms/qd/src/views/wms/pdm/produceTask/bigScreen.vue index 47ec4f8..d68ea64 100644 --- a/wms/qd/src/views/wms/pdm/produceTask/bigScreen.vue +++ b/wms/qd/src/views/wms/pdm/produceTask/bigScreen.vue @@ -1,20 +1,20 @@