no message
parent
8d5654bd23
commit
e8c8c59e35
|
|
@ -20,6 +20,7 @@ import com.youchain.businessdata.domain.Inventory;
|
|||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
|
|
@ -45,7 +46,7 @@ public interface StockRepository extends JpaRepository<Stock, Long>, JpaSpecific
|
|||
@Query(" from Stock s where s.point.area.name = :areaName " +
|
||||
"and s.point.id > 0 " +
|
||||
"and s.point.status = 'USED'" +
|
||||
"and s.status = 'FREE' " +
|
||||
"and s.status = :status " +
|
||||
"and s.enabled = true")
|
||||
List<Stock> findByKongStock(String areaName);
|
||||
List<Stock> findByFreeOrUsedStock(String areaName, String status);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -137,8 +137,9 @@ public interface StockService {
|
|||
* 查询指定库区可用的空车
|
||||
*
|
||||
* @param areaName 库区
|
||||
* @param status 状态
|
||||
*/
|
||||
List<Stock> findByKongStock(String areaName);
|
||||
List<Stock> findByFreeOrUsedStock(String areaName,String status);
|
||||
|
||||
/**
|
||||
* 根据点位编号查询容器
|
||||
|
|
|
|||
|
|
@ -279,8 +279,8 @@ public class StockServiceImpl implements StockService {
|
|||
}
|
||||
|
||||
@Override
|
||||
public List<Stock> findByKongStock(String areaName) {
|
||||
return stockRepository.findByKongStock(areaName);
|
||||
public List<Stock> findByFreeOrUsedStock(String areaName,String status) {
|
||||
return stockRepository.findByFreeOrUsedStock(areaName,status);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -254,52 +254,82 @@ public class MesServiceImpl implements MesService {
|
|||
}
|
||||
|
||||
private synchronized void moveCpOffUp(String pointCode) {
|
||||
|
||||
// 从成品入库区查询空车
|
||||
List<Stock> emptyStockList = stockService.findByKongStock(AreaNameDic.CPRKQ);
|
||||
// 从成品入库缓存区查询空车;没有在从成品入库区查询空车;
|
||||
List<Stock> emptyStockList = stockService.findByFreeOrUsedStock(AreaNameDic.CPRKHCQ, BaseStatus.FREE);
|
||||
if (emptyStockList.isEmpty()) {
|
||||
throw new BadRequestException("成品入库区没有空车,请稍后再试!");
|
||||
emptyStockList = stockService.findByFreeOrUsedStock(AreaNameDic.CPRKQ, BaseStatus.FREE);
|
||||
if (emptyStockList.isEmpty()) {
|
||||
throw new BadRequestException("成品入库区、成品入库缓存区都没有空车,请稍后再试!");
|
||||
}
|
||||
}
|
||||
|
||||
//容器
|
||||
Stock emptyStock = emptyStockList.get(0);
|
||||
//起点
|
||||
Point srcPoint = emptyStock.getPoint();
|
||||
|
||||
Point endPoint = pointService.validatePoint(pointCode);//终点
|
||||
|
||||
//终点
|
||||
Point endPoint = pointService.validatePoint(pointCode);
|
||||
//验证终点是否有任务
|
||||
if (!agvTaskService.findByEndSlotCode(endPoint.getCode(), BizStatus.Cp_Off_Up, "RACK_MOVE")) {
|
||||
// 直接在条件判断为false时抛出异常,表示该点位有任务
|
||||
throw new BadRequestException(endPoint.getCode() + "点位有任务,请稍后再试!");
|
||||
}
|
||||
|
||||
//生成任务
|
||||
//创建Agv任务
|
||||
AgvTask agvTask = agvTaskService.createAgvTask(BizStatus.Cp_Off_Up, emptyStock, srcPoint, endPoint, "RACK_MOVE");
|
||||
|
||||
// 更新点位状态
|
||||
pointService.usedPoint(endPoint);
|
||||
|
||||
//下发任务
|
||||
kmReService.sendAgvTask(agvTask, kmReService.sendAgvTaskHjJson(agvTask));
|
||||
|
||||
}
|
||||
|
||||
private synchronized void moveCpOffLine(TransTask transTask) {
|
||||
Point srcPoint = pointService.validatePoint(transTask.getPointCode());//起点
|
||||
//判断下线缓存区是否有满货架;
|
||||
List<Stock> fullStockList = stockService.findByFreeOrUsedStock(AreaNameDic.CPXXHC, BaseStatus.USED);
|
||||
if (!fullStockList.isEmpty()) {
|
||||
List<Point> endPointList = pointService.queryPoints(null, BaseStatus.FREE, BaseStatus.BOX, AreaNameDic.CPRKQ);
|
||||
if (!endPointList.isEmpty()) {
|
||||
//容器
|
||||
Stock fullStock = fullStockList.get(0);
|
||||
//起点
|
||||
Point srcPoint = fullStock.getPoint();
|
||||
//终点
|
||||
Point endPoint = endPointList.get(0);
|
||||
//验证终点是否有任务
|
||||
if (agvTaskService.findByEndSlotCode(endPoint.getCode(), BizStatus.Cp_Off_Line, "RACK_MOVE")) {
|
||||
//创建Agv任务
|
||||
AgvTask agvTask = agvTaskService.createAgvTask(BizStatus.Cp_Off_Line, fullStock, srcPoint, endPoint, "RACK_MOVE");
|
||||
// 更新点位状态
|
||||
pointService.usedPoint(endPoint);
|
||||
//占用容器
|
||||
stockService.usedStock(fullStock, srcPoint, BaseStatus.USED);
|
||||
//下发任务
|
||||
kmReService.sendAgvTask(agvTask, kmReService.sendAgvTaskHjJson(agvTask));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//下线缓存区没有满货架,直接下发当前任务
|
||||
Point srcPoint = pointService.validatePoint(transTask.getPointCode());
|
||||
//容器
|
||||
Stock stock = stockService.findByPointCode(srcPoint.getCode());
|
||||
if (stock == null) {
|
||||
throw new BadRequestException(srcPoint.getCode() + "点位没有货架!");
|
||||
}
|
||||
List<Point> endPointList = pointService.queryPoints(null, BaseStatus.FREE, BaseStatus.BOX, AreaNameDic.CPRKQ);
|
||||
if (endPointList.isEmpty()) {
|
||||
throw new BadRequestException("成品入库区没有空闲点位!");
|
||||
endPointList = pointService.queryPoints(null, BaseStatus.FREE, BaseStatus.BOX, AreaNameDic.CPXXHC);
|
||||
if (endPointList.isEmpty()) {
|
||||
throw new BadRequestException("成品入库区和成品下线缓存区都没有空闲点位!");
|
||||
}
|
||||
}
|
||||
//终点
|
||||
Point endPoint = endPointList.get(0);
|
||||
|
||||
//验证终点是否有任务
|
||||
if (!agvTaskService.findByEndSlotCode(endPoint.getCode(), BizStatus.Cp_Off_Line, "RACK_MOVE")) {
|
||||
// 直接在条件判断为false时抛出异常,表示该点位有任务
|
||||
throw new BadRequestException(endPoint.getCode() + "点位有任务,请稍后再试!");
|
||||
}
|
||||
|
||||
//创建并下发任务
|
||||
//创建Agv任务
|
||||
AgvTask agvTask = agvTaskService.createAgvTask(BizStatus.Cp_Off_Line, stock, srcPoint, endPoint, "RACK_MOVE");
|
||||
// 更新点位状态
|
||||
pointService.usedPoint(endPoint);
|
||||
|
|
|
|||
|
|
@ -241,7 +241,7 @@ public class TaskServiceImpl implements TaskService {
|
|||
|
||||
String dstAreaCode = "小件".equals(goodType) ? AreaNameDic.XJFBCQ : AreaNameDic.DJFBCQ;
|
||||
|
||||
List<Stock> emptyStock = stockService.findByKongStock(srcAreaCode);
|
||||
List<Stock> emptyStock = stockService.findByFreeOrUsedStock(srcAreaCode, BaseStatus.FREE);
|
||||
if (emptyStock.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -57,6 +57,11 @@ public interface AreaNameDic {
|
|||
*/
|
||||
String CPXXQ = "成品下线区";
|
||||
|
||||
/**
|
||||
* 成品下线缓存区
|
||||
*/
|
||||
String CPXXHC = "成品下线缓存";
|
||||
|
||||
/**
|
||||
* 返修上线区
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -18,15 +18,6 @@ public class BaseStatus {
|
|||
* 占用
|
||||
*/
|
||||
public static String USED = "USED";
|
||||
/**
|
||||
* 可用
|
||||
*/
|
||||
public static Boolean T =true;
|
||||
/**
|
||||
* 不可用
|
||||
*/
|
||||
public static Boolean F =false;
|
||||
|
||||
/**
|
||||
* 点位类型-线边点位
|
||||
*/
|
||||
|
|
@ -37,13 +28,9 @@ public class BaseStatus {
|
|||
*/
|
||||
public static String STORAGE = "STORAGE";
|
||||
|
||||
/**
|
||||
* 输送线
|
||||
*/
|
||||
public static String EMPTY = "EMPTY";
|
||||
|
||||
/** 工单类型 成品*/
|
||||
public static String GD_TYPE_CT = "成品";
|
||||
|
||||
/** 工单类型 单品*/
|
||||
public static String GD_TYPE_DP = "单品";
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue