fix:代码合并

This commit is contained in:
zhouz
2024-07-08 09:26:13 +08:00
30 changed files with 267 additions and 202 deletions

View File

@@ -1,8 +1,6 @@
package org.nl; package org.nl;
import cn.dev33.satoken.annotation.SaIgnore; import cn.dev33.satoken.annotation.SaIgnore;
import com.alicp.jetcache.anno.config.EnableCreateCacheAnnotation;
import com.alicp.jetcache.anno.config.EnableMethodCache;
import org.dromara.dynamictp.core.spring.EnableDynamicTp; import org.dromara.dynamictp.core.spring.EnableDynamicTp;
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import org.nl.modules.wql.util.SpringContextHolder; import org.nl.modules.wql.util.SpringContextHolder;
@@ -30,8 +28,6 @@ import org.springframework.web.bind.annotation.RestController;
}) })
@ServletComponentScan //https://blog.csdn.net/qq_36850813/article/details/101194250 @ServletComponentScan //https://blog.csdn.net/qq_36850813/article/details/101194250
@EnableJpaAuditing(auditorAwareRef = "auditorAware") @EnableJpaAuditing(auditorAwareRef = "auditorAware")
@EnableMethodCache(basePackages = "org.nl")
@EnableCreateCacheAnnotation
@MapperScan("org.nl.**.mapper") @MapperScan("org.nl.**.mapper")
public class AppRun { public class AppRun {

View File

@@ -178,6 +178,7 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
whereJson.put("bill_type", IOSEnum.IN_TYPE.code("改切入库")); whereJson.put("bill_type", IOSEnum.IN_TYPE.code("改切入库"));
} }
whereJson.put("box_no", whereJson.getString("box_no")); whereJson.put("box_no", whereJson.getString("box_no"));
JSONArray resultJSONArray = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("package_box_sn = '" + whereJson.getString("material_barcode") + "' AND status = '0'").getResultJSONArray(0); JSONArray resultJSONArray = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("package_box_sn = '" + whereJson.getString("material_barcode") + "' AND status = '0'").getResultJSONArray(0);
if (ObjectUtil.isEmpty(resultJSONArray)) { if (ObjectUtil.isEmpty(resultJSONArray)) {
throw new BadRequestException("未查询到子卷包装信息!"); throw new BadRequestException("未查询到子卷包装信息!");

View File

@@ -808,9 +808,9 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
if (CollectionUtils.isEmpty(packagerelationList)) { if (CollectionUtils.isEmpty(packagerelationList)) {
throw new BadRequestException("无选中子卷信息"); throw new BadRequestException("无选中子卷信息");
} }
if (packagerelationList.size() > 1) { // if (packagerelationList.size() > 1) {
throw new BadRequestException("暂时只能选择一个子卷"); // throw new BadRequestException("暂时只能选择一个子卷");
} // }
//检查是否存在已分配规格的子卷号 //检查是否存在已分配规格的子卷号
List<PdmBiSubpackagerelation> isOutBox = packagerelationList.stream().filter(r -> r.getStatus().equals("0")).collect(Collectors.toList()); List<PdmBiSubpackagerelation> isOutBox = packagerelationList.stream().filter(r -> r.getStatus().equals("0")).collect(Collectors.toList());
if (isOutBox.size() > 0) { if (isOutBox.size() > 0) {
@@ -867,7 +867,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
System.out.println("木箱出库代码执行花费时间------------------------------------------------------------------------------------------*************************************************************************************************= totalTime = " + stopWatch.getTotalTimeMillis()); System.out.println("木箱出库代码执行花费时间------------------------------------------------------------------------------------------*************************************************************************************************= totalTime = " + stopWatch.getTotalTimeMillis());
log.info("木箱出库代码执行花费时间------------------------------------------------------------------------------------------*************************************************************************************************= totalTime = " + stopWatch.getTotalTimeMillis()); log.info("木箱出库代码执行花费时间------------------------------------------------------------------------------------------*************************************************************************************************= totalTime = " + stopWatch.getTotalTimeMillis());
//空木箱出库测试 //空木箱出库测试
//String boxSn = "33333"; //String boxSn = "MX240702000166";
StopWatch stopWatch1 = new StopWatch(); StopWatch stopWatch1 = new StopWatch();
stopWatch1.start(); stopWatch1.start();
//更新及子卷包装状态已分配规格及木箱规格组 //更新及子卷包装状态已分配规格及木箱规格组
@@ -907,16 +907,16 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
.collect(Collectors.toList()); .collect(Collectors.toList());
//任务组id //任务组id
String groupId = deviceCode.substring(deviceCode.lastIndexOf("_") + 1); String groupId = deviceCode.substring(deviceCode.lastIndexOf("_") + 1);
RLock lock = redissonClient.getLock(groupId); // RLock lock = redissonClient.getLock(groupId);
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); // boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try { // try {
if (tryLock) { // if (tryLock) {
List<SchBaseTask> schBaseTaskList = new ArrayList<>(); List<SchBaseTask> schBaseTaskList = new ArrayList<>();
//确定起点,安装装箱组标识加入任务队列 //确定起点,安装装箱组标识加入任务队列
djqPoints.forEach(r -> { djqPoints.forEach(r -> {
//校验重复任务 //校验重复任务
List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>().eq(SchBaseTask::getVehicle_code, r.getContainer_name()).eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("待检区->装箱区")) List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>().eq(SchBaseTask::getVehicle_code, r.getContainer_name()).eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("待检区->装箱区"))
.eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("")).lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED)); .eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("")).lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()));
if (CollectionUtils.isEmpty(taskList)) { if (CollectionUtils.isEmpty(taskList)) {
JSONObject jo = new JSONObject(); JSONObject jo = new JSONObject();
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("待检区->装箱区")); jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("待检区->装箱区"));
@@ -938,14 +938,14 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
if (CollectionUtils.isNotEmpty(schBaseTaskList)) { if (CollectionUtils.isNotEmpty(schBaseTaskList)) {
taskQueue.addTasksToQueue(groupId, schBaseTaskList); taskQueue.addTasksToQueue(groupId, schBaseTaskList);
} }
} else { // } else {
log.info("待检区->装箱区任务队列正在创建被锁住。"); // log.info("待检区->装箱区任务队列正在创建被锁住。");
} // }
} finally { // } finally {
if (tryLock) { // if (tryLock) {
lock.unlock(); // lock.unlock();
} // }
} // }
} }

View File

@@ -111,7 +111,11 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
taskList = bstIvtPackageinfoivtMapper.getTaskList(pointIds, pointIds, pointIds, null); taskList = bstIvtPackageinfoivtMapper.getTaskList(pointIds, pointIds, pointIds, null);
} else if (pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货分配"))) { } else if (pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货分配"))) {
taskList = bstIvtPackageinfoivtMapper.getTaskList(pointIds, pointIds, null, pointIds); taskList = bstIvtPackageinfoivtMapper.getTaskList(pointIds, pointIds, null, pointIds);
} else if (pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务取货分配"))) { }
else if (pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("四个点任务放货"))) {
taskList = bstIvtPackageinfoivtMapper.getTaskList(pointIds, null, pointIds, null);
}
else if (pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务取货分配"))) {
taskList = bstIvtPackageinfoivtMapper.getTaskList(pointIds, pointIds, pointIds, pointIds); taskList = bstIvtPackageinfoivtMapper.getTaskList(pointIds, pointIds, pointIds, pointIds);
} else { } else {
return packageinfoivtList; return packageinfoivtList;
@@ -230,12 +234,9 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
pointCode = getNewPoint(taskCode, actionType); pointCode = getNewPoint(taskCode, actionType);
break; break;
case "3": case "3":
// 取货完成
updatePointStatus(taskCode, actionType);
break;
case "4": case "4":
// 货完成,就是任务完成,不需要执行任何操作,但是取货任务的放货完成,需要改变updateTaskStatus只更新终点库存 // 货完成,放货完成
//updatePointStatus(taskCode, pointType); updatePointStatus(taskCode, actionType);
break; break;
default: default:
return null; return null;
@@ -486,11 +487,13 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
* @param actionType 动作类型 * @param actionType 动作类型
*/ */
private void updatePointStatus(String taskCode, String actionType) { private void updatePointStatus(String taskCode, String actionType) {
//执行中的任务
SchBaseTask baseTask = taskService.getOne(new LambdaQueryWrapper<SchBaseTask>() SchBaseTask baseTask = taskService.getOne(new LambdaQueryWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_code, taskCode) .eq(SchBaseTask::getTask_code, taskCode)
.eq(SchBaseTask::getIs_delete, IOSEnum.IS_SEND.code(""))
.eq(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.getCode())); .eq(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.getCode()));
if (baseTask == null) { if (baseTask == null) {
throw new BadRequestException("任务不存在!"); throw new BadRequestException("任务未执行或不存在!");
} }
//取货任务 //取货任务
if (actionType.equals(PackageInfoIvtEnum.TASK_ACTION_TYPE.code("取货完成"))) { if (actionType.equals(PackageInfoIvtEnum.TASK_ACTION_TYPE.code("取货完成"))) {
@@ -507,6 +510,22 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
.setSql("ivt_status = '0', container_name = null") .setSql("ivt_status = '0', container_name = null")
.eq("point_code", baseTask.getPoint_code1())); .eq("point_code", baseTask.getPoint_code1()));
} }
} else {
List<BstIvtPackageinfoivt> ivtList = packageinfoivtService.list(new LambdaQueryWrapper<BstIvtPackageinfoivt>()
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
.eq(BstIvtPackageinfoivt::getPoint_code, baseTask.getPoint_code2()));
if (CollectionUtils.isEmpty(ivtList)) {
throw new BadRequestException("任务编号为:" + baseTask.getTask_code() + "取货完成的目标点位不存在!");
}
if (ivtList.get(0).getIvt_status().equals(PackageInfoIvtEnum.IVT_STATUS.code(""))) {
//增加点位库存
bstIvtPackageinfoivtMapper.update(null, new UpdateWrapper<BstIvtPackageinfoivt>()
.set("container_name", baseTask.getVehicle_code())
.set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷"))
.eq("point_code", baseTask.getPoint_code2()));
} else {
throw new BadRequestException("该点位已有库存!");
}
} }
} }

View File

@@ -1,16 +1,14 @@
package org.nl.b_lms.sch.task.service; package org.nl.b_lms.sch.task.service;
import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt; import com.baomidou.mybatisplus.core.metadata.IPage;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.common.domain.query.PageQuery;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.nl.common.domain.query.PageQuery;
/** /**
* {@code @Description:} 任务表(SchBaseTask)服务接口层 * {@code @Description:} 任务表(SchBaseTask)服务接口层
@@ -69,10 +67,18 @@ public interface IschBaseTaskService extends IService<SchBaseTask> {
/** /**
* 查找当前设备有没有送轴的任务 * 查找当前设备有没有送轴的任务
*
* @param resourceName / * @param resourceName /
* @return / * @return /
*/ */
List<SchBaseTask> getTaskByPlanQzzNoAndDevice(String resourceName); List<SchBaseTask> getTaskByPlanQzzNoAndDevice(String resourceName);
/**
*校验相同任务类型
*/
List<SchBaseTask> getExistTasks(String taskType1, String taskType2, String taskType3);
} }

View File

@@ -6,19 +6,18 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt; import org.apache.commons.lang3.StringUtils;
import org.nl.b_lms.sch.task.dao.SchBaseTask; import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.dao.mapper.SchBaseTaskMapper; import org.nl.b_lms.sch.task.dao.mapper.SchBaseTaskMapper;
import org.nl.b_lms.sch.task.service.IschBaseTaskService; import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.common.domain.query.PageQuery; import org.nl.common.domain.query.PageQuery;
import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.SecurityUtils;
import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.sch.manage.TaskStatusEnum;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.*;
import java.util.Map;
import java.util.Set;
/** /**
@@ -133,5 +132,18 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
} }
public List<SchBaseTask> getExistTasks(String taskType1, String taskType2, String taskType3) {
LambdaQueryWrapper<SchBaseTask> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode());
queryWrapper.eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code(""));
List<String> taskTypes = new ArrayList<>(Arrays.asList(taskType1, taskType2, taskType3));
taskTypes.removeIf(StringUtils::isBlank);
if (!taskTypes.isEmpty()) {
queryWrapper.in(SchBaseTask::getTask_type, taskTypes);
}
return this.list(queryWrapper);
}
} }

View File

@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt; import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService; 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.dao.SchBaseTask;
@@ -52,8 +53,6 @@ public class DjqTask extends AbstractAcsTask {
@Resource @Resource
private IbstIvtPackageinfoivtService packageinfoivtService; private IbstIvtPackageinfoivtService packageinfoivtService;
@Resource @Resource
private MzhcwTask mzhcwTask;
@Resource
private TaskQueueManager taskQueueManager; private TaskQueueManager taskQueueManager;
@@ -73,7 +72,7 @@ public class DjqTask extends AbstractAcsTask {
.task_type(r.getAcs_task_type()) .task_type(r.getAcs_task_type())
.start_device_code(r.getPoint_code1()) .start_device_code(r.getPoint_code1())
.next_device_code(r.getPoint_code2()) .next_device_code(r.getPoint_code2())
.vehicle_code(r.getVehicle_code()) //.vehicle_code(r.getVehicle_code())
.priority(r.getPriority()) .priority(r.getPriority())
.remark(r.getRemark()) .remark(r.getRemark())
.product_area(r.getProduct_area()) .product_area(r.getProduct_area())
@@ -98,15 +97,17 @@ public class DjqTask extends AbstractAcsTask {
} }
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
log.info("任务编号为:" + schBaseTask.getTask_code() + "的任务完成接口在" + schBaseTask.getUpdate_time() + "被调用---------------------------------------------"); log.info("任务编号为:" + schBaseTask.getTask_code() + "的任务完成接口在" + schBaseTask.getUpdate_time() + "被调用---------------------------------------------");
//1.更改任务状态为完成 //1.改变起点点位状态,二次分配,取货完成就改起点库存
schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode());
//2.改变起点点位状态,二次分配,取货完成就改起点库存
//packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1())); //packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1()));
//3更新库存记录 //2.更新库存记录
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2())); //管制品重新质检
//清除首次分配目标点位 String ivtStatus = StringUtils.isBlank(schBaseTask.getRequest_param()) ? PackageInfoIvtEnum.IVT_STATUS.code("有子卷") : schBaseTask.getRequest_param();
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", ivtStatus).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2()));
//3.更改任务状态为完成
schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode());
//4.清除首次分配目标点位
schBaseTask.setPoint_code3(""); schBaseTask.setPoint_code3("");
//4.判断是否存在确定起点的输送线->满轴缓存位任务,存在就下发任务 //5.判断是否存在确定起点的输送线->满轴缓存位任务,存在就下发任务
// List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>() // List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
// //确定起点未下发 // //确定起点未下发
// .eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_START.getCode()) // .eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_START.getCode())

View File

@@ -53,9 +53,6 @@ public class DjqToKzjhcwTask extends AbstractAcsTask {
private IbstIvtPackageinfoivtService packageinfoivtService; private IbstIvtPackageinfoivtService packageinfoivtService;
@Resource
private SsxDjwTask ssxDjwTask;
@Override @Override
public List<AcsTaskDto> addTask() { public List<AcsTaskDto> addTask() {
@@ -95,30 +92,30 @@ public class DjqToKzjhcwTask extends AbstractAcsTask {
schBaseTask.setTask_status(TaskStatusEnum.EXECUTING.getCode()); schBaseTask.setTask_status(TaskStatusEnum.EXECUTING.getCode());
} }
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
log.info("任务编号为:"+schBaseTask.getTask_code()+"的任务完成接口在"+schBaseTask.getUpdate_time()+"被调用---------------------------------------------"); log.info("任务编号为:" + schBaseTask.getTask_code() + "的任务完成接口在" + schBaseTask.getUpdate_time() + "被调用---------------------------------------------");
//1.更改任务状态为完成 //1.改变起点点位状态
schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode()); packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1()));
//2.改变起点点位状态 //2.更新库存记录
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1())); packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("载具")).eq("point_code", schBaseTask.getPoint_code2()));
//清除首次分配目标点位 //3.更改任务状态为完成
schBaseTask.setPoint_code4(""); schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode());
//更新库存记录 //4.清除首次分配目标点位
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空载具")).eq("point_code", schBaseTask.getPoint_code2())); schBaseTask.setPoint_code4("");
//3.待检区或管制区搬运空载具到空载具缓存位完毕,判断是否存在确定终点的空载具缓存位->输送线任务,存在就下发任务 //3.待检区或管制区搬运空载具到空载具缓存位完毕,判断是否存在确定终点的空载具缓存位->输送线任务,存在就下发任务
// List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>() // List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
// //确定终点未下发 // //确定终点未下发
// .eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_END.getCode()) // .eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_END.getCode())
// .eq(SchBaseTask::getPoint_code2, "NBJ1002") // .eq(SchBaseTask::getPoint_code2, "NBJ1002")
// .eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)")).eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否")) // .eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)")).eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"))
// ); // );
// if (CollectionUtils.isNotEmpty(taskList)) { // if (CollectionUtils.isNotEmpty(taskList)) {
// SchBaseTask task = taskList.get(0); // SchBaseTask task = taskList.get(0);
// task.setPoint_code1(schBaseTask.getPoint_code2()); // task.setPoint_code1(schBaseTask.getPoint_code2());
// task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode()); // task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode());
// taskService.update(task); // taskService.update(task);
// //任务下发 // //任务下发
// ssxDjwTask.immediateNotifyAcs(task.getTask_id().toString()); // ssxDjwTask.immediateNotifyAcs(task.getTask_id().toString());
// } // }
} }
// 取消 // 取消
if (status.equals(IOSEnum.IS_NOTANDYES.code(""))) { if (status.equals(IOSEnum.IS_NOTANDYES.code(""))) {

View File

@@ -48,8 +48,6 @@ public class GzqTask extends AbstractAcsTask {
private IschBaseTaskService taskService; private IschBaseTaskService taskService;
@Resource @Resource
private IbstIvtPackageinfoivtService packageinfoivtService; private IbstIvtPackageinfoivtService packageinfoivtService;
@Resource
private MzhcwTask mzhcwTask;
@Override @Override
public List<AcsTaskDto> addTask() { public List<AcsTaskDto> addTask() {
@@ -99,7 +97,7 @@ public class GzqTask extends AbstractAcsTask {
//2.改变起点点位状态 //2.改变起点点位状态
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1())); packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1()));
//更新库存记录 //更新库存记录
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2())); packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("管制品")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2()));
//3.判断是否存在确定起点的输送线->满轴缓存位任务,存在就下发任务 //3.判断是否存在确定起点的输送线->满轴缓存位任务,存在就下发任务
// List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>() // List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
// //确定起点未下发 // //确定起点未下发

View File

@@ -53,8 +53,7 @@ public class GzqToKzjhcwTask extends AbstractAcsTask {
private IbstIvtPackageinfoivtService packageinfoivtService; private IbstIvtPackageinfoivtService packageinfoivtService;
@Resource
private SsxDjwTask ssxDjwTask;
@Override @Override

View File

@@ -93,7 +93,9 @@ public class MzhcwTask extends AbstractAcsTask {
.next_device_code(r.getPoint_code2()) .next_device_code(r.getPoint_code2())
.start_device_code2(r.getPoint_code3()) .start_device_code2(r.getPoint_code3())
.next_device_code2(r.getPoint_code4()) .next_device_code2(r.getPoint_code4())
.vehicle_code(r.getVehicle_code()) //四个点任务与两个点任务类型区分
.agv_action_type(r.getVehicle_code2())
.vehicle_code(r.getVehicle_code())
.priority(r.getPriority()) .priority(r.getPriority())
.remark(r.getRemark()) .remark(r.getRemark())
.product_area(r.getProduct_area()) .product_area(r.getProduct_area())
@@ -127,23 +129,32 @@ public class MzhcwTask extends AbstractAcsTask {
//createTaskToDjq(schBaseTask); //createTaskToDjq(schBaseTask);
//4.创建空载具到输送线任务,完成后需要创建空载具缓存位->输送线任务 //4.创建空载具到输送线任务,完成后需要创建空载具缓存位->输送线任务
if (schBaseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"))) { if (schBaseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"))) {
//如果是输送线->满轴缓存位任务 //校验任务是否存在
List<BstIvtPackageinfoivt> kzjPointList = packageinfoivtService List<SchBaseTask> existTask = taskService.getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"),null,null);
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>() if (CollectionUtils.isEmpty(existTask)) {
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")) //如果是输送线->满轴缓存位任务
.eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位")) List<BstIvtPackageinfoivt> kzjPointList = packageinfoivtService
.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具")) .list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
.orderByDesc(BstIvtPackageinfoivt::getSort_seq)); .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
JSONObject toSsxTask = new JSONObject(); .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"))
toSsxTask.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务")); .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具"))
toSsxTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)")); .orderByDesc(BstIvtPackageinfoivt::getSort_seq));
toSsxTask.put("vehicle_code", schBaseTask.getVehicle_code()); JSONObject toSsxTask = new JSONObject();
//判断空载具缓存位是否有空载具库存,有就叫桁架去任一位置搬空载具,如果暂时没有空载具,定时任务会不断判断是否有空载具 toSsxTask.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
if (CollectionUtils.isNotEmpty(kzjPointList)) { toSsxTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"));
//直接创建搬运空载具任务 toSsxTask.put("vehicle_code", schBaseTask.getVehicle_code());
toSsxTask.put("point_code1", kzjPointList.get(0).getPoint_code()); //判断空载具缓存位是否有空载具库存,有就叫桁架去任一位置搬空载具,如果暂时没有空载具,定时任务会不断判断是否有空载具
//终点为输送线点位 if (CollectionUtils.isEmpty(kzjPointList)) {
toSsxTask.put("point_code2", schBaseTask.getPoint_code1()); toSsxTask.put("task_status", TaskStatusEnum.SURE_END.getCode());
//确定终点为输送线点位
toSsxTask.put("point_code2", schBaseTask.getPoint_code1());
} else {
toSsxTask.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
//直接创建搬运空载具任务
toSsxTask.put("point_code1", kzjPointList.get(0).getPoint_code());
//终点为输送线点位
toSsxTask.put("point_code2", schBaseTask.getPoint_code1());
}
ssxDjwTask.createTask(toSsxTask); ssxDjwTask.createTask(toSsxTask);
} }
} else { } else {

View File

@@ -69,7 +69,7 @@ public class SsxDjwTask extends AbstractAcsTask {
.next_device_code(r.getPoint_code2()) .next_device_code(r.getPoint_code2())
.start_device_code2(r.getPoint_code3()) .start_device_code2(r.getPoint_code3())
.next_device_code2(r.getPoint_code4()) .next_device_code2(r.getPoint_code4())
.vehicle_code(r.getVehicle_code()) //.vehicle_code(r.getVehicle_code())
.priority(r.getPriority()) .priority(r.getPriority())
.remark(r.getRemark()) .remark(r.getRemark())
.agv_action_type(PackageInfoIvtEnum.AGV_ACTION_TYPE.code("普通任务")) .agv_action_type(PackageInfoIvtEnum.AGV_ACTION_TYPE.code("普通任务"))

View File

@@ -11,7 +11,6 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService; import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan; import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation; import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
@@ -51,10 +50,7 @@ import java.util.List;
@Slf4j @Slf4j
public class ZxDjwTask extends AbstractAcsTask { public class ZxDjwTask extends AbstractAcsTask {
@Resource
private DjqToKzjhcwTask djqToKzjhcwTask;
@Resource
private DjqTask djqTask;
@Resource @Resource
private BstIvtBoxinfoMapper bstIvtBoxinfoMapper; private BstIvtBoxinfoMapper bstIvtBoxinfoMapper;
@Resource @Resource
@@ -124,17 +120,14 @@ public class ZxDjwTask extends AbstractAcsTask {
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空载具")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1())); packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空载具")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1()));
//3.判断是否最后一个子卷相同木箱号的子卷包装关系如果生成状态0,且个数等于1且子卷号等于当前载具号就是最后一个子卷 //3.判断是否最后一个子卷相同木箱号的子卷包装关系如果生成状态0,且个数等于1且子卷号等于当前载具号就是最后一个子卷
List<PdmBiSubpackagerelation> packagerelationList = subpackageRelationService.list(new LambdaQueryWrapper<PdmBiSubpackagerelation>().eq(PdmBiSubpackagerelation::getPackage_box_sn, schBaseTask.getVehicle_code2()).eq(PdmBiSubpackagerelation::getStatus, "0")); 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())) {
if (CollectionUtils.isEmpty(packagerelationList)) { //4.更改木箱信息为已装箱:1
BstIvtBoxinfo bstIvtBoxinfo = bstIvtBoxinfoMapper.selectOne(new LambdaQueryWrapper<BstIvtBoxinfo>().eq(BstIvtBoxinfo::getBox_no, schBaseTask.getVehicle_code2()).ne(BstIvtBoxinfo::getIs_packing, "1")); BstIvtBoxinfo bstIvtBoxinfo = bstIvtBoxinfoMapper.selectOne(new LambdaQueryWrapper<BstIvtBoxinfo>().eq(BstIvtBoxinfo::getBox_no, schBaseTask.getVehicle_code2()).ne(BstIvtBoxinfo::getIs_packing, "1"));
if (bstIvtBoxinfo == null) { if (bstIvtBoxinfo == null) {
throw new BadRequestException("子卷包装关系为已装箱或找该任务的木箱号不存在!"); throw new BadRequestException("子卷包装关系为已装箱或找该任务的木箱号不存在!");
} }
//4.更改木箱信息为已装箱:1
bstIvtBoxinfo.setIs_packing(IOSEnum.IS_NOTANDYES.code("")); bstIvtBoxinfo.setIs_packing(IOSEnum.IS_NOTANDYES.code(""));
bstIvtBoxinfoMapper.updateById(bstIvtBoxinfo); bstIvtBoxinfoMapper.updateById(bstIvtBoxinfo);
}
if (packagerelationList.size() == 1 && packagerelationList.get(0).getContainer_name().equals(schBaseTask.getVehicle_code())) {
//5.最后一个子卷,清除装箱位木箱信息 //5.最后一个子卷,清除装箱位木箱信息
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code2())); packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code2()));
} }

View File

@@ -11,7 +11,6 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan; import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.mapper.PdmBiSlittingproductionplanMapper; import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.mapper.PdmBiSlittingproductionplanMapper;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation; import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
@@ -64,9 +63,6 @@ public class ZxqTask extends AbstractAcsTask {
@Resource @Resource
private IpdmBiSubpackagerelationService subpackageRelationService; private IpdmBiSubpackagerelationService subpackageRelationService;
@Resource
private IPdmBiSlittingproductionplanService productionPlanService;
@Resource @Resource
private PdmBiSlittingproductionplanMapper pdmBiSlittingproductionplanMapper; private PdmBiSlittingproductionplanMapper pdmBiSlittingproductionplanMapper;
@Resource @Resource

View File

@@ -56,6 +56,7 @@ public class AutoExecuteWaitTask {
*/ */
@SneakyThrows @SneakyThrows
public void executeWaitTask() { public void executeWaitTask() {
log.info(THIS_CLASS+"-放满与取空桁架定时任务开始执行扫描。");
RLock lock = redissonClient.getLock(THIS_CLASS); RLock lock = redissonClient.getLock(THIS_CLASS);
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try { try {
@@ -80,7 +81,7 @@ public class AutoExecuteWaitTask {
if (CollectionUtils.isEmpty(kzjPointList)) { if (CollectionUtils.isEmpty(kzjPointList)) {
return; return;
} }
List<SchBaseTask> existTaskList = getExistTasks(taskType, task.getVehicle_code()); List<SchBaseTask> existTaskList = taskService.getExistTasks(taskType,null,null);
if (existTaskList.size() > 1) { if (existTaskList.size() > 1) {
throw new BadRequestException("存在多个子卷号相同的任务!"); throw new BadRequestException("存在多个子卷号相同的任务!");
} }
@@ -99,7 +100,7 @@ public class AutoExecuteWaitTask {
return; return;
} }
//校验相同是否存在相同子卷号任务 //校验相同是否存在相同子卷号任务
List<SchBaseTask> existTaskList = getExistTasks(taskType, task.getVehicle_code()); List<SchBaseTask> existTaskList = taskService.getExistTasks(taskType,null,null);
//如果有就不创建,没有就创建 //如果有就不创建,没有就创建
if (existTaskList.size() > 1) { if (existTaskList.size() > 1) {
throw new BadRequestException("存在多个子卷号相同的任务!"); throw new BadRequestException("存在多个子卷号相同的任务!");
@@ -121,15 +122,4 @@ public class AutoExecuteWaitTask {
} }
} }
//校验相同子卷号的任务
private List<SchBaseTask> getExistTasks(String taskType, String containerName) {
String startTime = LocalDate.now().atStartOfDay().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
return taskService.list(new LambdaQueryWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_type, taskType)
.eq(SchBaseTask::getVehicle_code, containerName)
.gt(SchBaseTask::getCreate_time, startTime)
.eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code(""))
);
}
} }

View File

@@ -44,6 +44,7 @@ public class AutoSendDjqToGzq {
*/ */
@SneakyThrows @SneakyThrows
public void sendDjqToGzq() { public void sendDjqToGzq() {
log.info(THIS_CLASS+"-待检区->管制区定时任务开始执行扫描。");
RLock lock = redissonClient.getLock(THIS_CLASS); RLock lock = redissonClient.getLock(THIS_CLASS);
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try { try {

View File

@@ -8,6 +8,7 @@ import org.apache.commons.collections4.CollectionUtils;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt; import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService; import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.b_lms.sch.tasks.first_floor_area.DjqTask; import org.nl.b_lms.sch.tasks.first_floor_area.DjqTask;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.common.enums.PackageInfoIvtEnum; import org.nl.common.enums.PackageInfoIvtEnum;
import org.redisson.api.RLock; import org.redisson.api.RLock;
import org.redisson.api.RedissonClient; import org.redisson.api.RedissonClient;
@@ -44,6 +45,7 @@ public class AutoSendGzqToDjq {
*/ */
@SneakyThrows @SneakyThrows
public void sendGzqToDjq() { public void sendGzqToDjq() {
log.info(THIS_CLASS+"-管制区->待检区定时任务开始执行扫描。");
RLock lock = redissonClient.getLock(THIS_CLASS); RLock lock = redissonClient.getLock(THIS_CLASS);
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try { try {
@@ -60,6 +62,8 @@ public class AutoSendGzqToDjq {
} }
JSONObject task = new JSONObject(); JSONObject task = new JSONObject();
task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("管制区->待检区")); task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("管制区->待检区"));
//区分管制品重新检测为合格品
task.put("request_param", PackageInfoIvtEnum.IVT_STATUS.code("合格品"));
task.put("vehicle_code", gzqPackageinfoivtList.get(0).getContainer_name()); task.put("vehicle_code", gzqPackageinfoivtList.get(0).getContainer_name());
task.put("point_code1", gzqPackageinfoivtList.get(0).getPoint_code()); task.put("point_code1", gzqPackageinfoivtList.get(0).getPoint_code());
task.put("point_code2", djqPackageinfoivtList.get(0).getPoint_code()); task.put("point_code2", djqPackageinfoivtList.get(0).getPoint_code());

View File

@@ -62,14 +62,13 @@ public class AutoSendMzToDjq {
@SneakyThrows @SneakyThrows
public void sendMzqToDjq2() { public void sendMzqToDjq2() {
log.info(THIS_CLASS+"-满轴->待检区定时任务开始执行扫描。");
RLock lock = redissonClient.getLock(THIS_CLASS); RLock lock = redissonClient.getLock(THIS_CLASS);
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try { try {
if (tryLock) { if (tryLock) {
String pointCode2 = null;
JSONObject task = new JSONObject();
//满轴有子卷且过滤未完成任务 //满轴有子卷且过滤未完成任务
List<BstIvtPackageinfoivt> mzqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("有子卷"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货分配"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), ""); List<BstIvtPackageinfoivt> mzqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("有子卷"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("四个点任务放货"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), "");
if (CollectionUtils.isEmpty(mzqPackageinfoivtList)) { if (CollectionUtils.isEmpty(mzqPackageinfoivtList)) {
return; return;
} }
@@ -78,6 +77,8 @@ public class AutoSendMzToDjq {
if (CollectionUtils.isEmpty(djqPackageinfoivtList)) { if (CollectionUtils.isEmpty(djqPackageinfoivtList)) {
return; return;
} }
String pointCode2;
JSONObject task = new JSONObject();
pointCode2 = djqPackageinfoivtList.get(0).getPoint_code(); pointCode2 = djqPackageinfoivtList.get(0).getPoint_code();
task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("取货二次分配")); task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("取货二次分配"));
task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区")); task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区"));

View File

@@ -1,13 +1,14 @@
package org.nl.b_lms.sch.tasks.first_floor_area.auto; package org.nl.b_lms.sch.tasks.first_floor_area.auto;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt; import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService; import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.b_lms.sch.tasks.first_floor_area.ZxqTask; import org.nl.b_lms.sch.tasks.first_floor_area.ZxqTask;
import org.nl.common.enums.PackageInfoIvtEnum; import org.nl.common.enums.PackageInfoIvtEnum;
import org.redisson.api.RedissonClient;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource; import javax.annotation.Resource;
@@ -22,6 +23,9 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor @RequiredArgsConstructor
public class AutoSendToZxq { public class AutoSendToZxq {
private final String THIS_CLASS = AutoSendToZxq.class.getName();
@Resource
private RedissonClient redissonClient;
@Resource @Resource
private IbstIvtPackageinfoivtService packageinfoivtService; private IbstIvtPackageinfoivtService packageinfoivtService;
@Resource @Resource
@@ -41,7 +45,13 @@ public class AutoSendToZxq {
/** /**
* 二次分配任务 * 二次分配任务
*/ */
@SneakyThrows
public void sendDjqToZxq() { public void sendDjqToZxq() {
log.info(THIS_CLASS + "-待检区->装箱区定时任务开始执行扫描。");
// RLock lock = redissonClient.getLock(THIS_CLASS);
// boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
// try {
// if (tryLock) {
//装箱区有空位,去待检区消费合格品子卷 //装箱区有空位,去待检区消费合格品子卷
List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = packageinfoivtService.checkEndPointTask( List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = packageinfoivtService.checkEndPointTask(
PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.POINT_STATUS.code("装箱区"),
@@ -57,6 +67,14 @@ public class AutoSendToZxq {
//taskQueueManager.processTasks(ivtList); //taskQueueManager.processTasks(ivtList);
taskQueue.processTasks(ivtList); taskQueue.processTasks(ivtList);
} }
// } else {
// log.info("满轴->待检区agv自动搬运任务正在创建被锁住。");
// }
// } finally {
// if (tryLock) {
// lock.unlock();
// }
// }
} }
} }

View File

@@ -43,6 +43,7 @@ public class AutoSendVehicleToDjq {
@SneakyThrows @SneakyThrows
public void sendVehicleToDjqOrGzq1() { public void sendVehicleToDjqOrGzq1() {
log.info(THIS_CLASS+"-装箱区->待检区或管制区补空任务开始执行扫描。");
RLock lock = redissonClient.getLock(THIS_CLASS); RLock lock = redissonClient.getLock(THIS_CLASS);
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try { try {
@@ -55,7 +56,7 @@ public class AutoSendVehicleToDjq {
return; 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.isNotEmpty(djqPackageinfoivtList)) { if (CollectionUtils.isNotEmpty(djqPackageinfoivtList)) {
pointCode2 = djqPackageinfoivtList.get(0).getPoint_code(); pointCode2 = djqPackageinfoivtList.get(0).getPoint_code();
task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("普通任务")); task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("普通任务"));

View File

@@ -47,7 +47,7 @@ public class AutoSendVehicleToKzj {
@SneakyThrows @SneakyThrows
public void toKzjHcw() { public void toKzjHcw() {
//存在空载具缓存位无空载具的点位 //存在空载具缓存位无空载具的点位
List<BstIvtPackageinfoivt> kzjIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), PackageInfoIvtEnum.IVT_STATUS.code(""), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), ""); List<BstIvtPackageinfoivt> kzjIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), PackageInfoIvtEnum.IVT_STATUS.code(""), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货分配"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), "");
if (CollectionUtils.isEmpty(kzjIvtList)) { if (CollectionUtils.isEmpty(kzjIvtList)) {
return; return;
} }
@@ -80,20 +80,21 @@ public class AutoSendVehicleToKzj {
*/ */
@SneakyThrows @SneakyThrows
public void toKzjHcw2() { public void toKzjHcw2() {
log.info(THIS_CLASS+"-待检区或管制区->空载具缓存位补空任务开始执行扫描。");
RLock lock = redissonClient.getLock(THIS_CLASS); RLock lock = redissonClient.getLock(THIS_CLASS);
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try { try {
if (tryLock) { if (tryLock) {
//存在空载具缓存位无空载具的点位 //存在空载具缓存位无空载具的点位
String pointCode1 = null;
JSONObject task = new JSONObject();
List<BstIvtPackageinfoivt> kzjIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), null, PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货分配"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), ""); List<BstIvtPackageinfoivt> kzjIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), null, PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货分配"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), "");
if (CollectionUtils.isEmpty(kzjIvtList)) { if (CollectionUtils.isEmpty(kzjIvtList)) {
return; return;
} }
String pointCode1 = null;
JSONObject task = new JSONObject();
boolean hasEmptyVehicle = true; boolean hasEmptyVehicle = true;
Optional<BstIvtPackageinfoivt> emptyList = kzjIvtList.stream() Optional<BstIvtPackageinfoivt> emptyList = kzjIvtList.stream()
.filter(n -> n.getIvt_status().equals(PackageInfoIvtEnum.IVT_STATUS.code(""))) .filter(n -> n.getIvt_status().equals(PackageInfoIvtEnum.IVT_STATUS.code("载具")))
.findFirst(); .findFirst();
//判断点位外层是否有空载具 //判断点位外层是否有空载具
if (emptyList.isPresent()) { if (emptyList.isPresent()) {

View File

@@ -48,6 +48,7 @@ import static org.nl.wms.util.TaskUtil.getMaxNum;
@Component @Component
@RequiredArgsConstructor @RequiredArgsConstructor
public class AutoSendZxToDjw { public class AutoSendZxToDjw {
private final String THIS_CLASS = AutoSendZxToDjw.class.getName();
private final RedissonClient redissonClient; private final RedissonClient redissonClient;
@Resource @Resource
@@ -112,6 +113,7 @@ public class AutoSendZxToDjw {
} }
//获取与该木箱号匹配的子卷号 //获取与该木箱号匹配的子卷号
String containerName = relationList.get(0).getContainer_name(); String containerName = relationList.get(0).getContainer_name();
log.info(THIS_CLASS+"-装箱区->装箱对接位任务开始执行扫描。");
RLock lock = redissonClient.getLock(containerName); RLock lock = redissonClient.getLock(containerName);
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try { try {

View File

@@ -62,15 +62,12 @@ public class TaskQueue {
private void executeTask(SchBaseTask task, String pointCode) { private void executeTask(SchBaseTask task, String pointCode) {
if (task != null) { if (task != null) {
List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, task.getTask_id())
.eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("")).lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()));
//被取消或删除的任务不再执行
//if (CollectionUtils.isEmpty(taskList)) {
task.setPoint_code2(pointCode); task.setPoint_code2(pointCode);
log.info("待检区->装箱区agv任务编号为"+task.getTask_code()+",任务状态为:"+task.getTask_status()+"任务开始下发。");
task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode()); task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode());
taskService.updateById(task); taskService.updateById(task);
zxqTask.immediateNotifyAcs(null); zxqTask.immediateNotifyAcs(null);
//} log.info("待检区->装箱区agv任务编号为"+task.getTask_code()+",任务状态为:"+task.getTask_status()+"下发完成。");
//同步删除子卷包装关系 //同步删除子卷包装关系
LambdaQueryWrapper<PdmBiSubpackagerelation> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<PdmBiSubpackagerelation> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PdmBiSubpackagerelation::getContainer_name, task.getVehicle_code()); queryWrapper.eq(PdmBiSubpackagerelation::getContainer_name, task.getVehicle_code());

View File

@@ -300,7 +300,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
@Override @Override
public void returnIn(JSONObject whereJson) { public void returnIn(JSONObject whereJson) {
// 载具表 // 载具表
///api/twoPda/vehicle/returnIn //api/twoPda/vehicle/returnIn
/* /*
* 查询mes木箱信息插入木箱信息表 * 查询mes木箱信息插入木箱信息表
*/ */

View File

@@ -4,12 +4,11 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONAware;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.extern.log4j.Log4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.checkerframework.checker.units.qual.A;
import org.nl.b_lms.sch.task.dao.SchBaseTask; import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.service.IschBaseTaskService; import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService; import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService;
@@ -18,21 +17,18 @@ import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvService; import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvService;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvdisService; import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvdisService;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvdtlService; import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvdtlService;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinv;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdis; import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdis;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdtl; import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdtl;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.mapper.StIvtIostorinvMapper; import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.mapper.StIvtIostorinvMapper;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.InBussManageService; import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.InBussManageService;
import org.nl.common.utils.MapOf;
import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.wql.WQL; import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.sch.service.TaskService; import org.nl.wms.ext.mes.service.LmsToMesService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.lang.reflect.Array;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -45,6 +41,7 @@ import java.util.stream.Collectors;
* @since 2023-11-10 * @since 2023-11-10
*/ */
@Service @Service
@Log4j
public class InBussManageServiceImpl implements InBussManageService { public class InBussManageServiceImpl implements InBussManageService {
@Autowired @Autowired
@@ -65,6 +62,10 @@ public class InBussManageServiceImpl implements InBussManageService {
@Autowired @Autowired
private IBstIvtBoxinfoService iBstIvtBoxinfoService; private IBstIvtBoxinfoService iBstIvtBoxinfoService;
@Autowired
private LmsToMesService lmsToMesService;
/** /**
* 不需要查询的排集合 * 不需要查询的排集合
*/ */
@@ -228,13 +229,15 @@ public class InBussManageServiceImpl implements InBussManageService {
public void inTask(JSONObject jsonObject) { public void inTask(JSONObject jsonObject) {
// 子卷包装关系表 // 子卷包装关系表
WQLObject subTab = WQLObject.getWQLObject("pdm_bi_subpackagerelation"); WQLObject subTab = WQLObject.getWQLObject("pdm_bi_subpackagerelation");
// 载具扩展属性表
WQLObject veExtTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
// 载具表
WQLObject vehicleTab = WQLObject.getWQLObject("MD_PB_StorageVehicleInfo");
// 处理子卷号 // 处理子卷号
String material_barcode = jsonObject.getString("material_barcode"); String material_barcode = jsonObject.getString("material_barcode");
if (ObjectUtil.isEmpty(material_barcode)) { if (ObjectUtil.isEmpty(material_barcode)) {
throw new BadRequestException("子卷号不能为空!"); throw new BadRequestException("子卷号不能为空!");
} }
if (ObjectUtil.isEmpty(jsonObject.getString("device_code"))) { if (ObjectUtil.isEmpty(jsonObject.getString("device_code"))) {
throw new BadRequestException("设备号不能为空!"); throw new BadRequestException("设备号不能为空!");
} }
@@ -252,6 +255,47 @@ public class InBussManageServiceImpl implements InBussManageService {
new QueryWrapper<BstIvtBoxinfo>().lambda() new QueryWrapper<BstIvtBoxinfo>().lambda()
.eq(BstIvtBoxinfo::getBox_no, subList.get(0).getString("package_box_sn")) .eq(BstIvtBoxinfo::getBox_no, subList.get(0).getString("package_box_sn"))
); );
String vehicleType;
if (boxDao != null) {
vehicleType = boxDao.getVehicle_type();
} else {
//查询mes木箱信息插入木箱信息表
try {
JSONObject jo = new JSONObject();
jo.put("box_no", subList.get(0).getString("package_box_sn"));
lmsToMesService.momGetPackingInfo(jo);
} catch (Exception ex) {
throw new BadRequestException("MES系统未查询到木箱信息!");
}
BstIvtBoxinfo boxDao1 = iBstIvtBoxinfoService.getOne(
new QueryWrapper<BstIvtBoxinfo>().lambda()
.eq(BstIvtBoxinfo::getBox_no, subList.get(0).getString("package_box_sn"))
);
vehicleType = boxDao1.getVehicle_type();
}
//处理托盘扩展信息
JSONObject jsonVehicle = vehicleTab.query("storagevehicle_code = '" + jsonObject.getString("vehicle_code") + "'")
.uniqueResult(0);
if (ObjectUtil.isEmpty(jsonVehicle)) {
throw new BadRequestException("载具不存在!");
}
JSONObject ext_jo = veExtTab.query("storagevehicle_code = '" + jsonVehicle.getString("storagevehicle_code") + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(ext_jo)) {
JSONObject jsonVeExt = new JSONObject();
jsonVeExt.put("storagevehicleext_id", org.nl.common.utils.IdUtil.getLongId());
jsonVeExt.put("storagevehicle_id", jsonVehicle.getLongValue("storagevehicle_id"));
jsonVeExt.put("storagevehicle_code", jsonVehicle.getString("storagevehicle_code"));
jsonVeExt.put("storagevehicle_type", jsonVehicle.getString("storagevehicle_type"));
jsonVeExt.put("pcsn", subList.get(0).getString("package_box_sn"));
jsonVeExt.put("device_uuid", org.nl.common.utils.IdUtil.getLongId());
jsonVeExt.put("update_time", DateUtil.now());
veExtTab.insert(jsonVeExt);
} else {
ext_jo.put("pcsn", subList.get(0).getString("package_box_sn"));
ext_jo.put("device_uuid", org.nl.common.utils.IdUtil.getLongId());
ext_jo.put("update_time", DateUtil.now());
veExtTab.update(ext_jo);
}
// 主表 // 主表
JSONObject mst = new JSONObject(); JSONObject mst = new JSONObject();
mst.put("stor_id", IOSEnum.STOR_ID.code("二期")); mst.put("stor_id", IOSEnum.STOR_ID.code("二期"));
@@ -261,14 +305,11 @@ public class InBussManageServiceImpl implements InBussManageService {
mst.put("bill_type", jsonObject.getString("bill_type")); mst.put("bill_type", jsonObject.getString("bill_type"));
mst.put("biz_date", DateUtil.today()); mst.put("biz_date", DateUtil.today());
mst.put("remark", ""); mst.put("remark", "");
// 明细 // 明细
ArrayList<LinkedHashMap> tableData = new ArrayList<>(); ArrayList<LinkedHashMap> tableData = new ArrayList<>();
for (int i = 0; i < subList.size(); i++) { for (int i = 0; i < subList.size(); i++) {
JSONObject json = subList.get(i); JSONObject json = subList.get(i);
LinkedHashMap<String, Object> jsonDtl = new LinkedHashMap<>(); LinkedHashMap<String, Object> jsonDtl = new LinkedHashMap<>();
jsonDtl.put("package_box_sn", json.getString("package_box_sn")); jsonDtl.put("package_box_sn", json.getString("package_box_sn"));
jsonDtl.put("thickness", json.getString("thickness")); jsonDtl.put("thickness", json.getString("thickness"));
jsonDtl.put("plan_qty", json.getString("net_weight")); jsonDtl.put("plan_qty", json.getString("net_weight"));
@@ -287,13 +328,11 @@ public class InBussManageServiceImpl implements InBussManageService {
tableData.add(jsonDtl); tableData.add(jsonDtl);
} }
mst.put("tableData", tableData); mst.put("tableData", tableData);
// 判断是否已经生成过入库单 // 判断是否已经生成过入库单
String package_box_sn = (String) tableData.get(0).get("package_box_sn"); String package_box_sn = (String) tableData.get(0).get("package_box_sn");
JSONObject param = new JSONObject(); JSONObject param = new JSONObject();
param.put("package_box_sn",package_box_sn); param.put("package_box_sn",package_box_sn);
JSONObject iosMst = stIvtIostorinvMapper.queryBoxMst(param); JSONObject iosMst = stIvtIostorinvMapper.queryBoxMst(param);
String iostorinv_id; String iostorinv_id;
if (ObjectUtil.isNotEmpty(iosMst)) { if (ObjectUtil.isNotEmpty(iosMst)) {
iostorinv_id = iosMst.getString("iostorinv_id"); iostorinv_id = iosMst.getString("iostorinv_id");
@@ -325,7 +364,7 @@ public class InBussManageServiceImpl implements InBussManageService {
jsonDiv.put("stor_id", IOSEnum.STOR_ID.code("二期")); jsonDiv.put("stor_id", IOSEnum.STOR_ID.code("二期"));
jsonDiv.put("material_barcode", jsonObject.getString("material_barcode")); jsonDiv.put("material_barcode", jsonObject.getString("material_barcode"));
jsonDiv.put("vehicle_code", jsonObject.getString("vehicle_code")); jsonDiv.put("vehicle_code", jsonObject.getString("vehicle_code"));
jsonDiv.put("vehicle_type", boxDao.getVehicle_type()); jsonDiv.put("vehicle_type", vehicleType);
iStIvtIostorinvService.divStruct(jsonDiv); iStIvtIostorinvService.divStruct(jsonDiv);
} }

View File

@@ -41,7 +41,7 @@ public enum PackageInfoIvtEnum {
//起点终点类型 //起点终点类型
TASK_POINT_TYPE(MapOf.of("取货任务", "1", "放货任务", "2", "取货分配", "3", "放货分配", "4", "取货任务取货分配", "5", "放货任务放货分配", "6")), TASK_POINT_TYPE(MapOf.of("取货任务", "1", "放货任务", "2", "取货分配", "3", "放货分配", "4", "取货任务取货分配", "5", "放货任务放货分配", "6", "四个点任务放货", "7")),
//等待点类型 //等待点类型
WAIT_POINT_TYPE(MapOf.of("满轴区等待点", "1", "待检区等待点", "2")), WAIT_POINT_TYPE(MapOf.of("满轴区等待点", "1", "待检区等待点", "2")),

View File

@@ -3,10 +3,6 @@ package org.nl.system.service.param.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alicp.jetcache.anno.CachePenetrationProtect;
import com.alicp.jetcache.anno.CacheType;
import com.alicp.jetcache.anno.CacheUpdate;
import com.alicp.jetcache.anno.Cached;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -77,7 +73,6 @@ public class SysParamServiceImpl extends ServiceImpl<SysParamMapper, Param> impl
} }
@Override @Override
@CacheUpdate(name="paramCache-", key="#param.code", value="#param")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void update(Param param) { public void update(Param param) {
Param paramObj = paramMapper.selectById(param.getId()); Param paramObj = paramMapper.selectById(param.getId());
@@ -102,8 +97,6 @@ public class SysParamServiceImpl extends ServiceImpl<SysParamMapper, Param> impl
} }
@Override @Override
/*@CachePenetrationProtect
@Cached(name="paramCache-",key = "#code", expire = 3600, cacheType = CacheType.REMOTE)*/
public Param findByCode(String code) { public Param findByCode(String code) {
QueryWrapper<Param> queryWrapper = new QueryWrapper<>(); QueryWrapper<Param> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("code", code); queryWrapper.eq("code", code);

View File

@@ -1,6 +1,5 @@
package org.nl.wms.ext.acs.service.impl; package org.nl.wms.ext.acs.service.impl;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.NumberUtil;
@@ -27,7 +26,6 @@ import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.service.IschBaseTaskService; import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.b_lms.sch.tasks.TwoBoxExcepTask; import org.nl.b_lms.sch.tasks.TwoBoxExcepTask;
import org.nl.b_lms.sch.tasks.TwoExceptionInTask; import org.nl.b_lms.sch.tasks.TwoExceptionInTask;
import org.nl.b_lms.sch.tasks.TwoOutHeapTask;
import org.nl.b_lms.sch.tasks.first_floor_area.MzhcwTask; import org.nl.b_lms.sch.tasks.first_floor_area.MzhcwTask;
import org.nl.b_lms.sch.tasks.first_floor_area.SsxDjwTask; import org.nl.b_lms.sch.tasks.first_floor_area.SsxDjwTask;
import org.nl.b_lms.sch.tasks.slitter.service.SlitterService; import org.nl.b_lms.sch.tasks.slitter.service.SlitterService;
@@ -38,8 +36,8 @@ import org.nl.b_lms.storage_manage.ios.enums.TASKEnum;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.*; import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.*;
import org.nl.common.enums.NoticeTypeEnum; import org.nl.common.enums.NoticeTypeEnum;
import org.nl.common.enums.PackageInfoIvtEnum; import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.common.utils.CodeUtil; import org.nl.common.utils.CodeUtil;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.wql.WQL; import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.SpringContextHolder; import org.nl.modules.wql.util.SpringContextHolder;
@@ -71,14 +69,11 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Collectors;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@Slf4j @Slf4j
@@ -1842,7 +1837,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
} }
} else { } else {
//如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发; //如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发;
List<SchBaseTask> existTaskList = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"), containerName); List<SchBaseTask> existTaskList = taskService.getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"),PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"), PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"));
//如果有就不创建,没有就创建 //如果有就不创建,没有就创建
if (CollectionUtils.isEmpty(existTaskList)) { if (CollectionUtils.isEmpty(existTaskList)) {
//只确定起点NBJ1002 //只确定起点NBJ1002
@@ -1850,13 +1845,17 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
jo2.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务")); jo2.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
jo2.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")); jo2.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"));
jo2.put("point_code1", "NBJ1002"); jo2.put("point_code1", "NBJ1002");
jo.put("task_status", TaskStatusEnum.SURE_START.getCode()); jo2.put("vehicle_code", containerName);
jo2.put("task_status", TaskStatusEnum.SURE_START.getCode());
jo2.put("is_send", false); jo2.put("is_send", false);
mzhcwTask.createTask(jo2); mzhcwTask.createTask(jo2);
result.put("status", HttpStatus.OK.value());
result.put("message", "反馈成功!");
}else{
log.info("已存在任务编号为:"+existTaskList.get(0).getTask_code()+"未完成的桁架任务,请检查!");
result.put("status", HttpStatus.BAD_REQUEST.value());
result.put("message", "已存在任务编号为:"+existTaskList.get(0).getTask_code()+"未完成的桁架任务,请检查!");
} }
result.put("data", containerName);
result.put("status", HttpStatus.BAD_REQUEST.value());
result.put("message", "满轴缓存位暂无空位!");
} }
} else { } else {
log.info("二楼到一楼成品子卷到达一楼输送线任务正在创建被锁住。"); log.info("二楼到一楼成品子卷到达一楼输送线任务正在创建被锁住。");
@@ -1872,19 +1871,20 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
return result; return result;
} }
/**
* 无空载具下发确定终点的补空桁架任务
*/
private JSONObject createTask2(String containerName, JSONObject jo) { private JSONObject createTask2(String containerName, JSONObject jo) {
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
result.put("data", containerName); result.put("data", containerName);
//如果空载具缓存位确少空载具,创建输送线->满轴缓存位两个点任务 //如果空载具缓存位确少空载具,创建输送线->满轴缓存位两个点任务
List<SchBaseTask> existTaskList = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")); List<SchBaseTask> existTaskList1 = taskService.getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"),PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"), PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"));
List<SchBaseTask> existTaskList1 = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"), containerName);
if (CollectionUtils.isEmpty(existTaskList1)) { if (CollectionUtils.isEmpty(existTaskList1)) {
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")); jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"));
jo.put("is_send", true); jo.put("is_send", true);
mzhcwTask.createTask(jo); mzhcwTask.createTask(jo);
//空载具缓存位缺少空载具,下发一个确定终点的空载具缓存位->输送线任务 //空载具缓存位缺少空载具,下发一个确定终点的空载具缓存位->输送线任务
List<SchBaseTask> existTasks = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)")); List<SchBaseTask> existTask1 = taskService.getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"),null,null);
List<SchBaseTask> existTask1 = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"), containerName);
if (CollectionUtils.isEmpty(existTask1)) { if (CollectionUtils.isEmpty(existTask1)) {
JSONObject jo1 = new JSONObject(); JSONObject jo1 = new JSONObject();
//创建确定终点任务 //创建确定终点任务
@@ -1899,8 +1899,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
result.put("status", HttpStatus.OK.value()); result.put("status", HttpStatus.OK.value());
result.put("message", "反馈成功!"); result.put("message", "反馈成功!");
} else { } else {
log.info("已存在任务编号为:"+existTaskList1.get(0).getTask_code()+"未完成的桁架任务,请检查!");
result.put("message", "已存在任务编号为:"+existTaskList1.get(0).getTask_code()+"未完成的桁架任务,请检查!");
result.put("status", HttpStatus.BAD_REQUEST.value()); result.put("status", HttpStatus.BAD_REQUEST.value());
result.put("message", "该子卷号:" + containerName + "桁架任务已存在,二楼下一楼存在相同子卷号,请检查!");
} }
return result; return result;
} }
@@ -1909,8 +1910,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
result.put("data", containerName); result.put("data", containerName);
// 创建前先判断是否有已创建相同任务 // 创建前先判断是否有已创建相同任务
List<SchBaseTask> existTaskList = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务")); List<SchBaseTask> existTaskList1 = taskService.getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"),PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"), PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"));
List<SchBaseTask> existTaskList1 = getExistTasks(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"), containerName);
if (CollectionUtils.isEmpty(existTaskList1)) { if (CollectionUtils.isEmpty(existTaskList1)) {
jo.put("point_code3", pointCode3); jo.put("point_code3", pointCode3);
//终点为输送线点位 //终点为输送线点位
@@ -1921,30 +1921,14 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
result.put("status", HttpStatus.OK.value()); result.put("status", HttpStatus.OK.value());
result.put("message", "反馈成功!"); result.put("message", "反馈成功!");
} else { } else {
log.info("已存在任务编号为:"+existTaskList1.get(0).getTask_code()+"未完成的桁架任务,请检查!");
result.put("message", "已存在任务编号为:"+existTaskList1.get(0).getTask_code()+"未完成的桁架任务,请检查!");
result.put("status", HttpStatus.BAD_REQUEST.value()); result.put("status", HttpStatus.BAD_REQUEST.value());
result.put("message", "该子卷号:" + containerName + "桁架任务已存在,二楼下一楼存在相同子卷号,请检查!");
} }
return result; return result;
} }
private List<SchBaseTask> getExistTasks(String taskType) {
return taskService.list(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_type, taskType)
.lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
.eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("")));
}
private List<SchBaseTask> getExistTasks(String taskType, String containerName) {
String startTime = LocalDate.now().atStartOfDay().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
return taskService.list(new LambdaQueryWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_type, taskType)
.eq(SchBaseTask::getVehicle_code, containerName)
//.gt(SchBaseTask::getCreate_time, startTime)
.lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
.eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code(""))
);
}
@Override @Override

View File

@@ -26,7 +26,6 @@ public class AcsUtil {
String isConnect = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("is_connect_acs").getValue(); String isConnect = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("is_connect_acs").getValue();
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
if (StrUtil.equals("0", isConnect)) { if (StrUtil.equals("0", isConnect)) {
result.put("status", HttpStatus.OK.value()); result.put("status", HttpStatus.OK.value());
result.put("message", "下发成功但未连接ACS!"); result.put("message", "下发成功但未连接ACS!");
result.put("data", new JSONObject()); result.put("data", new JSONObject());
@@ -62,7 +61,6 @@ public class AcsUtil {
String msg = e.getMessage(); String msg = e.getMessage();
//ConnectException: Connection refused: connect //ConnectException: Connection refused: connect
//网络不通 //网络不通
System.out.println(msg);
result.put("status", HttpStatus.BAD_REQUEST); result.put("status", HttpStatus.BAD_REQUEST);
result.put("message", "网络不通,操作失败!"); result.put("message", "网络不通,操作失败!");
result.put("data", new JSONObject()); result.put("data", new JSONObject());
@@ -129,7 +127,6 @@ public class AcsUtil {
String msg = e.getMessage(); String msg = e.getMessage();
//ConnectException: Connection refused: connect //ConnectException: Connection refused: connect
//网络不通 //网络不通
System.out.println(msg);
result.put("status", HttpStatus.BAD_REQUEST); result.put("status", HttpStatus.BAD_REQUEST);
result.put("message", "网络不通,操作失败!"); result.put("message", "网络不通,操作失败!");
result.put("data", new JSONObject()); result.put("data", new JSONObject());

View File

@@ -1,11 +1,18 @@
package org.nl.wms.util; package org.nl.wms.util;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan; import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan;
import org.nl.b_lms.sch.task.dao.SchBaseTask; import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.sch.manage.TaskStatusEnum;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.List;
public class TaskUtil { public class TaskUtil {
/** /**
@@ -52,4 +59,5 @@ public class TaskUtil {
} }
return maxNum; return maxNum;
} }
} }