瀏覽代碼

bug修改

xiaof 4 年之前
父節點
當前提交
b8133f27cf

+ 10 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskImportDto.java

@@ -9,6 +9,8 @@ public class ExamTaskImportDto {
 
     private String batchNo;
 
+    private String errorMsg;
+
     private List<ExamTaskDto> tasks;
 
     public String getBatchNo() {
@@ -19,6 +21,14 @@ public class ExamTaskImportDto {
         this.batchNo = batchNo;
     }
 
+    public String getErrorMsg() {
+        return errorMsg;
+    }
+
+    public void setErrorMsg(String errorMsg) {
+        this.errorMsg = errorMsg;
+    }
+
     public List<ExamTaskDto> getTasks() {
         return tasks;
     }

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

@@ -26,7 +26,7 @@ public interface ExamTaskMapper extends BaseMapper<ExamTask> {
 
     List<BlurryUserDto> listUser(@Param("schoolId") Long schoolId, @Param("param") String param);
 
-    IPage<ExamTaskDto> listTaskApply(Page<ExamTaskDto> page, @Param("schoolId") Long schoolId, @Param("auditStatus") String auditStatus, @Param("reviewStatus") String reviewStatus, @Param("cardRuleId") Long cardRuleId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("startTime") Long startTime, @Param("endTime") Long endTime, @Param("status") String[] status, @Param("userId") Long userId);
+    IPage<ExamTaskDto> listTaskApply(Page<ExamTaskDto> page, @Param("schoolId") Long schoolId, @Param("auditStatus") String auditStatus, @Param("reviewStatus") String reviewStatus, @Param("cardRuleId") Long cardRuleId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("startTime") Long startTime, @Param("endTime") Long endTime, @Param("status") String[] status, @Param("userId") Long userId, @Param("orgIds") Set<Long> orgIds);
 
     IPage<ExamTaskDto> listTaskReviewUnaudited(Page<ExamTaskDto> page, @Param("schoolId") Long schoolId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("userId") Long userId, @Param("cardRuleId") Long cardRuleId, @Param("startTime") Long startTime, @Param("endTime") Long endTime, @Param("orgIds") Set<Long> orgIds);
 

+ 4 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicCardRuleServiceImpl.java

@@ -67,7 +67,6 @@ public class BasicCardRuleServiceImpl extends ServiceImpl<BasicCardRuleMapper, B
         if (StringUtils.isNotBlank(param)) {
             queryWrapper.lambda().like(BasicCardRule::getName, param);
         }
-//        return this.list(queryWrapper);
         Set<Long> orgIds = commonService.listSubOrgIds();
         return this.baseMapper.list(schoolId, param, orgIds);
     }
@@ -86,6 +85,10 @@ public class BasicCardRuleServiceImpl extends ServiceImpl<BasicCardRuleMapper, B
         cardRule.setSchoolId(schoolId);
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
 
+        if(cardRule.getTitleRule().length() > 200){
+            throw ExceptionResultEnum.ERROR.exception("题卡标题规则长度不能超过200字符");
+        }
+
         // todo 校验是否有必选字段已使用
         QueryWrapper<BasicCardRule> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(BasicCardRule::getSchoolId, cardRule.getSchoolId()).eq(BasicCardRule::getName, cardRule.getName());

+ 87 - 18
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -1,5 +1,6 @@
 package com.qmth.distributed.print.business.service.impl;
 
+import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -17,6 +18,7 @@ import com.qmth.distributed.print.business.enums.ExamStatusEnum;
 import com.qmth.distributed.print.business.enums.ReviewStatusEnum;
 import com.qmth.distributed.print.business.mapper.ExamTaskMapper;
 import com.qmth.distributed.print.business.service.*;
+import com.qmth.distributed.print.business.util.ConvertUtil;
 import com.qmth.distributed.print.business.util.ExcelUtil;
 import com.qmth.distributed.print.business.util.ServletUtil;
 import com.qmth.distributed.print.business.util.excel.ExcelError;
@@ -83,6 +85,9 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     @Autowired
     private ExamPrintPlanService examPrintPlanService;
 
+    @Autowired
+    private ConvertUtil convertUtil;
+
     @Override
     public List<ExamTask> listByCourseCode(Long schoolId, String code) {
         QueryWrapper<ExamTask> queryWrapper = new QueryWrapper<>();
@@ -178,7 +183,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         if (examTask.getEnable()) {
             updateWrapper.lambda().set(ExamTask::getEnable, examTask.getEnable()) // 修改启用状态
                     .set(ExamTask::getReviewStatus, null) // 清空审核状态
-                    .set(ExamTask::getStatus, ExamStatusEnum.STAGE) // 更新为命题中
+                    .set(ExamTask::getStatus, task.getStatus().equals(ExamStatusEnum.NEW) || task.getStatus().equals(ExamStatusEnum.READY) ? task.getStatus() : ExamStatusEnum.STAGE) // 更新为命题中
                     .eq(ExamTask::getId, examTask.getId());
         } else {
             updateWrapper.lambda().set(ExamTask::getEnable, examTask.getEnable()).eq(ExamTask::getId, examTask.getId());
@@ -197,16 +202,18 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         examTask.setSchoolId(schoolId);
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
 
-        if(StringUtils.isNotBlank(examTask.getPaperNumber())){
+        if (StringUtils.isNotBlank(examTask.getPaperNumber())) {
             QueryWrapper<ExamTask> taskQueryWrapper = new QueryWrapper<>();
             taskQueryWrapper.lambda().eq(ExamTask::getSchoolId, schoolId).eq(ExamTask::getPaperNumber, examTask.getPaperNumber());
             ExamTask task = this.getOne(taskQueryWrapper);
-            if(task != null){
+            if (task != null) {
                 throw ExceptionResultEnum.ERROR.exception("试卷编号已存在");
             }
         } else {
-            // todo paperNumber生成问题, 必填字段校验
-
+            // 试卷编号生成规则:年月日(例如:20100419)+0000(例如:0001)顺序编号
+            String date = DateUtil.today().replace("-","");
+            String paperNumber = convertUtil.getIncre(date, "paperNumber", 5);
+            examTask.setPaperNumber(paperNumber);
         }
 
         QueryWrapper<BasicExamRule> queryWrapper = new QueryWrapper<>();
@@ -256,10 +263,6 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                     } else if (!userImportDto.getCourseName().equals(course.getName())) {
                         excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[课程名称]与系统中不匹配"));
                     }
-
-                    if (StringUtils.isBlank(userImportDto.getPaperNumber())) {
-                        excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[试卷编号]必填"));
-                    }
                 }
             }
             if (excelErrorTemp.size() > 0) {
@@ -282,6 +285,9 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         ExamTaskImportDto examTaskImportDto = new ExamTaskImportDto();
         examTaskImportDto.setBatchNo(batchNo);
         List<ExamTaskDto> tasks = new ArrayList<>();
+        Set<String> paperNumbers = new HashSet<>();
+        // 错误信息
+        StringJoiner stringJoiner = new StringJoiner(";");
         for (int i = 0; i < finalList.size(); i++) {
             LinkedMultiValueMap<Integer, Object> excelMap = finalList.get(i);
             List<Object> examTaskTempList = excelMap.get(i);
@@ -296,6 +302,25 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 //保存
                 examTaskTempService.save(examTaskTemp);
 
+                if (StringUtils.isNotBlank(examTaskTemp.getPaperNumber())) {
+                    if(paperNumbers.contains(examTaskTemp.getPaperNumber())){
+                        // 试卷编号在文件内重复,跳过
+                        String error = examTaskTemp.getPaperNumber()+"文件中重复";
+                        stringJoiner.add(error);
+                        continue;
+                    }
+                    QueryWrapper<ExamTask> taskQueryWrapper = new QueryWrapper<>();
+                    taskQueryWrapper.lambda().eq(ExamTask::getSchoolId, schoolId).eq(ExamTask::getPaperNumber, examTaskTemp.getPaperNumber());
+                    ExamTask task1 = this.getOne(taskQueryWrapper);
+                    if (task1 != null) {
+                        // 试卷编号已存在,直接跳过
+                        String error = examTaskTemp.getPaperNumber()+"已存在";
+                        stringJoiner.add(error);
+                        continue;
+                    }
+                    paperNumbers.add(examTaskTemp.getPaperNumber());
+                }
+
                 ExamTaskDto examTaskDto = new ExamTaskDto();
                 examTaskDto.setCourseCode(examTaskTemp.getCourseCode());
                 examTaskDto.setCourseName(examTaskTemp.getCourseName());
@@ -317,6 +342,8 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 tasks.add(examTaskDto);
             }
         }
+        // 设置重复信息,页面做二次校验
+        examTaskImportDto.setErrorMsg(stringJoiner.toString());
         examTaskImportDto.setTasks(tasks);
         return examTaskImportDto;
     }
@@ -337,17 +364,46 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         QueryWrapper<ExamTaskTemp> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(ExamTaskTemp::getBatchNo, task.getBatchNo());
         List<ExamTaskTemp> examTaskTemps = examTaskTempService.list(queryWrapper);
+
+        QueryWrapper<BasicExamRule> examQueryWrapper = new QueryWrapper<>();
+        examQueryWrapper.lambda().eq(BasicExamRule::getSchoolId, schoolId);
+        BasicExamRule basicExamRule = basicExamRuleService.getOne(examQueryWrapper);
+        if (basicExamRule == null) {
+            throw ExceptionResultEnum.ERROR.exception("通用规则未设置");
+        }
+
         if (examTaskTemps.isEmpty()) {
             throw ExceptionResultEnum.ERROR.exception("没有可保存数据");
         }
         List<ExamTask> list = new ArrayList<>();
+        Set<String> paperNumbers = new HashSet<>();
         for (ExamTaskTemp examTaskTemp : examTaskTemps) {
             ExamTask examTask = new ExamTask();
             examTask.setSchoolId(task.getSchoolId());
             examTask.setCourseCode(examTaskTemp.getCourseCode());
             examTask.setCourseName(examTaskTemp.getCourseName());
             examTask.setSpecialty(examTaskTemp.getSpecialty());
-            // todo paperNumber自动生成。校验paperNumber是否重复
+
+            if (StringUtils.isNotBlank(examTaskTemp.getPaperNumber())) {
+                if(paperNumbers.contains(examTaskTemp.getPaperNumber())){
+                    // 试卷编号在文件内重复,跳过
+                    continue;
+                }
+                QueryWrapper<ExamTask> taskQueryWrapper = new QueryWrapper<>();
+                taskQueryWrapper.lambda().eq(ExamTask::getSchoolId, schoolId).eq(ExamTask::getPaperNumber, examTaskTemp.getPaperNumber());
+                ExamTask task1 = this.getOne(taskQueryWrapper);
+                if (task1 != null) {
+//                    throw ExceptionResultEnum.ERROR.exception("试卷编号已存在");
+                    // 试卷编号已存在,直接跳过
+                    continue;
+                }
+                paperNumbers.add(examTaskTemp.getPaperNumber());
+            } else {
+                // 试卷编号生成规则:年月日(例如:20100419)+0000(例如:0001)顺序编号
+                String date = DateUtil.today().replace("-","");
+                String paperNumber = convertUtil.getIncre(date, "paperNumber", 5);
+                examTask.setPaperNumber(paperNumber);
+            }
             examTask.setPaperNumber(examTaskTemp.getPaperNumber());
             examTask.setStartTime(task.getStartTime());
             examTask.setEndTime(task.getEndTime());
@@ -356,18 +412,30 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             examTask.setBatchNo(task.getBatchNo());
             examTask.setCreateId(sysUser.getId());
             examTask.setCreateTime(System.currentTimeMillis());
-            String userId = task.getUsers().stream().map(m -> {
-                if (examTaskTemp.getCourseCode().equals(m.get("courseCode"))) {
+            /*String userId = task.getUsers().stream().map(m -> {
+                if (examTaskTemp.getCourseCode().equals(m.get("courseCode")) && examTaskTemp.getPaperNumber().equals(m.get("paperNumber"))) {
                     return m.get("userId");
                 }
                 return "";
-            }).findFirst().get();
+            }).findFirst().get();*/
+            String userId = null;
+            String specialty = null;
+            for (Map<String, String> user : task.getUsers()) {
+                String ucourseCode = user.get("courseCode");
+                String upaperNumber = user.get("paperNumber");
+                if(examTaskTemp.getCourseCode().equals(ucourseCode) && examTaskTemp.getPaperNumber().equals(upaperNumber)){
+                    userId = user.get("userId");
+                    specialty = user.get("specialty");
+                }
+            }
+            examTask.setSpecialty(specialty);
             if (StringUtils.isNotBlank(userId)) {
                 examTask.setUserId(Long.valueOf(userId));
                 examTask.setStatus(ExamStatusEnum.READY);
             } else {
                 examTask.setStatus(ExamStatusEnum.NEW);
             }
+            examTask.setReview(basicExamRule.getReview());
             list.add(examTask);
         }
         return this.saveBatch(list);
@@ -377,9 +445,10 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     public IPage<ExamTaskDto> listTaskApply(String auditStatus, String reviewStatus, Long cardRuleId, String courseCode, String paperNumber, Long startTime, Long endTime, Integer pageNumber, Integer pageSize) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        Set<Long> orgIds = commonService.listSubOrgIds();
         Page<ExamTaskDto> page = new Page<>(pageNumber, pageSize);
         String[] strings = new String[]{ExamStatusEnum.NEW.name(), ExamStatusEnum.SUBMIT.name(), ExamStatusEnum.FINISH.name()};
-        IPage<ExamTaskDto> examTaskDtoIPage = this.baseMapper.listTaskApply(page, schoolId, auditStatus, reviewStatus, cardRuleId, courseCode, paperNumber, startTime, endTime, strings, sysUser.getId());
+        IPage<ExamTaskDto> examTaskDtoIPage = this.baseMapper.listTaskApply(page, schoolId, auditStatus, reviewStatus, cardRuleId, courseCode, paperNumber, startTime, endTime, strings, sysUser.getId(), orgIds);
         return examTaskDtoIPage;
     }
 
@@ -418,7 +487,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             statusEnum = ExamStatusEnum.FINISH;
             // 校验是否可以提交打印状态
             ExamTask examTask = this.getById(taskReviewLog.getExamTaskId());
-            commonService.checkData(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber(),sysUser);
+            commonService.checkData(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber(), sysUser);
         } else {
             statusEnum = ExamStatusEnum.STAGE;
         }
@@ -488,7 +557,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             RelatePaperDto relatePaperDto = new RelatePaperDto();
             // 抽取一次
             String paperTypes;
-            if (DrawRuleEnum.ONE.equals(drawRule)){
+            if (DrawRuleEnum.ONE.equals(drawRule)) {
                 // 未曝光类型
                 paperTypes = examTaskDetail.getUnexposedPaperType();
             } else {
@@ -527,7 +596,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
 
             // 校验题卡是否提交
             ExamCard examCard = examCardService.getById(examTaskDetail.getCardId());
-            if(!ExamCardStatusEnum.SUBMIT.name().equals(examCard.getStatus().name())){
+            if (!ExamCardStatusEnum.SUBMIT.name().equals(examCard.getStatus().name())) {
                 throw ExceptionResultEnum.ERROR.exception("请先提交题卡");
             }
         }
@@ -537,7 +606,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         if (examTask.getStatus().name().equals(ExamStatusEnum.SUBMIT.name()) && !examTask.getReview()) {
             examTask.setStatus(ExamStatusEnum.FINISH);
             // 校验是否可以提交打印状态
-            commonService.checkData(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber(),(SysUser) ServletUtil.getRequestUser());
+            commonService.checkData(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber(), (SysUser) ServletUtil.getRequestUser());
         }
 
         UpdateWrapper<ExamTask> updateWrapper = new UpdateWrapper<>();

+ 1 - 1
distributed-print-business/src/main/resources/db/init-table.sql

@@ -48,7 +48,7 @@ CREATE TABLE `basic_card_rule`  (
   `write_sign` tinyint(4) NOT NULL COMMENT '0-禁用,1-启用',
   `required_fields` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '必选字段',
   `extend_fields` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '扩展字段',
-  `title_rule` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '题卡标题规则',
+  `title_rule` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '题卡标题规则',
   `attention` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '注意事项',
   `objective_attention` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '客观题注意事项',
   `subjective_attention` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主观题注意事项',

+ 2 - 0
distributed-print-business/src/main/resources/mapper/BasicCardRuleMapper.xml

@@ -45,6 +45,7 @@
                 and create_time = #{createTime}
             </if>
         </where>
+        order by create_time desc
     </select>
     <select id="list" resultMap="BaseResultMap">
         SELECT
@@ -66,6 +67,7 @@
                     </foreach>
                 </if>
                 )
+        order by create_time desc
     </select>
 
 </mapper>

+ 1 - 0
distributed-print-business/src/main/resources/mapper/BasicCourseMapper.xml

@@ -41,6 +41,7 @@
                 and name like concat('%',#{name} ,'%')
             </if>
         </where>
+        order by create_time desc
     </select>
 
 </mapper>

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

@@ -21,7 +21,7 @@
         code, name, enable, access_key, access_secret, remark, create_time, update_time
     </sql>
     <select id="listSchool" resultType="com.qmth.distributed.print.business.bean.dto.SchoolDto">
-        select id, name, enable, logo from basic_school where enable = true
+        select id, name, enable, logo from basic_school where enable = true order by create_time desc
     </select>
 
 </mapper>

+ 1 - 0
distributed-print-business/src/main/resources/mapper/BasicTemplateMapper.xml

@@ -57,6 +57,7 @@
                 and create_time &lt;= #{endTime}
             </if>
         </where>
+        order by create_time desc
     </select>
 
 </mapper>

+ 3 - 0
distributed-print-business/src/main/resources/mapper/ExamCardMapper.xml

@@ -76,6 +76,7 @@
                 and a.update_time &lt; #{finishEndTime}
             </if>
         </where>
+        order by a.create_time desc
     </select>
     <select id="getCardDetail" resultType="com.qmth.distributed.print.business.bean.dto.CardDetailDto">
         SELECT
@@ -113,6 +114,7 @@
             AND a.type = #{type}
             AND b.enable = TRUE
             AND c.org_id = #{orgId}
+        order by a.create_time desc
     </select>
     <select id="listCustom" resultType="com.qmth.distributed.print.business.entity.ExamCard">
         SELECT
@@ -129,5 +131,6 @@
                 exam_task_detail b
             WHERE
                 a.id = b.card_id)
+        order by a.create_time desc
     </select>
 </mapper>

+ 6 - 2
distributed-print-business/src/main/resources/mapper/ExamTaskMapper.xml

@@ -88,6 +88,7 @@
                 and a.start_time &lt;= #{endTime}
             </if>
         </where>
+        order by a.create_time desc
     </select>
     <select id="listUser" resultType="com.qmth.distributed.print.business.bean.dto.BlurryUserDto">
         SELECT
@@ -140,11 +141,11 @@
                 LEFT JOIN
             sys_user c ON a.user_id = c.id
             <where>
-                <if test="userId != null and userId != ''">
+                <if test="orgIds != null and userId != null and userId != ''">
                     and a.user_id = #{userId}
                 </if>
             </where>
-            ) a
+            order by a.create_time desc) a
         <where>
             a.enable = true and a.status not in
             <foreach item="item" collection="status" separator="," open="(" close=")" index="">
@@ -242,6 +243,7 @@
                 </foreach>
             </if>
         </where>
+        order by a.create_time desc
     </select>
     <select id="listTaskReviewAudited" resultType="com.qmth.distributed.print.business.bean.dto.ExamTaskDto">
         SELECT
@@ -313,6 +315,7 @@
                 </foreach>
             </if>
         </where>
+        order by a.create_time desc
     </select>
     <select id="listTaskPaper" resultType="com.qmth.distributed.print.business.bean.dto.ExamTaskDetailDto">
         SELECT
@@ -365,6 +368,7 @@
                 </foreach>
             </if>
         </where>
+        order by a.create_time desc
     </select>
     <select id="listPaperNumbers" resultType="com.qmth.distributed.print.business.bean.dto.RelatePaperDto">
         SELECT

+ 1 - 0
distributed-print-business/src/main/resources/mapper/ExamTaskReviewLogMapper.xml

@@ -31,6 +31,7 @@
             sys_user b ON a.operate_id = b.id
         WHERE
             a.exam_task_id = #{examTaskId}
+        order by a.create_time desc
     </select>
 
 </mapper>

+ 61 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/ClientController.java

@@ -3,9 +3,12 @@ package com.qmth.distributed.print.api;
 import com.qmth.boot.api.annotation.Aac;
 import com.qmth.boot.api.annotation.BOOL;
 import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.distributed.print.business.entity.SysUser;
+import com.qmth.distributed.print.common.util.Result;
+import com.sun.org.apache.xpath.internal.operations.Bool;
 import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * @Date: 2021/4/19.
@@ -15,4 +18,60 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.client}")
 @Aac(auth = BOOL.FALSE)
 public class ClientController {
+
+    /**
+     * 登录
+     * @param sysUser
+     * @return
+     */
+    @ApiOperation(value = "登录")
+    @RequestMapping(value = "/user/login", method = RequestMethod.POST)
+    public Result login(@RequestBody SysUser sysUser){
+
+        return null;
+    }
+
+    /**
+     * 试卷打样-列表
+     * @param schoolId 学校ID
+     * @param machineCode 机器唯一码
+     * @param orgId 机构ID
+     * @param printPlanId 印刷计划ID
+     * @param courseCode 课程代码
+     * @param paperNumber 试卷编号
+     * @param isTry 是否打样
+     * @param isPass 是否合格
+     * @param pageNumber
+     * @param pageSize
+     * @return
+     */
+    @ApiOperation(value = "试卷打样-列表")
+    @RequestMapping(value = "/paper_try/list", method = RequestMethod.POST)
+    public Result paperTryList(@RequestParam("schoolId") Long schoolId,
+                               @RequestParam("machineCode") String machineCode,
+                               @RequestParam("orgId") Long orgId,
+                               @RequestParam(value = "printPlanId", required = false) Long printPlanId,
+                               @RequestParam(value = "courseCode", required = false) String courseCode,
+                               @RequestParam(value = "paperNumber", required = false) String paperNumber,
+                               @RequestParam(value = "isTry", required = false) Boolean isTry,
+                               @RequestParam(value = "isPass", required = false)Boolean isPass,
+                               @RequestParam("pageNumber") Integer pageNumber,
+                               @RequestParam("pageSize") Integer pageSize){
+
+        return null;
+    }
+
+    /**
+     * 试卷打样-查看/试印/重印
+     * @param schoolId
+     * @param examTaskId
+     * @return
+     */
+    @ApiOperation(value = "试卷打样-查看/试印/重印")
+    @RequestMapping(value = "/paper_try/print", method = RequestMethod.POST)
+    public Result paperTryList(@RequestParam("schoolId") Long schoolId,
+                               @RequestParam("examTaskId") Long examTaskId){
+
+        return null;
+    }
 }