大屏显示处理

This commit is contained in:
bo.wu@finesys.com.cn 2025-05-16 14:45:06 +08:00
parent eff95f15fd
commit 4145b630b9
10 changed files with 144 additions and 23 deletions

View File

@ -23,10 +23,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.*;
import static com.wms.utils.StringUtils.convertJsonString;
@ -42,7 +39,6 @@ public class MonitorController {
private final WorkFlowService workFlowService;
private final WorkSummaryService workSummaryService;
private final StandService standService;
/**
* 请求库位使用情况
* @return 库位使用情况
@ -52,15 +48,19 @@ public class MonitorController {
public String getLocationUseDetail() {
LocationUseDetail response = new LocationUseDetail();
try {
int allSize = (int) locationService.count();
int emptySize = (int) locationService.count(new LambdaQueryWrapper<Location>()
.eq(Location::getIsLock, 0)
.eq(Location::getLocationStatus, 0));
response.setUsed(allSize - emptySize);
response.setEmpty(emptySize);
// //总库位
// int allSize = (int) locationService.count();
// //空库位
// int emptySize = (int) locationService.count(new LambdaQueryWrapper<Location>()
// .eq(Location::getIsLock, 0)
// .eq(Location::getLocationStatus, 0));
response = locationService.statisticLocationList();
} catch (Exception e) {
response.setUsed(0);
response.setEmpty(0);
response.setEmptyUsed(0);
}
return convertJsonString(response);
}
@ -72,18 +72,47 @@ public class MonitorController {
@GetMapping("/getAnalysis7Days")
@ResponseBody
public String getAnalysis7Days() {
//记录开始时间戳
long startTime = System.currentTimeMillis();
System.out.println("开始执行getAnalysis7Days方法:"+startTime);
Analysis7Days response = new Analysis7Days();
List<String> dateList = new ArrayList<>();
WorkInfoByStand works = new WorkInfoByStand();
try {
// 获取当前日期
LocalDate now = LocalDate.now();
// LocalDate now = LocalDate.now();
// 创建一个列表来存储日期
List<LocalDate> dates = new ArrayList<>();
// 添加最近7天的日期到列表中
for (int i = 6; i >= 0; i--) {
dates.add(now.minusDays(i));
// List<LocalDate> dates = new ArrayList<>();
//List<WorkSummary> allWorkSummaries = workSummaryService.list();
List<LocalDate> workDays = workSummaryService.getRecentWorkDays(); //
Collections.reverse(workDays);
// List<WorkSummary> allWorkSummaries = workSummaryService.getByWorkDays(workDays);
Map<String, Object> param = new HashMap<>();
param.put("startDate", workDays.get(0));
if(workDays.size() == 1){
param.put("endDate", workDays.get(0));
}else {
param.put("endDate", workDays.get(workDays.size() - 1));
}
List<WorkSummary> allWorkSummaries = workSummaryService.getByWorkDays(param);
// int dayOffset = 0;
// while (dates.size() < 7) {
// LocalDate targetDate = now.minusDays(dayOffset++);
// List<WorkSummary> dayWorkSummaryList = allWorkSummaries.stream()
// .filter(ws -> Objects.equals(ws.getWorkDate().toLocalDate(), targetDate))
// .toList();
//
// long totalCount = dayWorkSummaryList.size();
// if (totalCount > 0) {
// dates.add(0, targetDate); // 注意插入头部保持时间顺序
// }
// }
// 添加最近7天的日期到列表中
// for (int i = 6; i >= 0; i--) {
// dates.add(now.minusDays(i));
// }
// 9个站台的信息
List<Integer> stand1 = new ArrayList<>();
List<Integer> stand2 = new ArrayList<>();
@ -95,9 +124,8 @@ public class MonitorController {
List<Integer> stand8 = new ArrayList<>();
List<Integer> stand9 = new ArrayList<>();
// 获取所有的工作总结
List<WorkSummary> allWorkSummaries = workSummaryService.list();
// 循环日期
for (LocalDate date : dates) {
for (LocalDate date : workDays) {
dateList.add(date.format(DateTimeFormatter.ofPattern("MM-dd")));
// 获取当日的工作总结
List<WorkSummary> dayWorkSummaryList = allWorkSummaries.stream().filter(workSummary -> Objects.equals(workSummary.getWorkDate().toLocalDate(), date)).toList();
@ -145,6 +173,9 @@ public class MonitorController {
}
response.setWorks(works);
response.setDate(dateList);
//记录总用时
long totalTime = System.currentTimeMillis() - startTime;
System.out.println("总用时:" + totalTime);
return convertJsonString(response);
}

View File

@ -6,13 +6,19 @@ import lombok.Data;
@Data
public class LocationUseDetail {
/**
* 占用
* 有货占用
*/
@JsonProperty("used")
private Integer used;
/**
*
* 库位
*/
@JsonProperty("empty")
private Integer empty;
/**
* 空托盘占用
*/
@JsonProperty("emptyUsed")
private Integer emptyUsed;
}

View File

@ -1,10 +1,12 @@
package com.wms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wms.entity.app.monitor.LocationUseDetail;
import com.wms.entity.table.Location;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface LocationMapper extends BaseMapper<Location> {
LocationUseDetail statisticLocationList();
}

View File

@ -4,10 +4,17 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wms.entity.table.WorkSummary;
import org.apache.ibatis.annotations.Mapper;
import java.time.LocalDate;
import java.util.List;
import java.util.Map;
/**
* 工作总结mapper
*/
@Mapper
public interface WorkSummaryMapper extends BaseMapper<WorkSummary> {
}
List<LocalDate> getRecentWorkDays();
List<WorkSummary> getByWorkDays(Map<String,Object> params);
}

View File

@ -1,6 +1,7 @@
package com.wms.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wms.entity.app.monitor.LocationUseDetail;
import com.wms.entity.table.Location;
import java.util.Map;
@ -17,4 +18,6 @@ public interface LocationService extends IService<Location> {
* @return 结果 nextLocationId, preTaskId
*/
Map<String, String> getOneLocation(String inPoint, String vehicleId, String goodsId);
LocationUseDetail statisticLocationList();
}

View File

@ -3,8 +3,15 @@ package com.wms.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wms.entity.table.WorkSummary;
import java.time.LocalDate;
import java.util.List;
import java.util.Map;
/**
* 工作总结服务接口
*/
public interface WorkSummaryService extends IService<WorkSummary> {
List<LocalDate> getRecentWorkDays();
List<WorkSummary> getByWorkDays(Map<String,Object> params);
}

View File

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.wms.constants.enums.StockStatus;
import com.wms.constants.enums.TaskType;
import com.wms.constants.enums.WmsTaskStatus;
import com.wms.entity.app.monitor.LocationUseDetail;
import com.wms.entity.table.*;
import com.wms.mapper.*;
import com.wms.service.LocationService;
@ -146,6 +147,11 @@ public class LocationServiceImplements extends ServiceImpl<LocationMapper, Locat
}
}
@Override
public LocationUseDetail statisticLocationList() {
return locationMapper.statisticLocationList();
}
/**
* 根据设备号查找库位
*

View File

@ -8,10 +8,25 @@ import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.util.List;
import java.util.Map;
/**
* 工作总结服务实现
*/
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class WorkSummaryServiceImpl extends ServiceImpl<WorkSummaryMapper, WorkSummary> implements WorkSummaryService {
@Autowired
private WorkSummaryMapper workSummaryMapper;
@Override
public List<LocalDate> getRecentWorkDays() {
return workSummaryMapper.getRecentWorkDays();
}
@Override
public List<WorkSummary> getByWorkDays(Map<String,Object> params) {
return workSummaryMapper.getByWorkDays(params);
}
}

View File

@ -2,5 +2,33 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wms.mapper.LocationMapper">
<select id="statisticLocationList" resultType="com.wms.entity.app.monitor.LocationUseDetail">
SELECT
-- 空库位(没有载具)
SUM(CASE WHEN loc.location_status = 0 THEN 1 ELSE 0 END) AS `empty`,
</mapper>
-- 有货的载具location_status = 1 且 vehicle_id 存在于 stock 表中)
SUM(CASE
WHEN loc.location_status = 1
AND EXISTS (
SELECT 1
FROM tbl_app_stock stock
WHERE stock.vehicle_id = loc.vehicle_id
) THEN 1
ELSE 0
END) AS used,
-- 空载具location_status = 1 且 vehicle_id 在 stock 表中找不到)
SUM(CASE
WHEN loc.location_status = 1
AND NOT EXISTS (
SELECT 1
FROM tbl_app_stock stock
WHERE stock.vehicle_id = loc.vehicle_id
) THEN 1
ELSE 0
END) AS emptyUsed
FROM tbl_app_location loc;
</select>
</mapper>

View File

@ -2,5 +2,21 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wms.mapper.WorkSummaryMapper">
<select id="getRecentWorkDays" resultType="java.time.LocalDate">
SELECT DISTINCT DATE(work_date) AS work_day
FROM tbl_app_work_summary
ORDER BY DATE(work_date) DESC
LIMIT 7
</mapper>
</select>
<select id="getByWorkDays" resultType="com.wms.entity.table.WorkSummary" parameterType="java.util.Map" >
SELECT
work_station as "workStation",
work_date as "workDate"
FROM
tbl_app_work_summary
WHERE
work_date BETWEEN #{startDate} AND #{endDate}
</select>
</mapper>