出库单据
This commit is contained in:
@@ -1,64 +1,29 @@
|
||||
package com.ruoyi.pda.service;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.ruoyi.api.domain.AgvMoveParam;
|
||||
import com.ruoyi.api.service.IToWcsService;
|
||||
import com.ruoyi.bas.cargoSpace.domain.BasCargoSpace;
|
||||
import com.ruoyi.bas.cargoSpace.service.IBasCargoSpaceService;
|
||||
import com.ruoyi.bas.container.domain.BasContainer;
|
||||
import com.ruoyi.bas.container.service.IBasContainerService;
|
||||
import com.ruoyi.bas.containerDetails.domain.BasContainerDetails;
|
||||
import com.ruoyi.bas.containerDetails.service.IBasContainerDetailsService;
|
||||
import com.ruoyi.bas.port.domain.BasProductPort;
|
||||
import com.ruoyi.bas.port.mapper.BasProductPortMapper;
|
||||
import com.ruoyi.bas.tag.domain.BasTag;
|
||||
import com.ruoyi.bas.tag.service.IBasTagService;
|
||||
import com.ruoyi.bas.warehouse.domain.BasWarehouse;
|
||||
import com.ruoyi.bas.warehouse.service.IBasWarehouseService;
|
||||
import com.ruoyi.api.domain.RequestEnter;
|
||||
import com.ruoyi.api.service.IToWmsService;
|
||||
import com.ruoyi.check.commit.domain.CheckCommitRecord;
|
||||
import com.ruoyi.check.commit.service.ICheckCommitRecordService;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.utils.MessageUtils;
|
||||
import com.ruoyi.device.agv.domain.AgvContainerTask;
|
||||
import com.ruoyi.device.agv.service.IAgvContainerTaskService;
|
||||
import com.ruoyi.in.stockindetail.domain.InStockinDetail;
|
||||
|
||||
import com.ruoyi.in.stockindetail.service.IInStockinDetailService;
|
||||
import com.ruoyi.job.mydojob.domain.MydoJob;
|
||||
import com.ruoyi.job.mydojob.service.IMydoJobService;
|
||||
import com.ruoyi.job.mydojobdetail.domain.MydoJobDetail;
|
||||
import com.ruoyi.job.mydojobdetail.service.IMydoJobDetailService;
|
||||
import com.ruoyi.job.mydojobfinish.mapper.MydoJobFinishMapper;
|
||||
import com.ruoyi.out.outStockout.domain.OutStockout;
|
||||
import com.ruoyi.out.outStockout.service.IOutStockoutService;
|
||||
import com.ruoyi.out.outStockoutDetail.domain.OutStockoutDetail;
|
||||
import com.ruoyi.out.outStockoutDetail.service.IOutStockoutDetailService;
|
||||
import com.ruoyi.out.submit.domain.OutPickSubmit;
|
||||
import com.ruoyi.out.submit.service.IOutPickSubmitService;
|
||||
import com.ruoyi.out.tagTask.domain.TagTask;
|
||||
import com.ruoyi.out.tagTask.service.ITagTaskService;
|
||||
import com.ruoyi.job.mydojobdetail.service.impl.MydoJobDetailServiceImpl;
|
||||
import com.ruoyi.pda.domain.TrayCodeMakeSure;
|
||||
import com.ruoyi.pda.domain.TrayCodeMsg;
|
||||
import com.ruoyi.pda.mapper.PdaMapper;
|
||||
import com.ruoyi.pda.trayMsg.domain.TrayMsg;
|
||||
import com.ruoyi.pda.trayMsg.service.ITrayMsgService;
|
||||
import com.ruoyi.stock.stock.domain.BasStock;
|
||||
import com.ruoyi.stock.stock.service.IBasStockService;
|
||||
import com.ruoyi.system.service.ISysRoleService;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
|
||||
@Service
|
||||
@@ -66,15 +31,8 @@ import java.util.*;
|
||||
public class PdaServiceImp implements PdaService {
|
||||
@Autowired
|
||||
private PdaMapper pdaMapper;
|
||||
@Autowired
|
||||
private IBasCargoSpaceService basCargoSpaceService;
|
||||
@Autowired
|
||||
private IMydoJobDetailService mydoJobDetailService;
|
||||
;
|
||||
|
||||
@Autowired
|
||||
private IMydoJobService mydoJobService;
|
||||
;
|
||||
@Autowired
|
||||
ISysRoleService sysRoleService;
|
||||
@Autowired
|
||||
@@ -82,360 +40,74 @@ public class PdaServiceImp implements PdaService {
|
||||
@Autowired
|
||||
ITrayMsgService trayMsgService;
|
||||
@Autowired
|
||||
private IBasContainerDetailsService basContainerDetailsService;
|
||||
@Autowired
|
||||
private ICheckCommitRecordService checkCommitRecordService;
|
||||
@Autowired
|
||||
private IOutStockoutService outStockoutService;
|
||||
private IToWmsService iToWmsService;
|
||||
@Autowired
|
||||
private IOutStockoutDetailService outStockoutDetailService;
|
||||
@Resource
|
||||
private BasProductPortMapper basProductPortMapper;
|
||||
@Autowired
|
||||
private IBasStockService basStockService;
|
||||
@Resource
|
||||
private MydoJobFinishMapper mydoJobFinishMapper;
|
||||
@Autowired
|
||||
private IOutPickSubmitService outPickSubmitService;
|
||||
@Autowired
|
||||
private ITagTaskService tagTaskService;
|
||||
@Autowired
|
||||
private IBasTagService basTagService;
|
||||
@Autowired
|
||||
private IBasWarehouseService basWarehouseService;
|
||||
@Autowired
|
||||
private IBasContainerService basContainerService;
|
||||
@Autowired
|
||||
private IToWcsService iToWcsService;
|
||||
@Autowired
|
||||
private IAgvContainerTaskService agvContainerTaskService;
|
||||
private IMydoJobDetailService mydoJobDetailService;
|
||||
|
||||
|
||||
/**
|
||||
* 空托盘入库
|
||||
*
|
||||
* @param trayCodeMsg
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public AjaxResult emptyTrayIn(TrayCodeMsg trayCodeMsg) {
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
map.put("v_tray_code", trayCodeMsg.getTrayCode());
|
||||
map.put("v_warehouse_id", trayCodeMsg.getWarehouseId());
|
||||
map.put("v_quantity", "1");
|
||||
map.put("v_cargo_space_id", trayCodeMsg.getCargoSpaceId());
|
||||
pdaMapper.emptyTrayIn(map);
|
||||
String result = map.get("v_result").toString();
|
||||
if ("10".equals(result)) {
|
||||
return AjaxResult.success(map.get("v_resultmsg").toString());
|
||||
} else {
|
||||
throw new RuntimeException(map.get("v_resultmsg").toString());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 空料箱入库
|
||||
*
|
||||
* @param trayCodeMsg
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public AjaxResult emptyBoxIn(TrayCodeMsg trayCodeMsg) {
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
map.put("v_tray_code", trayCodeMsg.getTrayCode());
|
||||
map.put("v_warehouse_id", trayCodeMsg.getWarehouseId());
|
||||
map.put("v_entrance_id", trayCodeMsg.getEntranceId());
|
||||
pdaMapper.emptyBoxIn(map);
|
||||
String result = map.get("v_result").toString();
|
||||
if ("10".equals(result)) {
|
||||
return AjaxResult.success(map.get("v_resultmsg").toString());
|
||||
} else {
|
||||
throw new RuntimeException(map.get("v_resultmsg").toString());
|
||||
}
|
||||
public AjaxResult addInJob(RequestEnter requestEnter) {
|
||||
AjaxResult ajaxResult = iToWmsService.requestEnterByTrayCode(requestEnter);
|
||||
return ajaxResult;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public AjaxResult emptyTrayOut(TrayCodeMsg trayCodeMsg) {
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
map.put("v_warehouse_id", trayCodeMsg.getWarehouseId());
|
||||
map.put("v_cargo_space_id", trayCodeMsg.getCargoSpaceId());
|
||||
map.put("v_exit_id", trayCodeMsg.getExitId());
|
||||
pdaMapper.emptyTrayOut(map);
|
||||
String result = map.get("v_result").toString();
|
||||
if ("10".equals(result)) {
|
||||
return AjaxResult.success(map.get("v_resultmsg").toString());
|
||||
} else {
|
||||
throw new RuntimeException(map.get("v_resultmsg").toString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public AjaxResult emptyBoxOut(TrayCodeMsg trayCodeMsg) {
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
map.put("v_warehouse_id", trayCodeMsg.getWarehouseId());
|
||||
map.put("v_exit_id", trayCodeMsg.getExitId());
|
||||
pdaMapper.emptyBoxOut(map);
|
||||
String result = map.get("v_result").toString();
|
||||
if ("10".equals(result)) {
|
||||
return AjaxResult.success(map.get("v_resultmsg").toString());
|
||||
} else {
|
||||
throw new RuntimeException(map.get("v_resultmsg").toString());
|
||||
}
|
||||
public AjaxResult selectDetailByTray(TrayCodeMakeSure trayCodeMakeSure) {
|
||||
String trayCode = trayCodeMakeSure.getTrayCode();
|
||||
String[] split = trayCode.split(" ");
|
||||
String productId = split[8].substring(10);
|
||||
MydoJob mydoJob = new MydoJob();
|
||||
mydoJob.setExitId(trayCodeMakeSure.getExitId());
|
||||
mydoJob.setProductId(productId);
|
||||
mydoJob.setStatus("3");
|
||||
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailListByExit(mydoJob);
|
||||
return AjaxResult.success(mydoJobDetails);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AjaxResult bindTrayMsg(TrayCodeMsg trayCodeMsg) {
|
||||
//判断用户的仓库权限
|
||||
InStockinDetail inStockinDetail1 = new InStockinDetail();
|
||||
inStockinDetail1.setStockinDetailId(trayCodeMsg.getStockinDetailId());
|
||||
InStockinDetail inStockinDetail = inStockinDetailService.selectStockinByDetailById(inStockinDetail1);
|
||||
if (inStockinDetail == null) {
|
||||
return AjaxResult.warn(MessageUtils.message("warn.message6"));
|
||||
}
|
||||
//判断与已绑定物料是否为同一仓库
|
||||
TrayMsg trayMsg = new TrayMsg();
|
||||
trayMsg.setTrayCode(trayCodeMsg.getTrayCode());
|
||||
List<TrayMsg> trayMsgs = trayMsgService.selectTrayMsgList(trayMsg);
|
||||
if (trayMsgs.size() > 0) {
|
||||
// InStockinDetail inStockinDetail = inStockinDetailService.selectStockinByDetailById(trayCodeMsg.getStockinDetailId());
|
||||
if (!trayMsgs.get(0).getWarehouseId().equals(inStockinDetail.getWarehouseId())) {
|
||||
return AjaxResult.warn(MessageUtils.message("warn.message7"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
map.put("v_tray_code", trayCodeMsg.getTrayCode());
|
||||
map.put("v_stockin_detail_id", trayCodeMsg.getStockinDetailId());
|
||||
map.put("v_quantity", Integer.parseInt(trayCodeMsg.getInQuantity()));
|
||||
pdaMapper.bindTrayMsg(map);
|
||||
String result = map.get("v_result").toString();
|
||||
if ("10".equals(result)) {
|
||||
return AjaxResult.success(map.get("v_resultmsg").toString());
|
||||
} else {
|
||||
throw new RuntimeException(map.get("v_resultmsg").toString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public AjaxResult addInJob(TrayCodeMsg trayCodeMsg) {
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
map.put("v_tray_code", trayCodeMsg.getTrayCode());
|
||||
// map.put("v_warehouse_id", trayCodeMsg.getWarehouseId());
|
||||
map.put("v_cargo_space_id", trayCodeMsg.getCargoSpaceId());
|
||||
pdaMapper.addInJob(map);
|
||||
String result = map.get("v_result").toString();
|
||||
if ("10".equals(result)) {
|
||||
return AjaxResult.success(map.get("v_resultmsg").toString());
|
||||
} else {
|
||||
throw new RuntimeException(map.get("v_resultmsg").toString());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public AjaxResult outMakeSure(TrayCodeMakeSure trayCodeMakeSure) {
|
||||
|
||||
//判断任务是否存在
|
||||
MydoJob mydoJobParam = new MydoJob();
|
||||
mydoJobParam.setTrayCode(trayCodeMakeSure.getTrayCode());
|
||||
// mydoJobParam.setStatus("3");
|
||||
List<MydoJob> mydoJobList = mydoJobService.selectMydoJobListApi(mydoJobParam);
|
||||
if (CollUtil.isEmpty(mydoJobList)) {
|
||||
return AjaxResult.warn(MessageUtils.message("warn.message1"));
|
||||
String trayCode = trayCodeMakeSure.getTrayCode();
|
||||
String[] split = trayCode.split(" ");
|
||||
String productId = split[8].substring(10);
|
||||
MydoJob mydoJob = new MydoJob();
|
||||
mydoJob.setExitId(trayCodeMakeSure.getExitId());
|
||||
mydoJob.setProductId(productId);
|
||||
mydoJob.setStatus("3");
|
||||
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailListByExit(mydoJob);
|
||||
if(mydoJobDetails.size()==0){
|
||||
return AjaxResult.error("该物料没有出库作业,请检查");
|
||||
}
|
||||
|
||||
|
||||
MydoJobDetail mydoJobDetailParam = new MydoJobDetail();
|
||||
mydoJobDetailParam.setJobId(mydoJobList.get(0).getJobId());
|
||||
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(mydoJobDetailParam);
|
||||
if (CollUtil.isEmpty(mydoJobDetails)) {
|
||||
return AjaxResult.warn(MessageUtils.message("warn.message2"));
|
||||
}
|
||||
//空托盘空料箱
|
||||
if ("21".equals(mydoJobList.get(0).getInOrOut()) || "22".equals(mydoJobList.get(0).getInOrOut())) {
|
||||
return handleOutType2(trayCodeMakeSure, mydoJobDetails, mydoJobList.get(0));
|
||||
}
|
||||
|
||||
//获取单据类型
|
||||
OutStockout outStockoutParam = new OutStockout();
|
||||
outStockoutParam.setStockoutId(mydoJobDetails.get(0).getInOrOutId());
|
||||
List<OutStockout> outStockouts = outStockoutService.selectOutStockoutListApi(outStockoutParam);
|
||||
if (CollUtil.isEmpty(outStockouts)) {
|
||||
return AjaxResult.warn(MessageUtils.message("warn.message4"));
|
||||
}
|
||||
String billType = outStockouts.get(0).getOutType();
|
||||
|
||||
switch (billType) {
|
||||
case "1":
|
||||
//拣选单据
|
||||
return handleOutType1(trayCodeMakeSure, mydoJobDetails, mydoJobList.get(0));
|
||||
case "2":
|
||||
//退货单据 不绑定容器
|
||||
return handleOutType2(trayCodeMakeSure, mydoJobDetails, mydoJobList.get(0));
|
||||
default:
|
||||
return AjaxResult.warn(MessageUtils.message("warn.message3"));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理退货出库
|
||||
*
|
||||
* @param trayCodeMakeSure
|
||||
* @param mydoJobDetailList
|
||||
* @param mydoJob
|
||||
* @return
|
||||
*/
|
||||
|
||||
private AjaxResult handleOutType2(TrayCodeMakeSure trayCodeMakeSure, List<MydoJobDetail> mydoJobDetailList, MydoJob mydoJob) {
|
||||
BasWarehouse basWarehouse = basWarehouseService.selectBasWarehouseByWarehouseId(mydoJob.getWarehouseId());
|
||||
//修改拣选数量
|
||||
for (MydoJobDetail mydoJobDetail : mydoJobDetailList) {
|
||||
//修改拣选数量
|
||||
mydoJobDetail.setPickQuantity(mydoJobDetail.getOutQuantity());
|
||||
mydoJobDetailService.updateMydoJobDetail(mydoJobDetail);
|
||||
|
||||
|
||||
//修改单据实际数量
|
||||
String inOrOutDId = mydoJobDetail.getInOrOutDId();
|
||||
OutStockoutDetail outStockoutDetail = outStockoutDetailService.selectOutStockoutDetailByStockoutDetailId(inOrOutDId);
|
||||
if (ObjUtil.isNotNull(outStockoutDetail)) {
|
||||
outStockoutDetail.setAssignNum(outStockoutDetail.getAssignNum().add(Convert.toBigDecimal(mydoJobDetail.getPickQuantity())));
|
||||
outStockoutDetailService.updateOutStockoutDetail(outStockoutDetail);
|
||||
}
|
||||
//修改电子标签
|
||||
if ("2".equals(basWarehouse.getWarehouseType())){
|
||||
updateTagTaskStatus(mydoJobDetail);
|
||||
}
|
||||
|
||||
}
|
||||
//判断拣选数量是否等于出库数量
|
||||
MydoJobDetail mydoJobDetailParam = new MydoJobDetail();
|
||||
mydoJobDetailParam.setJobId(mydoJob.getJobId());
|
||||
List<MydoJobDetail> currentMydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(mydoJobDetailParam);
|
||||
boolean flag = currentMydoJobDetails.stream().allMatch(mydoJobDetail -> mydoJobDetail.getPickQuantity().equals(mydoJobDetail.getOutQuantity()));
|
||||
if (flag) {
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
map.put("v_tray_code", trayCodeMakeSure.getTrayCode());
|
||||
map.put("v_type", "1");
|
||||
pdaMapper.outMakeSure(map);
|
||||
iToWcsService.pushInMydoJob();
|
||||
String result = map.get("v_result").toString();
|
||||
if ("10".equals(result)) {
|
||||
//通知wcs 出库确认
|
||||
deleteTagTask(trayCodeMakeSure, basWarehouse, mydoJob);
|
||||
return AjaxResult.success(map.get("v_resultmsg").toString());
|
||||
} else {
|
||||
throw new RuntimeException(map.get("v_resultmsg").toString());
|
||||
}
|
||||
} else {
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
map.put("v_tray_code", mydoJobDetails.get(0).getTrayCode());
|
||||
pdaMapper.outMakeSure(map);
|
||||
String result = map.get("v_result").toString();
|
||||
if ("10".equals(result)) {
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理正常出库
|
||||
*
|
||||
* @param trayCodeMakeSure
|
||||
* @param mydoJobDetailList
|
||||
* @param mydoJob
|
||||
* @return
|
||||
*/
|
||||
private AjaxResult handleOutType1(TrayCodeMakeSure trayCodeMakeSure, List<MydoJobDetail> mydoJobDetailList, MydoJob mydoJob) {
|
||||
|
||||
BasWarehouse basWarehouse = basWarehouseService.selectBasWarehouseByWarehouseId(mydoJob.getWarehouseId());
|
||||
|
||||
for (MydoJobDetail mydoJobDetail : mydoJobDetailList) {
|
||||
|
||||
//修改拣选数量
|
||||
//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);
|
||||
|
||||
//修改单据实际数量
|
||||
String inOrOutDId = mydoJobDetail.getInOrOutDId();
|
||||
OutStockoutDetail outStockoutDetail = outStockoutDetailService.selectOutStockoutDetailByStockoutDetailId(inOrOutDId);
|
||||
if (ObjUtil.isNotNull(outStockoutDetail)) {
|
||||
outStockoutDetail.setAssignNum(outStockoutDetail.getAssignNum().add(Convert.toBigDecimal(mydoJobDetail.getPickQuantity())));
|
||||
outStockoutDetailService.updateOutStockoutDetail(outStockoutDetail);
|
||||
}
|
||||
//修改电子标签
|
||||
if ("2".equals(basWarehouse.getWarehouseType())){
|
||||
updateTagTaskStatus(mydoJobDetail);
|
||||
}
|
||||
//插入中间表
|
||||
insertPickSubmitData(mydoJob, mydoJobDetail);
|
||||
|
||||
}
|
||||
|
||||
//判断拣选数量是否等于出库数量
|
||||
MydoJobDetail mydoJobDetailParam = new MydoJobDetail();
|
||||
mydoJobDetailParam.setJobId(mydoJob.getJobId());
|
||||
List<MydoJobDetail> currentMydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(mydoJobDetailParam);
|
||||
boolean flag = currentMydoJobDetails.stream().allMatch(mydoJobDetail -> mydoJobDetail.getPickQuantity().equals(mydoJobDetail.getOutQuantity()));
|
||||
if (flag) {
|
||||
|
||||
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
map.put("v_tray_code", trayCodeMakeSure.getTrayCode());
|
||||
map.put("v_type", "1");
|
||||
pdaMapper.outMakeSure(map);
|
||||
iToWcsService.pushInMydoJob();
|
||||
String result = map.get("v_result").toString();
|
||||
if ("10".equals(result)) {
|
||||
deleteTagTask(trayCodeMakeSure, basWarehouse, mydoJob);
|
||||
return AjaxResult.success(map.get("v_resultmsg").toString());
|
||||
} else {
|
||||
throw new RuntimeException(map.get("v_resultmsg").toString());
|
||||
}
|
||||
} else {
|
||||
return AjaxResult.success();
|
||||
return AjaxResult.error( map.get("v_resultmsg").toString());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 插入中间表
|
||||
* @param mydoJob
|
||||
* @param mydoJobDetail
|
||||
*/
|
||||
private void insertPickSubmitData(MydoJob mydoJob, MydoJobDetail mydoJobDetail) {
|
||||
OutPickSubmit outPickSubmitParam = new OutPickSubmit();
|
||||
outPickSubmitParam.setWarehouseId(mydoJob.getWarehouseId());
|
||||
outPickSubmitParam.setExitId(mydoJob.getExitId());
|
||||
outPickSubmitParam.setProductId(mydoJobDetail.getProductId());
|
||||
List<OutPickSubmit> outPickSubmits = outPickSubmitService.selectOutPickSubmitList(outPickSubmitParam);
|
||||
if (outPickSubmits.isEmpty()) {
|
||||
if (Convert.toInt(mydoJobDetail.getPickQuantity())>0){
|
||||
//存入中间表
|
||||
OutPickSubmit outPickSubmit = new OutPickSubmit();
|
||||
outPickSubmit.setJobId(mydoJob.getJobId());
|
||||
outPickSubmit.setJobDetailId(mydoJobDetail.getJobDetailId());
|
||||
outPickSubmit.setProductId(mydoJobDetail.getProductId());
|
||||
outPickSubmit.setQuantity(mydoJobDetail.getPickQuantity());
|
||||
outPickSubmit.setTrayCode(mydoJob.getTrayCode());
|
||||
outPickSubmit.setWarehouseId(mydoJob.getWarehouseId());
|
||||
outPickSubmit.setExitId(mydoJob.getExitId());
|
||||
outPickSubmitService.insertOutPickSubmit(outPickSubmit);
|
||||
}
|
||||
|
||||
} else {
|
||||
OutPickSubmit oldOutPickSubmit = outPickSubmits.get(0);
|
||||
oldOutPickSubmit.setQuantity(Convert.toBigDecimal(oldOutPickSubmit.getQuantity()).add(Convert.toBigDecimal(mydoJobDetail.getPickQuantity())).toString());
|
||||
outPickSubmitService.updateOutPickSubmit(oldOutPickSubmit);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
//@Transactional(rollbackFor = Exception.class)
|
||||
public AjaxResult checkMakeSure(TrayCodeMakeSure trayCodeMakeSure) {
|
||||
MydoJob mydoJob = mydoJobService.selectMydoJobByTrayCode(trayCodeMakeSure.getTrayCode());
|
||||
|
||||
String trayCode = trayCodeMakeSure.getTrayCode();
|
||||
String[] split = trayCode.split(" ");
|
||||
String productId = split[8].substring(10);
|
||||
MydoJob mydoJob = new MydoJob();
|
||||
mydoJob.setExitId(trayCodeMakeSure.getExitId());
|
||||
mydoJob.setProductId(productId);
|
||||
mydoJob.setStatus("3");
|
||||
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailListByExit(mydoJob);
|
||||
|
||||
// MydoJob mydoJob = mydoJobService.selectMydoJobByTrayCode(trayCodeMakeSure.getTrayCode());
|
||||
if (mydoJob == null) {
|
||||
return AjaxResult.warn(MessageUtils.message("warn.message"));
|
||||
}
|
||||
@@ -470,395 +142,5 @@ public class PdaServiceImp implements PdaService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改电子标签数量
|
||||
*
|
||||
* @param mydoJobDetail
|
||||
*/
|
||||
private void updateTagTaskStatus(MydoJobDetail mydoJobDetail) {
|
||||
|
||||
//修改电子标签任务
|
||||
TagTask param = new TagTask();
|
||||
param.setJobDetailId(mydoJobDetail.getJobDetailId());
|
||||
List<TagTask> tagTasks = tagTaskService.selectTagTaskList(param);
|
||||
if (CollUtil.isNotEmpty(tagTasks)) {
|
||||
TagTask tagTask = tagTasks.get(0);
|
||||
tagTask.setStatus("2");
|
||||
tagTaskService.updateTagTask(tagTask);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除电子标签
|
||||
*
|
||||
* @param trayCodeMakeSure
|
||||
* @param basWarehouse
|
||||
*/
|
||||
private void deleteTagTask(TrayCodeMakeSure trayCodeMakeSure, BasWarehouse basWarehouse, MydoJob mydoJob) {
|
||||
if ("2".equals(basWarehouse.getWarehouseType()) && "23".equals(mydoJob.getInOrOut())) {
|
||||
BasTag basTag = basTagService.selectBasTagByTrayCode(trayCodeMakeSure.getTrayCode());
|
||||
basTag.setTrayCode("");
|
||||
basTagService.updateBasTag(basTag);
|
||||
//删除电子标签
|
||||
TagTask param = new TagTask();
|
||||
param.setTagId(basTag.getId());
|
||||
List<TagTask> tagTasks = tagTaskService.selectTagTaskList(param);
|
||||
if (CollUtil.isNotEmpty(tagTasks)) {
|
||||
tagTaskService.deleteTagTaskByIds(tagTasks.stream()
|
||||
.map(TagTask::getId)
|
||||
.toArray(Long[]::new));
|
||||
}
|
||||
if (mydoJob.getExitId().startsWith("fluent")) {
|
||||
//通知wcs出库确认成功
|
||||
HashMap<String, String> outMydojobMakeSureParam = new HashMap<>();
|
||||
outMydojobMakeSureParam.put("trayCode", trayCodeMakeSure.getTrayCode());
|
||||
AjaxResult ajaxResult = iToWcsService.outMydojobMakeSure(outMydojobMakeSureParam);
|
||||
if (!ajaxResult.isSuccess()) {
|
||||
throw new RuntimeException(ajaxResult.toString());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public AjaxResult outException(TrayCodeMakeSure trayCodeMakeSure) {
|
||||
//判断任务是否存在
|
||||
MydoJob mydoJobParam = new MydoJob();
|
||||
mydoJobParam.setTrayCode(trayCodeMakeSure.getTrayCode());
|
||||
List<MydoJob> mydoJobList = mydoJobService.selectMydoJobList(mydoJobParam);
|
||||
if (CollUtil.isEmpty(mydoJobList)) {
|
||||
return AjaxResult.warn(MessageUtils.message("warn.message"));
|
||||
}
|
||||
List<MydoJobDetail> pickInfoList = trayCodeMakeSure.getMaterialDetails();
|
||||
|
||||
MydoJob mydoJob = mydoJobList.get(0);
|
||||
|
||||
//判断拣选数量
|
||||
MydoJobDetail param = new MydoJobDetail();
|
||||
param.setJobId(mydoJob.getJobId());
|
||||
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(param);
|
||||
|
||||
BasWarehouse basWarehouse = basWarehouseService.selectBasWarehouseByWarehouseId(mydoJob.getWarehouseId());
|
||||
|
||||
String stockOutId = "";
|
||||
|
||||
for (MydoJobDetail mydoJobDetail : mydoJobDetails) {
|
||||
//修改拣选数量
|
||||
Optional<MydoJobDetail> first = pickInfoList.stream().filter(x -> x.getJobDetailId().equals(mydoJobDetail.getJobDetailId())).findFirst();
|
||||
if (first.isPresent()) {
|
||||
mydoJobDetail.setPickQuantity(first.get().getPickQuantity());
|
||||
mydoJobDetailService.updateMydoJobDetail(mydoJobDetail);
|
||||
}
|
||||
|
||||
//修改单据实际分配数量
|
||||
BigDecimal pickQuantity = Convert.toBigDecimal(mydoJobDetail.getPickQuantity());
|
||||
BigDecimal outQuantity = Convert.toBigDecimal(mydoJobDetail.getOutQuantity());
|
||||
BigDecimal subQuantity = outQuantity.subtract(pickQuantity);
|
||||
//修改分配数量为 当前分配数量-缺失数量
|
||||
OutStockoutDetail outStockoutDetail = outStockoutDetailService.selectOutStockoutDetailByStockoutDetailId(mydoJobDetail.getInOrOutDId());
|
||||
outStockoutDetail.setAllotQuantity(outStockoutDetail.getAllotQuantity().subtract(subQuantity));
|
||||
stockOutId = outStockoutDetail.getStockoutId();
|
||||
outStockoutDetailService.updateOutStockoutDetail(outStockoutDetail);
|
||||
|
||||
//修改库存的实际出库数量
|
||||
BasStock basStock = basStockService.selectBasStockByStockId(mydoJobDetail.getStockId());
|
||||
basStock.setOutQuantity(String.valueOf(pickQuantity));
|
||||
basStockService.updateBasStock(basStock);
|
||||
|
||||
//修改电子标签
|
||||
if ("2".equals(basWarehouse.getWarehouseType())){
|
||||
updateTagTaskStatus(mydoJobDetail);
|
||||
}
|
||||
|
||||
//将数据存入中间表
|
||||
insertPickSubmitData(mydoJob, mydoJobDetail);
|
||||
}
|
||||
//生成回流任务,标记productStatus为异常状态
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
map.put("v_tray_code", trayCodeMakeSure.getTrayCode());
|
||||
map.put("v_type", "1");
|
||||
pdaMapper.outMakeSureException(map);
|
||||
iToWcsService.pushInMydoJob();
|
||||
String result = map.get("v_result").toString();
|
||||
if ("10".equals(result)) {
|
||||
//删除电子标签信息
|
||||
deleteTagTask(trayCodeMakeSure, basWarehouse, mydoJob);
|
||||
//自动分配
|
||||
return outStockoutService.autoAllot(stockOutId);
|
||||
} else {
|
||||
throw new RuntimeException(map.get("v_resultmsg").toString());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AjaxResult pkIn(TrayCodeMsg trayCodeMsg) {
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
map.put("v_stockin_detail_id", trayCodeMsg.getStockinDetailId());
|
||||
map.put("v_in_quantity", Integer.parseInt(trayCodeMsg.getInQuantity()));
|
||||
|
||||
pdaMapper.pkIn(map);
|
||||
String result = map.get("v_result").toString();
|
||||
if ("10".equals(result)) {
|
||||
return AjaxResult.success(map.get("v_resultmsg").toString());
|
||||
} else {
|
||||
//return AjaxResult.warn(map.get("v_resultmsg").toString());
|
||||
throw new RuntimeException(map.get("v_resultmsg").toString());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public AjaxResult pkout(TrayCodeMsg trayCodeMsg) {
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
map.put("v_stockout_detail_id", trayCodeMsg.getStockinDetailId());
|
||||
pdaMapper.pkOut(map);
|
||||
String result = map.get("v_result").toString();
|
||||
if ("10".equals(result)) {
|
||||
return AjaxResult.success(map.get("v_resultmsg").toString());
|
||||
} else {
|
||||
throw new RuntimeException(map.get("v_resultmsg").toString());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public AjaxResult agvRequest(BasContainer basContainer) {
|
||||
//缓存站点
|
||||
String endPoint = "456";
|
||||
//判断details中的数量是否都为0
|
||||
if (CollUtil.isNotEmpty(basContainer.getDetails())) {
|
||||
for (BasContainerDetails detail : basContainer.getDetails()) {
|
||||
//如果存在数量不为0的
|
||||
if (detail.getQuantity() != 0) {
|
||||
|
||||
if (StrUtil.isEmpty(basContainer.getSpare1())) {
|
||||
return AjaxResult.warn(MessageUtils.message("warn.message9"));
|
||||
}
|
||||
//去ctu库站点
|
||||
BasProductPort basProductPort = new BasProductPort();
|
||||
basProductPort.setWarehouseId(basContainer.getSpare1());
|
||||
List<BasProductPort> basProductPorts = basProductPortMapper.selectBasProductPortList(basProductPort);
|
||||
endPoint = basProductPorts.get(0).getId();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
//通过料架查找站点
|
||||
BasContainer basContainer1 = basContainerService.selectBasContainerByContainerId(basContainer.getContainerId());
|
||||
String startPoint = basContainer1.getPortName();
|
||||
//todo 调用agv搬运接口
|
||||
//使用HttpUtil post请求,参数为startPoint,endPoint,和containerCode
|
||||
return agvRequest(basContainer.getContainerId(), startPoint, endPoint);
|
||||
|
||||
|
||||
}
|
||||
|
||||
private @NotNull AjaxResult agvRequest(String containerId, String startPoint, String endPoint) {
|
||||
String taskNo = IdUtil.fastSimpleUUID();
|
||||
AgvMoveParam agvMoveParam =new AgvMoveParam();
|
||||
agvMoveParam.setStartPoint(startPoint);
|
||||
agvMoveParam.setEndPoint(endPoint);
|
||||
agvMoveParam.setContainerCode(containerId);
|
||||
agvMoveParam.setTaskNo(taskNo);
|
||||
String result = HttpUtil.post("http://192.168.1.100:8080/agv/api/receiveAgvMoveJob", JSONUtil.toJsonStr( agvMoveParam));
|
||||
//接口的返回结果为AjaxResult,从result中获取code
|
||||
//获取code
|
||||
int code = JSONObject.parseObject(result).getIntValue("code");
|
||||
if (code == 200) {
|
||||
AgvContainerTask agvContainerTask = new AgvContainerTask();
|
||||
agvContainerTask.setContainer(containerId);
|
||||
agvContainerTask.setStartPoint(startPoint);
|
||||
agvContainerTask.setEndPoint(endPoint);
|
||||
agvContainerTask.setStatus("0");
|
||||
agvContainerTask.setTaskNo(taskNo);
|
||||
agvContainerTask.setCreateTime(new Date());
|
||||
agvContainerTaskService.insertAgvContainerTask(agvContainerTask);
|
||||
return AjaxResult.success(result);
|
||||
} else {
|
||||
return AjaxResult.warn(JSONObject.parseObject(result).getString("msg"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Map<String, Object> cargoSpaceAnalysis(String warehouseId) {
|
||||
BasCargoSpace queryParams = new BasCargoSpace();
|
||||
queryParams.setWarehouseId(warehouseId);
|
||||
List<BasCargoSpace> list = basCargoSpaceService.selectBasCargoSpaceList(queryParams);
|
||||
|
||||
// 初始化所有可能的状态,默认值为0
|
||||
Map<String, Integer> statusCount = new LinkedHashMap<>();
|
||||
statusCount.put("空货位", 0);
|
||||
statusCount.put("满货位", 0);
|
||||
statusCount.put("入库分配", 0);
|
||||
statusCount.put("出库分配", 0);
|
||||
statusCount.put("入库需盘点", 0);
|
||||
statusCount.put("出库需盘点", 0);
|
||||
|
||||
// 统计实际存在的状态数量
|
||||
for (BasCargoSpace space : list) {
|
||||
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;
|
||||
}
|
||||
statusCount.put(statusName, statusCount.getOrDefault(statusName, 0) + 1);
|
||||
}
|
||||
}
|
||||
|
||||
// 转换为要求的格式
|
||||
List<Map<String, Object>> result = new ArrayList<>();
|
||||
for (Map.Entry<String, Integer> entry : statusCount.entrySet()) {
|
||||
Map<String, Object> item = new HashMap<>();
|
||||
item.put("name", entry.getKey());
|
||||
item.put("value", entry.getValue());
|
||||
result.add(item);
|
||||
}
|
||||
|
||||
Map<String, Object> response = new HashMap<>();
|
||||
response.put("data", result);
|
||||
return response;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getAisleStatisticsData(String warehouseId) {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
MydoJob mydoJob = new MydoJob();
|
||||
mydoJob.setWarehouseId(warehouseId);
|
||||
mydoJob.setInOut("1");
|
||||
List<MydoJob> mydoJobs = mydoJobFinishMapper.selectMydoJobFinishListByMydoJob(mydoJob);
|
||||
|
||||
MydoJob mydoJob1 = new MydoJob();
|
||||
mydoJob1.setWarehouseId(warehouseId);
|
||||
mydoJob1.setInOut("2");
|
||||
List<MydoJob> mydoJobs1 = mydoJobFinishMapper.selectMydoJobFinishListByMydoJob(mydoJob1);
|
||||
|
||||
map.put("in", mydoJobs.size());
|
||||
map.put("out", mydoJobs1.size());
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AjaxResult bindContainer(TrayCodeMakeSure trayCodeMakeSure) {
|
||||
if (CollUtil.isEmpty(trayCodeMakeSure.getMydoJobDetailList())) {
|
||||
return AjaxResult.warn(MessageUtils.message("warn.message10"));
|
||||
}
|
||||
if (StrUtil.isEmpty(trayCodeMakeSure.getContainerCode())) {
|
||||
return AjaxResult.warn(MessageUtils.message("warn.message11"));
|
||||
}
|
||||
for (MydoJobDetail mydoJobDetail : trayCodeMakeSure.getMydoJobDetailList()) {
|
||||
//绑定容器
|
||||
BasContainerDetails basContainerDetailsParam = new BasContainerDetails();
|
||||
basContainerDetailsParam.setContainerId(trayCodeMakeSure.getContainerCode());
|
||||
basContainerDetailsParam.setProductId(mydoJobDetail.getProductId());
|
||||
List<BasContainerDetails> basContainerDetails = basContainerDetailsService.selectBasContainerDetailsList(basContainerDetailsParam);
|
||||
if (CollUtil.isNotEmpty(basContainerDetails)) {
|
||||
BasContainerDetails oldBasContainerDetails = basContainerDetails.get(0);
|
||||
oldBasContainerDetails.setQuantity(oldBasContainerDetails.getQuantity() + Convert.toLong(mydoJobDetail.getPickBindQuantity()));
|
||||
basContainerDetailsService.updateBasContainerDetails(oldBasContainerDetails);
|
||||
} else {
|
||||
BasContainerDetails newBasContainerDetails = new BasContainerDetails();
|
||||
newBasContainerDetails.setContainerId(trayCodeMakeSure.getContainerCode());
|
||||
newBasContainerDetails.setProductId(mydoJobDetail.getProductId());
|
||||
newBasContainerDetails.setQuantity(Convert.toLong(mydoJobDetail.getPickBindQuantity()));
|
||||
basContainerDetailsService.insertBasContainerDetails(newBasContainerDetails);
|
||||
}
|
||||
//减少中间表数量
|
||||
OutPickSubmit outPickSubmitParam = new OutPickSubmit();
|
||||
outPickSubmitParam.setWarehouseId(trayCodeMakeSure.getWarehouseId());
|
||||
outPickSubmitParam.setExitId(trayCodeMakeSure.getExitId());
|
||||
outPickSubmitParam.setProductId(mydoJobDetail.getProductId());
|
||||
List<OutPickSubmit> outPickSubmits = outPickSubmitService.selectOutPickSubmitList(outPickSubmitParam);
|
||||
for (OutPickSubmit outPickSubmit : outPickSubmits) {
|
||||
BigDecimal subtract = Convert.toBigDecimal(outPickSubmit.getQuantity()).subtract(Convert.toBigDecimal(mydoJobDetail.getPickBindQuantity()));
|
||||
if (subtract.compareTo(BigDecimal.ZERO) == 0) {
|
||||
//删除缓存信息
|
||||
outPickSubmitService.deleteOutPickSubmitById(outPickSubmit.getId());
|
||||
} else if (subtract.compareTo(BigDecimal.ZERO) < 0) {
|
||||
|
||||
return AjaxResult.warn(MessageUtils.message("warn.message12"));
|
||||
} else {
|
||||
outPickSubmit.setQuantity(subtract.toString());
|
||||
outPickSubmitService.updateOutPickSubmit(outPickSubmit);
|
||||
}
|
||||
}
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public AjaxResult bindShelf(TrayCodeMakeSure trayCodeMakeSure) {
|
||||
BasContainerDetails basContainerDetails = new BasContainerDetails();
|
||||
basContainerDetails.setContainerId(trayCodeMakeSure.getContainerCode());
|
||||
for (MydoJobDetail mydoJobDetail : trayCodeMakeSure.getMydoJobDetailList()) {
|
||||
basContainerDetails.setProductId(mydoJobDetail.getProductId());
|
||||
List<BasContainerDetails> basContainerDetailsList = basContainerDetailsService.selectBasContainerDetailsList(basContainerDetails);
|
||||
if (basContainerDetailsList.isEmpty()) {
|
||||
basContainerDetails.setProductName(mydoJobDetail.getExtraField().getMaterialDesc());
|
||||
basContainerDetails.setQuantity(Convert.toLong(mydoJobDetail.getPickBindQuantity()));
|
||||
basContainerDetailsService.insertBasContainerDetails(basContainerDetails);
|
||||
} else {
|
||||
basContainerDetails.setId(basContainerDetailsList.get(0).getId());
|
||||
basContainerDetails.setQuantity(basContainerDetailsList.get(0).getQuantity() + Convert.toLong(mydoJobDetail.getPickBindQuantity()));
|
||||
basContainerDetailsService.updateBasContainerDetails(basContainerDetails);
|
||||
}
|
||||
|
||||
|
||||
OutPickSubmit outPickSubmitParam = new OutPickSubmit();
|
||||
outPickSubmitParam.setWarehouseId(trayCodeMakeSure.getWarehouseId());
|
||||
outPickSubmitParam.setExitId(trayCodeMakeSure.getExitId());
|
||||
outPickSubmitParam.setProductId(mydoJobDetail.getProductId());
|
||||
List<OutPickSubmit> outPickSubmits = outPickSubmitService.selectOutPickSubmitList(outPickSubmitParam);
|
||||
if (Integer.parseInt(outPickSubmits.get(0).getQuantity()) > Integer.parseInt(mydoJobDetail.getPickBindQuantity())) {
|
||||
outPickSubmitParam.setQuantity(String.valueOf(Integer.parseInt(outPickSubmits.get(0).getQuantity()) - Integer.parseInt(mydoJobDetail.getPickBindQuantity())));
|
||||
outPickSubmitParam.setId(outPickSubmits.get(0).getId());
|
||||
outPickSubmitService.updateOutPickSubmit(outPickSubmitParam);
|
||||
} else {
|
||||
outPickSubmitService.deleteOutPickSubmitById(outPickSubmits.get(0).getId());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AjaxResult movePoint(String startPoint, String endPoint) {
|
||||
BasContainerDetails basContainerDetails = new BasContainerDetails();
|
||||
basContainerDetails.setContainerId(startPoint);
|
||||
List<BasContainerDetails> basContainerDetails1 = basContainerDetailsService.selectBasContainerDetailsList(basContainerDetails);
|
||||
if (basContainerDetails1.isEmpty()) {
|
||||
return AjaxResult.error(MessageUtils.message("error.message31"));
|
||||
}
|
||||
BasContainerDetails basContainer = basContainerDetails1.get(0);
|
||||
return agvRequest(basContainer.getContainerId(), startPoint, endPoint);
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user