Bladeren bron

课程目标达成度加入当前用户id查询

wangliang 1 jaar geleden
bovenliggende
commit
c33a986445
19 gewijzigde bestanden met toevoegingen van 182 en 45 verwijderingen
  1. 34 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/ScoreResult.java
  2. 2 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TCFinalScore.java
  3. 2 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TCPaperStruct.java
  4. 2 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TCUsualScore.java
  5. 8 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TCFinalScoreMapper.java
  6. 2 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TCUsualScoreMapper.java
  7. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TCFinalScoreService.java
  8. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TCUsualScoreService.java
  9. 10 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TRBasicInfoService.java
  10. 17 9
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TCFinalScoreServiceImpl.java
  11. 10 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TCPaperStructServiceImpl.java
  12. 7 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TCUsualScoreServiceImpl.java
  13. 20 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TRBasicInfoServiceImpl.java
  14. 1 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TRExamStudentServiceImpl.java
  15. 12 0
      distributed-print-business/src/main/resources/mapper/TCFinalScoreMapper.xml
  16. 9 1
      distributed-print-business/src/main/resources/mapper/TCUsualScoreMapper.xml
  17. 11 0
      distributed-print/install/mysql/upgrade/3.3.1.sql
  18. 30 11
      distributed-print/src/main/java/com/qmth/distributed/print/api/TRBasicInfoController.java
  19. 3 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/FieldUniqueEnum.java

+ 34 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/ScoreResult.java

@@ -36,6 +36,40 @@ public class ScoreResult implements Serializable {
     @ApiModelProperty(value = "试卷编号")
     private String paperNumber;
 
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "教学课程id")
+    private Long teachCourseId;
+
+    @ApiModelProperty(value = "用户名称")
+    private String userName;
+
+    @ApiModelProperty(value = "用户登陆名")
+    private String userLoginName;
+
+    public Long getTeachCourseId() {
+        return teachCourseId;
+    }
+
+    public void setTeachCourseId(Long teachCourseId) {
+        this.teachCourseId = teachCourseId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getUserLoginName() {
+        return userLoginName;
+    }
+
+    public void setUserLoginName(String userLoginName) {
+        this.userLoginName = userLoginName;
+    }
+
     public Long getId() {
         return id;
     }

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TCFinalScore.java

@@ -183,11 +183,11 @@ public class TCFinalScore extends BaseEntity implements Serializable {
             return false;
         }
         TCFinalScore that = (TCFinalScore) o;
-        return examId.equals(that.examId) && courseCode.equals(that.courseCode) && Objects.equals(courseName, that.courseName) && paperNumber.equals(that.paperNumber) && name.equals(that.name) && studentCode.equals(that.studentCode) && score.equals(that.score) && scoreDetail.equals(that.scoreDetail) && enable.equals(that.enable);
+        return examId.equals(that.examId) && courseCode.equals(that.courseCode) && Objects.equals(courseName, that.courseName) && paperNumber.equals(that.paperNumber) && name.equals(that.name) && studentCode.equals(that.studentCode) && score.equals(that.score) && scoreDetail.equals(that.scoreDetail) && enable.equals(that.enable) && Objects.equals(getCreateId(), that.getCreateId());
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(examId, courseCode, courseName, paperNumber, name, studentCode, score, scoreDetail, enable);
+        return Objects.hash(examId, courseCode, courseName, paperNumber, name, studentCode, score, scoreDetail, enable, getCreateId());
     }
 }

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TCPaperStruct.java

@@ -179,11 +179,11 @@ public class TCPaperStruct extends BaseEntity implements Serializable {
             return false;
         }
         TCPaperStruct that = (TCPaperStruct) o;
-        return examId.equals(that.examId) && courseCode.equals(that.courseCode) && Objects.equals(courseName, that.courseName) && paperNumber.equals(that.paperNumber) && Objects.equals(paperStruct, that.paperStruct) && Objects.equals(paperStructDimension, that.paperStructDimension);
+        return examId.equals(that.examId) && courseCode.equals(that.courseCode) && Objects.equals(courseName, that.courseName) && paperNumber.equals(that.paperNumber) && Objects.equals(paperStruct, that.paperStruct) && Objects.equals(paperStructDimension, that.paperStructDimension) && Objects.equals(getCreateId(), that.getCreateId());
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(examId, courseCode, courseName, paperNumber, paperStruct, paperStructDimension);
+        return Objects.hash(examId, courseCode, courseName, paperNumber, paperStruct, paperStructDimension, getCreateId());
     }
 }

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TCUsualScore.java

@@ -143,11 +143,11 @@ public class TCUsualScore extends BaseEntity implements Serializable {
             return false;
         }
         TCUsualScore that = (TCUsualScore) o;
-        return examId.equals(that.examId) && courseCode.equals(that.courseCode) && Objects.equals(courseName, that.courseName) && paperNumber.equals(that.paperNumber) && name.equals(that.name) && studentCode.equals(that.studentCode) && score.equals(that.score) && enable.equals(that.enable);
+        return examId.equals(that.examId) && courseCode.equals(that.courseCode) && Objects.equals(courseName, that.courseName) && paperNumber.equals(that.paperNumber) && name.equals(that.name) && studentCode.equals(that.studentCode) && score.equals(that.score) && enable.equals(that.enable) && Objects.equals(getCreateId(), that.getCreateId());
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(examId, courseCode, courseName, paperNumber, name, studentCode, score, enable);
+        return Objects.hash(examId, courseCode, courseName, paperNumber, name, studentCode, score, enable, getCreateId());
     }
 }

+ 8 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TCFinalScoreMapper.java

@@ -27,9 +27,10 @@ public interface TCFinalScoreMapper extends BaseMapper<TCFinalScore> {
      * @param examId
      * @param courseCode
      * @param paperNumber
+     * @param userId
      * @return
      */
-    public IPage<TCFinalScore> finalScoreList(IPage<Map> iPage, @Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber);
+    public IPage<TCFinalScore> finalScoreList(IPage<Map> iPage, @Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("userId") Long userId);
 
     /**
      * 查找期末成绩分数图
@@ -37,9 +38,10 @@ public interface TCFinalScoreMapper extends BaseMapper<TCFinalScore> {
      * @param examId
      * @param courseCode
      * @param paperNumber
+     * @param userId
      * @return
      */
-    public FinalScoreDto finalScoreScoreOverView(@Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber);
+    public FinalScoreDto finalScoreScoreOverView(@Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("userId") Long userId);
 
     /**
      * 查找期末成绩分数区间
@@ -49,9 +51,10 @@ public interface TCFinalScoreMapper extends BaseMapper<TCFinalScore> {
      * @param paperNumber
      * @param start
      * @param end
+     * @param userId
      * @return
      */
-    public int getCountByScoreRange(@Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("start") Double start, @Param("end") Double end);
+    public int getCountByScoreRange(@Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("start") Double start, @Param("end") Double end, @Param("userId") Long userId);
 
     /**
      * 查找考生成绩
@@ -59,7 +62,8 @@ public interface TCFinalScoreMapper extends BaseMapper<TCFinalScore> {
      * @param examId
      * @param courseCode
      * @param paperNumber
+     * @param userId
      * @return
      */
-    public List<FinalScoreResult> examStudentOverview(@Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber);
+    public List<FinalScoreResult> examStudentOverview(@Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("userId") Long userId);
 }

+ 2 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TCUsualScoreMapper.java

@@ -37,7 +37,8 @@ public interface TCUsualScoreMapper extends BaseMapper<TCUsualScore> {
      * @param examId
      * @param courseCode
      * @param paperNumber
+     * @param userId
      * @return
      */
-    public IPage<TCUsualScore> usualScoreList(IPage<Map> iPage, @Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber);
+    public IPage<TCUsualScore> usualScoreList(IPage<Map> iPage, @Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("userId") Long userId);
 }

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TCFinalScoreService.java

@@ -105,7 +105,7 @@ public interface TCFinalScoreService extends IService<TCFinalScore> {
      * @param paperNumber
      * @return
      */
-    public List<TCFinalScore> queryDbSourceList(Long examId, String courseCode, String paperNumber);
+    public List<TCFinalScore> queryByExamIdAndCourseCodeAndPaperNumber(Long examId, String courseCode, String paperNumber);
 
     /**
      * 获取期末考试同步锁

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TCUsualScoreService.java

@@ -50,5 +50,5 @@ public interface TCUsualScoreService extends IService<TCUsualScore> {
      * @param paperNumber
      * @return
      */
-    public List<TCUsualScore> queryDbSourceList(Long examId, String courseCode, String paperNumber);
+    public List<TCUsualScore> queryByExamIdAndCourseCodeAndPaperNumber(Long examId, String courseCode, String paperNumber);
 }

+ 10 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TRBasicInfoService.java

@@ -25,6 +25,16 @@ import java.util.Map;
  */
 public interface TRBasicInfoService extends IService<TRBasicInfo> {
 
+    /**
+     * 根据考试id/课程编码/试卷编码查询数据库数据
+     *
+     * @param examId
+     * @param courseCode
+     * @param paperNumber
+     * @return
+     */
+    public TRBasicInfo queryByExamIdAndCourseCodeAndPaperNumber(Long examId, String courseCode, String paperNumber);
+
     /**
      * 获取课程目标考核分布-分数图
      *

+ 17 - 9
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TCFinalScoreServiceImpl.java

@@ -165,7 +165,7 @@ public class TCFinalScoreServiceImpl extends ServiceImpl<TCFinalScoreMapper, TCF
                 }
                 if (!CollectionUtils.isEmpty(tcFinalScoreList)) {
                     successData.add("共导入").add(tcFinalScoreList.size() + "").add("条数据");
-                    List<TCFinalScore> tcFinalScoreDbSourceList = tcFinalScoreService.queryDbSourceList(examId, courseCode, paperNumber);
+                    List<TCFinalScore> tcFinalScoreDbSourceList = tcFinalScoreService.queryByExamIdAndCourseCodeAndPaperNumber(examId, courseCode, paperNumber);
                     if (CollectionUtils.isEmpty(tcFinalScoreDbSourceList) || !CollectionUtils.isEqualCollection(tcFinalScoreDbSourceList, tcFinalScoreList)) {
                         tcFinalScoreService.removeByIds(tcFinalScoreDbSourceList.stream().map(s -> s.getId()).collect(Collectors.toList()));
                         tcFinalScoreService.saveBatch(tcFinalScoreList);
@@ -204,7 +204,8 @@ public class TCFinalScoreServiceImpl extends ServiceImpl<TCFinalScoreMapper, TCF
      */
     @Override
     public IPage<TCFinalScore> finalScoreList(IPage<Map> iPage, Long examId, String courseCode, String paperNumber) {
-        return this.baseMapper.finalScoreList(iPage, examId, courseCode, paperNumber);
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        return this.baseMapper.finalScoreList(iPage, examId, courseCode, paperNumber, sysUser.getId());
     }
 
     /**
@@ -217,7 +218,8 @@ public class TCFinalScoreServiceImpl extends ServiceImpl<TCFinalScoreMapper, TCF
      */
     @Override
     public FinalScoreDto finalScoreScoreOverView(Long examId, String courseCode, String paperNumber) {
-        return this.baseMapper.finalScoreScoreOverView(examId, courseCode, paperNumber);
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        return this.baseMapper.finalScoreScoreOverView(examId, courseCode, paperNumber, sysUser.getId());
     }
 
     /**
@@ -232,7 +234,8 @@ public class TCFinalScoreServiceImpl extends ServiceImpl<TCFinalScoreMapper, TCF
      */
     @Override
     public int getCountByScoreRange(Long examId, String courseCode, String paperNumber, Double start, Double end) {
-        return this.baseMapper.getCountByScoreRange(examId, courseCode, paperNumber, start, end);
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        return this.baseMapper.getCountByScoreRange(examId, courseCode, paperNumber, start, end, sysUser.getId());
     }
 
     /**
@@ -245,7 +248,8 @@ public class TCFinalScoreServiceImpl extends ServiceImpl<TCFinalScoreMapper, TCF
      */
     @Override
     public List<FinalScoreResult> examStudentOverview(Long examId, String courseCode, String paperNumber) {
-        return this.baseMapper.examStudentOverview(examId, courseCode, paperNumber);
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        return this.baseMapper.examStudentOverview(examId, courseCode, paperNumber, sysUser.getId());
     }
 
     /**
@@ -280,7 +284,7 @@ public class TCFinalScoreServiceImpl extends ServiceImpl<TCFinalScoreMapper, TCF
                 }
                 if (!CollectionUtils.isEmpty(tcFinalScoreList)) {
                     successData.add("共同步").add(tcFinalScoreList.size() + "").add("条数据");
-                    List<TCFinalScore> tcFinalScoreDbSourceList = tcFinalScoreService.queryDbSourceList(examId, courseCode, paperNumber);
+                    List<TCFinalScore> tcFinalScoreDbSourceList = tcFinalScoreService.queryByExamIdAndCourseCodeAndPaperNumber(examId, courseCode, paperNumber);
                     if (CollectionUtils.isEmpty(tcFinalScoreDbSourceList) || !CollectionUtils.isEqualCollection(tcFinalScoreDbSourceList, tcFinalScoreList)) {
                         tcFinalScoreService.removeByIds(tcFinalScoreDbSourceList.stream().map(s -> s.getId()).collect(Collectors.toList()));
                         tcFinalScoreService.saveBatch(tcFinalScoreList);
@@ -316,9 +320,11 @@ public class TCFinalScoreServiceImpl extends ServiceImpl<TCFinalScoreMapper, TCF
     @Override
     @Transactional
     public Boolean remove(Long examId, String courseCode, String paperNumber) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         return tcFinalScoreService.remove(new QueryWrapper<TCFinalScore>().lambda().eq(TCFinalScore::getExamId, examId)
                 .eq(TCFinalScore::getCourseCode, courseCode)
-                .eq(TCFinalScore::getPaperNumber, paperNumber));
+                .eq(TCFinalScore::getPaperNumber, paperNumber)
+                .eq(TCFinalScore::getCreateId, sysUser.getId()));
     }
 
     /**
@@ -330,10 +336,12 @@ public class TCFinalScoreServiceImpl extends ServiceImpl<TCFinalScoreMapper, TCF
      * @return
      */
     @Override
-    public List<TCFinalScore> queryDbSourceList(Long examId, String courseCode, String paperNumber) {
+    public List<TCFinalScore> queryByExamIdAndCourseCodeAndPaperNumber(Long examId, String courseCode, String paperNumber) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         return tcFinalScoreService.list(new QueryWrapper<TCFinalScore>().lambda().eq(TCFinalScore::getExamId, examId)
                 .eq(TCFinalScore::getCourseCode, courseCode)
-                .eq(TCFinalScore::getPaperNumber, paperNumber));
+                .eq(TCFinalScore::getPaperNumber, paperNumber)
+                .eq(TCFinalScore::getCreateId, sysUser.getId()));
     }
 
     /**

+ 10 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TCPaperStructServiceImpl.java

@@ -78,9 +78,11 @@ public class TCPaperStructServiceImpl extends ServiceImpl<TCPaperStructMapper, T
     @Override
     @Transactional
     public Boolean remove(Long examId, String courseCode, String paperNumber) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         return tcPaperStructService.remove(new QueryWrapper<TCPaperStruct>().lambda().eq(TCPaperStruct::getExamId, examId)
                 .eq(TCPaperStruct::getCourseCode, courseCode)
-                .eq(TCPaperStruct::getPaperNumber, paperNumber));
+                .eq(TCPaperStruct::getPaperNumber, paperNumber)
+                .eq(TCPaperStruct::getCreateId, sysUser.getId()));
     }
 
     /**
@@ -214,7 +216,7 @@ public class TCPaperStructServiceImpl extends ServiceImpl<TCPaperStructMapper, T
                     paperStructList.add(p.getMainNumber() + "_" + p.getSubNumber() + "_" + p.getScore());
                 }
                 successData.add("共同步").add(paperStructDimensionResultList.size() + "").add("条数据");
-                TCPaperStruct tcPaperStructDb = tcPaperStructService.getOne(new QueryWrapper<TCPaperStruct>().lambda().eq(TCPaperStruct::getExamId, examId).eq(TCPaperStruct::getCourseCode, courseCode).eq(TCPaperStruct::getPaperNumber, paperNumber));
+                TCPaperStruct tcPaperStructDb = tcPaperStructService.queryByExamIdAndCourseCodeAndPaperNumber(examId, courseCode, paperNumber);
                 TCPaperStruct tcPaperStruct = null;
                 if (Objects.nonNull(tcPaperStructDb) && Objects.nonNull(tcPaperStructDb.getPaperStructDimension())) {
                     tcPaperStruct = new TCPaperStruct();
@@ -288,7 +290,12 @@ public class TCPaperStructServiceImpl extends ServiceImpl<TCPaperStructMapper, T
      */
     @Override
     public TCPaperStruct queryByExamIdAndCourseCodeAndPaperNumber(Long examId, String courseCode, String paperNumber) {
-        return tcPaperStructService.getOne(new QueryWrapper<TCPaperStruct>().lambda().eq(TCPaperStruct::getExamId, examId).eq(TCPaperStruct::getCourseCode, courseCode).eq(TCPaperStruct::getPaperNumber, paperNumber));
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        return tcPaperStructService.getOne(new QueryWrapper<TCPaperStruct>().lambda()
+                .eq(TCPaperStruct::getExamId, examId)
+                .eq(TCPaperStruct::getCourseCode, courseCode)
+                .eq(TCPaperStruct::getPaperNumber, paperNumber)
+                .eq(TCPaperStruct::getCreateId, sysUser.getId()));
     }
 
     /**

+ 7 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TCUsualScoreServiceImpl.java

@@ -137,7 +137,7 @@ public class TCUsualScoreServiceImpl extends ServiceImpl<TCUsualScoreMapper, TCU
                 }
                 if (!CollectionUtils.isEmpty(tcUsualScoreList)) {
                     successData.add("共导入").add(tcUsualScoreList.size() + "").add("条数据");
-                    List<TCUsualScore> tcUsualScoreDbSourceList = tcUsualScoreService.queryDbSourceList(examId, courseCode, paperNumber);
+                    List<TCUsualScore> tcUsualScoreDbSourceList = tcUsualScoreService.queryByExamIdAndCourseCodeAndPaperNumber(examId, courseCode, paperNumber);
                     if (CollectionUtils.isEmpty(tcUsualScoreDbSourceList) || !CollectionUtils.isEqualCollection(tcUsualScoreDbSourceList, tcUsualScoreList)) {
                         tcUsualScoreService.removeByIds(tcUsualScoreDbSourceList.stream().map(s -> s.getId()).collect(Collectors.toList()));
                         tcUsualScoreService.saveBatch(tcUsualScoreList);
@@ -176,7 +176,8 @@ public class TCUsualScoreServiceImpl extends ServiceImpl<TCUsualScoreMapper, TCU
      */
     @Override
     public IPage<TCUsualScore> usualScoreList(IPage<Map> iPage, Long examId, String courseCode, String paperNumber) {
-        return this.baseMapper.usualScoreList(iPage, examId, courseCode, paperNumber);
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        return this.baseMapper.usualScoreList(iPage, examId, courseCode, paperNumber, sysUser.getId());
     }
 
     /**
@@ -188,9 +189,11 @@ public class TCUsualScoreServiceImpl extends ServiceImpl<TCUsualScoreMapper, TCU
      * @return
      */
     @Override
-    public List<TCUsualScore> queryDbSourceList(Long examId, String courseCode, String paperNumber) {
+    public List<TCUsualScore> queryByExamIdAndCourseCodeAndPaperNumber(Long examId, String courseCode, String paperNumber) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         return tcUsualScoreService.list(new QueryWrapper<TCUsualScore>().lambda().eq(TCUsualScore::getExamId, examId)
                 .eq(TCUsualScore::getCourseCode, courseCode)
-                .eq(TCUsualScore::getPaperNumber, paperNumber));
+                .eq(TCUsualScore::getPaperNumber, paperNumber)
+                .eq(TCUsualScore::getCreateId, sysUser.getId()));
     }
 }

+ 20 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TRBasicInfoServiceImpl.java

@@ -80,6 +80,23 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
     protected static final String tbBgColor = "F2F2F2";
     protected static final String tbPercentWidth = "100%";
 
+    /**
+     * 根据考试id/课程编码/试卷编码查询数据库数据
+     *
+     * @param examId
+     * @param courseCode
+     * @param paperNumber
+     * @return
+     */
+    @Override
+    public TRBasicInfo queryByExamIdAndCourseCodeAndPaperNumber(Long examId, String courseCode, String paperNumber) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        return trBasicInfoService.getOne(new QueryWrapper<TRBasicInfo>().lambda().eq(TRBasicInfo::getExamId, examId)
+                .eq(TRBasicInfo::getCourseCode, courseCode)
+                .eq(TRBasicInfo::getPaperNumber, paperNumber)
+                .eq(TRBasicInfo::getCreateId, sysUser.getId()));
+    }
+
     /**
      * 获取课程目标考核分布-分数图
      *
@@ -788,9 +805,11 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
     @Override
     @Transactional
     public Boolean remove(Long examId, String courseCode, String paperNumber) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         return trBasicInfoService.remove(new QueryWrapper<TRBasicInfo>().lambda().eq(TRBasicInfo::getExamId, examId)
                 .eq(TRBasicInfo::getCourseCode, courseCode)
-                .eq(TRBasicInfo::getPaperNumber, paperNumber));
+                .eq(TRBasicInfo::getPaperNumber, paperNumber)
+                .eq(TRBasicInfo::getCreateId, sysUser.getId()));
     }
 
     /**

+ 1 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TRExamStudentServiceImpl.java

@@ -158,8 +158,7 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
     @Override
     @Transactional
     public Boolean remove(Long examId, String courseCode, String paperNumber) {
-        TRBasicInfo trBasicInfo = trBasicInfoService.getOne(new QueryWrapper<TRBasicInfo>().lambda().eq(TRBasicInfo::getExamId, examId)
-                .eq(TRBasicInfo::getCourseCode, courseCode).eq(TRBasicInfo::getPaperNumber, paperNumber));
+        TRBasicInfo trBasicInfo = trBasicInfoService.queryByExamIdAndCourseCodeAndPaperNumber(examId, courseCode, paperNumber);
         return Objects.nonNull(trBasicInfo) ? trExamStudentService.remove(trBasicInfo.getId()) : false;
     }
 

+ 12 - 0
distributed-print-business/src/main/resources/mapper/TCFinalScoreMapper.xml

@@ -14,6 +14,9 @@
             <if test="paperNumber != null and paperNumber != ''">
                 and t.paper_number = #{paperNumber}
             </if>
+            <if test="userId != null and userId != ''">
+                and t.create_id = #{userId}
+            </if>
         </where>
         order by t.student_code
     </select>
@@ -34,6 +37,9 @@
             </if>
             <if test="paperNumber != null and paperNumber != ''">
                 and tcfs.paper_number = #{paperNumber}
+            </if>
+            <if test="userId != null and userId != ''">
+                and tcfs.create_id = #{userId} and tcus.create_id = #{userId}
             </if>
                 and tcfs.enable = true and tcus.enable = true
         </where>
@@ -50,6 +56,9 @@
             </if>
             <if test="paperNumber != null and paperNumber != ''">
                 and tcfs.paper_number = #{paperNumber}
+            </if>
+            <if test="userId != null and userId != ''">
+                and tcfs.create_id = #{userId}
             </if>
                 and tcfs.score &gt;= #{start} and tcfs.score &lt;= #{end}
                 and tcfs.enable = true
@@ -75,6 +84,9 @@
             </if>
             <if test="paperNumber != null and paperNumber != ''">
                 and tcfs.paper_number = #{paperNumber}
+            </if>
+            <if test="userId != null and userId != ''">
+                and tcfs.create_id = #{userId} and tcus.create_id = #{userId}
             </if>
                 and tcfs.enable = true and tcus.enable = true
         </where>

+ 9 - 1
distributed-print-business/src/main/resources/mapper/TCUsualScoreMapper.xml

@@ -8,12 +8,17 @@
                  t.exam_id as examId,
                  t.course_code as courseCode,
                  t.course_name as courseName,
-                 t.paper_number as paperNumber
+                 t.paper_number as paperNumber,
+                 tc.id AS teachCourseId,
+                 creator.real_name AS userName,
+                 creator.login_name AS userLoginName
         FROM
             mark_paper t
             left join basic_exam be on be.id = t.exam_id
             left join basic_semester bs on bs.id = be.semester_id
             left join sys_user su on t.user_id = su.id
+            left join teach_course tc ON tc.exam_id = t.exam_id and tc.course_code = t.course_code
+            left join sys_user creator ON creator.id = tc.user_id
         <where>
             <if test="examId != null and examId != ''">
                 and t.exam_id = #{examId}
@@ -49,6 +54,9 @@
             <if test="paperNumber != null and paperNumber != ''">
                 and t.paper_number = #{paperNumber}
             </if>
+            <if test="userId != null and userId != ''">
+                and t.create_id = #{userId}
+            </if>
         </where>
         order by t.student_code
     </select>

+ 11 - 0
distributed-print/install/mysql/upgrade/3.3.1.sql

@@ -695,10 +695,12 @@ WHERE id=2006;
 INSERT INTO sys_privilege
 (id, name, url, `type`, parent_id, `sequence`, property, related, enable, default_auth, front_display)
 VALUES(2033, '同步试卷蓝图结构', '/api/admin/course/degree/final_score/paper_struct_dimension/sync', 'URL', 2006, 1, 'AUTH', NULL, 1, 1, 1);
+
 -- 2024/03/28
 DELETE FROM t_b_task where type in ('STUDENT_IMPORT', 'CLAZZ_IMPORT', 'CREATE_PDF');
 UPDATE `sys_privilege` SET `enable` = '0', `default_auth` = '0', `front_display` = '0' WHERE (`id` = '163');
 UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '289');
+
 -- 2024/04/02
 ALTER TABLE `mark_student` ADD COLUMN `teacher_id` BIGINT(20) NULL COMMENT '任课老师ID' AFTER `class_name`;
 ALTER TABLE `teach_course` DROP COLUMN `basic_course_id`;
@@ -709,3 +711,12 @@ UPDATE `sys_privilege` SET `related` = '672,902,903,904,905,906,907,908,909,910,
 ALTER TABLE `mark_user_class`
 DROP COLUMN `group_number`,
 DROP INDEX `idx_1` , ADD INDEX `idx_1` USING BTREE (`exam_id`, `paper_number`, `class_name`);
+
+-- 2024/04/03
+ALTER TABLE t_c_usual_score DROP KEY t_c_usual_score_unique;
+ALTER TABLE t_c_usual_score ADD CONSTRAINT t_c_usual_score_unique UNIQUE KEY (exam_id,course_code,paper_number,name,student_code,create_id);
+ALTER TABLE t_c_final_score DROP KEY t_c_final_score_unique;
+ALTER TABLE t_c_final_score ADD CONSTRAINT t_c_final_score_unique UNIQUE KEY (exam_id,course_code,paper_number,name,student_code,create_id);
+ALTER TABLE t_c_paper_struct DROP KEY t_c_paper_struct_unique;
+ALTER TABLE t_c_paper_struct ADD CONSTRAINT t_c_paper_struct_unique UNIQUE KEY (exam_id,course_code,paper_number,create_id);
+ALTER TABLE t_r_basic_info ADD CONSTRAINT t_r_basic_info_unique UNIQUE KEY (exam_id,course_code,paper_number,create_id);

+ 30 - 11
distributed-print/src/main/java/com/qmth/distributed/print/api/TRBasicInfoController.java

@@ -33,6 +33,7 @@ import com.qmth.teachcloud.common.entity.BasicSchool;
 import com.qmth.teachcloud.common.entity.SysConfig;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.FieldUniqueEnum;
 import com.qmth.teachcloud.common.enums.ImportTemplateEnum;
 import com.qmth.teachcloud.common.enums.log.CustomizedOperationTypeEnum;
 import com.qmth.teachcloud.common.service.CommonCacheService;
@@ -42,6 +43,9 @@ import com.qmth.teachcloud.mark.entity.MarkPaper;
 import io.swagger.annotations.*;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.io.FileUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.dao.DuplicateKeyException;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
@@ -70,6 +74,7 @@ import java.util.stream.Collectors;
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_COURSE_DEGREE)
 public class TRBasicInfoController {
+    private final static Logger log = LoggerFactory.getLogger(TRBasicInfoController.class);
 
     @Resource
     PrintCommonService printCommonService;
@@ -113,7 +118,7 @@ public class TRBasicInfoController {
                              @ApiParam(value = "试卷编号", required = true) @RequestParam String paperNumber) {
         MarkPaper markPaper = printCommonService.getMarkPaper(examId, paperNumber);
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        TRBasicInfo trBasicInfo = trBasicInfoService.getOne(new QueryWrapper<TRBasicInfo>().lambda().eq(TRBasicInfo::getExamId, examId).eq(TRBasicInfo::getCourseCode, courseCode).eq(TRBasicInfo::getPaperNumber, paperNumber));
+        TRBasicInfo trBasicInfo = trBasicInfoService.queryByExamIdAndCourseCodeAndPaperNumber(examId, courseCode, paperNumber);
 
         CourseWeightResult courseWeightResult = trBasicInfoService.findCourseWeightResultRmi(examId, courseCode);
         TCPaperStruct tcPaperStruct = tcPaperStructService.queryByExamIdAndCourseCodeAndPaperNumber(examId, courseCode, paperNumber);
@@ -169,13 +174,27 @@ public class TRBasicInfoController {
             return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
         }
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        TRBasicInfo trBasicInfoDb = trBasicInfoService.getOne(new QueryWrapper<TRBasicInfo>().lambda().eq(TRBasicInfo::getExamId, trBasicInfo.getExamId()).eq(TRBasicInfo::getCourseCode, trBasicInfo.getCourseCode()).eq(TRBasicInfo::getPaperNumber, trBasicInfo.getPaperNumber()));
-        if (Objects.isNull(trBasicInfoDb)) {
-            trBasicInfoDb = new TRBasicInfo(trBasicInfo, sysUser.getId());
-            MarkPaper markPaper = printCommonService.getMarkPaper(trBasicInfo.getExamId(), trBasicInfo.getPaperNumber());
-            trBasicInfoDb = trBasicInfoService.getReportView(trBasicInfoDb, markPaper, sysUser.getId(), trBasicInfoService.findCourseWeightResultRmi(trBasicInfo.getExamId(), trBasicInfo.getCourseCode()));
-        } else {
-            trBasicInfoDb.updateInfo(trBasicInfo, sysUser.getId());
+        TRBasicInfo trBasicInfoDb = null;
+        try {
+            trBasicInfoDb = trBasicInfoService.queryByExamIdAndCourseCodeAndPaperNumber(trBasicInfo.getExamId(), trBasicInfo.getCourseCode(), trBasicInfo.getPaperNumber());
+            if (Objects.isNull(trBasicInfoDb)) {
+                trBasicInfoDb = new TRBasicInfo(trBasicInfo, sysUser.getId());
+                MarkPaper markPaper = printCommonService.getMarkPaper(trBasicInfo.getExamId(), trBasicInfo.getPaperNumber());
+                trBasicInfoDb = trBasicInfoService.getReportView(trBasicInfoDb, markPaper, sysUser.getId(), trBasicInfoService.findCourseWeightResultRmi(trBasicInfo.getExamId(), trBasicInfo.getCourseCode()));
+            } else {
+                trBasicInfoDb.updateInfo(trBasicInfo, sysUser.getId());
+            }
+        } catch (Exception e) {
+            log.error(SystemConstant.LOG_ERROR, e);
+            if (e instanceof DuplicateKeyException) {
+                String errorColumn = e.getCause().toString();
+                String columnStr = errorColumn.substring(errorColumn.lastIndexOf("key") + 3, errorColumn.length()).replaceAll("'", "");
+                throw ExceptionResultEnum.SQL_ERROR.exception("[" + FieldUniqueEnum.convertToTitle(columnStr) + "]数据不允许重复插入");
+            } else if (e instanceof ApiException) {
+                ResultUtil.error((ApiException) e, ((ApiException) e).getCode(), e.getMessage());
+            } else {
+                ResultUtil.error(e.getMessage());
+            }
         }
         return ResultUtil.ok(trBasicInfoService.saveOrUpdate(trBasicInfoDb));
     }
@@ -193,7 +212,7 @@ public class TRBasicInfoController {
             Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
             BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
 
-            TRBasicInfo trBasicInfo = trBasicInfoService.getOne(new QueryWrapper<TRBasicInfo>().lambda().eq(TRBasicInfo::getExamId, examId).eq(TRBasicInfo::getCourseCode, courseCode).eq(TRBasicInfo::getPaperNumber, paperNumber));
+            TRBasicInfo trBasicInfo = trBasicInfoService.queryByExamIdAndCourseCodeAndPaperNumber(examId, courseCode, paperNumber);
             Objects.requireNonNull(trBasicInfo, "没有报告信息");
             Objects.requireNonNull(trBasicInfo.getCourseEvaluationResult(), "没有课程目标信息");
             Objects.requireNonNull(trBasicInfo.getCourseEvaluationResultDetail(), "没有课程考生信息");
@@ -299,7 +318,7 @@ public class TRBasicInfoController {
                                    @ApiParam(value = "试卷编号", required = true) @RequestParam String paperNumber,
                                    @ApiParam(value = "true:报告,false:成绩管理", required = true) @RequestParam boolean report) throws IOException {
         ReportChangeResult reportChangeResult = new ReportChangeResult();
-        List<TCUsualScore> tcUsualScoreList = tcUsualScoreService.list(new QueryWrapper<TCUsualScore>().lambda().eq(TCUsualScore::getExamId, examId).eq(TCUsualScore::getCourseCode, courseCode).eq(TCUsualScore::getPaperNumber, paperNumber));
+        List<TCUsualScore> tcUsualScoreList = tcUsualScoreService.queryByExamIdAndCourseCodeAndPaperNumber(examId, courseCode, paperNumber);
         if (CollectionUtils.isNotEmpty(tcUsualScoreList)) {
             Set<String> usualScoreCourseSet = new LinkedHashSet<>();
             TCUsualScore tcUsualScore = tcUsualScoreList.get(0);
@@ -329,7 +348,7 @@ public class TRBasicInfoController {
                 }
             }
 
-            TRBasicInfo trBasicInfo = trBasicInfoService.getOne(new QueryWrapper<TRBasicInfo>().lambda().eq(TRBasicInfo::getExamId, examId).eq(TRBasicInfo::getCourseCode, courseCode).eq(TRBasicInfo::getPaperNumber, paperNumber));
+            TRBasicInfo trBasicInfo = trBasicInfoService.queryByExamIdAndCourseCodeAndPaperNumber(examId, courseCode, paperNumber);
             if (Objects.nonNull(trBasicInfo) && Objects.nonNull(trBasicInfo.getCourseEvaluationResultDetail())) {
                 JSONObject jsonObject = JSONObject.parseObject(trBasicInfo.getCourseEvaluationResultDetail());
                 List<CourseTargetWordDto> courseTargetWordDtoList = JSONArray.parseArray(jsonObject.get("targetWordMap").toString(), CourseTargetWordDto.class);

+ 3 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/FieldUniqueEnum.java

@@ -43,7 +43,9 @@ public enum FieldUniqueEnum {
 
     t_c_final_score_unique("考生"),
 
-    t_c_paper_struct_unique("试卷结构");
+    t_c_paper_struct_unique("试卷结构"),
+
+    t_r_basic_info_unique("课程目标达成度报告");
 
     private String title;