修改首页速度

master
LAPTOP-S9HJSOEB\昊天 1 month ago
parent 4363ea079a
commit 627fdfe833

@ -475,6 +475,12 @@
<version>${fastjson.version}</version> <version>${fastjson.version}</version>
</dependency> </dependency>
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.43</version>
</dependency>
<dependency> <dependency>
<groupId>com.google.guava</groupId> <groupId>com.google.guava</groupId>
<artifactId>guava</artifactId> <artifactId>guava</artifactId>

@ -40,14 +40,6 @@
<version>5.13.0</version> <version>5.13.0</version>
</dependency> </dependency>
<dependency>
<groupId>com.sun.jna.examples</groupId>
<artifactId>test</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/libs/examples.jar</systemPath>
</dependency>
<!-- 业务组件 --> <!-- 业务组件 -->
<dependency> <dependency>
<groupId>cn.iocoder.boot</groupId> <groupId>cn.iocoder.boot</groupId>

@ -56,13 +56,13 @@
<version>5.13.0</version> <version>5.13.0</version>
</dependency> </dependency>
<dependency> <!-- <dependency>-->
<groupId>com.sun.jna.examples</groupId> <!-- <groupId>com.sun.jna.examples</groupId>-->
<artifactId>test</artifactId> <!-- <artifactId>test</artifactId>-->
<version>1.0</version> <!-- <version>1.0</version>-->
<scope>system</scope> <!-- <scope>system</scope>-->
<systemPath>${project.basedir}/src/main/resources/libs/examples.jar</systemPath> <!-- <systemPath>${project.basedir}/src/main/resources/libs/examples.jar</systemPath>-->
</dependency> <!-- </dependency>-->
<dependency> <dependency>
<groupId>gnu.io</groupId> <groupId>gnu.io</groupId>
<artifactId>SerialPort</artifactId> <artifactId>SerialPort</artifactId>
@ -192,6 +192,11 @@
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </project>

@ -47,7 +47,7 @@ public class StockControlController {
plcService.checkStart(kescEntity); plcService.checkStart(kescEntity);
} }
return CommonResult.success("","OK"); return CommonResult.success("OK");
} }
@ -70,7 +70,7 @@ public class StockControlController {
plcService.orderStop(kescEntity.getTaskId()); plcService.orderStop(kescEntity.getTaskId());
} }
return CommonResult.success("","OK"); return CommonResult.success("OK");
} }
@ -95,7 +95,7 @@ public class StockControlController {
} }
}); });
return CommonResult.success("","OK"); return CommonResult.success("OK");
} }
@PostMapping("/inventoryEndReport") @PostMapping("/inventoryEndReport")
@ -104,7 +104,7 @@ public class StockControlController {
@PermitAll @PermitAll
public CommonResult<KsecDataInfo> updateResult( KsecDataInfo kescEntity){ public CommonResult<KsecDataInfo> updateResult( KsecDataInfo kescEntity){
log.info("模拟随行盘点结果返回状态:{}",kescEntity); log.info("模拟随行盘点结果返回状态:{}",kescEntity);
return CommonResult.success(kescEntity,"OK"); return CommonResult.success(kescEntity);
} }
@ -114,7 +114,7 @@ public class StockControlController {
@PermitAll @PermitAll
public CommonResult<KsecDataInfo> setUpdateStatus(KsecDataInfo kescEntity){ public CommonResult<KsecDataInfo> setUpdateStatus(KsecDataInfo kescEntity){
log.info("随行盘点更新状态:{}",kescEntity); log.info("随行盘点更新状态:{}",kescEntity);
return CommonResult.success(kescEntity,"OK"); return CommonResult.success(kescEntity);
} }
@PostMapping("/updateStatus") @PostMapping("/updateStatus")
@Operation(summary = "随行盘点更新状态") @Operation(summary = "随行盘点更新状态")
@ -134,7 +134,7 @@ public class StockControlController {
plcService.action(kescEntity.getTaskId(),kescEntity.getCmdName()); plcService.action(kescEntity.getTaskId(),kescEntity.getCmdName());
} }
return CommonResult.success("","OK"); return CommonResult.success("OK");
} }

@ -6,6 +6,11 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.camera.controller.admin.order.vo.OrderPageReqVO; import cn.iocoder.yudao.module.camera.controller.admin.order.vo.OrderPageReqVO;
import cn.iocoder.yudao.module.camera.dal.dataobject.order.OrderDO; import cn.iocoder.yudao.module.camera.dal.dataobject.order.OrderDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
/** /**
* Mapper * Mapper
@ -34,4 +39,8 @@ public interface OrderMapper extends BaseMapperX<OrderDO> {
.orderByDesc(OrderDO::getId)); .orderByDesc(OrderDO::getId));
} }
List<Map<String, Object>> selectGroupCountBySrmNumber(@Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);
List<Map<String, Object>> selectGroupCountBySrmNumberAndDate(@Param("startTime") LocalDateTime startTime);
} }

@ -140,19 +140,22 @@ public class OrderServiceImpl implements OrderService {
// 设置当前时间为23点59分59秒 // 设置当前时间为23点59分59秒
LocalDateTime nowEnd = today.atTime(23, 59, 59); LocalDateTime nowEnd = today.atTime(23, 59, 59);
// 获取订单列表 // 使用SQL聚合查询直接在数据库层面进行分组统计避免查询大量数据到内存
List<OrderDO> orderDOS = orderMapper.selectList(new QueryWrapper<OrderDO>() List<Map<String, Object>> resultList = orderMapper.selectGroupCountBySrmNumber(firstDayOfMonthStart, nowEnd);
.ge("create_time", firstDayOfMonthStart)
.le("create_time", nowEnd)); // 将结果转换为Map<String, Long>格式
// 使用流处理按srmNumber分组并计算每个组的数量存储到Map中 Map<String, Long> stocksMap = new java.util.HashMap<>();
Map<String,Long> stocksMap = orderDOS.stream().collect(Collectors.groupingBy(OrderDO::getSrmNumber,Collectors.counting())); for (Map<String, Object> row : resultList) {
String srmNumber = (String) row.get("srm_number");
Long count = ((Number) row.get("count")).longValue();
stocksMap.put(srmNumber, count);
}
List<Long> data = new ArrayList<>(); List<Long> data = new ArrayList<>();
xAxis.setData(new ArrayList<>()); xAxis.setData(new ArrayList<>());
int max = 0;
// 遍历街道列表为X轴添加类别数据并收集对应的数据到数据序列中 // 遍历街道列表为X轴添加类别数据并收集对应的数据到数据序列中
for (StreetDO street : streets) { for (StreetDO street : streets) {
xAxis.getData().add(street.getName()); xAxis.getData().add(street.getName());
data.add(stocksMap.get(street.getPlcId())); data.add(stocksMap.getOrDefault(street.getPlcId(), 0L));
} }
series.setData(data); series.setData(data);
@ -189,16 +192,21 @@ public class OrderServiceImpl implements OrderService {
yAxis.setType("value"); yAxis.setType("value");
eChartsOption.setYAxis(yAxis); eChartsOption.setYAxis(yAxis);
eChartsOption.setXAxis(xAxis); eChartsOption.setXAxis(xAxis);
List<OrderDO> orderDOS = orderMapper.selectList(new QueryWrapper<OrderDO>()
.ge("create_time",LocalDate.now().minusDays(7)));
// 填充数据 // 使用SQL聚合查询直接在数据库层面进行分组统计
LocalDateTime sevenDaysAgo = LocalDate.now().minusDays(7).atStartOfDay();
List<Map<String, Object>> resultList = orderMapper.selectGroupCountBySrmNumberAndDate(sevenDaysAgo);
// 将结果转换为Map<String, Map<String, Long>>格式
Map<String, Map<String, Long>> map = new java.util.HashMap<>();
for (Map<String, Object> row : resultList) {
String srmNumber = (String) row.get("srm_number");
String date = row.get("date").toString();
Long count = ((Number) row.get("count")).longValue();
map.computeIfAbsent(srmNumber, k -> new java.util.HashMap<>()).put(date, count);
}
// 根据srmNumber分组然后根据create_time的日期字符串计算当天的订单数量
Map<String, Map<String, Long>> map = orderDOS.stream()
.collect(Collectors.groupingBy(OrderDO::getSrmNumber,
Collectors.groupingBy(order -> order.getCreateTime().toLocalDate().format(formatter),
Collectors.counting())));
Legend legend = new Legend(); Legend legend = new Legend();
List<String> legendDate = new ArrayList<>(); List<String> legendDate = new ArrayList<>();
List<StreetDO> streets = streetService.list(); List<StreetDO> streets = streetService.list();

@ -9,7 +9,6 @@ import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO;
import cn.iocoder.yudao.module.camera.dal.mysql.specificationConf.SpecificationConfMapper; import cn.iocoder.yudao.module.camera.dal.mysql.specificationConf.SpecificationConfMapper;
import cn.iocoder.yudao.module.camera.dal.mysql.street.StreetMapper; import cn.iocoder.yudao.module.camera.dal.mysql.street.StreetMapper;
import cn.iocoder.yudao.module.camera.service.Hik3D.HikFlaskApiService; import cn.iocoder.yudao.module.camera.service.Hik3D.HikFlaskApiService;
import cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -17,8 +16,6 @@ import org.springframework.validation.annotation.Validated;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
/** /**
* Service * Service
* *
@ -86,7 +83,7 @@ public class SpecificationConfServiceImpl implements SpecificationConfService {
private void validateSpecificationConfExists(Integer id) { private void validateSpecificationConfExists(Integer id) {
if (specificationConfMapper.selectById(id) == null) { if (specificationConfMapper.selectById(id) == null) {
throw exception(ErrorCodeConstants.SPECIFICATION_CONF_NOT_EXISTS); // throw exception(ErrorCodeConstants.SPECIFICATION_CONF_NOT_EXISTS);
} }
} }

@ -10,9 +10,6 @@ import jakarta.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.WARN_NOT_EXISTS;
/** /**
* Service * Service
@ -50,7 +47,7 @@ public class WarnServiceImpl implements WarnService {
private void validateWarnExists(Long id) { private void validateWarnExists(Long id) {
if (warnMapper.selectById(id) == null) { if (warnMapper.selectById(id) == null) {
throw exception(WARN_NOT_EXISTS); // throw exception(WARN_NOT_EXISTS);
} }
} }

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.camera.dal.mysql.order.OrderMapper">
<resultMap id="groupResultMap" type="java.util.HashMap">
<result column="srm_number" property="srm_number" javaType="java.lang.String"/>
<result column="count" property="count" javaType="java.lang.Long"/>
<result column="date" property="date" javaType="java.lang.String"/>
</resultMap>
<select id="selectGroupCountBySrmNumber" resultMap="groupResultMap">
SELECT srm_number, COUNT(*) as count
FROM logistics_order
WHERE create_time &gt;= #{startTime} AND create_time &lt;= #{endTime}
GROUP BY srm_number
</select>
<select id="selectGroupCountBySrmNumberAndDate" resultMap="groupResultMap">
SELECT srm_number, DATE(create_time) as date, COUNT(*) as count
FROM logistics_order
WHERE create_time &gt;= #{startTime}
GROUP BY srm_number, DATE(create_time)
</select>
</mapper>

@ -47,10 +47,11 @@ spring:
datasource: datasource:
master: master:
name: sy name: sy
url: jdbc:mysql://192.168.1.21:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例 url: jdbc:mysql://121.43.244.209:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
username: root username: root
password: upright password: Sy+1234567
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优 # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
data: data:
redis: redis:

Loading…
Cancel
Save