diff --git a/lidee-admin/src/main/resources/application-local.yaml b/lidee-admin/src/main/resources/application-local.yaml index 7710c33..742ae6c 100644 --- a/lidee-admin/src/main/resources/application-local.yaml +++ b/lidee-admin/src/main/resources/application-local.yaml @@ -47,4 +47,4 @@ lideeyunji: yunji: # 低代码平台 debug: true #是否开启调试模式 saveReqLog: false # 是否保存请求日志 - saveOpLog: false # 是否保存操作日志 \ No newline at end of file + saveOpLog: false # 是否保存操作日志 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/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/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..8013d8a --- /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 { + + 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 c761191..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 @@ -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 Object 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/config/job/OracleProcedureJob.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/config/job/OracleProcedureJob.java new file mode 100644 index 0000000..d06c589 --- /dev/null +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/config/job/OracleProcedureJob.java @@ -0,0 +1,55 @@ +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.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.HashMap; +import java.util.Map; + +/** + * Oracle 存储过程调用定时任务 + * 用于定时调用 Oracle 存储过程进行数据处理 + */ +@Slf4j +@Component("oracleProcedureJob") +public class OracleProcedureJob implements JobHandler { + + @Resource + private OracleProcedureMapper oracleProcedureMapper; + + @Override + public String execute(String param) throws Exception { + log.info("========== 开始执行 Oracle 存储过程定时任务,参数:{} ==========", param); + + try { + callAllProcedure(); + log.info("========== Oracle 存储过程定时任务执行成功 =========="); + return "Oracle 存储过程定时任务执行成功"; + } catch (Exception e) { + log.error("========== Oracle 存储过程定时任务执行失败 ==========", e); + throw new RuntimeException("Oracle 存储过程调用失败:" + e.getMessage(), e); + } + } + + /** + * 调用简单存储过程 + */ + private void callAllProcedure() { + log.info("开始调用存储过程..."); + + Map params = new HashMap<>(); + params.put("result", new Object()); // 用于接收输出参数 + + oracleProcedureMapper.callAllProcedure(lideeYunJiBaseConstant.DS_ORACLE_GRYYBI); + + // 获取输出参数值 + Object result = params.get("result"); + log.info("存储过程执行结果:{}", result); + } +} 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/controller/ByglController.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/controller/ByglController.java index daca7c1..b65024a 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/controller/ByglController.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/controller/ByglController.java @@ -32,7 +32,7 @@ public class ByglController extends BaseController { return BaseWebResult.error(FrameErrorCodeConstants.FRAME_OP_ERROR); } byglByfaService.changeFaState(id, state); - return BaseWebResult.success("成功"); + return BaseWebResult.success("状态修改成功"); } 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/controller/NewGrBiSaAggMonthCountController.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/controller/NewGrBiSaAggMonthCountController.java index eeaca25..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,36 +45,49 @@ 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() : ""; 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("customname")){ - saAggParam.setCustomName(Arrays.asList(params.get("customname").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("useYearEnd")){ + saAggParam.setUseYearEnd(params.get("useYearEnd").toString()); } - if (params.containsKey("salername")){ - saAggParam.setSalerName(Arrays.asList(params.get("salername").toString().split( ","))); + if(params.containsKey("customName")){ + saAggParam.setCustomName(Arrays.asList(params.get("customName").toString().split(","))); } - if (params.containsKey("dosagename")){ - saAggParam.setDosageName(Arrays.asList(params.get("dosagename").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("salerName")){ + saAggParam.setSalerName(Arrays.asList(params.get("salerName").toString().split( ","))); + } + if (params.containsKey("dosageName")){ + saAggParam.setDosageName(Arrays.asList(params.get("dosageName").toString().split( ","))); } if (params.containsKey("stdGoodsName")){ saAggParam.setStdGoodsName(Arrays.asList(params.get("stdGoodsName").toString().split( ","))); } - if (params.containsKey("usemonth") || groupField.contains("usemonth")){ + 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 (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/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")); 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/enhance/example/report/xtsy/zhxsqkLineReportEnhance.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/xtsy/zhxsqkLineReportEnhance.java index 5d55021..87709f3 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/xtsy/zhxsqkLineReportEnhance.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/xtsy/zhxsqkLineReportEnhance.java @@ -30,37 +30,37 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin { } List groupFieldList = Arrays.asList(params.get("Group by").toString().split(",")); String sql; - if(!params.containsKey("useyear")){ - params.put("useyear", new SimpleDateFormat("yyyy").format(new Date())); + if(!params.containsKey("useYear")){ + params.put("useYear", new SimpleDateFormat("yyyy").format(new Date())); } - if((groupFieldList.contains("usemonth") || params.containsKey("usemonth"))){ + if((groupFieldList.contains("useMonth") || params.containsKey("useMonth"))){ sql = geroupMonthSql(params, groupFieldList); }else { StringBuilder executePluginSql = new StringBuilder(); executePluginSql.append(" SELECT \n"); - executePluginSql.append(" current_year_data.use_year as useyear, \n"); + executePluginSql.append(" current_year_data.use_year as useYear, \n"); if (groupFieldList.contains("customname") || params.containsKey("customname")) { //客户名称 executePluginSql.append(" current_year_data.custom_id as customid, \n"); - executePluginSql.append(" current_year_data.custom_name as customname, \n"); + executePluginSql.append(" current_year_data.custom_name as customName, \n"); } - if(groupFieldList.contains("useyear") || params.containsKey("useyear")){ + if(groupFieldList.contains("useYear") || params.containsKey("useYear")){ executePluginSql.append(" current_year_data.use_year as ny, \n"); //年月 } - if (groupFieldList.contains("zonename") || params.containsKey("zonename")) { //业务区域 + if (groupFieldList.contains("zoneName") || params.containsKey("zoneName")) { //业务区域 executePluginSql.append(" current_year_data.zone_id, \n"); - executePluginSql.append(" current_year_data.zone_name as zonename, \n"); + executePluginSql.append(" current_year_data.zone_name as zoneName, \n"); } - if (groupFieldList.contains("saletypename") || params.containsKey("saletypename")) { //销售类型 + if (groupFieldList.contains("saleTypeName") || params.containsKey("saleTypeName")) { //销售类型 executePluginSql.append(" current_year_data.sale_type_id, \n"); - executePluginSql.append(" current_year_data.sale_type_name as saletypename, \n"); + executePluginSql.append(" current_year_data.sale_type_name as saleTypeName, \n"); } - if (groupFieldList.contains("salername") || params.containsKey("salername")) { //业务员 + if (groupFieldList.contains("salerName") || params.containsKey("salerName")) { //业务员 executePluginSql.append(" current_year_data.saler_id, \n"); - executePluginSql.append(" current_year_data.saler_name as salername, \n"); + executePluginSql.append(" current_year_data.saler_name as salerName, \n"); } - if (groupFieldList.contains("dosagename") || params.containsKey("dosagename")) { //剂型 + if (groupFieldList.contains("dosageName") || params.containsKey("dosageName")) { //剂型 executePluginSql.append(" current_year_data.dosage_id, \n"); - executePluginSql.append(" current_year_data.dosage_name as dosagename, \n"); + executePluginSql.append(" current_year_data.dosage_name as dosageName, \n"); } if (groupFieldList.contains("stdGoodsName") || params.containsKey("stdGoodsName")) { //标准品名 executePluginSql.append(" current_year_data.std_goods_name as stdGoodsName, \n"); @@ -134,7 +134,7 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin { executePluginSql.append(" FROM \n"); executePluginSql.append(" (SELECT use_year , \n"); executePluginSql.append(" use_year AS ny, \n"); - if (groupFieldList.contains("customname") || params.containsKey("customname")) { //客户名称 + if (groupFieldList.contains("customName") || params.containsKey("customName")) { //客户名称 executePluginSql.append(" custom_id, \n"); executePluginSql.append(" custom_name , \n"); } @@ -143,20 +143,20 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin { executePluginSql.append(" std_goods_name, \n"); } - if (groupFieldList.contains("zonename") || params.containsKey("zonename")) { //业务区域 + if (groupFieldList.contains("zoneName") || params.containsKey("zoneName")) { //业务区域 executePluginSql.append(" zone_id, \n"); executePluginSql.append(" zone_name, \n"); } - if (groupFieldList.contains("saletypename") || params.containsKey("saletypename")) { //销售类型 + if (groupFieldList.contains("saleTypeName") || params.containsKey("saleTypeName")) { //销售类型 executePluginSql.append(" sale_type_id, \n"); executePluginSql.append(" sale_type_name, \n"); } - if (groupFieldList.contains("dosagename") || params.containsKey("dosagename")) { //剂型 + if (groupFieldList.contains("dosageName") || params.containsKey("dosageName")) { //剂型 executePluginSql.append(" dosage_id, \n"); executePluginSql.append(" dosage_name, \n"); } - if (groupFieldList.contains("salername") || params.containsKey("salername")) { //业务员 + if (groupFieldList.contains("salerName") || params.containsKey("salerName")) { //业务员 executePluginSql.append(" saler_id, \n"); executePluginSql.append(" saler_name, \n"); } @@ -170,27 +170,27 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin { appendWhere(params,executePluginSql); executePluginSql.append(" GROUP BY use_year,"); - if (groupFieldList.contains("customname") || params.containsKey("customname")) { //客户名称 + if (groupFieldList.contains("customName") || params.containsKey("customName")) { //客户名称 executePluginSql.append(" custom_id,"); executePluginSql.append(" custom_name,"); } if (groupFieldList.contains("stdGoodsName") || params.containsKey("stdGoodsName")) { //标准品名 executePluginSql.append(" std_goods_name,"); } - if (groupFieldList.contains("zonename") || params.containsKey("zonename")) { //业务区域 + if (groupFieldList.contains("zoneName") || params.containsKey("zoneName")) { //业务区域 executePluginSql.append(" zone_id,"); executePluginSql.append(" zone_name,"); } - if (groupFieldList.contains("saletypename") || params.containsKey("saletypename")) { //销售类型 + if (groupFieldList.contains("saleTypeName") || params.containsKey("saleTypeName")) { //销售类型 executePluginSql.append(" sale_type_id,"); executePluginSql.append(" sale_type_name,"); } - if (groupFieldList.contains("dosagename") || params.containsKey("dosagename")) { //剂型 + if (groupFieldList.contains("dosageName") || params.containsKey("dosageName")) { //剂型 executePluginSql.append(" dosage_id,"); executePluginSql.append(" dosage_name,"); } - if (groupFieldList.contains("salername") || params.containsKey("salername")) { //业务员 + if (groupFieldList.contains("salerName") || params.containsKey("salerName")) { //业务员 executePluginSql.append(" saler_id,"); executePluginSql.append(" saler_name,"); } @@ -210,12 +210,12 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin { executePluginSql.append(" SUM(this_year_cost) AS last_year_cost, \n"); executePluginSql.append(" SUM(this_year_profit) AS last_year_profit \n"); executePluginSql.append(" FROM new_gr_bi_sa_agg_year_count \n"); - if(params.containsKey("useyear")){ - params.put("useyear", Integer.parseInt(params.get("useyear").toString()) - 1); + if(params.containsKey("useYear")){ + params.put("useYear", Integer.parseInt(params.get("useYear").toString()) - 1); } appendWhere(params, executePluginSql); - if(params.containsKey("useyear")){ - params.put("useyear", Integer.parseInt(params.get("useyear").toString() ) + 1); + if(params.containsKey("useYear")){ + params.put("useYear", Integer.parseInt(params.get("useYear").toString() ) + 1); } executePluginSql.append(" GROUP BY use_year,"); // executePluginSql.append(" custom_id, \n"); @@ -227,23 +227,23 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin { appendGroupByField(params, groupFieldList,executePluginSql); executePluginSql.append(" ) AS last_year_data \n"); executePluginSql.append(" ON last_year_data.use_year = current_year_data.use_year - 1 \n"); - if (groupFieldList.contains("customname") || params.containsKey("customname")) { //客户名称 + if (groupFieldList.contains("customName") || params.containsKey("customName")) { //客户名称 executePluginSql.append(" AND current_year_data.custom_id = last_year_data.custom_id \n"); } if (groupFieldList.contains("stdGoodsName") || params.containsKey("stdGoodsName")) { //标准品名 executePluginSql.append(" AND current_year_data.std_goods_name = last_year_data.std_goods_name \n"); } - if (groupFieldList.contains("zonename") || params.containsKey("zonename")) { //业务区域 + if (groupFieldList.contains("zoneName") || params.containsKey("zoneName")) { //业务区域 executePluginSql.append(" AND current_year_data.zone_id = last_year_data.zone_id \n"); } // executePluginSql.append(" AND current_month.province_id = last_year_data.province_id \n"); - if (groupFieldList.contains("saletypename") || params.containsKey("saletypename")) { //销售类型 + if (groupFieldList.contains("saleTypeName") || params.containsKey("saleTypeName")) { //销售类型 executePluginSql.append(" AND current_year_data.sale_type_id = last_year_data.sale_type_id \n"); } - if (groupFieldList.contains("dosagename") || params.containsKey("dosagename")) { //剂型 + if (groupFieldList.contains("dosageName") || params.containsKey("dosageName")) { //剂型 executePluginSql.append(" AND current_year_data.dosage_id = last_year_data.dosage_id \n"); } - if (groupFieldList.contains("salername") || params.containsKey("salername")) { //业务员 + if (groupFieldList.contains("salerName") || params.containsKey("salerName")) { //业务员 executePluginSql.append(" AND current_year_data.saler_id = last_year_data.saler_id \n"); } // executePluginSql.append(" ON current_year_data.std_goods_name = last_year_data.std_goods_name \n"); @@ -261,29 +261,29 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin { executePluginSql.append(" ON total_year_data.use_year = current_year_data.use_year \n"); // executePluginSql.append(" GROUP BY \n"); -// if (groupFieldList.contains("customname") || params.containsKey("customname")) { +// if (groupFieldList.contains("customName") || params.containsKey("customName")) { // executePluginSql.append(" current_year_data.custom_id,"); // executePluginSql.append(" current_year_data.custom_name,"); // } -// if (groupFieldList.contains("useyear") || params.containsKey("useyear")) { +// if (groupFieldList.contains("useYear") || params.containsKey("useYear")) { // executePluginSql.append(" current_year_data.use_year,"); // } -// if (groupFieldList.contains("usemonth") || params.containsKey("usemonth")) { +// if (groupFieldList.contains("useMonth") || params.containsKey("useMonth")) { // executePluginSql.append(" current_year_data.use_month,"); // } -// if (groupFieldList.contains("zonename") || params.containsKey("zonename")) { +// if (groupFieldList.contains("zoneName") || params.containsKey("zoneName")) { // executePluginSql.append(" current_year_data.zone_id,"); // executePluginSql.append(" current_year_data.zone_name,"); // } -// if (groupFieldList.contains("saletypename") || params.containsKey("saletypename")) { +// if (groupFieldList.contains("saleTypeName") || params.containsKey("saleTypeName")) { // executePluginSql.append(" current_year_data.sale_type_id,"); // executePluginSql.append(" current_year_data.sale_type_name,"); // } -// if (groupFieldList.contains("salername") || params.containsKey("salername")) { +// if (groupFieldList.contains("salerName") || params.containsKey("salerName")) { // executePluginSql.append(" current_year_data.saler_id,"); // executePluginSql.append(" current_year_data.saler_name,"); // } -// if (groupFieldList.contains("dosagename") || params.containsKey("dosagename")) { +// if (groupFieldList.contains("dosageName") || params.containsKey("dosageName")) { // executePluginSql.append(" current_year_data.dosage_id,"); // executePluginSql.append(" current_year_data.dosage_name,"); // } @@ -303,34 +303,34 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin { private String geroupMonthSql(Map params, List groupFieldList) { StringBuilder executePluginSql = new StringBuilder(); executePluginSql.append("select"); - if (groupFieldList.contains("usemonth") || params.containsKey("usemonth")) { //月 - executePluginSql.append(" current_month.use_year as useyear,"); - executePluginSql.append(" current_month.use_month as usemonth, \n"); - if(groupFieldList.contains("useyear") || params.containsKey("useyear")){ + if (groupFieldList.contains("useMonth") || params.containsKey("useMonth")) { //月 + executePluginSql.append(" current_month.use_year as useYear,"); + executePluginSql.append(" current_month.use_month as useMonth, \n"); + if(groupFieldList.contains("useYear") || params.containsKey("useYear")){ executePluginSql.append(" current_month.ny, \n"); //年月 }else{ executePluginSql.append(" LPAD(current_month.use_month, 2, '0') as ny, \n"); } } - if (groupFieldList.contains("customname") || params.containsKey("customname")) { //客户名称 + if (groupFieldList.contains("customName") || params.containsKey("customName")) { //客户名称 executePluginSql.append(" current_month.custom_id as customid, \n"); - executePluginSql.append(" current_month.custom_name as customname, \n"); + executePluginSql.append(" current_month.custom_name as customName, \n"); } - if (groupFieldList.contains("zonename") || params.containsKey("zonename")) { //业务区域 + if (groupFieldList.contains("zoneName") || params.containsKey("zoneName")) { //业务区域 executePluginSql.append(" current_month.zone_id, \n"); - executePluginSql.append(" current_month.zone_name as zonename, \n"); + executePluginSql.append(" current_month.zone_name as zoneName, \n"); } - if (groupFieldList.contains("saletypename") || params.containsKey("saletypename")) { //销售类型 + if (groupFieldList.contains("saleTypeName") || params.containsKey("saleTypeName")) { //销售类型 executePluginSql.append(" current_month.sale_type_id, \n"); - executePluginSql.append(" current_month.sale_type_name as saletypename, \n"); + executePluginSql.append(" current_month.sale_type_name as saleTypeName, \n"); } - if (groupFieldList.contains("salername") || params.containsKey("salername")) { //业务员 + if (groupFieldList.contains("salerName") || params.containsKey("salerName")) { //业务员 executePluginSql.append(" current_month.saler_id, \n"); - executePluginSql.append(" current_month.saler_name as salername, \n"); + executePluginSql.append(" current_month.saler_name as salerName, \n"); } - if (groupFieldList.contains("dosagename") || params.containsKey("dosagename")) { //剂型 + if (groupFieldList.contains("dosageName") || params.containsKey("dosageName")) { //剂型 executePluginSql.append(" current_month.dosage_id, \n"); - executePluginSql.append(" current_month.dosage_name as dosagename, \n"); + executePluginSql.append(" current_month.dosage_name as dosageName, \n"); } if (groupFieldList.contains("stdGoodsName") || params.containsKey("stdGoodsName")) { //标准品名 executePluginSql.append(" current_month.std_goods_name as stdGoodsName, \n"); @@ -409,7 +409,7 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin { executePluginSql.append(" use_year AS use_year, \n"); executePluginSql.append(" use_month AS use_month, \n"); - if (groupFieldList.contains("customname") || params.containsKey("customname")) { //客户名称 + if (groupFieldList.contains("customName") || params.containsKey("customName")) { //客户名称 executePluginSql.append(" custom_id, \n"); executePluginSql.append(" custom_name , \n"); } @@ -418,20 +418,20 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin { executePluginSql.append(" std_goods_name, \n"); } - if (groupFieldList.contains("zonename") || params.containsKey("zonename") ) { //业务区域 + if (groupFieldList.contains("zoneName") || params.containsKey("zoneName") ) { //业务区域 executePluginSql.append(" zone_id, \n"); executePluginSql.append(" zone_name, \n"); } - if (groupFieldList.contains("saletypename") || params.containsKey("saletypename")) { //销售类型 + if (groupFieldList.contains("saleTypeName") || params.containsKey("saleTypeName")) { //销售类型 executePluginSql.append(" sale_type_id, \n"); executePluginSql.append(" sale_type_name, \n"); } - if (groupFieldList.contains("dosagename") || params.containsKey("dosagename")) { //剂型 + if (groupFieldList.contains("dosageName") || params.containsKey("dosageName")) { //剂型 executePluginSql.append(" dosage_id, \n"); executePluginSql.append(" dosage_name, \n"); } - if (groupFieldList.contains("salername") || params.containsKey("salername")) { //业务员 + if (groupFieldList.contains("salerName") || params.containsKey("salerName")) { //业务员 executePluginSql.append(" saler_id, \n"); executePluginSql.append(" saler_name, \n"); } @@ -447,27 +447,27 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin { appendWhere(params, executePluginSql); executePluginSql.append(" GROUP BY use_year,use_month,"); - if (groupFieldList.contains("customname") || params.containsKey("customname")) { //客户名称 + if (groupFieldList.contains("customName") || params.containsKey("customName")) { //客户名称 executePluginSql.append(" custom_id,"); executePluginSql.append(" custom_name,"); } if (groupFieldList.contains("stdGoodsName") || params.containsKey("stdGoodsName")) { //标准品名 executePluginSql.append(" std_goods_name,"); } - if (groupFieldList.contains("zonename") || params.containsKey("zonename")) { //业务区域 + if (groupFieldList.contains("zoneName") || params.containsKey("zoneName")) { //业务区域 executePluginSql.append(" zone_id,"); executePluginSql.append(" zone_name,"); } - if (groupFieldList.contains("saletypename") || params.containsKey("saletypename")) { //销售类型 + if (groupFieldList.contains("saleTypeName") || params.containsKey("saleTypeName")) { //销售类型 executePluginSql.append(" sale_type_id,"); executePluginSql.append(" sale_type_name,"); } - if (groupFieldList.contains("dosagename") || params.containsKey("dosagename")) { //剂型 + if (groupFieldList.contains("dosageName") || params.containsKey("dosageName")) { //剂型 executePluginSql.append(" dosage_id,"); executePluginSql.append(" dosage_name,"); } - if (groupFieldList.contains("salername") || params.containsKey("salername")) { //业务员 + if (groupFieldList.contains("salerName") || params.containsKey("salerName")) { //业务员 executePluginSql.append(" saler_id,"); executePluginSql.append(" saler_name,"); } @@ -489,23 +489,23 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin { executePluginSql.append(" ON last_month_data.use_year = current_month.use_year - (current_month.use_month = 1)\n"); executePluginSql.append(" AND last_month_data.use_month = IF(current_month.use_month = 1, 12, current_month.use_month - 1)\n"); - if (groupFieldList.contains("customname") || params.containsKey("customname") ) { //客户名称 + if (groupFieldList.contains("customName") || params.containsKey("customName") ) { //客户名称 executePluginSql.append(" AND current_month.custom_id = last_month_data.custom_id \n"); } if (groupFieldList.contains("stdGoodsName") || params.containsKey("stdGoodsName")) { //标准品名 executePluginSql.append(" AND current_month.std_goods_name = last_month_data.std_goods_name \n"); } - if (groupFieldList.contains("zonename") || params.containsKey("zonename")) { //业务区域 + if (groupFieldList.contains("zoneName") || params.containsKey("zoneName")) { //业务区域 executePluginSql.append(" AND current_month.zone_id = last_month_data.zone_id \n"); } // executePluginSql.append(" AND current_month.province_id = last_month_data.province_id \n"); - if (groupFieldList.contains("saletypename") || params.containsKey("saletypename")) { //销售类型 + if (groupFieldList.contains("saleTypeName") || params.containsKey("saleTypeName")) { //销售类型 executePluginSql.append(" AND current_month.sale_type_id = last_month_data.sale_type_id \n"); } - if (groupFieldList.contains("dosagename") || params.containsKey("dosagename")) { //剂型 + if (groupFieldList.contains("dosageName") || params.containsKey("dosageName")) { //剂型 executePluginSql.append(" AND current_month.dosage_id = last_month_data.dosage_id \n"); } - if (groupFieldList.contains("salername") || params.containsKey("salername")) { //业务员 + if (groupFieldList.contains("salerName") || params.containsKey("salerName")) { //业务员 executePluginSql.append(" AND current_month.saler_id = last_month_data.saler_id \n"); } executePluginSql.append(" LEFT JOIN (SELECT use_year, \n"); @@ -524,12 +524,12 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin { executePluginSql.append(" SUM(this_month_cost) as yoy_month_cost, \n"); // 同比月销售成本 executePluginSql.append(" SUM(this_month_profit) AS yoy_month_profit \n"); // 同比月毛利额 executePluginSql.append(" FROM new_gr_bi_sa_agg_month_count "); - if(params.containsKey("useyear")){ - params.put("useyear", Integer.parseInt(params.get("useyear").toString()) - 1); + if(params.containsKey("useYear")){ + params.put("useYear", Integer.parseInt(params.get("useYear").toString()) - 1); } appendWhere(params, executePluginSql); - if(params.containsKey("useyear")){ - params.put("useyear", Integer.parseInt(params.get("useyear").toString() ) + 1); + if(params.containsKey("useYear")){ + params.put("useYear", Integer.parseInt(params.get("useYear").toString() ) + 1); } executePluginSql.append(" GROUP BY use_year,use_month,"); appendGroupByField(params, groupFieldList, executePluginSql); @@ -538,20 +538,20 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin { if (groupFieldList.contains("stdGoodsName") || params.containsKey("stdGoodsName")) { //标准品名 executePluginSql.append(" AND yoy_month.std_goods_name = current_month.std_goods_name \n"); } - if (groupFieldList.contains("zonename") || params.containsKey("zonename")) { //业务区域 + if (groupFieldList.contains("zoneName") || params.containsKey("zoneName")) { //业务区域 executePluginSql.append(" AND yoy_month.zone_id = current_month.zone_id \n"); } // executePluginSql.append(" AND yoy_month.province_id = current_month.province_id \n"); - if (groupFieldList.contains("saletypename") || params.containsKey("saletypename")) { //销售类型 + if (groupFieldList.contains("saleTypeName") || params.containsKey("saleTypeName")) { //销售类型 executePluginSql.append(" AND yoy_month.sale_type_id = current_month.sale_type_id \n"); } - if (groupFieldList.contains("dosagename") || params.containsKey("dosagename")) { //剂型 + if (groupFieldList.contains("dosageName") || params.containsKey("dosageName")) { //剂型 executePluginSql.append(" AND yoy_month.dosage_id = current_month.dosage_id \n"); } - if (groupFieldList.contains("customname") || params.containsKey("customname")) { //客户名称 + if (groupFieldList.contains("customName") || params.containsKey("customName")) { //客户名称 executePluginSql.append(" AND yoy_month.custom_id = current_month.custom_id \n"); } - if (groupFieldList.contains("salername") || params.containsKey("salername")) { //业务员 + if (groupFieldList.contains("salerName") || params.containsKey("salerName")) { //业务员 executePluginSql.append(" AND yoy_month.saler_id = current_month.saler_id \n"); } executePluginSql.append(" LEFT JOIN (\n"); @@ -564,36 +564,36 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin { executePluginSql.append(" use_year\n"); executePluginSql.append(" ) total_month_data ON total_month_data.use_year = current_month.use_year \n"); // executePluginSql.append(" AND total_month_data.use_month = current_month.use_month \n"); - if(params.containsKey("useyear")){ - executePluginSql.append(" where current_month.use_year = " + params.get("useyear")); - if(params.containsKey("usemonth")){ - executePluginSql.append(" and current_month.use_month = " + params.get("usemonth")); + if(params.containsKey("useYear")){ + executePluginSql.append(" where current_month.use_year = " + params.get("useYear")); + if(params.containsKey("useMonth")){ + executePluginSql.append(" and current_month.use_month = " + params.get("useMonth")); } } // executePluginSql.append(" GROUP BY \n"); -// if (groupFieldList.contains("customname") || params.containsKey("customname")) { +// if (groupFieldList.contains("customName") || params.containsKey("customName")) { // executePluginSql.append(" current_month.custom_id,"); // executePluginSql.append(" current_month.custom_name,"); // } -// if (groupFieldList.contains("useyear") || params.containsKey("useyear")) { +// if (groupFieldList.contains("useYear") || params.containsKey("useYear")) { // executePluginSql.append(" current_month.use_year,"); // } -// if (groupFieldList.contains("usemonth") || params.containsKey("usemonth")) { +// if (groupFieldList.contains("useMonth") || params.containsKey("useMonth")) { // executePluginSql.append(" current_month.use_month,"); // } -// if (groupFieldList.contains("zonename") || params.containsKey("zonename")) { +// if (groupFieldList.contains("zoneName") || params.containsKey("zoneName")) { // executePluginSql.append(" current_month.zone_id,"); // executePluginSql.append(" current_month.zone_name,"); // } -// if (groupFieldList.contains("saletypename") || params.containsKey("saletypename")) { +// if (groupFieldList.contains("saleTypeName") || params.containsKey("saleTypeName")) { // executePluginSql.append(" current_month.sale_type_id,"); // executePluginSql.append(" current_month.sale_type_name,"); // } -// if (groupFieldList.contains("salername") || params.containsKey("salername")) { +// if (groupFieldList.contains("salerName") || params.containsKey("salerName")) { // executePluginSql.append(" current_month.saler_id,"); // executePluginSql.append(" current_month.saler_name,"); // } -// if (groupFieldList.contains("dosagename") || params.containsKey("dosagename")) { +// if (groupFieldList.contains("dosageName") || params.containsKey("dosageName")) { // executePluginSql.append(" current_month.dosage_id,"); // executePluginSql.append(" current_month.dosage_name,"); // } @@ -607,7 +607,7 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin { } private void appendGroupByField(Map params, List groupFieldList, StringBuilder executePluginSql) { - if (groupFieldList.contains("customname") || params.containsKey("customname")) { //客户名称 + if (groupFieldList.contains("customName") || params.containsKey("customName")) { //客户名称 executePluginSql.append(" custom_id,"); } @@ -615,68 +615,68 @@ public class zhxsqkLineReportEnhance implements ReportBeforeAdvicePlugin { executePluginSql.append(" std_goods_name,"); } - if (groupFieldList.contains("zonename") || params.containsKey("zonename")) { //业务区域 + if (groupFieldList.contains("zoneName") || params.containsKey("zoneName")) { //业务区域 executePluginSql.append(" zone_id,"); } - if (groupFieldList.contains("saletypename") || params.containsKey("saletypename")) { //销售类型 + if (groupFieldList.contains("saleTypeName") || params.containsKey("saleTypeName")) { //销售类型 executePluginSql.append(" sale_type_id,"); } - if (groupFieldList.contains("dosagename") || params.containsKey("dosagename")) { //剂型 + if (groupFieldList.contains("dosageName") || params.containsKey("dosageName")) { //剂型 executePluginSql.append(" dosage_id,"); } - if (groupFieldList.contains("salername") || params.containsKey("salername")) { //业务员 + if (groupFieldList.contains("salerName") || params.containsKey("salerName")) { //业务员 executePluginSql.append(" saler_id,"); } executePluginSql.deleteCharAt(executePluginSql.length() - 1); } private void appendSelectField(Map params, List groupFieldList, StringBuilder executePluginSql) { - if (groupFieldList.contains("customname") || params.containsKey("customname")) { //客户名称 + if (groupFieldList.contains("customName") || params.containsKey("customName")) { //客户名称 executePluginSql.append(" custom_id, \n"); } if (groupFieldList.contains("stdGoodsName") || params.containsKey("stdGoodsName")) { //标准品名 executePluginSql.append(" std_goods_name, \n"); } - if (groupFieldList.contains("zonename") || params.containsKey("zonename")) { //业务区域 + if (groupFieldList.contains("zoneName") || params.containsKey("zoneName")) { //业务区域 executePluginSql.append(" zone_id, \n"); } - if (groupFieldList.contains("saletypename") || params.containsKey("saletypename")) { //销售类型 + if (groupFieldList.contains("saleTypeName") || params.containsKey("saleTypeName")) { //销售类型 executePluginSql.append(" sale_type_id, \n"); } - if (groupFieldList.contains("dosagename") || params.containsKey("dosagename")) { //剂型 + if (groupFieldList.contains("dosageName") || params.containsKey("dosageName")) { //剂型 executePluginSql.append(" dosage_id, \n"); } - if (groupFieldList.contains("salername") || params.containsKey("salername")) { //业务员 + if (groupFieldList.contains("salerName") || params.containsKey("salerName")) { //业务员 executePluginSql.append(" saler_id, \n"); } } private void appendWhere(Map params, StringBuilder executePluginSql) { executePluginSql.append(" where"); - if (params.containsKey("useyear")) { - executePluginSql.append(" use_year = '").append(Integer.parseInt(params.get("useyear").toString())).append("'"); + if (params.containsKey("useYear")) { + executePluginSql.append(" use_year = '").append(Integer.parseInt(params.get("useYear").toString())).append("'"); } - if (params.containsKey("usemonth")) { - executePluginSql.append(" AND use_month = '").append(Integer.parseInt(params.get("usemonth").toString())).append("'"); + if (params.containsKey("useMonth")) { + executePluginSql.append(" AND use_month = '").append(Integer.parseInt(params.get("useMonth").toString())).append("'"); } - if (params.containsKey("customname")) { - executePluginSql.append(" AND custom_name IN ('").append(params.get("customname").toString().replaceAll(",", "','")).append("')"); + if (params.containsKey("customName")) { + executePluginSql.append(" AND custom_name IN ('").append(params.get("customName").toString().replaceAll(",", "','")).append("')"); } if (params.containsKey("stdGoodsName")) { executePluginSql.append(" AND std_goods_name IN ('").append(params.get("stdGoodsName").toString().replaceAll(",", "','")).append("')"); } - if (params.containsKey("zonename")) { - executePluginSql.append(" AND zone_name IN ('").append(params.get("zonename").toString().replaceAll(",", "','")).append("')"); + if (params.containsKey("zoneName")) { + executePluginSql.append(" AND zone_name IN ('").append(params.get("zoneName").toString().replaceAll(",", "','")).append("')"); } - if (params.containsKey("saletypename")) { - executePluginSql.append(" AND sale_type_name IN ('").append(params.get("saletypename").toString().replaceAll(",", "','")).append("')"); + if (params.containsKey("saleTypeName")) { + executePluginSql.append(" AND sale_type_name IN ('").append(params.get("saleTypeName").toString().replaceAll(",", "','")).append("')"); } - if (params.containsKey("dosagename")) { - executePluginSql.append(" AND dosage_name IN ('").append(params.get("dosagename").toString().replaceAll(",", "','")).append("')"); + if (params.containsKey("dosageName")) { + executePluginSql.append(" AND dosage_name IN ('").append(params.get("dosageName").toString().replaceAll(",", "','")).append("')"); } - if (params.containsKey("salername")) { - executePluginSql.append(" AND saler_name IN ('").append(params.get("salername").toString().replaceAll(",", "','")).append("')"); + if (params.containsKey("salerName")) { + executePluginSql.append(" AND saler_name IN ('").append(params.get("salerName").toString().replaceAll(",", "','")).append("')"); } } 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..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 @@ -1,21 +1,149 @@ 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.ReportBeforeAdvicePlugin; +import com.lideeyunji.core.framework.config.aspect.enhancereport.plugin.ReportAroundAdvicePlugin; +import com.lideeyunji.core.framework.entity.NewGrBiSaAggMonthCount; +import com.lideeyunji.core.framework.entity.NewGrBiSaAggYearCount; +import com.lideeyunji.core.framework.service.INewGrBiSaAggMonthCountService; +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 lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; +import javax.annotation.Resource; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + /** * 报表-系统首页-单表 */ @Slf4j @Component("zhxsqkPlugin") -public class zhxsqkPlugin implements ReportBeforeAdvicePlugin { +public class zhxsqkPlugin implements ReportAroundAdvicePlugin { + @Resource + INewGrBiSaAggService newGrBiSaAggService; + + @Resource + INewGrBiSaAggMonthCountService newGrBiSaAggMonthCountService; + + @Resource + INewGrBiSaAggYearCountService newGrBiSaAggYearCountService; @Override - public void execute(EnhanceReportContext enhanceContext) { + public ResultDataModel executeAround(EnhanceReportContext enhanceContext) { + log.info("进入=======>zhxsqkPlugin=======>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(",")); + if(!groupFieldList.contains("useYear") && !params.containsKey("useYear")){ + throw new lideeYunJiException("维度“年” 和 查询条件“年” 不能同时为空!"); + } + 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()); + return ResultDataModel.fomat(pageInfo.getTotal(),list); + } + + }else { + 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/entity/NewGrBiSaAgg.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/NewGrBiSaAgg.java index 907a4f6..919773b 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 @@ -1,9 +1,9 @@ package com.lideeyunji.core.framework.entity; -import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; + import java.io.Serializable; /** @@ -31,7 +31,7 @@ public class NewGrBiSaAgg implements Serializable @TableField(value = "zone_id") - private Long zoneId; + private String zoneId; @TableField(value = "zone_name") @@ -39,7 +39,7 @@ public class NewGrBiSaAgg implements Serializable @TableField(value = "sale_type_id") - private Long saleTypeId; + private String saleTypeId; @TableField(value = "sale_type_name") @@ -47,7 +47,7 @@ public class NewGrBiSaAgg implements Serializable @TableField(value = "custom_id") - private Long customId; + private String customId; @TableField(value = "custom_name") @@ -55,7 +55,7 @@ public class NewGrBiSaAgg implements Serializable @TableField(value = "dosage_id") - private Long dosageId; + private String dosageId; @TableField(value = "dosage_name") @@ -74,7 +74,7 @@ public class NewGrBiSaAgg implements Serializable @TableField(value = "province_id") - private Long provinceId; + private String provinceId; @TableField(value = "province_name") @@ -82,7 +82,7 @@ public class NewGrBiSaAgg implements Serializable @TableField(value = "saler_id") - private Long salerId; + private String salerId; @TableField(value = "saler_name") @@ -90,19 +90,19 @@ public class NewGrBiSaAgg implements Serializable @TableField(value = "this_month_sa_qty") - private BigDecimal thisMonthSaQty; + private String thisMonthSaQty; @TableField(value = "this_month_sa_money") - private BigDecimal thisMonthSaMoney; + private String thisMonthSaMoney; @TableField(value = "this_month_cost") - private BigDecimal thisMonthCost; + private String thisMonthCost; @TableField(value = "this_month_profit") - private BigDecimal thisMonthProfit; + private String thisMonthProfit; 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..be315f7 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 @@ -1,10 +1,9 @@ package com.lideeyunji.core.framework.entity; -import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; -import jdk.nashorn.internal.ir.annotations.Ignore; import lombok.Data; + import java.io.Serializable; /** @@ -27,12 +26,16 @@ public class NewGrBiSaAggMonthCount implements Serializable private String useYear; + @TableField(value = "ny") + private String ny; + + @TableField(value = "use_month") - private Long useMonth; + private String useMonth; @TableField(value = "zone_id") - private Long zoneId; + private String zoneId; @TableField(value = "zone_name") @@ -40,7 +43,7 @@ public class NewGrBiSaAggMonthCount implements Serializable @TableField(value = "sale_type_id") - private Long saleTypeId; + private String saleTypeId; @TableField(value = "sale_type_name") @@ -56,7 +59,7 @@ public class NewGrBiSaAggMonthCount implements Serializable @TableField(value = "dosage_id") - private Long dosageId; + private String dosageId; @TableField(value = "dosage_name") @@ -67,7 +70,7 @@ public class NewGrBiSaAggMonthCount implements Serializable @TableField(value = "province_id") - private Long provinceId; + private String provinceId; @TableField(value = "province_name") @@ -83,78 +86,92 @@ public class NewGrBiSaAggMonthCount implements Serializable @TableField(value = "this_month_sa_qty") - private Long thisMonthSaQty; + private String thisMonthSaQty; @TableField(value = "last_month_sa_qty") - private Long lastMonthSaQty; + private String lastMonthSaQty; @TableField(value = "yoy_month_sa_qty") - private Long yoyMonthSaQty; + private String yoyMonthSaQty; @TableField(value = "this_month_sa_money") - private BigDecimal thisMonthSaMoney; + private String thisMonthSaMoney; @TableField(value = "last_month_sa_money") - private BigDecimal lastMonthSaMoney; + private String lastMonthSaMoney; @TableField(value = "yoy_month_sa_money") - private BigDecimal yoyMonthSaMoney; + private String yoyMonthSaMoney; @TableField(value = "this_month_profit") - private BigDecimal thisMonthProfit; + private String thisMonthProfit; @TableField(value = "last_month_profit") - private BigDecimal lastMonthProfit; + private String lastMonthProfit; @TableField(value = "yoy_month_profit") - private BigDecimal yoyMonthProfit; + private String yoyMonthProfit; @TableField(value = "this_month_cost") - private BigDecimal thisMonthCost; + private String thisMonthCost; @TableField(value = "last_month_cost") - private BigDecimal lastMonthCost; + private String lastMonthCost; @TableField(value = "yoy_month_cost") - private BigDecimal yoyMonthCost; + private String yoyMonthCost; @TableField(value = "this_month_profit_rate") - private BigDecimal thisMonthProfitRate; + private String thisMonthProfitRate; @TableField(value = "last_month_profit_rate") - private BigDecimal lastMonthProfitRate; + private String lastMonthProfitRate; @TableField(value = "last_month_profit_share") - private BigDecimal lastMonthProfitShare; + private String lastMonthProfitShare; @TableField(value = "this_month_sa_money_share") - private BigDecimal thisMonthSaMoneyShare; + private String thisMonthSaMoneyShare; @TableField(value = "this_month_profit_share") - private BigDecimal thisMonthProfitShare; + private String thisMonthProfitShare; @TableField(value = "thissamoney_s") - private BigDecimal thisMonthSaMoney_s; + private String thisMonthSaMoney_s; @TableField(value = "thisprofit_s") - private BigDecimal thisMonthProfit_s; + private String 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/entity/NewGrBiSaAggYearCount.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/NewGrBiSaAggYearCount.java index 761cb26..a0b7a1e 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 @@ -1,9 +1,9 @@ package com.lideeyunji.core.framework.entity; -import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; + import java.io.Serializable; /** @@ -25,9 +25,11 @@ public class NewGrBiSaAggYearCount implements Serializable @TableField(value = "use_year") private String useYear; + @TableField(value = "ny") + private String ny; @TableField(value = "zone_id") - private Long zoneId; + private String zoneId; @TableField(value = "zone_name") @@ -35,7 +37,7 @@ public class NewGrBiSaAggYearCount implements Serializable @TableField(value = "sale_type_id") - private Long saleTypeId; + private String saleTypeId; @TableField(value = "sale_type_name") @@ -43,7 +45,7 @@ public class NewGrBiSaAggYearCount implements Serializable @TableField(value = "custom_id") - private Long customId; + private String customId; @TableField(value = "custom_name") @@ -63,7 +65,7 @@ public class NewGrBiSaAggYearCount implements Serializable @TableField(value = "province_id") - private Long provinceId; + private String provinceId; @TableField(value = "province_name") @@ -71,7 +73,7 @@ public class NewGrBiSaAggYearCount implements Serializable @TableField(value = "saler_id") - private Long salerId; + private String salerId; @TableField(value = "saler_name") @@ -79,76 +81,89 @@ public class NewGrBiSaAggYearCount implements Serializable @TableField(value = "this_year_sa_qty") - private Long thisYearSaQty; + private String thisYearSaQty; @TableField(value = "last_year_sa_qty") - private Long lastYearSaQty; + private String lastYearSaQty; @TableField(value = "this_year_sa_money") - private BigDecimal thisYearSaMoney; + private String thisYearSaMoney; @TableField(value = "last_year_sa_money") - private BigDecimal lastYearSaMoney; + private String lastYearSaMoney; @TableField(value = "this_year_profit") - private BigDecimal thisYearProfit; + private String thisYearProfit; @TableField(value = "last_year_profit") - private BigDecimal lastYearProfit; + private String lastYearProfit; @TableField(value = "this_year_cost") - private BigDecimal thisYearCost; + private String thisYearCost; @TableField(value = "last_year_cost") - private BigDecimal lastYearCost; + private String lastYearCost; @TableField(value = "this_year_profit_rate") - private BigDecimal thisYearProfitRate; + private String thisYearProfitRate; @TableField(value = "last_year_profit_rate") - private BigDecimal lastYearProfitRate; + private String lastYearProfitRate; @TableField(value = "this_year_profit_share") - private BigDecimal thisYearProfitShare; + private String thisYearProfitShare; @TableField(value = "last_year_profit_share") - private BigDecimal lastYearProfitShare; + private String lastYearProfitShare; @TableField(value = "this_year_sa_money_share") - private BigDecimal thisYearSaMoneyShare; + private String thisYearSaMoneyShare; @TableField(value = "last_year_sa_money_share") - private BigDecimal lastYearSaMoneyShare; + private String lastYearSaMoneyShare; @TableField(value = "this_year_sa_money_growth") - private BigDecimal thisYearSaMoneyGrowth; + private String thisYearSaMoneyGrowth; @TableField(value = "this_year_profit_growth") - private BigDecimal thisYearProfitGrowth; + private String thisYearProfitGrowth; @TableField(value = "this_year_profit_change") - private BigDecimal thisYearProfitChange; + private String thisYearProfitChange; @TableField(value = "this_year_sa_money_s") - private BigDecimal thissamoney_s; + private String thisYearSaMoney_s; @TableField(value = "this_year_profit_s") - private BigDecimal thisprofit_s; + private String thisYearProfit_s; + + + @TableField(value = "saqty_yoy") + private String saqty_yoy; + + @TableField(value = "samoney_yoy") + private String samoney_yoy; + + @TableField(value = "profit_yoy") + private String profit_yoy; + + @TableField(value = "thisprofitshare") + private String thisprofitshare; } 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/java/com/lideeyunji/core/framework/mapper/NewGrBiSaAggMapper.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/NewGrBiSaAggMapper.java index faaba90..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 @@ -1,10 +1,16 @@ 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.entity.NewGrBiSaAggMonthCount; +import com.lideeyunji.core.framework.params.SaAggParam; +import com.lideeyunji.tool.framework.permission.core.annotation.DataPermission; import org.apache.ibatis.annotations.Param; /** @@ -61,10 +67,12 @@ public interface NewGrBiSaAggMapper extends BaseMapper /** * 查询综合销售情况明细列表 * - * @param newGrBiSaAgg 综合销售情况明细 + * @param saAggParam 综合销售情况明细参数 * @return 综合销售情况明细集合 */ - public List selectNewGrBiSaAggList(NewGrBiSaAgg newGrBiSaAgg); + @DataPermission(enable = false) + @DS(value = "#dataSourceType") + 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/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/mapper/NewGrBiSaAggYearCountMapper.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/NewGrBiSaAggYearCountMapper.java index 73c6bcd..f23e0b7 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/NewGrBiSaAggYearCountMapper.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/NewGrBiSaAggYearCountMapper.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.NewGrBiSaAggMonthCount; import com.lideeyunji.core.framework.entity.NewGrBiSaAggYearCount; 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; /** @@ -67,4 +70,15 @@ public interface NewGrBiSaAggYearCountMapper extends BaseMapper getTotalDetail(@Param("dataSourceType") String dataSourceType,@Param("saAggParam") SaAggParam saAggParam); + + /** + * 批量查询综合销售情况明细列表 -月度 + * + * @param saAggParam 综合销售情况明细参数 + * @return 综合销售情况明细集合 + */ + @DataPermission(enable = false) + @DS(value = "#dataSourceType") + public List selectNewGrBiSaAggGroupYearList(@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/mapper/OracleProcedureMapper.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/OracleProcedureMapper.java new file mode 100644 index 0000000..159e97b --- /dev/null +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/OracleProcedureMapper.java @@ -0,0 +1,37 @@ +package com.lideeyunji.core.framework.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.lideeyunji.tool.framework.permission.core.annotation.DataPermission; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + * Oracle 存储过程调用 Mapper + */ +@Mapper +public interface OracleProcedureMapper { + + /** + * 调用 Oracle 存储过程 - 示例 + * + * @param dataSourceType 存储过程参数 + * @return 执行结果 + */ + @DS(value = "#dataSourceType") + @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/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-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..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,14 +6,18 @@ 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; 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/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 ef6f27d..3e1044d 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,7 +1,10 @@ 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 org.apache.ibatis.annotations.Param; /** @@ -25,10 +28,10 @@ public interface INewGrBiSaAggService /** * 查询综合销售情况明细列表 * - * @param newGrBiSaAgg 综合销售情况明细 + * @param params 综合销售情况明细 * @return 综合销售情况明细集合 */ - public List selectNewGrBiSaAggList(NewGrBiSaAgg newGrBiSaAgg); + public List selectNewGrBiSaAggList(Map params); /** * 新增综合销售情况明细 diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/INewGrBiSaAggYearCountService.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/INewGrBiSaAggYearCountService.java index 734f32e..6b042b2 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/INewGrBiSaAggYearCountService.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/INewGrBiSaAggYearCountService.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.NewGrBiSaAggMonthCount; import com.lideeyunji.core.framework.entity.NewGrBiSaAggYearCount; import com.lideeyunji.core.framework.params.SaAggParam; @@ -61,4 +64,6 @@ public interface INewGrBiSaAggYearCountService public int deleteNewGrBiSaAggYearCountById(Long id); List getTotalDetail(SaAggParam saAggParam); + + public List selectNewGrBiSaAggGroupYearList(Map params, List groupFieldList); } diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/GrBiFsBusinessRealServiceImpl.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/GrBiFsBusinessRealServiceImpl.java index 50261a2..4197fd3 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/GrBiFsBusinessRealServiceImpl.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/GrBiFsBusinessRealServiceImpl.java @@ -68,6 +68,12 @@ public class GrBiFsBusinessRealServiceImpl 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 b0c8739..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 @@ -1,16 +1,23 @@ 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; 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.entity.NewGrBiSaAggMonthCount; +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; @@ -128,14 +135,50 @@ public class NewGrBiSaAggServiceImpl extends ServiceImpl selectNewGrBiSaAggList(NewGrBiSaAgg newGrBiSaAgg) + public List selectNewGrBiSaAggList(Map params) { + SaAggParam saAggParam = createParam(params); + return this.baseMapper.selectNewGrBiSaAggList(lideeYunJiBaseConstant.DS_ERP_BI_DATA, saAggParam, params); + } - return this.baseMapper.selectNewGrBiSaAggList(newGrBiSaAgg); + + public static SaAggParam createParam(Map params) { + SaAggParam saAggParam = new SaAggParam(); + if (params.containsKey("useYearStart")) { + saAggParam.setUseYearStart(params.get("useYearStart").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( ","))); + } + 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/java/com/lideeyunji/core/framework/service/impl/NewGrBiSaAggYearCountServiceImpl.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/NewGrBiSaAggYearCountServiceImpl.java index 1493d17..15a90b5 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/NewGrBiSaAggYearCountServiceImpl.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/NewGrBiSaAggYearCountServiceImpl.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.NewGrBiSaAggMonthCount; import com.lideeyunji.core.framework.params.SaAggParam; import com.lideeyunji.tool.framework.common.constant.lideeYunJiBaseConstant; import org.springframework.stereotype.Service; @@ -95,4 +98,10 @@ public class NewGrBiSaAggYearCountServiceImpl extends ServiceImpl getTotalDetail(SaAggParam saAggParam) { return this.baseMapper.getTotalDetail(lideeYunJiBaseConstant.DS_ERP_BI_DATA, saAggParam); } + + @Override + public List selectNewGrBiSaAggGroupYearList(Map params, List groupFieldList){ + SaAggParam saAggParam = NewGrBiSaAggServiceImpl.createParam(params); + return this.baseMapper.selectNewGrBiSaAggGroupYearList(lideeYunJiBaseConstant.DS_ERP_BI_DATA, saAggParam,params, groupFieldList); + } } diff --git a/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMapper.xml b/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMapper.xml index d5e43a2..c95224b 100644 --- a/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMapper.xml +++ b/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMapper.xml @@ -28,6 +28,50 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, use_year, use_month, zone_id, zone_name, sale_type_id, sale_type_name, custom_id, custom_name, dosage_id, dosage_name, goods_id, goods_name, province_id, province_name, saler_id, saler_name, this_month_sa_qty, this_month_sa_money, this_month_cost, this_month_profit from new_gr_bi_sa_agg @@ -511,32 +555,154 @@ 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 this_month_sa_qty, + 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 * 100 + use_month) >= (#{saAggParam.useYearStart} * 100 + #{saAggParam.useMonthStart}) + + + AND (use_year * 100 + use_month) <= (#{saAggParam.useYearEnd} * 100 + #{saAggParam.useMonthEnd}) + + + 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} + + - + SELECT - ROUND(SUM(this_month_sa_money) / 10000, 2) AS thissamoney_s, - ROUND(SUM(this_month_profit) / 10000, 2) AS thisprofit_s + ROUND(SUM(this_month_sa_money) / 10000, 2) AS this_month_sa_money_s, + 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} @@ -239,4 +256,493 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{id} + + + \ No newline at end of file diff --git a/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggYearCountMapper.xml b/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggYearCountMapper.xml index 8dc3fbd..5f6e2e3 100644 --- a/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggYearCountMapper.xml +++ b/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggYearCountMapper.xml @@ -3,10 +3,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + + @@ -37,8 +38,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - + + + + + + @@ -51,7 +56,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ROUND(SUM(this_year_profit) / 10000, 2) AS this_year_profit_s FROM new_gr_bi_sa_agg_year_count - and use_year = #{saAggParam.useYear} + + + and use_year >= #{saAggParam.useYearStart} + and use_year <= #{saAggParam.useYearEnd} and custom_name in #{field} @@ -71,18 +79,11 @@ 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.useYearStart} + and use_year <= #{saAggParam.useYearEnd} + 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 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 diff --git a/lidee-core/src/main/resources/mapper/framework/OracleProcedureMapper.xml b/lidee-core/src/main/resources/mapper/framework/OracleProcedureMapper.xml new file mode 100644 index 0000000..452a6c7 --- /dev/null +++ b/lidee-core/src/main/resources/mapper/framework/OracleProcedureMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + + 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} + + 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/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); 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);