Browse Source

美术阅卷10月新增需求-纪检查询功能

wangliang 5 năm trước cách đây
mục cha
commit
80d23c68d9

+ 6 - 0
stmms-ms-core/pom.xml

@@ -25,5 +25,11 @@
             <groupId>cn.com.qmth</groupId>
             <artifactId>stmms-ms-commons</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+            <version>2.9.2</version>
+        </dependency>
     </dependencies>
 </project>

+ 13 - 1
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/domain/MarkLog.java

@@ -2,6 +2,7 @@ package cn.com.qmth.stmms.ms.core.domain;
 
 import cn.com.qmth.stmms.ms.core.domain.user.Role;
 import cn.com.qmth.stmms.ms.core.vo.Subject;
+import io.swagger.annotations.ApiModelProperty;
 import org.hibernate.annotations.DynamicInsert;
 import org.hibernate.annotations.DynamicUpdate;
 
@@ -27,31 +28,42 @@ public class MarkLog implements Serializable {
 
     private Long id;
     @NotNull
+    @ApiModelProperty(value = "操作人id", example = "1")
     private Long createUserId;
     @NotNull
+    @ApiModelProperty(value = "操作人")
     private String createUserName;
     @NotNull
+    @ApiModelProperty(value = "角色")
     private String createRole;
+    @ApiModelProperty(value = "科目")
     private String subject;
     @NotNull
+    @ApiModelProperty(value = "准考证号")
     private String examNumber;
     @NotNull
+    @ApiModelProperty(value = "学生姓名")
     private String studentName;
     @NotNull
-    @Enumerated(value = EnumType.STRING)
+    @ApiModelProperty(value = "操作类型,1:分档,2:打分,3:回评档位,4:回评分数,5:档位打回,6:档位打回回评,7:一键定档,8:标准卷设置", example = "2")
     private Integer operType;
+    @ApiModelProperty(value = "操作前数据")
     private String operDataBefore;
+    @ApiModelProperty(value = "操作后数据")
     private String operDataAfter;
     @Temporal(value = TemporalType.DATE)
     @NotNull
+    @ApiModelProperty(value = "操作时间")
     private Date createTime;
     @NotNull
     private Long workId;
     @NotNull
     private Long paperId;
+    @ApiModelProperty(value = "备注")
     private String remark;
     @NotNull
     @Enumerated(value = EnumType.ORDINAL)
+    @ApiModelProperty(value = "阶段", example = "3")
     private MarkStage stage;
 
     public MarkLog() {

+ 2 - 1
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/MarkLogRepo.java

@@ -2,12 +2,13 @@ package cn.com.qmth.stmms.ms.core.repository;
 
 import cn.com.qmth.stmms.ms.core.domain.MarkLog;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 
 /**
  * @author ting.yin
  * @date 2016年10月21日
  */
-public interface MarkLogRepo extends JpaRepository<MarkLog, Long> {
+public interface MarkLogRepo extends JpaRepository<MarkLog, Long>, JpaSpecificationExecutor<MarkLog> {
 
     /**
      * 根据条件查询最近一条日志

+ 4 - 4
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/MarkTaskRepo.java

@@ -93,10 +93,10 @@ public interface MarkTaskRepo extends JpaRepository<MarkTask, Long>, JpaSpecific
      * @param markerId
      * @return
      */
-//    @Query(value = "SELECT t.result,COUNT(*) FROM mark_task t " +
-//            "WHERE t.`question_id` = ? AND t.`marker_id` = ? and t.stage = 1 " +
-//            "GROUP BY t.`result` ORDER BY t.result", nativeQuery = true)
-//    List<Object[]> countGroupByQuestionIdAndLevel(Long questionId, Long markerId);
+    @Query(value = "SELECT t.result,COUNT(*) FROM mark_task t " +
+            "WHERE t.`question_id` = ? AND t.`marker_id` = ? and t.stage = 1 " +
+            "GROUP BY t.`result` ORDER BY t.result", nativeQuery = true)
+    List<Object[]> countGroupByQuestionIdAndLevel(Long questionId, Long markerId);
 
     //2019.10.16修改为所有试卷
     @Query(value = "SELECT t.result,COUNT(*) FROM mark_task t " +

+ 20 - 0
stmms-ms-log/pom.xml

@@ -28,5 +28,25 @@
     		<groupId>org.springframework.boot</groupId>
     		<artifactId>spring-boot-starter-aop</artifactId>
 		</dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>io.swagger</groupId>
+            <artifactId>swagger-annotations</artifactId>
+            <version>1.5.21</version>
+        </dependency>
+        <dependency>
+            <groupId>io.swagger</groupId>
+            <artifactId>swagger-models</artifactId>
+            <version>1.5.21</version>
+        </dependency>
     </dependencies>
 </project>

+ 1 - 1
stmms-ms-log/src/main/java/cn/com/qmth/stmms/ms/log/MarkLogAop.java → stmms-ms-log/src/main/java/cn/com/qmth/stmms/ms/log/aop/MarkLogAop.java

@@ -1,4 +1,4 @@
-package cn.com.qmth.stmms.ms.log;
+package cn.com.qmth.stmms.ms.log.aop;
 
 import cn.com.qmth.stmms.ms.commons.utils.SqlUtil;
 import cn.com.qmth.stmms.ms.core.domain.MarkLog;

+ 66 - 0
stmms-ms-log/src/main/java/cn/com/qmth/stmms/ms/log/config/SwaggerConfig.java

@@ -0,0 +1,66 @@
+package cn.com.qmth.stmms.ms.log.config;
+
+import com.google.common.base.Predicates;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ParameterBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.schema.ModelRef;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.service.Parameter;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description: swagger配置类
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2019/9/21
+ */
+@Configuration
+@EnableSwagger2
+public class SwaggerConfig {
+
+    @Bean
+    public Docket createRestApi() {
+//        ParameterBuilder tokenPar1 = new ParameterBuilder();
+        ParameterBuilder tokenPar2 = new ParameterBuilder();
+        List<Parameter> pars = new ArrayList<>();
+//        tokenPar1.name("key").description("key").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
+        tokenPar2.name("token").description("token").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
+//        pars.add(tokenPar1.build());
+        pars.add(tokenPar2.build());
+
+        return new Docket(DocumentationType.SWAGGER_2)
+                .groupName("美术阅卷")
+                .select()
+                .apis(RequestHandlerSelectors.basePackage("cn.com.qmth.stmms.ms.log"))
+//                .apis(RequestHandlerSelectors.any())
+                .paths(PathSelectors.any())
+                // 不显示错误的接口地址 
+                .paths(Predicates.not(PathSelectors.regex("/error.*")))// 错误路径不监控
+                .build()
+                .globalOperationParameters(pars)
+                .apiInfo(apiInfo());
+    }
+
+    private ApiInfo apiInfo() {
+        ApiInfo apiInfo = new ApiInfo(
+                "美术阅卷 - api",
+                "Some custom description of API.",
+                "API TOS",
+                "Terms of service",
+                "myeaddress@company.com",
+                "License of API",
+                "API license URL");
+        return apiInfo;
+    }
+}
+ 
+

+ 69 - 0
stmms-ms-log/src/main/java/cn/com/qmth/stmms/ms/log/controller/MarkLogController.java

@@ -0,0 +1,69 @@
+package cn.com.qmth.stmms.ms.log.controller;
+
+import cn.com.qmth.stmms.ms.core.domain.MarkLog;
+import cn.com.qmth.stmms.ms.core.repository.MarkLogRepo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.persistence.criteria.Predicate;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+@Api(tags = "纪检审计接口controller")
+@RestController
+@RequestMapping("api/marklog")
+public class MarkLogController {
+
+    @Autowired
+    MarkLogRepo markLogRepo;
+
+    @ApiOperation(value = "纪检审计查询接口")
+    @GetMapping("/selectMarkLog")
+    public Page<MarkLog> selectMarkLog(@ApiParam(value = "科目", required = false) @RequestParam(required = false) String subject,
+                                       @ApiParam(value = "准考证号", required = false) @RequestParam(required = false) Long examNumber,
+                                       @ApiParam(value = "学生姓名", required = false) @RequestParam(required = false) String studentName,
+                                       @ApiParam(value = "操作类型(1:分档,2:打分,3:回评档位,4:回评分数,5:档位打回,6:档位打回回评,7:一键定档,8:标准卷设置)", required = false) @RequestParam(required = false) Integer operType,
+                                       @ApiParam(value = "开始时间", required = false) @RequestParam(required = false) String startTime,
+                                       @ApiParam(value = "结束时间", required = false) @RequestParam(required = false) String endTime,
+                                       @RequestParam Integer curPage,
+                                       @RequestParam Integer pageSize) {
+        Pageable pageable = new PageRequest(curPage, pageSize, Sort.Direction.DESC, "createTime");
+        Specification<MarkLog> specification = (root, query, cb) -> {
+            List<Predicate> predicates = new ArrayList<>();
+            if (Objects.nonNull(subject)) {
+                predicates.add(cb.equal(root.get("subject"), subject));
+            }
+            if (Objects.nonNull(examNumber)) {
+                predicates.add(cb.equal(root.get("examNumber"), examNumber));
+            }
+            if (Objects.nonNull(studentName)) {
+                predicates.add(cb.like(root.get("studentName").as(String.class), "%" + studentName + "%"));
+            }
+            if (Objects.nonNull(operType)) {
+                predicates.add(cb.equal(root.get("operType"), operType));
+            }
+            if (Objects.nonNull(startTime)) {
+                //大于或等于传入时间
+                predicates.add(cb.greaterThanOrEqualTo(root.get("createTime").as(String.class), startTime));
+            }
+            if (Objects.nonNull(endTime)) {
+                //小于或等于传入时间
+                predicates.add(cb.lessThanOrEqualTo(root.get("createTime").as(String.class), endTime));
+            }
+            return cb.and(predicates.toArray(new Predicate[predicates.size()]));
+        };
+        return markLogRepo.findAll(specification, pageable);
+    }
+}