dw怎样去除网站做的页面模板,针对本地的免费推广平台,网站建设的实训心得 500字,金华市开发区人才网在Internet高速发展的今天#xff0c;我们生活的各个领域都涉及到计算机的应用#xff0c;其中包括乐校园二手书交易管理系统的网络应用#xff0c;在外国二手书交易管理系统已经是很普遍的方式#xff0c;不过国内的管理系统可能还处于起步阶段。乐校园二手书交易管理系统…在Internet高速发展的今天我们生活的各个领域都涉及到计算机的应用其中包括乐校园二手书交易管理系统的网络应用在外国二手书交易管理系统已经是很普遍的方式不过国内的管理系统可能还处于起步阶段。乐校园二手书交易管理系统具有二手书交易管理功能的选择。乐校园二手书交易管理系统采用java技术基于springboot框架mysql数据库进行开发实现了首页、个人中心、用户管理、卖家用户管理、图书分类管理、二手图书管理、求购图书管理、求购回复管理、留言反馈、系统管理、订单管理等内容进行管理本系统具有良好的兼容性和适应性为用户提供更多的乐校园二手书交易信息也提供了良好的平台从而提高系统的核心竞争力。
本文首先介绍了设计的背景与研究目的其次介绍系统相关技术重点叙述了系统功能分析以及详细设计最后总结了系统的开发心得。
关键词java技术二手书交易mysql
基于springboot校园二手书交易管理系统源码和论文355 基于springboot校园二手书交易管理系统源码和论文 Abstract
In the rapid development of the Internet today, all areas of our life are involved in computer applications, including le Campus second-hand book trading management system network application, in foreign second-hand book trading management system is a very common way, but the domestic management system may still be in its infancy. Le campus second-hand book trading management system has the choice of second-hand book trading management function. Le Campus second-hand book trading management system using Java technology, based on springboot framework, mysql database development, Implements the home page, personal center, user management, user management, books classification management seller, second-hand books management, purchasing books management, purchasing management responses, message feedback management, system management, order management, and other content, this system has good compatibility and adaptability, to provide users with more second-hand book trade information, also provide a good platform, Thus improve the core competitiveness of the system. This paper first introduces the design background and research purpose, then introduces the system related technology, focuses on the system function analysis and detailed design, and finally summarizes the development experience of the system. Key words: Java technology; Second-hand book trade; mysql package com.controller;import java.io.File;
import java.math.BigDecimal;
import java.net.URL;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.*;
import java.lang.reflect.InvocationTargetException;import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.*;
import com.entity.view.*;
import com.service.*;
import com.utils.PageUtils;
import com.utils.R;
import com.alibaba.fastjson.*;/*** 公告资讯* 后端接口* author* email
*/
RestController
Controller
RequestMapping(/news)
public class NewsController {private static final Logger logger LoggerFactory.getLogger(NewsController.class);private static final String TABLE_NAME news;Autowiredprivate NewsService newsService;Autowiredprivate TokenService tokenService;Autowiredprivate DictionaryService dictionaryService;//字典Autowiredprivate ForumService forumService;//论坛Autowiredprivate HuodongService huodongService;//活动Autowiredprivate HuodongCollectionService huodongCollectionService;//活动收藏Autowiredprivate HuodongLiuyanService huodongLiuyanService;//活动留言Autowiredprivate HuodongYuyueService huodongYuyueService;//活动报名Autowiredprivate SucaiService sucaiService;//图片素材Autowiredprivate SucaiCollectionService sucaiCollectionService;//图片素材收藏Autowiredprivate SucaiLiuyanService sucaiLiuyanService;//图片素材留言Autowiredprivate SucaishipinService sucaishipinService;//视频素材Autowiredprivate SucaishipinCollectionService sucaishipinCollectionService;//视频素材收藏Autowiredprivate SucaishipinLiuyanService sucaishipinLiuyanService;//视频素材留言Autowiredprivate YonghuService yonghuService;//用户Autowiredprivate UsersService usersService;//管理员/*** 后端列表*/RequestMapping(/page)public R page(RequestParam MapString, Object params, HttpServletRequest request){logger.debug(page方法:,,Controller:{},,params:{},this.getClass().getName(),JSONObject.toJSONString(params));String role String.valueOf(request.getSession().getAttribute(role));if(false)return R.error(511,永不会进入);else if(用户.equals(role))params.put(yonghuId,request.getSession().getAttribute(userId));CommonUtil.checkMap(params);PageUtils page newsService.queryPage(params);//字典表数据转换ListNewsView list (ListNewsView)page.getList();for(NewsView c:list){//修改对应字典表字段dictionaryService.dictionaryConvert(c, request);}return R.ok().put(data, page);}/*** 后端详情*/RequestMapping(/info/{id})public R info(PathVariable(id) Long id, HttpServletRequest request){logger.debug(info方法:,,Controller:{},,id:{},this.getClass().getName(),id);NewsEntity news newsService.selectById(id);if(news !null){//entity转viewNewsView view new NewsView();BeanUtils.copyProperties( news , view );//把实体数据重构到view中//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put(data, view);}else {return R.error(511,查不到数据);}}/*** 后端保存*/RequestMapping(/save)public R save(RequestBody NewsEntity news, HttpServletRequest request){logger.debug(save方法:,,Controller:{},,news:{},this.getClass().getName(),news.toString());String role String.valueOf(request.getSession().getAttribute(role));if(false)return R.error(511,永远不会进入);WrapperNewsEntity queryWrapper new EntityWrapperNewsEntity().eq(news_name, news.getNewsName()).eq(news_types, news.getNewsTypes());logger.info(sql语句:queryWrapper.getSqlSegment());NewsEntity newsEntity newsService.selectOne(queryWrapper);if(newsEntitynull){news.setInsertTime(new Date());news.setCreateTime(new Date());newsService.insert(news);return R.ok();}else {return R.error(511,表中有相同数据);}}/*** 后端修改*/RequestMapping(/update)public R update(RequestBody NewsEntity news, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {logger.debug(update方法:,,Controller:{},,news:{},this.getClass().getName(),news.toString());NewsEntity oldNewsEntity newsService.selectById(news.getId());//查询原先数据String role String.valueOf(request.getSession().getAttribute(role));
// if(false)
// return R.error(511,永远不会进入);if(.equals(news.getNewsPhoto()) || null.equals(news.getNewsPhoto())){news.setNewsPhoto(null);}newsService.updateById(news);//根据id更新return R.ok();}/*** 删除*/RequestMapping(/delete)public R delete(RequestBody Integer[] ids, HttpServletRequest request){logger.debug(delete:,,Controller:{},,ids:{},this.getClass().getName(),ids.toString());ListNewsEntity oldNewsList newsService.selectBatchIds(Arrays.asList(ids));//要删除的数据newsService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 批量上传*/RequestMapping(/batchInsert)public R save( String fileName, HttpServletRequest request){logger.debug(batchInsert方法:,,Controller:{},,fileName:{},this.getClass().getName(),fileName);Integer yonghuId Integer.valueOf(String.valueOf(request.getSession().getAttribute(userId)));SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);try {ListNewsEntity newsList new ArrayList();//上传的东西MapString, ListString seachFields new HashMap();//要查询的字段Date date new Date();int lastIndexOf fileName.lastIndexOf(.);if(lastIndexOf -1){return R.error(511,该文件没有后缀);}else{String suffix fileName.substring(lastIndexOf);if(!.xls.equals(suffix)){return R.error(511,只支持后缀为xls的excel文件);}else{URL resource this.getClass().getClassLoader().getResource(static/upload/ fileName);//获取文件路径File file new File(resource.getFile());if(!file.exists()){return R.error(511,找不到上传文件请联系管理员);}else{ListListString dataList PoiUtil.poiImport(file.getPath());//读取xls文件dataList.remove(0);//删除第一行因为第一行是提示for(ListString data:dataList){//循环NewsEntity newsEntity new NewsEntity();
// newsEntity.setNewsName(data.get(0)); //公告标题 要改的
// newsEntity.setNewsTypes(Integer.valueOf(data.get(0))); //公告类型 要改的
// newsEntity.setNewsPhoto();//详情和图片
// newsEntity.setInsertTime(date);//时间
// newsEntity.setNewsContent();//详情和图片
// newsEntity.setCreateTime(date);//时间newsList.add(newsEntity);//把要查询是否重复的字段放入map中}//查询是否重复newsService.insertBatch(newsList);return R.ok();}}}}catch (Exception e){e.printStackTrace();return R.error(511,批量插入数据异常请联系管理员);}}/*** 前端列表*/IgnoreAuthRequestMapping(/list)public R list(RequestParam MapString, Object params, HttpServletRequest request){logger.debug(list方法:,,Controller:{},,params:{},this.getClass().getName(),JSONObject.toJSONString(params));CommonUtil.checkMap(params);PageUtils page newsService.queryPage(params);//字典表数据转换ListNewsView list (ListNewsView)page.getList();for(NewsView c:list)dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段return R.ok().put(data, page);}/*** 前端详情*/RequestMapping(/detail/{id})public R detail(PathVariable(id) Long id, HttpServletRequest request){logger.debug(detail方法:,,Controller:{},,id:{},this.getClass().getName(),id);NewsEntity news newsService.selectById(id);if(news !null){//entity转viewNewsView view new NewsView();BeanUtils.copyProperties( news , view );//把实体数据重构到view中//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put(data, view);}else {return R.error(511,查不到数据);}}/*** 前端保存*/RequestMapping(/add)public R add(RequestBody NewsEntity news, HttpServletRequest request){logger.debug(add方法:,,Controller:{},,news:{},this.getClass().getName(),news.toString());WrapperNewsEntity queryWrapper new EntityWrapperNewsEntity().eq(news_name, news.getNewsName()).eq(news_types, news.getNewsTypes())
// .notIn(news_types, new Integer[]{102});logger.info(sql语句:queryWrapper.getSqlSegment());NewsEntity newsEntity newsService.selectOne(queryWrapper);if(newsEntitynull){news.setInsertTime(new Date());news.setCreateTime(new Date());newsService.insert(news);return R.ok();}else {return R.error(511,表中有相同数据);}}}
package com.controller;import java.io.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.*;import javax.servlet.http.HttpServletRequest;import com.alibaba.fastjson.JSON;
import com.utils.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import com.annotation.IgnoreAuth;
import com.baidu.aip.face.AipFace;
import com.baidu.aip.face.MatchRequest;
import com.baidu.aip.util.Base64Util;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.ConfigEntity;
import com.service.CommonService;
import com.service.ConfigService;
import com.utils.BaiduUtil;
import com.utils.FileUtil;
import com.utils.R;/*** 通用接口*/
RestController
public class CommonController {private static final Logger logger LoggerFactory.getLogger(CommonController.class);Autowiredprivate CommonService commonService;/*** Java代码实现MySQL数据库导出** param mysqlUrl MySQL安装路径* param hostIP MySQL数据库所在服务器地址IP* param userName 进入数据库所需要的用户名* param hostPort 数据库端口* param password 进入数据库所需要的密码* param savePath 数据库文件保存路径* param fileName 数据库导出文件文件名* param databaseName 要导出的数据库名* return 返回true表示导出成功否则返回false。*/IgnoreAuthRequestMapping(/beifen)public R beifen(String mysqlUrl, String hostIP, String userName, String hostPort, String password, String savePath, String fileName, String databaseName) {File saveFile new File(savePath);if (!saveFile.exists()) {// 如果目录不存在 saveFile.mkdirs();// 创建文件夹 }if (!savePath.endsWith(File.separator)) {savePath savePath File.separator;}PrintWriter printWriter null;BufferedReader bufferedReader null;try {Runtime runtime Runtime.getRuntime();String cmd mysqlUrl mysqldump -h hostIP -u userName -P hostPort -p password databaseName;runtime.exec(cmd);Process process runtime.exec(cmd);InputStreamReader inputStreamReader new InputStreamReader(process.getInputStream(), utf8);bufferedReader new BufferedReader(inputStreamReader);printWriter new PrintWriter(new OutputStreamWriter(new FileOutputStream(savePath fileName), utf8));String line;while ((line bufferedReader.readLine()) ! null) {printWriter.println(line);}printWriter.flush();} catch (Exception e) {e.printStackTrace();return R.error(备份数据出错);} finally {try {if (bufferedReader ! null) {bufferedReader.close();}if (printWriter ! null) {printWriter.close();}} catch (Exception e) {e.printStackTrace();}}return R.ok();}/*** Java实现MySQL数据库导入** param mysqlUrl MySQL安装路径* param hostIP MySQL数据库所在服务器地址IP* param userName 进入数据库所需要的用户名* param hostPort 数据库端口* param password 进入数据库所需要的密码* param savePath 数据库文件保存路径* param fileName 数据库导出文件文件名* param databaseName 要导出的数据库名*/IgnoreAuthRequestMapping(/huanyuan)public R huanyuan(String mysqlUrl, String hostIP, String userName, String hostPort, String password, String savePath, String fileName, String databaseName) {try {Runtime rt Runtime.getRuntime();Process child1 rt.exec(mysqlUrlmysql.exe -h hostIP -u userName -P hostPort -p password databaseName);OutputStream out child1.getOutputStream();//控制台的输入信息作为输出流String inStr;StringBuffer sb new StringBuffer();String outStr;BufferedReader br new BufferedReader(new InputStreamReader(new FileInputStream(savePath/fileName), utf-8));while ((inStr br.readLine()) ! null) {sb.append(inStr \r\n);}outStr sb.toString();OutputStreamWriter writer new OutputStreamWriter(out, utf8);writer.write(outStr);
// 注这里如果用缓冲方式写入文件的话会导致中文乱码用flush()方法则可以避免writer.flush();out.close();br.close();writer.close();} catch (Exception e) {e.printStackTrace();return R.error(数据导入出错);}return R.ok();}/*** 饼状图求和* return*/RequestMapping(/pieSum)public R pieSum(RequestParam MapString,Object params) {logger.debug(饼状图求和:,,Controller:{},,params:{},this.getClass().getName(),params);ListMapString, Object result commonService.pieSum(params);return R.ok().put(data, result);}/*** 饼状图统计* return*/RequestMapping(/pieCount)public R pieCount(RequestParam MapString,Object params) {logger.debug(饼状图统计:,,Controller:{},,params:{},this.getClass().getName(),params);ListMapString, Object result commonService.pieCount(params);return R.ok().put(data, result);}/*** 柱状图求和单列* return*/RequestMapping(/barSumOne)public R barSumOne(RequestParam MapString,Object params) {logger.debug(柱状图求和单列:,,Controller:{},,params:{},this.getClass().getName(),params);ListMapString, Object result commonService.barSumOne(params);ListString xAxis new ArrayList();//报表x轴ListListString yAxis new ArrayList();//y轴ListString legend new ArrayList();//标题ListString yAxis0 new ArrayList();yAxis.add(yAxis0);legend.add();for(MapString, Object map :result){String oneValue String.valueOf(map.get(name));String value String.valueOf(map.get(value));xAxis.add(oneValue);yAxis0.add(value);}MapString, Object resultMap new HashMap();resultMap.put(xAxis,xAxis);resultMap.put(yAxis,yAxis);resultMap.put(legend,legend);return R.ok().put(data, resultMap);}/*** 柱状图统计单列* return*/RequestMapping(/barCountOne)public R barCountOne(RequestParam MapString,Object params) {logger.debug(柱状图统计单列:,,Controller:{},,params:{},this.getClass().getName(),params);ListMapString, Object result commonService.barCountOne(params);ListString xAxis new ArrayList();//报表x轴ListListString yAxis new ArrayList();//y轴ListString legend new ArrayList();//标题ListString yAxis0 new ArrayList();yAxis.add(yAxis0);legend.add();for(MapString, Object map :result){String oneValue String.valueOf(map.get(name));String value String.valueOf(map.get(value));xAxis.add(oneValue);yAxis0.add(value);}MapString, Object resultMap new HashMap();resultMap.put(xAxis,xAxis);resultMap.put(yAxis,yAxis);resultMap.put(legend,legend);return R.ok().put(data, resultMap);}/*** 柱状图统计双列* return*/RequestMapping(/barSumTwo)public R barSumTwo(RequestParam MapString,Object params) {logger.debug(柱状图统计双列:,,Controller:{},,params:{},this.getClass().getName(),params);ListMapString, Object result commonService.barSumTwo(params);ListString xAxis new ArrayList();//报表x轴ListListString yAxis new ArrayList();//y轴ListString legend new ArrayList();//标题MapString, HashMapString, String dataMap new LinkedHashMap();for(MapString, Object map :result){String name1Value String.valueOf(map.get(name1));String name2Value String.valueOf(map.get(name2));String value String.valueOf(map.get(value));if(!legend.contains(name2Value)){legend.add(name2Value);//添加完成后 就是最全的第二列的类型}if(dataMap.containsKey(name1Value)){dataMap.get(name1Value).put(name2Value,value);}else{HashMapString, String name1Data new HashMap();name1Data.put(name2Value,value);dataMap.put(name1Value,name1Data);}}for(int i 0; ilegend.size(); i){yAxis.add(new ArrayListString());}SetString keys dataMap.keySet();for(String key:keys){xAxis.add(key);HashMapString, String map dataMap.get(key);for(int i 0; ilegend.size(); i){ListString data yAxis.get(i);if(StringUtil.isNotEmpty(map.get(legend.get(i)))){data.add(map.get(legend.get(i)));}else{data.add(0);}}}System.out.println();MapString, Object resultMap new HashMap();resultMap.put(xAxis,xAxis);resultMap.put(yAxis,yAxis);resultMap.put(legend,legend);return R.ok().put(data, resultMap);}/*** 柱状图统计双列* return*/RequestMapping(/barCountTwo)public R barCountTwo(RequestParam MapString,Object params) {logger.debug(柱状图统计双列:,,Controller:{},,params:{},this.getClass().getName(),params);ListMapString, Object result commonService.barCountTwo(params);ListString xAxis new ArrayList();//报表x轴ListListString yAxis new ArrayList();//y轴ListString legend new ArrayList();//标题MapString, HashMapString, String dataMap new LinkedHashMap();for(MapString, Object map :result){String name1Value String.valueOf(map.get(name1));String name2Value String.valueOf(map.get(name2));String value String.valueOf(map.get(value));if(!legend.contains(name2Value)){legend.add(name2Value);//添加完成后 就是最全的第二列的类型}if(dataMap.containsKey(name1Value)){dataMap.get(name1Value).put(name2Value,value);}else{HashMapString, String name1Data new HashMap();name1Data.put(name2Value,value);dataMap.put(name1Value,name1Data);}}for(int i 0; ilegend.size(); i){yAxis.add(new ArrayListString());}SetString keys dataMap.keySet();for(String key:keys){xAxis.add(key);HashMapString, String map dataMap.get(key);for(int i 0; ilegend.size(); i){ListString data yAxis.get(i);if(StringUtil.isNotEmpty(map.get(legend.get(i)))){data.add(map.get(legend.get(i)));}else{data.add(0);}}}System.out.println();MapString, Object resultMap new HashMap();resultMap.put(xAxis,xAxis);resultMap.put(yAxis,yAxis);resultMap.put(legend,legend);return R.ok().put(data, resultMap);}/**tableName 查询表condition1 条件1condition1Value 条件1值average 计算平均评分取值有值 Number(res.data.value.toFixed(1))无值 if(res.data){}* */IgnoreAuthRequestMapping(/queryScore)public R queryScore(RequestParam MapString, Object params) {logger.debug(queryScore:,,Controller:{},,params:{},this.getClass().getName(),params);MapString, Object queryScore commonService.queryScore(params);return R.ok().put(data, queryScore);}/*** 查询字典表的分组统计总条数* tableName 表名* groupColumn 分组字段* return*/RequestMapping(/newSelectGroupCount)public R newSelectGroupCount(RequestParam MapString,Object params) {logger.debug(newSelectGroupCount:,,Controller:{},,params:{},this.getClass().getName(),params);ListMapString, Object result commonService.newSelectGroupCount(params);return R.ok().put(data, result);}/*** 查询字典表的分组求和* tableName 表名* groupColumn 分组字段* sumCloum 统计字段* return*/RequestMapping(/newSelectGroupSum)public R newSelectGroupSum(RequestParam MapString,Object params) {logger.debug(newSelectGroupSum:,,Controller:{},,params:{},this.getClass().getName(),params);ListMapString, Object result commonService.newSelectGroupSum(params);return R.ok().put(data, result);}/*** 柱状图求和 老的*/RequestMapping(/barSum)public R barSum(RequestParam MapString,Object params) {logger.debug(barSum方法:,,Controller:{},,params:{},this.getClass().getName(), com.alibaba.fastjson.JSONObject.toJSONString(params));Boolean isJoinTableFlag false;//是否有级联表相关String one ;//第一优先String two ;//第二优先//处理thisTable和joinTable 处理内容是把json字符串转为Map并把带有,的切割为数组//当前表MapString,Object thisTable JSON.parseObject(String.valueOf(params.get(thisTable)),Map.class);params.put(thisTable,thisTable);//级联表String joinTableString String.valueOf(params.get(joinTable));if(StringUtil.isNotEmpty(joinTableString)) {MapString, Object joinTable JSON.parseObject(joinTableString, Map.class);params.put(joinTable, joinTable);isJoinTableFlag true;}if(StringUtil.isNotEmpty(String.valueOf(thisTable.get(date)))){//当前表日期thisTable.put(date,String.valueOf(thisTable.get(date)).split(,));one thisDate0;}if(isJoinTableFlag){//级联表日期MapString, Object joinTable (MapString, Object) params.get(joinTable);if(StringUtil.isNotEmpty(String.valueOf(joinTable.get(date)))){joinTable.put(date,String.valueOf(joinTable.get(date)).split(,));if(StringUtil.isEmpty(one)){one joinDate0;}else{if(StringUtil.isEmpty(two)){two joinDate0;}}}}if(StringUtil.isNotEmpty(String.valueOf(thisTable.get(string)))){//当前表字符串thisTable.put(string,String.valueOf(thisTable.get(string)).split(,));if(StringUtil.isEmpty(one)){one thisString0;}else{if(StringUtil.isEmpty(two)){two thisString0;}}}if(isJoinTableFlag){//级联表字符串MapString, Object joinTable (MapString, Object) params.get(joinTable);if(StringUtil.isNotEmpty(String.valueOf(joinTable.get(string)))){joinTable.put(string,String.valueOf(joinTable.get(string)).split(,));if(StringUtil.isEmpty(one)){one joinString0;}else{if(StringUtil.isEmpty(two)){two joinString0;}}}}if(StringUtil.isNotEmpty(String.valueOf(thisTable.get(types)))){//当前表类型thisTable.put(types,String.valueOf(thisTable.get(types)).split(,));if(StringUtil.isEmpty(one)){one thisTypes0;}else{if(StringUtil.isEmpty(two)){two thisTypes0;}}}if(isJoinTableFlag){//级联表类型MapString, Object joinTable (MapString, Object) params.get(joinTable);if(StringUtil.isNotEmpty(String.valueOf(joinTable.get(types)))){joinTable.put(types,String.valueOf(joinTable.get(types)).split(,));if(StringUtil.isEmpty(one)){one joinTypes0;}else{if(StringUtil.isEmpty(two)){two joinTypes0;}}}}ListMapString, Object result commonService.barSum(params);ListString xAxis new ArrayList();//报表x轴ListListString yAxis new ArrayList();//y轴ListString legend new ArrayList();//标题if(StringUtil.isEmpty(two)){//不包含第二列ListString yAxis0 new ArrayList();yAxis.add(yAxis0);legend.add();for(MapString, Object map :result){String oneValue String.valueOf(map.get(one));String value String.valueOf(map.get(value));xAxis.add(oneValue);yAxis0.add(value);}}else{//包含第二列MapString, HashMapString, String dataMap new LinkedHashMap();if(StringUtil.isNotEmpty(two)){for(MapString, Object map :result){String oneValue String.valueOf(map.get(one));String twoValue String.valueOf(map.get(two));String value String.valueOf(map.get(value));if(!legend.contains(twoValue)){legend.add(twoValue);//添加完成后 就是最全的第二列的类型}if(dataMap.containsKey(oneValue)){dataMap.get(oneValue).put(twoValue,value);}else{HashMapString, String oneData new HashMap();oneData.put(twoValue,value);dataMap.put(oneValue,oneData);}}}for(int i 0; ilegend.size(); i){yAxis.add(new ArrayListString());}SetString keys dataMap.keySet();for(String key:keys){xAxis.add(key);HashMapString, String map dataMap.get(key);for(int i 0; ilegend.size(); i){ListString data yAxis.get(i);if(StringUtil.isNotEmpty(map.get(legend.get(i)))){data.add(map.get(legend.get(i)));}else{data.add(0);}}}System.out.println();}MapString, Object resultMap new HashMap();resultMap.put(xAxis,xAxis);resultMap.put(yAxis,yAxis);resultMap.put(legend,legend);return R.ok().put(data, resultMap);}/*** 柱状图统计 老的*/RequestMapping(/barCount)public R barCount(RequestParam MapString,Object params) {logger.debug(barCount方法:,,Controller:{},,params:{},this.getClass().getName(), com.alibaba.fastjson.JSONObject.toJSONString(params));Boolean isJoinTableFlag false;//是否有级联表相关String one ;//第一优先String two ;//第二优先//处理thisTable和joinTable 处理内容是把json字符串转为Map并把带有,的切割为数组//当前表MapString,Object thisTable JSON.parseObject(String.valueOf(params.get(thisTable)),Map.class);params.put(thisTable,thisTable);//级联表String joinTableString String.valueOf(params.get(joinTable));if(StringUtil.isNotEmpty(joinTableString)) {MapString, Object joinTable JSON.parseObject(joinTableString, Map.class);params.put(joinTable, joinTable);isJoinTableFlag true;}if(StringUtil.isNotEmpty(String.valueOf(thisTable.get(date)))){//当前表日期thisTable.put(date,String.valueOf(thisTable.get(date)).split(,));one thisDate0;}if(isJoinTableFlag){//级联表日期MapString, Object joinTable (MapString, Object) params.get(joinTable);if(StringUtil.isNotEmpty(String.valueOf(joinTable.get(date)))){joinTable.put(date,String.valueOf(joinTable.get(date)).split(,));if(StringUtil.isEmpty(one)){one joinDate0;}else{if(StringUtil.isEmpty(two)){two joinDate0;}}}}if(StringUtil.isNotEmpty(String.valueOf(thisTable.get(string)))){//当前表字符串thisTable.put(string,String.valueOf(thisTable.get(string)).split(,));if(StringUtil.isEmpty(one)){one thisString0;}else{if(StringUtil.isEmpty(two)){two thisString0;}}}if(isJoinTableFlag){//级联表字符串MapString, Object joinTable (MapString, Object) params.get(joinTable);if(StringUtil.isNotEmpty(String.valueOf(joinTable.get(string)))){joinTable.put(string,String.valueOf(joinTable.get(string)).split(,));if(StringUtil.isEmpty(one)){one joinString0;}else{if(StringUtil.isEmpty(two)){two joinString0;}}}}if(StringUtil.isNotEmpty(String.valueOf(thisTable.get(types)))){//当前表类型thisTable.put(types,String.valueOf(thisTable.get(types)).split(,));if(StringUtil.isEmpty(one)){one thisTypes0;}else{if(StringUtil.isEmpty(two)){two thisTypes0;}}}if(isJoinTableFlag){//级联表类型MapString, Object joinTable (MapString, Object) params.get(joinTable);if(StringUtil.isNotEmpty(String.valueOf(joinTable.get(types)))){joinTable.put(types,String.valueOf(joinTable.get(types)).split(,));if(StringUtil.isEmpty(one)){one joinTypes0;}else{if(StringUtil.isEmpty(two)){two joinTypes0;}}}}ListMapString, Object result commonService.barCount(params);ListString xAxis new ArrayList();//报表x轴ListListString yAxis new ArrayList();//y轴ListString legend new ArrayList();//标题if(StringUtil.isEmpty(two)){//不包含第二列ListString yAxis0 new ArrayList();yAxis.add(yAxis0);legend.add();for(MapString, Object map :result){String oneValue String.valueOf(map.get(one));String value String.valueOf(map.get(value));xAxis.add(oneValue);yAxis0.add(value);}}else{//包含第二列MapString, HashMapString, String dataMap new LinkedHashMap();if(StringUtil.isNotEmpty(two)){for(MapString, Object map :result){String oneValue String.valueOf(map.get(one));String twoValue String.valueOf(map.get(two));String value String.valueOf(map.get(value));if(!legend.contains(twoValue)){legend.add(twoValue);//添加完成后 就是最全的第二列的类型}if(dataMap.containsKey(oneValue)){dataMap.get(oneValue).put(twoValue,value);}else{HashMapString, String oneData new HashMap();oneData.put(twoValue,value);dataMap.put(oneValue,oneData);}}}for(int i 0; ilegend.size(); i){yAxis.add(new ArrayListString());}SetString keys dataMap.keySet();for(String key:keys){xAxis.add(key);HashMapString, String map dataMap.get(key);for(int i 0; ilegend.size(); i){ListString data yAxis.get(i);if(StringUtil.isNotEmpty(map.get(legend.get(i)))){data.add(map.get(legend.get(i)));}else{data.add(0);}}}System.out.println();}MapString, Object resultMap new HashMap();resultMap.put(xAxis,xAxis);resultMap.put(yAxis,yAxis);resultMap.put(legend,legend);return R.ok().put(data, resultMap);}
}