From 9f47da788bf7127847a4c3f5cfc424efdc3c736c Mon Sep 17 00:00:00 2001 From: "jiakun.lin" Date: Mon, 15 Mar 2021 11:43:11 +0800 Subject: [PATCH 01/43] =?UTF-8?q?=E5=A4=B4=E5=83=8F=E9=93=BE=E6=8E=A5?= =?UTF-8?q?=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/mapper/tms/UserDao.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/mapper/tms/UserDao.xml b/src/main/resources/mapper/tms/UserDao.xml index ba71046..f7508ac 100644 --- a/src/main/resources/mapper/tms/UserDao.xml +++ b/src/main/resources/mapper/tms/UserDao.xml @@ -19,6 +19,7 @@ u.IDNumber, u.documentType, u.educationDegree, + u.userAvatars, pro.provinceId, pro.provinceName, s.schoolId, From 3d940090278bd84febcbb0ad6a18787373ca557e Mon Sep 17 00:00:00 2001 From: "jiakun.lin" Date: Mon, 15 Mar 2021 16:58:14 +0800 Subject: [PATCH 02/43] =?UTF-8?q?=E6=88=90=E7=BB=A9=E7=AE=A1=E7=90=86-?= =?UTF-8?q?=E8=80=83=E6=A0=B8=E6=90=9C=E7=B4=A2=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/mapper/tms/AchievementManagementDao.xml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/resources/mapper/tms/AchievementManagementDao.xml b/src/main/resources/mapper/tms/AchievementManagementDao.xml index c2a1330..c6c68b8 100644 --- a/src/main/resources/mapper/tms/AchievementManagementDao.xml +++ b/src/main/resources/mapper/tms/AchievementManagementDao.xml @@ -497,11 +497,10 @@ et.creation_time AS creationTime, et.is_del FROM - tms_experimental_teaching et, - hr_project_management pm + tms_experimental_teaching et inner join + hr_project_management pm on et.project_id = pm.projectId WHERE user_id = #{userId} - AND et.project_id = pm.projectId AND pm.isdel = 0 and et.experimental_class_name like concat('%',#{searchContant},'%') or et.experimental_name like concat('%',#{searchContant},'%') or From 0d2ba8feb248c3ac673c0fc718d3826ab544ee2c Mon Sep 17 00:00:00 2001 From: "jiakun.lin" Date: Tue, 16 Mar 2021 14:20:01 +0800 Subject: [PATCH 03/43] =?UTF-8?q?=E6=B3=A8=E5=86=8C=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=BF=85=E9=A1=BB=E8=A6=81=E5=B8=A6=E5=AD=A6=E5=8F=B7=EF=BC=8C?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E5=AD=A6=E5=8F=B7=E5=94=AF=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msdw/tms/api/UserInfoControllerApi.java | 2 +- .../tms/controller/UserInfoController.java | 23 +++++++++++++++---- .../java/com/msdw/tms/dao/StudentDao.java | 4 +++- .../com/msdw/tms/service/StudentService.java | 3 ++- .../tms/service/impl/StudentServiceImpl.java | 18 ++++++++------- src/main/resources/mapper/tms/StudentDao.xml | 8 +++++-- 6 files changed, 41 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/msdw/tms/api/UserInfoControllerApi.java b/src/main/java/com/msdw/tms/api/UserInfoControllerApi.java index 51edcf5..037f505 100644 --- a/src/main/java/com/msdw/tms/api/UserInfoControllerApi.java +++ b/src/main/java/com/msdw/tms/api/UserInfoControllerApi.java @@ -24,7 +24,7 @@ public interface UserInfoControllerApi { R getUserId(String token); @ApiOperation(value = "注册",notes = "注册") - R save(UserInfoEntity entity); + R save(UserInfoEntity entity,@ApiParam(value = "学号",required = true)String workNumber); @ApiOperation(value = "个人中心信息展示",notes = "个人中心信息展示") R userInfo(Integer id); diff --git a/src/main/java/com/msdw/tms/controller/UserInfoController.java b/src/main/java/com/msdw/tms/controller/UserInfoController.java index 5f9586a..f5bac50 100644 --- a/src/main/java/com/msdw/tms/controller/UserInfoController.java +++ b/src/main/java/com/msdw/tms/controller/UserInfoController.java @@ -8,6 +8,7 @@ import com.msdw.tms.entity.UserEntity; import com.msdw.tms.entity.UserInfoEntity; import com.msdw.tms.entity.UserPersonalFileEntity; import com.msdw.tms.entity.vo.CheckVo; +import com.msdw.tms.entity.vo.StudentVo; import com.msdw.tms.entity.vo.UserEntityVo; import com.msdw.tms.entity.vo.UserProsonalEntityVo; import com.msdw.tms.service.StudentService; @@ -58,27 +59,41 @@ public class UserInfoController implements UserInfoControllerApi { @Override @Transactional @PostMapping("/add") - public R save(@RequestBody UserInfoEntity userInfoEntity){ + public R save(@RequestBody UserInfoEntity userInfoEntity,@RequestParam String workNumber){ String token ="UT_"+ UUID.randomUUID().toString().replace("-", ""); userInfoEntity.setToken(token); userInfoEntity.setSchoolId(2105); Integer schoolId = userInfoEntity.getSchoolId(); Integer integer = userInfoService.queryStudentAccount(userInfoEntity.getAccount(),schoolId); Integer integer1 = userInfoService.queryStudentPhone(userInfoEntity.getPhone()); + + //新增学生 + StudentVo studentVo = new StudentVo(); + studentVo.setUserId(userInfoEntity.getUserId()); + studentVo.setRoleId(Integer.valueOf(userInfoEntity.getRoleId())); + studentVo.setSchoolId(schoolId); + studentVo.setIsdel(0); + studentVo.setWorkNumber(workNumber); + studentVo.setPlatformId(1); + //为1 学号有重复 + int num = studentService.queryStudentByWorkNumber(studentVo); + if (integer==1){ return R.error(400,"账号已存在"); } if (integer1==1){ - return R.error(400,"改手机号已被绑定"); + return R.error(400,"该手机号已被绑定"); + } + if (num == 1){ + return R.error(400,"该学号重复!"); } int userId = userInfoService.add(userInfoEntity); if (userId==0){ return R.error(400,"添加用户信息失败"); } // userInfoEntity.setUserId(userId); - studentService.addStudentInfo(userInfoEntity); - return R.ok(); + return studentService.addStudentInfo(studentVo); } /** diff --git a/src/main/java/com/msdw/tms/dao/StudentDao.java b/src/main/java/com/msdw/tms/dao/StudentDao.java index b426e78..1dff280 100644 --- a/src/main/java/com/msdw/tms/dao/StudentDao.java +++ b/src/main/java/com/msdw/tms/dao/StudentDao.java @@ -28,7 +28,7 @@ public interface StudentDao extends BaseMapper { void updateWorkNumber(String workNumber,Integer studentId); - boolean addStudentInfo(UserInfoEntity userInfoEntity); + boolean addStudentInfo(StudentVo studentVo); List querySchoolName(String schoolAppellationName); @@ -37,4 +37,6 @@ public interface StudentDao extends BaseMapper { int querySchoolAppellationName(String schoolAppellationName); List queryAccount(String account,Integer schoolId); + + int queryStudentByWorkNumber(StudentVo studentVo); } diff --git a/src/main/java/com/msdw/tms/service/StudentService.java b/src/main/java/com/msdw/tms/service/StudentService.java index 05d99e9..efc4e0e 100644 --- a/src/main/java/com/msdw/tms/service/StudentService.java +++ b/src/main/java/com/msdw/tms/service/StudentService.java @@ -30,7 +30,7 @@ public interface StudentService extends IService{ void updateWorkNumber(Integer studentId); - R addStudentInfo(UserInfoEntity userInfoEntity); + R addStudentInfo(StudentVo studentVo); void downloadFiles(HttpServletResponse response) throws IOException; @@ -40,4 +40,5 @@ public interface StudentService extends IService{ R queryAccount(String account,Integer schoolId); + int queryStudentByWorkNumber(StudentVo studentVo); } diff --git a/src/main/java/com/msdw/tms/service/impl/StudentServiceImpl.java b/src/main/java/com/msdw/tms/service/impl/StudentServiceImpl.java index cca9696..e3a099d 100644 --- a/src/main/java/com/msdw/tms/service/impl/StudentServiceImpl.java +++ b/src/main/java/com/msdw/tms/service/impl/StudentServiceImpl.java @@ -122,18 +122,15 @@ public class StudentServiceImpl extends ServiceImpl im } @Override - public R addStudentInfo(UserInfoEntity userInfoEntity) { + public R addStudentInfo(StudentVo studentVo) { R r = new R(); - boolean result = studentDao.addStudentInfo(userInfoEntity); + boolean result = studentDao.addStudentInfo(studentVo); if (result==false){ - r.put("code",300); - r.put("errmessage","注册失败!"); - return r; + throw new RuntimeException();//添加失败,抛出运行时异常让外层事务回滚 }else{ - r.put("code",200); - r.put("errmessage","注册成功!"); - return r; + return R.ok("注册成功!"); } + } @Override @@ -310,4 +307,9 @@ public class StudentServiceImpl extends ServiceImpl im } + @Override + public int queryStudentByWorkNumber(StudentVo studentVo) { + return studentDao.queryStudentByWorkNumber(studentVo); + } + } diff --git a/src/main/resources/mapper/tms/StudentDao.xml b/src/main/resources/mapper/tms/StudentDao.xml index e421705..6a11653 100644 --- a/src/main/resources/mapper/tms/StudentDao.xml +++ b/src/main/resources/mapper/tms/StudentDao.xml @@ -94,9 +94,9 @@ WHERE ) - INSERT INTO student(schoolId,userId,roleId,isdel,platformId) + INSERT INTO student(schoolId,userId,roleId,isdel,platformId,workNumber) VALUES - ( #{schoolId},#{userId},4,0,1 + ( #{schoolId},#{userId},#{roleId},#{isdel},#{platformId},#{workNumber} ) @@ -146,4 +146,8 @@ WHERE update student set workNumber = #{workNumber} where studentId = #{studentId} + + \ No newline at end of file From 3d14660dcb6d037631335568343a02b91691cce1 Mon Sep 17 00:00:00 2001 From: "rong.liu" Date: Tue, 16 Mar 2021 14:27:56 +0800 Subject: [PATCH 04/43] =?UTF-8?q?=E6=9F=A5=E7=9C=8B=E6=88=90=E7=BB=A9?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AD=A6=E7=94=9Fid=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/msdw/tms/entity/vo/AchievementManagementVO.java | 3 +++ src/main/resources/mapper/tms/AchievementManagementDao.xml | 3 ++- src/main/resources/mapper/tms/ExperimentalReportDao.xml | 4 +++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/msdw/tms/entity/vo/AchievementManagementVO.java b/src/main/java/com/msdw/tms/entity/vo/AchievementManagementVO.java index e5e2fa5..6cf318a 100644 --- a/src/main/java/com/msdw/tms/entity/vo/AchievementManagementVO.java +++ b/src/main/java/com/msdw/tms/entity/vo/AchievementManagementVO.java @@ -88,4 +88,7 @@ public class AchievementManagementVO extends ExperimentalReportEntity { private String answer; //判分点名称 private String judgmentPointsName; + + //学生id + private Integer studentId; } diff --git a/src/main/resources/mapper/tms/AchievementManagementDao.xml b/src/main/resources/mapper/tms/AchievementManagementDao.xml index c2a1330..e408af8 100644 --- a/src/main/resources/mapper/tms/AchievementManagementDao.xml +++ b/src/main/resources/mapper/tms/AchievementManagementDao.xml @@ -177,7 +177,8 @@ u.userName, re.score, re.submitTime, - r.eventId + r.eventId, + s.studentId FROM tms_experimental_report r INNER JOIN tms_experimental_teaching t ON t.id = r.projectId diff --git a/src/main/resources/mapper/tms/ExperimentalReportDao.xml b/src/main/resources/mapper/tms/ExperimentalReportDao.xml index c6dbaaa..69d14da 100644 --- a/src/main/resources/mapper/tms/ExperimentalReportDao.xml +++ b/src/main/resources/mapper/tms/ExperimentalReportDao.xml @@ -30,7 +30,8 @@ ter.improvement, IFNULL(ter.`comment`, (SELECT `comment` FROM tms_comment WHERE id = commentId)) AS comment, ter.instructor, - ter.purpose + ter.purpose, + tet.experimental_class_name as experimentalClassName FROM hr_user_info u, student stu, tms_experimental_report ter, @@ -48,6 +49,7 @@ AND tpr.recordId = #{recordId} AND ter.projectId = #{projectId} + From c02602d0949b688421edc6d6f29e108cc7233873 Mon Sep 17 00:00:00 2001 From: "jiakun.lin" Date: Tue, 16 Mar 2021 16:39:40 +0800 Subject: [PATCH 06/43] =?UTF-8?q?id=E4=B8=BA=E7=A9=BA=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/msdw/tms/controller/UserInfoController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/msdw/tms/controller/UserInfoController.java b/src/main/java/com/msdw/tms/controller/UserInfoController.java index f5bac50..b859d1a 100644 --- a/src/main/java/com/msdw/tms/controller/UserInfoController.java +++ b/src/main/java/com/msdw/tms/controller/UserInfoController.java @@ -69,7 +69,7 @@ public class UserInfoController implements UserInfoControllerApi { //新增学生 StudentVo studentVo = new StudentVo(); - studentVo.setUserId(userInfoEntity.getUserId()); + studentVo.setRoleId(Integer.valueOf(userInfoEntity.getRoleId())); studentVo.setSchoolId(schoolId); studentVo.setIsdel(0); @@ -92,7 +92,7 @@ public class UserInfoController implements UserInfoControllerApi { return R.error(400,"添加用户信息失败"); } // userInfoEntity.setUserId(userId); - + studentVo.setUserId(userInfoEntity.getUserId()); return studentService.addStudentInfo(studentVo); } From afb32a45159dfd87f21c7683169f300a90c76acf Mon Sep 17 00:00:00 2001 From: "jiakun.lin" Date: Wed, 17 Mar 2021 10:40:37 +0800 Subject: [PATCH 07/43] =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E8=AE=B0=E5=BD=95-?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E4=B8=8D=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/mapper/tms/ProjectRecordDao.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/mapper/tms/ProjectRecordDao.xml b/src/main/resources/mapper/tms/ProjectRecordDao.xml index 8495e51..fd6d0cd 100644 --- a/src/main/resources/mapper/tms/ProjectRecordDao.xml +++ b/src/main/resources/mapper/tms/ProjectRecordDao.xml @@ -132,7 +132,7 @@ sum(timeSum) AS totalTime, avg(score) avgScore FROM tms_project_record pr - LEFT JOIN hr_user_info u ON pr.userId = u.userId + INNER JOIN hr_user_info u ON pr.userId = u.userId WHERE pr.userId = #{userid} From e96a638d089338e07cf6cbaebd1b2a7ba86ded05 Mon Sep 17 00:00:00 2001 From: "rong.liu" Date: Wed, 17 Mar 2021 14:57:04 +0800 Subject: [PATCH 08/43] =?UTF-8?q?=E8=80=83=E6=A0=B8=E3=80=81=E7=BB=83?= =?UTF-8?q?=E4=B9=A0=E5=88=97=E8=A1=A8=E6=94=B9=E6=88=90=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E5=88=97=E8=A1=A8=EF=BC=8C=E6=B7=BB=E5=8A=A0=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AchievementManagementController.java | 16 ++- .../java/com/msdw/tms/util/ListPageUtil.java | 129 ++++++++++++++++++ .../java/com/msdw/tms/util/PageUtils.java | 113 +++++++++++++++ .../mapper/tms/AchievementManagementDao.xml | 2 +- 4 files changed, 256 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/msdw/tms/util/ListPageUtil.java create mode 100644 src/main/java/com/msdw/tms/util/PageUtils.java diff --git a/src/main/java/com/msdw/tms/controller/AchievementManagementController.java b/src/main/java/com/msdw/tms/controller/AchievementManagementController.java index 37a20d5..db82573 100644 --- a/src/main/java/com/msdw/tms/controller/AchievementManagementController.java +++ b/src/main/java/com/msdw/tms/controller/AchievementManagementController.java @@ -7,6 +7,8 @@ import com.msdw.tms.entity.vo.AchievementManagementVO; import com.msdw.tms.entity.vo.ResultsVo; import com.msdw.tms.service.AchievementManagementService; import com.msdw.tms.service.ProjectRecordService; +import com.msdw.tms.util.ListPageUtil; +import com.msdw.tms.util.PageUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; @@ -90,7 +92,11 @@ public class AchievementManagementController implements AchievementManagementApi vo.setEndTime(endTime); } List result = service.list(vo, page, size); - return R.ok().put("data", result); + + ListPageUtil listPageUtil = new ListPageUtil(result, page, size); + List pagedList = listPageUtil.getPagedList(); + PageUtils pageUtils = new PageUtils(pagedList, result.size(), page, size); + return R.ok().put("data", pageUtils); } /** @@ -121,7 +127,11 @@ public class AchievementManagementController implements AchievementManagementApi vo.setEndTime(endTime); } List result = service.newList(vo, page, size); - return R.ok().put("data", result); + /*return R.ok().put("data", result);*/ + ListPageUtil listPageUtil = new ListPageUtil(result, page, size); + List pagedList = listPageUtil.getPagedList(); + PageUtils pageUtils = new PageUtils(pagedList, result.size(), page, size); + return R.ok().put("data", pageUtils); } /** @@ -230,7 +240,7 @@ public class AchievementManagementController implements AchievementManagementApi @Override @GetMapping("/exportAchievement") public void exportAchievement(HttpServletResponse response, @RequestParam String ids, @RequestParam Integer source) throws Exception { - service.exportAchievement(response, ids,source);//SearchAchievementVo vo + service.exportAchievement(response, ids, source);//SearchAchievementVo vo } //成绩管理列表 diff --git a/src/main/java/com/msdw/tms/util/ListPageUtil.java b/src/main/java/com/msdw/tms/util/ListPageUtil.java new file mode 100644 index 0000000..f04f73a --- /dev/null +++ b/src/main/java/com/msdw/tms/util/ListPageUtil.java @@ -0,0 +1,129 @@ +package com.msdw.tms.util; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +/** + * @ProjectName: gzedu + * @Package: com.huoran.edu.utils + * @ClassName: ListSub + * @Description: 集合分页 + * @Author: Maureen.Rong + * @CreateDate: 2020/12/3 18:48 + * @UpdateDate: 2020/12/3 18:48 + * @Version: 1.0 + */ +public class ListPageUtil { + /** + * 原集合 + */ + private List data; + + /** + * 上一页 + */ + private int lastPage; + + /** + * 当前页 + */ + private int nowPage; + + /** + * 下一页 + */ + private int nextPage; + + /** + * 每页条数 + */ + private int pageSize; + + /** + * 总页数 + */ + private int totalPage; + + /** + * 总数据条数 + */ + private int totalCount; + + public ListPageUtil(List data, int nowPage, int pageSize) { + if (data == null || data.isEmpty()) { + //throw new IllegalArgumentException("暂无数据"); + this.data = null; +// this.pageSize = pageSize; +// this.nowPage = nowPage; +// this.totalCount = data.size(); + } + + this.data = data; + this.pageSize = pageSize; + this.nowPage = nowPage; + this.totalCount = data.size(); + this.totalPage = (totalCount + pageSize - 1) / pageSize; + this.lastPage = nowPage - 1 > 1 ? nowPage - 1 : 1; + this.nextPage = nowPage >= totalPage ? totalPage : nowPage + 1; + + } + + /** + * 得到分页后的数据 + * + * @return 分页后结果 + */ + public List getPagedList() { + int fromIndex = (nowPage - 1) * pageSize; + if (fromIndex >= data.size()) { + return Collections.emptyList();//空数组 + } + if (fromIndex < 0) { + return Collections.emptyList();//空数组 + } + int toIndex = nowPage * pageSize; + if (toIndex >= data.size()) { + toIndex = data.size(); + } + return data.subList(fromIndex, toIndex); + } + + public int getPageSize() { + return pageSize; + } + + public List getData() { + return data; + } + + public int getLastPage() { + return lastPage; + } + + public int getNowPage() { + return nowPage; + } + + public int getNextPage() { + return nextPage; + } + + public int getTotalPage() { + return totalPage; + } + + public int getTotalCount() { + return totalCount; + } + + public static void main(String[] args) { + Integer[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; + List list = Arrays.asList(array); + + ListPageUtil listPageUtil = new ListPageUtil(list, 1, 4); + List pagedList = listPageUtil.getPagedList(); + System.out.println(pagedList); + } + +} diff --git a/src/main/java/com/msdw/tms/util/PageUtils.java b/src/main/java/com/msdw/tms/util/PageUtils.java new file mode 100644 index 0000000..a17ead7 --- /dev/null +++ b/src/main/java/com/msdw/tms/util/PageUtils.java @@ -0,0 +1,113 @@ +/** + * Copyright (c) 2016-2019 人人开源 All rights reserved. + *

+ * https://www.renren.io + *

+ * 版权所有,侵权必究! + */ + +package com.msdw.tms.util; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * 分页工具类 + * + * @author Mark sunlightcs@gmail.com + */ +@Data +public class PageUtils implements Serializable { + private static final long serialVersionUID = 1L; + /** + * 总记录数 + */ + private int totalCount; + /** + * 每页记录数 + */ + private int pageSize; + /** + * 总页数 + */ + private int totalPage; + /** + * 当前页数 + */ + private int currPage; + /** + * 列表数据 + */ + private List list; + + /** + * 分页 + * + * @param list 列表数据 + * @param totalCount 总记录数 + * @param pageSize 每页记录数 + * @param currPage 当前页数 + */ + public PageUtils(List list, int totalCount, int pageSize, int currPage) { + this.list = list; + this.totalCount = totalCount; + this.pageSize = pageSize; + this.currPage = currPage; + this.totalPage = (int) Math.ceil((double) totalCount / pageSize); + } + + /** + * 分页 + */ + public PageUtils(IPage page) { + this.list = page.getRecords(); + this.totalCount = (int) page.getTotal(); + this.pageSize = (int) page.getSize(); + this.currPage = (int) page.getCurrent(); + this.totalPage = (int) page.getPages(); + } + + public int getTotalCount() { + return totalCount; + } + + public void setTotalCount(int totalCount) { + this.totalCount = totalCount; + } + + public int getPageSize() { + return pageSize; + } + + public void setPageSize(int pageSize) { + this.pageSize = pageSize; + } + + public int getTotalPage() { + return totalPage; + } + + public void setTotalPage(int totalPage) { + this.totalPage = totalPage; + } + + public int getCurrPage() { + return currPage; + } + + public void setCurrPage(int currPage) { + this.currPage = currPage; + } + + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } + +} diff --git a/src/main/resources/mapper/tms/AchievementManagementDao.xml b/src/main/resources/mapper/tms/AchievementManagementDao.xml index 621e937..bb2f4b6 100644 --- a/src/main/resources/mapper/tms/AchievementManagementDao.xml +++ b/src/main/resources/mapper/tms/AchievementManagementDao.xml @@ -502,7 +502,7 @@ hr_project_management pm on et.project_id = pm.projectId WHERE user_id = #{userId} - AND pm.isdel = 0 + /*AND pm.isdel = 0*/ and et.experimental_class_name like concat('%',#{searchContant},'%') or et.experimental_name like concat('%',#{searchContant},'%') or pm.projectName like concat('%',#{searchContant},'%') From ad53b77262a24237e86cfe7c45d30ad7ce61a026 Mon Sep 17 00:00:00 2001 From: "jiakun.lin" Date: Wed, 17 Mar 2021 15:28:01 +0800 Subject: [PATCH 09/43] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AchievementManagementServiceImpl.java | 32 ++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/msdw/tms/service/impl/AchievementManagementServiceImpl.java b/src/main/java/com/msdw/tms/service/impl/AchievementManagementServiceImpl.java index 69853a1..d9ce9f2 100644 --- a/src/main/java/com/msdw/tms/service/impl/AchievementManagementServiceImpl.java +++ b/src/main/java/com/msdw/tms/service/impl/AchievementManagementServiceImpl.java @@ -7,10 +7,7 @@ import com.msdw.tms.common.utils.Constant; import com.msdw.tms.common.utils.PageUtils; import com.msdw.tms.common.utils.R; import com.msdw.tms.common.utils.poi.ExcelExportUtil; -import com.msdw.tms.dao.AchievementManagementDao; -import com.msdw.tms.dao.ExperimentalTeachingDao; -import com.msdw.tms.dao.ProjectRecordDao; -import com.msdw.tms.dao.UserInfoDao; +import com.msdw.tms.dao.*; import com.msdw.tms.entity.*; import com.msdw.tms.entity.request.AchievementImportRequest; import com.msdw.tms.entity.request.ImportAssessmentRequest; @@ -46,6 +43,9 @@ public class AchievementManagementServiceImpl extends ServiceImpl projectIds, Integer projectPermissions, List ids) { + + ProjectHiddenEntity projectHiddenEntity = new ProjectHiddenEntity(); + //projectHiddenEntity.setId(null); + int num = 0; + if (projectPermissions == 1) {//实验教学 for (Integer id : ids) { List teachAchievements = achievementManagementDao.getTeachAchievement(id); @@ -335,6 +340,15 @@ public class AchievementManagementServiceImpl extends ServiceImpl Date: Wed, 17 Mar 2021 15:29:35 +0800 Subject: [PATCH 10/43] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/msdw/tms/dao/ProjectHiddenDao.java | 10 +++++ .../msdw/tms/entity/ProjectHiddenEntity.java | 42 +++++++++++++++++++ .../tms/service/ProjectHiddenService.java | 7 ++++ .../impl/ProjectHiddenServiceImpl.java | 18 ++++++++ .../resources/mapper/tms/ProjectHiddenDao.xml | 6 +++ 5 files changed, 83 insertions(+) create mode 100644 src/main/java/com/msdw/tms/dao/ProjectHiddenDao.java create mode 100644 src/main/java/com/msdw/tms/entity/ProjectHiddenEntity.java create mode 100644 src/main/java/com/msdw/tms/service/ProjectHiddenService.java create mode 100644 src/main/java/com/msdw/tms/service/impl/ProjectHiddenServiceImpl.java create mode 100644 src/main/resources/mapper/tms/ProjectHiddenDao.xml diff --git a/src/main/java/com/msdw/tms/dao/ProjectHiddenDao.java b/src/main/java/com/msdw/tms/dao/ProjectHiddenDao.java new file mode 100644 index 0000000..75566f6 --- /dev/null +++ b/src/main/java/com/msdw/tms/dao/ProjectHiddenDao.java @@ -0,0 +1,10 @@ +package com.msdw.tms.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.msdw.tms.entity.ProjectHiddenEntity; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface ProjectHiddenDao extends BaseMapper { + +} diff --git a/src/main/java/com/msdw/tms/entity/ProjectHiddenEntity.java b/src/main/java/com/msdw/tms/entity/ProjectHiddenEntity.java new file mode 100644 index 0000000..bcb9d25 --- /dev/null +++ b/src/main/java/com/msdw/tms/entity/ProjectHiddenEntity.java @@ -0,0 +1,42 @@ +package com.msdw.tms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * @author Mr.JK + * @date 2021年3月17日15:08:53 + */ +@Accessors(chain = true) +@Data +@TableName("tms_project_hidden") +public class ProjectHiddenEntity implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(type = IdType.AUTO) + private Integer id; + + /** + * 项目id + */ + private Integer projectId; + + /** + * 教学实验id + */ + private Integer teachId; + + /** + * 是否隐藏 + */ + private Integer isHidden; +} diff --git a/src/main/java/com/msdw/tms/service/ProjectHiddenService.java b/src/main/java/com/msdw/tms/service/ProjectHiddenService.java new file mode 100644 index 0000000..4a8ed2b --- /dev/null +++ b/src/main/java/com/msdw/tms/service/ProjectHiddenService.java @@ -0,0 +1,7 @@ +package com.msdw.tms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.msdw.tms.entity.ProjectHiddenEntity; + +public interface ProjectHiddenService extends IService { +} diff --git a/src/main/java/com/msdw/tms/service/impl/ProjectHiddenServiceImpl.java b/src/main/java/com/msdw/tms/service/impl/ProjectHiddenServiceImpl.java new file mode 100644 index 0000000..ac567ae --- /dev/null +++ b/src/main/java/com/msdw/tms/service/impl/ProjectHiddenServiceImpl.java @@ -0,0 +1,18 @@ +package com.msdw.tms.service.impl; + + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.msdw.tms.dao.ProjectHiddenDao; +import com.msdw.tms.entity.ProjectHiddenEntity; +import com.msdw.tms.service.ProjectHiddenService; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.Map; +import java.util.function.Function; + +@Service("projectHiddenService") +public class ProjectHiddenServiceImpl extends ServiceImpl implements ProjectHiddenService { + + +} diff --git a/src/main/resources/mapper/tms/ProjectHiddenDao.xml b/src/main/resources/mapper/tms/ProjectHiddenDao.xml new file mode 100644 index 0000000..4b8bc59 --- /dev/null +++ b/src/main/resources/mapper/tms/ProjectHiddenDao.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file From 4b590cfd640ffd6157580d5230b6c8bf666fc20d Mon Sep 17 00:00:00 2001 From: "rong.liu" Date: Wed, 17 Mar 2021 15:38:57 +0800 Subject: [PATCH 11/43] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=9E=E4=BD=93?= =?UTF-8?q?=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msdw/tms/entity/ProjectHiddenEntity.java | 26 +++++++------------ .../AchievementManagementServiceImpl.java | 10 +++---- 2 files changed, 14 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/msdw/tms/entity/ProjectHiddenEntity.java b/src/main/java/com/msdw/tms/entity/ProjectHiddenEntity.java index bcb9d25..c06a2bf 100644 --- a/src/main/java/com/msdw/tms/entity/ProjectHiddenEntity.java +++ b/src/main/java/com/msdw/tms/entity/ProjectHiddenEntity.java @@ -3,40 +3,32 @@ package com.msdw.tms.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.experimental.Accessors; import java.io.Serializable; -/** - * @author Mr.JK - * @date 2021年3月17日15:08:53 - */ -@Accessors(chain = true) @Data +@ApiModel(value = "此表是在教师端成绩管理,虚仿以及教学列表展示中使用到") @TableName("tms_project_hidden") public class ProjectHiddenEntity implements Serializable { + private static final long serialVersionUID = 1L; - /** - * 主键id - */ @TableId(type = IdType.AUTO) + @ApiModelProperty(value = "主键") private Integer id; - /** - * 项目id - */ + @ApiModelProperty(value = "项目id(对应hr_project_management主键)") private Integer projectId; - /** - * 教学实验id - */ + @ApiModelProperty(value = "实验教学id(对应tms_experimental_teaching主键)") private Integer teachId; - /** - * 是否隐藏 - */ + @ApiModelProperty(value = "是否隐藏(0不隐藏,1隐藏)") private Integer isHidden; + + } diff --git a/src/main/java/com/msdw/tms/service/impl/AchievementManagementServiceImpl.java b/src/main/java/com/msdw/tms/service/impl/AchievementManagementServiceImpl.java index d9ce9f2..c1c96e2 100644 --- a/src/main/java/com/msdw/tms/service/impl/AchievementManagementServiceImpl.java +++ b/src/main/java/com/msdw/tms/service/impl/AchievementManagementServiceImpl.java @@ -345,8 +345,8 @@ public class AchievementManagementServiceImpl extends ServiceImpl Date: Wed, 17 Mar 2021 16:27:50 +0800 Subject: [PATCH 12/43] =?UTF-8?q?=E6=88=90=E7=BB=A9=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=A2=9E=E5=8A=A0=E6=A0=87=E8=AF=86=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/msdw/tms/dao/ProjectHiddenDao.java | 3 +++ src/main/java/com/msdw/tms/entity/ResultsEntity.java | 4 +++- .../service/impl/AchievementManagementServiceImpl.java | 8 ++++++++ src/main/resources/mapper/tms/ProjectHiddenDao.xml | 10 +++++++++- 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/msdw/tms/dao/ProjectHiddenDao.java b/src/main/java/com/msdw/tms/dao/ProjectHiddenDao.java index 75566f6..ea4ef92 100644 --- a/src/main/java/com/msdw/tms/dao/ProjectHiddenDao.java +++ b/src/main/java/com/msdw/tms/dao/ProjectHiddenDao.java @@ -7,4 +7,7 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface ProjectHiddenDao extends BaseMapper { + ProjectHiddenEntity selectByProjectId(Integer projectId); + + ProjectHiddenEntity selectByTeachId(Integer teachId); } diff --git a/src/main/java/com/msdw/tms/entity/ResultsEntity.java b/src/main/java/com/msdw/tms/entity/ResultsEntity.java index 4ec085d..653355a 100644 --- a/src/main/java/com/msdw/tms/entity/ResultsEntity.java +++ b/src/main/java/com/msdw/tms/entity/ResultsEntity.java @@ -48,8 +48,10 @@ public class ResultsEntity{ //实验名称 private String experimentalName; + //是否删除 private Integer isdel; - + //是否隐藏项目实体类 + private ProjectHiddenEntity projectHiddenEntity; } diff --git a/src/main/java/com/msdw/tms/service/impl/AchievementManagementServiceImpl.java b/src/main/java/com/msdw/tms/service/impl/AchievementManagementServiceImpl.java index c1c96e2..065cf3a 100644 --- a/src/main/java/com/msdw/tms/service/impl/AchievementManagementServiceImpl.java +++ b/src/main/java/com/msdw/tms/service/impl/AchievementManagementServiceImpl.java @@ -96,9 +96,14 @@ public class AchievementManagementServiceImpl extends ServiceImpl - + + + + + \ No newline at end of file From 0577e59e111a1cc2c75d46faf0c0f0ebb88f54fd Mon Sep 17 00:00:00 2001 From: "rong.liu" Date: Thu, 18 Mar 2021 10:34:57 +0800 Subject: [PATCH 13/43] =?UTF-8?q?=E5=88=86=E9=A1=B5=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 25 +++- .../java/com/msdw/tms/TmsApplication.java | 2 +- .../AchievementManagementController.java | 20 ++-- .../service/AchievementManagementService.java | 7 +- .../AchievementManagementServiceImpl.java | 37 +++++- .../java/com/msdw/tms/util/PageUtils.java | 113 ------------------ 6 files changed, 66 insertions(+), 138 deletions(-) delete mode 100644 src/main/java/com/msdw/tms/util/PageUtils.java diff --git a/pom.xml b/pom.xml index 1888f60..521842c 100644 --- a/pom.xml +++ b/pom.xml @@ -220,10 +220,31 @@ 2.1.1 + com.github.pagehelper - pagehelper - 5.1.2 + pagehelper-spring-boot-starter + 1.2.10 + + + + org.mybatis + mybatis + + + org.mybatis + mybatis-spring + + + + + + com.baomidou + mybatis-plus-boot-starter + 3.2.0 diff --git a/src/main/java/com/msdw/tms/TmsApplication.java b/src/main/java/com/msdw/tms/TmsApplication.java index e2715d0..1e5e101 100644 --- a/src/main/java/com/msdw/tms/TmsApplication.java +++ b/src/main/java/com/msdw/tms/TmsApplication.java @@ -6,7 +6,7 @@ import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.scheduling.annotation.EnableScheduling; -@EnableScheduling//定时任务 +//@EnableScheduling//定时任务 @SpringBootApplication public class TmsApplication extends SpringBootServletInitializer { diff --git a/src/main/java/com/msdw/tms/controller/AchievementManagementController.java b/src/main/java/com/msdw/tms/controller/AchievementManagementController.java index db82573..15e801d 100644 --- a/src/main/java/com/msdw/tms/controller/AchievementManagementController.java +++ b/src/main/java/com/msdw/tms/controller/AchievementManagementController.java @@ -1,6 +1,8 @@ package com.msdw.tms.controller; +import com.github.pagehelper.PageInfo; import com.msdw.tms.api.AchievementManagementApi; +import com.msdw.tms.common.utils.PageUtils; import com.msdw.tms.common.utils.R; import com.msdw.tms.entity.*; import com.msdw.tms.entity.vo.AchievementManagementVO; @@ -8,13 +10,11 @@ import com.msdw.tms.entity.vo.ResultsVo; import com.msdw.tms.service.AchievementManagementService; import com.msdw.tms.service.ProjectRecordService; import com.msdw.tms.util.ListPageUtil; -import com.msdw.tms.util.PageUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; -import java.util.ArrayList; import java.util.List; /** @@ -91,12 +91,10 @@ public class AchievementManagementController implements AchievementManagementApi if (endTime != null) { vo.setEndTime(endTime); } - List result = service.list(vo, page, size); + PageInfo result = service.list(vo, page, size); - ListPageUtil listPageUtil = new ListPageUtil(result, page, size); - List pagedList = listPageUtil.getPagedList(); - PageUtils pageUtils = new PageUtils(pagedList, result.size(), page, size); - return R.ok().put("data", pageUtils); + + return R.ok().put("data", result); } /** @@ -126,12 +124,8 @@ public class AchievementManagementController implements AchievementManagementApi if (endTime != null) { vo.setEndTime(endTime); } - List result = service.newList(vo, page, size); - /*return R.ok().put("data", result);*/ - ListPageUtil listPageUtil = new ListPageUtil(result, page, size); - List pagedList = listPageUtil.getPagedList(); - PageUtils pageUtils = new PageUtils(pagedList, result.size(), page, size); - return R.ok().put("data", pageUtils); + PageInfo result = service.newList(vo, page, size); + return R.ok().put("data", result); } /** diff --git a/src/main/java/com/msdw/tms/service/AchievementManagementService.java b/src/main/java/com/msdw/tms/service/AchievementManagementService.java index dfd3bc2..275b341 100644 --- a/src/main/java/com/msdw/tms/service/AchievementManagementService.java +++ b/src/main/java/com/msdw/tms/service/AchievementManagementService.java @@ -1,16 +1,15 @@ package com.msdw.tms.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.github.pagehelper.PageInfo; import com.msdw.tms.common.utils.R; import com.msdw.tms.entity.ExperimentalReportEntity; -import com.msdw.tms.entity.ExperimentalTeachingEntity; import com.msdw.tms.entity.ReportEntity; import com.msdw.tms.entity.ResultsEntity; import com.msdw.tms.entity.vo.AchievementManagementVO; import com.msdw.tms.entity.vo.ResultsVo; import javax.servlet.http.HttpServletResponse; -import java.util.ArrayList; import java.util.List; public interface AchievementManagementService extends IService { @@ -21,10 +20,10 @@ public interface AchievementManagementService extends IService list(ResultsVo vo, Integer page, Integer size); + PageInfo list(ResultsVo vo, Integer page, Integer size); //查询实验教学列表 - List newList(ResultsVo vo, Integer page, Integer size); + PageInfo newList(ResultsVo vo, Integer page, Integer size); List reportList(ResultsVo vo, Integer page, Integer size); diff --git a/src/main/java/com/msdw/tms/service/impl/AchievementManagementServiceImpl.java b/src/main/java/com/msdw/tms/service/impl/AchievementManagementServiceImpl.java index 065cf3a..b21b766 100644 --- a/src/main/java/com/msdw/tms/service/impl/AchievementManagementServiceImpl.java +++ b/src/main/java/com/msdw/tms/service/impl/AchievementManagementServiceImpl.java @@ -3,6 +3,8 @@ package com.msdw.tms.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.msdw.tms.common.utils.Constant; import com.msdw.tms.common.utils.PageUtils; import com.msdw.tms.common.utils.R; @@ -88,10 +90,12 @@ public class AchievementManagementServiceImpl extends ServiceImpl list(ResultsVo vo, Integer page, Integer size) { - + public PageInfo list(ResultsVo vo, Integer page, Integer size) { + //使用分页插件,核心代码就这一行 + PageHelper.startPage(page, size); List list = achievementManagementDao.list(vo); + PageInfo info = new PageInfo(list); for (ResultsEntity entity : list) { Integer number = achievementManagementDao.getImitationAchievement(entity.getProjectId()).size(); @@ -100,11 +104,30 @@ public class AchievementManagementServiceImpl extends ServiceImpl { + x.setNumber(achievementManagementDao.getImitationAchievement(x.getProjectId()).size()); + x.setProjectHiddenEntity(projectHiddenDao.selectByProjectId(x.getProjectId())); + }); + Date end = new Date(); + // System.out.println("时间1:" + (end.getTime() - begin.getTime())); + + Date begin1 = new Date(); + for (ResultsEntity entity : list) { + Integer number = achievementManagementDao.getImitationAchievement(entity.getProjectId()).size(); + entity.setNumber(number); + ProjectHiddenEntity hiddenEntity = projectHiddenDao.selectByProjectId(entity.getProjectId()); + entity.setProjectHiddenEntity(hiddenEntity); + } + Date end1 = new Date();*/ + //System.out.println("时间2:" + (end1.getTime() - begin1.getTime())); + // PageInfo ret = new PageInfo<>(); - return list; + return info; } @Override @@ -114,7 +137,9 @@ public class AchievementManagementServiceImpl extends ServiceImpl newList(ResultsVo vo, Integer page, Integer size) { + public PageInfo newList(ResultsVo vo, Integer page, Integer size) { + //使用分页插件,核心代码就这一行 + PageHelper.startPage(page, size); List newList = achievementManagementDao.newList(vo); for (ResultsEntity entity : newList) { Integer number = achievementManagementDao.getTeachAchievement(entity.getId()).size(); @@ -123,7 +148,9 @@ public class AchievementManagementServiceImpl extends ServiceImpl - * https://www.renren.io - *

- * 版权所有,侵权必究! - */ - -package com.msdw.tms.util; - -import com.baomidou.mybatisplus.core.metadata.IPage; -import lombok.Data; - -import java.io.Serializable; -import java.util.List; - -/** - * 分页工具类 - * - * @author Mark sunlightcs@gmail.com - */ -@Data -public class PageUtils implements Serializable { - private static final long serialVersionUID = 1L; - /** - * 总记录数 - */ - private int totalCount; - /** - * 每页记录数 - */ - private int pageSize; - /** - * 总页数 - */ - private int totalPage; - /** - * 当前页数 - */ - private int currPage; - /** - * 列表数据 - */ - private List list; - - /** - * 分页 - * - * @param list 列表数据 - * @param totalCount 总记录数 - * @param pageSize 每页记录数 - * @param currPage 当前页数 - */ - public PageUtils(List list, int totalCount, int pageSize, int currPage) { - this.list = list; - this.totalCount = totalCount; - this.pageSize = pageSize; - this.currPage = currPage; - this.totalPage = (int) Math.ceil((double) totalCount / pageSize); - } - - /** - * 分页 - */ - public PageUtils(IPage page) { - this.list = page.getRecords(); - this.totalCount = (int) page.getTotal(); - this.pageSize = (int) page.getSize(); - this.currPage = (int) page.getCurrent(); - this.totalPage = (int) page.getPages(); - } - - public int getTotalCount() { - return totalCount; - } - - public void setTotalCount(int totalCount) { - this.totalCount = totalCount; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public int getTotalPage() { - return totalPage; - } - - public void setTotalPage(int totalPage) { - this.totalPage = totalPage; - } - - public int getCurrPage() { - return currPage; - } - - public void setCurrPage(int currPage) { - this.currPage = currPage; - } - - public List getList() { - return list; - } - - public void setList(List list) { - this.list = list; - } - -} From fa3ccd26be9d1eb0ca40e242e199457e8ec10a08 Mon Sep 17 00:00:00 2001 From: "jiakun.lin" Date: Thu, 18 Mar 2021 10:57:05 +0800 Subject: [PATCH 14/43] =?UTF-8?q?=E6=88=90=E7=BB=A9=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E9=9A=90=E8=97=8F=E6=95=B0=E6=8D=AE=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/msdw/tms/TmsApplication.java | 2 +- src/main/java/com/msdw/tms/entity/ResultsEntity.java | 3 --- .../tms/service/impl/AchievementManagementServiceImpl.java | 6 ------ src/main/resources/mapper/tms/AchievementManagementDao.xml | 7 ++++++- 4 files changed, 7 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/msdw/tms/TmsApplication.java b/src/main/java/com/msdw/tms/TmsApplication.java index 1e5e101..e2715d0 100644 --- a/src/main/java/com/msdw/tms/TmsApplication.java +++ b/src/main/java/com/msdw/tms/TmsApplication.java @@ -6,7 +6,7 @@ import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.scheduling.annotation.EnableScheduling; -//@EnableScheduling//定时任务 +@EnableScheduling//定时任务 @SpringBootApplication public class TmsApplication extends SpringBootServletInitializer { diff --git a/src/main/java/com/msdw/tms/entity/ResultsEntity.java b/src/main/java/com/msdw/tms/entity/ResultsEntity.java index 653355a..f52b044 100644 --- a/src/main/java/com/msdw/tms/entity/ResultsEntity.java +++ b/src/main/java/com/msdw/tms/entity/ResultsEntity.java @@ -51,7 +51,4 @@ public class ResultsEntity{ //是否删除 private Integer isdel; - //是否隐藏项目实体类 - private ProjectHiddenEntity projectHiddenEntity; - } diff --git a/src/main/java/com/msdw/tms/service/impl/AchievementManagementServiceImpl.java b/src/main/java/com/msdw/tms/service/impl/AchievementManagementServiceImpl.java index b21b766..958d62c 100644 --- a/src/main/java/com/msdw/tms/service/impl/AchievementManagementServiceImpl.java +++ b/src/main/java/com/msdw/tms/service/impl/AchievementManagementServiceImpl.java @@ -100,9 +100,6 @@ public class AchievementManagementServiceImpl extends ServiceImpland hpm.projectName like concat('%',#{searchContant},'%') and hpm.creationTime between @@ -500,8 +502,11 @@ FROM tms_experimental_teaching et inner join hr_project_management pm on et.project_id = pm.projectId + LEFT JOIN + tms_project_hidden tph on et.id = tph.teach_id WHERE user_id = #{userId} + AND tph.is_hidden is NULL /*AND pm.isdel = 0*/ and et.experimental_class_name like concat('%',#{searchContant},'%') or et.experimental_name like concat('%',#{searchContant},'%') or From c9c3d1f14b57f7d3027a848f64e6bf13b0bb3f25 Mon Sep 17 00:00:00 2001 From: "zhiyong.ning" <354350178@qq.com> Date: Thu, 18 Mar 2021 15:48:10 +0800 Subject: [PATCH 15/43] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msdw/tms/controller/AchievementManagementController.java | 1 + src/main/resources/mapper/tms/StudentDao.xml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/msdw/tms/controller/AchievementManagementController.java b/src/main/java/com/msdw/tms/controller/AchievementManagementController.java index 15e801d..990ffb3 100644 --- a/src/main/java/com/msdw/tms/controller/AchievementManagementController.java +++ b/src/main/java/com/msdw/tms/controller/AchievementManagementController.java @@ -20,6 +20,7 @@ import java.util.List; /** * 成绩管理 */ +@CrossOrigin @RestController @RequestMapping("/Achievement") public class AchievementManagementController implements AchievementManagementApi { diff --git a/src/main/resources/mapper/tms/StudentDao.xml b/src/main/resources/mapper/tms/StudentDao.xml index 6a11653..58878ee 100644 --- a/src/main/resources/mapper/tms/StudentDao.xml +++ b/src/main/resources/mapper/tms/StudentDao.xml @@ -43,7 +43,7 @@ AND u.isdel = 0 AND l.isdel = 0 AND s.isdel = 0 - AND (l.schoolName LIKE CONCAT('%',#{searchContent},'%') OR u.userName LIKE CONCAT('%',#{searchContent},'%')) + AND (l.schoolName LIKE CONCAT('%',#{searchContent},'%') OR u.userName LIKE CONCAT('%',#{searchContent},'%') OR u.account LIKE CONCAT('%',#{searchContent},'%') ) ORDER BY studentId DESC From 197bf12d2558f9a138933e2ccbfa4334f6fded3e Mon Sep 17 00:00:00 2001 From: "rong.liu" Date: Fri, 19 Mar 2021 15:14:27 +0800 Subject: [PATCH 16/43] =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E6=8A=A5=E5=91=8A?= =?UTF-8?q?=E5=8E=BB=E6=8E=89systemId=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msdw/tms/service/impl/ExperimentalReportServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/msdw/tms/service/impl/ExperimentalReportServiceImpl.java b/src/main/java/com/msdw/tms/service/impl/ExperimentalReportServiceImpl.java index 80ced2d..1b298b2 100644 --- a/src/main/java/com/msdw/tms/service/impl/ExperimentalReportServiceImpl.java +++ b/src/main/java/com/msdw/tms/service/impl/ExperimentalReportServiceImpl.java @@ -56,7 +56,8 @@ public class ExperimentalReportServiceImpl extends ServiceImpl data = achievementManagementDao.queryPythonTest(recordId); HashMap map = new HashMap<>(); map.put("data", data); From 30ad4b516c76eda8e8ba353db431d169bc1083fa Mon Sep 17 00:00:00 2001 From: "zhiyong.ning" <354350178@qq.com> Date: Mon, 22 Mar 2021 15:27:34 +0800 Subject: [PATCH 17/43] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msdw/tms/api/StudentControllerApi.java | 3 ++ .../msdw/tms/api/UserInfoControllerApi.java | 3 ++ .../java/com/msdw/tms/config/SendSMS.java | 3 +- .../tms/controller/StudentController.java | 47 ++++++++++++++++++- .../tms/controller/UserInfoController.java | 47 +++++++++++++++++-- .../com/msdw/tms/entity/vo/StudentVo.java | 1 + .../com/msdw/tms/service/UserInfoService.java | 2 +- .../tms/service/impl/UserInfoServiceImpl.java | 4 +- 8 files changed, 100 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/msdw/tms/api/StudentControllerApi.java b/src/main/java/com/msdw/tms/api/StudentControllerApi.java index d4bd3da..db1438a 100644 --- a/src/main/java/com/msdw/tms/api/StudentControllerApi.java +++ b/src/main/java/com/msdw/tms/api/StudentControllerApi.java @@ -18,6 +18,9 @@ public interface StudentControllerApi { @ApiOperation(value = "新增学生",notes = "新增学生") public R addStudent(@RequestBody StudentVo studentVo); + @ApiOperation(value = "新增学生",notes = "新增学生") + public R zzAddStudent(@RequestBody StudentVo studentVo); + @ApiOperation(value = "学生列表信息",notes = "学生列表信息") public R queryStudent(Integer schoolId, String seachContent, Integer page, Integer size); diff --git a/src/main/java/com/msdw/tms/api/UserInfoControllerApi.java b/src/main/java/com/msdw/tms/api/UserInfoControllerApi.java index 037f505..7f84ee6 100644 --- a/src/main/java/com/msdw/tms/api/UserInfoControllerApi.java +++ b/src/main/java/com/msdw/tms/api/UserInfoControllerApi.java @@ -26,6 +26,9 @@ public interface UserInfoControllerApi { @ApiOperation(value = "注册",notes = "注册") R save(UserInfoEntity entity,@ApiParam(value = "学号",required = true)String workNumber); + @ApiOperation(value = "注册",notes = "注册") + R zzAdd(UserInfoEntity entity,@ApiParam(value = "学号",required = true)String workNumber); + @ApiOperation(value = "个人中心信息展示",notes = "个人中心信息展示") R userInfo(Integer id); diff --git a/src/main/java/com/msdw/tms/config/SendSMS.java b/src/main/java/com/msdw/tms/config/SendSMS.java index f34eb41..aaf7a23 100644 --- a/src/main/java/com/msdw/tms/config/SendSMS.java +++ b/src/main/java/com/msdw/tms/config/SendSMS.java @@ -16,7 +16,7 @@ public class SendSMS { private static final String PHONSMSTEMPLATE = "SMS_204155294"; public static void main(String[] args){ - String mobile="17722612183";//需要接受短信验证码的手机号 + String mobile="12345678910";//需要接受短信验证码的手机号 // String sendTemplate="SMS_204155294";//短信模板ID,需要去阿里云平台申请,审核通过后方能使用,通常是以"SMS_"开头字符串 String code = (int)((Math.random() * 9 + 1) * 100000)+ "";//要发送给用户的短信验证码,行业通常使用六位纯数字 @@ -26,7 +26,6 @@ public class SendSMS { }else{ System.out.println("短信发送失败"); } - } /** * 通过阿里云平台发送短信,如果发送成功,返回"OK" ;否则返回的是错误信息 diff --git a/src/main/java/com/msdw/tms/controller/StudentController.java b/src/main/java/com/msdw/tms/controller/StudentController.java index 614c4b9..5f82491 100644 --- a/src/main/java/com/msdw/tms/controller/StudentController.java +++ b/src/main/java/com/msdw/tms/controller/StudentController.java @@ -40,13 +40,13 @@ public class StudentController implements StudentControllerApi{ private UserInfoService userInfoService; /** - * 新增学生 + * 职站新增学生 * @param studentVo * @return */ @Transactional @Override - @PostMapping("/addStudent") + @PostMapping("/zzAddStudent") public R addStudent(@RequestBody @Valid StudentVo studentVo){ studentVo.setSchoolId(ConstantUtils.Keda_schoolId); String account = studentVo.getAccount(); @@ -83,6 +83,49 @@ public class StudentController implements StudentControllerApi{ } } + /** + * 科大新增学生 + * @param studentVo + * @return + */ + @Transactional + @Override + @PostMapping("/addStudent") + public R zzAddStudent(@RequestBody @Valid StudentVo studentVo){ + String account = studentVo.getAccount(); + String phone = studentVo.getPhone(); + Integer schoolId = studentVo.getSchoolId(); + Integer result = studentService.queryStudentIdNumber(studentVo.getWorkNumber(),schoolId); + Integer res = userInfoService.queryStudentAccount(account,schoolId); + if (phone!=null&&phone!=""){ + Integer outcome = userInfoService.queryStudentPhone(phone); + if(outcome==1){ + return R.error("手机号不能重复,只能绑定一个用户"); + } + } + String email = studentVo.getEmail(); + if (result==1){ + return R.error("学号不能重复"); + }else if (res==1){ + return R.error("账号不能重复"); + } + else{ + UserInfoEntity userInfoList = new UserInfoEntity(); + + userInfoList.setAccount(account) + .setPhone(phone) + .setEmail(studentVo.getEmail()) + .setSchoolId(studentVo.getSchoolAppellationId()) + .setUserName(studentVo.getUserName()) + .setToken(new ConstantUtils().token); + userInfoService.saveUserInfo(userInfoList); + + studentVo.setUserId(userInfoList.getUserId()).setPlatformId(ConstantUtils.PLATFORMID);//暂时写死平台id(PlatformId) + boolean saveStudent = studentService.saveStudent(studentVo); + return saveStudent ? R.ok() : R.error(); + } + } + /** * 学生列表 * @param schoolId diff --git a/src/main/java/com/msdw/tms/controller/UserInfoController.java b/src/main/java/com/msdw/tms/controller/UserInfoController.java index b859d1a..3e1578d 100644 --- a/src/main/java/com/msdw/tms/controller/UserInfoController.java +++ b/src/main/java/com/msdw/tms/controller/UserInfoController.java @@ -62,7 +62,6 @@ public class UserInfoController implements UserInfoControllerApi { public R save(@RequestBody UserInfoEntity userInfoEntity,@RequestParam String workNumber){ String token ="UT_"+ UUID.randomUUID().toString().replace("-", ""); userInfoEntity.setToken(token); - userInfoEntity.setSchoolId(2105); Integer schoolId = userInfoEntity.getSchoolId(); Integer integer = userInfoService.queryStudentAccount(userInfoEntity.getAccount(),schoolId); Integer integer1 = userInfoService.queryStudentPhone(userInfoEntity.getPhone()); @@ -96,6 +95,48 @@ public class UserInfoController implements UserInfoControllerApi { return studentService.addStudentInfo(studentVo); } + /** + * 职站注册 + */ + @Override + @Transactional + @PostMapping("/zzAdd") + public R zzAdd(@RequestBody UserInfoEntity userInfoEntity,@RequestParam String workNumber){ + String token ="UT_"+ UUID.randomUUID().toString().replace("-", ""); + userInfoEntity.setToken(token); + userInfoEntity.setSchoolId(2105); + Integer schoolId = userInfoEntity.getSchoolId(); + Integer integer = userInfoService.queryStudentAccount(userInfoEntity.getAccount(),schoolId); + Integer integer1 = userInfoService.queryStudentPhone(userInfoEntity.getPhone()); + + //新增学生 + StudentVo studentVo = new StudentVo(); + + studentVo.setRoleId(Integer.valueOf(userInfoEntity.getRoleId())); + studentVo.setSchoolId(schoolId); + studentVo.setIsdel(0); + studentVo.setWorkNumber(workNumber); + studentVo.setPlatformId(1); + //为1 学号有重复 + int num = studentService.queryStudentByWorkNumber(studentVo); + if (integer==1){ + return R.error(400,"账号已存在"); + } + if (integer1==1){ + return R.error(400,"该手机号已被绑定"); + } + if (num == 1){ + return R.error(400,"该学号重复!"); + } + int userId = userInfoService.add(userInfoEntity); + if (userId==0){ + return R.error(400,"添加用户信息失败"); + } +// userInfoEntity.setUserId(userId); + studentVo.setUserId(userInfoEntity.getUserId()); + return studentService.addStudentInfo(studentVo); + } + /** * 修改 */ @@ -222,7 +263,7 @@ public class UserInfoController implements UserInfoControllerApi { @Override @GetMapping("/getUserId") public R getUserId(@RequestParam String token){ - Integer userId = userInfoService.getUserId(token); - return R.ok().put("userId", userId); + R result = userInfoService.getUserId(token); + return result; } } diff --git a/src/main/java/com/msdw/tms/entity/vo/StudentVo.java b/src/main/java/com/msdw/tms/entity/vo/StudentVo.java index e1daa44..1617a47 100644 --- a/src/main/java/com/msdw/tms/entity/vo/StudentVo.java +++ b/src/main/java/com/msdw/tms/entity/vo/StudentVo.java @@ -5,6 +5,7 @@ import com.msdw.tms.entity.UserInfoEntity; import lombok.Data; import lombok.experimental.Accessors; +import javax.validation.constraints.NotNull; import javax.validation.constraints.Pattern; import java.util.List; diff --git a/src/main/java/com/msdw/tms/service/UserInfoService.java b/src/main/java/com/msdw/tms/service/UserInfoService.java index b6b52dd..2948e42 100644 --- a/src/main/java/com/msdw/tms/service/UserInfoService.java +++ b/src/main/java/com/msdw/tms/service/UserInfoService.java @@ -48,6 +48,6 @@ public interface UserInfoService extends IService { R queryAccount(); - Integer getUserId(String token); + R getUserId(String token); } diff --git a/src/main/java/com/msdw/tms/service/impl/UserInfoServiceImpl.java b/src/main/java/com/msdw/tms/service/impl/UserInfoServiceImpl.java index 392b2aa..a852738 100644 --- a/src/main/java/com/msdw/tms/service/impl/UserInfoServiceImpl.java +++ b/src/main/java/com/msdw/tms/service/impl/UserInfoServiceImpl.java @@ -223,8 +223,8 @@ public class UserInfoServiceImpl extends ServiceImpl Date: Tue, 23 Mar 2021 11:53:25 +0800 Subject: [PATCH 18/43] =?UTF-8?q?=E5=AD=A6=E7=94=9F=E7=AB=AF=E5=AE=9E?= =?UTF-8?q?=E9=AA=8C=E8=AE=B0=E5=BD=95=E8=80=83=E6=A0=B8=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=B3=BB=E7=BB=9F=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tms/api/ProjectRcordControllerApi.java | 2 +- .../controller/ProjectRecordController.java | 73 +++++++++++-------- .../com/msdw/tms/dao/ProjectRecordDao.java | 6 +- .../msdw/tms/entity/vo/ProjectRecordVo.java | 13 +++- .../tms/service/ProjectRecordService.java | 2 +- .../impl/ProjectRecordServiceImpl.java | 12 +-- .../resources/mapper/tms/ProjectRecordDao.xml | 39 +++++----- 7 files changed, 80 insertions(+), 67 deletions(-) diff --git a/src/main/java/com/msdw/tms/api/ProjectRcordControllerApi.java b/src/main/java/com/msdw/tms/api/ProjectRcordControllerApi.java index 06eb889..655e53c 100644 --- a/src/main/java/com/msdw/tms/api/ProjectRcordControllerApi.java +++ b/src/main/java/com/msdw/tms/api/ProjectRcordControllerApi.java @@ -25,7 +25,7 @@ public interface ProjectRcordControllerApi { R queryUserRecord(Integer page,Integer size,Integer userId,Integer projectPermissions,Integer systemId); @ApiOperation(value = "用户端教学实验记录",notes = "用户端教学实验记录") - R getUserExperimentscore(Integer page,Integer size,Integer userid); + R getUserExperimentscore(Integer page,Integer size,Integer userid, Integer systemId); @ApiOperation(value = "个人实验概览",notes = "个人实验概览") R queryScore(Integer userId); diff --git a/src/main/java/com/msdw/tms/controller/ProjectRecordController.java b/src/main/java/com/msdw/tms/controller/ProjectRecordController.java index 55374c2..1f8ecdf 100644 --- a/src/main/java/com/msdw/tms/controller/ProjectRecordController.java +++ b/src/main/java/com/msdw/tms/controller/ProjectRecordController.java @@ -18,10 +18,8 @@ import java.util.HashMap; import java.util.List; /** - * - * - * @author - * @email + * @author + * @email * @date 2020-08-19 16:07:02 */ @RestController @@ -35,27 +33,32 @@ public class ProjectRecordController implements ProjectRcordControllerApi { */ @Override @GetMapping("/schoolRecord") - public R list(@RequestParam Integer page, @RequestParam Integer size, @RequestParam Integer month,@RequestParam String startTime,@RequestParam String endTime, - @RequestParam Integer recordState,@RequestParam String condition ){ + public R list(@RequestParam Integer page, @RequestParam Integer size, @RequestParam Integer month, @RequestParam String startTime, @RequestParam String endTime, + @RequestParam Integer recordState, @RequestParam String condition) { ProjectRecordVo recordVo = new ProjectRecordVo(); - if(!StringUtils.isEmpty(month)) { + if (!StringUtils.isEmpty(month)) { recordVo.setMonth(month); - }if(!StringUtils.isEmpty(startTime)) { + } + if (!StringUtils.isEmpty(startTime)) { recordVo.setStartTime(startTime); - }if(!StringUtils.isEmpty(endTime)) { + } + if (!StringUtils.isEmpty(endTime)) { recordVo.setEndTime(endTime); - }if(!StringUtils.isEmpty(recordState)) { + } + if (!StringUtils.isEmpty(recordState)) { recordVo.setRecordstate(recordState); - }if(!StringUtils.isEmpty(condition)){ + } + if (!StringUtils.isEmpty(condition)) { recordVo.setCondition(condition); } - PageUtils page1 = projectRecordService.querySchoolRecord(page,size,recordVo); + PageUtils page1 = projectRecordService.querySchoolRecord(page, size, recordVo); return R.ok().put("page", page1); } /** * 用户端虚拟仿真实验记录 + * * @param page * @param size * @param @@ -63,13 +66,14 @@ public class ProjectRecordController implements ProjectRcordControllerApi { */ @Override @GetMapping("/user/record") - public R queryUserRecord(@RequestParam Integer page,@RequestParam Integer size,@RequestParam Integer userId,@RequestParam Integer projectPermissions,@RequestParam Integer systemId){ - PageUtils page1 = projectRecordService.queryPage(page,size,userId,projectPermissions,systemId); + public R queryUserRecord(@RequestParam Integer page, @RequestParam Integer size, @RequestParam Integer userId, @RequestParam Integer projectPermissions, @RequestParam Integer systemId) { + PageUtils page1 = projectRecordService.queryPage(page, size, userId, projectPermissions, systemId); return R.ok().put("data", page1); } /** * 科大用户端虚拟仿真实验记录 + * * @param page * @param size * @param @@ -77,13 +81,14 @@ public class ProjectRecordController implements ProjectRcordControllerApi { */ @Override @GetMapping("/user/kdRecord") - public R kdRecord(@RequestParam Integer page,@RequestParam Integer size,@RequestParam Integer userId,@RequestParam Integer projectPermissions,@RequestParam Integer systemId){ - PageUtils page1 = projectRecordService.getByKDUserRecord(page,size,userId,projectPermissions,systemId); + public R kdRecord(@RequestParam Integer page, @RequestParam Integer size, @RequestParam Integer userId, @RequestParam Integer projectPermissions, @RequestParam Integer systemId) { + PageUtils page1 = projectRecordService.getByKDUserRecord(page, size, userId, projectPermissions, systemId); return R.ok().put("data", page1); } /** * 用户端教学实验记录 + * * @param page * @param size * @param userid @@ -91,20 +96,21 @@ public class ProjectRecordController implements ProjectRcordControllerApi { */ @Override @GetMapping("/user/experimentRecord") - public R getUserExperimentscore(@RequestParam Integer page,@RequestParam Integer size,@RequestParam Integer userid){ - PageUtils page1 = projectRecordService.queryExperimentPage(page,size,userid); + public R getUserExperimentscore(@RequestParam Integer page, @RequestParam Integer size, @RequestParam Integer userid, @RequestParam Integer systemId) { + PageUtils page1 = projectRecordService.queryExperimentPage(page, size, userid, systemId); return R.ok().put("data", page1); } /** * 个人实验预览 + * * @param userId * @return */ @Override @GetMapping("/user/queryScore/{userId}") - public R queryScore(@PathVariable("userId") Integer userId){ + public R queryScore(@PathVariable("userId") Integer userId) { ProjectRecordVo projectRecord = projectRecordService.queryScore(userId); return R.ok().put("data", projectRecord); @@ -112,12 +118,13 @@ public class ProjectRecordController implements ProjectRcordControllerApi { /** * 个人实验预览 + * * @param userid * @return */ @Override @GetMapping("/user/score/{userId}") - public R getUserScore(@PathVariable("userId") Integer userid){ + public R getUserScore(@PathVariable("userId") Integer userid) { ProjectRecordVo projectRecord = projectRecordService.queryUserScore(userid); return R.ok().put("data", projectRecord); @@ -125,35 +132,37 @@ public class ProjectRecordController implements ProjectRcordControllerApi { /** * 导出个人虚拟仿真实验记录 + * * @param response * @param userId * @throws Exception */ @Override @GetMapping("/user/exportProjectRecord") - public void exportProjectRecord(HttpServletResponse response,@RequestParam("userId") Integer userId)throws Exception{ - projectRecordService.exportProjectRecord(response,userId); + public void exportProjectRecord(HttpServletResponse response, @RequestParam("userId") Integer userId) throws Exception { + projectRecordService.exportProjectRecord(response, userId); } /** * 导出个人教学实验记录 + * * @param response * @param userId * @throws Exception */ @Override @GetMapping("/user/exportExperimentProjectRecord") - public void exportExperimentProjectRecord(HttpServletResponse response,@RequestParam("userId") Integer userId)throws Exception{ - projectRecordService.exportExperimentProjectRecord(response,userId); + public void exportExperimentProjectRecord(HttpServletResponse response, @RequestParam("userId") Integer userId) throws Exception { + projectRecordService.exportExperimentProjectRecord(response, userId); } /** * 信息 */ @GetMapping("/info/{recordid}") - public R info(@PathVariable("recordid") Integer recordid){ - ProjectRecordEntity projectRecord = projectRecordService.getById(recordid); + public R info(@PathVariable("recordid") Integer recordid) { + ProjectRecordEntity projectRecord = projectRecordService.getById(recordid); return R.ok().put("projectRecord", projectRecord); } @@ -162,8 +171,8 @@ public class ProjectRecordController implements ProjectRcordControllerApi { * 保存 */ @RequestMapping("/save") - public R save(@RequestBody ProjectRecordEntity projectRecord){ - projectRecordService.save(projectRecord); + public R save(@RequestBody ProjectRecordEntity projectRecord) { + projectRecordService.save(projectRecord); return R.ok(); } @@ -173,10 +182,10 @@ public class ProjectRecordController implements ProjectRcordControllerApi { */ @Override @PutMapping("/update") - public R update(@RequestBody ProjectRecordEntity projectRecord){ + public R update(@RequestBody ProjectRecordEntity projectRecord) { boolean result = projectRecordService.updateUserRecord(projectRecord); - return R.ok().put("data",result); + return R.ok().put("data", result); } /** @@ -184,8 +193,8 @@ public class ProjectRecordController implements ProjectRcordControllerApi { */ @Override @DeleteMapping("/delete") - public R delete(@RequestBody Integer[] recordids){ - projectRecordService.removeByIds(Arrays.asList(recordids)); + public R delete(@RequestBody Integer[] recordids) { + projectRecordService.removeByIds(Arrays.asList(recordids)); return R.ok(); } diff --git a/src/main/java/com/msdw/tms/dao/ProjectRecordDao.java b/src/main/java/com/msdw/tms/dao/ProjectRecordDao.java index ef3a655..c1a5785 100644 --- a/src/main/java/com/msdw/tms/dao/ProjectRecordDao.java +++ b/src/main/java/com/msdw/tms/dao/ProjectRecordDao.java @@ -23,11 +23,11 @@ import java.util.List; @Mapper public interface ProjectRecordDao extends BaseMapper { - IPage getByKDUserRecord(Page page,@Param("pro") ProjectRecordEntity projectRecordEntity,Integer projectPermissions); + IPage getByKDUserRecord(Page page, @Param("pro") ProjectRecordEntity projectRecordEntity, Integer projectPermissions); - IPage getByUserRecord(Page page, @Param("userId") Integer userId, @Param("projectPermissions") Integer projectPermissions,@Param("systemId") Integer systemId); + IPage getByUserRecord(Page page, @Param("userId") Integer userId, @Param("projectPermissions") Integer projectPermissions, @Param("systemId") Integer systemId); - IPage getByUserExperimentRecord(Page page, @Param("pro") ProjectRecordEntity projectRecordEntity); + IPage getByUserExperimentRecord(Page page, @Param("pro") ProjectRecordEntity projectRecordEntity, Integer systemId); List getByUserRecordImport(ProjectRecordEntity projectRecordEntity); diff --git a/src/main/java/com/msdw/tms/entity/vo/ProjectRecordVo.java b/src/main/java/com/msdw/tms/entity/vo/ProjectRecordVo.java index adb3cfc..fc7884a 100644 --- a/src/main/java/com/msdw/tms/entity/vo/ProjectRecordVo.java +++ b/src/main/java/com/msdw/tms/entity/vo/ProjectRecordVo.java @@ -51,7 +51,7 @@ public class ProjectRecordVo extends ProjectRecordEntity implements Serializable /** * 平均分 */ - private double avgScore; + private double avgScore; /** * 几个月 */ @@ -59,7 +59,7 @@ public class ProjectRecordVo extends ProjectRecordEntity implements Serializable /** * 查询条件 */ - private String condition; + private String condition; /** * 开始时间 */ @@ -76,7 +76,9 @@ public class ProjectRecordVo extends ProjectRecordEntity implements Serializable * 待评分 */ private Integer tobescored; - /** 记录状态(0 未修改,1 已修改)*/ + /** + * 记录状态(0 未修改,1 已修改) + */ private Integer recordState; // =====================================记录实验项目信息 /** @@ -109,4 +111,9 @@ public class ProjectRecordVo extends ProjectRecordEntity implements Serializable */ private Integer schoolId; + /** + * 系统id + */ + private Integer systemId; + } diff --git a/src/main/java/com/msdw/tms/service/ProjectRecordService.java b/src/main/java/com/msdw/tms/service/ProjectRecordService.java index 5da29f2..d031075 100644 --- a/src/main/java/com/msdw/tms/service/ProjectRecordService.java +++ b/src/main/java/com/msdw/tms/service/ProjectRecordService.java @@ -20,7 +20,7 @@ public interface ProjectRecordService extends IService { PageUtils queryPage(Integer page, Integer size, Integer userId, Integer projectPermissions,Integer systemId); - PageUtils queryExperimentPage(Integer page, Integer size, Integer userid); + PageUtils queryExperimentPage(Integer page, Integer size, Integer userid,Integer systemId); ProjectRecordVo queryUserScore(Integer userId); diff --git a/src/main/java/com/msdw/tms/service/impl/ProjectRecordServiceImpl.java b/src/main/java/com/msdw/tms/service/impl/ProjectRecordServiceImpl.java index 89c6c31..972a7fa 100644 --- a/src/main/java/com/msdw/tms/service/impl/ProjectRecordServiceImpl.java +++ b/src/main/java/com/msdw/tms/service/impl/ProjectRecordServiceImpl.java @@ -38,14 +38,14 @@ public class ProjectRecordServiceImpl extends ServiceImpl page1 = new Page<>(page, size); - IPage projectRecordVos = this.baseMapper.getByKDUserRecord(page1,projectRecord,projectPermissions); + IPage projectRecordVos = this.baseMapper.getByKDUserRecord(page1, projectRecord, projectPermissions); PageUtils questionsPage = new PageUtils(projectRecordVos); @@ -53,7 +53,7 @@ public class ProjectRecordServiceImpl extends ServiceImpl page1 = new Page<>(page, size); - IPage projectRecordVos = this.baseMapper.getByUserRecord(page1, userId, projectPermissions,systemId); + IPage projectRecordVos = this.baseMapper.getByUserRecord(page1, userId, projectPermissions, systemId); PageUtils questionsPage = new PageUtils(projectRecordVos); @@ -69,14 +69,14 @@ public class ProjectRecordServiceImpl extends ServiceImpl page1 = new Page<>(page, size); - IPage projectRecordVos = this.baseMapper.getByUserExperimentRecord(page1, projectRecord); + IPage projectRecordVos = this.baseMapper.getByUserExperimentRecord(page1, projectRecord, systemId); PageUtils questionsPage = new PageUtils(projectRecordVos); diff --git a/src/main/resources/mapper/tms/ProjectRecordDao.xml b/src/main/resources/mapper/tms/ProjectRecordDao.xml index fd6d0cd..94c092d 100644 --- a/src/main/resources/mapper/tms/ProjectRecordDao.xml +++ b/src/main/resources/mapper/tms/ProjectRecordDao.xml @@ -22,26 +22,21 @@ - + SELECT her.reportId as reportId, + her.projectId, + projectName, + her.score, + her.timeConsuming, + her.startTime, + her.creationTime as endTime, + her.className + FROM hr_experimental_report her + LEFT JOIN hr_project_management tp ON her.projectId = tp.projectId + WHERE her.studentId = #{pro.userid} + AND her.isdel = 0 + AND tp.projectPermissions = #{projectPermissions} + order by her.creationTime desc @@ -81,12 +76,14 @@ startingTime as startTime, endTime, recordState, - tet.experimental_class_name as experimentalClassName + tet.experimental_class_name as experimentalClassName, + systemId FROM tms_project_record tpr LEFT JOIN hr_project_management tp ON tpr.projectId = tp.projectId LEFT JOIN tms_experimental_teaching tet ON tet.project_id = tpr.projectId LEFT JOIN tms_experimental_report ter ON ter.projectId = tet.id WHERE tpr.userId = #{pro.userid} + and systemId = #{systemId} AND tpr.isdel >= #{pro.isdel} AND tp.projectPermissions !=0 AND From 8eae903671c13cd0dc6ecdb11e96628af5f1fa21 Mon Sep 17 00:00:00 2001 From: "rong.liu" Date: Tue, 23 Mar 2021 14:25:23 +0800 Subject: [PATCH 19/43] =?UTF-8?q?xml=E5=8F=82=E6=95=B0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/mapper/tms/ProjectRecordDao.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/mapper/tms/ProjectRecordDao.xml b/src/main/resources/mapper/tms/ProjectRecordDao.xml index 94c092d..a1895d8 100644 --- a/src/main/resources/mapper/tms/ProjectRecordDao.xml +++ b/src/main/resources/mapper/tms/ProjectRecordDao.xml @@ -136,7 +136,7 @@ + - + - SELECT schoolName, - experimental_class_name, - userName, - workNumber, - r.score, - r.recordId, - report.reportId, - r.submitTime, - stu.studentId, - t.id AS projectId, - experimental_name AS experimentalName + experimental_class_name, + userName, + workNumber, + r.score, + r.recordId, + report.reportId, + r.submitTime, + stu.studentId, + t.id AS projectId, + experimental_name AS experimentalName FROM tms_experimental_teaching t - INNER JOIN tms_experimental_report report ON report.projectId = t.id - INNER JOIN tms_project_record r ON r.recordId = report.eventId - INNER JOIN hr_user_info u ON u.userId = r.userId - INNER JOIN school s ON s.schoolId = u.schoolId - INNER JOIN student stu ON stu.userId = u.userId - WHERE t.id = #{id} - AND report.isdel = 0 + INNER JOIN tms_experimental_report report ON report.projectId = t.id + INNER JOIN tms_project_record r ON r.recordId = report.eventId + INNER JOIN hr_user_info u ON u.userId = r.userId + INNER JOIN school s ON s.schoolId = u.schoolId + INNER JOIN student stu ON stu.userId = u.userId + WHERE + + r.recordId IN ( + + #{recordId} + + ) + + + AND report.isdel = 0 + SELECT re.reportId, + projectName, + c.recordId, + r.score, + c.codeId, + r.startingTime, + r.submitTime, + r.timeSum, + c.userId, + t.systemId + FROM hr_experiment_code c + INNER JOIN hr_project_management t ON t.projectId = c.projectId + INNER JOIN tms_project_record r ON r.recordId = c.recordId + INNER JOIN tms_experimental_report re ON re.eventId = r.recordId + WHERE c.userId = #{userId} + AND projectPermissions = 0 + GROUP BY c.recordId DESC; + + + + \ No newline at end of file From cf83a5cc0ea4219114771f698dfdece011e2f042 Mon Sep 17 00:00:00 2001 From: "rong.liu" Date: Wed, 24 Mar 2021 15:52:07 +0800 Subject: [PATCH 26/43] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AD=A6=E7=94=9F?= =?UTF-8?q?=E7=AB=AF=E5=AE=9E=E9=AA=8C=E6=A6=82=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msdw/tms/entity/vo/ProjectRecordVo.java | 1 + .../impl/ProjectRecordServiceImpl.java | 43 +++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/src/main/java/com/msdw/tms/entity/vo/ProjectRecordVo.java b/src/main/java/com/msdw/tms/entity/vo/ProjectRecordVo.java index fc7884a..6132610 100644 --- a/src/main/java/com/msdw/tms/entity/vo/ProjectRecordVo.java +++ b/src/main/java/com/msdw/tms/entity/vo/ProjectRecordVo.java @@ -5,6 +5,7 @@ import lombok.Data; import lombok.experimental.Accessors; import java.io.Serializable; +import java.math.BigDecimal; import java.util.List; @Data diff --git a/src/main/java/com/msdw/tms/service/impl/ProjectRecordServiceImpl.java b/src/main/java/com/msdw/tms/service/impl/ProjectRecordServiceImpl.java index 543d8b6..ee92bb8 100644 --- a/src/main/java/com/msdw/tms/service/impl/ProjectRecordServiceImpl.java +++ b/src/main/java/com/msdw/tms/service/impl/ProjectRecordServiceImpl.java @@ -24,6 +24,8 @@ import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import java.io.InputStream; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.DecimalFormat; import java.util.HashMap; import java.util.List; @@ -92,12 +94,53 @@ public class ProjectRecordServiceImpl extends ServiceImpl sumByPracticeNum = this.baseMapper.sumByPracticeNum(userId); + //练习总分 + Integer practiceByScore = 0; + //练习总耗时 + Integer practiceByTime = 0; + for (GetByUserRecordResp resp : sumByPracticeNum) { + //累计总分 + practiceByScore += resp.getScore(); + //累计时间 + practiceByTime += resp.getTimeSum(); + } + //考核统计 List sumByAssessmentNum = this.baseMapper.sumByAssessmentNum(userId); + //练习总分 + Integer assessmenteByScore = 0; + //练习总耗时 + double assessmentByTime = 0; + for (ProjectRecordVo vo : sumByAssessmentNum) { + //累计总分 + assessmenteByScore += vo.getScore(); + //累计时间 + assessmentByTime += vo.getTimeSum(); + } + + + //设置实验次数 Integer numer = sumByPracticeNum.size() + sumByAssessmentNum.size(); projectRecordVo.setExperimentNumber(numer); + + //取平均分 + //BigDecimal getSumByScore = (new BigDecimal(practiceByScore).add(new BigDecimal(assessmenteByScore))).divide(new BigDecimal(numer)).setScale(2, RoundingMode.HALF_UP); + + if (practiceByScore + assessmenteByScore != 0) { + double getSumByScore = (practiceByScore + assessmenteByScore) / numer; + projectRecordVo.setAvgScore(getSumByScore); + } else { + projectRecordVo.setAvgScore(0); + } + + + //获得总耗时 + double getTime = practiceByTime + assessmentByTime; + projectRecordVo.setTotalTime(new Double(getTime)); + + Double totalTime = projectRecordVo.getTotalTime(); if (totalTime != null) { DecimalFormat df = new DecimalFormat("0.00"); From ab8ef68d516b8595598b7401ff8a6471c3b06d3b Mon Sep 17 00:00:00 2001 From: "jiakun.lin" Date: Wed, 24 Mar 2021 17:16:12 +0800 Subject: [PATCH 27/43] =?UTF-8?q?=E5=8F=91=E9=80=81=E9=82=AE=E4=BB=B6?= =?UTF-8?q?=E6=9B=B4=E6=8D=A2=E7=AB=AF=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/msdw/tms/config/EmailUtils.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/msdw/tms/config/EmailUtils.java b/src/main/java/com/msdw/tms/config/EmailUtils.java index cee3b26..1f2e9de 100644 --- a/src/main/java/com/msdw/tms/config/EmailUtils.java +++ b/src/main/java/com/msdw/tms/config/EmailUtils.java @@ -30,6 +30,8 @@ public class EmailUtils { try { HtmlEmail email = new HtmlEmail(); email.setHostName(SERVER_ADDRESS); + email.setSSLOnConnect(true); //使用ssl加密true + email.setSslSmtpPort("465"); //使用465端口 email.setCharset("UTF-8"); email.addTo(emailaddress); From 29af2bb66dc94b7577622e4eac23011ab3ab05d1 Mon Sep 17 00:00:00 2001 From: "jiakun.lin" Date: Fri, 26 Mar 2021 16:03:12 +0800 Subject: [PATCH 28/43] =?UTF-8?q?=E7=BB=83=E4=B9=A0=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E6=9B=B4=E6=94=B9=20=E8=80=83=E6=A0=B8?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E6=A8=A1=E6=9D=BF=E6=9B=B4=E6=94=B9=20?= =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E6=8A=A5=E5=91=8A=E6=8E=A5=E5=8F=A3=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E8=80=83=E6=A0=B8=E5=90=8D=E7=A7=B0=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/msdw/tms/entity/vo/ProjectRecordVo.java | 5 ++++- .../service/impl/ProjectRecordServiceImpl.java | 8 ++++---- .../教学实验报告导出模板.xlsx | Bin 10353 -> 0 bytes .../虚拟仿真实验报告导出模板.xlsx | Bin 10315 -> 0 bytes .../resources/mapper/tms/ProjectRecordDao.xml | 1 + 5 files changed, 9 insertions(+), 5 deletions(-) delete mode 100644 src/main/resources/excel-template/教学实验报告导出模板.xlsx delete mode 100644 src/main/resources/excel-template/虚拟仿真实验报告导出模板.xlsx diff --git a/src/main/java/com/msdw/tms/entity/vo/ProjectRecordVo.java b/src/main/java/com/msdw/tms/entity/vo/ProjectRecordVo.java index 6132610..9dc2a0b 100644 --- a/src/main/java/com/msdw/tms/entity/vo/ProjectRecordVo.java +++ b/src/main/java/com/msdw/tms/entity/vo/ProjectRecordVo.java @@ -98,7 +98,10 @@ public class ProjectRecordVo extends ProjectRecordEntity implements Serializable * 实验班级名 */ private String experimentalClassName; - + /** + * 实验名称 + */ + private String experimentalName; /** * 封装多个项目id */ diff --git a/src/main/java/com/msdw/tms/service/impl/ProjectRecordServiceImpl.java b/src/main/java/com/msdw/tms/service/impl/ProjectRecordServiceImpl.java index ee92bb8..8edb4c7 100644 --- a/src/main/java/com/msdw/tms/service/impl/ProjectRecordServiceImpl.java +++ b/src/main/java/com/msdw/tms/service/impl/ProjectRecordServiceImpl.java @@ -178,13 +178,13 @@ public class ProjectRecordServiceImpl extends ServiceImpl2cXvo|clV$HK1j~l+2QQ( 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 Date: Fri, 26 Mar 2021 16:03:59 +0800 Subject: [PATCH 29/43] =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../excel-template/练习记录模板.xlsx | Bin 0 -> 10339 bytes .../excel-template/考核记录模板.xlsx | Bin 0 -> 10434 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/excel-template/练习记录模板.xlsx create mode 100644 src/main/resources/excel-template/考核记录模板.xlsx diff --git a/src/main/resources/excel-template/练习记录模板.xlsx b/src/main/resources/excel-template/练习记录模板.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..5152cd1422a1dc4d11735d7c6b3972d71fb1151f GIT binary patch literal 10339 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/excel-template/考核记录模板.xlsx b/src/main/resources/excel-template/考核记录模板.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..1e4724ef816ce66185b706e3c33cf69c7cdfa8a0 GIT binary patch literal 10434 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 literal 0 HcmV?d00001 From 3776011f2863d073ead42e3f4ec4c1f40ef4da8e Mon Sep 17 00:00:00 2001 From: "jiakun.lin" Date: Fri, 26 Mar 2021 17:03:45 +0800 Subject: [PATCH 30/43] =?UTF-8?q?=E6=95=99=E5=B8=88=E7=AB=AF=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E9=AA=8C=E8=AF=81=E8=80=81=E5=B8=88=E8=B4=A6=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/msdw/tms/controller/UserInfoController.java | 6 ++++++ src/main/java/com/msdw/tms/dao/UserInfoDao.java | 2 ++ src/main/java/com/msdw/tms/service/UserInfoService.java | 1 + .../com/msdw/tms/service/impl/UserInfoServiceImpl.java | 8 ++++++++ src/main/resources/mapper/tms/UserInfoDao.xml | 4 ++++ 5 files changed, 21 insertions(+) diff --git a/src/main/java/com/msdw/tms/controller/UserInfoController.java b/src/main/java/com/msdw/tms/controller/UserInfoController.java index 3e1578d..1ea72ce 100644 --- a/src/main/java/com/msdw/tms/controller/UserInfoController.java +++ b/src/main/java/com/msdw/tms/controller/UserInfoController.java @@ -182,6 +182,12 @@ public class UserInfoController implements UserInfoControllerApi { UserInfoEntity userInfo = vo.getUserInfoEntity(); Integer userId = userInfo.getUserId(); String password = userInfo.getPassword(); + + //验证账号是否存在 + int num = userInfoService.queryAccountExist(userInfo.getAccount()); + if (num >= 1){ + return R.error(500,"更新失败,账号不能重复"); + } String userPassword = userInfoService.queryPasword(userId); if (userPassword.equals(password)==true){ return R.error(400,"false,the password is the same!!!"); diff --git a/src/main/java/com/msdw/tms/dao/UserInfoDao.java b/src/main/java/com/msdw/tms/dao/UserInfoDao.java index b1a3cfc..ccdb1fc 100644 --- a/src/main/java/com/msdw/tms/dao/UserInfoDao.java +++ b/src/main/java/com/msdw/tms/dao/UserInfoDao.java @@ -66,4 +66,6 @@ public interface UserInfoDao extends BaseMapper { List queryStudentName(Integer userId); Integer getUserId(String token); + + Integer queryAccountExist(String account); } diff --git a/src/main/java/com/msdw/tms/service/UserInfoService.java b/src/main/java/com/msdw/tms/service/UserInfoService.java index 2948e42..59b44e0 100644 --- a/src/main/java/com/msdw/tms/service/UserInfoService.java +++ b/src/main/java/com/msdw/tms/service/UserInfoService.java @@ -50,4 +50,5 @@ public interface UserInfoService extends IService { R getUserId(String token); + Integer queryAccountExist(String account); } diff --git a/src/main/java/com/msdw/tms/service/impl/UserInfoServiceImpl.java b/src/main/java/com/msdw/tms/service/impl/UserInfoServiceImpl.java index a852738..17459cc 100644 --- a/src/main/java/com/msdw/tms/service/impl/UserInfoServiceImpl.java +++ b/src/main/java/com/msdw/tms/service/impl/UserInfoServiceImpl.java @@ -227,4 +227,12 @@ public class UserInfoServiceImpl extends ServiceImpl + + \ No newline at end of file From 03ecbe11ceacd1363d2e6539b1cded6a674b2b5f Mon Sep 17 00:00:00 2001 From: "jiakun.lin" Date: Fri, 26 Mar 2021 17:18:29 +0800 Subject: [PATCH 31/43] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/msdw/tms/service/impl/UserInfoServiceImpl.java | 5 +---- src/main/resources/mapper/tms/UserInfoDao.xml | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/msdw/tms/service/impl/UserInfoServiceImpl.java b/src/main/java/com/msdw/tms/service/impl/UserInfoServiceImpl.java index 17459cc..3559522 100644 --- a/src/main/java/com/msdw/tms/service/impl/UserInfoServiceImpl.java +++ b/src/main/java/com/msdw/tms/service/impl/UserInfoServiceImpl.java @@ -230,9 +230,6 @@ public class UserInfoServiceImpl extends ServiceImpl \ No newline at end of file From 3d38d6559ab7714502dd1d3bc829113c6d6a0a0d Mon Sep 17 00:00:00 2001 From: "rong.liu" Date: Fri, 26 Mar 2021 17:18:48 +0800 Subject: [PATCH 32/43] =?UTF-8?q?=E5=AD=A6=E7=94=9F=E3=80=81=E5=91=98?= =?UTF-8?q?=E5=B7=A5=E5=AF=BC=E5=85=A5=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/msdw/tms/TmsApplication.java | 2 +- .../tms/common/utils/ExcelImportHelper.java | 213 ++++++--- .../msdw/tms/entity/response/CommonCode.java | 8 +- .../tms/entity/vo/StudentImportFailureVo.java | 14 +- .../tms/service/impl/StudentServiceImpl.java | 187 +++++--- .../impl/SystemSettingServiceImpl.java | 419 ++++++++++++++---- ...生导入失败数据导出模板(1).xlsx | Bin 0 -> 9279 bytes src/main/resources/mapper/tms/UserInfoDao.xml | 2 +- 8 files changed, 618 insertions(+), 227 deletions(-) create mode 100644 src/main/resources/excel-template/学生导入失败数据导出模板(1).xlsx diff --git a/src/main/java/com/msdw/tms/TmsApplication.java b/src/main/java/com/msdw/tms/TmsApplication.java index e2715d0..1e5e101 100644 --- a/src/main/java/com/msdw/tms/TmsApplication.java +++ b/src/main/java/com/msdw/tms/TmsApplication.java @@ -6,7 +6,7 @@ import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.scheduling.annotation.EnableScheduling; -@EnableScheduling//定时任务 +//@EnableScheduling//定时任务 @SpringBootApplication public class TmsApplication extends SpringBootServletInitializer { diff --git a/src/main/java/com/msdw/tms/common/utils/ExcelImportHelper.java b/src/main/java/com/msdw/tms/common/utils/ExcelImportHelper.java index 83a3ff9..5de5e0a 100644 --- a/src/main/java/com/msdw/tms/common/utils/ExcelImportHelper.java +++ b/src/main/java/com/msdw/tms/common/utils/ExcelImportHelper.java @@ -1,7 +1,12 @@ package com.msdw.tms.common.utils; +import com.msdw.tms.common.exception.ExceptionCast; +import com.msdw.tms.entity.response.CommonCode; import com.msdw.tms.entity.vo.StaffVo; import com.msdw.tms.entity.vo.StudentVo; +import org.apache.commons.lang.StringUtils; +import org.apache.poi.hssf.usermodel.HSSFCell; +import org.apache.poi.hssf.usermodel.HSSFRichTextString; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; @@ -13,15 +18,62 @@ import java.util.List; public class ExcelImportHelper { + + //判断row是否为空 + public static boolean isRowEmpty(Row row) { + if (null == row) { + return true; + } + int firstCellNum = row.getFirstCellNum(); //第一个列位置 + int lastCellNum = row.getLastCellNum(); //最后一列位置 + int nullCellNum = 0; //空列数量 + for (int c = firstCellNum; c < lastCellNum; c++) { + Cell cell = row.getCell(c); + if (null == cell || CellType.BLANK == cell.getCellType()) { + nullCellNum++; + continue; + } + cell.setCellType(CellType.STRING); + String cellValue = cell.getStringCellValue().trim(); + if (StringUtils.isEmpty(cellValue)) { + nullCellNum++; + } + } + //所有列都为空 + if (nullCellNum == (lastCellNum - firstCellNum)) { + return true; + } + return false; + } + + //todo 解决POI无法同时读取带多种格式的单元格表格 + public static String getValue(Cell cell) { + if (cell == null) { + + return ""; + + } else if (cell.getCellType() == CellType.BOOLEAN) { + return String.valueOf(cell.getBooleanCellValue()); + } else if (cell.getCellType() == CellType.NUMERIC) { + String value = ""; + return value; + } else { + return String.valueOf(cell.getStringCellValue()); + + } + } + + /** * 读取学生管理 + * * @param file * @return */ - public static List readStudent(MultipartFile file) { + public static List readStudent(MultipartFile file) throws IOException { List list = new ArrayList(); - Workbook workbook=getWorkbook(file); + Workbook workbook = getWorkbook(file); StudentVo student = null; // 循环工作表Sheet for (int numSheet = 0; numSheet < workbook.getNumberOfSheets(); numSheet++) { @@ -29,38 +81,57 @@ public class ExcelImportHelper { if (hssfSheet == null) { continue; } + + int count = 1; // 循环行Row//开始行2 for (int rowNum = 2; rowNum <= hssfSheet.getLastRowNum(); rowNum++) { Row row = hssfSheet.getRow(rowNum); + + if (isRowEmpty(row)) { + count++; + if (count == hssfSheet.getLastRowNum()) { + ExceptionCast.cast(CommonCode.EXCEL_FILE_NULL); + } + continue; + } + + if (row == null) { + continue; + } else if ( + StringUtils.isEmpty(getValue(row.getCell(0))) && + StringUtils.isEmpty(getValue(row.getCell(1))) && + StringUtils.isEmpty(getValue(row.getCell(2)))) { + continue; + } + Cell phone; Cell email; if (row != null) { student = new StudentVo(); + row.getCell(0).setCellType(CellType.STRING); Cell studentName = row.getCell(0); + + row.getCell(1).setCellType(CellType.STRING); - Cell schoolAppellationName = row.getCell(1); + Cell account = row.getCell(1); row.getCell(2).setCellType(CellType.STRING); - Cell account = row.getCell(2); - row.getCell(3).setCellType(CellType.STRING); - Cell studentNumber = row.getCell(3); - if (row.getCell(4)!=null){ - row.getCell(4).setCellType(CellType.STRING); - phone = row.getCell(4); - }else { - phone = row.createCell(4); + + Cell studentNumber = row.getCell(2); + if (row.getCell(3) != null) { + row.getCell(3).setCellType(CellType.STRING); + phone = row.getCell(3); + } else { + phone = row.createCell(3); } - if (row.getCell(5)!=null){ - row.getCell(5).setCellType(CellType.STRING); - email = row.getCell(5); - }else { - email = row.createCell(5); + + if (row.getCell(4) != null) { + row.getCell(4).setCellType(CellType.STRING); + email = row.getCell(4); + } else { + email = row.createCell(4); } -// row.getCell(4).setCellType(CellType.STRING); -// Cell phone = row.getCell(4); -// row.getCell(5).setCellType(CellType.STRING); -// Cell email = row.getCell(5); // 学生姓名 @@ -69,8 +140,6 @@ public class ExcelImportHelper { student.setRoleId(ConstantUtils.STUDENT_ROLE); // 学生学号 student.setWorkNumber(studentNumber.getStringCellValue()); - //所属院校 - student.setSchoolAppellationName(schoolAppellationName.getStringCellValue()); //用户账号 student.setAccount(account.getStringCellValue()); //电话 @@ -87,15 +156,18 @@ public class ExcelImportHelper { return list; } + + /** * 读取员工管理 + * * @param file * @return */ - public static List readStaff(MultipartFile file) { + public static List readStaff(MultipartFile file) throws IOException { List list = new ArrayList(); - Workbook workbook=getWorkbook(file); + Workbook workbook = getWorkbook(file); StaffVo staff = null; // 循环工作表Sheet for (int numSheet = 0; numSheet < workbook.getNumberOfSheets(); numSheet++) { @@ -103,97 +175,110 @@ public class ExcelImportHelper { if (hssfSheet == null) { continue; } - int lastRowNum = hssfSheet.getLastRowNum()+1;//最后一行行标,比行数小1 - if (lastRowNum==2){ + /*int lastRowNum = hssfSheet.getLastRowNum() + 1;//最后一行行标,比行数小1 + if (lastRowNum == 2) { break; - } + }*/ + int count = 1; // 循环行Row//开始行2 for (int rowNum = 2; rowNum <= hssfSheet.getLastRowNum(); rowNum++) { Row row = hssfSheet.getRow(rowNum); - Cell userName; + if (isRowEmpty(row)) { + count++; + if (count == hssfSheet.getLastRowNum()) { + ExceptionCast.cast(CommonCode.EXCEL_FILE_NULL); + } + continue; + } + + Cell phone; Cell email; Cell staffGradeName; Cell staffProfessionalArchitectureName; Cell staffGradeNameTwo; Cell staffProfessionalArchitectureNameTwo; - if (row != null) { + /*Cell account; + Cell role; + Cell workNumber;*/ + Cell userName; + + + if (row == null) { + continue; + } else { staff = new StaffVo(); - if (row.getCell(0)!=null){ + if (row.getCell(0) != null) { row.getCell(0).setCellType(CellType.STRING); userName = row.getCell(0); - }else { - continue; + } else { + userName = row.createCell(0); } + //姓名 + /* row.getCell(0).setCellType(CellType.STRING); + String userName = row.getCell(0).getStringCellValue();*/ + //账号 row.getCell(1).setCellType(CellType.STRING); Cell account = row.getCell(1); + //角色 row.getCell(2).setCellType(CellType.STRING); Cell role = row.getCell(2); + //工号 row.getCell(3).setCellType(CellType.STRING); Cell workNumber = row.getCell(3); -// row.getCell(4).setCellType(CellType.STRING); -// Cell staffGradeName = row.getCell(4); - if (row.getCell(4)!=null){ + + + if (row.getCell(4) != null) { row.getCell(4).setCellType(CellType.STRING); staffProfessionalArchitectureName = row.getCell(4); - }else { + } else { staffProfessionalArchitectureName = row.createCell(4); } - if (row.getCell(5)!=null){ + if (row.getCell(5) != null) { row.getCell(5).setCellType(CellType.STRING); staffGradeName = row.getCell(5); - }else { + } else { staffGradeName = row.createCell(5); } - if (row.getCell(6)!=null){ + if (row.getCell(6) != null) { row.getCell(6).setCellType(CellType.STRING); staffProfessionalArchitectureNameTwo = row.getCell(6); - }else { + } else { staffProfessionalArchitectureNameTwo = row.createCell(6); } - if (row.getCell(7)!=null){ + if (row.getCell(7) != null) { row.getCell(7).setCellType(CellType.STRING); staffGradeNameTwo = row.getCell(7); - }else { + } else { staffGradeNameTwo = row.createCell(7); } - - -// row.getCell(5).setCellType(CellType.STRING); -// Cell staffProfessionalArchitectureName = row.getCell(5); -// row.getCell(6).setCellType(CellType.STRING); -// Cell staffGradeNameTwo = row.getCell(6); -// row.getCell(7).setCellType(CellType.STRING); -// Cell staffProfessionalArchitectureNameTwo = row.getCell(7); - if (row.getCell(8)!=null){ + if (row.getCell(8) != null) { row.getCell(8).setCellType(CellType.STRING); phone = row.getCell(8); - }else { + } else { phone = row.createCell(8); } - if (row.getCell(9)!=null){ + if (row.getCell(9) != null) { row.getCell(9).setCellType(CellType.STRING); email = row.getCell(9); - }else { + } else { email = row.createCell(9); } - row.getCell(10).setCellType(CellType.STRING); - Cell schoolAppellationName = row.getCell(10); -// row.getCell(11).setCellType(CellType.STRING); -// Cell failureMsg = row.getCell(11); + /*row.getCell(10).setCellType(CellType.STRING); + Cell schoolAppellationName = row.getCell(10);*/ String roleValue = role.getStringCellValue(); String str; // 角色id - if (roleValue.equals("管理员")){ + if (roleValue.equals("管理员")) { str = "13";//2 - }else if (roleValue.equals("老师")){ + } else if (roleValue.equals("老师")) { str = "14";//3 - }else{ + } else { str = "13,14"; } staff.setRoleId(str); @@ -218,7 +303,7 @@ public class ExcelImportHelper { //邮箱 staff.setEmail(email.getStringCellValue()); //所属院校 - staff.setSchoolAppellationName(schoolAppellationName.getStringCellValue()); + //staff.setSchoolAppellationName(schoolAppellationName.getStringCellValue()); //学校id staff.setSchoolId(ConstantUtils.Keda_schoolId); list.add(staff); @@ -229,7 +314,7 @@ public class ExcelImportHelper { return list; } - private static Workbook getWorkbook(MultipartFile file) { + private static Workbook getWorkbook(MultipartFile file) { String fileName = file.getOriginalFilename(); Workbook workbook = null; @@ -239,7 +324,7 @@ public class ExcelImportHelper { } catch (IOException e) { e.printStackTrace(); } - }else if (fileName.endsWith("xls")) { + } else if (fileName.endsWith("xls")) { try { workbook = new HSSFWorkbook(file.getInputStream()); } catch (IOException e) { diff --git a/src/main/java/com/msdw/tms/entity/response/CommonCode.java b/src/main/java/com/msdw/tms/entity/response/CommonCode.java index c8aa3ce..74889ed 100644 --- a/src/main/java/com/msdw/tms/entity/response/CommonCode.java +++ b/src/main/java/com/msdw/tms/entity/response/CommonCode.java @@ -17,10 +17,14 @@ public enum CommonCode implements ResultCode { EXCEL_FILE_INVALID(false, 10009, "上传excel文件错误!"), REPEAT_INEXCEL(false, 10010, "试题在excel表中重复!"), EVALUATION_QUESTION_NUM_INVALID(false, 10011, "当前测评题数设置为0,请先设置测评题数!"), + EXCEL_FILE_NULL(false, 100011, "导入失败,导入数据为空!"), + EXCEL_FILE_FORMAT_ERROR(false, 100012, "请根据模板使用说明录入正确的学生信息!"), + EXCEL_FILE_FORMAT_ERROR_STAFFS(false, 100012, "请根据模板使用说明录入正确的员工信息!"), FAIL(false, 11111, "操作失败!"), - ROLE_NAME_EXIST(false,20001,"该角色名称已存在,请重新输入!"), - ROLE_EMP_EXIST(false,44001,"该角色有用户关联,不能删除!"), + + ROLE_NAME_EXIST(false, 20001, "该角色名称已存在,请重新输入!"), + ROLE_EMP_EXIST(false, 44001, "该角色有用户关联,不能删除!"), SERVER_ERROR(false, 99999, "抱歉,系统繁忙,请稍后重试!"); //操作是否成功 boolean success; diff --git a/src/main/java/com/msdw/tms/entity/vo/StudentImportFailureVo.java b/src/main/java/com/msdw/tms/entity/vo/StudentImportFailureVo.java index 9c4429c..ae10562 100644 --- a/src/main/java/com/msdw/tms/entity/vo/StudentImportFailureVo.java +++ b/src/main/java/com/msdw/tms/entity/vo/StudentImportFailureVo.java @@ -15,23 +15,23 @@ public class StudentImportFailureVo { //用户姓名 @ExcelAttribute(sort = 0) private String userName; - //所属院校 + /*//所属院校 @ExcelAttribute(sort = 1) - private String schoolAppellationName; + private String schoolAppellationName;*/ //账号 - @ExcelAttribute(sort = 2) + @ExcelAttribute(sort = 1) private String account; //学号 - @ExcelAttribute(sort = 3) + @ExcelAttribute(sort = 2) private String workNumber; //手机号码 - @ExcelAttribute(sort = 4) + @ExcelAttribute(sort = 3) private String phone; //邮箱 - @ExcelAttribute(sort = 5) + @ExcelAttribute(sort = 4) private String email; //失败原因 - @ExcelAttribute(sort = 6) + @ExcelAttribute(sort = 5) private String failureMsg; // // @ExcelAttribute(sort = 7) diff --git a/src/main/java/com/msdw/tms/service/impl/StudentServiceImpl.java b/src/main/java/com/msdw/tms/service/impl/StudentServiceImpl.java index e3a099d..13f85c5 100644 --- a/src/main/java/com/msdw/tms/service/impl/StudentServiceImpl.java +++ b/src/main/java/com/msdw/tms/service/impl/StudentServiceImpl.java @@ -39,7 +39,7 @@ import java.util.*; import java.util.concurrent.TimeUnit; @Service("studentService") -public class StudentServiceImpl extends ServiceImpl implements StudentService { +public class StudentServiceImpl extends ServiceImpl implements StudentService { @Autowired private StudentDao studentDao; @@ -57,11 +57,11 @@ public class StudentServiceImpl extends ServiceImpl im StringRedisTemplate stringRedisTemplate; @Override - public Integer queryStudentIdNumber(String workNumber,Integer schoolId) { - List result = studentDao.queryStudentIdNumber(workNumber,schoolId); - if (result.size()==1){ + public Integer queryStudentIdNumber(String workNumber, Integer schoolId) { + List result = studentDao.queryStudentIdNumber(workNumber, schoolId); + if (result.size() == 1) { return 1; - }else{ + } else { return 0; } } @@ -75,9 +75,9 @@ public class StudentServiceImpl extends ServiceImpl im } @Override - public PageUtils queryStudent(Integer schoolId,String searchContent, Integer page, Integer size) { - Page tPage = new Page<>(page,size); - IPage saveStudent = studentDao.queryStudent(tPage,searchContent,schoolId); + public PageUtils queryStudent(Integer schoolId, String searchContent, Integer page, Integer size) { + Page tPage = new Page<>(page, size); + IPage saveStudent = studentDao.queryStudent(tPage, searchContent, schoolId); PageUtils pageUtils = new PageUtils(saveStudent); return pageUtils; } @@ -85,10 +85,10 @@ public class StudentServiceImpl extends ServiceImpl im @Override public R queryStudentDetails(Integer userId) { StudentVo saveStudent = studentDao.queryStudentDetails(userId); - if (saveStudent!=null){ - return R.ok().put("data",saveStudent); - }else { - return R.error(300,"用户不存在!"); + if (saveStudent != null) { + return R.ok().put("data", saveStudent); + } else { + return R.error(300, "用户不存在!"); } } @@ -99,7 +99,7 @@ public class StudentServiceImpl extends ServiceImpl im try { Integer delete = studentDao.deleteStudent(studentId); return true; - }catch (RuntimeException e){ + } catch (RuntimeException e) { e.printStackTrace(); return false; } @@ -110,7 +110,7 @@ public class StudentServiceImpl extends ServiceImpl im try { Integer update = studentDao.updateStudent(studentVo); return true; - }catch (RuntimeException e){ + } catch (RuntimeException e) { e.printStackTrace(); return false; } @@ -118,16 +118,16 @@ public class StudentServiceImpl extends ServiceImpl im @Override public void updateWorkNumber(Integer studentId) { - studentDao.updateWorkNumber("00",studentId);//将学号重置为00 + studentDao.updateWorkNumber("00", studentId);//将学号重置为00 } @Override public R addStudentInfo(StudentVo studentVo) { R r = new R(); boolean result = studentDao.addStudentInfo(studentVo); - if (result==false){ - throw new RuntimeException();//添加失败,抛出运行时异常让外层事务回滚 - }else{ + if (result == false) { + throw new RuntimeException();//添加失败,抛出运行时异常让外层事务回滚 + } else { return R.ok("注册成功!"); } @@ -141,8 +141,15 @@ public class StudentServiceImpl extends ServiceImpl im @Transactional @Override - public Map upload(MultipartFile file, Integer schoolId) throws IOException{ + public Map upload(MultipartFile file, Integer schoolId) throws IOException { + List students = ExcelImportHelper.readStudent(file); + if (students.size() <= 0) { + ExceptionCast.cast(CommonCode.EXCEL_FILE_FORMAT_ERROR); + } + + Map errorMap = new HashMap<>(); + List failVo1 = new ArrayList<>(); // 参数合法性校验,只能上传.xlsx后缀的文件 if (StringUtils.isBlank(file.getOriginalFilename()) @@ -153,24 +160,83 @@ public class StudentServiceImpl extends ServiceImpl im Map map = new HashMap<>(); Long ii = 1L;//用于记录序列号 try { - for (int i = 0;i result1 = studentDao.queryStudentIdNumber(workNumber,schoolId); + //String schoolAppellationName = student.getSchoolAppellationName(); + List result1 = studentDao.queryStudentIdNumber(workNumber, schoolId); List result4 = userInfoDao.queryStudentAccount(account); String email = student.getEmail(); - if (phone!=null&&phone!=""){ + if (phone != null && phone != "") { List result2 = userInfoDao.queryStudentPhone(phone); - if (result2.size()>=1){ + if (result2.size() >= 1) { log.error("该号码已被使用"); StudentImportFailureVo vo = new StudentImportFailureVo(); ++ii; - vo.setIndex(ii).setUserName(student.getUserName()).setSchoolAppellationName(student.getSchoolAppellationName()) - .setAccount(student.getAccount()).setWorkNumber(student.getWorkNumber()).setPhone(student.getPhone()+" (重复的号码)").setEmail(student.getEmail()) + vo.setIndex(ii) + .setUserName(student.getUserName()) + .setAccount(student.getAccount()) + .setWorkNumber(student.getWorkNumber()) + .setPhone(student.getPhone() + " (重复的号码)") + .setEmail(student.getEmail()) ; failVo1.add(vo); students.remove(i); @@ -179,24 +245,29 @@ public class StudentServiceImpl extends ServiceImpl im } studentVo.setPhone(phone); } - if (email!=null&&email!=""){ + if (email != null && email != "") { studentVo.setEmail(email); } - List result3 = studentDao.querySchoolName(schoolAppellationName); + // List result3 = studentDao.querySchoolName(schoolAppellationName); // 唯一标示性账号 studentVo.setUniqueIdentificationAccount(String.valueOf(System.currentTimeMillis())). setPassword(ConstantUtils.INITIAL_PASSWORD).setToken(new ConstantUtils().token) .setSchoolId(ConstantUtils.Keda_schoolId).setRoleId(ConstantUtils.STUDENT_ROLE) ; - studentVo.setAccount(student.getAccount()).setSchoolAppellationName(schoolAppellationName) - .setUserName(student.getUserName()).setIsdel(Constant.IsDel.NOT_DEL.getType()); + studentVo.setAccount(student.getAccount()) + .setUserName(student.getUserName()) + .setIsdel(Constant.IsDel.NOT_DEL.getType()); + - if (result1.size()>=1){ + if (result1.size() >= 1) { log.error("该学号已存在"); StudentImportFailureVo vo = new StudentImportFailureVo(); ++ii; - vo.setIndex(ii).setUserName(student.getUserName()).setSchoolAppellationName(student.getSchoolAppellationName()) - .setAccount(student.getAccount()).setWorkNumber(student.getWorkNumber()+" (重复的学号)").setPhone(student.getPhone()).setEmail(student.getEmail()) + vo.setIndex(ii) + .setUserName(student.getUserName()) + .setAccount(student.getAccount()) + .setWorkNumber(student.getWorkNumber() + " (重复的学号)") + .setPhone(student.getPhone()).setEmail(student.getEmail()) ; // .setFailureMsg("重复的学号"); failVo1.add(vo); @@ -204,12 +275,16 @@ public class StudentServiceImpl extends ServiceImpl im students.remove(i); i--; continue; - }else if(result4.size()>=1){ + } else if (result4.size() >= 1) { log.error("账号已存在"); StudentImportFailureVo vo = new StudentImportFailureVo(); ++ii; - vo.setIndex(ii).setUserName(student.getUserName()).setSchoolAppellationName(student.getSchoolAppellationName()) - .setAccount(student.getAccount()+" (重复的账号)").setWorkNumber(student.getWorkNumber()).setPhone(student.getPhone()).setEmail(student.getEmail()) + vo.setIndex(ii) + .setUserName(student.getUserName()) + .setAccount(student.getAccount() + " (重复的账号)") + .setWorkNumber(student.getWorkNumber()) + .setPhone(student.getPhone()) + .setEmail(student.getEmail()) ; // .setFailureMsg("重复的账号"); failVo1.add(vo); @@ -218,7 +293,7 @@ public class StudentServiceImpl extends ServiceImpl im i--; continue; } - else if(result3.size()!=1){ + /*else if(result3.size()!=1){ log.error("不存在该院校"); StudentImportFailureVo vo = new StudentImportFailureVo(); ++ii; @@ -230,23 +305,24 @@ public class StudentServiceImpl extends ServiceImpl im students.remove(i); i--; continue; - } + }*/ ++ii; - if (!students.isEmpty()&&students.size()>0){ + if (!students.isEmpty() && students.size() > 0) { + studentVo.setSchoolId(schoolId); userInfoDao.batchSaveUserInfo(studentVo); student.setUserId(studentVo.getUserId()).setIsdel(Constant.IsDel.NOT_DEL.getType()).setPlatformId(ConstantUtils.PLATFORMID); boolean b = studentDao.saveStudent(student); - if (!b){ - throw new RuntimeException(); + if (!b) { + throw new RuntimeException(); } } } - }catch (RuntimeException e){ + } catch (RuntimeException e) { log.error(e.getMessage()); - map.put("failura","添加失败"); - throw new RuntimeException(); + map.put("failura", "添加失败"); + throw new RuntimeException(); } String token = ""; @@ -261,14 +337,14 @@ public class StudentServiceImpl extends ServiceImpl im ops.set(token, failureVOJson, 30 * 60, TimeUnit.SECONDS); } map.put("token", token); - map.put("successNum", (size-failVo1.size())+""); - map.put("failureNum", failVo1.size()+""); + map.put("successNum", (size - failVo1.size()) + ""); + map.put("failureNum", failVo1.size() + ""); return map; } @Override - public void exportFailureRecord(HttpServletResponse response,String token) throws Exception{ + public void exportFailureRecord(HttpServletResponse response, String token) throws Exception { if (StringUtils.isEmpty(token)) { return; } @@ -284,23 +360,24 @@ public class StudentServiceImpl extends ServiceImpl im parse.sort(Comparator.comparing(StudentImportFailureVo::getIndex)); //2.加载模板流数据 - org.springframework.core.io.Resource resource = new ClassPathResource("excel-template/学生导入失败数据导出模板.xlsx"); + org.springframework.core.io.Resource resource = new ClassPathResource("excel-template/学生导入失败数据导出模板(1).xlsx"); InputStream inputStream = resource.getInputStream(); //3、通过工具类下载文件 new ExcelExportUtil(StudentImportFailureVo.class, Constant.ROW_INDEX, Constant.STYLE_INDEX). - export(response, inputStream, parse, "学生信息导入失败表.xlsx"); + export(response, inputStream, parse, "学生信息导入失败表(1).xlsx"); } @Override - public R queryAccount(String account,Integer schoolId) { - List result = studentDao.queryAccount(account,schoolId); + public R queryAccount(String account, Integer schoolId) { + List result = studentDao.queryAccount(account, schoolId); List vos = userInfoDao.queryAccount(account); - if (result.size()>1){ - return R.error("系统存在多个相同的账号:"+account); - }else if (result.size()==1){return R.ok().put("data",result); - }else if (vos.size()>0){ + if (result.size() > 1) { + return R.error("系统存在多个相同的账号:" + account); + } else if (result.size() == 1) { + return R.ok().put("data", result); + } else if (vos.size() > 0) { return R.error("账号已存在"); } return R.ok(); diff --git a/src/main/java/com/msdw/tms/service/impl/SystemSettingServiceImpl.java b/src/main/java/com/msdw/tms/service/impl/SystemSettingServiceImpl.java index e620417..3229994 100644 --- a/src/main/java/com/msdw/tms/service/impl/SystemSettingServiceImpl.java +++ b/src/main/java/com/msdw/tms/service/impl/SystemSettingServiceImpl.java @@ -65,33 +65,35 @@ public class SystemSettingServiceImpl implements SystemSetttingService { String email = staffVo.getEmail(); String workNumber = staffVo.getWorkNumber(); List staff = staffVo.getStaff(); - if (phone!=null&&phone!=""){ + if (phone != null && phone != "") { List resultP = userInfoDao.queryPhone(phone); - if (resultP.size()>0){ - return R.error(400,"手机号不能重复"); + if (resultP.size() > 0) { + return R.error(400, "手机号不能重复"); } } - if (email!=null&&email!=""){ + if (email != null && email != "") { List resultE = userInfoDao.queryEmail(email); - if (resultE.size()>0){ - return R.error(400,"手机号不能重复"); + if (resultE.size() > 0) { + return R.error(400, "手机号不能重复"); } } List resultA = userInfoDao.queryAccount(account); // List resultW = systemSetttingDao.queryWorkNumber(workNumber); - if(resultA.size()>0){ - return R.error(400,"账号不能重复"); + if (resultA.size() > 0) { + return R.error(400, "账号不能重复"); } Integer userId = userInfoDao.addUserinfo(staffVo); - for (int i=0;i resultW = systemSetttingDao.queryWorkNumber(workNumber); - if (resultW.size()>0){ - return R.error(400,"工号不能重复"+workNumber); + if (resultW.size() > 0) { + return R.error(400, "工号不能重复" + workNumber); } StaffEntity entity = staff.get(i); entity.setSchoolId(ConstantUtils.Keda_schoolId).setPlatformId(ConstantUtils.PLATFORMID).setUserId(staffVo.getUserId()); boolean result = systemSetttingDao.addStaffN(entity); - if (!result) {throw new RuntimeException();} + if (!result) { + throw new RuntimeException(); + } } // String[] split = staffVo.getRoleId().split(","); // for (String s : split){ @@ -107,7 +109,7 @@ public class SystemSettingServiceImpl implements SystemSetttingService { @Override public PageUtils queryStaff(StaffVo staffVo) { Page tPage = new Page<>(staffVo.getPage(), staffVo.getSize()); - IPage staff = systemSetttingDao.queryStaff(tPage, staffVo.getSearchContent(),ConstantUtils.Keda_schoolId,staffVo.getStaffGradeIds(),staffVo.getStaffProfessionalArchitectureIds()); + IPage staff = systemSetttingDao.queryStaff(tPage, staffVo.getSearchContent(), ConstantUtils.Keda_schoolId, staffVo.getStaffGradeIds(), staffVo.getStaffProfessionalArchitectureIds()); PageUtils pageUtils = new PageUtils(staff); return pageUtils; } @@ -120,8 +122,8 @@ public class SystemSettingServiceImpl implements SystemSetttingService { List staff = systemSetttingDao.queryStaffInfo(userId); // result.setWorkNumber(staff.getWorkNumber()).setStaffGradeId(staff.getStaffGradeId()).setStaffGradeName(staff.getStaffGradeName()) // .setStaffProfessionalArchitectureId(staff.getStaffProfessionalArchitectureId()).setStaffProfessionalArchitectureName(staff.getStaffProfessionalArchitectureName()); - map.put("userInfo",result); - map.put("staffInfo",staff); + map.put("userInfo", result); + map.put("staffInfo", staff); return map; } @@ -138,45 +140,49 @@ public class SystemSettingServiceImpl implements SystemSetttingService { String roleIds = result.getRoleId(); String[] splitOld = staffVo.getRoleId().split(","); String[] splitNew = roleIds.split(","); - if (splitOld.length==splitNew.length&&splitNew.length<3){ - for (int i = 0;isplitOld.length){ + } else if (splitNew.length > splitOld.length) { boolean a = systemSetttingDao.updateStaff(staff.get(0)); StaffEntity staffEntity = staff.get(1); staffEntity.setUserId(staffVo.getUserId()); boolean b = systemSetttingDao.addStaffUpdata(staffEntity); - if (!a|!b){throw new RuntimeException();} - }else if (splitNew.length resultA = userInfoDao.queryAccount(account); List resultW = systemSetttingDao.queryWorkNumber(workNumber); - if (phone!=null&&phone!=""){ + if (phone != null && phone != "") { List resultP = userInfoDao.queryPhone(phone); - if (resultP.size()>0){ - return R.error(400,"手机号不能重复"); + if (resultP.size() > 0) { + return R.error(400, "手机号不能重复"); } } - if (email!=null&&email!=""){ + if (email != null && email != "") { List resultE = userInfoDao.queryEmail(email); - if (resultE.size()>0){ - return R.error(400,"手机号不能重复"); + if (resultE.size() > 0) { + return R.error(400, "手机号不能重复"); } } - if(resultA.size()>0){ - return R.error(400,"账号不能重复"); - }else if (resultW.size()>0){ - return R.error(400,"工号不能重复"); + if (resultA.size() > 0) { + return R.error(400, "账号不能重复"); + } else if (resultW.size() > 0) { + return R.error(400, "工号不能重复"); } boolean resultUserInfo = userInfoDao.updateUserInfo(staffVo); // String[] split = staffVo.getRoleId().split(","); @@ -206,21 +212,21 @@ public class SystemSettingServiceImpl implements SystemSetttingService { //查询是否存在相同的部门 String departmentName = staffVo.getStaffProfessionalArchitectureName(); String gradeName = staffVo.getStaffGradeName(); - if (gradeName!=null|gradeName!=""){ + if (gradeName != null | gradeName != "") { Integer department = systemSetttingDao.queryGrade(staffVo); - if (department==0){ + if (department == 0) { systemSetttingDao.addDepartment(staffVo); } - map.put("已存在的部门",departmentName); - }else{ + map.put("已存在的部门", departmentName); + } else { Integer department = systemSetttingDao.queryDepartment(staffVo); - if (department==0){ + if (department == 0) { boolean result = systemSetttingDao.addStaffGrade(staffVo); - if (!result){ + if (!result) { throw new RuntimeException(); } } - map.put("已存在的部门",gradeName); + map.put("已存在的部门", gradeName); } return map; } @@ -231,11 +237,17 @@ public class SystemSettingServiceImpl implements SystemSetttingService { return result; } + @Override @Transactional public Map upload(MultipartFile file) throws IOException { HashMap map = new HashMap<>(); List staffs = ExcelImportHelper.readStaff(file); + + if (staffs.size() <= 0) { + ExceptionCast.cast(CommonCode.EXCEL_FILE_FORMAT_ERROR_STAFFS); + } + List failVo1 = new ArrayList<>(); // 参数合法性校验,只能上传.xlsx后缀的文件 if (StringUtils.isBlank(file.getOriginalFilename()) @@ -245,24 +257,235 @@ public class SystemSettingServiceImpl implements SystemSetttingService { int size = staffs.size(); Long ii = 1L; try { - for (int i = 0;i resultW = systemSetttingDao.queryWorkNumber(workNumber); List resultA = userInfoDao.queryAccount(account); List resultU = userInfoDao.queryUserInfo(staffVo); - if (resultU.size()>0){//重复的数据 + if (resultU.size() > 0) {//重复的数据 StaffExportVo vo = new StaffExportVo(); vo.setFailureMsg("用户信息已存在"); vo.setIndex(ii).setUserName(staffVo.getUserName()).setAccount(staffVo.getAccount()).setRole(staffVo.getRole()).setWorkNumber(staffVo.getWorkNumber()).setStaffGradeName(staffVo.getStaffGradeName()).setStaffProfessionalArchitectureName(staffVo.getStaffProfessionalArchitectureName()).setStaffGradeNameTwo(staffVo.getStaffGradeNameTwo()).setStaffProfessionalArchitectureNameTwo(staffVo.getStaffProfessionalArchitectureNameTwo()).setPhone(staffVo.getPhone()).setEmail(staffVo.getEmail()).setSchoolAppellationName(staffVo.getSchoolAppellationName()); @@ -270,7 +493,7 @@ public class SystemSettingServiceImpl implements SystemSetttingService { i--; failVo1.add(vo); continue; - }else if (resultW.size()>0){ + } else if (resultW.size() > 0) { StaffExportVo vo = new StaffExportVo(); vo.setFailureMsg("重复的工号"); vo.setIndex(ii).setUserName(staffVo.getUserName()).setAccount(staffVo.getAccount()).setRole(staffVo.getRole()).setWorkNumber(staffVo.getWorkNumber()).setStaffGradeName(staffVo.getStaffGradeName()).setStaffProfessionalArchitectureName(staffVo.getStaffProfessionalArchitectureName()).setStaffGradeNameTwo(staffVo.getStaffGradeNameTwo()).setStaffProfessionalArchitectureNameTwo(staffVo.getStaffProfessionalArchitectureNameTwo()).setPhone(staffVo.getPhone()).setEmail(staffVo.getEmail()).setSchoolAppellationName(staffVo.getSchoolAppellationName()); @@ -278,7 +501,7 @@ public class SystemSettingServiceImpl implements SystemSetttingService { i--; failVo1.add(vo); continue; - }else if (resultA.size()>0){ + } else if (resultA.size() > 0) { StaffExportVo vo = new StaffExportVo(); vo.setFailureMsg("重复的账号"); vo.setIndex(ii).setUserName(staffVo.getUserName()).setAccount(staffVo.getAccount()).setRole(staffVo.getRole()).setWorkNumber(staffVo.getWorkNumber()).setStaffGradeName(staffVo.getStaffGradeName()).setStaffProfessionalArchitectureName(staffVo.getStaffProfessionalArchitectureName()).setStaffGradeNameTwo(staffVo.getStaffGradeNameTwo()).setStaffProfessionalArchitectureNameTwo(staffVo.getStaffProfessionalArchitectureNameTwo()).setPhone(staffVo.getPhone()).setEmail(staffVo.getEmail()).setSchoolAppellationName(staffVo.getSchoolAppellationName()); @@ -286,9 +509,9 @@ public class SystemSettingServiceImpl implements SystemSetttingService { i--; failVo1.add(vo); continue; - }else if (phone!=null&&phone!=""){ + } else if (phone != null && phone != "") { List resultP = userInfoDao.queryPhone(phone); - if (resultP.size()>0){ + if (resultP.size() > 0) { StaffExportVo vo = new StaffExportVo(); vo.setFailureMsg("重复的手机号码"); vo.setIndex(ii).setUserName(staffVo.getUserName()).setAccount(staffVo.getAccount()).setRole(staffVo.getRole()).setWorkNumber(staffVo.getWorkNumber()).setStaffGradeName(staffVo.getStaffGradeName()).setStaffProfessionalArchitectureName(staffVo.getStaffProfessionalArchitectureName()).setStaffGradeNameTwo(staffVo.getStaffGradeNameTwo()).setStaffProfessionalArchitectureNameTwo(staffVo.getStaffProfessionalArchitectureNameTwo()).setPhone(staffVo.getPhone()).setEmail(staffVo.getEmail()).setSchoolAppellationName(staffVo.getSchoolAppellationName()); @@ -297,9 +520,9 @@ public class SystemSettingServiceImpl implements SystemSetttingService { failVo1.add(vo); continue; } - }else if (email!=null&&email!=""){ + } else if (email != null && email != "") { List resultE = userInfoDao.queryEmail(email); - if (resultE.size()>0){ + if (resultE.size() > 0) { StaffExportVo vo = new StaffExportVo(); vo.setFailureMsg("重复的邮箱号"); vo.setIndex(ii).setUserName(staffVo.getUserName()).setAccount(staffVo.getAccount()).setRole(staffVo.getRole()).setWorkNumber(staffVo.getWorkNumber()).setStaffGradeName(staffVo.getStaffGradeName()).setStaffProfessionalArchitectureName(staffVo.getStaffProfessionalArchitectureName()).setStaffGradeNameTwo(staffVo.getStaffGradeNameTwo()).setStaffProfessionalArchitectureNameTwo(staffVo.getStaffProfessionalArchitectureNameTwo()).setPhone(staffVo.getPhone()).setEmail(staffVo.getEmail()).setSchoolAppellationName(staffVo.getSchoolAppellationName()); @@ -310,18 +533,18 @@ public class SystemSettingServiceImpl implements SystemSetttingService { } } - if (!staffs.isEmpty()&&staffs.size()>0){ + if (!staffs.isEmpty() && staffs.size() > 0) { staffVo.setPassword(ConstantUtils.INITIAL_PASSWORD).setUniqueIdentificationAccount(String.valueOf(System.currentTimeMillis())); staff.setPlatformId(ConstantUtils.PLATFORMID).setUserId(staffVo.getUserId()); staffVo.setPlatformId(ConstantUtils.PLATFORMID).setToken(new ConstantUtils().token); String[] split = staffVo.getRoleId().split(","); String s = ""; for (String str : split) { - s=s+str; + s = s + str; } - if (s.indexOf("13")!=-1){//2 - if (architectureName!=null&&architectureName!=""){ - if (gradeName==null|gradeName==""){ + if (s.indexOf("13") != -1) {//2 + if (architectureName != null && architectureName != "") { + if (gradeName == null | gradeName == "") { StaffExportVo vo = new StaffExportVo(); vo.setFailureMsg("二级部门不能为空(管理员)"); vo.setIndex(ii).setUserName(staffVo.getUserName()).setAccount(staffVo.getAccount()).setRole(staffVo.getRole()).setWorkNumber(staffVo.getWorkNumber()).setStaffGradeName(staffVo.getStaffGradeName()).setStaffProfessionalArchitectureName(staffVo.getStaffProfessionalArchitectureName()).setStaffGradeNameTwo(staffVo.getStaffGradeNameTwo()).setStaffProfessionalArchitectureNameTwo(staffVo.getStaffProfessionalArchitectureNameTwo()).setPhone(staffVo.getPhone()).setEmail(staffVo.getEmail()).setSchoolAppellationName(staffVo.getSchoolAppellationName()); @@ -329,9 +552,9 @@ public class SystemSettingServiceImpl implements SystemSetttingService { i--; failVo1.add(vo); continue; - }else{ + } else { Integer b = systemSetttingDao.queryDepartmentNameOrganization(architectureName, ConstantUtils.Keda_schoolId); - if (b==null){ + if (b == null) { StaffExportVo vo = new StaffExportVo(); vo.setFailureMsg("不存在的一级部门(管理员)"); vo.setIndex(ii).setUserName(staffVo.getUserName()).setAccount(staffVo.getAccount()).setRole(staffVo.getRole()).setWorkNumber(staffVo.getWorkNumber()).setStaffGradeName(staffVo.getStaffGradeName()).setStaffProfessionalArchitectureName(staffVo.getStaffProfessionalArchitectureName()).setStaffGradeNameTwo(staffVo.getStaffGradeNameTwo()).setStaffProfessionalArchitectureNameTwo(staffVo.getStaffProfessionalArchitectureNameTwo()).setPhone(staffVo.getPhone()).setEmail(staffVo.getEmail()).setSchoolAppellationName(staffVo.getSchoolAppellationName()); @@ -340,8 +563,8 @@ public class SystemSettingServiceImpl implements SystemSetttingService { failVo1.add(vo); continue; } - List a = systemSetttingDao.judgmentGrade(architectureName,ConstantUtils.Keda_schoolId); - if (a.size()==0){ + List a = systemSetttingDao.judgmentGrade(architectureName, ConstantUtils.Keda_schoolId); + if (a.size() == 0) { StaffExportVo vo = new StaffExportVo(); vo.setFailureMsg("不存在此子级部门(管理员)"); vo.setIndex(ii).setUserName(staffVo.getUserName()).setAccount(staffVo.getAccount()).setRole(staffVo.getRole()).setWorkNumber(staffVo.getWorkNumber()).setStaffGradeName(staffVo.getStaffGradeName()).setStaffProfessionalArchitectureName(staffVo.getStaffProfessionalArchitectureName()).setStaffGradeNameTwo(staffVo.getStaffGradeNameTwo()).setStaffProfessionalArchitectureNameTwo(staffVo.getStaffProfessionalArchitectureNameTwo()).setPhone(staffVo.getPhone()).setEmail(staffVo.getEmail()).setSchoolAppellationName(staffVo.getSchoolAppellationName()); @@ -353,9 +576,9 @@ public class SystemSettingServiceImpl implements SystemSetttingService { } } } - if (s.indexOf("14")!=-1){//3 - if (architectureNameTwo!=null&&architectureNameTwo!=""){ - if (gradeNameTwo==null|gradeNameTwo==""){ + if (s.indexOf("14") != -1) {//3 + if (architectureNameTwo != null && architectureNameTwo != "") { + if (gradeNameTwo == null | gradeNameTwo == "") { StaffExportVo vo = new StaffExportVo(); vo.setFailureMsg("二级部门不能为空(老师)"); vo.setIndex(ii).setUserName(staffVo.getUserName()).setAccount(staffVo.getAccount()).setRole(staffVo.getRole()).setWorkNumber(staffVo.getWorkNumber()).setStaffGradeName(staffVo.getStaffGradeName()).setStaffProfessionalArchitectureName(staffVo.getStaffProfessionalArchitectureName()).setStaffGradeNameTwo(staffVo.getStaffGradeNameTwo()).setStaffProfessionalArchitectureNameTwo(staffVo.getStaffProfessionalArchitectureNameTwo()).setPhone(staffVo.getPhone()).setEmail(staffVo.getEmail()).setSchoolAppellationName(staffVo.getSchoolAppellationName()); @@ -363,9 +586,9 @@ public class SystemSettingServiceImpl implements SystemSetttingService { i--; failVo1.add(vo); continue; - }else{ + } else { Integer b = systemSetttingDao.queryDepartmentNameOrganization(architectureNameTwo, ConstantUtils.Keda_schoolId); - if (b==null){ + if (b == null) { StaffExportVo vo = new StaffExportVo(); vo.setFailureMsg("不存在此的一级部门(老师)"); vo.setIndex(ii).setUserName(staffVo.getUserName()).setAccount(staffVo.getAccount()).setRole(staffVo.getRole()).setWorkNumber(staffVo.getWorkNumber()).setStaffGradeName(staffVo.getStaffGradeName()).setStaffProfessionalArchitectureName(staffVo.getStaffProfessionalArchitectureName()).setStaffGradeNameTwo(staffVo.getStaffGradeNameTwo()).setStaffProfessionalArchitectureNameTwo(staffVo.getStaffProfessionalArchitectureNameTwo()).setPhone(staffVo.getPhone()).setEmail(staffVo.getEmail()).setSchoolAppellationName(staffVo.getSchoolAppellationName()); @@ -374,8 +597,8 @@ public class SystemSettingServiceImpl implements SystemSetttingService { failVo1.add(vo); continue; } - List a = systemSetttingDao.judgmentGrade(architectureNameTwo,ConstantUtils.Keda_schoolId); - if (a.size()==0){ + List a = systemSetttingDao.judgmentGrade(architectureNameTwo, ConstantUtils.Keda_schoolId); + if (a.size() == 0) { StaffExportVo vo = new StaffExportVo(); vo.setFailureMsg("不存在的子级部门(老师)"); vo.setIndex(ii).setUserName(staffVo.getUserName()).setAccount(staffVo.getAccount()).setRole(staffVo.getRole()).setWorkNumber(staffVo.getWorkNumber()).setStaffGradeName(staffVo.getStaffGradeName()).setStaffProfessionalArchitectureName(staffVo.getStaffProfessionalArchitectureName()).setStaffGradeNameTwo(staffVo.getStaffGradeNameTwo()).setStaffProfessionalArchitectureNameTwo(staffVo.getStaffProfessionalArchitectureNameTwo()).setPhone(staffVo.getPhone()).setEmail(staffVo.getEmail()).setSchoolAppellationName(staffVo.getSchoolAppellationName()); @@ -389,25 +612,29 @@ public class SystemSettingServiceImpl implements SystemSetttingService { } userInfoDao.addUserinfo(staffVo); - for (String str : split){ - if (Integer.parseInt(str)==13){//2 - Integer organizationId = systemSetttingDao.queryDepartmentNameOrganization(staffVo.getStaffProfessionalArchitectureName(),ConstantUtils.Keda_schoolId); - Integer gradeId = systemSetttingDao.queryDepartmentNameGrade(staffVo.getStaffGradeName(),organizationId); + for (String str : split) { + if (Integer.parseInt(str) == 13) {//2 + Integer organizationId = systemSetttingDao.queryDepartmentNameOrganization(staffVo.getStaffProfessionalArchitectureName(), ConstantUtils.Keda_schoolId); + Integer gradeId = systemSetttingDao.queryDepartmentNameGrade(staffVo.getStaffGradeName(), organizationId); staffVo.setStaffGradeId(gradeId).setStaffProfessionalArchitectureId(organizationId); boolean b = systemSetttingDao.addStaffManager(staffVo); - if(!b){throw new RuntimeException();} - }else if (Integer.parseInt(str)==14){//3 - Integer organizationId = systemSetttingDao.queryDepartmentNameOrganization(staffVo.getStaffProfessionalArchitectureNameTwo(),ConstantUtils.Keda_schoolId); - Integer gradeId = systemSetttingDao.queryDepartmentNameGrade(staffVo.getStaffGradeNameTwo(),organizationId); + if (!b) { + throw new RuntimeException(); + } + } else if (Integer.parseInt(str) == 14) {//3 + Integer organizationId = systemSetttingDao.queryDepartmentNameOrganization(staffVo.getStaffProfessionalArchitectureNameTwo(), ConstantUtils.Keda_schoolId); + Integer gradeId = systemSetttingDao.queryDepartmentNameGrade(staffVo.getStaffGradeNameTwo(), organizationId); staffVo.setStaffGradeId(gradeId).setStaffProfessionalArchitectureId(organizationId); boolean b = systemSetttingDao.addStaffTeacher(staffVo); - if(!b){throw new RuntimeException();} + if (!b) { + throw new RuntimeException(); + } } } } } - }catch (RuntimeException e){ + } catch (RuntimeException e) { e.printStackTrace(); throw new RuntimeException(); } @@ -424,14 +651,14 @@ public class SystemSettingServiceImpl implements SystemSetttingService { ops.set(token, failureVOJson, 30 * 60, TimeUnit.SECONDS); } map.put("token", token); - map.put("successNum", (size-failVo1.size())+""); - map.put("failureNum", failVo1.size()+""); + map.put("successNum", (size - failVo1.size()) + ""); + map.put("failureNum", failVo1.size() + ""); return map; } @Override - public void exportFailureRecord(HttpServletResponse response, String token) throws Exception{ + public void exportFailureRecord(HttpServletResponse response, String token) throws Exception { if (StringUtils.isEmpty(token)) { return; } @@ -454,14 +681,11 @@ public class SystemSettingServiceImpl implements SystemSetttingService { new ExcelExportUtil(StaffExportVo.class, Constant.ROW_INDEX, Constant.STYLE_INDEX). export(response, inputStream, parse, "导入失败数据表.xlsx"); - if (inputStream!=null){ + if (inputStream != null) { inputStream.close(); } - - - // //2.加载模板流数据 // org.springframework.core.io.Resource resource = new ClassPathResource("excel-template/staff/测试.xlsx"); //// org.springframework.core.io.Resource resource = new FileSystemResource("E:/JavaworkSpace2/msdw_tms/src/main/resources/excel-template/员工信息导入失败模板.xlsx"); @@ -482,18 +706,19 @@ public class SystemSettingServiceImpl implements SystemSetttingService { } @Override - public R queryAccount(String account,Integer schoolId) { + public R queryAccount(String account, Integer schoolId) { HashMap map = new HashMap<>(); - List result = systemSetttingDao.queryAccount(account,schoolId); + List result = systemSetttingDao.queryAccount(account, schoolId); List vos = userInfoDao.queryAccount(account); - if (result.size()>1){return R.error("系统存在多个相同的账号:"+account); - }else if (result.size()==1){ + if (result.size() > 1) { + return R.error("系统存在多个相同的账号:" + account); + } else if (result.size() == 1) { StaffVo staffVo = result.get(0); - map.put("user",staffVo); + map.put("user", staffVo); List staffVos = systemSetttingDao.queryStaffInfo(staffVo.getUserId()); - map.put("staff",staffVos); - return R.ok().put("data",map); - }else if (vos.size()>0){ + map.put("staff", staffVos); + return R.ok().put("data", map); + } else if (vos.size() > 0) { return R.error("账号已存在"); } return R.ok(); @@ -501,14 +726,14 @@ public class SystemSettingServiceImpl implements SystemSetttingService { @Override @Transactional - public R resetPwd(Integer userId,String newPwd) { + public R resetPwd(Integer userId, String newPwd) { UserInfoEntity user = new UserInfoEntity(); user.setPassword(newPwd); int count = userInfoDao.update(user, new QueryWrapper().eq("userId", userId)); - if(count > 0){ + if (count > 0) { return R.ok(); - }else{ - return R.error(20002,"重置失败"); + } else { + return R.error(20002, "重置失败"); } } diff --git a/src/main/resources/excel-template/学生导入失败数据导出模板(1).xlsx b/src/main/resources/excel-template/学生导入失败数据导出模板(1).xlsx new file mode 100644 index 0000000000000000000000000000000000000000..d44230a9aa0b8eaeb5b1eb031cbb37efb1fe49e9 GIT binary patch literal 9279 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 INSERT INTO hr_user_info ( account, userName, roleId, phone, email, uniqueIdentificationAccount, schoolId,creationTime,password,token) From f65e73073caa93b70152f95279eb26d02fcc6584 Mon Sep 17 00:00:00 2001 From: "rong.liu" Date: Fri, 26 Mar 2021 17:19:18 +0800 Subject: [PATCH 33/43] =?UTF-8?q?=E5=BC=80=E5=90=AF=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/msdw/tms/TmsApplication.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/msdw/tms/TmsApplication.java b/src/main/java/com/msdw/tms/TmsApplication.java index 1e5e101..e2715d0 100644 --- a/src/main/java/com/msdw/tms/TmsApplication.java +++ b/src/main/java/com/msdw/tms/TmsApplication.java @@ -6,7 +6,7 @@ import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.scheduling.annotation.EnableScheduling; -//@EnableScheduling//定时任务 +@EnableScheduling//定时任务 @SpringBootApplication public class TmsApplication extends SpringBootServletInitializer { From 6011a9ca7743e59022205e606666bea158454c3e Mon Sep 17 00:00:00 2001 From: "rong.liu" Date: Mon, 29 Mar 2021 16:20:46 +0800 Subject: [PATCH 34/43] =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../excel-template/练习记录模板.xlsx | Bin 10339 -> 10328 bytes .../excel-template/考核记录模板.xlsx | Bin 10434 -> 10380 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/excel-template/练习记录模板.xlsx b/src/main/resources/excel-template/练习记录模板.xlsx index 5152cd1422a1dc4d11735d7c6b3972d71fb1151f..2ded3a12ee620f663e83f208607b36420a981568 100644 GIT binary patch delta 4340 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 Fe*q;x5P|>z delta 4315 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 delta 3641 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 L0R|Z)00000jal-= From b534515490bd79de8d5749e2379dfd11f83e199f Mon Sep 17 00:00:00 2001 From: "jiakun.lin" Date: Wed, 31 Mar 2021 11:18:48 +0800 Subject: [PATCH 35/43] =?UTF-8?q?=E5=AD=A6=E7=94=9F=E7=AB=AF=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E7=BB=83=E4=B9=A0=EF=BC=8C=E8=80=83=E6=A0=B8=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=A7=93=E5=90=8D=EF=BC=8C=E5=AD=A6=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/msdw/tms/common/utils/Constant.java | 4 + .../tms/common/utils/poi/ExcelExportUtil.java | 70 ++++++++++++++++++ .../ExperimentProjectRecordImportRequest.java | 18 +++-- .../tms/entity/vo/ProjectRecordExportVo.java | 4 + .../impl/ProjectRecordServiceImpl.java | 17 ++++- .../excel-template/练习记录模板.xlsx | Bin 10328 -> 10357 bytes .../excel-template/考核记录模板.xlsx | Bin 10380 -> 10453 bytes .../resources/mapper/tms/ProjectRecordDao.xml | 3 +- 8 files changed, 105 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/msdw/tms/common/utils/Constant.java b/src/main/java/com/msdw/tms/common/utils/Constant.java index 96214b0..e0d4263 100644 --- a/src/main/java/com/msdw/tms/common/utils/Constant.java +++ b/src/main/java/com/msdw/tms/common/utils/Constant.java @@ -54,6 +54,10 @@ public class Constant { * 通过excel批量导入试题数据时起始行 */ public static final int ROW_INDEX = 2; + /** + * 通过excel批量导入试题数据时起始行(专门用于练习,考核报告的) + */ + public static final int ROW_INDEX_REPORT = 3; /** * 通过excel批量导入试题数据时起始行 */ diff --git a/src/main/java/com/msdw/tms/common/utils/poi/ExcelExportUtil.java b/src/main/java/com/msdw/tms/common/utils/poi/ExcelExportUtil.java index e43d0fb..27e470b 100644 --- a/src/main/java/com/msdw/tms/common/utils/poi/ExcelExportUtil.java +++ b/src/main/java/com/msdw/tms/common/utils/poi/ExcelExportUtil.java @@ -1,5 +1,6 @@ package com.msdw.tms.common.utils.poi; +import com.msdw.tms.entity.vo.StudentVo; import lombok.Data; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; @@ -8,6 +9,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.InputStream; import java.lang.reflect.Field; import java.net.URLEncoder; +import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; @@ -75,6 +77,74 @@ public class ExcelExportUtil { workbook.write(response.getOutputStream()); } + + /** + * 基于注解导出(新增需求拓展) + * 参数: + * response: + * InputStream:模板的输入流 + * objs:数据 + * obj:拓展对象 + * fileName:生成的文件名 + */ + public void exportExpand(HttpServletResponse response, InputStream is, List objs,Object obj, String fileName) throws Exception { + + //1.根据模板创建工作簿 + XSSFWorkbook workbook = new XSSFWorkbook(is); + //2.读取工作表 + Sheet sheet = workbook.getSheetAt(0); + Row row1 = sheet.getRow(styleIndex); + //3.提取公共的样式 + CellStyle[] styles = getTemplateStyles(row1); + + //导出学生姓名,学号 + Sheet sheet1 = this.exportStudentInfo(sheet,(StudentVo)obj); + + //4.根据数据创建每一行和每一个单元格的数据2 + AtomicInteger datasAi = new AtomicInteger(rowIndex); //数字 + for (T t : objs) { + //datasAi.getAndIncrement() :获取数字,并++ i++ + Row row = sheet1.createRow(datasAi.getAndIncrement()); + for (int i = 0; i < styles.length; i++) { + Cell cell = row.createCell(i); + cell.setCellStyle(styles[i]); + for (Field field : fields) { + if (field.isAnnotationPresent(ExcelAttribute.class)) { + field.setAccessible(true); + ExcelAttribute ea = field.getAnnotation(ExcelAttribute.class); + if (i == ea.sort()) { + if (field.get(t) != null) { + cell.setCellValue(field.get(t).toString()); + } + } + } + } + } + } + fileName = URLEncoder.encode(fileName, "UTF-8"); + response.setContentType("application/octet-stream"); + response.setHeader("content-disposition", "attachment;filename=" + new String(fileName.getBytes("ISO8859-1"))); + response.setHeader("filename", fileName); + workbook.write(response.getOutputStream()); + } + + /** + * 添加姓名,学号的导出 + * @param sheet + * @return + */ + private Sheet exportStudentInfo(Sheet sheet,StudentVo studentVo){ + Integer ROW_INDEX = 1; + Integer CELL_INDEX_NAME = 1; + Integer CELL_INDEX_WORKNUMBER = 3; + + sheet.getRow(ROW_INDEX).getCell(CELL_INDEX_NAME).setCellValue(studentVo.getUserName()); + sheet.getRow(ROW_INDEX).getCell(CELL_INDEX_WORKNUMBER).setCellValue(studentVo.getWorkNumber()); + return sheet; + } + + + CellStyle[] getTemplateStyles(Row row) { CellStyle[] styles = new CellStyle[row.getLastCellNum()]; for (int i = 0; i < row.getLastCellNum(); i++) { diff --git a/src/main/java/com/msdw/tms/entity/request/ExperimentProjectRecordImportRequest.java b/src/main/java/com/msdw/tms/entity/request/ExperimentProjectRecordImportRequest.java index 2dac435..2254101 100644 --- a/src/main/java/com/msdw/tms/entity/request/ExperimentProjectRecordImportRequest.java +++ b/src/main/java/com/msdw/tms/entity/request/ExperimentProjectRecordImportRequest.java @@ -8,36 +8,42 @@ import lombok.Data; */ @Data public class ExperimentProjectRecordImportRequest { + /** - * 实验班级名称 + * 实验名称(即考核名称) */ @ExcelAttribute(sort = 0) + private String experimentalName; + /** + * 实验班级名称 + */ + @ExcelAttribute(sort = 1) private String experimentalClassName; /** * 实验项目名称 */ - @ExcelAttribute(sort = 1) + @ExcelAttribute(sort = 2) private String projectName; /** * 得分 */ - @ExcelAttribute(sort = 2) + @ExcelAttribute(sort = 3) private Integer score; /** * 耗时 */ - @ExcelAttribute(sort = 3) + @ExcelAttribute(sort = 4) private Integer timeSum; /** * 起始时间 */ - @ExcelAttribute(sort = 4) + @ExcelAttribute(sort = 5) private String startTime; /** * 结束时间 */ - @ExcelAttribute(sort = 5) + @ExcelAttribute(sort = 6) private String endTime; } diff --git a/src/main/java/com/msdw/tms/entity/vo/ProjectRecordExportVo.java b/src/main/java/com/msdw/tms/entity/vo/ProjectRecordExportVo.java index 080b776..10a0573 100644 --- a/src/main/java/com/msdw/tms/entity/vo/ProjectRecordExportVo.java +++ b/src/main/java/com/msdw/tms/entity/vo/ProjectRecordExportVo.java @@ -88,4 +88,8 @@ public class ProjectRecordExportVo extends ProjectRecordEntity implements Serial * 实验班级名称 */ private String experimental_class_name; + /** + * 实验名称(即考核名称) + */ + private String experimentalName; } diff --git a/src/main/java/com/msdw/tms/service/impl/ProjectRecordServiceImpl.java b/src/main/java/com/msdw/tms/service/impl/ProjectRecordServiceImpl.java index 8edb4c7..844115e 100644 --- a/src/main/java/com/msdw/tms/service/impl/ProjectRecordServiceImpl.java +++ b/src/main/java/com/msdw/tms/service/impl/ProjectRecordServiceImpl.java @@ -8,6 +8,7 @@ import com.msdw.tms.common.utils.PageUtils; import com.msdw.tms.common.utils.R; import com.msdw.tms.common.utils.poi.ExcelExportUtil; import com.msdw.tms.dao.ProjectRecordDao; +import com.msdw.tms.dao.StudentDao; import com.msdw.tms.entity.ExperimentalReportEntity; import com.msdw.tms.entity.ProjectRecordEntity; import com.msdw.tms.entity.request.ExperimentProjectRecordImportRequest; @@ -15,6 +16,7 @@ import com.msdw.tms.entity.request.ProjectRecordImportRequest; import com.msdw.tms.entity.resp.GetByUserRecordResp; import com.msdw.tms.entity.vo.ProjectRecordExportVo; import com.msdw.tms.entity.vo.ProjectRecordVo; +import com.msdw.tms.entity.vo.StudentVo; import com.msdw.tms.service.ProjectRecordService; import org.apache.poi.ss.formula.functions.T; import org.springframework.beans.BeanUtils; @@ -38,6 +40,9 @@ public class ProjectRecordServiceImpl extends ServiceImpl projectRecordVos = this.baseMapper.getByRecordImport(projectRecord); // List projectRecordVos = this.baseMapper.getByUserRecordImport(projectRecord); + StudentVo studentVo = studentDao.queryStudentDetails(userId); + List importRequests = projectRecordVos.stream().map(project -> { ProjectRecordImportRequest request = new ProjectRecordImportRequest(); BeanUtils.copyProperties(project, request); @@ -183,8 +190,8 @@ public class ProjectRecordServiceImpl extends ServiceImpl projectRecordVos = this.baseMapper.getByUserRecordImport(projectRecord); + StudentVo studentVo = studentDao.queryStudentDetails(userId); + List importRequests = projectRecordVos.stream().map(project -> { ExperimentProjectRecordImportRequest request = new ExperimentProjectRecordImportRequest(); BeanUtils.copyProperties(project, request); @@ -211,8 +220,8 @@ public class ProjectRecordServiceImpl extends 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 diff --git a/src/main/resources/excel-template/考核记录模板.xlsx b/src/main/resources/excel-template/考核记录模板.xlsx index 9c171c4c0ca3beeae8f041987b2595c3fe1d2acc..519379bf9dd379c6ed3fb9f17b6deed34916cacc 100644 GIT binary patch delta 4664 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 Ue4@Z1vVUA3KFAFr=->E%0g7&{P5=M^ delta 4590 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 diff --git a/src/main/resources/mapper/tms/ProjectRecordDao.xml b/src/main/resources/mapper/tms/ProjectRecordDao.xml index a5999a1..b143123 100644 --- a/src/main/resources/mapper/tms/ProjectRecordDao.xml +++ b/src/main/resources/mapper/tms/ProjectRecordDao.xml @@ -106,7 +106,8 @@ startingTime as startTime, endTime, recordState, - tet.experimental_class_name + tet.experimental_class_name, + tet.experimental_name FROM tms_project_record tpr LEFT JOIN hr_project_management tp ON tpr.projectId = tp.projectId LEFT JOIN tms_experimental_teaching tet ON tpr.projectId = tet.project_id From 7ebfb8b5787a81c2f1eb1ebb431e1ad9823c0fbf Mon Sep 17 00:00:00 2001 From: "jiakun.lin" Date: Wed, 7 Apr 2021 11:21:25 +0800 Subject: [PATCH 36/43] =?UTF-8?q?=E6=88=90=E7=BB=A9=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=89=B9=E9=87=8F=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/msdw/tms/TmsApplication.java | 2 +- .../com/msdw/tms/api/AchievementManagementApi.java | 2 +- .../controller/AchievementManagementController.java | 11 ++++++++++- .../tms/service/AchievementManagementService.java | 2 +- .../impl/AchievementManagementServiceImpl.java | 6 ++++-- 5 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/msdw/tms/TmsApplication.java b/src/main/java/com/msdw/tms/TmsApplication.java index e2715d0..1e5e101 100644 --- a/src/main/java/com/msdw/tms/TmsApplication.java +++ b/src/main/java/com/msdw/tms/TmsApplication.java @@ -6,7 +6,7 @@ import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.scheduling.annotation.EnableScheduling; -@EnableScheduling//定时任务 +//@EnableScheduling//定时任务 @SpringBootApplication public class TmsApplication extends SpringBootServletInitializer { diff --git a/src/main/java/com/msdw/tms/api/AchievementManagementApi.java b/src/main/java/com/msdw/tms/api/AchievementManagementApi.java index 61eb7ed..b6b2635 100644 --- a/src/main/java/com/msdw/tms/api/AchievementManagementApi.java +++ b/src/main/java/com/msdw/tms/api/AchievementManagementApi.java @@ -55,7 +55,7 @@ public interface AchievementManagementApi { // R updateScore(@ApiParam(value = "recordid和score") ProjectRecordEntity entity); @ApiOperation(value = "删除实验报告", notes = "根据实验记录主键reportId和实验报告主键recordId删除实验报告") - R deleteReport(@ApiParam(value = "实验记录主键", required = true) Integer reportId, @ApiParam(value = "实验报告主键", required = true) @RequestParam Integer recordId); + R deleteReport(@ApiParam(value = "实验记录主键", required = true) List reportId, @ApiParam(value = "实验报告主键", required = true) @RequestParam List recordId); @ApiOperation(value = "班级实验报告列表查询", notes = "班级实验报告列表查询") R queryEvaluationReport(@ApiParam(value = "搜索内容(学校名称/学生姓名)", required = false) String searchContant, diff --git a/src/main/java/com/msdw/tms/controller/AchievementManagementController.java b/src/main/java/com/msdw/tms/controller/AchievementManagementController.java index 990ffb3..38fbcb4 100644 --- a/src/main/java/com/msdw/tms/controller/AchievementManagementController.java +++ b/src/main/java/com/msdw/tms/controller/AchievementManagementController.java @@ -203,7 +203,16 @@ public class AchievementManagementController implements AchievementManagementApi */ @Override @PostMapping("/deleteReport") - public R deleteReport(@RequestParam Integer reportId, @RequestParam Integer recordId) { + public R deleteReport(@RequestParam List reportId, @RequestParam List recordId) { + if (reportId == null || reportId.size() == 0){ + return R.error(400,"参数错误!"); + } + if (recordId == null || recordId.size() == 0){ + return R.error(400,"参数错误!"); + } + if (reportId.size() != recordId.size()){ + return R.error(400,"参数错误!"); + } R result = service.deleteReport(reportId, recordId); return result; } diff --git a/src/main/java/com/msdw/tms/service/AchievementManagementService.java b/src/main/java/com/msdw/tms/service/AchievementManagementService.java index 275b341..df44ed6 100644 --- a/src/main/java/com/msdw/tms/service/AchievementManagementService.java +++ b/src/main/java/com/msdw/tms/service/AchievementManagementService.java @@ -31,7 +31,7 @@ public interface AchievementManagementService extends IService reportId,List recordId); R queryEvaluationReport(String searchContant, Integer projectId, Integer page, Integer size); diff --git a/src/main/java/com/msdw/tms/service/impl/AchievementManagementServiceImpl.java b/src/main/java/com/msdw/tms/service/impl/AchievementManagementServiceImpl.java index 7dbd78c..393fc74 100644 --- a/src/main/java/com/msdw/tms/service/impl/AchievementManagementServiceImpl.java +++ b/src/main/java/com/msdw/tms/service/impl/AchievementManagementServiceImpl.java @@ -222,8 +222,10 @@ public class AchievementManagementServiceImpl extends ServiceImpl reportId,List recordId) { + for (int i = 0; i < reportId.size(); i++) { + achievementManagementDao.deleteReport(reportId.get(i), recordId.get(i)); + } return R.ok(); } From 200bfbf9cf80edc94847ce25dd3dbba554742742 Mon Sep 17 00:00:00 2001 From: "jiakun.lin" Date: Wed, 7 Apr 2021 11:33:37 +0800 Subject: [PATCH 37/43] =?UTF-8?q?=E5=91=98=E5=B7=A5=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E6=A8=A1=E6=9D=BF=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../员工导入失败数据导出模板.xlsx | Bin 9442 -> 9483 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/excel-template/员工导入失败数据导出模板.xlsx b/src/main/resources/excel-template/员工导入失败数据导出模板.xlsx index 30133bd4f40f25118ec79babd373e781ca9f7060..185e557087052a76ac7587558eaa7d2a18d87918 100644 GIT binary patch delta 5206 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 delta 5166 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 Z2h%?+h6n(l|1XsfdKn7C?_>Wv`9JL=pR@n~ From 4cf89760c6dca2c33ec9044bd48cb7291108978c Mon Sep 17 00:00:00 2001 From: "rong.liu" Date: Fri, 9 Apr 2021 11:47:43 +0800 Subject: [PATCH 38/43] =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E6=8A=A5=E5=91=8A?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=BF=94=E5=9B=9E=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/msdw/tms/entity/vo/AchievementManagementVO.java | 3 +++ src/main/resources/mapper/tms/AchievementManagementDao.xml | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/msdw/tms/entity/vo/AchievementManagementVO.java b/src/main/java/com/msdw/tms/entity/vo/AchievementManagementVO.java index 6cf318a..99913e1 100644 --- a/src/main/java/com/msdw/tms/entity/vo/AchievementManagementVO.java +++ b/src/main/java/com/msdw/tms/entity/vo/AchievementManagementVO.java @@ -91,4 +91,7 @@ public class AchievementManagementVO extends ExperimentalReportEntity { //学生id private Integer studentId; + + //运行有没有出现错误(0、运行正确 1、运行错误 + private Integer isError; } diff --git a/src/main/resources/mapper/tms/AchievementManagementDao.xml b/src/main/resources/mapper/tms/AchievementManagementDao.xml index 3d895e8..b64e643 100644 --- a/src/main/resources/mapper/tms/AchievementManagementDao.xml +++ b/src/main/resources/mapper/tms/AchievementManagementDao.xml @@ -409,7 +409,8 @@ IF (p.rightAndWrong = 0, hsi.score, 0) AS codeScore, hjp.judgmentPointsName, - hjp.experimentcode AS answer + hjp.experimentcode AS answer, + hec.isError FROM hr_experiment_code AS hec, hr_score_index AS hsi, hr_judgment_points AS hjp, From 054aa0de04e471676256f6a9d048b0ecbfbf45d1 Mon Sep 17 00:00:00 2001 From: "rong.liu" Date: Fri, 9 Apr 2021 11:48:01 +0800 Subject: [PATCH 39/43] =?UTF-8?q?=E5=BC=80=E5=90=AF=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/msdw/tms/TmsApplication.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/msdw/tms/TmsApplication.java b/src/main/java/com/msdw/tms/TmsApplication.java index 1e5e101..e2715d0 100644 --- a/src/main/java/com/msdw/tms/TmsApplication.java +++ b/src/main/java/com/msdw/tms/TmsApplication.java @@ -6,7 +6,7 @@ import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.scheduling.annotation.EnableScheduling; -//@EnableScheduling//定时任务 +@EnableScheduling//定时任务 @SpringBootApplication public class TmsApplication extends SpringBootServletInitializer { From 3182045d245f66b18eea2ff9fb5d8b3dcb2227d8 Mon Sep 17 00:00:00 2001 From: "jiakun.lin" Date: Thu, 15 Apr 2021 09:04:54 +0800 Subject: [PATCH 40/43] =?UTF-8?q?=E6=88=90=E7=BB=A9=E7=AE=A1=E7=90=86-?= =?UTF-8?q?=E8=80=83=E6=A0=B8=E5=A2=9E=E5=8A=A0systemid=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/mapper/tms/AchievementManagementDao.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/mapper/tms/AchievementManagementDao.xml b/src/main/resources/mapper/tms/AchievementManagementDao.xml index 3d895e8..abf9e8f 100644 --- a/src/main/resources/mapper/tms/AchievementManagementDao.xml +++ b/src/main/resources/mapper/tms/AchievementManagementDao.xml @@ -513,6 +513,7 @@ tms_project_hidden tph on et.id = tph.teach_id WHERE user_id = #{userId} + AND systemId = #{systemId} AND tph.is_hidden is NULL /*AND pm.isdel = 0*/ and et.experimental_class_name like From 30566635a2a70126d13069b6fddaea204fd91405 Mon Sep 17 00:00:00 2001 From: "jiakun.lin" Date: Thu, 15 Apr 2021 09:23:16 +0800 Subject: [PATCH 41/43] =?UTF-8?q?=E6=88=90=E7=BB=A9=E7=AE=A1=E7=90=86-?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=A2=9E=E5=8A=A0systemid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/msdw/tms/api/AchievementManagementApi.java | 1 + .../msdw/tms/controller/AchievementManagementController.java | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/src/main/java/com/msdw/tms/api/AchievementManagementApi.java b/src/main/java/com/msdw/tms/api/AchievementManagementApi.java index b6b2635..cc0eb4e 100644 --- a/src/main/java/com/msdw/tms/api/AchievementManagementApi.java +++ b/src/main/java/com/msdw/tms/api/AchievementManagementApi.java @@ -35,6 +35,7 @@ public interface AchievementManagementApi { @RequestParam(value = "开始时间", required = false) String startTime, @RequestParam(value = "结束时间", required = false) String endTime, @RequestParam(value = "月份", required = false) Integer month, + @RequestParam(value = "系统",required = true) Integer systemId, @RequestParam(value = "页码", required = true) Integer page, @RequestParam(value = "页数大小", required = true) Integer size); diff --git a/src/main/java/com/msdw/tms/controller/AchievementManagementController.java b/src/main/java/com/msdw/tms/controller/AchievementManagementController.java index 38fbcb4..269de60 100644 --- a/src/main/java/com/msdw/tms/controller/AchievementManagementController.java +++ b/src/main/java/com/msdw/tms/controller/AchievementManagementController.java @@ -108,6 +108,7 @@ public class AchievementManagementController implements AchievementManagementApi @RequestParam(required = false) String startTime, @RequestParam(required = false) String endTime, @RequestParam(required = false) Integer month, + @RequestParam(required = true) Integer systemId, @RequestParam(required = true) Integer page, @RequestParam(required = true) Integer size) { ResultsVo vo = new ResultsVo(); @@ -125,6 +126,9 @@ public class AchievementManagementController implements AchievementManagementApi if (endTime != null) { vo.setEndTime(endTime); } + if (systemId != null){ + vo.setSystemId(systemId); + } PageInfo result = service.newList(vo, page, size); return R.ok().put("data", result); } From 4231d1f8535d762d987d197d4027397511947880 Mon Sep 17 00:00:00 2001 From: "jiakun.lin" Date: Thu, 15 Apr 2021 14:25:43 +0800 Subject: [PATCH 42/43] =?UTF-8?q?=E8=81=8C=E7=AB=99=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=91=98=E5=B7=A5=E5=AF=BC=E5=85=A5=E6=9E=B6=E6=9E=84=E6=9D=83?= =?UTF-8?q?=E9=99=90bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/msdw/tms/service/impl/SystemSettingServiceImpl.java | 4 ++-- src/main/resources/mapper/tms/SystemSetting.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/msdw/tms/service/impl/SystemSettingServiceImpl.java b/src/main/java/com/msdw/tms/service/impl/SystemSettingServiceImpl.java index 3229994..c573743 100644 --- a/src/main/java/com/msdw/tms/service/impl/SystemSettingServiceImpl.java +++ b/src/main/java/com/msdw/tms/service/impl/SystemSettingServiceImpl.java @@ -616,7 +616,7 @@ public class SystemSettingServiceImpl implements SystemSetttingService { if (Integer.parseInt(str) == 13) {//2 Integer organizationId = systemSetttingDao.queryDepartmentNameOrganization(staffVo.getStaffProfessionalArchitectureName(), ConstantUtils.Keda_schoolId); Integer gradeId = systemSetttingDao.queryDepartmentNameGrade(staffVo.getStaffGradeName(), organizationId); - staffVo.setStaffGradeId(gradeId).setStaffProfessionalArchitectureId(organizationId); + staffVo.setStaffGradeId(gradeId).setStaffProfessionalArchitectureId(organizationId).setRoleId("13"); boolean b = systemSetttingDao.addStaffManager(staffVo); if (!b) { throw new RuntimeException(); @@ -624,7 +624,7 @@ public class SystemSettingServiceImpl implements SystemSetttingService { } else if (Integer.parseInt(str) == 14) {//3 Integer organizationId = systemSetttingDao.queryDepartmentNameOrganization(staffVo.getStaffProfessionalArchitectureNameTwo(), ConstantUtils.Keda_schoolId); Integer gradeId = systemSetttingDao.queryDepartmentNameGrade(staffVo.getStaffGradeNameTwo(), organizationId); - staffVo.setStaffGradeId(gradeId).setStaffProfessionalArchitectureId(organizationId); + staffVo.setStaffGradeId(gradeId).setStaffProfessionalArchitectureId(organizationId).setRoleId("14"); boolean b = systemSetttingDao.addStaffTeacher(staffVo); if (!b) { throw new RuntimeException(); diff --git a/src/main/resources/mapper/tms/SystemSetting.xml b/src/main/resources/mapper/tms/SystemSetting.xml index 86f6802..f8e760c 100644 --- a/src/main/resources/mapper/tms/SystemSetting.xml +++ b/src/main/resources/mapper/tms/SystemSetting.xml @@ -25,12 +25,12 @@ INSERT INTO staff (userId,schoolId,workNumber,staffGradeId,staffProfessionalArchitectureId,staffGradeName,staffProfessionalArchitectureName,platformId,roleId) VALUES - (#{userId},#{schoolId},#{workNumber},#{staffGradeId},#{staffProfessionalArchitectureId},#{staffGradeName},#{staffProfessionalArchitectureName},#{platformId},2) + (#{userId},#{schoolId},#{workNumber},#{staffGradeId},#{staffProfessionalArchitectureId},#{staffGradeName},#{staffProfessionalArchitectureName},#{platformId},#{roleId}) INSERT INTO staff (userId,schoolId,workNumber,staffGradeId,staffProfessionalArchitectureId,staffGradeName,staffProfessionalArchitectureName,platformId,roleId) VALUES - (#{userId},#{schoolId},#{workNumber},#{staffGradeId},#{staffProfessionalArchitectureId},#{staffGradeNameTwo},#{staffProfessionalArchitectureNameTwo},#{platformId},3) + (#{userId},#{schoolId},#{workNumber},#{staffGradeId},#{staffProfessionalArchitectureId},#{staffGradeNameTwo},#{staffProfessionalArchitectureNameTwo},#{platformId},#{roleId}) INSERT INTO staff (userId,schoolId,workNumber,staffGradeId,staffProfessionalArchitectureId,staffGradeName,staffProfessionalArchitectureName,platformId,roleId) From a76c49a1b9c7303a4782ae69f3ab9dff22868143 Mon Sep 17 00:00:00 2001 From: "jiakun.lin" Date: Mon, 19 Apr 2021 15:39:32 +0800 Subject: [PATCH 43/43] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E7=94=B5=E8=AF=9D=EF=BC=8C=E9=82=AE=E7=AE=B1=EF=BC=8C=E5=94=AF?= =?UTF-8?q?=E4=B8=80=E6=A0=87=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/mapper/tms/StudentDao.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/resources/mapper/tms/StudentDao.xml b/src/main/resources/mapper/tms/StudentDao.xml index 58878ee..13cea29 100644 --- a/src/main/resources/mapper/tms/StudentDao.xml +++ b/src/main/resources/mapper/tms/StudentDao.xml @@ -28,6 +28,9 @@ u.schoolId AS schoolAppellationId, u.disableAccount, u.lastLoginTime, + u.phone, + u.email, + u.uniqueIdentificationAccount, s.roleId, s.workNumber as workNumber, s.isdel,