1.ndc交互粘包需要分割判断

2.空架入库会出现最后同时满料,增加软锁控制,创建任务时过滤,二次分配时可以放,任务完成或取消后解锁
This commit is contained in:
psh
2024-07-18 13:48:21 +08:00
parent 67c68ae05b
commit 2d1398d801
4 changed files with 117 additions and 30 deletions

View File

@@ -137,6 +137,9 @@ public class SchBasePoint implements Serializable {
@TableField(exist = false)
private String point_status_name;
@ApiModelProperty(value = "是否锁定")
private Boolean is_lock;
// 组盘标识
@TableField(exist = false)
private String group_id;

View File

@@ -76,7 +76,8 @@ public class KGHJRKTask extends AbstractTask {
// 找终点
SchBasePoint startPoint = pointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getPoint_code, task.getPoint_code1()));
SchBasePoint point = findNextPoint(startPoint, task.getVehicle_type());
//创建任务时判断软锁,已锁则不能创建,下发任务时不考虑
SchBasePoint point = findNextPoint(startPoint, task.getVehicle_type(),0);
if (ObjectUtil.isEmpty(point)) {
task.setRemark("未找到所需点位!");
taskService.update(task);
@@ -97,9 +98,9 @@ public class KGHJRKTask extends AbstractTask {
task.setRemark("");
taskService.update(task);
// //发起任务时先把点位占用,防止发起重复任务
// point.setIng_task_code(task.getTask_code());
// pointService.update(point);
//发起任务时先把点位占用,防止发起重复任务
point.setIs_lock(true);
pointService.update(point);
//下发
this.renotifyAcs(task);
@@ -112,7 +113,7 @@ public class KGHJRKTask extends AbstractTask {
* 2.倒叙查找找到满足当前位置数量不足3的即可
* 3.负极板优先放到HCQ7放满了再放到HCQ1
*/
private SchBasePoint findNextPoint(SchBasePoint startPoint, String vehicleType) {
private SchBasePoint findNextPoint(SchBasePoint startPoint, String vehicleType,int type) {
String regionCode = null;
String regionCode2 = null;
if ("A1".equals(startPoint.getWorkshop_code())) {
@@ -139,6 +140,9 @@ public class KGHJRKTask extends AbstractTask {
if (!temp.getPoint_code().endsWith("01")) {
continue;
}
if(type==0&&temp.getIs_lock()){
log.info("当前点位{}已被软锁,寻找终点时默认跳过",temp.getPoint_code());
}
//如果当列已放满跳过到下一列最后一个点位0501开始判断
if (flag && !temp.getPoint_code().endsWith("0501")) {
continue;
@@ -235,14 +239,17 @@ public class KGHJRKTask extends AbstractTask {
// 终点解锁,库存增加
endPointObj.setIng_task_code("");
endPointObj.setVehicle_qty(1);
endPointObj.setIs_lock(false);
pointService.update(endPointObj);
endPointObj = pointService.getById(endPoint.substring(0, endPoint.length() - 1) + "2");
endPointObj.setIng_task_code("");
endPointObj.setVehicle_qty(1);
endPointObj.setIs_lock(false);
pointService.update(endPointObj);
endPointObj = pointService.getById(endPoint.substring(0, endPoint.length() - 1) + "3");
endPointObj.setIng_task_code("");
endPointObj.setVehicle_qty(1);
endPointObj.setIs_lock(false);
pointService.update(endPointObj);
@@ -254,6 +261,7 @@ public class KGHJRKTask extends AbstractTask {
// 终点解锁
if (ObjectUtil.isNotEmpty(endPointObj)) {
endPointObj.setIng_task_code("");
endPointObj.setIs_lock(false);
pointService.update(endPointObj);
}
taskObj.setRemark("任务取消");
@@ -282,7 +290,7 @@ public class KGHJRKTask extends AbstractTask {
}
SchBasePoint startPoint = pointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getPoint_code, schBaseTask.getPoint_code1()));
SchBasePoint point = findNextPoint(startPoint, schBaseTask.getVehicle_type());
SchBasePoint point = findNextPoint(startPoint, schBaseTask.getVehicle_type(),1);
if ("ZJBKGHJDJW".equals(point.getRegion_code())) {
schBaseTask.setPoint_code2(point.getPoint_code() + "0" + (point.getVehicle_qty() + 1));
} else {