This commit is contained in:
2021-12-14 15:50:56 +08:00
51 changed files with 1412 additions and 291 deletions

View File

@@ -1,6 +1,7 @@
package com.mt.wms.empty.task;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.mt.wms.core.base.BaseService;
import com.mt.wms.core.dal.entity.*;
import com.mt.wms.core.dal.service.*;
import com.mt.wms.core.utils.IDGenerator;
@@ -21,7 +22,7 @@ import java.time.LocalDateTime;
*/
@Service
@Transactional
public class AsynRunTaskService {
public class AsynRunTaskService extends BaseService {
@Resource
private CurrTaskServiceBiz currTaskServiceBiz;
@@ -37,25 +38,31 @@ public class AsynRunTaskService {
public void asynRunTask(CurrTask currTask){
//新建一条执行任务的关系表存放任务执行信息
RunTask runTask=new RunTask();
runTask.setCreateTime(LocalDateTime.now());
runTask.setTaskId(currTask.getId());
// TODO: 2021/12/13 currTask code、车辆id、开始执行时间
runTask.setStartPosition(currTask.getStartPosition());
runTask.setEndPosition(currTask.getTargetPosition());
setCommonField(runTask);
runTaskServiceBiz.save(runTask);
//调用车辆填入起终点
//得到车辆执行结果
//车辆执行不成功,记录日志,推送消息到前端提醒?
//执行成功,托盘进炉(存疑,进入窑炉不算任务完成的话,窑炉怎么给出是哪条任务加工完成了)
if (true){
//更新关系表状态为完成
runTask.setUpdateTime(LocalDateTime.now());
runTask.setStatus(2);
// TODO: 2021/12/13 结束时间
runTaskServiceBiz.updateById(runTask);
//更新currTask表状态为完成
currTask.setStatus(2);
//更新currTask表状态
// TODO: 2021/12/13 is_in 改为 1、runTaskId、起终点
currTask.setUpdateTime(LocalDateTime.now());
currTaskServiceBiz.updateById(currTask);
}else {
// TODO: 2021/12/13 车辆执行不成功,记录日志,推送消息到前端提醒?
}
}
//窑炉已满,调用车辆起点为提升台,终点为缓存区
@@ -66,7 +73,8 @@ public class AsynRunTaskService {
.eq(Location.VALID, 1)).get(0);
//新建一条执行任务的关系表存放任务执行信息,终点为缓存区空闲库位
RunTask runTask=new RunTask();
runTask.setCreateTime(LocalDateTime.now());
setCommonField(runTask);
// TODO: 2021/12/13 currTask code、车辆id、开始执行时间
runTask.setTaskId(currTask.getId());
runTask.setStartPosition(currTask.getStartPosition());
runTask.setEndPosition(location.getCode());
@@ -77,7 +85,6 @@ public class AsynRunTaskService {
locationServiceBiz.updateById(location);
//添加一条库位详情到in_stock_info表
InStockInfo inStockInfo=new InStockInfo();
inStockInfo.setCreateTime(LocalDateTime.now());
inStockInfo.setStatus(1);
inStockInfo.setInterCode(IDGenerator.gen("HCT", "yyyyMMddHHmm", 2, "WAREHOUSE_CODE"));
inStockInfo.setTaskId(currTask.getId());
@@ -86,7 +93,7 @@ public class AsynRunTaskService {
inStockInfo.setKilnName(currTask.getKilnName());
inStockInfo.setLocationId(location.getId());
inStockInfo.setLocationName(location.getLocationNameAlias());
inStockInfo.setPalletCode(currTask.getPalletCode());
setCommonField(inStockInfo);
inStockInfoServiceBiz.save(inStockInfo);
//修改currTask的是否缓存,库位id,库位名称
currTask.setIsCache(1);
@@ -95,9 +102,21 @@ public class AsynRunTaskService {
currTaskServiceBiz.updateById(currTask);
//调用车辆
//车辆执行不成功,记录日志,推送消息到前端提醒?
if (true){
//更新关系表状态为完成
runTask.setUpdateTime(LocalDateTime.now());
runTask.setStatus(2);
// TODO: 2021/12/13 结束时间
runTaskServiceBiz.updateById(runTask);
//更新currTask表
// TODO: 2021/12/13 is_cache 、runTaskId
currTask.setUpdateTime(LocalDateTime.now());
currTaskServiceBiz.updateById(currTask);
}else {
// TODO: 2021/12/13 车辆执行不成功,记录日志,推送消息到前端提醒?
}
//车辆执行执行成功后加入窑炉的缓存区任务队列
// TODO: 2021/12/13 车辆执行执行成功后加入窑炉的缓存区任务队列
}
}

View File

@@ -29,9 +29,14 @@ public class RunTaskUtils {
@Resource
private VehicleInfoServiceBiz vehicleInfoServiceBiz;
public R runTask(Integer wcsTaskId) throws InterruptedException {
CurrTask currTask = currTaskServiceBiz.getById(wcsTaskId);
/**
* 进炉加工
* @param currTaskId
* @return
* @throws InterruptedException
*/
public R runTaskForInKiln(Integer currTaskId) throws InterruptedException {
CurrTask currTask = currTaskServiceBiz.getById(currTaskId);
//传入任务id,起始点,若终点是窑炉,获取窑炉状态
int kilnStatus = 1;
@@ -58,6 +63,7 @@ public class RunTaskUtils {
return R.failed("暂无可用车辆!请稍后重试!");
}
//异步调用车辆
// TODO: 2021/12/13 传入车辆id
asynRunTaskService.asynRunTask(currTask);
return R.ok("操作成功");
}
@@ -69,10 +75,6 @@ public class RunTaskUtils {
.eq(Location.VALID, 1));
//缓存区未满
if (count >0) {
//更改任务状态为执行中
currTask.setStatus(1);
currTask.setUpdateTime(LocalDateTime.now());
currTaskServiceBiz.updateById(currTask);
//查询是否有空闲车辆,若有。占用车辆,若无,返回暂无可用车辆
List<VehicleInfo> vehicleInfoList = vehicleInfoServiceBiz.list(new QueryWrapper<VehicleInfo>()
.eq(VehicleInfo.STATUS, 0)
@@ -85,7 +87,12 @@ public class RunTaskUtils {
}else {
return R.failed("暂无可用车辆!请稍后重试!");
}
// TODO: 2021/12/13 更改 is_cache 、库位id、库位名称
currTask.setUpdateTime(LocalDateTime.now());
currTaskServiceBiz.updateById(currTask);
//异步调用车辆
// TODO: 2021/12/13 传入车辆id
asynRunTaskService.asynRunTaskToWarehouse(currTask);
return R.ok("操作成功!当前目标窑炉已满,托盘加入缓存区待加工队列。");
}
@@ -93,4 +100,14 @@ public class RunTaskUtils {
}
return null;
}
/**
* 加工完成、出炉。传入窑炉id查询正在该窑炉加工的currTask,查询是否有空闲车辆,有,
* (查询是否为自动任务,是,查询下一步的窑炉是否空闲,是,调车去下一窑炉加工,否,暂存缓存区)
* 呼叫车辆暂存缓存区,车辆调度任务结束后,(结束后再查询缓存区队列避免车辆路线冲突)查询该窑炉的缓存区队列,开始下一托盘货物调度进窑炉
* @return
*/
public R runTaskForOutKiln(){
return null;
}
}

View File

@@ -0,0 +1,19 @@
package com.mt.wms.empty.task;
import org.springframework.scheduling.annotation.Scheduled;
/**
* @Author: liguanghao
* @Date: 2021/12/13 19:54
* @Version 1.0
*/
public class ScheduledTask {
/**
* 查询缓存区队列中待加工的
*/
@Scheduled
public void taskForStockToKiln(){
}
}