pda入库绑定选择,手动出库确认选择,盘点任务完成账务处理优化

This commit is contained in:
lsymicc
2026-09-15 00:00:55 +08:00
parent 0bd8d92bc0
commit 39632ef960
29 changed files with 1174 additions and 333 deletions

View File

@@ -20,6 +20,9 @@ import com.ruoyi.in.stockindetail.domain.InStockinDetail;
import com.ruoyi.in.stockindetail.service.IInStockinDetailService;
import com.ruoyi.out.stockoutdetail.domain.OutStockoutDetail;
import com.ruoyi.out.stockoutdetail.service.IOutStockoutDetailService;
import com.ruoyi.pd.stockpd.service.IPdStockpdService;
import com.ruoyi.pd.stockpddetail.domain.PdStockpdDetail;
import com.ruoyi.pd.stockpddetail.service.IPdStockpdDetailService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
@@ -54,6 +57,10 @@ public class MydoJobHandler {
IBasJobIdService basJobIdService;
@Autowired
IInTrayMsgService intrayMsgService;
@Autowired
IPdStockpdService pdStockpdService;
@Autowired
IPdStockpdDetailService pdStockpdDetailService;
private static final int TIMEINTERVAL_DEFAULT = 1000;
@@ -179,7 +186,7 @@ public class MydoJobHandler {
* 账务处理 - 手动作废作业 - 入库
*/
@Scheduled(fixedRate = TIMEINTERVAL_2000)
public void cancelMydoJobHandler_in(){
public void cancelMydoJobHandler_In(){
List<MydoJob> mydoJobs = mydoJobService.selectOutMydoJobList(
new MydoJob().builder()
.status(TaskStatusEnum.CANCEL.getCode())
@@ -195,7 +202,7 @@ public class MydoJobHandler {
//移除任务子表
mydoJobDetailService.insertMydoJobDetailsForJobFinish(mydoJob.getJobId());
mydoJobDetailService.deleteMydoJobDetailsByJobId(mydoJob.getJobId());
log.info("【手动作废任务】移除任务明细,作业号:{}", mydoJob.getJobId());
log.info("【手动作废任务】移除<入库>任务明细,作业号:{}", mydoJob.getJobId());
}
//库存子表
List<BasStock> stocks = basStockService.selectBasStockListByTrayCode(mydoJob.getTrayCode());
@@ -209,7 +216,7 @@ public class MydoJobHandler {
//恢复货位状态
//入库
if (mydoJob.getInOrOut() < 20 && mydoJob.getInOrOut() != TaskType.TASKTYPE_PICK_STOCK_MOVE){
if (mydoJob.getInOrOut() == TaskType.TASKTYPE_STOCKIN){
basCargoSpaceService.updateBasCargoSpaceStatus(mydoJob.getCargoSpaceId(), "", CargoSpaceCode.CARGOSPACE_STATUS_AVAILABLE);
BasStockInfo stockInfo = basStockInfoService.selectBasStockInfoByTrayCode(mydoJob.getTrayCode());
if (ObjUtil.isNotNull(stockInfo)){
@@ -231,7 +238,7 @@ public class MydoJobHandler {
// apiWcsService.cancelWcsMydojob()
log.info("【账务处理-入库】任务作废,更新货位信息,作业号:{}", mydoJob.getJobId());
log.info("【账务处理-入库】任务作废,移除作业信息,更新货位状态,作业号:{}", mydoJob.getJobId());
return;
}
@@ -244,7 +251,7 @@ public class MydoJobHandler {
* 账务处理 - 手动作废作业 - 出库
*/
@Scheduled(fixedRate = TIMEINTERVAL_2000)
public void cancelMydoJobHandler_out(){
public void cancelMydoJobHandler_Out(){
List<MydoJob> mydoJobs = mydoJobService.selectOutMydoJobList(
new MydoJob().builder()
.status(TaskStatusEnum.CANCEL.getCode())
@@ -260,7 +267,7 @@ public class MydoJobHandler {
//移除任务子表
mydoJobDetailService.insertMydoJobDetailsForJobFinish(mydoJob.getJobId());
mydoJobDetailService.deleteMydoJobDetailsByJobId(mydoJob.getJobId());
log.info("【手动作废任务】移除任务明细,作业号:{}", mydoJob.getJobId());
log.info("【手动作废任务】移除<出库>任务明细,作业号:{}", mydoJob.getJobId());
}
//库存子表
List<BasStock> stocks = basStockService.selectBasStockListByTrayCode(mydoJob.getTrayCode());
@@ -274,7 +281,7 @@ public class MydoJobHandler {
//恢复货位状态
//出库
if (mydoJob.getInOrOut() >= 20){
if (mydoJob.getInOrOut() >= 20 && mydoJob.getInOrOut() != TaskType.TASKTYPE_STOCKOUT_INVENTORY){
basCargoSpaceService.updateBasCargoSpaceStatus(mydoJob.getCargoSpaceId(), mydoJob.getTrayCode(), CargoSpaceCode.CARGOSPACE_STATUS_OCCUPIED);
BasStockInfo stockInfo = basStockInfoService.selectBasStockInfoByTrayCode(mydoJob.getTrayCode());
@@ -309,7 +316,7 @@ public class MydoJobHandler {
* 账务处理 - 手动作废作业 - 移库
*/
@Scheduled(fixedRate = TIMEINTERVAL_2000)
public void cancelMydoJobHandler_move(){
public void cancelMydoJobHandler_Move(){
List<MydoJob> mydoJobs = mydoJobService.selectOutMydoJobList(
new MydoJob().builder()
.status(TaskStatusEnum.CANCEL.getCode())
@@ -326,7 +333,7 @@ public class MydoJobHandler {
//移除任务子表
mydoJobDetailService.insertMydoJobDetailsForJobFinish(mydoJob.getJobId());
mydoJobDetailService.deleteMydoJobDetailsByJobId(mydoJob.getJobId());
log.info("【手动作废任务】移除任务明细,作业号:{}", mydoJob.getJobId());
log.info("【手动作废任务】移除<移库>任务明细,作业号:{}", mydoJob.getJobId());
}
//库存子表
List<BasStock> stocks = basStockService.selectBasStockListByTrayCode(mydoJob.getTrayCode());
@@ -348,17 +355,78 @@ public class MydoJobHandler {
stockInfo.setCargoSpaceId(mydoJob.getCargoSpaceId());
basStockInfoService.updateBasStockInfo(stockInfo);
}
log.info(
"【账务处理-移库】任务作废,更新库存和货位信息,托盘号:{},源位置:{},目标位置:{}", mydoJob.getTrayCode(), mydoJob.getCargoSpaceId(), mydoJob.getTargetCargoSpaceId()
);
mydoJobService.insertMydoJobFinish(mydoJob.getJobId());
mydoJobService.deleteMydoJobByJobId(mydoJob.getJobId());
log.info(
"【账务处理-移库】任务作废,更新库存和货位信息,作业号:{},托盘号:{},源位置:{},目标位置:{}", mydoJob.getJobId(), mydoJob.getTrayCode(), mydoJob.getCargoSpaceId(), mydoJob.getTargetCargoSpaceId()
);
log.info("【账务处理-移库】任务作废,更新库存和货位信息,作业号:{},托盘号:{}", mydoJob.getJobId(), mydoJob.getTrayCode());
}
}
/**
* 账务处理 - 手动作废作业 - 盘点
*/
@Scheduled(fixedRate = TIMEINTERVAL_2000)
public void cancelMydoJobHandler_Inventory(){
List<MydoJob> mydoJobs = mydoJobService.selectOutMydoJobList(
new MydoJob().builder()
.status(TaskStatusEnum.CANCEL.getCode())
.build()
);
if (mydoJobs.isEmpty()) return;
for (MydoJob mydoJob : mydoJobs) {
//任务子表
if (mydoJob.getInOrOut() != TaskType.TASKTYPE_STOCKOUT_INVENTORY || mydoJob.getInOrOut() != TaskType.TASKTYPE_INVENTORY_BACK) continue;
List<MydoJobDetail> details = mydoJobDetailService.selectMydoJobDetailByJobId(mydoJob.getJobId());
if (!details.isEmpty()){
//移除任务子表
mydoJobDetailService.insertMydoJobDetailsForJobFinish(mydoJob.getJobId());
mydoJobDetailService.deleteMydoJobDetailsByJobId(mydoJob.getJobId());
log.info("【手动作废任务】移除<盘点出库>任务明细,作业号:{}", mydoJob.getJobId());
}
//库存子表
List<BasStock> stocks = basStockService.selectBasStockListByTrayCode(mydoJob.getTrayCode());
if (!stocks.isEmpty()){
for (BasStock stock : stocks){
stock.setCargoSpaceId(mydoJob.getTargetCargoSpaceId());
stock.setStockStatus(BasStockCode.STOCK_STATUS_AVAILABLE);
basStockService.updateBasStock(stock);
}
}
//恢复货位状态
basCargoSpaceService.updateBasCargoSpaceStatus(mydoJob.getCargoSpaceId(), mydoJob.getTrayCode(), CargoSpaceCode.CARGOSPACE_STATUS_OCCUPIED);
BasStockInfo stockInfo = basStockInfoService.selectBasStockInfoByTrayCode(mydoJob.getTrayCode());
if (ObjUtil.isNotNull(stockInfo)){
stockInfo.setCargoSpaceId(mydoJob.getCargoSpaceId());
basStockInfoService.updateBasStockInfo(stockInfo);
}
// for (MydoJobDetail mydoJobDetail : details){
// //还原子单数量
// PdStockpdDetail pdStockpdDetail = pdStockpdDetailService.selectPdStockpdDetailList(mydoJobDetail.getRollerNumber());
// if(ObjUtil.isNotNull(pdStockpdDetail)){
// pdStockpdDetail.setAllotNum(BigDecimal.ZERO);
// pdStockpdDetail.setAssignNum(BigDecimal.ZERO);
// pdStockpdDetail.setStatus(0);
// pdStockpdDetailService.updatePdStockpdDetail(pdStockpdDetail);
// }
// }
mydoJobService.insertMydoJobFinish(mydoJob.getJobId());
mydoJobService.deleteMydoJobByJobId(mydoJob.getJobId());
log.info("【账务处理-出库】任务作废,更新货位和库存信息,作业号:{}", mydoJob.getJobId());
}
}
//====================================================================================================
//====================================================================================================
@@ -411,7 +479,7 @@ public class MydoJobHandler {
}
log.info(
"【账务处理-移库】任务作废,更新库存和货位信息,作业号:{},托盘号:{},源位置:{},目标位置:{}", mydoJob.getJobId(), mydoJob.getTrayCode(), mydoJob.getCargoSpaceId(), mydoJob.getTargetCargoSpaceId()
"【账务处理-移库】任务完成,更新库存和货位信息,作业号:{},托盘号:{},源位置:{},目标位置:{}", mydoJob.getJobId(), mydoJob.getTrayCode(), mydoJob.getCargoSpaceId(), mydoJob.getTargetCargoSpaceId()
);
return;
}
@@ -512,7 +580,7 @@ public class MydoJobHandler {
* 账务处理 - 手动完成作业 - 入库
*/
@Scheduled(fixedRate = TIMEINTERVAL_2000)
public void manualCompleteMydoJobHandler_in(){
public void manualCompleteMydoJobHandler_In(){
List<MydoJob> mydoJobs = mydoJobService.selectOutMydoJobList(
new MydoJob().builder()
.status(TaskStatusEnum.MANUAL_FINISHED.getCode())
@@ -528,7 +596,7 @@ public class MydoJobHandler {
//移除任务子表
mydoJobDetailService.insertMydoJobDetailsForJobFinish(mydoJob.getJobId());
mydoJobDetailService.deleteMydoJobDetailsByJobId(mydoJob.getJobId());
log.info("【手动完成任务】移除任务明细,作业号:{}", mydoJob.getJobId());
log.info("【手动完成】移除<入库>任务明细,作业号:{}", mydoJob.getJobId());
}
//库存子表
List<BasStock> stocks = basStockService.selectBasStockListByTrayCode(mydoJob.getTrayCode());
@@ -542,7 +610,10 @@ public class MydoJobHandler {
//恢复货位状态
//入库
if (mydoJob.getInOrOut() < 20){
if (mydoJob.getInOrOut() == TaskType.TASKTYPE_STOCKIN &&
mydoJob.getInOrOut() != TaskType.TASKTYPE_PICK_STOCK_MOVE &&
mydoJob.getInOrOut() != TaskType.TASKTYPE_INVENTORY_BACK
){
basCargoSpaceService.updateBasCargoSpaceStatus(mydoJob.getCargoSpaceId(), mydoJob.getTrayCode(), CargoSpaceCode.CARGOSPACE_STATUS_OCCUPIED);
//生成库存编号
@@ -606,9 +677,12 @@ public class MydoJobHandler {
}
intrayMsgService.deleteInTrayMsgByRollerNumber(detail.getRollerNumber());
}
log.info("【账务处理-入库】任务完成,移除绑定信息,更新货位信息,作业号:{}", mydoJob.getJobId());
mydoJobService.insertMydoJobFinish(mydoJob.getJobId());
mydoJobService.deleteMydoJobByJobId(mydoJob.getJobId());
log.info("【账务处理-入库】任务完成,移除作业和绑定信息,更新货位信息,作业号:{}", mydoJob.getJobId());
}
}
@@ -621,7 +695,7 @@ public class MydoJobHandler {
* 账务处理 - 手动完成作业 - 出库
*/
@Scheduled(fixedRate = TIMEINTERVAL_2000)
public void manualCompleteMydoJobHandler_out(){
public void manualCompleteMydoJobHandler_Out(){
List<MydoJob> mydoJobs = mydoJobService.selectOutMydoJobList(
new MydoJob().builder()
.status(TaskStatusEnum.MANUAL_FINISHED.getCode())
@@ -637,7 +711,7 @@ public class MydoJobHandler {
//移除任务子表
mydoJobDetailService.insertMydoJobDetailsForJobFinish(mydoJob.getJobId());
mydoJobDetailService.deleteMydoJobDetailsByJobId(mydoJob.getJobId());
log.info("【手动完成任务】移除任务明细,作业号:{}", mydoJob.getJobId());
log.info("【手动完成任务】移除<出库>任务明细,作业号:{}", mydoJob.getJobId());
}
//库存子表
List<BasStock> stocks = basStockService.selectBasStockListByTrayCode(mydoJob.getTrayCode());
@@ -652,8 +726,7 @@ public class MydoJobHandler {
//恢复货位状态
//整托出库
if (mydoJob.getInOrOut() >= TaskType.TASKTYPE_STOCKOUT ||
mydoJob.getInOrOut() == TaskType.TASKTYPE_STOCKOUT_EMPTY_TRAY ||
mydoJob.getInOrOut() == TaskType.TASKTYPE_STOCKOUT_MANUAL){
mydoJob.getInOrOut() == TaskType.TASKTYPE_STOCKOUT_EMPTY_TRAY ){
for (MydoJobDetail mydoJobDetail : details){
//还原子单数量
OutStockoutDetail outStockoutDetail = outStockoutDetailService.selectOutStockoutDetailByRollerNumber(mydoJobDetail.getRollerNumber());
@@ -664,13 +737,18 @@ public class MydoJobHandler {
outStockoutDetailService.updateOutStockoutDetail(outStockoutDetail);
}
basStockService.deleteBasStockByRollerNumber(mydoJobDetail.getRollerNumber());
}
basStockService.deleteBasStockByTrayCode(mydoJob.getTrayCode());
basStockInfoService.deleteBasStockInfoByTrayCode(mydoJob.getTrayCode());
basCargoSpaceService.updateBasCargoSpaceStatus(mydoJob.getCargoSpaceId(), "", CargoSpaceCode.CARGOSPACE_STATUS_AVAILABLE);
log.info("【账务处理-整托出库】任务完成,移除托盘库存,更新货位和库存信息,作业号:{},托盘号:{}", mydoJob.getJobId(), mydoJob.getTrayCode());
log.info("【账务处理-出库】任务完成,移除托盘库存,更新货位和库存信息,作业号:{},托盘号:{}", mydoJob.getJobId(), mydoJob.getTrayCode());
mydoJobService.insertMydoJobFinish(mydoJob.getJobId());
mydoJobService.deleteMydoJobByJobId(mydoJob.getJobId());
log.info("【账务处理-出库】任务完成,移除作业和绑定信息,更新货位信息,作业号:{}", mydoJob.getJobId());
}else{
log.info("【账务处理-操作失败】当前任务类型<{}>不支持手动完成操作,作业号:{},托盘号:{}", mydoJob.getInOrOut(), mydoJob.getJobId(), mydoJob.getTrayCode());
}
@@ -684,7 +762,7 @@ public class MydoJobHandler {
* 账务处理 - 手动完成作业 - 移库
*/
@Scheduled(fixedRate = TIMEINTERVAL_2000)
public void manualCompleteMydoJobHandler_move(){
public void manualCompleteMydoJobHandler_Move(){
List<MydoJob> mydoJobs = mydoJobService.selectOutMydoJobList(
new MydoJob().builder()
.status(TaskStatusEnum.MANUAL_FINISHED.getCode())
@@ -701,7 +779,7 @@ public class MydoJobHandler {
//移除任务子表
mydoJobDetailService.insertMydoJobDetailsForJobFinish(mydoJob.getJobId());
mydoJobDetailService.deleteMydoJobDetailsByJobId(mydoJob.getJobId());
log.info("【手动完成任务】移除任务明细,作业号:{}", mydoJob.getJobId());
log.info("【手动完成任务】移除<移库>任务明细,作业号:{}", mydoJob.getJobId());
}
//库存子表
List<BasStock> stocks = basStockService.selectBasStockListByTrayCode(mydoJob.getTrayCode());
@@ -716,21 +794,73 @@ public class MydoJobHandler {
//恢复货位状态
basCargoSpaceService.updateBasCargoSpaceStatus(mydoJob.getCargoSpaceId(), "", CargoSpaceCode.CARGOSPACE_STATUS_AVAILABLE);
basCargoSpaceService.updateBasCargoSpaceStatus(mydoJob.getTargetCargoSpaceId(), mydoJob.getTrayCode(), CargoSpaceCode.CARGOSPACE_STATUS_OCCUPIED);
log.info(
"【账务处理-移库】更新库存和货位信息,托盘号:{},源位置:{},目标位置:{}", mydoJob.getTrayCode(), mydoJob.getCargoSpaceId(), mydoJob.getTargetCargoSpaceId()
);
BasStockInfo stockInfo = basStockInfoService.selectBasStockInfoByTrayCode(mydoJob.getTrayCode());
if (ObjUtil.isNotNull(stockInfo)){
stockInfo.setCargoSpaceId(mydoJob.getTargetCargoSpaceId());
basStockInfoService.updateBasStockInfo(stockInfo);
}
log.info(
"【账务处理-移库】任务作废,更新库存和货位信息,作业号:{},托盘号:{},源位置:{},目标位置:{}", mydoJob.getJobId(), mydoJob.getTrayCode(), mydoJob.getCargoSpaceId(), mydoJob.getTargetCargoSpaceId()
);
mydoJobService.insertMydoJobFinish(mydoJob.getJobId());
mydoJobService.deleteMydoJobByJobId(mydoJob.getJobId());
log.info( "【账务处理-移库】任务完成,移除作业和绑定信息,作业号:{},托盘号:{}", mydoJob.getJobId(), mydoJob.getTrayCode());
}
}
/**
* 账务处理 - 手动完成作业 - 盘点
*/
@Scheduled(fixedRate = TIMEINTERVAL_2000)
public void manualCompleteMydoJobHandler_Inventory(){
List<MydoJob> mydoJobs = mydoJobService.selectInMydoJobList(
new MydoJob().builder()
.status(TaskStatusEnum.MANUAL_FINISHED.getCode())
.build()
);
if (mydoJobs.isEmpty()) return;
for (MydoJob mydoJob : mydoJobs) {
//任务子表
if (mydoJob.getInOrOut() != TaskType.TASKTYPE_STOCKOUT_INVENTORY || mydoJob.getInOrOut() != TaskType.TASKTYPE_INVENTORY_BACK) continue;
List<MydoJobDetail> details = mydoJobDetailService.selectMydoJobDetailByJobId(mydoJob.getJobId());
if (!details.isEmpty()){
//移除任务子表
mydoJobDetailService.insertMydoJobDetailsForJobFinish(mydoJob.getJobId());
mydoJobDetailService.deleteMydoJobDetailsByJobId(mydoJob.getJobId());
log.info("【手动完成任务】移除<盘点>任务明细,作业号:{}", mydoJob.getJobId());
}
//库存子表
List<BasStock> stocks = basStockService.selectBasStockListByTrayCode(mydoJob.getTrayCode());
if (!stocks.isEmpty()){
for (BasStock stock : stocks){
stock.setCargoSpaceId(mydoJob.getTargetCargoSpaceId());
stock.setStockStatus(BasStockCode.STOCK_STATUS_AVAILABLE);
basStockService.updateBasStock(stock);
}
}
basCargoSpaceService.updateBasCargoSpaceStatus(mydoJob.getCargoSpaceId(), mydoJob.getTrayCode(), CargoSpaceCode.CARGOSPACE_STATUS_OCCUPIED);
log.info("【账务处理-盘点】任务完成,更新货位和库存信息,作业号:{},托盘号:{}", mydoJob.getJobId(), mydoJob.getTrayCode());
mydoJobService.insertMydoJobFinish(mydoJob.getJobId());
mydoJobService.deleteMydoJobByJobId(mydoJob.getJobId());
log.info( "【账务处理-盘点】任务完成,移除作业信息,作业号:{},托盘号:{}", mydoJob.getJobId(), mydoJob.getTrayCode());
}
}
//====================================================================================================
//====================================================================================================