Merge remote-tracking branch 'refs/remotes/upstream/dev' into dev

This commit is contained in:
YuNan 2024-10-24 18:34:08 +08:00
commit 17f9faa9f8
20 changed files with 725 additions and 164 deletions

View File

@ -32,6 +32,11 @@
<scope>runtime</scope> <scope>runtime</scope>
</dependency>--> </dependency>-->
<!--达梦数据库 --> <!--达梦数据库 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.1.0</version>
</dependency>
<dependency> <dependency>
<groupId>com.dameng</groupId> <groupId>com.dameng</groupId>
<artifactId>Dm8JdbcDriver18</artifactId> <artifactId>Dm8JdbcDriver18</artifactId>

View File

@ -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;
}
}

View File

@ -0,0 +1,182 @@
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<Cet4_major, ICet4MajorService> {
@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<IPage<Cet4_major>> queryPageList(Cet4_major cet4Major,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<Cet4_major> queryWrapper = QueryGenerator.initQueryWrapper(cet4Major, req.getParameterMap());
Page<Cet4_major> page = new Page<Cet4_major>(pageNo, pageSize);
IPage<Cet4_major> 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<String> 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<String> 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<String> 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<String> 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<Cet4_major> 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();
}
@RequestMapping("asyncData")
@ApiOperation("同步数据")
public Result<?> asyncData() {
return cet4MajorService.asyncData();
}
}

View File

@ -35,7 +35,7 @@ public class CetDataImportController {
/** /**
* @param file dbf文件 * @param fileContent dbf文件
* @param batch 考试批次 * @param batch 考试批次
* @param level cet等级(cet4/cet6) * @param level cet等级(cet4/cet6)
* @Author Cool * @Author Cool

View File

@ -1,67 +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<Cet4_major, CetMajorServiceImpl> {
@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);
}
}

View File

@ -1,22 +1,78 @@
package org.jeecg.modules.entity; 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 com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; 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 @Data
@TableName("cet4_major") @TableName("cet4_major")
public class Cet4_major { @Accessors(chain = true)
private String id; @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 code;
/**name*/
@Excel(name = "姓名", width = 15)
@ApiModelProperty(value = "name")
private String name; private String name;
/**college*/
@Excel(name = "上课院系", width = 15)
@ApiModelProperty(value = "college")
private String 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 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; private String educate;
/**entrydate*/
@Excel(name = "当前所在级", width = 15)
@ApiModelProperty(value = "entrydate")
private String entrydate; private String entrydate;
/**campus*/
@Excel(name = "校区", width = 15)
@ApiModelProperty(value = "campus")
private String campus; private String campus;
/**state*/
@Excel(name = "在校状态", width = 15)
@ApiModelProperty(value = "state")
private String state; private String state;
/**level*/
@Excel(name = "培养层次", width = 15)
@ApiModelProperty(value = "level")
private String level; private String level;
/**category*/
@Excel(name = "学生类别", width = 15)
@ApiModelProperty(value = "category")
private String category; private String category;
} }

View File

@ -4,7 +4,6 @@ import java.io.Serializable;
import java.util.Date; import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
@ -31,6 +30,10 @@ import lombok.experimental.Accessors;
public class Cet_4 implements Serializable { public class Cet_4 implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键id")
@TableId(type = IdType.AUTO)
private Integer id;
/**学生姓名*/ /**学生姓名*/
@Excel(name = "学生姓名", width = 15) @Excel(name = "学生姓名", width = 15)
@AttributeName(4) @AttributeName(4)
@ -48,9 +51,8 @@ public class Cet_4 implements Serializable {
private Integer result; private Integer result;
/**学生学号*/ /**学生学号*/
@AttributeName(19) @AttributeName(19)
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "学生学号") @ApiModelProperty(value = "学生学号")
private String id; private String code;
/**考试批次*/ /**考试批次*/
@Excel(name = "考试批次", width = 15, format = "yyyy-MM-dd") @Excel(name = "考试批次", width = 15, format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")

View File

@ -14,6 +14,12 @@ import java.util.Date;
@Data @Data
@TableName("cet_4old") @TableName("cet_4old")
public class 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 = "学生学号") @ApiModelProperty(value = "学生学号")
private String id; private String code;
/** /**
* 考试批次 * 考试批次
*/ */

View File

@ -30,6 +30,11 @@ import lombok.experimental.Accessors;
public class Cet_6 implements Serializable { public class Cet_6 implements Serializable {
private static final long serialVersionUID = 1L; 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) @AttributeName(19)
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "学生学号") @ApiModelProperty(value = "学生学号")
private String id; private String code;
/** /**
* 考试批次 * 考试批次
*/ */

View File

@ -0,0 +1,91 @@
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;
/**
* Created with IntelliJ IDEA.
*
* @Author: Cool
* @Date: 2024/10/23/20:35
* @Description:
*/
@Data
public class CetStudent {
/**
* id
*/
@ExcelProperty("学号")
@ApiModelProperty(value = "id")
private String code;
/**
* 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;
}

View File

@ -0,0 +1,85 @@
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;
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 org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
/**
* Created with IntelliJ IDEA.
*
* @Author: Cool
* @Date: 2024/10/24/14:38
* @Description:
*/
@Slf4j
public class CetDataAsync implements Runnable {
private final ICet_6Service cet6Service;
private final ICet_4Service cet4Service;
private final ICet4MajorService cet4MajorService;
// 构造函数注入
public CetDataAsync(ICet_6Service cet6Service, ICet_4Service cet4Service, ICet4MajorService cet4MajorService) {
this.cet6Service = cet6Service;
this.cet4Service = cet4Service;
this.cet4MajorService = cet4MajorService;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void run() {
long start = System.currentTimeMillis();
List<Cet4_major> majorList = cet4MajorService.list();
List<Cet_4> allCet4 = cet4Service.list();
List<Cet_6> allCet6 = cet6Service.list();
List<Cet_4> cet4List = new ArrayList<>();
List<Cet_6> cet6List = new ArrayList<>();
Map<String, List<Cet_4>> cet4Map = allCet4.stream().collect(Collectors.groupingBy(Cet_4::getCode));
Map<String, List<Cet_6>> cet6Map = allCet6.stream().collect(Collectors.groupingBy(Cet_6::getCode));
majorList.forEach(e -> {
List<Cet_4> cet4Collect = cet4Map.getOrDefault(e.getCode(), Collections.emptyList());
List<Cet_6> 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);
}
}

View File

@ -0,0 +1,25 @@
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<Cet4_major> {
Result<?> downloadTemplate(HttpServletResponse response);
Result<?> loadTable();
Result<?> importStudentData(HttpServletRequest request);
Result<?> asyncData();
}

View File

@ -16,6 +16,7 @@ public interface ICet_6Service extends IService<Cet_6> {
Result<JSONObject> getRate(Cet_6 data); Result<JSONObject> getRate(Cet_6 data);
Result<?> getGrateRate(); Result<?> getGrateRate();
Result<JSONObject> loadImportDataList(); Result<JSONObject> loadImportDataList();
} }

View File

@ -260,35 +260,35 @@ public class CenterServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implement
Cet_4QW.eq(Cet_4::getEntrydate, entryDate).eq(Cet_4::getBatch, batchList.get(i)); Cet_4QW.eq(Cet_4::getEntrydate, entryDate).eq(Cet_4::getBatch, batchList.get(i));
//查询该年级的全校在籍学生 //查询该年级的全校在籍学生
Cet4_majorQW.clear(); 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); allStudent = cet4_majorMapper.selectCount(Cet4_majorQW);
} else if (college.equals("专升本")) { } else if (college.equals("专升本")) {
totalName = "全校"; totalName = "全校";
Cet_4QW.eq(Cet_4::getLevel, college).eq(Cet_4::getEntrydate, entryDate).eq(Cet_4::getBatch, batchList.get(i)); Cet_4QW.eq(Cet_4::getLevel, college).eq(Cet_4::getEntrydate, entryDate).eq(Cet_4::getBatch, batchList.get(i));
//查询该年级的专升本在籍学生 //查询该年级的专升本在籍学生
Cet4_majorQW.clear(); 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); allStudent = cet4_majorMapper.selectCount(Cet4_majorQW);
} else if (major.equals("")) { } else if (major.equals("")) {
totalName = "学院"; totalName = "学院";
Cet_4QW.eq(Cet_4::getCollege, college).eq(Cet_4::getEntrydate, entryDate).eq(Cet_4::getBatch, batchList.get(i)); Cet_4QW.eq(Cet_4::getCollege, college).eq(Cet_4::getEntrydate, entryDate).eq(Cet_4::getBatch, batchList.get(i));
//查询该年级的学院在籍学生 //查询该年级的学院在籍学生
Cet4_majorQW.clear(); 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); allStudent = cet4_majorMapper.selectCount(Cet4_majorQW);
} else { } else {
totalName = "专业"; 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)); 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.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); allStudent = cet4_majorMapper.selectCount(Cet4_majorQW);
} }
List<Map<String, Object>> Cet_4eEntrydate = cet4Mapper.selectMaps(Cet_4QW); List<Map<String, Object>> Cet_4eEntrydate = cet4Mapper.selectMaps(Cet_4QW);
if (!Cet_4eEntrydate.isEmpty()) { if (!Cet_4eEntrydate.isEmpty()) {
for (Map<String, Object> map : Cet_4eEntrydate) { for (Map<String, Object> map : Cet_4eEntrydate) {
String str = (String) map.get("id"); String str = (String) map.get("code");
if ((int) map.get("result") >= 425) { if ((int) map.get("result") >= 425) {
attendMap4.put(str, 1); attendMap4.put(str, 1);
} else { } else {
@ -366,25 +366,25 @@ public class CenterServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implement
List<Cet_4old> list = cet4oldMapper.selectList(null); List<Cet_4old> list = cet4oldMapper.selectList(null);
// 准备id列表用于批量查询 // 准备id列表用于批量查询
List<String> idList = list.stream().map(Cet_4old::getId).collect(Collectors.toList()); List<String> idList = list.stream().map(Cet_4old::getCode).collect(Collectors.toList());
// 批量查询专业信息 // 批量查询专业信息
cet4_majorQW.in(Cet4_major::getId, idList); cet4_majorQW.in(Cet4_major::getCode, idList);
cet4_majorQW.select(Cet4_major::getId, Cet4_major::getMajorname, Cet4_major::getLevel, Cet4_major::getState, Cet4_major::getEntrydate); cet4_majorQW.select(Cet4_major::getCode, Cet4_major::getMajorname, Cet4_major::getLevel, Cet4_major::getState, Cet4_major::getEntrydate);
List<Map<String, Object>> mapList = cet4_majorMapper.selectMaps(cet4_majorQW); List<Map<String, Object>> mapList = cet4_majorMapper.selectMaps(cet4_majorQW);
// 将专业信息写入学生对象 // 将专业信息写入学生对象
Map<Object, Map<String, Object>> idToMap = mapList.stream().collect(Collectors.toMap( Map<Object, Map<String, Object>> idToMap = mapList.stream().collect(Collectors.toMap(
map -> map.get("id"), map -> map.get("code"),
Function.identity() Function.identity()
)); ));
int temp = 0; int temp = 0;
List<Cet_4> cet4List = new ArrayList<>(); List<Cet_4> cet4List = new ArrayList<>();
//以当前所在年级为入学年份 //以当前所在年级为入学年份
for (Cet_4old cet4old : list) { for (Cet_4old cet4old : list) {
Map<String, Object> map_major = idToMap.get(cet4old.getId()); Map<String, Object> map_major = idToMap.get(cet4old.getCode());
Cet_4 cet4 = new Cet_4(); Cet_4 cet4 = new Cet_4();
cet4.setId(cet4old.getId()); cet4.setCode(cet4old.getCode());
cet4.setName(cet4old.getName()); cet4.setName(cet4old.getName());
cet4.setCollege(cet4old.getCollege()); cet4.setCollege(cet4old.getCollege());
cet4.setResult(cet4old.getResult()); cet4.setResult(cet4old.getResult());
@ -397,7 +397,7 @@ public class CenterServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implement
cet4.setLevel((String) map_major.get("level")); cet4.setLevel((String) map_major.get("level"));
cet4.setState((String) map_major.get("state")); cet4.setState((String) map_major.get("state"));
cet4List.add(cet4); 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()); System.out.println(cet4List.size());
// 批量更新 // 批量更新

View File

@ -0,0 +1,172 @@
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.config.ThreadPoolManager;
import org.jeecg.modules.entity.Cet4_major;
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.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.concurrent.ThreadPoolExecutor;
import java.util.stream.Collectors;
/**
* @Description: cet4_major
* @Author: jeecg-boot
* @Date: 2024-10-23
* @Version: V1.0
*/
@Service
public class Cet4MajorServiceImpl extends ServiceImpl<Cet4_majorMapper, Cet4_major> implements ICet4MajorService {
private final String CET_STUDENT_IMPORT_TEMPLATE = "template/cetStudentImportTemplate.xls";
private final String CET_STUDENT_FILE_TEMPLATE_NAME = "四六级学生信息导入模版.xlsx";
@Autowired
private ICet_6Service cet6Service;
@Autowired
ICet_4Service cet4Service;
@Autowired
@Lazy
private ICet4MajorService cet4MajorService;
@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<Cet4_major> wrapper = new QueryWrapper<>();
wrapper.select("entrydate", "count(*) as studentNumber")
.groupBy("entrydate");
List<Map<String, Object>> list = this.listMaps(wrapper);
// 倒序排序
list = list.stream().filter(e -> e.get("entrydate") != null).collect(Collectors.toList());
list.sort(Comparator.comparing((Map<String, Object> 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<String, MultipartFile> fileMap = multipartRequest.getFileMap();
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
// 获取上传文件对象
MultipartFile file = entity.getValue();
if (file.isEmpty()) {
// 文件为空进行处理例如返回错误信息
return Result.error("上传的文件为空!");
}
try {
/**'
* 1. 读取表格
*/
ArrayList<CetStudent> furnitureArrayList = new ArrayList<>();
//使用EasyExcel读取excel文件
EasyExcel.read(file.getInputStream(), CetStudent.class, new AnalysisEventListener<CetStudent>() {
@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<Cet4_major> 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.setCode(cetStudent.getCode());
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("文件导入失败!");
}
@Override
public Result<?> asyncData() {
//异步同步数据
ThreadPoolExecutor executor = ThreadPoolManager.getExecutor();
executor.execute(new CetDataAsync(cet6Service,cet4Service,cet4MajorService));
return Result.ok();
}
}

View File

@ -1,35 +0,0 @@
package org.jeecg.modules.service.impl;
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;
/**
* Created with IntelliJ IDEA.
*
* @Author: Cool
* @Date: 2024/10/11/15:52
* @Description:
*/
@Service
@Slf4j
public class CetMajorServiceImpl extends ServiceImpl<Cet4_majorMapper, Cet4_major> {
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;
}
}

View File

@ -18,7 +18,6 @@ import org.jeecg.modules.mapper.Cet_4Mapper;
import org.jeecg.modules.service.CenterService; import org.jeecg.modules.service.CenterService;
import org.jeecg.modules.service.CetCleanService; import org.jeecg.modules.service.CetCleanService;
import org.jeecg.modules.service.ICet_4Service; import org.jeecg.modules.service.ICet_4Service;
import org.jeecg.modules.utils.DateUtil;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
@ -237,13 +236,13 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
// 在循环开始之前获取所有学院的在籍学生数量 // 在循环开始之前获取所有学院的在籍学生数量
LambdaQueryWrapper<Cet4_major> allStudentQW = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Cet4_major> 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<Map<String, Object>> allStudentList = cet4_majorMapper.selectMaps(allStudentQW); List<Map<String, Object>> allStudentList = cet4_majorMapper.selectMaps(allStudentQW);
Map<String, Long> allStudentMap = allStudentList.stream().collect(Collectors.groupingBy(map -> (String) map.get("college"), Collectors.counting())); Map<String, Long> allStudentMap = allStudentList.stream().collect(Collectors.groupingBy(map -> (String) map.get("college"), Collectors.counting()));
// 在循环开始之前获取所有批次的数据 // 在循环开始之前获取所有批次的数据
LambdaQueryWrapper<Cet_4> allBatchQW = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Cet_4> 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<Map<String, Object>> allBatchList = cet4Mapper.selectMaps(allBatchQW); List<Map<String, Object>> allBatchList = cet4Mapper.selectMaps(allBatchQW);
Map<String, List<Map<String, Object>>> allBatchMap = allBatchList.stream().collect(Collectors.groupingBy(map -> (String) map.get("college"))); Map<String, List<Map<String, Object>>> allBatchMap = allBatchList.stream().collect(Collectors.groupingBy(map -> (String) map.get("college")));
@ -258,7 +257,7 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
//一次性获取所有批次的数据 //一次性获取所有批次的数据
List<Map<String, Object>> Cet_4eEntrydate = allBatchMap.get(collegeName); List<Map<String, Object>> Cet_4eEntrydate = allBatchMap.get(collegeName);
for (Map<String, Object> map : Cet_4eEntrydate) { for (Map<String, Object> map : Cet_4eEntrydate) {
String str = (String) map.get("id"); String str = (String) map.get("code");
if ((int) map.get("result") >= 425) { if ((int) map.get("result") >= 425) {
attendMap4.put(str, 1); attendMap4.put(str, 1);
} else { } else {
@ -342,12 +341,12 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
List<Object> collegeSet = cet4_MajorMapper.selectObjs(cet4MajorQW); List<Object> collegeSet = cet4_MajorMapper.selectObjs(cet4MajorQW);
// 在循环开始之前获取该学院该年级的学生数量 // 在循环开始之前获取该学院该年级的学生数量
LambdaQueryWrapper<Cet4_major> allStudentQW = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Cet4_major> 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); long allStudent = cet4_majorMapper.selectCount(allStudentQW);
// 在循环开始之前获取该年级学院所有批次的数据 // 在循环开始之前获取该年级学院所有批次的数据
LambdaQueryWrapper<Cet_4> allBatchQW = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Cet_4> 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<Map<String, Object>> Cet_4eEntrydate = cet4Mapper.selectMaps(allBatchQW); List<Map<String, Object>> Cet_4eEntrydate = cet4Mapper.selectMaps(allBatchQW);
if (collegeSet.contains(collegeName)) { if (collegeSet.contains(collegeName)) {
@ -355,7 +354,7 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
Map<String, Integer> attendMap4 = new HashMap<>(); Map<String, Integer> attendMap4 = new HashMap<>();
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
for (Map<String, Object> map : Cet_4eEntrydate) { for (Map<String, Object> map : Cet_4eEntrydate) {
String str = (String) map.get("id"); String str = (String) map.get("code");
if ((int) map.get("result") >= 425) { if ((int) map.get("result") >= 425) {
attendMap4.put(str, 1); attendMap4.put(str, 1);
} else { } else {
@ -443,7 +442,7 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> 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); 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<Map<String, Object>> Cet_4eEntrydate = cet4Mapper.selectMaps(Cet_4QW); List<Map<String, Object>> Cet_4eEntrydate = cet4Mapper.selectMaps(Cet_4QW);
for (Map<String, Object> map : Cet_4eEntrydate) { for (Map<String, Object> map : Cet_4eEntrydate) {
String str = (String) map.get("id"); String str = (String) map.get("code");
if ((int) map.get("result") >= 425) { if ((int) map.get("result") >= 425) {
attendMap4.put(str, 1); attendMap4.put(str, 1);
} else { } else {
@ -508,7 +507,7 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> 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); 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<Map<String, Object>> Cet_4eEntrydate = cet4Mapper.selectMaps(Cet_4QW); List<Map<String, Object>> Cet_4eEntrydate = cet4Mapper.selectMaps(Cet_4QW);
for (Map<String, Object> map : Cet_4eEntrydate) { for (Map<String, Object> map : Cet_4eEntrydate) {
String str = (String) map.get("id"); String str = (String) map.get("code");
if ((int) map.get("result") >= 425) { if ((int) map.get("result") >= 425) {
attendMap4.put(str, 1); attendMap4.put(str, 1);
} else { } else {
@ -594,7 +593,7 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
String currentEntryDate = (String) Date.get("entrydate"); String currentEntryDate = (String) Date.get("entrydate");
for (Map<String, Object> map : maps) { for (Map<String, Object> map : maps) {
String studentEntryDate = (String) map.get("entrydate"); String studentEntryDate = (String) map.get("entrydate");
String str = (String) map.get("id"); String str = (String) map.get("code");
// 仅处理当前 entryDate 下的学生数据 // 仅处理当前 entryDate 下的学生数据
if (currentEntryDate.equals(studentEntryDate)) { if (currentEntryDate.equals(studentEntryDate)) {
if ((int) map.get("result") >= 425) { if ((int) map.get("result") >= 425) {
@ -658,14 +657,14 @@ public class Cet_4ServiceImpl extends ServiceImpl<Cet_4Mapper, Cet_4> implements
@Override @Override
public Result<JSONObject> getDataByStudent(JSONObject jsonObject) { public Result<JSONObject> getDataByStudent(JSONObject jsonObject) {
String name = jsonObject.getString("name"); String name = jsonObject.getString("name");
Integer id = jsonObject.getInteger("id"); Integer code = jsonObject.getInteger("code");
if (name == null || id == null) { if (name == null || code == null) {
return Result.error("请填写完整的参数"); return Result.error("请填写完整的参数");
} }
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
LambdaQueryWrapper<Cet_4> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Cet_4> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Cet_4::getName, name) wrapper.eq(Cet_4::getName, name)
.eq(Cet_4::getId, id); .eq(Cet_4::getCode, code);
List<Cet_4> list = list(wrapper); List<Cet_4> list = list(wrapper);
result.put("results", list); result.put("results", list);
return Result.ok(result); return Result.ok(result);

View File

@ -1,6 +1,5 @@
package org.jeecg.modules.service.impl; package org.jeecg.modules.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -12,15 +11,15 @@ import org.jeecg.modules.entity.Cet_4;
import org.jeecg.modules.entity.Cet_6; import org.jeecg.modules.entity.Cet_6;
import org.jeecg.modules.mapper.Cet_6Mapper; import org.jeecg.modules.mapper.Cet_6Mapper;
import org.jeecg.modules.service.CenterService; import org.jeecg.modules.service.CenterService;
import org.jeecg.modules.service.ICet4MajorService;
import org.jeecg.modules.service.ICet_6Service; import org.jeecg.modules.service.ICet_6Service;
import org.jeecg.modules.utils.DateUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -35,14 +34,14 @@ import java.util.stream.Collectors;
public class Cet_6ServiceImpl extends ServiceImpl<Cet_6Mapper, Cet_6> implements ICet_6Service { public class Cet_6ServiceImpl extends ServiceImpl<Cet_6Mapper, Cet_6> implements ICet_6Service {
@Resource @Resource
Cet_6Mapper cet6Mapper; Cet_6Mapper cet6Mapper;
//
@Autowired
@Lazy
ICet4MajorService cet4MajorService;
@Autowired @Autowired
Cet_4ServiceImpl cet4Service; Cet_4ServiceImpl cet4Service;
@Autowired @Autowired
CenterService centerService; CenterService centerService;
@Autowired
CetMajorServiceImpl cetMajorService;
@Override @Override
public Result<JSONObject> getRate(Cet_6 cet) { public Result<JSONObject> getRate(Cet_6 cet) {
@ -85,26 +84,25 @@ public class Cet_6ServiceImpl extends ServiceImpl<Cet_6Mapper, Cet_6> implements
LambdaQueryWrapper<Cet_6> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Cet_6> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Cet_6::getEntrydate, "2020"); wrapper.eq(Cet_6::getEntrydate, "2020");
List<Cet_6> list1 = list(wrapper); List<Cet_6> list1 = list(wrapper);
Set<String> allStudent1 = list1.stream().map(Cet_6::getId).collect(Collectors.toSet()); Set<String> allStudent1 = list1.stream().map(Cet_6::getCode).collect(Collectors.toSet());
log.info("六级总考试人数,{}", allStudent1.size()); log.info("六级总考试人数,{}", allStudent1.size());
wrapper.ge(Cet_6::getResult, 425); wrapper.ge(Cet_6::getResult, 425);
List<Cet_6> list = list(wrapper); List<Cet_6> list = list(wrapper);
log.info("六级总通过人数,{}", list.size()); log.info("六级总通过人数,{}", list.size());
Set<String> passStudent = list.stream().map(Cet_6::getId).collect(Collectors.toSet()); Set<String> passStudent = list.stream().map(Cet_6::getCode).collect(Collectors.toSet());
log.info("六级通过人数,{}", passStudent.size()); log.info("六级通过人数,{}", passStudent.size());
LambdaQueryWrapper<Cet4_major> majorWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Cet4_major> majorWrapper = new LambdaQueryWrapper<>();
majorWrapper.eq(Cet4_major::getEntrydate, "2020") majorWrapper.eq(Cet4_major::getEntrydate, "2020").eq(Cet4_major::getState, "在校");
.eq(Cet4_major::getState, "在校"); List<Cet4_major> majorList = cet4MajorService.list(majorWrapper);
List<Cet4_major> majorList = cetMajorService.list(majorWrapper); Set<String> allStudent = majorList.stream().map(Cet4_major::getCode).collect(Collectors.toSet());
Set<String> allStudent = majorList.stream().map(Cet4_major::getId).collect(Collectors.toSet());
log.info("所有学生人数{}", allStudent.size()); log.info("所有学生人数{}", allStudent.size());
log.info("通过率,{}", (double) passStudent.size() / allStudent.size()); log.info("通过率,{}", (double) passStudent.size() / allStudent.size());
LambdaQueryWrapper<Cet_4> cet4Wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Cet_4> cet4Wrapper = new LambdaQueryWrapper<>();
cet4Wrapper.eq(Cet_4::getEntrydate, "2020"); cet4Wrapper.eq(Cet_4::getEntrydate, "2020");
cet4Wrapper.ge(Cet_4::getResult, 425); cet4Wrapper.ge(Cet_4::getResult, 425);
List<Cet_4> cet4PassedStudent = cet4Service.list(cet4Wrapper); List<Cet_4> cet4PassedStudent = cet4Service.list(cet4Wrapper);
Set<String> cet4AllPassedStudent = cet4PassedStudent.stream().map(Cet_4::getId).collect(Collectors.toSet()); Set<String> cet4AllPassedStudent = cet4PassedStudent.stream().map(Cet_4::getCode).collect(Collectors.toSet());
log.info("四级通过人数,{}", cet4AllPassedStudent.size()); log.info("四级通过人数,{}", cet4AllPassedStudent.size());
return null; return null;
} }
@ -113,8 +111,7 @@ public class Cet_6ServiceImpl extends ServiceImpl<Cet_6Mapper, Cet_6> implements
public Result<JSONObject> loadImportDataList() { public Result<JSONObject> loadImportDataList() {
// 创建 QueryWrapper // 创建 QueryWrapper
QueryWrapper<Cet_6> queryWrapper = new QueryWrapper<>(); QueryWrapper<Cet_6> queryWrapper = new QueryWrapper<>();
queryWrapper.select("batch", "COUNT(*) AS count") queryWrapper.select("batch", "COUNT(*) AS count").groupBy("batch");
.groupBy("batch");
// 执行查询获取结果列表 // 执行查询获取结果列表
List<Map<String, Object>> list = this.listMaps(queryWrapper); List<Map<String, Object>> list = this.listMaps(queryWrapper);

View File

@ -45,8 +45,8 @@ spring:
clean-disabled: true clean-disabled: true
servlet: servlet:
multipart: multipart:
max-file-size: 10MB max-file-size: 50MB
max-request-size: 10MB max-request-size: 50MB
mail: mail:
host: smtp.163.com host: smtp.163.com
username: jeecgos@163.com username: jeecgos@163.com

View File

@ -45,8 +45,8 @@ spring:
clean-disabled: true clean-disabled: true
servlet: servlet:
multipart: multipart:
max-file-size: 10MB max-file-size: 50MB
max-request-size: 10MB max-request-size: 50MB
mail: mail:
host: smtp.163.com host: smtp.163.com
username: jeecgos@163.com username: jeecgos@163.com