Merge commit 'd5ea6fad1daf9b38262c57ec69eeb915ad1f06ae' into master_merge
This commit is contained in:
@@ -57,6 +57,8 @@ public class TwoLashTask extends AbstractAcsTask {
|
|||||||
/*
|
/*
|
||||||
* 下发给ACS时需要特殊处理
|
* 下发给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);
|
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);
|
||||||
|
|
||||||
// 查询木箱信息
|
// 查询木箱信息
|
||||||
@@ -107,6 +109,11 @@ public class TwoLashTask extends AbstractAcsTask {
|
|||||||
.interaction_json(interaction_json)
|
.interaction_json(interaction_json)
|
||||||
.build();
|
.build();
|
||||||
resultList.add(dto);
|
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;
|
return resultList;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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<AcsTaskDto> 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<AcsTaskDto> 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("否"));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -25,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@@ -49,18 +50,44 @@ public class TwoOutTask extends AbstractAcsTask {
|
|||||||
map.put("flag", "1");
|
map.put("flag", "1");
|
||||||
map.put("handle_class", THIS_CLASS);
|
map.put("handle_class", THIS_CLASS);
|
||||||
|
|
||||||
|
// 未下发的出库任务
|
||||||
List<JSONObject> 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")
|
List<JSONObject> 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);
|
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
|
||||||
// 根据任务组分组
|
// 未下发的任务根据任务组进行分组
|
||||||
Map<String, List<JSONObject>> groupMap = arr.stream()
|
Map<String, List<JSONObject>> groupMap = arr.stream()
|
||||||
.collect(Collectors.groupingBy(row -> row.getString("task_group_id")));
|
.collect(Collectors.groupingBy(row -> row.getString("task_group_id")));
|
||||||
|
|
||||||
|
// 需要下发的集合
|
||||||
List<JSONObject> taskArr = new ArrayList<>();
|
List<JSONObject> taskArr = new ArrayList<>();
|
||||||
|
|
||||||
|
// 用于判断下发几个任务组
|
||||||
|
int flag = 2;
|
||||||
|
|
||||||
|
// 判断当前正在执行或者下发的任务有几种规格:根据任务组进行判断,同一任务组代表同一木箱规格
|
||||||
|
List<JSONObject> 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<String, List<JSONObject>> 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()) {
|
for(String task_group_id : groupMap.keySet()) {
|
||||||
taskArr = groupMap.get(task_group_id);
|
taskArr.addAll(groupMap.get(task_group_id));
|
||||||
continue;
|
flag -= 1;
|
||||||
|
|
||||||
|
if (flag == 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
|
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
|
||||||
@@ -104,7 +131,7 @@ public class TwoOutTask extends AbstractAcsTask {
|
|||||||
if (ObjectUtil.isNotEmpty(jsonTask)) {
|
if (ObjectUtil.isNotEmpty(jsonTask)) {
|
||||||
if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
|
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") + "已执行,不可取消");
|
throw new BadRequestException("任务:" + jsonTask.getString("task_code") + "已执行,不可取消");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -139,13 +166,14 @@ public class TwoOutTask extends AbstractAcsTask {
|
|||||||
JSONArray resultJSONArray = taskTab.query("task_group_id = '" + jsonTask.getString("task_group_id") + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'")
|
JSONArray resultJSONArray = taskTab.query("task_group_id = '" + jsonTask.getString("task_group_id") + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'")
|
||||||
.getResultJSONArray(0);
|
.getResultJSONArray(0);
|
||||||
|
|
||||||
// 下发桁架任务:捆扎
|
// 下发堆垛机至行架任务(2个行架位)
|
||||||
JSONObject jsonParam = new JSONObject();
|
JSONObject jsonParam = new JSONObject();
|
||||||
jsonParam.put("device_code",jsonTask.getString("point_code2"));
|
jsonParam.put("device_code",jsonTask.getString("point_code2"));
|
||||||
jsonParam.put("vehicle_code",jsonTask.getString("vehicle_code"));
|
jsonParam.put("vehicle_code",jsonTask.getString("vehicle_code"));
|
||||||
|
jsonParam.put("vehicle_type",jsonTask.getString("vehicle_type"));
|
||||||
|
|
||||||
LashManageServiceImpl bean1 = SpringContextHolder.getBean(LashManageServiceImpl.class);
|
LashManageServiceImpl bean1 = SpringContextHolder.getBean(LashManageServiceImpl.class);
|
||||||
bean1.createLashTask(jsonParam);
|
bean1.createHeapTask(jsonParam);
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(resultJSONArray)) {
|
if (ObjectUtil.isEmpty(resultJSONArray)) {
|
||||||
this.immediateNotifyAcs(null);
|
this.immediateNotifyAcs(null);
|
||||||
@@ -177,6 +205,7 @@ public class TwoOutTask extends AbstractAcsTask {
|
|||||||
json.put("task_type", form.getString("task_type"));
|
json.put("task_type", form.getString("task_type"));
|
||||||
json.put("vehicle_code", form.getString("vehicle_code"));
|
json.put("vehicle_code", form.getString("vehicle_code"));
|
||||||
json.put("vehicle_code2", form.getString("vehicle_code2"));
|
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("task_name", form.getString("task_name"));
|
||||||
json.put("point_code1", form.getString("point_code1"));
|
json.put("point_code1", form.getString("point_code1"));
|
||||||
json.put("point_code2", form.getString("point_code2"));
|
json.put("point_code2", form.getString("point_code2"));
|
||||||
|
|||||||
@@ -96,8 +96,12 @@ public enum IOSEnum {
|
|||||||
// 区域
|
// 区域
|
||||||
PRODUCT_AREA(MapOf.of("BLK", "BLK")),
|
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申请任务
|
//acs申请任务
|
||||||
ACSTOLMS_TYPE(MapOf.of("成品入库任务", "1","空盘入库","2","空盘出库","3","异常处理位","4","木箱入库","5","退货入库","6","贴标","1","捆扎","2")),
|
ACSTOLMS_TYPE(MapOf.of("成品入库任务", "1","空盘入库","2","空盘出库","3","异常处理位","4","木箱入库","5","退货入库","6","贴标","1","捆扎","2")),
|
||||||
|
|||||||
@@ -1221,32 +1221,16 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
|||||||
String start_device_code = "";
|
String start_device_code = "";
|
||||||
// 是否自动下发
|
// 是否自动下发
|
||||||
String is_auto_issue = IOSEnum.IS_SEND.code("是");
|
String is_auto_issue = IOSEnum.IS_SEND.code("是");
|
||||||
// 终点
|
|
||||||
String end_device_code = "";
|
|
||||||
// 是否自动分配终点
|
|
||||||
boolean is_auto_div_point = false;
|
|
||||||
// 取绝对值
|
|
||||||
int abs = Math.abs(taskMangeList.size() / 2);
|
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(point_code)) {
|
|
||||||
end_device_code = point_code;
|
|
||||||
} else {
|
|
||||||
is_auto_div_point = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < taskMangeList.size(); i++) {
|
for (int i = 0; i < taskMangeList.size(); i++) {
|
||||||
// 确定终点
|
|
||||||
if (is_auto_div_point) {
|
|
||||||
if (abs > i) {
|
|
||||||
end_device_code = IOSEnum.OUT_POINT.code("出库口1");
|
|
||||||
} else {
|
|
||||||
end_device_code = IOSEnum.OUT_POINT.code("出库口2");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
JSONObject json = taskMangeList.get(i);
|
JSONObject json = taskMangeList.get(i);
|
||||||
|
|
||||||
|
// 确定起点
|
||||||
start_device_code = json.getString("struct_code");
|
start_device_code = json.getString("struct_code");
|
||||||
|
|
||||||
|
// 确定终点: 根据仓位所在排确定终点
|
||||||
|
String end_device_code = IsEndCode(json);
|
||||||
|
|
||||||
// 过滤此仓位的分配明细
|
// 过滤此仓位的分配明细
|
||||||
List<StIvtIostorinvdis> disDaoList = disLikeList.stream()
|
List<StIvtIostorinvdis> disDaoList = disLikeList.stream()
|
||||||
.filter(row -> row.getString("struct_code").equals(json.getString("struct_code")))
|
.filter(row -> row.getString("struct_code").equals(json.getString("struct_code")))
|
||||||
@@ -1292,6 +1276,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
|||||||
jsonTaskParam.put("point_code1", start_device_code);
|
jsonTaskParam.put("point_code1", start_device_code);
|
||||||
jsonTaskParam.put("point_code2", end_device_code);
|
jsonTaskParam.put("point_code2", end_device_code);
|
||||||
jsonTaskParam.put("vehicle_code", json.getString("storagevehicle_code"));
|
jsonTaskParam.put("vehicle_code", json.getString("storagevehicle_code"));
|
||||||
|
jsonTaskParam.put("vehicle_type", json.getString("storagevehicle_type"));
|
||||||
if (ObjectUtil.isNotEmpty(jsonExt)) {
|
if (ObjectUtil.isNotEmpty(jsonExt)) {
|
||||||
jsonTaskParam.put("vehicle_code2", jsonExt.getString("storagevehicle_code"));
|
jsonTaskParam.put("vehicle_code2", jsonExt.getString("storagevehicle_code"));
|
||||||
}
|
}
|
||||||
@@ -1313,12 +1298,16 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
|||||||
} else {
|
} else {
|
||||||
jsonTaskParam.put("sort_seq", Integer.parseInt(IOSEnum.ZDEPTH_STRUCT.code("深")));
|
jsonTaskParam.put("sort_seq", Integer.parseInt(IOSEnum.ZDEPTH_STRUCT.code("深")));
|
||||||
}
|
}
|
||||||
|
jsonTaskParam.put("request_param", jsonTaskParam);
|
||||||
|
|
||||||
TwoOutTask twoOutTask = new TwoOutTask();
|
TwoOutTask twoOutTask = new TwoOutTask();
|
||||||
String task_id = twoOutTask.createTask(jsonTaskParam);
|
String task_id = twoOutTask.createTask(jsonTaskParam);
|
||||||
|
|
||||||
// 更新分配明细
|
// 更新分配明细
|
||||||
JSONObject jsonPoint = schBasePointService.query("point_code = '" + end_device_code + "'").uniqueResult(0);
|
JSONObject jsonPoint = schBasePointService.query("point_code = '" + end_device_code + "'").uniqueResult(0);
|
||||||
|
if (ObjectUtil.isEmpty(jsonPoint)) {
|
||||||
|
throw new BadRequestException("出库点位不存在:"+end_device_code);
|
||||||
|
}
|
||||||
|
|
||||||
disDaoList.forEach(row -> {
|
disDaoList.forEach(row -> {
|
||||||
row.setWork_status(IOSEnum.WORK_STATUS.code("生成"));
|
row.setWork_status(IOSEnum.WORK_STATUS.code("生成"));
|
||||||
@@ -1329,6 +1318,15 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 确定终点:根据仓位所在排确定终点
|
||||||
|
* @param structDao:仓位对象
|
||||||
|
* @return 终点
|
||||||
|
*/
|
||||||
|
private String IsEndCode(JSONObject structDao) {
|
||||||
|
return IOSEnum.OUT_POINT.code(structDao.getString("row_num"));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新异常货位
|
* 更新异常货位
|
||||||
* @param disDaoList:所有分配明细集合
|
* @param disDaoList:所有分配明细集合
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import org.nl.b_lms.sch.point.dao.SchBasePoint;
|
|||||||
import org.nl.b_lms.sch.point.dao.mapper.SchBasePointMapper;
|
import org.nl.b_lms.sch.point.dao.mapper.SchBasePointMapper;
|
||||||
import org.nl.b_lms.sch.point.service.IschBasePointService;
|
import org.nl.b_lms.sch.point.service.IschBasePointService;
|
||||||
import org.nl.b_lms.sch.tasks.TwoLashTask;
|
import org.nl.b_lms.sch.tasks.TwoLashTask;
|
||||||
|
import org.nl.b_lms.sch.tasks.TwoOutHeapTask;
|
||||||
import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService;
|
import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService;
|
||||||
import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxlashboundService;
|
import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxlashboundService;
|
||||||
import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo;
|
import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo;
|
||||||
@@ -20,13 +21,14 @@ import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.LashManage
|
|||||||
import org.nl.common.utils.IdUtil;
|
import org.nl.common.utils.IdUtil;
|
||||||
import org.nl.modules.common.exception.BadRequestException;
|
import org.nl.modules.common.exception.BadRequestException;
|
||||||
import org.nl.modules.wql.core.bean.WQLObject;
|
import org.nl.modules.wql.core.bean.WQLObject;
|
||||||
|
import org.nl.modules.wql.util.SpringContextHolder;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.List;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -189,6 +191,41 @@ public class LashManageServiceImpl implements LashManageService {
|
|||||||
twoLashTask.immediateNotifyAcs(null);
|
twoLashTask.immediateNotifyAcs(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void createHeapTask(JSONObject whereJson) {
|
||||||
|
// 比较两行架点位的任务个数
|
||||||
|
List<JSONObject> 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<String, List<JSONObject>> groupPointMap = executeArr.stream()
|
||||||
|
.collect(Collectors.groupingBy(row -> row.getString("point_code2")));
|
||||||
|
|
||||||
|
// 终点
|
||||||
|
String next_device_code = IOSEnum.OUT_HANGER.code("行架位1");
|
||||||
|
|
||||||
|
List<JSONObject> heapOne = Optional.ofNullable(groupPointMap.get(IOSEnum.OUT_HANGER.code("行架位1"))).orElse(new ArrayList<>());
|
||||||
|
List<JSONObject> 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
|
@Override
|
||||||
public JSONObject applyTab(JSONObject whereJson) {
|
public JSONObject applyTab(JSONObject whereJson) {
|
||||||
// 载具扩展属性表
|
// 载具扩展属性表
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import com.alibaba.fastjson.JSONObject;
|
|||||||
public interface LashManageService {
|
public interface LashManageService {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建桁架任务
|
* 创建 桁架-捆扎位任务
|
||||||
* @param whereJson {
|
* @param whereJson {
|
||||||
* device_code:起点
|
* device_code:起点
|
||||||
* vehicle_code: 箱号
|
* vehicle_code: 箱号
|
||||||
@@ -22,6 +22,17 @@ public interface LashManageService {
|
|||||||
*/
|
*/
|
||||||
void createLashTask(JSONObject whereJson);
|
void createLashTask(JSONObject whereJson);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建 堆垛机点位-桁架任务
|
||||||
|
* @param whereJson {
|
||||||
|
* device_code:起点
|
||||||
|
* vehicle_code: 箱号
|
||||||
|
* vehicle_type: 载具类型
|
||||||
|
*
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
void createHeapTask(JSONObject whereJson);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 申请是否贴标
|
* 申请是否贴标
|
||||||
* @param whereJson {
|
* @param whereJson {
|
||||||
|
|||||||
@@ -163,7 +163,7 @@
|
|||||||
disabled
|
disabled
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="出库点" prop="point_code">
|
<el-form-item label="出库点" prop="point_code" v-if="mstrow.stor_id !== '1582991156504039455'">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="form2.point_code"
|
v-model="form2.point_code"
|
||||||
clearable
|
clearable
|
||||||
@@ -180,7 +180,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="checked">
|
<el-form-item prop="checked">
|
||||||
<el-checkbox v-model="checked">是否异常出库</el-checkbox>
|
<el-checkbox v-if="mstrow.stor_id !== '1582991156504039455'" v-model="checked">是否异常出库</el-checkbox>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="超期发货:" prop="is_overdue">
|
<el-form-item label="超期发货:" prop="is_overdue">
|
||||||
<el-radio v-model="rowmst.is_overdue" label="1" :disabled="rowmst.bill_status === '40'" @change="updataIsOverdue">不发超期</el-radio>
|
<el-radio v-model="rowmst.is_overdue" label="1" :disabled="rowmst.bill_status === '40'" @change="updataIsOverdue">不发超期</el-radio>
|
||||||
@@ -220,6 +220,7 @@
|
|||||||
type="warning"
|
type="warning"
|
||||||
icon="el-icon-check"
|
icon="el-icon-check"
|
||||||
size="mini"
|
size="mini"
|
||||||
|
v-if="mstrow.stor_id !== '1582991156504039455'"
|
||||||
:disabled="button4"
|
:disabled="button4"
|
||||||
@click="oneSetPoint2"
|
@click="oneSetPoint2"
|
||||||
>
|
>
|
||||||
@@ -233,6 +234,7 @@
|
|||||||
type="warning"
|
type="warning"
|
||||||
icon="el-icon-check"
|
icon="el-icon-check"
|
||||||
:disabled="button5"
|
:disabled="button5"
|
||||||
|
v-if="mstrow.stor_id !== '1582991156504039455'"
|
||||||
size="mini"
|
size="mini"
|
||||||
@click="allSetPoint"
|
@click="allSetPoint"
|
||||||
>
|
>
|
||||||
|
|||||||
Reference in New Issue
Block a user