现场运行调整
This commit is contained in:
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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("该货位已被其它任务预占用,请等待任务执行完成后重试");
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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){
|
||||
|
||||
|
||||
@@ -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{
|
||||
|
||||
@@ -20,6 +20,14 @@ public interface OutStockoutMapper
|
||||
*/
|
||||
public OutStockout selectOutStockoutByStockoutId(String stockoutId);
|
||||
|
||||
/**
|
||||
* 查询出库单据主信息
|
||||
*
|
||||
* @param erpBill mes下发单号
|
||||
* @return 出库单据主信息
|
||||
*/
|
||||
public OutStockout selectOutStockoutByErpBill(String erpBill);
|
||||
|
||||
/**
|
||||
* 查询出库单据主信息列表
|
||||
*
|
||||
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
* 手动分配出库单据
|
||||
*
|
||||
|
||||
@@ -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("操作异常,该单据号的子单明细没有可分配的物料,请检查单据状态");
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -241,7 +241,7 @@ public class RequestWcsHandler {
|
||||
|
||||
|
||||
/**
|
||||
* 手动操作 - 推送wcs指定货位出库
|
||||
* 手动出库操作 - 推送wcs指定货位出库
|
||||
*/
|
||||
@Scheduled(fixedRate = TIMEINTERVAL_2000)
|
||||
public void stockoutMydoJobForManual(){
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -170,7 +170,7 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="是否锁定" align="center" prop="locked">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.bas_stock_stock_status" :value="scope.row.locked"/>
|
||||
<dict-tag :options="dict.type.bas_cargo_space_locked" :value="scope.row.locked"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="托盘条码" align="center" prop="trayCode" />
|
||||
@@ -329,7 +329,7 @@ import { listCargospace, getCargospace, delCargospace, addCargospace, updateCarg
|
||||
|
||||
export default {
|
||||
name: "Cargospace",
|
||||
dicts: ['bas_cargo_space_status', 'bas_stock_stock_status'],
|
||||
dicts: ['bas_cargo_space_status', 'bas_stock_stock_status', 'bas_cargo_space_locked'],
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
|
||||
Reference in New Issue
Block a user