|
@@ -1,5 +1,9 @@
|
|
|
package com.ruoyi.ams.xuankuang.service;
|
|
|
|
|
|
+import com.ruoyi.ams.asn.domain.WmsDocAsnDetails;
|
|
|
+import com.ruoyi.ams.asn.domain.WmsDocAsnHeader;
|
|
|
+import com.ruoyi.ams.asn.mapper.WmsDocAsnDetailsMapper;
|
|
|
+import com.ruoyi.ams.asn.mapper.WmsDocAsnHeaderMapper;
|
|
|
import com.ruoyi.ams.config.domain.dto.AgvCallDTO;
|
|
|
import com.ruoyi.ams.config.domain.dto.LotattDTO;
|
|
|
import com.ruoyi.ams.inv.service.IInvLotLocIdService;
|
|
@@ -16,6 +20,7 @@ import com.ruoyi.base.domain.BaseSku;
|
|
|
import com.ruoyi.base.domain.vo.BaseLocationLotattVO;
|
|
|
import com.ruoyi.base.service.IBaseLocationInfoService;
|
|
|
import com.ruoyi.base.service.IBaseSkuService;
|
|
|
+import com.ruoyi.base.utils.IdSequenceUtils;
|
|
|
import com.ruoyi.common.core.domain.AjaxResult;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -24,6 +29,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
|
|
|
|
import static com.ruoyi.ams.xuankuang.service.BaseLocationInfoSubService.OUT_ZONES;
|
|
@@ -49,6 +55,12 @@ public class WcsToWmsApiService {
|
|
|
private WcsTaskSubService wcsTaskSubService;
|
|
|
@Autowired
|
|
|
private IWcsTaskService iWcsTaskService;
|
|
|
+ @Autowired
|
|
|
+ private WmsDocAsnHeaderMapper wmsDocAsnHeaderMapper;
|
|
|
+ @Autowired
|
|
|
+ private WmsDocAsnDetailsMapper wmsDocAsnDetailsMapper;
|
|
|
+ @Autowired
|
|
|
+ private IdSequenceUtils idSequenceUtils;
|
|
|
|
|
|
/**
|
|
|
* 组盘上报
|
|
@@ -73,7 +85,57 @@ public class WcsToWmsApiService {
|
|
|
// 任务号
|
|
|
String wcsNo = stackingCompletion.getWcsNo();
|
|
|
|
|
|
- log.info(String.valueOf(reportType), palletNo, materialType, sku, qty, asnNo, wcsNo);
|
|
|
+
|
|
|
+ if (asnNo.equals("")){
|
|
|
+ AjaxResult ajaxResult1 = generateAShippingOrder(sku, new BigDecimal(qty));
|
|
|
+ // 判重
|
|
|
+ WcsTask wcsTaskQuery = new WcsTask();
|
|
|
+ //AsnNO
|
|
|
+ wcsTaskQuery.setExt1(ajaxResult1.getData().toString());
|
|
|
+ wcsTaskQuery.setExt2(palletNo);
|
|
|
+ wcsTaskQuery.setExt3(wcsNo);
|
|
|
+ WcsTask wcsTask = iWcsTaskService.selectWcsTaskByModel(wcsTaskQuery);
|
|
|
+ if (wcsTask != null) {
|
|
|
+ String locationTo = wcsTask.getLocationTo();
|
|
|
+ BaseLocationInfo baseLocationInfo = iBaseLocationInfoService.selectBaseLocationInfoByIdOrNo(locationTo, Constant.WAREHOUSE_ID);
|
|
|
+ LocationCoordinateVo locationCoordinateVo = new LocationCoordinateVo();
|
|
|
+ locationCoordinateVo.setTaskNo(wcsTask.getTaskNo());
|
|
|
+ locationCoordinateVo.setLocationId(baseLocationInfo.getLocationNo());
|
|
|
+ locationCoordinateVo.setFloor(Integer.valueOf(baseLocationInfo.getShiftNo()));
|
|
|
+ locationCoordinateVo.setCol(Integer.valueOf(baseLocationInfo.getRowNo()));
|
|
|
+ locationCoordinateVo.setRow(Integer.valueOf(baseLocationInfo.getRowIndex()));
|
|
|
+ return AjaxResult.success("仓位获取成功!", locationCoordinateVo);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 推荐目标库位
|
|
|
+ BaseLocationLotattVO baseLocationLotattVO = baseLocationInfoSubService.recommendAReceiptLocation(sku);
|
|
|
+ if (baseLocationLotattVO == null) {
|
|
|
+ AjaxResult.error("没有可以推荐的目标库位!");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 生成任务
|
|
|
+ String taskNo = "";
|
|
|
+ AjaxResult ajaxResult = wcsTaskSubService.addWcsTask(Constant.LOC_STAGE_CACHE.toString()
|
|
|
+ , baseLocationLotattVO.getId().toString()
|
|
|
+ , ajaxResult1.getData().toString()
|
|
|
+ , palletNo
|
|
|
+ , wcsNo);
|
|
|
+ if (!ajaxResult.isSuccess()) {
|
|
|
+ return ajaxResult;
|
|
|
+ }
|
|
|
+ taskNo = ajaxResult.get("data").toString();
|
|
|
+ // 入库缓存位生成库存
|
|
|
+ InvLotLocIdSubService.initInv(Constant.LOC_STAGE_CACHE.toString(), sku, palletNo, ajaxResult1.getData().toString(), taskNo, qty);
|
|
|
+ // 反馈
|
|
|
+ LocationCoordinateVo locationCoordinateVo = new LocationCoordinateVo();
|
|
|
+ locationCoordinateVo.setTaskNo(taskNo);
|
|
|
+ locationCoordinateVo.setLocationId(baseLocationLotattVO.getLocationNo());
|
|
|
+ locationCoordinateVo.setFloor(Integer.valueOf(baseLocationLotattVO.getShiftNo()));
|
|
|
+ locationCoordinateVo.setCol(Integer.valueOf(baseLocationLotattVO.getRowNo()));
|
|
|
+ locationCoordinateVo.setRow(Integer.valueOf(baseLocationLotattVO.getRowIndex()));
|
|
|
+ return AjaxResult.success("仓位获取成功!", locationCoordinateVo);
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
// 判重
|
|
|
WcsTask wcsTaskQuery = new WcsTask();
|
|
@@ -257,4 +319,39 @@ public class WcsToWmsApiService {
|
|
|
}
|
|
|
return baseLocationLotattVOS.get(0);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生成入库单
|
|
|
+ * @param sku
|
|
|
+ * @param qty
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public AjaxResult generateAShippingOrder(String sku, BigDecimal qty) {
|
|
|
+ WmsDocAsnHeader wmsDocAsnHeader = new WmsDocAsnHeader();
|
|
|
+ //生成单头
|
|
|
+ String asnNo = idSequenceUtils.generateId("ASNNO");
|
|
|
+ wmsDocAsnHeader.setAsnNo(asnNo);
|
|
|
+ wmsDocAsnHeader.setEdiSendFlag("N");
|
|
|
+ wmsDocAsnHeader.setAsnType(Constant.ASN_TYP.HK.getValue());
|
|
|
+ wmsDocAsnHeader.setCreateTime(new Date());
|
|
|
+ wmsDocAsnHeader.setAsnStatus(Constant.ASN_STS.STS10.getValue());
|
|
|
+ wmsDocAsnHeader.setCreateBy("Wms");
|
|
|
+ wmsDocAsnHeaderMapper.insertWmsDocAsnHeader(wmsDocAsnHeader);
|
|
|
+
|
|
|
+ //生成明细
|
|
|
+ WmsDocAsnDetails wmsDocAsnDetails = new WmsDocAsnDetails();
|
|
|
+ wmsDocAsnDetails.setAsnNo(asnNo);
|
|
|
+ wmsDocAsnDetails.setAsnLineNo(1l);
|
|
|
+ wmsDocAsnDetails.setSku(sku);
|
|
|
+ wmsDocAsnDetails.setCreateTime(new Date());
|
|
|
+ wmsDocAsnDetails.setExpectedQty(qty);
|
|
|
+ wmsDocAsnDetails.setExpectedQtyEach(qty);
|
|
|
+ wmsDocAsnDetails.setReceivedQty(new BigDecimal(0));
|
|
|
+ wmsDocAsnDetails.setReceivedQtyEach(new BigDecimal(0));
|
|
|
+ wmsDocAsnDetails.setLineStatus(Constant.ASN_STS.STS10.getValue());
|
|
|
+ wmsDocAsnDetails.setCreateTime(new Date());
|
|
|
+ wmsDocAsnDetails.setCreateBy("Wms");
|
|
|
+ wmsDocAsnDetailsMapper.insertWmsDocAsnDetails(wmsDocAsnDetails);
|
|
|
+ return AjaxResult.success("操作成功!", asnNo);
|
|
|
+ }
|
|
|
}
|