Merge remote-tracking branch 'origin/master_merge' into master_merge
This commit is contained in:
@@ -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())
|
||||
|
||||
@@ -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("否"))) {
|
||||
|
||||
@@ -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("装箱区"))
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user