测试修改

This commit is contained in:
liuhanqing
2025-07-17 14:21:11 +08:00
parent f7a79cdc7e
commit 1cbb1a12a8
21 changed files with 348 additions and 167 deletions

View File

@@ -27,9 +27,9 @@ public class ToWmsApiController {
/**
* 入库任务请求
*/
@PostMapping("/inJob")
public AjaxResult inJob(@RequestBody MydoJob mydoJob) {
AjaxResult ajaxResult = toWmsService.inJob(mydoJob);
@PostMapping("/requestEnter")
public AjaxResult requestEnter(@RequestBody MydoJob mydoJob) {
AjaxResult ajaxResult = toWmsService.requestEnter(mydoJob);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(mydoJob), "InJob");
requestLog.setResponseBody(Convert.toStr(ajaxResult.get("msg")));
requestLogService.insertRequestLog(requestLog);

View File

@@ -11,7 +11,7 @@ import java.util.Map;
*/
public interface IToWmsService {
AjaxResult inJob(MydoJob mydoJob);
AjaxResult requestEnter(MydoJob mydoJob);
AjaxResult jobFinish(WmsJobRequest wmsJobRequest);

View File

@@ -71,12 +71,21 @@ public class ToWmsServiceImpl implements IToWmsService {
@Override
public AjaxResult inJob(MydoJob mydoJob) {
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobList(mydoJob);
public AjaxResult requestEnter(MydoJob param) {
MydoJob mydoJobParam = new MydoJob();
mydoJobParam.setTrayCode(param.getTrayCode());
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobListApi(mydoJobParam);
if(mydoJobs.isEmpty()){
return AjaxResult.error("此托盘没有作业");
}
return AjaxResult.success(mydoJobs.get(0));
MydoJob mydoJob = mydoJobs.get(0);
if ("1".equals(mydoJob.getExecutionPhase())){
mydoJob.setExecutionPhase("2");
mydoJob.setEntranceId(param.getEntranceId());
mydoJob.setStatus("3");
mydoJobService.updateMydoJob(mydoJob);
}
return AjaxResult.success(mydoJob);
}
@Override
@@ -93,7 +102,7 @@ public class ToWmsServiceImpl implements IToWmsService {
//入库
mydoJobParam.setTaskNo(wmsJobRequest.getTaskNo());
mydoJobParam.setTrayCode(wmsJobRequest.getTrayCode());
List<MydoJob> inMydoJobs = mydoJobService.selectMydoJobList(mydoJobParam);
List<MydoJob> inMydoJobs = mydoJobService.selectMydoJobListApi(mydoJobParam);
if (inMydoJobs.isEmpty()){
return AjaxResult.error("没有该作业 taskNo: {}", wmsJobRequest.getTaskNo());
}
@@ -113,7 +122,7 @@ public class ToWmsServiceImpl implements IToWmsService {
//出库
mydoJobParam.setTaskNo(wmsJobRequest.getTaskNo());
mydoJobParam.setTrayCode(wmsJobRequest.getTrayCode());
List<MydoJob> outMydoJobs = mydoJobService.selectMydoJobList(mydoJobParam);
List<MydoJob> outMydoJobs = mydoJobService.selectMydoJobListApi(mydoJobParam);
if (outMydoJobs.isEmpty()){
return AjaxResult.error("没有该作业 taskNo: {}", wmsJobRequest.getTaskNo());
}

View File

@@ -28,6 +28,7 @@ public interface IMydoJobService
* @return 任务表集合
*/
public List<MydoJob> selectMydoJobList(MydoJob mydoJob);
public List<MydoJob> selectMydoJobListApi(MydoJob mydoJob);
/**
* 新增任务表

View File

@@ -90,6 +90,17 @@ public class MydoJobServiceImpl implements IMydoJobService {
return mydoJobMapper.selectMydoJobList(mydoJob);
}
/**
* 对外接口查询任务表列表
*
* @param mydoJob
* @return
*/
@Override
public List<MydoJob> selectMydoJobListApi(MydoJob mydoJob) {
return mydoJobMapper.selectMydoJobList(mydoJob);
}
/**
* 新增任务表
*
@@ -148,27 +159,37 @@ public class MydoJobServiceImpl implements IMydoJobService {
if (job == null) {
return AjaxResult.warn("任务不存在");
}
if(!"1".equals(job.getStatus())) {
if (!"1".equals(job.getStatus())) {
return AjaxResult.warn("任务已开始");
}
MydoJobDetail param = new MydoJobDetail();
param.setJobId(jobId);
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(param);
if ("1".equals(job.getInOrOut()) || "4".equals(job.getInOrOut())) {
mydoJob.setStatus("5");
updateMydoJob(mydoJob);
//插入历史表
insertHistory(mydoJob.getJobId());
for (MydoJobDetail mydoJobDetail : mydoJobDetails) {
String inOrOutDId = mydoJobDetail.getInOrOutDId();
InStockinDetail inStockinDetail = inStockinDetailService.selectInStockinDetailByStockinDetailId(inOrOutDId);
BigDecimal stockInNum = Convert.toBigDecimal(inStockinDetail.getScanNum());
BigDecimal jobInNum = Convert.toBigDecimal(mydoJobDetail.getInQuantity());
BigDecimal subtract = stockInNum.subtract(jobInNum);
inStockinDetail.setScanNum(Convert.toStr(subtract));
inStockinDetailService.updateInStockinDetail(inStockinDetail);
return AjaxResult.success();
} else {
MydoJobDetail param = new MydoJobDetail();
param.setJobId(jobId);
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(param);
for (MydoJobDetail mydoJobDetail : mydoJobDetails) {
String inOrOutDId = mydoJobDetail.getInOrOutDId();
InStockinDetail inStockinDetail = inStockinDetailService.selectInStockinDetailByStockinDetailId(inOrOutDId);
BigDecimal stockInNum = Convert.toBigDecimal(inStockinDetail.getScanNum());
BigDecimal jobInNum = Convert.toBigDecimal(mydoJobDetail.getInQuantity());
BigDecimal subtract = stockInNum.subtract(jobInNum);
inStockinDetail.setScanNum(Convert.toStr(subtract));
inStockinDetailService.updateInStockinDetail(inStockinDetail);
}
mydoJob.setStatus("5");
updateMydoJob(mydoJob);
//插入历史表
insertHistory(mydoJob.getJobId());
return AjaxResult.success();
}
mydoJob.setStatus("5");
updateMydoJob(mydoJob);
//插入历史表
insertHistory(mydoJob.getJobId());
return AjaxResult.success();
}
/**
@@ -194,21 +215,122 @@ public class MydoJobServiceImpl implements IMydoJobService {
if (job == null) {
return AjaxResult.warn("任务不存在");
}
//入库作业
MydoJobDetail param = new MydoJobDetail();
param.setJobId(jobId);
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(param);
BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByCargoSpaceId(job.getCargoSpaceId());
if (CollUtil.isNotEmpty(mydoJobDetails)) {
List<BasStock> list = new ArrayList<>();
if ("1".equals(job.getStatus()) || "2".equals(job.getStatus())) {
return AjaxResult.warn("任务未开始");
}
if ("1".equals(job.getInOrOut()) || "4".equals(job.getInOrOut())) {
//空料箱入库 托盘垛入库
//入库作业
MydoJobDetail param = new MydoJobDetail();
param.setJobId(jobId);
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(param);
BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByCargoSpaceId(job.getCargoSpaceId());
if (CollUtil.isNotEmpty(mydoJobDetails)) {
List<BasStock> list = new ArrayList<>();
for (MydoJobDetail mydoJobDetail : mydoJobDetails) {
//正常库存
list.add(getStockByInStockinDetail(mydoJobDetail, job, "1"));
}
//修改货位状态
basCargoSpace.setStatus("2");
basCargoSpace.setTrayCode(job.getTrayCode());
basCargoSpace.setCargoSpaceId(job.getCargoSpaceId());
basCargoSpaceService.updateBasCargoSpace(basCargoSpace);
//插入库存信息
basStockService.insertBasStockList(list);
//结束任务
mydoJob.setStatus("4");
updateMydoJob(mydoJob);
// 插入任务历史表 删除任务
insertHistory(mydoJob.getJobId());
return AjaxResult.success();
} else {
return AjaxResult.warn("子任务不存在");
}
} else if ("2".equals(job.getInOrOut()) || "3".equals(job.getInOrOut())) {
//ctu物料入库 高架库入库
//入库作业
MydoJobDetail param = new MydoJobDetail();
param.setJobId(jobId);
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(param);
BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByCargoSpaceId(job.getCargoSpaceId());
if (CollUtil.isNotEmpty(mydoJobDetails)) {
List<BasStock> list = new ArrayList<>();
//查找是否存在异常信息
OutExceptionRecord outExceptionRecordParam = new OutExceptionRecord();
outExceptionRecordParam.setTrayCode(job.getTrayCode());
outExceptionRecordParam.setWarehouseId(job.getWarehouseId());
List<OutExceptionRecord> outExceptionRecords = outExceptionRecordService.selectOutExceptionRecordList(outExceptionRecordParam);
for (MydoJobDetail mydoJobDetail : mydoJobDetails) {
//修改单据实际数量 物料入库 高架库入库
String inOrOutDId = mydoJobDetail.getInOrOutDId();
InStockinDetail inStockinDetail = inStockinDetailService.selectInStockinDetailByStockinDetailId(inOrOutDId);
inStockinDetail.setAssignNum(Convert.toStr(Convert.toBigDecimal(inStockinDetail.getAssignNum()).add(Convert.toBigDecimal(mydoJobDetail.getInQuantity()))));
inStockinDetailService.updateInStockinDetail(inStockinDetail);
Optional<OutExceptionRecord> first = outExceptionRecords.stream().filter(x -> x.getTrayCode().equals(job.getTrayCode()) && x.getProductId().equals(mydoJobDetail.getProductId())).findFirst();
if (first.isPresent()) {
//生成异常库存
BasStock stockByInStockinDetail = getStockByInStockinDetail(mydoJobDetail, job, "3");
list.add(stockByInStockinDetail);
//修改异常记录中的库存id
OutExceptionRecord outExceptionRecord = first.get();
outExceptionRecord.setStockId(stockByInStockinDetail.getStockId());
outExceptionRecordService.updateOutExceptionRecord(outExceptionRecord);
} else {
//正常库存
list.add(getStockByInStockinDetail(mydoJobDetail, job, "1"));
}
}
//删除异常库存记录
List<Long> collect = outExceptionRecords.stream().map(OutExceptionRecord::getOutGuid).collect(Collectors.toList());
if (CollUtil.isNotEmpty(collect)) {
for (Long id : collect) {
outExceptionRecordService.deleteOutExceptionRecordByOutGuid(id);
}
}
//修改货位状态
basCargoSpace.setStatus("2");
basCargoSpace.setTrayCode(job.getTrayCode());
basCargoSpace.setCargoSpaceId(job.getCargoSpaceId());
basCargoSpaceService.updateBasCargoSpace(basCargoSpace);
//插入库存信息
basStockService.insertBasStockList(list);
//结束任务
mydoJob.setStatus("4");
updateMydoJob(mydoJob);
// 插入任务历史表 删除任务
insertHistory(mydoJob.getJobId());
return AjaxResult.success();
} else {
return AjaxResult.warn("子任务不存在");
}
} else if ("5".equals(job.getInOrOut()) || "6".equals(job.getInOrOut())) {
//盘点 ctu入库 高架库入库
//入库作业
MydoJobDetail param = new MydoJobDetail();
param.setJobId(jobId);
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(param);
BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByCargoSpaceId(job.getCargoSpaceId());
if (CollUtil.isNotEmpty(mydoJobDetails)) {
List<BasStock> list = new ArrayList<>();
if ("5".equals(job.getInOrOut()) || "6".equals(job.getInOrOut())) {
//查询盘点信息中的异常信息
CheckDifferenceRecord checkDifferenceRecordParam = new CheckDifferenceRecord();
checkDifferenceRecordParam.setTrayCode(job.getTrayCode());
checkDifferenceRecordParam.setWarehouseId(job.getWarehouseId());
List<CheckDifferenceRecord> checkDifferenceRecords = checkDifferenceRecordService.selectCheckDifferenceRecordList(checkDifferenceRecordParam);
for (MydoJobDetail mydoJobDetail : mydoJobDetails) {
//修改单据实际数量
String inOrOutDId = mydoJobDetail.getInOrOutDId();
InStockinDetail inStockinDetail = inStockinDetailService.selectInStockinDetailByStockinDetailId(inOrOutDId);
inStockinDetail.setAssignNum(Convert.toStr(Convert.toBigDecimal(inStockinDetail.getAssignNum()).add(Convert.toBigDecimal(mydoJobDetail.getInQuantity()))));
inStockinDetailService.updateInStockinDetail(inStockinDetail);
//如果存在盘点异常信息 根据托盘条码和物料id 筛选异常信息
Optional<CheckDifferenceRecord> first = checkDifferenceRecords.stream().filter(x -> x.getTrayCode().equals(job.getTrayCode()) && x.getProductId().equals(mydoJobDetail.getProductId())).findFirst();
if (first.isPresent()) {
@@ -226,61 +348,32 @@ public class MydoJobServiceImpl implements IMydoJobService {
}
}
//修改货位状态
basCargoSpace.setStatus("2");
basCargoSpace.setTrayCode(job.getTrayCode());
basCargoSpace.setCargoSpaceId(job.getCargoSpaceId());
basCargoSpaceService.updateBasCargoSpace(basCargoSpace);
//插入库存信息
basStockService.insertBasStockList(list);
//结束任务
mydoJob.setStatus("4");
updateMydoJob(mydoJob);
// 插入任务历史表 删除任务
insertHistory(mydoJob.getJobId());
return AjaxResult.success();
} else {
//查找是否存在异常信息
OutExceptionRecord outExceptionRecordParam = new OutExceptionRecord();
outExceptionRecordParam.setTrayCode(job.getTrayCode());
outExceptionRecordParam.setWarehouseId(job.getWarehouseId());
List<OutExceptionRecord> outExceptionRecords = outExceptionRecordService.selectOutExceptionRecordList(outExceptionRecordParam);
for (MydoJobDetail mydoJobDetail : mydoJobDetails) {
Optional<OutExceptionRecord> first = outExceptionRecords.stream().filter(x -> x.getTrayCode().equals(job.getTrayCode()) && x.getProductId().equals(mydoJobDetail.getProductId())).findFirst();
if (first.isPresent()){
//生成异常库存
BasStock stockByInStockinDetail = getStockByInStockinDetail(mydoJobDetail, job, "3");
list.add(stockByInStockinDetail);
//修改异常记录中的库存id
OutExceptionRecord outExceptionRecord = first.get();
outExceptionRecord.setStockId(stockByInStockinDetail.getStockId());
outExceptionRecordService.updateOutExceptionRecord(outExceptionRecord);
}else {
//正常库存
list.add(getStockByInStockinDetail(mydoJobDetail, job, "1"));
}
}
//删除异常库存记录
List<Long> collect = outExceptionRecords.stream().map(OutExceptionRecord::getOutGuid).collect(Collectors.toList());
if (CollUtil.isNotEmpty( collect)){
for (Long id : collect) {
outExceptionRecordService.deleteOutExceptionRecordByOutGuid(id);
}
}
return AjaxResult.warn("子任务不存在");
}
//修改货位状态
basCargoSpace.setStatus("2");
basCargoSpace.setTrayCode(job.getTrayCode());
basCargoSpace.setCargoSpaceId(job.getCargoSpaceId());
basCargoSpaceService.updateBasCargoSpace(basCargoSpace);
//插入库存信息
basStockService.insertBasStockList(list);
//结束任务
mydoJob.setStatus("4");
updateMydoJob(mydoJob);
// 插入任务历史表 删除任务
insertHistory(mydoJob.getJobId());
return AjaxResult.success();
} else {
return AjaxResult.warn("子任务不存在");
return AjaxResult.warn("暂不支持的任务类型");
}
}
private BasStock getStockByInStockinDetail(MydoJobDetail mydoJobDetail, MydoJob mydoJob,String productStatus) {
private BasStock getStockByInStockinDetail(MydoJobDetail mydoJobDetail, MydoJob mydoJob, String productStatus) {
BasStock stock = new BasStock();
stock.setStockId(basJobIdService.getJobId("KC"));
stock.setCargoSpaceId(mydoJob.getCargoSpaceId());
@@ -360,16 +453,16 @@ public class MydoJobServiceImpl implements IMydoJobService {
HashMap<String, Object> map = new HashMap<>();
String msg = "";
String Stringbuilder = "";
for(String stockId:stockIds){
map.put("stockId",stockId);
for (String stockId : stockIds) {
map.put("stockId", stockId);
mydoJobMapper.pointOut(map);
String result = map.get("result").toString();
if("10".equals(result)){
msg="操作成功!";
}else{
msg=map.get("v_resultmsg").toString();
if ("10".equals(result)) {
msg = "操作成功!";
} else {
msg = map.get("v_resultmsg").toString();
}
Stringbuilder+=stockId+msg+"<br/>";
Stringbuilder += stockId + msg + "<br/>";
}
return AjaxResult.success(Stringbuilder.toString());

View File

@@ -6,15 +6,15 @@ import com.ruoyi.out.outStockout.domain.OutStockout;
/**
* 出库主单Mapper接口
*
*
* @author ruoyi
* @date 2025-05-20
*/
public interface OutStockoutMapper
public interface OutStockoutMapper
{
/**
* 查询出库主单
*
*
* @param stockoutGuid 出库主单主键
* @return 出库主单
*/
@@ -22,7 +22,7 @@ public interface OutStockoutMapper
/**
* 查询出库主单列表
*
*
* @param outStockout 出库主单
* @return 出库主单集合
*/
@@ -30,7 +30,7 @@ public interface OutStockoutMapper
/**
* 新增出库主单
*
*
* @param outStockout 出库主单
* @return 结果
*/
@@ -38,7 +38,7 @@ public interface OutStockoutMapper
/**
* 修改出库主单
*
*
* @param outStockout 出库主单
* @return 结果
*/
@@ -46,7 +46,7 @@ public interface OutStockoutMapper
/**
* 删除出库主单
*
*
* @param stockoutGuid 出库主单主键
* @return 结果
*/
@@ -54,7 +54,7 @@ public interface OutStockoutMapper
/**
* 批量删除出库主单
*
*
* @param stockoutGuids 需要删除的数据主键集合
* @return 结果
*/
@@ -63,4 +63,6 @@ public interface OutStockoutMapper
public void updateOutStockoutStatus(HashMap<String,String> map);
void autoAllot(HashMap<String, String> map);
OutStockout selectOutStockoutByStockoutId(String stockoutId);
}

View File

@@ -158,6 +158,15 @@ public class OutStockoutServiceImpl implements IOutStockoutService
@Override
public AjaxResult autoAllot(String stockoutId) {
OutStockout outStockout = outStockoutMapper.selectOutStockoutByStockoutId(stockoutId);
if (outStockout == null){
return AjaxResult.warn("未找到出库单");
}
if ("1".equals(outStockout.getStatus())){
return AjaxResult.warn("出库单状态未审核");
}
HashMap<String, String> map = new HashMap<>();
StringBuilder stringBuilder = new StringBuilder();
OutStockoutDetail outStockoutDetail = new OutStockoutDetail();

View File

@@ -216,10 +216,10 @@ public class PdaServiceImp implements PdaService {
@Transactional(rollbackFor = Exception.class)
public AjaxResult outMakeSure(TrayCodeMakeSure trayCodeMakeSure) {
List<MydoJobDetail> mydoJobDetailList = trayCodeMakeSure.getMydoJobDetailList();
/*List<MydoJobDetail> mydoJobDetailList = trayCodeMakeSure.getMydoJobDetailList();
if(CollUtil.isEmpty(mydoJobDetailList)){
return AjaxResult.warn("拣选的物料不能为空");
}
}*/
//判断任务是否存在
MydoJob mydoJobParam = new MydoJob();
mydoJobParam.setTrayCode(trayCodeMakeSure.getTrayCode());
@@ -247,10 +247,10 @@ public class PdaServiceImp implements PdaService {
switch (billType) {
case "1":
//拣选单据
return handleOutType1(trayCodeMakeSure,mydoJobDetailList,mydoJobList.get(0));
return handleOutType1(trayCodeMakeSure, mydoJobDetails, mydoJobList.get(0));
case "2":
//退货单据 不绑定容器
return handleOutType2(trayCodeMakeSure,mydoJobDetailList,mydoJobList.get(0));
return handleOutType2(trayCodeMakeSure, mydoJobDetails, mydoJobList.get(0));
default:
return AjaxResult.warn("单据类型错误");
}
@@ -258,20 +258,22 @@ public class PdaServiceImp implements PdaService {
/**
* 处理退货出库
*
* @param trayCodeMakeSure
* @param mydoJobDetailList
* @param mydoJob
* @return
*/
private AjaxResult handleOutType2(TrayCodeMakeSure trayCodeMakeSure,List<MydoJobDetail> mydoJobDetailList,MydoJob mydoJob) {
private AjaxResult handleOutType2(TrayCodeMakeSure trayCodeMakeSure, List<MydoJobDetail> mydoJobDetailList, MydoJob mydoJob) {
//修改拣选数量
for (MydoJobDetail mydoJobDetail : mydoJobDetailList) {
MydoJobDetail mydoJobDetailOld = mydoJobDetailService.selectMydoJobDetailByJobDetailId(mydoJobDetail.getJobDetailId());
BigDecimal oldPickQuantity = Convert.toBigDecimal(mydoJobDetailOld.getPickQuantity());
BigDecimal newPickQuantity = Convert.toBigDecimal(mydoJobDetail.getPickQuantity());
mydoJobDetailOld.setPickQuantity(oldPickQuantity.add(newPickQuantity).toString());
mydoJobDetailService.updateMydoJobDetail(mydoJobDetailOld);
//修改拣选数量
//MydoJobDetail mydoJobDetailOld = mydoJobDetailService.selectMydoJobDetailByJobDetailId(mydoJobDetail.getJobDetailId());
/*BigDecimal oldPickQuantity = Convert.toBigDecimal(mydoJobDetailOld.getPickQuantity());
BigDecimal newPickQuantity = Convert.toBigDecimal(mydoJobDetail.getOutQuantity());*/
mydoJobDetail.setPickQuantity(mydoJobDetail.getOutQuantity());
mydoJobDetailService.updateMydoJobDetail(mydoJobDetail);
//修改电子标签
TagTask param = new TagTask();
param.setJobDetailId(mydoJobDetail.getJobDetailId());
@@ -279,13 +281,13 @@ public class PdaServiceImp implements PdaService {
if (CollUtil.isNotEmpty(tagTasks)) {
TagTask tagTask = tagTasks.get(0);
BigDecimal num = Convert.toBigDecimal(tagTask.getNum());
if (num.compareTo(newPickQuantity) == 0){
tagTask.setStatus("2");
tagTaskService.updateTagTask(tagTask);
}else {
/*if (num.compareTo(newPickQuantity) == 0){*/
tagTask.setStatus("2");
tagTaskService.updateTagTask(tagTask);
/*}else {
tagTask.setNum(num.subtract(newPickQuantity).toString());
tagTaskService.updateTagTask(tagTask);
}
}*/
}
}
@@ -312,44 +314,45 @@ public class PdaServiceImp implements PdaService {
/**
* 处理正常出库
*
* @param trayCodeMakeSure
* @param mydoJobDetailList
* @param mydoJob
* @return
*/
private AjaxResult handleOutType1(TrayCodeMakeSure trayCodeMakeSure,List<MydoJobDetail> mydoJobDetailList,MydoJob mydoJob) {
private AjaxResult handleOutType1(TrayCodeMakeSure trayCodeMakeSure, List<MydoJobDetail> mydoJobDetailList, MydoJob mydoJob) {
for (MydoJobDetail mydoJobDetail : mydoJobDetailList) {
//修改拣选数量
MydoJobDetail mydoJobDetailOld = mydoJobDetailService.selectMydoJobDetailByJobDetailId(mydoJobDetail.getJobDetailId());
BigDecimal oldPickQuantity = Convert.toBigDecimal(mydoJobDetailOld.getPickQuantity());
BigDecimal newPickQuantity = Convert.toBigDecimal(mydoJobDetail.getPickQuantity());
mydoJobDetailOld.setPickQuantity(oldPickQuantity.add(newPickQuantity).toString());
mydoJobDetailService.updateMydoJobDetail(mydoJobDetailOld);
//MydoJobDetail mydoJobDetailOld = mydoJobDetailService.selectMydoJobDetailByJobDetailId(mydoJobDetail.getJobDetailId());
/*BigDecimal oldPickQuantity = Convert.toBigDecimal(mydoJobDetailOld.getPickQuantity());
BigDecimal newPickQuantity = Convert.toBigDecimal(mydoJobDetail.getOutQuantity());*/
mydoJobDetail.setPickQuantity(mydoJobDetail.getOutQuantity());
mydoJobDetailService.updateMydoJobDetail(mydoJobDetail);
OutPickSubmit outPickSubmitParam = new OutPickSubmit();
//outPickSubmitParam.setJobId(mydoJob.getJobId());
//outPickSubmitParam.setJobDetailId(mydoJobDetail.getJobDetailId());
outPickSubmitParam.setTrayCode(trayCodeMakeSure.getTrayCode());
List<OutPickSubmit> outPickSubmits = outPickSubmitService.selectOutPickSubmitList(outPickSubmitParam);
if (outPickSubmits.isEmpty()){
if (outPickSubmits.isEmpty()) {
//存入中间表
OutPickSubmit outPickSubmit = new OutPickSubmit();
outPickSubmit.setJobId(mydoJob.getJobId());
outPickSubmit.setJobDetailId(mydoJobDetail.getJobDetailId());
outPickSubmit.setProductId(mydoJobDetail.getProductId());
outPickSubmit.setQuantit(mydoJobDetail.getPickQuantity());
outPickSubmit.setQuantit(mydoJobDetail.getOutQuantity());
outPickSubmit.setTrayCode(trayCodeMakeSure.getTrayCode());
outPickSubmitService.insertOutPickSubmit(outPickSubmit);
}else {
} else {
OutPickSubmit oldOutPickSubmit = outPickSubmits.get(0);
oldOutPickSubmit.setQuantit(Convert.toBigDecimal(oldOutPickSubmit.getQuantit()).add(Convert.toBigDecimal(mydoJobDetail.getPickQuantity())).toString());
outPickSubmitService.updateOutPickSubmit(oldOutPickSubmit);
}
//修改单据实际数量
String inOrOutDId = mydoJobDetailOld.getInOrOutDId();
String inOrOutDId = mydoJobDetail.getInOrOutDId();
OutStockoutDetail outStockoutDetail = outStockoutDetailService.selectOutStockoutDetailByStockoutDetailId(inOrOutDId);
outStockoutDetail.setAssignNum(outStockoutDetail.getAssignNum().add(Convert.toBigDecimal(mydoJobDetail.getPickQuantity())));
outStockoutDetailService.updateOutStockoutDetail(outStockoutDetail);
@@ -386,14 +389,13 @@ public class PdaServiceImp implements PdaService {
}
@Override
@Transactional(rollbackFor = Exception.class)
public AjaxResult checkMakeSure(TrayCodeMakeSure trayCodeMakeSure) {
List<MydoJobDetail> mydoJobDetailList = trayCodeMakeSure.getMydoJobDetailList();
if(CollUtil.isNotEmpty(mydoJobDetailList)){
if (CollUtil.isNotEmpty(mydoJobDetailList)) {
boolean flag = mydoJobDetailList.stream().anyMatch(x -> StrUtil.isEmpty(x.getStockId()) && "0".equals(x.getInQuantity()));
if (flag){
if (flag) {
return AjaxResult.warn("新增库存,存在为0的数量");
}
for (MydoJobDetail mydoJobDetail : mydoJobDetailList) {
@@ -420,9 +422,9 @@ public class PdaServiceImp implements PdaService {
map.put("v_tray_code", trayCodeMakeSure.getTrayCode());
pdaMapper.checkMakeSure(map);
String result = map.get("v_result").toString();
if("10".equals(result)){
if ("10".equals(result)) {
return AjaxResult.success(map.get("v_resultmsg").toString());
}else{
} else {
return AjaxResult.warn(map.get("v_resultmsg").toString());
}
}
@@ -470,7 +472,7 @@ public class PdaServiceImp implements PdaService {
//自动分配
return outStockoutService.autoAllot(stockOutId);
} else {
throw new RuntimeException(map.get("v_resultmsg").toString());
throw new RuntimeException(map.get("v_resultmsg").toString());
}
}
@@ -512,17 +514,17 @@ public class PdaServiceImp implements PdaService {
//判断details中的数量是否都为0
if (CollUtil.isNotEmpty(basContainer.getDetails())) {
for (BasContainerDetails detail : basContainer.getDetails()) {
//如果存在数量不为0的
//如果存在数量不为0的
if (detail.getQuantity() != 0) {
if(StrUtil.isEmpty(basContainer.getSpare1())){
if (StrUtil.isEmpty(basContainer.getSpare1())) {
return AjaxResult.warn("请选择退料仓库");
}
//去ctu库站点
BasProductPort basProductPort = new BasProductPort();
basProductPort.setWarehouseId(basContainer.getSpare1());
List<BasProductPort> basProductPorts = basProductPortMapper.selectBasProductPortList(basProductPort);
endPoint=basProductPorts.get(0).getId();
endPoint = basProductPorts.get(0).getId();
}
@@ -555,13 +557,26 @@ public class PdaServiceImp implements PdaService {
if (space.getStatus() != null) {
String statusName;
switch (Integer.parseInt(space.getStatus())) {
case 1: statusName = "空货位"; break;
case 2: statusName = "满货位"; break;
case 3: statusName = "入库分配"; break;
case 4: statusName = "出库分配"; break;
case 5: statusName = "入库需盘点"; break;
case 6: statusName = "出库需盘点"; break;
default: continue;
case 1:
statusName = "空货位";
break;
case 2:
statusName = "满货位";
break;
case 3:
statusName = "入库分配";
break;
case 4:
statusName = "出库分配";
break;
case 5:
statusName = "入库需盘点";
break;
case 6:
statusName = "出库需盘点";
break;
default:
continue;
}
statusCount.put(statusName, statusCount.getOrDefault(statusName, 0) + 1);
}
@@ -594,17 +609,17 @@ public class PdaServiceImp implements PdaService {
mydoJob1.setInOut("2");
List<MydoJob> mydoJobs1 = mydoJobFinishMapper.selectMydoJobFinishListByMydoJob(mydoJob1);
map.put("in",mydoJobs.size());
map.put("out",mydoJobs1.size());
map.put("in", mydoJobs.size());
map.put("out", mydoJobs1.size());
return map;
}
@Override
public AjaxResult bindContainer(TrayCodeMakeSure trayCodeMakeSure) {
if (CollUtil.isEmpty(trayCodeMakeSure.getMydoJobDetailList())){
if (CollUtil.isEmpty(trayCodeMakeSure.getMydoJobDetailList())) {
return AjaxResult.warn("请选择提供绑定数量");
}
if (StrUtil.isEmpty(trayCodeMakeSure.getContainerCode())){
if (StrUtil.isEmpty(trayCodeMakeSure.getContainerCode())) {
return AjaxResult.warn("请选择绑定容器");
}
for (MydoJobDetail mydoJobDetail : trayCodeMakeSure.getMydoJobDetailList()) {
@@ -613,11 +628,11 @@ public class PdaServiceImp implements PdaService {
basContainerDetailsParam.setContainerId(trayCodeMakeSure.getContainerCode());
basContainerDetailsParam.setProductId(mydoJobDetail.getProductId());
List<BasContainerDetails> basContainerDetails = basContainerDetailsService.selectBasContainerDetailsList(basContainerDetailsParam);
if (CollUtil.isNotEmpty(basContainerDetails)){
if (CollUtil.isNotEmpty(basContainerDetails)) {
BasContainerDetails oldBasContainerDetails = basContainerDetails.get(0);
oldBasContainerDetails.setQuantity(oldBasContainerDetails.getQuantity()+Convert.toLong(mydoJobDetail.getPickBindQuantity()));
oldBasContainerDetails.setQuantity(oldBasContainerDetails.getQuantity() + Convert.toLong(mydoJobDetail.getPickBindQuantity()));
basContainerDetailsService.updateBasContainerDetails(oldBasContainerDetails);
}else {
} else {
BasContainerDetails newBasContainerDetails = new BasContainerDetails();
newBasContainerDetails.setContainerId(trayCodeMakeSure.getContainerCode());
newBasContainerDetails.setProductId(mydoJobDetail.getProductId());
@@ -632,12 +647,12 @@ public class PdaServiceImp implements PdaService {
List<OutPickSubmit> outPickSubmits = outPickSubmitService.selectOutPickSubmitList(outPickSubmitParam);
for (OutPickSubmit outPickSubmit : outPickSubmits) {
BigDecimal subtract = Convert.toBigDecimal(outPickSubmit.getQuantit()).subtract(Convert.toBigDecimal(mydoJobDetail.getPickBindQuantity()));
if (subtract.compareTo(BigDecimal.ZERO) == 0){
if (subtract.compareTo(BigDecimal.ZERO) == 0) {
//删除缓存信息
outPickSubmitService.deleteOutPickSubmitById(outPickSubmit.getId());
}else if (subtract.compareTo(BigDecimal.ZERO) < 0){
} else if (subtract.compareTo(BigDecimal.ZERO) < 0) {
return AjaxResult.warn("绑定数量不能大于实际数量");
}else {
} else {
outPickSubmit.setQuantit(subtract.toString());
outPickSubmitService.updateOutPickSubmit(outPickSubmit);
}

View File

@@ -284,6 +284,7 @@ public class ReceiveStockinServiceImpl implements IReceiveStockinService
// 设置状态等默认值
inStockin.setStatus("1");
inStockin.setSpare1(receiveStockin.getStockinId());
inStockin.setDepartmentNo(Convert.toStr(SecurityUtils.getDeptId()));
return inStockin;
}

View File

@@ -92,6 +92,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
${params.warehouseDataScope}
</if>
</where>
order by mj.create_time desc
</select>
<select id="selectMydoJobByJobId" parameterType="String" resultMap="MydoJobResult">

View File

@@ -167,4 +167,31 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
)
}
</select>
<select id="selectOutStockoutByStockoutId" resultMap="OutStockoutResult">
select distinct o.stockout_guid,
o.stockout_id,
o.out_type,
o.create_date,
o.department_no,
o.customer_no,
o.create_man_id,
o.status,
o.stockout_source,
o.warehouse_id,
o.class_now_id,
o.exit_id,
o.car_number,
o.FID,
o.erp_stockout_id,
o.start_date,
o.finish_date,
bw.warehouse_name,
bc.customer_name
from out_stockout o
left join bas_warehouse bw on bw.warehouse_id = o.warehouse_id
left join bas_customer bc on bc.customer_no = o.customer_no
left join out_stockout_detail d on d.stockout_id = o.stockout_id
left join bas_product bp on bp.product_id = d.product_id
where o.stockout_id = #{stockoutId}
</select>
</mapper>

View File

@@ -115,7 +115,7 @@ public class SecurityConfig
// 静态资源,可匿名访问
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
.antMatchers("/swagger-ui.html","/changeLanguage", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**","/pda/**").permitAll()
.antMatchers("/api/**").permitAll()
.antMatchers("/api/**","/api2wms/**","/api2wcs/**").permitAll()
// 除上面外的所有请求全部需要鉴权认证
.anyRequest().authenticated();
})

View File

@@ -1,5 +1,5 @@
# 页面标题
VUE_APP_TITLE = 若依管理系统
VUE_APP_TITLE = "ForTucky WMS system"
BABEL_ENV = production

View File

@@ -225,6 +225,7 @@ export default {
englishDesc: '英文描述',
cartonNo: '箱号',
packingMethod: '包装方式',
createTime:"创建时间"
},
// ***************出库单据管理**************
outStockoutManage: {

View File

@@ -198,6 +198,7 @@ export default {
englishDesc: '英文描述',
cartonNo: '箱号',
packingMethod: '包装方式',
createTime:"创建时间"
},
// ***************新建出库单据**************
addOutStockout: {

View File

@@ -163,8 +163,8 @@
</template>
</el-table-column>
<el-table-column :label="$t('inJob.taskNo')" align="left" prop="taskNo" /> // 任务号
<el-table-column :label="$t('inJob.supplierName')" align="left" prop="supplierName" key="supplierId" value="supplierName" /> // 供应商
<el-table-column :label="$t('inJob.departmentName')" align="left" prop="departmentName" /> // 部门
<!-- <el-table-column :label="$t('inJob.supplierName')" align="left" prop="supplierName" key="supplierId" value="supplierName" /> // 供应商-->
<!-- <el-table-column :label="$t('inJob.departmentName')" align="left" prop="departmentName" /> // 部门-->
<el-table-column :label="$t('inJob.trayCode')" align="left" prop="trayCode" /> // 托盘码
<el-table-column :label="$t('inJob.cargoSpaceName')" align="left" prop="cargoSpaceName" /> // 货位
<el-table-column :label="$t('inJob.priority')" align="left" prop="priority" /> // 优先级
@@ -175,6 +175,11 @@
</el-table-column>
<el-table-column :label="$t('inJob.entrance')" align="left" prop="entranceId" /> // 入口ID
<el-table-column :label="$t('inJob.warehouse')" align="left" prop="warehouseName" /> // 仓库ID
<el-table-column :label="$t('inJob.createTime')" align="left" prop="createTime" width="180"> // 创建时间
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('inJob.startTime')" align="left" prop="startTime" width="180"> // 开始时间
<template slot-scope="scope">
<span>{{ parseTime(scope.row.startTime, '{y}-{m}-{d}') }}</span>
@@ -288,7 +293,7 @@ export default {
workshopId: null,
priority: null,
executionPhase: null,
inOrOut: '1',
inOrOut: null,
createTime: null,
startTime: null,
finishTime: null,
@@ -435,11 +440,13 @@ export default {
//手动作废
manualInvalidation(data).then(response => {
this.$modal.msgSuccess("操作成功");
getList();
})
}else if (row.type === 'completed'){
//手动完成
manualCompleted(data).then(response => {
this.$modal.msgSuccess("操作成功");
getList();
})
}
},

View File

@@ -272,14 +272,14 @@
</template>
</el-table-column>
<el-table-column :label="$t('inReceiveStockin.warehouseName')" align="left" prop="warehouseName"/><!--仓库-->
<el-table-column :label="$t('inReceiveStockin.stockSource')" align="left" prop="stockSource"><!--单据来源-->
<!-- <el-table-column :label="$t('inReceiveStockin.stockSource')" align="left" prop="stockSource">&lt;!&ndash;单据来源&ndash;&gt;
<template slot-scope="scope">
<dict-tag :options="dict.type.bill_resource" :value="scope.row.stockSource"/>
</template>
</el-table-column>
<el-table-column :label="$t('inReceiveStockin.departmentName')" align="left" prop="departmentName"/><!--部门-->
</el-table-column>-->
<el-table-column :label="$t('inReceiveStockin.supplierName')" align="left" prop="supplierName"/><!--供应商-->
<el-table-column :label="$t('inReceiveStockin.createManName')" align="left" prop="createManName"/><!--创建人-->
<el-table-column :label="$t('inReceiveStockin.departmentName')" align="left" prop="departmentName"/><!--部门-->
<el-table-column :label="$t('inReceiveStockin.createDate')" align="left" prop="createDate"/><!--建立时间-->
<el-table-column :label="$t('inStockin.finishDate')" align="left" prop="finishDate"/><!--完成日期-->
</el-table>
@@ -535,7 +535,7 @@ export default {
this.getList()
})
}else {
this.$modal.msgError("操作失败")
this.$modal.msgError("单据已执行")
}
},
@@ -556,7 +556,7 @@ export default {
this.getList()
})
}else {
this.$modal.msgError("操作失败")
this.$modal.msgError("单据已执行,请勿重复审核")
}
},
/**确认单据按钮操作 */
@@ -572,7 +572,7 @@ export default {
this.getList()
})
}else {
this.$modal.msgError("操作失败")
this.$modal.msgError("单据未执行完成")
}
},
/** 打印条码按钮操作 */

View File

@@ -112,20 +112,20 @@
<dict-tag :options="dict.type.mydo_job_status" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column :label="$t('outJobManagement.onLineType')" align="left" prop="onLineType"> <!-- 上线类型 -->
<!-- <el-table-column :label="$t('outJobManagement.onLineType')" align="left" prop="onLineType"> &lt;!&ndash; 上线类型 &ndash;&gt;
<template slot-scope="scope">
<dict-tag :options="dict.type.on_line_type" :value="scope.row.onLineType"/>
</template>
</el-table-column>
</el-table-column>-->
<el-table-column :label="$t('outJobManagement.jobType')" align="left" prop="inOrOut"> <!-- 任务类型 -->
<template slot-scope="scope">
<dict-tag :options="dict.type.in_job_type" :value="scope.row.inOrOut"/>
<dict-tag :options="dict.type.out_job_type" :value="scope.row.inOrOut"/>
</template>
</el-table-column>
<el-table-column :label="$t('outJobManagement.taskNo')" align="left" prop="taskNo" /> <!-- 任务号 -->
<el-table-column :label="$t('outJobManagement.customerId')" align="left" prop="customerId" /> <!-- 客户ID -->
<!-- <el-table-column :label="$t('outJobManagement.customerId')" align="left" prop="customerId" /> &lt;!&ndash; 客户ID &ndash;&gt;-->
<el-table-column :label="$t('outJobManagement.trayCode')" align="left" prop="trayCode" /> <!-- 托盘码 -->
<el-table-column :label="$t('outJobManagement.roadwayId')" align="left" prop="roadwayId" /> <!-- 巷道ID -->
<!-- <el-table-column :label="$t('outJobManagement.roadwayId')" align="left" prop="roadwayId" /> &lt;!&ndash; 巷道ID &ndash;&gt;-->
<el-table-column :label="$t('outJobManagement.cargoSpaceId')" align="left" prop="cargoSpaceId" /> <!-- 货位ID -->
<el-table-column :label="$t('outJobManagement.priority')" align="right" prop="priority" /> <!-- 优先级 -->
<el-table-column :label="$t('outJobManagement.executionPhase')" align="left" prop="executionPhase"> <!-- 执行阶段 -->
@@ -175,7 +175,7 @@ import {listWarehouse} from "@/api/bas/warehouse";
export default {
name: "MydoJob",
dicts: ['execution_phase_type', 'in_job_type', 'on_line_type', 'mydo_job_status'],
dicts: ['execution_phase_type', 'in_job_type', 'on_line_type', 'mydo_job_status','out_job_type'],
data() {
return {
// 遮罩层

View File

@@ -416,6 +416,11 @@ export default {
}
const stockoutIds = this.selectedRows.map(row => row.stockoutId)
console.log("自动分配:", stockoutIds)
let outstock = this.selectedRows[0]
if (outstock.status !== "2") {
this.$modal.msgError("请选择审核状态为审核通过单据")
return
}
let data = {
stockoutId: stockoutIds[0]
}
@@ -435,6 +440,11 @@ export default {
return
}
const stockoutIds = this.selectedRows.map(row => row.stockoutId)
let outstock = this.selectedRows[0]
if (outstock.status !== "1") {
this.$modal.msgError("单据已审核")
return
}
// TODO: 调用手动分配接口
console.log("手动分配:", stockoutIds)
},

View File

@@ -414,6 +414,10 @@ export default {
// 角色顺序不能为空
{ required: true, message: this.$t('systemManagement_RoleManagement.checkRoleSortIsNull'), trigger: "blur" }
]
},
quaryWarehouse:{
pageNum:1,
pageSize:99
}
}
},
@@ -424,7 +428,7 @@ export default {
methods: {
/** 获取仓库列表 */
getWarehouseList() {
listWarehouse().then(response => {
listWarehouse(this.quaryWarehouse).then(response => {
this.warehouseOptions = response.rows;
});
},

View File

@@ -9,7 +9,7 @@ const CompressionPlugin = require('compression-webpack-plugin')
const name = process.env.VUE_APP_TITLE || '若依管理系统' // 网页标题
const baseUrl = 'http://localhost:8081' // 后端接口
const baseUrl = 'http://localhost:8080' // 后端接口
const port = process.env.port || process.env.npm_config_port || 80 // 端口