Merge remote-tracking branch 'origin/master_merge' into master_merge

This commit is contained in:
2024-07-17 16:02:55 +08:00
9 changed files with 284 additions and 84 deletions

View File

@@ -102,15 +102,25 @@ public class DjqTask extends AbstractAcsTask {
}
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
log.info("任务编号为:" + schBaseTask.getTask_code() + "的任务完成接口在" + schBaseTask.getUpdate_time() + "被调用---------------------------------------------");
//1.改变起点点位状态,满轴->待检,二次分配取货完成信号发送就改起点库存,检查起点库存是否清空
//1.校验agv任务取货完成信号
if (StringUtils.isNotBlank(schBaseTask.getRequest_param())) {
//agv取货完成信号未发送
if (!schBaseTask.getRequest_param().equals(PackageInfoIvtEnum.TASK_ACTION_TYPE.code("取货完成"))) {
log.info(schBaseTask.getTask_code() + "检查检查->满轴位-待检区agv取货完成信号未发送");
}
} else {
//agv取货完成信号未发送
log.info(schBaseTask.getTask_code() + "检查检查->满轴位-待检区agv取货完成信号未发送");
}
//2.改变起点点位状态,满轴位->待检区,二次分配取货完成信号发送就改起点库存,检查起点库存是否清空
BstIvtPackageinfoivt ivtPoint = packageinfoivtService.getOne(new LambdaUpdateWrapper<BstIvtPackageinfoivt>().eq(BstIvtPackageinfoivt::getPoint_code, schBaseTask.getPoint_code1()));
//如果起点库存未清空,则清空
if (ivtPoint.getContainer_name() != null && schBaseTask.getVehicle_code() != null) {
if (ivtPoint.getContainer_name().equals(schBaseTask.getVehicle_code())) {
packageinfoivtService.update(null,new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1()));
packageinfoivtService.update(null, new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1()));
}
}
//2.更新终点库存记录
//3.更新终点库存记录
String ivtStatus;
if (StringUtils.isNotBlank(schBaseTask.getRequest_param())) {
if (schBaseTask.getRequest_param().equals("98")) {
@@ -127,11 +137,11 @@ public class DjqTask extends AbstractAcsTask {
ivtStatus = PackageInfoIvtEnum.IVT_STATUS.code("有子卷");
}
packageinfoivtService.update(null,new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", ivtStatus).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2()));
//3.更改任务状态为完成
//4.更改任务状态为完成
updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode());
//4.清除首次分配目标点位
//5.清除首次分配目标点位
updateWrapper.set(SchBaseTask::getPoint_code3, "");
//5.判断是否存在确定起点的输送线->满轴缓存位任务,存在就下发任务
//6.判断是否存在确定起点的输送线->满轴缓存位任务,存在就下发任务
// List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
// //确定起点未下发
// .eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_START.getCode())

View File

@@ -126,35 +126,56 @@ public class MzhcwTask extends AbstractAcsTask {
log.info("任务编号为:" + schBaseTask.getTask_code() + "的任务完成接口在" + schBaseTask.getUpdate_time() + "被调用---------------------------------------------");
//1.更改任务状态为完成
updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode());
//2.更新库存记录
//2.校验桁架任务取放货完成信号
if (StringUtils.isNotBlank(schBaseTask.getCar_no())) {
//桁架取货完成信号未发送
if (!schBaseTask.getCar_no().equals(PackageInfoIvtEnum.TASK_ACTION_TYPE.code("放货完成"))) {
log.info(schBaseTask.getTask_code() + "检查检查->输送线点位-满轴缓存位,桁架放货完成信号未发送!!!");
}
} else {
//桁架取货完成信号未发送
log.info(schBaseTask.getTask_code() + "检查检查->输送线点位-满轴缓存位,桁架放货完成信号未发送!!!");
}
if (schBaseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"))) {
if (StringUtils.isNotBlank(schBaseTask.getRequest_param())) {
//桁架取货完成信号未发送
if (!schBaseTask.getRequest_param().equals(PackageInfoIvtEnum.TASK_ACTION_TYPE.code("取货完成"))) {
log.info(schBaseTask.getTask_code() + "检查检查->四个点任务,桁架取货完成信号未发送!!!");
}
} else {
//桁架取货完成信号未发送
log.info(schBaseTask.getTask_code() + "检查检查->四个点任务,桁架取货完成信号未发送!!!");
}
}
//3.更新库存记录
// packageinfoivtService.update(null,new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2()));
//3.任务一、待检区AGV搬运任务查询子卷信息去分切计划表查找定级数据桁架任务完成根据子卷定级创建AGV任务将满轴搬运至质检区或管制区
//4.任务一、待检区AGV搬运任务查询子卷信息去分切计划表查找定级数据桁架任务完成根据子卷定级创建AGV任务将满轴搬运至质检区或管制区
//createTaskToDjq(schBaseTask);
//4.创建空载具到输送线任务,完成后需要创建空载具缓存位->输送线任务
// if (schBaseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"))) {
//四个点任务改变pointCode3点位状态
// packageinfoivtService.update(null,new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code3()));
//校验任务是否存在
// List<String> taskTypes = new ArrayList<>(Collections.singletonList(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)")));
// List<SchBaseTask> existTask = taskService.getExistTasks(taskTypes);
// if (CollectionUtils.isEmpty(existTask)) {
// List<BstIvtPackageinfoivt> kzjPointList = packageinfoivtService
// .list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
// .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
// .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"))
// .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具"))
// .orderByDesc(BstIvtPackageinfoivt::getSort_seq));
// JSONObject toSsxTask = new JSONObject();
// toSsxTask.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
// toSsxTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"));
// toSsxTask.put("vehicle_code", schBaseTask.getVehicle_code());
// //判断空载具缓存位是否有空载具库存,有就叫桁架去任一位置搬空载具,如果暂时没有空载具,定时任务会不断判断是否有空载具
// toSsxTask.put("task_status", TaskStatusEnum.SURE_END.getCode());
// //终点为输送线点位
// toSsxTask.put("point_code2", schBaseTask.getPoint_code1());
// ssxDjwTask.createTask(toSsxTask);
// }
// }
//5.创建空载具到输送线任务,完成后需要创建空载具缓存位->输送线任务
// if (schBaseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"))) {
//四个点任务改变pointCode3点位状态
// packageinfoivtService.update(null,new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code3()));
//校验任务是否存在
// List<String> taskTypes = new ArrayList<>(Collections.singletonList(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)")));
// List<SchBaseTask> existTask = taskService.getExistTasks(taskTypes);
// if (CollectionUtils.isEmpty(existTask)) {
// List<BstIvtPackageinfoivt> kzjPointList = packageinfoivtService
// .list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
// .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
// .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"))
// .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具"))
// .orderByDesc(BstIvtPackageinfoivt::getSort_seq));
// JSONObject toSsxTask = new JSONObject();
// toSsxTask.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
// toSsxTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"));
// toSsxTask.put("vehicle_code", schBaseTask.getVehicle_code());
// //判断空载具缓存位是否有空载具库存,有就叫桁架去任一位置搬空载具,如果暂时没有空载具,定时任务会不断判断是否有空载具
// toSsxTask.put("task_status", TaskStatusEnum.SURE_END.getCode());
// //终点为输送线点位
// toSsxTask.put("point_code2", schBaseTask.getPoint_code1());
// ssxDjwTask.createTask(toSsxTask);
// }
// }
}
// 取消
if (status.equals(IOSEnum.IS_NOTANDYES.code(""))) {

View File

@@ -9,6 +9,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.dto.SchBaseTaskVO;
@@ -94,12 +95,22 @@ public class SsxDjwTask extends AbstractAcsTask {
updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.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.更改任务状态为完成
updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode());
//2.改变起点点位状态
//2.校验桁架任务取货完成信号
if (StringUtils.isNotBlank(schBaseTask.getRequest_param())) {
//桁架取货完成信号未发送
if (!schBaseTask.getRequest_param().equals(PackageInfoIvtEnum.TASK_ACTION_TYPE.code("取货完成"))) {
log.info(schBaseTask.getTask_code() + "检查检查->空载具缓存位-输送线,桁架取货完成信号未发送!!!");
}
} else {
//桁架取货完成信号未发送
log.info(schBaseTask.getTask_code() + "检查检查->空载具缓存位-输送线,桁架取货完成信号未发送!!!");
}
//3.改变起点点位状态
//packageinfoivtService.update(null,new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1()));
//3.空载具缓存位到输送线送空任务完成,去待检区或管制区补空载具
//4.空载具缓存位到输送线送空任务完成,去待检区或管制区补空载具
// List<BstIvtPackageinfoivt> zxqPointList = packageinfoivtService
// .list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
// .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("装箱区"))

View File

@@ -9,7 +9,6 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.RequiredArgsConstructor;
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;
@@ -27,17 +26,22 @@ import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.common.utils.RedisUtils;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.util.TaskUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* 6 目标装箱对接位, 装箱区 -> 装箱对接位,桁架任务
@@ -46,10 +50,14 @@ import java.util.List;
* @since 2024-02-01
*/
@Service()
@RequiredArgsConstructor
@Slf4j
public class ZxDjwTask extends AbstractAcsTask {
@Resource
@Qualifier("threadPoolExecutor")
private ThreadPoolExecutor pool;
@Resource
private AutoSendVehicleToDjq autoSendVehicleToDjq;
@Resource
@@ -63,6 +71,9 @@ public class ZxDjwTask extends AbstractAcsTask {
@Resource
private IPdmBiSlittingproductionplanService productionPlanService;
@Resource
private RedisUtils redisUtils;
private static final String NUM_KEY = "AutoSendZxToDjw:NUM";
private final String THIS_CLASS = ZxDjwTask.class.getName();
@Override
@@ -120,31 +131,32 @@ public class ZxDjwTask extends AbstractAcsTask {
} else if (StrUtil.isEmpty(containerInfo.getContainer_name())) {
throw new BadRequestException("子卷号不能为空!");
}
//1.判断是否最后一个子卷相同木箱号的子卷包装关系如果生成状态0,且个数等于1且子卷号等于当前载具号就是最后一个子卷
//1.更改任务状态为完成
updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode());
//2.改变起点点位状态
packageinfoivtService.update(null, new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空载具")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1()));
//3.判断是否最后一个子卷相同木箱号的子卷包装关系如果生成状态0,且个数等于1且子卷号等于当前载具号就是最后一个子卷
List<PdmBiSubpackagerelation> packagerelationList = subpackageRelationService.list(new LambdaQueryWrapper<PdmBiSubpackagerelation>().eq(PdmBiSubpackagerelation::getPackage_box_sn, schBaseTask.getVehicle_code2()).eq(PdmBiSubpackagerelation::getStatus, "0"));
if (packagerelationList.size() == 1 && packagerelationList.get(0).getContainer_name().equals(schBaseTask.getVehicle_code())) {
//2.更改木箱信息为已装箱:1
//4.更改木箱信息为已装箱:1
BstIvtBoxinfo bstIvtBoxinfo = bstIvtBoxinfoMapper.selectOne(new LambdaQueryWrapper<BstIvtBoxinfo>().eq(BstIvtBoxinfo::getBox_no, schBaseTask.getVehicle_code2()).ne(BstIvtBoxinfo::getIs_packing, "1"));
if (bstIvtBoxinfo == null) {
throw new BadRequestException("子卷包装关系为已装箱或找该任务的木箱号不存在!");
}
bstIvtBoxinfo.setIs_packing(IOSEnum.IS_NOTANDYES.code(""));
bstIvtBoxinfoMapper.updateById(bstIvtBoxinfo);
//3.最后一个子卷,清除装箱位木箱信息
//5.最后一个子卷,清除装箱位木箱信息
packageinfoivtService.update(null, new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code2()));
//4.创建装箱区->待检区或管制区补空任务
autoSendVehicleToDjq.sendVehicleToDjqOrGzq1(IOSEnum.IS_NOTANDYES.code(""));
//清除最后一个子卷计数
redisUtils.set(NUM_KEY, 0);
//6.创建装箱区->待检区或管制区补空任务
callingVehicleToDjqOrGzq(packagerelationList);
}
//5.改变子卷包装状态为已装箱1
//7.改变子卷包装状态为已装箱1
PdmBiSubpackagerelation pdmBiSubpackagerelation = subpackageRelationService
.getOne(new LambdaUpdateWrapper<PdmBiSubpackagerelation>().eq(PdmBiSubpackagerelation::getContainer_name, schBaseTask.getVehicle_code()), false);
pdmBiSubpackagerelation.setStatus(IOSEnum.IS_NOTANDYES.code(""));
subpackageRelationService.updateById(pdmBiSubpackagerelation);
//6.更改任务状态为完成
updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode());
//7.改变起点点位状态
packageinfoivtService.update(null, new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空载具")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1()));
}
// 取消
if (status.equals(IOSEnum.IS_NOTANDYES.code(""))) {
@@ -159,6 +171,34 @@ public class ZxDjwTask extends AbstractAcsTask {
taskService.update(null, updateWrapper);
}
@Async("pool")
public void callingVehicleToDjqOrGzq(List<PdmBiSubpackagerelation> packagerelationList) {
callingVehicleToDjqOrGzq(Integer.parseInt(packagerelationList.get(0).getQuanlity_in_box().toString()));
}
/**
* 装箱任务完成,异步调用装箱区->待检区补空任务
*/
private void callingVehicleToDjqOrGzq(Integer callingNum) {
if (callingNum == 1) {
autoSendVehicleToDjq.sendVehicleToDjqOrGzq1(IOSEnum.IS_NOTANDYES.code(""));
} else if (callingNum > 1) {
for (int i = 0; i < callingNum; i++) {
pool.execute(() -> {
try {
//5秒执行一次
TimeUnit.SECONDS.sleep(5L);
autoSendVehicleToDjq.sendVehicleToDjqOrGzq1(IOSEnum.IS_NOTANDYES.code(""));
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
e.printStackTrace();
}
});
}
}
}
@Override
public String createTask(JSONObject form) {

View File

@@ -74,32 +74,7 @@ public class AutoExecuteWaitTask {
for (SchBaseTask task : taskList) {
if (task != null) {
String taskType = task.getTask_type();
if (PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)").equals(taskType)) {
//校验任务是否存在
List<String> taskTypes = new ArrayList<>(Arrays.asList(taskType, PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"),PackageInfoIvtEnum.TASK_TYPE.code("补空(管制区->空载具缓存位)")));
List<SchBaseTask> existTask = taskService.getExistTasks(taskTypes);
//过滤未分配的补空载具任务
existTask = existTask.stream().filter(r -> StringUtils.isNotBlank(r.getResponse_param())).collect(Collectors.toList());
if (existTask.size() > 0) {
//已二次分配过的任务未完成
if (existTask.stream().anyMatch(r -> r.getResponse_param().equals(IOSEnum.IS_NOTANDYES.code("")))) {
throw new BadRequestException("存在已二次分配过点位的补空载具任务未完成!");
}
}
List<BstIvtPackageinfoivt> kzjPointList = packageinfoivtService
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")
).eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"))
.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具"))
.orderByAsc(BstIvtPackageinfoivt::getSort_seq));
if (CollectionUtils.isEmpty(kzjPointList)) {
return;
}
task.setPoint_code1(kzjPointList.get(0).getPoint_code());
task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode());
taskService.updateById(task);
ssxDjwTask.immediateNotifyAcs(null);
} else if (PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位").equals(taskType)) {
if (PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位").equals(taskType)) {
//校验任务是否存在
List<String> taskTypes = new ArrayList<>(Collections.singletonList(taskType));
List<SchBaseTask> existTaskList = taskService.getExistTasks(taskTypes);
@@ -120,6 +95,36 @@ public class AutoExecuteWaitTask {
task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode());
taskService.updateById(task);
mzhcwTask.immediateNotifyAcs(null);
} else if (PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)").equals(taskType)) {
//校验任务是否存在
List<String> taskTypes = new ArrayList<>(Arrays.asList(taskType, PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"), PackageInfoIvtEnum.TASK_TYPE.code("补空(管制区->空载具缓存位)"), PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")));
List<SchBaseTask> existTask = taskService.getExistTasks(taskTypes);
//先发输送线->满轴位任务,如果有输送线->满轴位任务未完成任务,暂不下发放空(空载具缓存位->输送线)任务
List<SchBaseTask> existTask1 = existTask.stream().filter(r -> r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"))).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(existTask1)) {
return;
}
//过滤未分配的补空载具任务
List<SchBaseTask> existTask2 = existTask.stream().filter(r -> StringUtils.isNotBlank(r.getResponse_param())).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(existTask2)) {
//已二次分配过的任务未完成
if (existTask.stream().anyMatch(r -> r.getResponse_param().equals(IOSEnum.IS_NOTANDYES.code("")))) {
throw new BadRequestException("存在已二次分配过点位的补空载具任务未完成!");
}
}
List<BstIvtPackageinfoivt> kzjPointList = packageinfoivtService
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")
).eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"))
.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具"))
.orderByAsc(BstIvtPackageinfoivt::getSort_seq));
if (CollectionUtils.isEmpty(kzjPointList)) {
return;
}
task.setPoint_code1(kzjPointList.get(0).getPoint_code());
task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode());
taskService.updateById(task);
ssxDjwTask.immediateNotifyAcs(null);
}
}
}

View File

@@ -34,7 +34,6 @@ public class AutoSendVehicleToDjq {
@Resource
private IschBaseTaskService taskService;
@Resource
private RedissonClient redissonClient;
@Resource
@@ -109,6 +108,7 @@ public class AutoSendVehicleToDjq {
private String getPointCode(JSONObject task, String taskType) {
String pointCode2 = null;
List<BstIvtPackageinfoivt> packageList;

View File

@@ -51,7 +51,6 @@ import static org.nl.wms.util.TaskUtil.getMaxNum;
public class AutoSendZxToDjw {
private final String THIS_CLASS = AutoSendZxToDjw.class.getName();
private final Integer NUM = 0;
private static final String NUM_KEY = "AutoSendZxToDjw:NUM";
private final RedissonClient redissonClient;

View File

@@ -63,6 +63,12 @@ public class StructattrServiceImpl implements StructattrService {
map.put("is_used", (String) whereJson.get("is_used"));
map.put("is_have", (String) whereJson.get("is_have"));
// 如果是二期仓库则将层数删除
if (ObjectUtil.isNotEmpty(whereJson.get("stor_id"))) {
if ( whereJson.get("stor_id").equals(IOSEnum.STOR_ID.code("二期"))) {
map.put("layer_num", "");
}
}
//获取人员对应的仓库
UserStorServiceImpl userStorService = new UserStorServiceImpl();
String in_stor_id = userStorService.getInStor();

View File

@@ -78,8 +78,16 @@ public class HandMoveStorServiceImpl implements HandMoveStorService {
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteAll(Long[] ids) {
WQLObject wo_mst = WQLObject.getWQLObject("ST_IVT_MoveInv");
for (Long moveinv_id : ids) {
this.deleteById(moveinv_id + "");
JSONObject jo_mst = wo_mst.query("moveinv_id='" + moveinv_id + "'").uniqueResult(0);
if (jo_mst.getString("stor_id").equals(IOSEnum.STOR_ID.code("二期"))) {
this.deleteByIdTwo(moveinv_id + "");
} else {
this.deleteById(moveinv_id + "");
}
}
}
@@ -158,6 +166,77 @@ public class HandMoveStorServiceImpl implements HandMoveStorService {
jsonAttr.put("storagevehicle_code", "");
wo_Attr.update(jsonAttr);
}
/**
* 通过moveinv_id删除明细还原库存等操作(二期)
*
* @param moveinv_id
*/
public void deleteByIdTwo(String moveinv_id) {
//明细表
WQLObject wo_dtl = WQLObject.getWQLObject("ST_IVT_MoveInvDtl");
//主表
WQLObject wo_mst = WQLObject.getWQLObject("ST_IVT_MoveInv");
//任务表
WQLObject wo_Task = WQLObject.getWQLObject("SCH_BASE_Task");
//仓位表
WQLObject wo_Attr = WQLObject.getWQLObject("st_ivt_structattr");
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now();
HashMap<String, String> map = new HashMap<>();
map.put("is_delete", "1");
map.put("update_optid", currentUserId + "");
map.put("update_optname", nickName);
map.put("update_time", now);
JSONObject jo_mst = wo_mst.query("moveinv_id='" + moveinv_id + "'").uniqueResult(0);
JSONArray ja = wo_dtl.query("moveinv_id='" + moveinv_id + "'").getResultJSONArray(0);
String point_code2 = "";
for (int i = 0; i < ja.size(); i++) {
JSONObject jo = ja.getJSONObject(i);
//删除任务
HashMap<String, String> task_map = new HashMap<>();
task_map.put("is_delete", "1");
point_code2 = wo_Task.query("task_id = '" + jo.getString("task_id") + "'").uniqueResult(0).getString("point_code2");
wo_Task.update(task_map, "task_id='" + jo.getString("task_id") + "'");
//解锁起点点位、仓位
JSONObject from_start = new JSONObject();
from_start.put("lock_type", "1");
from_start.put("is_free", "0");
from_start.put("struct_id", jo.getString("turnout_struct_id"));
from_start.put("storagevehicle_code", jo.getString("storagevehicle_code"));
storPublicService.updateStructAndPointTwo(from_start);
//解锁终点点位、仓位
from_start.put("struct_id", jo.getString("turnin_struct_id"));
storPublicService.updateStructAndPointTwo(from_start);
//更新移出库存
jo.put("struct_id", jo.getString("turnout_struct_id"));
jo.put("change_qty", jo.getDoubleValue("qty"));
jo.put("bill_type_scode", jo_mst.getString("bill_type"));
jo.put("inv_id", jo.getString("moveinvdtl_id"));
jo.put("bill_code", jo_mst.getString("bill_code"));
jo.put("bill_table", "ST_IVT_MoveInv");
storPublicService.IOStor(jo, "12");
//更新移入库存
jo.put("struct_id", jo.getString("turnin_struct_id"));
jo.put("bill_type_scode", jo_mst.getString("bill_type"));
jo.put("inv_id", jo.getString("moveinvdtl_id"));
jo.put("bill_code", jo_mst.getString("bill_code"));
jo.put("bill_table", "ST_IVT_MoveInv");
storPublicService.IOStor(jo, "32");
//删除明细
wo_dtl.delete("moveinvdtl_id='" + jo.getString("moveinvdtl_id") + "'");
}
//更新主表
wo_mst.update(map, "moveinv_id='" + moveinv_id + "'");
// 更新移入仓位
JSONObject jsonAttr = wo_Attr.query("struct_code = '" + point_code2 + "'").uniqueResult(0);
jsonAttr.put("storagevehicle_code", "");
wo_Attr.update(jsonAttr);
}
@Override
@@ -174,6 +253,7 @@ public class HandMoveStorServiceImpl implements HandMoveStorService {
//主表
WQLObject wo_mst = WQLObject.getWQLObject("ST_IVT_MoveInv");
ArrayList<Map> rows = (ArrayList<Map>) map.get("tableData");
JSONArray arrayTwo = MapUtil.get(map, "tableData", JSONArray.class);
map.remove("tableData");
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
@@ -199,8 +279,15 @@ public class HandMoveStorServiceImpl implements HandMoveStorService {
map.put("sysdeptid", deptId);
map.put("syscompanyid", deptId);
JSONObject jo_mst = JSONObject.parseObject(JSON.toJSONString(map));
//调用明细处理方法
JSONObject ret = this.insertDtlByRows(jo_mst, rows);
//调用明细处理方法 -- 如果是二期移库则调用 insertDtlByRows2
JSONObject ret = new JSONObject();
if (jo_mst.getString("stor_id").equals(IOSEnum.STOR_ID.code("二期"))) {
ret = this.insertDtlByRows2(jo_mst, arrayTwo);
} else {
ret = this.insertDtlByRows(jo_mst, rows);
}
map.put("detail_count", ret.getString("detail_count"));
map.put("total_qty", ret.getString("total_qty"));
wo_mst.insert(map);
@@ -554,6 +641,8 @@ public class HandMoveStorServiceImpl implements HandMoveStorService {
WQLObject wo_Task = WQLObject.getWQLObject("SCH_BASE_Task");
//点位表
WQLObject wo_Point = WQLObject.getWQLObject("SCH_BASE_Point");
//载具扩展属性
WQLObject extTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
//定义返回数据
JSONObject ret = new JSONObject();
@@ -640,6 +729,12 @@ public class HandMoveStorServiceImpl implements HandMoveStorService {
task.put("point_code2", row.getString("turnin_struct_code"));
}
task.put("vehicle_code", jo.getString("storagevehicle_code"));
// 查询木箱对应载具
JSONObject jsonExt = extTab.query("pcsn = '" + jo.getString("storagevehicle_code") + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(jsonExt)) {
throw new BadRequestException("此木箱对应载具不存在!"+jo.getString("storagevehicle_code"));
}
task.put("vehicle_code2", jsonExt.getString("storagevehicle_code"));
task.put("handle_class", HandMoveStorAcsTask.class.getName());
task.put("finished_type", "");
task.put("is_delete", "0");
@@ -724,12 +819,25 @@ public class HandMoveStorServiceImpl implements HandMoveStorService {
String moveinv_id = (String) whereJson.get("moveinv_id");
//查询主表
JSONObject jo_mst = wo_mst.query("moveinv_id='" + moveinv_id + "'").uniqueResult(0);
//调用删除明细,还原库存方法
this.deleteById(moveinv_id + "");
if (jo_mst.getString("stor_id").equals(IOSEnum.STOR_ID.code("二期"))) {
this.deleteByIdTwo(moveinv_id + "");
} else {
this.deleteById(moveinv_id + "");
}
//获取明细
ArrayList<Map> rows = (ArrayList<Map>) whereJson.get("tableData");
JSONArray arrayTwo = MapUtil.get(whereJson, "tableData", JSONArray.class);
//调用明细处理方法
JSONObject ret = this.insertDtlByRows(jo_mst, rows);
JSONObject ret ;
if (jo_mst.getString("stor_id").equals(IOSEnum.STOR_ID.code("二期"))) {
ret = this.insertDtlByRows2(jo_mst, arrayTwo);
} else {
ret = this.insertDtlByRows(jo_mst, rows);
}
jo_mst.put("remark", whereJson.get("remark"));
jo_mst.put("biz_date", whereJson.get("biz_date"));
jo_mst.put("detail_count", ret.getString("detail_count"));
@@ -993,7 +1101,7 @@ public class HandMoveStorServiceImpl implements HandMoveStorService {
from_start.put("lock_type", "1");
from_start.put("storagevehicle_code", jo.getString("storagevehicle_code"));
from_start.put("struct_id", jo.getString("turnout_struct_id"));
if (form.getString("turnout_sect_code").equals("BZC01")) {
if (jo.getString("turnout_sect_code").equals("BZC01")) {
storPublicService.updateStructAndPointTwo(from_start);
} else {
storPublicService.updateStructAndPoint(from_start);
@@ -1004,7 +1112,7 @@ public class HandMoveStorServiceImpl implements HandMoveStorService {
from_end.put("struct_id", jo.getString("turnin_struct_id"));
from_end.put("is_free", "0");
from_end.put("storagevehicle_code", jo.getString("storagevehicle_code"));
if (form.getString("turnout_sect_code").equals("BZC01")) {
if (jo.getString("turnout_sect_code").equals("BZC01")) {
storPublicService.updateStructAndPointTwo(from_end);
} else {
storPublicService.updateStructAndPoint(from_end);