mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
分析页统计:生产单状态mapper抽象独立接口、补充注解
This commit is contained in:
-61
@@ -10,18 +10,13 @@ import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderOverdueRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderPageReqVO;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderStatisticsReqVO;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderStatusRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVOCopy;
|
||||
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
|
||||
import com.cf.imes.module.executor.enums.OrderStatusEnum;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -139,65 +134,9 @@ public interface OrderMapper extends BaseMapperX<OrderDO> {
|
||||
|
||||
List<Long> selectOrderIds(@Param(Constants.WRAPPER) Wrapper<OrderDO> wrapper);
|
||||
|
||||
/**
|
||||
* 生产单状态按时间分组统计
|
||||
*
|
||||
* @param reqVO
|
||||
* @return
|
||||
*/
|
||||
List<OrderStatusRespVO> selectOrderStatusCount(@Param("req") OrderStatisticsReqVO reqVO);
|
||||
|
||||
// 生产单预警统计
|
||||
List<OrderOverdueRespVO> selectOrderNear(@Param("today") LocalDateTime today, @Param("orderDate") LocalDateTime orderDate, @Param("organId") Long organId);
|
||||
|
||||
// 生产单逾期统计
|
||||
List<OrderOverdueRespVO> selectOrderOverdue(@Param("today") LocalDateTime today, @Param("organId") Long organId);
|
||||
|
||||
/**
|
||||
* 生产单数量统计
|
||||
*/
|
||||
default Integer selectOrderCount(Long organId) {
|
||||
return Math.toIntExact(selectCount(new LambdaQueryWrapperX<OrderDO>()
|
||||
.eqIfPresent(OrderDO::getOrganId, organId)
|
||||
.eq(OrderDO::getDeleted, 0)));
|
||||
}
|
||||
|
||||
/**
|
||||
* 今日新增生产单总数统计
|
||||
*
|
||||
*/
|
||||
default Integer selectOrderCountToday(Long organId) {
|
||||
return Math.toIntExact(selectCount(new LambdaQueryWrapperX<OrderDO>()
|
||||
.eqIfPresent(OrderDO::getOrganId, organId)
|
||||
.eq(OrderDO::getOrderDate, LocalDate.now())));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 今日完成生产单总数统计
|
||||
*
|
||||
*/
|
||||
default Integer selectOrderCountTodayFinish(Long organId) {
|
||||
return Math.toIntExact(selectCount(new LambdaQueryWrapperX<OrderDO>()
|
||||
.eqIfPresent(OrderDO::getOrganId, organId)
|
||||
.between(OrderDO::getFinishTime, LocalDateTime.of(LocalDate.now(), LocalTime.MIN), LocalDateTime.of(LocalDate.now(), LocalTime.MAX))));
|
||||
}
|
||||
|
||||
/**
|
||||
* 生产中生产单总数
|
||||
*
|
||||
*/
|
||||
default Integer selectOrderCountProduce(Long organId) {
|
||||
return Math.toIntExact(selectCount(new LambdaQueryWrapperX<OrderDO>()
|
||||
.eqIfPresent(OrderDO::getOrganId, organId)
|
||||
.eq(OrderDO::getStatus, OrderStatusEnum.IN_PRODUCTION.getStatus())));
|
||||
}
|
||||
|
||||
/**
|
||||
* 生产中生产平方数
|
||||
*
|
||||
* @param organId
|
||||
* @return
|
||||
*/
|
||||
Integer selectOrderSquareProduce(@Param("organId") Long organId);
|
||||
}
|
||||
|
||||
+79
@@ -0,0 +1,79 @@
|
||||
package com.cf.imes.module.executor.dal.mysql.order;
|
||||
|
||||
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderStatisticsReqVO;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderStatusRespVO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
|
||||
import com.cf.imes.module.executor.enums.OrderStatusEnum;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Gqr
|
||||
* @since 2024/8/7 9:35
|
||||
*/
|
||||
@Mapper
|
||||
public interface OrderStatisticsMapper extends BaseMapperX<OrderDO> {
|
||||
|
||||
/**
|
||||
* 生产单数量统计
|
||||
*/
|
||||
default Integer selectOrderCount(Long organId) {
|
||||
return Math.toIntExact(selectCount(new LambdaQueryWrapperX<OrderDO>()
|
||||
.eqIfPresent(OrderDO::getOrganId, organId)
|
||||
.eq(OrderDO::getDeleted, 0)));
|
||||
}
|
||||
|
||||
/**
|
||||
* 今日新增生产单总数统计
|
||||
*
|
||||
*/
|
||||
default Integer selectOrderCountToday(Long organId) {
|
||||
return Math.toIntExact(selectCount(new LambdaQueryWrapperX<OrderDO>()
|
||||
.eqIfPresent(OrderDO::getOrganId, organId)
|
||||
.eq(OrderDO::getOrderDate, LocalDate.now())));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 今日完成生产单总数统计
|
||||
*
|
||||
*/
|
||||
default Integer selectOrderCountTodayFinish(Long organId) {
|
||||
return Math.toIntExact(selectCount(new LambdaQueryWrapperX<OrderDO>()
|
||||
.eqIfPresent(OrderDO::getOrganId, organId)
|
||||
.between(OrderDO::getFinishTime, LocalDateTime.of(LocalDate.now(), LocalTime.MIN), LocalDateTime.of(LocalDate.now(), LocalTime.MAX))));
|
||||
}
|
||||
|
||||
/**
|
||||
* 生产中生产单总数
|
||||
*
|
||||
*/
|
||||
default Integer selectOrderCountProduce(Long organId) {
|
||||
return Math.toIntExact(selectCount(new LambdaQueryWrapperX<OrderDO>()
|
||||
.eqIfPresent(OrderDO::getOrganId, organId)
|
||||
.eq(OrderDO::getStatus, OrderStatusEnum.IN_PRODUCTION.getStatus())));
|
||||
}
|
||||
|
||||
/**
|
||||
* 生产中生产平方数
|
||||
*
|
||||
* @param organId
|
||||
* @return
|
||||
*/
|
||||
Integer selectOrderSquareProduce(@Param("organId") Long organId);
|
||||
|
||||
/**
|
||||
* 生产单状态按时间分组统计
|
||||
*
|
||||
* @param reqVO
|
||||
* @return
|
||||
*/
|
||||
List<OrderStatusRespVO> selectOrderStatusCount(@Param("req") OrderStatisticsReqVO reqVO);
|
||||
}
|
||||
+11
-11
@@ -6,7 +6,7 @@ import com.cf.imes.framework.organ.core.aop.OrganIgnore;
|
||||
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderStatisticsReqVO;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderStatusRespVO;
|
||||
import com.cf.imes.module.executor.dal.mysql.order.OrderMapper;
|
||||
import com.cf.imes.module.executor.dal.mysql.order.OrderStatisticsMapper;
|
||||
import com.cf.imes.module.executor.enums.OrderStatisticsUnit;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@@ -32,36 +32,36 @@ import java.util.stream.Collectors;
|
||||
@Validated
|
||||
public class OrderStatisticsServiceImpl implements OrderStatisticsService {
|
||||
@Resource
|
||||
private OrderMapper orderMapper;
|
||||
private OrderStatisticsMapper orderStatisticsMapper;
|
||||
|
||||
@Override
|
||||
@OrganIgnore
|
||||
public Integer orderCount(OrderStatisticsReqVO reqVO) {
|
||||
return orderMapper.selectOrderCount(getOrganIdParam(reqVO));
|
||||
return orderStatisticsMapper.selectOrderCount(getOrganIdParam(reqVO));
|
||||
}
|
||||
|
||||
@Override
|
||||
@OrganIgnore
|
||||
public Integer orderCountToday(OrderStatisticsReqVO reqVO) {
|
||||
return orderMapper.selectOrderCountToday(getOrganIdParam(reqVO));
|
||||
return orderStatisticsMapper.selectOrderCountToday(getOrganIdParam(reqVO));
|
||||
}
|
||||
|
||||
@Override
|
||||
@OrganIgnore
|
||||
public Integer orderCountTodayFinish(OrderStatisticsReqVO reqVO) {
|
||||
return orderMapper.selectOrderCountTodayFinish(getOrganIdParam(reqVO));
|
||||
return orderStatisticsMapper.selectOrderCountTodayFinish(getOrganIdParam(reqVO));
|
||||
}
|
||||
|
||||
@Override
|
||||
@OrganIgnore
|
||||
public Integer orderCountProduce(OrderStatisticsReqVO reqVO) {
|
||||
return orderMapper.selectOrderCountProduce(getOrganIdParam(reqVO));
|
||||
return orderStatisticsMapper.selectOrderCountProduce(getOrganIdParam(reqVO));
|
||||
}
|
||||
|
||||
@Override
|
||||
@OrganIgnore
|
||||
public Integer orderSquareProduce(OrderStatisticsReqVO reqVO) {
|
||||
return orderMapper.selectOrderSquareProduce(getOrganIdParam(reqVO));
|
||||
return orderStatisticsMapper.selectOrderSquareProduce(getOrganIdParam(reqVO));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -73,7 +73,7 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService {
|
||||
getTimeSpan(reqVO);
|
||||
|
||||
// 查询订单状态统计数据
|
||||
List<OrderStatusRespVO> orderStatusRespVOS = orderMapper.selectOrderStatusCount(reqVO);
|
||||
List<OrderStatusRespVO> orderStatusRespVOS = orderStatisticsMapper.selectOrderStatusCount(reqVO);
|
||||
|
||||
// 基于相同的orderDate分组
|
||||
Map<String, List<OrderStatusRespVO>> orderDateMap = orderStatusRespVOS.stream()
|
||||
@@ -84,13 +84,13 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService {
|
||||
Set<String> dateList = orderDateMap.keySet();
|
||||
resultMap.put("dateList", dateList);
|
||||
|
||||
// 初始化结果集
|
||||
// 遍历订单状态所有枚举值
|
||||
List<Map<String, Object>> series = new ArrayList<>();
|
||||
for (OrderStatusEnum orderStatusEnum : OrderStatusEnum.values()) {
|
||||
Map<String, Object> seriesItem = new HashMap<>();
|
||||
int[] sumArr = new int[orderDateMap.size()];
|
||||
|
||||
// 遍历日期map
|
||||
// 遍历日期map记录status下的orderCount到sumArr数组
|
||||
int index = 0;
|
||||
for (Map.Entry<String, List<OrderStatusRespVO>> entry : orderDateMap.entrySet()) {
|
||||
// 查找匹配的订单状态
|
||||
@@ -98,7 +98,7 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService {
|
||||
.filter(respVO -> Objects.equals(orderStatusEnum.getStatus(), respVO.getOrderState()))
|
||||
.findFirst();
|
||||
|
||||
// 设置计数值
|
||||
// 没有匹配的补齐0
|
||||
sumArr[index++] = matchingStatus.map(OrderStatusRespVO::getOrderCount).orElse(0);
|
||||
}
|
||||
|
||||
|
||||
-34
@@ -79,30 +79,6 @@
|
||||
|
||||
|
||||
|
||||
</select>
|
||||
|
||||
<select id="selectOrderStatusCount"
|
||||
resultType="com.cf.imes.module.executor.controller.admin.order.vo.order.OrderStatusRespVO">
|
||||
select o.status as orderState,
|
||||
count(o.id) as orderCount
|
||||
<if test="req.unit != null and req.unit == @com.cf.imes.module.executor.enums.OrderStatisticsUnit@QUARTER.getValue()">
|
||||
,CONCAT(YEAR(o.order_date), '-', QUARTER(o.order_date)) as orderDate
|
||||
</if>
|
||||
<if test="req.unit != null and req.unit == @com.cf.imes.module.executor.enums.OrderStatisticsUnit@MONTH.getValue()">
|
||||
,CONCAT(YEAR(o.order_date), '-', MONTH(o.order_date)) as orderDate
|
||||
</if>
|
||||
<if test="req.unit != null and req.unit == @com.cf.imes.module.executor.enums.OrderStatisticsUnit@WEEK.getValue()">
|
||||
,CONCAT(YEAR(o.order_date), '-', MONTH(o.order_date), '-', FLOOR((DayOfMonth(o.order_date)-1)/7)+1) AS
|
||||
orderDate
|
||||
</if>
|
||||
<if test="req.unit != null and req.unit == @com.cf.imes.module.executor.enums.OrderStatisticsUnit@DAY.getValue()">
|
||||
,CONCAT(YEAR(o.order_date), '-', MONTH(o.order_date), '-', DAY(o.order_date)) as orderDate
|
||||
</if>
|
||||
from orders o
|
||||
where o.organ_id = #{organId}
|
||||
and o.order_date between #{req.createTime[0]} and #{req.createTime[1]}
|
||||
and o.deleted = 0
|
||||
group by o.status, orderDate;
|
||||
</select>
|
||||
|
||||
<select id="selectOrderNear" resultType="com.cf.imes.module.executor.controller.admin.order.vo.order.OrderOverdueRespVO">
|
||||
@@ -172,14 +148,4 @@
|
||||
and o.status != 4
|
||||
and #{today} > DATE(o.delivery_date)
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectOrderSquareProduce" resultType="java.lang.Integer">
|
||||
SELECT SUM(op.area) as area FROM orders o
|
||||
LEFT JOIN order_plate op on op.order_id = o.id
|
||||
WHERE o.deleted = 0
|
||||
<if test="organId != null">
|
||||
AND o.organ_id = #{organId}
|
||||
</if>
|
||||
</select>
|
||||
</mapper>
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
<?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="com.cf.imes.module.executor.dal.mysql.order.OrderStatisticsMapper">
|
||||
<select id="selectOrderSquareProduce" resultType="java.lang.Integer">
|
||||
SELECT SUM(op.area) as area FROM orders o
|
||||
LEFT JOIN order_plate op on op.order_id = o.id
|
||||
WHERE o.deleted = 0
|
||||
<if test="organId != null">
|
||||
AND o.organ_id = #{organId}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="selectOrderStatusCount"
|
||||
resultType="com.cf.imes.module.executor.controller.admin.order.vo.order.OrderStatusRespVO">
|
||||
select o.status as orderState,
|
||||
count(o.id) as orderCount
|
||||
<if test="req.unit != null and req.unit == @com.cf.imes.module.executor.enums.OrderStatisticsUnit@QUARTER.getValue()">
|
||||
,CONCAT(YEAR(o.order_date), '-', QUARTER(o.order_date)) as orderDate
|
||||
</if>
|
||||
<if test="req.unit != null and req.unit == @com.cf.imes.module.executor.enums.OrderStatisticsUnit@MONTH.getValue()">
|
||||
,CONCAT(YEAR(o.order_date), '-', MONTH(o.order_date)) as orderDate
|
||||
</if>
|
||||
<if test="req.unit != null and req.unit == @com.cf.imes.module.executor.enums.OrderStatisticsUnit@WEEK.getValue()">
|
||||
,CONCAT(YEAR(o.order_date), '-', MONTH(o.order_date), '-', FLOOR((DayOfMonth(o.order_date)-1)/7)+1) AS
|
||||
orderDate
|
||||
</if>
|
||||
<if test="req.unit != null and req.unit == @com.cf.imes.module.executor.enums.OrderStatisticsUnit@DAY.getValue()">
|
||||
,CONCAT(YEAR(o.order_date), '-', MONTH(o.order_date), '-', DAY(o.order_date)) as orderDate
|
||||
</if>
|
||||
from orders o
|
||||
where o.organ_id = #{organId}
|
||||
and o.order_date between #{req.createTime[0]} and #{req.createTime[1]}
|
||||
and o.deleted = 0
|
||||
group by o.status, orderDate;
|
||||
</select>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user