Files
FT577-WMS/ruoyi-admin/src/main/java/com/ruoyi/scheduleTask/RequestWcsHandler.java
2026-09-18 20:55:22 +08:00

507 lines
21 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 sendWcsStockoutTask(){
List<MydoJob> mydoJobs = mydoJobService.selectOutMydoJobList(
new MydoJob().builder()
.inOrOut(TaskType.TASKTYPE_STOCKOUT)
.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.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 sendWcsPickingOutTask(){
List<MydoJob> mydoJobs = mydoJobService.selectOutMydoJobList(
new MydoJob().builder()
.inOrOut(TaskType.TASKTYPE_STOCKOUT_PICKING)
.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.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 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.selectMydoJobList(
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());
paramMap.put("priority", mydoJob.getPriority());
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.selectMydoJobList(
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.selectMydoJobList(
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);
}
}
}
}