From 12a59a083c2519dc59692ef84d0a1aee90987cab Mon Sep 17 00:00:00 2001
From: zhouz <>
Date: Fri, 14 Jun 2024 09:07:00 +0800
Subject: [PATCH 1/3] =?UTF-8?q?fix:=E5=86=85=E5=8C=85=E9=97=B4=E4=BB=A3?=
=?UTF-8?q?=E7=A0=81=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../slitter/auto/AutoCallAirShaftTask.java | 33 +++++++++++--------
.../service/impl/SlitterServiceImpl.java | 6 ++--
.../main/resources/config/application-dev.yml | 7 ++--
3 files changed, 26 insertions(+), 20 deletions(-)
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoCallAirShaftTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoCallAirShaftTask.java
index a888d254c..dcd4cb912 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoCallAirShaftTask.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoCallAirShaftTask.java
@@ -39,9 +39,9 @@ import java.util.stream.Collectors;
/**
* @Author: lyd
* @Date: 2024/2/1
- * @see TrussCallAirShaftTask#createTask(JSONObject)
* @Description: 自动任务 呼叫套轴 根据分切计划来呼叫套轴任务 桁架任务
*
注:内包间只是区分气胀轴大小(即代数),不需要区分锂电/标箔
+ * @see TrussCallAirShaftTask#createTask(JSONObject)
*/
@Slf4j
@Component
@@ -81,7 +81,7 @@ public class AutoCallAirShaftTask {
public void run() {
// 1、获取空的插拔轴位(无任务)
List emptyPoints = bstIvtShafttubeivtService.getAllShaftPointsByConditions("2",
- "0","0");
+ "0", "0");
emptyPoints.forEach(empty -> {
// 标箔:1,锂电:2 改:大小:4代5代
String specification = empty.getQzz_generation();
@@ -163,7 +163,7 @@ public class AutoCallAirShaftTask {
param.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
param.put("qzz_size", needPlan.getQzz_size());
// 所需的纸管规格
- SlitterTaskUtil.putNeedPaperSpec(param, needPlans);
+ SlitterTaskUtil.putNeedPaperSpec(param, needPlans);
// 当前纸管的规格信息
String oldQzzNo = ObjectUtil.isNotEmpty(startPoint.getQzz_no1())
? startPoint.getQzz_no1() : startPoint.getQzz_no2();
@@ -192,8 +192,9 @@ public class AutoCallAirShaftTask {
/**
* 呼叫AGV更换纸管
+ *
* @param needPlans 所需要套轴的分切计划
- * @param location 位置
+ * @param location 位置
*/
public void toCallAgvMovePaperTube(List needPlans, String location, BstIvtShafttubeivt empty) {
// 最多两根
@@ -235,7 +236,7 @@ public class AutoCallAirShaftTask {
// 筛选3个位置中数量最少的搬走
BstIvtStockingivt needMovePoint = stockingivtService.getCanMovePointOne(location, "1");
// 空位就直接创建搬过来的任务
- if ("0".equals(needMovePoint.getIvt_status())) {
+ if (ObjectUtil.isEmpty(needMovePoint) || "0".equals(needMovePoint.getIvt_status())) {
// 直接搬过来即可
JSONObject param = new JSONObject();
param.put("point_code1", needPoint.getPoint_code());
@@ -261,13 +262,14 @@ public class AutoCallAirShaftTask {
/**
* 获取对应的气胀轴库1
- * @param qzzSize 气涨轴尺寸
+ *
+ * @param qzzSize 气涨轴尺寸
* @param location 位置:上半部分还是下半部分
- * @param empty 套拔轴点位
+ * @param empty 套拔轴点位
*/
private void toAcsOutShaft(String qzzSize, String location, BstIvtShafttubeivt empty) {
// 需要区分上下
- List shafttubeivts = bstIvtShafttubeivtService.getByQzzSize(qzzSize, empty.getPoint_code(), location);
+ List shafttubeivts = bstIvtShafttubeivtService.getByQzzSize(qzzSize, empty.getPoint_code(), location);
if (shafttubeivts.size() == 0) {
throw new BadRequestException("气胀轴库找不到[" + qzzSize + "]规格的气涨轴");
}
@@ -286,10 +288,11 @@ public class AutoCallAirShaftTask {
/**
* todo: 预留
* 创建气涨轴缓存的桁架任务
- * @param qzzSize 气涨轴尺寸
+ *
+ * @param qzzSize 气涨轴尺寸
* @param specification 标箔、锂电(1,2)
- * @param location 位置:上半部分还是下半部分
- * @param empty 套拔轴点位
+ * @param location 位置:上半部分还是下半部分
+ * @param empty 套拔轴点位
*/
@Deprecated
private void toCreatShaftCacheTask(String qzzSize, String specification, String location, BstIvtShafttubeivt empty) {
@@ -311,9 +314,10 @@ public class AutoCallAirShaftTask {
/**
* 保存信息到点位上
- * @param empty 套拔轴机位置
+ *
+ * @param empty 套拔轴机位置
* @param needPlans 需要的分切计划
- * @param qzzSize 气涨轴尺寸
+ * @param qzzSize 气涨轴尺寸
*/
private void saveCutPlanMessage(BstIvtShafttubeivt empty, List needPlans, String qzzSize) {
empty.setHave_qzz(SlitterConstant.SLITTER_YES);
@@ -355,7 +359,8 @@ public class AutoCallAirShaftTask {
/**
* 不需要套轴,就只做拔轴
* update: 不需要(区分标箔、锂电)
- * @param empty 空的插拔轴点位
+ *
+ * @param empty 空的插拔轴点位
* @param specification 代数(4、5)
*/
private void makePullShaft(BstIvtShafttubeivt empty, String specification) {
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java
index 6f4d481ac..3eeec9c40 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java
@@ -768,9 +768,9 @@ public class SlitterServiceImpl implements SlitterService {
.filter(ObjectUtil::isNotEmpty).collect(Collectors.toList());
LambdaUpdateWrapper upPlanLam = new LambdaUpdateWrapper<>();
upPlanLam.set(PdmBiSlittingproductionplan::getIs_paper_ok, "1")
- .eq(PdmBiSlittingproductionplan::getUpdate_optid, SecurityUtils.getCurrentUserId())
- .eq(PdmBiSlittingproductionplan::getUpdate_optname, SecurityUtils.getCurrentUsername())
- .eq(PdmBiSlittingproductionplan::getUpdate_time, DateUtil.now())
+ .set(PdmBiSlittingproductionplan::getUpdate_optid, SecurityUtils.getCurrentUserId())
+ .set(PdmBiSlittingproductionplan::getUpdate_optname, SecurityUtils.getCurrentUsername())
+ .set(PdmBiSlittingproductionplan::getUpdate_time, DateUtil.now())
.in(PdmBiSlittingproductionplan::getContainer_name, containers);
slittingproductionplanService.update(upPlanLam);
//3、清空当前穿拔轴点位的库存信息
diff --git a/lms/nladmin-system/src/main/resources/config/application-dev.yml b/lms/nladmin-system/src/main/resources/config/application-dev.yml
index 48ffe5b35..de4e8abc4 100644
--- a/lms/nladmin-system/src/main/resources/config/application-dev.yml
+++ b/lms/nladmin-system/src/main/resources/config/application-dev.yml
@@ -6,10 +6,11 @@ spring:
druid:
db-type: com.alibaba.druid.pool.DruidDataSource
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
- url: jdbc:log4jdbc:mysql://${DB_HOST:10.1.3.91}:${DB_PORT:3306}/${DB_NAME:lzhl_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
-# url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:lzhl_two_test}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
+# url: jdbc:log4jdbc:mysql://${DB_HOST:10.1.3.91}:${DB_PORT:3306}/${DB_NAME:lzhl_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
+ url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:lms_xc}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
username: ${DB_USER:root}
- password: ${DB_PWD:NLABC&hl123}
+# password: ${DB_PWD:NLABC&hl123}
+ password: ${DB_PWD:root}
# 初始连接数
initial-size: 5
# 最小连接数
From f4c93965b928e7ab020dda0245c78ae03d0abfee Mon Sep 17 00:00:00 2001
From: liuxy
Date: Fri, 14 Jun 2024 14:13:50 +0800
Subject: [PATCH 2/3] =?UTF-8?q?rev=EF=BC=9A=E5=87=BA=E5=BA=93=E4=BB=BB?=
=?UTF-8?q?=E5=8A=A1=E6=8B=86=E5=88=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../org/nl/b_lms/sch/tasks/TwoLashTask.java | 7 +
.../nl/b_lms/sch/tasks/TwoOutHeapTask.java | 178 ++++++++++++++++++
.../org/nl/b_lms/sch/tasks/TwoOutTask.java | 41 +++-
.../storage_manage/ios/enums/IOSEnum.java | 8 +-
.../impl/StIvtIostorinvOutServiceImpl.java | 40 ++--
.../util/impl/LashManageServiceImpl.java | 39 +++-
.../util/service/LashManageService.java | 13 +-
.../src/views/wms/st/outbill/DivDialog.vue | 6 +-
8 files changed, 299 insertions(+), 33 deletions(-)
create mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutHeapTask.java
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoLashTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoLashTask.java
index 932931144..5d462b9e9 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoLashTask.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoLashTask.java
@@ -55,6 +55,8 @@ public class TwoLashTask extends AbstractAcsTask {
/*
* 下发给ACS时需要特殊处理
*/
+ //任务表
+ WQLObject wo_Task = WQLObject.getWQLObject("sch_base_task");
JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0);
// 查询木箱信息
@@ -104,6 +106,11 @@ public class TwoLashTask extends AbstractAcsTask {
.interaction_json(interaction_json)
.build();
resultList.add(dto);
+
+ // 更新任务为下发
+ JSONObject paramMap = new JSONObject();
+ paramMap.put("task_status", TaskStatusEnum.ISSUE.getCode());
+ wo_Task.update(paramMap, "task_id ='" + json.getString("task_id") + "'");
}
return resultList;
}
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutHeapTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutHeapTask.java
new file mode 100644
index 000000000..353b5f2b1
--- /dev/null
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutHeapTask.java
@@ -0,0 +1,178 @@
+package org.nl.b_lms.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 com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
+import org.nl.b_lms.storage_manage.ios.service.iostorInv.impl.StIvtIostorinvOutServiceImpl;
+import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.impl.LashManageServiceImpl;
+import org.nl.common.utils.SecurityUtils;
+import org.nl.modules.common.exception.BadRequestException;
+import org.nl.modules.wql.core.bean.WQLObject;
+import org.nl.modules.wql.util.SpringContextHolder;
+import org.nl.wms.sch.AcsTaskDto;
+import org.nl.wms.sch.manage.AbstractAcsTask;
+import org.nl.wms.sch.manage.TaskStatusEnum;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 堆垛机点位至行架点位任务(出库)
+ * Created by Lxy on 2021/12/22.
+ */
+@Service
+public class TwoOutHeapTask extends AbstractAcsTask {
+ private final String THIS_CLASS = TwoOutHeapTask.class.getName();
+
+ @Override
+ public List addTask() {
+ /*
+ * 下发给ACS时需要特殊处理
+ */
+ //任务表
+ WQLObject wo_Task = WQLObject.getWQLObject("sch_base_task");
+
+ JSONArray taskArr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0);
+
+ ArrayList resultList = new ArrayList<>();
+
+ for (int i = 0; i < taskArr.size(); i++) {
+ JSONObject json = taskArr.getJSONObject(i);
+
+ char dtl_type = json.getString("task_type").charAt(json.getString("task_type").length() - 1);
+ AcsTaskDto dto = AcsTaskDto.builder()
+ .ext_task_id(json.getString("task_id"))
+ .task_code(json.getString("task_code"))
+ .task_type(json.getString("acs_task_type"))
+ .start_device_code(json.getString("point_code1"))
+ .next_device_code(json.getString("point_code2"))
+ .vehicle_code(json.getString("vehicle_code"))
+ .interaction_json(json.getJSONObject("request_param"))
+ .priority(json.getString("priority"))
+ .class_type(json.getString("task_type"))
+ .dtl_type(String.valueOf(dtl_type))
+ .remark(json.getString("remark"))
+ .build();
+ resultList.add(dto);
+
+ // 更新任务为下发
+ JSONObject paramMap = new JSONObject();
+ paramMap.put("task_status", TaskStatusEnum.ISSUE.getCode());
+ wo_Task.update(paramMap, "task_id ='" + json.getString("task_id") + "'");
+ }
+ return resultList;
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void updateTaskStatus(JSONObject taskObj, String status) {
+ WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
+
+ String task_id = taskObj.getString("task_id");
+ JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "' and task_status < '07'").uniqueResult(0);
+
+ if (ObjectUtil.isNotEmpty(jsonTask)) {
+ if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
+ // 任务为执行之后就不允许取消
+ if (jsonTask.getIntValue("task_status") > Integer.parseInt(TaskStatusEnum.ISSUE.getCode())) {
+ throw new BadRequestException("任务:" + jsonTask.getString("task_code") + "已执行,不可取消");
+ }
+
+ // 更新删除字段
+ jsonTask.put("is_delete", "1");
+ jsonTask.put("update_time", DateUtil.now());
+ taskTab.update(jsonTask);
+ }
+
+ if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
+ // 更新任务状态为执行中
+ jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode());
+ jsonTask.put("update_time", DateUtil.now());
+ taskTab.update(jsonTask);
+
+ }
+
+ if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
+ // 更新任务完成
+ jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode());
+ jsonTask.put("update_time", DateUtil.now());
+ taskTab.update(jsonTask);
+
+ // 下发桁架任务:捆扎
+ JSONObject jsonParam = new JSONObject();
+ jsonParam.put("device_code",jsonTask.getString("point_code2"));
+ jsonParam.put("vehicle_code",jsonTask.getString("vehicle_code"));
+
+ LashManageServiceImpl bean1 = SpringContextHolder.getBean(LashManageServiceImpl.class);
+ bean1.createLashTask(jsonParam);
+
+ }
+ }
+
+ }
+
+ @Override
+ public void findStartPoint() {
+
+ }
+
+ @Override
+ public void findNextPoint() {
+
+ }
+
+ @Override
+ public String createTask(JSONObject form) {
+ String currentUserId = SecurityUtils.getCurrentUserId();
+ String currentUsername = SecurityUtils.getCurrentUsername();
+
+ JSONObject json = new JSONObject();
+ json.put("task_id", IdUtil.getSnowflake(1, 1).nextId());
+ json.put("task_code", IdUtil.getSnowflake(1, 1).nextId());
+
+ json.put("task_type", form.getString("task_type"));
+ json.put("vehicle_code", form.getString("vehicle_code"));
+ json.put("vehicle_code2", form.getString("vehicle_code2"));
+ json.put("vehicle_type", form.getString("vehicle_type"));
+ json.put("task_name", form.getString("task_name"));
+ json.put("point_code1", form.getString("point_code1"));
+ json.put("point_code2", form.getString("point_code2"));
+ json.put("material_id", form.getString("material_id"));
+ json.put("task_group_id", form.getString("task_group_id"));
+ json.put("is_auto_issue", form.getString("is_auto_issue"));
+ json.put("table_fk", form.getString("table_fk"));
+ json.put("request_param", form.getString("request_param"));
+ json.put("sort_seq", form.getIntValue("sort_seq"));
+
+ json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
+ json.put("handle_class", THIS_CLASS);
+ json.put("create_id", currentUserId);
+ json.put("create_name", currentUsername);
+ json.put("create_time", DateUtil.now());
+ json.put("acs_task_type", "7");
+ WQLObject.getWQLObject("SCH_BASE_Task").insert(json);
+
+ return json.getString("task_id");
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ 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 cancel(String task_id) {
+ JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
+ this.updateTaskStatus(taskObj, IOSEnum.IS_NOTANDYES.code("否"));
+ }
+}
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutTask.java
index 43c8da7f6..0ac8617e2 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutTask.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutTask.java
@@ -25,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -47,18 +48,44 @@ public class TwoOutTask extends AbstractAcsTask {
map.put("flag", "1");
map.put("handle_class", THIS_CLASS);
+ // 未下发的出库任务
List arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0' order by sort_seq")
.getResultJSONArray(0).toJavaList(JSONObject.class);
- // 根据任务组分组
+ // 未下发的任务根据任务组进行分组
Map> groupMap = arr.stream()
.collect(Collectors.groupingBy(row -> row.getString("task_group_id")));
+ // 需要下发的集合
List taskArr = new ArrayList<>();
+ // 用于判断下发几个任务组
+ int flag = 2;
+
+ // 判断当前正在执行或者下发的任务有几种规格:根据任务组进行判断,同一任务组代表同一木箱规格
+ List likeAllArr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status IN ('05','06') and is_delete = '0' " )
+ .getResultJSONArray(0).toJavaList(JSONObject.class);
+
+ Map> likeArr = likeAllArr.stream()
+ .collect(Collectors.groupingBy(row -> row.getString("task_group_id")));
+
+ // 判断长度
+ if (likeArr.size() >= 2) {
+ return null;
+ }
+
+ if (likeArr.size() == 1) {
+ flag = 1;
+ }
+
+ // 组织需要下发的任务
for(String task_group_id : groupMap.keySet()) {
- taskArr = groupMap.get(task_group_id);
- continue;
+ taskArr.addAll(groupMap.get(task_group_id));
+ flag -= 1;
+
+ if (flag == 0) {
+ break;
+ }
}
ArrayList resultList = new ArrayList<>();
@@ -101,7 +128,7 @@ public class TwoOutTask extends AbstractAcsTask {
if (ObjectUtil.isNotEmpty(jsonTask)) {
if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
// 任务为执行之后就不允许取消
- if (jsonTask.getIntValue("task_status") > Integer.valueOf(TaskStatusEnum.ISSUE.getCode())) {
+ if (jsonTask.getIntValue("task_status") > Integer.parseInt(TaskStatusEnum.ISSUE.getCode())) {
throw new BadRequestException("任务:" + jsonTask.getString("task_code") + "已执行,不可取消");
}
@@ -135,13 +162,14 @@ public class TwoOutTask extends AbstractAcsTask {
JSONArray resultJSONArray = taskTab.query("task_group_id = '" + jsonTask.getString("task_group_id") + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'")
.getResultJSONArray(0);
- // 下发桁架任务:捆扎
+ // 下发堆垛机至行架任务(2个行架位)
JSONObject jsonParam = new JSONObject();
jsonParam.put("device_code",jsonTask.getString("point_code2"));
jsonParam.put("vehicle_code",jsonTask.getString("vehicle_code"));
+ jsonParam.put("vehicle_type",jsonTask.getString("vehicle_type"));
LashManageServiceImpl bean1 = SpringContextHolder.getBean(LashManageServiceImpl.class);
- bean1.createLashTask(jsonParam);
+ bean1.createHeapTask(jsonParam);
if (ObjectUtil.isEmpty(resultJSONArray)) {
this.immediateNotifyAcs(null);
@@ -173,6 +201,7 @@ public class TwoOutTask extends AbstractAcsTask {
json.put("task_type", form.getString("task_type"));
json.put("vehicle_code", form.getString("vehicle_code"));
json.put("vehicle_code2", form.getString("vehicle_code2"));
+ json.put("vehicle_type", form.getString("vehicle_type"));
json.put("task_name", form.getString("task_name"));
json.put("point_code1", form.getString("point_code1"));
json.put("point_code2", form.getString("point_code2"));
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java
index 4190e5649..36f0d4712 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java
@@ -94,8 +94,12 @@ public enum IOSEnum {
// 区域
PRODUCT_AREA(MapOf.of("BLK", "BLK")),
- // 出库口点位
- OUT_POINT(MapOf.of("出库口1", "CK2026","出库口2", "CK2027")),
+ // 出库堆垛机点位
+ OUT_POINT(MapOf.of("1","CK2036", "2","CK2038", "3","CK2040", "4","CK2042" ,"5","CK2044",
+ "6","CK2046", "7","7", "8","8", "9","9", "10","10")),
+
+ // 行架点位
+ OUT_HANGER(MapOf.of("行架位1", "CK2026","行架位2", "CK2027")),
//acs申请任务
ACSTOLMS_TYPE(MapOf.of("成品入库任务", "1","空盘入库","2","空盘出库","3","异常处理位","4","木箱入库","5","退货入库","6","贴标","1","捆扎","2")),
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java
index 0da224599..8840a56dc 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java
@@ -1223,32 +1223,16 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl i) {
- end_device_code = IOSEnum.OUT_POINT.code("出库口1");
- } else {
- end_device_code = IOSEnum.OUT_POINT.code("出库口2");
- }
- }
-
JSONObject json = taskMangeList.get(i);
+
+ // 确定起点
start_device_code = json.getString("struct_code");
+ // 确定终点: 根据仓位所在排确定终点
+ String end_device_code = IsEndCode(json);
+
// 过滤此仓位的分配明细
List disDaoList = disLikeList.stream()
.filter(row -> row.getString("struct_code").equals(json.getString("struct_code")))
@@ -1294,6 +1278,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl {
row.setWork_status(IOSEnum.WORK_STATUS.code("生成"));
@@ -1331,6 +1320,15 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl executeArr = WQLObject.getWQLObject("SCH_BASE_Task")
+ .query("handle_class = '" + TwoOutHeapTask.class.getName() + "' and task_status IN ('05','06') and is_delete = '0' " )
+ .getResultJSONArray(0).toJavaList(JSONObject.class);
+
+ // 根据终点点位进行分组
+ Map> groupPointMap = executeArr.stream()
+ .collect(Collectors.groupingBy(row -> row.getString("point_code2")));
+
+ // 终点
+ String next_device_code = IOSEnum.OUT_HANGER.code("行架位1");
+
+ List heapOne = Optional.ofNullable(groupPointMap.get(IOSEnum.OUT_HANGER.code("行架位1"))).orElse(new ArrayList<>());
+ List heapTwo = Optional.ofNullable(groupPointMap.get(IOSEnum.OUT_HANGER.code("行架位2"))).orElse(new ArrayList<>());
+
+ if (heapOne.size() > heapTwo.size()) {
+ next_device_code = IOSEnum.OUT_HANGER.code("行架位2");
+ }
+
+ // 创建任务并下发
+ JSONObject jsonTaskParam = new JSONObject();
+ jsonTaskParam.put("task_type", "010720");
+ jsonTaskParam.put("vehicle_type", whereJson.getString("vehicle_type"));
+ jsonTaskParam.put("point_code1", whereJson.getString("device_code"));
+ jsonTaskParam.put("point_code2", next_device_code);
+ jsonTaskParam.put("vehicle_code", whereJson.getString("vehicle_code"));
+ jsonTaskParam.put("request_param", whereJson);
+
+ TwoOutHeapTask bean = SpringContextHolder.getBean(TwoOutHeapTask.class);
+ bean.createTask(jsonTaskParam);
+ bean.immediateNotifyAcs(null);
+ }
+
@Override
public JSONObject applyTab(JSONObject whereJson) {
// 载具扩展属性表
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/LashManageService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/LashManageService.java
index 87c4c8676..0d86dce68 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/LashManageService.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/LashManageService.java
@@ -13,7 +13,7 @@ import com.alibaba.fastjson.JSONObject;
public interface LashManageService {
/**
- * 创建桁架任务
+ * 创建 桁架-捆扎位任务
* @param whereJson {
* device_code:起点
* vehicle_code: 箱号
@@ -22,6 +22,17 @@ public interface LashManageService {
*/
void createLashTask(JSONObject whereJson);
+ /**
+ * 创建 堆垛机点位-桁架任务
+ * @param whereJson {
+ * device_code:起点
+ * vehicle_code: 箱号
+ * vehicle_type: 载具类型
+ *
+ * }
+ */
+ void createHeapTask(JSONObject whereJson);
+
/**
* 申请是否贴标
* @param whereJson {
diff --git a/lms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue b/lms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue
index 4660bf3da..b76544087 100644
--- a/lms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue
+++ b/lms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue
@@ -158,7 +158,7 @@
disabled
/>
-
+
- 是否异常出库
+ 是否异常出库
@@ -200,6 +200,7 @@
type="warning"
icon="el-icon-check"
size="mini"
+ v-if="mstrow.stor_id !== '1582991156504039455'"
:disabled="button4"
@click="oneSetPoint2"
>
@@ -212,6 +213,7 @@
type="warning"
icon="el-icon-check"
:disabled="button5"
+ v-if="mstrow.stor_id !== '1582991156504039455'"
size="mini"
@click="allSetPoint"
>
From a66c01549a493d50ba6e5a58bf2b329132f54b2a Mon Sep 17 00:00:00 2001
From: liuxy
Date: Fri, 14 Jun 2024 14:14:35 +0800
Subject: [PATCH 3/3] =?UTF-8?q?rev=EF=BC=9A=E4=BB=A3=E7=A0=81=E5=90=88?=
=?UTF-8?q?=E5=B9=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../ios/service/iostorInv/util/impl/LashManageServiceImpl.java | 1 +
1 file changed, 1 insertion(+)
diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/LashManageServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/LashManageServiceImpl.java
index be90639cb..3a8c61959 100644
--- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/LashManageServiceImpl.java
+++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/LashManageServiceImpl.java
@@ -208,6 +208,7 @@ public class LashManageServiceImpl implements LashManageService {
List heapOne = Optional.ofNullable(groupPointMap.get(IOSEnum.OUT_HANGER.code("行架位1"))).orElse(new ArrayList<>());
List heapTwo = Optional.ofNullable(groupPointMap.get(IOSEnum.OUT_HANGER.code("行架位2"))).orElse(new ArrayList<>());
+
if (heapOne.size() > heapTwo.size()) {
next_device_code = IOSEnum.OUT_HANGER.code("行架位2");
}