From 35c66d27af5f6567b23fbbe702fef4378e440cc4 Mon Sep 17 00:00:00 2001 From: king Date: Thu, 7 May 2026 17:10:23 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=B8=BB=E8=A6=81=E4=BA=A7=E5=93=81?= =?UTF-8?q?=E5=89=8D10=E9=94=80=E5=94=AE=E6=94=B6=E5=85=A5=E4=B8=8E?= =?UTF-8?q?=E5=8D=A0=E6=AF=94=20=E8=B0=83=E6=95=B4,=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/xtsy/stgoodTop10Plugin.java | 64 ++++++++++++++++++ .../entity/NewGrBiSaAggMonthCount.java | 12 ++++ .../mapper/NewGrBiSaAggMonthCountMapper.java | 19 ++++-- .../INewGrBiSaAggMonthCountService.java | 8 +-- .../NewGrBiSaAggMonthCountServiceImpl.java | 19 +++--- .../NewGrBiSaAggMonthCountMapper.xml | 66 +++++++++++++++++++ 6 files changed, 171 insertions(+), 17 deletions(-) create mode 100644 lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/xtsy/stgoodTop10Plugin.java diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/xtsy/stgoodTop10Plugin.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/xtsy/stgoodTop10Plugin.java new file mode 100644 index 0000000..ea614ac --- /dev/null +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/xtsy/stgoodTop10Plugin.java @@ -0,0 +1,64 @@ + +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.entity.NewGrBiSaAggMonthCount; +import com.lideeyunji.core.framework.service.INewGrBiSaAggMonthCountService; +import com.lideeyunji.tool.framework.yunji.model.ResultDataModel; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 报表-主要产品前10销售收入与占比-插件 + */ +@Slf4j +@Component("stgoodTop10Plugin") +public class stgoodTop10Plugin implements ReportAroundAdvicePlugin { + + @Resource + INewGrBiSaAggMonthCountService newGrBiSaAggMonthCountService; + + + @Override + public ResultDataModel executeAround(EnhanceReportContext enhanceContext) { + log.info("进入=======>stgoodTop10Plugin=======>execute"); + Map params = enhanceContext.getParam().getParams(); + if(!params.containsKey("useYearStart")){ + params.put("useYearStart", "2026"); + params.put("useMonthStart", "1"); + } + if(!params.containsKey("useYearEnd")){ + params.put("useYearEnd", "2026"); + params.put("useMonthEnd", "4"); + } + Page page = PageHelper.startPage(Integer.parseInt(params.get("pageNo").toString()), Integer.parseInt(params.get("pageSize").toString())); + if (params.containsKey("column")) { + String orderBy = params.get("column") + " " + params.get("order"); +// 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(); +// } + page.setUnsafeOrderBy(orderBy); + } + List newGrBiSaAggList = newGrBiSaAggMonthCountService.stgoodTop10(params); + PageInfo pageInfo = new PageInfo<>(newGrBiSaAggList); + List> list = newGrBiSaAggList.stream().map(BeanUtil::beanToMap).collect(Collectors.toList()); + return ResultDataModel.fomat(pageInfo.getTotal(), list); + + } +} diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/NewGrBiSaAggMonthCount.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/NewGrBiSaAggMonthCount.java index aa77bfb..2109408 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/NewGrBiSaAggMonthCount.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/NewGrBiSaAggMonthCount.java @@ -85,6 +85,9 @@ public class NewGrBiSaAggMonthCount implements Serializable @TableField(value = "std_goods_name") private String stdGoodsName; + @TableField(value = "goods_id") + private String goodsId; + @TableField(value = "province_id") private String provinceId; @@ -190,4 +193,13 @@ public class NewGrBiSaAggMonthCount implements Serializable @TableField(value = "monthprofit_yoy") private String monthprofit_yoy; + @TableField(value = "yoy_money_sub") + private String yoyMoneySub; + + @TableField(value = "money") + private String money; + + @TableField(value = "money_share") + private String moneyShare; + } diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/NewGrBiSaAggMonthCountMapper.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/NewGrBiSaAggMonthCountMapper.java index 5a49e7c..1ffcca0 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/NewGrBiSaAggMonthCountMapper.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/NewGrBiSaAggMonthCountMapper.java @@ -1,16 +1,15 @@ package com.lideeyunji.core.framework.mapper; -import java.util.List; -import java.util.Map; - import com.baomidou.dynamic.datasource.annotation.DS; -import com.lideeyunji.core.framework.entity.NewGrBiSaAgg; -import com.lideeyunji.core.framework.entity.NewGrBiSaAggMonthCount; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.lideeyunji.core.framework.entity.NewGrBiSaAggMonthCount; import com.lideeyunji.core.framework.params.SaAggParam; import com.lideeyunji.tool.framework.permission.core.annotation.DataPermission; import org.apache.ibatis.annotations.Param; +import java.util.List; +import java.util.Map; + /** * 综合销售情况月维度Mapper接口 * @@ -100,4 +99,14 @@ public interface NewGrBiSaAggMonthCountMapper extends BaseMapper selectNewGrBiSaAggGroupNoMonthNoYearList(@Param("dataSourceType") String dataSourceType, @Param("saAggParam") SaAggParam saAggParam, @Param("params") Map params, @Param("groupFieldList")List groupFieldList); + /** + * 主要产品前10销售收入与占比 -月度 + * + * @param params 综合销售情况明细参数 + * @return 综合销售情况明细集合 + */ + @DataPermission(enable = false) + @DS(value = "#dataSourceType") + public List stgoodTop10(@Param("dataSourceType") String dataSourceType, @Param("params") Map params); + } diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/INewGrBiSaAggMonthCountService.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/INewGrBiSaAggMonthCountService.java index e10fa5c..3ca1cd6 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/INewGrBiSaAggMonthCountService.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/INewGrBiSaAggMonthCountService.java @@ -1,12 +1,11 @@ package com.lideeyunji.core.framework.service; +import com.lideeyunji.core.framework.entity.NewGrBiSaAggMonthCount; +import com.lideeyunji.core.framework.params.SaAggParam; + import java.util.List; import java.util.Map; -import com.lideeyunji.core.framework.entity.NewGrBiSaAgg; -import com.lideeyunji.core.framework.entity.NewGrBiSaAggMonthCount; -import com.lideeyunji.core.framework.params.SaAggParam; - /** * 综合销售情况月维度Service接口 * @@ -72,4 +71,5 @@ public interface INewGrBiSaAggMonthCountService public List selectNewGrBiSaAggGroupNoMonthNoYearList(Map params, List groupFieldList); + List stgoodTop10(Map params); } diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/NewGrBiSaAggMonthCountServiceImpl.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/NewGrBiSaAggMonthCountServiceImpl.java index e62e9c3..ebeb102 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/NewGrBiSaAggMonthCountServiceImpl.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/NewGrBiSaAggMonthCountServiceImpl.java @@ -1,17 +1,15 @@ package com.lideeyunji.core.framework.service.impl; -import java.util.Collections; -import java.util.List; -import java.util.Map; - import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.lideeyunji.core.framework.entity.NewGrBiSaAgg; +import com.lideeyunji.core.framework.entity.NewGrBiSaAggMonthCount; +import com.lideeyunji.core.framework.mapper.NewGrBiSaAggMonthCountMapper; import com.lideeyunji.core.framework.params.SaAggParam; +import com.lideeyunji.core.framework.service.INewGrBiSaAggMonthCountService; import com.lideeyunji.tool.framework.common.constant.lideeYunJiBaseConstant; import org.springframework.stereotype.Service; -import com.lideeyunji.core.framework.mapper.NewGrBiSaAggMonthCountMapper; -import com.lideeyunji.core.framework.entity.NewGrBiSaAggMonthCount; -import com.lideeyunji.core.framework.service.INewGrBiSaAggMonthCountService; + +import java.util.List; +import java.util.Map; /** * 综合销售情况月维度Service业务层处理 @@ -116,4 +114,9 @@ public class NewGrBiSaAggMonthCountServiceImpl extends ServiceImpl stgoodTop10(Map params) { + return this.baseMapper.stgoodTop10(lideeYunJiBaseConstant.DS_ERP_BI_DATA, params); + } } diff --git a/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMonthCountMapper.xml b/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMonthCountMapper.xml index b279a94..ed7a192 100644 --- a/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMonthCountMapper.xml +++ b/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMonthCountMapper.xml @@ -1319,4 +1319,70 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" use_year = YEAR(CURDATE()) and sale_type_name in ( '代理品种','其他收入','自营品种','公司出口','委托加工','外贸品种') + + \ No newline at end of file From 9e72adf9d1c43c24d299ec696dd5f52bdf2a7f74 Mon Sep 17 00:00:00 2001 From: king Date: Fri, 8 May 2026 10:51:40 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E7=BB=BC=E5=90=88=E9=94=80=E5=94=AE?= =?UTF-8?q?=E6=83=85=E5=86=B5=E8=A1=A8=EF=BC=8C=E6=A0=87=E5=87=86=E5=93=81?= =?UTF-8?q?=E5=90=8D=E3=80=81=E5=AE=A2=E6=88=B7=E5=90=8D=E7=A7=B0=E3=80=81?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E5=91=98=E3=80=81=E5=8C=BA=E5=9F=9F=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/report/xtsy/ZhxsqkPlugin.java | 92 +++++++++++++++---- 1 file changed, 72 insertions(+), 20 deletions(-) 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 63db47a..b61920e 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 @@ -60,6 +60,17 @@ public class ZhxsqkPlugin implements ReportAroundAdvicePlugin { Page page = PageHelper.startPage(Integer.parseInt(params.get("pageNo").toString()), Integer.parseInt(params.get("pageSize").toString())); if(!groupFieldList.contains("useMonth") && !groupFieldList.contains("useYear")){ setMonthOrderBy(params, page); + if(!params.containsKey("column")){ + page.setUnsafeOrderBy(params.get("Group by").toString() + .replace("useYear", "use_year desc") + .replace("useMonth", "use_month desc") + .replace("stdGoodsName", "std_goods_name") + .replace("customName", "custom_name") + .replace("zoneName", "zone_name") + .replace("salerName", "saler_name") + .replace("dosageName", "dosage_name") + .replace("saleTypeName", "sale_type_name")); + } if(params.get("useYearStart").toString() .equals(params.get("useYearEnd").toString())){ params.put("isOneYear", true); }else{ @@ -72,6 +83,17 @@ public class ZhxsqkPlugin implements ReportAroundAdvicePlugin { } if(groupFieldList.contains("useMonth") || params.containsKey("useMonth")){ setMonthOrderBy(params, page); + if(!params.containsKey("column")){ + page.setUnsafeOrderBy(params.get("Group by").toString() + .replace("useYear", "use_year desc") + .replace("useMonth", "use_month desc") + .replace("stdGoodsName", "std_goods_name") + .replace("customName", "custom_name") + .replace("zoneName", "zone_name") + .replace("salerName", "saler_name") + .replace("dosageName", "dosage_name") + .replace("saleTypeName", "sale_type_name")); + } List newGrBiSaAggList = newGrBiSaAggMonthCountService.selectNewGrBiSaAggGroupMonthList(params, groupFieldList); PageInfo pageInfo = new PageInfo<>(newGrBiSaAggList); List> list = newGrBiSaAggList.stream().map(BeanUtil::beanToMap).collect(Collectors.toList()); @@ -109,16 +131,17 @@ public class ZhxsqkPlugin implements ReportAroundAdvicePlugin { 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(); } - if("stdGoodsName".equals(params.get("column"))){ - orderBy = "std_goods_name " + params.get("order").toString(); - } - if("customName".equals(params.get("column"))){ - orderBy = "custom_name " + params.get("order").toString(); - } - if("salerName".equals(params.get("column"))){ - orderBy = "saler_name " + params.get("order").toString(); - } - page.setUnsafeOrderBy(orderBy); + commonOrder(params, page, orderBy); + }else{ + page.setUnsafeOrderBy(params.get("Group by").toString() + .replace("useYear", "use_year desc") + .replace("useMonth", "use_month desc") + .replace("stdGoodsName", "std_goods_name") + .replace("customName", "custom_name") + .replace("zoneName", "zone_name") + .replace("salerName", "saler_name") + .replace("dosageName", "dosage_name") + .replace("saleTypeName", "sale_type_name")); } List newGrBiSaAggList = newGrBiSaAggYearCountService.selectNewGrBiSaAggGroupYearList(params, groupFieldList); PageInfo pageInfo = new PageInfo<>(newGrBiSaAggList); @@ -169,16 +192,45 @@ public class ZhxsqkPlugin implements ReportAroundAdvicePlugin { 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(); } - if("stdGoodsName".equals(params.get("column"))){ - orderBy = "std_goods_name " + params.get("order").toString(); - } - if("customName".equals(params.get("column"))){ - orderBy = "custom_name " + params.get("order").toString(); - } - if("salerName".equals(params.get("column"))){ - orderBy = "saler_name " + params.get("order").toString(); - } - page.setUnsafeOrderBy(orderBy); + commonOrder(params, page, orderBy); } } + + + private static void commonOrder(Map params, Page page, String orderBy) { + if("stdGoodsName".equals(params.get("column"))){ + orderBy = "std_goods_name " + params.get("order").toString(); + } + if("customName".equals(params.get("column"))){ + orderBy = "custom_name " + params.get("order").toString(); + } + if("salerName".equals(params.get("column"))){ + orderBy = "saler_name " + params.get("order").toString(); + } + if("useYear".equals(params.get("column"))){ + orderBy = "use_year " + params.get("order").toString(); + } + if("useMonth".equals(params.get("column"))){ + orderBy = "use_month " + params.get("order").toString(); + } + if("stdGoodsName".equals(params.get("column"))){ + orderBy = "std_goods_name " + params.get("order").toString(); + } + if("customName".equals(params.get("column"))){ + orderBy = "custom_name " + params.get("order").toString(); + } + if("zoneName".equals(params.get("column"))){ + orderBy = "zone_name " + params.get("order").toString(); + } + if("salerName".equals(params.get("column"))){ + orderBy = "saler_name " + params.get("order").toString(); + } + if("dosageName".equals(params.get("column"))){ + orderBy = "dosage_name " + params.get("order").toString(); + } + if("saleTypeName".equals(params.get("column"))){ + orderBy = "sale_type_name " + params.get("order").toString(); + } + page.setUnsafeOrderBy(orderBy); + } } From ffdcfd605efea9536f8f43864689ec43514db743 Mon Sep 17 00:00:00 2001 From: king Date: Fri, 8 May 2026 11:00:20 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=B8=BB=E8=A6=81=E4=BA=A7=E5=93=81?= =?UTF-8?q?=E5=89=8D10=E9=94=80=E5=94=AE=E6=94=B6=E5=85=A5=E4=B8=8E?= =?UTF-8?q?=E5=8D=A0=E6=AF=94=20=E6=B7=BB=E5=8A=A0=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E8=B7=A8=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/report/xtsy/stgoodTop10Plugin.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/xtsy/stgoodTop10Plugin.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/xtsy/stgoodTop10Plugin.java index ea614ac..f1d4f1f 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/xtsy/stgoodTop10Plugin.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/xtsy/stgoodTop10Plugin.java @@ -14,6 +14,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.time.LocalDateTime; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -33,13 +34,17 @@ public class stgoodTop10Plugin implements ReportAroundAdvicePlugin { public ResultDataModel executeAround(EnhanceReportContext enhanceContext) { log.info("进入=======>stgoodTop10Plugin=======>execute"); Map params = enhanceContext.getParam().getParams(); + // 获取一个月前的时间和年月 + LocalDateTime lastNow = LocalDateTime.now().minusMonths(1); + int lastYear = lastNow.getYear(); + int lastMonth = lastNow.getMonthValue(); if(!params.containsKey("useYearStart")){ - params.put("useYearStart", "2026"); + params.put("useYearStart", lastYear); params.put("useMonthStart", "1"); } if(!params.containsKey("useYearEnd")){ - params.put("useYearEnd", "2026"); - params.put("useMonthEnd", "4"); + params.put("useYearEnd", lastYear); + params.put("useMonthEnd", lastMonth); } Page page = PageHelper.startPage(Integer.parseInt(params.get("pageNo").toString()), Integer.parseInt(params.get("pageSize").toString())); if (params.containsKey("column")) {