From 97e8f30549a631be2451b5d7f6861a7751663950 Mon Sep 17 00:00:00 2001 From: Cool <747682928@qq.com> Date: Wed, 23 Oct 2024 19:17:05 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=AD=A6=E7=94=9F=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CetStudentController.java | 6 ++++++ .../service/impl/CetMajorServiceImpl.java | 17 +++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetStudentController.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetStudentController.java index 83fb15a4..3e21a2b5 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetStudentController.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetStudentController.java @@ -64,4 +64,10 @@ public class CetStudentController extends JeecgController downloadTemplate(HttpServletResponse response) { return cetMajorService.downloadTemplate(response); } + + @RequestMapping("loadTable") + @ApiOperation("加载表格") + public Result loadTable() { + return cetMajorService.loadTable(); + } } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CetMajorServiceImpl.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CetMajorServiceImpl.java index b307c4a8..9a01401c 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CetMajorServiceImpl.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CetMajorServiceImpl.java @@ -1,5 +1,7 @@ package org.jeecg.modules.service.impl; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.vo.Result; @@ -10,6 +12,9 @@ import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.util.Comparator; +import java.util.List; +import java.util.Map; /** * Created with IntelliJ IDEA. @@ -32,4 +37,16 @@ public class CetMajorServiceImpl extends ServiceImpl loadTable() { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("entrydate", "count(*) as count"); + List> list = this.listMaps(wrapper); + // 倒序排序 + list.sort(Comparator.comparing((Map o) -> ((String) o.get("entrydate"))).reversed()); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("data", list); + return Result.OK(jsonObject); + } + } From 0ef7780459204247c19075839ec839e417c53d09 Mon Sep 17 00:00:00 2001 From: Cool <747682928@qq.com> Date: Wed, 23 Oct 2024 20:44:00 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=AD=A6=E7=94=9F=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jeecg-system-start/pom.xml | 5 + .../controller/Cet4MajorController.java | 177 ++++++++++++++++++ .../controller/CetStudentController.java | 73 -------- .../org/jeecg/modules/entity/Cet4_major.java | 62 +++++- .../org/jeecg/modules/pojo/CetStudent.java | 93 +++++++++ .../modules/service/ICet4MajorService.java | 24 +++ .../service/impl/Cet4MajorServiceImpl.java | 147 +++++++++++++++ .../service/impl/CetMajorServiceImpl.java | 52 ----- .../service/impl/Cet_4ServiceImpl.java | 1 - .../service/impl/Cet_6ServiceImpl.java | 27 ++- .../src/main/resources/application-dev.yml | 4 +- .../src/main/resources/application-prod.yml | 4 +- 12 files changed, 520 insertions(+), 149 deletions(-) create mode 100644 jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/Cet4MajorController.java delete mode 100644 jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetStudentController.java create mode 100644 jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/pojo/CetStudent.java create mode 100644 jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICet4MajorService.java create mode 100644 jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet4MajorServiceImpl.java delete mode 100644 jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CetMajorServiceImpl.java diff --git a/jeecg-module-system/jeecg-system-start/pom.xml b/jeecg-module-system/jeecg-system-start/pom.xml index a7a7026a..d34bbda2 100644 --- a/jeecg-module-system/jeecg-system-start/pom.xml +++ b/jeecg-module-system/jeecg-system-start/pom.xml @@ -32,6 +32,11 @@ runtime --> + + com.alibaba + easyexcel + 3.1.0 + com.dameng Dm8JdbcDriver18 diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/Cet4MajorController.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/Cet4MajorController.java new file mode 100644 index 00000000..9666d164 --- /dev/null +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/Cet4MajorController.java @@ -0,0 +1,177 @@ +package org.jeecg.modules.controller; + + +import java.util.Arrays; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecg.modules.entity.Cet4_major; +import org.jeecg.modules.service.ICet4MajorService; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + +/** + * @Description: cet4_major + * @Author: jeecg-boot + * @Date: 2024-10-23 + * @Version: V1.0 + */ +@Api(tags = "cet4_major") +@RestController +@RequestMapping("/com/cet4Major") +@Slf4j +public class Cet4MajorController extends JeecgController { + @Autowired + private ICet4MajorService cet4MajorService; + + /** + * 分页列表查询 + * + * @param cet4Major + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "cet4_major-分页列表查询") + @ApiOperation(value = "cet4_major-分页列表查询", notes = "cet4_major-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(Cet4_major cet4Major, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(cet4Major, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = cet4MajorService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param cet4Major + * @return + */ + @AutoLog(value = "cet4_major-添加") + @ApiOperation(value = "cet4_major-添加", notes = "cet4_major-添加") + @RequiresPermissions("com:cet4_major:add") + @PostMapping(value = "/add") + public Result add(@RequestBody Cet4_major cet4Major) { + cet4MajorService.save(cet4Major); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param cet4Major + * @return + */ + @AutoLog(value = "cet4_major-编辑") + @ApiOperation(value = "cet4_major-编辑", notes = "cet4_major-编辑") + @RequiresPermissions("com:cet4_major:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) + public Result edit(@RequestBody Cet4_major cet4Major) { + cet4MajorService.updateById(cet4Major); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "cet4_major-通过id删除") + @ApiOperation(value = "cet4_major-通过id删除", notes = "cet4_major-通过id删除") + @RequiresPermissions("com:cet4_major:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name = "id", required = true) String id) { + cet4MajorService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "cet4_major-批量删除") + @ApiOperation(value = "cet4_major-批量删除", notes = "cet4_major-批量删除") + @RequiresPermissions("com:cet4_major:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name = "ids", required = true) String ids) { + this.cet4MajorService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "cet4_major-通过id查询") + @ApiOperation(value = "cet4_major-通过id查询", notes = "cet4_major-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id", required = true) String id) { + Cet4_major cet4Major = cet4MajorService.getById(id); + if (cet4Major == null) { + return Result.error("未找到对应数据"); + } + return Result.OK(cet4Major); + } + + /** + * 导出excel + * + * @param request + * @param cet4Major + */ +// @RequiresPermissions("com:cet4_major:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, Cet4_major cet4Major) { + return super.exportXls(request, cet4Major, Cet4_major.class, "cet4_major"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ +// @RequiresPermissions("com:cet4_major:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return cet4MajorService.importStudentData(request); + } + + @RequestMapping("downloadTemplate") + @ApiOperation("四六级导入数据文件模版") + public Result downloadTemplate(HttpServletResponse response) { + return cet4MajorService.downloadTemplate(response); + } + + @RequestMapping("loadTable") + @ApiOperation("加载表格") + public Result loadTable() { + return cet4MajorService.loadTable(); + } + +} diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetStudentController.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetStudentController.java deleted file mode 100644 index 3e21a2b5..00000000 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetStudentController.java +++ /dev/null @@ -1,73 +0,0 @@ -package org.jeecg.modules.controller; - -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.jeecg.common.api.vo.Result; -import org.jeecg.common.system.base.controller.JeecgController; -import org.jeecg.modules.entity.Cet4_major; -import org.jeecg.modules.entity.Cet_4; -import org.jeecg.modules.service.impl.CetMajorServiceImpl; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.servlet.ModelAndView; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * Created with IntelliJ IDEA. - * - * @Author: Cool - * @Date: 2024/10/16/17:58 - * @Description: 学生信息Controller - */ -@Api(tags = "cetStudent") -@RestController -@RequestMapping("/cetStudent") -@Slf4j -public class CetStudentController extends JeecgController { - - @Autowired - private CetMajorServiceImpl cetMajorService; - - /** - * 导出excel - * - * @param request - * @param - */ - @RequiresPermissions("cet:cetStudent:exportXls") - @RequestMapping(value = "/exportXls") - public ModelAndView exportXls(HttpServletRequest request, Cet4_major major) { - return super.exportXls(request, major, Cet4_major.class, "cet_4"); - } - - /** - * 通过excel导入数据 - * - * @param request - * @param response - * @return - */ - @RequiresPermissions("cet:cetStudent:importExcel") - @RequestMapping(value = "/importExcel", method = RequestMethod.POST) - public Result importExcel(HttpServletRequest request, HttpServletResponse response) { - return super.importExcel(request, response, Cet4_major.class); - } - - @RequestMapping("downloadTemplate") - @ApiOperation("四六级导入数据文件模版") - public Result downloadTemplate(HttpServletResponse response) { - return cetMajorService.downloadTemplate(response); - } - - @RequestMapping("loadTable") - @ApiOperation("加载表格") - public Result loadTable() { - return cetMajorService.loadTable(); - } -} diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/Cet4_major.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/Cet4_major.java index aa411815..fa95f7b9 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/Cet4_major.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/Cet4_major.java @@ -1,22 +1,78 @@ package org.jeecg.modules.entity; +import java.io.Serializable; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +/** + * @Description: cet4_major + * @Author: jeecg-boot + * @Date: 2024-10-23 + * @Version: V1.0 + */ @Data @TableName("cet4_major") -public class Cet4_major { +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cet4_major对象", description="cet4_major") +public class Cet4_major implements Serializable { + private static final long serialVersionUID = 1L; + + /**id*/ + @TableId(type = IdType.ASSIGN_ID) + @Excel(name = "学号", width = 15) + @ApiModelProperty(value = "id") private String id; + /**name*/ + @Excel(name = "姓名", width = 15) + @ApiModelProperty(value = "name") private String name; + /**college*/ + @Excel(name = "上课院系", width = 15) + @ApiModelProperty(value = "college") private String college; - private String major_id; + /**majorId*/ + @Excel(name = "专业号", width = 15) + @ApiModelProperty(value = "majorId") + private String majorId; + /**majorname*/ + @Excel(name = "专业名称", width = 15) + @ApiModelProperty(value = "majorname") private String majorname; - private String class_name; + /**className*/ + @Excel(name = "班级", width = 15) + @ApiModelProperty(value = "className") + private String className; + /**educate*/ + @Excel(name = "学制", width = 15) + @ApiModelProperty(value = "educate") private String educate; + /**entrydate*/ + @Excel(name = "当前所在级", width = 15) + @ApiModelProperty(value = "entrydate") private String entrydate; + /**campus*/ + @Excel(name = "校区", width = 15) + @ApiModelProperty(value = "campus") private String campus; + /**state*/ + @Excel(name = "在校状态", width = 15) + @ApiModelProperty(value = "state") private String state; + /**level*/ + @Excel(name = "培养层次", width = 15) + @ApiModelProperty(value = "level") private String level; + /**category*/ + @Excel(name = "学生类别", width = 15) + @ApiModelProperty(value = "category") private String category; } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/pojo/CetStudent.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/pojo/CetStudent.java new file mode 100644 index 00000000..153d4eca --- /dev/null +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/pojo/CetStudent.java @@ -0,0 +1,93 @@ +package org.jeecg.modules.pojo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; + +/** + * Created with IntelliJ IDEA. + * + * @Author: Cool + * @Date: 2024/10/23/20:35 + * @Description: + */ +@Data +public class CetStudent { + + /** + * id + */ + @TableId(type = IdType.ASSIGN_ID) + @ExcelProperty("学号") + @ApiModelProperty(value = "id") + private String id; + /** + * name + */ + @ExcelProperty("姓名") + @ApiModelProperty(value = "name") + private String name; + /** + * college + */ + @ExcelProperty("上课院系") + @ApiModelProperty(value = "college") + private String college; + /** + * majorId + */ + @ExcelProperty("专业号") + @ApiModelProperty(value = "majorId") + private String majorId; + /** + * majorname + */ + @ExcelProperty("专业名称") + @ApiModelProperty(value = "majorname") + private String majorname; + /** + * className + */ + @ExcelProperty("班级") + @ApiModelProperty(value = "className") + private String className; + /** + * educate + */ + @ExcelProperty("学制") + @ApiModelProperty(value = "educate") + private String educate; + /** + * entrydate + */ + @ExcelProperty("当前所在级") + @ApiModelProperty(value = "entrydate") + private String entrydate; + /** + * campus + */ + @ExcelProperty("校区") + @ApiModelProperty(value = "campus") + private String campus; + /** + * state + */ + @ExcelProperty("在校状态") + @ApiModelProperty(value = "state") + private String state; + /** + * level + */ + @ExcelProperty("培养层次") + @ApiModelProperty(value = "level") + private String level; + /** + * category + */ + @ExcelProperty("学生类别") + @ApiModelProperty(value = "category") + private String category; +} diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICet4MajorService.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICet4MajorService.java new file mode 100644 index 00000000..e12e3d25 --- /dev/null +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICet4MajorService.java @@ -0,0 +1,24 @@ +package org.jeecg.modules.service; + +import org.jeecg.common.api.vo.Result; +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.entity.Cet4_major; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * @Description: cet4_major + * @Author: jeecg-boot + * @Date: 2024-10-23 + * @Version: V1.0 + */ +public interface ICet4MajorService extends IService { + + Result downloadTemplate(HttpServletResponse response); + + Result loadTable(); + + Result importStudentData(HttpServletRequest request); + +} diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet4MajorServiceImpl.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet4MajorServiceImpl.java new file mode 100644 index 00000000..a3d20f30 --- /dev/null +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet4MajorServiceImpl.java @@ -0,0 +1,147 @@ +package org.jeecg.modules.service.impl; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import com.alibaba.excel.support.ExcelTypeEnum; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.jeecg.common.api.vo.Result; +import org.jeecg.modules.entity.Cet4_major; +import org.jeecg.modules.mapper.Cet4_majorMapper; +import org.jeecg.modules.pojo.CetStudent; +import org.jeecg.modules.service.ICet4MajorService; +import org.jeecg.modules.utils.ExportUtil; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.sql.Timestamp; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @Description: cet4_major + * @Author: jeecg-boot + * @Date: 2024-10-23 + * @Version: V1.0 + */ +@Service +public class Cet4MajorServiceImpl extends ServiceImpl implements ICet4MajorService { + private final String CET_STUDENT_IMPORT_TEMPLATE = "template/cetStudentImportTemplate.xls"; + private final String CET_STUDENT_FILE_TEMPLATE_NAME = "四六级学生信息导入模版.xlsx"; + + @Override + public Result downloadTemplate(HttpServletResponse response) { + try { + ExportUtil.downloadExcelTemplate(response, CET_STUDENT_FILE_TEMPLATE_NAME, CET_STUDENT_IMPORT_TEMPLATE); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + @Override + public Result loadTable() { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("entrydate", "count(*) as studentNumber") + .groupBy("entrydate"); + List> list = this.listMaps(wrapper); + // 倒序排序 + list = list.stream().filter(e -> e.get("entrydate") != null).collect(Collectors.toList()); + list.sort(Comparator.comparing((Map o) -> ((String) o.get("entrydate"))).reversed()); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("data", list); + return Result.OK(jsonObject); + } + + @Override + public Result importStudentData(HttpServletRequest request) { + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; + Map fileMap = multipartRequest.getFileMap(); + for (Map.Entry entity : fileMap.entrySet()) { + // 获取上传文件对象 + MultipartFile file = entity.getValue(); + if (file.isEmpty()) { + // 文件为空,进行处理(例如,返回错误信息) + return Result.error("上传的文件为空!"); + } + try { + /**' + * 1. 读取表格 + */ + ArrayList furnitureArrayList = new ArrayList<>(); + //使用EasyExcel读取excel文件 + EasyExcel.read(file.getInputStream(), CetStudent.class, new AnalysisEventListener() { + @Override + public void invoke(CetStudent furniture, AnalysisContext analysisContext) { + System.out.println(furniture); + // 将读取到的数据存储到 list 集合里 + furnitureArrayList.add(furniture); + } + + @Override + public void doAfterAllAnalysed(AnalysisContext analysisContext) { + // 读取完后的操作 + } + }).excelType(ExcelTypeEnum.XLS).sheet().doRead(); + System.out.println(furnitureArrayList); + /** + * 将表格list用set为实体类 + */ + ArrayList rmsFurnitureArrayList = new ArrayList<>(); + Timestamp timestamp = new Timestamp(System.currentTimeMillis()); + for (CetStudent cetStudent : furnitureArrayList) { + Cet4_major cet4Major = new Cet4_major(); + cet4Major.setMajorId(cetStudent.getMajorId()); + cet4Major.setMajorname(cetStudent.getMajorname()); + cet4Major.setId(cetStudent.getId()); + cet4Major.setName(cetStudent.getName()); + cet4Major.setCollege(cetStudent.getCollege()); + cet4Major.setClassName(cetStudent.getClassName()); + cet4Major.setEducate(cetStudent.getEducate()); + cet4Major.setEntrydate(cetStudent.getEntrydate()); + cet4Major.setCampus(cetStudent.getCampus()); + cet4Major.setState(cetStudent.getState()); + cet4Major.setLevel(cetStudent.getLevel()); + cet4Major.setCategory(cetStudent.getCategory()); + + rmsFurnitureArrayList.add(cet4Major); + } + System.out.println(rmsFurnitureArrayList.size()); + /** + * 遍历list save + */ + saveBatch(rmsFurnitureArrayList, 10000); + System.out.println("插入成功"); + Timestamp timestamp2 = new Timestamp(System.currentTimeMillis()); + long millisecondsDiff = timestamp2.getTime() - timestamp.getTime(); + long secondsDiff = millisecondsDiff / 1000; + System.out.println("时间差为:" + secondsDiff + " 秒"); + return Result.ok("文件导入成功!数据行数:" + rmsFurnitureArrayList.size()); + } catch (Exception e) { + //update-begin-author:taoyan date:20211124 for: 导入数据重复增加提示 + String msg = e.getMessage(); + log.error(msg, e); + if (msg != null && msg.indexOf("Duplicate entry") >= 0) { + return Result.error("文件导入失败:有重复数据!"); + } else { + return Result.error("文件导入失败:" + e.getMessage()); + } + //update-end-author:taoyan date:20211124 for: 导入数据重复增加提示 + } finally { + try { + file.getInputStream().close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return Result.error("文件导入失败!"); + } +} diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CetMajorServiceImpl.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CetMajorServiceImpl.java deleted file mode 100644 index 9a01401c..00000000 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CetMajorServiceImpl.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.jeecg.modules.service.impl; - -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import lombok.extern.slf4j.Slf4j; -import org.jeecg.common.api.vo.Result; -import org.jeecg.modules.entity.Cet4_major; -import org.jeecg.modules.mapper.Cet4_majorMapper; -import org.jeecg.modules.utils.ExportUtil; -import org.springframework.stereotype.Service; - -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.Comparator; -import java.util.List; -import java.util.Map; - -/** - * Created with IntelliJ IDEA. - * - * @Author: Cool - * @Date: 2024/10/11/15:52 - * @Description: - */ -@Service -@Slf4j -public class CetMajorServiceImpl extends ServiceImpl { - private final String CET_STUDENT_IMPORT_TEMPLATE = "template/cetStudentImportTemplate.xls"; - private final String CET_STUDENT_FILE_TEMPLATE_NAME = "四六级学生信息导入模版.xlsx"; - - public Result downloadTemplate(HttpServletResponse response) { - try { - ExportUtil.downloadExcelTemplate(response, CET_STUDENT_FILE_TEMPLATE_NAME, CET_STUDENT_IMPORT_TEMPLATE); - } catch (IOException e) { - e.printStackTrace(); - } - return null; - } - - public Result loadTable() { - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.select("entrydate", "count(*) as count"); - List> list = this.listMaps(wrapper); - // 倒序排序 - list.sort(Comparator.comparing((Map o) -> ((String) o.get("entrydate"))).reversed()); - JSONObject jsonObject = new JSONObject(); - jsonObject.put("data", list); - return Result.OK(jsonObject); - } - -} diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_4ServiceImpl.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_4ServiceImpl.java index 298c130d..acb8d0a8 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_4ServiceImpl.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_4ServiceImpl.java @@ -18,7 +18,6 @@ import org.jeecg.modules.mapper.Cet_4Mapper; import org.jeecg.modules.service.CenterService; import org.jeecg.modules.service.CetCleanService; import org.jeecg.modules.service.ICet_4Service; -import org.jeecg.modules.utils.DateUtil; import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_6ServiceImpl.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_6ServiceImpl.java index 7a2cdc22..20396d9d 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_6ServiceImpl.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_6ServiceImpl.java @@ -1,6 +1,5 @@ package org.jeecg.modules.service.impl; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -12,15 +11,14 @@ import org.jeecg.modules.entity.Cet_4; import org.jeecg.modules.entity.Cet_6; import org.jeecg.modules.mapper.Cet_6Mapper; import org.jeecg.modules.service.CenterService; +import org.jeecg.modules.service.ICet4MajorService; import org.jeecg.modules.service.ICet_6Service; -import org.jeecg.modules.utils.DateUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import javax.annotation.Resource; -import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -36,13 +34,12 @@ public class Cet_6ServiceImpl extends ServiceImpl implements @Resource Cet_6Mapper cet6Mapper; - + @Autowired + ICet4MajorService cet4MajorService; @Autowired Cet_4ServiceImpl cet4Service; @Autowired CenterService centerService; - @Autowired - CetMajorServiceImpl cetMajorService; @Override public Result getRate(Cet_6 cet) { @@ -86,7 +83,7 @@ public class Cet_6ServiceImpl extends ServiceImpl implements wrapper.eq(Cet_6::getEntrydate, "2020"); List list1 = list(wrapper); Set allStudent1 = list1.stream().map(Cet_6::getId).collect(Collectors.toSet()); - log.info("六级总考试人数,{}",allStudent1.size()); + log.info("六级总考试人数,{}", allStudent1.size()); wrapper.ge(Cet_6::getResult, 425); List list = list(wrapper); log.info("六级总通过人数,{}", list.size()); @@ -94,18 +91,17 @@ public class Cet_6ServiceImpl extends ServiceImpl implements Set passStudent = list.stream().map(Cet_6::getId).collect(Collectors.toSet()); log.info("六级通过人数,{}", passStudent.size()); LambdaQueryWrapper majorWrapper = new LambdaQueryWrapper<>(); - majorWrapper.eq(Cet4_major::getEntrydate, "2020") - .eq(Cet4_major::getState, "在校"); - List majorList = cetMajorService.list(majorWrapper); + majorWrapper.eq(Cet4_major::getEntrydate, "2020").eq(Cet4_major::getState, "在校"); + List majorList = cet4MajorService.list(majorWrapper); Set allStudent = majorList.stream().map(Cet4_major::getId).collect(Collectors.toSet()); log.info("所有学生人数{}", allStudent.size()); log.info("通过率,{}", (double) passStudent.size() / allStudent.size()); - LambdaQueryWrapper cet4Wrapper=new LambdaQueryWrapper<>(); - cet4Wrapper.eq(Cet_4::getEntrydate,"2020"); - cet4Wrapper.ge(Cet_4::getResult,425); + LambdaQueryWrapper cet4Wrapper = new LambdaQueryWrapper<>(); + cet4Wrapper.eq(Cet_4::getEntrydate, "2020"); + cet4Wrapper.ge(Cet_4::getResult, 425); List cet4PassedStudent = cet4Service.list(cet4Wrapper); Set cet4AllPassedStudent = cet4PassedStudent.stream().map(Cet_4::getId).collect(Collectors.toSet()); - log.info("四级通过人数,{}",cet4AllPassedStudent.size()); + log.info("四级通过人数,{}", cet4AllPassedStudent.size()); return null; } @@ -113,8 +109,7 @@ public class Cet_6ServiceImpl extends ServiceImpl implements public Result loadImportDataList() { // 创建 QueryWrapper QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.select("batch", "COUNT(*) AS count") - .groupBy("batch"); + queryWrapper.select("batch", "COUNT(*) AS count").groupBy("batch"); // 执行查询,获取结果列表 List> list = this.listMaps(queryWrapper); diff --git a/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml b/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml index a7f926c2..33a80ad2 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml +++ b/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml @@ -45,8 +45,8 @@ spring: clean-disabled: true servlet: multipart: - max-file-size: 10MB - max-request-size: 10MB + max-file-size: 50MB + max-request-size: 50MB mail: host: smtp.163.com username: jeecgos@163.com diff --git a/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml b/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml index b106b26f..49fb5486 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml +++ b/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml @@ -45,8 +45,8 @@ spring: clean-disabled: true servlet: multipart: - max-file-size: 10MB - max-request-size: 10MB + max-file-size: 50MB + max-request-size: 50MB mail: host: smtp.163.com username: jeecgos@163.com From d13486422c9b6e8f66e3b68dffe8636840439556 Mon Sep 17 00:00:00 2001 From: Cool <747682928@qq.com> Date: Thu, 24 Oct 2024 15:04:41 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E5=9B=9B=E5=85=AD=E7=BA=A7=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=90=8C=E6=AD=A5=EF=BC=88=E5=BE=85=E4=BC=98=E5=8C=96?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/config/ThreadPoolManager.java | 39 +++++++++++++ .../controller/Cet4MajorController.java | 5 ++ .../jeecg/modules/runnable/CetDataAsync.java | 55 +++++++++++++++++++ .../modules/service/ICet4MajorService.java | 1 + .../jeecg/modules/service/ICet_6Service.java | 1 + .../service/impl/Cet4MajorServiceImpl.java | 35 ++++++++++++ .../service/impl/Cet_6ServiceImpl.java | 52 +++++++++--------- 7 files changed, 162 insertions(+), 26 deletions(-) create mode 100644 jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/config/ThreadPoolManager.java create mode 100644 jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/runnable/CetDataAsync.java diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/config/ThreadPoolManager.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/config/ThreadPoolManager.java new file mode 100644 index 00000000..171995de --- /dev/null +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/config/ThreadPoolManager.java @@ -0,0 +1,39 @@ +package org.jeecg.modules.config; + +import java.util.concurrent.Executors; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +/** + * Created with IntelliJ IDEA. + * + * @Author: Cool + * @Date: 2024/10/24/13:54 + * @Description: 线程池管理 + */ +public class ThreadPoolManager { + // 单例实例,使用 volatile 关键字 + private static volatile ThreadPoolExecutor executor; + + private ThreadPoolManager() {} + + public static ThreadPoolExecutor getExecutor() { + if (executor == null) { + synchronized (ThreadPoolManager.class) { + if (executor == null) { + executor = new ThreadPoolExecutor( + 10, + 20, + 60L, + TimeUnit.SECONDS, + new LinkedBlockingQueue<>(100), + Executors.defaultThreadFactory(), + new ThreadPoolExecutor.AbortPolicy() + ); + } + } + } + return executor; + } +} diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/Cet4MajorController.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/Cet4MajorController.java index 9666d164..6fcbf672 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/Cet4MajorController.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/Cet4MajorController.java @@ -174,4 +174,9 @@ public class Cet4MajorController extends JeecgController asyncData() { + return cet4MajorService.asyncData(); + } } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/runnable/CetDataAsync.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/runnable/CetDataAsync.java new file mode 100644 index 00000000..54909ece --- /dev/null +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/runnable/CetDataAsync.java @@ -0,0 +1,55 @@ +package org.jeecg.modules.runnable; + +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import org.jeecg.modules.entity.Cet4_major; +import org.jeecg.modules.entity.Cet_4; +import org.jeecg.modules.entity.Cet_6; +import org.jeecg.modules.service.ICet4MajorService; +import org.jeecg.modules.service.ICet_4Service; +import org.jeecg.modules.service.ICet_6Service; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * Created with IntelliJ IDEA. + * + * @Author: Cool + * @Date: 2024/10/24/14:38 + * @Description: + */ +@Component +public class CetDataAsync implements Runnable { + + private final ICet_6Service cet6Service; + private final ICet_4Service cet4Service; + private final ICet4MajorService cet4MajorService; + + // 构造函数注入 + @Autowired + public CetDataAsync(ICet_6Service cet6Service, ICet_4Service cet4Service, ICet4MajorService cet4MajorService) { + this.cet6Service = cet6Service; + this.cet4Service = cet4Service; + this.cet4MajorService = cet4MajorService; + } + + @Override + public void run() { + List majorList = cet4MajorService.list(); + majorList.forEach(e -> { + LambdaUpdateWrapper cet4Wrapper = new LambdaUpdateWrapper<>(); + LambdaUpdateWrapper cet6Wrapper = new LambdaUpdateWrapper<>(); + cet4Wrapper.eq(Cet_4::getId, e.getId()) + .set(Cet_4::getMajorname, e.getMajorname()) + .set(Cet_4::getState, e.getState()) + .set(Cet_4::getLevel, e.getLevel()); + cet6Wrapper.eq(Cet_6::getId, e.getId()) + .set(Cet_6::getMajorname, e.getMajorname()) + .set(Cet_6::getState, e.getState()) + .set(Cet_6::getLevel, e.getLevel()); + cet4Service.update(cet4Wrapper); + cet6Service.update(cet6Wrapper); + }); + } +} diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICet4MajorService.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICet4MajorService.java index e12e3d25..5e55ef81 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICet4MajorService.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICet4MajorService.java @@ -21,4 +21,5 @@ public interface ICet4MajorService extends IService { Result importStudentData(HttpServletRequest request); + Result asyncData(); } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICet_6Service.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICet_6Service.java index 3b2f13c2..232402af 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICet_6Service.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICet_6Service.java @@ -16,6 +16,7 @@ public interface ICet_6Service extends IService { Result getRate(Cet_6 data); Result getGrateRate(); + Result loadImportDataList(); } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet4MajorServiceImpl.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet4MajorServiceImpl.java index a3d20f30..4a75b2cc 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet4MajorServiceImpl.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet4MajorServiceImpl.java @@ -5,13 +5,27 @@ import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.alibaba.excel.support.ExcelTypeEnum; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import org.checkerframework.checker.units.qual.A; import org.jeecg.common.api.vo.Result; +import org.jeecg.modules.config.ThreadPoolManager; +import org.jeecg.modules.controller.Cet4MajorController; import org.jeecg.modules.entity.Cet4_major; +import org.jeecg.modules.entity.Cet_4; +import org.jeecg.modules.entity.Cet_6; import org.jeecg.modules.mapper.Cet4_majorMapper; import org.jeecg.modules.pojo.CetStudent; +import org.jeecg.modules.runnable.CetDataAsync; import org.jeecg.modules.service.ICet4MajorService; +import org.jeecg.modules.service.ICet_4Service; +import org.jeecg.modules.service.ICet_6Service; import org.jeecg.modules.utils.ExportUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -23,6 +37,9 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.sql.Timestamp; import java.util.*; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -36,6 +53,14 @@ public class Cet4MajorServiceImpl extends ServiceImpl downloadTemplate(HttpServletResponse response) { try { @@ -144,4 +169,14 @@ public class Cet4MajorServiceImpl extends ServiceImpl asyncData() { + //异步同步数据 + ThreadPoolExecutor executor = ThreadPoolManager.getExecutor(); + executor.execute(new CetDataAsync(cet6Service,cet4Service,cet4MajorService)); + return Result.ok(); + } } + + diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_6ServiceImpl.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_6ServiceImpl.java index 20396d9d..832a0039 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_6ServiceImpl.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_6ServiceImpl.java @@ -33,9 +33,9 @@ import java.util.stream.Collectors; public class Cet_6ServiceImpl extends ServiceImpl implements ICet_6Service { @Resource Cet_6Mapper cet6Mapper; - - @Autowired - ICet4MajorService cet4MajorService; +// +// @Autowired +// ICet4MajorService cet4MajorService; @Autowired Cet_4ServiceImpl cet4Service; @Autowired @@ -79,29 +79,29 @@ public class Cet_6ServiceImpl extends ServiceImpl implements @Override public Result getGrateRate() { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(Cet_6::getEntrydate, "2020"); - List list1 = list(wrapper); - Set allStudent1 = list1.stream().map(Cet_6::getId).collect(Collectors.toSet()); - log.info("六级总考试人数,{}", allStudent1.size()); - wrapper.ge(Cet_6::getResult, 425); - List list = list(wrapper); - log.info("六级总通过人数,{}", list.size()); - - Set passStudent = list.stream().map(Cet_6::getId).collect(Collectors.toSet()); - log.info("六级通过人数,{}", passStudent.size()); - LambdaQueryWrapper majorWrapper = new LambdaQueryWrapper<>(); - majorWrapper.eq(Cet4_major::getEntrydate, "2020").eq(Cet4_major::getState, "在校"); - List majorList = cet4MajorService.list(majorWrapper); - Set allStudent = majorList.stream().map(Cet4_major::getId).collect(Collectors.toSet()); - log.info("所有学生人数{}", allStudent.size()); - log.info("通过率,{}", (double) passStudent.size() / allStudent.size()); - LambdaQueryWrapper cet4Wrapper = new LambdaQueryWrapper<>(); - cet4Wrapper.eq(Cet_4::getEntrydate, "2020"); - cet4Wrapper.ge(Cet_4::getResult, 425); - List cet4PassedStudent = cet4Service.list(cet4Wrapper); - Set cet4AllPassedStudent = cet4PassedStudent.stream().map(Cet_4::getId).collect(Collectors.toSet()); - log.info("四级通过人数,{}", cet4AllPassedStudent.size()); +// LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); +// wrapper.eq(Cet_6::getEntrydate, "2020"); +// List list1 = list(wrapper); +// Set allStudent1 = list1.stream().map(Cet_6::getId).collect(Collectors.toSet()); +// log.info("六级总考试人数,{}", allStudent1.size()); +// wrapper.ge(Cet_6::getResult, 425); +// List list = list(wrapper); +// log.info("六级总通过人数,{}", list.size()); +// +// Set passStudent = list.stream().map(Cet_6::getId).collect(Collectors.toSet()); +// log.info("六级通过人数,{}", passStudent.size()); +// LambdaQueryWrapper majorWrapper = new LambdaQueryWrapper<>(); +// majorWrapper.eq(Cet4_major::getEntrydate, "2020").eq(Cet4_major::getState, "在校"); +// List majorList = cet4MajorService.list(majorWrapper); +// Set allStudent = majorList.stream().map(Cet4_major::getId).collect(Collectors.toSet()); +// log.info("所有学生人数{}", allStudent.size()); +// log.info("通过率,{}", (double) passStudent.size() / allStudent.size()); +// LambdaQueryWrapper cet4Wrapper = new LambdaQueryWrapper<>(); +// cet4Wrapper.eq(Cet_4::getEntrydate, "2020"); +// cet4Wrapper.ge(Cet_4::getResult, 425); +// List cet4PassedStudent = cet4Service.list(cet4Wrapper); +// Set cet4AllPassedStudent = cet4PassedStudent.stream().map(Cet_4::getId).collect(Collectors.toSet()); +// log.info("四级通过人数,{}", cet4AllPassedStudent.size()); return null; } From ba1c0d0b6ca41d10ab22f4acd1ce04da46e282a2 Mon Sep 17 00:00:00 2001 From: Cool <747682928@qq.com> Date: Thu, 24 Oct 2024 18:33:47 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E5=9B=9B=E5=85=AD=E7=BA=A7=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=90=8C=E6=AD=A5,=E4=BF=AE=E6=94=B9=E4=BA=86?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E5=AD=97=E6=AE=B5=EF=BC=8C=E5=B0=86?= =?UTF-8?q?=E5=AD=A6=E5=8F=B7=E4=BB=8Eid=E6=94=B9=E4=B8=BAcode=EF=BC=8C?= =?UTF-8?q?=E7=8E=B0id=E4=B8=BA=E8=A1=A8=E5=86=85=E8=87=AA=E5=A2=9E?= =?UTF-8?q?=E4=B8=BB=E9=94=AEid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CetDataImportController.java | 2 +- .../org/jeecg/modules/entity/Cet4_major.java | 2 +- .../java/org/jeecg/modules/entity/Cet_4.java | 8 ++- .../org/jeecg/modules/entity/Cet_4old.java | 9 ++- .../java/org/jeecg/modules/entity/Cet_6.java | 8 ++- .../org/jeecg/modules/pojo/CetStudent.java | 4 +- .../jeecg/modules/runnable/CetDataAsync.java | 60 ++++++++++++++----- .../service/impl/CenterServiceImpl.java | 24 ++++---- .../service/impl/Cet4MajorServiceImpl.java | 12 +--- .../service/impl/Cet_4ServiceImpl.java | 24 ++++---- .../service/impl/Cet_6ServiceImpl.java | 52 ++++++++-------- 11 files changed, 118 insertions(+), 87 deletions(-) diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetDataImportController.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetDataImportController.java index ab80a41f..c0e1ebd5 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetDataImportController.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetDataImportController.java @@ -35,7 +35,7 @@ public class CetDataImportController { /** - * @param file dbf文件 + * @param fileContent dbf文件 * @param batch 考试批次 * @param level cet等级(cet4/cet6) * @Author Cool diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/Cet4_major.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/Cet4_major.java index fa95f7b9..f052c969 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/Cet4_major.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/Cet4_major.java @@ -30,7 +30,7 @@ public class Cet4_major implements Serializable { @TableId(type = IdType.ASSIGN_ID) @Excel(name = "学号", width = 15) @ApiModelProperty(value = "id") - private String id; + private String code; /**name*/ @Excel(name = "姓名", width = 15) @ApiModelProperty(value = "name") diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/Cet_4.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/Cet_4.java index 156b16e5..82b1b657 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/Cet_4.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/Cet_4.java @@ -4,7 +4,6 @@ import java.io.Serializable; import java.util.Date; import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -31,6 +30,10 @@ import lombok.experimental.Accessors; public class Cet_4 implements Serializable { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "主键id") + @TableId(type = IdType.AUTO) + private Integer id; + /**学生姓名*/ @Excel(name = "学生姓名", width = 15) @AttributeName(4) @@ -48,9 +51,8 @@ public class Cet_4 implements Serializable { private Integer result; /**学生学号*/ @AttributeName(19) - @TableId(type = IdType.ASSIGN_ID) @ApiModelProperty(value = "学生学号") - private String id; + private String code; /**考试批次*/ @Excel(name = "考试批次", width = 15, format = "yyyy-MM-dd") @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/Cet_4old.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/Cet_4old.java index 952090ab..863d8b62 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/Cet_4old.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/Cet_4old.java @@ -14,6 +14,12 @@ import java.util.Date; @Data @TableName("cet_4old") public class Cet_4old { + + + @ApiModelProperty(value = "主键id") + @TableId(type = IdType.AUTO) + private Integer id; + /** * 学生姓名 */ @@ -35,9 +41,8 @@ public class Cet_4old { /** * 学生学号 */ - @TableId(type = IdType.ASSIGN_ID) @ApiModelProperty(value = "学生学号") - private String id; + private String code; /** * 考试批次 */ diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/Cet_6.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/Cet_6.java index 879c0771..08cc7655 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/Cet_6.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/Cet_6.java @@ -30,6 +30,11 @@ import lombok.experimental.Accessors; public class Cet_6 implements Serializable { private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键id") + @TableId(type = IdType.AUTO) + private Integer id; + /** * 学生姓名 */ @@ -55,9 +60,8 @@ public class Cet_6 implements Serializable { * 学生学号 */ @AttributeName(19) - @TableId(type = IdType.ASSIGN_ID) @ApiModelProperty(value = "学生学号") - private String id; + private String code; /** * 考试批次 */ diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/pojo/CetStudent.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/pojo/CetStudent.java index 153d4eca..f9eeb8bf 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/pojo/CetStudent.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/pojo/CetStudent.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import org.jeecgframework.poi.excel.annotation.Excel; /** * Created with IntelliJ IDEA. @@ -20,10 +19,9 @@ public class CetStudent { /** * id */ - @TableId(type = IdType.ASSIGN_ID) @ExcelProperty("学号") @ApiModelProperty(value = "id") - private String id; + private String code; /** * name */ diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/runnable/CetDataAsync.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/runnable/CetDataAsync.java index 54909ece..0aa68e24 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/runnable/CetDataAsync.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/runnable/CetDataAsync.java @@ -1,6 +1,7 @@ package org.jeecg.modules.runnable; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import lombok.extern.slf4j.Slf4j; import org.jeecg.modules.entity.Cet4_major; import org.jeecg.modules.entity.Cet_4; import org.jeecg.modules.entity.Cet_6; @@ -9,8 +10,10 @@ import org.jeecg.modules.service.ICet_4Service; import org.jeecg.modules.service.ICet_6Service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; /** * Created with IntelliJ IDEA. @@ -19,7 +22,7 @@ import java.util.List; * @Date: 2024/10/24/14:38 * @Description: */ -@Component +@Slf4j public class CetDataAsync implements Runnable { private final ICet_6Service cet6Service; @@ -27,7 +30,6 @@ public class CetDataAsync implements Runnable { private final ICet4MajorService cet4MajorService; // 构造函数注入 - @Autowired public CetDataAsync(ICet_6Service cet6Service, ICet_4Service cet4Service, ICet4MajorService cet4MajorService) { this.cet6Service = cet6Service; this.cet4Service = cet4Service; @@ -35,21 +37,49 @@ public class CetDataAsync implements Runnable { } @Override + @Transactional(rollbackFor = Exception.class) public void run() { + long start = System.currentTimeMillis(); List majorList = cet4MajorService.list(); + List allCet4 = cet4Service.list(); + List allCet6 = cet6Service.list(); + List cet4List = new ArrayList<>(); + List cet6List = new ArrayList<>(); + Map> cet4Map = allCet4.stream().collect(Collectors.groupingBy(Cet_4::getCode)); + Map> cet6Map = allCet6.stream().collect(Collectors.groupingBy(Cet_6::getCode)); majorList.forEach(e -> { - LambdaUpdateWrapper cet4Wrapper = new LambdaUpdateWrapper<>(); - LambdaUpdateWrapper cet6Wrapper = new LambdaUpdateWrapper<>(); - cet4Wrapper.eq(Cet_4::getId, e.getId()) - .set(Cet_4::getMajorname, e.getMajorname()) - .set(Cet_4::getState, e.getState()) - .set(Cet_4::getLevel, e.getLevel()); - cet6Wrapper.eq(Cet_6::getId, e.getId()) - .set(Cet_6::getMajorname, e.getMajorname()) - .set(Cet_6::getState, e.getState()) - .set(Cet_6::getLevel, e.getLevel()); - cet4Service.update(cet4Wrapper); - cet6Service.update(cet6Wrapper); + List cet4Collect = cet4Map.getOrDefault(e.getCode(), Collections.emptyList()); + List cet6Collect = cet6Map.getOrDefault(e.getCode(), Collections.emptyList()); + cet4Collect.forEach(c -> { + //填充数据 + c.setMajorname(e.getMajorname()); + c.setLevel(e.getLevel()); + c.setState(e.getState()); + }); + cet6Collect.forEach(c -> { + //填充数据 + c.setMajorname(e.getMajorname()); + c.setLevel(e.getLevel()); + c.setState(e.getState()); + }); + cet4List.addAll(cet4Collect); + cet6List.addAll(cet6Collect); + if (cet4List.size() >= 500) { + cet4Service.updateBatchById(cet4List); + cet4List.clear(); + } + if (cet6List.size() >= 500) { + cet6Service.updateBatchById(cet6List); + cet6List.clear(); + } }); + //将剩下的不足500的提交 + if (!cet4List.isEmpty()) { + cet4Service.updateBatchById(cet4List); + } + if (!cet6List.isEmpty()) { + cet6Service.updateBatchById(cet6List); + } + log.info("同步数据用时:{}",System.currentTimeMillis()-start); } } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CenterServiceImpl.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CenterServiceImpl.java index e4a8efd1..dc6b5ada 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CenterServiceImpl.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CenterServiceImpl.java @@ -260,35 +260,35 @@ public class CenterServiceImpl extends ServiceImpl implement Cet_4QW.eq(Cet_4::getEntrydate, entryDate).eq(Cet_4::getBatch, batchList.get(i)); //查询该年级的全校在籍学生 Cet4_majorQW.clear(); - Cet4_majorQW.select(Cet4_major::getId).eq(Cet4_major::getEntrydate, entryDate).eq(Cet4_major::getState, "在校"); + Cet4_majorQW.select(Cet4_major::getCode).eq(Cet4_major::getEntrydate, entryDate).eq(Cet4_major::getState, "在校"); allStudent = cet4_majorMapper.selectCount(Cet4_majorQW); } else if (college.equals("专升本")) { totalName = "全校"; Cet_4QW.eq(Cet_4::getLevel, college).eq(Cet_4::getEntrydate, entryDate).eq(Cet_4::getBatch, batchList.get(i)); //查询该年级的专升本在籍学生 Cet4_majorQW.clear(); - Cet4_majorQW.select(Cet4_major::getId).eq(Cet4_major::getLevel, college).eq(Cet4_major::getState, "在校").eq(Cet4_major::getEntrydate, entryDate); + Cet4_majorQW.select(Cet4_major::getCode).eq(Cet4_major::getLevel, college).eq(Cet4_major::getState, "在校").eq(Cet4_major::getEntrydate, entryDate); allStudent = cet4_majorMapper.selectCount(Cet4_majorQW); } else if (major.equals("")) { totalName = "学院"; Cet_4QW.eq(Cet_4::getCollege, college).eq(Cet_4::getEntrydate, entryDate).eq(Cet_4::getBatch, batchList.get(i)); //查询该年级的学院在籍学生 Cet4_majorQW.clear(); - Cet4_majorQW.select(Cet4_major::getId).eq(Cet4_major::getCollege, college).eq(Cet4_major::getState, "在校").eq(Cet4_major::getEntrydate, entryDate); + Cet4_majorQW.select(Cet4_major::getCode).eq(Cet4_major::getCollege, college).eq(Cet4_major::getState, "在校").eq(Cet4_major::getEntrydate, entryDate); allStudent = cet4_majorMapper.selectCount(Cet4_majorQW); } else { totalName = "专业"; //查询该年级的学院专业在籍学生 Cet_4QW.eq(Cet_4::getCollege, college).eq(Cet_4::getMajorname, major).eq(Cet_4::getEntrydate, entryDate).eq(Cet_4::getBatch, batchList.get(i)); Cet4_majorQW.clear(); - Cet4_majorQW.select(Cet4_major::getId).eq(Cet4_major::getCollege, college).eq(Cet4_major::getState, "在校").eq(Cet4_major::getMajorname, major).eq(Cet4_major::getEntrydate, entryDate); + Cet4_majorQW.select(Cet4_major::getCode).eq(Cet4_major::getCollege, college).eq(Cet4_major::getState, "在校").eq(Cet4_major::getMajorname, major).eq(Cet4_major::getEntrydate, entryDate); allStudent = cet4_majorMapper.selectCount(Cet4_majorQW); } List> Cet_4eEntrydate = cet4Mapper.selectMaps(Cet_4QW); if (!Cet_4eEntrydate.isEmpty()) { for (Map map : Cet_4eEntrydate) { - String str = (String) map.get("id"); + String str = (String) map.get("code"); if ((int) map.get("result") >= 425) { attendMap4.put(str, 1); } else { @@ -366,25 +366,25 @@ public class CenterServiceImpl extends ServiceImpl implement List list = cet4oldMapper.selectList(null); // 准备id列表,用于批量查询 - List idList = list.stream().map(Cet_4old::getId).collect(Collectors.toList()); + List idList = list.stream().map(Cet_4old::getCode).collect(Collectors.toList()); // 批量查询专业信息 - cet4_majorQW.in(Cet4_major::getId, idList); - cet4_majorQW.select(Cet4_major::getId, Cet4_major::getMajorname, Cet4_major::getLevel, Cet4_major::getState, Cet4_major::getEntrydate); + cet4_majorQW.in(Cet4_major::getCode, idList); + cet4_majorQW.select(Cet4_major::getCode, Cet4_major::getMajorname, Cet4_major::getLevel, Cet4_major::getState, Cet4_major::getEntrydate); List> mapList = cet4_majorMapper.selectMaps(cet4_majorQW); // 将专业信息写入学生对象 Map> idToMap = mapList.stream().collect(Collectors.toMap( - map -> map.get("id"), + map -> map.get("code"), Function.identity() )); int temp = 0; List cet4List = new ArrayList<>(); //以当前所在年级为入学年份 for (Cet_4old cet4old : list) { - Map map_major = idToMap.get(cet4old.getId()); + Map map_major = idToMap.get(cet4old.getCode()); Cet_4 cet4 = new Cet_4(); - cet4.setId(cet4old.getId()); + cet4.setCode(cet4old.getCode()); cet4.setName(cet4old.getName()); cet4.setCollege(cet4old.getCollege()); cet4.setResult(cet4old.getResult()); @@ -397,7 +397,7 @@ public class CenterServiceImpl extends ServiceImpl implement cet4.setLevel((String) map_major.get("level")); cet4.setState((String) map_major.get("state")); cet4List.add(cet4); - System.out.println(temp++ + ",id:" + cet4.getId() + " ,majorname:" + cet4.getMajorname() + " ,level:" + cet4.getLevel() + " ,state:" + cet4.getState()); + System.out.println(temp++ + ",id:" + cet4.getCode() + " ,majorname:" + cet4.getMajorname() + " ,level:" + cet4.getLevel() + " ,state:" + cet4.getState()); } System.out.println(cet4List.size()); // 批量更新 diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet4MajorServiceImpl.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet4MajorServiceImpl.java index 4a75b2cc..d9e04809 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet4MajorServiceImpl.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet4MajorServiceImpl.java @@ -5,17 +5,10 @@ import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.alibaba.excel.support.ExcelTypeEnum; import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import org.checkerframework.checker.units.qual.A; import org.jeecg.common.api.vo.Result; import org.jeecg.modules.config.ThreadPoolManager; -import org.jeecg.modules.controller.Cet4MajorController; import org.jeecg.modules.entity.Cet4_major; -import org.jeecg.modules.entity.Cet_4; -import org.jeecg.modules.entity.Cet_6; import org.jeecg.modules.mapper.Cet4_majorMapper; import org.jeecg.modules.pojo.CetStudent; import org.jeecg.modules.runnable.CetDataAsync; @@ -25,7 +18,6 @@ import org.jeecg.modules.service.ICet_6Service; import org.jeecg.modules.utils.ExportUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; -import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -37,9 +29,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.sql.Timestamp; import java.util.*; -import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -125,7 +115,7 @@ public class Cet4MajorServiceImpl extends ServiceImpl implements // 在循环开始之前,获取所有学院的在籍学生数量 LambdaQueryWrapper allStudentQW = new LambdaQueryWrapper<>(); - allStudentQW.select(Cet4_major::getCollege, Cet4_major::getId).eq(Cet4_major::getState, "在校").eq(Cet4_major::getEntrydate, entryDate); + allStudentQW.select(Cet4_major::getCollege, Cet4_major::getCode).eq(Cet4_major::getState, "在校").eq(Cet4_major::getEntrydate, entryDate); List> allStudentList = cet4_majorMapper.selectMaps(allStudentQW); Map allStudentMap = allStudentList.stream().collect(Collectors.groupingBy(map -> (String) map.get("college"), Collectors.counting())); // 在循环开始之前,获取所有批次的数据 LambdaQueryWrapper allBatchQW = new LambdaQueryWrapper<>(); - allBatchQW.select(Cet_4::getCollege, Cet_4::getId, Cet_4::getResult).eq(Cet_4::getEntrydate, entryDate).in(Cet_4::getBatch, batchList); + allBatchQW.select(Cet_4::getCollege, Cet_4::getCode, Cet_4::getResult).eq(Cet_4::getEntrydate, entryDate).in(Cet_4::getBatch, batchList); List> allBatchList = cet4Mapper.selectMaps(allBatchQW); Map>> allBatchMap = allBatchList.stream().collect(Collectors.groupingBy(map -> (String) map.get("college"))); @@ -257,7 +257,7 @@ public class Cet_4ServiceImpl extends ServiceImpl implements //一次性获取所有批次的数据 List> Cet_4eEntrydate = allBatchMap.get(collegeName); for (Map map : Cet_4eEntrydate) { - String str = (String) map.get("id"); + String str = (String) map.get("code"); if ((int) map.get("result") >= 425) { attendMap4.put(str, 1); } else { @@ -341,12 +341,12 @@ public class Cet_4ServiceImpl extends ServiceImpl implements List collegeSet = cet4_MajorMapper.selectObjs(cet4MajorQW); // 在循环开始之前,获取该学院该年级的学生数量 LambdaQueryWrapper allStudentQW = new LambdaQueryWrapper<>(); - allStudentQW.select(Cet4_major::getId).eq(Cet4_major::getState, "在校").eq(Cet4_major::getEntrydate, entryDate).eq(Cet4_major::getCollege, collegeName); + allStudentQW.select(Cet4_major::getCode).eq(Cet4_major::getState, "在校").eq(Cet4_major::getEntrydate, entryDate).eq(Cet4_major::getCollege, collegeName); //获取该学院在籍学生数量 long allStudent = cet4_majorMapper.selectCount(allStudentQW); // 在循环开始之前,获取该年级,学院所有批次的数据 LambdaQueryWrapper allBatchQW = new LambdaQueryWrapper<>(); - allBatchQW.select(Cet_4::getCollege, Cet_4::getId, Cet_4::getResult).eq(Cet_4::getEntrydate, entryDate).eq(Cet_4::getCollege, collegeName).in(Cet_4::getBatch, batchList); + allBatchQW.select(Cet_4::getCollege, Cet_4::getCode, Cet_4::getResult).eq(Cet_4::getEntrydate, entryDate).eq(Cet_4::getCollege, collegeName).in(Cet_4::getBatch, batchList); //获取该学院该年级所有批次的数据 List> Cet_4eEntrydate = cet4Mapper.selectMaps(allBatchQW); if (collegeSet.contains(collegeName)) { @@ -354,7 +354,7 @@ public class Cet_4ServiceImpl extends ServiceImpl implements Map attendMap4 = new HashMap<>(); JSONObject json = new JSONObject(); for (Map map : Cet_4eEntrydate) { - String str = (String) map.get("id"); + String str = (String) map.get("code"); if ((int) map.get("result") >= 425) { attendMap4.put(str, 1); } else { @@ -442,7 +442,7 @@ public class Cet_4ServiceImpl extends ServiceImpl implements Cet_4QW.eq(Cet_4::getCollege, colleges.get(0)).eq(Cet_4::getMajorname, major).eq(Cet_4::getEntrydate, entryDate).in(Cet_4::getBatch, batchList); List> Cet_4eEntrydate = cet4Mapper.selectMaps(Cet_4QW); for (Map map : Cet_4eEntrydate) { - String str = (String) map.get("id"); + String str = (String) map.get("code"); if ((int) map.get("result") >= 425) { attendMap4.put(str, 1); } else { @@ -507,7 +507,7 @@ public class Cet_4ServiceImpl extends ServiceImpl implements Cet_4QW.eq(Cet_4::getCollege, colleges.get(0)).eq(Cet_4::getMajorname, major).eq(Cet_4::getEntrydate, entryDate).in(Cet_4::getBatch, batchList); List> Cet_4eEntrydate = cet4Mapper.selectMaps(Cet_4QW); for (Map map : Cet_4eEntrydate) { - String str = (String) map.get("id"); + String str = (String) map.get("code"); if ((int) map.get("result") >= 425) { attendMap4.put(str, 1); } else { @@ -593,7 +593,7 @@ public class Cet_4ServiceImpl extends ServiceImpl implements String currentEntryDate = (String) Date.get("entrydate"); for (Map map : maps) { String studentEntryDate = (String) map.get("entrydate"); - String str = (String) map.get("id"); + String str = (String) map.get("code"); // 仅处理当前 entryDate 下的学生数据 if (currentEntryDate.equals(studentEntryDate)) { if ((int) map.get("result") >= 425) { @@ -657,14 +657,14 @@ public class Cet_4ServiceImpl extends ServiceImpl implements @Override public Result getDataByStudent(JSONObject jsonObject) { String name = jsonObject.getString("name"); - Integer id = jsonObject.getInteger("id"); - if (name == null || id == null) { + Integer code = jsonObject.getInteger("code"); + if (name == null || code == null) { return Result.error("请填写完整的参数"); } JSONObject result = new JSONObject(); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Cet_4::getName, name) - .eq(Cet_4::getId, id); + .eq(Cet_4::getCode, code); List list = list(wrapper); result.put("results", list); return Result.ok(result); diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_6ServiceImpl.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_6ServiceImpl.java index 832a0039..1982e2b7 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_6ServiceImpl.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/Cet_6ServiceImpl.java @@ -14,6 +14,7 @@ import org.jeecg.modules.service.CenterService; import org.jeecg.modules.service.ICet4MajorService; import org.jeecg.modules.service.ICet_6Service; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -34,8 +35,9 @@ public class Cet_6ServiceImpl extends ServiceImpl implements @Resource Cet_6Mapper cet6Mapper; // -// @Autowired -// ICet4MajorService cet4MajorService; + @Autowired + @Lazy + ICet4MajorService cet4MajorService; @Autowired Cet_4ServiceImpl cet4Service; @Autowired @@ -79,29 +81,29 @@ public class Cet_6ServiceImpl extends ServiceImpl implements @Override public Result getGrateRate() { -// LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); -// wrapper.eq(Cet_6::getEntrydate, "2020"); -// List list1 = list(wrapper); -// Set allStudent1 = list1.stream().map(Cet_6::getId).collect(Collectors.toSet()); -// log.info("六级总考试人数,{}", allStudent1.size()); -// wrapper.ge(Cet_6::getResult, 425); -// List list = list(wrapper); -// log.info("六级总通过人数,{}", list.size()); -// -// Set passStudent = list.stream().map(Cet_6::getId).collect(Collectors.toSet()); -// log.info("六级通过人数,{}", passStudent.size()); -// LambdaQueryWrapper majorWrapper = new LambdaQueryWrapper<>(); -// majorWrapper.eq(Cet4_major::getEntrydate, "2020").eq(Cet4_major::getState, "在校"); -// List majorList = cet4MajorService.list(majorWrapper); -// Set allStudent = majorList.stream().map(Cet4_major::getId).collect(Collectors.toSet()); -// log.info("所有学生人数{}", allStudent.size()); -// log.info("通过率,{}", (double) passStudent.size() / allStudent.size()); -// LambdaQueryWrapper cet4Wrapper = new LambdaQueryWrapper<>(); -// cet4Wrapper.eq(Cet_4::getEntrydate, "2020"); -// cet4Wrapper.ge(Cet_4::getResult, 425); -// List cet4PassedStudent = cet4Service.list(cet4Wrapper); -// Set cet4AllPassedStudent = cet4PassedStudent.stream().map(Cet_4::getId).collect(Collectors.toSet()); -// log.info("四级通过人数,{}", cet4AllPassedStudent.size()); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Cet_6::getEntrydate, "2020"); + List list1 = list(wrapper); + Set allStudent1 = list1.stream().map(Cet_6::getCode).collect(Collectors.toSet()); + log.info("六级总考试人数,{}", allStudent1.size()); + wrapper.ge(Cet_6::getResult, 425); + List list = list(wrapper); + log.info("六级总通过人数,{}", list.size()); + + Set passStudent = list.stream().map(Cet_6::getCode).collect(Collectors.toSet()); + log.info("六级通过人数,{}", passStudent.size()); + LambdaQueryWrapper majorWrapper = new LambdaQueryWrapper<>(); + majorWrapper.eq(Cet4_major::getEntrydate, "2020").eq(Cet4_major::getState, "在校"); + List majorList = cet4MajorService.list(majorWrapper); + Set allStudent = majorList.stream().map(Cet4_major::getCode).collect(Collectors.toSet()); + log.info("所有学生人数{}", allStudent.size()); + log.info("通过率,{}", (double) passStudent.size() / allStudent.size()); + LambdaQueryWrapper cet4Wrapper = new LambdaQueryWrapper<>(); + cet4Wrapper.eq(Cet_4::getEntrydate, "2020"); + cet4Wrapper.ge(Cet_4::getResult, 425); + List cet4PassedStudent = cet4Service.list(cet4Wrapper); + Set cet4AllPassedStudent = cet4PassedStudent.stream().map(Cet_4::getCode).collect(Collectors.toSet()); + log.info("四级通过人数,{}", cet4AllPassedStudent.size()); return null; }