台位配送页面与其权限和国际化

This commit is contained in:
猫猫guowen
2025-07-31 15:40:06 +08:00
parent 58c3822e07
commit 27be485db1
6 changed files with 1545 additions and 3 deletions

View File

@@ -0,0 +1,241 @@
package com.ruoyi.bas.basstandPosition.controller;
import java.util.List;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
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.RestController;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.bas.port.domain.BasProductPort;
import com.ruoyi.bas.port.service.IBasProductPortService;
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.common.core.page.TableDataInfo;
import com.ruoyi.common.core.page.PageDomain;
import com.ruoyi.common.core.page.TableSupport;
import com.ruoyi.common.constant.HttpStatus;
/**
* 基础站台位置Controller
*
* @author ruoyi
* @date 2025-01-17
*/
@RestController
@RequestMapping("/bas/basstandPosition")
@PreAuthorize("@ss.hasPermi('bas:basstandPosition:list')")
public class BasStandPositionController extends BaseController
{
@Autowired
private IBasProductPortService basProductPortService;
@Autowired
private IBasContainerService basContainerService;
@Autowired
private IBasContainerDetailsService basContainerDetailsService;
/**
* 查询点位类型为6的基础点位列表,并关联容器和容器明细数据
*/
@PreAuthorize("@ss.hasPermi('bas:basstandPosition:list')")
@GetMapping("/portType6")
public TableDataInfo getPortType6List(BasProductPort basProductPort)
{
// 设置查询条件:portType为6
basProductPort.setPortType("6");
// 先查询所有portType为6的BasProductPort数据(不分页)
List<BasProductPort> allPortList = basProductPortService.selectBasProductPortList(basProductPort);
// 构建完整的返回结果列表
List<Map<String, Object>> allResultList = new ArrayList<>();
for (BasProductPort port : allPortList) {
Map<String, Object> resultMap = new HashMap<>();
// 添加点位信息
resultMap.put("port", port);
// 根据portName查询容器信息
BasContainer containerQuery = new BasContainer();
containerQuery.setPortName(port.getPortName());
List<BasContainer> containerList = basContainerService.selectBasContainerList(containerQuery);
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);
allResultList.add(resultMap);
}
// 手动实现分页
PageDomain pageDomain = TableSupport.buildPageRequest();
int pageNum = pageDomain.getPageNum();
int pageSize = pageDomain.getPageSize();
int total = allResultList.size();
// 计算分页范围
int startIndex = (pageNum - 1) * pageSize;
int endIndex = Math.min(startIndex + pageSize, total);
// 获取当前页数据
List<Map<String, Object>> pageResultList = new ArrayList<>();
if (startIndex < total) {
pageResultList = allResultList.subList(startIndex, endIndex);
}
// 构建分页结果
TableDataInfo rspData = new TableDataInfo();
rspData.setCode(HttpStatus.SUCCESS);
rspData.setMsg("查询成功");
rspData.setRows(pageResultList);
rspData.setTotal(total);
return rspData;
}
/**
* 查询所有无料架信息的点位数据(不限制portType)
*/
@PreAuthorize("@ss.hasPermi('bas:basstandPosition:list')")
@GetMapping("/noContainer")
public TableDataInfo getNoContainerPositions(BasProductPort basProductPort)
{
// 查询所有BasProductPort数据(不限制portType)
List<BasProductPort> allPortList = basProductPortService.selectBasProductPortList(basProductPort);
// 构建无料架点位的返回结果列表
List<Map<String, Object>> noContainerResultList = new ArrayList<>();
for (BasProductPort port : allPortList) {
// 根据portName查询容器信息
BasContainer containerQuery = new BasContainer();
containerQuery.setPortName(port.getPortName());
List<BasContainer> containerList = basContainerService.selectBasContainerList(containerQuery);
// 如果该点位没有容器信息,则添加到结果列表中
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);
}
}
// 手动实现分页
PageDomain pageDomain = TableSupport.buildPageRequest();
int pageNum = pageDomain.getPageNum();
int pageSize = pageDomain.getPageSize();
int total = noContainerResultList.size();
// 计算分页范围
int startIndex = (pageNum - 1) * pageSize;
int endIndex = Math.min(startIndex + pageSize, total);
// 获取当前页数据
List<Map<String, Object>> pageResultList = new ArrayList<>();
if (startIndex < total) {
pageResultList = noContainerResultList.subList(startIndex, endIndex);
}
// 构建分页结果
TableDataInfo rspData = new TableDataInfo();
rspData.setCode(HttpStatus.SUCCESS);
rspData.setMsg("查询成功");
rspData.setRows(pageResultList);
rspData.setTotal(total);
return rspData;
}
/**
* 查询所有有料架信息的点位数据(不限制portType)
*/
@PreAuthorize("@ss.hasPermi('bas:basstandPosition:list')")
@GetMapping("/hasContainer")
public TableDataInfo getHasContainerPositions(BasProductPort basProductPort)
{
// 查询所有BasProductPort数据(不限制portType)
List<BasProductPort> allPortList = basProductPortService.selectBasProductPortList(basProductPort);
// 构建有料架点位的返回结果列表
List<Map<String, Object>> hasContainerResultList = new ArrayList<>();
for (BasProductPort port : allPortList) {
// 根据portName查询容器信息
BasContainer containerQuery = new BasContainer();
containerQuery.setPortName(port.getPortName());
List<BasContainer> containerList = basContainerService.selectBasContainerList(containerQuery);
// 如果该点位有容器信息,则添加到结果列表中
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);
}
resultMap.put("containerWithDetails", containerWithDetails);
hasContainerResultList.add(resultMap);
}
}
// 手动实现分页
PageDomain pageDomain = TableSupport.buildPageRequest();
int pageNum = pageDomain.getPageNum();
int pageSize = pageDomain.getPageSize();
int total = hasContainerResultList.size();
// 计算分页范围
int startIndex = (pageNum - 1) * pageSize;
int endIndex = Math.min(startIndex + pageSize, total);
// 获取当前页数据
List<Map<String, Object>> pageResultList = new ArrayList<>();
if (startIndex < total) {
pageResultList = hasContainerResultList.subList(startIndex, endIndex);
}
// 构建分页结果
TableDataInfo rspData = new TableDataInfo();
rspData.setCode(HttpStatus.SUCCESS);
rspData.setMsg("查询成功");
rspData.setRows(pageResultList);
rspData.setTotal(total);
return rspData;
}
}