fix:满卷送待卷区终点查询
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
package org.nl.b_lms.sch.point.dao.mapper;
|
package org.nl.b_lms.sch.point.dao.mapper;
|
||||||
|
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt;
|
import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt;
|
||||||
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
|
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
@@ -34,5 +35,5 @@ public interface BstIvtPackageinfoivtMapper extends BaseMapper<BstIvtPackageinfo
|
|||||||
*/
|
*/
|
||||||
List<SchBaseTask> getTaskList(Set<String> pointCodes1, Set<String> pointCodes2, Set<String> pointCodes3, Set<String> pointCodes4);
|
List<SchBaseTask> getTaskList(Set<String> pointCodes1, Set<String> pointCodes2, Set<String> pointCodes3, Set<String> pointCodes4);
|
||||||
|
|
||||||
|
List<BstIvtPackageinfoivt> selectNoTaskPoint(@Param("pointStatus") String pointStatus, @Param("ivtStatus")String ivtStatus);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -80,6 +80,16 @@
|
|||||||
AND (task_status <![CDATA[ < ]]> '07')
|
AND (task_status <![CDATA[ < ]]> '07')
|
||||||
AND (is_delete = '0')
|
AND (is_delete = '0')
|
||||||
</select>
|
</select>
|
||||||
|
<select id="selectNoTaskPoint" resultType="org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt">
|
||||||
|
select p.*
|
||||||
|
from bst_ivt_packageinfoivt p
|
||||||
|
where point_status = #{pointStatus}
|
||||||
|
AND is_used = '1'
|
||||||
|
AND ivt_status = #{ivtStatus}
|
||||||
|
AND 0 = (SELECT COUNT(*) FROM sch_base_task t WHERE t.task_status <![CDATA[ < ]]> '07'
|
||||||
|
AND (t.point_code1 = p.point_code OR t.point_code2 = p.point_code OR t.point_code3 = p.point_code OR t.point_code4 = p.point_code)
|
||||||
|
AND t.is_delete = '0')
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -114,6 +114,9 @@ public interface IbstIvtPackageinfoivtService extends IService<BstIvtPackageinfo
|
|||||||
void deleteAll(Set<String> ids);
|
void deleteAll(Set<String> ids);
|
||||||
|
|
||||||
|
|
||||||
|
List<BstIvtPackageinfoivt> selectEmpPoints(String point_status,String ivt_status);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1186,6 +1186,12 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
|
|||||||
return dto;
|
return dto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<BstIvtPackageinfoivt> selectEmpPoints(String point_status, String ivt_status) {
|
||||||
|
if (StringUtils.isEmpty(point_status)||StringUtils.isEmpty(ivt_status)){
|
||||||
|
throw new BadRequestException("点位类型或状态不能为空");
|
||||||
|
}
|
||||||
|
return this.baseMapper.selectNoTaskPoint(point_status, ivt_status);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -72,80 +72,24 @@ public class AutoSendMzToDjq {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
JSONObject task = new JSONObject();
|
JSONObject task = new JSONObject();
|
||||||
String pointCode2 = null;
|
|
||||||
//满轴有子卷且过滤未完成任务
|
//满轴有子卷且过滤未完成任务
|
||||||
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 (ObjectUtils.isEmpty(mzqPackageinfoivtList)) {
|
if (ObjectUtils.isEmpty(mzqPackageinfoivtList)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//待检区有库位为空位且过滤未完成任务
|
//待检区有库位为空位且过滤未完成任务
|
||||||
List<BstIvtPackageinfoivt> djqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区"));
|
List<BstIvtPackageinfoivt> selectEmpPoints = packageinfoivtService.selectEmpPoints(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空"));
|
||||||
if (ObjectUtils.isEmpty(djqPackageinfoivtList)) {
|
if (ObjectUtils.isEmpty(selectEmpPoints)) {
|
||||||
log.info("满轴->待检区agv自动搬运任务暂无可用空位,子卷号为:" + mzqPackageinfoivtList.get(0).getContainer_name());
|
log.error(THIS_CLASS+"满轴->待检区agv自动搬运任务暂无可用空位,子卷号为:" + mzqPackageinfoivtList.get(0).getContainer_name());
|
||||||
throw new BadRequestException("满轴->待检区agv自动搬运任务暂无可用空位,子卷号为:" + mzqPackageinfoivtList.get(0).getContainer_name());
|
return;
|
||||||
}
|
}
|
||||||
// 获取浅库位为空的库位和深库位为空的库位
|
|
||||||
Map<Boolean, List<BstIvtPackageinfoivt>> ivtMap = djqPackageinfoivtList.stream()
|
|
||||||
.collect(Collectors.partitioningBy(r -> r.getDepth().equals(PackageInfoIvtEnum.DEPTH_TYPE.code("浅货位"))));
|
|
||||||
List<BstIvtPackageinfoivt> shallowIvtList = ivtMap.get(true);
|
|
||||||
List<BstIvtPackageinfoivt> deepIvtList = ivtMap.get(false);
|
|
||||||
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("满轴缓存位->待检区"));
|
||||||
task.put("vehicle_code", mzqPackageinfoivtList.get(0).getContainer_name());
|
task.put("vehicle_code", mzqPackageinfoivtList.get(0).getContainer_name());
|
||||||
task.put("point_code1", packageinfoivtService.getWaitPoint(mzqPackageinfoivtList.get(0).getBlock(), mzqPackageinfoivtList.get(0).getWait_point_type()));
|
task.put("point_code1", packageinfoivtService.getWaitPoint(mzqPackageinfoivtList.get(0).getBlock(), mzqPackageinfoivtList.get(0).getWait_point_type()));
|
||||||
task.put("point_code3", mzqPackageinfoivtList.get(0).getPoint_code());
|
|
||||||
//如果浅库位和深库位都有空位,且为一组,优先深库位
|
//如果浅库位和深库位都有空位,且为一组,优先深库位
|
||||||
if (ObjectUtils.isNotEmpty(shallowIvtList) && ObjectUtils.isNotEmpty(deepIvtList)) {
|
task.put("point_code2", mzqPackageinfoivtList.get(0).getPoint_code());
|
||||||
// 筛选出浅库位为空且对应的深库位也为空的库位的point_code
|
djqTask.createTask(task);
|
||||||
pointCode2 = shallowIvtList.stream()
|
|
||||||
.filter(shallowIvt -> deepIvtList.stream()
|
|
||||||
.anyMatch(deepIvt -> shallowIvt.getCol_num().equals(deepIvt.getCol_num())))
|
|
||||||
.findFirst()
|
|
||||||
.flatMap(shallowIvt -> deepIvtList.stream()
|
|
||||||
.filter(deepIvt -> shallowIvt.getCol_num().equals(deepIvt.getCol_num()))
|
|
||||||
.findFirst()
|
|
||||||
.map(BstIvtPackageinfoivt::getPoint_code))
|
|
||||||
.orElse(null);
|
|
||||||
if (pointCode2 == null) {
|
|
||||||
//如果不同一组,则直接浅库位
|
|
||||||
pointCode2 = shallowIvtList.get(0).getPoint_code();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//如果只有浅库位有空位,则直接取浅库位的编号为终点
|
|
||||||
else if (ObjectUtils.isNotEmpty(shallowIvtList)) {
|
|
||||||
pointCode2 = shallowIvtList.get(0).getPoint_code();
|
|
||||||
}
|
|
||||||
//如果只有深库位有空位,需要发起浅库位->深库位的移库任务
|
|
||||||
else if (ObjectUtils.isNotEmpty(deepIvtList)) {
|
|
||||||
//取出深库位的编号为任务终点
|
|
||||||
String deepPointCode = deepIvtList.get(0).getPoint_code();
|
|
||||||
//查询对应浅库位的编号为任务起点
|
|
||||||
List<BstIvtPackageinfoivt> groupIvtList = packageinfoivtService.list(new LambdaQueryWrapper<BstIvtPackageinfoivt>().eq(BstIvtPackageinfoivt::getCol_num, deepIvtList.get(0).getCol_num())).stream().filter(r -> r.getDepth().equals(PackageInfoIvtEnum.DEPTH_TYPE.code("浅货位"))).collect(Collectors.toList());
|
|
||||||
if (ObjectUtils.isEmpty(groupIvtList)) {
|
|
||||||
log.info(deepIvtList.get(0).getPoint_code() + "找不到对应的浅货位,请检查点位库存信息!");
|
|
||||||
throw new BadRequestException(deepIvtList.get(0).getPoint_code() + "找不到对应的浅货位,请检查点位库存信息!");
|
|
||||||
}
|
|
||||||
pointCode2 = groupIvtList.get(0).getPoint_code();
|
|
||||||
//主任务只确定终点
|
|
||||||
task.put("task_status", TaskStatusEnum.SURE_END.getCode());
|
|
||||||
task.put("point_code2", pointCode2);
|
|
||||||
String taskId = djqTask.createTask(task);
|
|
||||||
//移库任务
|
|
||||||
JSONObject task1 = new JSONObject();
|
|
||||||
task1.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("普通任务"));
|
|
||||||
task1.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("待检区移库任务"));
|
|
||||||
task1.put("vehicle_code", groupIvtList.get(0).getContainer_name());
|
|
||||||
task1.put("point_code1", pointCode2);
|
|
||||||
task1.put("point_code2", deepPointCode);
|
|
||||||
task1.put("task_group_id", taskId);
|
|
||||||
task1.put("material_code", groupIvtList.get(0).getIvt_status());
|
|
||||||
shiftingTask.createTask(task1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (pointCode2 != null) {
|
|
||||||
task.put("point_code2", pointCode2);
|
|
||||||
djqTask.createTask(task);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
log.info("满轴->待检区agv自动搬运任务正在创建被锁住。");
|
log.info("满轴->待检区agv自动搬运任务正在创建被锁住。");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user