现场运行调整

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)
.then(res => {
uni.hideLoading()
this.$modal.msgSuccess('呼叫空托出库成功')
this.$modal.msgSuccess('呼叫成功')
})
.catch(err => {

View File

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

View File

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

View File

@@ -716,16 +716,23 @@ public class PdaServiceImpl implements IPdaService {
//>>>>>>>>>>>>>>>>>>>>>>> 生成回流 <<<<<<<<<<<<<<<<<<<<<<<<
//获取托盘剩余库存
List<BasStock> stocks = basStockService.selectBasStockListByTrayCode(trayCode);
int trayType = mydoJobService.getTrayTypeByTrayCode(trayCode);
//检查当前条码是否已经生成作业
MydoJob mydoJob = mydoJobService.selectMydoJobByTrayCode(trayCode);
if (ObjUtil.isEmpty(mydoJob)) {
String jobId = basJobIdService.getId(JobIdType.MYDOJOB_PICK_RETURN);
String taskNo = basTaskNoService.getTaskNo(TaskIdType.TASK_STOCKIN_BACK);
int taskType = TaskType.TASKTYPE_PICK_BACK;
String jobId;
String taskNo;
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);
//更新分配数量、实际数量、明细状态
stockoutDetail.setAssignNum(jobDetail.getOutQuantity());
stockoutDetail.setAssignNum(BigDecimal.ONE);
stockoutDetail.setStatus(1);
outStockoutDetailService.updateOutStockoutDetail(stockoutDetail);
log.info("【出库确认】更新出库单据明细状态,单号:{},辊号:{}", stockoutDetail.getStockoutId(), rollerNumber);

View File

@@ -257,7 +257,7 @@ public class MydoJobHandler {
*/
@Scheduled(fixedRate = TIMEINTERVAL_2000)
public void cancelMydoJobHandler_Out(){
List<MydoJob> mydoJobs = mydoJobService.selectOutMydoJobList(
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobList(
new MydoJob().builder()
.status(TaskStatusEnum.CANCEL.getCode())
.build()
@@ -672,6 +672,8 @@ public class MydoJobHandler {
.stockId(stockId)
.stockDetailId(stockId + "-" + num)
.stockStatus(BasStockCode.STOCK_STATUS_AVAILABLE)
.productStatus(BasStockCode.PRODUCT_STATUS_NORMAL)
.trayCode(inTrayMsg.getTrayCode())
.jobId(mydoJob.getJobId())
.jobDetailId(mydoJob.getJobId() + "-" + num++)
.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指定货位出库
*/
@@ -189,12 +289,13 @@ public class RequestWcsHandler {
}
/**
* 出库确认完成 - 推送wcs拣选回流任务
*/
@Scheduled(fixedRate = TIMEINTERVAL_2000)
public void sendWcsBackTask(){
List<MydoJob> mydoJobs = mydoJobService.selectOutMydoJobList(
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobList(
new MydoJob().builder()
.status(TaskStatusEnum.READY.getCode())
.inOrOut(TaskType.TASKTYPE_PICK_BACK)
@@ -213,6 +314,7 @@ public class RequestWcsHandler {
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);
@@ -247,7 +349,7 @@ public class RequestWcsHandler {
*/
@Scheduled(fixedRate = TIMEINTERVAL_2000)
public void sendWcsMoveTask(){
List<MydoJob> mydoJobs = mydoJobService.selectOutMydoJobList(
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobList(
new MydoJob().builder()
.status(TaskStatusEnum.READY.getCode())
.inOrOut(TaskType.TASKTYPE_PICK_BACK)
@@ -353,7 +455,7 @@ public class RequestWcsHandler {
*/
@Scheduled(fixedRate = TIMEINTERVAL_2000)
public void sendWcsInventoryBackTask(){
List<MydoJob> mydoJobs = mydoJobService.selectOutMydoJobList(
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobList(
new MydoJob().builder()
.status(TaskStatusEnum.READY.getCode())
.inOrOut(TaskType.TASKTYPE_INVENTORY_BACK)