mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
分析页统计:1、接口支持超管忽视机构查看全部;2、图表接口回调X轴日期格式完善;
This commit is contained in:
+5
-9
@@ -25,9 +25,8 @@ public interface OrderStatisticsMapper extends BaseMapperX<OrderDO> {
|
||||
/**
|
||||
* 生产单数量统计
|
||||
*/
|
||||
default Integer selectOrderCount(Long organId) {
|
||||
default Integer selectOrderCount() {
|
||||
return Math.toIntExact(selectCount(new LambdaQueryWrapperX<OrderDO>()
|
||||
.eqIfPresent(OrderDO::getOrganId, organId)
|
||||
.eq(OrderDO::getDeleted, 0)));
|
||||
}
|
||||
|
||||
@@ -35,9 +34,8 @@ public interface OrderStatisticsMapper extends BaseMapperX<OrderDO> {
|
||||
* 今日新增生产单总数统计
|
||||
*
|
||||
*/
|
||||
default Integer selectOrderCountToday(Long organId) {
|
||||
default Integer selectOrderCountToday() {
|
||||
return Math.toIntExact(selectCount(new LambdaQueryWrapperX<OrderDO>()
|
||||
.eqIfPresent(OrderDO::getOrganId, organId)
|
||||
.eq(OrderDO::getOrderDate, LocalDate.now())));
|
||||
|
||||
}
|
||||
@@ -46,9 +44,8 @@ public interface OrderStatisticsMapper extends BaseMapperX<OrderDO> {
|
||||
* 今日完成生产单总数统计
|
||||
*
|
||||
*/
|
||||
default Integer selectOrderCountTodayFinish(Long organId) {
|
||||
default Integer selectOrderCountTodayFinish() {
|
||||
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))));
|
||||
}
|
||||
|
||||
@@ -56,9 +53,8 @@ public interface OrderStatisticsMapper extends BaseMapperX<OrderDO> {
|
||||
* 生产中生产单总数
|
||||
*
|
||||
*/
|
||||
default Integer selectOrderCountProduce(Long organId) {
|
||||
default Integer selectOrderCountProduce() {
|
||||
return Math.toIntExact(selectCount(new LambdaQueryWrapperX<OrderDO>()
|
||||
.eqIfPresent(OrderDO::getOrganId, organId)
|
||||
.eq(OrderDO::getStatus, OrderStatusEnum.IN_PRODUCTION.getStatus())));
|
||||
}
|
||||
|
||||
@@ -68,7 +64,7 @@ public interface OrderStatisticsMapper extends BaseMapperX<OrderDO> {
|
||||
* @param organId
|
||||
* @return
|
||||
*/
|
||||
Integer selectOrderSquareProduce(@Param("organId") Long organId);
|
||||
Integer selectOrderSquareProduce();
|
||||
|
||||
/**
|
||||
* 生产单状态按时间分组统计数量
|
||||
|
||||
+43
-37
@@ -2,8 +2,6 @@ package com.cf.imes.module.executor.service.order;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.cf.imes.framework.common.enums.OrderStatusEnum;
|
||||
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.OrderGoodsPlateRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderStatisticsAreaRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderStatisticsReqVO;
|
||||
@@ -49,44 +47,41 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService {
|
||||
@Resource
|
||||
private OrderPlateStatisticsMapper orderPlateStatisticsMapper;
|
||||
|
||||
// 常用的字段key
|
||||
private static final String DATELIST_FIELD_NAME = "dateList";
|
||||
private static final String SERIES_FIELD_NAME = "series";
|
||||
|
||||
@Override
|
||||
@OrganIgnore
|
||||
public Integer orderCount(OrderStatisticsReqVO reqVO) {
|
||||
return orderStatisticsMapper.selectOrderCount(getOrganIdParam(reqVO));
|
||||
return orderStatisticsMapper.selectOrderCount();
|
||||
}
|
||||
|
||||
@Override
|
||||
@OrganIgnore
|
||||
public Integer orderCountToday(OrderStatisticsReqVO reqVO) {
|
||||
return orderStatisticsMapper.selectOrderCountToday(getOrganIdParam(reqVO));
|
||||
return orderStatisticsMapper.selectOrderCountToday();
|
||||
}
|
||||
|
||||
@Override
|
||||
@OrganIgnore
|
||||
public Integer orderCountTodayFinish(OrderStatisticsReqVO reqVO) {
|
||||
return orderStatisticsMapper.selectOrderCountTodayFinish(getOrganIdParam(reqVO));
|
||||
return orderStatisticsMapper.selectOrderCountTodayFinish();
|
||||
}
|
||||
|
||||
@Override
|
||||
@OrganIgnore
|
||||
public Integer orderCountProduce(OrderStatisticsReqVO reqVO) {
|
||||
return orderStatisticsMapper.selectOrderCountProduce(getOrganIdParam(reqVO));
|
||||
return orderStatisticsMapper.selectOrderCountProduce();
|
||||
}
|
||||
|
||||
@Override
|
||||
@OrganIgnore
|
||||
public Integer orderSquareProduce(OrderStatisticsReqVO reqVO) {
|
||||
return orderStatisticsMapper.selectOrderSquareProduce(getOrganIdParam(reqVO));
|
||||
return orderStatisticsMapper.selectOrderSquareProduce();
|
||||
}
|
||||
|
||||
@Override
|
||||
@OrganIgnore
|
||||
public Map<String, Object> getOrderStatusCount(OrderStatisticsReqVO reqVO) {
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
|
||||
// 所有的日期集合
|
||||
List<String> dateList = getDateList(reqVO);
|
||||
resultMap.put("dateList", dateList);
|
||||
|
||||
// 查询订单状态统计数据
|
||||
List<OrderStatisticsStatusRespVO> orderStatusRespVOS = orderStatisticsMapper.selectOrderStatusCountGroupBy(reqVO);
|
||||
@@ -122,14 +117,13 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService {
|
||||
seriesItem.put("name", orderStatusEnum.getDescription());
|
||||
series.add(seriesItem);
|
||||
}
|
||||
|
||||
resultMap.put("series", series);
|
||||
resultMap.put(DATELIST_FIELD_NAME, dateList.stream().map(date -> generateDateRangeAxis(date, reqVO.getUnit())).toList());
|
||||
resultMap.put(SERIES_FIELD_NAME, series);
|
||||
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
@OrganIgnore
|
||||
public Map<String, Object> getOrderAndPlanCountGroup(OrderStatisticsReqVO reqVO) {
|
||||
Map<String, Object> resultMap = new LinkedHashMap<>();
|
||||
|
||||
@@ -144,8 +138,7 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService {
|
||||
.collect(Collectors.groupingBy(OrderPlanStatisticsCountRespVO::getDate, LinkedHashMap::new, Collectors.toList()));
|
||||
|
||||
// 遍历时间跨度列表,匹配数量存入数组,没有补0存入数组
|
||||
for (int i = 0; i < dateList.size(); i++) {
|
||||
String dateStr = dateList.get(i);
|
||||
for (String dateStr : dateList) {
|
||||
int[] countArr = new int[2];
|
||||
// 存入生产单数量
|
||||
Integer orderCount = Optional.ofNullable(orderRespMap.get(dateStr))
|
||||
@@ -161,14 +154,13 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService {
|
||||
.orElse(0);
|
||||
countArr[1] = planCount;
|
||||
|
||||
resultMap.put(dateStr, countArr);
|
||||
resultMap.put(generateDateRangeAxis(dateStr, reqVO.getUnit()), countArr);
|
||||
}
|
||||
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
@OrganIgnore
|
||||
public Map<String, Object> getOrderAndPlanAreaSumGroup(OrderStatisticsReqVO reqVO) {
|
||||
Map<String, Object> resultMap = new LinkedHashMap<>();
|
||||
|
||||
@@ -194,7 +186,7 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService {
|
||||
List<OrderPlanStatisticsAreaRespVO> planCountRespVOS = planRespMap.get(dateStr);
|
||||
areaArr[1] = planCountRespVOS != null && !planCountRespVOS.isEmpty() ? planCountRespVOS.get(0).getAreaSum() : BigDecimal.ZERO;
|
||||
|
||||
resultMap.put(dateStr, areaArr);
|
||||
resultMap.put(generateDateRangeAxis(dateStr, reqVO.getUnit()), areaArr);
|
||||
}
|
||||
|
||||
return resultMap;
|
||||
@@ -207,7 +199,6 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService {
|
||||
|
||||
// 所有的日期集合
|
||||
List<String> dateList = getDateList(reqVO);
|
||||
resultMap.put("dateList", dateList);
|
||||
|
||||
List<OrderGoodsPlateRespVO> orderGoodsPlateRespVOList = orderPlateStatisticsMapper.selectPlateAnalysisListByCount(reqVO);
|
||||
// 基于相同的orderDate分组
|
||||
@@ -250,7 +241,8 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService {
|
||||
seriesItem.put("name", entry.getValue());
|
||||
series.add(seriesItem);
|
||||
}
|
||||
resultMap.put("series", series);
|
||||
resultMap.put(DATELIST_FIELD_NAME, dateList.stream().map(date -> generateDateRangeAxis(date, reqVO.getUnit())).toList());
|
||||
resultMap.put(SERIES_FIELD_NAME, series);
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
@@ -260,7 +252,6 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService {
|
||||
|
||||
// 所有的日期集合
|
||||
List<String> dateList = getDateList(reqVO);
|
||||
resultMap.put("dateList", dateList);
|
||||
|
||||
List<OrderGoodsPlateRespVO> orderGoodsPlateRespVOList = orderPlateStatisticsMapper.selectPlateAnalysisListByArea(reqVO);
|
||||
// 基于相同的orderDate分组
|
||||
@@ -303,7 +294,8 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService {
|
||||
seriesItem.put("name", entry.getValue());
|
||||
series.add(seriesItem);
|
||||
}
|
||||
resultMap.put("series", series);
|
||||
resultMap.put(DATELIST_FIELD_NAME, dateList.stream().map(date -> generateDateRangeAxis(date, reqVO.getUnit())).toList());
|
||||
resultMap.put(SERIES_FIELD_NAME, series);
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
@@ -316,9 +308,6 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService {
|
||||
* @return
|
||||
*/
|
||||
private List<String> getDateList(OrderStatisticsReqVO reqVO) {
|
||||
// 获取机构id
|
||||
reqVO.setOrganId(getOrganIdParam(reqVO));
|
||||
|
||||
// 计算时间跨度
|
||||
getTimeSpan(reqVO);
|
||||
|
||||
@@ -416,16 +405,33 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService {
|
||||
}
|
||||
|
||||
/**
|
||||
* 前端传组织否则查当前用户所在的组织
|
||||
*
|
||||
* @param reqVO
|
||||
* 构建日期格式到图标横轴可用格式
|
||||
* 2024-1 -> 2024年第1季度
|
||||
* 2024-1-1 -> 2024年1月
|
||||
* ...
|
||||
* @param unit
|
||||
* @return
|
||||
*/
|
||||
private Long getOrganIdParam(OrderStatisticsReqVO reqVO) {
|
||||
if (reqVO != null && reqVO.getOrganId() != null) {
|
||||
return reqVO.getOrganId();
|
||||
} else {
|
||||
return SecurityFrameworkUtils.getUserOrganId();
|
||||
private String generateDateRangeAxis(String date, Integer unit) {
|
||||
OrderStatisticsUnit orderStatisticsUnit = OrderStatisticsUnit.fromValue(unit);
|
||||
StringBuffer newDateStrBuffer = new StringBuffer();
|
||||
String[] dateSplit = date.split("-");
|
||||
switch (orderStatisticsUnit) {
|
||||
case QUARTER:
|
||||
newDateStrBuffer.append(dateSplit[0]).append("年第").append(dateSplit[1]).append("季度");
|
||||
break;
|
||||
case MONTH:
|
||||
newDateStrBuffer.append(dateSplit[0]).append("年").append(dateSplit[1]).append("月");
|
||||
break;
|
||||
case WEEK:
|
||||
newDateStrBuffer.append(dateSplit[0]).append("年").append(dateSplit[1]).append("月").append("第").append(dateSplit[2]).append("周");
|
||||
break;
|
||||
case DAY:
|
||||
newDateStrBuffer.append(dateSplit[0]).append("年").append(dateSplit[1]).append("月").append(dateSplit[2]).append("日");
|
||||
break;
|
||||
default:
|
||||
}
|
||||
return newDateStrBuffer.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+4
-10
@@ -5,9 +5,6 @@
|
||||
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="selectOrderStatusCountGroupBy"
|
||||
@@ -28,8 +25,7 @@
|
||||
,CONCAT(YEAR(o.order_date), '-', MONTH(o.order_date), '-', DAY(o.order_date)) as date
|
||||
</if>
|
||||
from orders o
|
||||
where o.organ_id = #{req.organId}
|
||||
and o.order_date between #{req.createTime[0]} and #{req.createTime[1]}
|
||||
where o.order_date between #{req.createTime[0]} and #{req.createTime[1]}
|
||||
and o.deleted = 0
|
||||
group by orderStatus, date;
|
||||
</select>
|
||||
@@ -50,8 +46,7 @@
|
||||
,CONCAT(YEAR(o.order_date), '-', MONTH(o.order_date), '-', DAY(o.order_date)) as date
|
||||
</if>
|
||||
from orders o
|
||||
where o.organ_id = #{req.organId}
|
||||
and o.order_date between #{req.createTime[0]} and #{req.createTime[1]}
|
||||
where o.order_date between #{req.createTime[0]} and #{req.createTime[1]}
|
||||
and o.deleted = 0
|
||||
group by date;
|
||||
</select>
|
||||
@@ -72,9 +67,8 @@
|
||||
,CONCAT(YEAR(o.order_date), '-', MONTH(o.order_date), '-', DAY(o.order_date)) as date
|
||||
</if>
|
||||
from orders o
|
||||
join order_plate op on op.order_id = o.id and op.organ_id = #{req.organId}
|
||||
where o.organ_id = #{req.organId}
|
||||
and o.order_date between #{req.createTime[0]} and #{req.createTime[1]}
|
||||
join order_plate op on op.order_id = o.id
|
||||
where o.order_date between #{req.createTime[0]} and #{req.createTime[1]}
|
||||
and o.deleted = 0
|
||||
group by date;
|
||||
</select>
|
||||
|
||||
+4
-6
@@ -26,11 +26,10 @@
|
||||
,CONCAT(YEAR(o.order_date), '-', MONTH(o.order_date), '-', DAY(o.order_date)) as orderDate
|
||||
</if>
|
||||
FROM order_goods g
|
||||
LEFT JOIN order_plate a ON g.id = a.goods_id AND g.organ_id = #{req.organId}
|
||||
LEFT JOIN orders o ON o.id = a.order_id AND o.organ_id = #{req.organId}
|
||||
LEFT JOIN order_plate a ON g.id = a.goods_id
|
||||
LEFT JOIN orders o ON o.id = a.order_id
|
||||
WHERE a.deleted = 0
|
||||
AND o.order_date BETWEEN #{req.createTime[0]} AND #{req.createTime[1]}
|
||||
AND g.organ_id = #{req.organId}
|
||||
GROUP BY
|
||||
g.goods_id,orderDate
|
||||
HAVING
|
||||
@@ -65,11 +64,10 @@
|
||||
,CONCAT(YEAR(o.order_date), '-', MONTH(o.order_date), '-', DAY(o.order_date)) as orderDate
|
||||
</if>
|
||||
FROM order_goods g
|
||||
LEFT JOIN order_plate a ON g.id = a.goods_id AND g.organ_id = #{req.organId}
|
||||
LEFT JOIN orders o ON o.id = a.order_id AND o.organ_id = #{req.organId}
|
||||
LEFT JOIN order_plate a ON g.id = a.goods_id
|
||||
LEFT JOIN orders o ON o.id = a.order_id
|
||||
WHERE a.deleted = 0
|
||||
AND o.order_date BETWEEN #{req.createTime[0]} AND #{req.createTime[1]}
|
||||
AND g.organ_id = #{req.organId}
|
||||
GROUP BY
|
||||
g.goods_id,orderDate
|
||||
HAVING
|
||||
|
||||
Reference in New Issue
Block a user