|
@@ -24,6 +24,7 @@ import com.ruoyi.base.mapper.BaseLocationInfoMapper;
|
|
|
import com.ruoyi.base.service.IBaseLocationInfoService;
|
|
|
import com.ruoyi.base.service.IBaseSkuService;
|
|
|
import com.ruoyi.common.core.domain.AjaxResult;
|
|
|
+import com.ruoyi.common.exception.ServiceException;
|
|
|
import com.ruoyi.common.utils.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -60,86 +61,7 @@ public class BusinessServiceImpl implements IBusinessService {
|
|
|
@Override
|
|
|
public AjaxResult agvCall(List<AgvCallDTO> agvCallDTOList) {
|
|
|
for (AgvCallDTO agvCallDTO : agvCallDTOList) {
|
|
|
- if (!StringUtils.isEmpty(agvCallDTO.getLocationFrom()) && StringUtils.isEmpty(agvCallDTO.getLocationTo())) {
|
|
|
- //如果起始库位不为空、目标库位为空则表示为入库
|
|
|
- //1.分配库位
|
|
|
- BaseLocationInfo locationFrom = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(agvCallDTO.getLocationFrom(), agvCallDTO.getWarehouseId());
|
|
|
- InWarehouseDTO inWarehouseDTO = new InWarehouseDTO();
|
|
|
- inWarehouseDTO.setWarehouseId(agvCallDTO.getWarehouseId());
|
|
|
- inWarehouseDTO.setSku(agvCallDTO.getSku());
|
|
|
- inWarehouseDTO.setLocationTo(agvCallDTO.getLocationTo());
|
|
|
- inWarehouseDTO.setLocationFrom(agvCallDTO.getLocationFrom());
|
|
|
- inWarehouseDTO.setQty(agvCallDTO.getQty());
|
|
|
- inWarehouseDTO.setSupplier(agvCallDTO.getSupplier());
|
|
|
- inWarehouseDTO.setWeight(agvCallDTO.getWeight());
|
|
|
- inWarehouseDTO.setLotattDTO(agvCallDTO.getLotattDTO());
|
|
|
- BaseLocationInfo locationInfo = inLocationAllocation(inWarehouseDTO);
|
|
|
- if (locationInfo == null) {
|
|
|
- throw new RuntimeException("没有可以分配的库位");
|
|
|
- }
|
|
|
- //2.初始化库存
|
|
|
- invLotLocIdService.initInv(agvCallDTO.getLocationFrom(), agvCallDTO.getSku(), Constant.CUSTOMER_ID, agvCallDTO.getQty(), agvCallDTO.getLotattDTO());
|
|
|
- //3.生成任务
|
|
|
- String taskNo = System.currentTimeMillis() + "";
|
|
|
- WcsTask wcsTask = new WcsTask();
|
|
|
- wcsTask.setTaskNo(taskNo);
|
|
|
- wcsTask.setAreaFrom(locationFrom.getZoneId().toString());
|
|
|
- wcsTask.setLocationFrom(agvCallDTO.getLocationFrom());
|
|
|
- wcsTask.setAreaTo(locationInfo.getZoneId() + "");
|
|
|
- wcsTask.setLocationTo(locationInfo.getId().toString());
|
|
|
- wcsTask.setState(9L);
|
|
|
- wcsTask.setPriority(1L);
|
|
|
- wcsTask.setCreateDate(new Date());
|
|
|
- wcsTask.setBusinessType("01");
|
|
|
- wcsTask.setTaskType("");
|
|
|
- return businessService.addTask(wcsTask);
|
|
|
- } else if (StringUtils.isEmpty(agvCallDTO.getLocationFrom()) && !StringUtils.isEmpty(agvCallDTO.getLocationTo())) {
|
|
|
- //如果起始库位为空、目标库位不为空则表示为出库
|
|
|
- BaseLocationInfo locationTo = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(agvCallDTO.getLocationTo(), agvCallDTO.getWarehouseId());
|
|
|
- OutWarehouseDTO outWarehouseDTO = new OutWarehouseDTO();
|
|
|
- outWarehouseDTO.setLocationTo(locationTo.getId().toString());
|
|
|
- outWarehouseDTO.setSku(agvCallDTO.getSku());
|
|
|
- outWarehouseDTO.setQty(agvCallDTO.getQty());
|
|
|
- outWarehouseDTO.setWeight(agvCallDTO.getWeight());
|
|
|
- outWarehouseDTO.setSupplier(agvCallDTO.getSupplier());
|
|
|
- outWarehouseDTO.setLotattDTO(agvCallDTO.getLotattDTO());
|
|
|
- outWarehouseDTO.setWarehouseId(agvCallDTO.getWarehouseId());
|
|
|
- BaseLocationInfo locationFrom = outInvAllocation(outWarehouseDTO);
|
|
|
- if (locationFrom == null) {
|
|
|
- throw new RuntimeException("没有可分配的库存");
|
|
|
- }
|
|
|
- //3.生成任务
|
|
|
- String taskNo = System.currentTimeMillis() + "";
|
|
|
- WcsTask wcsTask = new WcsTask();
|
|
|
- wcsTask.setTaskNo(taskNo);
|
|
|
- wcsTask.setAreaFrom(locationFrom.getZoneId().toString());
|
|
|
- wcsTask.setLocationFrom(locationFrom.getId().toString());
|
|
|
- wcsTask.setAreaTo(locationTo.getZoneId() + "");
|
|
|
- wcsTask.setLocationTo(locationTo.getId().toString());
|
|
|
- wcsTask.setState(9L);
|
|
|
- wcsTask.setPriority(1L);
|
|
|
- wcsTask.setCreateDate(new Date());
|
|
|
- wcsTask.setBusinessType("01");
|
|
|
- wcsTask.setTaskType("");
|
|
|
- return businessService.addTask(wcsTask);
|
|
|
- } else if (!StringUtils.isEmpty(agvCallDTO.getLocationFrom()) && !StringUtils.isEmpty(agvCallDTO.getLocationTo())) {
|
|
|
- BaseLocationInfo locationFrom = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(agvCallDTO.getLocationFrom(), agvCallDTO.getWarehouseId());
|
|
|
- BaseLocationInfo locationTo = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(agvCallDTO.getLocationTo(), agvCallDTO.getWarehouseId());
|
|
|
- //如果都不为空则表示指定任务
|
|
|
- String taskNo = System.currentTimeMillis() + "";
|
|
|
- WcsTask wcsTask = new WcsTask();
|
|
|
- wcsTask.setTaskNo(taskNo);
|
|
|
- wcsTask.setAreaFrom(locationFrom.getZoneId().toString());
|
|
|
- wcsTask.setLocationFrom(locationFrom.getId().toString());
|
|
|
- wcsTask.setAreaTo(locationTo.getZoneId() + "");
|
|
|
- wcsTask.setLocationTo(locationTo.getId().toString());
|
|
|
- wcsTask.setState(9L);
|
|
|
- wcsTask.setPriority(1L);
|
|
|
- wcsTask.setCreateDate(new Date());
|
|
|
- wcsTask.setBusinessType("01");
|
|
|
- wcsTask.setTaskType("");
|
|
|
- return businessService.addTask(wcsTask);
|
|
|
- }
|
|
|
+ //BaseLocationInfo locationFrom = agvCallDTO.getLocationFrom();
|
|
|
}
|
|
|
return AjaxResult.error("无效的指令");
|
|
|
}
|
|
@@ -150,6 +72,10 @@ public class BusinessServiceImpl implements IBusinessService {
|
|
|
/**
|
|
|
* 根据sku查询可以存放的zone
|
|
|
* 根据每个zone的配置去分配可以存放的库位
|
|
|
+ *
|
|
|
+ * force
|
|
|
+ * optimization
|
|
|
+ * ignore
|
|
|
*/
|
|
|
if (!StringUtils.isEmpty(inWarehouseDTO.getLocationTo())) { //指定库位则直接返回库位
|
|
|
BaseLocationInfo baseLocationInfo = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(inWarehouseDTO.getLocationTo(), inWarehouseDTO.getWarehouseId());
|
|
@@ -260,7 +186,7 @@ public class BusinessServiceImpl implements IBusinessService {
|
|
|
if (result > 0) {
|
|
|
return AjaxResult.success("任务生成成功");
|
|
|
} else {
|
|
|
- throw new RuntimeException("任务生成失败");
|
|
|
+ throw new ServiceException("任务生成失败");
|
|
|
}
|
|
|
}
|
|
|
|