add:二期新增空木箱出库功能
This commit is contained in:
@@ -83,4 +83,11 @@ public class ProductOutTwoController {
|
|||||||
return new ResponseEntity<>(TableDataInfo.build(productOutTwoService.woodenBoxPoint(whereJson)), HttpStatus.OK);
|
return new ResponseEntity<>(TableDataInfo.build(productOutTwoService.woodenBoxPoint(whereJson)), HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/boxOut")
|
||||||
|
@Log("木箱出库")
|
||||||
|
@SaIgnore
|
||||||
|
public ResponseEntity<Object> boxOut(@RequestBody JSONObject whereJson) {
|
||||||
|
return new ResponseEntity<>(productOutTwoService.boxOut(whereJson),HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -84,4 +84,10 @@ public interface ProductOutTwoService {
|
|||||||
*/
|
*/
|
||||||
List<JSONObject> woodenBoxPoint(JSONObject whereJson);
|
List<JSONObject> woodenBoxPoint(JSONObject whereJson);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 要出库的木箱明细
|
||||||
|
* @param whereJson 、
|
||||||
|
* @return 、
|
||||||
|
*/
|
||||||
|
JSONObject boxOut(JSONObject whereJson);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ 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.BstIvtBoxlashbound;
|
import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxlashbound;
|
||||||
import org.nl.b_lms.storage_manage.database.service.dao.mapper.BstIvtBoxinfoMapper;
|
import org.nl.b_lms.storage_manage.database.service.dao.mapper.BstIvtBoxinfoMapper;
|
||||||
|
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.OutBoxManageService;
|
||||||
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.nl.modules.wql.util.SpringContextHolder;
|
||||||
@@ -46,6 +47,9 @@ public class ProductOutTwoServiceImpl implements ProductOutTwoService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private IPdmBiOrderbominfoService iPdmBiOrderbominfoService;
|
private IPdmBiOrderbominfoService iPdmBiOrderbominfoService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private OutBoxManageService outBoxManageService;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JSONObject ivtQuery(JSONObject whereJson) {
|
public JSONObject ivtQuery(JSONObject whereJson) {
|
||||||
@@ -190,4 +194,15 @@ public class ProductOutTwoServiceImpl implements ProductOutTwoService {
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public JSONObject boxOut(JSONObject whereJson) {
|
||||||
|
List<JSONObject> data = whereJson.getJSONArray("data").toJavaList(JSONObject.class);
|
||||||
|
outBoxManageService.publicBoxOut(data);
|
||||||
|
|
||||||
|
JSONObject result = new JSONObject();
|
||||||
|
result.put("message", "下发出库成功!");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,198 @@
|
|||||||
|
package org.nl.b_lms.sch.tasks;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.util.IdUtil;
|
||||||
|
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.common.utils.SecurityUtils;
|
||||||
|
import org.nl.modules.common.exception.BadRequestException;
|
||||||
|
import org.nl.modules.wql.core.bean.WQLObject;
|
||||||
|
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 static org.nl.wms.util.TaskUtil.getRoutePlanCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 二期空木箱出库任务类(异常口)
|
||||||
|
* Created by Lxy on 2024/1/19.
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class TwoOutBoxExcepTask extends AbstractAcsTask {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理类
|
||||||
|
*/
|
||||||
|
private final String THIS_CLASS = TwoOutBoxExcepTask.class.getName();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<AcsTaskDto> addTask() {
|
||||||
|
/*
|
||||||
|
* 下发给ACS时需要特殊处理
|
||||||
|
*/
|
||||||
|
// 任务表
|
||||||
|
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||||
|
JSONArray arr = taskTab.query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0' AND point_code2 = 'CK2001' order by create_time").getResultJSONArray(0);
|
||||||
|
|
||||||
|
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
|
||||||
|
|
||||||
|
for (int i = 0; i < arr.size(); i++) {
|
||||||
|
JSONObject json = arr.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"))
|
||||||
|
.route_plan_code(getRoutePlanCode(json.getString("point_code1")))
|
||||||
|
.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_code2"))
|
||||||
|
.vehicle_code2(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))
|
||||||
|
.product_area(IOSEnum.PRODUCT_AREA.code("BLK"))
|
||||||
|
.remark(json.getString("remark"))
|
||||||
|
.build();
|
||||||
|
resultList.add(dto);
|
||||||
|
|
||||||
|
// 更新任务为下发
|
||||||
|
JSONObject paramMap = new JSONObject();
|
||||||
|
paramMap.put("task_status", TaskStatusEnum.ISSUE.getCode());
|
||||||
|
taskTab.update(paramMap, "task_id ='" + json.getString("task_id") + "'");
|
||||||
|
}
|
||||||
|
return resultList;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void updateTaskStatus(JSONObject taskObj, String status) {
|
||||||
|
// 仓位表
|
||||||
|
WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr");
|
||||||
|
// 任务表
|
||||||
|
WQLObject taskTab = WQLObject.getWQLObject("sch_base_task");
|
||||||
|
// 载具信息表
|
||||||
|
WQLObject extTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
|
||||||
|
|
||||||
|
JSONObject jsonTask = taskTab.query("task_id = '" + taskObj.getString("task_id") + "'").uniqueResult(0);
|
||||||
|
|
||||||
|
// 更新任务的参数
|
||||||
|
JSONObject map = new JSONObject();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 1-执行中, 2-完成 ,0-acs取消
|
||||||
|
*/
|
||||||
|
// 执行中
|
||||||
|
if (status.equals(TaskStatusEnum.EXECUTING.getCode())) {
|
||||||
|
|
||||||
|
map.put("task_status", TaskStatusEnum.EXECUTING.getCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 完成
|
||||||
|
if (status.equals(TaskStatusEnum.FINISHED.getCode())) {
|
||||||
|
map.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||||
|
// 更新仓位
|
||||||
|
JSONObject jsonAttr = attrTab.query("struct_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0);
|
||||||
|
jsonAttr.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"));
|
||||||
|
jsonAttr.put("storagevehicle_code", "");
|
||||||
|
attrTab.update(jsonAttr);
|
||||||
|
|
||||||
|
// 更新载具信息表
|
||||||
|
JSONObject param = new JSONObject();
|
||||||
|
param.put("pcsn", "");
|
||||||
|
extTab.update(param,"pcsn = '"+jsonTask.getString("vehicle_code") +"'");
|
||||||
|
|
||||||
|
}
|
||||||
|
// 取消
|
||||||
|
if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
|
||||||
|
if (taskObj.getIntValue("task_status") > Integer.valueOf(TaskStatusEnum.ISSUE.getCode())) {
|
||||||
|
throw new BadRequestException("任务已执行不能取消");
|
||||||
|
}
|
||||||
|
// 更新任务表删除字段
|
||||||
|
map.put("is_delete", IOSEnum.IS_NOTANDYES.code("是"));
|
||||||
|
// 解锁仓位
|
||||||
|
JSONObject jsonAttr = attrTab.query("struct_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0);
|
||||||
|
jsonAttr.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"));
|
||||||
|
attrTab.update(jsonAttr);
|
||||||
|
}
|
||||||
|
map.put("update_optid", SecurityUtils.getCurrentUserId());
|
||||||
|
map.put("update_optname", SecurityUtils.getCurrentNickName());
|
||||||
|
map.put("update_time", DateUtil.now());
|
||||||
|
WQLObject.getWQLObject("SCH_BASE_Task").update(map, "task_id = '" + taskObj.getString("task_id") + "'");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void findStartPoint() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void findNextPoint() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public String createTask(JSONObject form) {
|
||||||
|
|
||||||
|
if (StrUtil.isBlank(form.getString("task_type"))) {
|
||||||
|
throw new BadRequestException("业务类型不能为空!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (StrUtil.isBlank(form.getString("start_device_code"))) {
|
||||||
|
throw new BadRequestException("起点不能为空!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (StrUtil.isBlank(form.getString("next_device_code"))) {
|
||||||
|
throw new BadRequestException("终点不能为空!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (StrUtil.isBlank(form.getString("vehicle_code"))) {
|
||||||
|
throw new BadRequestException("木箱号不能为空!");
|
||||||
|
}
|
||||||
|
|
||||||
|
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_status", TaskStatusEnum.START_AND_POINT.getCode());
|
||||||
|
json.put("task_group_id", form.getLongValue("task_group_id"));
|
||||||
|
json.put("point_code1", form.getString("start_device_code"));
|
||||||
|
json.put("point_code2", form.getString("next_device_code"));
|
||||||
|
json.put("request_param", form.getString("request_param"));
|
||||||
|
json.put("handle_class", this.getClass().getName());
|
||||||
|
json.put("create_id", SecurityUtils.getCurrentUserId());
|
||||||
|
json.put("create_name", SecurityUtils.getCurrentUsername());
|
||||||
|
json.put("create_time", DateUtil.now());
|
||||||
|
json.put("priority", form.getString("priority"));
|
||||||
|
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.ACS_RESULT.code("取消"));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,6 +8,7 @@ import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
|||||||
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
|
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
|
||||||
import org.nl.b_lms.sch.tasks.TwoExcepionalMoveTask;
|
import org.nl.b_lms.sch.tasks.TwoExcepionalMoveTask;
|
||||||
import org.nl.b_lms.sch.tasks.TwoMoveBoxTask;
|
import org.nl.b_lms.sch.tasks.TwoMoveBoxTask;
|
||||||
|
import org.nl.b_lms.sch.tasks.TwoOutBoxExcepTask;
|
||||||
import org.nl.b_lms.sch.tasks.TwoOutBoxTask;
|
import org.nl.b_lms.sch.tasks.TwoOutBoxTask;
|
||||||
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.dao.BstIvtBoxinfo;
|
import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo;
|
||||||
@@ -737,4 +738,132 @@ public class OutBoxManageServiceImpl implements OutBoxManageService {
|
|||||||
return jsonTaskParam.getString("task_group_id");
|
return jsonTaskParam.getString("task_group_id");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void publicBoxOut(List<JSONObject> list) {
|
||||||
|
WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr");
|
||||||
|
WQLObject extTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
|
||||||
|
|
||||||
|
// 查询需要出库的仓位信息
|
||||||
|
String struct_code_in = list.stream()
|
||||||
|
.map(row -> row.getString("struct_code"))
|
||||||
|
.collect(Collectors.joining("','"));
|
||||||
|
|
||||||
|
List<JSONObject> attrList = attrTab.query("struct_code in ('" + struct_code_in + "') AND sect_code = 'BZC01'")
|
||||||
|
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
|
||||||
|
// 获取这些仓位的每排仓位
|
||||||
|
String row_num_in = attrList.stream()
|
||||||
|
.map(row -> row.getString("row_num"))
|
||||||
|
.distinct()
|
||||||
|
.collect(Collectors.joining("','"));
|
||||||
|
|
||||||
|
List<JSONObject> allList = attrTab.query("row_num IN ('" + row_num_in + "') AND sect_code = 'BZC01' AND is_delete = '0'")
|
||||||
|
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
|
||||||
|
// 查询木箱对应的托盘号
|
||||||
|
String box_no_in = list.stream()
|
||||||
|
.map(row -> row.getString("box_no"))
|
||||||
|
.collect(Collectors.joining("','"));
|
||||||
|
|
||||||
|
List<JSONObject> extList = extTab.query("pcsn IN ('" + box_no_in + "')")
|
||||||
|
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
|
||||||
|
// 需要移库的木箱仓位
|
||||||
|
ArrayList<JSONObject> moveList = new ArrayList<>();
|
||||||
|
|
||||||
|
// 创建任务
|
||||||
|
for (JSONObject json : attrList) {
|
||||||
|
// 判断是否是深货位
|
||||||
|
if (json.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("深"))) {
|
||||||
|
// 查询对应的浅货位
|
||||||
|
JSONObject jsonShallow = allList.stream()
|
||||||
|
.filter(row -> row.getString("row_num").equals(json.getString("row_num")) &&
|
||||||
|
row.getString("col_num").equals(json.getString("col_num")) &&
|
||||||
|
row.getString("layer_num").equals(json.getString("layer_num")) &&
|
||||||
|
row.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("浅"))
|
||||||
|
)
|
||||||
|
.findFirst().orElse(null);
|
||||||
|
if (ObjectUtil.isEmpty(jsonShallow)) {
|
||||||
|
throw new BadRequestException("仓位【"+json.getString("struct_code")+"】对应的浅货位信息错误!");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 判断浅货位是否有空木箱
|
||||||
|
if (ObjectUtil.isNotEmpty(jsonShallow.getString("storagevehicle_code"))) {
|
||||||
|
// 判断是否是当前需要出库的集合当中
|
||||||
|
int size = (int) attrList.stream()
|
||||||
|
.filter(row -> row.getString("struct_code").equals(jsonShallow.getString("struct_code"))).count();
|
||||||
|
|
||||||
|
// 不在要出库的集合当中
|
||||||
|
if (size == 0) {
|
||||||
|
// 判断是否被锁定
|
||||||
|
if (jsonShallow.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
|
||||||
|
// 加入要移库的集合当中
|
||||||
|
moveList.add(jsonShallow);
|
||||||
|
} else if (!jsonShallow.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("木箱出库锁"))
|
||||||
|
&& (!jsonShallow.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("移出锁")))
|
||||||
|
) {
|
||||||
|
throw new BadRequestException("仓位【"+jsonShallow.getString("struct_code")+"】被锁定,无法生成移库任务!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 校验木箱是否绑定了托盘
|
||||||
|
JSONObject jsonExt = extList.stream()
|
||||||
|
.filter(row -> row.getString("pcsn").equals(json.getString("storagevehicle_code")))
|
||||||
|
.findFirst().orElse(null);
|
||||||
|
|
||||||
|
if (ObjectUtil.isEmpty(jsonExt)) {
|
||||||
|
throw new BadRequestException("此木箱【"+json.getString("storagevehicle_code")+"】没有绑定托盘,请核查");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建任务
|
||||||
|
JSONObject jsonTaskParam = new JSONObject();
|
||||||
|
jsonTaskParam.put("task_type", "010704");
|
||||||
|
jsonTaskParam.put("start_device_code", json.getString("struct_code"));
|
||||||
|
jsonTaskParam.put("next_device_code", IOSEnum.EXCEP_OUT.code("异常出库口"));
|
||||||
|
jsonTaskParam.put("vehicle_code", json.getString("storagevehicle_code"));
|
||||||
|
jsonTaskParam.put("vehicle_code2", jsonExt.getString("storagevehicle_code"));
|
||||||
|
jsonTaskParam.put("task_group_id", IdUtil.getStringId());
|
||||||
|
jsonTaskParam.put("priority", json.getString("zdepth"));
|
||||||
|
JSONObject request_param = new JSONObject();
|
||||||
|
request_param.put("containerType", json.getString("storagevehicle_type"));
|
||||||
|
jsonTaskParam.put("request_param", request_param.toString());
|
||||||
|
TwoOutBoxExcepTask twoOutBoxExcepTask = new TwoOutBoxExcepTask();
|
||||||
|
twoOutBoxExcepTask.createTask(jsonTaskParam);
|
||||||
|
|
||||||
|
// 更新仓位锁定状态
|
||||||
|
json.put("lock_type", IOSEnum.LOCK_TYPE.code("木箱出库锁"));
|
||||||
|
attrTab.update(json);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询移库木箱对应的托盘
|
||||||
|
String storagevehicle_code_in = moveList.stream()
|
||||||
|
.map(row -> row.getString("storagevehicle_code"))
|
||||||
|
.collect(Collectors.joining("','"));
|
||||||
|
List<JSONObject> extMoveList = extTab.query("pcsn IN ('" + storagevehicle_code_in + "')")
|
||||||
|
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
|
||||||
|
// 此循环为防止下发一部分后报错无法回滚
|
||||||
|
moveList.forEach(item -> {
|
||||||
|
// 校验木箱和托盘是否绑定
|
||||||
|
JSONObject jsonExtMove = extMoveList.stream()
|
||||||
|
.filter(row -> row.getString("pcsn").equals(item.getString("storagevehicle_code")))
|
||||||
|
.findFirst().orElse(null);
|
||||||
|
|
||||||
|
if (ObjectUtil.isEmpty(jsonExtMove)) {
|
||||||
|
throw new BadRequestException("此移库木箱【"+jsonExtMove.getString("storagevehicle_code")+"】没有绑定托盘,请核查");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 生成移库任务
|
||||||
|
for (JSONObject jsonMove : moveList) {
|
||||||
|
// 调用接口生成木箱移库任务
|
||||||
|
this.createBoxMove(jsonMove);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 下发木箱出库任务
|
||||||
|
new TwoOutBoxExcepTask().immediateNotifyAcs(null);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ package org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service;
|
|||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* 空木箱业务处理 服务类
|
* 空木箱业务处理 服务类
|
||||||
@@ -52,4 +54,10 @@ public interface OutBoxManageService {
|
|||||||
*/
|
*/
|
||||||
public String createBoxMove(JSONObject jsonObject);
|
public String createBoxMove(JSONObject jsonObject);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据木箱号出库公共方法(多条数据)
|
||||||
|
* @param list 需要出库的木箱集合
|
||||||
|
*/
|
||||||
|
void publicBoxOut(List<JSONObject> list);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user