no message

main
奥德彪本彪\92525 2024-11-23 22:36:31 +08:00
parent 8d5654bd23
commit e8c8c59e35
7 changed files with 61 additions and 37 deletions

View File

@ -20,6 +20,7 @@ import com.youchain.businessdata.domain.Inventory;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import java.util.List; import java.util.List;
import java.util.Set; 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 " + @Query(" from Stock s where s.point.area.name = :areaName " +
"and s.point.id > 0 " + "and s.point.id > 0 " +
"and s.point.status = 'USED'" + "and s.point.status = 'USED'" +
"and s.status = 'FREE' " + "and s.status = :status " +
"and s.enabled = true") "and s.enabled = true")
List<Stock> findByKongStock(String areaName); List<Stock> findByFreeOrUsedStock(String areaName, String status);
} }

View File

@ -137,8 +137,9 @@ public interface StockService {
* *
* *
* @param areaName * @param areaName
* @param status
*/ */
List<Stock> findByKongStock(String areaName); List<Stock> findByFreeOrUsedStock(String areaName,String status);
/** /**
* *

View File

@ -279,8 +279,8 @@ public class StockServiceImpl implements StockService {
} }
@Override @Override
public List<Stock> findByKongStock(String areaName) { public List<Stock> findByFreeOrUsedStock(String areaName,String status) {
return stockRepository.findByKongStock(areaName); return stockRepository.findByFreeOrUsedStock(areaName,status);
} }
@Override @Override

View File

@ -254,52 +254,82 @@ public class MesServiceImpl implements MesService {
} }
private synchronized void moveCpOffUp(String pointCode) { private synchronized void moveCpOffUp(String pointCode) {
// 从成品入库缓存区查询空车;没有在从成品入库区查询空车;
// 从成品入库区查询空车 List<Stock> emptyStockList = stockService.findByFreeOrUsedStock(AreaNameDic.CPRKHCQ, BaseStatus.FREE);
List<Stock> emptyStockList = stockService.findByKongStock(AreaNameDic.CPRKQ);
if (emptyStockList.isEmpty()) { if (emptyStockList.isEmpty()) {
throw new BadRequestException("成品入库区没有空车,请稍后再试!"); emptyStockList = stockService.findByFreeOrUsedStock(AreaNameDic.CPRKQ, BaseStatus.FREE);
if (emptyStockList.isEmpty()) {
throw new BadRequestException("成品入库区、成品入库缓存区都没有空车,请稍后再试!");
}
} }
//容器
Stock emptyStock = emptyStockList.get(0); Stock emptyStock = emptyStockList.get(0);
//起点
Point srcPoint = emptyStock.getPoint(); 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")) { if (!agvTaskService.findByEndSlotCode(endPoint.getCode(), BizStatus.Cp_Off_Up, "RACK_MOVE")) {
// 直接在条件判断为false时抛出异常表示该点位有任务 // 直接在条件判断为false时抛出异常表示该点位有任务
throw new BadRequestException(endPoint.getCode() + "点位有任务,请稍后再试!"); throw new BadRequestException(endPoint.getCode() + "点位有任务,请稍后再试!");
} }
//创建Agv任务
//生成任务
AgvTask agvTask = agvTaskService.createAgvTask(BizStatus.Cp_Off_Up, emptyStock, srcPoint, endPoint, "RACK_MOVE"); AgvTask agvTask = agvTaskService.createAgvTask(BizStatus.Cp_Off_Up, emptyStock, srcPoint, endPoint, "RACK_MOVE");
// 更新点位状态 // 更新点位状态
pointService.usedPoint(endPoint); pointService.usedPoint(endPoint);
//下发任务 //下发任务
kmReService.sendAgvTask(agvTask, kmReService.sendAgvTaskHjJson(agvTask)); kmReService.sendAgvTask(agvTask, kmReService.sendAgvTaskHjJson(agvTask));
} }
private synchronized void moveCpOffLine(TransTask transTask) { 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()); Stock stock = stockService.findByPointCode(srcPoint.getCode());
if (stock == null) { if (stock == null) {
throw new BadRequestException(srcPoint.getCode() + "点位没有货架!"); throw new BadRequestException(srcPoint.getCode() + "点位没有货架!");
} }
List<Point> endPointList = pointService.queryPoints(null, BaseStatus.FREE, BaseStatus.BOX, AreaNameDic.CPRKQ); List<Point> endPointList = pointService.queryPoints(null, BaseStatus.FREE, BaseStatus.BOX, AreaNameDic.CPRKQ);
if (endPointList.isEmpty()) { 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); Point endPoint = endPointList.get(0);
//验证终点是否有任务
if (!agvTaskService.findByEndSlotCode(endPoint.getCode(), BizStatus.Cp_Off_Line, "RACK_MOVE")) { if (!agvTaskService.findByEndSlotCode(endPoint.getCode(), BizStatus.Cp_Off_Line, "RACK_MOVE")) {
// 直接在条件判断为false时抛出异常表示该点位有任务 // 直接在条件判断为false时抛出异常表示该点位有任务
throw new BadRequestException(endPoint.getCode() + "点位有任务,请稍后再试!"); throw new BadRequestException(endPoint.getCode() + "点位有任务,请稍后再试!");
} }
//创建并下发任务 //创建Agv任务
AgvTask agvTask = agvTaskService.createAgvTask(BizStatus.Cp_Off_Line, stock, srcPoint, endPoint, "RACK_MOVE"); AgvTask agvTask = agvTaskService.createAgvTask(BizStatus.Cp_Off_Line, stock, srcPoint, endPoint, "RACK_MOVE");
// 更新点位状态 // 更新点位状态
pointService.usedPoint(endPoint); pointService.usedPoint(endPoint);

View File

@ -241,7 +241,7 @@ public class TaskServiceImpl implements TaskService {
String dstAreaCode = "小件".equals(goodType) ? AreaNameDic.XJFBCQ : AreaNameDic.DJFBCQ; 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()) { if (emptyStock.isEmpty()) {
return; return;
} }

View File

@ -57,6 +57,11 @@ public interface AreaNameDic {
*/ */
String CPXXQ = "成品下线区"; String CPXXQ = "成品下线区";
/**
* 线
*/
String CPXXHC = "成品下线缓存";
/** /**
* 线 * 线
*/ */

View File

@ -18,15 +18,6 @@ public class BaseStatus {
* *
*/ */
public static String USED = "USED"; 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 STORAGE = "STORAGE";
/**
* 线
*/
public static String EMPTY = "EMPTY";
/** 工单类型 成品*/ /** 工单类型 成品*/
public static String GD_TYPE_CT = "成品"; public static String GD_TYPE_CT = "成品";
/** 工单类型 单品*/ /** 工单类型 单品*/
public static String GD_TYPE_DP = "单品"; public static String GD_TYPE_DP = "单品";
} }