405 lines
16 KiB
Java
405 lines
16 KiB
Java
package com.ruoyi.scheduleTask;
|
||
|
||
import com.ruoyi.api.domain.wcsStockin.WcsStockinReceive;
|
||
import com.ruoyi.api.domain.wcsStockout.WcsStockoutParam;
|
||
import com.ruoyi.api.service.IApiWcsService;
|
||
import com.ruoyi.bas.cargospace.service.IBasCargoSpaceService;
|
||
import com.ruoyi.bas.stock.domain.BasStock;
|
||
import com.ruoyi.bas.stock.service.IBasStockInfoService;
|
||
import com.ruoyi.bas.stock.service.IBasStockService;
|
||
import com.ruoyi.common.*;
|
||
import com.ruoyi.common.core.domain.AjaxResult;
|
||
import com.ruoyi.in.job.domain.MydoJob;
|
||
import com.ruoyi.in.job.service.IMydoJobService;
|
||
import lombok.extern.slf4j.Slf4j;
|
||
import org.springframework.beans.factory.annotation.Autowired;
|
||
import org.springframework.scheduling.annotation.Scheduled;
|
||
import org.springframework.stereotype.Component;
|
||
import org.w3c.dom.stylesheets.LinkStyle;
|
||
|
||
import java.util.HashMap;
|
||
import java.util.List;
|
||
import java.util.UUID;
|
||
|
||
@Slf4j
|
||
@Component
|
||
public class RequestWcsHandler {
|
||
|
||
@Autowired
|
||
IMydoJobService mydoJobService;
|
||
@Autowired
|
||
IApiWcsService apiWcsService;
|
||
@Autowired
|
||
IBasStockService basStockService;
|
||
@Autowired
|
||
IBasStockInfoService basStockInfoService;
|
||
@Autowired
|
||
IBasCargoSpaceService basCargoSpaceService;
|
||
|
||
private static final int TIMEINTERVAL_DEFAULT = 1000;
|
||
private static final int TIMEINTERVAL_2000 = 2000;
|
||
private static final int TIMEINTERVAL_5000 = 5000;
|
||
|
||
/**
|
||
* 推送wcs空托盘出库作业
|
||
*/
|
||
@Scheduled(fixedRate = TIMEINTERVAL_2000)
|
||
public void sendWcsEmptyContainerTask(){
|
||
List<MydoJob> mydoJobs = mydoJobService.selectOutMydoJobList(
|
||
new MydoJob().builder()
|
||
.inOrOut(TaskType.TASKTYPE_STOCKOUT_EMPTY_TRAY)
|
||
.status(TaskStatusEnum.READY.getCode())
|
||
.build()
|
||
);
|
||
|
||
if (mydoJobs.isEmpty()) return;
|
||
|
||
for (MydoJob mydoJob : mydoJobs) {
|
||
|
||
//初始化参数
|
||
HashMap<String, Object> paramMap = new HashMap<>();
|
||
paramMap.put("reqCode", UUID.randomUUID().toString());//请求码
|
||
paramMap.put("trayCode", mydoJob.getTrayCode());//容器编号
|
||
paramMap.put("taskNo", mydoJob.getTaskNo());//容器编号
|
||
paramMap.put("jobId", mydoJob.getJobId());
|
||
paramMap.put("inOrOut", mydoJob.getInOrOut());
|
||
paramMap.put("cargoSpaceId", mydoJob.getCargoSpaceId());
|
||
|
||
AjaxResult ajaxResult = apiWcsService.sendEmptyTrayOutMydoJob(paramMap);
|
||
|
||
if (ajaxResult.isSuccess()){
|
||
log.info("【推送出库】<空容器>出库,wms作业号:{},货位:{},托盘号:{}", mydoJob.getJobId(), mydoJob.getCargoSpaceId(), mydoJob.getTrayCode());
|
||
mydoJob.setStatus(TaskStatusEnum.RUNNING.getCode());
|
||
mydoJobService.updateMydoJob(mydoJob);
|
||
|
||
//更新库存状态【占用中】
|
||
List<BasStock> stocks = basStockService.selectBasStockListByTrayCode(mydoJob.getTrayCode());
|
||
if (!stocks.isEmpty()){
|
||
for (BasStock stock : stocks) {
|
||
stock.setStockStatus(BasStockCode.STOCK_STATUS_OCCUPIED);
|
||
basStockService.updateBasStock(stock);
|
||
}
|
||
}
|
||
|
||
//更新货位状态【出库预占用】
|
||
basCargoSpaceService.updateBasCargoSpaceStatus(mydoJob.getCargoSpaceId(), mydoJob.getTrayCode(), CargoSpaceCode.CARGOSPACE_STATUS_PRE_STOCKOUT);
|
||
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
|
||
/**
|
||
* 推送wcs带货容器出库作业
|
||
*/
|
||
@Scheduled(fixedRate = TIMEINTERVAL_2000)
|
||
public void sendWcsContainerTask(){
|
||
List<MydoJob> mydoJobs = mydoJobService.selectOutMydoJobList(
|
||
new MydoJob().builder()
|
||
.inOrOut(TaskType.TASKTYPE_STOCKOUT_CONTAINER)
|
||
.status(TaskStatusEnum.READY.getCode())
|
||
.build()
|
||
);
|
||
|
||
if (mydoJobs.isEmpty()) return;
|
||
|
||
for (MydoJob mydoJob : mydoJobs) {
|
||
|
||
//初始化参数
|
||
HashMap<String, Object> paramMap = new HashMap<>();
|
||
paramMap.put("reqCode", UUID.randomUUID().toString());//请求码
|
||
paramMap.put("trayCode", mydoJob.getTrayCode());//容器编号
|
||
paramMap.put("taskNo", mydoJob.getTaskNo());//容器编号
|
||
paramMap.put("jobId", mydoJob.getJobId());
|
||
paramMap.put("inOrOut", mydoJob.getInOrOut());
|
||
paramMap.put("cargoSpaceId", mydoJob.getCargoSpaceId());
|
||
|
||
AjaxResult ajaxResult = apiWcsService.sendEmptyTrayOutMydoJob(paramMap);
|
||
|
||
if (ajaxResult.isSuccess()){
|
||
log.info("【推送出库】<带货容器>出库,wms作业号:{},货位:{},托盘号:{}", mydoJob.getJobId(), mydoJob.getCargoSpaceId(), mydoJob.getTrayCode());
|
||
mydoJob.setStatus(TaskStatusEnum.RUNNING.getCode());
|
||
mydoJobService.updateMydoJob(mydoJob);
|
||
|
||
//更新库存状态【占用中】
|
||
List<BasStock> stocks = basStockService.selectBasStockListByTrayCode(mydoJob.getTrayCode());
|
||
if (!stocks.isEmpty()){
|
||
for (BasStock stock : stocks) {
|
||
stock.setStockStatus(BasStockCode.STOCK_STATUS_OCCUPIED);
|
||
basStockService.updateBasStock(stock);
|
||
}
|
||
}
|
||
|
||
//更新货位状态【出库预占用】
|
||
basCargoSpaceService.updateBasCargoSpaceStatus(mydoJob.getCargoSpaceId(), mydoJob.getTrayCode(), CargoSpaceCode.CARGOSPACE_STATUS_PRE_STOCKOUT);
|
||
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
|
||
/**
|
||
* 手动操作 - 推送wcs指定货位出库
|
||
*/
|
||
@Scheduled(fixedRate = TIMEINTERVAL_2000)
|
||
public void stockoutMydoJobForManual(){
|
||
List<MydoJob> mydoJobs = mydoJobService.selectOutMydoJobList(
|
||
new MydoJob().builder()
|
||
.status(TaskStatusEnum.READY.getCode())
|
||
.inOrOut(TaskType.TASKTYPE_STOCKOUT_MANUAL)
|
||
.build()
|
||
);
|
||
|
||
if (mydoJobs.isEmpty()) return;
|
||
|
||
for (MydoJob mydoJob : mydoJobs){
|
||
//初始化参数
|
||
HashMap<String, Object> paramMap = new HashMap<>();
|
||
paramMap.put("reqCode", UUID.randomUUID().toString());//请求码
|
||
paramMap.put("trayCode", mydoJob.getTrayCode());//容器编号
|
||
paramMap.put("taskNo", mydoJob.getTaskNo());//容器编号
|
||
paramMap.put("jobId", mydoJob.getJobId());
|
||
paramMap.put("inOrOut", mydoJob.getInOrOut());
|
||
paramMap.put("cargoSpaceId", mydoJob.getCargoSpaceId());
|
||
|
||
AjaxResult ajaxResult = apiWcsService.sendOutMydoJob(paramMap);
|
||
|
||
if (ajaxResult.isSuccess()){
|
||
log.info("【推送出库】手动操作-指定货位出库,wms作业号:{},货位:{},托盘号:{}", mydoJob.getJobId(), mydoJob.getCargoSpaceId(), mydoJob.getTrayCode());
|
||
mydoJob.setStatus(TaskStatusEnum.RUNNING.getCode());
|
||
mydoJobService.updateMydoJob(mydoJob);
|
||
|
||
//更新库存状态【占用中】
|
||
List<BasStock> stocks = basStockService.selectBasStockListByTrayCode(mydoJob.getTrayCode());
|
||
if (!stocks.isEmpty()){
|
||
for (BasStock stock : stocks) {
|
||
stock.setStockStatus(BasStockCode.STOCK_STATUS_OCCUPIED);
|
||
basStockService.updateBasStock(stock);
|
||
}
|
||
}
|
||
|
||
//更新货位状态【出库预占用】
|
||
basCargoSpaceService.updateBasCargoSpaceStatus(mydoJob.getCargoSpaceId(), mydoJob.getTrayCode(), CargoSpaceCode.CARGOSPACE_STATUS_PRE_STOCKOUT);
|
||
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
|
||
/**
|
||
* 出库确认完成 - 推送wcs拣选回流任务
|
||
*/
|
||
@Scheduled(fixedRate = TIMEINTERVAL_2000)
|
||
public void sendWcsBackTask(){
|
||
List<MydoJob> mydoJobs = mydoJobService.selectOutMydoJobList(
|
||
new MydoJob().builder()
|
||
.status(TaskStatusEnum.READY.getCode())
|
||
.inOrOut(TaskType.TASKTYPE_PICK_BACK)
|
||
.build()
|
||
);
|
||
|
||
if (mydoJobs.isEmpty()) return;
|
||
|
||
for (MydoJob mydoJob : mydoJobs){
|
||
|
||
//初始化参数
|
||
HashMap<String, Object> paramMap = new HashMap<>();
|
||
paramMap.put("reqCode", UUID.randomUUID().toString());//请求码
|
||
paramMap.put("trayCode", mydoJob.getTrayCode());//容器编号
|
||
paramMap.put("taskNo", mydoJob.getTaskNo());//容器编号
|
||
paramMap.put("jobId", mydoJob.getJobId());
|
||
paramMap.put("inOrOut", mydoJob.getInOrOut());
|
||
paramMap.put("cargoSpaceId", mydoJob.getCargoSpaceId());
|
||
|
||
AjaxResult ajaxResult = apiWcsService.sendBackMydoJob(paramMap);
|
||
|
||
if (ajaxResult.isSuccess()){
|
||
log.info("【推送回流入库】<托盘回流>入库,更新货位和库存预占用状态,wms作业号:{},货位:{},托盘号:{}", mydoJob.getJobId(), mydoJob.getCargoSpaceId(), mydoJob.getTrayCode());
|
||
mydoJob.setStatus(TaskStatusEnum.RUNNING.getCode());
|
||
mydoJobService.updateMydoJob(mydoJob);
|
||
|
||
//更新库存状态【占用中】
|
||
List<BasStock> stocks = basStockService.selectBasStockListByTrayCode(mydoJob.getTrayCode());
|
||
if (!stocks.isEmpty()){
|
||
for (BasStock stock : stocks) {
|
||
stock.setStockStatus(BasStockCode.STOCK_STATUS_OCCUPIED);
|
||
stock.setCargoSpaceId(mydoJob.getCargoSpaceId());
|
||
basStockService.updateBasStock(stock);
|
||
}
|
||
}
|
||
|
||
//更新货位状态【入库预占用】
|
||
basCargoSpaceService.updateBasCargoSpaceStatus(mydoJob.getCargoSpaceId(), "", CargoSpaceCode.CARGOSPACE_STATUS_PRE_STOCKIN);
|
||
|
||
}
|
||
}
|
||
|
||
|
||
|
||
}
|
||
|
||
|
||
/**
|
||
* 推送wcs移库任务
|
||
*/
|
||
@Scheduled(fixedRate = TIMEINTERVAL_2000)
|
||
public void sendWcsMoveTask(){
|
||
List<MydoJob> mydoJobs = mydoJobService.selectOutMydoJobList(
|
||
new MydoJob().builder()
|
||
.status(TaskStatusEnum.READY.getCode())
|
||
.inOrOut(TaskType.TASKTYPE_PICK_BACK)
|
||
.build()
|
||
);
|
||
|
||
if (mydoJobs.isEmpty()) return;
|
||
|
||
for (MydoJob mydoJob : mydoJobs){
|
||
|
||
//初始化参数
|
||
HashMap<String, Object> paramMap = new HashMap<>();
|
||
paramMap.put("reqCode", UUID.randomUUID().toString());//请求码
|
||
paramMap.put("trayCode", mydoJob.getTrayCode());//容器编号
|
||
paramMap.put("taskNo", mydoJob.getTaskNo());//容器编号
|
||
paramMap.put("jobId", mydoJob.getJobId());
|
||
paramMap.put("inOrOut", mydoJob.getInOrOut());
|
||
paramMap.put("cargoSpaceId", mydoJob.getCargoSpaceId());
|
||
|
||
AjaxResult ajaxResult = apiWcsService.sendBackMydoJob(paramMap);
|
||
|
||
if (ajaxResult.isSuccess()){
|
||
log.info("【推送回流入库】<托盘回流>入库,更新货位和库存预占用状态,wms作业号:{},货位:{},托盘号:{}", mydoJob.getJobId(), mydoJob.getCargoSpaceId(), mydoJob.getTrayCode());
|
||
mydoJob.setStatus(TaskStatusEnum.RUNNING.getCode());
|
||
mydoJobService.updateMydoJob(mydoJob);
|
||
|
||
//更新库存状态【占用中】
|
||
List<BasStock> stocks = basStockService.selectBasStockListByTrayCode(mydoJob.getTrayCode());
|
||
if (!stocks.isEmpty()){
|
||
for (BasStock stock : stocks) {
|
||
stock.setStockStatus(BasStockCode.STOCK_STATUS_OCCUPIED);
|
||
stock.setCargoSpaceId(mydoJob.getCargoSpaceId());
|
||
basStockService.updateBasStock(stock);
|
||
}
|
||
}
|
||
|
||
//更新货位状态【入库预占用】
|
||
basCargoSpaceService.updateBasCargoSpaceStatus(mydoJob.getCargoSpaceId(), "", CargoSpaceCode.CARGOSPACE_STATUS_PRE_STOCKIN);
|
||
|
||
}
|
||
}
|
||
|
||
|
||
|
||
}
|
||
|
||
|
||
/**
|
||
* 推送wcs盘点出库任务
|
||
*/
|
||
@Scheduled(fixedRate = TIMEINTERVAL_2000)
|
||
public void sendWcsInventoryOutTask(){
|
||
List<MydoJob> mydoJobs = mydoJobService.selectOutMydoJobList(
|
||
new MydoJob().builder()
|
||
.status(TaskStatusEnum.READY.getCode())
|
||
.inOrOut(TaskType.TASKTYPE_STOCKOUT_INVENTORY)
|
||
.build()
|
||
);
|
||
|
||
if (mydoJobs.isEmpty()) return;
|
||
|
||
for (MydoJob mydoJob : mydoJobs){
|
||
|
||
//初始化参数
|
||
HashMap<String, Object> paramMap = new HashMap<>();
|
||
paramMap.put("reqCode", UUID.randomUUID().toString());//请求码
|
||
paramMap.put("trayCode", mydoJob.getTrayCode());//容器编号
|
||
paramMap.put("taskNo", mydoJob.getTaskNo());//容器编号
|
||
paramMap.put("jobId", mydoJob.getJobId());
|
||
paramMap.put("inOrOut", mydoJob.getInOrOut());
|
||
paramMap.put("cargoSpaceId", mydoJob.getCargoSpaceId());
|
||
|
||
AjaxResult ajaxResult = apiWcsService.sendInventoryOutMydoJob(paramMap);
|
||
|
||
if (ajaxResult.isSuccess()){
|
||
log.info("【推送盘点出库】<盘点>出库,更新货位和库存预占用状态,wms作业号:{},货位:{},托盘号:{}", mydoJob.getJobId(), mydoJob.getCargoSpaceId(), mydoJob.getTrayCode());
|
||
mydoJob.setStatus(TaskStatusEnum.RUNNING.getCode());
|
||
mydoJobService.updateMydoJob(mydoJob);
|
||
|
||
//更新库存状态【占用中】
|
||
List<BasStock> stocks = basStockService.selectBasStockListByTrayCode(mydoJob.getTrayCode());
|
||
if (!stocks.isEmpty()){
|
||
for (BasStock stock : stocks) {
|
||
stock.setStockStatus(BasStockCode.STOCK_STATUS_OCCUPIED);
|
||
stock.setCargoSpaceId(mydoJob.getCargoSpaceId());
|
||
basStockService.updateBasStock(stock);
|
||
}
|
||
}
|
||
|
||
//更新货位状态【入库预占用】
|
||
basCargoSpaceService.updateBasCargoSpaceStatus(mydoJob.getCargoSpaceId(), mydoJob.getTrayCode(), CargoSpaceCode.CARGOSPACE_STATUS_PRE_STOCKOUT);
|
||
|
||
}
|
||
}
|
||
|
||
|
||
|
||
}
|
||
|
||
|
||
/**
|
||
* 盘点确认完成 - 推送wcs盘点回流任务
|
||
*/
|
||
@Scheduled(fixedRate = TIMEINTERVAL_2000)
|
||
public void sendWcsInventoryBackTask(){
|
||
List<MydoJob> mydoJobs = mydoJobService.selectOutMydoJobList(
|
||
new MydoJob().builder()
|
||
.status(TaskStatusEnum.READY.getCode())
|
||
.inOrOut(TaskType.TASKTYPE_INVENTORY_BACK)
|
||
.build()
|
||
);
|
||
|
||
if (mydoJobs.isEmpty()) return;
|
||
|
||
for (MydoJob mydoJob : mydoJobs){
|
||
|
||
//初始化参数
|
||
HashMap<String, Object> paramMap = new HashMap<>();
|
||
paramMap.put("reqCode", UUID.randomUUID().toString());//请求码
|
||
paramMap.put("trayCode", mydoJob.getTrayCode());//容器编号
|
||
paramMap.put("taskNo", mydoJob.getTaskNo());//容器编号
|
||
paramMap.put("jobId", mydoJob.getJobId());
|
||
paramMap.put("inOrOut", mydoJob.getInOrOut());
|
||
paramMap.put("cargoSpaceId", mydoJob.getCargoSpaceId());
|
||
|
||
AjaxResult ajaxResult = apiWcsService.sendInventoryBackMydoJob(paramMap);
|
||
|
||
if (ajaxResult.isSuccess()){
|
||
log.info("【推送盘点回流】<盘点回流>入库,更新货位和库存预占用状态,wms作业号:{},货位:{},托盘号:{}", mydoJob.getJobId(), mydoJob.getCargoSpaceId(), mydoJob.getTrayCode());
|
||
mydoJob.setStatus(TaskStatusEnum.RUNNING.getCode());
|
||
mydoJobService.updateMydoJob(mydoJob);
|
||
|
||
//更新库存状态【占用中】
|
||
List<BasStock> stocks = basStockService.selectBasStockListByTrayCode(mydoJob.getTrayCode());
|
||
if (!stocks.isEmpty()){
|
||
for (BasStock stock : stocks) {
|
||
stock.setStockStatus(BasStockCode.STOCK_STATUS_OCCUPIED);
|
||
stock.setCargoSpaceId(mydoJob.getCargoSpaceId());
|
||
basStockService.updateBasStock(stock);
|
||
}
|
||
}
|
||
|
||
//更新货位状态【入库预占用】
|
||
basCargoSpaceService.updateBasCargoSpaceStatus(mydoJob.getCargoSpaceId(), "", CargoSpaceCode.CARGOSPACE_STATUS_PRE_STOCKIN);
|
||
|
||
}
|
||
}
|
||
|
||
|
||
|
||
}
|
||
|
||
|
||
}
|