rev:合箱移库、拼箱移库、库内移库、盘点移库 逻辑修改
This commit is contained in:
@@ -262,6 +262,7 @@ public class CheckBackMoveTask extends AbstractTask {
|
|||||||
new UpdateWrapper<Structattr>().lambda()
|
new UpdateWrapper<Structattr>().lambda()
|
||||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code2())
|
.eq(Structattr::getStruct_code, taskObj.getPoint_code2())
|
||||||
.set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code())
|
.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.*;
|
||||||
import org.nl.wms.warehouse_management.service.dao.StIvtCheckdtl;
|
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.StIvtMoveinvdtl;
|
||||||
|
import org.nl.wms.warehouse_management.service.dao.StIvtPieceBoxDtl;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@@ -163,9 +164,6 @@ public class CheckMoveTask extends AbstractTask {
|
|||||||
if (ObjectUtil.isEmpty(taskObj)) {
|
if (ObjectUtil.isEmpty(taskObj)) {
|
||||||
throw new BadRequestException("该任务不存在");
|
throw new BadRequestException("该任务不存在");
|
||||||
}
|
}
|
||||||
if (Integer.parseInt(taskObj.getTask_status()) > Integer.parseInt(TaskStatus.CREATE.getCode())) {
|
|
||||||
throw new BadRequestException("只能取消生成中的任务!");
|
|
||||||
}
|
|
||||||
this.cancelTask(taskObj);
|
this.cancelTask(taskObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -230,4 +228,24 @@ public class CheckMoveTask extends AbstractTask {
|
|||||||
public JSONObject resultWeigh(SchBaseTask taskObj) {
|
public JSONObject resultWeigh(SchBaseTask taskObj) {
|
||||||
return null;
|
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)) {
|
if (ObjectUtil.isEmpty(taskObj)) {
|
||||||
throw new BadRequestException("该任务不存在");
|
throw new BadRequestException("该任务不存在");
|
||||||
}
|
}
|
||||||
if (Integer.parseInt(taskObj.getTask_status()) > Integer.parseInt(TaskStatus.CREATE.getCode())) {
|
|
||||||
throw new BadRequestException("只能取消生成中的任务!");
|
|
||||||
}
|
|
||||||
this.cancelTask(taskObj);
|
this.cancelTask(taskObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -267,4 +264,23 @@ public class CombinedBoxMoveTask extends AbstractTask {
|
|||||||
public JSONObject resultWeigh(SchBaseTask taskObj) {
|
public JSONObject resultWeigh(SchBaseTask taskObj) {
|
||||||
return null;
|
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.CodeUtil;
|
||||||
import org.nl.common.utils.SecurityUtils;
|
import org.nl.common.utils.SecurityUtils;
|
||||||
import org.nl.config.IdUtil;
|
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.enums.TaskStatus;
|
||||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
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.SchBaseTask;
|
||||||
@@ -53,6 +55,12 @@ public class InsideMoveTask extends AbstractTask {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private IStIvtMoveinvdtlService iStIvtMoveinvdtlService;
|
private IStIvtMoveinvdtlService iStIvtMoveinvdtlService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 仓位服务
|
||||||
|
*/
|
||||||
|
@Autowired
|
||||||
|
private IStructattrService iStructattrService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String create(JSONObject json) {
|
public String create(JSONObject json) {
|
||||||
SchBaseTask task = new SchBaseTask();
|
SchBaseTask task = new SchBaseTask();
|
||||||
@@ -146,9 +154,6 @@ public class InsideMoveTask extends AbstractTask {
|
|||||||
if (ObjectUtil.isEmpty(taskObj)) {
|
if (ObjectUtil.isEmpty(taskObj)) {
|
||||||
throw new BadRequestException("该任务不存在");
|
throw new BadRequestException("该任务不存在");
|
||||||
}
|
}
|
||||||
if (Integer.parseInt(taskObj.getTask_status()) > Integer.parseInt(TaskStatus.CREATE.getCode())) {
|
|
||||||
throw new BadRequestException("只能取消生成中的任务!");
|
|
||||||
}
|
|
||||||
this.cancelTask(taskObj);
|
this.cancelTask(taskObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -188,4 +193,23 @@ public class InsideMoveTask extends AbstractTask {
|
|||||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||||
taskService.updateById(taskObj);
|
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)) {
|
if (ObjectUtil.isEmpty(taskObj)) {
|
||||||
throw new BadRequestException("该任务不存在");
|
throw new BadRequestException("该任务不存在");
|
||||||
}
|
}
|
||||||
if (Integer.parseInt(taskObj.getTask_status()) > Integer.parseInt(TaskStatus.CREATE.getCode())) {
|
|
||||||
throw new BadRequestException("只能取消生成中的任务!");
|
|
||||||
}
|
|
||||||
this.cancelTask(taskObj);
|
this.cancelTask(taskObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -272,4 +269,28 @@ public class PieceBoxMoveTask extends AbstractTask {
|
|||||||
public JSONObject resultWeigh(SchBaseTask taskObj) {
|
public JSONObject resultWeigh(SchBaseTask taskObj) {
|
||||||
return null;
|
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.IdUtil;
|
||||||
import org.nl.common.utils.SecurityUtils;
|
import org.nl.common.utils.SecurityUtils;
|
||||||
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
|
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.CheckBackMoveTask;
|
||||||
import org.nl.wms.sch_manage.service.util.tasks.CheckMoveTask;
|
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.IOSConstant;
|
||||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||||
import org.nl.wms.warehouse_management.service.IMdPbGroupplateService;
|
import org.nl.wms.warehouse_management.service.IMdPbGroupplateService;
|
||||||
@@ -72,6 +77,24 @@ public class StIvtCheckmstServiceImpl extends ServiceImpl<StIvtCheckmstMapper, S
|
|||||||
@Autowired
|
@Autowired
|
||||||
private IMdPbGroupplateService iMdPbGroupplateService;
|
private IMdPbGroupplateService iMdPbGroupplateService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 仓位服务
|
||||||
|
*/
|
||||||
|
@Autowired
|
||||||
|
private IStructattrService iStructattrService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 移库阻挡移库任务类
|
||||||
|
*/
|
||||||
|
@Autowired
|
||||||
|
private MoveOutMoveTask moveOutMoveTask;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务服务
|
||||||
|
*/
|
||||||
|
@Autowired
|
||||||
|
private ISchBaseTaskService iSchBaseTaskService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IPage<StIvtCheckmst> queryAll(Map whereJson, PageQuery page) {
|
public IPage<StIvtCheckmst> queryAll(Map whereJson, PageQuery page) {
|
||||||
String check_code = MapUtil.getStr(whereJson, "check_code");
|
String check_code = MapUtil.getStr(whereJson, "check_code");
|
||||||
@@ -156,7 +179,7 @@ public class StIvtCheckmstServiceImpl extends ServiceImpl<StIvtCheckmstMapper, S
|
|||||||
public void dtlCheckConfirm(StIvtCheckdtl dao) {
|
public void dtlCheckConfirm(StIvtCheckdtl dao) {
|
||||||
StIvtCheckdtl dtlDao = iStIvtCheckdtlService.getById(dao.getCheckdtl_id());
|
StIvtCheckdtl dtlDao = iStIvtCheckdtlService.getById(dao.getCheckdtl_id());
|
||||||
String dtlVehicle = dtlDao.getStoragevehicle_code();
|
String dtlVehicle = dtlDao.getStoragevehicle_code();
|
||||||
if (!dtlVehicle.equals(dao.getStoragevehicle_code())){
|
if (!dtlVehicle.equals(dao.getStoragevehicle_code())) {
|
||||||
throw new BadRequestException("扫码托盘不属于当前盘点当");
|
throw new BadRequestException("扫码托盘不属于当前盘点当");
|
||||||
}
|
}
|
||||||
dtlDao.setFac_qty(dao.getFac_qty());
|
dtlDao.setFac_qty(dao.getFac_qty());
|
||||||
@@ -191,16 +214,16 @@ public class StIvtCheckmstServiceImpl extends ServiceImpl<StIvtCheckmstMapper, S
|
|||||||
// 生成损益单据
|
// 生成损益单据
|
||||||
List<StIvtCheckdtl> dtlDaoList = new ArrayList<>();
|
List<StIvtCheckdtl> dtlDaoList = new ArrayList<>();
|
||||||
dtlDaoList.add(dtlDao);
|
dtlDaoList.add(dtlDao);
|
||||||
iStIvtCheckdtlService.createMore(dtlDaoList,dtlDao.getCheck_id());
|
iStIvtCheckdtlService.createMore(dtlDaoList, dtlDao.getCheck_id());
|
||||||
|
|
||||||
// 更新组盘记录表
|
// 更新组盘记录表
|
||||||
iMdPbGroupplateService.update(
|
iMdPbGroupplateService.update(
|
||||||
new UpdateWrapper<GroupPlate>().lambda()
|
new UpdateWrapper<GroupPlate>().lambda()
|
||||||
.set(GroupPlate::getQty, dtlDao.getFac_qty())
|
.set(GroupPlate::getQty, dtlDao.getFac_qty())
|
||||||
.eq(GroupPlate::getMaterial_id, dtlDao.getMaterial_id())
|
.eq(GroupPlate::getMaterial_id, dtlDao.getMaterial_id())
|
||||||
.eq(GroupPlate::getStoragevehicle_code, dtlDao.getStoragevehicle_code())
|
.eq(GroupPlate::getStoragevehicle_code, dtlDao.getStoragevehicle_code())
|
||||||
.eq(GroupPlate::getPcsn, dtlDao.getPcsn())
|
.eq(GroupPlate::getPcsn, dtlDao.getPcsn())
|
||||||
.eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库"))
|
.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("生成"))
|
.eq(StIvtCheckdtl::getStatus, IOSEnum.CHECK_DTL_STATUS.code("生成"))
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (dtlDaoList.size() > 1) {
|
||||||
|
throw new BadRequestException("当前CTU只支持单条盘点移库任务,请保证盘点单只有一条明细!");
|
||||||
|
}
|
||||||
|
|
||||||
// 生成盘点移库任务
|
// 生成盘点移库任务
|
||||||
for (StIvtCheckdtl dtlDao : dtlDaoList) {
|
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();
|
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("point_code2", IOSConstant.CZW_POINT);
|
||||||
jsonTask.put("vehicle_code", dtlDao.getStoragevehicle_code());
|
jsonTask.put("vehicle_code", dtlDao.getStoragevehicle_code());
|
||||||
String task_id = checkMoveTask.create(jsonTask);
|
String task_id = checkMoveTask.create(jsonTask);
|
||||||
@@ -293,7 +330,92 @@ public class StIvtCheckmstServiceImpl extends ServiceImpl<StIvtCheckmstMapper, S
|
|||||||
// 更新明细
|
// 更新明细
|
||||||
dtlDao.setTask_id(task_id);
|
dtlDao.setTask_id(task_id);
|
||||||
dtlDao.setStatus(IOSEnum.CHECK_DTL_STATUS.code("移库中"));
|
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);
|
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.CodeUtil;
|
||||||
import org.nl.common.utils.IdUtil;
|
import org.nl.common.utils.IdUtil;
|
||||||
import org.nl.common.utils.SecurityUtils;
|
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.IStructattrService;
|
||||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||||
import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper;
|
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.dao.SchBaseTask;
|
||||||
import org.nl.wms.sch_manage.service.util.AbstractTask;
|
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.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.IOSConstant;
|
||||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||||
import org.nl.wms.warehouse_management.service.IStIvtMoveinvService;
|
import org.nl.wms.warehouse_management.service.IStIvtMoveinvService;
|
||||||
@@ -63,12 +63,6 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl<StIvtMoveinvMapper, StI
|
|||||||
@Autowired
|
@Autowired
|
||||||
private IStIvtMoveinvdtlService iStIvtMoveinvdtlService;
|
private IStIvtMoveinvdtlService iStIvtMoveinvdtlService;
|
||||||
|
|
||||||
/**
|
|
||||||
* 物料服务
|
|
||||||
*/
|
|
||||||
@Autowired
|
|
||||||
private IMdMeMaterialbaseService iMdMeMaterialbaseService;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 仓位服务
|
* 仓位服务
|
||||||
*/
|
*/
|
||||||
@@ -87,6 +81,12 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl<StIvtMoveinvMapper, StI
|
|||||||
@Autowired
|
@Autowired
|
||||||
private TaskFactory taskFactory;
|
private TaskFactory taskFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 移库阻挡移库任务类
|
||||||
|
*/
|
||||||
|
@Autowired
|
||||||
|
private MoveOutMoveTask moveOutMoveTask;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IPage<JSONObject> queryAll(Map whereJson, PageQuery page) {
|
public IPage<JSONObject> queryAll(Map whereJson, PageQuery page) {
|
||||||
return this.baseMapper.queryAllByPage(new Page<>(page.getPage() + 1, page.getSize()),
|
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()
|
new UpdateWrapper<Structattr>().lambda()
|
||||||
.eq(Structattr::getStruct_code, dtlDao.getTurnin_struct_code())
|
.eq(Structattr::getStruct_code, dtlDao.getTurnin_struct_code())
|
||||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.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
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public void sendTask(StIvtMoveinv dao) {
|
public void sendTask(StIvtMoveinv dao) {
|
||||||
StIvtMoveinv mstDao = this.getById(dao.getMoveinv_id());
|
this.sendOneTask(dao);
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -331,15 +305,26 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl<StIvtMoveinvMapper, StI
|
|||||||
String task_id = "";
|
String task_id = "";
|
||||||
AbstractTask task = taskFactory.getTask(IOSEnum.MOVE_CONFIG_CODE.code(mstDao.getBill_type()));
|
AbstractTask task = taskFactory.getTask(IOSEnum.MOVE_CONFIG_CODE.code(mstDao.getBill_type()));
|
||||||
for (StIvtMoveinvdtl dtlDao : dtlList) {
|
for (StIvtMoveinvdtl dtlDao : dtlList) {
|
||||||
|
// 判断是否阻挡
|
||||||
|
JSONObject result = checkMove(dtlDao);
|
||||||
|
|
||||||
JSONObject jsonTask = new JSONObject();
|
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("point_code2", dtlDao.getTurnin_struct_code());
|
||||||
jsonTask.put("vehicle_code", dtlDao.getStoragevehicle_code());
|
jsonTask.put("vehicle_code", dtlDao.getStoragevehicle_code());
|
||||||
jsonTask.put("vehicle_code2", dtlDao.getStoragevehicle_code2());
|
jsonTask.put("vehicle_code2", dtlDao.getStoragevehicle_code2());
|
||||||
task_id = task.create(jsonTask);
|
task_id = task.create(jsonTask);
|
||||||
|
|
||||||
// 更新明细任务标识
|
// 更新明细任务标识
|
||||||
dtlDao.setTask_id(task_id);
|
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);
|
iStIvtMoveinvdtlService.updateBatchById(dtlList);
|
||||||
|
|
||||||
@@ -350,6 +335,87 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl<StIvtMoveinvMapper, StI
|
|||||||
return 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",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
|
@Override
|
||||||
public void updateMstStatus(String moveinv_id) {
|
public void updateMstStatus(String moveinv_id) {
|
||||||
StIvtMoveinv mstDao = this.getById(moveinv_id);
|
StIvtMoveinv mstDao = this.getById(moveinv_id);
|
||||||
|
|||||||
Reference in New Issue
Block a user