diff --git a/lidee-core/pom.xml b/lidee-core/pom.xml index 4719287..a899d1c 100644 --- a/lidee-core/pom.xml +++ b/lidee-core/pom.xml @@ -97,5 +97,10 @@ orai18n 21.1.0.0 + + com.github.pagehelper + pagehelper-spring-boot-starter + 1.4.7 + 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 index b0af378..8013d8a 100644 --- 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 @@ -8,5 +8,5 @@ import com.lideeyunji.tool.framework.yunji.model.ResultDataModel; */ public interface ReportAroundAdvicePlugin extends ReportBaseAdvicePlugin { - ResultDataModel executeAround(EnhanceReportContext enhanceContext); + Object 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 35df8e0..bca84b8 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 @@ -40,7 +40,7 @@ public class ReportPluginManager { plugin.execute(enhanceContext); } - public static ResultDataModel executeAroundPlugin(String name, EnhanceReportContext enhanceContext) { + public static Object executeAroundPlugin(String name, EnhanceReportContext enhanceContext) { ReportAroundAdvicePlugin plugin = (ReportAroundAdvicePlugin)plugins.get(name); return plugin.executeAround(enhanceContext); } 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 79461c7..d56e961 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 @@ -1,13 +1,19 @@ package com.lideeyunji.core.framework.enhance.example.report.xtsy; +import cn.hutool.core.bean.BeanUtil; +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.service.INewGrBiSaAggMonthCountService; import com.lideeyunji.core.framework.service.INewGrBiSaAggService; 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; @@ -15,6 +21,7 @@ import org.springframework.stereotype.Component; import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 报表-系统首页-单表 @@ -25,6 +32,8 @@ public class zhxsqkPlugin implements ReportAroundAdvicePlugin { @Autowired INewGrBiSaAggService newGrBiSaAggService; + @Autowired + INewGrBiSaAggMonthCountService newGrBiSaAggMonthCountService; @Override public ResultDataModel executeAround(EnhanceReportContext enhanceContext) { @@ -36,11 +45,17 @@ public class zhxsqkPlugin implements ReportAroundAdvicePlugin { throw new lideeYunJiException("在选择维度时,“货品名称”不能有值!"); } List groupFieldList = Arrays.asList(params.get("Group by").toString().split(",")); - List newGrBiSaAggList = newGrBiSaAggService.selectNewGrBiSaAggGroupMonthList(params, groupFieldList); -// return ResultDataModel.fomatList(newGrBiSaAggList); + PageHelper.startPage(Integer.parseInt(params.get("pageNo").toString()), Integer.parseInt(params.get("pageSize").toString())); + List newGrBiSaAggList = newGrBiSaAggMonthCountService.selectNewGrBiSaAggGroupMonthList(params, groupFieldList); + PageInfo pageInfo = new PageInfo<>(newGrBiSaAggList); + List> list = newGrBiSaAggList.stream().map(newGrBiSaAgg -> BeanUtil.beanToMap(newGrBiSaAgg)).collect(Collectors.toList()); + return ResultDataModel.fomat(pageInfo.getTotal(),list); }else { - newGrBiSaAggService.selectNewGrBiSaAggList(params); + PageHelper.startPage(Integer.parseInt(params.get("pageNo").toString()), Integer.parseInt(params.get("pageSize").toString())); + List newGrBiSaAggList = newGrBiSaAggService.selectNewGrBiSaAggList(params); + PageInfo pageInfo = new PageInfo<>(newGrBiSaAggList); + List> list = newGrBiSaAggList.stream().map(newGrBiSaAgg -> BeanUtil.beanToMap(newGrBiSaAgg)).collect(Collectors.toList()); + return ResultDataModel.fomat(pageInfo.getTotal(),list); } - return null; } } diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/NewGrBiSaAgg.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/NewGrBiSaAgg.java index 907a4f6..5fd18ea 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/NewGrBiSaAgg.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/NewGrBiSaAgg.java @@ -74,7 +74,7 @@ public class NewGrBiSaAgg implements Serializable @TableField(value = "province_id") - private Long provinceId; + private String provinceId; @TableField(value = "province_name") 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 7356f1d..1b92847 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 @@ -27,6 +27,10 @@ public class NewGrBiSaAggMonthCount implements Serializable private String useYear; + @TableField(value = "ny") + private String ny; + + @TableField(value = "use_month") private Long useMonth; @@ -67,7 +71,7 @@ public class NewGrBiSaAggMonthCount implements Serializable @TableField(value = "province_id") - private Long provinceId; + private String provinceId; @TableField(value = "province_name") @@ -156,5 +160,19 @@ public class NewGrBiSaAggMonthCount implements Serializable @TableField(value = "thisprofit_s") private BigDecimal thisMonthProfit_s; + @TableField(value = "monthsaqty_yoy") + private String monthsaqty_yoy; + + @TableField(value = "monthsamoney_yoy") + private String monthsamoney_yoy; + + @TableField(value = "lastMonthSaMoney_yoy") + private String lastMonthSaMoney_yoy; + + @TableField(value = "this_month_cost_yoy") + private String this_month_cost_yoy; + + @TableField(value = "monthprofit_yoy") + private String monthprofit_yoy; } 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 792e4b5..cf9a33c 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 @@ -3,10 +3,13 @@ package com.lideeyunji.core.framework.mapper; import java.util.List; import java.util.Map; +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; 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 com.lideeyunji.tool.framework.permission.core.annotation.DataPermission; import org.apache.ibatis.annotations.Param; /** @@ -66,14 +69,9 @@ public interface NewGrBiSaAggMapper extends BaseMapper * @param saAggParam 综合销售情况明细参数 * @return 综合销售情况明细集合 */ - 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); + @DataPermission(enable = false) + @DS(value = "#dataSourceType") + public List selectNewGrBiSaAggList(@Param("dataSourceType") String dataSourceType,@Param("saAggParam")SaAggParam saAggParam); /** * 新增综合销售情况明细 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 bc30432..c91ad35 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,11 +1,14 @@ 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.params.SaAggParam; +import com.lideeyunji.tool.framework.permission.core.annotation.DataPermission; import org.apache.ibatis.annotations.Param; /** @@ -66,4 +69,15 @@ public interface NewGrBiSaAggMonthCountMapper extends BaseMapper getTotalDetail(@Param("dataSourceType") String dataSourceType, @Param("saAggParam") SaAggParam saAggParam); + + /** + * 批量查询综合销售情况明细列表 -月度 + * + * @param saAggParam 综合销售情况明细参数 + * @return 综合销售情况明细集合 + */ + @DataPermission(enable = false) + @DS(value = "#dataSourceType") + public List selectNewGrBiSaAggGroupMonthList(@Param("dataSourceType") String dataSourceType, @Param("saAggParam") SaAggParam saAggParam, @Param("params") Map params, @Param("groupFieldList")List groupFieldList); + } 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 16f646d..8184d32 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,6 +1,9 @@ package com.lideeyunji.core.framework.service; 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; @@ -61,4 +64,8 @@ public interface INewGrBiSaAggMonthCountService public int deleteNewGrBiSaAggMonthCountById(Long id); List getTotalDetail(SaAggParam saAggParam); + + + public List selectNewGrBiSaAggGroupMonthList(Map params, 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 a54329b..ccb9d3b 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 @@ -32,8 +32,6 @@ public interface INewGrBiSaAggService */ 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/NewGrBiSaAggMonthCountServiceImpl.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/NewGrBiSaAggMonthCountServiceImpl.java index c14cdc5..799a353 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 @@ -2,7 +2,10 @@ 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.params.SaAggParam; import com.lideeyunji.tool.framework.common.constant.lideeYunJiBaseConstant; import org.springframework.stereotype.Service; @@ -91,8 +94,14 @@ public class NewGrBiSaAggMonthCountServiceImpl extends ServiceImpl getTotalDetail(SaAggParam saAggParam) { return this.baseMapper.getTotalDetail(lideeYunJiBaseConstant.DS_ERP_BI_DATA, saAggParam); } + + + @Override + public List selectNewGrBiSaAggGroupMonthList(Map params, List groupFieldList){ + SaAggParam saAggParam = NewGrBiSaAggServiceImpl.createParam(params); + return this.baseMapper.selectNewGrBiSaAggGroupMonthList(lideeYunJiBaseConstant.DS_ERP_BI_DATA, saAggParam,params, 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 61d4a59..9bda86e 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 @@ -9,11 +9,14 @@ import cn.hutool.core.collection.CollUtil; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.annotation.DSTransactional; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.plugins.IgnoreStrategy; +import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper; 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 com.lideeyunji.tool.framework.common.constant.lideeYunJiBaseConstant; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Service; @@ -138,15 +141,11 @@ public class NewGrBiSaAggServiceImpl extends ServiceImpl selectNewGrBiSaAggList(Map params) { SaAggParam saAggParam = createParam(params); - return this.baseMapper.selectNewGrBiSaAggList(saAggParam); + return this.baseMapper.selectNewGrBiSaAggList(lideeYunJiBaseConstant.DS_ERP_BI_DATA, saAggParam); } - public List selectNewGrBiSaAggGroupMonthList(Map params, List groupFieldList){ - SaAggParam saAggParam = createParam(params); - return this.baseMapper.selectNewGrBiSaAggGroupMonthList(saAggParam,params, groupFieldList); - } - private SaAggParam createParam(Map params) { + public static SaAggParam createParam(Map params) { SaAggParam saAggParam = new SaAggParam(); if (params.containsKey("useyear")) { saAggParam.setUseYear(params.get("useyear").toString()); diff --git a/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMapper.xml b/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMapper.xml index 1bbc865..2fdf000 100644 --- a/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMapper.xml +++ b/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMapper.xml @@ -654,489 +654,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - + select + + current_month.use_month , + + + current_month.use_year, + current_month.use_year as ny, #年月 + + + LPAD(current_month.use_month, 2, '0') as ny, + + + + + current_month.custom_id, + current_month.custom_name, #客户名称 + + + current_month.zone_id, + current_month.zone_name, + + + current_month.sale_type_id, + current_month.sale_type_name, + + + current_month.saler_id, + current_month.saler_name, #业务员 + + + current_month.dosage_id, + current_month.dosage_name, #剂型 + + + current_month.std_goods_name, + + current_month.this_month_sa_qty AS this_month_sa_qty, #本月销售数量(件) + ROUND(current_month.this_month_sa_money / 10000, 2) AS this_month_sa_money, #本月销售金额(元) + ROUND(current_month.this_month_profit / 10000, 2) AS this_month_profit, #本月毛利额(元) + ROUND(current_month.this_month_cost / 10000, 2) AS this_month_cost, #本月成本(元) + last_month_data.last_month_sa_qty AS last_month_sa_qty, #上月销售数量(件) + ROUND(last_month_data.last_month_sa_money / 10000, 2) AS last_month_sa_money, #上月销售金额(元) + ROUND(last_month_data.last_month_profit / 10000, 2) AS last_month_profit, #上月毛利额(元) + ROUND(last_month_data.last_month_cost / 10000, 2) AS last_month_cost, #上月成本(元) + ROUND(yoy_month.yoy_month_sa_qty / 10000, 2) AS yoy_month_sa_qty, #同比月销售数量(件) + ROUND(yoy_month.yoy_month_sa_money / 10000, 2) AS yoy_month_sa_money, #同比月销售金额(元) + ROUND(yoy_month.yoy_month_profit / 10000, 2) AS yoy_month_profit, #同比月毛利额(元) + ROUND(yoy_month.yoy_month_cost / 10000, 2) AS yoy_month_cost, #同比月成本(元) +# current_month.province_id AS province_id, #行政区域ID +# current_month.province_name AS province_name, #行政区域名称 + CASE WHEN (CASE WHEN yoy_month.yoy_month_sa_qty = 0 THEN IF(current_month.this_month_sa_qty > 0, 100, 0) + ELSE (current_month.this_month_sa_qty - yoy_month.yoy_month_sa_qty) / yoy_month.yoy_month_sa_qty * 100 END) > 0 THEN + CONCAT('🟢 ', ROUND((CASE WHEN yoy_month.yoy_month_sa_qty = 0 THEN IF(current_month.this_month_sa_qty > 0, 100, 0) + ELSE (current_month.this_month_sa_qty - yoy_month.yoy_month_sa_qty) / yoy_month.yoy_month_sa_qty * 100 END), 2)) + WHEN (CASE WHEN yoy_month.yoy_month_sa_qty = 0 THEN IF(current_month.this_month_sa_qty > 0, 100, 0) + ELSE (current_month.this_month_sa_qty - yoy_month.yoy_month_sa_qty) / yoy_month.yoy_month_sa_qty * 100 END)<0 THEN + CONCAT('🔴 ', ROUND((CASE WHEN yoy_month.yoy_month_sa_qty = 0 THEN IF(current_month.this_month_sa_qty > 0, 100, 0) + ELSE (current_month.this_month_sa_qty - yoy_month.yoy_month_sa_qty) / yoy_month.yoy_month_sa_qty * 100 END), 2)) + END AS monthsaqty_yoy, #本月销量同比 + + CASE WHEN (CASE WHEN yoy_month.yoy_month_sa_money = 0 THEN IF(current_month.this_month_sa_money > 0, 100, 0) + ELSE (current_month.this_month_sa_money - yoy_month.yoy_month_sa_money) / yoy_month.yoy_month_sa_money * 100 END) > 0 THEN + CONCAT('🟢 ', ROUND((CASE WHEN yoy_month.yoy_month_sa_money = 0 THEN IF(current_month.this_month_sa_money > 0, 100, 0) + ELSE (current_month.this_month_sa_money - yoy_month.yoy_month_sa_money) / yoy_month.yoy_month_sa_money * 100 END), 2)) + WHEN (CASE WHEN yoy_month.yoy_month_sa_money = 0 THEN IF(current_month.this_month_sa_money > 0, 100, 0) + ELSE (current_month.this_month_sa_money - yoy_month.yoy_month_sa_money) / yoy_month.yoy_month_sa_money * 100 END)<0 THEN + CONCAT('🔴 ', ROUND((CASE WHEN yoy_month.yoy_month_sa_money = 0 THEN IF(current_month.this_month_sa_money > 0, 100, 0) + ELSE (current_month.this_month_sa_money - yoy_month.yoy_month_sa_money) / yoy_month.yoy_month_sa_money * 100 END), 2)) + ELSE '0.00' + END AS monthsamoney_yoy, #本月销售金额同比 + + CASE WHEN (CASE WHEN last_month_data.last_month_sa_money = 0 THEN IF(current_month.this_month_sa_money > 0, 100, 0) + ELSE (current_month.this_month_sa_money - last_month_data.last_month_sa_money) / last_month_data.last_month_sa_money * 100 END) > 0 THEN + CONCAT('🟢 ', ROUND((CASE WHEN last_month_data.last_month_sa_money = 0 THEN IF(current_month.this_month_sa_money > 0, 100, 0) + ELSE (current_month.this_month_sa_money - last_month_data.last_month_sa_money) / last_month_data.last_month_sa_money * 100 END), 2)) + WHEN (CASE WHEN last_month_data.last_month_sa_money = 0 THEN IF(current_month.this_month_sa_money > 0, 100, 0) + ELSE (current_month.this_month_sa_money - last_month_data.last_month_sa_money) / last_month_data.last_month_sa_money * 100 END)<0 THEN + CONCAT('🔴 ', ROUND((CASE WHEN last_month_data.last_month_sa_money = 0 THEN IF(current_month.this_month_sa_money > 0, 100, 0) + ELSE (current_month.this_month_sa_money - last_month_data.last_month_sa_money) / last_month_data.last_month_sa_money * 100 END), 2)) + ELSE '0.00' + END AS lastMonthSaMoney_yoy, #本月销售金额增长率 + + CASE WHEN (CASE WHEN yoy_month.yoy_month_cost = 0 THEN IF(current_month.this_month_cost > 0, 100, 0) + ELSE (current_month.this_month_cost - yoy_month.yoy_month_cost) / yoy_month.yoy_month_cost * 100 END) > 0 THEN + CONCAT('🟢 ', ROUND((CASE WHEN yoy_month.yoy_month_cost = 0 THEN IF(current_month.this_month_cost > 0, 100, 0) + ELSE (current_month.this_month_cost - yoy_month.yoy_month_cost) / yoy_month.yoy_month_cost * 100 END), 2)) + WHEN (CASE WHEN yoy_month.yoy_month_cost = 0 THEN IF(current_month.this_month_cost > 0, 100, 0) + ELSE (current_month.this_month_cost - yoy_month.yoy_month_cost) / yoy_month.yoy_month_cost * 100 END)<0 THEN + CONCAT('🔴 ', ROUND((CASE WHEN yoy_month.yoy_month_cost = 0 THEN IF(current_month.this_month_cost > 0, 100, 0) + ELSE (current_month.this_month_cost - yoy_month.yoy_month_cost) / yoy_month.yoy_month_cost * 100 END), 2)) + ELSE '0.00' + END AS this_month_cost_yoy, #本月销售成本同比 + + CASE WHEN (CASE WHEN yoy_month.yoy_month_profit = 0 THEN IF(current_month.this_month_profit > 0, 100, 0) + ELSE (current_month.this_month_profit - yoy_month.yoy_month_profit) / yoy_month.yoy_month_profit * 100 END) > 0 THEN + CONCAT('🟢 ', ROUND((CASE WHEN yoy_month.yoy_month_profit = 0 THEN IF(current_month.this_month_profit > 0, 100, 0) + ELSE (current_month.this_month_profit - yoy_month.yoy_month_profit) / yoy_month.yoy_month_profit * 100 END), 2)) + WHEN (CASE WHEN yoy_month.yoy_month_profit = 0 THEN IF(current_month.this_month_profit > 0, 100, 0) + ELSE (current_month.this_month_profit - yoy_month.yoy_month_profit) / yoy_month.yoy_month_profit * 100 END)<0 THEN + CONCAT('🔴 ', ROUND((CASE WHEN yoy_month.yoy_month_profit = 0 THEN IF(current_month.this_month_profit > 0, 100, 0) + ELSE (current_month.this_month_profit - yoy_month.yoy_month_profit) / yoy_month.yoy_month_profit * 100 END), 2)) + ELSE '0.00' + END AS monthprofit_yoy, #本月毛利同比 + + COALESCE (ROUND( current_month.this_month_sa_money/total_month_data.this_month_sa_money_sum * 100, 2), 0 ) as this_month_sa_money_share, #本月销售金额占比 + COALESCE (ROUND( current_month.this_month_profit/total_month_data.this_month_profit_sum * 100, 2), 0 ) as this_month_profit_share #本月毛利额占比 + FROM ( SELECT + + use_year, + + use_month, + # 客户名称 + custom_id, + custom_name , + + + + std_goods_name, + + + #业务区域 + zone_id, + zone_name, + + #销售类型 + sale_type_id, + sale_type_name, + + + dosage_id, + dosage_name, + + + + saler_id, + saler_name, + + CONCAT(MAX(use_year), LPAD(MAX(use_month), 2, '0')) AS ny, +# GROUP_CONCAT(DISTINCT province_id ORDER BY province_id SEPARATOR ',') AS province_id, +# GROUP_CONCAT(DISTINCT province_name ORDER BY province_name SEPARATOR ',') AS province_name, + sum(this_month_sa_qty) AS this_month_sa_qty, + sum(this_month_sa_money) AS this_month_sa_money, + sum(this_month_cost) AS this_month_cost, + sum(this_month_profit) AS this_month_profit + FROM + new_gr_bi_sa_agg_month_count + + and use_year = #{saAggParam.useYear} + and use_month = #{saAggParam.useMonth} + 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} + + + + GROUP BY + + + use_year, + + use_month, + # 客户名称 + custom_id, + custom_name , + + # 标准品名 + std_goods_name, + + #业务区域 + zone_id, + zone_name, + + #销售类型 + sale_type_id, + sale_type_name, + + #剂型 + dosage_id, + dosage_name, + + #业务员 + saler_id, + saler_name, + + + ) AS current_month # current_month 本月数据 + LEFT JOIN ( + SELECT + + use_year, + + use_month, + # 客户名称 + custom_id, + + # 标准品名 + std_goods_name, + + #业务区域 + zone_id, + + #销售类型 + sale_type_id, + + #剂型 + dosage_id, + + #业务员 + saler_id, + + SUM(this_month_sa_qty) AS last_month_sa_qty, + SUM(this_month_sa_money) AS last_month_sa_money, + SUM(this_month_cost) AS last_month_cost, + SUM(this_month_profit) AS last_month_profit + FROM new_gr_bi_sa_agg_month_count + GROUP BY + + + use_year, + + use_month, + # 客户名称 + custom_id, + + # 标准品名 + std_goods_name, + + #业务区域 + zone_id, + + #销售类型 + sale_type_id, + + #剂型 + dosage_id, + + #业务员 + saler_id, + + + ) AS last_month_data # last_month_data 上月数据 + ON last_month_data.use_month = IF(current_month.use_month = 1, 12, current_month.use_month - 1) + + AND last_month_data.use_year = current_month.use_year - (current_month.use_month = 1) + + # 客户名称 + AND current_month.custom_id = last_month_data.custom_id + + # 标准品名 + AND current_month.std_goods_name = last_month_data.std_goods_name + + #业务区域 + AND current_month.zone_id = last_month_data.zone_id + + #销售类型 + AND current_month.sale_type_id = last_month_data.sale_type_id + + #剂型 + AND current_month.dosage_id = last_month_data.dosage_id + + # if (groupFieldList.contains('salername') || params.containsKey('salername')) { + #业务员 + AND current_month.saler_id = last_month_data.saler_id + + LEFT JOIN ( + SELECT + + use_year, + + use_month, + # 客户名称 + custom_id, + + # 标准品名 + std_goods_name, + + #业务区域 + zone_id, + + #销售类型 + sale_type_id, + + #剂型 + dosage_id, + + #业务员 + saler_id, + + SUM(this_month_sa_qty) AS yoy_month_sa_qty, # 同比月销量 + SUM(this_month_sa_money) AS yoy_month_sa_money, # 同比月销售金额 + SUM(this_month_cost) as yoy_month_cost, # 同比月销售成本 + SUM(this_month_profit) AS yoy_month_profit # 同比月毛利额 + FROM new_gr_bi_sa_agg_month_count + + and use_year = #{saAggParam.useYear} + and use_month = #{saAggParam.useMonth} + 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} + + + + GROUP BY + + + use_year, + + use_month, + # 客户名称 + custom_id, + + # 标准品名 + std_goods_name, + + #业务区域 + zone_id, + + #销售类型 + sale_type_id, + + #剂型 + dosage_id, + + #业务员 + saler_id, + + + ) yoy_month ON + + + + and yoy_month.use_year = current_month.use_year - 1 # 同比月数据 + + and yoy_month.use_month = current_month.use_month + # 客户名称 + AND yoy_month.custom_id = current_month.custom_id + + # 标准品名 + AND yoy_month.std_goods_name = current_month.std_goods_name + + #业务区域 + AND yoy_month.zone_id = current_month.zone_id + + #销售类型 + AND yoy_month.sale_type_id = current_month.sale_type_id + + #剂型 + AND yoy_month.dosage_id = current_month.dosage_id + + #业务员 + AND yoy_month.saler_id = current_month.saler_id + + + + LEFT JOIN ( + SELECT + use_year, + SUM( this_month_sa_money ) AS this_month_sa_money_sum, + SUM(this_month_profit) AS this_month_profit_sum + FROM new_gr_bi_sa_agg + GROUP BY + use_year + ) total_month_data ON total_month_data.use_year = current_month.use_year + + and current_month.use_year = #{saAggParam.useYear} + and current_month.use_month = #{saAggParam.useMonth} + and current_month.zone_name in + + #{name} + + + and current_month.sale_type_name in + + #{name} + + + and current_month.custom_name in + + #{name} + + + and current_month.dosage_name in + + #{name} + + + and current_month.goods_name in + + #{name} + + + and current_month.province_name in + + #{name} + + + and current_month.saler_name in + + #{name} + + + + and current_month.std_goods_name in + + #{name} + + + + + \ No newline at end of file