现场运行调整

This commit is contained in:
Lenovo
2026-09-18 20:55:22 +08:00
parent 555a49f3a4
commit 7d1092e748
6 changed files with 158 additions and 45 deletions

View File

@@ -85,7 +85,7 @@
callStockOutForContainer(this.selectedCargoArea, this.selectedPalletType) callStockOutForContainer(this.selectedCargoArea, this.selectedPalletType)
.then(res => { .then(res => {
uni.hideLoading() uni.hideLoading()
this.$modal.msgSuccess('呼叫空托出库成功') this.$modal.msgSuccess('呼叫成功')
}) })
.catch(err => { .catch(err => {

View File

@@ -405,7 +405,8 @@ public class MydoJobServiceImpl implements IMydoJobService
.stockId(stockId) .stockId(stockId)
.stockDetailId(stockId + "-" + num) .stockDetailId(stockId + "-" + num)
.stockStatus(BasStockCode.STOCK_STATUS_AVAILABLE) .stockStatus(BasStockCode.STOCK_STATUS_AVAILABLE)
.trayCode(detail.getTrayCode()) .productStatus(BasStockCode.PRODUCT_STATUS_NORMAL)
.trayCode(inTrayMsg.getTrayCode())
.jobId(jobId) .jobId(jobId)
.jobDetailId(jobId + "-" + num++) .jobDetailId(jobId + "-" + num++)
.stockinId(inTrayMsg.getStockinId())//获取单据号需要从托盘绑定信息表获取 .stockinId(inTrayMsg.getStockinId())//获取单据号需要从托盘绑定信息表获取

View File

@@ -318,11 +318,11 @@ public class OutStockoutServiceImpl implements IOutStockoutService
//2.生成辊号库存对应托盘的出库作业 //2.生成辊号库存对应托盘的出库作业
MydoJob mydoJob = mydoJobService.selectMydoJobByTrayCode(stock.getTrayCode()); MydoJob mydoJob = mydoJobService.selectMydoJobByTrayCode(stock.getTrayCode());
if (ObjUtil.isNull(mydoJob)){ if (ObjUtil.isNull(mydoJob)){
String jobId = basJobIdService.getId(JobIdType.MYDOJOB_STOCKOUT); String jobId = basJobIdService.getId(JobIdType.MYDOJOB_STOCKOUT);
String taskNo = basTaskNoService.getTaskNo(TaskIdType.TASK_STOCKOUT); String taskNo = basTaskNoService.getTaskNo(TaskIdType.TASK_STOCKOUT);
//判断出库类型,用于确定完成后是否生成回流任务 //判断出库类型,用于确定完成后是否生成回流任务
//---1.遍历子单明细的辊号集合是否包含出库托盘库存的辊号集合 //---1.遍历子单明细的辊号集合是否包含出库托盘库存的辊号集合
//---2.如果全部匹配,则任务类型为整托出库,否则为拣选出库 //---2.如果全部匹配,则任务类型为整托出库,否则为拣选出库
@@ -348,39 +348,40 @@ public class OutStockoutServiceImpl implements IOutStockoutService
.priority(10) .priority(10)
.build(); .build();
//生成托盘主作业
mydoJobService.insertMydoJob(mydoJob);
//>>>>>>>>>>>>>>>>>>>>>> 推送出库 <<<<<<<<<<<<<<<<<<<<<<< log.info("【出库分配】生成出库作业,作业号:{},托盘号:{}", mydoJob.getJobId(), stock.getTrayCode());
//>>>>>>>>>>>>>>>>>>>>>> 推送出库 <<<<<<<<<<<<<<<<<<<<<<< //
//>>>>>>>>>>>>>>>>>>>>>> 推送出库 <<<<<<<<<<<<<<<<<<<<<<< // //>>>>>>>>>>>>>>>>>>>>>> 推送出库 <<<<<<<<<<<<<<<<<<<<<<<
AjaxResult ajaxResult; // //>>>>>>>>>>>>>>>>>>>>>> 推送出库 <<<<<<<<<<<<<<<<<<<<<<<
/*-----------------推送wcs任务----------------- */ // //>>>>>>>>>>>>>>>>>>>>>> 推送出库 <<<<<<<<<<<<<<<<<<<<<<<
HashMap<String, Object> paramMap = new HashMap<>(); // AjaxResult ajaxResult;
paramMap.put("reqCode", UUID.randomUUID().toString());//请求码 // /*-----------------推送wcs任务----------------- */
paramMap.put("jobId", mydoJob.getJobId());//作业号 // HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("taskNo", mydoJob.getTaskNo());//任务号 // paramMap.put("reqCode", UUID.randomUUID().toString());//请求码
paramMap.put("trayCode", mydoJob.getTrayCode());//容器编号 // paramMap.put("jobId", mydoJob.getJobId());//作业号
paramMap.put("cargoSpaceId", mydoJob.getCargoSpaceId());//货位 // paramMap.put("taskNo", mydoJob.getTaskNo());//任务号
paramMap.put("inOrOut", mydoJob.getInOrOut());//任务类型 // paramMap.put("trayCode", mydoJob.getTrayCode());//容器编号
// paramMap.put("cargoSpaceId", mydoJob.getCargoSpaceId());//货位
ajaxResult = apiWcsService.sendOutMydoJob(paramMap); // paramMap.put("inOrOut", mydoJob.getInOrOut());//任务类型
//
log.info("【推送出库】推送wcs出库作业,作业号:{},托盘条码:{},分配货位:{}", mydoJob.getJobId(), mydoJob.getTrayCode(), mydoJob.getCargoSpaceId()); // ajaxResult = apiWcsService.sendOutMydoJob(paramMap);
//
if (ajaxResult.isSuccess()){ // log.info("【推送出库】推送wcs出库作业,作业号:{},托盘条码:{},分配货位:{}", mydoJob.getJobId(), mydoJob.getTrayCode(), mydoJob.getCargoSpaceId());
//
//生成托盘主作业 // if (ajaxResult.isSuccess()){
mydoJobService.insertMydoJob(mydoJob); //
// //生成主任务后子任务明细重新计数
//生成主任务后子任务明细重新计数 // num = 1;
num = 1; //
// log.info("【推送出库】生成并推送wcs作业成功,作业号:{},托盘条码:{},分配货位:{}", mydoJob.getJobId(), mydoJob.getTrayCode(), mydoJob.getCargoSpaceId());
log.info("【推送出库】生成并推送wcs作业成功,作业号:{},托盘条码:{},分配货位:{}", mydoJob.getJobId(), mydoJob.getTrayCode(), mydoJob.getCargoSpaceId()); //
// //更新货位【预占用】
//更新货位【预占用】 // cargoCurrent.setStatus(CargoSpaceCode.CARGOSPACE_STATUS_PRE_STOCKOUT);
cargoCurrent.setStatus(CargoSpaceCode.CARGOSPACE_STATUS_PRE_STOCKOUT); // basCargoSpaceService.updateBasCargoSpace(cargoCurrent);
basCargoSpaceService.updateBasCargoSpace(cargoCurrent); //
// }
}
} }

View File

@@ -716,16 +716,23 @@ public class PdaServiceImpl implements IPdaService {
//>>>>>>>>>>>>>>>>>>>>>>> 生成回流 <<<<<<<<<<<<<<<<<<<<<<<< //>>>>>>>>>>>>>>>>>>>>>>> 生成回流 <<<<<<<<<<<<<<<<<<<<<<<<
//获取托盘剩余库存 //获取托盘剩余库存
List<BasStock> stocks = basStockService.selectBasStockListByTrayCode(trayCode); List<BasStock> stocks = basStockService.selectBasStockListByTrayCode(trayCode);
int trayType = mydoJobService.getTrayTypeByTrayCode(trayCode);
//检查当前条码是否已经生成作业 //检查当前条码是否已经生成作业
MydoJob mydoJob = mydoJobService.selectMydoJobByTrayCode(trayCode); MydoJob mydoJob = mydoJobService.selectMydoJobByTrayCode(trayCode);
if (ObjUtil.isEmpty(mydoJob)) { if (ObjUtil.isEmpty(mydoJob)) {
String jobId = basJobIdService.getId(JobIdType.MYDOJOB_PICK_RETURN); String jobId;
String taskNo = basTaskNoService.getTaskNo(TaskIdType.TASK_STOCKIN_BACK); String taskNo;
int taskType = TaskType.TASKTYPE_PICK_BACK; int taskType;
if (stocks.isEmpty()){
jobId = basJobIdService.getId(JobIdType.MYDOJOB_STOCKIN_EMPTY_PALLET);
taskNo = basTaskNoService.getTaskNo(TaskIdType.TASK_STOCKIN_EMPTY_PALLET);
taskType = TaskType.TASKTYPE_STOCKIN_EMPTY_TRAY;
}else{
jobId = basJobIdService.getId(JobIdType.MYDOJOB_PICK_RETURN);
taskNo = basTaskNoService.getTaskNo(TaskIdType.TASK_STOCKIN_BACK);
taskType = TaskType.TASKTYPE_PICK_BACK;
}
//--------------------------- 入库货位分配 --------------------------- //--------------------------- 入库货位分配 ---------------------------
//区分高矮货,只能在堆垛机上获取货物高度,高货位可放全部高度的托盘 //区分高矮货,只能在堆垛机上获取货物高度,高货位可放全部高度的托盘
@@ -934,7 +941,7 @@ public class PdaServiceImpl implements IPdaService {
log.info("【出库确认】移除版辊库存信息,辊号:{}", rollerNumber); log.info("【出库确认】移除版辊库存信息,辊号:{}", rollerNumber);
//更新分配数量、实际数量、明细状态 //更新分配数量、实际数量、明细状态
stockoutDetail.setAssignNum(jobDetail.getOutQuantity()); stockoutDetail.setAssignNum(BigDecimal.ONE);
stockoutDetail.setStatus(1); stockoutDetail.setStatus(1);
outStockoutDetailService.updateOutStockoutDetail(stockoutDetail); outStockoutDetailService.updateOutStockoutDetail(stockoutDetail);
log.info("【出库确认】更新出库单据明细状态,单号:{},辊号:{}", stockoutDetail.getStockoutId(), rollerNumber); log.info("【出库确认】更新出库单据明细状态,单号:{},辊号:{}", stockoutDetail.getStockoutId(), rollerNumber);

View File

@@ -257,7 +257,7 @@ public class MydoJobHandler {
*/ */
@Scheduled(fixedRate = TIMEINTERVAL_2000) @Scheduled(fixedRate = TIMEINTERVAL_2000)
public void cancelMydoJobHandler_Out(){ public void cancelMydoJobHandler_Out(){
List<MydoJob> mydoJobs = mydoJobService.selectOutMydoJobList( List<MydoJob> mydoJobs = mydoJobService.selectMydoJobList(
new MydoJob().builder() new MydoJob().builder()
.status(TaskStatusEnum.CANCEL.getCode()) .status(TaskStatusEnum.CANCEL.getCode())
.build() .build()
@@ -672,6 +672,8 @@ public class MydoJobHandler {
.stockId(stockId) .stockId(stockId)
.stockDetailId(stockId + "-" + num) .stockDetailId(stockId + "-" + num)
.stockStatus(BasStockCode.STOCK_STATUS_AVAILABLE) .stockStatus(BasStockCode.STOCK_STATUS_AVAILABLE)
.productStatus(BasStockCode.PRODUCT_STATUS_NORMAL)
.trayCode(inTrayMsg.getTrayCode())
.jobId(mydoJob.getJobId()) .jobId(mydoJob.getJobId())
.jobDetailId(mydoJob.getJobId() + "-" + num++) .jobDetailId(mydoJob.getJobId() + "-" + num++)
.stockinId(inTrayMsg.getStockinId())//获取单据号需要从托盘绑定信息表获取 .stockinId(inTrayMsg.getStockinId())//获取单据号需要从托盘绑定信息表获取

View File

@@ -140,6 +140,106 @@ public class RequestWcsHandler {
} }
/**
* 推送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指定货位出库 * 手动操作 - 推送wcs指定货位出库
*/ */
@@ -189,12 +289,13 @@ public class RequestWcsHandler {
} }
/** /**
* 出库确认完成 - 推送wcs拣选回流任务 * 出库确认完成 - 推送wcs拣选回流任务
*/ */
@Scheduled(fixedRate = TIMEINTERVAL_2000) @Scheduled(fixedRate = TIMEINTERVAL_2000)
public void sendWcsBackTask(){ public void sendWcsBackTask(){
List<MydoJob> mydoJobs = mydoJobService.selectOutMydoJobList( List<MydoJob> mydoJobs = mydoJobService.selectMydoJobList(
new MydoJob().builder() new MydoJob().builder()
.status(TaskStatusEnum.READY.getCode()) .status(TaskStatusEnum.READY.getCode())
.inOrOut(TaskType.TASKTYPE_PICK_BACK) .inOrOut(TaskType.TASKTYPE_PICK_BACK)
@@ -213,6 +314,7 @@ public class RequestWcsHandler {
paramMap.put("jobId", mydoJob.getJobId()); paramMap.put("jobId", mydoJob.getJobId());
paramMap.put("inOrOut", mydoJob.getInOrOut()); paramMap.put("inOrOut", mydoJob.getInOrOut());
paramMap.put("cargoSpaceId", mydoJob.getCargoSpaceId()); paramMap.put("cargoSpaceId", mydoJob.getCargoSpaceId());
paramMap.put("priority", mydoJob.getPriority());
AjaxResult ajaxResult = apiWcsService.sendBackMydoJob(paramMap); AjaxResult ajaxResult = apiWcsService.sendBackMydoJob(paramMap);
@@ -247,7 +349,7 @@ public class RequestWcsHandler {
*/ */
@Scheduled(fixedRate = TIMEINTERVAL_2000) @Scheduled(fixedRate = TIMEINTERVAL_2000)
public void sendWcsMoveTask(){ public void sendWcsMoveTask(){
List<MydoJob> mydoJobs = mydoJobService.selectOutMydoJobList( List<MydoJob> mydoJobs = mydoJobService.selectMydoJobList(
new MydoJob().builder() new MydoJob().builder()
.status(TaskStatusEnum.READY.getCode()) .status(TaskStatusEnum.READY.getCode())
.inOrOut(TaskType.TASKTYPE_PICK_BACK) .inOrOut(TaskType.TASKTYPE_PICK_BACK)
@@ -353,7 +455,7 @@ public class RequestWcsHandler {
*/ */
@Scheduled(fixedRate = TIMEINTERVAL_2000) @Scheduled(fixedRate = TIMEINTERVAL_2000)
public void sendWcsInventoryBackTask(){ public void sendWcsInventoryBackTask(){
List<MydoJob> mydoJobs = mydoJobService.selectOutMydoJobList( List<MydoJob> mydoJobs = mydoJobService.selectMydoJobList(
new MydoJob().builder() new MydoJob().builder()
.status(TaskStatusEnum.READY.getCode()) .status(TaskStatusEnum.READY.getCode())
.inOrOut(TaskType.TASKTYPE_INVENTORY_BACK) .inOrOut(TaskType.TASKTYPE_INVENTORY_BACK)