opt:越南富佳入库优化
This commit is contained in:
@@ -43,6 +43,13 @@ public class AcsToWmsController {
|
||||
return new ResponseEntity<>(acsToWmsService.acsApply(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/applyInBillError")
|
||||
@Log("ACS向LMS入库异常任务")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> applyInBillError(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(acsToWmsService.applyInBillError(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/getExecutingTask")
|
||||
@Log("ACS向LMS查询正在执行的任务数据")
|
||||
@SaIgnore
|
||||
|
||||
@@ -26,5 +26,7 @@ public interface AcsToWmsService {
|
||||
/** ACS请求接口 */
|
||||
Map<String, Object> acsApply(JSONObject param);
|
||||
|
||||
Map<String, Object> applyInBillError(JSONObject param);
|
||||
|
||||
Map<String, Object> getExecutingTask();
|
||||
}
|
||||
|
||||
@@ -5,22 +5,28 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.language.LangBehavior;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.ext_manage.enums.ResultAcsStatus;
|
||||
import org.nl.wms.ext_manage.service.AcsToWmsService;
|
||||
import org.nl.wms.pm_manage.service.dao.PmFormData;
|
||||
import org.nl.wms.pm_manage.service.dao.mapper.PmFormDataMapper;
|
||||
import org.nl.wms.sch_manage.enums.TaskEnum;
|
||||
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.AbstractTask;
|
||||
import org.nl.wms.sch_manage.service.util.TaskFactory;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.AcsErrorTask;
|
||||
import org.nl.wms.warehouse_manage.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_manage.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_manage.service.IRawAssistIStorService;
|
||||
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
|
||||
import org.nl.wms.warehouse_manage.service.dao.mapper.MdPbGroupplateMapper;
|
||||
import org.redisson.api.RLock;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -29,7 +35,6 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
@@ -51,6 +56,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
*/
|
||||
@Autowired
|
||||
private RedissonClient redissonClient;
|
||||
|
||||
@Resource
|
||||
private IStructattrService iStructattrService;
|
||||
/*
|
||||
* 任务服务
|
||||
*/
|
||||
@@ -62,6 +70,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
|
||||
@Resource
|
||||
private PmFormDataMapper pmFormDataMapper;
|
||||
|
||||
@Resource
|
||||
private AcsErrorTask acsErrorTask;
|
||||
/**
|
||||
* 任务工厂服务
|
||||
*/
|
||||
@@ -157,6 +168,23 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> applyInBillError(JSONObject param) {
|
||||
JSONObject result = new JSONObject();
|
||||
param.put("user_id", "3");
|
||||
param.put("person_name","ACS");
|
||||
try {
|
||||
this.applyInBillErrorTask(param);
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "申请任务成功!");
|
||||
} catch (Exception e) {
|
||||
log.error("ACS请求LMS出现错误: {}{}", e,e.getMessage());
|
||||
result.put("status", HttpStatus.BAD_REQUEST.value());
|
||||
result.put("message", "申请任务失败!");
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getExecutingTask() {
|
||||
//查询正在执行的任务
|
||||
@@ -211,4 +239,88 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
iRawAssistIStorService.AutoCreateBill(param);
|
||||
}
|
||||
|
||||
/**
|
||||
* 异常流程申请入库任务
|
||||
*
|
||||
* @param param
|
||||
* @throws BadRequestException
|
||||
*/
|
||||
public void applyInBillErrorTask(JSONObject param) throws BadRequestException {
|
||||
log.info("ACS请求异常流程申请入库任务参数: {}", param);
|
||||
//起点
|
||||
String vehicle_code = param.getString("vehicle_code");//子托盘
|
||||
if(ObjectUtil.isNotEmpty(vehicle_code)) {
|
||||
vehicle_code = vehicle_code.trim();
|
||||
}
|
||||
//子托盘非空
|
||||
if(ObjectUtil.isNotEmpty(vehicle_code)) {
|
||||
Assert.isFalse(vehicle_code.contains(";"),
|
||||
"该任务申请托盘["+vehicle_code+"]存在串读,无法申请任务!");
|
||||
}else{
|
||||
Assert.isFalse(ObjectUtil.isEmpty(vehicle_code),
|
||||
"该任务申请托盘["+vehicle_code+"]为空,无法申请任务!");
|
||||
}
|
||||
//判断该子托盘是否存在未完成任务
|
||||
Integer sub_tray_lists = iSchBaseTaskService.findUnFinishTasksBySub_tray(vehicle_code);
|
||||
Assert.isFalse(sub_tray_lists>0,
|
||||
"该任务申请托盘["+vehicle_code+"]已存在未完成的任务,无法申请任务!");
|
||||
|
||||
//todo 仅生成任务,不生成单据
|
||||
// 校验数据
|
||||
String start_point_code = param.getString("device_code");
|
||||
|
||||
// 校验起点
|
||||
Structattr start_point = iStructattrService.getByCode(start_point_code);
|
||||
if (ObjectUtil.isEmpty(start_point)) {
|
||||
throw new BadRequestException(LangBehavior.language("pda_manage.start_point_not_exist"));
|
||||
}
|
||||
|
||||
//计算终点点位
|
||||
List<Structattr> end_point_code_list = iStructattrService.list(new LambdaUpdateWrapper<Structattr>()
|
||||
.eq(Structattr::getSect_code,"FJError")
|
||||
.eq(Structattr::getIs_used, 1)
|
||||
.isNull(Structattr::getStoragevehicle_code)
|
||||
.eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.orderByDesc(Structattr::getUpdate_time));
|
||||
|
||||
if(CollectionUtils.isEmpty(end_point_code_list)){
|
||||
throw new BadRequestException(LangBehavior.language("pda_manage.end_point_not_exist"));
|
||||
}
|
||||
|
||||
|
||||
// 校验终点
|
||||
Structattr end_point = end_point_code_list.get(0);
|
||||
|
||||
//查询是否有执行中的点位
|
||||
//找到空点位正在执行的任务
|
||||
List<SchBaseTask> taskingSchBaseTaskList = iSchBaseTaskService.list(new LambdaQueryWrapper<SchBaseTask>()
|
||||
.eq(SchBaseTask::getIs_delete, IOSConstant.IS_DELETE_NO)
|
||||
.and(wp -> wp
|
||||
.eq(SchBaseTask::getPoint_code1, end_point.getStruct_code())
|
||||
.or()
|
||||
.eq(SchBaseTask::getPoint_code2, end_point.getStruct_code())
|
||||
.or()
|
||||
.eq(SchBaseTask::getPoint_code1, start_point.getStruct_code())
|
||||
.or()
|
||||
.eq(SchBaseTask::getPoint_code2, start_point.getStruct_code())
|
||||
)
|
||||
.le(SchBaseTask::getTask_status, TaskStatus.EXECUTING.getCode()));
|
||||
|
||||
if (CollectionUtils.isNotEmpty(taskingSchBaseTaskList)) {
|
||||
throw new BadRequestException(LangBehavior.language("pda_manage.ongoing_task_at_point"));
|
||||
}
|
||||
start_point.setLock_type(IOSEnum.LOCK_TYPE.code("其他锁"));
|
||||
iStructattrService.updateById(start_point);
|
||||
end_point.setLock_type(IOSEnum.LOCK_TYPE.code("其他锁"));
|
||||
iStructattrService.updateById(end_point);
|
||||
// 创建任务
|
||||
JSONObject task = new JSONObject();
|
||||
task.put("config_code", IOSConstant.ACS_ERROR_TASK);
|
||||
task.put("point_code1",start_point.getStruct_code());
|
||||
task.put("point_code2", end_point.getStruct_code());
|
||||
task.put("vehicle_code", vehicle_code);
|
||||
task.put("Priority", TaskEnum.ACS_PRIORITY.code("1"));
|
||||
acsErrorTask.create(task);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,173 @@
|
||||
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.IdUtil;
|
||||
import org.nl.language.LangBehavior;
|
||||
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.AbstractTask;
|
||||
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
|
||||
import org.nl.wms.sch_manage.service.util.TaskType;
|
||||
import org.nl.wms.warehouse_manage.enums.IOSEnum;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* @Author: Liuxy
|
||||
* @Description: 入库异常情况流程
|
||||
* @Date: 2025/6/6
|
||||
*/
|
||||
@Component(value = "AcsErrorTask")
|
||||
@TaskType("AcsErrorTask")
|
||||
public class AcsErrorTask extends AbstractTask {
|
||||
|
||||
/**
|
||||
* 任务服务类
|
||||
*/
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
|
||||
/**
|
||||
* 仓位服务
|
||||
*/
|
||||
@Autowired
|
||||
private IStructattrService iStructattrService;
|
||||
|
||||
@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(json.getString("config_code"));
|
||||
task.setPoint_code1(json.getString("point_code1"));
|
||||
task.setPoint_code2(json.getString("point_code2"));
|
||||
task.setVehicle_code(json.getString("vehicle_code"));
|
||||
task.setRequest_param(json.toString());
|
||||
task.setPriority(json.getString("Priority"));
|
||||
task.setCreate_id("ACS");
|
||||
task.setCreate_name("ACS");
|
||||
task.setCreate_time(DateUtil.now());
|
||||
taskService.save(task);
|
||||
return task.getTask_id();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AcsTaskDto sendAcsParam(String taskId) {
|
||||
SchBaseTask taskDao = taskService.getById(taskId);
|
||||
|
||||
// 组织下发给acs的数据
|
||||
AcsTaskDto acsTaskDto = new AcsTaskDto();
|
||||
acsTaskDto.setExt_task_uuid(taskDao.getTask_id());
|
||||
acsTaskDto.setTask_code(taskDao.getTask_code());
|
||||
acsTaskDto.setStart_device_code(taskDao.getPoint_code1());
|
||||
acsTaskDto.setNext_device_code(taskDao.getPoint_code2());
|
||||
acsTaskDto.setPriority(taskDao.getPriority());
|
||||
acsTaskDto.setTask_type("1");
|
||||
acsTaskDto.setVehicle_code(taskDao.getVehicle_code());
|
||||
|
||||
return acsTaskDto;
|
||||
}
|
||||
|
||||
@Override
|
||||
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(LangBehavior.language("sch_manage.task_already_completed"));
|
||||
}
|
||||
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
||||
throw new BadRequestException(LangBehavior.language("sch_manage.task_already_cancelled"));
|
||||
}
|
||||
// 根据传来的类型去对任务进行操作
|
||||
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
|
||||
public void forceFinish(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException(LangBehavior.language("sch_manage.task_not_exists"));
|
||||
}
|
||||
this.finishTask(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException(LangBehavior.language("sch_manage.task_not_exists"));
|
||||
}
|
||||
if (Integer.parseInt(taskObj.getTask_status()) > Integer.parseInt(TaskStatus.CREATE.getCode())) {
|
||||
throw new BadRequestException(LangBehavior.language("sch_manage.only_cancel_generating_tasks"));
|
||||
}
|
||||
this.cancelTask(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void backMes(String task_code) {
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void finishTask(SchBaseTask taskObj) {
|
||||
// 更新起点
|
||||
iStructattrService.update(
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code1())
|
||||
.set(Structattr::getStoragevehicle_code, null)
|
||||
.set(Structattr::getTask_code, null)
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
);
|
||||
// 更新终点
|
||||
iStructattrService.update(
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code2())
|
||||
.set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code())
|
||||
.set(Structattr::getTask_code, null)
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
);
|
||||
// 更新任务
|
||||
taskObj.setRemark("已完成");
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void cancelTask(SchBaseTask taskObj) {
|
||||
// 更新起点
|
||||
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);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,189 @@
|
||||
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.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.language.LangBehavior;
|
||||
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.AbstractTask;
|
||||
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
|
||||
import org.nl.wms.sch_manage.service.util.TaskType;
|
||||
import org.nl.wms.warehouse_manage.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_manage.service.IStIvtMoveinvService;
|
||||
import org.nl.wms.warehouse_manage.service.IStIvtMoveinvdtlService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* @Author: zhengxuming
|
||||
* @Description: 移库任务类无单据
|
||||
* @Date: 2025年11月11日09:38:11
|
||||
*/
|
||||
@Component(value = "MovePointTask")
|
||||
@TaskType("MovePointTask")
|
||||
public class MovePointTask extends AbstractTask {
|
||||
|
||||
/**
|
||||
* 任务服务类
|
||||
*/
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
|
||||
/**
|
||||
* 移库主表服务类
|
||||
*/
|
||||
@Autowired
|
||||
private IStIvtMoveinvService iStIvtMoveinvService;
|
||||
|
||||
/**
|
||||
* 仓位服务
|
||||
*/
|
||||
@Autowired
|
||||
private IStructattrService iStructattrService;
|
||||
|
||||
/**
|
||||
* 移库明细服务类
|
||||
*/
|
||||
@Autowired
|
||||
private IStIvtMoveinvdtlService iStIvtMoveinvdtlService;
|
||||
|
||||
@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(json.getString("config_code"));
|
||||
task.setPoint_code1(json.getString("point_code1"));
|
||||
task.setPoint_code2(json.getString("point_code2"));
|
||||
task.setVehicle_code(json.getString("vehicle_code"));
|
||||
task.setRequest_param(json.toString());
|
||||
task.setPriority(json.getString("Priority"));
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setCreate_time(DateUtil.now());
|
||||
taskService.save(task);
|
||||
return task.getTask_id();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AcsTaskDto sendAcsParam(String taskId) {
|
||||
SchBaseTask taskDao = taskService.getById(taskId);
|
||||
|
||||
// 组织下发给acs的数据
|
||||
AcsTaskDto acsTaskDto = new AcsTaskDto();
|
||||
acsTaskDto.setExt_task_uuid(taskDao.getTask_id());
|
||||
acsTaskDto.setTask_code(taskDao.getTask_code());
|
||||
acsTaskDto.setStart_device_code(taskDao.getPoint_code1());
|
||||
acsTaskDto.setNext_device_code(taskDao.getPoint_code2());
|
||||
acsTaskDto.setPriority(taskDao.getPriority());
|
||||
acsTaskDto.setTask_type("1");
|
||||
acsTaskDto.setVehicle_code(taskDao.getVehicle_code());
|
||||
|
||||
return acsTaskDto;
|
||||
}
|
||||
|
||||
@Override
|
||||
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(LangBehavior.language("sch_manage.task_already_completed"));
|
||||
}
|
||||
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
||||
throw new BadRequestException(LangBehavior.language("sch_manage.task_already_cancelled"));
|
||||
}
|
||||
// 根据传来的类型去对任务进行操作
|
||||
if (status.equals(TaskStatus.EXECUTING)) {
|
||||
// 更新明细状态
|
||||
iStIvtMoveinvService.executing(taskObj);
|
||||
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
|
||||
public void forceFinish(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException(LangBehavior.language("sch_manage.task_not_exists"));
|
||||
}
|
||||
this.finishTask(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException(LangBehavior.language("sch_manage.task_not_exists"));
|
||||
}
|
||||
if (Integer.parseInt(taskObj.getTask_status()) > Integer.parseInt(TaskStatus.CREATE.getCode())) {
|
||||
throw new BadRequestException(LangBehavior.language("sch_manage.only_cancel_generating_tasks"));
|
||||
}
|
||||
this.cancelTask(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void backMes(String task_code) {
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void finishTask(SchBaseTask taskObj) {
|
||||
// 更新起点
|
||||
iStructattrService.update(
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code1())
|
||||
.set(Structattr::getStoragevehicle_code, null)
|
||||
.set(Structattr::getTask_code, null)
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
);
|
||||
// 更新终点
|
||||
iStructattrService.update(
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code2())
|
||||
.set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code())
|
||||
.set(Structattr::getTask_code, null)
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
);
|
||||
// 更新任务
|
||||
taskObj.setRemark("已完成");
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void cancelTask(SchBaseTask taskObj) {
|
||||
// 更新起点
|
||||
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);
|
||||
}
|
||||
}
|
||||
@@ -3,22 +3,18 @@ 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.config.language.LangProcess;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.language.LangBehavior;
|
||||
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.AbstractTask;
|
||||
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
|
||||
import org.nl.wms.sch_manage.service.util.TaskType;
|
||||
import org.nl.wms.warehouse_manage.enums.IOSEnum;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -149,9 +145,9 @@ public class PdaPointTask extends AbstractTask {
|
||||
// .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
// );
|
||||
// // 更新任务
|
||||
// taskObj.setRemark("已完成");
|
||||
// taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
// taskService.updateById(taskObj);
|
||||
taskObj.setRemark("已完成");
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@@ -168,8 +164,8 @@ public class PdaPointTask extends AbstractTask {
|
||||
// .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
// );
|
||||
// // 更新任务
|
||||
// taskObj.setRemark("已取消");
|
||||
// taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
// taskService.updateById(taskObj);
|
||||
taskObj.setRemark("已取消");
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,6 +67,12 @@ public class IOSConstant {
|
||||
*/
|
||||
public final static String PDA_POINT_TASK = "PdaPointTask";
|
||||
|
||||
|
||||
/**
|
||||
* 手持定点任务
|
||||
*/
|
||||
public final static String ACS_ERROR_TASK = "AcsErrorTask";
|
||||
|
||||
/**
|
||||
* 空载具入库任务
|
||||
*/
|
||||
|
||||
@@ -478,6 +478,7 @@ var config = {
|
||||
"strategy": {
|
||||
"title": "策略管理",
|
||||
"strategy_name": "策略名称",
|
||||
"class_type": "处理类型",
|
||||
"strategy_type": "策略类型",
|
||||
"system_strategy": "系统策略",
|
||||
"custom_strategy": "自定义策略",
|
||||
@@ -506,6 +507,9 @@ var config = {
|
||||
"confirm_close": "确定要关闭吗?"
|
||||
},
|
||||
"sectStrategy": {
|
||||
"title":"策略管理",
|
||||
"sect":"库区",
|
||||
"strategy":"策略",
|
||||
"select_sect": "请选择分区",
|
||||
"select_strategy_type": "请选择策略类型",
|
||||
"select_strategy": "请选择策略",
|
||||
@@ -855,6 +859,17 @@ var config = {
|
||||
"end_date": "结束日期"
|
||||
},
|
||||
"inbill": {
|
||||
"inventory_allocation":"入库分配",
|
||||
"inventory_details":"入库明细项",
|
||||
"inventory_point":"入库点",
|
||||
"vehicle_material_details":"载具物料明细",
|
||||
"warehouse_area":"库区",
|
||||
"auto_allocate_location":"自动分配货位",
|
||||
"allocate_location":"分配货位",
|
||||
"cancel_allocation":"取消分配",
|
||||
"set_start_point":"设置起点",
|
||||
"location":"货位",
|
||||
"business_type":"业务类型",
|
||||
"title": "入库单管理",
|
||||
"start_date": "开始日期",
|
||||
"end_date": "结束日期",
|
||||
@@ -913,22 +928,33 @@ var config = {
|
||||
"task_code": "任务号"
|
||||
},
|
||||
"outbill": {
|
||||
"title": "出库单管理",
|
||||
"vehicle_material_details":"载具物料明细",
|
||||
"warehouse_area":"库区",
|
||||
"auto_allocate_location":"自动分配货位",
|
||||
"allocate_location":"分配货位",
|
||||
"cancel_allocation":"取消分配",
|
||||
"set_start_point":"设置起点",
|
||||
"location":"货位",
|
||||
"business_type":"业务类型",
|
||||
"title": "入库单管理",
|
||||
"start_date": "开始日期",
|
||||
"end_date": "结束日期",
|
||||
"blurry_query": "模糊查询",
|
||||
"bill_code": "单据号",
|
||||
"warehouse": "仓库",
|
||||
"bill_status": "单据状态",
|
||||
"warehouse": "所属仓库",
|
||||
"create_time": "创建时间",
|
||||
"create_mode": "生成方式",
|
||||
"bill_status": "单据状态",
|
||||
"bill_type": "业务类型",
|
||||
"pcsn": "批次号",
|
||||
"is_upload": "是否回传",
|
||||
"allocate": "分配",
|
||||
"force_confirm": "强制确认",
|
||||
"operation": "操作",
|
||||
"warehouse_location": "库位",
|
||||
"vehicle_code": "载具编码",
|
||||
"material_qrcode": "物料二维码",
|
||||
"business_date": "业务日期",
|
||||
"detail_count": "明细数",
|
||||
"plan_weight": "计划重量",
|
||||
"create_mode": "生成方式",
|
||||
"total_weight": "总重量",
|
||||
"remark": "备注",
|
||||
"created_by": "制单人",
|
||||
"created_time": "制单时间",
|
||||
@@ -938,8 +964,36 @@ var config = {
|
||||
"allocated_time": "分配时间",
|
||||
"confirmed_by": "确认人",
|
||||
"confirmed_time": "确认时间",
|
||||
"allocate": "分配",
|
||||
"force_confirm": "强制确认",
|
||||
"select_bill": "请选择一条单据",
|
||||
"bill_confirm_success": "单据确认成功!",
|
||||
"system_generated": "系统生成",
|
||||
"add_pallet_material": "添加组盘物料",
|
||||
"material_code": "物料编码",
|
||||
"material_name": "物料名称",
|
||||
"unit_name": "计量单位名称",
|
||||
"warehouse_not_empty": "仓库不能为空",
|
||||
"business_type_not_empty": "业务类型不能为空",
|
||||
"business_date_not_empty": "业务日期不能为空",
|
||||
"please_select_at_least_one_detail": "请至少选择一条明细",
|
||||
"please_select_business_type": "请选择业务类型!",
|
||||
"add_material": "物料新增",
|
||||
"view_detail": "入库详情",
|
||||
"stor": "仓库",
|
||||
"total_qty": "总重量",
|
||||
"biz_date": "业务日期",
|
||||
"in_detail": "入库明细",
|
||||
"weight": "重量",
|
||||
"source_bill_type": "源单类型",
|
||||
"source_bill_code": "源单号",
|
||||
"detail_remark": "明细备注",
|
||||
"operation_detail": "作业明细",
|
||||
"storagevehicle_code": "载具号",
|
||||
"start_position": "起始位置",
|
||||
"dest_position": "目的位置",
|
||||
"task_code": "任务号",
|
||||
"is_upload": "是否回传",
|
||||
"detail_count": "明细数",
|
||||
"plan_weight": "计划重量",
|
||||
"outbound_success": "出库成功!",
|
||||
"upload_notice": "点击确认按钮后,单据进行回传!",
|
||||
"upload_success": "回传成功!",
|
||||
@@ -999,6 +1053,12 @@ var config = {
|
||||
"operation": "操作"
|
||||
},
|
||||
"common": {
|
||||
"status": "状态",
|
||||
"unit":"单位",
|
||||
"all":"全部",
|
||||
"please_select": "请选择/搜索",
|
||||
"serial_number":"序号",
|
||||
"quantity":"数量",
|
||||
"blurry_search": "模糊搜索",
|
||||
"create_optname": "创建人",
|
||||
"modifier":"更新人",
|
||||
@@ -1025,7 +1085,7 @@ var config = {
|
||||
"Verify_password": "确认密码",
|
||||
"User_information": "用户资料",
|
||||
"Operation_log": "操作日志",
|
||||
"action": "行为",
|
||||
"action": "操作",
|
||||
"IP_source": "IP来源",
|
||||
"Browser": "浏览器",
|
||||
"Request_time": "请求耗时",
|
||||
@@ -1197,7 +1257,39 @@ var config = {
|
||||
"weigth": "托盘重量",
|
||||
"overstruct_type": "载具是否超过位置",
|
||||
"occupystruct_qty": "占用位置数量",
|
||||
"ext_id": "外部ID"
|
||||
"ext_id": "外部ID",
|
||||
"operate_success": "{status}成功",
|
||||
"vehicle_type": "载具类型",
|
||||
"fuzzy_search": "模糊搜索",
|
||||
"vehicle_code_name": "载具号、载具名称",
|
||||
"vehicle_code": "载具编码",
|
||||
"vehicle_name": "载具名称",
|
||||
"vehicle_weight": "载具重量",
|
||||
"vehicle_id": "载具标识",
|
||||
"pallet_weight": "托盘重量",
|
||||
"vehicle_material_info": "载具物料信息",
|
||||
"material_code": "物料编码",
|
||||
"material_spec": "物料规格",
|
||||
"batch": "批次",
|
||||
"material_qty": "物料数量",
|
||||
"frozen_qty": "冻结数量",
|
||||
"process_instance": "流程实例",
|
||||
"vehicle_info": "载具信息",
|
||||
"vehicle_weight_g": "载具重量(g)",
|
||||
"print_config": "打印配置",
|
||||
"paper_height_mm": "纸张高度(mm)",
|
||||
"paper_width_mm": "纸张宽度(mm)",
|
||||
"margin_top_mm": "页边距top(mm)",
|
||||
"margin_right_mm": "页边距right(mm)",
|
||||
"margin_down_mm": "页边距down(mm)",
|
||||
"margin_left_mm": "页边距left(mm)",
|
||||
"start_vehicle_code": "起始载具号",
|
||||
"vehicle_qty": "载具数量",
|
||||
"height_mm": "高度(mm)",
|
||||
"width_mm": "宽度(mm)",
|
||||
"depth_mm": "深度(mm)",
|
||||
"confirm_change": "此操作将 \"{status}\" {code}, 是否继续?",
|
||||
"is_enabled": "启用状态"
|
||||
},
|
||||
"sch_base_point": {
|
||||
"point_code": "点位编码",
|
||||
|
||||
Reference in New Issue
Block a user