add:增加公共类直接下发逻辑,重写子卷下线下发改直接下发
opt:修改装箱区补空代码,改成查询可用点位生成下发 opt:删除装箱对接行架任务完成后调用补空任务,统一由定时器执行
This commit is contained in:
@@ -336,11 +336,35 @@ public class MzhcwTask extends AbstractAcsTask {
|
||||
taskService.save(task);
|
||||
//如果目标点位没有空位先创建不下发
|
||||
if (isSend) {
|
||||
this.immediateNotifyAcs(null);
|
||||
this.immediateNotifyAcs(task,"");
|
||||
}
|
||||
return task.getTask_id();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AcsTaskDto> addTask(SchBaseTask task) {
|
||||
List<AcsTaskDto> result = new ArrayList<>();
|
||||
AcsTaskDto dto = AcsTaskDto.builder()
|
||||
.ext_task_id(task.getTask_id().toString())
|
||||
.task_code(task.getTask_code())
|
||||
.task_type(task.getAcs_task_type())
|
||||
.start_device_code(task.getPoint_code1())
|
||||
.next_device_code(task.getPoint_code2())
|
||||
.start_device_code2(task.getPoint_code3())
|
||||
.next_device_code2(task.getPoint_code4())
|
||||
//四个点任务与两个点任务类型区分
|
||||
.agv_action_type(task.getVehicle_code2())
|
||||
.vehicle_code(task.getVehicle_code())
|
||||
.priority(task.getPriority())
|
||||
.remark(task.getRemark())
|
||||
.class_type(IOSEnum.ACS_TYPE.code("子卷下线行架任务"))
|
||||
.product_area(task.getProduct_area())
|
||||
.agv_action_type(PackageInfoIvtEnum.AGV_ACTION_TYPE.code("普通任务"))
|
||||
.interaction_json(JSON.parseObject(task.getRequest_param()))
|
||||
.build();
|
||||
result.add(dto);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
|
||||
@@ -164,11 +164,33 @@ public class SendDjqKzjTask extends AbstractAcsTask {
|
||||
taskService.save(task);
|
||||
//如果目标点位没有空位先创建不下发
|
||||
if (isSend) {
|
||||
this.immediateNotifyAcs(null);
|
||||
this.immediateNotifyAcs(task,"");
|
||||
}
|
||||
return task.getTask_id();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AcsTaskDto> addTask(SchBaseTask r) {
|
||||
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
|
||||
AcsTaskDto dto = AcsTaskDto.builder()
|
||||
.ext_task_id(r.getTask_id().toString())
|
||||
.task_code(r.getTask_code())
|
||||
.task_type(r.getAcs_task_type())
|
||||
.start_device_code(r.getPoint_code1())
|
||||
.next_device_code(r.getPoint_code2())
|
||||
.start_device_code2(r.getPoint_code3())
|
||||
.next_device_code2(r.getPoint_code4())
|
||||
.vehicle_code(r.getVehicle_code())
|
||||
.priority(r.getPriority())
|
||||
.remark(r.getRemark())
|
||||
.product_area(r.getProduct_area())
|
||||
.agv_action_type(r.getVehicle_code2())
|
||||
.agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼诺宝任务"))
|
||||
.interaction_json(JSON.parseObject(r.getRequest_param()))
|
||||
.build();
|
||||
resultList.add(dto);
|
||||
return resultList;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
|
||||
@@ -146,10 +146,6 @@ public class ZxDjwTask extends AbstractAcsTask {
|
||||
bstIvtBoxinfoMapper.updateById(bstIvtBoxinfo);
|
||||
//5.最后一个子卷,清除装箱位木箱信息
|
||||
packageinfoivtService.update(null, new UpdateWrapper<BstIvtPackageinfoivt>().set("update_time", now).set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code2()));
|
||||
//装箱位所在区域
|
||||
String block = packageinfoivtService.list(new LambdaQueryWrapper<BstIvtPackageinfoivt>().eq(BstIvtPackageinfoivt::getPoint_code,schBaseTask.getPoint_code2())).get(0).getBlock();
|
||||
//6.创建装箱区->待检区或管制区补空任务
|
||||
callingVehicleToDjqOrGzq(Integer.parseInt(packagerelationList.get(0).getQuanlity_in_box().toString()),block);
|
||||
}
|
||||
//7.改变子卷包装状态为已装箱:1
|
||||
PdmBiSubpackagerelation pdmBiSubpackagerelation = subpackageRelationService
|
||||
|
||||
@@ -22,6 +22,7 @@ import org.redisson.api.RLock;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
@@ -75,25 +76,33 @@ public class AutoSendVehicleToDjq extends Prun {
|
||||
.eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"))
|
||||
.eq(SchBaseTask::getTask_type, "010909"));
|
||||
if (ObjectUtils.isNotEmpty(taskList)) {
|
||||
log.warn("当前装箱区存在执行的行架任务"+taskList.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")));
|
||||
return;
|
||||
}
|
||||
}
|
||||
//存在装箱区有空载具的点位
|
||||
List<BstIvtPackageinfoivt> zxqIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), "", "");
|
||||
if (ObjectUtils.isEmpty(zxqIvtList)) {
|
||||
List<BstIvtPackageinfoivt> zxqVehicleList = packageinfoivtService
|
||||
.selectEmpPoints(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"));
|
||||
List<BstIvtPackageinfoivt> djqEmpList = packageinfoivtService
|
||||
.selectEmpPoints(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空"));
|
||||
if (CollectionUtils.isEmpty(zxqVehicleList) || CollectionUtils.isEmpty(djqEmpList)) {
|
||||
log.info(THIS_CLASS + "装箱区或待检区没有可用点位");
|
||||
return;
|
||||
}
|
||||
//按块执行取空任务
|
||||
if (isCalling.equals(IOSEnum.IS_NOTANDYES.code("是"))) {
|
||||
if (StringUtils.isNotBlank(block)) {
|
||||
zxqIvtList = zxqIvtList.stream().filter(r -> r.getBlock().equals(block)).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
JSONObject task = new JSONObject();
|
||||
task.put("point_code1", zxqIvtList.get(0).getPoint_code());
|
||||
getPointCode(task, PackageInfoIvtEnum.TASK_TYPE.code("补空(装箱区->管制区)"));
|
||||
task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("补空(装箱区->待检区)"));
|
||||
task.put("point_code1", zxqVehicleList.get(0).getPoint_code());
|
||||
task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("普通任务"));
|
||||
task.put("task_status", TaskStatusEnum.SURE_END.getCode());
|
||||
task.put("point_code2", djqEmpList.get(0).getPoint_code());
|
||||
try {
|
||||
sendDjqKzjTask.createTask(task);
|
||||
}catch (Exception ex){
|
||||
log.error(THIS_CLASS+"任务创建失败"+ex.getMessage());
|
||||
}
|
||||
|
||||
} else {
|
||||
log.info("装箱区->待检区或管制区补空载具任务正在创建被锁住。");
|
||||
log.info(THIS_CLASS + "装箱区搬空任务正在创建被锁住");
|
||||
}
|
||||
} finally {
|
||||
if (lock.isLocked() && lock.isHeldByCurrentThread()) {
|
||||
|
||||
@@ -16,7 +16,6 @@ import org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.BstIvtShafttubeivt;
|
||||
import org.nl.b_lms.sch.point.service.IstIvtShaftivtService;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
|
||||
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterEnum;
|
||||
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.common.utils.TaskUtils;
|
||||
@@ -183,7 +182,7 @@ public class SendShaftToCacheTask extends AbstractAcsTask {
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject immediateNotifyAcs(String task_id) {
|
||||
public JSONObject immediateNotifyAcs(Object task_id) {
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (Exception ex) {
|
||||
@@ -191,7 +190,7 @@ public class SendShaftToCacheTask extends AbstractAcsTask {
|
||||
}
|
||||
|
||||
List<SchBaseTask> taskList = new ArrayList<>();
|
||||
SchBaseTask baseTask = taskService.getById(task_id);
|
||||
SchBaseTask baseTask = taskService.getById((String)task_id);
|
||||
taskList.add(baseTask);
|
||||
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
|
||||
String agv_system_type = "2";
|
||||
|
||||
@@ -4,6 +4,9 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.wms.sch.AcsTaskDto;
|
||||
import org.nl.wms.sch.AcsUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -34,12 +37,26 @@ public abstract class AbstractAcsTask {
|
||||
return addTask();
|
||||
}
|
||||
|
||||
public List<AcsTaskDto> schedule(String taskId) {
|
||||
return addTask(taskId);
|
||||
}
|
||||
|
||||
public List<AcsTaskDto> schedule(SchBaseTask task) {
|
||||
return addTask(task);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加任务进行下发
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public abstract List<AcsTaskDto> addTask();
|
||||
public List<AcsTaskDto> addTask(String taskId){
|
||||
throw new BadRequestException("当前类没有重写addTask(taskId)方法");
|
||||
};
|
||||
public List<AcsTaskDto> addTask(SchBaseTask task){
|
||||
throw new BadRequestException("当前类没有重写addTask(taskId)方法");
|
||||
};
|
||||
|
||||
/**
|
||||
* @param taskObj 代表一条任务对象
|
||||
@@ -107,25 +124,46 @@ public abstract class AbstractAcsTask {
|
||||
return AcsUtil.notifyAcs("api/wms/task", jsonArray);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public JSONObject immediateNotifyAcs(String task_id) {
|
||||
public JSONObject immediateNotifyAcs(Object task_id) {
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
}catch (Exception ex){
|
||||
|
||||
}
|
||||
List<AcsTaskDto> taskList;
|
||||
if (ObjectUtil.isEmpty(task_id)){
|
||||
taskList = this.schedule();
|
||||
}else {
|
||||
taskList = this.schedule((String) task_id);
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(taskList)) {
|
||||
JSONArray arr = JSONArray.parseArray(JSON.toJSONString(taskList));
|
||||
if (acsUtil == null){
|
||||
return AcsUtil.notifyAcs("api/wms/task", arr);
|
||||
}else {
|
||||
return acsUtil.notifyAcs3("api/wms/task", arr);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
||||
List<AcsTaskDto> taskList = this.schedule();
|
||||
if (ObjectUtil.isNotEmpty(taskList)) {
|
||||
JSONArray arr = JSONArray.parseArray(JSON.toJSONString(taskList));
|
||||
if (acsUtil == null){
|
||||
return AcsUtil.notifyAcs("api/wms/task", arr);
|
||||
}else {
|
||||
return acsUtil.notifyAcs3("api/wms/task", arr);
|
||||
}
|
||||
}
|
||||
}
|
||||
public JSONObject immediateNotifyAcs(SchBaseTask task,String taskId) {
|
||||
if (task==null){
|
||||
throw new BadRequestException("任务下发参数不能为空");
|
||||
}
|
||||
List<AcsTaskDto> taskList = this.schedule(task);
|
||||
if (ObjectUtil.isNotEmpty(taskList)) {
|
||||
JSONArray arr = JSONArray.parseArray(JSON.toJSONString(taskList));
|
||||
if (acsUtil == null){
|
||||
return AcsUtil.notifyAcs("api/wms/task", arr);
|
||||
}else {
|
||||
return acsUtil.notifyAcs3("api/wms/task", arr);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user