台位配送添加点对点搬运功能
This commit is contained in:
@@ -19,15 +19,6 @@ public class RuoYiApplication
|
||||
{
|
||||
// System.setProperty("spring.devtools.restart.enabled", "false");
|
||||
SpringApplication.run(RuoYiApplication.class, args);
|
||||
System.out.println("(♥◠‿◠)ノ゙ 若依启动成功 ლ(´ڡ`ლ)゙ \n" +
|
||||
" .-------. ____ __ \n" +
|
||||
" | _ _ \\ \\ \\ / / \n" +
|
||||
" | ( ' ) | \\ _. / ' \n" +
|
||||
" |(_ o _) / _( )_ .' \n" +
|
||||
" | (_,_).' __ ___(_ o _)' \n" +
|
||||
" | |\\ \\ | || |(_,_)' \n" +
|
||||
" | | \\ `' /| `-' / \n" +
|
||||
" | | \\ / \\ / \n" +
|
||||
" ''-' `'-' `-..-' ");
|
||||
System.out.println("(♥◠‿◠)ノ゙ WMS启动成功 ლ(´ڡ`ლ)゙ ");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,10 +4,12 @@ import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.bas.port.domain.BasProductPort;
|
||||
@@ -16,6 +18,8 @@ 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.device.agv.domain.AgvContainerTask;
|
||||
import com.ruoyi.device.agv.service.IAgvContainerTaskService;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.common.core.page.PageDomain;
|
||||
import com.ruoyi.common.core.page.TableSupport;
|
||||
@@ -40,27 +44,60 @@ public class BasStandPositionController extends BaseController
|
||||
|
||||
@Autowired
|
||||
private IBasContainerDetailsService basContainerDetailsService;
|
||||
|
||||
@Autowired
|
||||
private IAgvContainerTaskService agvContainerTaskService;
|
||||
|
||||
/**
|
||||
* 查询点位类型为6的基础点位列表,并关联容器和容器明细数据
|
||||
* 查询基础点位列表,并关联容器和容器明细数据
|
||||
* 支持根据点位类型和点位名称筛选,默认返回所有数据
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('bas:basstandPosition:list')")
|
||||
@GetMapping("/portType6")
|
||||
public TableDataInfo getPortType6List(BasProductPort basProductPort)
|
||||
public TableDataInfo getPortType6List(BasProductPort basProductPort, @RequestParam(required = false) Integer agvStatus)
|
||||
{
|
||||
// 设置查询条件:portType为6
|
||||
basProductPort.setPortType("6");
|
||||
// 如果没有传入portType参数,则查询所有类型的数据
|
||||
// 如果传入了portType参数,则按指定类型筛选
|
||||
// 如果传入了portName参数,则按点位名称筛选(模糊查询)
|
||||
// 如果传入了agvStatus参数,则按AGV状态筛选
|
||||
|
||||
// 先查询所有portType为6的BasProductPort数据(不分页)
|
||||
// 先查询所有符合条件的BasProductPort数据(不分页)
|
||||
List<BasProductPort> allPortList = basProductPortService.selectBasProductPortList(basProductPort);
|
||||
|
||||
// 查询所有agv任务数据,避免重复查询
|
||||
AgvContainerTask taskQuery = new AgvContainerTask();
|
||||
List<AgvContainerTask> allTaskList = agvContainerTaskService.selectAgvContainerTaskList(taskQuery);
|
||||
|
||||
// 构建完整的返回结果列表
|
||||
List<Map<String, Object>> allResultList = new ArrayList<>();
|
||||
|
||||
for (BasProductPort port : allPortList) {
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
|
||||
// 判断该点位的agv状态并添加到port对象中
|
||||
int portAgvStatus = 0; // 默认为0
|
||||
String portName = port.getPortName();
|
||||
for (AgvContainerTask task : allTaskList) {
|
||||
if ((task.getStartPoint() != null && task.getStartPoint().equals(portName)) ||
|
||||
(task.getEndPoint() != null && task.getEndPoint().equals(portName))) {
|
||||
portAgvStatus = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 创建一个包含agvStatus的port Map
|
||||
Map<String, Object> portWithStatus = new HashMap<>();
|
||||
portWithStatus.put("id", port.getId());
|
||||
portWithStatus.put("portName", port.getPortName());
|
||||
portWithStatus.put("portType", port.getPortType());
|
||||
portWithStatus.put("portDesc", port.getPortDesc());
|
||||
portWithStatus.put("warehouseId", port.getWarehouseId());
|
||||
portWithStatus.put("createMan", port.getCreateMan());
|
||||
portWithStatus.put("createTime", port.getCreateTime());
|
||||
portWithStatus.put("agvStatus", portAgvStatus);
|
||||
|
||||
// 添加点位信息
|
||||
resultMap.put("port", port);
|
||||
resultMap.put("port", portWithStatus);
|
||||
|
||||
// 根据portName查询容器信息
|
||||
BasContainer containerQuery = new BasContainer();
|
||||
@@ -78,6 +115,8 @@ public class BasStandPositionController extends BaseController
|
||||
BasContainerDetails detailsQuery = new BasContainerDetails();
|
||||
detailsQuery.setContainerId(container.getContainerId());
|
||||
List<BasContainerDetails> detailsList = basContainerDetailsService.selectBasContainerDetailsList(detailsQuery);
|
||||
|
||||
// 直接添加明细信息,不需要重复添加agvStatus
|
||||
containerMap.put("details", detailsList);
|
||||
|
||||
containerWithDetails.add(containerMap);
|
||||
@@ -87,6 +126,29 @@ public class BasStandPositionController extends BaseController
|
||||
allResultList.add(resultMap);
|
||||
}
|
||||
|
||||
// 根据agvStatus筛选数据
|
||||
if (agvStatus != null) {
|
||||
allResultList = allResultList.stream().filter(resultMap -> {
|
||||
@SuppressWarnings("unchecked")
|
||||
Map<String, Object> portMap = (Map<String, Object>) resultMap.get("port");
|
||||
String portName = (String) portMap.get("portName");
|
||||
|
||||
// 判断该点位的agv状态
|
||||
boolean hasAgvTask = false;
|
||||
for (AgvContainerTask task : allTaskList) {
|
||||
if ((task.getStartPoint() != null && task.getStartPoint().equals(portName)) ||
|
||||
(task.getEndPoint() != null && task.getEndPoint().equals(portName))) {
|
||||
hasAgvTask = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 根据筛选条件返回结果
|
||||
int currentAgvStatus = hasAgvTask ? 1 : 0;
|
||||
return currentAgvStatus == agvStatus.intValue();
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
// 手动实现分页
|
||||
PageDomain pageDomain = TableSupport.buildPageRequest();
|
||||
int pageNum = pageDomain.getPageNum();
|
||||
@@ -123,6 +185,10 @@ public class BasStandPositionController extends BaseController
|
||||
// 查询所有BasProductPort数据(不限制portType)
|
||||
List<BasProductPort> allPortList = basProductPortService.selectBasProductPortList(basProductPort);
|
||||
|
||||
// 查询所有agv任务数据,避免重复查询
|
||||
AgvContainerTask taskQuery = new AgvContainerTask();
|
||||
List<AgvContainerTask> allTaskList = agvContainerTaskService.selectAgvContainerTaskList(taskQuery);
|
||||
|
||||
// 构建无料架点位的返回结果列表
|
||||
List<Map<String, Object>> noContainerResultList = new ArrayList<>();
|
||||
|
||||
@@ -134,11 +200,36 @@ public class BasStandPositionController extends BaseController
|
||||
|
||||
// 如果该点位没有容器信息,则添加到结果列表中
|
||||
if (containerList == null || containerList.isEmpty()) {
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
resultMap.put("port", port);
|
||||
resultMap.put("containers", new ArrayList<>());
|
||||
resultMap.put("containerWithDetails", new ArrayList<>());
|
||||
noContainerResultList.add(resultMap);
|
||||
// 判断该点位的agv状态并添加到port对象中
|
||||
int portAgvStatus = 0; // 默认为0
|
||||
String portName = port.getPortName();
|
||||
for (AgvContainerTask task : allTaskList) {
|
||||
if ((task.getStartPoint() != null && task.getStartPoint().equals(portName)) ||
|
||||
(task.getEndPoint() != null && task.getEndPoint().equals(portName))) {
|
||||
portAgvStatus = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 只返回agvStatus不等于1的点位数据
|
||||
if (portAgvStatus != 1) {
|
||||
// 创建一个包含agvStatus的port Map
|
||||
Map<String, Object> portWithStatus = new HashMap<>();
|
||||
portWithStatus.put("id", port.getId());
|
||||
portWithStatus.put("portName", port.getPortName());
|
||||
portWithStatus.put("portType", port.getPortType());
|
||||
portWithStatus.put("portDesc", port.getPortDesc());
|
||||
portWithStatus.put("warehouseId", port.getWarehouseId());
|
||||
portWithStatus.put("createMan", port.getCreateMan());
|
||||
portWithStatus.put("createTime", port.getCreateTime());
|
||||
portWithStatus.put("agvStatus", portAgvStatus);
|
||||
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
resultMap.put("port", portWithStatus);
|
||||
resultMap.put("containers", new ArrayList<>());
|
||||
resultMap.put("containerWithDetails", new ArrayList<>());
|
||||
noContainerResultList.add(resultMap);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -178,6 +269,10 @@ public class BasStandPositionController extends BaseController
|
||||
// 查询所有BasProductPort数据(不限制portType)
|
||||
List<BasProductPort> allPortList = basProductPortService.selectBasProductPortList(basProductPort);
|
||||
|
||||
// 查询所有agv任务数据,避免重复查询
|
||||
AgvContainerTask taskQuery = new AgvContainerTask();
|
||||
List<AgvContainerTask> allTaskList = agvContainerTaskService.selectAgvContainerTaskList(taskQuery);
|
||||
|
||||
// 构建有料架点位的返回结果列表
|
||||
List<Map<String, Object>> hasContainerResultList = new ArrayList<>();
|
||||
|
||||
@@ -189,27 +284,53 @@ public class BasStandPositionController extends BaseController
|
||||
|
||||
// 如果该点位有容器信息,则添加到结果列表中
|
||||
if (containerList != null && !containerList.isEmpty()) {
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
resultMap.put("port", port);
|
||||
resultMap.put("containers", containerList);
|
||||
|
||||
// 为每个容器查询明细信息
|
||||
List<Map<String, Object>> containerWithDetails = new ArrayList<>();
|
||||
for (BasContainer container : containerList) {
|
||||
Map<String, Object> containerMap = new HashMap<>();
|
||||
containerMap.put("container", container);
|
||||
|
||||
// 根据containerId查询容器明细
|
||||
BasContainerDetails detailsQuery = new BasContainerDetails();
|
||||
detailsQuery.setContainerId(container.getContainerId());
|
||||
List<BasContainerDetails> detailsList = basContainerDetailsService.selectBasContainerDetailsList(detailsQuery);
|
||||
containerMap.put("details", detailsList);
|
||||
|
||||
containerWithDetails.add(containerMap);
|
||||
// 判断该点位的agv状态并添加到port对象中
|
||||
int portAgvStatus = 0; // 默认为0
|
||||
String portName = port.getPortName();
|
||||
for (AgvContainerTask task : allTaskList) {
|
||||
if ((task.getStartPoint() != null && task.getStartPoint().equals(portName)) ||
|
||||
(task.getEndPoint() != null && task.getEndPoint().equals(portName))) {
|
||||
portAgvStatus = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
resultMap.put("containerWithDetails", containerWithDetails);
|
||||
|
||||
hasContainerResultList.add(resultMap);
|
||||
// 创建一个包含agvStatus的port Map
|
||||
Map<String, Object> portWithStatus = new HashMap<>();
|
||||
portWithStatus.put("id", port.getId());
|
||||
portWithStatus.put("portName", port.getPortName());
|
||||
portWithStatus.put("portType", port.getPortType());
|
||||
portWithStatus.put("portDesc", port.getPortDesc());
|
||||
portWithStatus.put("warehouseId", port.getWarehouseId());
|
||||
portWithStatus.put("createMan", port.getCreateMan());
|
||||
portWithStatus.put("createTime", port.getCreateTime());
|
||||
portWithStatus.put("agvStatus", portAgvStatus);
|
||||
|
||||
// 只返回agvStatus不等于1的数据
|
||||
if (portAgvStatus != 1) {
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
resultMap.put("port", portWithStatus);
|
||||
resultMap.put("containers", containerList);
|
||||
|
||||
|
||||
// 为每个容器查询明细信息
|
||||
List<Map<String, Object>> containerWithDetails = new ArrayList<>();
|
||||
for (BasContainer container : containerList) {
|
||||
Map<String, Object> containerMap = new HashMap<>();
|
||||
containerMap.put("container", container);
|
||||
|
||||
// 根据containerId查询容器明细
|
||||
BasContainerDetails detailsQuery = new BasContainerDetails();
|
||||
detailsQuery.setContainerId(container.getContainerId());
|
||||
List<BasContainerDetails> detailsList = basContainerDetailsService.selectBasContainerDetailsList(detailsQuery);
|
||||
containerMap.put("details", detailsList);
|
||||
|
||||
containerWithDetails.add(containerMap);
|
||||
}
|
||||
resultMap.put("containerWithDetails", containerWithDetails);
|
||||
|
||||
hasContainerResultList.add(resultMap);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user