list1 = scoreTwoService.saveList(enterGradesList);
+
+ return ResultVOUtil.success(singleContrastInfo);
+ }
+
+ //定位中查询之前各科设定的目标值
+ @ApiOperation(value = "十二、 定位中查询之前各科设定的目标值")
+ @GetMapping(value = "/findTargetValue")
+ public ResultVO> findTargetValue(
+ @ApiParam(value = "用户学号", required = true)
+ @RequestParam(value = "stuNumber") String stuNumber,
+ @ApiParam(value = "考试全称",required = true)
+ @RequestParam(value = "examName") String examName
+ ){
+ GoalSet list = scoreTwoService.findTargetValue(stuNumber,examName);
+ return ResultVOUtil.success(list);
+ }
+
+
+ @ApiOperation(value = "#12.9: 十三、 录入统计中的 删除 功能")
+ @GetMapping(value = "/deleteManuallyEnter")
+ public ResultVO> deleteManuallyEnter(
+ @ApiParam(value = "用户学号", required = true)
+ @RequestParam(value = "stuNumber") String stuNumber,
+ @ApiParam(value = "用户openid", required = true)
+ @RequestParam(value = "openid") String openid,
+ @ApiParam(value = "考试全称",required = true)
+ @RequestParam(value = "examName") String examName,
+ @ApiParam(value = "subject科目名称", required = true)
+ @RequestParam(value = "subject") String subject
+ ){
+ int list = scoreTwoService.deleteManuallyEnter(stuNumber,openid,examName,subject);
+ return ResultVOUtil.success(list);
+ }
+
+ @ApiOperation(value = "#12.9: 十四、 录入统计中的 更新 功能")
+ @PostMapping(value = "/updateManuallyEnter")
+ public ResultVO> updateManuallyEnter(
+ @ApiParam(value = "用户学号", required = true)
+ @RequestParam(value = "stuNumber") String stuNumber,
+ @ApiParam(value = "用户openid", required = true)
+ @RequestParam(value = "openid") String openid,
+ @ApiParam(value = "考试全称",required = true)
+ @RequestParam(value = "oldexamName") String oldexamName,
+ @ApiParam(value = "subject科目名称", required = true)
+ @RequestParam(value = "subject") String subject,
+ ManuallyEnterGrades manuallyEnterGrades
+ ){
+ ManuallyEnterGrades list = scoreTwoService.updateManuallyEnter(stuNumber,openid,oldexamName,subject,manuallyEnterGrades);
+ return ResultVOUtil.success(list);
+ }
+}
diff --git a/src/main/java/com/zgczx/controller/user/UserController.java b/src/main/java/com/zgczx/controller/user/UserController.java
new file mode 100644
index 0000000..86c0eec
--- /dev/null
+++ b/src/main/java/com/zgczx/controller/user/UserController.java
@@ -0,0 +1,97 @@
+package com.zgczx.controller.user;
+
+import com.zgczx.VO.ResultVO;
+import com.zgczx.enums.ResultEnum;
+import com.zgczx.exception.ScoreException;
+import com.zgczx.repository.mysql1.user.model.UserFeedBack;
+import com.zgczx.repository.mysql1.user.model.WechatStudent;
+import com.zgczx.service.user.UserService;
+import com.zgczx.utils.ResultVOUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import javax.xml.transform.Result;
+import java.util.List;
+
+/**
+ * @author aml
+ * @date 2019/11/8 19:32
+ */
+@Api(description = "用户模块")
+@RestController
+@RequestMapping("/user")
+@Slf4j
+public class UserController {
+
+ @Autowired
+ UserService userService;
+
+ private String info = null;
+
+ @ApiOperation(value = "用户登录")
+ @GetMapping("/login")
+ public ResultVO> login(
+ @ApiParam(value = "openid", required = true)
+ @RequestParam(value = "openid") String openid,
+ HttpServletRequest request,
+ HttpServletResponse response){
+
+ WechatStudent wechatStudent = userService.login(openid,request,response);
+
+ return ResultVOUtil.success(wechatStudent);
+ }
+
+ @ApiOperation(value = "用户登出")
+ @GetMapping("/logout")
+ public ResultVO> logout(HttpServletRequest request,
+ HttpServletResponse response){
+ String logout = userService.logout(request, response);
+ return ResultVOUtil.success(logout);
+ }
+
+// @PostMapping("/registerWechatStudent")
+// public ResultVO> registerWechatStudent(
+// @Valid WechatStudent wechatStudent, BindingResult bindingResult
+// // ,@RequestParam(value = "openid") String openid
+// ){
+// if (bindingResult.hasErrors()){
+// info = "【学生注册】参数验证不正确," + wechatStudent.toString();
+// log.error(info);
+// // throw new ScoreException(错误code,错误message)
+// throw new ScoreException(ResultEnum.PARAM_EXCEPTION.getCode(),
+// bindingResult.getFieldError().getDefaultMessage());
+// }
+//
+// WechatStudent wechatStudent1 = userService.registerWechatStudent(wechatStudent);
+// return ResultVOUtil.success(wechatStudent1);
+// }
+
+ @ApiOperation(value = "用户注册")
+ @PostMapping("/registerWechatStudent")
+ public ResultVO> registerWechatStudent(
+ @ApiParam(value = "用户openid", required = true)
+ @RequestParam(value = "openid")String openid,
+ @ApiParam(value = "统一登录的主键",required = true)
+ @RequestParam(value = "foreignKeId")String foreignKeId){
+
+ WechatStudent wechatStudent1 = userService.registerWechatStudent(openid,foreignKeId);
+ return ResultVOUtil.success(wechatStudent1);
+ }
+
+ @ApiOperation(value = "用户反馈")
+ @PostMapping("/addUserFeedBack")
+ @ResponseBody
+ public ResultVO> addUserFeedBack(UserFeedBack userFeedBack) {
+
+ UserFeedBack rsUserFeedBack = userService.addUserFeedBack(userFeedBack);
+ return ResultVOUtil.success(rsUserFeedBack);
+ }
+}
diff --git a/src/main/java/com/zgczx/controller/wechat/WeChatController.java b/src/main/java/com/zgczx/controller/wechat/WeChatController.java
new file mode 100644
index 0000000..638974d
--- /dev/null
+++ b/src/main/java/com/zgczx/controller/wechat/WeChatController.java
@@ -0,0 +1,296 @@
+package com.zgczx.controller.wechat;
+
+import com.alibaba.fastjson.JSONObject;
+import com.zgczx.VO.ResultVO;
+import com.zgczx.config.wechatconfig.ProjectUrlConfig;
+import com.zgczx.enums.ResultEnum;
+import com.zgczx.exception.ScoreException;
+import com.zgczx.service.wechat.WeChatService;
+import com.zgczx.utils.ResultVOUtil;
+import io.swagger.annotations.*;
+import lombok.extern.slf4j.Slf4j;
+import me.chanjar.weixin.common.api.WxConsts;
+import me.chanjar.weixin.common.exception.WxErrorException;
+import me.chanjar.weixin.mp.api.WxMpService;
+import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken;
+import me.chanjar.weixin.mp.bean.result.WxMpUser;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.*;
+import java.util.UUID;
+
+/**
+ * @author aml
+ * @date 2019/10/12 19:50
+ */
+@Api(description = "微信相关模块")
+@Controller
+//@RestController
+@RequestMapping("/wechat")
+@Slf4j
+public class WeChatController {
+
+ @Autowired
+ private WxMpService wxMpService;
+
+ @Autowired
+ private WeChatService weChatService;
+
+ @Autowired
+ private ProjectUrlConfig projectUrlConfig;
+
+ /**
+ * 描述请求微信API接口,获取code等参数
+ *
+ * 请求微信服务器获取用户个人信息时需要用到code等参数
+ *
+ * @param returnUrl
+ * @param path 此参数为前端要求添加的,此参数返回给前端后,由前端再获取此参数,拼接组成下一步请求的url
+ * 可以不传此参数,接口中去掉path即可
+ * @return
+ */
+ @CrossOrigin(origins = "*", maxAge = 3600)
+ @GetMapping("/authorize")
+ public String authorize(@RequestParam("returnUrl") String returnUrl,
+ @RequestParam("path") String path) {
+
+ return "redirect:" + weChatService.getAuthorizeFromWechat(returnUrl,path);
+ }
+
+
+ /**
+ * 经过授权接口(authorize)后拿到code等参数,把code作为参数,请求此接口获取用户openid,姓名,头像等参数
+ *
+ *
流程: code -> access token -> 微信用户信息(wechatOpenid,名称,头像等)
+ *
+ * @param code
+ * @param returnUrl
+ * @param path 前端传给后台的字段,由前端自己定义,基于Vue开发的话,一般设置 path 为 "menu",前端获取path值,然后拼接请求地址,访问首页
+ * 可以不传此参数,接口中去掉path即可
+ * @return
+ */
+ @CrossOrigin(origins = "*", maxAge = 3600)
+ @GetMapping("/userInfo")
+ public String userInfo(@RequestParam("code") String code,
+ @RequestParam("state") String returnUrl,
+ @RequestParam("path") String path) {
+
+ return "redirect:"+weChatService.getUserInfoFromWechat(code,returnUrl,path);
+ }
+
+
+ /*@ApiOperation(value = "授权")
+ @GetMapping("/authorize")
+ public String authorize(@RequestParam("returnUrl") String returnUrl) {//returnUrl:本项目的首页面访问路径
+ //1. 配置
+ //2. 调用
+ //url:http://zhongkeruitong.top/score_analysis/wechat/userInfo : 直接跳转到这个接口获取其他信息
+ //拼接这个访问url去调用这个“/userInfo”接口,去获取token,然后获取openid、头像等信息
+// String url = projectUrlConfig.getWechatMpAuthorize() + "/show/score_analysis/wechat/userInfo";
+ String url = "http://zhongkeruitong.top/score_analysis/wechat/userInfo"; // 跳转请求下面接口的全路径url
+ // 占位符使用,切记“,”,不是直接拼接“+”
+ log.info("url= {}", url);
+ String redirectUrl = wxMpService.oauth2buildAuthorizationUrl(url, WxConsts.OAUTH2_SCOPE_USER_INFO, URLEncoder.encode(returnUrl));
+ log.info("【微信网页授权】 获取code,redirectUrl= {}", redirectUrl);
+ //return "redirectUrl: " + redirectUrl; // redirectUrl:这个不是java的跳转关键字
+ return "redirect:" + redirectUrl; //跳转的下面userInfo接口,请求这个接口获取信息数据
+ }
+
+ *//**
+ * 按照开发文档获取用户token,
+ * 1 第一步:用户同意授权,获取code
+ * 2 第二步:通过code换取网页授权access_token
+ * 3 第三步:刷新access_token(如果需要)
+ * 4 第四步:拉取用户信息(需scope为 snsapi_userinfo)
+ * 5 附:检验授权凭证(access_token)是否有效
+ * 获取code后,请求以下链接获取access_token: https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
+ *
+ * @param code 请求一个微信的url获取所需要的code
+ * @param returnUrl state=STAT,可随意写
+ * @return 获取用户的token,从token获取用户openid
+ *//*
+ @GetMapping("/userInfo")
+ public String userInfo(@RequestParam("code") String code,
+ @RequestParam("state") String returnUrl) {
+ WxMpOAuth2AccessToken wxMpOAuth2AccessToken = new WxMpOAuth2AccessToken();
+ WxMpUser wxMpUser = new WxMpUser();
+ try {
+ wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(code);
+ wxMpUser = wxMpService.oauth2getUserInfo(wxMpOAuth2AccessToken, null);//从这里获取用户各种信息,例如昵称了等
+ } catch (WxErrorException e) {
+ log.error("【微信网页授权】{}", e);
+ throw new ScoreException(ResultEnum.WECHAT_MP_ERROR.getCode(), e.getError().getErrorMsg());
+
+ }
+ //获取当前用户的openid,昵称、微信头像,直接存放到数据库中
+ String openId = wxMpOAuth2AccessToken.getOpenId(); // 用户的openid
+ String nickname = wxMpUser.getNickname(); // 用户昵称
+ String headImgUrl = wxMpUser.getHeadImgUrl();//用户头像
+ log.info("openid= {}", openId);
+ log.info("【昵称】 {}", nickname);
+ log.info("【头像】 {}", headImgUrl);
+ return "redirect:" + returnUrl + "?openid=" + openId;
+ }
+*/
+ /**
+ * 获取 appid, timestamp,nonceStr,signature,
+ * 目的 获取微信的js通行证,来调用微信的一些方法,例如微信上传图片等
+ *
+ * @param url
+ * @param session
+ * @return
+ */
+ @ApiOperation(value = "获取js通行证的各种参数")
+ @ResponseBody
+ @GetMapping("/getSign")
+ public ResultVO> getSign(@RequestParam("url") String url, HttpSession session) {
+ log.info("【打印参数url:】{}", url);
+ JSONObject sign = weChatService.getSign(url, session);
+ return ResultVOUtil.success(sign);
+ }
+
+ /**
+ * 从微信服务器上保存图片到自己指定位置
+ * @param serverIds 微信返回给端的图片id
+ * @param session
+ * @param request
+ * @param response
+ * @return
+ */
+ @ApiOperation(value = "将微信服务器上的图片下载到指定的图片服务器上")
+ @PostMapping("/savePicture")
+ @ResponseBody
+ public static String savePicture(
+ @ApiParam(value = "serverIds", required = true)
+ @RequestParam("serverIds")String serverIds,
+ HttpSession session,
+ HttpServletRequest request,
+ HttpServletResponse response){
+ String filename = null;
+ log.info("【打印serversIds: 】{}",serverIds);
+ if (StringUtils.isNoneBlank(serverIds)){
+ filename = saveImageToDisk(serverIds, session , response, request);
+ }
+ String string = "http://zhongkeruitong.top/image/" + filename;
+ log.info("【返回前端的url地址:】{}",string);
+ return string;
+ }
+
+
+ // 将字节流中的文件上传到自己指定的 图片服务器上
+ private static String saveImageToDisk(String serverIds, HttpSession session, HttpServletResponse response, HttpServletRequest request){
+ String filename = null;
+ //根据mediaId去微信服务器上下载图片到指定的文件夹中
+ InputStream inputStream = getMedia(serverIds, response, session);
+ byte[] data = new byte[1024];
+ int len = 0;
+ FileOutputStream fileOutputStream = null;
+
+ //指定图片服务的地址
+ String savePath = "/home/bigdata/application/score-img/";
+ //图片命名,以UUID来给文件命名
+ filename = UUID.randomUUID() + ".jpa";
+ try {
+ fileOutputStream = new FileOutputStream(savePath+filename);
+ //当字节流读取不到最后字节,就 一直读取文件
+ while ((len = inputStream.read(data)) != -1){
+ //从data中,将0~len 长度的字节写到输出流中
+ fileOutputStream.write(data,0,len);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ if (inputStream != null){
+ try {
+ //关闭输入流
+ inputStream.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ if (fileOutputStream != null){
+ try {
+ //关闭输出流
+ fileOutputStream.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ log.info("【输出上传到图片服务器上的文件名:】{}",filename);
+ return filename;
+ }
+
+ //将从微信服务器上下载的文件转化为字节流
+ private static InputStream getMedia(String serverIds, HttpServletResponse response, HttpSession session){
+ //1. 微信的get请求链接
+ String url = "https://api.weixin.qq.com/cgi-bin/media/get";
+ //2. 从session中获取token
+ String accessToken = (String) session.getAttribute("accessToken");
+ log.info("【打印从session中获取的token:】{}",accessToken);
+ //拼接请求微信get链接的 参数值
+ String params = "access_token=" + accessToken + "&media_id=" + serverIds;
+ InputStream inputStream = null;
+ String urlNameString = url + "?" + params;
+ log.info("【打印出完整的get链接: 】{}",urlNameString);
+
+ try {
+ //请求微信的get链接,获取所需的值
+ URL urlGet = new URL(urlNameString);
+ HttpURLConnection http = (HttpURLConnection) urlGet.openConnection();
+ http.setRequestMethod("GET");//必须是get方式请求
+ http.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
+ http.setDoOutput(true);
+ http.setDoInput(true);
+ http.connect();
+
+ //判断文件是什么格式的,jpg还是MP4等
+ String fileexpandedName = getFileexpandedName(http.getHeaderField("Content-Type"));
+ log.info("【输出文件的类型格式: 】{}",fileexpandedName);
+
+ //将获取的微信的文件转化为byte流
+ inputStream = http.getInputStream();
+
+ } catch (MalformedURLException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ return inputStream;
+ }
+
+ /**
+ * 根据内容类型判断文件扩展名,
+ * 文件头类型 content-type
+ * @param contentType 内容类型
+ * @return
+ */
+ public static String getFileexpandedName(String contentType) {
+
+ String fileEndWitsh = "";
+ if ("image/jpeg".equals(contentType)){
+ fileEndWitsh = ".jpg";
+ } else if ("audio/mpeg".equals(contentType)){
+ fileEndWitsh = ".mp3";
+ } else if ("audio/amr".equals(contentType)){
+ fileEndWitsh = ".amr";
+ } else if ("video/mp4".equals(contentType)){
+ fileEndWitsh = ".mp4";
+ } else if ("video/mpeg4".equals(contentType)){
+ fileEndWitsh = ".mp4";
+ }
+ return fileEndWitsh;
+ }
+}
diff --git a/src/main/java/com/zgczx/dataobject/score/ExamInfo.java b/src/main/java/com/zgczx/dataobject/score/ExamInfo.java
index 0793026..4423bf5 100644
--- a/src/main/java/com/zgczx/dataobject/score/ExamInfo.java
+++ b/src/main/java/com/zgczx/dataobject/score/ExamInfo.java
@@ -1,5 +1,6 @@
package com.zgczx.dataobject.score;
+import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.persistence.*;
@@ -17,6 +18,8 @@ public class ExamInfo {
private long id;
private String examName;
private String examGrade;
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Timestamp examDate;
private String paperId;
diff --git a/src/main/java/com/zgczx/dataobject/score/ImportConversionScore.java b/src/main/java/com/zgczx/dataobject/score/ImportConversionScore.java
new file mode 100644
index 0000000..608fb5b
--- /dev/null
+++ b/src/main/java/com/zgczx/dataobject/score/ImportConversionScore.java
@@ -0,0 +1,220 @@
+package com.zgczx.dataobject.score;
+
+import lombok.Data;
+
+import javax.persistence.*;
+import java.util.Objects;
+
+/**
+ * @author aml
+ * @date 2019/9/22 16:28
+ */
+@Entity
+@Data
+@Table(name = "import_conversion_score", schema = "score_ananlysis_dev", catalog = "")
+public class ImportConversionScore {
+ private int id;
+ private String studentMachineCard;
+ private String username;
+ private String yuwenScore;
+ private String shuxueScore;
+ private String yingyuScore;
+ private String wuliConverscore;
+ private String huaxueConverscore;
+ private String shengwuConverscore;
+ private String lishiConverscore;
+ private String diliConverscore;
+ private String zhengzhiConverscore;
+ private String totalScore;
+ private String classIndex;
+ private String schoolIndex;
+ private String examType;
+
+ @Id
+ @Column(name = "id")
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ @Basic
+ @Column(name = "student_machine_card")
+ public String getStudentMachineCard() {
+ return studentMachineCard;
+ }
+
+ public void setStudentMachineCard(String studentMachineCard) {
+ this.studentMachineCard = studentMachineCard;
+ }
+
+ @Basic
+ @Column(name = "username")
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ @Basic
+ @Column(name = "yuwen_score")
+ public String getYuwenScore() {
+ return yuwenScore;
+ }
+
+ public void setYuwenScore(String yuwenScore) {
+ this.yuwenScore = yuwenScore;
+ }
+
+ @Basic
+ @Column(name = "shuxue_score")
+ public String getShuxueScore() {
+ return shuxueScore;
+ }
+
+ public void setShuxueScore(String shuxueScore) {
+ this.shuxueScore = shuxueScore;
+ }
+
+ @Basic
+ @Column(name = "yingyu_score")
+ public String getYingyuScore() {
+ return yingyuScore;
+ }
+
+ public void setYingyuScore(String yingyuScore) {
+ this.yingyuScore = yingyuScore;
+ }
+
+ @Basic
+ @Column(name = "wuli_converscore")
+ public String getWuliConverscore() {
+ return wuliConverscore;
+ }
+
+ public void setWuliConverscore(String wuliConverscore) {
+ this.wuliConverscore = wuliConverscore;
+ }
+
+ @Basic
+ @Column(name = "huaxue_converscore")
+ public String getHuaxueConverscore() {
+ return huaxueConverscore;
+ }
+
+ public void setHuaxueConverscore(String huaxueConverscore) {
+ this.huaxueConverscore = huaxueConverscore;
+ }
+
+ @Basic
+ @Column(name = "shengwu_converscore")
+ public String getShengwuConverscore() {
+ return shengwuConverscore;
+ }
+
+ public void setShengwuConverscore(String shengwuConverscore) {
+ this.shengwuConverscore = shengwuConverscore;
+ }
+
+ @Basic
+ @Column(name = "lishi_converscore")
+ public String getLishiConverscore() {
+ return lishiConverscore;
+ }
+
+ public void setLishiConverscore(String lishiConverscore) {
+ this.lishiConverscore = lishiConverscore;
+ }
+
+ @Basic
+ @Column(name = "dili_converscore")
+ public String getDiliConverscore() {
+ return diliConverscore;
+ }
+
+ public void setDiliConverscore(String diliConverscore) {
+ this.diliConverscore = diliConverscore;
+ }
+
+ @Basic
+ @Column(name = "zhengzhi_converscore")
+ public String getZhengzhiConverscore() {
+ return zhengzhiConverscore;
+ }
+
+ public void setZhengzhiConverscore(String zhengzhiConverscore) {
+ this.zhengzhiConverscore = zhengzhiConverscore;
+ }
+
+ @Basic
+ @Column(name = "total_score")
+ public String getTotalScore() {
+ return totalScore;
+ }
+
+ public void setTotalScore(String totalScore) {
+ this.totalScore = totalScore;
+ }
+
+ @Basic
+ @Column(name = "class_index")
+ public String getClassIndex() {
+ return classIndex;
+ }
+
+ public void setClassIndex(String classIndex) {
+ this.classIndex = classIndex;
+ }
+
+ @Basic
+ @Column(name = "school_index")
+ public String getSchoolIndex() {
+ return schoolIndex;
+ }
+
+ public void setSchoolIndex(String schoolIndex) {
+ this.schoolIndex = schoolIndex;
+ }
+
+ @Basic
+ @Column(name = "exam_type")
+ public String getExamType() {
+ return examType;
+ }
+
+ public void setExamType(String examType) {
+ this.examType = examType;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ImportConversionScore that = (ImportConversionScore) o;
+ return id == that.id &&
+ Objects.equals(studentMachineCard, that.studentMachineCard) &&
+ Objects.equals(username, that.username) &&
+ Objects.equals(yuwenScore, that.yuwenScore) &&
+ Objects.equals(shuxueScore, that.shuxueScore) &&
+ Objects.equals(yingyuScore, that.yingyuScore) &&
+ Objects.equals(wuliConverscore, that.wuliConverscore) &&
+ Objects.equals(huaxueConverscore, that.huaxueConverscore) &&
+ Objects.equals(shengwuConverscore, that.shengwuConverscore) &&
+ Objects.equals(lishiConverscore, that.lishiConverscore) &&
+ Objects.equals(diliConverscore, that.diliConverscore) &&
+ Objects.equals(zhengzhiConverscore, that.zhengzhiConverscore) &&
+ Objects.equals(totalScore, that.totalScore) &&
+ Objects.equals(classIndex, that.classIndex) &&
+ Objects.equals(schoolIndex, that.schoolIndex) &&
+ Objects.equals(examType, that.examType);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, studentMachineCard, username, yuwenScore, shuxueScore, yingyuScore, wuliConverscore, huaxueConverscore, shengwuConverscore, lishiConverscore, diliConverscore, zhengzhiConverscore, totalScore, classIndex, schoolIndex, examType);
+ }
+}
diff --git a/src/main/java/com/zgczx/dataobject/score/ManuallyEnterGrades.java b/src/main/java/com/zgczx/dataobject/score/ManuallyEnterGrades.java
new file mode 100644
index 0000000..49f5ab7
--- /dev/null
+++ b/src/main/java/com/zgczx/dataobject/score/ManuallyEnterGrades.java
@@ -0,0 +1,130 @@
+package com.zgczx.dataobject.score;
+
+import lombok.Data;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+import java.util.Objects;
+
+/**
+ * @author aml
+ * @date 2019/10/29 19:10
+ */
+@Entity
+@Data
+@Table(name = "manually_enter_grades", schema = "score_ananlysis_dev", catalog = "")
+public class ManuallyEnterGrades {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private int id;
+ private String wechatOpenid;
+ private String studentNumber;
+ private String subjectName;
+ private String score;
+ private String classRank;
+ private String gradeRank;
+ private String examName;
+ private Timestamp inserttime;
+ private Timestamp updatetime;
+
+// @Id
+// @Column(name = "id")
+// public int getId() {
+// return id;
+// }
+//
+// public void setId(int id) {
+// this.id = id;
+// }
+//
+// @Basic
+// @Column(name = "wechat_openid")
+// public String getWechatOpenid() {
+// return wechatOpenid;
+// }
+//
+// public void setWechatOpenid(String wechatOpenid) {
+// this.wechatOpenid = wechatOpenid;
+// }
+//
+// @Basic
+// @Column(name = "student_number")
+// public String getStudentNumber() {
+// return studentNumber;
+// }
+//
+// public void setStudentNumber(String studentNumber) {
+// this.studentNumber = studentNumber;
+// }
+//
+// @Basic
+// @Column(name = "subject_name")
+// public String getSubjectName() {
+// return subjectName;
+// }
+//
+// public void setSubjectName(String subjectName) {
+// this.subjectName = subjectName;
+// }
+//
+// @Basic
+// @Column(name = "score")
+// public String getScore() {
+// return score;
+// }
+//
+// public void setScore(String score) {
+// this.score = score;
+// }
+//
+// @Basic
+// @Column(name = "class_rank")
+// public String getClassRank() {
+// return classRank;
+// }
+//
+// public void setClassRank(String classRank) {
+// this.classRank = classRank;
+// }
+//
+// @Basic
+// @Column(name = "grade_rank")
+// public String getGradeRank() {
+// return gradeRank;
+// }
+//
+// public void setGradeRank(String gradeRank) {
+// this.gradeRank = gradeRank;
+// }
+//
+// @Basic
+// @Column(name = "exam_name")
+// public String getExamName() {
+// return examName;
+// }
+//
+// public void setExamName(String examName) {
+// this.examName = examName;
+// }
+//
+// @Basic
+// @Column(name = "inserttime")
+// public Timestamp getInserttime() {
+// return inserttime;
+// }
+//
+// public void setInserttime(Timestamp inserttime) {
+// this.inserttime = inserttime;
+// }
+//
+// @Basic
+// @Column(name = "updatetime")
+// public Timestamp getUpdatetime() {
+// return updatetime;
+// }
+//
+// public void setUpdatetime(Timestamp updatetime) {
+// this.updatetime = updatetime;
+// }
+
+}
diff --git a/src/main/java/com/zgczx/dto/AsahiChartAllRateDTO.java b/src/main/java/com/zgczx/dto/AsahiChartAllRateDTO.java
new file mode 100644
index 0000000..5a2bce9
--- /dev/null
+++ b/src/main/java/com/zgczx/dto/AsahiChartAllRateDTO.java
@@ -0,0 +1,45 @@
+package com.zgczx.dto;
+
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @author aml
+ * @date 2019/9/26 10:50
+ */
+@Data
+public class AsahiChartAllRateDTO {
+
+ // 总分率值,即所得总分 / 总分满分标准
+ private String totalScoreRate;
+
+ // 三科分数之和率值,三科得分数和/ 三科总分
+ private String threeSubjectsRate;
+
+ // 6选3综合率值, 6选3综合得分 / 6选3综合满分标准分
+ private String comprehensiveRate;
+
+ // 所有真实科目的率值,k: 科目名称;v:所对应的率值
+ private Map allSubjectRateMap;
+
+//
+// // 语文率值, 语文得分 / 语文总分
+// private int languageScoreRate;
+// // 数学率值, 数学得分 / 数学总分
+// private int mathScoreRate;
+// // 英语率值, 英语得分 / 英语总分
+// private int englishScoreRate;
+// // 物理率值, 物理得分 / 物理总分
+// private int physicalScoreRate;
+// // 化学率值, 化学得分 / 化学总分
+// private int chemistryScoreRate;
+// // 生物率值, 生物得分 / 生物总分
+// private int biologicalScoreRate;
+// // 政治率值, 政治得分 / 政治总分
+// private int politicalScoreRate;
+// // 历史率值, 历史得分 / 历史总分
+// private int historyScoreRate;
+// // 地理率值, 地理得分 / 地理总分
+// private int geographyScoreRate;
+}
diff --git a/src/main/java/com/zgczx/dto/ExamCoversionTotalSectionDTO.java b/src/main/java/com/zgczx/dto/ExamCoversionTotalSectionDTO.java
index 80dca86..5ab3ac1 100644
--- a/src/main/java/com/zgczx/dto/ExamCoversionTotalSectionDTO.java
+++ b/src/main/java/com/zgczx/dto/ExamCoversionTotalSectionDTO.java
@@ -26,10 +26,20 @@ public class ExamCoversionTotalSectionDTO {
//综合年级排名
private int complexGradeRank;
- // 年级排名进退名次
- private int waveGrade;
- // 班级排名进退名次
- private int waveClass;
+// // 年级排名进退名次
+// private int waveGrade;
+// // 班级排名进退名次
+// private int waveClass;
//存放某学生的6选3的具体科目
private List list;
+
+ //三科班级进退名次
+ private int threeWaveClass;
+ //三科年级进退名次
+ private int threeWaveGrade;
+ //综合班级进退名次
+ private int complexWaveClass;
+ //综合年级进退名次
+ private int complexWaveGrade;
+
}
diff --git a/src/main/java/com/zgczx/dto/ExamCoversionTotalSingleDTO.java b/src/main/java/com/zgczx/dto/ExamCoversionTotalSingleDTO.java
index 3ff0ab7..fa981ff 100644
--- a/src/main/java/com/zgczx/dto/ExamCoversionTotalSingleDTO.java
+++ b/src/main/java/com/zgczx/dto/ExamCoversionTotalSingleDTO.java
@@ -3,6 +3,8 @@
import com.zgczx.dataobject.score.ExamCoversionTotal;
import lombok.Data;
+import java.util.List;
+
/**
* @author aml
* @date 2019/9/16 14:08
@@ -18,4 +20,30 @@ public class ExamCoversionTotalSingleDTO {
private int waveGrade;
// 班级排名进退名次
private int waveClass;
+ // 班级人数
+ private int classNumber;
+ //年级人数
+ private int gradeNumber;
+ //本此考试的总分标准
+ private int sumScore;
+ // 语文总分标准
+ private int languageScore;
+ // 数学满分标准
+ private int mathScore;
+ // 英语满分标准
+ private int englishScore;
+ // 物理满分标准
+ private int physicalScore;
+ // 化学满分标准
+ private int chemistryScore;
+ // 生物满分标准
+ private int biologicalScore;
+ // 政治满分标准
+ private int politicalScore;
+ // 历史满分标准
+ private int historyScore;
+ // 地理满分标准
+ private int geographyScore;
+ // subject此科目的对应分数
+ private String score;
}
diff --git a/src/main/java/com/zgczx/dto/HistoricalAnalysisSingleDTO.java b/src/main/java/com/zgczx/dto/HistoricalAnalysisSingleDTO.java
new file mode 100644
index 0000000..4c5cb1a
--- /dev/null
+++ b/src/main/java/com/zgczx/dto/HistoricalAnalysisSingleDTO.java
@@ -0,0 +1,32 @@
+package com.zgczx.dto;
+
+import com.zgczx.dataobject.score.ExamCoversionTotal;
+import lombok.Data;
+
+/**
+ * @author aml
+ * @date 2019/9/24 20:30
+ */
+@Data
+public class HistoricalAnalysisSingleDTO {
+
+ private ExamCoversionTotal examCoversionTotal;
+ //单科班级排名
+ private int classRank;
+ //单科年级排名
+ private int gradeRank;
+ // 班级平均分
+ private String classAverage;
+ // 年级平均分
+ private String gradeAverage;
+ // 年级排名的百分率
+ private String gradePercentage;
+ // 班级排名的百分率
+ private String classPercentage;
+ // 班级平均分百分率
+ private String classAveragePercentage;
+ // 年级平均分百分率
+ private String gradeAveragePercentage;
+ // 单科分数的百分率
+ private String singleScorePercentage;
+}
diff --git a/src/main/java/com/zgczx/dto/HistoricalAnalysisTotalDTO.java b/src/main/java/com/zgczx/dto/HistoricalAnalysisTotalDTO.java
new file mode 100644
index 0000000..d2f10a3
--- /dev/null
+++ b/src/main/java/com/zgczx/dto/HistoricalAnalysisTotalDTO.java
@@ -0,0 +1,33 @@
+package com.zgczx.dto;
+
+import com.zgczx.dataobject.score.ExamCoversionTotal;
+import lombok.Data;
+
+/**
+ * @author aml
+ * @date 2019/9/24 16:08
+ */
+@Data
+public class HistoricalAnalysisTotalDTO {
+
+ private ExamCoversionTotal examCoversionTotal;
+// //班级排名
+// private int classRank;
+// //年级排名
+// private int gradeRank;
+ // 班级平均分
+ private String classAverage;
+ // 年级平均分
+ private String gradeAverage;
+ // 年级排名的百分率
+ private String gradePercentage;
+ // 班级排名的百分率
+ private String classPercentage;
+ // 班级平均分百分率
+ private String classAveragePercentage;
+ // 年级平均分百分率
+ private String gradeAveragePercentage;
+ // 总分的百分率
+ private String totalScorePercentage;
+
+}
diff --git a/src/main/java/com/zgczx/dto/ScoreReportDTO.java b/src/main/java/com/zgczx/dto/ScoreReportDTO.java
new file mode 100644
index 0000000..2abbb67
--- /dev/null
+++ b/src/main/java/com/zgczx/dto/ScoreReportDTO.java
@@ -0,0 +1,53 @@
+package com.zgczx.dto;
+
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @author aml
+ * @date 2019/9/27 12:12
+ */
+@Data
+public class ScoreReportDTO {
+ // 总分分数
+ private String totalScore;
+ // 总分的年级排名
+ private int totalScoreGradeRank;
+ // 总分的班级排名
+ private int totalScoreClassRank;
+
+ //总分的年级平均分
+ private String totalAverage;
+
+ private Map> map;
+
+ //总分满分数值
+ private String totalScoreStandard;
+ //班级总人数
+ private int totalClassNumber;
+ // 年级总人数
+ private int totalGradeNumber;
+
+// // 具体科目的分数map,k: 科目名称,V:对应的分数
+// private Map subjectScoreMap;
+// // 具体科目的年级排名,K:科目名称,V:对应的年级排名
+// private Map subjectGradeRankMap;
+// // 具体科目的班级排名,K:科目名称,V:对应的班级排名
+// private Map subjectClassRankMap;
+// // 总分满分标准、各科满分标准
+// private Map subjectStandardMap;
+//
+
+
+// //语文map,一个map中存放,分数、年排、班排、满分标准
+// private Map yuwenMap;
+// private Map shuxueMap;
+// private Map yingyuMap;
+// private Map wuliMap;
+// private Map huaxueMap;
+// private Map shengwuMap;
+// private Map diliMap;
+// private Map lishiMap;
+// private Map zhengzhiMap;
+}
diff --git a/src/main/java/com/zgczx/dto/SubjectAnalysisDTO.java b/src/main/java/com/zgczx/dto/SubjectAnalysisDTO.java
new file mode 100644
index 0000000..6c9ae41
--- /dev/null
+++ b/src/main/java/com/zgczx/dto/SubjectAnalysisDTO.java
@@ -0,0 +1,36 @@
+package com.zgczx.dto;
+
+import com.zgczx.dataobject.score.ExamCoversionTotal;
+import lombok.Data;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author aml
+ * @date 2019/9/23 11:17
+ */
+@Data
+public class SubjectAnalysisDTO {
+
+ private ExamCoversionTotal examCoversionTotal;
+
+ // 学科贡献率,各单科贡献率,各科分数和总分的比值
+ private Map contributionRate;
+
+ // 学科均衡差值,即各科年排排名和总分年级排名的差值
+ private Map equilibriumDifference;
+
+ // 年级的标准率值,即年级排名 / 年级总人数
+ private String gradeRate;
+
+// // 上次考试的 学科贡献率,各单科贡献率,各科分数和总分的比值
+// private Map oldcontributionRate;
+//
+// // 前三次 学科贡献率的平均值
+// private Map avgcontributionRate;
+
+ // 此map中九门科目的map,每一个map中最多能放
+ // 本次、上次、平均、差值(本次 - 平均) 率值
+ private Map> map;
+}
diff --git a/src/main/java/com/zgczx/dto/SubjectDTO.java b/src/main/java/com/zgczx/dto/SubjectDTO.java
new file mode 100644
index 0000000..d2cec5b
--- /dev/null
+++ b/src/main/java/com/zgczx/dto/SubjectDTO.java
@@ -0,0 +1,32 @@
+package com.zgczx.dto;
+
+import com.zgczx.dataobject.score.ExamCoversionTotal;
+import lombok.Data;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import java.util.UUID;
+
+/**
+ * @author aml
+ * @date 2019/10/23 14:14
+ */
+@Data
+@Entity
+public class SubjectDTO {
+
+ @Id
+ int id;
+ private String yuwen;
+ private String shuxue;
+ private String yingyu;
+ private String wuli;
+ private String huaxue;
+ private String shengwu;
+ private String zhengzhi;
+ private String lishi;
+ private String dili;
+
+}
diff --git a/src/main/java/com/zgczx/enums/ResultEnum.java b/src/main/java/com/zgczx/enums/ResultEnum.java
index 9fdb969..8201ef6 100644
--- a/src/main/java/com/zgczx/enums/ResultEnum.java
+++ b/src/main/java/com/zgczx/enums/ResultEnum.java
@@ -34,7 +34,7 @@ public enum ResultEnum {
/**
* 微信公众账号方面错误
*/
- WECHAT_MP_ERROR(504, "微信公众账号方面错误"),
+ // WECHAT_MP_ERROR(504, "微信公众账号方面错误"),
/**
* 课程冲突
*/
@@ -47,11 +47,14 @@ public enum ResultEnum {
+
+
/* 参数错误:10001-19999 */
PARAM_IS_INVALID(10001, "参数无效"),
PARAM_IS_BLANK(10002, "参数为空"),
PARAM_TYPE_BIND_ERROR(10003, "参数类型错误"),
PARAM_NOT_COMPLETE(10004, "参数缺失"),
+ PARAM_STRING_EXCEPTION(10005,"字符串格式异常"),
/* 用户错误:20001-29999*/
USER_NOT_LOGGED_IN(20001, "用户未登录"),
@@ -62,6 +65,8 @@ public enum ResultEnum {
/* 业务错误:30001-39999 */
SPECIFIED_QUESTIONED_USER_NOT_EXIST(30001, "某业务出现问题"),
+ SPECIFIED_QUESTIONED_BULK_INSERT_FAILED(30002, "批量插入出错"),
+ NEVER_DID_THIS_PAPER(30003,"您从未做过此试卷"),
/* 系统错误:40001-49999 */
SYSTEM_INNER_ERROR(40001, "系统繁忙,请稍后重试"),
@@ -70,6 +75,7 @@ public enum ResultEnum {
RESULE_DATA_NONE(50001, "数据未找到"),
DATA_IS_WRONG(50002, "数据有误"),
DATA_ALREADY_EXISTED(50003, "数据已存在"),
+ DATA_OUT_RANGE(50004,"数据超出范围"),
/* 接口错误:60001-69999 */
INTERFACE_INNER_INVOKE_ERROR(60001, "内部系统接口调用异常"),
@@ -80,7 +86,15 @@ public enum ResultEnum {
INTERFACE_EXCEED_LOAD(60006, "接口负载过高"),
/* 权限错误:70001-79999 */
- PERMISSION_NO_ACCESS(70001, "无访问权限");
+ PERMISSION_NO_ACCESS(70001, "无访问权限"),
+
+
+ /* 微信公众号有关的错误: 80001-89999*/
+ WECHAT_MP_ERROR(80001, "微信公众账号方面错误"),
+
+
+
+ ;
diff --git a/src/main/java/com/zgczx/exception/UserAuthorizeException.java b/src/main/java/com/zgczx/exception/UserAuthorizeException.java
new file mode 100644
index 0000000..f80e7e8
--- /dev/null
+++ b/src/main/java/com/zgczx/exception/UserAuthorizeException.java
@@ -0,0 +1,9 @@
+package com.zgczx.exception;
+
+/**
+ * explain: 用户权限认证
+ * @author aml
+ * @date 2019/11/9 13:51
+ */
+public class UserAuthorizeException extends RuntimeException {
+}
diff --git a/src/main/java/com/zgczx/handler/ScoreExceptionHandler.java b/src/main/java/com/zgczx/handler/ScoreExceptionHandler.java
new file mode 100644
index 0000000..fc15156
--- /dev/null
+++ b/src/main/java/com/zgczx/handler/ScoreExceptionHandler.java
@@ -0,0 +1,25 @@
+package com.zgczx.handler;
+
+import com.zgczx.VO.ResultVO;
+import com.zgczx.exception.ScoreException;
+import com.zgczx.utils.ResultVOUtil;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseStatus;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+
+/**
+ * 异常拦截器,异常统一返回格式
+ * @author aml
+ * @date 2019/10/23 21:47
+ */
+@RestControllerAdvice
+public class ScoreExceptionHandler {
+
+ @ExceptionHandler(value = ScoreException.class)
+// @ResponseStatus(HttpStatus.FORBIDDEN) //控制返回的status != 200
+ public ResultVO> handlerScoreException(ScoreException e){
+ return ResultVOUtil.error(e.getCode(), e.getMessage(),e.data);
+ }
+
+}
diff --git a/src/main/java/com/zgczx/handler/UserAuthorizeExceptionHandler.java b/src/main/java/com/zgczx/handler/UserAuthorizeExceptionHandler.java
new file mode 100644
index 0000000..702eb5b
--- /dev/null
+++ b/src/main/java/com/zgczx/handler/UserAuthorizeExceptionHandler.java
@@ -0,0 +1,42 @@
+package com.zgczx.handler;
+
+import com.zgczx.config.wechatconfig.ProjectUrlConfig;
+import com.zgczx.exception.UserAuthorizeException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.servlet.ModelAndView;
+
+/**
+ * explain:user授权异常捕获处理
+ *
+ * @author aml
+ * @date 2019/11/9 13:58
+ */
+@ControllerAdvice
+public class UserAuthorizeExceptionHandler {
+
+ @Autowired
+ private ProjectUrlConfig projectUrlConfig;
+
+ /**
+ * 处理UserAuthorizeException.class这个类抛出的异常,
+ * 并且跳转到指定的url。
+ * 拦截登录异常
+ * 例如:重定向至登录页面 - 也就是微信扫码登录
+ *
+ * @return
+ */
+ @ExceptionHandler(value = UserAuthorizeException.class)//处理此类抛出的异常
+ public ModelAndView handlerUserAuthorizeException() {
+ return new ModelAndView("redirect:"
+ .concat(projectUrlConfig.wechatOpenAuthorize)//微信开放平台登录授权地址
+ .concat("/wechat/qrAuthorize")
+ .concat("?returnUrl=")
+ // .concat(projectUrlConfig.score_analysis())//服务器访问的地址
+ .concat("/seller/login"));
+
+ }
+
+
+}
diff --git a/src/main/java/com/zgczx/mapper/ManuallyEnterGradesMapper.java b/src/main/java/com/zgczx/mapper/ManuallyEnterGradesMapper.java
new file mode 100644
index 0000000..7f615be
--- /dev/null
+++ b/src/main/java/com/zgczx/mapper/ManuallyEnterGradesMapper.java
@@ -0,0 +1,24 @@
+package com.zgczx.mapper;
+
+import com.zgczx.repository.mysql1.score.model.ManuallyEnterGrades;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 这个实体类的mapper接口,主要查询此类中的所有数据接口方法
+ * @author aml
+ * @date 2019/11/6 13:51
+ */
+public interface ManuallyEnterGradesMapper {
+
+ List getManuallyEnterGrades();
+
+ ManuallyEnterGrades getManuallyEnterGradesById(int id);
+
+ // 获取此用户的所有录入数据的年份
+ List getYears(String openid);
+
+ // 获取此用户的所有录入数据的年份
+ List getMonths(@Param("openid")String openid, @Param("year")String year);
+}
diff --git a/src/main/java/com/zgczx/repository/basefactory/BaseFactory.java b/src/main/java/com/zgczx/repository/basefactory/BaseFactory.java
new file mode 100644
index 0000000..0568e66
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/basefactory/BaseFactory.java
@@ -0,0 +1,38 @@
+package com.zgczx.repository.basefactory;
+
+import org.springframework.stereotype.Repository;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.PersistenceContext;
+
+/**
+ * 获取多数据源中的实体管理工厂
+ * @author aml
+ * @date 2019/11/1 11:07
+ */
+@Repository
+public class BaseFactory {
+
+ /**
+ * 数据源1
+ */
+ public EntityManager entityManagerDb1;
+
+ /**
+ * 数据源2
+ */
+ public EntityManager entityManagerDb2;
+
+ @PersistenceContext(unitName = "entityManagerFactoryDb1")
+ public void setEntityManagerDb1(EntityManager entityManagerDb1){
+ this.entityManagerDb1 = entityManagerDb1;
+ }
+
+ // 注入指定数据源的实体管理工厂
+ @PersistenceContext(unitName = "entityManagerFactoryDb2")
+ public void setEntityManagerDb2(EntityManager entityManagerDb2){
+ this.entityManagerDb2 = entityManagerDb2;
+ }
+
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/exam/dao/ChapterDao.java b/src/main/java/com/zgczx/repository/mysql1/exam/dao/ChapterDao.java
new file mode 100644
index 0000000..ae6685e
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/exam/dao/ChapterDao.java
@@ -0,0 +1,42 @@
+package com.zgczx.repository.mysql1.exam.dao;
+
+import com.zgczx.repository.mysql1.exam.model.Chapter;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * 章节表
+ * @author aml
+ * @date 2019/12/11 17:00
+ */
+@Repository
+public interface ChapterDao extends JpaRepository {
+
+ //1. 获取 此年级的所有的章名称:例如获取高一的所有章
+ @Query(value = "select DISTINCT chapter from e_chapter where level_name=?1 and subject=?2 ", nativeQuery = true)
+ List findByLevelNameAndSubject(String levelName, String subject);
+
+ //2. 获取所有的 节名称,根据 高中 和 章的名称
+ @Query(value = "SELECT section FROM e_chapter WHERE level_name=?1 AND chapter=?2 and subject=?3 ", nativeQuery = true)
+ List findByLevelNameAndChapterAndSubject(String levelName, String chapter, String subject);
+
+ //3. 获取所有章的名称,根据节的名称
+// SELECT DISTINCT chapter FROM e_chapter WHERE section IN('第1节 细胞膜的结构和功能','第2节 细胞','ddd')
+ @Query(value = "SELECT DISTINCT chapter FROM e_chapter WHERE section IN(?1)", nativeQuery = true)
+ List findBySectionIn(List sectionList);
+
+ //4. 获取所有节名称,根据章名称 和 科目
+ @Query(value = "SELECT section FROM e_chapter WHERE chapter=?1 AND SUBJECT=?2 ", nativeQuery = true)
+ List findByChapterAndSubject(String chapter,String subject);
+
+ // 5. 根据学科和年级 获取该学科的所有章节(已涉及学科和年级) lxj
+ @Query(value = "select distinct chapter from e_chapter where `subject`=?1 and level_name= ?2 ",nativeQuery = true)
+ List findChapterBySubject(String subject,String levelName);
+
+ //6. 根据节的名称获取章的名称
+ @Query(value = "SELECT chapter FROM e_chapter WHERE section=?1 ", nativeQuery = true)
+ List findBySection(String section);
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/exam/dao/ExamContentDao.java b/src/main/java/com/zgczx/repository/mysql1/exam/dao/ExamContentDao.java
new file mode 100644
index 0000000..9c62915
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/exam/dao/ExamContentDao.java
@@ -0,0 +1,15 @@
+package com.zgczx.repository.mysql1.exam.dao;
+
+import com.zgczx.repository.mysql1.exam.model.ExamContent;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @author aml
+ * @date 2019/12/19 15:10
+ */
+@Repository
+public interface ExamContentDao extends JpaRepository {
+
+ ExamContent findByExamNameAndSubject(String examName, String subject);
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/exam/dao/ExamPaperDao.java b/src/main/java/com/zgczx/repository/mysql1/exam/dao/ExamPaperDao.java
new file mode 100644
index 0000000..c684263
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/exam/dao/ExamPaperDao.java
@@ -0,0 +1,49 @@
+package com.zgczx.repository.mysql1.exam.dao;
+
+import com.zgczx.repository.mysql1.exam.model.ExamPaper;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.keyvalue.repository.config.QueryCreatorType;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * 试卷表
+ * @author aml
+ * @date 2019/12/11 20:54
+ */
+@Repository
+public interface ExamPaperDao extends JpaRepository {
+
+ //1. 获取此试卷的所有信息,根据 试卷名称和科目
+ ExamPaper findByExamNameAndSubjectAndValid(String examName, String subject,int deleted);
+ ExamPaper findByExamNameAndSubjectAndValidAndGradeLevel(String examName, String subject,int deleted,String gradeLevel);
+ @Query(value = "select * from e_exam_paper where exam_name=?1 and subject=?2 and valid=?3", nativeQuery = true)
+ ExamPaper getBy(String examName, String subject,int deleted);
+
+ //3. 获取所有的试卷信息,从而判断哪个属于章节练习,根据idList
+ List findByIdIn(List idList);
+
+ // 4. 获取所有考试名称(不包含专项练习或章节练习) lxj
+ @Query(value = "select exam_name from e_exam_paper where exam_source='模拟考试' or exam_source='历年真题' ",nativeQuery = true)
+ List getExamName();
+
+ // 5. 根据学科和年级查询考试名称和题目总数
+ @Query(value = "select * from e_exam_paper where subject=?1 and grade_level=?2 ",nativeQuery = true)
+ List getExamPaper(String subject,String levelName);
+
+ //6.模拟考试: 获取模拟考试的名称,不包括期中、期末;根据科目、年级、模拟考试、valid=1
+ @Query(value = "SELECT * FROM e_exam_paper WHERE SUBJECT=?1 AND grade_level=?2 AND exam_name NOT LIKE ?4 AND exam_name NOT LIKE ?5 AND exam_source=?3 AND valid=1 ", nativeQuery = true)
+ List getAllBySubjectAndGradeLevelAndExamSource(String subject,String gradeLevel,String examSource,String condition1,String condition2);
+ //7.模拟考试: 获取 期中 的模拟考试的名称;根据科目、年级、模拟考试、valid=1
+ @Query(value = "SELECT * FROM e_exam_paper WHERE SUBJECT=?1 AND grade_level=?2 AND exam_name LIKE ?4 AND exam_source=?3 AND valid=1 ", nativeQuery = true)
+ List getAllBySubjectAndGradeLevelAndExamSource2(String subject,String gradeLevel,String examSource,String condition1);
+
+ //8. 获取此年级、此科目的所有 试卷信息
+ List getBySubjectAndGradeLevelAndValid(String subject,String gradeLevel,int valid);
+
+ //9. 获取有效的 此试卷信息
+ @Query(value = "select * from e_exam_paper where id=?1 and valid=?2 ", nativeQuery = true)
+ ExamPaper findByIdAndValid(int id, int valid);
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/exam/dao/QuestionDao.java b/src/main/java/com/zgczx/repository/mysql1/exam/dao/QuestionDao.java
new file mode 100644
index 0000000..67a27e3
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/exam/dao/QuestionDao.java
@@ -0,0 +1,90 @@
+package com.zgczx.repository.mysql1.exam.dao;
+
+import com.zgczx.repository.mysql1.exam.model.Question;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+
+/**
+ * 题库表
+ * @author aml
+ * @date 2019/12/11 20:47
+ */
+@Repository
+public interface QuestionDao extends JpaRepository {
+
+ //1. 获取相同考试名的所有题
+ List findByExamName(String examName);
+
+ //2. 获取此试卷中的所有题的信息,根据idList:题库的主键id列表
+ List findByIdIn(List idList);
+
+ // 3. 获取此道题的 科目名称 : 根据 question中的主键id
+ @Query(value = "SELECT SUBJECT FROM e_exam_paper WHERE id=(SELECT exam_id FROM e_question WHERE id =?1 )", nativeQuery = true)
+ String getSubjectName(int id);
+ //3.1 获取此题的 科目名称:兼容直接录入专项的题,exam_paper没有此录入专项的数据
+ @Query(value = "select subject from e_question where id =?1 ", nativeQuery = true)
+ String getSubject(int id);
+
+ // 4. 根据章节名称查询收藏的题的详细信息 lxj
+ @Query(value = "select * from e_question where id in (select distinct question_id from e_user_collect as euc,e_exam_paper as eep,e_chapter as ec \n" +
+ "where ec.chapter=?3 and ec.section=?4 \n" +
+ "and ec.section=eep.exam_name and eep.id=euc.exam_paper_id and euc.valid=1 and euc.student_number=?1 and euc.subject=?2) ",nativeQuery = true)
+ List getSectionCollectProblems(String stuNumber,String subject,String chapter,String section);
+
+ // 5. 根据考试名称查询收藏的题的详细信息 lxj
+ @Query(value = "select * from e_question where id in (select distinct question_id from e_user_collect as euc,e_exam_paper as eep\n" +
+ "where eep.exam_name=?3 \n" +
+ "and eep.id=euc.exam_paper_id and euc.valid=1 and euc.student_number=?1 and euc.subject=?2) ",nativeQuery = true)
+ public List getExamCollectProblems(String stuNumber,String subject,String examName);
+
+ // 6. 根据question_id查询题的详细信息 lxj
+ @Query(value = "select * from e_question where id=?1 and subject=?2 ",nativeQuery = true)
+ public List getQuestionInfoById(int id,String subject);
+
+ // 7. 根据章名称获取本章对应的题数 lxj
+ @Query(value = "select count(distinct eq.id) from e_chapter as ec,e_question as eq,e_exam_paper as eep where ec.`subject`=?1 and ec.level_name=?2 and \n" +
+ "ec.chapter=?3 and ec.section=eep.exam_name and eep.id=eq.exam_id ",nativeQuery = true)
+ public int getQuestionsNumByChapter(String subject,String levelName,String chapter);
+
+ // 8. 根据科目、章的名称、知识点得到对应的题的详细信息(已涉及学科和年级) lxj
+ @Query(value = "select ec.chapter,eq.* from e_question as eq,e_chapter as ec,e_exam_paper as eep where ec.`subject`=?1 and ec.level_name=?2 and \n" +
+ "ec.chapter=?3 and ec.section=eep.exam_name and eep.id=eq.exam_id and eq.question_attribute=?4 ",nativeQuery = true)
+ public List getQuestionsBySubjectAndChapterAndAttribute(String subject,String levelName,String chapter,String attribute);
+
+ // 9. 根据章节 获取知识点和对应的题数(已涉及学科和年级) lxj
+ @Query(value = "select distinct eq.question_attribute from e_question as eq,e_chapter as ec,e_exam_paper as eep where ec.`subject`=?1 and ec.level_name=?2 and \n" +
+ "ec.chapter=?3 and ec.section=eep.exam_name and eep.id=eq.exam_id ",nativeQuery = true)
+ public List getAttributesByChapter(String subject,String levelName,String chapter);
+
+ // 10. 根据知识点获取对应的题数(已涉及学科和年级) lxj
+ @Query(value = "select count(distinct id) from e_question as eq where find_in_set(?1,question_attribute) " ,nativeQuery = true)
+ int getQuestionsNumsByAttribute(String attribute);
+
+ // 11. 根据年级和学科查询对应的知识点
+ @Query(value = "select distinct question_attribute from e_question where `subject`=?1 and level_name=?2 and valid=1",nativeQuery = true)
+ List getQUestionAttribute(String subject,String levelName);
+
+
+
+
+ // 批量修改,用于解析Word并存库
+ @Modifying
+ @Transactional
+ @Query(value = "update e_question as a set a.exam_id=?2 where a.id in (?1) ", nativeQuery = true)
+ int updateByIds(List idList,int examId);
+
+ // 获取此题 有效的所有数据
+ Question getByIdAndValid(int id, int valid);
+
+ //14. 专项练习: 根据知识点、年级、科目 获取相关的所有题
+ @Query(value = "SELECT * FROM e_question WHERE SUBJECT=?1 AND level_name=?2 AND FIND_IN_SET(?3,question_attribute) and valid=1 ", nativeQuery = true)
+ List getAllSubjectAndLevelNameByQuestionAndAttribute(String subject,String levelName,String point);
+ //14.2 专项练习:根据 全部、年级、科目 获取所有题目
+ @Query(value = "SELECT * FROM e_question WHERE SUBJECT=?1 AND level_name=?2 AND valid=1", nativeQuery = true)
+ List getAllSubjectAndLevelName(String subject,String levelName);
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/exam/dao/UserCollectDao.java b/src/main/java/com/zgczx/repository/mysql1/exam/dao/UserCollectDao.java
new file mode 100644
index 0000000..878c848
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/exam/dao/UserCollectDao.java
@@ -0,0 +1,95 @@
+package com.zgczx.repository.mysql1.exam.dao;
+
+import com.zgczx.repository.mysql1.exam.model.UserCollect;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 用户收藏 表
+ * @author aml
+ * @date 2019/12/17 16:52
+ */
+@Repository
+public interface UserCollectDao extends JpaRepository {
+
+ //1. 获取此用户 -> 此科目 -> 此试卷 -> 此题 是否收藏
+ @Query(value = "SELECT * FROM e_user_collect WHERE student_number=?1 AND SUBJECT=?2 AND exam_paper_id=?3 AND question_id=?4 AND valid=?5", nativeQuery = true)
+ UserCollect getByStudentNumberAndSubjectAndExamPaperIdAndQuestionId(String stuNumber,String subject,int paperId,int questionId,int valid);
+ //1.2 获取此用户、此科目、此题是否收藏
+ UserCollect getByStudentNumberAndSubjectAndQuestionId(String stuNumber,String subject,int questionId);
+ //2. 查询此题是否收藏
+ UserCollect findByQuestionIdAndValid(int id, int valid);
+
+ // 3. 统计用户收藏总题数 lxj
+ @Query(value="select count(distinct question_id) from e_user_collect where student_number=?1 and subject=?2 and valid=1 ",nativeQuery = true)
+ int getCollectProblemsNum(String stuNumber,String subject);
+
+ // 3. 按年级统计用户收藏总题数 lxj
+ @Query(value = "select count(distinct question_id) from e_user_collect as euc,e_exam_paper as eep where eep.grade_level=?2 and eep.id=euc.exam_paper_id \n" +
+ "and euc.student_number=?1 and euc.subject=?3 and euc.valid=1 ",nativeQuery = true)
+ int getCollectCountByGradeLevel(String stuNumber,String levelName,String subject);
+
+ // 4. 统计用户收藏练习题数 lxj
+ @Query(value = "select count(distinct euc.question_id) from e_user_collect euc,e_question eq where euc.student_number=?1 and euc.`subject`=?2 and euc.valid=1 and euc.question_id=eq.id and eq.question_source='章节练习' ",nativeQuery = true)
+ int getCollectChapterProblemsNum(String stuNumber,String subject);
+
+ // 5. 统计用户收藏考试题数 lxj
+ @Query(value="select count(distinct euc.question_id) from e_user_collect euc,e_question eq where euc.student_number=?1 and euc.`subject`=?2 and euc.valid=1 and euc.question_id=eq.id and (eq.question_source='模拟考试' or eq.question_source='历年真题') ",nativeQuery = true)
+ int getCollectExamProblemsNum(String stuNumber,String subject);
+
+ // 6. 统计用户每一章收藏的题数 lxj
+ @Query(value = "select count(distinct euc.question_id) from e_exam_paper as eep,e_user_collect as euc,e_chapter as ec where eep.chapter_id=ec.id and ec.chapter=?3 and eep.id=euc.exam_paper_id and euc.valid=1 and euc.student_number=?1 and euc.subject=?2 ",nativeQuery = true)
+ int getCollectProblemsByChapter(String stuNumber, String subject,String chapter);
+
+ // 7. 统计用户每次考试收藏的题数 lxj
+ @Query(value = "select count(distinct euc.question_id) from e_exam_paper as eep,e_user_collect as euc where euc.exam_paper_id=eep.id \n" +
+ "and exam_name=?3 and euc.valid=1 and euc.student_number=?1 and euc.subject=?2 ",nativeQuery = true)
+ int getCollectProblemsByExam(String stuNumber,String subject,String examName);
+
+ // 8. 根据节的名称获取对应的收藏题数 lxj
+ @Query(value = "select count(distinct euc.question_id) from e_exam_paper as eep,e_user_collect as euc,e_chapter as ec \n" +
+ "where eep.chapter_id=ec.id and ec.section=?3 \n" +
+ "and eep.id=euc.exam_paper_id and euc.valid=1 and euc.student_number=?1 and euc.subject=?2 ",nativeQuery = true)
+ int getCollectProblemsBySection(String stuNumber,String subject,String section);
+ // 9. 查询此用户此题是否插入收藏库表中 aml
+ UserCollect findByStudentNumberAndQuestionId(String sutNumber,int questionId);
+
+ // 10. 查看某道题某个用户是否收藏了 lxj
+ @Query(value = "select count(*) from e_user_collect where student_number=?1 and `subject`=?2 and valid=1 and question_id=?3 ",nativeQuery = true)
+ int getIfCollectByStuNumAndQuestionId(String stuNumber,String subject,int questionId);
+
+ //11. 我的收藏:传来“全部”时,获取所有 用户的、科目、年级、所有数量
+ @Query(value = "SELECT * FROM e_user_collect AS euc \n" +
+ "INNER JOIN e_question AS q ON euc.`question_id`=q.id \n" +
+ "INNER JOIN e_exam_paper AS ep \n" +
+ "ON euc.`exam_paper_id`=ep.`id`\n" +
+ "WHERE euc.student_number=?1 AND euc.`subject`=?2 AND q.level_name=?3 AND euc.valid=1 ", nativeQuery = true)
+ List totalNum(String stuNumber, String subject, String gradeLevel);
+
+ //12. 我的收藏:获取收藏表中某用户-》某年级-》某科目 某类(章节练习) 的所有数量
+ @Query(value = "SELECT * FROM e_user_collect AS euc \n" +
+ "INNER JOIN e_question AS q \n" +
+ "ON euc.`question_id`=q.`id`\n" +
+ "INNER JOIN e_exam_paper AS ep \n" +
+ "ON euc.`exam_paper_id`=ep.`id` \n" +
+ "WHERE euc.student_number=?1 AND ep.`grade_level`=?2 AND euc.`subject`=?3 AND ep.`exam_source`=?4 AND euc.valid=1 ", nativeQuery = true)
+ List getAllInfo(String stuNumber,String gradeLevel,String subject,String examCategory);
+
+ //13. 我的收藏:获取收藏表中某用户-》某年级-》某科目 所有类别(章节练习、专项、模拟、真题) 的所有数量
+ @Query(value = "SELECT * FROM e_user_collect AS euc \n" +
+ "INNER JOIN e_question AS q\n" +
+ "ON euc.`question_id`=q.`id`\n" +
+ "INNER JOIN e_exam_paper AS ep\n" +
+ "ON euc.`exam_paper_id`=ep.`id`\n" +
+ "WHERE euc.student_number=?1 AND ep.`grade_level`=?2 AND euc.`subject`=?3 AND euc.valid=1 \n" +
+ "GROUP BY euc.`question_id` \n" +
+ "ORDER BY euc.inserttime ASC", nativeQuery = true)
+ List getAllByFull(String stuNumber,String gradeLevel,String subject);
+
+
+
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/exam/dao/UserPaperRecordDao.java b/src/main/java/com/zgczx/repository/mysql1/exam/dao/UserPaperRecordDao.java
new file mode 100644
index 0000000..4d8df43
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/exam/dao/UserPaperRecordDao.java
@@ -0,0 +1,27 @@
+package com.zgczx.repository.mysql1.exam.dao;
+
+import com.zgczx.repository.mysql1.exam.model.UserPaperRecord;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * @author aml
+ * @date 2019/12/22 19:15
+ */
+@Repository
+public interface UserPaperRecordDao extends JpaRepository {
+
+ //1. 获取此用户是否 存在 此套试卷的 记录 按记录的次数 降序返回
+ @Query(value = "SELECT * FROM e_user_paper_record WHERE student_number=?1 AND subject=?2 AND exam_paper_id=?3 ORDER BY times DESC", nativeQuery = true)
+ List getByStudentNumberAndSubjectAndExamPaperId(String stuNumber,String subjectName,int examPaperId);
+
+ //2. 获取此用户的 本次试卷的保存信息,按照times降序获取
+ // List getByStudentNumberAndSubjectAndExamPaperId(String stu)
+
+
+
+
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/exam/dao/UserQuestionRecordDao.java b/src/main/java/com/zgczx/repository/mysql1/exam/dao/UserQuestionRecordDao.java
new file mode 100644
index 0000000..ffd1d23
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/exam/dao/UserQuestionRecordDao.java
@@ -0,0 +1,176 @@
+package com.zgczx.repository.mysql1.exam.dao;
+
+import com.zgczx.repository.mysql1.exam.model.UserQuestionRecord;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * 用户做题记录表
+ * @author aml
+ * @date 2019/12/16 15:11
+ */
+@Repository
+public interface UserQuestionRecordDao extends JpaRepository {
+
+ //1. 获取某学生->某科目 -> 某试卷的所有做题记录; 可以统计做对数量和做错数量
+ List getByStudentNumberAndSubjectAndExamPaperIdAndTimes(String studentNumber,String subject,int paperId,int times);
+
+ //2. 获取这份试卷中这道题,此用户是否做过,按做过次数的降序排列
+ @Query(value = "SELECT * FROM e_user_question_record WHERE student_number=?1 AND exam_paper_id=?2 AND question_id=?3 ORDER BY times DESC", nativeQuery = true)
+ List getByStudentNumberAndExamPaperIdAndQuestionId(String stuNumber,int sourcePaperId,int questionid);
+ //2.2 获取这份试卷中这道题,此用户是否做过,按做过次数的降序排列,3.23 + 章节练习这个标签
+ @Query(value = "SELECT * FROM e_user_question_record WHERE student_number=?1 AND exam_paper_id=?2 AND question_id=?3 AND exam_category='章节练习' ORDER BY times DESC", nativeQuery = true)
+ List getByStudentNumberAndExamPaperIdAndQuestionId2(String stuNumber,int sourcePaperId,int questionid);
+
+ // 3. 获取 此用户回显的 做题记录
+ @Query(value = "SELECT * FROM e_user_question_record WHERE student_number=?1 AND SUBJECT=?2 AND exam_paper_id=?3 ORDER BY times DESC\n", nativeQuery = true)
+ List getByStudentNumberAndSubjectAndExamPaperId(String studentNumber,String subject,int sourcePaperId);
+ // 3.2 获取 此用户回显的 做题记录. 首页面继续学习接口
+ @Query(value = "SELECT * FROM e_user_question_record WHERE student_number=?1 AND SUBJECT=?2 AND exam_category='章节练习' ORDER BY times DESC\n", nativeQuery = true)
+ List getByStudentNumberAndSubjectAndExamPaperId2(String studentNumber,String subject);
+
+ //4. 获取此学生-》此科目-》所有错题的试卷id: exam_paper_id
+ @Query(value = "SELECT DISTINCT exam_paper_id FROM e_user_question_record WHERE student_number=?1 AND SUBJECT=?2 ", nativeQuery = true)
+ List getAllExamPaperId(String stuNumber, String subject);
+
+ //5. 获取此用户-》此科目-》章节练习中 所有错的 试卷名称(每节的名称)
+ @Query(value = "SELECT DISTINCT exam_paper_name FROM e_user_question_record WHERE student_number=?1 AND SUBJECT=?2 AND do_right=?3 AND exam_category IN(?4,?5) ", nativeQuery = true)
+ List getAllErrInfo(String stuNumber,String subject,int doRight,String examCategory,String examCategory2);
+
+ //6. 获取此用户-》此科目-》章节练习-》所有试卷名称
+ @Query(value = "SELECT DISTINCT exam_paper_name FROM e_user_question_record WHERE student_number=?1 AND SUBJECT=?2 AND exam_category=?3 ", nativeQuery = true)
+ List getAllExamPaperName(String stuNumber,String subject,String examCategory);
+
+ //7. 获取此用户-》此科目-》章节练习中 所有错题的信息
+ List getByStudentNumberAndSubjectAndDoRightAndExamCategory(String stuNumber,String subject,int doRight,String examCategory);
+
+ //8. 获取此节的 所有错题数量 lxj
+ @Query(value = "SELECT COUNT(DISTINCT question_id) FROM e_user_question_record WHERE student_number=?1 AND SUBJECT=?2 AND exam_paper_name=?3",nativeQuery = true)
+ int getByErrNumber(String stuNumber,String subject,String examPaperName);
+
+ // 9. 查询用户某试卷最新一次做题记录 lxj
+ @Query(value = "select * from e_user_question_record where student_number=?1 and exam_paper_name=?2 and exam_category=?3 and \n" +
+ "times=(select max(times) from e_user_question_record where student_number=?1 and exam_paper_name=?2 and exam_category=?3) ",nativeQuery = true)
+ List getUserQuestionRecord(String stuNumber,String examName,String source);
+ // 9.2 查询用户某试卷最新一次做题记录 lxj
+ @Query(value = "select * from e_user_question_record where student_number=?1 and exam_paper_name=?2 and times=(select max(times) \n" +
+ "from e_user_question_record where student_number=?1 and exam_paper_name=?2) AND inserttime >=?3 AND inserttime <=?4 ",nativeQuery = true)
+ List getUserQuestionRecord2(String stuNumber,String examName,String starTime,String endTime);
+ // 9.3 用于十五接口 查询用户某试卷最新一次做题记录 lxj
+ @Query(value = "select * from e_user_question_record where student_number=?1 and exam_paper_name=?2 and times=(select max(times) \n" +
+ "from e_user_question_record where student_number=?1 and exam_paper_name=?2) AND exam_category=?3 ",nativeQuery = true)
+ List getUserQuestionRecord3(String stuNumber,String examName,String source);
+
+ // 9(1). 查询用户专项练习最新一次做题记录 lxj
+ @Query(value = "select * from e_user_question_record where student_number=?1 and knowledge_points=?2 and exam_category=?3 and \n" +
+ "times=(select max(times) from e_user_question_record where student_number=?1 and exam_category=?3 \n" +
+ "and knowledge_points=?2) ",nativeQuery = true)
+ List getUserQuestionRecordByKnowledgePoints(String stuNumber,String knowledgePoints,String source);
+ // 3.2号 9(1).2. 查询用户、科目、年级、专项练习最新一次做题记录 lxj
+ @Query(value = "SELECT * FROM e_user_question_record AS euqr\n" +
+ "INNER JOIN e_question AS eq\n" +
+ "ON euqr.question_id=eq.id\n" +
+ "WHERE euqr.student_number=?1 AND euqr.subject=?2 AND euqr.exam_category=?3 AND eq.level_name=?4 AND \n" +
+ "euqr.times=(SELECT MAX(times) FROM e_user_question_record WHERE student_number=?1 AND exam_category=?3 \n" +
+ "AND SUBJECT=?2) ",nativeQuery = true)
+ List getUserQuestionRecordByKnowledgePoints2(String stuNumber,String subject,String source,String levelName);
+
+
+ // 10. 查询用户某份试卷最新一次做题时间 lxj
+ @Query(value = "select max(updatetime) from e_user_question_record where student_number=?1 and exam_paper_name=?2 \n" +
+ "and exam_category=?3 and times=(select max(times) from e_user_question_record where student_number=?1 \n" +
+ "and exam_paper_name=?2 and exam_category=?3)",nativeQuery = true)
+ String getDoTimeByChapter(String stuNumber,String examName,String category);
+ // 10.2 查询用户某份试卷最新一次做题时间 lxj
+ @Query(value = "select max(updatetime) from e_user_question_record where student_number=?1 and exam_paper_name=?2 \n" +
+ "and exam_category=?3 and times=(select max(times) from e_user_question_record where student_number=?1 \n" +
+ "and exam_paper_name=?2 and exam_category=?3) AND inserttime >=?4 AND inserttime <=?5 ",nativeQuery = true)
+ String getDoTimeByChapter2(String stuNumber,String examName,String category,String starTime,String endTime);
+ // 11. 根据用户学号查询用户做题时间 lxj
+ @Query(value = "select distinct date_format(euqr.updatetime,'%Y-%m-%d') date FROM e_user_question_record as euqr,e_question as eq,\n" +
+ "e_exam_paper as eep where euqr.student_number=?1 and euqr.`subject`=?2 and euqr.question_id=eq.id and eq.exam_id=eep.id \n" +
+ "and eep.grade_level=?3 ",nativeQuery = true)
+ List getDoQuestionsDate(String stuNumber,String subject,String levelName);
+
+ /* // 12. 根据用户时间统计用户当天做题数 lxj
+ @Query(value = "select count(id) from e_user_question_record where student_number=?1 and DATE_FORMAT(inserttime,'%Y-%m-%d')=?2 ",nativeQuery = true)
+ int getDoQUestionsNumsByDate(String stuNumber,String date);*/
+ //3.3 修改 12.根据用户时间统计用户当天做题数 lxj
+ @Query(value = "SELECT COUNT(euqr.id) FROM e_user_question_record AS euqr\n" +
+ "INNER JOIN e_question AS eq\n" +
+ "ON euqr.question_id=eq.id\n" +
+ "WHERE euqr.student_number=?1 AND DATE_FORMAT(euqr.inserttime,'%Y-%m-%d')=?2 AND euqr.subject=?3 AND eq.level_name=?4 ",nativeQuery = true)
+ int getDoQUestionsNumsByDate(String stuNumber,String date,String subject,String levelName);
+
+/* // 13. 根据做题时间和用户学号查询用户当天做对题数 lxj
+ @Query(value = "select count(id) from e_user_question_record where student_number=?1 and DATE_FORMAT(inserttime,'%Y-%m-%d')=?2 and do_right=?3 ",nativeQuery = true)
+ int getDoQuestionsRightNumsByDate(String stuNumber,String date, int doRight);*/
+// 3.3 修改 13. 根据做题时间和用户学号查询用户当天做对题数 lxj
+ @Query(value = "SELECT COUNT(euqr.id) FROM e_user_question_record AS euqr\n" +
+ "INNER JOIN e_question AS eq\n" +
+ "ON euqr.question_id=eq.id\n" +
+ "WHERE euqr.student_number=?1 AND DATE_FORMAT(euqr.inserttime,'%Y-%m-%d')=?2 AND euqr.subject=?3 AND eq.level_name=?4 AND euqr.do_right=?5 \n ",nativeQuery = true)
+ int getDoQuestionsRightNumsByDate(String stuNumber,String date, String subject,String levelName,int doRight);
+ ////3.22修改,获取具体学科的做题时间
+ // 14. 根据做题时间查询用户当天做题情况(用户获取用户做每道题的时间) lxj
+ @Query(value = "select do_time from e_user_question_record where student_number=?1 and DATE_FORMAT(inserttime,'%Y-%m-%d')=?2 and subject=?3 ",nativeQuery = true)
+ List getDoQuestionsTimeList(String stuNumber,String date,String subject);
+
+ // 15. 每个知识点最新一次做题时间
+
+ // 16. 按照知识点统计用户最新一次做题记录 lxj
+ @Query(value = "select * from e_user_question_record where student_number=?1 and knowledge_points=?2 and exam_category=?3 and \n" +
+ "times=(select max(times) from e_user_question_record where student_number=?1 and knowledge_points=?2 and exam_category=?3) ",nativeQuery = true)
+ List getQuestionsRecordByAttribute(String stuNumber, String attribute, String questionCategory);
+ // 16.2 按照知识点统计用户最新一次做题记录 lxj
+ @Query(value = "select * from e_user_question_record where student_number=?1 and knowledge_points=?2 and exam_category=?3 and \n" +
+ "times=(select max(times) from e_user_question_record where student_number=?1 and knowledge_points=?2 and exam_category=?3) AND inserttime >=?4 AND inserttime <=?5 ",nativeQuery = true)
+ List getQuestionsRecordByAttribute2(String stuNumber, String attribute, String questionCategory,String starTime,String endTime);
+ // 3.2号 9(1).2. 查询用户、科目、年级、专项练习最新一次做题记录 lxj
+ @Query(value = "SELECT * FROM e_user_question_record AS euqr\n" +
+ "INNER JOIN e_question AS eq\n" +
+ "ON euqr.question_id=eq.id\n" +
+ "WHERE euqr.student_number=?1 AND euqr.subject=?2 AND euqr.exam_category=?3 AND eq.level_name=?4 AND \n" +
+ "euqr.times=(SELECT MAX(times) FROM e_user_question_record WHERE student_number=?1 AND exam_category=?3 \n" +
+ "AND SUBJECT=?2) AND euqr.inserttime >=?5 AND euqr.inserttime <=?6 ",nativeQuery = true)
+ List getUserQuestionRecordByKnowledgePoints3(String stuNumber,String subject,String source,String levelName,String starTime,String endTime);
+
+ // 17. 查询用户某个知识点最新一次做题时间
+ @Query(value = "select max(updatetime) from e_user_question_record where student_number=?1 and knowledge_points=?2 \n" +
+ "and exam_category=?3 and times=(select max(times) from e_user_question_record where student_number=?1 \n" +
+ "and knowledge_points=?2 and exam_category=?3) ",nativeQuery = true)
+ String getDoTimeByAttribute(String stuNumber,String attribute,String category);
+ // 17.2 查询用户某个知识点最新一次做题时间
+ @Query(value = "select max(updatetime) from e_user_question_record where student_number=?1 and knowledge_points=?2 \n" +
+ "and exam_category=?3 and times=(select max(times) from e_user_question_record where student_number=?1 \n" +
+ "and knowledge_points=?2 and exam_category=?3) AND inserttime >=?4 AND inserttime <=?5 ",nativeQuery = true)
+ String getDoTimeByAttribute2(String stuNumber,String attribute,String category,String starTime,String endTime);
+
+ // 18. 十九、 学习记录:上面三个数的统计:用户做题总数
+ @Query(value = "select count(*) from e_user_question_record as euqr, e_question as eq where euqr.student_number=?1 and euqr.`subject`=?2 and euqr.question_id=eq.id \n" +
+ "and eq.level_name=?3 ",nativeQuery = true)
+ int getDoQuestionCount(String stuNumber,String subject,String levelName);
+
+ // 18(2). 十九、 学习记录:上面三个数的统计:查询用户每道题做题时长
+ @Query(value = "select euqr.do_time from e_user_question_record as euqr, e_question as eq where euqr.student_number=?1 and euqr.`subject`=?2 \n" +
+ "and euqr.question_id=eq.id and eq.level_name=?3 ",nativeQuery = true)
+ List getDoQUestionTime(String stuNumber,String subject, String levelName);
+
+ // 18(3). 十九、 学习记录:上面三个数的统计:查询用户每道题做题时间
+ @Query(value = "select euqr.* from e_user_question_record as euqr, e_question as eq where euqr.student_number=?1 and euqr.`subject`=?2 \n" +
+ "and euqr.question_id=eq.id and eq.level_name=?3 ",nativeQuery = true)
+ List getDoQuestionUpdatetime(String stuNumber, String subject, String levelName);
+
+ // 18(4). 十九、 学习记录:此用户、科目、年级 做题天数
+ @Query(value = "select COUNT(DISTINCT SUBSTRING(euqr.inserttime,1,10)) from e_user_question_record as euqr, e_question as eq where euqr.student_number=?1 and euqr.`subject`=?2 \n" +
+ "and euqr.question_id=eq.id and eq.level_name=?3 ",nativeQuery = true)
+ int getDoQuestionDays(String stuNumber, String subject, String levelName);
+
+ //19. 二十二、专项练习: 获取 专项练习 模块中,此用户是否做过,按做过次数的降序排列
+ @Query(value = "SELECT * FROM e_user_question_record WHERE student_number=?1 AND exam_category=?2 AND question_id=?3 AND SUBJECT=?4 ORDER BY times DESC", nativeQuery = true)
+ List getSpecialRecord(String stuNumber,String examCategory,int questionid,String subject);
+
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/exam/dao/UserWrongQustionDao.java b/src/main/java/com/zgczx/repository/mysql1/exam/dao/UserWrongQustionDao.java
new file mode 100644
index 0000000..2647ea6
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/exam/dao/UserWrongQustionDao.java
@@ -0,0 +1,225 @@
+package com.zgczx.repository.mysql1.exam.dao;
+
+import com.zgczx.repository.mysql1.exam.model.UserWrongQustion;
+import org.apache.ibatis.annotations.Delete;
+import org.apache.ibatis.annotations.Update;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 用户错题的dao
+ * @author aml
+ * @date 2020/1/2 12:46
+ */
+@Repository
+public interface UserWrongQustionDao extends JpaRepository {
+
+ //1. 获取此来源的此题数据;由学号-科目-试卷来源(章节;模拟;历年真题)
+ @Query(value = "SELECT * FROM e_user_wrong_qustion WHERE student_number=?1 AND exam_category=?2 AND question_id=?3 AND subject=?4 ", nativeQuery = true)
+ UserWrongQustion getByStudentNumberAndExamCategoryAndQuestionId(String stuNumber, String examCategory, int questionid,String subject);
+
+ // 2. 获取某个用户所有错题数 lxj
+ @Query(value = "select count(distinct question_id) from e_user_wrong_qustion where `subject`=?2 and student_number=?1 ",nativeQuery = true)
+ int getErrorProblemsNumber(String stuNumber,String subject);
+
+// // 3. 获取用户章节练习错题数(未掌握的) lxj
+// @Query(value = "select count(distinct question_id) from e_user_wrong_qustion where `subject`=?2 and student_number=?1 and do_right=2 and exam_category='章节练习' ",nativeQuery = true)
+// int getChapterErrProblemsNum(String stuNumber,String subject);
+//
+// // 4. 获取用户考试错题数(未掌握的) lxj
+// @Query(value = "select count(distinct question_id) from e_user_wrong_qustion where `subject`=?2 and student_number=?1 and do_right=2 and (exam_category='模拟考试' or exam_category='历年真题') ",nativeQuery = true)
+// int getExamErrorProblemsNum(String stuNumber,String subject);
+
+ // 5. 获取用户每一章的错题数(已掌握和未掌握,传参决定是否掌握) lxj
+ @Query(value = "select count(distinct question_id) from e_user_wrong_qustion as euwq,e_exam_paper as eep,e_chapter as ec \n" +
+ "where eep.chapter_id=ec.id and ec.chapter=?3 \n" +
+ "and eep.exam_name=euwq.exam_paper_name and euwq.do_right=?4 and euwq.student_number=?1 and euwq.subject=?2 ",nativeQuery = true)
+ int getErrorNumByChapter(String stuNumber, String subject,String chapter,int doRight);
+
+ // 6. 统计用户每次考试错题数(已掌握和未掌握,传参决定是否掌握) lxj
+ @Query(value = "select count(distinct question_id) from e_exam_paper as eep,e_user_wrong_qustion as euwq where euwq.exam_paper_name=eep.exam_name \n" +
+ "and exam_name=?3 and euwq.do_right=?4 and euwq.student_number=?1 and euwq.subject=?2 ",nativeQuery = true)
+ int getErrorNumByExam(String stuNumber,String subject,String examName,int doRight);
+
+ // 7. 获取此节的 所有错题数量(已掌握和未掌握,传参决定是否掌握) lxj
+ @Query(value = "SELECT COUNT(DISTINCT question_id) FROM e_user_wrong_qustion WHERE student_number=?1 AND SUBJECT=?2 \n" +
+ "AND exam_paper_name=?3 and do_right=?4 ",nativeQuery = true)
+ int getByErrNumber(String stuNumber,String subject,String examPaperName,int doRight);
+
+ // 8. 根据节的名称 获取错题的详细信息 lxj
+ @Query(value = "select distinct question_id,euwq.id,euwq.student_number,euwq.openid,euwq.`subject`,euwq.do_right,euwq.user_answer,euwq.exam_paper_id,\n" +
+ "euwq.exam_paper_name,euwq.exam_category,euwq.do_time,euwq.inserttime,euwq.updatetime from e_user_wrong_qustion as euwq,e_exam_paper as eep,e_chapter as ec \n" +
+ "where ec.chapter=?3 and ec.section=?4 and ec.section=eep.exam_name and eep.exam_name=euwq.exam_paper_name and euwq.do_right=?5 and euwq.student_number=?1 \n" +
+ "and euwq.subject=?2 ",nativeQuery = true)
+ public List getErrorProblemsIdByChapterAndSection(String stuNumber,String subject,String chapter,String section,int doRight);
+
+ // 9. 根据考试名称 获取本次考试错题id lxj
+ @Query(value = "select distinct question_id,euwq.id,euwq.student_number,euwq.openid,euwq.`subject`,euwq.do_right,euwq.user_answer,euwq.exam_paper_id,\n" +
+ "euwq.exam_paper_name,euwq.exam_category,euwq.do_time,euwq.inserttime,euwq.updatetime from e_user_wrong_qustion as euwq,e_exam_paper as eep \n" +
+ "where eep.exam_name=?3 and eep.exam_name=euwq.exam_paper_name and euwq.do_right=?4 \n" +
+ "and euwq.student_number=?1 and euwq.subject=?2 ",nativeQuery = true)
+ public List getErrorProblemsIdByExamName(String stuNumber,String subject,String examName,int doRight);
+
+// // 10. 统计用户练习错题数(已掌握的) lxj
+// @Query(value = "select count(distinct question_id) from e_user_wrong_qustion where `subject`=?2 and student_number=?1 and do_right=1 and exam_category='章节练习' ",nativeQuery = true)
+// int getChapterErrProblemsNum2(String stuNumber,String subject);
+//
+// // 11. 统计用户考试错题数(已掌握的) lxj
+// @Query(value = "select count(distinct question_id) from e_user_wrong_qustion where `subject`=?2 and student_number=?1 and do_right=1 and (exam_category='模拟考试' or exam_category='历年真题') ",nativeQuery = true)
+// int getExamErrorProblemsNum2(String stuNumber,String subject);
+
+ // 12. 统计用户已掌握错题数 lxj
+ @Query(value = "select count(distinct question_id) from e_user_wrong_qustion where `subject`=?2 and student_number=?1 and do_right=1 ",nativeQuery = true)
+ int getMasteredErrorProblemsNum(String stuNumber,String subject);
+
+ // 12(1). 根据年级统计用户错题数(已掌握和未掌握,已掌握未掌握通过参数传) lxj
+ @Query(value = "select count(distinct question_id) from e_user_wrong_qustion as euwq,e_exam_paper as eep where eep.grade_level=?2 and eep.id=euwq.exam_paper_id \n" +
+ "and euwq.`subject`=?3 and euwq.student_number=?1 and euwq.do_right=?4 ",nativeQuery = true)
+ int getMasteredErrorQuestionsCountByGradeLevel(String stuNumber,String levelName,String subject,int doRight);
+
+ // 13. 统计用户未掌握错题数 lxj
+ @Query(value = "select count(distinct question_id) from e_user_wrong_qustion where `subject`=?2 and student_number=?1 and do_right=2 ",nativeQuery = true)
+ int getNotMasteredErrorProblemsNum(String stuNumber,String subject);
+
+ // 14. 统计用户练习错题数 lxj
+ @Query(value = "select count(distinct question_id) from e_user_wrong_qustion where `subject`=?2 and student_number=?1 and (exam_category='章节练习' or exam_category='专项练习') ",nativeQuery = true)
+ int getPracticeErrorNum(String stuNumber,String subject);
+
+ // 15. 统计用户考试错题数 lxj
+ @Query(value = "select count(distinct question_id) from e_user_wrong_qustion where `subject`=?2 and student_number=?1 and (exam_category='模拟考试' or exam_category='历年真题') ",nativeQuery = true)
+ int getExamErrorNum(String stuNumber,String subject);
+
+ // 16. 用户删除已掌握错题中的某道题 lxj
+ @Query(value="delete from e_user_wrong_qustion where id=?1 ",nativeQuery = true)
+ @Modifying
+ @Transactional
+ void deleteById(int id);
+
+ // 17. 根据学生学号、学科、题号、试题来源、已掌握查询已掌握错题的题号
+ @Query(value = "select id from e_user_wrong_qustion where student_number=?1 and subject=?2 and do_right=1 and question_id=?3 and (exam_category=?4 or exam_category=?5) ",nativeQuery = true)
+ String getIdBySubjectAndQuestionIdAndExamCategory(String stuNumber,String subject,int questionId,String examCategory1,String examCategory2);
+ // 17.2 根据学生学号、学科、题号、已掌握查询已掌握错题的题号
+ @Query(value = "select id from e_user_wrong_qustion where student_number=?1 and subject=?2 and do_right=1 and question_id=?3 ",nativeQuery = true)
+ String getIdBySubjectAndQuestionId(String stuNumber,String subject,int questionId);
+ @Query(value = "select * from e_user_wrong_qustion where student_number=?1 and subject=?2 and do_right=1 and question_id=?3 ",nativeQuery = true)
+ List getIdBySubjectAndQuestionId2(String stuNumber,String subject,int questionId);
+
+ // 18. 错题表中查询同一用户、同一来源、同一道题做题记录 lxj
+ @Query(value = "select * from e_user_wrong_qustion where student_number=?1 and `subject`=?2 and question_id=?3 and exam_paper_id=?4 \n" +
+ "and exam_paper_name=?5 and (exam_category=?6 or exam_category=?7) ",nativeQuery = true)
+ UserWrongQustion getUserWrongQustionByUserAndSubjectAndExamCategory(String stuNumber,String subject,int questionId,int examPaperId,String examPaperName,String examCategory1,String examCategory2);
+
+ //19. 获取错题表中某用户-》某年级-》某科目 某类(章节练习) 未掌握(或已掌握)的所有题,3.29修改:添加AND uwq.`exam_category`='章节练习'
+ @Query(value = "SELECT * FROM e_user_wrong_qustion AS uwq\n" +
+ "INNER JOIN e_question AS q \n" +
+ "ON uwq.`question_id`=q.`id` \n" +
+ "INNER JOIN e_exam_paper AS ep \n" +
+ "ON uwq.`exam_paper_id`=ep.`id` \n" +
+ "WHERE student_number=?1 AND ep.`grade_level`=?2 AND uwq.`subject`=?3 AND uwq.`do_right`=?4 AND ep.`exam_source`=?5 AND uwq.`exam_category`='章节练习' ", nativeQuery = true)
+ List getAllInfo(String stuNumber,String gradeLevel,String subject,int doRight,String examCategory);
+
+ //19.2 获取错题表中某用户-》某年级-》某科目 (专项练习) 未掌握(或已掌握)的所有题
+ @Query(value = "SELECT * FROM e_user_wrong_qustion AS uwq\n" +
+ "INNER JOIN e_question AS q \n" +
+ "ON uwq.`question_id`=q.`id` \n" +
+ "WHERE student_number=?1 AND q.`level_name`=?2 AND uwq.`subject`=?3 AND uwq.`do_right`=?4 AND uwq.exam_category=?5 ", nativeQuery = true)
+ List getAllInfo2(String stuNumber,String gradeLevel,String subject,int doRight,String examCategory);
+
+
+ //20. 获取错题表中 用户-》某年级-》某科目 各分类的 未掌握(或已掌握)的所有题
+ @Query(value = "SELECT DISTINCT uwq.question_id,uwq.id,uwq.student_number,uwq.openid,uwq.`subject`,uwq.do_right,uwq.user_answer,uwq.exam_paper_id,uwq.exam_paper_name,uwq.exam_category,uwq.do_time,uwq.inserttime,uwq.updatetime FROM e_user_wrong_qustion AS uwq FROM e_user_wrong_qustion AS uwq\n" +
+ "INNER JOIN e_exam_paper AS ep\n" +
+ "ON uwq.`exam_paper_id`=ep.`id`\n" +
+ "WHERE student_number=?1 AND ep.`grade_level`=?2 AND uwq.`subject`=?3 AND uwq.`do_right`=?4 ", nativeQuery = true)
+ List getClassificationQuantity(String stuNumber,String gradeLevel,String subject,int doRight);
+
+ //21. 获取错题表中 用户 -》 某年级 -》 某科目 全部的 未掌握和已掌握的 所有题
+ @Query(value = "SELECT uwq.*\n" +
+ "FROM e_user_wrong_qustion AS uwq\n" +
+ "INNER JOIN e_question AS q\n" +
+ "ON uwq.`question_id`=q.`id`\n" +
+ "INNER JOIN e_exam_paper AS ep\n" +
+ "ON uwq.`exam_paper_id`=ep.`id`\n" +
+ "WHERE student_number=?1 AND ep.`grade_level`=?2 AND uwq.`subject`=?3 AND uwq.`do_right`=?4 \n" +
+ "GROUP BY uwq.`question_id` \n" +
+ "ORDER BY uwq.inserttime ASC", nativeQuery = true)
+ List getAllByQuestion(String stuNumber,String gradeLevel,String subject,int doRight);
+
+ //22. 获取获取错题表中 用户 -》 某年级 -》 某科目 -> 某道题 的 未掌握和已掌握的 此题的 来源
+ @Query(value = "SELECT DISTINCT uwq.`exam_category` FROM e_user_wrong_qustion AS uwq\n" +
+ "INNER JOIN e_question AS q\n" +
+ "ON uwq.`question_id`=q.`id`\n" +
+ "INNER JOIN e_exam_paper AS ep\n" +
+ "ON uwq.`exam_paper_id`=ep.`id`\n" +
+ "WHERE student_number=?1 AND ep.`grade_level`=?2 AND uwq.`subject`=?3 AND uwq.`do_right`=?4 AND uwq.`question_id`=?5", nativeQuery = true)
+ List getallQuestionSource(String stuNumber,String gradeLevel,String subject,int doRight, int questionId);
+
+
+ //23. 根据“章节名称” 获取此学号、年级、科目、是否做对 获取 有哪些节有错题
+ @Query(value = "SELECT DISTINCT uwq.`exam_paper_name` FROM e_user_wrong_qustion AS uwq\n" +
+ "INNER JOIN e_exam_paper AS ep\n" +
+ "ON uwq.`exam_paper_id`=ep.`id`\n" +
+ "WHERE student_number=?1 AND ep.`grade_level`=?2 AND uwq.`subject`=?3 AND uwq.`do_right`=?4 AND ep.`exam_source`=?5 ", nativeQuery = true)
+ List getSectionName(String stuNumber,String gradeLevel,String subject,int doRight,String examCategory);
+
+ //24. 获取错题中的章节对应关系,根据章的名称获取 去重后的 此节的名称
+ @Query(value = "select DISTINCT euwq.exam_paper_name from e_user_wrong_qustion as euwq,e_exam_paper as eep,e_chapter as ec \n" +
+ "where eep.chapter_id=ec.id and ec.chapter=?3 \n" +
+ "and eep.exam_name=euwq.exam_paper_name and euwq.do_right=?4 and euwq.student_number=?1 and euwq.subject=?2 ",nativeQuery = true)
+ List getChapterSection(String stuNumber, String subject,String chapter,int doRight);
+
+ //25. 获取专项练习中的 所有题的知识点属性,根据学号、年级、科目、是否作对
+ @Query(value = "SELECT DISTINCT q.`question_attribute` FROM e_user_wrong_qustion AS uwq\n" +
+ "INNER JOIN e_question AS q\n" +
+ "ON uwq.`question_id`=q.`id`\n" +
+ "WHERE uwq.student_number=?1 AND uwq.SUBJECT=?3 AND uwq.do_right=?4 AND q.`level_name`=?2 AND uwq.`exam_category`=?5 ", nativeQuery = true)
+ List getQuestionAttribute(String stuNumber,String gradeLevel,String subject,int doRight,String examCategory);
+
+ //26. 获取专项练习中 某个知识点属性的 数量,根据学号、年级、科目、是否作对、知识点属性
+ @Query(value = "SELECT COUNT(*) FROM e_user_wrong_qustion AS uwq\n" +
+ "INNER JOIN e_question AS q\n" +
+ "ON uwq.`question_id`=q.`id`\n" +
+ "WHERE uwq.student_number=?1 AND uwq.SUBJECT=?3 AND uwq.do_right=?4 AND q.`level_name`=?2 AND uwq.`exam_category`=?5 AND FIND_IN_SET(?6,q.`question_attribute`) ", nativeQuery = true)
+ int getQuestionAttributeNum(String stuNumber,String gradeLevel,String subject,int doRight,String examCategory,String attribute);
+
+ //27. 获取错题表中某用户-》某年级-》某科目 章节练习 未掌握(或已掌握)的所有题
+ @Query(value = "SELECT * FROM e_user_wrong_qustion AS uwq\n" +
+ "INNER JOIN e_question AS q\n" +
+ "ON uwq.`question_id`=q.`id`\n" +
+ "WHERE uwq.student_number=?1 AND uwq.SUBJECT=?3 AND uwq.do_right=?4 AND q.`level_name`=?2 AND uwq.`exam_category`=?5 ", nativeQuery = true)
+ List getAllChapterInfo(String stuNumber,String gradeLevel,String subject,int doRight,String examCategory);
+
+ //28. 获取历年真题获取模拟考试的 掌握或未掌握的 试卷名称,根据学号、年级、科目、是否作对,历年真题或模拟考试
+ @Query(value = "SELECT DISTINCT uwq.`exam_paper_name` FROM e_user_wrong_qustion AS uwq \n" +
+ "INNER JOIN e_exam_paper AS ep \n" +
+ "ON uwq.`exam_paper_id`=ep.`id`\n" +
+ "WHERE student_number=?1 AND ep.`grade_level`=?2 AND uwq.`subject`=?3 AND uwq.`do_right`=?4 AND ep.`exam_source`= uwq.`exam_category` AND uwq.`exam_category`=?5 ", nativeQuery = true)
+ List getExamPaperName(String stuNumber,String gradeLevel,String subject,int doRight,String examCategory);
+ //29. 获取此考试名称的 未掌握或已掌握的 错题数量,根据学号、年级、科目、是否作对,历年真题或模拟考试的试卷名称
+ @Query(value = "SELECT COUNT(DISTINCT uwq.`question_id`) FROM e_user_wrong_qustion AS uwq \n" +
+ "INNER JOIN e_exam_paper AS ep \n" +
+ "ON uwq.`exam_paper_id`=ep.`id`\n" +
+ "WHERE student_number=?1 AND ep.`grade_level`=?2 AND uwq.`subject`=?3 AND uwq.`do_right`=?4 AND ep.`exam_source`= uwq.`exam_category` AND uwq.`exam_paper_name`=?5 ", nativeQuery = true)
+ int getgetExamPaperNameNum(String stuNumber,String gradeLevel,String subject,int doRight,String examPaperName);
+
+ // 30. 获取此 模块的总共未掌握或已掌握的错题数量,根据学号、年级、科目、是否作对,历年真题或模拟考试
+ @Query(value = "SELECT COUNT(DISTINCT uwq.`question_id`) FROM e_user_wrong_qustion AS uwq \n" +
+ "INNER JOIN e_exam_paper AS ep \n" +
+ "ON uwq.`exam_paper_id`=ep.`id`\n" +
+ "INNER JOIN e_question AS q ON uwq.`question_id`=q.id \n" +
+ "WHERE student_number=?1 AND ep.`grade_level`=?2 AND uwq.`subject`=?3 AND uwq.`do_right`=?4 AND ep.`exam_source`= uwq.`exam_category` AND uwq.`exam_category`=?5 AND q.`level_name`=?2 ", nativeQuery = true)
+ int getTotalExamPaperNum(String stuNumber,String gradeLevel,String subject,int doRight,String examCategory);
+
+ //31. 传来“全部”时,获取所有 用户的、科目、年级、是否掌握 所有数量
+ @Query(value = "SELECT * FROM e_user_wrong_qustion AS uwq \n" +
+ "INNER JOIN e_question AS q\n" +
+ "ON uwq.`question_id`=q.id\n" +
+ "WHERE student_number=?1 AND uwq.`subject`=?2 AND q.level_name=?3 AND uwq.`do_right`=?4 ", nativeQuery = true)
+ List totalNum(String stuNumber,String subject,String gradeLevel,int doRight);
+
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/exam/dto/ChapterErrNumberDTO.java b/src/main/java/com/zgczx/repository/mysql1/exam/dto/ChapterErrNumberDTO.java
new file mode 100644
index 0000000..23ef9d9
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/exam/dto/ChapterErrNumberDTO.java
@@ -0,0 +1,18 @@
+package com.zgczx.repository.mysql1.exam.dto;
+
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * 十二、点击练习错题时,展现的章节名称和对应的错题数量 封装类
+ * @author aml
+ * @date 2019/12/23 19:02
+ */
+@Data
+public class ChapterErrNumberDTO {
+
+ private String gradeLevel;//年级水平
+
+ private Map chapterNumber;//错题的章节名称 和 对应的数量
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/exam/dto/DoQuestionInfoDTO.java b/src/main/java/com/zgczx/repository/mysql1/exam/dto/DoQuestionInfoDTO.java
new file mode 100644
index 0000000..afcf6ff
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/exam/dto/DoQuestionInfoDTO.java
@@ -0,0 +1,28 @@
+package com.zgczx.repository.mysql1.exam.dto;
+
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 六、动态实时呈现用户做题详情 并记录用户所有的做题情况 的封装类
+ * @author aml
+ * @date 2019/12/17 15:46
+ */
+@Data
+public class DoQuestionInfoDTO {
+ //总共做题数量
+ private int questionCount;
+//作对题的数量
+ private int doRight;
+//作错题的数量
+ private int doError;
+//未做题的数量
+ private int notDo;
+
+ private List doRightList; // 做对的题号
+ private List doErrorList; // 做错的题号
+ private List notDoList; // 未做的题号
+
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/exam/dto/EchoDoQuestionDTO.java b/src/main/java/com/zgczx/repository/mysql1/exam/dto/EchoDoQuestionDTO.java
new file mode 100644
index 0000000..d58a5e0
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/exam/dto/EchoDoQuestionDTO.java
@@ -0,0 +1,18 @@
+package com.zgczx.repository.mysql1.exam.dto;
+
+import lombok.Data;
+
+/**
+ * 回显 用户 的做题情况
+ * @author aml
+ * @date 2019/12/20 12:51
+ */
+@Data
+public class EchoDoQuestionDTO {
+ // 题号
+ private int questionNo;
+
+ // 对应的当时填写的文本
+ private String questionNoText;
+
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/exam/dto/EchoPaperCompleteDTO.java b/src/main/java/com/zgczx/repository/mysql1/exam/dto/EchoPaperCompleteDTO.java
new file mode 100644
index 0000000..95547fe
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/exam/dto/EchoPaperCompleteDTO.java
@@ -0,0 +1,20 @@
+package com.zgczx.repository.mysql1.exam.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 这个是真正的返回给前端的 DTO,里面套了两个dto
+ * @author aml
+ * @date 2019/12/24 15:02
+ */
+@Data
+public class EchoPaperCompleteDTO {
+
+ private List list;
+
+ private int effective;//2此时卷没做完; 1 为时卷做完;
+
+ private String firstNoDoneNum;// 此试卷中第一道未做的 题号
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/exam/dto/EchoPaperDTO.java b/src/main/java/com/zgczx/repository/mysql1/exam/dto/EchoPaperDTO.java
new file mode 100644
index 0000000..0787e1f
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/exam/dto/EchoPaperDTO.java
@@ -0,0 +1,83 @@
+package com.zgczx.repository.mysql1.exam.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+import java.util.List;
+
+/**
+ * @author aml
+ * @date 2019/12/24 11:11
+ */
+@Data
+@Entity
+public class EchoPaperDTO {
+
+ @Id
+ private int id;
+ @Column(name = "exam_id")
+ private int examId;
+ @Column(name = "question_source")
+ private String questionSource;
+ @Column(name = "exam_name")
+ private String examName;
+ @Column(name = "exam_type")
+ private String examType;
+ @Column(name = "exam_location")
+ private String examLocation;
+ @Column(name = "question_id")
+ private int questionId;
+ @Column(name = "question_type")
+ private String questionType;
+ @Column(name = "question_difficult")
+ private String questionDifficult;
+ @Column(name = "question_context")
+ private String questionContext;
+ @Column(name = "question_option")
+ private String questionOption;
+ @Column(name = "question_score")
+ private String questionScore;
+ @Column(name = "question_attribute")
+ private String questionAttribute;
+ @Column(name = "correct_option")
+ private String correctOption;
+ @Column(name = "correct_text")
+ private String correctText;
+ @Column(name = "correct_analysis")
+ private String correctAnalysis;
+ @Column(name = "chapter_id")
+ private int chapterId;
+
+ private String level;
+ @Column(name = "level_name")
+ private String levelName;
+ @Column(name = "create_user")
+ private String createUser;
+ @Column(name = "knowledge_module")
+ private String knowledgeModule;
+ @Column(name = "cognitive_level")
+ private String cognitiveLevel;
+ @Column(name = "core_literacy")
+ private String coreLiteracy;
+
+ private int valid;
+ @Column(name = "question_imgs")
+ private String questionImgs;
+
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp inserttime;
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp updatetime;
+
+ private String randomOption;
+
+ private String rightOption;
+ private String sourcePaperId;
+ private int collect;
+
+
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/exam/dto/EchoPaperTotalDTO.java b/src/main/java/com/zgczx/repository/mysql1/exam/dto/EchoPaperTotalDTO.java
new file mode 100644
index 0000000..b6b4a54
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/exam/dto/EchoPaperTotalDTO.java
@@ -0,0 +1,29 @@
+package com.zgczx.repository.mysql1.exam.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author aml
+ * @date 2019/12/24 14:19
+ */
+@Data
+public class EchoPaperTotalDTO {
+
+ private EchoPaperDTO question;
+
+ private List randomOption;//选项列表
+
+ private int complete; //是否做完这个卷子
+
+ private String userOption;//用户的每道题的选项
+
+ private int collect; //这道题是否已经收藏过,1为收藏,2为未收藏
+
+ private String rightOption;// 正确选项
+
+ private String sourcePaperId;// 来源试卷id
+
+ private List imgList; //= new LinkedList<>();//2.4 新修改
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/exam/dto/FindCollectDTO.java b/src/main/java/com/zgczx/repository/mysql1/exam/dto/FindCollectDTO.java
new file mode 100644
index 0000000..977b317
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/exam/dto/FindCollectDTO.java
@@ -0,0 +1,14 @@
+package com.zgczx.repository.mysql1.exam.dto;
+
+import lombok.Data;
+
+/**
+ * @author aml
+ * @date 2019/12/26 16:12
+ */
+@Data
+public class FindCollectDTO {
+
+ private int collect;// 此题是否收藏,1为收藏,2为 未收藏
+
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/exam/dto/QuestionDTO.java b/src/main/java/com/zgczx/repository/mysql1/exam/dto/QuestionDTO.java
new file mode 100644
index 0000000..c1d6944
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/exam/dto/QuestionDTO.java
@@ -0,0 +1,33 @@
+package com.zgczx.repository.mysql1.exam.dto;
+
+import com.zgczx.repository.mysql1.exam.model.Question;
+import lombok.Data;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author aml
+ * @date 2019/12/13 16:38
+ */
+@Data
+public class QuestionDTO {
+
+ private Question question;
+
+// // 选项列表ABCD
+// private List option;
+
+ // 选项列表ABCD
+ private List randomOption;
+
+ // 此题的正确选项,随着答案文本,选项跟着变化
+ private String rightOption;
+
+ private int sourcePaperId;// 这个道是在哪个试卷中的题,这个是组卷的id,不是最初录入题库中的id
+
+ private int collect;// 是否收藏, 1为这道题已经收藏,2为未收藏
+
+ private List imgList; //= new LinkedList<>();//2.4 新修改
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/exam/dto/SectionErrNumberDTO.java b/src/main/java/com/zgczx/repository/mysql1/exam/dto/SectionErrNumberDTO.java
new file mode 100644
index 0000000..ce87fd6
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/exam/dto/SectionErrNumberDTO.java
@@ -0,0 +1,17 @@
+package com.zgczx.repository.mysql1.exam.dto;
+
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * 十五、获取此章下面的所有节的名称和对应的错题数量
+ * @author aml
+ * @date 2019/12/29 15:16
+ */
+@Data
+public class SectionErrNumberDTO {
+
+ private Map sectionNumber;// 节的名称 和 错题数量
+
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/exam/model/Chapter.java b/src/main/java/com/zgczx/repository/mysql1/exam/model/Chapter.java
new file mode 100644
index 0000000..5a96ddc
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/exam/model/Chapter.java
@@ -0,0 +1,45 @@
+package com.zgczx.repository.mysql1.exam.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+
+/**
+ * 章节表
+ * @author aml
+ * @date 2019/12/11 11:23
+ */
+@DynamicUpdate//生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中
+@DynamicInsert// 如果这个字段的值是null就不会加入到insert语句当中.
+@Entity
+@Data
+@Table(name="e_chapter")
+public class Chapter {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private int id;
+ @Column(name = "subject_id")
+ private int subjectId;
+
+ private String subject;
+ private String chapter;
+
+ private String section;
+
+ private String level;
+ @Column(name = "level_name")
+ private String levelName;
+
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp inserttime;
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp updatetime;
+
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/exam/model/ExamContent.java b/src/main/java/com/zgczx/repository/mysql1/exam/model/ExamContent.java
new file mode 100644
index 0000000..009dee7
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/exam/model/ExamContent.java
@@ -0,0 +1,43 @@
+package com.zgczx.repository.mysql1.exam.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+
+/**
+ * 题库中的 试卷内容表,存放学校提供的每一次的考试数据
+ * @author aml
+ * @date 2019/12/11 12:59
+ */
+@DynamicUpdate//生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中
+@DynamicInsert// 如果这个字段的值是null就不会加入到insert语句当中.
+@Data
+@Entity
+@Table(name = "e_exam_content")
+public class ExamContent {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private int id;
+
+ private String subject;
+
+ @Column(name = "exam_name")
+ private String examName;
+
+ private String content;
+
+ private String answer;
+
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp inserttime;
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp updatetime;
+
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/exam/model/ExamPaper.java b/src/main/java/com/zgczx/repository/mysql1/exam/model/ExamPaper.java
new file mode 100644
index 0000000..442caf0
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/exam/model/ExamPaper.java
@@ -0,0 +1,72 @@
+package com.zgczx.repository.mysql1.exam.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+
+/**
+ * 题库中的 试卷表,存放每一次试卷
+ * @author aml
+ * @date 2019/12/11 14:15
+ */
+@DynamicUpdate//生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中
+@DynamicInsert// 如果这个字段的值是null就不会加入到insert语句当中.
+@Data
+@Entity
+@Table(name = "e_exam_paper")
+public class ExamPaper {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private int id;
+ @Column(name = "exam_name")
+ private String examName;
+ @Column(name = "exam_source")
+ private String examSource;
+ @Column(name = "exam_type")
+ private String examType;
+ @Column(name = "exam_location")
+ private String examLocation;
+ private String subject;
+ @Column(name = "subject_id")
+ private int subjectId;
+ @Column(name = "chapter_id")
+ private int chapterId;
+ @Column(name = "paper_type")
+ private String paperType;
+ @Column(name = "exam_score")
+ private String examScore;
+ @Column(name = "question_count")
+ private int questionCount;
+ @Column(name = "suggest_time")
+ private String suggestTime;
+ @Column(name = "limit_star_time")
+ private String limitStarTime;
+ @Column(name = "limit_end_time")
+ private String limitEndTime;
+ @Column(name = "exam_content_id")
+ private int examContentId;
+ @Column(name = "exam_content")
+ private String examContent;
+
+ @Column(name = "question_list")
+ private String questionList;
+ @Column(name = "grade_level")
+ private String gradeLevel;
+ @Column(name = "create_user")
+ private String createUser;
+ private int valid;
+ private String rank;
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp inserttime;
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp updatetime;
+
+ private String difficult;
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/exam/model/Question.java b/src/main/java/com/zgczx/repository/mysql1/exam/model/Question.java
new file mode 100644
index 0000000..d5b4c37
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/exam/model/Question.java
@@ -0,0 +1,86 @@
+package com.zgczx.repository.mysql1.exam.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+
+/**
+ * 题库中的 题库表,存放所有的题
+ * @author aml
+ * @date 2019/12/11 14:24
+ */
+@DynamicUpdate//生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中
+@DynamicInsert// 如果这个字段的值是null就不会加入到insert语句当中.
+@Data
+@Entity
+@Table(name = "e_question")
+public class Question {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private int id;
+ @Column(name = "exam_id")
+ private int examId;
+ @Column(name = "question_source")
+ private String questionSource;
+ private String subject;
+ @Column(name = "exam_name")
+ private String examName;
+ @Column(name = "exam_type")
+ private String examType;
+ @Column(name = "exam_location")
+ private String examLocation;
+ @Column(name = "question_id")
+ private int questionId;
+ @Column(name = "question_type")
+ private String questionType;
+ @Column(name = "question_difficult")
+ private String questionDifficult;
+ @Column(name = "question_context")
+ private String questionContext;
+ @Column(name = "question_option")
+ private String questionOption;
+ @Column(name = "question_score")
+ private int questionScore;
+ @Column(name = "question_attribute")
+ private String questionAttribute;
+ @Column(name = "correct_option")
+ private String correctOption;
+ @Column(name = "correct_text")
+ private String correctText;
+ @Column(name = "correct_analysis")
+ private String correctAnalysis;
+ @Column(name = "chapter_id")
+ private int chapterId;
+
+ private String level;
+ @Column(name = "level_name")
+ private String levelName;
+ @Column(name = "create_user")
+ private String createUser;
+ @Column(name = "knowledge_module")
+ private String knowledgeModule;
+ @Column(name = "cognitive_level")
+ private String cognitiveLevel;
+ @Column(name = "core_literacy")
+ private String coreLiteracy;
+
+ private int valid;
+ @Column(name = "question_imgs")
+ private String questionImgs;
+
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp inserttime;
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp updatetime;
+
+
+
+
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/exam/model/Subject.java b/src/main/java/com/zgczx/repository/mysql1/exam/model/Subject.java
new file mode 100644
index 0000000..8ff4cff
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/exam/model/Subject.java
@@ -0,0 +1,31 @@
+package com.zgczx.repository.mysql1.exam.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+
+/**
+ * 题库中的 学科表
+ * @author aml
+ * @date 2019/12/11 14:29
+ */
+@Data
+@Entity
+@Table(name = "e_subject")
+public class Subject {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private int id;
+ private String subject;
+ private int termId;
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp inserttime;
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp updatetime;
+
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/exam/model/Term.java b/src/main/java/com/zgczx/repository/mysql1/exam/model/Term.java
new file mode 100644
index 0000000..00fa208
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/exam/model/Term.java
@@ -0,0 +1,33 @@
+package com.zgczx.repository.mysql1.exam.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+
+/**
+ * 题库中的 学期表
+ * @author aml
+ * @date 2019/12/11 14:31
+ */
+@Data
+@Entity
+@Table(name = "e_term")
+public class Term {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private int id;
+
+ private String semester;
+ private String startime;
+ private String endtime;
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp inserttime;
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp updatetime;
+
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/exam/model/UserCollect.java b/src/main/java/com/zgczx/repository/mysql1/exam/model/UserCollect.java
new file mode 100644
index 0000000..1b35944
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/exam/model/UserCollect.java
@@ -0,0 +1,50 @@
+package com.zgczx.repository.mysql1.exam.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.hibernate.annotations.DynamicInsert;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+
+/**
+ * 用户 收藏表
+ * @author aml
+ * @date 2019/12/17 16:47
+ */
+@DynamicInsert
+@Data
+@Entity
+@Table(name = "e_user_collect")
+public class UserCollect {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private int id;
+
+ @Column(name = "student_number")
+ private String studentNumber;
+
+ private String openid;
+
+ private String subject;
+
+ @Column(name = "question_id")
+ private int questionId;
+
+ @Column(name = "exam_paper_id")
+ private int examPaperId;
+
+ @Column(name = "user_answer")
+ private String userAnswer;
+
+ private String classification;
+
+ private int valid;
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp inserttime;
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp updatetime;
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/exam/model/UserPaperRecord.java b/src/main/java/com/zgczx/repository/mysql1/exam/model/UserPaperRecord.java
new file mode 100644
index 0000000..ba8c2b8
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/exam/model/UserPaperRecord.java
@@ -0,0 +1,53 @@
+package com.zgczx.repository.mysql1.exam.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+
+/**
+ * 用户做试卷的记录表
+ * 试卷: 将章节中的 每一节也抽象看为 一套试卷
+ * @author aml
+ * @date 2019/12/22 19:11
+ */
+@DynamicUpdate//生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中
+@DynamicInsert// 如果这个字段的值是null就不会加入到insert语句当中.
+@Data
+@Entity
+@Table(name = "e_user_paper_record")
+public class UserPaperRecord {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private int id;
+
+ @Column(name = "student_number")
+ private String studentNumber;
+ private String openid;
+ private String subject;
+ @Column(name = "exam_paper_id")
+ private int examPaperId;
+ @Column(name = "exam_paper_content")
+ private String examPaperContent;
+ @Column(name = "exam_paper_anwer")
+ private String examPaperAnwer;
+
+ private int times;
+ @Column(name = "customer_score")
+ private String customerScore;
+ @Column(name = "do_time")
+ private String doTime;
+
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp inserttime;
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp updatetime;
+
+
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/exam/model/UserQuestionRecord.java b/src/main/java/com/zgczx/repository/mysql1/exam/model/UserQuestionRecord.java
new file mode 100644
index 0000000..b5524de
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/exam/model/UserQuestionRecord.java
@@ -0,0 +1,64 @@
+package com.zgczx.repository.mysql1.exam.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+
+/**
+ * 题库中的 用户做题记录表,存放用户所有做题记录
+ * @author aml
+ * @date 2019/12/11 14:34
+ */
+@DynamicUpdate//生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中
+@DynamicInsert// 如果这个字段的值是null就不会加入到insert语句当中.
+@Data
+@Entity
+@Table(name = "e_user_question_record")
+public class UserQuestionRecord {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private int id;
+
+ @Column(name = "student_number")
+ private String studentNumber;
+ private String openid;
+ private String subject;
+ @Column(name = "question_text_content")
+ private String questionTextContent;
+ @Column(name = "user_answer")
+ private String userAnswer;
+ @Column(name = "do_right")
+ private int doRight;
+ @Column(name = "question_id")
+ private int questionId;
+
+ private int times;
+ @Column(name = "exam_paper_id")
+ private int examPaperId;
+ @Column(name = "exam_paper_name")
+ private String examPaperName;
+ @Column(name = "exam_category")
+ private String examCategory;
+
+ @Column(name = "customer_score")
+ private String customerScore;
+ @Column(name = "question_score")
+ private String questionScore;
+ @Column(name = "do_time")
+ private String doTime;
+ private int status;
+ @Column(name = "knowledge_points")
+ private String knowledgePoints;
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp inserttime;
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp updatetime;
+
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/exam/model/UserWrongQustion.java b/src/main/java/com/zgczx/repository/mysql1/exam/model/UserWrongQustion.java
new file mode 100644
index 0000000..3a86289
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/exam/model/UserWrongQustion.java
@@ -0,0 +1,57 @@
+package com.zgczx.repository.mysql1.exam.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+
+/**
+ * 用户错题表
+ * @author aml
+ * @date 2020/1/2 12:44
+ */
+@DynamicUpdate//生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中
+@DynamicInsert// 如果这个字段的值是null就不会加入到insert语句当中.
+@Data
+@Entity
+@Table(name = "e_user_wrong_qustion")
+public class UserWrongQustion {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private int id;
+
+ @Column(name = "student_number")
+ private String studentNumber;
+ private String openid;
+ private String subject;
+
+ @Column(name = "user_answer")
+ private String userAnswer;
+ @Column(name = "do_right")
+ private int doRight;
+ @Column(name = "question_id")
+ private int questionId;
+
+
+ @Column(name = "exam_paper_id")
+ private int examPaperId;
+ @Column(name = "exam_paper_name")
+ private String examPaperName;
+ @Column(name = "exam_category")
+ private String examCategory;
+
+
+ @Column(name = "do_time")
+ private String doTime;
+
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp inserttime;
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp updatetime;
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/score/dao/ExamFullScoreSetDao.java b/src/main/java/com/zgczx/repository/mysql1/score/dao/ExamFullScoreSetDao.java
new file mode 100644
index 0000000..777b2b4
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/score/dao/ExamFullScoreSetDao.java
@@ -0,0 +1,22 @@
+package com.zgczx.repository.mysql1.score.dao;
+
+import com.zgczx.repository.mysql1.score.model.ExamFullScoreSet;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import java.math.BigInteger;
+
+/**
+ * @author aml
+ * @date 2019/9/19 16:12
+ */
+@Repository
+public interface ExamFullScoreSetDao extends JpaRepository {
+
+ @Query(value = "select e from ExamFullScoreSet as e where e.examinfoId = ?1")
+ ExamFullScoreSet findByExaminfoId(int examid);
+
+ @Query(value = "SELECT SUM(sfs.yuwen+sfs.shuxue+sfs.yingyu+sfs.wuli+sfs.huaxue+sfs.shengwu+sfs.zhengzhi+sfs.lishi+sfs.dili) FROM subject_full_score AS sfs WHERE id=(SELECT subject_schame_id FROM exam_full_score_set WHERE examinfo_id=?1)",nativeQuery = true)
+ BigInteger getSchameTotal(int examId);
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/score/dao/ExamInfoDao.java b/src/main/java/com/zgczx/repository/mysql1/score/dao/ExamInfoDao.java
new file mode 100644
index 0000000..e2ea945
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/score/dao/ExamInfoDao.java
@@ -0,0 +1,34 @@
+package com.zgczx.repository.mysql1.score.dao;
+
+import com.zgczx.repository.mysql1.score.model.ExamInfo;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * @author aml
+ * @date 2019/9/10 15:53
+ */
+@Repository
+public interface ExamInfoDao extends JpaRepository {
+
+ /**
+ * 根据具体的 哪次考试获取 此id
+ * @param examType 具体考试名称
+ * @return id
+ */
+ @Query(value = "select e.id from ExamInfo e where e.examName = ?1")
+ int findByExamName(String examType);
+ @Query(value = "SELECT id FROM exam_info WHERE exam_name=?1 AND school_name=?2",nativeQuery = true)
+ int findByExamNameAndSchoolName(String examType, String schoolName);
+
+
+
+ // @Query(value = "select * from exam_info where exam_name=?1",nativeQuery = true)
+ ExamInfo getByExamName(String examType);
+
+ @Query(value = "SELECT exam_name FROM exam_info ", nativeQuery = true)
+ List getAllExamName();
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/score/dao/GoalSetDao.java b/src/main/java/com/zgczx/repository/mysql1/score/dao/GoalSetDao.java
new file mode 100644
index 0000000..5c26fec
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/score/dao/GoalSetDao.java
@@ -0,0 +1,19 @@
+package com.zgczx.repository.mysql1.score.dao;
+
+import com.zgczx.repository.mysql1.score.model.GoalSet;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * @author aml
+ * @date 2019/11/29 15:45
+ */
+@Repository
+public interface GoalSetDao extends JpaRepository {
+
+ @Query(value = "SELECT * FROM goal_set WHERE student_number=?1 AND exam_name=?2 ORDER BY id DESC", nativeQuery = true)
+ List findTargetValue(String studentNumber,String examName);
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/score/dao/ImportConversionScoreDao.java b/src/main/java/com/zgczx/repository/mysql1/score/dao/ImportConversionScoreDao.java
new file mode 100644
index 0000000..9a3a3ee
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/score/dao/ImportConversionScoreDao.java
@@ -0,0 +1,20 @@
+package com.zgczx.repository.mysql1.score.dao;
+
+import com.zgczx.repository.mysql1.score.model.ImportConversionScore;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @author aml
+ * @date 2019/9/22 16:28
+ */
+@Repository
+public interface ImportConversionScoreDao extends JpaRepository {
+ /**
+ *
+ * @param machine 某此考试的机读号
+ * @param examType 具体的考试名称
+ * @return ImportConversionScore对象
+ */
+ ImportConversionScore findByStudentMachineCardAndExamType(String machine, String examType);
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/score/dao/ManuallyEnterGradesDao.java b/src/main/java/com/zgczx/repository/mysql1/score/dao/ManuallyEnterGradesDao.java
new file mode 100644
index 0000000..fdd6853
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/score/dao/ManuallyEnterGradesDao.java
@@ -0,0 +1,50 @@
+package com.zgczx.repository.mysql1.score.dao;
+
+import com.zgczx.repository.mysql1.score.model.ManuallyEnterGrades;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * @author aml
+ * @date 2019/10/29 19:15
+ */
+@Repository
+public interface ManuallyEnterGradesDao extends JpaRepository {
+
+ @Query(value = "SELECT DISTINCT LEFT(exam_name, 8) FROM manually_enter_grades WHERE wechat_openid =?1 AND exam_name LIKE ?2 ", nativeQuery = true)
+ List getExamNameByWechatOpenidAndYear(String openid, String year);
+
+ @Query(value = "SELECT COUNT(DISTINCT exam_name) FROM manually_enter_grades WHERE wechat_openid =?1 AND exam_name LIKE ?2", nativeQuery = true)
+ int countByWechatOpenidAndExamName(String openid, String examName);
+
+ @Query(value = "SELECT DISTINCT exam_name FROM manually_enter_grades WHERE wechat_openid =?1 AND exam_name LIKE ?2", nativeQuery = true)
+ List getExamNameByYearMonthAndWechatOpenid(String openid, String yearMonth);
+
+ List findAllByWechatOpenidAndExamName(String openid,String examName);
+ // 使用in来代替 openid or openid 。。。
+ List findByWechatOpenidIn(List openids);
+
+ //动态太拼接openid 和 其他的条件
+ @Query(value = "SELECT * FROM manually_enter_grades WHERE student_number=?2 AND wechat_openid IN (?1)", nativeQuery = true)
+ List findByWechatOpenidInAndStudentNumber(List openids,String studengNumber);
+
+ // 手动录入成绩,删除 某条 数据功能,根据openid和examName
+ int deleteByStudentNumberAndExamNameAndSubjectName(String studentNumber, String examname,String subject);
+
+// @Modifying :只能用于返回值为 void int
+// @Query(name = "", nativeQuery = true)
+// ManuallyEnterGrades updateByWechatOpenidAndExamName(String openid, String examname);
+
+ // 获取录入的某条数据,根据openid、studentnumber 、examName
+ @Query(value = "SELECT * FROM manually_enter_grades WHERE wechat_openid=?1 AND student_number=?2 AND exam_name=?3 ", nativeQuery = true)
+ ManuallyEnterGrades findByWechatOpenidAndStudentNumberAndExamName(String openid,String studentNumber,String examName);
+
+ // 批量录入手动录入成绩实体时,判断如果其中有某条数据 已经录入过,就不允许此次录入操作
+ ManuallyEnterGrades findAllByStudentNumberAndExamNameAndSubjectName(String studentNumber, String examname, String subjectName);
+
+
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/score/dao/SubjectDTODao.java b/src/main/java/com/zgczx/repository/mysql1/score/dao/SubjectDTODao.java
new file mode 100644
index 0000000..6395221
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/score/dao/SubjectDTODao.java
@@ -0,0 +1,19 @@
+package com.zgczx.repository.mysql1.score.dao;
+
+import com.zgczx.repository.mysql1.score.dto.SubjectDTO;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * @author aml
+ * @date 2019/10/23 14:18
+ */
+@Repository
+public interface SubjectDTODao extends JpaRepository {
+
+ @Query(value = "SELECT id,AVG(yuwen_score) as yuwen,AVG(shuxue_score) as shuxue,AVG(yingyu_score)as yingyu, AVG(wuli_coversion)as wuli,AVG(huaxue_coversion)as huaxue,AVG(shengwu_coversion)as shengwu,AVG(zhengzhi_coversion)as zhengzhi,AVG(lishi_coversion)as lishi,AVG(dili_coversion)as dili FROM exam_coversion_total WHERE exam_type=?1" , nativeQuery = true)
+ List avgSubject(String examType);
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/score/dao/SubjectFullScoreDao.java b/src/main/java/com/zgczx/repository/mysql1/score/dao/SubjectFullScoreDao.java
new file mode 100644
index 0000000..dfb83b3
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/score/dao/SubjectFullScoreDao.java
@@ -0,0 +1,17 @@
+package com.zgczx.repository.mysql1.score.dao;
+
+import com.zgczx.repository.mysql1.score.model.SubjectFullScore;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @author aml
+ * @date 2019/9/19 16:19
+ */
+@Repository
+public interface SubjectFullScoreDao extends JpaRepository {
+
+ @Query(value = "SELECT * FROM subject_full_score sfs,exam_full_score_set sfss WHERE sfs.id=sfss.subject_schame_id AND sfss.examinfo_id=?1 ", nativeQuery = true)
+ SubjectFullScore findById(int id);
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/score/dto/AsahiChartAllRateDTO.java b/src/main/java/com/zgczx/repository/mysql1/score/dto/AsahiChartAllRateDTO.java
new file mode 100644
index 0000000..f589a62
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/score/dto/AsahiChartAllRateDTO.java
@@ -0,0 +1,45 @@
+package com.zgczx.repository.mysql1.score.dto;
+
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @author aml
+ * @date 2019/9/26 10:50
+ */
+@Data
+public class AsahiChartAllRateDTO {
+
+ // 总分率值,即所得总分 / 总分满分标准
+ private String totalScoreRate;
+
+ // 三科分数之和率值,三科得分数和/ 三科总分
+ private String threeSubjectsRate;
+
+ // 6选3综合率值, 6选3综合得分 / 6选3综合满分标准分
+ private String comprehensiveRate;
+
+ // 所有真实科目的率值,k: 科目名称;v:所对应的率值
+ private Map allSubjectRateMap;
+
+//
+// // 语文率值, 语文得分 / 语文总分
+// private int languageScoreRate;
+// // 数学率值, 数学得分 / 数学总分
+// private int mathScoreRate;
+// // 英语率值, 英语得分 / 英语总分
+// private int englishScoreRate;
+// // 物理率值, 物理得分 / 物理总分
+// private int physicalScoreRate;
+// // 化学率值, 化学得分 / 化学总分
+// private int chemistryScoreRate;
+// // 生物率值, 生物得分 / 生物总分
+// private int biologicalScoreRate;
+// // 政治率值, 政治得分 / 政治总分
+// private int politicalScoreRate;
+// // 历史率值, 历史得分 / 历史总分
+// private int historyScoreRate;
+// // 地理率值, 地理得分 / 地理总分
+// private int geographyScoreRate;
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/score/dto/HistoricalAnalysisSingleDTO.java b/src/main/java/com/zgczx/repository/mysql1/score/dto/HistoricalAnalysisSingleDTO.java
new file mode 100644
index 0000000..921c9e6
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/score/dto/HistoricalAnalysisSingleDTO.java
@@ -0,0 +1,39 @@
+package com.zgczx.repository.mysql1.score.dto;
+
+import com.zgczx.repository.mysql2.scoretwo.model.ExamCoversionTotal;
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @author aml
+ * @date 2019/9/24 20:30
+ */
+@Data
+public class HistoricalAnalysisSingleDTO {
+
+ // private ExamCoversionTotal examCoversionTotal;
+// //单科班级排名
+// private int classRank;
+// //单科年级排名
+// private int gradeRank;
+// // 班级平均分
+// private String classAverage;
+// // 年级平均分
+// private String gradeAverage;
+// // 年级排名的百分率
+// private String gradePercentage;
+// // 班级排名的百分率
+// private String classPercentage;
+// // 班级平均分百分率
+// private String classAveragePercentage;
+// // 年级平均分百分率
+// private String gradeAveragePercentage;
+// // 单科分数的百分率
+// private String singleScorePercentage;
+
+ // 里面存放多个子map,例如班排map、年排map、平均分map等
+// private Map> map;
+
+ private Map> mapTotal;
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/score/dto/HistoricalAnalysisTotalDTO.java b/src/main/java/com/zgczx/repository/mysql1/score/dto/HistoricalAnalysisTotalDTO.java
new file mode 100644
index 0000000..c6a72b8
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/score/dto/HistoricalAnalysisTotalDTO.java
@@ -0,0 +1,40 @@
+package com.zgczx.repository.mysql1.score.dto;
+
+import com.zgczx.repository.mysql2.scoretwo.model.ExamCoversionTotal;
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @author aml
+ * @date 2019/9/24 16:08
+ */
+@Data
+public class HistoricalAnalysisTotalDTO {
+
+// private ExamCoversionTotal examCoversionTotal;
+//// //班级排名
+//// private int classRank;
+//// //年级排名
+//// private int gradeRank;
+// // 班级平均分
+// private String classAverage;
+// // 年级平均分
+// private String gradeAverage;
+// // 年级排名的百分率
+// private String gradePercentage;
+// // 班级排名的百分率
+// private String classPercentage;
+// // 班级平均分百分率
+// private String classAveragePercentage;
+// // 年级平均分百分率
+// private String gradeAveragePercentage;
+// // 总分的百分率
+// private String totalScorePercentage;
+
+ // 里面存放多个子map,例如班排map、年排map、平均分map等
+ // private Map> map;
+
+ private Map> mapTotal;
+
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/score/dto/ManuallyEnterGradesDTO.java b/src/main/java/com/zgczx/repository/mysql1/score/dto/ManuallyEnterGradesDTO.java
new file mode 100644
index 0000000..ea4d045
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/score/dto/ManuallyEnterGradesDTO.java
@@ -0,0 +1,21 @@
+package com.zgczx.repository.mysql1.score.dto;
+
+import com.zgczx.repository.mysql1.score.model.ManuallyEnterGrades;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 五、录入统计4) 根据考试名称和openid获取对应的数据
+ * 封装下 图片,将string改为 string[]类型
+ * @author aml
+ * @date 2019/12/9 15:52
+ */
+@Data
+public class ManuallyEnterGradesDTO {
+
+ private ManuallyEnterGrades manuallyEnterGrades;
+ //图片list
+ // private String[] imgurllist;
+ private List imgurllist;
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/score/dto/MonthByYearListDTO.java b/src/main/java/com/zgczx/repository/mysql1/score/dto/MonthByYearListDTO.java
new file mode 100644
index 0000000..3a300f4
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/score/dto/MonthByYearListDTO.java
@@ -0,0 +1,18 @@
+package com.zgczx.repository.mysql1.score.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author aml
+ * @date 2019/11/11 14:37
+ */
+@Data
+public class MonthByYearListDTO {
+
+ private List list;
+
+ // 这一年共有几次考试
+ private int countTimes;
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/score/dto/ScoreReportDTO.java b/src/main/java/com/zgczx/repository/mysql1/score/dto/ScoreReportDTO.java
new file mode 100644
index 0000000..aab512a
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/score/dto/ScoreReportDTO.java
@@ -0,0 +1,53 @@
+package com.zgczx.repository.mysql1.score.dto;
+
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @author aml
+ * @date 2019/9/27 12:12
+ */
+@Data
+public class ScoreReportDTO {
+ // 总分分数
+ private String totalScore;
+ // 总分的年级排名
+ private int totalScoreGradeRank;
+ // 总分的班级排名
+ private int totalScoreClassRank;
+
+ //总分的年级平均分
+ private String totalAverage;
+
+ private Map> map;
+
+ //总分满分数值
+ private String totalScoreStandard;
+ //班级总人数
+ private int totalClassNumber;
+ // 年级总人数
+ private int totalGradeNumber;
+
+// // 具体科目的分数map,k: 科目名称,V:对应的分数
+// private Map subjectScoreMap;
+// // 具体科目的年级排名,K:科目名称,V:对应的年级排名
+// private Map subjectGradeRankMap;
+// // 具体科目的班级排名,K:科目名称,V:对应的班级排名
+// private Map subjectClassRankMap;
+// // 总分满分标准、各科满分标准
+// private Map subjectStandardMap;
+//
+
+
+// //语文map,一个map中存放,分数、年排、班排、满分标准
+// private Map yuwenMap;
+// private Map shuxueMap;
+// private Map yingyuMap;
+// private Map wuliMap;
+// private Map huaxueMap;
+// private Map shengwuMap;
+// private Map diliMap;
+// private Map lishiMap;
+// private Map zhengzhiMap;
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/score/dto/SixRateDTO.java b/src/main/java/com/zgczx/repository/mysql1/score/dto/SixRateDTO.java
new file mode 100644
index 0000000..eef0766
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/score/dto/SixRateDTO.java
@@ -0,0 +1,40 @@
+package com.zgczx.repository.mysql1.score.dto;
+
+import lombok.Data;
+
+/**
+ * @author aml
+ * @date 2019/9/19 15:30
+ */
+@Data
+public class SixRateDTO {
+// // 高分率
+// private double highNumRate;
+// // 优秀率
+// private double excellentRate;
+// //良好率
+// private double goodRate;
+// // 及格率
+// private double passRate;
+// // 低分率
+// private double failRate;
+// // 超均率
+// private double beyondRate;
+// // 所处率值
+// private String locationRate;
+
+ // 高分人数
+ private int highNumRate;
+ // 优秀人数
+ private int excellentRate;
+ //良好人数
+ private int goodRate;
+ // 及格人数
+ private int passRate;
+ // 低分人数
+ private int failRate;
+ // 超均人数
+ private int beyondRate;
+ // 所处率值
+ private String locationRate;
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/score/dto/SubjectAnalysisDTO.java b/src/main/java/com/zgczx/repository/mysql1/score/dto/SubjectAnalysisDTO.java
new file mode 100644
index 0000000..ff6b357
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/score/dto/SubjectAnalysisDTO.java
@@ -0,0 +1,35 @@
+package com.zgczx.repository.mysql1.score.dto;
+
+import com.zgczx.repository.mysql2.scoretwo.model.ExamCoversionTotal;
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @author aml
+ * @date 2019/9/23 11:17
+ */
+@Data
+public class SubjectAnalysisDTO {
+
+ private ExamCoversionTotal examCoversionTotal;
+
+ // 学科贡献率,各单科贡献率,各科分数和总分的比值
+ private Map contributionRate;
+
+ // 学科均衡差值,即各科年排排名和总分年级排名的差值
+ private Map equilibriumDifference;
+
+ // 年级的标准率值,即年级排名 / 年级总人数
+ private String gradeRate;
+
+// // 上次考试的 学科贡献率,各单科贡献率,各科分数和总分的比值
+// private Map oldcontributionRate;
+//
+// // 前三次 学科贡献率的平均值
+// private Map avgcontributionRate;
+
+ // 此map中九门科目的map,每一个map中最多能放
+ // 本次、上次、平均、差值(本次 - 平均) 率值
+ private Map> map;
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/score/dto/SubjectDTO.java b/src/main/java/com/zgczx/repository/mysql1/score/dto/SubjectDTO.java
new file mode 100644
index 0000000..6906281
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/score/dto/SubjectDTO.java
@@ -0,0 +1,28 @@
+package com.zgczx.repository.mysql1.score.dto;
+
+import lombok.Data;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+
+/**
+ * @author aml
+ * @date 2019/10/23 14:14
+ */
+@Data
+@Entity
+public class SubjectDTO {
+
+ @Id
+ int id;
+ private String yuwen;
+ private String shuxue;
+ private String yingyu;
+ private String wuli;
+ private String huaxue;
+ private String shengwu;
+ private String zhengzhi;
+ private String lishi;
+ private String dili;
+
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/score/model/ExamFullScoreSet.java b/src/main/java/com/zgczx/repository/mysql1/score/model/ExamFullScoreSet.java
new file mode 100644
index 0000000..98d3cda
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/score/model/ExamFullScoreSet.java
@@ -0,0 +1,61 @@
+package com.zgczx.repository.mysql1.score.model;
+
+import javax.persistence.*;
+import java.util.Objects;
+
+/**
+ * @author aml
+ * @date 2019/9/19 15:21
+ */
+@Entity
+@Table(name = "exam_full_score_set", schema = "score_ananlysis_dev", catalog = "")
+public class ExamFullScoreSet {
+ private long id;
+ private Long examinfoId;
+ private Long subjectSchameId;
+
+ @Id
+ @Column(name = "id")
+ public long getId() {
+ return id;
+ }
+
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ @Basic
+ @Column(name = "examinfo_id")
+ public Long getExaminfoId() {
+ return examinfoId;
+ }
+
+ public void setExaminfoId(Long examinfoId) {
+ this.examinfoId = examinfoId;
+ }
+
+ @Basic
+ @Column(name = "subject_schame_id")
+ public Long getSubjectSchameId() {
+ return subjectSchameId;
+ }
+
+ public void setSubjectSchameId(Long subjectSchameId) {
+ this.subjectSchameId = subjectSchameId;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ExamFullScoreSet that = (ExamFullScoreSet) o;
+ return id == that.id &&
+ Objects.equals(examinfoId, that.examinfoId) &&
+ Objects.equals(subjectSchameId, that.subjectSchameId);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, examinfoId, subjectSchameId);
+ }
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/score/model/ExamInfo.java b/src/main/java/com/zgczx/repository/mysql1/score/model/ExamInfo.java
new file mode 100644
index 0000000..0d7b0d6
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/score/model/ExamInfo.java
@@ -0,0 +1,103 @@
+package com.zgczx.repository.mysql1.score.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.sql.Timestamp;
+import java.util.Objects;
+
+/**
+ * @author aml
+ * @date 2019/9/10 15:39
+ */
+@Entity
+@Data
+@Table(name = "exam_info", schema = "score_ananlysis_dev", catalog = "")
+public class ExamInfo implements Serializable {
+ private long id;
+ private String examName;
+ private String examGrade;
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp examDate;
+ private String paperId;
+ private String schoolName;
+
+ @Column(name = "school_name")
+ public String getSchoolName() {
+ return schoolName;
+ }
+
+ public void setSchoolName(String schoolName) {
+ this.schoolName = schoolName;
+ }
+
+ @Id
+ @Column(name = "id")
+ public long getId() {
+ return id;
+ }
+
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ @Basic
+ @Column(name = "exam_name")
+ public String getExamName() {
+ return examName;
+ }
+
+ public void setExamName(String examName) {
+ this.examName = examName;
+ }
+
+ @Basic
+ @Column(name = "exam_grade")
+ public String getExamGrade() {
+ return examGrade;
+ }
+
+ public void setExamGrade(String examGrade) {
+ this.examGrade = examGrade;
+ }
+
+ @Basic
+ @Column(name = "exam_date")
+ public Timestamp getExamDate() {
+ return examDate;
+ }
+
+ public void setExamDate(Timestamp examDate) {
+ this.examDate = examDate;
+ }
+
+ @Basic
+ @Column(name = "paper_id")
+ public String getPaperId() {
+ return paperId;
+ }
+
+ public void setPaperId(String paperId) {
+ this.paperId = paperId;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ExamInfo examInfo = (ExamInfo) o;
+ return id == examInfo.id &&
+ Objects.equals(examName, examInfo.examName) &&
+ Objects.equals(examGrade, examInfo.examGrade) &&
+ Objects.equals(examDate, examInfo.examDate) &&
+ Objects.equals(paperId, examInfo.paperId);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, examName, examGrade, examDate, paperId);
+ }
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/score/model/GoalSet.java b/src/main/java/com/zgczx/repository/mysql1/score/model/GoalSet.java
new file mode 100644
index 0000000..42248cf
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/score/model/GoalSet.java
@@ -0,0 +1,46 @@
+package com.zgczx.repository.mysql1.score.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+
+/**
+ * 对比分析中目标设定表
+ * @author aml
+ * @date 2019/11/29 15:35
+ */
+@Data
+@Entity
+@Table(name="goal_set")
+public class GoalSet {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private int id;
+ @Column(name = "student_number")
+ private String studentNumber;
+ @Column(name = "exam_name")
+ private String examName;
+ private String openid;
+ @Column(name = "total_score")
+ private String totalScore;
+ private String yuwen;
+ private String shuxue;
+ private String yingyu;
+ private String wuli;
+ private String huaxue;
+ private String shengwu;
+ private String zhengzhi;
+ private String lishi;
+ private String dili;
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp inserttime;
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp updatetime;
+
+
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/score/model/ImportConversionScore.java b/src/main/java/com/zgczx/repository/mysql1/score/model/ImportConversionScore.java
new file mode 100644
index 0000000..02b895e
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/score/model/ImportConversionScore.java
@@ -0,0 +1,220 @@
+package com.zgczx.repository.mysql1.score.model;
+
+import lombok.Data;
+
+import javax.persistence.*;
+import java.util.Objects;
+
+/**
+ * @author aml
+ * @date 2019/9/22 16:28
+ */
+@Entity
+@Data
+@Table(name = "import_conversion_score", schema = "score_ananlysis_dev", catalog = "")
+public class ImportConversionScore {
+ private int id;
+ private String studentMachineCard;
+ private String username;
+ private String yuwenScore;
+ private String shuxueScore;
+ private String yingyuScore;
+ private String wuliConverscore;
+ private String huaxueConverscore;
+ private String shengwuConverscore;
+ private String lishiConverscore;
+ private String diliConverscore;
+ private String zhengzhiConverscore;
+ private String totalScore;
+ private String classIndex;
+ private String schoolIndex;
+ private String examType;
+
+ @Id
+ @Column(name = "id")
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ @Basic
+ @Column(name = "student_machine_card")
+ public String getStudentMachineCard() {
+ return studentMachineCard;
+ }
+
+ public void setStudentMachineCard(String studentMachineCard) {
+ this.studentMachineCard = studentMachineCard;
+ }
+
+ @Basic
+ @Column(name = "username")
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ @Basic
+ @Column(name = "yuwen_score")
+ public String getYuwenScore() {
+ return yuwenScore;
+ }
+
+ public void setYuwenScore(String yuwenScore) {
+ this.yuwenScore = yuwenScore;
+ }
+
+ @Basic
+ @Column(name = "shuxue_score")
+ public String getShuxueScore() {
+ return shuxueScore;
+ }
+
+ public void setShuxueScore(String shuxueScore) {
+ this.shuxueScore = shuxueScore;
+ }
+
+ @Basic
+ @Column(name = "yingyu_score")
+ public String getYingyuScore() {
+ return yingyuScore;
+ }
+
+ public void setYingyuScore(String yingyuScore) {
+ this.yingyuScore = yingyuScore;
+ }
+
+ @Basic
+ @Column(name = "wuli_converscore")
+ public String getWuliConverscore() {
+ return wuliConverscore;
+ }
+
+ public void setWuliConverscore(String wuliConverscore) {
+ this.wuliConverscore = wuliConverscore;
+ }
+
+ @Basic
+ @Column(name = "huaxue_converscore")
+ public String getHuaxueConverscore() {
+ return huaxueConverscore;
+ }
+
+ public void setHuaxueConverscore(String huaxueConverscore) {
+ this.huaxueConverscore = huaxueConverscore;
+ }
+
+ @Basic
+ @Column(name = "shengwu_converscore")
+ public String getShengwuConverscore() {
+ return shengwuConverscore;
+ }
+
+ public void setShengwuConverscore(String shengwuConverscore) {
+ this.shengwuConverscore = shengwuConverscore;
+ }
+
+ @Basic
+ @Column(name = "lishi_converscore")
+ public String getLishiConverscore() {
+ return lishiConverscore;
+ }
+
+ public void setLishiConverscore(String lishiConverscore) {
+ this.lishiConverscore = lishiConverscore;
+ }
+
+ @Basic
+ @Column(name = "dili_converscore")
+ public String getDiliConverscore() {
+ return diliConverscore;
+ }
+
+ public void setDiliConverscore(String diliConverscore) {
+ this.diliConverscore = diliConverscore;
+ }
+
+ @Basic
+ @Column(name = "zhengzhi_converscore")
+ public String getZhengzhiConverscore() {
+ return zhengzhiConverscore;
+ }
+
+ public void setZhengzhiConverscore(String zhengzhiConverscore) {
+ this.zhengzhiConverscore = zhengzhiConverscore;
+ }
+
+ @Basic
+ @Column(name = "total_score")
+ public String getTotalScore() {
+ return totalScore;
+ }
+
+ public void setTotalScore(String totalScore) {
+ this.totalScore = totalScore;
+ }
+
+ @Basic
+ @Column(name = "class_index")
+ public String getClassIndex() {
+ return classIndex;
+ }
+
+ public void setClassIndex(String classIndex) {
+ this.classIndex = classIndex;
+ }
+
+ @Basic
+ @Column(name = "school_index")
+ public String getSchoolIndex() {
+ return schoolIndex;
+ }
+
+ public void setSchoolIndex(String schoolIndex) {
+ this.schoolIndex = schoolIndex;
+ }
+
+ @Basic
+ @Column(name = "exam_type")
+ public String getExamType() {
+ return examType;
+ }
+
+ public void setExamType(String examType) {
+ this.examType = examType;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ImportConversionScore that = (ImportConversionScore) o;
+ return id == that.id &&
+ Objects.equals(studentMachineCard, that.studentMachineCard) &&
+ Objects.equals(username, that.username) &&
+ Objects.equals(yuwenScore, that.yuwenScore) &&
+ Objects.equals(shuxueScore, that.shuxueScore) &&
+ Objects.equals(yingyuScore, that.yingyuScore) &&
+ Objects.equals(wuliConverscore, that.wuliConverscore) &&
+ Objects.equals(huaxueConverscore, that.huaxueConverscore) &&
+ Objects.equals(shengwuConverscore, that.shengwuConverscore) &&
+ Objects.equals(lishiConverscore, that.lishiConverscore) &&
+ Objects.equals(diliConverscore, that.diliConverscore) &&
+ Objects.equals(zhengzhiConverscore, that.zhengzhiConverscore) &&
+ Objects.equals(totalScore, that.totalScore) &&
+ Objects.equals(classIndex, that.classIndex) &&
+ Objects.equals(schoolIndex, that.schoolIndex) &&
+ Objects.equals(examType, that.examType);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, studentMachineCard, username, yuwenScore, shuxueScore, yingyuScore, wuliConverscore, huaxueConverscore, shengwuConverscore, lishiConverscore, diliConverscore, zhengzhiConverscore, totalScore, classIndex, schoolIndex, examType);
+ }
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/score/model/ManualGradeEntryConversion.java b/src/main/java/com/zgczx/repository/mysql1/score/model/ManualGradeEntryConversion.java
new file mode 100644
index 0000000..7e58d1a
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/score/model/ManualGradeEntryConversion.java
@@ -0,0 +1,303 @@
+package com.zgczx.repository.mysql1.score.model;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+import java.util.Objects;
+
+/**
+ * 这个表是手动录入成绩转换为等级分后的总表,所有手动录入成绩的数据都从此表中获取
+ * @author aml
+ * @date 2019/10/14 13:59
+ */
+@Entity
+@Table(name = "manual_grade_entry_conversion", schema = "score_ananlysis_dev", catalog = "")
+public class ManualGradeEntryConversion {
+ private int id;
+ private String wechatOpenid;
+ private String studentNumber;
+ private Double yuwenScore;
+ private Double shuxueScore;
+ private Double yingyuScore;
+ private Double wuliCoversion;
+ private Double huaxueCoversion;
+ private Double shengwuCoversion;
+ private Double lishiCoversion;
+ private Double diliCoversion;
+ private Double zhengzhiCoversion;
+ private Double coversionTotal;
+ private Double coversionAvg;
+ private Integer classRank;
+ private Integer gradeRank;
+ private String examName;
+ private String schoolName;
+ private String gradeName;
+ private String className;
+ private String examFullName;
+ private Timestamp insettime;
+ private Timestamp updatetime;
+
+ @Id
+ @Column(name = "id")
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ @Basic
+ @Column(name = "wechat_openid")
+ public String getWechatOpenid() {
+ return wechatOpenid;
+ }
+
+ public void setWechatOpenid(String wechatOpenid) {
+ this.wechatOpenid = wechatOpenid;
+ }
+
+ @Basic
+ @Column(name = "student_number")
+ public String getStudentNumber() {
+ return studentNumber;
+ }
+
+ public void setStudentNumber(String studentNumber) {
+ this.studentNumber = studentNumber;
+ }
+
+ @Basic
+ @Column(name = "yuwen_score")
+ public Double getYuwenScore() {
+ return yuwenScore;
+ }
+
+ public void setYuwenScore(Double yuwenScore) {
+ this.yuwenScore = yuwenScore;
+ }
+
+ @Basic
+ @Column(name = "shuxue_score")
+ public Double getShuxueScore() {
+ return shuxueScore;
+ }
+
+ public void setShuxueScore(Double shuxueScore) {
+ this.shuxueScore = shuxueScore;
+ }
+
+ @Basic
+ @Column(name = "yingyu_score")
+ public Double getYingyuScore() {
+ return yingyuScore;
+ }
+
+ public void setYingyuScore(Double yingyuScore) {
+ this.yingyuScore = yingyuScore;
+ }
+
+ @Basic
+ @Column(name = "wuli_coversion")
+ public Double getWuliCoversion() {
+ return wuliCoversion;
+ }
+
+ public void setWuliCoversion(Double wuliCoversion) {
+ this.wuliCoversion = wuliCoversion;
+ }
+
+ @Basic
+ @Column(name = "huaxue_coversion")
+ public Double getHuaxueCoversion() {
+ return huaxueCoversion;
+ }
+
+ public void setHuaxueCoversion(Double huaxueCoversion) {
+ this.huaxueCoversion = huaxueCoversion;
+ }
+
+ @Basic
+ @Column(name = "shengwu_coversion")
+ public Double getShengwuCoversion() {
+ return shengwuCoversion;
+ }
+
+ public void setShengwuCoversion(Double shengwuCoversion) {
+ this.shengwuCoversion = shengwuCoversion;
+ }
+
+ @Basic
+ @Column(name = "lishi_coversion")
+ public Double getLishiCoversion() {
+ return lishiCoversion;
+ }
+
+ public void setLishiCoversion(Double lishiCoversion) {
+ this.lishiCoversion = lishiCoversion;
+ }
+
+ @Basic
+ @Column(name = "dili_coversion")
+ public Double getDiliCoversion() {
+ return diliCoversion;
+ }
+
+ public void setDiliCoversion(Double diliCoversion) {
+ this.diliCoversion = diliCoversion;
+ }
+
+ @Basic
+ @Column(name = "zhengzhi_coversion")
+ public Double getZhengzhiCoversion() {
+ return zhengzhiCoversion;
+ }
+
+ public void setZhengzhiCoversion(Double zhengzhiCoversion) {
+ this.zhengzhiCoversion = zhengzhiCoversion;
+ }
+
+ @Basic
+ @Column(name = "coversion_total")
+ public Double getCoversionTotal() {
+ return coversionTotal;
+ }
+
+ public void setCoversionTotal(Double coversionTotal) {
+ this.coversionTotal = coversionTotal;
+ }
+
+ @Basic
+ @Column(name = "coversion_avg")
+ public Double getCoversionAvg() {
+ return coversionAvg;
+ }
+
+ public void setCoversionAvg(Double coversionAvg) {
+ this.coversionAvg = coversionAvg;
+ }
+
+ @Basic
+ @Column(name = "class_rank")
+ public Integer getClassRank() {
+ return classRank;
+ }
+
+ public void setClassRank(Integer classRank) {
+ this.classRank = classRank;
+ }
+
+ @Basic
+ @Column(name = "grade_rank")
+ public Integer getGradeRank() {
+ return gradeRank;
+ }
+
+ public void setGradeRank(Integer gradeRank) {
+ this.gradeRank = gradeRank;
+ }
+
+ @Basic
+ @Column(name = "exam_name")
+ public String getExamName() {
+ return examName;
+ }
+
+ public void setExamName(String examName) {
+ this.examName = examName;
+ }
+
+ @Basic
+ @Column(name = "school_name")
+ public String getSchoolName() {
+ return schoolName;
+ }
+
+ public void setSchoolName(String schoolName) {
+ this.schoolName = schoolName;
+ }
+
+ @Basic
+ @Column(name = "grade_name")
+ public String getGradeName() {
+ return gradeName;
+ }
+
+ public void setGradeName(String gradeName) {
+ this.gradeName = gradeName;
+ }
+
+ @Basic
+ @Column(name = "class_name")
+ public String getClassName() {
+ return className;
+ }
+
+ public void setClassName(String className) {
+ this.className = className;
+ }
+
+ @Basic
+ @Column(name = "exam_full_name")
+ public String getExamFullName() {
+ return examFullName;
+ }
+
+ public void setExamFullName(String examFullName) {
+ this.examFullName = examFullName;
+ }
+
+ @Basic
+ @Column(name = "insettime")
+ public Timestamp getInsettime() {
+ return insettime;
+ }
+
+ public void setInsettime(Timestamp insettime) {
+ this.insettime = insettime;
+ }
+
+ @Basic
+ @Column(name = "updatetime")
+ public Timestamp getUpdatetime() {
+ return updatetime;
+ }
+
+ public void setUpdatetime(Timestamp updatetime) {
+ this.updatetime = updatetime;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ManualGradeEntryConversion that = (ManualGradeEntryConversion) o;
+ return id == that.id &&
+ Objects.equals(wechatOpenid, that.wechatOpenid) &&
+ Objects.equals(studentNumber, that.studentNumber) &&
+ Objects.equals(yuwenScore, that.yuwenScore) &&
+ Objects.equals(shuxueScore, that.shuxueScore) &&
+ Objects.equals(yingyuScore, that.yingyuScore) &&
+ Objects.equals(wuliCoversion, that.wuliCoversion) &&
+ Objects.equals(huaxueCoversion, that.huaxueCoversion) &&
+ Objects.equals(shengwuCoversion, that.shengwuCoversion) &&
+ Objects.equals(lishiCoversion, that.lishiCoversion) &&
+ Objects.equals(diliCoversion, that.diliCoversion) &&
+ Objects.equals(zhengzhiCoversion, that.zhengzhiCoversion) &&
+ Objects.equals(coversionTotal, that.coversionTotal) &&
+ Objects.equals(coversionAvg, that.coversionAvg) &&
+ Objects.equals(classRank, that.classRank) &&
+ Objects.equals(gradeRank, that.gradeRank) &&
+ Objects.equals(examName, that.examName) &&
+ Objects.equals(schoolName, that.schoolName) &&
+ Objects.equals(gradeName, that.gradeName) &&
+ Objects.equals(className, that.className) &&
+ Objects.equals(examFullName, that.examFullName) &&
+ Objects.equals(insettime, that.insettime) &&
+ Objects.equals(updatetime, that.updatetime);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, wechatOpenid, studentNumber, yuwenScore, shuxueScore, yingyuScore, wuliCoversion, huaxueCoversion, shengwuCoversion, lishiCoversion, diliCoversion, zhengzhiCoversion, coversionTotal, coversionAvg, classRank, gradeRank, examName, schoolName, gradeName, className, examFullName, insettime, updatetime);
+ }
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/score/model/ManuallyEnterGrades.java b/src/main/java/com/zgczx/repository/mysql1/score/model/ManuallyEnterGrades.java
new file mode 100644
index 0000000..4eae9f7
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/score/model/ManuallyEnterGrades.java
@@ -0,0 +1,62 @@
+package com.zgczx.repository.mysql1.score.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+import java.util.Objects;
+
+/**
+ * @author aml
+ * @date 2019/10/29 19:10
+ */
+@Entity
+@Data
+//@Table(name = "manually_enter_grades", schema = "score_ananlysis_dev", catalog = "")
+@ApiModel(value = "ManuallyEnterGrades实体对象", description = "批量录入实体")
+@Table(name = "manually_enter_grades")
+public class ManuallyEnterGrades {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private int id;
+ @Basic
+ @Column(name = "wechat_openid")
+ private String wechatOpenid;
+
+ @Basic
+ @Column(name = "student_number")
+ private String studentNumber;
+
+ @Basic
+ @Column(name = "subject_name")
+ private String subjectName;
+
+ @Basic
+ @Column(name = "score")
+ private String score;
+
+ @Basic
+ @Column(name = "class_rank")
+ private String classRank;
+
+ @Basic
+ @Column(name = "grade_rank")
+ private String gradeRank;
+ @Basic
+ @Column(name = "exam_name")
+ private String examName;
+
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp inserttime;
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp updatetime;
+
+ @Column(name = "imgs")
+ @Basic
+ private String imgs;
+
+
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/score/model/SubjectFullScore.java b/src/main/java/com/zgczx/repository/mysql1/score/model/SubjectFullScore.java
new file mode 100644
index 0000000..df20d51
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/score/model/SubjectFullScore.java
@@ -0,0 +1,157 @@
+package com.zgczx.repository.mysql1.score.model;
+
+import javax.persistence.*;
+import java.util.Objects;
+
+/**
+ * @author aml
+ * @date 2019/9/19 15:22
+ */
+@Entity
+@Table(name = "subject_full_score", schema = "score_ananlysis_dev", catalog = "")
+public class SubjectFullScore {
+ private long id;
+ private String schemaname;
+ private Long yuwen;
+ private Long shuxue;
+ private Long yingyu;
+ private Long wuli;
+ private Long huaxue;
+ private Long shengwu;
+ private Long zhengzhi;
+ private Long dili;
+ private Long lishi;
+
+ @Id
+ @Column(name = "id")
+ public long getId() {
+ return id;
+ }
+
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ @Basic
+ @Column(name = "schemaname")
+ public String getSchemaname() {
+ return schemaname;
+ }
+
+ public void setSchemaname(String schemaname) {
+ this.schemaname = schemaname;
+ }
+
+ @Basic
+ @Column(name = "yuwen")
+ public Long getYuwen() {
+ return yuwen;
+ }
+
+ public void setYuwen(Long yuwen) {
+ this.yuwen = yuwen;
+ }
+
+ @Basic
+ @Column(name = "shuxue")
+ public Long getShuxue() {
+ return shuxue;
+ }
+
+ public void setShuxue(Long shuxue) {
+ this.shuxue = shuxue;
+ }
+
+ @Basic
+ @Column(name = "yingyu")
+ public Long getYingyu() {
+ return yingyu;
+ }
+
+ public void setYingyu(Long yingyu) {
+ this.yingyu = yingyu;
+ }
+
+ @Basic
+ @Column(name = "wuli")
+ public Long getWuli() {
+ return wuli;
+ }
+
+ public void setWuli(Long wuli) {
+ this.wuli = wuli;
+ }
+
+ @Basic
+ @Column(name = "huaxue")
+ public Long getHuaxue() {
+ return huaxue;
+ }
+
+ public void setHuaxue(Long huaxue) {
+ this.huaxue = huaxue;
+ }
+
+ @Basic
+ @Column(name = "shengwu")
+ public Long getShengwu() {
+ return shengwu;
+ }
+
+ public void setShengwu(Long shengwu) {
+ this.shengwu = shengwu;
+ }
+
+ @Basic
+ @Column(name = "zhengzhi")
+ public Long getZhengzhi() {
+ return zhengzhi;
+ }
+
+ public void setZhengzhi(Long zhengzhi) {
+ this.zhengzhi = zhengzhi;
+ }
+
+ @Basic
+ @Column(name = "dili")
+ public Long getDili() {
+ return dili;
+ }
+
+ public void setDili(Long dili) {
+ this.dili = dili;
+ }
+
+ @Basic
+ @Column(name = "lishi")
+ public Long getLishi() {
+ return lishi;
+ }
+
+ public void setLishi(Long lishi) {
+ this.lishi = lishi;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ SubjectFullScore that = (SubjectFullScore) o;
+ return id == that.id &&
+ Objects.equals(schemaname, that.schemaname) &&
+ Objects.equals(yuwen, that.yuwen) &&
+ Objects.equals(shuxue, that.shuxue) &&
+ Objects.equals(yingyu, that.yingyu) &&
+ Objects.equals(wuli, that.wuli) &&
+ Objects.equals(huaxue, that.huaxue) &&
+ Objects.equals(shengwu, that.shengwu) &&
+ Objects.equals(zhengzhi, that.zhengzhi) &&
+ Objects.equals(dili, that.dili) &&
+ Objects.equals(lishi, that.lishi);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, schemaname, yuwen, shuxue, yingyu, wuli, huaxue, shengwu, zhengzhi, dili, lishi);
+ }
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/user/dao/StudentInfoDao.java b/src/main/java/com/zgczx/repository/mysql1/user/dao/StudentInfoDao.java
new file mode 100644
index 0000000..8363d45
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/user/dao/StudentInfoDao.java
@@ -0,0 +1,15 @@
+package com.zgczx.repository.mysql1.user.dao;
+
+import com.zgczx.repository.mysql1.user.model.StudentInfo;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @author aml
+ * @date 2019/9/10 15:53
+ */
+@Repository
+public interface StudentInfoDao extends JpaRepository {
+
+ StudentInfo getStudentInfoByStudentNumber(String studentNumber);
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/user/dao/SysLoginDao.java b/src/main/java/com/zgczx/repository/mysql1/user/dao/SysLoginDao.java
new file mode 100644
index 0000000..6e53a83
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/user/dao/SysLoginDao.java
@@ -0,0 +1,14 @@
+package com.zgczx.repository.mysql1.user.dao;
+
+import com.zgczx.repository.mysql1.user.model.SysLogin;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @author aml
+ * @date 2019/9/10 20:03
+ */
+@Repository
+public interface SysLoginDao extends JpaRepository {
+
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/user/dao/UserFeedBackDao.java b/src/main/java/com/zgczx/repository/mysql1/user/dao/UserFeedBackDao.java
new file mode 100644
index 0000000..a028b20
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/user/dao/UserFeedBackDao.java
@@ -0,0 +1,11 @@
+package com.zgczx.repository.mysql1.user.dao;
+
+import com.zgczx.repository.mysql1.user.model.UserFeedBack;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+/**
+ * @author aml
+ * @date 2019/9/6 21:15
+ */
+public interface UserFeedBackDao extends JpaRepository {
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/user/dao/WechatStudentDao.java b/src/main/java/com/zgczx/repository/mysql1/user/dao/WechatStudentDao.java
new file mode 100644
index 0000000..8459606
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/user/dao/WechatStudentDao.java
@@ -0,0 +1,15 @@
+package com.zgczx.repository.mysql1.user.dao;
+
+import com.zgczx.repository.mysql1.user.model.WechatStudent;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @author aml
+ * @date 2019/11/8 19:39
+ */
+@Repository
+public interface WechatStudentDao extends JpaRepository {
+
+ WechatStudent findByOpenid(String openid);
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/user/model/StudentInfo.java b/src/main/java/com/zgczx/repository/mysql1/user/model/StudentInfo.java
new file mode 100644
index 0000000..8dc6def
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/user/model/StudentInfo.java
@@ -0,0 +1,269 @@
+package com.zgczx.repository.mysql1.user.model;
+
+import lombok.Data;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+import java.util.Objects;
+
+/**
+ * @author aml
+ * @date 2019/9/10 15:40
+ */
+@Entity
+@Data
+@Table(name = "student_info", schema = "score_ananlysis_dev", catalog = "")
+public class StudentInfo {
+ private int id;
+ private String userId;
+ private String studentMachineCard;
+ private String studentNumber;
+ private String studentName;
+ private String schoolName;
+ private String schoolId;
+ private String gradeId;
+ private String gradeName;
+ private String classId;
+ private String className;
+ private String cardNum;
+ private String province;
+ private String address;
+ private String birthdate;
+ private String sex;
+ private String phone;
+ private String image;
+ private Long createUser;
+ private Timestamp createTime;
+
+ @Id
+ @Column(name = "id")
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ @Basic
+ @Column(name = "user_id")
+ public String getUserId() {
+ return userId;
+ }
+
+ public void setUserId(String userId) {
+ this.userId = userId;
+ }
+
+ @Basic
+ @Column(name = "student_machine_card")
+ public String getStudentMachineCard() {
+ return studentMachineCard;
+ }
+
+ public void setStudentMachineCard(String studentMachineCard) {
+ this.studentMachineCard = studentMachineCard;
+ }
+
+ @Basic
+ @Column(name = "student_number")
+ public String getStudentNumber() {
+ return studentNumber;
+ }
+
+ public void setStudentNumber(String studentNumber) {
+ this.studentNumber = studentNumber;
+ }
+
+ @Basic
+ @Column(name = "student_name")
+ public String getStudentName() {
+ return studentName;
+ }
+
+ public void setStudentName(String studentName) {
+ this.studentName = studentName;
+ }
+
+ @Basic
+ @Column(name = "school_name")
+ public String getSchoolName() {
+ return schoolName;
+ }
+
+ public void setSchoolName(String schoolName) {
+ this.schoolName = schoolName;
+ }
+
+ @Basic
+ @Column(name = "school_id")
+ public String getSchoolId() {
+ return schoolId;
+ }
+
+ public void setSchoolId(String schoolId) {
+ this.schoolId = schoolId;
+ }
+
+ @Basic
+ @Column(name = "grade_id")
+ public String getGradeId() {
+ return gradeId;
+ }
+
+ public void setGradeId(String gradeId) {
+ this.gradeId = gradeId;
+ }
+
+ @Basic
+ @Column(name = "grade_name")
+ public String getGradeName() {
+ return gradeName;
+ }
+
+ public void setGradeName(String gradeName) {
+ this.gradeName = gradeName;
+ }
+
+ @Basic
+ @Column(name = "class_id")
+ public String getClassId() {
+ return classId;
+ }
+
+ public void setClassId(String classId) {
+ this.classId = classId;
+ }
+
+ @Basic
+ @Column(name = "class_name")
+ public String getClassName() {
+ return className;
+ }
+
+ public void setClassName(String className) {
+ this.className = className;
+ }
+
+ @Basic
+ @Column(name = "card_num")
+ public String getCardNum() {
+ return cardNum;
+ }
+
+ public void setCardNum(String cardNum) {
+ this.cardNum = cardNum;
+ }
+
+ @Basic
+ @Column(name = "province")
+ public String getProvince() {
+ return province;
+ }
+
+ public void setProvince(String province) {
+ this.province = province;
+ }
+
+ @Basic
+ @Column(name = "address")
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address;
+ }
+
+ @Basic
+ @Column(name = "birthdate")
+ public String getBirthdate() {
+ return birthdate;
+ }
+
+ public void setBirthdate(String birthdate) {
+ this.birthdate = birthdate;
+ }
+
+ @Basic
+ @Column(name = "sex")
+ public String getSex() {
+ return sex;
+ }
+
+ public void setSex(String sex) {
+ this.sex = sex;
+ }
+
+ @Basic
+ @Column(name = "phone")
+ public String getPhone() {
+ return phone;
+ }
+
+ public void setPhone(String phone) {
+ this.phone = phone;
+ }
+
+ @Basic
+ @Column(name = "image")
+ public String getImage() {
+ return image;
+ }
+
+ public void setImage(String image) {
+ this.image = image;
+ }
+
+ @Basic
+ @Column(name = "create_user")
+ public Long getCreateUser() {
+ return createUser;
+ }
+
+ public void setCreateUser(Long createUser) {
+ this.createUser = createUser;
+ }
+
+ @Basic
+ @Column(name = "create_time")
+ public Timestamp getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(Timestamp createTime) {
+ this.createTime = createTime;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ StudentInfo that = (StudentInfo) o;
+ return id == that.id &&
+ Objects.equals(userId, that.userId) &&
+ Objects.equals(studentMachineCard, that.studentMachineCard) &&
+ Objects.equals(studentNumber, that.studentNumber) &&
+ Objects.equals(studentName, that.studentName) &&
+ Objects.equals(schoolName, that.schoolName) &&
+ Objects.equals(schoolId, that.schoolId) &&
+ Objects.equals(gradeId, that.gradeId) &&
+ Objects.equals(gradeName, that.gradeName) &&
+ Objects.equals(classId, that.classId) &&
+ Objects.equals(className, that.className) &&
+ Objects.equals(cardNum, that.cardNum) &&
+ Objects.equals(province, that.province) &&
+ Objects.equals(address, that.address) &&
+ Objects.equals(birthdate, that.birthdate) &&
+ Objects.equals(sex, that.sex) &&
+ Objects.equals(phone, that.phone) &&
+ Objects.equals(image, that.image) &&
+ Objects.equals(createUser, that.createUser) &&
+ Objects.equals(createTime, that.createTime);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, userId, studentMachineCard, studentNumber, studentName, schoolName, schoolId, gradeId, gradeName, classId, className, cardNum, province, address, birthdate, sex, phone, image, createUser, createTime);
+ }
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/user/model/SysLogin.java b/src/main/java/com/zgczx/repository/mysql1/user/model/SysLogin.java
new file mode 100644
index 0000000..8c9702b
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/user/model/SysLogin.java
@@ -0,0 +1,101 @@
+package com.zgczx.repository.mysql1.user.model;
+
+import lombok.Data;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+import java.util.Objects;
+
+/**
+ * @author aml
+ * @date 2019/9/10 20:02
+ */
+@Entity
+@Data
+@Table(name = "sys_login", schema = "score_ananlysis_dev", catalog = "")
+public class SysLogin {
+ private int id;
+ private String username;
+ private String password;
+ private Timestamp createTime;
+ private String email;
+ private String imageUrl;
+
+ @Id
+ @Column(name = "id")
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ @Basic
+ @Column(name = "username")
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ @Basic
+ @Column(name = "password")
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ @Basic
+ @Column(name = "create_time")
+ public Timestamp getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(Timestamp createTime) {
+ this.createTime = createTime;
+ }
+
+ @Basic
+ @Column(name = "email")
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ @Basic
+ @Column(name = "image_url")
+ public String getImageUrl() {
+ return imageUrl;
+ }
+
+ public void setImageUrl(String imageUrl) {
+ this.imageUrl = imageUrl;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ SysLogin sysLogin = (SysLogin) o;
+ return id == sysLogin.id &&
+ Objects.equals(username, sysLogin.username) &&
+ Objects.equals(password, sysLogin.password) &&
+ Objects.equals(createTime, sysLogin.createTime) &&
+ Objects.equals(email, sysLogin.email) &&
+ Objects.equals(imageUrl, sysLogin.imageUrl);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, username, password, createTime, email, imageUrl);
+ }
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/user/model/UserFeedBack.java b/src/main/java/com/zgczx/repository/mysql1/user/model/UserFeedBack.java
new file mode 100644
index 0000000..9e3a97c
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/user/model/UserFeedBack.java
@@ -0,0 +1,39 @@
+package com.zgczx.repository.mysql1.user.model;
+
+import lombok.Data;
+import org.hibernate.annotations.DynamicInsert;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author aml
+ * @date 2019/11/20 21:12
+ */
+@Data
+@DynamicInsert
+@Entity
+@Table(name = "user_feed_back", schema = "score_ananlysis_dev", catalog = "")
+public class UserFeedBack implements Serializable {
+
+ //系统反馈Id
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Integer id;
+
+ //用户提交反馈id
+ @Basic
+ @Column(name = "user_openid")
+ private String userOpenid;
+
+ //系统反馈内容
+ @Basic
+ @Column(name = "content")
+ private String content;
+
+ //反馈时间
+ @Basic
+ @Column(name = "insert_time")
+ private Date insertTime;
+}
diff --git a/src/main/java/com/zgczx/repository/mysql1/user/model/WechatStudent.java b/src/main/java/com/zgczx/repository/mysql1/user/model/WechatStudent.java
new file mode 100644
index 0000000..a506c35
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql1/user/model/WechatStudent.java
@@ -0,0 +1,90 @@
+package com.zgczx.repository.mysql1.user.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.hibernate.validator.constraints.Length;
+import org.hibernate.validator.constraints.NotBlank;
+import org.hibernate.validator.constraints.NotEmpty;
+
+import javax.persistence.*;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+import javax.validation.constraints.Size;
+import java.sql.Timestamp;
+import java.util.Objects;
+
+/**
+ * @author aml
+ * @date 2019/11/8 19:35
+ */
+@Data
+@Entity
+@Table(name = "wechat_student", schema = "score_ananlysis_dev", catalog = "")
+public class WechatStudent {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "id")
+ private int id;
+
+// @NotEmpty(message = "统一登录平台的主键id,用作此表的外键,必填")
+ @NotNull(message = "统一登录平台的主键id,用作此表的外键,必填")
+ @Basic
+ @Column(name = "foreign_ke_id")
+ private Integer foreignKeId;
+
+ @NotEmpty(message = "用户openid必填")
+ @Basic
+ @Column(name = "openid")
+ private String openid;
+
+// @NotEmpty(message = "注册的用户名,必填且唯一")
+// @Basic
+// @Column(name = "username")
+// private String username;
+//
+// @NotEmpty(message = "注册的密码,必填")
+// @Size(min = 4,max = 20,message = "密码的长度应该在4和20之间")
+// @Basic
+// @Column(name = "password")
+// private String password;
+//
+// @Basic
+// @Column(name = "student_id")
+// private String studentId;//学号,可以暂时不用注册
+//
+// @NotEmpty(message = "学校全称,必填")
+// @Basic
+// @Column(name = "school_name")
+// private String schoolName;
+//
+// @NotEmpty(message = "年级全称,例如:高一,必填")
+// @Basic
+// @Column(name = "grade")
+// private String grade;
+//
+// @NotEmpty(message = "班级名称,必填")
+// @Basic
+// @Column(name = "class_name")
+// private String className;
+//
+//
+// @Pattern(regexp = "^1(3|4|5|7|8)\\d{9}$",message = "手机号码格式错误")
+// @NotBlank(message = "手机号码不能为空")
+// @Basic
+// @Column(name = "phone")
+// private String phone;
+// @Basic
+// @Column(name = "verify_code")
+// private String verifyCode;
+ //解决返回给前端的是一个时间戳,改成为年月日时分秒格式
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp inserttime;
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Timestamp updatetime;
+
+
+
+
+
+
+}
diff --git a/src/main/java/com/zgczx/repository/mysql2/scoretwo/dao/ExamCoversionTotalDao.java b/src/main/java/com/zgczx/repository/mysql2/scoretwo/dao/ExamCoversionTotalDao.java
new file mode 100644
index 0000000..49b2e4d
--- /dev/null
+++ b/src/main/java/com/zgczx/repository/mysql2/scoretwo/dao/ExamCoversionTotalDao.java
@@ -0,0 +1,276 @@
+package com.zgczx.repository.mysql2.scoretwo.dao;
+
+import com.zgczx.repository.mysql2.scoretwo.model.ExamCoversionTotal;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigInteger;
+import java.util.List;
+
+/**
+ * @author aml
+ * @date 2019/9/10 15:52
+ */
+@Repository
+public interface ExamCoversionTotalDao extends JpaRepository {
+
+ /**
+ * 11.22,修改查询条件,加上@query,主要加上valid=1
+ * 根据学号获取此学生所有成绩
+ *
+ * @param stuNumber 学号
+ * @return ExamCoversionTotal实体对象
+ */
+ @Query(value = "select * from exam_coversion_total where student_number=?1 and exam_type=?2 and valid='1'", nativeQuery = true)
+ ExamCoversionTotal findByStudentNumberAndExamType(String stuNumber,String examType);
+
+ @Query(value = "SELECT * FROM exam_coversion_total WHERE (student_number=?1 OR openid=?2) AND exam_type=?3 AND valid='1'", nativeQuery = true)
+ ExamCoversionTotal findByStudentNumberOrOpenidAndExamType(String stuNumber,String openid,String examType);
+ /**
+ * 获取单科的班级排名
+ * @param 单科具体科目
+ * @return 学号、单科分数、单科班级排名
+ */
+// @Query(value = "SELECT t.student_number, t.yuwen_score,t.rank" +
+// "FROM " +
+// " (select u.student_number, u.yuwen_score, @rank:= @rank + 1," +
+// " @last_rank:= CASE " +
+// " WHEN @last_score = u.yuwen_score\n" +
+// " THEN @last_rank" +
+// " WHEN @last_score:= u.yuwen_score \n" +
+// " THEN @rank " +
+// " END AS rank " +
+// " FROM " +
+// " (SELECT * FROM exam_coversion_total WHERE class_id=?1 AND exam_type=?2 ORDER BY yuwen_score DESC) u, " +
+// " (SELECT @rank:= 0, @last_score:= NULL, @last_rank:= 0) r" +
+// ")t ", nativeQuery = true)
+ @Query(value = "SELECT t.student_number, t.shuxue_score,t.rank FROM(SELECT u.student_number,u.shuxue_score,@rank \\:= @rank + 1,@last_rank \\:= CASE WHEN @last_score = u.shuxue_score THEN @last_rank WHEN @last_score \\:= u.shuxue_score THEN @rank END AS rank FROM (SELECT * FROM exam_coversion_total WHERE class_id=?1 AND exam_type=?2 ORDER BY shuxue_score DESC)u,(SELECT @rank \\:= 0,@last_score \\:= NULL,@last_rank \\:= 0)r)t", nativeQuery = true)
+ List getSingleClassRank(String classid, String examType);
+
+ //11.22 获取单科班级排名
+ //ORDER BY ?4: 他是直接填充为 'yuwen_score', 查询就变成 order by 'yuwen_score' 我要的是 order by yuwen_score 这种的
+ //目前这样查询的结果不对
+ @Query(value = "SELECT * FROM exam_coversion_total WHERE school_name=?1 AND class_id=?2 AND exam_type=?3 AND valid=1 ORDER BY ?4 DESC", nativeQuery = true)
+ List getAllSingleClassRank(String schoolName,String classid,String examName,@Param(value = "subject") String subject);
+
+ /**
+ * 获取某科目的成绩排序,降序
+ * @param classid 班级id
+ * @param examType 哪次考试
+ * @param subject 哪个科目
+ * @return 实体对象
+ */
+ //@Query("select examCoversionTotal from ExamCoversionTotal examCoversionTotal where examCoversionTotal.classId = ?1 and examCoversionTotal.examType = ?2 order by ?3 desc ")
+ //@Query(value = "SELECT * FROM exam_coversion_total WHERE class_id=?1 AND exam_type=?2 ORDER BY yingyu_score=?3 DESC", nativeQuery = true) 必须得指定第三个参数是数据库中哪个列的
+ List findAllByClassIdAndExamType(String classid, String examType,String subject);
+
+ // 获取三科的班排
+ @Query(value = "SELECT student_number,yuwen_score+shuxue_score+yingyu_score AS s FROM exam_coversion_total WHERE class_id=?1 AND exam_type=?2 AND school_name=?3 AND grade_name=?4 AND valid=1 ORDER BY s DESC", nativeQuery = true)
+ List findByClassIdAndExamType(String classid, String examType,String schoolName,String gradeName);
+
+ //获取三科的年排
+ @Query(value = "SELECT student_number,yuwen_score+shuxue_score+yingyu_score AS s FROM exam_coversion_total WHERE exam_type=?1 AND school_name=?2 AND grade_name=?3 AND valid=1 ORDER BY s DESC", nativeQuery = true)
+ List findByClassIdAndExamTypeGrade(String examType,String schoolName,String gradeName);
+
+ // 获取综合的班排
+ @Query(value = "SELECT student_number,wuli_coversion+huaxue_coversion+shengwu_coversion+lishi_coversion+dili_coversion+zhengzhi_coversion AS s FROM exam_coversion_total WHERE class_id=?1 AND exam_type=?2 AND school_name=?3 AND grade_name=?4 AND valid=1 ORDER BY s DESC", nativeQuery = true)
+ List findByClassIdAndExamTypeComplex(String classid, String examType,String schoolName,String gradeName);
+
+ // 获取综合的年排
+ @Query(value = "SELECT student_number,wuli_coversion+huaxue_coversion+shengwu_coversion+lishi_coversion+dili_coversion+zhengzhi_coversion AS s FROM exam_coversion_total WHERE exam_type=?1 AND school_name=?2 AND grade_name=?3 AND valid=1 ORDER BY s DESC", nativeQuery = true)
+ List findByClassIdAndExamTypeComplexGrade(String examType,String schoolName,String gradeName);
+
+ @Query(value = "select e.coversionTotal from ExamCoversionTotal as e where e.classId = ?1 and e.examType = ?2 and e.schoolName=?3 and e.gradeName=?4")
+ List getCoversionTotalByClassIdAndExamType(String classid, String examType,String schoolName,String gradeName);
+
+ @Query(value = "select sum(sfs.yuwen+sfs.shuxue+sfs.yingyu+sfs.wuli+sfs.huaxue+sfs.shengwu+sfs.zhengzhi+sfs.lishi+sfs.dili)as total from subject_full_score sfs,exam_full_score_set sfss where sfs.id=sfss.subject_schame_id and sfss.examinfo_id=?1 ",nativeQuery = true)
+ @Transactional
+ BigInteger findSchametotal(int examid);
+
+
+
+ /**
+ * 语数英、物化生、政史地,九门科目的降序排列,年级排名
+ * 年级排名:by schoolName、gradename
+ * @param examType 具体考试名称
+ * @return 返回单个数据库字段的所有值
+ */
+ @Query(value = "select yuwen_score from exam_coversion_total where exam_type=?1 AND school_name=?2 AND grade_name=?3 AND valid=1 order by yuwen_score desc", nativeQuery = true)
+ List findByYuwenScore(String examType,String schoolName,String gradeName);
+ @Query(value = "select yuwen_score from exam_coversion_total where exam_type=?1 AND school_name=?2 AND valid=?3 AND grade_name=?4 order by yuwen_score desc", nativeQuery = true)
+ List findByYuwenScoreAndSchoolNameAndValid(String examType,String schoolName, int valid,String gradeName);
+ // 求语文的班级排名list
+ @Query(value = "select yuwen_score from exam_coversion_total where exam_type=?1 AND school_name=?2 AND valid=?3 AND class_id=?4 AND grade_name=?5 order by yuwen_score desc", nativeQuery = true)
+ List findByYuwenScoreAndSchoolNameAndValidAndClassId(String examType,String schoolName, int valid,String classid,String gradeName);
+
+ @Query(value = "select shuxue_score from exam_coversion_total where exam_type=?1 AND school_name=?2 AND grade_name=?3 AND valid=1 order by shuxue_score desc", nativeQuery = true)
+ List findByShuxueScore(String examType,String schoolName,String gradeName);
+ @Query(value = "select shuxue_score from exam_coversion_total where exam_type=?1 AND school_name=?2 AND valid=?3 AND grade_name=?4 order by shuxue_score desc", nativeQuery = true)
+ List findByShuxueScoreAndSchoolNameAndValid(String examType,String schoolName, int valid,String gradeName);
+ // 求数学的班级排名list
+ @Query(value = "select shuxue_score from exam_coversion_total where exam_type=?1 AND school_name=?2 AND valid=?3 AND class_id=?4 AND grade_name=?5 order by shuxue_score desc", nativeQuery = true)
+ List findByShuxueScoreAndSchoolNameAndValidAndClassId(String examType,String schoolName, int valid,String classid,String gradeName);
+
+ @Query(value = "select yingyu_score from exam_coversion_total where exam_type=?1 AND school_name=?2 AND grade_name=?3 AND valid=1 order by yingyu_score desc", nativeQuery = true)
+ List findByYingyuScore(String examType,String schoolName,String gradeName);
+ @Query(value = "select yingyu_score from exam_coversion_total where exam_type=?1 AND school_name=?2 AND valid=?3 AND grade_name=?4 order by yingyu_score desc", nativeQuery = true)
+ List findByYingyuScoreAndSchoolNameAndValid(String examType,String schoolName, int valid,String gradeName);
+ // 求英语的班级排名list
+ @Query(value = "select yingyu_score from exam_coversion_total where exam_type=?1 AND school_name=?2 AND valid=?3 AND class_id=?4 AND grade_name=?5 order by yingyu_score desc", nativeQuery = true)
+ List findByYingyuScoreAndSchoolNameAndValidAndClassId(String examType,String schoolName, int valid,String classid,String gradeName);
+
+
+ @Query(value = "select wuli_coversion from exam_coversion_total where exam_type=?1 AND school_name=?2 AND grade_name=?3 AND valid=1 order by wuli_coversion desc", nativeQuery = true)
+ List findByWuliCoversion(String examType,String schoolName,String gradeName);
+ @Query(value = "select wuli_coversion from exam_coversion_total where exam_type=?1 AND school_name=?2 AND valid=?3 AND grade_name=?4 order by wuli_coversion desc", nativeQuery = true)
+ List findByWuliCoversionAndSchoolNameAndValid(String examType,String schoolName, int valid,String gradeName);
+ // 求物理的班级排名list
+ @Query(value = "select wuli_coversion from exam_coversion_total where exam_type=?1 AND school_name=?2 AND valid=?3 AND class_id=?4 AND grade_name=?5 order by wuli_coversion desc", nativeQuery = true)
+ List findByWuliCoversionAndSchoolNameAndValidAndClassId(String examType,String schoolName, int valid,String classid,String gradeName);
+
+
+
+ @Query(value = "select huaxue_coversion from exam_coversion_total where exam_type=?1 AND school_name=?2 AND grade_name=?3 AND valid=1 order by huaxue_coversion desc", nativeQuery = true)
+ List findByHuaxueCoversion(String examType,String schoolName,String gradeName);
+ @Query(value = "select huaxue_coversion from exam_coversion_total where exam_type=?1 AND school_name=?2 AND valid=?3 AND grade_name=?4 order by huaxue_coversion desc", nativeQuery = true)
+ List findByHuaxueCoversionAndSchoolNameAndValid(String examType,String schoolName, int valid,String gradeName);
+ // 求化学的班级排名list
+ @Query(value = "select huaxue_coversion from exam_coversion_total where exam_type=?1 AND school_name=?2 AND valid=?3 AND class_id=?4 AND grade_name=?5 order by huaxue_coversion desc", nativeQuery = true)
+ List findByHuaxueCoversionAndSchoolNameAndValidAndClassId(String examType,String schoolName, int valid,String classid,String gradeName);
+
+
+ @Query(value = "select shengwu_coversion from exam_coversion_total where exam_type=?1 AND school_name=?2 AND grade_name=?3 AND valid=1 order by shengwu_coversion desc", nativeQuery = true)
+ List findByShengwuCoversion(String examType,String schoolName,String gradeName);
+ @Query(value = "select shengwu_coversion from exam_coversion_total where exam_type=?1 AND school_name=?2 AND valid=?3 AND grade_name=?4 order by shengwu_coversion desc", nativeQuery = true)
+ List findByShengwuCoversionAndSchoolNameAndValid(String examType,String schoolName, int valid,String gradeName);
+ // 求生物的班级排名list
+ @Query(value = "select shengwu_coversion from exam_coversion_total where exam_type=?1 AND school_name=?2 AND valid=?3 AND class_id=?4 AND grade_name=?5 order by shengwu_coversion desc", nativeQuery = true)
+ List findByShengwuCoversionAndSchoolNameAndValidAndClassId(String examType,String schoolName, int valid,String classid,String gradeName);
+
+
+ @Query(value = "select lishi_coversion from exam_coversion_total where exam_type=?1 AND school_name=?2 AND grade_name=?3 AND valid=1 order by lishi_coversion desc", nativeQuery = true)
+ List findByLishiCoversion(String examType,String schoolName,String gradeName);
+ @Query(value = "select lishi_coversion from exam_coversion_total where exam_type=?1 AND school_name=?2 AND valid=?3 AND grade_name=?4 order by lishi_coversion desc", nativeQuery = true)
+ List findByLishiCoversionAndSchoolNameAndValid(String examType,String schoolName, int valid,String gradeName);
+ // 求历史的班级排名list
+ @Query(value = "select lishi_coversion from exam_coversion_total where exam_type=?1 AND school_name=?2 AND valid=?3 AND class_id=?4 AND grade_name=?5 order by lishi_coversion desc", nativeQuery = true)
+ List findByLishiCoversionAndSchoolNameAndValidAndClassId(String examType,String schoolName, int valid,String classid,String gradeName);
+
+
+ @Query(value = "select dili_coversion from exam_coversion_total where exam_type=?1 AND school_name=?2 AND grade_name=?3 AND valid=1 order by dili_coversion desc", nativeQuery = true)
+ List findByDiliCoversion(String examType,String schoolName,String gradeName);
+ @Query(value = "select dili_coversion from exam_coversion_total where exam_type=?1 AND school_name=?2 AND valid=?3 AND grade_name=?4 order by dili_coversion desc", nativeQuery = true)
+ List findByDiliCoversionAndSchoolNameAndValid(String examType,String schoolName, int valid,String gradeName);
+ // 求历史的班级排名list
+ @Query(value = "select dili_coversion from exam_coversion_total where exam_type=?1 AND school_name=?2 AND valid=?3 AND class_id=?4 AND grade_name=?5 order by dili_coversion desc", nativeQuery = true)
+ List findByDiliCoversionAndSchoolNameAndValidAndClassId(String examType,String schoolName, int valid,String classid,String gradeName);
+
+
+ @Query(value = "select zhengzhi_coversion from exam_coversion_total where exam_type=?1 AND school_name=?2 AND grade_name=?3 AND valid=1 order by zhengzhi_coversion desc", nativeQuery = true)
+ List findByZhengzhiCoversion(String examType,String schoolName,String gradeName);
+ @Query(value = "select zhengzhi_coversion from exam_coversion_total where exam_type=?1 AND school_name=?2 AND valid=?3 AND grade_name=?4 order by zhengzhi_coversion desc", nativeQuery = true)
+ List findByZhengzhiCoversionAndSchoolNameAndValid(String examType,String schoolName, int valid,String gradeName);
+ // 求历史的班级排名list
+ @Query(value = "select zhengzhi_coversion from exam_coversion_total where exam_type=?1 AND school_name=?2 AND valid=?3 AND class_id=?4 AND grade_name=?5 order by zhengzhi_coversion desc", nativeQuery = true)
+ List