fix:空木箱入库跟装箱入库任务冲突
This commit is contained in:
@@ -398,27 +398,27 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
|||||||
JSONObject 浅Attr = attrTab
|
JSONObject 浅Attr = attrTab
|
||||||
.query("zdepth = '1' and row_num = '"+boxAttr.getString("row_num")+"' and col_num = '" + boxAttr.getString("col_num") + "' and layer_num = '"+boxAttr.getString("layer_num")+"'")
|
.query("zdepth = '1' and row_num = '"+boxAttr.getString("row_num")+"' and col_num = '" + boxAttr.getString("col_num") + "' and layer_num = '"+boxAttr.getString("layer_num")+"'")
|
||||||
.uniqueResult(0);
|
.uniqueResult(0);
|
||||||
if (!ObjectUtil.isEmpty(浅Attr)){
|
if (ObjectUtil.isEmpty(浅Attr)){
|
||||||
//判断有没有浅货位入库任务
|
throw new BadRequestException(boxAttr.getString("struct_code")+"对应浅货位信息不正确");
|
||||||
if (ObjectUtil.isEmpty(浅Attr.getString("storagevehicle_code"))){
|
}
|
||||||
if (!浅Attr.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
|
if (ObjectUtil.isEmpty(浅Attr.getString("storagevehicle_code"))){
|
||||||
throw new BadRequestException("木箱货位"+boxAttr.getString("struct_code")+"的浅货位存在正在执行的任务");
|
if (!浅Attr.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
|
||||||
|
throw new BadRequestException("木箱货位"+boxAttr.getString("struct_code")+"的浅货位存在正在执行的任务");
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
if (浅Attr.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
|
||||||
|
// 判断浅货位木箱和深货位木箱是否相同规格
|
||||||
|
task_group_id = outBoxManageService.createBoxMove(浅Attr);
|
||||||
|
} else if (浅Attr.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("验箱出库锁"))) {
|
||||||
|
int 浅Task = taskService.count(new QueryWrapper<SchBaseTask>()
|
||||||
|
.eq("is_delete", "0")
|
||||||
|
.eq("point_code1", 浅Attr.getString("struct_code"))
|
||||||
|
.lt("task_status", TaskStatusEnum.FINISHED.getCode()));
|
||||||
|
if (浅Task == 0){
|
||||||
|
task_group_id = outBoxManageService.createBoxMove(浅Attr);
|
||||||
}
|
}
|
||||||
}else {
|
}else {
|
||||||
if (浅Attr.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
|
throw new BadRequestException("当前木箱所在货位"+boxAttr.getString("struct_code")+"对应浅货位存在任务"+浅Attr.getString("task_code"));
|
||||||
// 判断浅货位木箱和深货位木箱是否相同规格
|
|
||||||
task_group_id = outBoxManageService.createBoxMove(浅Attr);
|
|
||||||
} else if (浅Attr.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("验箱出库锁"))) {
|
|
||||||
int 浅Task = taskService.count(new QueryWrapper<SchBaseTask>()
|
|
||||||
.eq("is_delete", "0")
|
|
||||||
.eq("point_code1", 浅Attr.getString("struct_code"))
|
|
||||||
.lt("task_status", TaskStatusEnum.FINISHED.getCode()));
|
|
||||||
if (浅Task == 0){
|
|
||||||
task_group_id = outBoxManageService.createBoxMove(浅Attr);
|
|
||||||
}
|
|
||||||
}else {
|
|
||||||
throw new BadRequestException("当前木箱所在货位"+boxAttr.getString("struct_code")+"对应浅货位存在任务"+浅Attr.getString("task_code"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -769,6 +769,11 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
|||||||
throw new BadRequestException("当前子卷"+code+"已完成出入库不允许手动解除");
|
throw new BadRequestException("当前子卷"+code+"已完成出入库不允许手动解除");
|
||||||
}
|
}
|
||||||
if (StringUtils.isNotEmpty(containerName.getPackage_box_sn())){
|
if (StringUtils.isNotEmpty(containerName.getPackage_box_sn())){
|
||||||
|
String packageBoxSn = containerName.getPackage_box_sn();
|
||||||
|
WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr");
|
||||||
|
JSONObject attr = attrTab.query("storagevehicle_code = '" + packageBoxSn + "'").uniqueResult(0);
|
||||||
|
attr.put("lock_type","1");
|
||||||
|
attrTab.update(attr);
|
||||||
result.put("message", code+"子卷包装解除成功,同时确认MES装箱以解绑定");
|
result.put("message", code+"子卷包装解除成功,同时确认MES装箱以解绑定");
|
||||||
}
|
}
|
||||||
this.removeById(containerName.getWorkorder_id());
|
this.removeById(containerName.getWorkorder_id());
|
||||||
|
|||||||
@@ -236,7 +236,7 @@ public class TwoOutHeapTask extends AbstractAcsTask {
|
|||||||
LashManageServiceImpl bean1 = SpringContextHolder.getBean(LashManageServiceImpl.class);
|
LashManageServiceImpl bean1 = SpringContextHolder.getBean(LashManageServiceImpl.class);
|
||||||
bean1.createLashTask(jsonParam);
|
bean1.createLashTask(jsonParam);
|
||||||
// 再次下发:找相同任务组的下发
|
// 再次下发:找相同任务组的下发
|
||||||
sendTaskAcs(jsonTask.getString("task_group_id"),false);
|
sendTaskAcs(jsonTask.getString("task_group_id"),true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -301,77 +301,73 @@ public class TwoOutHeapTask extends AbstractAcsTask {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void sendTaskAcs(String groupTaskId,boolean retry) {
|
public void sendTaskAcs(String groupTaskId,boolean retry) {
|
||||||
/*
|
RedissonUtils.lock(c -> {
|
||||||
* 下发给ACS时需要特殊处理
|
WQLObject wo_Task = WQLObject.getWQLObject("sch_base_task");
|
||||||
*/
|
List<JSONObject> taskArrAll = wo_Task
|
||||||
//任务表
|
.query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and task_group_id = '" + groupTaskId + "'" + " and is_delete ='0' ORDER BY create_time")
|
||||||
WQLObject wo_Task = WQLObject.getWQLObject("sch_base_task");
|
|
||||||
|
|
||||||
List<JSONObject> taskArrAll = wo_Task
|
|
||||||
.query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and task_group_id = '" + groupTaskId + "'" + " and is_delete ='0' ORDER BY create_time")
|
|
||||||
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(taskArrAll) && retry) {
|
|
||||||
taskArrAll = wo_Task
|
|
||||||
.query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0' ORDER BY create_time")
|
|
||||||
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
}
|
|
||||||
|
|
||||||
// 是否下发多个AGV输送出库任务
|
if (ObjectUtil.isEmpty(taskArrAll) && retry) {
|
||||||
String is_send_many = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("is_send_many").getValue();
|
taskArrAll = wo_Task
|
||||||
// 是否异常出库口任务
|
.query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0' ORDER BY create_time")
|
||||||
String TWO_EXCEP = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("TWO_EXCEP").getValue();
|
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
}
|
||||||
|
|
||||||
List<JSONObject> taskArr;
|
// 是否下发多个AGV输送出库任务
|
||||||
if (TWO_EXCEP.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
|
String is_send_many = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("is_send_many").getValue();
|
||||||
if (is_send_many.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
|
// 是否异常出库口任务
|
||||||
// 只允许每个行架点位有一条任务
|
String TWO_EXCEP = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("TWO_EXCEP").getValue();
|
||||||
taskArr = sendTask(taskArrAll);
|
|
||||||
|
List<JSONObject> taskArr;
|
||||||
|
if (TWO_EXCEP.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
|
||||||
|
if (is_send_many.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
|
||||||
|
// 只允许每个行架点位有一条任务
|
||||||
|
taskArr = sendTask(taskArrAll);
|
||||||
|
} else {
|
||||||
|
taskArr = taskArrAll;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
taskArr = taskArrAll;
|
taskArr = taskArrAll;
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
taskArr = taskArrAll;
|
|
||||||
}
|
|
||||||
|
|
||||||
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
|
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
|
||||||
for (int i = 0; i < taskArr.size(); i++) {
|
for (int i = 0; i < taskArr.size(); i++) {
|
||||||
JSONObject json = taskArr.get(i);
|
JSONObject json = taskArr.get(i);
|
||||||
|
char dtl_type = json.getString("task_type").charAt(json.getString("task_type").length() - 1);
|
||||||
|
AcsTaskDto dto = AcsTaskDto.builder()
|
||||||
|
.ext_task_id(json.getString("task_id"))
|
||||||
|
.task_code(json.getString("task_code"))
|
||||||
|
.task_type(json.getString("acs_task_type"))
|
||||||
|
.start_device_code(json.getString("point_code1"))
|
||||||
|
.next_device_code(json.getString("point_code2"))
|
||||||
|
.vehicle_code(json.getString("vehicle_code2"))
|
||||||
|
.vehicle_code2(json.getString("vehicle_code"))
|
||||||
|
.interaction_json(json.getJSONObject("request_param"))
|
||||||
|
.priority(json.getString("priority"))
|
||||||
|
.class_type(IOSEnum.ACS_TYPE.code("RGV输送任务"))
|
||||||
|
.dtl_type(String.valueOf(dtl_type))
|
||||||
|
.product_area(IOSEnum.PRODUCT_AREA.code("BLK"))
|
||||||
|
.remark(json.getString("remark"))
|
||||||
|
.build();
|
||||||
|
|
||||||
char dtl_type = json.getString("task_type").charAt(json.getString("task_type").length() - 1);
|
if (json.getString("vehicle_code2").contains("A")) {
|
||||||
AcsTaskDto dto = AcsTaskDto.builder()
|
dto.setRoute_plan_code("two");
|
||||||
.ext_task_id(json.getString("task_id"))
|
} else {
|
||||||
.task_code(json.getString("task_code"))
|
dto.setRoute_plan_code("normal");
|
||||||
.task_type(json.getString("acs_task_type"))
|
}
|
||||||
.start_device_code(json.getString("point_code1"))
|
resultList.add(dto);
|
||||||
.next_device_code(json.getString("point_code2"))
|
|
||||||
.vehicle_code(json.getString("vehicle_code2"))
|
|
||||||
.vehicle_code2(json.getString("vehicle_code"))
|
|
||||||
.interaction_json(json.getJSONObject("request_param"))
|
|
||||||
.priority(json.getString("priority"))
|
|
||||||
.class_type(IOSEnum.ACS_TYPE.code("RGV输送任务"))
|
|
||||||
.dtl_type(String.valueOf(dtl_type))
|
|
||||||
.product_area(IOSEnum.PRODUCT_AREA.code("BLK"))
|
|
||||||
.remark(json.getString("remark"))
|
|
||||||
.build();
|
|
||||||
|
|
||||||
if (json.getString("vehicle_code2").contains("A")) {
|
// 更新任务为下发
|
||||||
dto.setRoute_plan_code("two");
|
JSONObject paramMap = new JSONObject();
|
||||||
} else {
|
paramMap.put("task_status", TaskStatusEnum.ISSUE.getCode());
|
||||||
dto.setRoute_plan_code("normal");
|
wo_Task.update(paramMap, "task_id ='" + json.getString("task_id") + "'");
|
||||||
|
|
||||||
|
// 调用下发
|
||||||
|
if (ObjectUtil.isNotEmpty(resultList)) {
|
||||||
|
JSONArray arr = JSONArray.parseArray(JSON.toJSONString(resultList));
|
||||||
|
AcsUtil.notifyAcs("api/wms/task", arr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
resultList.add(dto);
|
},"resendrgv", 30, this);
|
||||||
|
|
||||||
// 更新任务为下发
|
|
||||||
JSONObject paramMap = new JSONObject();
|
|
||||||
paramMap.put("task_status", TaskStatusEnum.ISSUE.getCode());
|
|
||||||
wo_Task.update(paramMap, "task_id ='" + json.getString("task_id") + "'");
|
|
||||||
|
|
||||||
// 调用下发
|
|
||||||
if (ObjectUtil.isNotEmpty(resultList)) {
|
|
||||||
JSONArray arr = JSONArray.parseArray(JSON.toJSONString(resultList));
|
|
||||||
AcsUtil.notifyAcs("api/wms/task", arr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -212,7 +212,7 @@ public class TwoOutTask extends AbstractAcsTask {
|
|||||||
if (ObjectUtil.isEmpty(resultJSONArray)) {
|
if (ObjectUtil.isEmpty(resultJSONArray)) {
|
||||||
this.immediateNotifyAcs(null);
|
this.immediateNotifyAcs(null);
|
||||||
}
|
}
|
||||||
}, "出库堆垛机任务反馈完成", 30, this);
|
}, "cratergv", 30, this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user