Browse Source

opt: 二次分配任务优化

master
yanps 9 months ago
parent
commit
9e9cfc1b6a
  1. 50
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java

50
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java

@ -229,13 +229,15 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
@Override @Override
public SchBasePoint selectByRegionCode(String region_code,String vehicleCode) { public SchBasePoint selectByRegionCode(String region_code,String vehicleCode) {
List<SchBasePoint> schBasePoints = pointMapper.selectList(Wrappers.lambdaQuery(SchBasePoint.class).eq(SchBasePoint::getRegion_code, region_code) //查询载具的类型
.eq(SchBasePoint::getIs_used, true).isNull(SchBasePoint::getIng_task_code)); MdBaseVehicle mdBaseVehicle = iMdBaseVehicleService.getById(vehicleCode);
if(CollUtil.isEmpty(schBasePoints)) return null; if(ObjectUtil.isEmpty(mdBaseVehicle)) throw new BadRequestException("载具类型不存在!");
//TODO:货位有无货的三种状态: 无货,空料容,有货 //查询满足条件的站点
List<SchBasePoint> collect = schBasePoints.stream().filter(schBasePoint -> schBasePoint.getIs_lock().equals(false)).collect(Collectors.toList()); List<SchBasePoint> schBasePoints = pointMapper.selectList(Wrappers.lambdaQuery(SchBasePoint.class).eq(SchBasePoint::getIs_lock, false).
if(CollUtil.isNotEmpty(collect) && collect.size() > 0){ isNull(SchBasePoint::getVehicle_code).eq(SchBasePoint::getRegion_code, region_code)
SchBasePoint schBasePoint = collect.get(0); .eq(SchBasePoint::getVehicle_type, mdBaseVehicle.getVehicle_type()).eq(SchBasePoint::getIs_used, true));
if(CollUtil.isNotEmpty(schBasePoints) && schBasePoints.size() > 0){
SchBasePoint schBasePoint = schBasePoints.get(0);
schBasePoint.setVehicle_code(vehicleCode); schBasePoint.setVehicle_code(vehicleCode);
schBasePoint.setIs_lock(true); schBasePoint.setIs_lock(true);
String currentUserId = SecurityUtils.getCurrentUserId(); String currentUserId = SecurityUtils.getCurrentUserId();
@ -245,18 +247,26 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
schBasePoint.setUpdate_name(nickName); schBasePoint.setUpdate_name(nickName);
schBasePoint.setUpdate_time(now); schBasePoint.setUpdate_time(now);
updateById(schBasePoint); updateById(schBasePoint);
return collect.get(0); return schBasePoint;
} }
String can_vehicle_type = null; //分配载具类型相同的站点
for (SchBasePoint schBasePoint : schBasePoints) { List<SchBasePoint> schBasePoints1 = pointMapper.selectList(Wrappers.lambdaQuery(SchBasePoint.class).eq(SchBasePoint::getIs_lock, false).
can_vehicle_type = schBasePoint.getCan_vehicle_type(); isNull(SchBasePoint::getVehicle_code).eq(SchBasePoint::getVehicle_type, mdBaseVehicle.getVehicle_type())
if(StrUtil.isNotEmpty(can_vehicle_type)) break; .eq(SchBasePoint::getIs_used, true));
if(CollUtil.isNotEmpty(schBasePoints1) && schBasePoints1.size() > 0){
SchBasePoint schBasePoint = schBasePoints.get(0);
schBasePoint.setVehicle_code(vehicleCode);
schBasePoint.setIs_lock(true);
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now();
schBasePoint.setUpdate_id(currentUserId);
schBasePoint.setUpdate_name(nickName);
schBasePoint.setUpdate_time(now);
updateById(schBasePoint);
return schBasePoint;
} }
if(ObjectUtil.isEmpty(can_vehicle_type)) return null; return null;
List<SchBasePoint> schBasePoints1 = pointMapper.selectList(Wrappers.lambdaQuery(SchBasePoint.class).eq(SchBasePoint::getCan_vehicle_type, can_vehicle_type)
.eq(SchBasePoint::getIs_used, true).eq(SchBasePoint::getIs_lock, true).isNull(SchBasePoint::getIng_task_code));
if(ObjectUtil.isEmpty(schBasePoints1) || schBasePoints1.size() == 0) return null;
return schBasePoints1.get(0);
} }
@Override @Override
@ -274,7 +284,8 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
isNull(SchBasePoint::getVehicle_code).eq(SchBasePoint::getRegion_code, region_code) isNull(SchBasePoint::getVehicle_code).eq(SchBasePoint::getRegion_code, region_code)
.eq(SchBasePoint::getVehicle_type, mdBaseVehicle.getVehicle_type()).eq(SchBasePoint::getIs_used, true)); .eq(SchBasePoint::getVehicle_type, mdBaseVehicle.getVehicle_type()).eq(SchBasePoint::getIs_used, true));
if(CollUtil.isNotEmpty(schBasePoints) && schBasePoints.size() > 0){ if(CollUtil.isNotEmpty(schBasePoints) && schBasePoints.size() > 0){
SchBasePoint schBasePoint = schBasePoints.get(0); SchBasePoint schBasePoint = pointMapper.selectById(schBasePoints.get(0).getNext_wait_point());
if(ObjectUtil.isEmpty(schBasePoint)) throw new BadRequestException("没有找到等待点!");
schBasePoint.setVehicle_code(vehicleCode); schBasePoint.setVehicle_code(vehicleCode);
schBasePoint.setIs_lock(true); schBasePoint.setIs_lock(true);
String currentUserId = SecurityUtils.getCurrentUserId(); String currentUserId = SecurityUtils.getCurrentUserId();
@ -291,7 +302,8 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
isNull(SchBasePoint::getVehicle_code).eq(SchBasePoint::getVehicle_type, mdBaseVehicle.getVehicle_type()) isNull(SchBasePoint::getVehicle_code).eq(SchBasePoint::getVehicle_type, mdBaseVehicle.getVehicle_type())
.eq(SchBasePoint::getIs_used, true)); .eq(SchBasePoint::getIs_used, true));
if(CollUtil.isNotEmpty(schBasePoints1) && schBasePoints1.size() > 0){ if(CollUtil.isNotEmpty(schBasePoints1) && schBasePoints1.size() > 0){
SchBasePoint schBasePoint = schBasePoints.get(0); SchBasePoint schBasePoint = pointMapper.selectById(schBasePoints.get(0).getNext_wait_point());
if(ObjectUtil.isEmpty(schBasePoint)) throw new BadRequestException("没有找到等待点!");
schBasePoint.setVehicle_code(vehicleCode); schBasePoint.setVehicle_code(vehicleCode);
schBasePoint.setIs_lock(true); schBasePoint.setIs_lock(true);
String currentUserId = SecurityUtils.getCurrentUserId(); String currentUserId = SecurityUtils.getCurrentUserId();

Loading…
Cancel
Save