package com.project.demo.service.base;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.project.demo.constant.FindConfig;
import com.project.demo.dao.base.BaseMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.ParameterizedType;
import java.net.URLDecoder;
import java.security.MessageDigest;
import java.util.*;
/**
*/
@Slf4j
public class BaseService<E>{
@Autowired
private BaseMapper<E> baseMapper;
Class<E> eClass = (Class<E>)((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[0];
private final String table = humpToLine(eClass.getSimpleName());
public List selectBaseList(String select) {
List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
List<E> list = new ArrayList<>();
for (Map<String,Object> map:mapList) {
list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
}
return list;
}
public List<Map<String,Object>> selectMapBaseList(String select) {
return baseMapper.selectBaseList(select);
}
public int selectBaseCount(String sql) {
return baseMapper.selectBaseCount(sql);
}
public int deleteBaseSql(String sql) {
return baseMapper.deleteBaseSql(sql);
}
public int updateBaseSql(String sql) {
return baseMapper.updateBaseSql(sql);
}
public void insert(Map<String,Object> body){
E entity = JSON.parseObject(JSON.toJSONString(body),eClass);
baseMapper.insert(entity);
log.info("[{}] - 插入操作:{}",entity);
}
@Transactional
public void update(Map<String,String> query,Map<String,String> config,Map<String,Object> body){
QueryWrapper wrapper = new QueryWrapper<E>();
toWhereWrapper(query,"0".equals(config.get(FindConfig.LIKE)),wrapper);
E entity = JSON.parseObject(JSON.toJSONString(body),eClass);
baseMapper.update(entity,wrapper);
log.info("[{}] - 更新操作:{}",entity);
}
public Map<String,Object> selectToPage(Map<String,String> query,Map<String,String> config){
Map<String,Object> map = new HashMap<>();
List list = baseMapper.selectBaseList(select(query, config));
map.put("list",list);
map.put("count",baseMapper.selectBaseCount(count(query,config)));
return map;
}
public Map<String,Object> selectToList(Map<String,String> query,Map<String,String> config){
Map<String,Object> map = new HashMap<>();
List<Map<String,Object>> resultList = baseMapper.selectBaseList(selectGroupCount(query, config));
for (Map<String,Object> sub:resultList) {
sub.put("0",sub.get("count"));
sub.put("1",sub.get(config.get(FindConfig.GROUP_BY)));
}
map.put("list",resultList);
return map;
}
public Integer selectSqlToInteger(String sql){
Integer value = baseMapper.selectBaseCount(sql);
return value;
}
public Map<String,Object> selectBarGroup(Map<String,String> query,Map<String,String> config){
Map<String,Object> map = new HashMap<>();
List<Map<String,Object>> resultList = baseMapper.selectBaseList(barGroup(query, config));
List list = new ArrayList();
for (Map<String,Object> resultMap:resultList) {
List subList = new ArrayList();
for(String key:resultMap.keySet()){//keySet获取map集合key的集合 然后在遍历key即可
subList.add(resultMap.get(key));
}
list.add(subList);
}
map.put("list",list);
return map;
}
// public void barGroup(Map<String,String> query,Map<String,String> config,QueryWrapper wrapper){
// if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
// wrapper.select(config.get(FindConfig.GROUP_BY));
// if (config.get(FindConfig.FIELD) != null && !"".equals(config.get(FindConfig.FIELD))){
// String[] fieldList = config.get(FindConfig.FIELD).split(",");
// for (int i=0;i<fieldList.length;i++)
// wrapper.select("SUM("+fieldList[i]+")");
// }
// toWhereSql(query, "0".equals(config.get(FindConfig.LIKE)),wrapper);
// wrapper.groupBy(config.get(FindConfig.GROUP_BY));
// }else {
// wrapper.select("SUM("+config.get(FindConfig.GROUP_BY)+")");
// toWhereSql(query, "0".equals(config.get(FindConfig.LIKE)),wrapper);
// }
// log.info("[{}] - 查询操作,sql: {}",wrapper.getSqlSelect());
// }
public String barGroup(Map<String,String> query,Map<String,String> config){
StringBuffer sql = new StringBuffer(" SELECT ");
if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
sql.append(config.get(FindConfig.GROUP_BY));
if (config.get(FindConfig.FIELD) != null && !"".equals(config.get(FindConfig.FIELD))){
String[] fieldList = config.get(FindConfig.FIELD).split(",");
for (int i=0;i<fieldList.length;i++)
sql.append(" ,SUM(").append(fieldList[i]).append(")");
}
sql.append(" FROM ").append("`").append(table).append("`");
sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE)),config.get(FindConfig.SQLHWERE)));
sql.append(" ").append("GROUP BY ").append(config.get(FindConfig.GROUP_BY));
}else {
sql.append(" SUM(").append(config.get(FindConfig.GROUP_BY)).append(") FROM ").append("`").append(table).append("`");
sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE)),config.get(FindConfig.SQLHWERE)));
}
log.info("[{}] - 查询操作,sql: {}",table,sql);
return sql.toString();
}
// public void selectGroupCount(Map<String,String> query,Map<String,String> config,QueryWrapper wrapper){
// wrapper.select("count(*) AS count_value",config.get(FindConfig.GROUP_BY));
// toWhereSql(query, "0".equals(config.get(FindConfig.LIKE)),wrapper);
// if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
// wrapper.groupBy(config.get(FindConfig.GROUP_BY));
// }
// log.info("[{}] - 查询操作,sql: {}",wrapper.getSqlSelect());
// }
public String selectGroupCount(Map<String,String> query,Map<String,String> config){
StringBuffer sql = new StringBuffer("select COUNT(*) AS count, ");
sql.append(config.get(FindConfig.GROUP_BY)).append(" ");
sql.append("from ").append("`").append(table).append("` ");
sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE)),config.get(FindConfig.SQLHWERE)));
if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
}
log.info("[{}] - 查询操作,sql: {}",table,sql);
return sql.toString();
}
// public void select(Map<String,String> query,Map<String,String> config,QueryWrapper wrapper){
// wrapper.select(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD));
// toWhereSql(query, "0".equals(c
青铜状态
- 粉丝: 2
- 资源: 57
最新资源
- 基于SOGI代替传统滑模观测器的永磁同步电机无感FOC算法研究与实践,基于SOGI-PLL的永磁同步电机无感FOC 1.采用SOGI代替传统滑模观测器smo中的低通滤波器,有效减小转速波动; 2.提供
- 基于MATLAB Simulink的200W双输入反激变换器模型:输入电压可调230-280V,输出设定为48V闭环控制仿真分析,双输入反激变器模型,200W, 输入电压可变230-280V(可以自己
- 感应电机初步设计报告:功率性能分析、定子设计与仿真,高转矩输出及效率优化,感应电机,功率55KW,转速1485rpm,定子48槽,内容包含RMxprt初步设计以及mawell 2D设计,启动转矩仿真
- 电机控制器与电动车电驱方案的主动阻尼控制与转矩补偿技术-波动抑制效果展示,电机控制器,电动车电驱方案,主动阻尼控制,damping control,转矩补偿,振动、谐振抑制 公司多个量产实际项目中用
- "电力电子方向入门学习-探究PSIM的DC-DC仿真降压斩波电路Buck的工作原理",PSIM的DC-DC仿真,降压斩波电路Buck~~可用作电力电子方向入门学习 ,PSIM的DC-DC仿真; 降压
- 汽车BCM程序源代码解析:从内外灯光到CAN通讯,全面研究国产车电路控制系统的绝佳参考,汽车BCM程序源代码,国产车BCM程序源代码,喜好汽车电路控制系统研究的值得入手 外部灯光:前照灯、
- 轴承清洗机控制系统中S7-200 PLC与MCGS组态的梯形图编程及系统配置详解, S7-200 PLC程序MCGS组态轴承清洗机控制系统 带解释的梯形图程序,接线图原理图图纸,io分配,组态画面
- “Multisim仿真下的220V转12V开关电源电路设计与优化:精密稳压与光耦合器应用”,220v转12v开关电源电路仿真 Multisim仿真 该电路增加了光耦合器和可调精密并联稳压器r4为限流
- 基于模型预测控制MPC的三种路径跟踪仿真:超车、蛇形与直线轨迹,运行稳定,控制流畅,效果良好,基于模型预测mpc的三种路径跟踪,三个仿真,超车轨迹,蛇形轨迹,直线轨迹,仿真运行稳定,控制量变化平滑自然
- 基于MPC的电动汽车分布式协同自适应巡航控制仿真研究:期望加速度与扭矩分配策略,基于MPC的分布式电动汽车协同自适应巡航控制,采用上下分层控制方式,上层控制器采用模型预测控制mpc方式,产生期望的加速
- 基于滑膜控制的后轮主动与DYC协调稳定性控制策略 采用ARS产生期望后轮转角度,DYC产生横摆力矩,实现路面附着系数与车速下的附加横摆力矩分配,提升车辆稳定性,适用于轨迹跟踪的横向稳性控制 ,基于滑膜
- 基于MPC算法的车辆稳定性控制策略:精确预测模型与协调控制仿真验证,基于MPC算法实现的车辆稳定性控制,建立了横摆角速度r、侧向速度、前后质心侧偏角动力学模型作为预测模型,同时考虑车辆的稳定性可通过控
- 基于PID控制的超车轨迹跟踪技术:高效跟踪期望轨迹的详细指南,基于pid控制的超车轨迹跟踪,能够很好的跟踪期望轨迹 有详细的说明文档 ,基于pid控制的超车轨迹跟踪; 轨迹跟踪性能; 详细说明文档
- 递归最小二乘法估计车辆前后轮胎侧偏刚度:仿真实验验证与算法参数需求解析,基于递归最小二乘法估计的车辆前后轮胎的侧偏刚度,如仿真结果图可知,在恒定转角变化速度下,能够很好的估算出前后轮胎的平均刚度,该估
- 基于四轮驱动电动汽车控制平台的模型预测控制轨迹跟踪技术:稳定速度与轨迹跟踪实现及原理详解,附carsim与matlab仿真学习参考,基于四轮驱动电动汽车控制平台实现了纵向速度和横向轨迹跟踪控制,横向算
- 自动驾驶控制下的车辆二、三自由度动力学MPC任意路径跟踪技术-Carsim与Simulink联合仿真展示,自动驾驶控制-二 三自由度动力学MPC任意路径跟踪 是可以跟踪各种自定义路径,可以自己更改参
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈