opt:优化装箱区装箱任务完成再送空载具
This commit is contained in:
@@ -20,6 +20,7 @@ import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
import org.nl.b_lms.sch.task.dto.SchBaseTaskVO;
|
||||
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
|
||||
import org.nl.b_lms.sch.tasks.first_floor_area.auto.AutoSendVehicleToDjq;
|
||||
import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo;
|
||||
import org.nl.b_lms.storage_manage.database.service.dao.mapper.BstIvtBoxinfoMapper;
|
||||
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
|
||||
@@ -49,7 +50,8 @@ import java.util.List;
|
||||
@Slf4j
|
||||
public class ZxDjwTask extends AbstractAcsTask {
|
||||
|
||||
|
||||
@Resource
|
||||
private AutoSendVehicleToDjq autoSendVehicleToDjq;
|
||||
@Resource
|
||||
private BstIvtBoxinfoMapper bstIvtBoxinfoMapper;
|
||||
@Resource
|
||||
@@ -118,31 +120,31 @@ public class ZxDjwTask extends AbstractAcsTask {
|
||||
} else if (StrUtil.isEmpty(containerInfo.getContainer_name())) {
|
||||
throw new BadRequestException("子卷号不能为空!");
|
||||
}
|
||||
|
||||
//1.判断是否最后一个子卷:相同木箱号的子卷包装关系如果生成状态:0,且个数等于1且子卷号等于当前载具号,就是最后一个子卷
|
||||
List<PdmBiSubpackagerelation> packagerelationList = subpackageRelationService.list(new LambdaQueryWrapper<PdmBiSubpackagerelation>().eq(PdmBiSubpackagerelation::getPackage_box_sn, schBaseTask.getVehicle_code2()).eq(PdmBiSubpackagerelation::getStatus, "0"));
|
||||
if (packagerelationList.size() == 1 && packagerelationList.get(0).getContainer_name().equals(schBaseTask.getVehicle_code())) {
|
||||
//4.更改木箱信息为已装箱:1
|
||||
//2.更改木箱信息为已装箱:1
|
||||
BstIvtBoxinfo bstIvtBoxinfo = bstIvtBoxinfoMapper.selectOne(new LambdaQueryWrapper<BstIvtBoxinfo>().eq(BstIvtBoxinfo::getBox_no, schBaseTask.getVehicle_code2()).ne(BstIvtBoxinfo::getIs_packing, "1"));
|
||||
if (bstIvtBoxinfo == null) {
|
||||
throw new BadRequestException("子卷包装关系为已装箱或找该任务的木箱号不存在!");
|
||||
}
|
||||
bstIvtBoxinfo.setIs_packing(IOSEnum.IS_NOTANDYES.code("是"));
|
||||
bstIvtBoxinfoMapper.updateById(bstIvtBoxinfo);
|
||||
//5.最后一个子卷,清除装箱位木箱信息
|
||||
//3.最后一个子卷,清除装箱位木箱信息
|
||||
packageinfoivtService.update(null, new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code2()));
|
||||
//4.创建装箱区->待检区或管制区补空任务
|
||||
autoSendVehicleToDjq.sendVehicleToDjqOrGzq1(IOSEnum.IS_NOTANDYES.code("是"));
|
||||
}
|
||||
//6.改变子卷包装状态为已装箱:1
|
||||
//5.改变子卷包装状态为已装箱:1
|
||||
PdmBiSubpackagerelation pdmBiSubpackagerelation = subpackageRelationService
|
||||
.getOne(new LambdaUpdateWrapper<PdmBiSubpackagerelation>().eq(PdmBiSubpackagerelation::getContainer_name, schBaseTask.getVehicle_code()), false);
|
||||
pdmBiSubpackagerelation.setStatus(IOSEnum.IS_NOTANDYES.code("是"));
|
||||
subpackageRelationService.updateById(pdmBiSubpackagerelation);
|
||||
//2.更改任务状态为完成
|
||||
//6.更改任务状态为完成
|
||||
updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode());
|
||||
//3.改变起点点位状态
|
||||
//7.改变起点点位状态
|
||||
packageinfoivtService.update(null, new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空载具")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1()));
|
||||
//创建装箱区->空载具缓存位补空任务
|
||||
//kzjhcwTask.toKzjHcw(schBaseTask.getPoint_code1());
|
||||
|
||||
}
|
||||
// 取消
|
||||
if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
|
||||
|
||||
@@ -54,7 +54,7 @@ public class AutoSendGzqToDjq {
|
||||
JSONObject task1 = new JSONObject();
|
||||
String pointCode3;
|
||||
String pointCode4;
|
||||
List<BstIvtPackageinfoivt> gzqIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("管制区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), "");
|
||||
List<BstIvtPackageinfoivt> gzqIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("管制区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), PackageInfoIvtEnum.SORT_TYPE.code("升序"), "");
|
||||
//todo 新增NG卷放置临时管制区135136,只取空不补空
|
||||
List<BstIvtPackageinfoivt> ivtLists =
|
||||
gzqIvtList.stream()
|
||||
@@ -68,7 +68,7 @@ public class AutoSendGzqToDjq {
|
||||
PackageInfoIvtEnum.POINT_STATUS.code("待检区"),
|
||||
PackageInfoIvtEnum.IVT_STATUS.code("空"),
|
||||
PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"),
|
||||
PackageInfoIvtEnum.SORT_TYPE.code("降序"),
|
||||
PackageInfoIvtEnum.SORT_TYPE.code("升序"),
|
||||
""
|
||||
);
|
||||
if (CollectionUtils.isNotEmpty(packageList)) {
|
||||
@@ -84,12 +84,12 @@ public class AutoSendGzqToDjq {
|
||||
}
|
||||
}
|
||||
//管制区->待检区送合格品任务
|
||||
List<BstIvtPackageinfoivt> gzqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("管制区"), PackageInfoIvtEnum.IVT_STATUS.code("合格品"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), "");
|
||||
List<BstIvtPackageinfoivt> gzqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("管制区"), PackageInfoIvtEnum.IVT_STATUS.code("合格品"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), PackageInfoIvtEnum.SORT_TYPE.code("升序"), "");
|
||||
if (CollectionUtils.isEmpty(gzqPackageinfoivtList)) {
|
||||
return;
|
||||
}
|
||||
//待检区有空位且过滤未完成任务
|
||||
List<BstIvtPackageinfoivt> djqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"), PackageInfoIvtEnum.SORT_TYPE.code("升序"), "");
|
||||
List<BstIvtPackageinfoivt> djqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), "");
|
||||
if (CollectionUtils.isEmpty(djqPackageinfoivtList)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1,24 +1,26 @@
|
||||
package org.nl.b_lms.sch.tasks.first_floor_area.auto;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.nl.b_lms.pdm.subpackagerelation.service.IpdmBiSubpackagerelationService;
|
||||
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
|
||||
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
|
||||
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.first_floor_area.SendDjqKzjTask;
|
||||
import org.nl.b_lms.sch.tasks.first_floor_area.SendGzqKzjTask;
|
||||
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
|
||||
import org.nl.common.enums.PackageInfoIvtEnum;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.redisson.api.RLock;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -41,7 +43,8 @@ public class AutoSendVehicleToDjq {
|
||||
private SendGzqKzjTask sendGzqKzjTask;
|
||||
|
||||
@Resource
|
||||
private IbstIvtPackageinfoivtService ibstIvtPackageinfoivtService;
|
||||
private IpdmBiSubpackagerelationService ipdmBiSubpackagerelationService;
|
||||
|
||||
|
||||
@Resource
|
||||
private IbstIvtPackageinfoivtService packageinfoivtService;
|
||||
@@ -49,11 +52,11 @@ public class AutoSendVehicleToDjq {
|
||||
//装箱区->待检区或管制区补空载具
|
||||
|
||||
public void run() {
|
||||
this.sendVehicleToDjqOrGzq1();
|
||||
this.sendVehicleToDjqOrGzq1(IOSEnum.IS_NOTANDYES.code("否"));
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
public void sendVehicleToDjqOrGzq1() {
|
||||
public void sendVehicleToDjqOrGzq1(String isCalling) {
|
||||
log.info(THIS_CLASS + "-装箱区->待检区或管制区补空任务开始执行扫描。");
|
||||
RLock lock = redissonClient.getLock(THIS_CLASS);
|
||||
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
|
||||
@@ -61,11 +64,15 @@ public class AutoSendVehicleToDjq {
|
||||
if (tryLock) {
|
||||
String pointCode2;
|
||||
JSONObject task = new JSONObject();
|
||||
//存在装箱任务,暂不补空
|
||||
List<String> taskTypes = new ArrayList<>(Collections.singletonList(PackageInfoIvtEnum.TASK_TYPE.code("装箱区->装箱对接位")));
|
||||
List<SchBaseTask> existTaskList = taskService.getExistTasks(taskTypes);
|
||||
if (CollectionUtils.isNotEmpty(existTaskList)) {
|
||||
return;
|
||||
if (isCalling.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
|
||||
//存在未完成的木箱出库任务
|
||||
List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
|
||||
.lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
|
||||
.eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"))
|
||||
.eq(SchBaseTask::getTask_type, "010704"));
|
||||
if (CollectionUtils.isNotEmpty(taskList)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
//存在装箱区有空载具的点位
|
||||
List<BstIvtPackageinfoivt> zxqIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), "", "");
|
||||
@@ -78,7 +85,7 @@ public class AutoSendVehicleToDjq {
|
||||
// } else {
|
||||
// pointCode2 = getPointCode(task, PackageInfoIvtEnum.TASK_TYPE.code("补空(装箱区->管制区)"));
|
||||
// }
|
||||
//todo 新增NG卷放置临时管制区135136,只取空不补空
|
||||
//todo 新增NG卷放置临时管制区135136,优先去补管制区
|
||||
pointCode2 = getPointCode(task, PackageInfoIvtEnum.TASK_TYPE.code("补空(装箱区->管制区)"));
|
||||
//去装箱区搬运空载具
|
||||
if (pointCode2 != null) {
|
||||
|
||||
@@ -158,12 +158,10 @@ public class AutoSendZxToDjw {
|
||||
//托盘类型 1小托盘 2大托盘
|
||||
param.put("containerType", bstIvtBoxinfo.getVehicle_type());
|
||||
//木箱计划放入子卷数量
|
||||
//param.put("boxNo", relationList.get(0).getQuanlity_in_box());
|
||||
//todo 木箱计划放入子卷数量,暂时默认1
|
||||
param.put("boxNo", relationList.get(0).getQuanlity_in_box());
|
||||
Integer num = getNumFromRedis();
|
||||
num = num + 1;
|
||||
if (num.equals(Integer.parseInt(bstIvtBoxinfo.getNum()))) {
|
||||
if (num.equals(Integer.parseInt(relationList.get(0).getQuanlity_in_box().toString()))) {
|
||||
param.put("lastOne", IOSEnum.IS_NOTANDYES.code("是"));
|
||||
num = 0;
|
||||
} else {
|
||||
@@ -171,15 +169,6 @@ public class AutoSendZxToDjw {
|
||||
}
|
||||
// 更新计数
|
||||
redisUtils.set(NUM_KEY, num);
|
||||
//NUM = NUM + 1;
|
||||
// if (NUM == Integer.parseInt(bstIvtBoxinfo.getNum())) {
|
||||
// //todo 查询是否为最后一个子卷,暂时默认1
|
||||
// param.put("lastOne", IOSEnum.IS_NOTANDYES.code("是"));
|
||||
// NUM = 0;
|
||||
// } else {
|
||||
// //todo 查询是否为最后一个子卷,暂时默认1
|
||||
// param.put("lastOne", IOSEnum.IS_NOTANDYES.code("否"));
|
||||
// }
|
||||
jo.put("request_param", param.toString());
|
||||
zxDjwTask.createTask(jo);
|
||||
// try {
|
||||
|
||||
@@ -27,7 +27,7 @@ public class ManualSendToZxq {
|
||||
|
||||
//待检区->装箱区agv手动搬运任务
|
||||
public void run() {
|
||||
this.sendDjqToZxq();
|
||||
//this.sendDjqToZxq();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user