赞
踩
使用旧方法对福泰轴承股份有限公司进销存系统的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在福泰轴承股份有限公司进销存系统的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发的福泰轴承股份有限公司进销存系统对仓库人员管理、字典管理、公告管理、供应商信息管理、客户管理、商品管理、商品出入库管理、商品销售管理、销售人员管理、商品退货管理、管理员管理等进行集中化处理。经过前面自己查阅的网络知识,加上自己在学校课堂上学习的知识,决定开发系统选择小程序模式这种高效率的模式完成系统功能开发。这种模式让操作员基于浏览器的方式进行网站访问,采用的主流的Java语言这种面向对象的语言进行福泰轴承股份有限公司进销存系统程序的开发,在数据库的选择上面,选择功能强大的Mysql数据库进行数据的存放操作。福泰轴承股份有限公司进销存系统的开发让用户查看商品信息变得容易,让管理员高效管理商品信息。
关键词:福泰轴承股份有限公司进销存系统;商品信息;公告;自助资讯
基于springboot公司进销存管理系统源码和论文532
演示视频:
基于springboot公司进销存管理系统源码和论文
表4.1仓库人员表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
1 | Id | Int | id | 否 |
2 | cangkurenyuan_name | String | 仓库人员姓名 | 是 |
3 | cangkurenyuan_phone | String | 仓库人员手机号 | 是 |
4 | cangkurenyuan_id_number | String | 仓库人员身份证号 | 是 |
5 | cangkurenyuan_photo | String | 仓库人员照片 | 是 |
6 | xiaoshourenyuan_zhuzhi | String | 现住址 | 是 |
7 | cangkurenyuan_email | String | 电子邮箱 | 是 |
8 | create_time | Date | 创建时间 | 是 |
表4.2字典表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
1 | Id | Int | id | 否 |
2 | dic_code | String | 字段 | 是 |
3 | dic_name | String | 字段名 | 是 |
4 | code_index | Integer | 编码 | 是 |
5 | index_name | String | 编码名字 | 是 |
6 | super_id | Integer | 父字段id | 是 |
7 | beizhu | String | 备注 | 是 |
8 | create_time | Date | 创建时间 | 是 |
表4.3公告表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
1 | Id | Int | id | 否 |
2 | gonggao_name | String | 公告名称 | 是 |
3 | gonggao_types | Integer | 公告类型 | 是 |
4 | insert_time | Date | 公告发布时间 | 是 |
5 | gonggao_content | String | 公告详情 | 是 |
6 | create_time | Date | 创建时间 | 是 |
表4.4供应商信息表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
1 | Id | Int | id | 否 |
2 | gongyingshang_uuid_number | String | 供应商唯一编号 | 是 |
3 | gongyingshang_name | String | 供应商名称 | 是 |
4 | lianxiren_name | String | 联系人姓名 | 是 |
5 | lianxiren_phone | String | 联系人手机号 | 是 |
6 | lianxiren_address | String | 地址 | 是 |
7 | gongyingshang_types | Integer | 供应商类型 | 是 |
8 | gongyingshang_xinyongdengji_types | Integer | 信用等级 | 是 |
9 | gongyingshang_content | String | 供应商详情 | 是 |
10 | create_time | Date | 创建时间 | 是 |
表4.5客户表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
1 | Id | Int | id | 否 |
2 | xiaoshourenyuan_id | Integer | 销售人员 | 是 |
3 | kehu_uuid_number | String | 客户编号 | 是 |
4 | kehu_name | String | 客户姓名 | 是 |
5 | kehu_phone | String | 客户手机号 | 是 |
6 | kehu_id_number | String | 客户身份证号 | 是 |
7 | kehu_photo | String | 客户照片 | 是 |
8 | kehu_zhuzhi | String | 客户住址 | 是 |
9 | laiyuan_types | Integer | 客户来源 | 是 |
10 | sex_types | Integer | 性别 | 是 |
11 | age | Integer | 年龄 | 是 |
12 | kehu_email | String | 客户邮箱 | 是 |
13 | kehu_content | String | 客户备注 | 是 |
14 | insert_time | Date | 录入时间 | 是 |
15 | create_time | Date | 创建时间 | 是 |
表4.6商品表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
1 | Id | Int | id | 否 |
2 | gongyingshang_id | Integer | 供应商 | 是 |
3 | shangpin_uuid_number | String | 商品编号 | 是 |
4 | shangpin_name | String | 商品名称 | 是 |
5 | shangpin_photo | String | 商品照片 | 是 |
6 | shangpin_danwei | String | 单位 | 是 |
7 | shangpin_types | Integer | 商品类型 | 是 |
8 | shangpin_kucun_number | Integer | 商品库存 | 是 |
9 | shangpin_new_money | BigDecimal | 进价 | 是 |
10 | shangpin_old_money | BigDecimal | 售价 | 是 |
11 | cangku_types | Integer | 仓库 | 是 |
12 | daoqi_time | Date | 到期时间 | 是 |
13 | shangpin_content | String | 商品介绍 | 是 |
14 | insert_time | Date | 录入时间 | 是 |
15 | create_time | Date | 创建时间 | 是 |
表4.7商品出入库表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
1 | Id | Int | id | 否 |
2 | shangpin_id | Integer | 商品 | 是 |
3 | cangkurenyuan_id | Integer | 仓库人员 | 是 |
4 | shangpincuruku_uuid_number | String | 出入库编号 | 是 |
5 | shangpincuruku_name | String | 出入库标题 | 是 |
6 | shangpincuruku_types | Integer | 类型 | 是 |
7 | caozuo_number | Integer | 操作数量 | 是 |
8 | jieqing_types | Integer | 钱款结清 | 是 |
9 | shangpincuruku_content | String | 备注 | 是 |
10 | insert_time | Date | 录入时间 | 是 |
11 | create_time | Date | 创建时间 | 是 |
表4.8商品销售表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
1 | Id | Int | id | 否 |
2 | shangpin_id | Integer | 商品 | 是 |
3 | kehu_id | Integer | 客户 | 是 |
4 | xiaoshourenyuan_id | Integer | 销售人员 | 是 |
5 | shangpinxiaoshou_uuid_number | String | 销售编号 | 是 |
6 | shangpinxiaoshou_name | String | 销售标题 | 是 |
7 | caozuo_number | Integer | 销售数量 | 是 |
8 | jieqing_types | Integer | 钱款结清 | 是 |
9 | huafei_money | BigDecimal | 销售金额 | 是 |
10 | xiaoshou_time | Date | 销售时间 | 是 |
11 | shangpinxiaoshou_content | String | 备注 | 是 |
12 | insert_time | Date | 录入时间 | 是 |
13 | create_time | Date | 创建时间 | 是 |
表4.9销售人员表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
1 | Id | Int | id | 否 |
2 | xiaoshourenyuan_name | String | 销售人员姓名 | 是 |
3 | xiaoshourenyuan_phone | String | 销售人员手机号 | 是 |
4 | xiaoshourenyuan_id_number | String | 销售人员身份证号 | 是 |
5 | xiaoshourenyuan_photo | String | 销售人员照片 | 是 |
6 | xiaoshourenyuan_zhuzhi | String | 现住址 | 是 |
7 | xiaoshourenyuan_email | String | 电子邮箱 | 是 |
8 | create_time | Date | 创建时间 | 是 |
表4.10商品退货表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
1 | Id | Int | id | 否 |
2 | shangpinxiaoshou_id | Integer | 商品销售 | 是 |
3 | xiaoshoutuihuo_uuid_number | String | 退货编号 | 是 |
4 | caozuo_number | Integer | 退货数量 | 是 |
5 | xiaoshoutuihuo_yuanyou_content | String | 退货缘由 | 是 |
6 | tuihuan_jine | BigDecimal | 退还金额 | 是 |
7 | tuihuo_time | Date | 退货时间 | 是 |
8 | xiaoshoutuihuo_content | String | 备注 | 是 |
9 | insert_time | Date | 录入时间 | 是 |
10 | create_time | Date | 创建时间 | 是 |
表4.11管理员表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
1 | Id | Int | id | 否 |
2 | username | String | 用户名 | 是 |
3 | password | String | 密码 | 是 |
4 | role | String | 角色 | 是 |
5 | addtime | Date | 新增时间 | 是 |
Using the old method to systematically manage the tourist attraction information no longer makes people trust. Applying the current network information technology to the management of tourist attraction information can solve many problems in information management, such as processing data for a long time, data There are problems such as errors that cannot be corrected in time. The self-guided website developed this time centralizes the city information of attractions, tourist attractions information, comment information, and self-help information. After learning the network knowledge I had previously consulted and the knowledge I learned in the school classroom, I decided to develop the system to select the 小程序 mode, an efficient mode to complete system function development. This mode allows the operator to access the website based on the browser. The mainstream Java language is used in the object-oriented language to develop the self-guided website program. In the database selection, select the powerful Mysql database for data. Store operation. The development of self-guided websites makes it easy for users to view information on attractions, allowing administrators to efficiently manage information on attractions.
Key Words:Self-guided tour website; tourist attractions; reviews; self-help information
现在大家正处于互联网加的时代,这个时代它就是一个信息内容无比丰富,信息处理与管理变得越加高效的网络化的时代,这个时代让大家的生活不仅变得更加地便利化,也让时间变得更加地宝贵化,因为每天的每分钟,每秒钟这些时间都能让人们处理大批量的日常事务,这些场景,是之前的手工模式无法与之相抗衡的。对于商品信息的管理来说,传统的通过纸质文档记录信息的方式已经落后了,依靠手工管理商品信息,不仅花费较长的工作时间,在对记录各种信息的文档进行信息查询以及信息核对操作时,也不能及时保证信息的准确性,基于这样的办公低效率环境下,对于商品信息的处理就要提出新的解决方案。因为这个时代的信息一直都在高速发展,要是不抱着发展的观念看待事情,极有可能被这个市场快速遗忘,甚至被无情地淘汰掉。所以尽早开发一款福泰轴承股份有限公司进销存系统进行信息的快速处理,既跟上了时代的发展脚步,也能让自己的核心竞争力有所提升。
互联网加的时代一方面是加快信息的发展,另一方面也是对传统行业进行筛选,能够继续发展的,肯定是那些能够充分运用互联网技术进行自身升级改革的行业。那些停步不前的行业只能就此结束,进而被大家所遗忘。这次设计出来的福泰轴承股份有限公司进销存系统,它不仅能够让管理人员在信息增加,信息的编辑等事务处理上,节省很多的时间,也会砍掉一部分的人工成本,节省不必要开支的资金。另外,此系统的操作界面是可视化的界面,管理人员无需付费培训就能尽快上手。福泰轴承股份有限公司进销存系统的开发意义如下:
1、管理人员再也不用在查询信息上花费大量宝贵的时间了,通过信息关键词字段就可以在几秒内获取需要的信息,在各种突发事件面前管理人员也不用慌张,可以从容淡定地处理各种相关信息。
2、该系统在每天的24小时期间都是不会停止服务的,只要有信息操作的需要,管理人员都能使用常用的360浏览器,或者百度浏览器,或者谷歌浏览器,2345浏览器等大众浏览器都能登录系统,然后操作对应的功能。
3、有了这款信息管理类操作软件,所有需要进行处理的数据不用在纸质版本的文档上进行记载,而是基于电脑进行信息录入。
4、商品方面的信息都是通过网站进行显示,其实质是这些信息都保存在网站对应的数据库里面。只要操作员不去恶意删除信息,那么这些信息将会永久保存。
编写福泰轴承股份有限公司进销存系统相对应的论文,其实就是对开发完成的程序进行再次解读的过程。本论文从七个方面的内容讲解了开发的程序,具体内容如下:
第一个部分:就是论文的绪论,这个部分就是介绍在什么样的背景下开发的程序,以及这个程序开发出来具有什么意义等内容。
第二个部分:就是介绍开发这个程序使用了什么技术,使用什么数据库保存程序的数据信息,程序开发的语言是使用的什么语言等内容。
第三个部分:就是介绍这个程序开发在现实生活的可行性问题,也讲述了程序开发需要设置什么功能等内容。
第四个部分:就是已经知晓程序的大致功能,需要对程序的功能进行更为严格的细分,也需要出具相应的功能结构图,同时,也要设计程序对应的数据库,包括数据库里面的数据表的设计等内容。
第五个部分:就是在系统的编码阶段,需要使用编程语言完成程序的功能,完成程序的界面设计,最终以界面实现的效果图展示设计成果等内容。
第六个部分:就是程序已经完成了开发的前提之下,需要检测程序的各个模块是否衔接正常,程序各个功能能否在网络等一切外部条件正常的情况下运行,这期间要是出现任何错误都需要及时记录并在后期进行修补完善。
第七个部分:就是论文最后的总结部分,描述遇到的问题,采用的解决思路等内容。
- 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);
- @Autowired
- private 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。
- */
- @IgnoreAuth
- @RequestMapping("/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 要导出的数据库名
- */
- @IgnoreAuth
- @RequestMapping("/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(mysqlUrl+"mysql.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 Map<String,Object> params) {
- logger.debug("饼状图求和:,,Controller:{},,params:{}",this.getClass().getName(),params);
- List<Map<String, Object>> result = commonService.pieSum(params);
- return R.ok().put("data", result);
- }
-
- /**
- * 饼状图统计
- * @return
- */
- @RequestMapping("/pieCount")
- public R pieCount(@RequestParam Map<String,Object> params) {
- logger.debug("饼状图统计:,,Controller:{},,params:{}",this.getClass().getName(),params);
- List<Map<String, Object>> result = commonService.pieCount(params);
- return R.ok().put("data", result);
- }
-
- /**
- * 柱状图求和单列
- * @return
- */
- @RequestMapping("/barSumOne")
- public R barSumOne(@RequestParam Map<String,Object> params) {
- logger.debug("柱状图求和单列:,,Controller:{},,params:{}",this.getClass().getName(),params);
- List<Map<String, Object>> result = commonService.barSumOne(params);
- List<String> xAxis = new ArrayList<>();//报表x轴
- List<List<String>> yAxis = new ArrayList<>();//y轴
- List<String> legend = new ArrayList<>();//标题
- List<String> yAxis0 = new ArrayList<>();
- yAxis.add(yAxis0);
- legend.add("");
- for(Map<String, Object> map :result){
- String oneValue = String.valueOf(map.get("name"));
- String value = String.valueOf(map.get("value"));
- xAxis.add(oneValue);
- yAxis0.add(value);
- }
- Map<String, 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 Map<String,Object> params) {
- logger.debug("柱状图统计单列:,,Controller:{},,params:{}",this.getClass().getName(),params);
- List<Map<String, Object>> result = commonService.barCountOne(params);
- List<String> xAxis = new ArrayList<>();//报表x轴
- List<List<String>> yAxis = new ArrayList<>();//y轴
- List<String> legend = new ArrayList<>();//标题
-
- List<String> yAxis0 = new ArrayList<>();
- yAxis.add(yAxis0);
- legend.add("");
- for(Map<String, Object> map :result){
- String oneValue = String.valueOf(map.get("name"));
- String value = String.valueOf(map.get("value"));
- xAxis.add(oneValue);
- yAxis0.add(value);
- }
- Map<String, 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 Map<String,Object> params) {
- logger.debug("柱状图统计双列:,,Controller:{},,params:{}",this.getClass().getName(),params);
- List<Map<String, Object>> result = commonService.barSumTwo(params);
- List<String> xAxis = new ArrayList<>();//报表x轴
- List<List<String>> yAxis = new ArrayList<>();//y轴
- List<String> legend = new ArrayList<>();//标题
-
- Map<String, HashMap<String, String>> dataMap = new LinkedHashMap<>();
- for(Map<String, 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{
- HashMap<String, String> name1Data = new HashMap<>();
- name1Data.put(name2Value,value);
- dataMap.put(name1Value,name1Data);
- }
-
- }
-
- for(int i =0; i<legend.size(); i++){
- yAxis.add(new ArrayList<String>());
- }
-
- Set<String> keys = dataMap.keySet();
- for(String key:keys){
- xAxis.add(key);
- HashMap<String, String> map = dataMap.get(key);
- for(int i =0; i<legend.size(); i++){
- List<String> 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();
-
- Map<String, 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 Map<String,Object> params) {
- logger.debug("柱状图统计双列:,,Controller:{},,params:{}",this.getClass().getName(),params);
- List<Map<String, Object>> result = commonService.barCountTwo(params);
- List<String> xAxis = new ArrayList<>();//报表x轴
- List<List<String>> yAxis = new ArrayList<>();//y轴
- List<String> legend = new ArrayList<>();//标题
-
- Map<String, HashMap<String, String>> dataMap = new LinkedHashMap<>();
- for(Map<String, 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{
- HashMap<String, String> name1Data = new HashMap<>();
- name1Data.put(name2Value,value);
- dataMap.put(name1Value,name1Data);
- }
-
- }
-
- for(int i =0; i<legend.size(); i++){
- yAxis.add(new ArrayList<String>());
- }
-
- Set<String> keys = dataMap.keySet();
- for(String key:keys){
- xAxis.add(key);
- HashMap<String, String> map = dataMap.get(key);
- for(int i =0; i<legend.size(); i++){
- List<String> 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();
-
- Map<String, Object> resultMap = new HashMap<>();
- resultMap.put("xAxis",xAxis);
- resultMap.put("yAxis",yAxis);
- resultMap.put("legend",legend);
- return R.ok().put("data", resultMap);
- }
-
- /**
- tableName 查询表
- condition1 条件1
- condition1Value 条件1值
- average 计算平均评分
-
- 取值
- 有值 Number(res.data.value.toFixed(1))
- 无值 if(res.data){}
- * */
- @IgnoreAuth
- @RequestMapping("/queryScore")
- public R queryScore(@RequestParam Map<String, Object> params) {
- logger.debug("queryScore:,,Controller:{},,params:{}",this.getClass().getName(),params);
- Map<String, Object> queryScore = commonService.queryScore(params);
- return R.ok().put("data", queryScore);
- }
-
- /**
- * 查询字典表的分组统计总条数
- * tableName 表名
- * groupColumn 分组字段
- * @return
- */
- @RequestMapping("/newSelectGroupCount")
- public R newSelectGroupCount(@RequestParam Map<String,Object> params) {
- logger.debug("newSelectGroupCount:,,Controller:{},,params:{}",this.getClass().getName(),params);
- List<Map<String, Object>> result = commonService.newSelectGroupCount(params);
- return R.ok().put("data", result);
- }
-
- /**
- * 查询字典表的分组求和
- * tableName 表名
- * groupColumn 分组字段
- * sumCloum 统计字段
- * @return
- */
- @RequestMapping("/newSelectGroupSum")
- public R newSelectGroupSum(@RequestParam Map<String,Object> params) {
- logger.debug("newSelectGroupSum:,,Controller:{},,params:{}",this.getClass().getName(),params);
- List<Map<String, Object>> result = commonService.newSelectGroupSum(params);
- return R.ok().put("data", result);
- }
-
- /**
- * 柱状图求和 老的
- */
- @RequestMapping("/barSum")
- public R barSum(@RequestParam Map<String,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并把带有,的切割为数组
- //当前表
- Map<String,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)) {
- Map<String, 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){//级联表日期
- Map<String, Object> joinTable = (Map<String, 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){//级联表字符串
- Map<String, Object> joinTable = (Map<String, 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){//级联表类型
- Map<String, Object> joinTable = (Map<String, 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";
- }
- }
-
- }
- }
-
- List<Map<String, Object>> result = commonService.barSum(params);
- List<String> xAxis = new ArrayList<>();//报表x轴
- List<List<String>> yAxis = new ArrayList<>();//y轴
- List<String> legend = new ArrayList<>();//标题
-
- if(StringUtil.isEmpty(two)){//不包含第二列
- List<String> yAxis0 = new ArrayList<>();
- yAxis.add(yAxis0);
- legend.add("");
- for(Map<String, Object> map :result){
- String oneValue = String.valueOf(map.get(one));
- String value = String.valueOf(map.get("value"));
- xAxis.add(oneValue);
- yAxis0.add(value);
- }
- }else{//包含第二列
- Map<String, HashMap<String, String>> dataMap = new LinkedHashMap<>();
- if(StringUtil.isNotEmpty(two)){
- for(Map<String, 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{
- HashMap<String, String> oneData = new HashMap<>();
- oneData.put(twoValue,value);
- dataMap.put(oneValue,oneData);
- }
-
- }
- }
-
- for(int i =0; i<legend.size(); i++){
- yAxis.add(new ArrayList<String>());
- }
-
- Set<String> keys = dataMap.keySet();
- for(String key:keys){
- xAxis.add(key);
- HashMap<String, String> map = dataMap.get(key);
- for(int i =0; i<legend.size(); i++){
- List<String> 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();
- }
-
- Map<String, 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 Map<String,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并把带有,的切割为数组
- //当前表
- Map<String,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)) {
- Map<String, 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){//级联表日期
- Map<String, Object> joinTable = (Map<String, 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){//级联表字符串
- Map<String, Object> joinTable = (Map<String, 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){//级联表类型
- Map<String, Object> joinTable = (Map<String, 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";
- }
- }
-
- }
- }
-
- List<Map<String, Object>> result = commonService.barCount(params);
- List<String> xAxis = new ArrayList<>();//报表x轴
- List<List<String>> yAxis = new ArrayList<>();//y轴
- List<String> legend = new ArrayList<>();//标题
-
- if(StringUtil.isEmpty(two)){//不包含第二列
- List<String> yAxis0 = new ArrayList<>();
- yAxis.add(yAxis0);
- legend.add("");
- for(Map<String, Object> map :result){
- String oneValue = String.valueOf(map.get(one));
- String value = String.valueOf(map.get("value"));
- xAxis.add(oneValue);
- yAxis0.add(value);
- }
- }else{//包含第二列
- Map<String, HashMap<String, String>> dataMap = new LinkedHashMap<>();
- if(StringUtil.isNotEmpty(two)){
- for(Map<String, 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{
- HashMap<String, String> oneData = new HashMap<>();
- oneData.put(twoValue,value);
- dataMap.put(oneValue,oneData);
- }
-
- }
- }
-
- for(int i =0; i<legend.size(); i++){
- yAxis.add(new ArrayList<String>());
- }
-
- Set<String> keys = dataMap.keySet();
- for(String key:keys){
- xAxis.add(key);
- HashMap<String, String> map = dataMap.get(key);
- for(int i =0; i<legend.size(); i++){
- List<String> 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();
- }
-
- Map<String, Object> resultMap = new HashMap<>();
- resultMap.put("xAxis",xAxis);
- resultMap.put("yAxis",yAxis);
- resultMap.put("legend",legend);
- return R.ok().put("data", resultMap);
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。