From 471ce4c28fde4a47f9a0161080a799c7e50b3ca5 Mon Sep 17 00:00:00 2001 From: king Date: Wed, 8 Apr 2026 16:49:11 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=BC=E5=90=88=E9=94=80=E5=94=AE=E6=83=85?= =?UTF-8?q?=E5=86=B5=E8=A1=A8=20=E6=8E=92=E5=BA=8F=E9=97=AE=E9=A2=98=20?= =?UTF-8?q?=E5=A4=84=E7=90=86,=20=E6=96=B0=E5=A2=9E=E5=8A=9F=E8=83=BD=20?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=97=B6=E9=97=B4=E8=8C=83=E5=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../NewGrBiSaAggMonthCountController.java | 23 +++-- .../example/report/xtsy/zhxsqkPlugin.java | 84 +++++++++++++++++-- .../framework/mapper/NewGrBiSaAggMapper.java | 2 +- .../core/framework/params/SaAggParam.java | 6 +- .../service/impl/NewGrBiSaAggServiceImpl.java | 16 ++-- .../mapper/framework/NewGrBiSaAggMapper.xml | 9 +- .../NewGrBiSaAggMonthCountMapper.xml | 77 ++++++++++------- .../framework/NewGrBiSaAggYearCountMapper.xml | 48 ++++++----- 8 files changed, 191 insertions(+), 74 deletions(-) diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/controller/NewGrBiSaAggMonthCountController.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/controller/NewGrBiSaAggMonthCountController.java index 404c796..14feb1c 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/controller/NewGrBiSaAggMonthCountController.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/controller/NewGrBiSaAggMonthCountController.java @@ -45,16 +45,23 @@ public class NewGrBiSaAggMonthCountController extends BaseController public BaseWebResult getTotalDetail(HttpServletRequest req) { Map params = FuncWeb.getParameterBodyMap(req); - String groupField = params.containsKey("Group by") ? params.get("Group by").toString() : "useMonth"; + String groupField = params.containsKey("Group by") ? params.get("Group by").toString() : ""; SaAggParam saAggParam = new SaAggParam(); - if (params.containsKey("useMonth")){ - saAggParam.setUseMonth(params.get("useMonth").toString()); + if(groupField.contains("useMonth")){ + if (params.containsKey("useMonthStart")){ + saAggParam.setUseMonthStart(params.get("useMonthStart").toString()); + } + if (params.containsKey("useMonthEnd")){ + saAggParam.setUseMonthEnd(params.get("useMonthEnd").toString()); + } } - if(params.containsKey("useYear")){ - saAggParam.setUseYear(params.get("useYear").toString()); - }else{ - saAggParam.setUseYear(new SimpleDateFormat("yyyy").format(new Date())); + if(params.containsKey("useYearStart")){ + saAggParam.setUseYearStart(params.get("useYearStart").toString()); } + if(params.containsKey("useYearEnd")){ + saAggParam.setUseYearEnd(params.get("useYearEnd").toString()); + } + if(params.containsKey("customName")){ saAggParam.setCustomName(Arrays.asList(params.get("customName").toString().split(","))); } @@ -80,7 +87,7 @@ public class NewGrBiSaAggMonthCountController extends BaseController if (params.containsKey("provinceName")){ saAggParam.setProvinceName(Arrays.asList(params.get("provinceName").toString().split( ","))); } - if (params.containsKey("useMonth") || groupField.contains("useMonth")){ + if (groupField.contains("useMonth")){ List list = newGrBiSaAggMonthCountService.getTotalDetail(saAggParam); return BaseWebResult.success(list); }else{ diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/xtsy/zhxsqkPlugin.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/xtsy/zhxsqkPlugin.java index 98fa224..79857d4 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/xtsy/zhxsqkPlugin.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/xtsy/zhxsqkPlugin.java @@ -2,12 +2,11 @@ package com.lideeyunji.core.framework.enhance.example.report.xtsy; import cn.hutool.core.bean.BeanUtil; +import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.lideeyunji.core.framework.config.aspect.enhancereport.model.EnhanceReportContext; import com.lideeyunji.core.framework.config.aspect.enhancereport.plugin.ReportAroundAdvicePlugin; -import com.lideeyunji.core.framework.config.aspect.enhancereport.plugin.ReportBeforeAdvicePlugin; -import com.lideeyunji.core.framework.entity.NewGrBiSaAgg; import com.lideeyunji.core.framework.entity.NewGrBiSaAggMonthCount; import com.lideeyunji.core.framework.entity.NewGrBiSaAggYearCount; import com.lideeyunji.core.framework.service.INewGrBiSaAggMonthCountService; @@ -15,9 +14,7 @@ import com.lideeyunji.core.framework.service.INewGrBiSaAggService; import com.lideeyunji.core.framework.service.INewGrBiSaAggYearCountService; import com.lideeyunji.tool.framework.exception.lideeYunJiException; import com.lideeyunji.tool.framework.yunji.model.ResultDataModel; -import com.lideeyunji.tool.framework.yunji.model.global.BaseWebResult; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -44,7 +41,7 @@ public class zhxsqkPlugin implements ReportAroundAdvicePlugin { @Override public ResultDataModel executeAround(EnhanceReportContext enhanceContext) { - log.info("进入=======>zhxsqkLineReportEnhance=======>execute"); + log.info("进入=======>zhxsqkPlugin=======>execute"); Map params = enhanceContext.getParam().getParams(); if (params.containsKey("Group by")) { @@ -55,13 +52,48 @@ public class zhxsqkPlugin implements ReportAroundAdvicePlugin { if(!groupFieldList.contains("useYear") && !params.containsKey("useYear")){ throw new lideeYunJiException("维度“年” 和 查询条件“年” 不能同时为空!"); } - PageHelper.startPage(Integer.parseInt(params.get("pageNo").toString()), Integer.parseInt(params.get("pageSize").toString())); + Page page = PageHelper.startPage(Integer.parseInt(params.get("pageNo").toString()), Integer.parseInt(params.get("pageSize").toString())); if(groupFieldList.contains("useMonth") || params.containsKey("useMonth")){ + setMonthOrderBy(params, page); List newGrBiSaAggList = newGrBiSaAggMonthCountService.selectNewGrBiSaAggGroupMonthList(params, groupFieldList); PageInfo pageInfo = new PageInfo<>(newGrBiSaAggList); List> list = newGrBiSaAggList.stream().map(BeanUtil::beanToMap).collect(Collectors.toList()); return ResultDataModel.fomat(pageInfo.getTotal(),list); }else{ + if(params.containsKey("column")){ + String orderBy = ""; + if ("thisYearSaQty".equals(params.get("column"))) { + orderBy = "this_year_sa_qty " + params.get("order").toString(); + } + if ("saqty_yoy".equals(params.get("column"))) { + orderBy = "CAST(TRIM(REGEXP_SUBSTR(saqty_yoy, '-?([0-9]+\\.?[0-9]*|[0-9]*\\.?[0-9]+)')) AS DECIMAL(10,2)) " + params.get("order").toString(); + } + if ("thisYearSaMoney".equals(params.get("column"))) { + orderBy = "this_year_sa_money " + params.get("order").toString(); + } + if ("samoney_yoy".equals(params.get("column"))) { + orderBy = "CAST(TRIM(REGEXP_SUBSTR(samoney_yoy, '-?([0-9]+\\.?[0-9]*|[0-9]*\\.?[0-9]+)')) AS DECIMAL(10,2)) " + params.get("order").toString(); + } + if ("thisYearProfit".equals(params.get("column"))) { + orderBy = "this_year_profit " + params.get("order").toString(); + } + if ("profit_yoy".equals(params.get("column"))) { + orderBy = "CAST(TRIM(REGEXP_SUBSTR(profit_yoy, '-?([0-9]+\\.?[0-9]*|[0-9]*\\.?[0-9]+)')) AS DECIMAL(10,2)) " + params.get("order").toString(); + } + if ("thisYearCost".equals(params.get("column"))) { + orderBy = "this_year_cost " + params.get("order").toString(); + } + if ("thisYearSaMoneyShare".equals(params.get("column"))) { + orderBy = "this_year_sa_money_share " + params.get("order").toString(); + } + if ("thisprofitshare".equals(params.get("column"))) { + orderBy = "thisprofitshare " + params.get("order").toString(); + } + if ("thisYearSaMoneyGrowth".equals(params.get("column"))) { + orderBy = "CAST(TRIM(REGEXP_SUBSTR(this_year_sa_money_growth, '-?([0-9]+\\.?[0-9]*|[0-9]*\\.?[0-9]+)')) AS DECIMAL(10,2)) " + params.get("order").toString(); + } + page.setUnsafeOrderBy(orderBy); + } List newGrBiSaAggList = newGrBiSaAggYearCountService.selectNewGrBiSaAggGroupYearList(params, groupFieldList); PageInfo pageInfo = new PageInfo<>(newGrBiSaAggList); List> list = newGrBiSaAggList.stream().map(BeanUtil::beanToMap).collect(Collectors.toList()); @@ -69,11 +101,49 @@ public class zhxsqkPlugin implements ReportAroundAdvicePlugin { } }else { - PageHelper.startPage(Integer.parseInt(params.get("pageNo").toString()), Integer.parseInt(params.get("pageSize").toString())); + Page page = PageHelper.startPage(Integer.parseInt(params.get("pageNo").toString()), Integer.parseInt(params.get("pageSize").toString())); + setMonthOrderBy(params, page); List newGrBiSaAggList = newGrBiSaAggService.selectNewGrBiSaAggList(params); PageInfo pageInfo = new PageInfo<>(newGrBiSaAggList); List> list = newGrBiSaAggList.stream().map(BeanUtil::beanToMap).collect(Collectors.toList()); return ResultDataModel.fomat(pageInfo.getTotal(),list); } } + + private void setMonthOrderBy(Map params, Page page) { + if(params.containsKey("column")){ + String orderBy = ""; + if ("thisMonthSaQty".equals(params.get("column"))) { + orderBy = "this_month_sa_qty " + params.get("order").toString(); + } + if ("monthsaqty_yoy".equals(params.get("column"))) { + orderBy = "CAST(TRIM(REGEXP_SUBSTR(monthsaqty_yoy, '-?([0-9]+\\.?[0-9]*|[0-9]*\\.?[0-9]+)')) AS DECIMAL(10,2)) " + params.get("order").toString(); + } + if ("thisMonthSaMoney".equals(params.get("column"))) { + orderBy = "this_month_sa_money " + params.get("order").toString(); + } + if ("monthsamoney_yoy".equals(params.get("column"))) { + orderBy = "CAST(TRIM(REGEXP_SUBSTR(monthsamoney_yoy, '-?([0-9]+\\.?[0-9]*|[0-9]*\\.?[0-9]+)')) AS DECIMAL(10,2)) " + params.get("order").toString(); + } + if ("thisMonthProfit".equals(params.get("column"))) { + orderBy = "this_month_profit " + params.get("order").toString(); + } + if ("monthprofit_yoy".equals(params.get("column"))) { + orderBy = "CAST(TRIM(REGEXP_SUBSTR(monthprofit_yoy, '-?([0-9]+\\.?[0-9]*|[0-9]*\\.?[0-9]+)')) AS DECIMAL(10,2)) " + params.get("order").toString(); + } + if ("thisMonthCost".equals(params.get("column"))) { + orderBy = "this_month_cost " + params.get("order").toString(); + } + if ("thisMonthSaMoneyShare".equals(params.get("column"))) { + orderBy = "this_month_sa_money_share " + params.get("order").toString(); + } + if ("thisMonthProfitShare".equals(params.get("column"))) { + orderBy = "this_month_profit_share " + params.get("order").toString(); + } + if ("lastMonthSaMoney_yoy".equals(params.get("column"))) { + orderBy = "CAST(TRIM(REGEXP_SUBSTR(lastMonthSaMoney_yoy, '-?([0-9]+\\.?[0-9]*|[0-9]*\\.?[0-9]+)')) AS DECIMAL(10,2)) " + params.get("order").toString(); + } + page.setUnsafeOrderBy(orderBy); + } + } } diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/NewGrBiSaAggMapper.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/NewGrBiSaAggMapper.java index 6e159f1..30fe492 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/NewGrBiSaAggMapper.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/NewGrBiSaAggMapper.java @@ -72,7 +72,7 @@ public interface NewGrBiSaAggMapper extends BaseMapper */ @DataPermission(enable = false) @DS(value = "#dataSourceType") - public List selectNewGrBiSaAggList(@Param("dataSourceType") String dataSourceType, @Param("saAggParam")SaAggParam saAggParam); + public List selectNewGrBiSaAggList(@Param("dataSourceType") String dataSourceType, @Param("saAggParam")SaAggParam saAggParam, @Param("params") Map params); /** * 新增综合销售情况明细 diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/params/SaAggParam.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/params/SaAggParam.java index 439ad0f..659fb3b 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/params/SaAggParam.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/params/SaAggParam.java @@ -6,8 +6,10 @@ import java.util.List; @Data public class SaAggParam { - private String useYear; - private String useMonth; + private String useYearStart; + private String useYearEnd; + private String useMonthStart; + private String useMonthEnd; private List customName; private List zoneName; private List saleTypeName; diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/NewGrBiSaAggServiceImpl.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/NewGrBiSaAggServiceImpl.java index 7dbf979..115f238 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/NewGrBiSaAggServiceImpl.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/NewGrBiSaAggServiceImpl.java @@ -142,17 +142,23 @@ public class NewGrBiSaAggServiceImpl extends ServiceImpl selectNewGrBiSaAggList(Map params) { SaAggParam saAggParam = createParam(params); - return this.baseMapper.selectNewGrBiSaAggList(lideeYunJiBaseConstant.DS_ERP_BI_DATA, saAggParam); + return this.baseMapper.selectNewGrBiSaAggList(lideeYunJiBaseConstant.DS_ERP_BI_DATA, saAggParam, params); } public static SaAggParam createParam(Map params) { SaAggParam saAggParam = new SaAggParam(); - if (params.containsKey("useYear")) { - saAggParam.setUseYear(params.get("useYear").toString()); + if (params.containsKey("useYearStart")) { + saAggParam.setUseYearStart(params.get("useYearStart").toString()); } - if (params.containsKey("useMonth")) { - saAggParam.setUseMonth(params.get("useMonth").toString()); + if (params.containsKey("useYearEnd")) { + saAggParam.setUseYearEnd(params.get("useYearEnd").toString()); + } + if (params.containsKey("useMonthStart")) { + saAggParam.setUseMonthStart(params.get("useMonthStart").toString()); + } + if (params.containsKey("useMonthEnd")) { + saAggParam.setUseMonthEnd(params.get("useMonthEnd").toString()); } if (params.containsKey("customName")) { saAggParam.setCustomName(Arrays.asList(params.get("customName").toString().split( ","))); diff --git a/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMapper.xml b/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMapper.xml index bd63887..c95224b 100644 --- a/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMapper.xml +++ b/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMapper.xml @@ -645,8 +645,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" FROM new_gr_bi_sa_agg tbl_lgbsa - and use_year = #{saAggParam.useYear} - and use_month = #{saAggParam.useMonth} + + + AND (use_year * 100 + use_month) >= (#{saAggParam.useYearStart} * 100 + #{saAggParam.useMonthStart}) + + + AND (use_year * 100 + use_month) <= (#{saAggParam.useYearEnd} * 100 + #{saAggParam.useMonthEnd}) + and zone_name in diff --git a/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMonthCountMapper.xml b/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMonthCountMapper.xml index 0d41d32..7824063 100644 --- a/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMonthCountMapper.xml +++ b/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMonthCountMapper.xml @@ -58,8 +58,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ROUND(SUM(this_month_profit) / 10000, 2) AS this_month_profit_s FROM new_gr_bi_sa_agg_month_count - and use_year = #{saAggParam.useYear} - and use_month = #{saAggParam.useMonth} + + + + + + + + AND (use_year * 100 + use_month) >= (#{saAggParam.useYearStart} * 100 + #{saAggParam.useMonthStart}) + + + AND (use_year * 100 + use_month) <= (#{saAggParam.useYearEnd} * 100 + #{saAggParam.useMonthEnd}) + and custom_name in #{field} @@ -248,18 +259,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + and use_year = #{useYear} and zone_id = #{zoneId} and zone_name like concat('%', #{zoneName}, '%') @@ -114,7 +117,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and this_year_profit_change = #{thisYearProfitChange} - + SELECT current_year_data.use_year, - + current_year_data.ny as ny, @@ -359,7 +362,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sum(this_year_profit) AS this_year_profit FROM new_gr_bi_sa_agg_year_count - and use_year = #{saAggParam.useYear} + + + and use_year >= #{saAggParam.useYearStart} + and use_year <= #{saAggParam.useYearEnd} and zone_name in #{name} @@ -450,14 +456,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" saler_id, - SUM(this_year_sa_qty) AS last_year_sa_qty, - SUM(this_year_sa_money) AS last_year_sa_money, - SUM(this_year_cost) AS last_year_cost, - SUM(this_year_profit) AS last_year_profit + SUM(this_year_sa_qty) AS last_year_sa_qty, + SUM(this_year_sa_money) AS last_year_sa_money, + SUM(this_year_cost) AS last_year_cost, + SUM(this_year_profit) AS last_year_profit FROM new_gr_bi_sa_agg_year_count - and use_year = #{saAggParam.useYear} -1 + and zone_name in #{name} @@ -523,8 +529,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - ) AS last_year_data - ON last_year_data.use_year = current_year_data.use_year - 1 + ) AS last_year_data + ON last_year_data.use_year = current_year_data.use_year - 1 AND current_year_data.custom_id = last_year_data.custom_id @@ -543,11 +549,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND current_year_data.saler_id = last_year_data.saler_id - LEFT JOIN (SELECT use_year, - SUM(this_year_sa_money) AS this_year_sa_money_sum, - SUM(this_year_profit) AS this_year_profit_sum - FROM new_gr_bi_sa_agg_year_count - GROUP BY use_year) as total_year_data - ON total_year_data.use_year = current_year_data.use_year + LEFT JOIN (SELECT use_year, + SUM(this_year_sa_money) AS this_year_sa_money_sum, + SUM(this_year_profit) AS this_year_profit_sum + FROM new_gr_bi_sa_agg_year_count + GROUP BY use_year) as total_year_data + ON total_year_data.use_year = current_year_data.use_year \ No newline at end of file