From c5078d59fce1375888f2aad4990fe5cff69f9eba Mon Sep 17 00:00:00 2001 From: king Date: Wed, 25 Mar 2026 12:44:21 +0800 Subject: [PATCH 01/20] =?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=20=E8=B0=83=E6=95=B4=E6=9C=88?= =?UTF-8?q?=E5=BA=A6,=E5=B9=B4=E5=BA=A6=20=E6=8A=A5=E8=A1=A8=E6=95=B0?= =?UTF-8?q?=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} + + + + + + From 7199ef04f5bbd39612aafbfbdc6bf88859f16150 Mon Sep 17 00:00:00 2001 From: king Date: Wed, 25 Mar 2026 15:05:39 +0800 Subject: [PATCH 02/20] =?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=20=E8=B0=83=E6=95=B4=E6=9C=88?= =?UTF-8?q?=E5=BA=A6,=E5=B9=B4=E5=BA=A6=20=E6=8A=A5=E8=A1=A8=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lidee-core/pom.xml | 5 + .../plugin/ReportAroundAdvicePlugin.java | 2 +- .../plugin/ReportPluginManager.java | 2 +- .../example/report/xtsy/zhxsqkPlugin.java | 23 +- .../core/framework/entity/NewGrBiSaAgg.java | 2 +- .../entity/NewGrBiSaAggMonthCount.java | 20 +- .../framework/mapper/NewGrBiSaAggMapper.java | 14 +- .../mapper/NewGrBiSaAggMonthCountMapper.java | 14 + .../INewGrBiSaAggMonthCountService.java | 7 + .../service/INewGrBiSaAggService.java | 2 - .../NewGrBiSaAggMonthCountServiceImpl.java | 11 +- .../service/impl/NewGrBiSaAggServiceImpl.java | 11 +- .../mapper/framework/NewGrBiSaAggMapper.xml | 483 ----------------- .../NewGrBiSaAggMonthCountMapper.xml | 490 ++++++++++++++++++ 14 files changed, 578 insertions(+), 508 deletions(-) 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 From 27714c3d23a866ad186aae5183053e2958ccaf97 Mon Sep 17 00:00:00 2001 From: king Date: Wed, 25 Mar 2026 16:11:53 +0800 Subject: [PATCH 03/20] =?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=20=E8=B0=83=E6=95=B4=E6=9C=88?= =?UTF-8?q?=E5=BA=A6,=E5=B9=B4=E5=BA=A6=20=E6=8A=A5=E8=A1=A8=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/report/xtsy/zhxsqkPlugin.java | 4 +- .../NewGrBiSaAggMonthCountMapper.xml | 159 +++++++++--------- 2 files changed, 79 insertions(+), 84 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 d56e961..7a70464 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 @@ -48,13 +48,13 @@ public class zhxsqkPlugin implements ReportAroundAdvicePlugin { 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()); + List> list = newGrBiSaAggList.stream().map(BeanUtil::beanToMap).collect(Collectors.toList()); return ResultDataModel.fomat(pageInfo.getTotal(),list); }else { 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()); + List> list = newGrBiSaAggList.stream().map(BeanUtil::beanToMap).collect(Collectors.toList()); return ResultDataModel.fomat(pageInfo.getTotal(),list); } } diff --git a/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMonthCountMapper.xml b/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMonthCountMapper.xml index 7bde795..80c46dc 100644 --- a/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMonthCountMapper.xml +++ b/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMonthCountMapper.xml @@ -248,12 +248,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + select - + current_month.use_month , - + current_month.use_year, current_month.ny as ny, @@ -260,23 +260,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + 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, @@ -352,11 +352,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 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 , @@ -365,20 +365,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" std_goods_name, - + zone_id, zone_name, - + sale_type_id, sale_type_name, - + dosage_id, dosage_name, - + saler_id, saler_name, @@ -436,30 +436,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 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, @@ -467,26 +467,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ) AS 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, @@ -496,74 +496,74 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 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 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 - + 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, @@ -618,52 +618,52 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 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 diff --git a/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggYearCountMapper.xml b/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggYearCountMapper.xml index 8dc3fbd..86154c0 100644 --- a/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggYearCountMapper.xml +++ b/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggYearCountMapper.xml @@ -7,6 +7,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -39,6 +40,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + @@ -71,13 +76,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{field} - - - - - - - + SELECT + current_year_data.use_year, + + current_year_data.ny as ny, + + + current_year_data.custom_id, + current_year_data.custom_name, + + + current_year_data.zone_id, + current_year_data.zone_name, + + + current_year_data.sale_type_id, + current_year_data.sale_type_name, + + + current_year_data.saler_id, + current_year_data.saler_name, + + + current_year_data.dosage_id, + current_year_data.dosage_name, + + + current_year_data.std_goods_name, + + + current_year_data.this_year_sa_qty AS this_year_sa_qty, + ROUND(current_year_data.this_year_sa_money / 10000, 2) AS this_year_sa_money, + ROUND(current_year_data.this_year_profit / 10000, 2) AS this_year_profit, + ROUND(current_year_data.this_year_cost / 10000, 2) AS this_year_cost, + last_year_data.last_year_sa_qty AS last_year_sa_qty, + ROUND(last_year_data.last_year_sa_money / 10000, 2) AS last_year_sa_money, + ROUND(last_year_data.last_year_profit / 10000, 2) AS last_year_profit, + ROUND(last_year_data.last_year_cost / 10000, 2) AS last_year_cost, + + COALESCE(ROUND(current_year_data.this_year_sa_money / total_year_data.this_year_sa_money_sum * 100, 2), 0) AS this_year_sa_money_share, + COALESCE (ROUND(current_year_data.this_year_profit/total_year_data.this_year_profit_sum * 100, 2), 0 ) as thisprofitshare, + CASE + WHEN (CASE WHEN last_year_data.last_year_sa_qty = 0 THEN IF(current_year_data.this_year_sa_qty > 0, 100, 0) + ELSE (current_year_data.this_year_sa_qty - last_year_data.last_year_sa_qty) / last_year_data.last_year_sa_qty * 100 END) > 0 THEN + CONCAT('🟢 ', ROUND((CASE WHEN last_year_data.last_year_sa_qty = 0 THEN IF(current_year_data.this_year_sa_qty > 0, 100, 0) + ELSE (current_year_data.this_year_sa_qty - last_year_data.last_year_sa_qty) / last_year_data.last_year_sa_qty * 100 END), 2)) + WHEN (CASE WHEN last_year_data.last_year_sa_qty = 0 THEN IF(current_year_data.this_year_sa_qty > 0, 100, 0) + ELSE (current_year_data.this_year_sa_qty - last_year_data.last_year_sa_qty) / last_year_data.last_year_sa_qty * 100 END) < 0 THEN + CONCAT('🔴 ', ROUND((CASE WHEN last_year_data.last_year_sa_qty = 0 THEN IF(current_year_data.this_year_sa_qty > 0, 100, 0) + ELSE (current_year_data.this_year_sa_qty - last_year_data.last_year_sa_qty) / last_year_data.last_year_sa_qty * 100 END), 2)) + ELSE '0.00' + END AS saqty_yoy, + CASE + WHEN (CASE WHEN last_year_data.last_year_sa_money = 0 THEN IF(current_year_data.this_year_sa_money > 0, 100, 0) + ELSE (current_year_data.this_year_sa_money - last_year_data.last_year_sa_money) / last_year_data.last_year_sa_money * 100 END) > 0 THEN + CONCAT('🟢 ', ROUND((CASE WHEN last_year_data.last_year_sa_money = 0 THEN IF(current_year_data.this_year_sa_money > 0, 100, 0) + ELSE (current_year_data.this_year_sa_money - last_year_data.last_year_sa_money) / last_year_data.last_year_sa_money * 100 END), 2)) + WHEN (CASE WHEN last_year_data.last_year_sa_money = 0 THEN IF(current_year_data.this_year_sa_money > 0, 100, 0) + ELSE (current_year_data.this_year_sa_money - last_year_data.last_year_sa_money) / last_year_data.last_year_sa_money * 100 END) < 0 THEN + CONCAT('🔴 ', ROUND((CASE WHEN last_year_data.last_year_sa_money = 0 THEN IF(current_year_data.this_year_sa_money > 0, 100, 0) + ELSE (current_year_data.this_year_sa_money - last_year_data.last_year_sa_money) / last_year_data.last_year_sa_money * 100 END), 2)) + ELSE '0.00' + END AS samoney_yoy, + CASE + WHEN (CASE WHEN last_year_data.last_year_profit = 0 THEN IF(current_year_data.this_year_profit > 0, 100, 0) + ELSE (current_year_data.this_year_profit - last_year_data.last_year_profit) / last_year_data.last_year_profit * 100 END) > 0 THEN + CONCAT('🟢 ', ROUND((CASE WHEN last_year_data.last_year_profit = 0 THEN IF(current_year_data.this_year_profit > 0, 100, 0) + ELSE (current_year_data.this_year_profit - last_year_data.last_year_profit) / last_year_data.last_year_profit * 100 END), 2)) + WHEN (CASE WHEN last_year_data.last_year_profit = 0 THEN IF(current_year_data.this_year_profit > 0, 100, 0) + ELSE (current_year_data.this_year_profit - last_year_data.last_year_profit) / last_year_data.last_year_profit * 100 END) < 0 THEN + CONCAT('🔴 ', ROUND((CASE WHEN last_year_data.last_year_profit = 0 THEN IF(current_year_data.this_year_profit > 0, 100, 0) + ELSE (current_year_data.this_year_profit - last_year_data.last_year_profit) / last_year_data.last_year_profit * 100 END), 2)) + ELSE '0.00' + END AS profit_yoy, + CASE + WHEN (CASE WHEN last_year_data.last_year_sa_money = 0 THEN IF(current_year_data.this_year_sa_money > 0, 100, 0) + ELSE (current_year_data.this_year_sa_money - last_year_data.last_year_sa_money) / last_year_data.last_year_sa_money * 100 END) > 0 THEN + CONCAT('🟢 ', ROUND((CASE WHEN last_year_data.last_year_sa_money = 0 THEN IF(current_year_data.this_year_sa_money > 0, 100, 0) + ELSE (current_year_data.this_year_sa_money - last_year_data.last_year_sa_money) / last_year_data.last_year_sa_money * 100 END), 2)) + WHEN (CASE WHEN last_year_data.last_year_sa_money = 0 THEN IF(current_year_data.this_year_sa_money > 0, 100, 0) + ELSE (current_year_data.this_year_sa_money - last_year_data.last_year_sa_money) / last_year_data.last_year_sa_money * 100 END) < 0 THEN + CONCAT('🔴 ', ROUND((CASE WHEN last_year_data.last_year_sa_money = 0 THEN IF(current_year_data.this_year_sa_money > 0, 100, 0) + ELSE (current_year_data.this_year_sa_money - last_year_data.last_year_sa_money) / last_year_data.last_year_sa_money * 100 END), 2)) + ELSE '0.00' + END AS this_year_sa_money_growth + FROM + (SELECT use_year , + use_year AS ny, + + 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, + + 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_year_sa_qty) AS this_year_sa_qty, + sum(this_year_sa_money) AS this_year_sa_money, + sum(this_year_cost) AS this_year_cost, + sum(this_year_profit) AS this_year_profit + FROM new_gr_bi_sa_agg_year_count + + and use_year = #{saAggParam.useYear} + 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, + + 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_year_data + LEFT JOIN (SELECT use_year, + + custom_id, + + + std_goods_name, + + + zone_id, + + + sale_type_id, + + + dosage_id, + + + 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 + FROM new_gr_bi_sa_agg_year_count + + + and use_year = #{saAggParam.useYear} -1 + 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, + + custom_id, + + + std_goods_name, + + + zone_id, + + + sale_type_id, + + + dosage_id, + + + saler_id, + + + + ) 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 + + + AND current_year_data.std_goods_name = last_year_data.std_goods_name + + + AND current_year_data.zone_id = last_year_data.zone_id + + + AND current_year_data.sale_type_id = last_year_data.sale_type_id + + + AND current_year_data.dosage_id = last_year_data.dosage_id + + + 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 + \ No newline at end of file From 7d627b7f35990212613cf0f295b2f540fb4b829d Mon Sep 17 00:00:00 2001 From: king Date: Wed, 25 Mar 2026 17:49:42 +0800 Subject: [PATCH 06/20] =?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=20=E8=B0=83=E6=95=B4=E6=9C=88?= =?UTF-8?q?=E5=BA=A6,=E5=B9=B4=E5=BA=A6=20=E6=8A=A5=E8=A1=A8=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/controller/NewGrBiSaAggMonthCountController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 c33eb9a..404c796 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,7 +45,7 @@ public class NewGrBiSaAggMonthCountController extends BaseController public BaseWebResult getTotalDetail(HttpServletRequest req) { Map params = FuncWeb.getParameterBodyMap(req); - String groupField = params.containsKey("Group by") ? "useMonth" :params.get("Group by").toString(); + String groupField = params.containsKey("Group by") ? params.get("Group by").toString() : "useMonth"; SaAggParam saAggParam = new SaAggParam(); if (params.containsKey("useMonth")){ saAggParam.setUseMonth(params.get("useMonth").toString()); From 51bd73d9def880a95bd6253b894aaa50cc66431b Mon Sep 17 00:00:00 2001 From: king Date: Wed, 25 Mar 2026 17:51:02 +0800 Subject: [PATCH 07/20] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lidee-admin/src/main/resources/application-local.yaml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lidee-admin/src/main/resources/application-local.yaml b/lidee-admin/src/main/resources/application-local.yaml index 5c75254..742ae6c 100644 --- a/lidee-admin/src/main/resources/application-local.yaml +++ b/lidee-admin/src/main/resources/application-local.yaml @@ -48,7 +48,3 @@ lideeyunji: debug: true #是否开启调试模式 saveReqLog: false # 是否保存请求日志 saveOpLog: false # 是否保存操作日志 - -logging: - level: - com.lideeyunji.core.framework.mapper: debug \ No newline at end of file From cd89f7cfa8d3fd42853dc6373e4cc5ab1bb9dc97 Mon Sep 17 00:00:00 2001 From: king Date: Thu, 26 Mar 2026 08:34:43 +0800 Subject: [PATCH 08/20] =?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=20sql=20=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/framework/NewGrBiSaAggMonthCountMapper.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMonthCountMapper.xml b/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMonthCountMapper.xml index 789072c..ee0334b 100644 --- a/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMonthCountMapper.xml +++ b/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMonthCountMapper.xml @@ -391,7 +391,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" new_gr_bi_sa_agg_month_count and use_year = #{saAggParam.useYear} - and use_month = #{saAggParam.useMonth} + and use_month = #{saAggParam.useMonth} and zone_name in #{name} @@ -573,8 +573,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" FROM new_gr_bi_sa_agg_month_count and use_year = #{saAggParam.useYear }- 1 - and use_month = #{saAggParam.useMonth} - and zone_name in + and use_month = #{saAggParam.useMonth} + and zone_name in #{name} @@ -679,7 +679,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ) 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.use_month = #{saAggParam.useMonth} and current_month.zone_name in #{name} From 4c05ebcc284e1205f41a1647516fede764947403 Mon Sep 17 00:00:00 2001 From: king Date: Thu, 26 Mar 2026 08:45:49 +0800 Subject: [PATCH 09/20] =?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=20sql=20=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/enhance/example/report/xtsy/zhxsqkPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 4b3fc52..62560f7 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 @@ -48,7 +48,7 @@ public class zhxsqkPlugin implements ReportAroundAdvicePlugin { Map params = enhanceContext.getParam().getParams(); if (params.containsKey("Group by")) { - if (params.containsKey("goodsname")) { + if (params.containsKey("goodsName")) { throw new lideeYunJiException("在选择维度时,“货品名称”不能有值!"); } List groupFieldList = Arrays.asList(params.get("Group by").toString().split(",")); From f3a7771d2e623e15b2dec6cd5e2254067eda86fd Mon Sep 17 00:00:00 2001 From: king Date: Thu, 26 Mar 2026 09:11:37 +0800 Subject: [PATCH 10/20] =?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=20sql=20=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/enhance/example/report/xtsy/zhxsqkPlugin.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 62560f7..98fa224 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 @@ -52,8 +52,11 @@ public class zhxsqkPlugin implements ReportAroundAdvicePlugin { throw new lideeYunJiException("在选择维度时,“货品名称”不能有值!"); } List groupFieldList = Arrays.asList(params.get("Group by").toString().split(",")); + if(!groupFieldList.contains("useYear") && !params.containsKey("useYear")){ + throw new lideeYunJiException("维度“年” 和 查询条件“年” 不能同时为空!"); + } PageHelper.startPage(Integer.parseInt(params.get("pageNo").toString()), Integer.parseInt(params.get("pageSize").toString())); - if((groupFieldList.contains("useMonth") || params.containsKey("useMonth"))){ + if(groupFieldList.contains("useMonth") || params.containsKey("useMonth")){ List newGrBiSaAggList = newGrBiSaAggMonthCountService.selectNewGrBiSaAggGroupMonthList(params, groupFieldList); PageInfo pageInfo = new PageInfo<>(newGrBiSaAggList); List> list = newGrBiSaAggList.stream().map(BeanUtil::beanToMap).collect(Collectors.toList()); From 806b921bb2920d0ae4552b82d969837ec6cbf734 Mon Sep 17 00:00:00 2001 From: king Date: Thu, 26 Mar 2026 15:52:17 +0800 Subject: [PATCH 11/20] =?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=20=E5=90=88=E8=AE=A1sql=20=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/framework/entity/NewGrBiSaAggYearCount.java | 4 ++-- .../mapper/framework/NewGrBiSaAggMonthCountMapper.xml | 8 ++++---- .../mapper/framework/NewGrBiSaAggYearCountMapper.xml | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/NewGrBiSaAggYearCount.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/NewGrBiSaAggYearCount.java index 5695c93..556ef38 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/NewGrBiSaAggYearCount.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/NewGrBiSaAggYearCount.java @@ -148,10 +148,10 @@ public class NewGrBiSaAggYearCount implements Serializable private String thisYearProfitChange; @TableField(value = "this_year_sa_money_s") - private BigDecimal thissamoney_s; + private BigDecimal thisYearSaMoney_s; @TableField(value = "this_year_profit_s") - private BigDecimal thisprofit_s; + private BigDecimal thisYearProfit_s; @TableField(value = "saqty_yoy") diff --git a/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMonthCountMapper.xml b/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMonthCountMapper.xml index ee0334b..0d41d32 100644 --- a/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMonthCountMapper.xml +++ b/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMonthCountMapper.xml @@ -39,8 +39,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - + + @@ -54,8 +54,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + {call P_ERP_DATA_NEW()} + + + From 8b53722f907a0723823060a7d6d55226d9acc2dc Mon Sep 17 00:00:00 2001 From: king Date: Mon, 30 Mar 2026 11:27:38 +0800 Subject: [PATCH 15/20] =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E7=B3=BB=E7=BB=9F=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../job/OracleProcedureUpdateCoreJob.java | 53 +++++++++++++++++++ .../mapper/OracleProcedureMapper.java | 10 ++++ .../framework/OracleProcedureMapper.xml | 4 ++ 3 files changed, 67 insertions(+) create mode 100644 lidee-core/src/main/java/com/lideeyunji/core/framework/config/job/OracleProcedureUpdateCoreJob.java diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/config/job/OracleProcedureUpdateCoreJob.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/config/job/OracleProcedureUpdateCoreJob.java new file mode 100644 index 0000000..35948ae --- /dev/null +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/config/job/OracleProcedureUpdateCoreJob.java @@ -0,0 +1,53 @@ +package com.lideeyunji.core.framework.config.job; + +import com.lideeyunji.core.framework.mapper.OracleProcedureMapper; +import com.lideeyunji.tool.framework.common.constant.lideeYunJiBaseConstant; +import com.lideeyunji.tool.framework.quartz.core.handler.JobHandler; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.Map; + +/** + * Oracle 存储过程调用定时任务 ,用于更新核心、高频的数据 + * 用于定时调用 Oracle 存储过程进行数据处理 + */ +@Slf4j +@Component("oracleProcedureUpdateCoreJob") +public class OracleProcedureUpdateCoreJob implements JobHandler { + + @Resource + private OracleProcedureMapper oracleProcedureMapper; + + @Override + public String execute(String param) throws Exception { + log.info("========== 开始执行 Oracle 存储过程定时任务 ,用于更新核心、高频的数据,参数:{} ==========", param); + + try { + callUpdateCore(); + log.info("========== Oracle 存储过程定时任务,用于更新核心、高频的数据 执行成功 =========="); + return "Oracle 存储过程定时任务,用于更新核心、高频的数据 执行成功"; + } catch (Exception e) { + log.error("========== Oracle 存储过程定时任务,用于更新核心、高频的数据 执行失败 ==========", e); + throw new RuntimeException("Oracle 存储过程,用于更新核心、高频的数据 调用失败:" + e.getMessage(), e); + } + } + + /** + * 调用简单存储过程 + */ + private void callUpdateCore() { + log.info("开始调用存储过程..."); + + Map params = new HashMap<>(); + params.put("result", new Object()); // 用于接收输出参数 + + oracleProcedureMapper.callUpdateCore(lideeYunJiBaseConstant.DS_ORACLE_GRYYBI); + + // 获取输出参数值 + Object result = params.get("result"); + log.info("存储过程执行结果:{}", result); + } +} diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/OracleProcedureMapper.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/OracleProcedureMapper.java index f1f60a9..159e97b 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/OracleProcedureMapper.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/OracleProcedureMapper.java @@ -24,4 +24,14 @@ public interface OracleProcedureMapper { @DataPermission(enable = false) void callAllProcedure(@Param("dataSourceType") String dataSourceType); + /** + * 调用 Oracle 存储过程 - 示例 + * + * @param dataSourceType 存储过程参数 + * @return 执行结果 + */ + @DS(value = "#dataSourceType") + @DataPermission(enable = false) + void callUpdateCore(@Param("dataSourceType") String dataSourceType); + } diff --git a/lidee-core/src/main/resources/mapper/framework/OracleProcedureMapper.xml b/lidee-core/src/main/resources/mapper/framework/OracleProcedureMapper.xml index 8ab23b8..452a6c7 100644 --- a/lidee-core/src/main/resources/mapper/framework/OracleProcedureMapper.xml +++ b/lidee-core/src/main/resources/mapper/framework/OracleProcedureMapper.xml @@ -7,4 +7,8 @@ {call P_ERP_DATA_NEW()} + + From b3c8423239f6896d213a1996394dd8dd0c237341 Mon Sep 17 00:00:00 2001 From: shih <510524130@qq.com> Date: Mon, 30 Mar 2026 12:22:03 +0800 Subject: [PATCH 16/20] =?UTF-8?q?=E5=BA=94=E7=94=A8=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E6=9D=83=E9=99=90=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/system/service/impl/OAuth2ClientServiceImpl.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/service/impl/OAuth2ClientServiceImpl.java b/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/service/impl/OAuth2ClientServiceImpl.java index 8df76e9..aca0607 100644 --- a/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/service/impl/OAuth2ClientServiceImpl.java +++ b/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/service/impl/OAuth2ClientServiceImpl.java @@ -161,6 +161,10 @@ public class OAuth2ClientServiceImpl implements IOAuth2ClientService { } if (!CollUtil.isEmpty(roleIds)) { Set clientIds = clientPermissionService.getRoleClientListByRoleId(roleIds); + //修改 若无clientIds时直接返回空 + if(CollUtil.isEmpty(clientIds)){ + return new PageResult<>(); + } pageReqVO.setIds(clientIds); } return oAuth2ClientJoinMapper.selectPage(pageReqVO); From 2108e2a1e29202e7fd6bd49d0e9c83c1dcb60cd9 Mon Sep 17 00:00:00 2001 From: shih <510524130@qq.com> Date: Wed, 1 Apr 2026 10:42:26 +0800 Subject: [PATCH 17/20] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E7=BB=B4=E6=8A=A4=EF=BC=8C=E8=A1=A8=E5=8D=95=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E4=B8=AD=E5=A2=9E=E5=8A=A0=E8=AE=BE=E5=A4=87=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E4=B8=8B=E6=8B=89=E6=89=80=E9=9C=80=E7=9A=84=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E3=80=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/adapter/FrameWorkAdapter.java | 15 ++ .../controller/DbFormController.java | 9 + .../core/framework/params/DictLabelParam.java | 3 + .../system/constant/ErrorCodeConstants.java | 9 + .../system/controller/SblxController.java | 85 ++++++++++ .../controller/vo/sblx/SblxListReqVO.java | 13 ++ .../system/controller/vo/sblx/SblxRespVO.java | 30 ++++ .../controller/vo/sblx/SblxSaveReqVO.java | 34 ++++ .../controller/vo/sblx/SblxSimpleRespVO.java | 23 +++ .../service/system/entity/SblxDO.java | 50 ++++++ .../service/system/mapper/SblxMapper.java | 32 ++++ .../service/system/service/ISblxService.java | 54 ++++++ .../system/service/impl/SblxServiceImpl.java | 155 ++++++++++++++++++ .../yunji/adapter/IlideeYunjiAdapter.java | 2 + 14 files changed, 514 insertions(+) create mode 100644 lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/controller/SblxController.java create mode 100644 lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/controller/vo/sblx/SblxListReqVO.java create mode 100644 lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/controller/vo/sblx/SblxRespVO.java create mode 100644 lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/controller/vo/sblx/SblxSaveReqVO.java create mode 100644 lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/controller/vo/sblx/SblxSimpleRespVO.java create mode 100644 lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/entity/SblxDO.java create mode 100644 lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/mapper/SblxMapper.java create mode 100644 lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/service/ISblxService.java create mode 100644 lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/service/impl/SblxServiceImpl.java diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/adapter/FrameWorkAdapter.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/adapter/FrameWorkAdapter.java index 0f57acb..9039e64 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/adapter/FrameWorkAdapter.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/adapter/FrameWorkAdapter.java @@ -338,6 +338,21 @@ public class FrameWorkAdapter implements IlideeYunjiAdapter { } + //回显设备类型 + @TenantIgnore + @Override + public List> getSblxViewList(List sblxIdList) { + SqlInfoQueryWrapper.Wrapper wrapper = SqlHelper.getQueryWrapper() + .select("id", "industry_name AS industryName") + .setTableName("dev_sblx") + .setWhere(where -> { + where.in("id", sblxIdList); + }) + .build(); + List> dataList = sqlService.getDataListByPlus(wrapper); + return dataList; + } + //获取用户分页列表 @Override public Object getUserPage(Integer pageNo, Integer pageSize, lideeYunJiUserParam param) { diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/controller/DbFormController.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/controller/DbFormController.java index 4248576..97a5425 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/controller/DbFormController.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/controller/DbFormController.java @@ -285,6 +285,10 @@ public class DbFormController extends BaseController { String deptormatSql="(select name from system_dept where id ="+label+") as "+label; fieldList.set(ind,deptormatSql);//子查询 break; + case "sblxSelect": + String sblxormatSql="(select industry_name from dev_sblx where id ="+label+") as "+label; + fieldList.set(ind,sblxormatSql);//子查询 + break; } } } @@ -306,6 +310,7 @@ public class DbFormController extends BaseController { List dataList = labelParam.getDataList(); List userIdList = labelParam.getUserIdList();//用户id List deptIdList = labelParam.getDeptIdList();//部门id + List sblxIdList = labelParam.getSblxIdList();//设备类型id if (Func.isNotEmpty(dbformId)) { //自定义表 String mapKey = dbformId + "&" + label; @@ -341,6 +346,10 @@ public class DbFormController extends BaseController { List> deptViewList = lideeYunJiAdapter.getDeptViewList(deptIdList); resultMap.put("deptList", deptViewList); } + if (Func.isNotEmpty(sblxIdList)) {//部门表回显 + List> sblxViewList = lideeYunJiAdapter.getSblxViewList(sblxIdList); + resultMap.put("sblxList", sblxViewList); + } })).get(); } catch (InterruptedException | ExecutionException e) { throw new RuntimeException(e.getMessage()); diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/params/DictLabelParam.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/params/DictLabelParam.java index c43d7f1..4bdcc57 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/params/DictLabelParam.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/params/DictLabelParam.java @@ -33,5 +33,8 @@ public class DictLabelParam { @Schema(description = "部门id列表") private List deptIdList; + @Schema(description = "设备类型id列表") + private List sblxIdList; + } diff --git a/lidee-service/lidee-service-system-api/src/main/java/com/lideeyunji/service/system/constant/ErrorCodeConstants.java b/lidee-service/lidee-service-system-api/src/main/java/com/lideeyunji/service/system/constant/ErrorCodeConstants.java index 5bc509d..7f513bf 100644 --- a/lidee-service/lidee-service-system-api/src/main/java/com/lideeyunji/service/system/constant/ErrorCodeConstants.java +++ b/lidee-service/lidee-service-system-api/src/main/java/com/lideeyunji/service/system/constant/ErrorCodeConstants.java @@ -198,4 +198,13 @@ public interface ErrorCodeConstants { // ========== 站内信发送 1-002-028-000 ========== ErrorCode NOTIFY_SEND_TEMPLATE_PARAM_MISS = new ErrorCode(1_002_028_000, "模板参数({})缺失"); + + // ========== 设备类型维护 1_002_029_000 ========== + ErrorCode SBLX_NAME_DUPLICATE = new ErrorCode(1_002_029_000, "已经存在该名字的设备类型"); + ErrorCode SBLX_EXITS_CHILDREN = new ErrorCode(1_002_029_001, "存在子设备类型,无法删除"); + ErrorCode SBLX_NOT_FOUND = new ErrorCode(1_002_029_002, "当前设备类型不存在"); + ErrorCode SBLX_PARENT_ERROR = new ErrorCode(1_002_029_003, "不能设置自己为父设备类型"); + ErrorCode SBLX_PARENT_NOT_EXITS = new ErrorCode(1_002_029_004,"父级设备类型不存在"); + ErrorCode SBLX_PARENT_IS_CHILD = new ErrorCode(1_002_029_005, "不能设置自己的子设备类型为父设备类型"); + } diff --git a/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/controller/SblxController.java b/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/controller/SblxController.java new file mode 100644 index 0000000..7bf181c --- /dev/null +++ b/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/controller/SblxController.java @@ -0,0 +1,85 @@ +package com.lideeyunji.service.system.controller; + +import com.lideeyunji.service.system.controller.vo.dept.dept.DeptRespVO; +import com.lideeyunji.service.system.controller.vo.dept.dept.DeptSimpleRespVO; +import com.lideeyunji.service.system.controller.vo.sblx.SblxListReqVO; +import com.lideeyunji.service.system.controller.vo.sblx.SblxRespVO; +import com.lideeyunji.service.system.controller.vo.sblx.SblxSaveReqVO; +import com.lideeyunji.service.system.controller.vo.sblx.SblxSimpleRespVO; +import com.lideeyunji.service.system.entity.SblxDO; +import com.lideeyunji.service.system.service.ISblxService; +import com.lideeyunji.tool.framework.common.pojo.CommonResult; +import com.lideeyunji.tool.framework.common.util.object.BeanUtils; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.List; + +import static com.lideeyunji.tool.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - 设备类型") +@RestController +@RequestMapping("/system/sblx") +@Validated +public class SblxController { + + @Resource + private ISblxService sblxService; + + @PostMapping("create") + @Operation(tags = "设备类型管理",summary = "创建设备类型") + @PreAuthorize("@ss.hasPermission('system:sblx:create')") + public CommonResult createSblx(@Valid @RequestBody SblxSaveReqVO createReqVO) { + Long deptId = sblxService.createSblx(createReqVO); + return success(deptId); + } + + @PutMapping("update") + @Operation(tags = "设备类型管理",summary = "更新设备类型") + @PreAuthorize("@ss.hasPermission('system:sblx:update')") + public CommonResult updateSblx(@Valid @RequestBody SblxSaveReqVO updateReqVO) { + sblxService.updateSblx(updateReqVO); + return success(true); + } + + @DeleteMapping("delete") + @Operation(tags = "设备类型管理",summary = "删除设备类型") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('system:sblx:delete')") + public CommonResult deleteSblx(@RequestParam("id") Long id) { + sblxService.deleteSblx(id); + return success(true); + } + + @GetMapping("/list") + @Operation(tags = "设备类型管理",summary = "获取设备类型列表") + @PreAuthorize("@ss.hasPermission('system:sblx:query')") + public CommonResult> getSblxList(SblxListReqVO reqVO) { + List list = sblxService.getSblxList(reqVO); + return success(BeanUtils.toBean(list, SblxRespVO.class)); + } + + @GetMapping(value = {"/list-all-simple", "/simple-list"}) + @Operation(tags = "设备类型管理",summary = "获取设备类型精简信息列表", description = "主要用于前端的下拉选项") + public CommonResult> getSimpleDeptList() { + List list = sblxService.getSblxList( + new SblxListReqVO()); + return success(BeanUtils.toBean(list, SblxSimpleRespVO.class)); + } + + @GetMapping("/get") + @Operation(tags = "设备类型管理",summary = "获得设备类型信息") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('system:sblx:query')") + public CommonResult getDept(@RequestParam("id") Long id) { + SblxDO sblx = sblxService.getSblx(id); + return success(BeanUtils.toBean(sblx, DeptRespVO.class)); + } + +} diff --git a/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/controller/vo/sblx/SblxListReqVO.java b/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/controller/vo/sblx/SblxListReqVO.java new file mode 100644 index 0000000..48dbfaa --- /dev/null +++ b/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/controller/vo/sblx/SblxListReqVO.java @@ -0,0 +1,13 @@ +package com.lideeyunji.service.system.controller.vo.sblx; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - 设备类型列表 Request VO") +@Data +public class SblxListReqVO { + + @Schema(description = "设备类型名称,模糊匹配" ) + private String industryName; + +} diff --git a/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/controller/vo/sblx/SblxRespVO.java b/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/controller/vo/sblx/SblxRespVO.java new file mode 100644 index 0000000..9aed175 --- /dev/null +++ b/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/controller/vo/sblx/SblxRespVO.java @@ -0,0 +1,30 @@ +package com.lideeyunji.service.system.controller.vo.sblx; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 设备类型信息 Response VO") +@Data +public class SblxRespVO { + + @Schema(description = "设备类型编号", example = "1024") + private Long id; + + @Schema(description = "设备类型名称", requiredMode = Schema.RequiredMode.REQUIRED) + private String industryName; + + @Schema(description = "设备类型编码", requiredMode = Schema.RequiredMode.REQUIRED) + private String industryCode; + + @Schema(description = "父设备类型 ID", example = "1024") + private Long parentId; + + @Schema(description = "显示顺序不能为空", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + private Integer sort; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式") + private LocalDateTime createTime; + +} diff --git a/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/controller/vo/sblx/SblxSaveReqVO.java b/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/controller/vo/sblx/SblxSaveReqVO.java new file mode 100644 index 0000000..dfcfbcc --- /dev/null +++ b/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/controller/vo/sblx/SblxSaveReqVO.java @@ -0,0 +1,34 @@ +package com.lideeyunji.service.system.controller.vo.sblx; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +@Schema(description = "管理后台 - 设备类型创建/修改 Request VO") +@Data +public class SblxSaveReqVO { + + @Schema(description = "设备类型id", example = "1024") + private Long id; + + @Schema(description = "设备类型名称", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "设备类型名称不能为空") + @Size(max = 30, message = "设备类型名称长度不能超过 30 个字符") + private String industryName; + + @Schema(description = "设备类型编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "设备类型编码不能为空") + @Size(max = 30, message = "设备类型编码长度不能超过 30 个字符") + private String industryCode; + + @Schema(description = "父设备类型 ID", example = "1024") + private Long parentId; + + @Schema(description = "显示顺序不能为空", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + @NotNull(message = "显示顺序不能为空") + private Integer sort; + +} diff --git a/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/controller/vo/sblx/SblxSimpleRespVO.java b/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/controller/vo/sblx/SblxSimpleRespVO.java new file mode 100644 index 0000000..2b75f3a --- /dev/null +++ b/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/controller/vo/sblx/SblxSimpleRespVO.java @@ -0,0 +1,23 @@ +package com.lideeyunji.service.system.controller.vo.sblx; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Schema(description = "管理后台 - 设备类型精简信息 Response VO") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class SblxSimpleRespVO { + + @Schema(description = "设备类型编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + private Long id; + + @Schema(description = "设备类型名称", requiredMode = Schema.RequiredMode.REQUIRED) + private String industryName; + + @Schema(description = "父设备类型 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + private Long parentId; + +} diff --git a/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/entity/SblxDO.java b/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/entity/SblxDO.java new file mode 100644 index 0000000..4870e2d --- /dev/null +++ b/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/entity/SblxDO.java @@ -0,0 +1,50 @@ +package com.lideeyunji.service.system.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.lideeyunji.tool.framework.common.enums.CommonStatusEnum; +import com.lideeyunji.tool.framework.mybatis.core.dataobject.BaseDO; +import com.lideeyunji.tool.framework.tenant.core.db.TenantBaseDO; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 设备类型表 + * + */ +@TableName("dev_sblx") +@Data +@EqualsAndHashCode(callSuper = true) +public class SblxDO extends BaseDO { + + public static final Long PARENT_ID_ROOT = 0L; + + /** + * 设备类型ID + */ + @TableId + private Long id; + + /** + * 设备类型名称 + */ + private String industryName; + + /** + * 设备类型编码 + */ + private String industryCode; + + /** + * 父设备类型ID + * + * 关联 {@link #id} + */ + private Long parentId; + + /** + * 显示顺序 + */ + private Integer sort; + + +} diff --git a/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/mapper/SblxMapper.java b/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/mapper/SblxMapper.java new file mode 100644 index 0000000..a4aa72e --- /dev/null +++ b/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/mapper/SblxMapper.java @@ -0,0 +1,32 @@ +package com.lideeyunji.service.system.mapper; + +import com.lideeyunji.service.system.controller.vo.sblx.SblxListReqVO; +import com.lideeyunji.service.system.entity.SblxDO; +import com.lideeyunji.tool.framework.mybatis.core.mapper.BaseMapperX; +import com.lideeyunji.tool.framework.mybatis.core.query.LambdaQueryWrapperX; +import org.apache.ibatis.annotations.Mapper; + +import java.util.Collection; +import java.util.List; + +@Mapper +public interface SblxMapper extends BaseMapperX { + + default List selectList(SblxListReqVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .likeIfPresent(SblxDO::getIndustryName, reqVO.getIndustryName())); + } + + default SblxDO selectByParentIdAndName(Long parentId, String name) { + return selectOne(SblxDO::getParentId, parentId, SblxDO::getIndustryName, name); + } + + default Long selectCountByParentId(Long parentId) { + return selectCount(SblxDO::getParentId, parentId); + } + + default List selectListByParentId(Collection parentIds) { + return selectList(SblxDO::getParentId, parentIds); + } + +} diff --git a/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/service/ISblxService.java b/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/service/ISblxService.java new file mode 100644 index 0000000..eb123aa --- /dev/null +++ b/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/service/ISblxService.java @@ -0,0 +1,54 @@ +package com.lideeyunji.service.system.service; + +import com.lideeyunji.service.system.controller.vo.sblx.SblxListReqVO; +import com.lideeyunji.service.system.controller.vo.sblx.SblxSaveReqVO; +import com.lideeyunji.service.system.entity.SblxDO; + +import java.util.List; + +/** + * 设备类型 Service 接口 + * + */ +public interface ISblxService { + + /** + * 创建设备类型 + * + * @param createReqVO 设备类型信息 + * @return id + */ + Long createSblx(SblxSaveReqVO createReqVO); + + /** + * 更新设备类型信息 + * + * @param updateReqVO 设备类型信息 + */ + void updateSblx(SblxSaveReqVO updateReqVO); + + /** + * 删除设备类型信息 + * + * @param id + */ + void deleteSblx(Long id); + + /** + * 获得设备类型信息 + * + * @param id + * @return 设备类型信息 + */ + SblxDO getSblx(Long id); + + /** + * 筛选设备类型列表 + * + * @param reqVO 筛选条件请求 VO + * @return 设备类型信息列表 + */ + List getSblxList(SblxListReqVO reqVO); + + +} diff --git a/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/service/impl/SblxServiceImpl.java b/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/service/impl/SblxServiceImpl.java new file mode 100644 index 0000000..eba6d2b --- /dev/null +++ b/lidee-service/lidee-service-system-biz/src/main/java/com/lideeyunji/service/system/service/impl/SblxServiceImpl.java @@ -0,0 +1,155 @@ +package com.lideeyunji.service.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.google.common.annotations.VisibleForTesting; +import com.lideeyunji.service.system.controller.vo.sblx.SblxListReqVO; +import com.lideeyunji.service.system.controller.vo.sblx.SblxSaveReqVO; +import com.lideeyunji.service.system.entity.SblxDO; +import com.lideeyunji.service.system.mapper.SblxMapper; +import com.lideeyunji.service.system.service.ISblxService; +import com.lideeyunji.tool.framework.common.util.object.BeanUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.Comparator; +import java.util.List; +import java.util.Objects; + +import static com.lideeyunji.service.system.constant.ErrorCodeConstants.*; +import static com.lideeyunji.tool.framework.common.exception.util.ServiceExceptionUtil.exception; + +/** + * 设备类型 Service 实现类 + * + */ +@Service +@Validated +@Slf4j +public class SblxServiceImpl implements ISblxService { + + @Resource + private SblxMapper sblxMapper; + + @Override + public Long createSblx(SblxSaveReqVO createReqVO) { + if (createReqVO.getParentId() == null) { + createReqVO.setParentId(SblxDO.PARENT_ID_ROOT); + } + // 校验父部门的有效性 + validateParentDept(null, createReqVO.getParentId()); + // 校验部门名的唯一性 + validateDeptNameUnique(null, createReqVO.getParentId(), createReqVO.getIndustryName()); + + // 插入 + SblxDO sblx = BeanUtils.toBean(createReqVO, SblxDO.class); + sblxMapper.insert(sblx); + return sblx.getId(); + } + + @Override + public void updateSblx(SblxSaveReqVO updateReqVO) { + if (updateReqVO.getParentId() == null) { + updateReqVO.setParentId(SblxDO.PARENT_ID_ROOT); + } + // 校验自己存在 + validateDeptExists(updateReqVO.getId()); + // 校验父部门的有效性 + validateParentDept(updateReqVO.getId(), updateReqVO.getParentId()); + // 校验部门名的唯一性 + validateDeptNameUnique(updateReqVO.getId(), updateReqVO.getParentId(), updateReqVO.getIndustryName()); + + // 更新 + SblxDO updateObj = BeanUtils.toBean(updateReqVO, SblxDO.class); + sblxMapper.updateById(updateObj); + } + + @Override + public void deleteSblx(Long id) { + // 校验是否存在 + validateDeptExists(id); + // 校验是否有子部门 + if (sblxMapper.selectCountByParentId(id) > 0) { + throw exception(SBLX_EXITS_CHILDREN); + } + // 删除部门 + sblxMapper.deleteById(id); + } + + @VisibleForTesting + void validateDeptExists(Long id) { + if (id == null) { + return; + } + SblxDO sblx = sblxMapper.selectById(id); + if (sblx == null) { + throw exception(SBLX_NOT_FOUND); + } + } + + @VisibleForTesting + void validateParentDept(Long id, Long parentId) { + if (parentId == null || SblxDO.PARENT_ID_ROOT.equals(parentId)) { + return; + } + // 1. 不能设置自己为父部门 + if (Objects.equals(id, parentId)) { + throw exception(SBLX_PARENT_ERROR); + } + // 2. 父部门不存在 + SblxDO parentSblx = sblxMapper.selectById(parentId); + if (parentSblx == null) { + throw exception(SBLX_PARENT_NOT_EXITS); + } + // 3. 递归校验父部门,如果父部门是自己的子部门,则报错,避免形成环路 + if (id == null) { // id 为空,说明新增,不需要考虑环路 + return; + } + for (int i = 0; i < Short.MAX_VALUE; i++) { + // 3.1 校验环路 + parentId = parentSblx.getParentId(); + if (Objects.equals(id, parentId)) { + throw exception(SBLX_PARENT_IS_CHILD); + } + // 3.2 继续递归下一级父部门 + if (parentId == null || SblxDO.PARENT_ID_ROOT.equals(parentId)) { + break; + } + parentSblx = sblxMapper.selectById(parentId); + if (parentSblx == null) { + break; + } + } + } + + @VisibleForTesting + void validateDeptNameUnique(Long id, Long parentId, String name) { + SblxDO sblx = sblxMapper.selectByParentIdAndName(parentId, name); + if (sblx == null) { + return; + } + // 如果 id 为空,说明不用比较是否为相同 id 的部门 + if (id == null) { + throw exception(SBLX_NAME_DUPLICATE); + } + if (ObjectUtil.notEqual(sblx.getId(), id)) { + throw exception(SBLX_NAME_DUPLICATE); + } + } + + @Override + public SblxDO getSblx(Long id) { + return sblxMapper.selectById(id); + } + + @Override + public List getSblxList(SblxListReqVO reqVO) { + List list = sblxMapper.selectList(reqVO); + list.sort(Comparator.comparing(SblxDO::getSort)); + return list; + } + + + +} diff --git a/lidee-tool/tool-spring-boot-starter-yunji/src/main/java/com/lideeyunji/tool/framework/yunji/adapter/IlideeYunjiAdapter.java b/lidee-tool/tool-spring-boot-starter-yunji/src/main/java/com/lideeyunji/tool/framework/yunji/adapter/IlideeYunjiAdapter.java index 7545538..1fd9717 100644 --- a/lidee-tool/tool-spring-boot-starter-yunji/src/main/java/com/lideeyunji/tool/framework/yunji/adapter/IlideeYunjiAdapter.java +++ b/lidee-tool/tool-spring-boot-starter-yunji/src/main/java/com/lideeyunji/tool/framework/yunji/adapter/IlideeYunjiAdapter.java @@ -60,6 +60,8 @@ public interface IlideeYunjiAdapter { //回显部门 List> getDeptViewList(List deptIdList); + //设备类型 + List> getSblxViewList(List sblxIdList); //获取用户分页列表 Object getUserPage(Integer pageNo, Integer pageSize, lideeYunJiUserParam param); From b600436243b828c8c61c41e4ab4f0882ee889482 Mon Sep 17 00:00:00 2001 From: shih <510524130@qq.com> Date: Thu, 2 Apr 2026 16:29:30 +0800 Subject: [PATCH 18/20] =?UTF-8?q?=E4=BF=9D=E5=85=BB=E6=96=B9=E6=A1=88?= =?UTF-8?q?=E5=85=B3=E8=81=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/enhance/example/report/bygl/ByglByjhLbPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/bygl/ByglByjhLbPlugin.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/bygl/ByglByjhLbPlugin.java index 16ea1ca..26a471b 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/bygl/ByglByjhLbPlugin.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/bygl/ByglByjhLbPlugin.java @@ -34,7 +34,7 @@ public class ByglByjhLbPlugin implements AroundAdvicePlugin { return; } for (Map record : records) { - String plan_id = lideeYunJiUtils.getMap2Str(record, "plan_id"); + String plan_id = lideeYunJiUtils.getMap2Str(record, "id"); Map countByPlanId = byglByjhMapper.getCountByPlanId(plan_id); record.put("plan_count",lideeYunJiUtils.getMap2Long(countByPlanId,"jhs")); record.put("completed_count",lideeYunJiUtils.getMap2Long(countByPlanId,"wcs")); From 77e334728cd4dc02bf67308d286868ab59e19950 Mon Sep 17 00:00:00 2001 From: king Date: Wed, 8 Apr 2026 10:37:26 +0800 Subject: [PATCH 19/20] =?UTF-8?q?=E5=A1=AB=E6=8A=A5=E7=BB=8F=E8=90=A5?= =?UTF-8?q?=E6=8C=87=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../record/BusinessRealRecordPlugin.java | 56 +++++++++++++++++++ .../mapper/BusinessRealRecordMapper.java | 23 ++++++++ .../record/BusinessRealRecordMapper.xml | 45 +++++++++++++++ 3 files changed, 124 insertions(+) create mode 100644 lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/record/BusinessRealRecordPlugin.java create mode 100644 lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/BusinessRealRecordMapper.java create mode 100644 lidee-core/src/main/resources/mapper/record/BusinessRealRecordMapper.xml diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/record/BusinessRealRecordPlugin.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/record/BusinessRealRecordPlugin.java new file mode 100644 index 0000000..0dfb561 --- /dev/null +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/record/BusinessRealRecordPlugin.java @@ -0,0 +1,56 @@ + +package com.lideeyunji.core.framework.enhance.example.report.record; + +import cn.hutool.core.collection.CollUtil; +import com.lideeyunji.core.framework.config.aspect.enhance.model.EnhanceContext; +import com.lideeyunji.core.framework.config.aspect.enhance.plugin.AroundAdvicePlugin; +import com.lideeyunji.core.framework.mapper.BusinessRealRecordMapper; +import com.lideeyunji.tool.framework.common.constant.ByglConstant; +import com.lideeyunji.tool.framework.common.constant.lideeYunJiBaseConstant; +import com.lideeyunji.tool.framework.yunji.utils.lideeYunJiUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.time.format.DateTimeFormatter; +import java.util.List; +import java.util.Map; + +/** + * 保养管理-保养工单 + */ +@Slf4j +@Component("businessRealRecordPlugin") +public class BusinessRealRecordPlugin implements AroundAdvicePlugin { + + private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); + + private static final String ORDER_ID_PREFIX = "GD"; + + @Autowired + private BusinessRealRecordMapper businessRealRecordMapper; + + @Override + public void beforeExecute(EnhanceContext enhanceContext) { + Map params = enhanceContext.getParam().getParams(); + //新增方法默认状态字段 + params.put("order_state",ByglConstant.GD_STATE_DKS); + String useyear = lideeYunJiUtils.getMap2Str(params, "useyear"); + String revenueYearplan = lideeYunJiUtils.getMap2Str(params, "revenue_yearplan"); + String revenueYearrate = lideeYunJiUtils.getMap2Str(params, "revenue_yearrate"); + String profitYearplan = lideeYunJiUtils.getMap2Str(params, "profit_yearplan"); + String profitYearrate = lideeYunJiUtils.getMap2Str(params, "profit_yearrate"); + List> record = businessRealRecordMapper.getLastMonth(lideeYunJiBaseConstant.DS_ERP_BI_DATA,useyear); + if (CollUtil.isEmpty(record)) { + throw new RuntimeException("请选择正确的年,当前年月没有指标"); + } + String last_month = (String) record.get(0).get("last_month"); + businessRealRecordMapper.updateByRecord(lideeYunJiBaseConstant.DS_ERP_BI_DATA, useyear, last_month, "1", revenueYearplan, revenueYearrate); + businessRealRecordMapper.updateByRecord(lideeYunJiBaseConstant.DS_ERP_BI_DATA, useyear, last_month, "4", profitYearplan, profitYearrate); + } + + @Override + public void afterExecute(EnhanceContext enhanceContext) { + + } +} diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/BusinessRealRecordMapper.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/BusinessRealRecordMapper.java new file mode 100644 index 0000000..d58922c --- /dev/null +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/BusinessRealRecordMapper.java @@ -0,0 +1,23 @@ + +package com.lideeyunji.core.framework.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.dynamic.datasource.annotation.Master; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * + */ +@Master +public interface BusinessRealRecordMapper { + + @DS(value = "#dataSourceType") + List> getRecord(@Param("dataSourceType") String dataSourceType, String year); + @DS(value = "#dataSourceType") + List> getLastMonth(@Param("dataSourceType") String dataSourceType, String year); + @DS(value = "#dataSourceType") + int updateByRecord(@Param("dataSourceType") String dataSourceType, String year, String month, String itemid, String yearplan, String yearrate); +} diff --git a/lidee-core/src/main/resources/mapper/record/BusinessRealRecordMapper.xml b/lidee-core/src/main/resources/mapper/record/BusinessRealRecordMapper.xml new file mode 100644 index 0000000..8891553 --- /dev/null +++ b/lidee-core/src/main/resources/mapper/record/BusinessRealRecordMapper.xml @@ -0,0 +1,45 @@ + + + + + + + + + + INSERT INTO gr_bi_fs_business_real_rate (YEAR_PLAN, YEAR_RATE, USEYEAR,USEMONTH,ITEMID) + VALUES (#{yearplan}, #{yearrate}, #{year}, #{month}, #{itemid}) + ON DUPLICATE KEY UPDATE + YEAR_PLAN = #{yearplan}, + YEAR_RATE = #{yearrate} + + From 471ce4c28fde4a47f9a0161080a799c7e50b3ca5 Mon Sep 17 00:00:00 2001 From: king Date: Wed, 8 Apr 2026 16:49:11 +0800 Subject: [PATCH 20/20] =?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=20=E6=8E=92=E5=BA=8F=E9=97=AE?= =?UTF-8?q?=E9=A2=98=20=E5=A4=84=E7=90=86,=20=E6=96=B0=E5=A2=9E=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=20=E6=9F=A5=E8=AF=A2=E6=97=B6=E9=97=B4=E8=8C=83?= =?UTF-8?q?=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