rev:去掉阻挡移库功能

This commit is contained in:
2025-11-24 15:06:28 +08:00
parent 393745202a
commit 8e7e268a97
5 changed files with 25 additions and 237 deletions

View File

@@ -178,7 +178,7 @@ public class EmpVehicleOutTask extends AbstractTask {
// 更新起点
iStructattrService.update(
new UpdateWrapper<Structattr>().lambda()
.eq(Structattr::getStruct_code, taskObj.getPoint_code4())
.eq(Structattr::getStruct_code, taskObj.getPoint_code1())
.set(Structattr::getStoragevehicle_code, null)
.set(Structattr::getIs_emptyvehicle, IOSConstant.IS_DELETE_NO)
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))

View File

@@ -1170,7 +1170,7 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv>
*/
// 调用校验方法
String struct_code = ioStorInvDis.getStruct_code();
iOutBillService.checkIsHinder(ioStorInvDis);
// iOutBillService.checkIsHinder(ioStorInvDis);
//创建任务
JSONObject task_form = new JSONObject();

View File

@@ -325,10 +325,10 @@ public class StIvtCheckmstServiceImpl extends ServiceImpl<StIvtCheckmstMapper, S
);
// 判断是否阻挡
JSONObject result = checkMove(dtlDao);
// JSONObject result = checkMove(dtlDao);
JSONObject jsonTask = new JSONObject();
jsonTask.put("point_code1", result.getString("out_point"));
jsonTask.put("point_code1", dtlDao.getStruct_code());
jsonTask.put("point_code2", IOSConstant.CZW_POINT);
jsonTask.put("vehicle_code", dtlDao.getStoragevehicle_code());
String task_id = checkMoveTask.create(jsonTask);
@@ -338,13 +338,13 @@ public class StIvtCheckmstServiceImpl extends ServiceImpl<StIvtCheckmstMapper, S
dtlDao.setStatus(IOSEnum.CHECK_DTL_STATUS.code("移库中"));
// 更新关联任务
if (ObjectUtil.isNotEmpty(result.getString("task_id"))) {
/*if (ObjectUtil.isNotEmpty(result.getString("task_id"))) {
iSchBaseTaskService.update(
new UpdateWrapper<SchBaseTask>().lambda()
.set(SchBaseTask::getContact_task, task_id)
.eq(SchBaseTask::getTask_id, result.getString("task_id"))
);
}
}*/
}
iStIvtCheckdtlService.updateBatchById(dtlDaoList);
}

View File

@@ -21,8 +21,6 @@ import org.nl.wms.sch_manage.service.ISchBaseTaskService;
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
import org.nl.wms.sch_manage.service.util.AbstractTask;
import org.nl.wms.sch_manage.service.util.TaskFactory;
import org.nl.wms.sch_manage.service.util.tasks.InsideDtlMoveTask;
import org.nl.wms.sch_manage.service.util.tasks.MoveOutMoveTask;
import org.nl.wms.warehouse_management.enums.IOSConstant;
import org.nl.wms.warehouse_management.enums.IOSEnum;
import org.nl.wms.warehouse_management.service.IStIvtMoveinvService;
@@ -82,18 +80,6 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl<StIvtMoveinvMapper, StI
@Autowired
private TaskFactory taskFactory;
/**
* 移库阻挡移库任务类
*/
@Autowired
private MoveOutMoveTask moveOutMoveTask;
/**
* 库内移库任务类子任务
*/
@Autowired
private InsideDtlMoveTask insideDtlMoveTask;
@Override
public IPage<JSONObject> queryAll(Map whereJson, PageQuery page) {
return this.baseMapper.queryAllByPage(new Page<>(page.getPage() + 1, page.getSize()),
@@ -312,28 +298,16 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl<StIvtMoveinvMapper, StI
String task_id = "";
AbstractTask task = taskFactory.getTask(IOSEnum.MOVE_CONFIG_CODE.code(mstDao.getBill_type()));
for (StIvtMoveinvdtl dtlDao : dtlList) {
if(mstDao.getBill_type().equals(IOSEnum.MOVE_BILL_TYPE.code("库内移库"))) {
if (mstDao.getBill_type().equals(IOSEnum.MOVE_BILL_TYPE.code("库内移库"))) {
// 库内移库任务下发
task_id = checkMoveInside(dtlDao,task);
task_id = checkMoveInside(dtlDao, task);
} else {
// 判断是否阻挡
JSONObject result = checkMove(dtlDao);
JSONObject jsonTask = new JSONObject();
jsonTask.put("point_code1", result.getString("out_point"));
jsonTask.put("point_code1", dtlDao.getTurnout_struct_code());
jsonTask.put("point_code2", dtlDao.getTurnin_struct_code());
jsonTask.put("vehicle_code", dtlDao.getStoragevehicle_code());
jsonTask.put("vehicle_code2", dtlDao.getStoragevehicle_code2());
task_id = task.create(jsonTask);
if (ObjectUtil.isNotEmpty(result.getString("task_id"))) {
// 更新关联任务标识
iSchBaseTaskService.update(
new UpdateWrapper<SchBaseTask>().lambda()
.set(SchBaseTask::getContact_task, task_id)
.eq(SchBaseTask::getTask_id, result.getString("task_id"))
);
}
}
// 更新明细任务标识
@@ -351,8 +325,9 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl<StIvtMoveinvMapper, StI
/**
* 库内移库任务下发
*
* @param dtlDao 移库明细
* @param task 任务类
* @param task 任务类
* @return task_id
*/
private String checkMoveInside(StIvtMoveinvdtl dtlDao, AbstractTask task) {
@@ -362,181 +337,7 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl<StIvtMoveinvMapper, StI
jsonTask.put("point_code2", dtlDao.getTurnin_struct_code());
jsonTask.put("vehicle_code", dtlDao.getStoragevehicle_code());
jsonTask.put("vehicle_code2", dtlDao.getStoragevehicle_code2());
String task_id = task.create(jsonTask);
Structattr startAttr = iStructattrService.getByCode(dtlDao.getTurnout_struct_code());
Structattr endAttr = iStructattrService.getByCode(dtlDao.getTurnin_struct_code());
// ---------- 判断是否是深浅货位互换 ----------
if (startAttr.getBlock_num().equals(endAttr.getBlock_num())
&& startAttr.getCol_num().equals(endAttr.getCol_num())
&& startAttr.getLayer_num().equals(endAttr.getLayer_num())
) {
// 两个货位都必须有货
if (ObjectUtil.isNotEmpty(startAttr.getStoragevehicle_code()) && ObjectUtil.isNotEmpty(endAttr.getStoragevehicle_code())) {
// 子任务1
createInsideDtlMoveTask(startAttr.getStruct_code(),endAttr.getStruct_code(),startAttr.getStoragevehicle_code(),task_id);
// 子任务2
createInsideDtlMoveTask(endAttr.getStruct_code(),startAttr.getStruct_code(),endAttr.getStoragevehicle_code(),task_id);
return task_id;
} else {
throw new BadRequestException("当前仓位互换会造成仓位空洞,不允许互换!");
}
}
// ---------- 判断起点是否阻挡 ----------
// 判断起点深浅货位
if (startAttr.getPlacement_type().equals(IOSEnum.PLACEMENT_TYPE.code("深货位"))) {
// 查询对应浅货位
Structattr shallowStartAttr = iStructattrService.getOne(
new QueryWrapper<Structattr>().lambda()
.eq(Structattr::getBlock_num, startAttr.getBlock_num())
.eq(Structattr::getCol_num, startAttr.getCol_num())
.eq(Structattr::getLayer_num, startAttr.getLayer_num())
.eq(Structattr::getPlacement_type, IOSEnum.PLACEMENT_TYPE.code("浅货位"))
);
// 判断浅货位是否被锁定
if (!shallowStartAttr.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
throw new BadRequestException("当前起点仓位对应的浅货位【"+shallowStartAttr.getStruct_code()+"】被锁定,无法下发任务");
}
if (ObjectUtil.isNotEmpty(shallowStartAttr.getStoragevehicle_code())) {
// 有货:创建子任务
createInsideDtlMoveTask(shallowStartAttr.getStruct_code(),shallowStartAttr.getStruct_code(),shallowStartAttr.getStoragevehicle_code(),task_id);
}
}
// ---------- 判断终点是否阻挡 ----------
if (endAttr.getPlacement_type().equals(IOSEnum.PLACEMENT_TYPE.code("深货位"))) {
// 查询对应浅货位
Structattr shallowStartAttr = iStructattrService.getOne(
new QueryWrapper<Structattr>().lambda()
.eq(Structattr::getBlock_num, endAttr.getBlock_num())
.eq(Structattr::getCol_num, endAttr.getCol_num())
.eq(Structattr::getLayer_num, endAttr.getLayer_num())
.eq(Structattr::getPlacement_type, IOSEnum.PLACEMENT_TYPE.code("浅货位"))
);
// 判断浅货位是否被锁定
if (!shallowStartAttr.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
throw new BadRequestException("当前终点仓位对应的浅货位【"+shallowStartAttr.getStruct_code()+"】被锁定,无法下发任务");
}
if (ObjectUtil.isNotEmpty(shallowStartAttr.getStoragevehicle_code())) {
// 有货:创建子任务
createInsideDtlMoveTask(shallowStartAttr.getStruct_code(),shallowStartAttr.getStruct_code(),shallowStartAttr.getStoragevehicle_code(),task_id);
}
} else {
// 查询对应深货位
Structattr attr = iStructattrService.getOne(
new QueryWrapper<Structattr>().lambda()
.eq(Structattr::getBlock_num, endAttr.getBlock_num())
.eq(Structattr::getCol_num, endAttr.getCol_num())
.eq(Structattr::getLayer_num, endAttr.getLayer_num())
.eq(Structattr::getPlacement_type, IOSEnum.PLACEMENT_TYPE.code("深货位"))
);
// 判断深货位是否被锁定
if (!attr.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
throw new BadRequestException("当前终点仓位对应的深货位【"+attr.getStruct_code()+"】被锁定,无法下发任务");
}
// 判断是否有货
if (ObjectUtil.isEmpty(attr.getStoragevehicle_code())) {
throw new BadRequestException("移库会造成仓位【"+attr.getStruct_code()+"】为空洞,无法下发任务");
}
}
// ---------- 创建起点任务 ----------
createInsideDtlMoveTask(startAttr.getStruct_code(),endAttr.getStruct_code(),startAttr.getStoragevehicle_code(),task_id);
// ---------- 创建终点任务 ----------
if (ObjectUtil.isNotEmpty(endAttr.getStoragevehicle_code())) {
// 终点不为空则需要创建终点到起点的任务
createInsideDtlMoveTask(endAttr.getStruct_code(),startAttr.getStruct_code(),endAttr.getStoragevehicle_code(),task_id);
}
return task_id;
}
/**
* 判断是否浅货位阻挡移库
*
* @param dtlDao 移出货位
* @return JSONObject {
* out_point 移库单移出货位
* task_id 移库阻挡移库任务标识
* }
*/
public JSONObject checkMove(StIvtMoveinvdtl dtlDao) {
JSONObject result = new JSONObject();
// 查询移出货位
Structattr outAttr = iStructattrService.getByCode(dtlDao.getTurnout_struct_code());
// 判断移出货位是深货位还是浅货位
if (outAttr.getPlacement_type().equals(IOSEnum.PLACEMENT_TYPE.code("浅货位"))) {
result.put("out_point",outAttr.getStruct_code());
return result;
}
// 查询对应的浅货位
Structattr shallowAttr = iStructattrService.getOne(
new QueryWrapper<Structattr>().lambda()
.eq(Structattr::getBlock_num, outAttr.getBlock_num())
.eq(Structattr::getCol_num, outAttr.getCol_num())
.eq(Structattr::getLayer_num, outAttr.getLayer_num())
.eq(Structattr::getPlacement_type, IOSEnum.PLACEMENT_TYPE.code("浅货位"))
);
if (ObjectUtil.isEmpty(shallowAttr)) {
throw new BadRequestException("仓位【" + outAttr.getStruct_code() + "】对应的浅货位不存在,请检查数据!");
}
// 判断浅货位是否空位
if (ObjectUtil.isEmpty(shallowAttr.getStoragevehicle_code())) {
// 浅货位空位
if (shallowAttr.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
result.put("out_point",outAttr.getStruct_code());
return result;
} else {
throw new BadRequestException("当前浅货位被锁定或有正在入库的任务,请稍后在试!【"+shallowAttr.getStruct_code()+"");
}
}
// 浅货位有货
if (shallowAttr.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
// 有货未锁定生成移库任务
JSONObject jsonTask = new JSONObject();
jsonTask.put("point_code1", shallowAttr.getStruct_code());
jsonTask.put("point_code2", outAttr.getStruct_code());
jsonTask.put("vehicle_code", shallowAttr.getStoragevehicle_code());
jsonTask.put("vehicle_code2", outAttr.getStoragevehicle_code());
// 锁定起点
iStructattrService.update(
new UpdateWrapper<Structattr>().lambda()
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("移出锁"))
.eq(Structattr::getStruct_code, jsonTask.getString("point_code1"))
);
// 锁定终点
iStructattrService.update(
new UpdateWrapper<Structattr>().lambda()
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("移入锁"))
.eq(Structattr::getStruct_code, jsonTask.getString("point_code2"))
);
String task_id = moveOutMoveTask.create(jsonTask);
result.put("out_point",outAttr.getStruct_code());
result.put("task_id",task_id);
} else {
// 判断是否是当前移库单的移库
if (shallowAttr.getStruct_code().equals(dtlDao.getTurnin_struct_code())) {
result.put("out_point",outAttr.getStruct_code());
} else {
// 有货锁定
throw new BadRequestException("当前浅货位被锁定或有正在出库的任务,请稍后在试!【"+shallowAttr.getStruct_code()+"");
}
}
return result;
return task.create(jsonTask);
}
@Override
@@ -566,14 +367,4 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl<StIvtMoveinvMapper, StI
mstDao.setUpdate_time(DateUtil.now());
this.updateById(mstDao);
}
private void createInsideDtlMoveTask(String point_code1, String point_code2, String vehicle_code, String contact_task) {
JSONObject jsonTask = new JSONObject();
jsonTask.put("point_code1", point_code1);
jsonTask.put("point_code2", point_code2);
jsonTask.put("vehicle_code", vehicle_code);
jsonTask.put("contact_task", contact_task);
insideDtlMoveTask.create(jsonTask);
}
}

View File

@@ -3,7 +3,6 @@ package org.nl.wms.warehouse_management.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -12,7 +11,6 @@ import org.nl.common.exception.BadRequestException;
import org.nl.wms.basedata_manage.service.IStructattrService;
import org.nl.wms.basedata_manage.service.dao.Structattr;
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
import org.nl.wms.sch_manage.service.dao.mapper.SchBaseTaskMapper;
import org.nl.wms.sch_manage.service.util.tasks.EmpOutMoveTask;
import org.nl.wms.sch_manage.service.util.tasks.EmpVehicleOutTask;
@@ -79,9 +77,12 @@ public class VehicleOutServiceImpl implements VehicleOutService {
public void create(JSONObject whereJson) {
// 根据库区找空载具
List<Structattr> attrList = autoDivStruct(whereJson);
if (ObjectUtil.isEmpty(attrList)) {
throw new BadRequestException("暂时没有可用的空载具!");
}
Structattr structattr = new Structattr();
String point_code1 = "";
Structattr structattr = attrList.get(0);
/*String point_code1 = "";
for (Structattr attrDao : attrList) {
// 判断是深浅货位
if (attrDao.getPlacement_type().equals(IOSEnum.PLACEMENT_TYPE.code("浅货位"))) {
@@ -126,40 +127,36 @@ public class VehicleOutServiceImpl implements VehicleOutService {
}
}
}
}
if (ObjectUtil.isEmpty(structattr)) {
throw new BadRequestException("暂时没有可用的空载具!");
}
}*/
// 锁定仓位
iStructattrService.update(
new UpdateWrapper<Structattr>().lambda()
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("空托盘出库锁"))
.eq(Structattr::getStruct_code, structattr.getStruct_code())
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("空托盘出库锁"))
.eq(Structattr::getStruct_code, structattr.getStruct_code())
);
// 创建任务
JSONObject jsonTask = new JSONObject();
jsonTask.put("point_code1", point_code1);
jsonTask.put("point_code1", structattr.getStruct_code());
jsonTask.put("point_code2", IOSConstant.CZW_POINT);
// 判断终点是否是称重位
jsonTask.put("point_code3", whereJson.getString("point_code").equals(IOSConstant.CZW_POINT)
? "" : whereJson.getString("point_code")
);
// 用于任务完成时更新原仓位
jsonTask.put("point_code4", structattr.getStruct_code());
jsonTask.put("vehicle_code", structattr.getStoragevehicle_code());
// jsonTask.put("point_code4", structattr.getStruct_code());
// jsonTask.put("vehicle_code", structattr.getStoragevehicle_code());
String task_id = empVehicleOutTask.create(jsonTask);
if (ObjectUtil.isNotEmpty(structattr.getTask_id())) {
/* if (ObjectUtil.isNotEmpty(structattr.getTask_id())) {
// 更新空载具出库任务类ext_group_data字段
iSchBaseTaskService.update(
new UpdateWrapper<SchBaseTask>().lambda()
.set(SchBaseTask::getExt_group_data, task_id)
.eq(SchBaseTask::getTask_id, structattr.getTask_id())
);
}
}*/
}
/**