现场运行调整

This commit is contained in:
Lenovo
2026-09-27 15:23:50 +08:00
parent 8565eb60fd
commit c89e1cec7a
15 changed files with 326 additions and 38 deletions

View File

@@ -247,7 +247,14 @@ public class ApiErpService implements IApiErpService {
log.info("【ERP出库单明细】{}", JSONUtil.toJsonStr(detail));
}
return AjaxResult.success("操作成功,下发erp出库单据号:" + docNo);
log.info("【ERP推送出库】操作成功,下发出库单据号:{}", docNo);
// outStockoutService.autoAssignOutStockout(stockoutId);
outStockoutService.autoAssignOutStockoutByErpBill(docNo);
log.info("【ERP推送出库】出库单据已经执行自动分配, 单据号:{}", docNo);
return AjaxResult.success("操作成功,erp下发出库单据号:" + docNo);
}

View File

@@ -34,7 +34,6 @@ import com.ruoyi.out.stockoutdetail.domain.OutStockoutDetail;
import com.ruoyi.out.stockoutdetail.service.IOutStockoutDetailService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -299,7 +298,7 @@ public class ApiWcsService implements IApiWcsService {
cargoParam = new BasCargoSpace().builder().theType(type).cargoAreaId(wcsStockinReiceive.getCargoAreaId()).build();
}else if (type == 2){
//1500*1200 高货位510H - 只能放指定层高的货位
cargoParam = new BasCargoSpace().builder().theType(type).cargoAreaId(wcsStockinReiceive.getCargoAreaId()).theHeight(wcsStockinReiceive.getHeight()).build();
cargoParam = new BasCargoSpace().builder().theType(type).cargoAreaId(wcsStockinReiceive.getCargoAreaId()).build();
}else{
//1500*1350 通用货位510H - 货区3任意层数
cargoParam = new BasCargoSpace().builder().theType(type).cargoAreaId(wcsStockinReiceive.getCargoAreaId()).build();
@@ -433,6 +432,11 @@ public class ApiWcsService implements IApiWcsService {
return AjaxResult.error("找不到该货位信息");
}
if (!cargoSpace.getLocked().equals(CargoSpaceCode.CARGOSPACE_LOCKED_NORMAL)){
log.warn("【操作失败】当前货位已经锁定或禁用,不能执行<指定货位出库>该操作,货位号:", cargoSpaceId);
return AjaxResult.error("当前货位已经锁定或禁用,不能执行<指定货位出库>该操作");
}
// if (!cargoSpace.getStatus().equals(CargoSpaceCode.CARGOSPACE_STATUS_OCCUPIED)){
// log.warn("【操作失败】该货位已被其它任务预占用,请等待任务执行完成后重试,货位号:", cargoSpaceId);
// return AjaxResult.error("该货位已被其它任务预占用,请等待任务执行完成后重试");

View File

@@ -1,6 +1,8 @@
package com.ruoyi.bas.cargospace.controller;
import java.util.List;
import com.ruoyi.common.CargoSpaceCode;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
@@ -42,7 +44,9 @@ public class BasCargoSpaceController extends BaseController
public TableDataInfo list(BasCargoSpace basCargoSpace)
{
startPage();
List<BasCargoSpace> list = basCargoSpaceService.selectBasCargoSpaceList(basCargoSpace);
List<BasCargoSpace> list = basCargoSpaceService.selectBasCargoSpaceList(basCargoSpace).stream()
.filter(a -> !a.getLocked().equals(CargoSpaceCode.CARGOSPACE_LOCKED_BANED))
.toList();
return getDataTable(list);
}

View File

@@ -22,10 +22,13 @@ public class CargoSpaceCode {
/** 货位锁定状态 - 锁定 */
public static final String CARGOSPACE_LOCKED = "Y";
public static final String CARGOSPACE_LOCKED_LOCK = "Y";
/** 货位锁定状态 - 未锁定 */
public static final String CARGOSPACE_UNLOCKED = "N";
public static final String CARGOSPACE_LOCKED_NORMAL = "N";
/** 货位锁定状态 - 禁用 */
public static final String CARGOSPACE_LOCKED_BANED = "B";
/** 货位对应托盘类型 - 类型1 */

View File

@@ -591,8 +591,14 @@ public class MydoJobServiceImpl implements IMydoJobService
log.info("【账务处理-手动出库】更新货位状态,作业号:{},货位编号:{},托盘号:{}", jobId, cargoSpace.getCargoSpaceId(), mydoJob.getTrayCode());
//--------------------处理任务表和子任务表--------------------
//1.更新任务主表状态
//1.更新任务主表状态并移除作业
mydoJob.setStatus(TaskStatusEnum.AUTO_FINISHED.getCode());
updateMydoJob(mydoJob);
deleteMydoJobByJobId(jobId);
//2.并移除所有子作业
mydoJobDetailService.insertMydoJobDetailsForJobFinish(jobId);
mydoJobDetailService.deleteMydoJobDetailsByJobId(jobId);
log.info("【账务处理-手动出库】出库完成,等待确认,作业号:{},托盘号:{}", jobId, mydoJob.getTrayCode());
@@ -783,6 +789,8 @@ public class MydoJobServiceImpl implements IMydoJobService
}
//>>>>>>>>>>>>>>>>>>>>>>>空托出库<<<<<<<<<<<<<<<<<<<<<<<<
//>>>>>>>>>>>>>>>>>>>>>>>空托出库<<<<<<<<<<<<<<<<<<<<<<<<
//>>>>>>>>>>>>>>>>>>>>>>>空托出库<<<<<<<<<<<<<<<<<<<<<<<<
if (type == TaskType.TASKTYPE_STOCKOUT_EMPTY_TRAY){

View File

@@ -2,6 +2,7 @@ package com.ruoyi.in.stockindetail.service.impl;
import java.util.List;
import com.ruoyi.common.Utils.DecimalUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.in.stockindetail.mapper.InStockinDetailMapper;
@@ -172,7 +173,7 @@ public class InStockinDetailServiceImpl implements IInStockinDetailService
//核对每条明细的计划数量和分配数量 - 更新分配状态
for(InStockinDetail detail : details){
if(detail.getQuantity().equals(detail.getAssignNum())){
if(DecimalUtil.eq(detail.getQuantity(), detail.getAssignNum())){
detail.setStatus(1);
updateInStockinDetail(detail);
}else{

View File

@@ -20,6 +20,14 @@ public interface OutStockoutMapper
*/
public OutStockout selectOutStockoutByStockoutId(String stockoutId);
/**
* 查询出库单据主信息
*
* @param erpBill mes下发单号
* @return 出库单据主信息
*/
public OutStockout selectOutStockoutByErpBill(String erpBill);
/**
* 查询出库单据主信息列表
*

View File

@@ -22,6 +22,14 @@ public interface IOutStockoutService
*/
public OutStockout selectOutStockoutByStockoutId(String stockoutId);
/**
* 查询出库单据主信息
*
* @param erpBill erp出库单号
* @return 出库单据主信息
*/
public OutStockout selectOutStockoutByErpBill(String erpBill);
/**
* 查询出库单据主信息列表
*
@@ -94,6 +102,22 @@ public interface IOutStockoutService
*/
public AjaxResult autoAssignOutStockout(String stockoutId);
/**
* 自动分配出库单据
*
* @param erpBill mes/erp单据
* @return 结果
*/
public AjaxResult autoAssignOutStockoutByErpBill(String erpBill);
/**
* 自动分配出库单据
*
* @param erpBill 出库单据主键
* @return 结果
*/
// public AjaxResult autoAssignOutStockout(String erpBill);
/**
* 手动分配出库单据
*

View File

@@ -84,6 +84,15 @@ public class OutStockoutServiceImpl implements IOutStockoutService
return outStockoutMapper.selectOutStockoutByStockoutId(stockoutId);
}
/**
* 查询出库单据主信息
*/
@Override
public OutStockout selectOutStockoutByErpBill(String erpBill)
{
return outStockoutMapper.selectOutStockoutByErpBill(erpBill);
}
/**
* 查询出库单据主信息列表
*/
@@ -213,7 +222,7 @@ public class OutStockoutServiceImpl implements IOutStockoutService
{
OutStockout outStockout = selectOutStockoutByStockoutId(stockoutId);
if (!outStockout.getStatus().equals(StockStatusEnum.RUNNING.getCode())){
log.warn("【出库分配】操作失败,非<执行>状态的单据不能进行分配操作,请先审核完成后点击<执行>操作,单据号:{}", stockoutId);
log.warn("【出库分配】操作失败,非<执行>状态的单据不能进行分配操作,请先审核完成后点击<执行>操作,wms单据号:{},erp单据号:{}", stockoutId, outStockout.getErpBill());
return AjaxResult.error("非【执行】状态的单据不能进行分配操作");
}
@@ -222,7 +231,223 @@ public class OutStockoutServiceImpl implements IOutStockoutService
new OutStockoutDetail().builder().stockoutId(stockoutId).allotNum(BigDecimal.valueOf(0)).build()
);
if (details.isEmpty()){
log.warn("【出库单据分配】分配失败,该单据号的子单明细没有可分配的物料,请检查单据状态,单据号:{}", stockoutId);
log.warn("【出库单据分配】分配失败,该单据号的子单明细没有可分配的物料,请检查单据状态,wms单据号:{},erp单据号:{}", stockoutId, outStockout.getErpBill());
return AjaxResult.error("操作异常,该单据号的子单明细没有可分配的物料,请检查单据状态");
}
int num = 1;
//>>>>>>>>>>>>>>>>>>>>>>分配物料<<<<<<<<<<<<<<<<<<<<<<<<<
//>>>>>>>>>>>>>>>>>>>>>>分配物料<<<<<<<<<<<<<<<<<<<<<<<<<
//>>>>>>>>>>>>>>>>>>>>>>分配物料<<<<<<<<<<<<<<<<<<<<<<<<<
for (OutStockoutDetail detail : details) {
//>>>辊号(物料)校验
if (ObjUtil.isNull(basStockService.selectBasStockByRollerNumber(detail.getRollerNumber()))){
log.warn("【出库分配异常】找不到该版辊的库存信息,辊号:{}", detail.getRollerNumber());
continue;
}
//1.获取子单明细辊号对应的库存,拿到出库板棍的托盘号用于生成主作业
BasStock stock = basStockService.selectBasStockByRollerNumber(detail.getRollerNumber());
//>>>获取出库货位 - 如果是<双伸货位>且对应<单伸货位有货>的情况则触发【移库作业】
BasCargoSpace cargoCurrent = basCargoSpaceService.selectBasCargoSpaceByCargoSpaceId(stock.getCargoSpaceId());
//【移库判断】如果双伸位,则需要额外判断其对应的单伸货位状态和库存
if (cargoCurrent.getIssDouble().equals(CargoSpaceCode.CARGOSPACE_ISDOUBLE_Y)){
//【移库判断-1】此处获取出库双伸货位对应的外侧单伸货位号进行移库
BasCargoSpace cargoSingle = basCargoSpaceService.selectAnotherBasCargoSpaceBySameGroup(cargoCurrent);
//【移库判断-2】如果单伸位有货,触发移库作业
if (cargoSingle.getStatus().equals(CargoSpaceCode.CARGOSPACE_STATUS_OCCUPIED)){
String moveJobId = basJobIdService.getId(JobIdType.MYDOJOB_MOVE);
String moveTaskNo = basTaskNoService.getTaskNo(TaskIdType.TASK_STOCKOUT);
BasCargoSpace targetCargo = basCargoSpaceService.selectBasCargoSpaceForStockin(
new BasCargoSpace().builder().theType(cargoCurrent.getTheType()).roadwayId(cargoCurrent.getRoadwayId()).build()
);
//生成并推送移库
MydoJob moveJob = new MydoJob().builder()
.jobId(moveJobId)
.taskNo(moveTaskNo)
.status(TaskStatusEnum.READY.getCode())
.inOrOut(TaskType.TASKTYPE_PICK_STOCK_MOVE)
.executionPhase("0")
.trayCode(cargoSingle.getTrayCode())
.trayType(cargoSingle.getTheType())
.roadwayId(cargoSingle.getRoadwayId())
.cargoSpaceId(cargoSingle.getCargoSpaceId())
.targetCargoSpaceId(targetCargo.getCargoSpaceId())
.priority(0)
.build();
log.info("【出库分配】出库双伸货位外侧有货,生成移库作业,作业号:{},移库货位:{},目标货位:{}", moveJobId, cargoSingle.getCargoSpaceId(), targetCargo.getCargoSpaceId());
//推送移库
AjaxResult ajaxResult;
/*-----------------推送wcs移库任务----------------- */
HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("reqCode", UUID.randomUUID().toString());//请求码
paramMap.put("jobId", moveJob.getJobId());//容器编号
paramMap.put("trayCode", moveJob.getTrayCode().trim());//容器编号
paramMap.put("cargoSpaceId", moveJob.getCargoSpaceId());//货位
paramMap.put("targetCargoSpaceId", moveJob.getTargetCargoSpaceId());//目标货位
paramMap.put("inOrOut", moveJob.getInOrOut());//任务类型
paramMap.put("priority", 0);//任务优先级
ajaxResult = apiWcsService.sendMoveMydoJob(paramMap);
log.info(
"【出库分配-移库】推送wcs移库作业,作业号:{},托盘条码:{},移库货位:{},目标货位:{}", moveJob.getJobId(), moveJob.getTrayCode(), moveJob.getCargoSpaceId(), moveJob.getTargetCargoSpaceId()
);
if (ajaxResult.isSuccess()){
//生成托盘主作业
mydoJobService.insertMydoJob(moveJob);
//生成主任务后子任务明细重新计数
num = 1;
log.info(
"【出库分配-移库】推送成功,作业号:{},托盘条码:{},移库货位:{},目标货位:{}", moveJob.getJobId(), moveJob.getTrayCode(), moveJob.getCargoSpaceId(), moveJob.getTargetCargoSpaceId()
);
//更新库存表货位【占用】状态
stock.setStockStatus(BasStockCode.STOCK_STATUS_OCCUPIED);
basStockService.updateBasStock(stock);
//更新货位表【预占用】状态
basCargoSpaceService.updateBasCargoSpaceStatus(cargoSingle.getCargoSpaceId(),cargoSingle.getTrayCode(),CargoSpaceCode.CARGOSPACE_STATUS_PRE_STOCKOUT);
basCargoSpaceService.updateBasCargoSpaceStatus(targetCargo.getCargoSpaceId(),cargoSingle.getTrayCode(),CargoSpaceCode.CARGOSPACE_STATUS_PRE_STOCKIN);
}
}
}//执行完移库判断
//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.如果全部匹配,则任务类型为整托出库,否则为拣选出库
int taskType = TaskType.TASKTYPE_STOCKOUT_PICKING;
//匹配出库版辊确认是【整托出库】还是【拣选出库】
List<String> detailRollerNumbers = outStockoutDetailService.selectOutStockoutDetailRollerNumberList(detail.getStockoutId());//【子单所有辊号集合】
List<String> stockRollerNumbers = basStockService.selectBasStockRollerNumberList(stock.getTrayCode());//【库存托盘辊号集合】
if (detailRollerNumbers.containsAll(stockRollerNumbers)){
taskType = TaskType.TASKTYPE_STOCKOUT;
}
mydoJob = new MydoJob().builder()
.jobId(jobId)
.taskNo(taskNo)
.status(TaskStatusEnum.READY.getCode())
.inOrOut(taskType)
.executionPhase("0")
.trayCode(cargoCurrent.getTrayCode())
.trayType(cargoCurrent.getTheType())
.roadwayId(cargoCurrent.getRoadwayId())
.cargoSpaceId(cargoCurrent.getCargoSpaceId())
.cargoSpaceName(cargoCurrent.getThePlatoon() + "排" + cargoCurrent.getTheColumn() + "列" + cargoCurrent.getTheFloor() + "层")
.priority(10)
.build();
//生成托盘主作业
mydoJobService.insertMydoJob(mydoJob);
num = 1;
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);
//
// }
}
//若主任务已经存在,则补充一条子作业
mydoJobDetailService.insertMydoJobDetail(
new MydoJobDetail().builder()
.jobId(mydoJob.getJobId())
.jobDetailId(mydoJob.getJobId() + "-" + num++)
.inOrOutId(detail.getStockoutId())
.inOrOutDId(detail.getStockoutDetailId())
.stockinId(stock.getStockinId())
.stockinDetailId(stock.getStockinDetailId())
.productId(detail.getProductId())
.productName(stock.getProductName())
.lotNo(detail.getLotNo())
.stockQuantity(stock.getQuantity())
.outQuantity(BigDecimal.ZERO)
.trayType(cargoCurrent.getTheType())
.status(0)
.inDate(stock.getInDate())
.rollerNumber(stock.getRollerNumber())
.build()
);
//更新库存明细【占用】
stock.setStockStatus(BasStockStatusEnum.OCCUPIED.getCode());//库存状态
stock.setOutQuantity(detail.getQuantity());//出库数量
basStockService.updateBasStock(stock);
//生成子作业后更新子单【分配数量】
detail.setAllotNum(BigDecimal.valueOf(1));
outStockoutDetailService.updateOutStockoutDetail(detail);
log.info("【出库分配】生成子作业,作业号:{},辊号:{}", mydoJob.getJobId(), stock.getRollerNumber());
}
log.info("【出库单据分配】分配成功,单据号:{}", details.get(0).getStockoutId());
return AjaxResult.success();
}
@Override
public AjaxResult autoAssignOutStockoutByErpBill(String erpBill)
{
OutStockout outStockout = selectOutStockoutByErpBill(erpBill);
if (!outStockout.getStatus().equals(StockStatusEnum.RUNNING.getCode())){
log.warn("【出库分配】操作失败,非<执行>状态的单据不能进行分配操作,请先审核完成后点击<执行>操作,wms单据号:{},erp单据号:{}", outStockout.getStockoutId(), erpBill);
return AjaxResult.error("非【执行】状态的单据不能进行分配操作");
}
//校验>>>出库单据明细
List<OutStockoutDetail> details = outStockoutDetailService.selectOutStockoutDetailList(
new OutStockoutDetail().builder().stockoutId(outStockout.getStockoutId()).allotNum(BigDecimal.valueOf(0)).build()
);
if (details.isEmpty()){
log.warn("【出库单据分配】分配失败,该单据号的子单明细没有可分配的物料,请检查单据状态,wms单据号:{},erp单据号:{}", outStockout.getStockoutId(), erpBill);
return AjaxResult.error("操作异常,该单据号的子单明细没有可分配的物料,请检查单据状态");
}

View File

@@ -121,28 +121,6 @@ public class PdaStockoutController extends BaseController {
}
/**
* 【手动指定出库】出库确认 - 托盘号查询 - 仅查询托盘上出库单中包含的版辊信息
* @param trayCode 托盘号
* @return
*/
@GetMapping("/getManualStockoutInfoByTrayCode")
@PreAuthorize("@ss.hasPermi('out:bound:task:info')")
public AjaxResult getManualStockoutInfoByTrayCode(String trayCode) {
try {
MydoJob job = mydoJobService.selectMydoJobByTrayCode(trayCode);
List<MydoJobDetail> info = pdaService.getStockoutInfoByTrayCode(trayCode);
if(ObjUtil.isNull(job) || info.isEmpty() || job.getInOrOut() != TaskType.TASKTYPE_STOCKOUT_MANUAL){
return AjaxResult.error("找不到当前<手动>出库作业明细,请检查作业状态");
}else{
return AjaxResult.success(info);
}
} catch (RuntimeException e) {
return AjaxResult.error(e.getMessage());
}
}
/**
* 呼叫空托出库
* @param params 货位区域,托盘类型
@@ -203,6 +181,28 @@ public class PdaStockoutController extends BaseController {
}
/**
* 【手动指定出库】出库确认 - 托盘号查询 - 仅查询托盘上出库单中包含的版辊信息
* @param trayCode 托盘号
* @return
*/
@GetMapping("/getManualStockoutInfoByTrayCode")
@PreAuthorize("@ss.hasPermi('out:bound:task:info')")
public AjaxResult getManualStockoutInfoByTrayCode(String trayCode) {
try {
MydoJob job = mydoJobService.selectMydoJobByTrayCode(trayCode);
List<MydoJobDetail> info = pdaService.getStockoutInfoByTrayCode(trayCode);
if(ObjUtil.isNull(job) || info.isEmpty() || job.getInOrOut() != TaskType.TASKTYPE_STOCKOUT_MANUAL){
return AjaxResult.error("找不到当前<手动>出库作业明细,请检查作业状态");
}else{
return AjaxResult.success(info);
}
} catch (RuntimeException e) {
return AjaxResult.error(e.getMessage());
}
}
/**
* 出库确认 - 一键确认 - 托盘统一更新出库数量
* @param trayCode

View File

@@ -215,7 +215,6 @@ public class PdaServiceImpl implements IPdaService {
//>>>扣减子单的【扫码数量】
detail.setScanNum(BigDecimal.valueOf(1));
detail.setStatus(1);
inStockinDetailService.updateInStockinDetail(detail);
log.info("【绑定信息】<常规入库>绑定信息,生成绑定信息,更新子单扫码数量,辊号:{},托盘号:{}",bindTrayMsg.getRollerNumber(), bindTrayMsg.getTrayCode());
@@ -336,7 +335,6 @@ public class PdaServiceImpl implements IPdaService {
//>>>扣减子单的【扫码数量】
detail.setScanNum(BigDecimal.valueOf(1));
detail.setStatus(1);
inStockinDetailService.updateInStockinDetail(detail);
log.info("【绑定信息】<常规入库>操作成功,生成绑定信息,更新子单已扫码数量,辊号:{},托盘号:{}",item.getRollerNumber(), bindTrayMsg.getTrayCode());

View File

@@ -774,9 +774,9 @@ 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());

View File

@@ -241,7 +241,7 @@ public class RequestWcsHandler {
/**
* 手动操作 - 推送wcs指定货位出库
* 手动出库操作 - 推送wcs指定货位出库
*/
@Scheduled(fixedRate = TIMEINTERVAL_2000)
public void stockoutMydoJobForManual(){

View File

@@ -53,6 +53,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectOutStockoutVo"/>
where stockout_id = #{stockoutId}
</select>
<select id="selectOutStockoutByErpBill" parameterType="String" resultMap="OutStockoutResult">
<include refid="selectOutStockoutVo"/>
where erp_bill = #{erpBill}
</select>
<select id="selectOutStockoutFinishList" parameterType="OutStockout" resultMap="OutStockoutResult">
<include refid="selectOutStockoutFinishVo"/>
<where>