rev:合箱移库、拼箱移库、库内移库、盘点移库 逻辑修改
This commit is contained in:
@@ -262,6 +262,7 @@ public class CheckBackMoveTask extends AbstractTask {
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code2())
|
||||
.set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code())
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
);
|
||||
|
||||
// 更新盘点明细状态
|
||||
|
||||
@@ -25,6 +25,7 @@ import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_management.service.*;
|
||||
import org.nl.wms.warehouse_management.service.dao.StIvtCheckdtl;
|
||||
import org.nl.wms.warehouse_management.service.dao.StIvtMoveinvdtl;
|
||||
import org.nl.wms.warehouse_management.service.dao.StIvtPieceBoxDtl;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -163,9 +164,6 @@ public class CheckMoveTask extends AbstractTask {
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
if (Integer.parseInt(taskObj.getTask_status()) > Integer.parseInt(TaskStatus.CREATE.getCode())) {
|
||||
throw new BadRequestException("只能取消生成中的任务!");
|
||||
}
|
||||
this.cancelTask(taskObj);
|
||||
}
|
||||
|
||||
@@ -230,4 +228,24 @@ public class CheckMoveTask extends AbstractTask {
|
||||
public JSONObject resultWeigh(SchBaseTask taskObj) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 更新单据货位
|
||||
* @param task_id 明细任务标识
|
||||
* @param struct_code 更新的货位
|
||||
*/
|
||||
public void updateIosPoint(String task_id, String struct_code) {
|
||||
Structattr attr = iStructattrService.getByCode(struct_code);
|
||||
|
||||
// 更新盘点明细仓位
|
||||
StIvtCheckdtl dtlDao = iStIvtCheckdtlService.getOne(
|
||||
new QueryWrapper<StIvtCheckdtl>().lambda()
|
||||
.eq(StIvtCheckdtl::getTask_id, task_id)
|
||||
);
|
||||
|
||||
dtlDao.setStruct_code(attr.getStruct_code());
|
||||
dtlDao.setSect_code(attr.getSect_code());
|
||||
iStIvtCheckdtlService.updateById(dtlDao);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -181,9 +181,6 @@ public class CombinedBoxMoveTask extends AbstractTask {
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
if (Integer.parseInt(taskObj.getTask_status()) > Integer.parseInt(TaskStatus.CREATE.getCode())) {
|
||||
throw new BadRequestException("只能取消生成中的任务!");
|
||||
}
|
||||
this.cancelTask(taskObj);
|
||||
}
|
||||
|
||||
@@ -267,4 +264,23 @@ public class CombinedBoxMoveTask extends AbstractTask {
|
||||
public JSONObject resultWeigh(SchBaseTask taskObj) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新单据货位
|
||||
* @param task_id 明细任务标识
|
||||
* @param struct_code 更新的货位
|
||||
*/
|
||||
public void updateIosPoint(String task_id, String struct_code) {
|
||||
// 查询移库明细
|
||||
StIvtMoveinvdtl dtlDao = iStIvtMoveinvdtlService.getOne(
|
||||
new QueryWrapper<StIvtMoveinvdtl>().lambda()
|
||||
.eq(StIvtMoveinvdtl::getTask_id, task_id)
|
||||
);
|
||||
// 更新移库明细仓位
|
||||
Structattr attr = iStructattrService.getByCode(struct_code);
|
||||
|
||||
dtlDao.setTurnout_struct_code(attr.getStruct_code());
|
||||
dtlDao.setTurnout_sect_code(attr.getSect_code());
|
||||
iStIvtMoveinvdtlService.updateById(dtlDao);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,8 @@ import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.config.IdUtil;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
@@ -53,6 +55,12 @@ public class InsideMoveTask extends AbstractTask {
|
||||
@Autowired
|
||||
private IStIvtMoveinvdtlService iStIvtMoveinvdtlService;
|
||||
|
||||
/**
|
||||
* 仓位服务
|
||||
*/
|
||||
@Autowired
|
||||
private IStructattrService iStructattrService;
|
||||
|
||||
@Override
|
||||
public String create(JSONObject json) {
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
@@ -146,9 +154,6 @@ public class InsideMoveTask extends AbstractTask {
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
if (Integer.parseInt(taskObj.getTask_status()) > Integer.parseInt(TaskStatus.CREATE.getCode())) {
|
||||
throw new BadRequestException("只能取消生成中的任务!");
|
||||
}
|
||||
this.cancelTask(taskObj);
|
||||
}
|
||||
|
||||
@@ -188,4 +193,23 @@ public class InsideMoveTask extends AbstractTask {
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新单据货位
|
||||
* @param task_id 明细任务标识
|
||||
* @param struct_code 更新的货位
|
||||
*/
|
||||
public void updateIosPoint(String task_id, String struct_code) {
|
||||
// 查询移库明细
|
||||
StIvtMoveinvdtl dtlDao = iStIvtMoveinvdtlService.getOne(
|
||||
new QueryWrapper<StIvtMoveinvdtl>().lambda()
|
||||
.eq(StIvtMoveinvdtl::getTask_id, task_id)
|
||||
);
|
||||
// 更新移库明细仓位
|
||||
Structattr attr = iStructattrService.getByCode(struct_code);
|
||||
|
||||
dtlDao.setTurnout_struct_code(attr.getStruct_code());
|
||||
dtlDao.setTurnout_sect_code(attr.getSect_code());
|
||||
iStIvtMoveinvdtlService.updateById(dtlDao);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,258 @@
|
||||
package org.nl.wms.sch_manage.service.util.tasks;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.config.IdUtil;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
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.*;
|
||||
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 移库阻挡移库任务类
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-09-15
|
||||
*/
|
||||
@Component(value = "MoveOutMoveTask")
|
||||
@TaskType("MoveOutMoveTask")
|
||||
public class MoveOutMoveTask extends AbstractTask {
|
||||
|
||||
/**
|
||||
* 任务服务类
|
||||
*/
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
|
||||
/**
|
||||
* 仓位服务
|
||||
*/
|
||||
@Autowired
|
||||
private IStructattrService iStructattrService;
|
||||
|
||||
/**
|
||||
* 任务工厂服务
|
||||
*/
|
||||
@Autowired
|
||||
private TaskFactory taskFactory;
|
||||
|
||||
/**
|
||||
* 库内移库任务类
|
||||
*/
|
||||
@Autowired
|
||||
private InsideMoveTask insideMoveTask;
|
||||
|
||||
/**
|
||||
* 合箱移库任务类
|
||||
*/
|
||||
@Autowired
|
||||
private CombinedBoxMoveTask combinedBoxMoveTask;
|
||||
|
||||
/**
|
||||
* 拼箱移库任务类
|
||||
*/
|
||||
@Autowired
|
||||
private PieceBoxMoveTask pieceBoxMoveTask;
|
||||
|
||||
/**
|
||||
* 盘点移库任务类
|
||||
*/
|
||||
@Autowired
|
||||
private CheckMoveTask CheckMoveTask;
|
||||
|
||||
@Override
|
||||
public String create(JSONObject json) {
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
task.setTask_id(IdUtil.getStringId());
|
||||
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
|
||||
task.setTask_status(TaskStatus.CREATE.getCode());
|
||||
task.setConfig_code(MoveOutMoveTask.class.getSimpleName());
|
||||
task.setPoint_code1(json.getString("point_code1"));
|
||||
task.setPoint_code2(json.getString("point_code2"));
|
||||
task.setVehicle_code(json.getString("vehicle_code"));
|
||||
task.setVehicle_code2(json.getString("vehicle_code2"));
|
||||
task.setGroup_id(json.getString("group_id"));
|
||||
task.setRequest_param(json.toString());
|
||||
task.setPriority(json.getString("Priority"));
|
||||
task.setIs_wait(json.getString("is_wait"));
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setCreate_time(DateUtil.now());
|
||||
taskService.save(task);
|
||||
|
||||
// 下发任务
|
||||
this.sendTaskOne(task.getTask_id());
|
||||
return task.getTask_id();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AcsTaskDto sendAcsParam(String taskId) {
|
||||
SchBaseTask taskDao = taskService.getById(taskId);
|
||||
|
||||
// 组织下发给acs的数据
|
||||
AcsTaskDto acsTaskDto = new AcsTaskDto();
|
||||
acsTaskDto.setExt_task_id(taskDao.getTask_id());
|
||||
acsTaskDto.setTask_code(taskDao.getTask_code());
|
||||
acsTaskDto.setStart_device_code(taskDao.getPoint_code1());
|
||||
acsTaskDto.setNext_device_code(taskDao.getPoint_code2());
|
||||
acsTaskDto.setVehicle_code(taskDao.getVehicle_code());
|
||||
|
||||
acsTaskDto.setVehicle_type(IOSConstant.ONE);
|
||||
acsTaskDto.setIs_wait(IOSConstant.ZERO);
|
||||
acsTaskDto.setTask_type(ACSTaskTypeEnum.CTU_TASK.getCode());
|
||||
|
||||
acsTaskDto.setPriority(IOSConstant.ONE);
|
||||
acsTaskDto.setAgv_system_type(IOSConstant.THREE);
|
||||
acsTaskDto.setIs_get_pause(IOSConstant.ZERO);
|
||||
acsTaskDto.setIs_put_pause(IOSConstant.ZERO);
|
||||
|
||||
return acsTaskDto;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
// 校验任务
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
|
||||
throw new BadRequestException("该任务已完成!");
|
||||
}
|
||||
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
||||
throw new BadRequestException("该任务已取消!");
|
||||
}
|
||||
// 根据传来的类型去对任务进行操作
|
||||
if (status.equals(TaskStatus.EXECUTING)) {
|
||||
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
||||
taskObj.setRemark("执行中");
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
if (status.equals(TaskStatus.FINISHED)) {
|
||||
this.finishTask(taskObj);
|
||||
}
|
||||
if (status.equals(TaskStatus.CANCELED)) {
|
||||
this.cancelTask(taskObj);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void forceFinish(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
this.finishTask(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void cancel(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
this.cancelTask(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void taskConfirm(String task_code) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject resultWeigh(SchBaseTask taskObj) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void finishTask(SchBaseTask taskObj) {
|
||||
// 起点货位
|
||||
Structattr startStruct = iStructattrService.getByCode(taskObj.getPoint_code1());
|
||||
// 终点货位
|
||||
Structattr endStruct = iStructattrService.getByCode(taskObj.getPoint_code2());
|
||||
|
||||
// 更新起点
|
||||
iStructattrService.update(
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code1())
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("移出锁"))
|
||||
.set(Structattr::getStoragevehicle_code, endStruct.getStoragevehicle_code())
|
||||
.set(Structattr::getIs_emptyvehicle,
|
||||
endStruct.getIs_emptyvehicle().equals(IOSConstant.IS_DELETE_YES) ? IOSConstant.IS_DELETE_YES
|
||||
: IOSConstant.IS_DELETE_NO
|
||||
)
|
||||
);
|
||||
|
||||
// 更新终点
|
||||
iStructattrService.update(
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code2())
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.set(Structattr::getStoragevehicle_code, startStruct.getStoragevehicle_code())
|
||||
.set(Structattr::getIs_emptyvehicle,
|
||||
startStruct.getIs_emptyvehicle().equals(IOSConstant.IS_DELETE_YES) ? IOSConstant.IS_DELETE_YES
|
||||
: IOSConstant.IS_DELETE_NO
|
||||
)
|
||||
);
|
||||
|
||||
// 更新任务状态
|
||||
taskObj.setRemark("已完成");
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskService.updateById(taskObj);
|
||||
|
||||
// 更新源单据货位
|
||||
SchBaseTask moveIosTask = taskService.getById(taskObj.getContact_task());
|
||||
if (moveIosTask.getConfig_code().equals(IOSEnum.MOVE_CONFIG_CODE.code("2001"))) {
|
||||
// 库内移库
|
||||
insideMoveTask.updateIosPoint(moveIosTask.getTask_id(), startStruct.getStruct_code());
|
||||
} else if (moveIosTask.getConfig_code().equals(IOSEnum.MOVE_CONFIG_CODE.code("2002"))) {
|
||||
// 合箱移库
|
||||
combinedBoxMoveTask.updateIosPoint(moveIosTask.getTask_id(), startStruct.getStruct_code());
|
||||
} else if (moveIosTask.getConfig_code().equals(IOSEnum.MOVE_CONFIG_CODE.code("2003"))) {
|
||||
// 拼箱移库
|
||||
pieceBoxMoveTask.updateIosPoint(moveIosTask.getTask_id(), startStruct.getStruct_code());
|
||||
} else if (moveIosTask.getConfig_code().equals(IOSEnum.MOVE_CONFIG_CODE.code("2004"))) {
|
||||
// 盘点移库
|
||||
CheckMoveTask.updateIosPoint(moveIosTask.getTask_id(), startStruct.getStruct_code());
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void cancelTask(SchBaseTask taskObj) {
|
||||
// 根据任务类型取消移库单移库任务
|
||||
SchBaseTask moveIosTask = taskService.getById(taskObj.getContact_task());
|
||||
AbstractTask task = taskFactory.getTask(moveIosTask.getConfig_code());
|
||||
task.cancel(moveIosTask.getTask_code());
|
||||
|
||||
// 更新起点
|
||||
iStructattrService.update(
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code1())
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
);
|
||||
// 更新终点
|
||||
iStructattrService.update(
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code2())
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
);
|
||||
|
||||
// 更新当前任务状态
|
||||
taskObj.setRemark("已取消");
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
}
|
||||
@@ -184,9 +184,6 @@ public class PieceBoxMoveTask extends AbstractTask {
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
if (Integer.parseInt(taskObj.getTask_status()) > Integer.parseInt(TaskStatus.CREATE.getCode())) {
|
||||
throw new BadRequestException("只能取消生成中的任务!");
|
||||
}
|
||||
this.cancelTask(taskObj);
|
||||
}
|
||||
|
||||
@@ -272,4 +269,28 @@ public class PieceBoxMoveTask extends AbstractTask {
|
||||
public JSONObject resultWeigh(SchBaseTask taskObj) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新单据货位
|
||||
* @param task_id 明细任务标识
|
||||
* @param struct_code 更新的货位
|
||||
*/
|
||||
public void updateIosPoint(String task_id, String struct_code) {
|
||||
// 查询移库明细
|
||||
StIvtMoveinvdtl dtlDao = iStIvtMoveinvdtlService.getOne(
|
||||
new QueryWrapper<StIvtMoveinvdtl>().lambda()
|
||||
.eq(StIvtMoveinvdtl::getTask_id, task_id)
|
||||
);
|
||||
// 更新移库明细仓位
|
||||
Structattr attr = iStructattrService.getByCode(struct_code);
|
||||
|
||||
dtlDao.setTurnout_struct_code(attr.getStruct_code());
|
||||
dtlDao.setTurnout_sect_code(attr.getSect_code());
|
||||
iStIvtMoveinvdtlService.updateById(dtlDao);
|
||||
|
||||
// 更新拼箱明细仓位
|
||||
StIvtPieceBoxDtl boxDtlDao = iStIvtPieceBoxDtlService.getById(dtlDao.getSource_bill_code());
|
||||
boxDtlDao.setStruct_code(struct_code);
|
||||
iStIvtPieceBoxDtlService.updateById(boxDtlDao);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,8 +16,13 @@ import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
|
||||
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.util.tasks.CheckBackMoveTask;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.CheckMoveTask;
|
||||
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.IMdPbGroupplateService;
|
||||
@@ -72,6 +77,24 @@ public class StIvtCheckmstServiceImpl extends ServiceImpl<StIvtCheckmstMapper, S
|
||||
@Autowired
|
||||
private IMdPbGroupplateService iMdPbGroupplateService;
|
||||
|
||||
/**
|
||||
* 仓位服务
|
||||
*/
|
||||
@Autowired
|
||||
private IStructattrService iStructattrService;
|
||||
|
||||
/**
|
||||
* 移库阻挡移库任务类
|
||||
*/
|
||||
@Autowired
|
||||
private MoveOutMoveTask moveOutMoveTask;
|
||||
|
||||
/**
|
||||
* 任务服务
|
||||
*/
|
||||
@Autowired
|
||||
private ISchBaseTaskService iSchBaseTaskService;
|
||||
|
||||
@Override
|
||||
public IPage<StIvtCheckmst> queryAll(Map whereJson, PageQuery page) {
|
||||
String check_code = MapUtil.getStr(whereJson, "check_code");
|
||||
@@ -156,7 +179,7 @@ public class StIvtCheckmstServiceImpl extends ServiceImpl<StIvtCheckmstMapper, S
|
||||
public void dtlCheckConfirm(StIvtCheckdtl dao) {
|
||||
StIvtCheckdtl dtlDao = iStIvtCheckdtlService.getById(dao.getCheckdtl_id());
|
||||
String dtlVehicle = dtlDao.getStoragevehicle_code();
|
||||
if (!dtlVehicle.equals(dao.getStoragevehicle_code())){
|
||||
if (!dtlVehicle.equals(dao.getStoragevehicle_code())) {
|
||||
throw new BadRequestException("扫码托盘不属于当前盘点当");
|
||||
}
|
||||
dtlDao.setFac_qty(dao.getFac_qty());
|
||||
@@ -191,16 +214,16 @@ public class StIvtCheckmstServiceImpl extends ServiceImpl<StIvtCheckmstMapper, S
|
||||
// 生成损益单据
|
||||
List<StIvtCheckdtl> dtlDaoList = new ArrayList<>();
|
||||
dtlDaoList.add(dtlDao);
|
||||
iStIvtCheckdtlService.createMore(dtlDaoList,dtlDao.getCheck_id());
|
||||
iStIvtCheckdtlService.createMore(dtlDaoList, dtlDao.getCheck_id());
|
||||
|
||||
// 更新组盘记录表
|
||||
iMdPbGroupplateService.update(
|
||||
new UpdateWrapper<GroupPlate>().lambda()
|
||||
.set(GroupPlate::getQty, dtlDao.getFac_qty())
|
||||
.eq(GroupPlate::getMaterial_id, dtlDao.getMaterial_id())
|
||||
.eq(GroupPlate::getStoragevehicle_code, dtlDao.getStoragevehicle_code())
|
||||
.eq(GroupPlate::getPcsn, dtlDao.getPcsn())
|
||||
.eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库"))
|
||||
.set(GroupPlate::getQty, dtlDao.getFac_qty())
|
||||
.eq(GroupPlate::getMaterial_id, dtlDao.getMaterial_id())
|
||||
.eq(GroupPlate::getStoragevehicle_code, dtlDao.getStoragevehicle_code())
|
||||
.eq(GroupPlate::getPcsn, dtlDao.getPcsn())
|
||||
.eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库"))
|
||||
);
|
||||
|
||||
// 更新明细
|
||||
@@ -282,10 +305,24 @@ public class StIvtCheckmstServiceImpl extends ServiceImpl<StIvtCheckmstMapper, S
|
||||
.eq(StIvtCheckdtl::getStatus, IOSEnum.CHECK_DTL_STATUS.code("生成"))
|
||||
);
|
||||
|
||||
if (dtlDaoList.size() > 1) {
|
||||
throw new BadRequestException("当前CTU只支持单条盘点移库任务,请保证盘点单只有一条明细!");
|
||||
}
|
||||
|
||||
// 生成盘点移库任务
|
||||
for (StIvtCheckdtl dtlDao : dtlDaoList) {
|
||||
// 锁定盘点货位
|
||||
iStructattrService.update(
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("移出锁"))
|
||||
.eq(Structattr::getStruct_code, dtlDao.getStruct_code())
|
||||
);
|
||||
|
||||
// 判断是否阻挡
|
||||
JSONObject result = checkMove(dtlDao);
|
||||
|
||||
JSONObject jsonTask = new JSONObject();
|
||||
jsonTask.put("point_code1", dtlDao.getStruct_code());
|
||||
jsonTask.put("point_code1", result.getString("out_point"));
|
||||
jsonTask.put("point_code2", IOSConstant.CZW_POINT);
|
||||
jsonTask.put("vehicle_code", dtlDao.getStoragevehicle_code());
|
||||
String task_id = checkMoveTask.create(jsonTask);
|
||||
@@ -293,7 +330,92 @@ public class StIvtCheckmstServiceImpl extends ServiceImpl<StIvtCheckmstMapper, S
|
||||
// 更新明细
|
||||
dtlDao.setTask_id(task_id);
|
||||
dtlDao.setStatus(IOSEnum.CHECK_DTL_STATUS.code("移库中"));
|
||||
|
||||
// 更新关联任务
|
||||
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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否浅货位阻挡移库
|
||||
*
|
||||
* @param dtlDao 移出货位
|
||||
* @return JSONObject {
|
||||
* out_point: 移库单移出货位
|
||||
* task_id: 移库阻挡移库任务标识
|
||||
* }
|
||||
*/
|
||||
public JSONObject checkMove(StIvtCheckdtl dtlDao) {
|
||||
JSONObject result = new JSONObject();
|
||||
|
||||
// 查询移出货位
|
||||
Structattr outAttr = iStructattrService.getByCode(dtlDao.getStruct_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());
|
||||
|
||||
String task_id = moveOutMoveTask.create(jsonTask);
|
||||
result.put("out_point", shallowAttr.getStruct_code());
|
||||
result.put("task_id", task_id);
|
||||
|
||||
// 锁定起点
|
||||
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"))
|
||||
);
|
||||
} else {
|
||||
// 有货锁定
|
||||
throw new BadRequestException("当前浅货位被锁定或有正在出库的任务,请稍后在试!【" + shallowAttr.getStruct_code() + "】");
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,6 @@ import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper;
|
||||
@@ -22,6 +21,7 @@ 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.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;
|
||||
@@ -63,12 +63,6 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl<StIvtMoveinvMapper, StI
|
||||
@Autowired
|
||||
private IStIvtMoveinvdtlService iStIvtMoveinvdtlService;
|
||||
|
||||
/**
|
||||
* 物料服务
|
||||
*/
|
||||
@Autowired
|
||||
private IMdMeMaterialbaseService iMdMeMaterialbaseService;
|
||||
|
||||
/**
|
||||
* 仓位服务
|
||||
*/
|
||||
@@ -87,6 +81,12 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl<StIvtMoveinvMapper, StI
|
||||
@Autowired
|
||||
private TaskFactory taskFactory;
|
||||
|
||||
/**
|
||||
* 移库阻挡移库任务类
|
||||
*/
|
||||
@Autowired
|
||||
private MoveOutMoveTask moveOutMoveTask;
|
||||
|
||||
@Override
|
||||
public IPage<JSONObject> queryAll(Map whereJson, PageQuery page) {
|
||||
return this.baseMapper.queryAllByPage(new Page<>(page.getPage() + 1, page.getSize()),
|
||||
@@ -238,7 +238,7 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl<StIvtMoveinvMapper, StI
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStruct_code, dtlDao.getTurnin_struct_code())
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.set(Structattr::getIs_emptyvehicle,IOSConstant.IS_DELETE_NO)
|
||||
.set(Structattr::getIs_emptyvehicle, IOSConstant.IS_DELETE_NO)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -286,33 +286,7 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl<StIvtMoveinvMapper, StI
|
||||
@Override
|
||||
@Transactional
|
||||
public void sendTask(StIvtMoveinv dao) {
|
||||
StIvtMoveinv mstDao = this.getById(dao.getMoveinv_id());
|
||||
if (!mstDao.getBill_status().equals(IOSEnum.MORE_MST_STATUS.code("生成"))) {
|
||||
throw new BadRequestException("当前移库单已下发任务!");
|
||||
}
|
||||
|
||||
List<StIvtMoveinvdtl> dtlList = iStIvtMoveinvdtlService.list(
|
||||
new QueryWrapper<StIvtMoveinvdtl>().lambda()
|
||||
.eq(StIvtMoveinvdtl::getMoveinv_id, dao.getMoveinv_id())
|
||||
);
|
||||
|
||||
AbstractTask task = taskFactory.getTask(IOSEnum.MOVE_CONFIG_CODE.code(mstDao.getBill_type()));
|
||||
for (StIvtMoveinvdtl dtlDao : dtlList) {
|
||||
JSONObject jsonTask = new JSONObject();
|
||||
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());
|
||||
String task_id = task.create(jsonTask);
|
||||
|
||||
// 更新明细任务标识
|
||||
dtlDao.setTask_id(task_id);
|
||||
}
|
||||
iStIvtMoveinvdtlService.updateBatchById(dtlList);
|
||||
|
||||
// 更新主表状态为提交
|
||||
dao.setBill_status(IOSEnum.MOVE_MST_STATUS.code("提交"));
|
||||
this.updateById(dao);
|
||||
this.sendOneTask(dao);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -331,15 +305,26 @@ 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) {
|
||||
// 判断是否阻挡
|
||||
JSONObject result = checkMove(dtlDao);
|
||||
|
||||
JSONObject jsonTask = new JSONObject();
|
||||
jsonTask.put("point_code1", dtlDao.getTurnout_struct_code());
|
||||
jsonTask.put("point_code1", result.getString("out_point"));
|
||||
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);
|
||||
|
||||
// 更新明细任务标识
|
||||
dtlDao.setTask_id(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"))
|
||||
);
|
||||
}
|
||||
}
|
||||
iStIvtMoveinvdtlService.updateBatchById(dtlList);
|
||||
|
||||
@@ -350,6 +335,87 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl<StIvtMoveinvMapper, StI
|
||||
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",shallowAttr.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;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateMstStatus(String moveinv_id) {
|
||||
StIvtMoveinv mstDao = this.getById(moveinv_id);
|
||||
|
||||
Reference in New Issue
Block a user