From c5078d59fce1375888f2aad4990fe5cff69f9eba Mon Sep 17 00:00:00 2001 From: king Date: Wed, 25 Mar 2026 12:44:21 +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=E8=B0=83=E6=95=B4=E6=9C=88=E5=BA=A6,?= =?UTF-8?q?=E5=B9=B4=E5=BA=A6=20=E6=8A=A5=E8=A1=A8=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LideeYunJiReportEnhance.java | 31 +- .../plugin/ReportAroundAdvicePlugin.java | 12 + .../plugin/ReportPluginManager.java | 5 + .../NewGrBiSaAggMonthCountController.java | 6 + .../example/report/xtsy/zhxsqkPlugin.java | 29 +- .../framework/mapper/NewGrBiSaAggMapper.java | 13 +- .../core/framework/params/SaAggParam.java | 2 + .../service/INewGrBiSaAggService.java | 6 +- .../service/impl/NewGrBiSaAggServiceImpl.java | 43 +- .../mapper/framework/NewGrBiSaAggMapper.xml | 642 +++++++++++++++++- 10 files changed, 756 insertions(+), 33 deletions(-) create mode 100644 lidee-core/src/main/java/com/lideeyunji/core/framework/config/aspect/enhancereport/plugin/ReportAroundAdvicePlugin.java diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/config/aspect/enhancereport/LideeYunJiReportEnhance.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/config/aspect/enhancereport/LideeYunJiReportEnhance.java index 2aba128..94cae5c 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/config/aspect/enhancereport/LideeYunJiReportEnhance.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/config/aspect/enhancereport/LideeYunJiReportEnhance.java @@ -11,10 +11,7 @@ import com.lideeyunji.core.framework.config.aspect.enhancereport.enums.RefreshPl import com.lideeyunji.core.framework.config.aspect.enhancereport.model.BuildEnhanceReportContext; import com.lideeyunji.core.framework.config.aspect.enhancereport.model.EnhanceReportContext; import com.lideeyunji.core.framework.config.aspect.enhancereport.model.EnhanceReportParam; -import com.lideeyunji.core.framework.config.aspect.enhancereport.plugin.ReportAfterAdvicePlugin; -import com.lideeyunji.core.framework.config.aspect.enhancereport.plugin.ReportBaseAdvicePlugin; -import com.lideeyunji.core.framework.config.aspect.enhancereport.plugin.ReportBeforeAdvicePlugin; -import com.lideeyunji.core.framework.config.aspect.enhancereport.plugin.ReportPluginManager; +import com.lideeyunji.core.framework.config.aspect.enhancereport.plugin.*; import com.lideeyunji.core.framework.entity.ReportEntity; import com.lideeyunji.core.framework.service.IReportService; import com.lideeyunji.core.framework.utils.Func; @@ -24,7 +21,9 @@ import com.lideeyunji.tool.framework.yunji.tool.spring.SpringUtils; import com.lideeyunji.tool.framework.yunji.utils.FuncBase; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.AfterReturning; +import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.springframework.beans.factory.annotation.Autowired; @@ -140,6 +139,30 @@ public class LideeYunJiReportEnhance extends LideeYunJiBaseEnhance { ReportPluginManager.executePlugin(javaClass, context); } + @Around("@annotation(lideeyunJiReportEnhance)") + public Object around(ProceedingJoinPoint joinPoint, LideeyunJiReportEnhance lideeyunJiReportEnhance) throws Throwable { + //获取参数 + BuildEnhanceReportContext buildEnhanceContext = this.getContextAndPlugins(joinPoint); + if (FuncBase.isEmpty(buildEnhanceContext)) {//没有增强 + return joinPoint.proceed(); + } + + //增强列表 + String javaClass = buildEnhanceContext.getJavaClass(); + if (Func.isEmpty(javaClass)) {//无增强 + return joinPoint.proceed(); + } + //有增强,但是增强不是报表增强,直接返回原值 + ReportBaseAdvicePlugin plugin = ReportPluginManager.getPlugin(javaClass); + if (!(plugin instanceof ReportAroundAdvicePlugin)) { + return joinPoint.proceed(); + } + + EnhanceReportContext context = buildEnhanceContext.getContext(); + //执行增强 + return ReportPluginManager.executeAroundPlugin(javaClass, context); + } + private BuildEnhanceReportContext getContextAndPlugins(JoinPoint joinPoint) { Map paramMap = super.getJoinPointParam(joinPoint); diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/config/aspect/enhancereport/plugin/ReportAroundAdvicePlugin.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/config/aspect/enhancereport/plugin/ReportAroundAdvicePlugin.java new file mode 100644 index 0000000..b0af378 --- /dev/null +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/config/aspect/enhancereport/plugin/ReportAroundAdvicePlugin.java @@ -0,0 +1,12 @@ +package com.lideeyunji.core.framework.config.aspect.enhancereport.plugin; + +import com.lideeyunji.core.framework.config.aspect.enhancereport.model.EnhanceReportContext; +import com.lideeyunji.tool.framework.yunji.model.ResultDataModel; + +/** + * 报表统计 环绕增强(报表统计专属) + */ +public interface ReportAroundAdvicePlugin extends ReportBaseAdvicePlugin { + + ResultDataModel executeAround(EnhanceReportContext enhanceContext); +} diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/config/aspect/enhancereport/plugin/ReportPluginManager.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/config/aspect/enhancereport/plugin/ReportPluginManager.java index c761191..35df8e0 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/config/aspect/enhancereport/plugin/ReportPluginManager.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/config/aspect/enhancereport/plugin/ReportPluginManager.java @@ -2,6 +2,7 @@ package com.lideeyunji.core.framework.config.aspect.enhancereport.plugin; import com.lideeyunji.core.framework.config.aspect.enhancereport.model.EnhanceReportContext; +import com.lideeyunji.tool.framework.yunji.model.ResultDataModel; import java.util.HashMap; import java.util.Map; @@ -39,4 +40,8 @@ public class ReportPluginManager { plugin.execute(enhanceContext); } + public static ResultDataModel executeAroundPlugin(String name, EnhanceReportContext enhanceContext) { + ReportAroundAdvicePlugin plugin = (ReportAroundAdvicePlugin)plugins.get(name); + return plugin.executeAround(enhanceContext); + } } \ No newline at end of file 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 eeaca25..22ff000 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 @@ -74,6 +74,12 @@ public class NewGrBiSaAggMonthCountController extends BaseController if (params.containsKey("stdGoodsName")){ saAggParam.setStdGoodsName(Arrays.asList(params.get("stdGoodsName").toString().split( ","))); } + if (params.containsKey("goodsName")){ + saAggParam.setGoodsName(Arrays.asList(params.get("goodsName").toString().split( ","))); + } + if (params.containsKey("provinceName")){ + saAggParam.setProvinceName(Arrays.asList(params.get("provinceName").toString().split( ","))); + } if (params.containsKey("usemonth") || groupField.contains("usemonth")){ List list = newGrBiSaAggMonthCountService.getTotalDetail(saAggParam); return BaseWebResult.success(list); 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 6cddfc7..79461c7 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,20 +2,45 @@ package com.lideeyunji.core.framework.enhance.example.report.xtsy; 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.service.INewGrBiSaAggService; +import com.lideeyunji.tool.framework.exception.lideeYunJiException; +import com.lideeyunji.tool.framework.yunji.model.ResultDataModel; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + /** * 报表-系统首页-单表 */ @Slf4j @Component("zhxsqkPlugin") -public class zhxsqkPlugin implements ReportBeforeAdvicePlugin { +public class zhxsqkPlugin implements ReportAroundAdvicePlugin { + @Autowired + INewGrBiSaAggService newGrBiSaAggService; @Override - public void execute(EnhanceReportContext enhanceContext) { + public ResultDataModel executeAround(EnhanceReportContext enhanceContext) { + log.info("进入=======>zhxsqkLineReportEnhance=======>execute"); + Map params = enhanceContext.getParam().getParams(); + if (params.containsKey("Group by")) { + if (params.containsKey("goodsname")) { + throw new lideeYunJiException("在选择维度时,“货品名称”不能有值!"); + } + List groupFieldList = Arrays.asList(params.get("Group by").toString().split(",")); + List newGrBiSaAggList = newGrBiSaAggService.selectNewGrBiSaAggGroupMonthList(params, groupFieldList); +// return ResultDataModel.fomatList(newGrBiSaAggList); + }else { + newGrBiSaAggService.selectNewGrBiSaAggList(params); + } + return null; } } 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 faaba90..792e4b5 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 @@ -1,10 +1,12 @@ package com.lideeyunji.core.framework.mapper; import java.util.List; +import java.util.Map; import com.lideeyunji.core.framework.entity.GrBiSaAgg; import com.lideeyunji.core.framework.entity.NewGrBiSaAgg; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.lideeyunji.core.framework.params.SaAggParam; import org.apache.ibatis.annotations.Param; /** @@ -61,10 +63,17 @@ public interface NewGrBiSaAggMapper extends BaseMapper /** * 查询综合销售情况明细列表 * - * @param newGrBiSaAgg 综合销售情况明细 + * @param saAggParam 综合销售情况明细参数 * @return 综合销售情况明细集合 */ - public List selectNewGrBiSaAggList(NewGrBiSaAgg newGrBiSaAgg); + public List selectNewGrBiSaAggList(@Param("saAggParam")SaAggParam saAggParam); + /** + * 批量查询综合销售情况明细列表 -月度 + * + * @param saAggParam 综合销售情况明细参数 + * @return 综合销售情况明细集合 + */ + public List selectNewGrBiSaAggGroupMonthList(@Param("saAggParam") SaAggParam saAggParam, @Param("params") Map params, @Param("groupFieldList")List groupFieldList); /** * 新增综合销售情况明细 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 39232a0..439ad0f 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 @@ -14,6 +14,8 @@ public class SaAggParam { private List salerName; private List dosageName; private List stdGoodsName; + private List goodsName; + private List provinceName; private List groupFieldList; } diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/INewGrBiSaAggService.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/INewGrBiSaAggService.java index ef6f27d..a54329b 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/INewGrBiSaAggService.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/INewGrBiSaAggService.java @@ -1,6 +1,8 @@ package com.lideeyunji.core.framework.service; import java.util.List; +import java.util.Map; + import com.lideeyunji.core.framework.entity.NewGrBiSaAgg; import org.apache.ibatis.annotations.Param; @@ -28,7 +30,9 @@ public interface INewGrBiSaAggService * @param newGrBiSaAgg 综合销售情况明细 * @return 综合销售情况明细集合 */ - public List selectNewGrBiSaAggList(NewGrBiSaAgg newGrBiSaAgg); + public List selectNewGrBiSaAggList(Map params); + + public List selectNewGrBiSaAggGroupMonthList(Map params, List groupFieldList); /** * 新增综合销售情况明细 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 b0c8739..61d4a59 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 @@ -1,7 +1,9 @@ package com.lideeyunji.core.framework.service.impl; import java.time.LocalDateTime; +import java.util.Arrays; import java.util.List; +import java.util.Map; import cn.hutool.core.collection.CollUtil; import com.baomidou.dynamic.datasource.annotation.DS; @@ -9,6 +11,7 @@ import com.baomidou.dynamic.datasource.annotation.DSTransactional; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.lideeyunji.core.framework.entity.GrBiSaAgg; +import com.lideeyunji.core.framework.params.SaAggParam; import com.lideeyunji.core.framework.service.INewGrBiSaAggMonthCountService; import com.lideeyunji.core.framework.service.INewGrBiSaAggYearCountService; import lombok.extern.slf4j.Slf4j; @@ -128,14 +131,48 @@ public class NewGrBiSaAggServiceImpl extends ServiceImpl selectNewGrBiSaAggList(NewGrBiSaAgg newGrBiSaAgg) + public List selectNewGrBiSaAggList(Map params) { + SaAggParam saAggParam = createParam(params); + return this.baseMapper.selectNewGrBiSaAggList(saAggParam); + } - return this.baseMapper.selectNewGrBiSaAggList(newGrBiSaAgg); + public List selectNewGrBiSaAggGroupMonthList(Map params, List groupFieldList){ + SaAggParam saAggParam = createParam(params); + return this.baseMapper.selectNewGrBiSaAggGroupMonthList(saAggParam,params, groupFieldList); + } + + private SaAggParam createParam(Map params) { + SaAggParam saAggParam = new SaAggParam(); + if (params.containsKey("useyear")) { + saAggParam.setUseYear(params.get("useyear").toString()); + } + if (params.containsKey("usemonth")) { + saAggParam.setUseMonth(params.get("usemonth").toString()); + } + if (params.containsKey("customname")) { + saAggParam.setCustomName(Arrays.asList(params.get("customname").toString().split( ","))); + } + if (params.containsKey("stdGoodsName")) { + saAggParam.setStdGoodsName(Arrays.asList(params.get("stdGoodsName").toString().split( ","))); + } + if (params.containsKey("zonename")) { + saAggParam.setZoneName(Arrays.asList(params.get("zonename").toString().split( ","))); + } + if (params.containsKey("saletypename")) { + saAggParam.setSaleTypeName(Arrays.asList(params.get("saletypename").toString().split( ","))); + } + if (params.containsKey("dosagename")) { + saAggParam.setDosageName(Arrays.asList(params.get("dosagename").toString().split( ","))); + } + if (params.containsKey("salername")) { + saAggParam.setSalerName(Arrays.asList(params.get("salername").toString().split( ","))); + } + return saAggParam; } /** diff --git a/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMapper.xml b/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMapper.xml index d5e43a2..1bbc865 100644 --- a/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMapper.xml +++ b/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMapper.xml @@ -511,29 +511,629 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" END, this_year_profit_change = ( this_year_profit - last_year_profit); - + SELECT + ANY_VALUE (tbl_lgbsa.id) id, + tbl_lgbsa.use_year, + tbl_lgbsa.use_month, + CONCAT(tbl_lgbsa.use_year, LPAD(tbl_lgbsa.use_month, 2, '0')) AS ny, + tbl_lgbsa.zone_id, + tbl_lgbsa.zone_name, + tbl_lgbsa.sale_type_id, + tbl_lgbsa.sale_type_name, + tbl_lgbsa.custom_id, + tbl_lgbsa.custom_name, + tbl_lgbsa.dosage_id, + tbl_lgbsa.dosage_name, + tbl_lgbsa.goods_id, + tbl_lgbsa.goods_name, + tbl_lgbsa.std_goods_name, + tbl_lgbsa.province_id, + tbl_lgbsa.province_name, + tbl_lgbsa.saler_id, + tbl_lgbsa.saler_name, + tbl_lgbsa.this_month_sa_qty AS thisMonthSaQty, + ROUND(tbl_lgbsa.this_month_sa_money / 10000, 2) AS this_month_sa_money, -- 本月销售金额(元) + ROUND(tbl_lgbsa.this_month_cost / 10000, 2) AS this_month_cost, + ROUND(tbl_lgbsa.this_month_profit / 10000, 2) AS this_month_profit, + tbl_lgbsa.last_month_sa_qty as last_month_sa_qty, + ROUND(tbl_lgbsa.last_month_sa_money / 10000, 2) as last_month_sa_money, + ROUND(tbl_lgbsa.last_month_profit / 10000, 2) as last_month_profit, + ROUND(tbl_lgbsa.last_month_cost / 10000, 2) as last_month_cost, + ROUND(tbl_lgbsa.yoy_month_sa_qty/ 10000, 2) as yoy_month_sa_qty, + ROUND(tbl_lgbsa.yoy_month_sa_money / 10000, 2) as yoy_month_sa_money, + ROUND(tbl_lgbsa.yoy_month_profit / 10000, 2) as yoy_month_profit, + ROUND(tbl_lgbsa.yoy_month_cost / 10000, 2) as yoy_month_cost, + CONCAT(ROUND((SELECT SUM(MONTHSAQTY) FROM yunji_gr_bi_sa_agg)/100000000 ,2), '亿') AS monthsaqty_s, + CONCAT(ROUND((SELECT SUM(THISSAQTY) FROM yunji_gr_bi_sa_agg)/100000000 ,2), '亿') AS thissaqty_s, + CONCAT(ROUND((SELECT SUM(LASTSAQTY) FROM yunji_gr_bi_sa_agg)/100000000 ,2), '亿') AS lastsaqty_s, + -- 原本带CAST的字段,简化写法(CONCAT会自动转为字符串) + CONCAT(ROUND((SELECT SUM(MONTHSAMONEY) FROM yunji_gr_bi_sa_agg)/100000000 ,2), '亿') AS monthsamoney_s, + CONCAT(ROUND((SELECT SUM(THISSAMONEY) FROM yunji_gr_bi_sa_agg)/100000000,2), '亿') AS thissamoney_s, + CONCAT(ROUND((SELECT SUM(LASTSAMONEY) FROM yunji_gr_bi_sa_agg)/100000000,2), '亿') AS lastsamoney_s, + CASE + WHEN (CASE WHEN tbl_lgbsa.yoy_month_sa_qty = 0 THEN IF(tbl_lgbsa.this_month_sa_qty > 0, 100, 0) + ELSE (tbl_lgbsa.this_month_sa_qty - tbl_lgbsa.yoy_month_sa_qty) / tbl_lgbsa.yoy_month_sa_qty * 100 END) > 0 THEN + CONCAT('🟢 ', ROUND((CASE WHEN tbl_lgbsa.yoy_month_sa_qty = 0 THEN IF(tbl_lgbsa.this_month_sa_qty > 0, 100, 0) + ELSE (tbl_lgbsa.this_month_sa_qty - tbl_lgbsa.yoy_month_sa_qty) / tbl_lgbsa.yoy_month_sa_qty * 100 END), 2)) + WHEN (CASE WHEN tbl_lgbsa.yoy_month_sa_qty = 0 THEN IF(tbl_lgbsa.this_month_sa_qty > 0, 100, 0) + ELSE (tbl_lgbsa.this_month_sa_qty - tbl_lgbsa.yoy_month_sa_qty) / tbl_lgbsa.yoy_month_sa_qty * 100 END)<0 THEN + CONCAT('🔴 ', ROUND((CASE WHEN tbl_lgbsa.yoy_month_sa_qty = 0 THEN IF(tbl_lgbsa.this_month_sa_qty > 0, 100, 0) + ELSE (tbl_lgbsa.this_month_sa_qty - tbl_lgbsa.yoy_month_sa_qty) / tbl_lgbsa.yoy_month_sa_qty * 100 END), 2)) + ELSE '0.00' + END AS monthsaqty_yoy, + + -- 数量同比(原有) + CASE + WHEN (CASE WHEN tbl_lgbsa.yoy_month_sa_money = 0 THEN IF(tbl_lgbsa.this_month_sa_money > 0, 100, 0) + ELSE (tbl_lgbsa.this_month_sa_money - tbl_lgbsa.yoy_month_sa_money) / tbl_lgbsa.yoy_month_sa_money * 100 END) > 0 THEN + CONCAT('🟢 ', ROUND((CASE WHEN tbl_lgbsa.yoy_month_sa_money = 0 THEN IF(tbl_lgbsa.this_month_sa_money > 0, 100, 0) + ELSE (tbl_lgbsa.this_month_sa_money - tbl_lgbsa.yoy_month_sa_money) / tbl_lgbsa.yoy_month_sa_money * 100 END), 2)) + WHEN (CASE WHEN tbl_lgbsa.yoy_month_sa_money = 0 THEN IF(tbl_lgbsa.this_month_sa_money > 0, 100, 0) + ELSE (tbl_lgbsa.this_month_sa_money - tbl_lgbsa.yoy_month_sa_money) / tbl_lgbsa.yoy_month_sa_money * 100 END)<0 THEN + CONCAT('🔴 ', ROUND((CASE WHEN tbl_lgbsa.yoy_month_sa_money = 0 THEN IF(tbl_lgbsa.this_month_sa_money > 0, 100, 0) + ELSE (tbl_lgbsa.this_month_sa_money - tbl_lgbsa.yoy_month_sa_money) / tbl_lgbsa.yoy_month_sa_money * 100 END), 2)) + ELSE '0.00' + END AS monthsamoney_yoy, + CASE WHEN (CASE WHEN tbl_lgbsa.yoy_month_profit = 0 THEN IF(tbl_lgbsa.yoy_month_profit > 0, 100, 0) + ELSE (tbl_lgbsa.yoy_month_profit - tbl_lgbsa.yoy_month_profit) / tbl_lgbsa.yoy_month_profit * 100 END) > 0 THEN + CONCAT('🟢 ', ROUND((CASE WHEN tbl_lgbsa.yoy_month_profit = 0 THEN IF(tbl_lgbsa.yoy_month_profit > 0, 100, 0) + ELSE (tbl_lgbsa.yoy_month_profit - tbl_lgbsa.yoy_month_profit) / tbl_lgbsa.yoy_month_profit * 100 END), 2)) + WHEN (CASE WHEN tbl_lgbsa.yoy_month_profit = 0 THEN IF(tbl_lgbsa.yoy_month_profit > 0, 100, 0) + ELSE (tbl_lgbsa.yoy_month_profit - tbl_lgbsa.yoy_month_profit) / tbl_lgbsa.yoy_month_profit * 100 END)<0 THEN + CONCAT('🔴 ', ROUND((CASE WHEN tbl_lgbsa.yoy_month_profit = 0 THEN IF(tbl_lgbsa.yoy_month_profit > 0, 100, 0) + ELSE (tbl_lgbsa.yoy_month_profit - tbl_lgbsa.yoy_month_profit) / tbl_lgbsa.yoy_month_profit * 100 END), 2)) + ELSE '0.00' + END AS monthprofit_yoy, + CASE + WHEN (CASE WHEN tbl_lgbsa.last_month_sa_money = 0 THEN IF(tbl_lgbsa.this_month_sa_money > 0, 100, 0) + ELSE (tbl_lgbsa.this_month_sa_money - tbl_lgbsa.last_month_sa_money) / tbl_lgbsa.last_month_sa_money * 100 END) > 0 THEN + CONCAT('🟢 ', ROUND((CASE WHEN tbl_lgbsa.last_month_sa_money = 0 THEN IF(tbl_lgbsa.this_month_sa_money > 0, 100, 0) + ELSE (tbl_lgbsa.this_month_sa_money - tbl_lgbsa.last_month_sa_money) / tbl_lgbsa.last_month_sa_money * 100 END), 2)) + WHEN (CASE WHEN tbl_lgbsa.last_month_sa_money = 0 THEN IF(tbl_lgbsa.this_month_sa_money > 0, 100, 0) + ELSE (tbl_lgbsa.this_month_sa_money - tbl_lgbsa.last_month_sa_money) / tbl_lgbsa.last_month_sa_money * 100 END)<0 THEN + CONCAT('🔴 ', ROUND((CASE WHEN tbl_lgbsa.last_month_sa_money = 0 THEN IF(tbl_lgbsa.this_month_sa_money > 0, 100, 0) + ELSE (tbl_lgbsa.this_month_sa_money - tbl_lgbsa.last_month_sa_money) / tbl_lgbsa.last_month_sa_money * 100 END), 2)) + ELSE '0.00' + END AS lastMonthSaMoney_yoy, -- 本月销售金额增长率 + ROUND(tbl_lgbsa.this_month_profit_rate * 100, 2) AS this_month_sa_money_share, + ROUND(tbl_lgbsa.this_month_sa_money_share * 100, 2) AS this_month_profit_share + FROM + new_gr_bi_sa_agg tbl_lgbsa + and use_year = #{useYear} and use_month = #{useMonth} - and zone_id = #{zoneId} - and zone_name like concat('%', #{zoneName}, '%') - and sale_type_id = #{saleTypeId} - and sale_type_name like concat('%', #{saleTypeName}, '%') - and custom_id = #{customId} - and custom_name like concat('%', #{customName}, '%') - and dosage_id = #{dosageId} - and dosage_name like concat('%', #{dosageName}, '%') - and goods_id = #{goodsId} - and goods_name like concat('%', #{goodsName}, '%') - and province_id = #{provinceId} - and province_name like concat('%', #{provinceName}, '%') - and saler_id = #{salerId} - and saler_name like concat('%', #{salerName}, '%') - and this_month_sa_qty = #{thisMonthSaQty} - and this_month_sa_money = #{thisMonthSaMoney} - and this_month_cost = #{thisMonthCost} - and this_month_profit = #{thisMonthProfit} + + and zone_name in + + #{name} + + + + and sale_type_name in + + #{name} + + + + and custom_name in + + #{name} + + + + and dosage_name in + + #{name} + + + + and goods_name in + + #{name} + + + + and province_name in + + #{name} + + + + and saler_name in + + #{name} + + + + and std_goods_name in + + #{name} + + + + + +