rev:优化空轴退回功能

This commit is contained in:
2025-05-04 19:20:28 +08:00
parent 29d68a5174
commit 709595b91b
6 changed files with 184 additions and 54 deletions

View File

@@ -7,6 +7,7 @@ import java.util.Map;
import java.util.Set;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.common.domain.query.PageQuery;
@@ -51,6 +52,8 @@ public interface IstIvtShaftivtService extends IService<StIvtShaftivt> {
*/
void deleteAll(Set<String> ids);
void handleGroupTask(SchBaseTask baseTask);
}

View File

@@ -1,13 +1,24 @@
package org.nl.b_lms.sch.point.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.apache.commons.lang3.StringUtils;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.dao.StIvtShaftivt;
import org.nl.b_lms.sch.point.dao.mapper.StIvtShaftivtMapper;
import org.nl.b_lms.sch.point.service.IstIvtShaftivtService;
import cn.hutool.core.date.DateUtil;
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.SendShaftToCacheTask;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.utils.SecurityUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.nl.common.domain.query.PageQuery;
@@ -29,6 +40,10 @@ public class StIvtShaftivtServiceImpl extends ServiceImpl<StIvtShaftivtMapper, S
@Resource
private StIvtShaftivtMapper stIvtShaftivtMapper;
@Autowired
private IschBaseTaskService taskService;
@Autowired
private SendShaftToCacheTask sendShaftToCacheTask;
/**
@@ -100,6 +115,21 @@ public class StIvtShaftivtServiceImpl extends ServiceImpl<StIvtShaftivtMapper, S
return entity;
}
@Override
public void handleGroupTask(SchBaseTask baseTask) {
if (StringUtils.isNotBlank(baseTask.getTask_group_id())) {
//存在关联的未完成的任务组任务
SchBaseTask groupTask = taskService.getOne(new LambdaQueryWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_group_id, baseTask.getTask_group_id())
.eq(SchBaseTask::getIs_delete, IOSEnum.IS_SEND.code(""))
.ne(SchBaseTask::getTask_id, baseTask.getTask_id())
.lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()));
if (groupTask != null) {
sendShaftToCacheTask.immediateNotifyAcs(groupTask.getTask_id());
}
}
}
}

View File

@@ -4,6 +4,8 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.extern.slf4j.Slf4j;
@@ -22,6 +24,7 @@ import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.AcsUtil;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.sch.tasks.InHotTask;
@@ -113,9 +116,13 @@ public class ReturnShaftAgvTask extends AbstractAcsTask {
log.info("点位信息:{}", endPointObj);
// 创建行架任务
String task_group_id = org.nl.common.utils.IdUtil.getStringId();
String task1 = null;
String task2 = null;
if (ObjectUtil.isNotEmpty(endPointObj.getQzz_no1())) {
String qzzSize = endPointObj.getQzz_no1();
String[] split = qzzSize.split("-");
String qzz = qzzSize.substring(qzzSize.length() - 3);
String[] split = qzz.split("-");
String size = split[0];
String qzz_generation = split[1];
List<BstIvtShafttubeivt> shafttubeivts = checkIsHaveEmptyPoint(size, qzz_generation);
@@ -130,11 +137,13 @@ public class ReturnShaftAgvTask extends AbstractAcsTask {
param.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
param.put("task_type", SlitterEnum.TASK_TYPE.code("穿拔轴缓存<>气胀轴缓存位"));
param.put("is_bushing", "0");
sendShaftToCacheTask.createTask(param);
param.put("task_group_id", task_group_id);
task1 = sendShaftToCacheTask.createTask(param);
}
if (ObjectUtil.isNotEmpty(endPointObj.getQzz_no2())) {
String qzzSize = endPointObj.getQzz_no2();
String[] split = qzzSize.split("-");
String qzz = qzzSize.substring(qzzSize.length() - 3);
String[] split = qzz.split("-");
String size = split[0];
String qzz_generation = split[1];
List<BstIvtShafttubeivt> shafttubeivts = checkIsHaveEmptyPoint(size, qzz_generation);
@@ -149,9 +158,10 @@ public class ReturnShaftAgvTask extends AbstractAcsTask {
param.put("task_type", SlitterEnum.TASK_TYPE.code("穿拔轴缓存<>气胀轴缓存位"));
param.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
param.put("is_bushing", "0");
sendShaftToCacheTask.createTask(param);
param.put("task_group_id", task_group_id);
task2 = sendShaftToCacheTask.createTask(param);
}
sendShaftToCacheTask.immediateNotifyAcs(ObjectUtil.isNotEmpty(task1) ? task1 : task2);
}
// 取消
if (status.equals(IOSEnum.IS_NOTANDYES.code(""))) {
@@ -203,6 +213,7 @@ public class ReturnShaftAgvTask extends AbstractAcsTask {
return task.getTask_id();
}
@Transactional(rollbackFor = Exception.class)
@Override
public void forceFinish(String task_id) {
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);

View File

@@ -5,21 +5,26 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.bst.ivt.cutpointivt.service.IBstIvtCutpointivtService;
import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt;
import org.nl.b_lms.bst.ivt.shafttubeivt.service.IBstIvtShafttubeivtService;
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;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.AcsUtil;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.springframework.beans.factory.annotation.Autowired;
@@ -44,6 +49,10 @@ public class SendShaftToCacheTask extends AbstractAcsTask {
private IBstIvtShafttubeivtService shafttubeivtService;
@Autowired
private IBstIvtCutpointivtService bcutpointivtService;
@Autowired
private IstIvtShaftivtService shaftivtService;
@Autowired
AcsUtil acsUtil;
@Override
public List<AcsTaskDto> addTask() {
@@ -109,6 +118,7 @@ public class SendShaftToCacheTask extends AbstractAcsTask {
startPointParam.setPoint_status("1");
bcutpointivtService.updateById(startPointParam);
}
shaftivtService.handleGroupTask(task);
}
// 取消
if (status.equals(IOSEnum.IS_NOTANDYES.code(""))) {
@@ -118,11 +128,17 @@ public class SendShaftToCacheTask extends AbstractAcsTask {
taskService.updateById(task);
}
@Override
public String createTask(JSONObject form) {
String currentUserId = SecurityUtils.getCurrentUserId();
String currentUsername = SecurityUtils.getCurrentUsername();
String point_code1 = form.getString("point_code1");
JSONObject task1 = isSingleTask(point_code1);
if (ObjectUtil.isNotEmpty(task1)) {
throw new BadRequestException("所在点位:" + point_code1 + "存在未完成的任务:" + task1.getString("task_code"));
}
SchBaseTask task = new SchBaseTask();
task.setTask_id(IdUtil.getSnowflake(1, 1).nextIdStr());
task.setTask_code(IdUtil.getSnowflake(1, 1).nextIdStr());
@@ -132,6 +148,7 @@ public class SendShaftToCacheTask extends AbstractAcsTask {
task.setVehicle_code(form.getString("qzz_size"));
task.setTask_type("010815");
task.setAcs_task_type("6");
task.setTask_group_id(form.getString("task_group_id"));
task.setIs_delete("0");
task.setRequest_param(form.toJSONString());
task.setTask_type(form.getString("task_type"));
@@ -148,7 +165,7 @@ public class SendShaftToCacheTask extends AbstractAcsTask {
task.setPriority(priority_jo.getString("value"));
}
taskService.save(task);
this.immediateNotifyAcs(null);
// this.immediateNotifyAcs(null);
return task.getTask_id();
}
@@ -164,4 +181,68 @@ public class SendShaftToCacheTask extends AbstractAcsTask {
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
this.updateTaskStatus(taskObj, "0");
}
@Override
public JSONObject immediateNotifyAcs(String task_id) {
try {
Thread.sleep(1000);
} catch (Exception ex) {
}
List<SchBaseTask> taskList = new ArrayList<>();
SchBaseTask baseTask = taskService.getById(task_id);
taskList.add(baseTask);
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
String agv_system_type = "2";
for (SchBaseTask task : taskList) {
String requestParam = task.getRequest_param();
JSONObject requestParamObj = JSONObject.parseObject(requestParam);
AcsTaskDto dto = AcsTaskDto.builder()
.ext_task_id(task.getTask_id())
.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())
.vehicle_code(task.getVehicle_code())
.agv_system_type(agv_system_type)
.priority(task.getPriority())
.remark(task.getRemark())
.product_area(task.getProduct_area())
.build();
resultList.add(dto);
}
// List<AcsTaskDto> taskList = this.schedule();
if (ObjectUtil.isNotEmpty(resultList)) {
JSONArray arr = JSONArray.parseArray(JSON.toJSONString(resultList));
if (acsUtil == null) {
return AcsUtil.notifyAcs("api/wms/task", arr);
} else {
return acsUtil.notifyAcs3("api/wms/task", arr);
}
}
return null;
}
public JSONObject isSingleTask(String point_code) {
JSONObject task1 = WQLObject.getWQLObject("SCH_BASE_Task").query("point_code1 = '" + point_code + "' AND task_status < '07' AND is_delete = '0'").uniqueResult(0);
JSONObject task2 = WQLObject.getWQLObject("SCH_BASE_Task").query("point_code2 = '" + point_code + "' AND task_status < '07' AND is_delete = '0'").uniqueResult(0);
JSONObject task3 = WQLObject.getWQLObject("SCH_BASE_Task").query("point_code3 = '" + point_code + "' AND task_status < '07' AND is_delete = '0'").uniqueResult(0);
JSONObject task4 = WQLObject.getWQLObject("SCH_BASE_Task").query("point_code4 = '" + point_code + "' AND task_status < '07' AND is_delete = '0'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(task1)) {
return task1;
} else if (ObjectUtil.isNotEmpty(task2)) {
return task2;
} else if (ObjectUtil.isNotEmpty(task3)) {
return task3;
} else if (ObjectUtil.isNotEmpty(task4)) {
return task4;
}
return null;
}
}

View File

@@ -1034,8 +1034,6 @@ public class SlitterServiceImpl implements SlitterService {
}
return null;
}
@@ -2249,6 +2247,7 @@ public class SlitterServiceImpl implements SlitterService {
public List<CallPlanViewVO> showManualView(JSONObject param) {
return slitterMapper.showManualView();
}
@Override
public JSONObject urgentPlan(JSONObject param) {
JSONObject res = new JSONObject();
@@ -2283,6 +2282,7 @@ public class SlitterServiceImpl implements SlitterService {
}
return res;
}
@Override
public JSONObject downRolls2(JSONObject param) {
log.info("下卷2的输入参数为{}", param);
@@ -2440,8 +2440,12 @@ public class SlitterServiceImpl implements SlitterService {
if (tryLock) {
taskParam.put("point_code1", point.getPoint_code());
taskParam.put("point_code2", endPoint.getPoint_code());
taskParam.put("vehicle_code1", size1);
taskParam.put("vehicle_code2", size2);
if (ObjectUtil.isNotEmpty(size1)) {
taskParam.put("vehicle_code1", IdUtil.getSnowflake(1, 1).nextIdStr() + size1);
}
if (ObjectUtil.isNotEmpty(size2)) {
taskParam.put("vehicle_code2", IdUtil.getSnowflake(1, 1).nextIdStr() + size2);
}
taskParam.put("task_type", SlitterEnum.TASK_TYPE.code("分切机下料AGV到内包间"));
taskParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
returnShaftAgvTask.createTask(taskParam);

View File

@@ -2873,7 +2873,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
if (ObjectUtil.isEmpty(qzzSize)) {
throw new BadRequestException("气涨轴规格不能为空!");
}
String[] split = qzzSize.split("-");
String qzz= qzzSize.substring(qzzSize.length() - 3);
String[] split = qzz.split("-");
String size = split[0];
String qzz_generation = split[1];