盘点功能完善
This commit is contained in:
@@ -21,6 +21,14 @@ public interface BasCargoSpaceMapper
|
||||
*/
|
||||
public BasCargoSpace selectBasCargoSpaceByCargoSpaceId(String cargoSpaceId);
|
||||
|
||||
/**
|
||||
* 查询货位信息
|
||||
*
|
||||
* @param trayCode 货位信息主键
|
||||
* @return 货位信息
|
||||
*/
|
||||
public BasCargoSpace selectBasCargoSpaceByTrayCode(String trayCode);
|
||||
|
||||
/**
|
||||
* 查询货位信息列表
|
||||
*
|
||||
|
||||
@@ -19,6 +19,14 @@ public interface IBasCargoSpaceService
|
||||
*/
|
||||
public BasCargoSpace selectBasCargoSpaceByCargoSpaceId(String cargoSpaceId);
|
||||
|
||||
/**
|
||||
* 查询货位信息
|
||||
*
|
||||
* @param trayCode 托盘号
|
||||
* @return 货位信息
|
||||
*/
|
||||
public BasCargoSpace selectBasCargoSpaceByTrayCode(String trayCode);
|
||||
|
||||
|
||||
/**
|
||||
* 查询货位信息列表
|
||||
|
||||
@@ -34,6 +34,18 @@ public class BasCargoSpaceServiceImpl implements IBasCargoSpaceService
|
||||
return basCargoSpaceMapper.selectBasCargoSpaceByCargoSpaceId(cargoSpaceId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询货位信息
|
||||
*
|
||||
* @param trayCode 货位信息主键
|
||||
* @return 货位信息
|
||||
*/
|
||||
@Override
|
||||
public BasCargoSpace selectBasCargoSpaceByTrayCode(String trayCode)
|
||||
{
|
||||
return basCargoSpaceMapper.selectBasCargoSpaceByTrayCode(trayCode);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询货位信息列表
|
||||
*
|
||||
|
||||
@@ -12,7 +12,11 @@ public class BasStockCode {
|
||||
public static final String STOCK_STATUS_EXCEPTION = "3";
|
||||
|
||||
|
||||
/** 产品状态 - 正常 */
|
||||
public static final String PRODUCT_STATUS_NORMAL = "1";
|
||||
|
||||
/** 产品状态 - 异常待检产品 */
|
||||
public static final String PRODUCT_STATUS_EXCEPTION = "2";
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -37,6 +37,11 @@ public class TaskIdType {
|
||||
*/
|
||||
public static final String TASK_STOCKOUT = "21";
|
||||
|
||||
/**
|
||||
* 出库任务
|
||||
*/
|
||||
public static final String TASK_STOCKOUT_INVENTORY = "22";
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -243,21 +243,17 @@ public class MydoJobServiceImpl implements IMydoJobService
|
||||
public AjaxResult cancelJob(String jobId)
|
||||
{
|
||||
//任务主表
|
||||
List<MydoJob> jobs = mydoJobMapper.selectMydoJobList(
|
||||
new MydoJob().builder().jobId(jobId).build()
|
||||
);
|
||||
MydoJob mydoJob = selectMydoJobByJobId(jobId);
|
||||
|
||||
if (jobs.isEmpty()){
|
||||
if (ObjUtil.isEmpty(mydoJob)){
|
||||
log.warn("【操作异常】找不到该作业信息,作业号:{}", jobId);
|
||||
return AjaxResult.error("找不到该作业信息");
|
||||
}
|
||||
|
||||
for (MydoJob mydoJob : jobs){
|
||||
//任务状态标记为【作废】
|
||||
mydoJob.setStatus(TaskStatusEnum.CANCEL.getCode());
|
||||
updateMydoJob(mydoJob);
|
||||
log.warn("【手动作废】执行成功,当前作业已标记为<手动作废>,作业号:{}", jobId);
|
||||
}
|
||||
//任务状态标记为【作废】
|
||||
mydoJob.setStatus(TaskStatusEnum.CANCEL.getCode());
|
||||
updateMydoJob(mydoJob);
|
||||
log.warn("【手动作废】执行成功,当前作业已标记为<手动作废>,作业号:{}", jobId);
|
||||
|
||||
return AjaxResult.success("操作成功,当前作业已标记为<手动作废>,作业号:" + jobId);
|
||||
}
|
||||
@@ -311,20 +307,16 @@ public class MydoJobServiceImpl implements IMydoJobService
|
||||
public AjaxResult manualCompleteJob(String jobId)
|
||||
{
|
||||
//任务主表
|
||||
List<MydoJob> jobs = mydoJobMapper.selectMydoJobList(
|
||||
new MydoJob().builder().jobId(jobId).build()
|
||||
);
|
||||
MydoJob mydoJob = selectMydoJobByJobId(jobId);
|
||||
|
||||
if (jobs.isEmpty()){
|
||||
if (ObjUtil.isEmpty(mydoJob)){
|
||||
log.warn("【操作异常】找不到该作业信息,作业号:{}", jobId);
|
||||
return AjaxResult.error("找不到该作业信息");
|
||||
}
|
||||
|
||||
for (MydoJob mydoJob : jobs){
|
||||
//任务状态标记为【手动完成】
|
||||
mydoJob.setStatus(TaskStatusEnum.MANUAL_FINISHED.getCode());
|
||||
updateMydoJob(mydoJob);
|
||||
}
|
||||
|
||||
//任务状态标记为【手动完成】
|
||||
mydoJob.setStatus(TaskStatusEnum.MANUAL_FINISHED.getCode());
|
||||
updateMydoJob(mydoJob);
|
||||
|
||||
log.warn("【手动操作】执行成功,当前作业已标记为<手动完成>,作业号:{}", jobId);
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.ruoyi.pd.stockpd.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.ruoyi.in.job.service.IMydoJobService;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -151,7 +153,8 @@ public class PdStockpdController extends BaseController
|
||||
@PutMapping("/autoAssign/{stockpdId}")
|
||||
public AjaxResult autoAssign(@PathVariable("stockpdId") String stockpdId)
|
||||
{
|
||||
return pdStockpdService.autoAssignPdStockpd(stockpdId);
|
||||
// return pdStockpdService.autoAssignPdStockpd(stockpdId);
|
||||
return pdStockpdService.autoAssignPdStock(stockpdId);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
package com.ruoyi.pd.stockpd.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
@@ -15,6 +19,10 @@ import java.util.Date;
|
||||
* @author ruoyi
|
||||
* @date 2026-05-27
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class PdStockpd extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -21,6 +21,7 @@ public interface IPdStockpdService
|
||||
*/
|
||||
public PdStockpd selectPdStockpdByStockpdId(String stockpdId);
|
||||
|
||||
|
||||
/**
|
||||
* 查询盘点单据主信息列表
|
||||
*
|
||||
@@ -29,6 +30,7 @@ public interface IPdStockpdService
|
||||
*/
|
||||
public List<PdStockpd> selectPdStockpdList(PdStockpd pdStockpd);
|
||||
|
||||
|
||||
/**
|
||||
* 新增盘点单据主信息
|
||||
*
|
||||
@@ -37,6 +39,7 @@ public interface IPdStockpdService
|
||||
*/
|
||||
public int insertPdStockpd(PdStockpd pdStockpd);
|
||||
|
||||
|
||||
/**
|
||||
* 修改盘点单据主信息
|
||||
*
|
||||
@@ -45,6 +48,7 @@ public interface IPdStockpdService
|
||||
*/
|
||||
public int updatePdStockpd(PdStockpd pdStockpd);
|
||||
|
||||
|
||||
/**
|
||||
* 批量删除盘点单据主信息
|
||||
*
|
||||
@@ -53,6 +57,7 @@ public interface IPdStockpdService
|
||||
*/
|
||||
public int deletePdStockpdByStockpdIds(String[] stockpdIds);
|
||||
|
||||
|
||||
/**
|
||||
* 删除盘点单据主信息信息
|
||||
*
|
||||
@@ -61,6 +66,7 @@ public interface IPdStockpdService
|
||||
*/
|
||||
public int deletePdStockpdByStockpdId(String stockpdId);
|
||||
|
||||
|
||||
/**
|
||||
* 手动作废盘点单据
|
||||
*
|
||||
@@ -69,6 +75,7 @@ public interface IPdStockpdService
|
||||
*/
|
||||
public AjaxResult cancelPdStockpd(String stockpdId);
|
||||
|
||||
|
||||
/**
|
||||
* 审核盘点单据
|
||||
*
|
||||
@@ -77,6 +84,7 @@ public interface IPdStockpdService
|
||||
*/
|
||||
public AjaxResult auditPdStockpd(String stockpdId);
|
||||
|
||||
|
||||
/**
|
||||
* 完成盘点单据
|
||||
*
|
||||
@@ -85,14 +93,25 @@ public interface IPdStockpdService
|
||||
*/
|
||||
public AjaxResult finishPdStockpd(String stockpdId);
|
||||
|
||||
|
||||
/**
|
||||
* 自动分配盘点单据
|
||||
* 自动分配盘点单据(存储过程)
|
||||
*
|
||||
* @param stockpdId 盘点订单ID
|
||||
* @return 结果
|
||||
*/
|
||||
public AjaxResult autoAssignPdStockpd(String stockpdId);
|
||||
|
||||
|
||||
/**
|
||||
* 自动分配盘点单据(非过程)
|
||||
*
|
||||
* @param stockpdId 盘点订单ID
|
||||
* @return 结果
|
||||
*/
|
||||
public AjaxResult autoAssignPdStock(String stockpdId);
|
||||
|
||||
|
||||
/**
|
||||
* 查询盘点单据完成列表
|
||||
*
|
||||
@@ -101,6 +120,7 @@ public interface IPdStockpdService
|
||||
*/
|
||||
List<PdStockpd> selectPdStockpdFinishList(PdStockpd pdStockpd);
|
||||
|
||||
|
||||
/**
|
||||
* 保存盘点单据(主单+明细)
|
||||
*
|
||||
|
||||
@@ -1,14 +1,27 @@
|
||||
package com.ruoyi.pd.stockpd.service.impl;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Date;
|
||||
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import com.ruoyi.bas.cargospace.domain.BasCargoSpace;
|
||||
import com.ruoyi.bas.cargospace.service.IBasCargoSpaceService;
|
||||
import com.ruoyi.bas.id.taskno.service.IBasTaskNoService;
|
||||
import com.ruoyi.bas.stock.domain.BasStock;
|
||||
import com.ruoyi.bas.stock.service.IBasStockService;
|
||||
import com.ruoyi.common.*;
|
||||
import com.ruoyi.in.job.domain.MydoJob;
|
||||
import com.ruoyi.in.job.service.IMydoJobService;
|
||||
import com.ruoyi.in.jobdetail.service.IMydoJobDetailService;
|
||||
import com.ruoyi.pd.stockpddetail.service.IPdStockpdDetailService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import com.ruoyi.bas.id.job.service.IBasJobIdService;
|
||||
import com.ruoyi.common.PdStockpdStatusEnum;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.text.Convert;
|
||||
import com.ruoyi.common.utils.SecurityUtils;
|
||||
@@ -27,19 +40,31 @@ import com.ruoyi.pd.stockpddetail.domain.PdStockpdDetail;
|
||||
* @date 2026-05-27
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class PdStockpdServiceImpl implements IPdStockpdService
|
||||
{
|
||||
@Autowired
|
||||
private PdStockpdMapper pdStockpdMapper;
|
||||
|
||||
@Autowired
|
||||
private PdStockpdDetailMapper pdStockpdDetailMapper;
|
||||
|
||||
@Autowired
|
||||
private SysDeptMapper sysDeptMapper;
|
||||
|
||||
@Autowired
|
||||
private IBasJobIdService IBasJobIdService;
|
||||
private IBasJobIdService basJobIdService;
|
||||
@Autowired
|
||||
IBasTaskNoService basTaskNoService;
|
||||
@Autowired
|
||||
IPdStockpdDetailService pdStockpdDetailService;
|
||||
@Autowired
|
||||
IMydoJobService mydoJobService;
|
||||
@Autowired
|
||||
IMydoJobDetailService mydojobDetailService;
|
||||
@Autowired
|
||||
IBasCargoSpaceService bascargoSpaceService;
|
||||
@Autowired
|
||||
IBasStockService basStockService;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 查询盘点单据主信息
|
||||
@@ -199,6 +224,90 @@ public class PdStockpdServiceImpl implements IPdStockpdService
|
||||
return AjaxResult.success(str);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 自动分配盘点单据
|
||||
*/
|
||||
@Override
|
||||
public AjaxResult autoAssignPdStock(String stockpdId)
|
||||
{
|
||||
PdStockpd pdStockpd = selectPdStockpdByStockpdId(stockpdId);
|
||||
if (ObjUtil.isNull(pdStockpd)) {
|
||||
log.error("【盘点出库分配】操作失败,找不到该盘点单据,请检查单据状态,单据号:{}", stockpdId);
|
||||
return AjaxResult.error("操作失败,找不到该盘点单据,请检查单据状态");
|
||||
}
|
||||
|
||||
if (!pdStockpd.getStatus().equals(StockStatusEnum.RUNNING.getCode())) {
|
||||
log.error("【盘点出库分配】操作失败,只有状态为<执行中>的单据才能执行分配,单据号:{}", stockpdId);
|
||||
return AjaxResult.error("操作失败,只有状态为<执行中>的单据才能执行分配,单据号:{}" + stockpdId);
|
||||
}
|
||||
|
||||
//获取盘点出库单明细
|
||||
List<PdStockpdDetail> details = pdStockpdDetailService.selectPdStockpdDetailList(
|
||||
new PdStockpdDetail().builder().stockpdId(stockpdId).build()
|
||||
);
|
||||
if (details.isEmpty()){
|
||||
log.error("【盘点出库分配】操作失败,找不到该盘点单对应的单据明细,单据号:{}", stockpdId);
|
||||
return AjaxResult.error("操作失败,找不到该盘点单对应的单据明细");
|
||||
}
|
||||
|
||||
for (PdStockpdDetail detail : details) {
|
||||
//更新明细分配数量
|
||||
detail.setAllotNum(BigDecimal.ONE);
|
||||
pdStockpdDetailService.updatePdStockpdDetail(detail);
|
||||
|
||||
//生成托盘盘点出库作业
|
||||
MydoJob mydoJob = mydoJobService.selectMydoJobByTrayCode(detail.getTrayCode());
|
||||
if (ObjUtil.isNull(mydoJob)){
|
||||
|
||||
String jobId = basJobIdService.getId(JobIdType.MYDOJOB_INVENTORY_STOCKOUT);
|
||||
String taskNo = basTaskNoService.getTaskNo(TaskIdType.TASK_STOCKOUT_INVENTORY);
|
||||
int taskType = TaskType.TASKTYPE_STOCKOUT_INVENTORY;
|
||||
|
||||
BasCargoSpace cargoSpace = bascargoSpaceService.selectBasCargoSpaceByTrayCode(detail.getTrayCode());
|
||||
if (ObjUtil.isNull(cargoSpace)){
|
||||
log.error("【盘点出库分配】操作失败,找不到当前盘点单明细托盘号的货位信息,请检查托盘库存状态和货位信息是否正确,单据号:{},托盘号:{}", stockpdId, detail.getTrayCode());
|
||||
return AjaxResult.error("找不到当前盘点单明细托盘号的货位信息,请检查托盘库存状态和货位信息是否正确,托盘号:{}" + detail.getTrayCode());
|
||||
}
|
||||
|
||||
mydoJob = new MydoJob().builder()
|
||||
.jobId(jobId)
|
||||
.taskNo(taskNo)
|
||||
.status(TaskStatusEnum.READY.getCode())
|
||||
.warehouseId("01")
|
||||
.warehouseName("立体库")
|
||||
.executionPhase("0")
|
||||
.inOrOut(taskType)
|
||||
.trayCode(detail.getTrayCode())
|
||||
.roadwayId(cargoSpace.getRoadwayId())
|
||||
.cargoSpaceId(cargoSpace.getCargoSpaceId())
|
||||
.cargoSpaceName(cargoSpace.getCargoSpaceName())
|
||||
.trayType(cargoSpace.getTheType())
|
||||
.priority(10)
|
||||
.build();
|
||||
|
||||
mydoJobService.insertMydoJob(mydoJob);
|
||||
log.info("【wms生成盘点出库】<盘点出库>作业,作业号:{},任务号:{},托盘号:{},盘点货位:{}",mydoJob.getJobId() ,mydoJob.getTaskNo() ,mydoJob.getTrayCode(), cargoSpace.getCargoSpaceId());
|
||||
|
||||
bascargoSpaceService.updateBasCargoSpaceStatus(cargoSpace.getCargoSpaceId(), mydoJob.getTrayCode(), CargoSpaceCode.CARGOSPACE_STATUS_PRE_STOCKOUT);
|
||||
List<BasStock> stocks = basStockService.selectBasStockListByTrayCode(detail.getTrayCode());
|
||||
if (!stocks.isEmpty()){
|
||||
for (BasStock stock : stocks) {
|
||||
stock.setStockStatus(BasStockCode.STOCK_STATUS_OCCUPIED);
|
||||
basStockService.updateBasStock(stock);
|
||||
}
|
||||
}
|
||||
|
||||
log.info("【wms生成盘点出库】更新出库货位和库存状态,作业号:{},任务号:{},托盘号:{},盘点货位:{}");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询盘点单据完成列表
|
||||
*/
|
||||
@@ -217,7 +326,7 @@ public class PdStockpdServiceImpl implements IPdStockpdService
|
||||
{
|
||||
// 1. 生成主单ID
|
||||
if (saveDTO.getStockpdId() == null || saveDTO.getStockpdId().isEmpty()) {
|
||||
saveDTO.setStockpdId(IBasJobIdService.getId("PDD"));
|
||||
saveDTO.setStockpdId(basJobIdService.getId("PDD"));
|
||||
}
|
||||
// 2. 保存主单
|
||||
saveDTO.setCreateDate(new Date());
|
||||
|
||||
@@ -47,7 +47,7 @@ public class PdStockpdDetailController extends BaseController
|
||||
startPage();
|
||||
List<PdStockpdDetail> list;
|
||||
|
||||
if (StringUtils.isEmpty(pdStockpdDetail.getStatus()) || Convert.toInt(pdStockpdDetail.getStatus())< 4){
|
||||
if (Convert.toInt(pdStockpdDetail.getStatus())< 4){
|
||||
list = pdStockpdDetailService.selectPdStockpdDetailList(pdStockpdDetail);
|
||||
}else {
|
||||
list = pdStockpdDetailService.selectPdStockpdDetailFinishList(pdStockpdDetail);
|
||||
|
||||
@@ -56,7 +56,7 @@ public class PdStockpdDetail extends BaseEntity
|
||||
@Excel(name = "实际数量")
|
||||
private BigDecimal assignNum;
|
||||
|
||||
private int status;
|
||||
private Integer status;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -2,6 +2,9 @@ package com.ruoyi.pda.controller;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
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.TaskType;
|
||||
import com.ruoyi.common.Utils.DecimalUtil;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
@@ -47,6 +50,8 @@ public class PdaController extends BaseController {
|
||||
IInStockinService inStockinService;
|
||||
@Autowired
|
||||
IInStockinDetailService inStockinDetailService;
|
||||
@Autowired
|
||||
IBasStockService basStockService;
|
||||
|
||||
|
||||
/**
|
||||
@@ -211,7 +216,6 @@ public class PdaController extends BaseController {
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 入库绑盘-查询物料信息(子单号查询)
|
||||
* @param detailId 子单号
|
||||
@@ -439,4 +443,71 @@ public class PdaController extends BaseController {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//==================================== 盘点 ========================================
|
||||
//==================================== 盘点 ========================================
|
||||
//==================================== 盘点 ========================================
|
||||
|
||||
|
||||
/**
|
||||
* 盘点出库待处理任务列表
|
||||
*/
|
||||
@GetMapping("/inventoryOutTaskList")
|
||||
@PreAuthorize("@ss.hasPermi('inventory:task:list')")
|
||||
public TableDataInfo listInventoryTask(MydoJob mydoJob) {
|
||||
mydoJob.setInOrOut(TaskType.TASKTYPE_STOCKOUT_INVENTORY);
|
||||
startPage();
|
||||
List<MydoJob> list = mydoJobService.selectMydoJobList(mydoJob);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 盘点-查询物料库存(托盘号查询)
|
||||
* @param trayCode 托盘号
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/getInventoryOutInfoByTrayCode")
|
||||
@PreAuthorize("@ss.hasPermi('out:inventory:task:info')")
|
||||
public AjaxResult getInventoryOutInfoByTrayCode(String trayCode) {
|
||||
try {
|
||||
MydoJob job = mydoJobService.selectMydoJobByTrayCode(trayCode);
|
||||
// List<MydoJobDetail> info = pdaService.getStockoutInfoByTrayCode(trayCode);
|
||||
List<BasStock> stocks = basStockService.selectBasStockListByTrayCode(trayCode);
|
||||
if(ObjUtil.isNull(job) || stocks.isEmpty()){
|
||||
return AjaxResult.error("找不到当前托盘出库明细,请检查作业状态");
|
||||
}else{
|
||||
return AjaxResult.success(stocks);
|
||||
}
|
||||
} catch (RuntimeException e) {
|
||||
return AjaxResult.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 物料(版辊)库存【产品状态】异常标记
|
||||
* @param params
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/inventoryStockExcetion")
|
||||
@PreAuthorize("@ss.hasPermi('out:inventory:task:info')")
|
||||
public AjaxResult inventoryStockExcetion(@RequestBody Map<String, Object> params) {
|
||||
return pdaService.inventoryStockExcetion(params);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 手动指定出库确认 - 版辊单独确认
|
||||
* @param params
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/inventoryTrayCodeComplete")
|
||||
@PreAuthorize("@ss.hasPermi('out:bound:task:info')")
|
||||
public AjaxResult inventoryTrayCodeComplete(Map<String, Object> params) {
|
||||
return pdaService.inventoryTrayCodeComplete(params);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -178,4 +178,24 @@ public interface IPdaService {
|
||||
AjaxResult stockoutTrayCodeCompleteAll(String trayCode);
|
||||
|
||||
|
||||
//=============================================== 盘点 ===================================================
|
||||
//=============================================== 盘点 ===================================================
|
||||
//=============================================== 盘点 ===================================================
|
||||
|
||||
/**
|
||||
* 盘点出库 - 标记库存产品状态异常
|
||||
* @param params
|
||||
* @return
|
||||
*/
|
||||
AjaxResult inventoryStockExcetion(Map<String, Object> params);
|
||||
|
||||
|
||||
/**
|
||||
* 托盘扫码 - 盘点出库确认
|
||||
* @param params
|
||||
* @return
|
||||
*/
|
||||
public AjaxResult inventoryTrayCodeComplete(Map<String, Object> params);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -35,6 +35,9 @@ import com.ruoyi.out.stockout.service.IOutStockoutService;
|
||||
import com.ruoyi.out.stockoutdetail.domain.OutStockoutDetail;
|
||||
import com.ruoyi.out.stockoutdetail.mapper.OutStockoutDetailMapper;
|
||||
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 com.ruoyi.pda.domain.AddInJobRequest;
|
||||
import com.ruoyi.pda.domain.TrayMsgBinding;
|
||||
import com.ruoyi.pda.domain.BindTrayRequest;
|
||||
@@ -94,6 +97,10 @@ public class PdaServiceImpl implements IPdaService {
|
||||
IBasTaskNoService basTaskNoService;
|
||||
@Autowired
|
||||
IBasCargoSpaceService basCargoSpaceService;
|
||||
@Autowired
|
||||
IPdStockpdService pdStockpdService;
|
||||
@Autowired
|
||||
IPdStockpdDetailService pdStockpdDetailService;
|
||||
|
||||
|
||||
// ─────────────────────────────────────────────
|
||||
@@ -496,7 +503,7 @@ public class PdaServiceImpl implements IPdaService {
|
||||
|
||||
|
||||
/**
|
||||
* 托盘扫码 - 版辊单据出库确认
|
||||
* 单版辊强行出库确认
|
||||
* @param params
|
||||
* @return
|
||||
*/
|
||||
@@ -556,7 +563,7 @@ public class PdaServiceImpl implements IPdaService {
|
||||
|
||||
|
||||
/**
|
||||
* 托盘扫码 - 版辊单据出库确认
|
||||
* 托盘扫码 - 版辊单据出库标记
|
||||
* @param params
|
||||
* @return
|
||||
*/
|
||||
@@ -594,7 +601,7 @@ public class PdaServiceImpl implements IPdaService {
|
||||
|
||||
|
||||
/**
|
||||
* 托盘扫码 - 托盘单据出库确认
|
||||
* 托盘扫码 - 托盘出库确认(需求单据)
|
||||
* @param trayCode
|
||||
* @return
|
||||
*/
|
||||
@@ -723,7 +730,7 @@ public class PdaServiceImpl implements IPdaService {
|
||||
|
||||
|
||||
/**
|
||||
* 托盘扫码 - 手动指定出库确认
|
||||
* 托盘扫码 - 手动指定出库确认(不依赖单据)
|
||||
* @param trayCode
|
||||
* @return
|
||||
*/
|
||||
@@ -832,7 +839,7 @@ public class PdaServiceImpl implements IPdaService {
|
||||
|
||||
|
||||
/**
|
||||
* 托盘出库确认 - 托盘一键确认
|
||||
* 托盘出库确认 - 托盘一键确认(需求单据)
|
||||
* @param trayCode
|
||||
* @return
|
||||
*/
|
||||
@@ -944,4 +951,89 @@ public class PdaServiceImpl implements IPdaService {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//============================================== 盘点 ================================================
|
||||
//============================================== 盘点 ================================================
|
||||
//============================================== 盘点 ================================================
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 盘点出库 - 标记库存产品状态异常
|
||||
* @param params
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public AjaxResult inventoryStockExcetion(Map<String, Object> params){
|
||||
String rollerNumber = (String) params.get("barcode");
|
||||
String productStatus = (String)params.get("productStatus");
|
||||
|
||||
BasStock stock = basStockService.selectBasStockByRollerNumber(rollerNumber);
|
||||
if (ObjUtil.isNull(stock)){
|
||||
log.warn("【操作失败】找不到当前版辊的库存信息,可能是库存错误或入库有误,辊号:{}", rollerNumber);
|
||||
return AjaxResult.error("找不到当前版辊的库存信息,可能是库存或入库有误");
|
||||
}
|
||||
|
||||
if (stock.getProductStatus().equals(BasStockCode.PRODUCT_STATUS_NORMAL)){
|
||||
stock.setProductStatus(BasStockCode.PRODUCT_STATUS_EXCEPTION);
|
||||
basStockService.updateBasStock(stock);
|
||||
log.info("【盘点异常标记】版辊库存的<产品状态>已更新:异常待检【{}】,辊号:{}", BasStockCode.PRODUCT_STATUS_EXCEPTION, rollerNumber);
|
||||
}else{
|
||||
log.info("【盘点异常标记】版辊库存的<产品状态>已经是异常待检【{}】状态,请勿重复操作,辊号:{}", BasStockCode.PRODUCT_STATUS_EXCEPTION, rollerNumber);
|
||||
return AjaxResult.error("该版辊已经执行过出库确认操作,请勿重复操作");
|
||||
}
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 托盘扫码 - 盘点出库确认
|
||||
* @param params
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public AjaxResult inventoryTrayCodeComplete(Map<String, Object> params){
|
||||
|
||||
String trayCode = (String) params.get("barcode");
|
||||
|
||||
MydoJob mydoJob = mydoJobService.selectMydoJobByTrayCode(trayCode);
|
||||
if (ObjUtil.isNull(mydoJob)){
|
||||
log.warn("【操作失败】找不到当前出库盘点作业,可能是已经完成或者任务异常,请检查任务状态,托盘号:{}", trayCode);
|
||||
return AjaxResult.error("找不到当前出库盘点作业,可能是已经完成或者任务异常,请检查任务状态");
|
||||
}
|
||||
|
||||
if (!mydoJob.getStatus().equals(TaskStatusEnum.AUTO_FINISHED.getCode())){
|
||||
log.warn("【操作失败】请等待当前盘点作业出库完成再执行确认操作,托盘号:{}", trayCode);
|
||||
return AjaxResult.error("请等待当前盘点作业出库完成再执行确认操作");
|
||||
}
|
||||
|
||||
List<PdStockpdDetail> details = pdStockpdDetailService.selectPdStockpdDetailList(
|
||||
new PdStockpdDetail().builder().trayCode(trayCode).build()
|
||||
);
|
||||
for (PdStockpdDetail detail : details){
|
||||
detail.setAssignNum(BigDecimal.ONE);
|
||||
pdStockpdDetailService.updatePdStockpdDetail(detail);
|
||||
}
|
||||
|
||||
String jobId = basJobIdService.getId(JobIdType.JOB_MANUAL_LIST_INVENTORY_STOCKIN);
|
||||
String taskNo = basTaskNoService.getTaskNo(TaskIdType.TASK_STOCKIN_INVENTORY);
|
||||
|
||||
mydoJob.setJobId(jobId);
|
||||
mydoJob.setTaskNo(taskNo);
|
||||
mydoJob.setStatus(TaskStatusEnum.READY.getCode());
|
||||
mydoJob.setExecutionPhase("0");
|
||||
mydoJob.setInOrOut(TaskType.TASKTYPE_INVENTORY_BACK);
|
||||
mydoJobService.updateMydoJob(mydoJob);
|
||||
log.warn("【盘点出库确认】确认完成,生成盘点回库任务,等待执行中,作业号:{},托盘号:{}", jobId, trayCode);
|
||||
|
||||
basCargoSpaceService.updateBasCargoSpaceStatus(mydoJob.getCargoSpaceId(), mydoJob.getTrayCode(),CargoSpaceCode.CARGOSPACE_STATUS_PRE_STOCKIN);
|
||||
|
||||
return AjaxResult.success();
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -382,16 +382,8 @@ public class MydoJobHandler {
|
||||
if (mydoJobs.isEmpty()) return;
|
||||
|
||||
for (MydoJob mydoJob : mydoJobs) {
|
||||
//任务子表
|
||||
if (mydoJob.getInOrOut() != TaskType.TASKTYPE_STOCKOUT_INVENTORY || mydoJob.getInOrOut() != TaskType.TASKTYPE_INVENTORY_BACK) continue;
|
||||
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()){
|
||||
@@ -409,19 +401,32 @@ public class MydoJobHandler {
|
||||
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);
|
||||
// }
|
||||
// }
|
||||
|
||||
//还原盘点子单分配数量
|
||||
List<PdStockpdDetail> pdStockpdDetails = pdStockpdDetailService.selectPdStockpdDetailList(
|
||||
new PdStockpdDetail().builder().trayCode(mydoJob.getTrayCode()).build()
|
||||
);
|
||||
if(!pdStockpdDetails.isEmpty()){
|
||||
for (PdStockpdDetail pdStockpdDetail : pdStockpdDetails){
|
||||
pdStockpdDetail.setAllotNum(BigDecimal.ZERO);
|
||||
pdStockpdDetail.setAssignNum(BigDecimal.ZERO);
|
||||
pdStockpdDetail.setStatus(0);
|
||||
pdStockpdDetailService.updatePdStockpdDetail(pdStockpdDetail);
|
||||
}
|
||||
}
|
||||
|
||||
//任务子表
|
||||
List<MydoJobDetail> details = mydoJobDetailService.selectMydoJobDetailByJobId(mydoJob.getJobId());
|
||||
if (!details.isEmpty()){
|
||||
//移除任务子表
|
||||
mydoJobDetailService.insertMydoJobDetailsForJobFinish(mydoJob.getJobId());
|
||||
mydoJobDetailService.deleteMydoJobDetailsByJobId(mydoJob.getJobId());
|
||||
log.info("【手动作废任务】移除<盘点出库>任务明细,作业号:{}", mydoJob.getJobId());
|
||||
}
|
||||
|
||||
mydoJobService.insertMydoJobFinish(mydoJob.getJobId());
|
||||
mydoJobService.deleteMydoJobByJobId(mydoJob.getJobId());
|
||||
log.info("【账务处理-出库】任务作废,更新货位和库存信息,作业号:{}", mydoJob.getJobId());
|
||||
log.info("【账务处理-盘点出库】任务作废,更新货位和库存信息,作业号:{}", mydoJob.getJobId());
|
||||
|
||||
}
|
||||
|
||||
@@ -826,18 +831,9 @@ public class MydoJobHandler {
|
||||
|
||||
if (mydoJobs.isEmpty()) return;
|
||||
|
||||
|
||||
for (MydoJob mydoJob : mydoJobs) {
|
||||
//任务子表
|
||||
if (mydoJob.getInOrOut() != TaskType.TASKTYPE_STOCKOUT_INVENTORY || mydoJob.getInOrOut() != TaskType.TASKTYPE_INVENTORY_BACK) continue;
|
||||
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()){
|
||||
@@ -848,9 +844,30 @@ public class MydoJobHandler {
|
||||
}
|
||||
}
|
||||
|
||||
//还原盘点子单分配数量
|
||||
List<PdStockpdDetail> pdStockpdDetails = pdStockpdDetailService.selectPdStockpdDetailList(
|
||||
new PdStockpdDetail().builder().trayCode(mydoJob.getTrayCode()).build()
|
||||
);
|
||||
if(!pdStockpdDetails.isEmpty()){
|
||||
for (PdStockpdDetail pdStockpdDetail : pdStockpdDetails){
|
||||
pdStockpdDetail.setAssignNum(BigDecimal.ONE);
|
||||
pdStockpdDetail.setStatus(1);
|
||||
pdStockpdDetailService.updatePdStockpdDetail(pdStockpdDetail);
|
||||
}
|
||||
}
|
||||
|
||||
basCargoSpaceService.updateBasCargoSpaceStatus(mydoJob.getCargoSpaceId(), mydoJob.getTrayCode(), CargoSpaceCode.CARGOSPACE_STATUS_OCCUPIED);
|
||||
log.info("【账务处理-盘点】任务完成,更新货位和库存信息,作业号:{},托盘号:{}", mydoJob.getJobId(), mydoJob.getTrayCode());
|
||||
|
||||
//任务子表
|
||||
List<MydoJobDetail> details = mydoJobDetailService.selectMydoJobDetailByJobId(mydoJob.getJobId());
|
||||
if (!details.isEmpty()){
|
||||
//移除任务子表
|
||||
mydoJobDetailService.insertMydoJobDetailsForJobFinish(mydoJob.getJobId());
|
||||
mydoJobDetailService.deleteMydoJobDetailsByJobId(mydoJob.getJobId());
|
||||
log.info("【手动完成任务】移除<盘点>任务明细,作业号:{}", mydoJob.getJobId());
|
||||
}
|
||||
|
||||
mydoJobService.insertMydoJobFinish(mydoJob.getJobId());
|
||||
mydoJobService.deleteMydoJobByJobId(mydoJob.getJobId());
|
||||
log.info( "【账务处理-盘点】任务完成,移除作业信息,作业号:{},托盘号:{}", mydoJob.getJobId(), mydoJob.getTrayCode());
|
||||
|
||||
@@ -243,7 +243,7 @@ public class RequestWcsHandler {
|
||||
|
||||
|
||||
/**
|
||||
* 盘点确认完成 - 推送wcs回流任务
|
||||
* 盘点确认完成 - 推送wcs盘点回流任务
|
||||
*/
|
||||
@Scheduled(fixedRate = TIMEINTERVAL_2000)
|
||||
public void sendWcsInventoryBackTask(){
|
||||
|
||||
Reference in New Issue
Block a user