From 3a8e1524dcf0eeb610d38123d5f0a3ef838379cd Mon Sep 17 00:00:00 2001
From: linzhijie <19970921lzj>
Date: 星期一, 12 四月 2021 15:44:53 +0800
Subject: [PATCH] Merge branch '20210406-maqv2' into 20210412-youhua

---
 src/main/java/com/ots/project/exam/mapper/TExamPaperMapper.java                                 |   59 
 src/main/java/com/ots/project/exam/dto/DataReport.java                                          |    4 
 src/main/java/com/ots/project/exam/dto/QuestionContent.java                                     |    5 
 src/main/resources/mybatis/exam/EntTestMemberMapper.xml                                         |    6 
 src/main/java/com/ots/project/exam/dto/BaseExamPage.java                                        |    6 
 src/main/java/com/ots/project/exam/service/ITExamPaperService.java                              |   82 
 src/main/java/com/ots/project/exam/service/ITSubjectService.java                                |   64 
 src/main/resources/templates/exam/question/add-intelligence.html                                |    7 
 src/main/java/com/ots/project/exam/service/impl/EntTestMemberBackstageServiceImpl.java          |   56 
 src/main/resources/static/i18n/messages_th_TH.properties                                        |    9 
 src/main/java/com/ots/project/exam/dto/JAQPersons.java                                          |    4 
 src/main/java/com/ots/project/exam/mapper/EntTestSendtaskMailMapper.java                        |   55 
 src/main/java/com/ots/project/exam/mapper/QuestionMapper.java                                   |   12 
 src/main/java/com/ots/project/monitor/job/task/HrEmailTask.java                                 |   13 
 src/main/java/com/ots/project/exam/controller/EntTestPackageController.java                     |   25 
 src/main/java/com/ots/project/exam/service/impl/EntDemographyParamServiceImpl.java              |   59 
 src/main/java/com/ots/project/exam/service/impl/EntTestDetailServiceImpl.java                   |    8 
 src/main/java/com/ots/project/exam/service/impl/TTextContentServiceImpl.java                    |   66 
 src/main/java/com/ots/project/exam/dto/ExamPaperAnswerUpdate.java                               |    2 
 src/main/java/com/ots/project/exam/mapper/EntTestPackageMapper.java                             |   58 
 src/main/java/com/ots/project/exam/service/IExamPaperService.java                               |   13 
 src/main/java/com/ots/project/exam/dto/Member.java                                              |    7 
 src/main/java/com/ots/project/exam/dto/QuestionPart.java                                        |    6 
 src/main/java/com/ots/project/exam/service/IEntTestMemberService.java                           |   99 
 src/main/java/com/ots/project/exam/controller/TExamReportController.java                        |   34 
 src/main/java/com/ots/project/exam/domain/TExamPaperQuestion.java                               |   18 
 src/main/java/com/ots/project/exam/service/IEntTestSendtaskService.java                         |   56 
 src/main/resources/templates/exam/enterprise/add.html                                           |    2 
 src/main/java/com/ots/project/exam/service/UserEventLogService.java                             |    6 
 src/main/java/com/ots/project/exam/domain/comparator/TimeSpentComparator.java                   |    6 
 src/main/java/com/ots/project/exam/viewmodel/QuestionEditItemVM.java                            |    2 
 src/main/java/com/ots/project/exam/domain/TTextContent.java                                     |   32 
 src/main/java/com/ots/project/exam/dto/ExamPaperTitleItemObject.java                            |   13 
 src/main/java/com/ots/project/demo/controller/DemoTableController.java                          |  162 
 src/main/java/com/ots/project/exam/domain/Question.java                                         |   43 
 src/main/java/com/ots/project/exam/domain/EntTestSendtask.java                                  |   94 
 src/main/java/com/ots/project/exam/service/impl/EntDemographyInfoServiceImpl.java               |   57 
 src/main/java/com/ots/project/exam/mapper/BaseExamMapper.java                                   |    7 
 src/main/java/com/ots/project/exam/dto/ExamPaperQuestionItemObject.java                         |    2 
 src/main/java/com/ots/project/exam/dto/ParamDefine.java                                         |   47 
 pom.xml                                                                                         |    5 
 src/main/java/com/ots/project/tool/gen/service/IExamUtilServiceImpl.java                        |   27 
 src/main/java/com/ots/project/exam/service/IBaseExamService.java                                |   52 
 src/main/java/com/ots/project/exam/mapper/EntOperLogMapper.java                                 |   55 
 src/main/java/com/ots/project/exam/dto/SendTask.java                                            |   48 
 src/main/java/com/ots/project/exam/dto/RelatedParty.java                                        |   88 
 src/main/java/com/ots/project/exam/dto/PaperFilter.java                                         |    3 
 src/main/java/com/ots/project/exam/viewmodel/ExamItemOrderAndContent.java                       |    2 
 src/main/java/com/ots/project/exam/viewmodel/ExamPaperPageResponseVM.java                       |   11 
 src/main/java/com/ots/project/monitor/job/task/SenderTask.java                                  |   39 
 src/main/java/com/ots/project/exam/dto/ExamPaperQuestion.java                                   |    5 
 src/main/java/com/ots/project/exam/viewmodel/ExamPaperAnswerPageResponseVM.java                 |   14 
 src/main/java/com/ots/project/exam/controller/EntTestDetailController.java                      |   29 
 src/main/java/com/ots/project/exam/domain/EntTestSendtaskMail.java                              |   65 
 src/main/java/com/ots/project/exam/viewmodel/ExamPaperAnswerPageVM.java                         |    5 
 src/main/java/com/ots/project/exam/service/impl/ExamPaperServiceImpl.java                       |  267 -
 src/main/java/com/ots/project/exam/controller/EntDemographyInfoController.java                  |   45 
 src/main/resources/templates/exam/librarycode/librarycode.html                                  |   25 
 src/main/java/com/ots/project/common/CommonController.java                                      |   73 
 src/main/java/com/ots/project/exam/listener/UserLogListener.java                                |    7 
 src/main/java/com/ots/project/exam/dto/QuestionObject.java                                      |    8 
 src/main/java/com/ots/project/exam/service/ISysUserExtendService.java                           |   64 
 src/main/java/com/ots/project/exam/service/impl/EntOperLogServiceImpl.java                      |   57 
 src/main/resources/templates/exam/testMember/testMember.html                                    |   14 
 src/main/java/com/ots/project/exam/restcontroller/ExamPaperAnswerController.java                |  206 
 src/main/java/com/ots/project/exam/mapper/UserEventLogMapper.java                               |   13 
 src/main/resources/templates/main.html                                                          |  287 -
 src/main/resources/templates/exam/demographyParam/demographyParam.html                          |   27 
 src/main/resources/templates/exam/testMember/add.html                                           |    2 
 src/main/java/com/ots/project/exam/service/impl/BaseServiceImpl.java                            |    9 
 src/main/java/com/ots/project/exam/domain/EntTestPackage.java                                   |    2 
 src/main/java/com/ots/project/exam/viewmodel/ExamPaperReadVM.java                               |    2 
 src/main/java/com/ots/project/exam/mapper/SysUserExtendMapper.java                              |   55 
 src/main/java/com/ots/project/demo/controller/DemoDialogController.java                         |   41 
 src/main/java/com/ots/project/exam/mapper/EntDemographyParamMapper.java                         |   56 
 src/main/java/com/ots/project/exam/restcontroller/MemberControllerImpl.java                     |   44 
 src/main/java/com/ots/project/exam/viewmodel/ExamPaperSubmitVM.java                             |   42 
 src/main/java/com/ots/project/exam/domain/TExamPaper.java                                       |  122 
 src/main/java/com/ots/project/exam/service/IEntDemographyInfoService.java                       |   56 
 src/main/java/com/ots/project/exam/viewmodel/PaperInfoVM.java                                   |    2 
 src/main/java/com/ots/project/exam/viewmodel/QuestionEditRequestVM.java                         |   14 
 src/main/resources/templates/system/dict/data/data.html                                         |   27 
 src/main/java/com/ots/project/tool/gen/service/IExamUtilService.java                            |   13 
 src/main/java/com/ots/project/monitor/job/task/SenderEmailReportTask.java                       |   66 
 src/main/java/com/ots/project/exam/dto/SignalObject.java                                        |    2 
 src/main/java/com/ots/project/exam/domain/TExamLevel.java                                       |   28 
 src/main/java/com/ots/project/exam/controller/SysUserPaperController.java                       |   97 
 src/main/java/com/ots/project/exam/service/ReportCalculationServices.java                       |   12 
 src/main/java/com/ots/project/exam/domain/ExamPaperAnswer.java                                  |   48 
 src/main/resources/templates/system/role/role.html                                              |   10 
 src/main/java/com/ots/project/exam/viewmodel/BaseVM.java                                        |    7 
 src/main/resources/static/i18n/messages_en_US.properties                                        |   27 
 src/main/resources/templates/system/user/usermanager.html                                       |   11 
 src/main/java/com/ots/project/exam/viewmodel/ExamPaperPageRequestVM.java                        |    3 
 src/main/java/com/ots/project/exam/domain/ExamUser.java                                         |   22 
 src/main/java/com/ots/project/exam/service/IEntTestDetailService.java                           |    6 
 src/main/java/com/ots/project/exam/dto/QuestionAnswer.java                                      |    4 
 src/main/java/com/ots/project/exam/mapper/SubjectMapper.java                                    |   11 
 src/main/resources/templates/system/dept/dept.html                                              |    4 
 src/main/java/com/ots/project/exam/service/IEntTestSendtaskMailService.java                     |   54 
 src/main/java/com/ots/framework/web/controller/BaseController.java                              |  115 
 src/main/resources/static/downloadTemplates/ReportTemplates/waterDropDarkBlue_V2.png            |    0 
 src/main/java/com/ots/project/exam/service/impl/TExamReportServiceImpl.java                     |  316 -
 src/main/java/com/ots/project/exam/mapper/TExamReportMapper.java                                |   81 
 src/main/java/com/ots/project/exam/service/ITQuestionService.java                               |   75 
 src/main/java/com/ots/project/exam/domain/TSubject.java                                         |   45 
 src/main/java/com/ots/project/exam/dto/TaskItemObject.java                                      |    2 
 src/main/java/com/ots/project/exam/dto/DataReportHead.java                                      |   15 
 src/main/java/com/ots/project/exam/dto/ParamsInfo.java                                          |   33 
 src/main/resources/templates/monitor/operlog/operlog.html                                       |    5 
 src/main/java/com/ots/project/exam/domain/EntDemographyInfo.java                                |   44 
 src/main/java/com/ots/project/exam/domain/Subject.java                                          |   21 
 src/main/java/com/ots/project/exam/domain/ExamPaperQuestionCustomerAnswer.java                  |   48 
 src/main/java/com/ots/project/exam/dto/QuestionReport.java                                      |    6 
 src/main/java/com/ots/project/exam/controller/DistributorController.java                        |   37 
 src/main/java/com/ots/project/exam/listener/UserEvent.java                                      |    5 
 src/main/resources/static/i18n/messages_zh_CN.properties                                        |   14 
 src/main/java/com/ots/project/exam/domain/EntDemographyParam.java                               |   60 
 src/main/java/com/ots/OtsServletInitializer.java                                                |    6 
 src/main/java/com/ots/project/exam/service/impl/TReportTemplateServiceImpl.java                 |   86 
 src/main/java/com/ots/project/exam/dto/RestResponse.java                                        |   31 
 src/main/java/com/ots/project/exam/viewmodel/TaskItemPaperVm.java                               |    2 
 src/main/java/com/ots/project/exam/controller/EntDemographyParamController.java                 |   63 
 src/main/java/com/ots/project/exam/controller/TExamLevelController.java                         |   48 
 src/main/java/com/ots/project/exam/service/ExamPaperAnswerService.java                          |   41 
 src/main/java/com/ots/project/exam/service/impl/TSubjectServiceImpl.java                        |   60 
 src/main/java/com/ots/project/exam/mapper/ExamPaperQuestionCustomerAnswerMapper.java            |   15 
 src/main/java/com/ots/project/exam/service/MemberService.java                                   |   35 
 src/main/java/com/ots/project/exam/mapper/TSubjectMapper.java                                   |   59 
 src/main/java/com/ots/project/exam/viewmodel/QuestionPageStudentRequestVM.java                  |    2 
 src/main/resources/templates/exam/test_package/test_package.html                                |   18 
 src/main/java/com/ots/project/exam/dto/TaskItemAnswerObject.java                                |    5 
 src/main/java/com/ots/project/exam/controller/TLibraryCodeController.java                       |   53 
 src/main/java/com/ots/project/exam/service/TaskExamCustomerAnswerService.java                   |    8 
 src/main/java/com/ots/project/exam/service/impl/TExamLevelServiceImpl.java                      |   69 
 src/main/java/com/ots/project/exam/dto/DemographyDto.java                                       |    3 
 src/main/java/com/ots/project/exam/restcontroller/DashboardController.java                      |    9 
 src/main/java/com/ots/project/exam/dto/ExamPaperAnswerInfo.java                                 |    3 
 src/main/java/com/ots/project/exam/service/BaseService.java                                     |   52 
 src/main/resources/templates/exam/level/level.html                                              |   10 
 src/main/java/com/ots/project/exam/service/ISysUserPaperService.java                            |   55 
 src/main/java/com/ots/project/exam/domain/EntTestDetail.java                                    |    8 
 src/main/java/com/ots/project/exam/service/impl/ReportCalculationServicesImpl.java              |   28 
 src/main/java/com/ots/project/tool/report/JAQ/JAQReport.java                                    |   39 
 src/main/resources/mailConfig.properties                                                        |    4 
 src/main/java/com/ots/project/exam/viewmodel/ExamPaperPageVM.java                               |    3 
 src/main/resources/templates/exam/product/product.html                                          |    3 
 src/main/java/com/ots/project/exam/domain/TextContent.java                                      |   15 
 src/main/resources/templates/monitor/job/jobLog.html                                            |    3 
 src/main/java/com/ots/project/exam/service/ITExamReportService.java                             |  105 
 src/main/java/com/ots/project/exam/mapper/TExamPaperQuestionMapper.java                         |   54 
 src/main/java/com/ots/project/exam/mapper/EntTestMemberBackstageMapper.java                     |   54 
 src/main/java/com/ots/project/exam/listener/CalculateExamPaperAnswerCompleteEvent.java          |   10 
 src/main/java/com/ots/project/exam/viewmodel/ExamPaperTitleItemVM.java                          |   20 
 src/main/java/com/ots/project/exam/viewmodel/QuestionPageRequestVM.java                         |    3 
 src/main/java/com/ots/project/exam/service/impl/MemberServiceImpl.java                          |   28 
 src/main/java/com/ots/project/exam/service/IEntTestMemberBackstageService.java                  |   55 
 src/main/resources/templates/system/dict/type/type.html                                         |   10 
 src/main/resources/templates/exam/template/template.html                                        |   27 
 src/main/resources/application-sand.yml                                                         |    2 
 src/main/java/com/ots/project/exam/controller/SysUserExtendController.java                      |   42 
 src/main/resources/mybatis/exam/TExamReportMapper.xml                                           |   60 
 src/main/java/com/ots/project/exam/domain/WebContext.java                                       |    7 
 src/main/java/com/ots/project/exam/service/impl/EntTestSendtaskMailServiceImpl.java             |   55 
 src/main/java/com/ots/project/exam/service/ITReportTemplateService.java                         |   76 
 src/main/java/com/ots/project/exam/viewmodel/IndexVM.java                                       |    3 
 src/main/java/com/ots/project/exam/mapper/TQuestionMapper.java                                  |   63 
 src/main/java/com/ots/project/exam/domain/NumberOfUsersByPackage.java                           |   29 
 src/main/java/com/ots/project/exam/mapper/EntDemographyInfoMapper.java                          |   56 
 src/main/java/com/ots/project/demo/controller/DemoOperateController.java                        |   83 
 src/main/java/com/ots/project/exam/restcontroller/ExamUserController.java                       |   12 
 src/main/java/com/ots/project/exam/controller/EnterpriseController.java                         |   58 
 src/main/java/com/ots/project/exam/service/ExamPaperService.java                                |   12 
 src/main/java/com/ots/project/exam/dto/InterfaceContent.java                                    |    3 
 src/main/java/com/ots/project/exam/service/QuestionService.java                                 |   10 
 src/main/java/com/ots/project/exam/mapper/ExamPaperAnswerMapper.java                            |   14 
 src/main/java/com/ots/project/exam/service/impl/BaseExamServiceImpl.java                        |    9 
 src/main/resources/templates/include.html                                                       |    2 
 src/main/java/com/ots/project/exam/service/IEntTestPackageService.java                          |   80 
 src/main/java/com/ots/project/exam/service/impl/TaskExamCustomerAnswerImpl.java                 |   10 
 src/main/java/com/ots/project/exam/domain/comparator/IdComparator.java                          |    5 
 src/main/java/com/ots/project/exam/dto/ExamPaperTitleItem.java                                  |   22 
 src/main/java/com/ots/project/exam/service/impl/EntTestPackageServiceImpl.java                  |   68 
 src/main/resources/templates/exam/distributor/distributor.html                                  |   12 
 src/main/java/com/ots/project/exam/dto/PaperInfo.java                                           |    3 
 src/main/java/com/ots/project/exam/service/impl/EntTestSendtaskServiceImpl.java                 |   69 
 src/main/resources/static/downloadTemplates/ReportTemplates/Bar1_V2.png                         |    0 
 src/main/java/com/ots/project/exam/domain/ExamPaper.java                                        |   21 
 src/main/java/com/ots/project/exam/mapper/SysUserPaperMapper.java                               |   55 
 src/main/java/com/ots/project/common/BaseApiController.java                                     |    5 
 src/main/java/com/ots/project/exam/dto/DictItemDto.java                                         |   11 
 src/main/java/com/ots/project/exam/service/ITTextContentService.java                            |   83 
 src/main/resources/static/downloadTemplates/ReportTemplates/Bar2_V2.png                         |    0 
 src/main/java/com/ots/project/demo/controller/DemoFormController.java                           |  132 
 src/main/java/com/ots/project/exam/service/IEntDemographyParamService.java                      |   56 
 src/main/java/com/ots/project/exam/restcontroller/ExamPaperController.java                      |   34 
 src/main/java/com/ots/project/exam/service/impl/SubjectServiceImpl.java                         |   12 
 src/main/java/com/ots/project/exam/controller/TSubjectController.java                           |   45 
 src/main/java/com/ots/project/demo/domain/UserOperateModel.java                                 |   35 
 src/main/java/com/ots/project/exam/service/IEntOperLogService.java                              |   63 
 src/main/java/com/ots/project/exam/mapper/EntTestSendtaskMapper.java                            |   55 
 src/main/java/com/ots/project/exam/restcontroller/MemberController.java                         |   39 
 src/main/java/com/ots/project/demo/controller/DemoIconController.java                           |   16 
 src/main/java/com/ots/project/exam/dto/BasePage.java                                            |    7 
 src/main/java/com/ots/project/exam/domain/SysUserPaper.java                                     |   38 
 src/main/java/com/ots/project/exam/service/impl/SysUserPaperServiceImpl.java                    |   56 
 src/main/java/com/ots/project/exam/dto/SubmitReport.java                                        |    2 
 src/main/java/com/ots/project/exam/mapper/TReportTemplateMapper.java                            |   56 
 src/main/resources/templates/exam/question/question.html                                        |    6 
 src/main/java/com/ots/project/exam/service/impl/SysUserExtendServiceImpl.java                   |   70 
 src/main/java/com/ots/project/exam/viewmodel/UserResponseVM.java                                |   21 
 src/main/resources/templates/exam/testMember/edit.html                                          |    2 
 src/main/java/com/ots/project/exam/mapper/TaskExamCustomerAnswerMapper.java                     |   10 
 src/main/java/com/ots/project/exam/service/impl/ExamPaperAnswerServiceImpl.java                 |  137 
 src/main/java/com/ots/project/exam/service/impl/UserEventLogServiceImpl.java                    |   10 
 src/main/java/com/ots/project/exam/viewmodel/ExamPaperSubmitItemVM.java                         |   15 
 src/main/java/com/ots/project/exam/mapper/ExamPaperMapper.java                                  |   17 
 src/main/java/com/ots/project/exam/viewmodel/UserEventPageRequestVM.java                        |    8 
 src/main/resources/templates/exam/userpaper/userPaper.html                                      |    2 
 src/main/java/com/ots/project/exam/dto/DemographyDataReportDto.java                             |    2 
 src/main/resources/templates/exam/enterprise/enterprise.html                                    |   14 
 src/main/java/com/ots/project/exam/viewmodel/ExamResultRequestVM.java                           |    5 
 src/main/java/com/ots/project/exam/service/ExamPaperQuestionCustomerAnswerService.java          |   24 
 src/main/java/com/ots/project/exam/viewmodel/SubjectPageRequestVM.java                          |    2 
 src/main/java/com/ots/project/exam/service/SubjectService.java                                  |    7 
 src/main/java/com/ots/project/exam/dto/ExamLogin.java                                           |    3 
 src/main/resources/templates/monitor/job/job.html                                               |    6 
 src/main/java/com/ots/project/exam/domain/EntTestMember.java                                    |  108 
 src/main/java/com/ots/project/exam/service/impl/EntTestMemberServiceImpl.java                   |   95 
 src/main/resources/templates/exam/userpaper/edit.html                                           |   91 
 src/main/resources/static/ajax/libs/layui/lay/modules/laydate.js                                |  615 +++
 src/main/java/com/ots/project/exam/service/impl/TExamPaperServiceImpl.java                      |    3 
 src/main/java/com/ots/project/exam/domain/TTextContentAndQuestion.java                          |   24 
 src/main/java/com/ots/project/exam/dto/KeyValue.java                                            |    4 
 src/main/java/com/ots/project/exam/mapper/EntTestMemberMapper.java                              |   65 
 src/main/java/com/ots/project/exam/service/ITExamLevelService.java                              |   59 
 src/main/java/com/ots/project/exam/controller/TQuestionController.java                          |  110 
 src/main/java/com/ots/project/exam/service/impl/ExamPaperQuestionCustomerAnswerServiceImpl.java |   16 
 src/main/java/com/ots/project/exam/domain/TaskExamCustomerAnswer.java                           |   18 
 src/main/java/com/ots/project/exam/domain/UserEventLog.java                                     |   25 
 src/main/resources/templates/system/user/profile/profile.html                                   |   22 
 src/main/resources/static/ots/js/common.js                                                      |   14 
 src/main/java/com/ots/project/exam/controller/EntOperLogController.java                         |   44 
 src/main/java/com/ots/project/exam/controller/EntTestMemberController.java                      |  128 
 src/main/java/com/ots/project/exam/domain/NumberOfUsersByCompany.java                           |   26 
 src/main/java/com/ots/project/exam/service/impl/CountCalculateServiceImpl.java                  |   25 
 src/main/java/com/ots/project/demo/controller/DemoReportController.java                         |   26 
 src/main/java/com/ots/project/exam/viewmodel/TaskItemVm.java                                    |    3 
 src/main/java/com/ots/project/exam/viewmodel/ExamPaperEditRequestVM.java                        |   20 
 src/main/java/com/ots/project/exam/domain/EntOperLog.java                                       |   38 
 src/main/java/com/ots/project/exam/domain/SysUserExtend.java                                    |  167 
 src/main/java/com/ots/project/exam/domain/EntTestMemberOther.java                               |  102 
 src/main/java/com/ots/project/exam/dto/ParamDefineDictData.java                                 |   21 
 src/main/java/com/ots/project/exam/mapper/TExamLevelMapper.java                                 |   61 
 src/main/java/com/ots/project/exam/service/impl/TQuestionServiceImpl.java                       |  335 -
 src/main/java/com/ots/project/exam/controller/EntTestSendtaskController.java                    |   46 
 src/main/java/com/ots/project/exam/service/CountCalculateService.java                           |   14 
 src/main/java/com/ots/project/exam/controller/MainIndexController.java                          |   33 
 src/main/java/com/ots/project/monitor/job/task/DeleteSensitiveInformationTesk.java              |   21 
 src/main/java/com/ots/project/exam/controller/EntTestSendtaskMailController.java                |   44 
 src/main/java/com/ots/project/exam/domain/EntTestMemberBackstage.java                           |   74 
 /dev/null                                                                                       |  141 
 src/main/java/com/ots/project/exam/listener/CalculateExamPaperAnswerListener.java               |   14 
 src/main/java/com/ots/project/exam/mapper/TTextContentMapper.java                               |   63 
 src/main/java/com/ots/project/monitor/job/task/RecoverTask.java                                 |   38 
 src/main/resources/static/ots.jpg                                                               |    0 
 src/main/java/com/ots/project/exam/controller/TExamPaperController.java                         |  193 
 src/main/java/com/ots/project/exam/mapper/BaseMapper.java                                       |    7 
 268 files changed, 2,641 insertions(+), 8,229 deletions(-)

diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index fd446f4..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,43 +0,0 @@
-######################################################################
-# Build Tools
-
-.gradle
-/build/
-!gradle/wrapper/gradle-wrapper.jar
-
-target/
-!.mvn/wrapper/maven-wrapper.jar
-
-######################################################################
-# IDE
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-nbproject/private/
-build/*
-nbbuild/
-dist/
-nbdist/
-.nb-gradle/
-
-######################################################################
-# Others
-*.log
-*.xml.versionsBackup
-
-!*/build/*.java
-!*/build/*.html
-!*/build/*.xml
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 66066ed..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2019 ESS
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/OTS-VUE-API.md b/OTS-VUE-API.md
deleted file mode 100644
index 8a5c698..0000000
--- a/OTS-VUE-API.md
+++ /dev/null
@@ -1,116 +0,0 @@
-# OTS-VUE-API
-### 浜哄彛瀛﹀彉閲忓畾涔�
-```
-GET锛歨ttp://localhost:8090/remote/member/param/403027f6-d7da-4c09-81ef-ef5bfc232cce
-```
-鍙傛暟
-```
-鏃�
-```
-杩斿洖
-```
-{
-    "code": 1,
-    "message": "鎴愬姛",
-    "response": [
-        {
-            "userId": 1,
-            "memberId": 200,
-            "paramId": 200, 
-            "paramName": "濮撳悕",
-            "types": "text",
-            "dictData": null
-        },
-        {
-            "userId": 1,
-            "memberId": 200,
-            "paramId": 201,
-            "paramName": "鎬у埆",
-            "types": "radio",
-            "dictData": [
-                {
-                    "dictLabel": "鐢�",
-                    "dictValue": "0",
-                    "dictType": "sys_user_sex",
-                    "status": "0"
-                },
-                {
-                    "dictLabel": "濂�",
-                    "dictValue": "1",
-                    "dictType": "sys_user_sex",
-                    "status": "0"
-                },
-                {
-                    "dictLabel": "鏈煡",
-                    "dictValue": "2",
-                    "dictType": "sys_user_sex",
-                    "status": "0"
-                }
-            ]
-        }
-    ]
-}
-```
-
-### 鐢ㄦ埛浜哄彛瀛︿俊鎭煡璇�
-```
-GET锛歨ttp://localhost:8090/remote/member/paramInfo/403027f6-d7da-4c09-81ef-ef5bfc232cce
-```
-鍙傛暟
-```
-鏃�
-```
-杩斿洖
-```
-{
-    "code": 1,
-    "message": "鎴愬姛",
-    "response": [
-        {
-            "searchValue": null,
-            "createBy": "",
-            "createTime": "2019-12-17 20:45:03",
-            "updateBy": "",
-            "updateTime": "2019-12-17 20:57:24",
-            "remark": null,
-            "params": {},
-            "infoId": 200,
-            "userId": 1,
-            "memberId": 200,
-            "paramId": "201",
-            "paramName": "鎬у埆",
-            "paramValue": "濂�"
-        }
-    ]
-}
-```
-
-### 淇濆瓨浜哄彛瀛︿俊鎭�
-```
-POST锛歨ttp://localhost:8090/remote/member/save/403027f6-d7da-4c09-81ef-ef5bfc232cce
-```
-鍙傛暟
-```
-[{
-	"userId": 1,
-	"memberId": 200,
-	"paramId": 201,
-	"paramName": "鎬у埆",
-	"paramValue": "鐢�"
-}, {
-	"infoId": 200,
-	"userId": 1,
-	"memberId": 200,
-	"paramId": 201,
-	"paramName": "鎬у埆",
-	"paramValue": "濂�"
-}]
-```
-杩斿洖
-```
-{
-    "code": 1,
-    "message": "鎴愬姛",
-    "response": 
-}
-```
\ No newline at end of file
diff --git a/jar/tai-ots-framework-1.0-test.jar b/jar/tai-ots-framework-1.0-test.jar
deleted file mode 100644
index 2dbff22..0000000
--- a/jar/tai-ots-framework-1.0-test.jar
+++ /dev/null
Binary files differ
diff --git a/jar/tai-ots-framework-1.0.jar b/jar/tai-ots-framework-1.0.jar
deleted file mode 100644
index 2dbff22..0000000
--- a/jar/tai-ots-framework-1.0.jar
+++ /dev/null
Binary files differ
diff --git a/ots-docs/.nojekyll b/ots-docs/.nojekyll
deleted file mode 100644
index e69de29..0000000
--- a/ots-docs/.nojekyll
+++ /dev/null
diff --git a/ots-docs/README.md b/ots-docs/README.md
deleted file mode 100644
index 2279cfd..0000000
--- a/ots-docs/README.md
+++ /dev/null
@@ -1,261 +0,0 @@
-# 骞冲彴绠�浠�
-
-娴嬭瘎鏈嶅姟绯荤粺
-TAI Online Testing System 锛圱AI鍦ㄧ嚎鑰冭瘯绯荤粺锛�
-# **2020-01-12锛氬唴缃姛鑳�**
-## 鐗堟湰鏇存柊鍐呭
-1. 瀵煎嚭璇勬祴鐢ㄦ埛绛旈璁板綍
-2. 鐢宠涓嬭浇绗簩浠芥祴璇曟姤鍛�
-3. 瀵煎嚭(鍩虹)鎶ュ憡 閮ㄥ垎鍔熻兘锛堜緷璧栨嘲鍥藉洟闃燂級
-4. 瀵煎嚭(璇︾粏)鎶ュ憡 閮ㄥ垎鍔熻兘锛堜緷璧栨嘲鍥藉洟闃燂級
-5. 浼佷笟鎶ュ憡鎺堟潈 瀹℃壒娴佺▼
-6. 鎶ュ憡鍚屾 绛旈鐘舵��
-7. 鎶ュ憡鐣岄潰澧炲姞鏌ヨ鏉′欢锛氱敤鎴风紪鐮侊紝涓嬭浇鏉冮檺锛岀瓟棰樼姸鎬�
-8. 澧炲姞鎶ュ憡鍛藉悕瑙勫垯閫昏緫
-9. MQA浜烘牸娴嬭瘯銆佹櫤鍔涙祴璇曠敤鎴风鐐瑰嚮閫夐」鑷姩涓嬩竴棰樸��
-10. 鏅哄姏棰樼敤鎴风鍥剧墖灞曠ず
-11. 浜у搧鍖呮寜闂嵎绫诲瀷鏌ヨ娣诲姞涓嬫媺妗嗐��
-12. JAQ宸ヤ綔闂嵎棰樼洰鎵归噺瀵煎叆鍔熻兘銆�
-13. 鐢ㄦ埛绔墦寮�鑷姩瀹氫綅鍒版湭鍋氶鐩��
-
-BUG淇锛�
-1. 浜烘牸娴嬭瘯鎶ュ憡涓嬭浇鐢宠 宸茬粡瀹炵幇 鍦ㄦ祴璇曞寘涓�夋嫨娴嬭瘯鍖� 鏌ョ湅娴嬭瘯鎶ュ憡锛屽凡缁忕敵璇风浜屾鎶ュ憡
-2. 鎵归噺瀵煎嚭娴嬭瘯鎶ュ憡 杞Щ鍒� 娴嬭瘯鍖�->璇勬祴鎶ュ憡 鍩虹鎶ュ憡鍜岃缁嗘姤鍛婁笅杞�
-3. 鐢宠涓嬭浇绗簩浠芥祴璇曟姤鍛� 宸茬粡淇 杞Щ鍒� 娴嬭瘯鍖�->璇勬祴鎶ュ憡    
-4. 瀵煎嚭娴嬭瘯鍖呮暟鎹� 宸茬粡淇 杞Щ鍒� 娴嬭瘯鍖�->璇勬祴鎶ュ憡
-5. 鍒涘缓浜岀骇鍒嗛攢鍟� 宸茬粡鎺堟潈
-6. 淇敼浜岀骇鍒嗛攢鍟嗕俊鎭� 宸茬粡鎺堟潈
-7. 鍒涘缓浼佷笟鐢ㄦ埛 宸茬粡鎺堟潈
-8. 澧炲姞浣跨敤浜烘 宸茬粡鎺堟潈
-9. 闂嵎鍚嶇О鏀寔妯$硦鏌ヨ銆�
-10. 鎵归噺瀵煎叆宸ヤ綔闂嵎棰樼洰宸茬粡瀹屾垚
-11. 宀椾綅涓嶆槸闇�姹傞渶瑕佺殑锛屾墍浠ヤ笉闇�瑕佺淮鎶�
-12. 棰樼洰鎬诲垎锛氳В鍐宠緭鍏ユ枃鏈姏鍑哄紓甯搞��
-13. 棰樺共锛氳В鍐虫枃鏈繃闀挎姤閿欍��
-
-
-# **2020-01-09锛氬唴缃姛鑳�**
-1. 鍙湁浼佷笟鐢ㄦ埛鎴栬�呭瓨鍦ㄤ紒涓氫俊鎭彲浠ヨ闂紒涓氫俊鎭紒
-2. 鑿滃崟閮ㄥ垎鍔熻兘鍥介檯鍖�
-3. 宸ヤ綔鍒嗘瀽闂嵎鐨勭浉鍏充俊鎭� JAQ闂嵎绫诲瀷
-4. 浼佷笟鐢ㄦ埛浣跨敤娆℃暟璁$畻缁勪欢鏈嶅姟
-5. 鍙傝�冪敤鎴凤細
-    * 涓�绾у垎閿�鍟嗭細test_dis/testtest
-    * 浜岀骇鍒嗛攢鍟嗭細test_dis2/testtest
-    * 浼佷笟鐢ㄦ埛锛歵est_manager/testtest
-* 鎻愪緵鍙傝�冩暟鎹細
-    * 娴嬭瘯鍖咃細JAQ宸ヤ綔鍒嗘瀽闂嵎 
-    * 浜у搧鍖咃細JAQ宸ヤ綔鍒嗘瀽浜у搧
-## **鏇存柊鍐呭**
-* 鐢ㄦ埛绔細鐢ㄦ埛鏀寔鎺ユ敹鐭俊鎴栬�呴偖浠堕摼鎺ュ弬涓庤瘎娴�
-* 鎶ュ憡鐢熸垚锛堥渶瑕佹寜涓夌璇曞嵎绫诲瀷妯℃澘缁х画鏀归�狅級
-* 闂嵎鎻愪氦锛屾敮鎸佷笅娆$户缁綔绛斻��
-* 瀵煎嚭鎶ュ憡骞跺帇缂╂垚zip
-* 鎵归噺瀵煎叆鏂囦欢锛堥渶瑕佹寜涓夌璇曞嵎绫诲瀷妯℃澘缁х画鏀归�狅級
-* 绛斿畬涓嶈兘鍐嶇瓟鐨勯�昏緫
-* 棰樼洰缁村害锛屾寜鐓т笁绉嶈瘯鍗风被鍨嬫敼閫�
-* 闂嵎绫诲瀷锛屾寜鐓�3绉嶉棶鍗风被鍨嬫敼閫�
-* 棰樼洰绫诲瀷锛屾寜鐓�3绉嶉棶鍗风被鍨嬭繘琛屾敼閫�
-* 浜у搧鍖呯被鍨嬶紝鎸夌収3绉嶉棶鍗风被鍨嬭繘琛屾敼閫�
-* 鍥剧墖涓婁紶浼樺寲銆�
-* 澶氳瑷�
-* 鍓嶇妗嗘灦鏀归�狅紝鏀寔3绉嶉棶鍗风被鍨嬮鐩�
-* 鐢ㄦ埛锛屽垎閿�鍟嗭紝浼佷笟鐢ㄦ埛鍩虹淇℃伅璋冩暣浼樺寲
-* 娴嬭瘯鍖呬簩娆′笅杞介�昏緫锛堟湭瀹屽杽锛�
-* 鍒犻櫎鏁忔劅淇℃伅 鐙珛绋嬪簭
-* 鍥炴敹浜烘锛堝洖鏀跺瘑鐮侊級
-* 鍒版湡鍚庨渶瑕佸洖鏀舵鏁扮殑鐙珛绋嬪簭
-* 浼佷笟鐢ㄦ埛娆℃暟娑堣�楄绠楃粍浠堕�昏緫
-* 涓�浜汢UG淇敼
-* 鑿滃崟閮ㄥ垎鍥介檯鍖�
-* 淇绛旈瀹屾垚鐘舵�佸悓姝ワ紝绛旈涓姸鎬佸悓姝�
-
-# **2019-12-28锛氬唴缃姛鑳�**
-
-1. 鐢ㄦ埛绔細鐢ㄦ埛鏀寔鎺ユ敹鐭俊鎴栬�呴偖浠堕摼鎺ュ弬涓庤瘎娴�
-2. 鐢ㄦ埛绔細浜у搧鍖呬汉鍙e淇℃伅鏀堕泦锛屼骇鍝佸寘鍐呭璇勬祴绛旈锛屽苟鎻愪氦璇勬祴
-3. 鍒嗛攢鍟嗙敤鎴枫�佷紒涓氱敤鎴风鐞嗗畬鍠勩�佹敮鎸佸悎鍚岀瓑淇℃伅鐨勬搷浣�
-4. 棰樺簱绠$悊锛氫骇鍝佸寘鍒楄〃澧炲姞棰樼洰鍏崇郴銆佹敮鎸佸垎娈佃缃鐩�佸鍔犻棶鍗风被鍨�
-5. 棰樺簱绠$悊锛氶鐩鍔犻瑙堝姛鑳斤紝鏀寔棰樼洰鍥剧墖涓婁紶
-6. 娴嬭瘯鍖呭垪琛ㄥ鍔犲尯鍩熴�佽绉嶃�佹祴璇曚汉鏁般�佸凡娴嬩汉鏁般�佹湭娴嬩汉鏁板姛鑳�
-7. 娴嬭瘯鍖呮敮鎸佸彂閫侀偖浠躲�佸彂閫佺煭淇°�佹煡鐪嬪彂閫佹姤鍛�
-8. 浜哄彛瀛﹀彉閲忔敮鎸佸璇█璁剧疆
-
-# **2019-12-12锛氬唴缃姛鑳�**
-
-1. 鐢ㄦ埛绠$悊锛氱敤鎴锋槸绯荤粺鎿嶄綔鑰咃紝璇ュ姛鑳戒富瑕佸畬鎴愮郴缁熺敤鎴烽厤缃�傚彲鍒涘缓绯荤粺鐢ㄦ埛銆佸垎閰嶄竴绾у垎閿�鍟嗚鑹层�備竴绾у垎閿�鍟嗗彲鍒涘缓浜岀骇鍒嗛攢鍟嗭紝鍒嗛攢鍟嗗垱寤轰紒涓氱敤鎴枫�傦紙鐢ㄦ埛绠$悊鍖呭惈绠$悊鍛樺垪琛ㄣ�佸垎閿�鍟嗗垪琛ㄣ�佷紒涓氱敤鎴峰垪琛級
-2. 瑙掕壊绠$悊锛氳鑹茶彍鍗曟潈闄愬垎閰嶃�佽缃鑹叉寜鏈烘瀯杩涜鏁版嵁鑼冨洿鏉冮檺鍒掑垎銆�
-3. 瀛楀吀绠$悊锛氬绯荤粺涓粡甯镐娇鐢ㄧ殑涓�浜涜緝涓哄浐瀹氱殑鏁版嵁杩涜缁存姢锛屼富瑕佹湇鍔′簬绯荤粺鐨勫弬鏁扮炕璇戙��
-4. 鎿嶄綔鏃ュ織锛氱郴缁熸甯告搷浣滄棩蹇楄褰曞拰鏌ヨ锛涚郴缁熷紓甯镐俊鎭棩蹇楄褰曞拰鏌ヨ銆�
-5. 鐧诲綍鏃ュ織锛氱郴缁熺櫥褰曟棩蹇楄褰曟煡璇㈠寘鍚櫥褰曞紓甯搞��
-6. 鍦ㄧ嚎鐢ㄦ埛锛氬綋鍓嶇郴缁熶腑娲昏穬鐢ㄦ埛鐘舵�佺洃鎺с��
-7. 瀹氭椂浠诲姟锛氬湪绾匡紙娣诲姞銆佷慨鏀广�佸垹闄�)浠诲姟璋冨害鍖呭惈鎵ц缁撴灉鏃ュ織銆�
-8. 棰樺簱绠$悊锛氫骇鍝佸寘绠$悊锛岄鐩淮搴︼紝棰樼洰鍒楄〃
-9. 娴嬭瘯鍖呯鐞嗭細娴嬭瘯鍖呭垪琛紝鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟
-10. 鍙傛暟璁剧疆锛氫紒涓氫俊鎭淮鎶ゅ拰浜哄彛瀛﹀彉閲忓畾涔�
-
-# 闇�姹傚疄鐜版儏鍐�&鎿嶄綔璇存槑
-----------
-## 鎿嶄綔璇存槑锛�
-
- 1. 鍒嗛攢鍟嗘垨鑰呯郴缁熺敤鎴峰垱寤轰骇鍝佸寘锛屽苟瀵煎叆闂嵎棰樼洰
- 2. 浼佷笟鐢ㄦ埛鍒涘缓娴嬭瘯鍖咃紝绠$悊璇勬祴浜哄憳锛屽苟鍙戦�佽瘎娴嬮偖浠舵垨鑰呯煭淇�
- 3. 鐢ㄦ埛閫氳繃閭欢鎴栬�呯煭淇″垎閰嶇殑璇勬祴鍦板潃锛岃繘琛屾祴璇勬搷浣�
- 4. 绛旈瀹屽钩鍙拌褰曠瓟棰樿褰曪紝鍚庣画鍙戦�佹嘲鍥藉洟闃熻绠�
-
-### **缁熷垎涓�5绫荤敤鎴凤細锛堝钩鍙扮鐞嗗憳銆佷竴绾у垎閿�鍟嗐�佷簩绾у垎閿�鍟嗐�佷紒涓氱敤鎴枫�佹祴璇勭敤鎴凤級**
-
- 1. 骞冲彴鐢ㄦ埛锛氬彲浠ュ垎閰嶆潈闄愶紝鎷ユ湁骞冲彴绠$悊鏉冮檺锛屽彲鍒涘缓涓�绾у垎閿�鍟嗭紝绠$悊浜у搧鍖呭拰棰樼洰
- 2. 涓�绾у垎閿�鍟嗭細鑳藉鍒涘缓浜岀骇鍒嗛攢鍟嗭紝骞惰兘鏌ョ湅浜岀骇鍒嗛攢鍟嗕笅鐨勪紒涓氱敤鎴蜂俊鎭�
- 3. 浜岀骇鍒嗛攢鍟嗭細鍙互鍒涘缓浼佷笟鐢ㄦ埛锛屽苟绠$悊浼佷笟鐢ㄦ埛鐨勪娇鐢ㄦ鏁帮紝鎶ュ憡涓嬭浇瀹℃壒
- 4. 浼佷笟鐢ㄦ埛锛氬彲浠ュ垱寤烘祴璇曞寘锛岄�夋嫨浜у搧鍖咃紝骞剁鐞嗚瘎娴嬬敤鎴�
- 5. 璇勬祴鐢ㄦ埛锛氶�氳繃鎺ユ敹閭欢鎴栬�呯煭淇″畬鎴愰棶鍗锋祴璇�
-
-## 銆婄敤鎴风銆�
-瀹屾垚娴嬭瘎鏈嶅姟绯荤粺鐨勭敤鎴风搴旂敤锛孒5鏂瑰紡鏀寔鍦ㄦ祻瑙堝櫒锛堝钩鏉裤�佹墜鏈烘垨PC锛変腑鎵撳紑锛屽畬鎴愯皟鏌ラ棶鍗风殑濉啓銆�
-
- 1. 骞冲彴涓嬪彂閭�璇锋祴璇勯偖浠舵垨鑰呮祴璇勭煭淇$粰鐩爣鐢ㄦ埛
-![鍙戦�侀偖浠禲[1]
-![鍙戦�佺煭淇[2]
- 2. 鐐瑰嚮璇勬祴杩炴帴
- 瀹屾垚浜哄彛瀛︿俊鎭~鍐欙紝灞曠ず闂嵎鎸囧璇�
-鐢ㄦ埛閫氳繃URL杩涘叆銆婂~鍐欒皟鏌ュ熀鏈祫鏂欑晫闈€��->銆婂睍绀虹瓟棰樻彁绀轰俊鎭晫闈€��-> 寮�濮嬬瓟棰樸�佸睍绀恒�婇鐩晫闈€��
- 3. 瀹屾垚璇勬祴锛岀粨鏋滃湪骞冲彴娴嬭褰曘�傝瘎娴嬫姤鍛婁細閫氳繃閭欢鍙戦�佺粰璇勬祴浜哄憳銆�
-
-----------
-
-## 銆婁紒涓氱銆�
-### 浼佷笟鍚庡彴绠$悊 浼佷笟淇℃伅閰嶇疆
-#### 涓�銆佷紒涓氱敤鎴风櫥褰�
-
-- 鐢ㄦ埛鍚嶃�佸瘑鐮併�侀獙璇佺爜鐧诲綍妯″紡
-- 璁板綍鐧诲綍鏃ュ織淇℃伅
-
-#### 浜屻�佸弬鏁拌缃�
-
-- 浼佷笟淇℃伅璁剧疆锛堝熀鏈俊鎭彉鏇达級浼佷笟鍚嶇О銆佸彲鐢ㄦ祴璇曚汉娆℃暟
-![姝ゅ杈撳叆鍥剧墖鐨勬弿杩癩[3]
-- 鍩烘湰璁剧疆锛堜紒涓氱敤鎴蜂俊鎭級锛欻R閭锛屾祴璇曡�呮槸鍚︽敹鎶ュ憡锛屽彲鑷畾涔夐偖浠跺唴瀹癸紱鎶ュ憡绫诲瀷锛岃瑷�鐗堟湰銆�
-![姝ゅ杈撳叆鍥剧墖鐨勬弿杩癩[4]
-- 浜哄彛瀛︿俊鎭缃�
-![姝ゅ杈撳叆鍥剧墖鐨勬弿杩癩[5]
-
-#### 涓夈�佹祴璇曞寘
-- 娴嬭瘯鍖呴厤缃強绠$悊锛屾祴璇曚汉鍛樺鍏ョ鐞嗭紝娴嬭瘯鍖呭垪琛紝鎵归噺瀵煎嚭娴嬭瘯鎶ュ憡锛屽彂閫佹祴璇曢個璇凤紝鏌ョ湅娴嬭瘯浜哄憳淇℃伅锛岀敵璇蜂笅杞界浜屼唤娴嬭瘯鎶ュ憡锛屽垱寤烘祴璇曞寘锛屾壒閲忓鍏ユ祴璇曚汉鍛樺悕鍗曪紝鎵嬪姩娣诲姞娴嬭瘯浜哄憳鍚嶅崟锛屼慨鏀规祴璇曟姤鍛婇�氱煡閰嶇疆锛屾帶鍒舵祴璇曞寘鐘舵�侊紝鍥炴敹浜烘锛堝洖鏀跺瘑鐮侊級
-![姝ゅ杈撳叆鍥剧墖鐨勬弿杩癩[6]
-
-- 璇勬祴浜哄憳鍒楄〃
-![姝ゅ杈撳叆鍥剧墖鐨勬弿杩癩[7]
-
-- 閭�璇烽偖浠�
-![姝ゅ杈撳叆鍥剧墖鐨勬弿杩癩[8]
-- 閭�璇风煭淇�
-![姝ゅ杈撳叆鍥剧墖鐨勬弿杩癩[9]
-- 閭�璇锋姤鍛�
-![姝ゅ杈撳叆鍥剧墖鐨勬弿杩癩[10]
-
-#### 鍥涖�佹暟鎹垎鏋�
-
-- 瀵煎嚭娴嬭瘯鍖呮暟鎹紙TPI浼氭彁渚涙ā鏉匡級
-![姝ゅ杈撳叆鍥剧墖鐨勬弿杩癩[11]
-
-#### 浜斻�佸畨鍏ㄧ瓥鐣�
-
-- 鐙珛绋嬪簭鏂瑰紡瀹氭椂鍒犻櫎杩囨湡鐢ㄦ埛鏁忔劅淇℃伅
-
-#### 鍏�佹悳绱�
-
-- 鎼滅储鍔熻兘
-
-## **銆婂垎閿�鍟嗐��**
-- 鍒嗛攢鍟嗙鐞嗭細鍙互鍒涘缓浜岀骇鍒嗛攢鍟嗭紝鏌ョ湅褰掑睘浼佷笟淇℃伅鍒楄〃
-![姝ゅ杈撳叆鍥剧墖鐨勬弿杩癩[12]
-- 鍒嗛攢鍟嗕俊鎭細澧炲姞浣跨敤浜烘锛屼紒涓氭姤鍛婁笅杞芥巿鏉冿紝鏇村彉浼佷笟淇℃伅锛屽垎閿�鍟嗗彲浠ュ垱寤轰紒涓氱敤鎴�
-![姝ゅ杈撳叆鍥剧墖鐨勬弿杩癩[13]
-
-## **銆婂钩鍙扮鐞嗙銆�**
-
-### 涓�銆佺敤鎴风櫥褰曟ā鍧�
-1銆佹敮鎸侀�氳繃URL鐨勬柟寮忔帹閫佺粰鐩爣鐢ㄦ埛锛堥偖浠跺拰鐭俊鏂瑰紡锛�,鐢ㄦ埛鐐瑰嚮閾炬帴鐧诲綍锛屽垎閰嶇粰鐢ㄦ埛鐨勯摼鎺ュ湴鍧�鍙兘鏈変竴涓湪绾匡紝涓旀湁鏈夋晥鏈熸帶鍒躲�傞噸澶嶈闂垯浠ユ渶鏂扮殑璁块棶鐢熸晥锛屽叾浠朣ession鍋氫笅绾垮鐞嗐��
-2銆佺櫥褰曟棩蹇楄褰曘��
-#### 绠$悊鍛樺垪琛細骞冲彴鐢ㄦ埛
-![绠$悊鍛樺垪琛╙[14]
-
-### 浜屻�侀搴撶鐞�
-#### 鐣岄潰閫昏緫娴佺▼鎻忚堪锛�
- - 1銆佷骇鍝佸寘鍒楄〃
- - 2銆侀鐩淮搴�
- ![棰樼洰缁村害][15]
- - 3銆侀棶鍗风被鍨�
- ![闂嵎绫诲瀷][16]
- - 4銆侀鐩垪琛�
- ![棰樼洰鍒楄〃][17]
- - 5銆佺郴缁熺鐞�
- 瑙掕壊绠$悊锛屾潈闄愬垎閰嶏紝澶氳瑷�閰嶇疆
-![瑙掕壊鏉冮檺][18]
-
-- 鏆傛棤
-# 骞冲彴浣撻獙鐢ㄦ埛
->  test/testtest
-
-# 婕旂ず鍦板潃锛氬弬鑰冮儴缃茶鏄�
-
-鏂囨。鍦板潃锛歨ttp://139.199.11.114/docs
-
-# **閮ㄧ讲璇存槑**
-**1銆佷緷璧栫幆澧冭姹�**
-jdk1.8
-mysql 5.7浠ヤ笂锛屽缓璁甿ysql8.0
-node.js鐜
-nginx
-
-### 鏁版嵁搴撹剼鏈�
-```
-璇疯闂繙绋嬫湇鍔″櫒鑾峰彇锛歨ttp://139.199.11.114/images/ots-sand.sql
-```
-
-### 閮ㄧ讲绋嬪簭璇存槑
-```
-璇疯闂繙绋嬫湇鍔″櫒鑾峰彇绋嬪簭鍖咃細http://139.199.11.114/images/ots-bin.zip
-鐢ㄦ埛绔▼搴忓寘锛�
-```
-
-```
-1銆佽В鍘嬬▼搴忓寘锛屼慨鏀筩onf鐩綍涓嬮厤缃枃浠惰繛鎺ユ暟鎹簱
-鍦ㄩ厤缃枃浠禷pplication-druid.yml涓厤缃暟鎹簱杩炴帴鍦板潃锛�
-url: jdbc:mysql://ip:port/ots-sand?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
-username: 鐢ㄦ埛鍚�
-password: 瀵嗙爜
-2銆佹墽琛宐in鐩綍涓媏ss.sh 鍚姩椤圭洰
-
-3銆佸悗鍙拌闂湴鍧�锛歨ttp://localhost:8090
-```
-
-# 婕旂ず鍥�
-
-<table>
-    <tr>
-        <td><img src="http://139.199.11.114/images/20191113001.png"/></td>
-        <td><img src="http://139.199.11.114/images/20191113002.png"/></td>
-    </tr>
-</table>
-
-
-  [1]: http://139.199.11.114/images/%E5%8F%91%E9%80%81%E9%82%AE%E4%BB%B6.png
-  [2]: http://139.199.11.114/images/%E5%8F%91%E9%80%81%E7%9F%AD%E4%BF%A1.jpg
-  [3]: http://139.199.11.114/images/%E4%BC%81%E4%B8%9A%E4%BF%A1%E6%81%AF.jpg
-  [4]: http://139.199.11.114/images/%E4%BC%81%E4%B8%9A%E7%94%A8%E6%88%B7%E4%BF%A1%E6%81%AF.jpg
-  [5]: http://139.199.11.114/images/%E4%BA%BA%E5%8F%A3%E5%AD%A6%E5%8F%98%E9%87%8F.jpg
-  [6]: http://139.199.11.114/images/%E6%B5%8B%E8%AF%95%E5%8C%85%E5%88%97%E8%A1%A8.jpg
-  [7]: http://139.199.11.114/images/%E8%AF%84%E6%B5%8B%E4%BA%BA%E5%91%98%E5%88%97%E8%A1%A8.jpg
-  [8]: http://139.199.11.114/images/%E9%82%80%E8%AF%B7%E9%82%AE%E4%BB%B6.jpg
-  [9]: http://139.199.11.114/images/%E9%82%80%E8%AF%B7%E7%9F%AD%E4%BF%A1.jpg
-  [10]: http://139.199.11.114/images/%E9%82%80%E8%AF%B7%E5%8F%91%E9%80%81%E6%8A%A5%E5%91%8A.jpg
-  [11]: http://139.199.11.114/images/%E9%97%AE%E5%8D%B7%E7%AD%94%E9%A2%98%E7%BB%93%E6%9E%9C.png
-  [12]: http://139.199.11.114/images/%E5%88%86%E9%94%80%E5%95%86%E5%88%97%E8%A1%A8.jpg
-  [13]: http://139.199.11.114/images/%E5%88%86%E9%94%80%E5%95%86%E4%BF%A1%E6%81%AF.jpg
-  [14]: http://139.199.11.114/images/%E7%AE%A1%E7%90%86%E5%91%98%E5%88%97%E8%A1%A8.jpg
-  [15]: http://139.199.11.114/images/%E9%A2%98%E7%9B%AE%E7%BB%B4%E5%BA%A6.jpg
-  [16]: http://139.199.11.114/images/%E9%97%AE%E5%8D%B7%E7%B1%BB%E5%9E%8B.jpg
-  [17]: http://139.199.11.114/images/%E9%A2%98%E7%9B%AE%E5%88%97%E8%A1%A8.jpg
-  [18]: http://139.199.11.114/images/%E8%A7%92%E8%89%B2%E6%9D%83%E9%99%90.jpg
\ No newline at end of file
diff --git a/ots-docs/index.html b/ots-docs/index.html
deleted file mode 100644
index f48a914..0000000
--- a/ots-docs/index.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-  <meta charset="UTF-8">
-  <title>Document</title>
-  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
-  <meta name="description" content="Description">
-  <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
-  <link rel="stylesheet" href="//unpkg.com/docsify/lib/themes/vue.css">
-</head>
-<body>
-  <div id="app"></div>
-  <script>
-    window.$docsify = {
-      name: '',
-      repo: ''
-    }
-  </script>
-  <script src="//unpkg.com/docsify/lib/docsify.min.js"></script>
-</body>
-</html>
diff --git "a/ots-docs/\345\211\215\345\220\216\347\253\257\345\233\275\351\231\205\345\214\226-\351\205\215\347\275\256-20200123.xls" "b/ots-docs/\345\211\215\345\220\216\347\253\257\345\233\275\351\231\205\345\214\226-\351\205\215\347\275\256-20200123.xls"
deleted file mode 100644
index 3188c61..0000000
--- "a/ots-docs/\345\211\215\345\220\216\347\253\257\345\233\275\351\231\205\345\214\226-\351\205\215\347\275\256-20200123.xls"
+++ /dev/null
Binary files differ
diff --git a/pom.xml b/pom.xml
index 6988c77..a34ca37 100644
--- a/pom.xml
+++ b/pom.xml
@@ -254,7 +254,7 @@
 			<artifactId>jasypt-spring-boot-starter</artifactId>
 			<version>2.0.0</version>
 		</dependency>
-		
+
 		<!-- 鑾峰彇绯荤粺淇℃伅 -->
 		<dependency>
 			<groupId>com.github.oshi</groupId>
@@ -360,7 +360,6 @@
             <version>13.0</version>
             <scope>compile</scope>
         </dependency>
-
 		<dependency>
 			<groupId>com.ots</groupId>
 			<artifactId>tai-ots-framework</artifactId>
@@ -369,7 +368,7 @@
 			<systemPath>${project.basedir}/jar/tai-ots-framework.jar</systemPath>
 		</dependency>
 
-    </dependencies>
+	</dependencies>
 
 <!--	<build>-->
 <!--		<finalName>${project.artifactId}</finalName>-->
diff --git a/src/main/assembly/assembly.xml b/src/main/assembly/assembly.xml
deleted file mode 100644
index 2e3c23e..0000000
--- a/src/main/assembly/assembly.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<assembly
-        xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
-
-    <id>bin</id>
-    <formats>
-        <format>zip</format>
-    </formats>
-    <includeBaseDirectory>false</includeBaseDirectory>
-    <fileSets>
-        <fileSet>
-            <directory>src/main/scripts</directory>
-            <outputDirectory>/bin</outputDirectory>
-            <lineEnding>unix</lineEnding>
-            <fileMode>0755</fileMode>
-            <includes>
-                <include>*.sh</include>
-            </includes>
-        </fileSet>
-        <fileSet>
-            <directory>target/</directory>
-            <outputDirectory>/main</outputDirectory>
-            <includes>
-                <include>*.jar</include>
-            </includes>
-        </fileSet>
-        <fileSet>
-            <directory>target/classes</directory>
-            <outputDirectory>/conf</outputDirectory>
-            <includes>
-                <include>*.xml</include>
-                <include>*.conf</include>
-                <include>*.properties</include>
-                <include>*.yml</include>
-                <include>*.txt</include>
-            </includes>
-        </fileSet>
-    </fileSets>
-</assembly>
\ No newline at end of file
diff --git a/src/main/java/com/ots/OtsServletInitializer.java b/src/main/java/com/ots/OtsServletInitializer.java
index 5e0bfcc..db8b846 100644
--- a/src/main/java/com/ots/OtsServletInitializer.java
+++ b/src/main/java/com/ots/OtsServletInitializer.java
@@ -1,13 +1,7 @@
 package com.ots;
-
 import org.springframework.boot.builder.SpringApplicationBuilder;
 import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
 
-/**
- * web瀹瑰櫒涓繘琛岄儴缃�
- *
- * @author ots
- */
 public class OtsServletInitializer extends SpringBootServletInitializer {
     @Override
     protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
diff --git a/src/main/java/com/ots/framework/web/controller/BaseController.java b/src/main/java/com/ots/framework/web/controller/BaseController.java
new file mode 100644
index 0000000..7f88ce7
--- /dev/null
+++ b/src/main/java/com/ots/framework/web/controller/BaseController.java
@@ -0,0 +1,115 @@
+package com.ots.framework.web.controller;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.ots.common.utils.DateUtils;
+import com.ots.common.utils.StringUtils;
+import com.ots.common.utils.security.ShiroUtils;
+import com.ots.common.utils.sql.SqlUtil;
+import com.ots.framework.web.domain.AjaxResult;
+import com.ots.framework.web.domain.AjaxResult.Type;
+import com.ots.framework.web.page.PageDomain;
+import com.ots.framework.web.page.TableDataInfo;
+import com.ots.framework.web.page.TableSupport;
+import com.ots.project.system.user.domain.User;
+import org.springframework.web.bind.WebDataBinder;
+import org.springframework.web.bind.annotation.InitBinder;
+import java.beans.PropertyEditorSupport;
+import java.util.Date;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class BaseController {
+    
+    @InitBinder
+    public void initBinder(WebDataBinder binder) {
+        
+        binder.registerCustomEditor(Date.class, new PropertyEditorSupport() {
+            @Override
+            public void setAsText(String text) {
+                setValue(DateUtils.parseDate(text));
+            }
+        });
+    }
+    
+    protected void startPage() {
+        PageDomain pageDomain = TableSupport.buildPageRequest();
+        Integer pageNum = pageDomain.getPageNum();
+        Integer pageSize = pageDomain.getPageSize();
+        if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) {
+            String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
+            PageHelper.startPage(pageNum, pageSize, orderBy);
+        }
+    }
+    
+    @SuppressWarnings({"rawtypes", "unchecked"})
+    protected TableDataInfo getDataTable(List<?> list) {
+        TableDataInfo rspData = new TableDataInfo();
+        rspData.setCode(0);
+        rspData.setRows(list);
+        rspData.setTotal(new PageInfo(list).getTotal());
+        return rspData;
+    }
+    
+    protected AjaxResult toAjax(int rows) {
+        return rows > 0 ? success() : error();
+    }
+    
+    protected AjaxResult toAjax(boolean result) {
+        return result ? success() : error();
+    }
+    
+    public AjaxResult success() {
+        return AjaxResult.success();
+    }
+    
+    public AjaxResult error() {
+        return AjaxResult.error();
+    }
+    
+    public AjaxResult success(String message) {
+        return AjaxResult.success(message);
+    }
+    
+    public AjaxResult error(String message) {
+        return AjaxResult.error(message);
+    }
+    
+    public AjaxResult error(Type type, String message) {
+        return new AjaxResult(type, message);
+    }
+    
+    public String redirect(String url) {
+        return StringUtils.format("redirect:{}", url);
+    }
+    public User getSysUser() {
+        return ShiroUtils.getSysUser();
+    }
+    public void setSysUser(User user) {
+        ShiroUtils.setSysUser(user);
+    }
+    public Long getUserId() {
+        return getSysUser().getUserId();
+    }
+    public String getLoginName() {
+        return getSysUser().getLoginName();
+    }
+    public static void main(String[] args) {
+        String line = "xxxxx";
+        System.out.println(getJson(line, "time_slot_list"));
+    }
+    public static String getJson(String json, String key) {
+        String pattern = key + "\": \\{[^}]*\\}";
+        
+        Pattern r = Pattern.compile(pattern);
+        
+        Matcher m = r.matcher(json);
+        if (m.find()) {
+            String group = m.group(0);
+            group = group.replace(key + "\":", key + "\":[");
+            group += "]";
+            return json.replaceAll(pattern, group);
+        }
+        return json;
+    }
+}
diff --git a/src/main/java/com/ots/project/common/BaseApiController.java b/src/main/java/com/ots/project/common/BaseApiController.java
index 3bfe895..91c5cf2 100644
--- a/src/main/java/com/ots/project/common/BaseApiController.java
+++ b/src/main/java/com/ots/project/common/BaseApiController.java
@@ -1,20 +1,15 @@
 package com.ots.project.common;
-
 import com.ots.project.exam.domain.ExamUser;
 import com.ots.project.exam.domain.WebContext;
 import com.ots.project.tool.exam.ModelMapperSingle;
 import org.modelmapper.ModelMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 
-/**
- * @author ots
- */
 public class BaseApiController {
     protected final static String DEFAULT_PAGE_SIZE = "10";
     protected final static ModelMapper modelMapper = ModelMapperSingle.Instance();
     @Autowired
     protected WebContext webContext;
-
     protected ExamUser getCurrentUser() {
         return webContext.getCurrentUser();
     }
diff --git a/src/main/java/com/ots/project/common/CommonController.java b/src/main/java/com/ots/project/common/CommonController.java
index 18163f0..fdbe8a0 100644
--- a/src/main/java/com/ots/project/common/CommonController.java
+++ b/src/main/java/com/ots/project/common/CommonController.java
@@ -1,5 +1,4 @@
 package com.ots.project.common;
-
 import com.ots.common.utils.file.FileUploadUtils;
 import com.ots.common.utils.file.FileUtils;
 import com.ots.framework.config.EssConfig;
@@ -13,38 +12,24 @@
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.multipart.MultipartFile;
-
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-/**
- * 閫氱敤璇锋眰澶勭悊
- *
- * @author ots
- */
 @Controller
 public class CommonController {
     private static final Logger log = LoggerFactory.getLogger(CommonController.class);
-
     @Autowired
     private ServerConfig serverConfig;
-
-    /**
-     * 閫氱敤涓嬭浇璇锋眰
-     *
-     * @param fileName 鏂囦欢鍚嶇О
-     * @param delete   鏄惁鍒犻櫎
-     */
+    
     @GetMapping("common/download")
     public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request) {
         try {
-              //鍏堟敞閲婃帀鐪嬬湅锛屽洜涓烘病鏈夊彂鍏堟湰绯荤粺鐨勪笟鍔$殑浠讳綍鎰忎箟
-//            if (!FileUtils.isValidFilename(fileName)) {
-//                throw new Exception(StringUtils.format("鏂囦欢鍚嶇О({})闈炴硶锛屼笉鍏佽涓嬭浇銆� ", fileName));
-//            }
+              
+
+
+
             String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);
             String filePath = EssConfig.getDownloadPath() + fileName;
-
             response.setCharacterEncoding("utf-8");
             response.setContentType("multipart/form-data");
             response.setHeader("Content-Disposition",
@@ -57,17 +42,14 @@
             log.error("涓嬭浇鏂囦欢澶辫触", e);
         }
     }
-
-    /**
-     * 閫氱敤涓婁紶璇锋眰
-     */
+    
     @PostMapping("/common/upload")
     @ResponseBody
     public AjaxResult uploadFile(MultipartFile file) throws Exception {
         try {
-            // 涓婁紶鏂囦欢璺緞
+            
             String filePath = EssConfig.getUploadPath();
-            // 涓婁紶骞惰繑鍥炴柊鏂囦欢鍚嶇О
+            
             String fileName = FileUploadUtils.upload(filePath, file);
             String url = serverConfig.getUrl() + fileName;
             AjaxResult ajax = AjaxResult.success();
@@ -78,36 +60,31 @@
             return AjaxResult.error(e.getMessage());
         }
     }
-    /**
-     * 涓婁紶鍥剧墖鏈嶅姟鍣�
-     * /common/images 杩欓噷璇锋眰鐨勮繛鎺ユ槸images锛屼綘鐨勬枃浠跺す涔熻鍙玦mages
-     */
+    
     @PostMapping("/common/images")
     @ResponseBody
     public AjaxResult upImage(MultipartFile file) throws Exception {
         try {
-            // 涓婁紶鏂囦欢璺緞
+            
             String filePath = EssConfig.getUploadImagePath();
-            // 涓婁紶骞惰繑鍥炴柊鏂囦欢鍚嶇О
+            
             String fileName = FileUploadUtils.upload(filePath, file);
-            //String url = serverConfig.getUrl() + fileName;
+            
             String url = fileName.replaceFirst("/profile/images", EssConfig.getImagePath());
+            
+            
+            
 
-            //1銆佸厛鍘嬬缉鍑轰竴涓柊鐨�
-            // filePath = "/Users/shawnli/Downloads/images"
-            // fileName = "/profile/images/2019/12/19/aba5e2f850edf254a9e5b2a35c50089a.png"
-//            // url = "http://localhost:8090/profile/images/2019/12/19/aba5e2f850edf254a9e5b2a35c50089a.png"
-//            String filePathOriginal = fileName.replaceFirst("/profile/images", filePath);
-//            String fileNew = filePathOriginal + "."+filePathOriginal.substring(filePathOriginal.lastIndexOf(".") + 1);
-//            PicUtils.commpressPicForScale(filePathOriginal, fileNew, 20, 0.5);
-//
-//            //2銆佸垹闄ゆ棫鐨�
-//            File fileOper = new File(filePathOriginal);
-//            fileOper.delete();
-//
-//            //3銆佸懡鍚嶆柊鐨勪负鏃х殑鍚嶅瓧
-//            File fileNewOper = new File(fileNew);
-//            fileNewOper.renameTo(new File(filePathOriginal));
+
+
+
+
+
+
+
+
+
+
 
             AjaxResult ajax = AjaxResult.success();
             ajax.put("fileName", fileName);
diff --git a/src/main/java/com/ots/project/demo/controller/DemoDialogController.java b/src/main/java/com/ots/project/demo/controller/DemoDialogController.java
index cf79a9e..8719887 100644
--- a/src/main/java/com/ots/project/demo/controller/DemoDialogController.java
+++ b/src/main/java/com/ots/project/demo/controller/DemoDialogController.java
@@ -1,70 +1,43 @@
 package com.ots.project.demo.controller;
-
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 
-/**
- * 妯℃�佺獥鍙�
- *
- * @author ots
- */
 @Controller
 @RequestMapping("/demo/modal")
 public class DemoDialogController {
     private String prefix = "demo/modal";
-
-    /**
-     * 妯℃�佺獥鍙�
-     */
+    
     @GetMapping("/dialog")
     public String dialog() {
         return prefix + "/dialog";
     }
-
-    /**
-     * 寮瑰眰缁勪欢
-     */
+    
     @GetMapping("/layer")
     public String layer() {
         return prefix + "/layer";
     }
-
-    /**
-     * 琛ㄥ崟
-     */
+    
     @GetMapping("/form")
     public String form() {
         return prefix + "/form";
     }
-
-    /**
-     * 琛ㄦ牸
-     */
+    
     @GetMapping("/table")
     public String table() {
         return prefix + "/table";
     }
-
-    /**
-     * 琛ㄦ牸check
-     */
+    
     @GetMapping("/check")
     public String check() {
         return prefix + "/table/check";
     }
-
-    /**
-     * 琛ㄦ牸radio
-     */
+    
     @GetMapping("/radio")
     public String radio() {
         return prefix + "/table/radio";
     }
-
-    /**
-     * 琛ㄦ牸鍥炰紶鐖剁獥浣�
-     */
+    
     @GetMapping("/parent")
     public String parent() {
         return prefix + "/table/parent";
diff --git a/src/main/java/com/ots/project/demo/controller/DemoFormController.java b/src/main/java/com/ots/project/demo/controller/DemoFormController.java
index 37e3d77..70e06e5 100644
--- a/src/main/java/com/ots/project/demo/controller/DemoFormController.java
+++ b/src/main/java/com/ots/project/demo/controller/DemoFormController.java
@@ -1,27 +1,18 @@
 package com.ots.project.demo.controller;
-
 import com.ots.common.utils.file.FileUploadUtils;
 import com.ots.framework.config.EssConfig;
 import com.ots.framework.web.domain.AjaxResult;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
-
 import java.util.ArrayList;
 import java.util.List;
 
-/**
- * 琛ㄥ崟鐩稿叧
- *
- * @author ots
- */
 @Controller
 @RequestMapping("/demo/form")
 public class DemoFormController {
     private String prefix = "demo/form";
-
     private final static List<UserFormModel> users = new ArrayList<UserFormModel>();
-
     {
         users.add(new UserFormModel(1, "1000001", "娴嬭瘯1", "15888888888"));
         users.add(new UserFormModel(2, "1000002", "娴嬭瘯2", "15666666666"));
@@ -29,82 +20,52 @@
         users.add(new UserFormModel(4, "1000004", "娴嬭瘯4", "15666666666"));
         users.add(new UserFormModel(5, "1000005", "娴嬭瘯5", "15666666666"));
     }
-
-    /**
-     * 鎸夐挳椤�
-     */
+    
     @GetMapping("/button")
     public String button() {
         return prefix + "/button";
     }
-
-    /**
-     * 涓嬫媺妗�
-     */
+    
     @GetMapping("/select")
     public String select() {
         return prefix + "/select";
     }
-
-    /**
-     * 琛ㄥ崟鏍¢獙
-     */
+    
     @GetMapping("/validate")
     public String validate() {
         return prefix + "/validate";
     }
-
-    /**
-     * 鍔熻兘鎵╁睍锛堝寘鍚枃浠朵笂浼狅級
-     */
+    
     @GetMapping("/jasny")
     public String jasny() {
         return prefix + "/jasny";
     }
-
-    /**
-     * 鎷栧姩鎺掑簭
-     */
+    
     @GetMapping("/sortable")
     public String sortable() {
         return prefix + "/sortable";
     }
-
-    /**
-     * 閫夐」鍗� & 闈㈡澘
-     */
+    
     @GetMapping("/tabs_panels")
     public String tabs_panels() {
         return prefix + "/tabs_panels";
     }
-
-    /**
-     * 鏍呮牸
-     */
+    
     @GetMapping("/grid")
     public String grid() {
         return prefix + "/grid";
     }
-
-    /**
-     * 琛ㄥ崟鍚戝
-     */
+    
     @GetMapping("/wizard")
     public String wizard() {
         return prefix + "/wizard";
     }
-
-    /**
-     * 鏂囦欢涓婁紶
-     */
+    
     @GetMapping("/upload")
     public String upload() {
         return prefix + "/upload";
     }
-
-    /**
-     * 鏂囦欢涓婁紶
-     */
+    
     @PostMapping("/uploadp")
     @ResponseBody
     public AjaxResult upload(@RequestParam("filep") MultipartFile file) {
@@ -118,71 +79,46 @@
             return AjaxResult.error(e.getMessage());
         }
     }
-
-    /**
-     * 鏃ユ湡鍜屾椂闂撮〉
-     */
+    
     @GetMapping("/datetime")
     public String datetime() {
         return prefix + "/datetime";
     }
-
-    /**
-     * 宸﹀彸浜掗�夌粍浠�
-     */
+    
     @GetMapping("/duallistbox")
     public String duallistbox() {
         return prefix + "/duallistbox";
     }
-
-    /**
-     * 鍩烘湰琛ㄥ崟
-     */
+    
     @GetMapping("/basic")
     public String basic() {
         return prefix + "/basic";
     }
-
-    /**
-     * 鍗$墖鍒楄〃
-     */
+    
     @GetMapping("/cards")
     public String cards() {
         return prefix + "/cards";
     }
-
-    /**
-     * summernote 瀵屾枃鏈紪杈戝櫒
-     */
+    
     @GetMapping("/summernote")
     public String summernote() {
         return prefix + "/summernote";
     }
-
-    /**
-     * 鎼滅储鑷姩琛ュ叏
-     */
+    
     @GetMapping("/autocomplete")
     public String autocomplete() {
         return prefix + "/autocomplete";
     }
-
-    /**
-     * 鑾峰彇鐢ㄦ埛鏁版嵁
-     */
+    
     @GetMapping("/userModel")
     @ResponseBody
     public AjaxResult userModel() {
         AjaxResult ajax = new AjaxResult();
-
         ajax.put("code", 200);
         ajax.put("value", users);
         return ajax;
     }
-
-    /**
-     * 鑾峰彇鏁版嵁闆嗗悎
-     */
+    
     @GetMapping("/collection")
     @ResponseBody
     public AjaxResult collection() {
@@ -192,69 +128,45 @@
         return ajax;
     }
 }
-
 class UserFormModel {
-    /**
-     * 鐢ㄦ埛ID
-     */
+    
     private int userId;
-
-    /**
-     * 鐢ㄦ埛缂栧彿
-     */
+    
     private String userCode;
-
-    /**
-     * 鐢ㄦ埛濮撳悕
-     */
+    
     private String userName;
-
-    /**
-     * 鐢ㄦ埛鎵嬫満
-     */
+    
     private String userPhone;
-
     public UserFormModel() {
-
     }
-
     public UserFormModel(int userId, String userCode, String userName, String userPhone) {
         this.userId = userId;
         this.userCode = userCode;
         this.userName = userName;
         this.userPhone = userPhone;
     }
-
     public int getUserId() {
         return userId;
     }
-
     public void setUserId(int userId) {
         this.userId = userId;
     }
-
     public String getUserCode() {
         return userCode;
     }
-
     public void setUserCode(String userCode) {
         this.userCode = userCode;
     }
-
     public String getUserName() {
         return userName;
     }
-
     public void setUserName(String userName) {
         this.userName = userName;
     }
-
     public String getUserPhone() {
         return userPhone;
     }
-
     public void setUserPhone(String userPhone) {
         this.userPhone = userPhone;
     }
-
 }
diff --git a/src/main/java/com/ots/project/demo/controller/DemoIconController.java b/src/main/java/com/ots/project/demo/controller/DemoIconController.java
index 4134579..2ab7a84 100644
--- a/src/main/java/com/ots/project/demo/controller/DemoIconController.java
+++ b/src/main/java/com/ots/project/demo/controller/DemoIconController.java
@@ -1,30 +1,18 @@
 package com.ots.project.demo.controller;
-
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 
-/**
- * 鍥炬爣鐩稿叧
- *
- * @author ots
- */
 @Controller
 @RequestMapping("/demo/icon")
 public class DemoIconController {
     private String prefix = "demo/icon";
-
-    /**
-     * FontAwesome鍥炬爣
-     */
+    
     @GetMapping("/fontawesome")
     public String fontAwesome() {
         return prefix + "/fontawesome";
     }
-
-    /**
-     * Glyphicons鍥炬爣
-     */
+    
     @GetMapping("/glyphicons")
     public String glyphicons() {
         return prefix + "/glyphicons";
diff --git a/src/main/java/com/ots/project/demo/controller/DemoOperateController.java b/src/main/java/com/ots/project/demo/controller/DemoOperateController.java
index 69e7369..ae320d2 100644
--- a/src/main/java/com/ots/project/demo/controller/DemoOperateController.java
+++ b/src/main/java/com/ots/project/demo/controller/DemoOperateController.java
@@ -1,5 +1,4 @@
 package com.ots.project.demo.controller;
-
 import com.ots.common.exception.BusinessException;
 import com.ots.common.utils.StringUtils;
 import com.ots.common.utils.poi.ExcelUtil;
@@ -14,24 +13,16 @@
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
-
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
-/**
- * 鎿嶄綔鎺у埗
- *
- * @author ots
- */
 @Controller
 @RequestMapping("/demo/operate")
 public class DemoOperateController extends BaseController {
     private String prefix = "demo/operate";
-
     private final static Map<Integer, UserOperateModel> users = new LinkedHashMap<Integer, UserOperateModel>();
-
     {
         users.put(1, new UserOperateModel(1, "1000001", "娴嬭瘯1", "0", "15888888888", "ry@qq.com", 150.0, "0"));
         users.put(2, new UserOperateModel(2, "1000002", "娴嬭瘯2", "1", "15666666666", "ry@qq.com", 180.0, "1"));
@@ -60,32 +51,23 @@
         users.put(25, new UserOperateModel(25, "1000025", "娴嬭瘯25", "1", "15666666666", "ry@qq.com", 250.0, "1"));
         users.put(26, new UserOperateModel(26, "1000026", "娴嬭瘯26", "1", "15666666666", "ry@qq.com", 250.0, "1"));
     }
-
-    /**
-     * 琛ㄦ牸
-     */
+    
     @GetMapping("/table")
     public String table() {
         return prefix + "/table";
     }
-
-    /**
-     * 鍏朵粬
-     */
+    
     @GetMapping("/other")
     public String other() {
         return prefix + "/other";
     }
-
-    /**
-     * 鏌ヨ鏁版嵁
-     */
+    
     @PostMapping("/list")
     @ResponseBody
     public TableDataInfo list(UserOperateModel userModel) {
         TableDataInfo rspData = new TableDataInfo();
         List<UserOperateModel> userList = new ArrayList<UserOperateModel>(users.values());
-        // 鏌ヨ鏉′欢杩囨护
+        
         if (StringUtils.isNotEmpty(userModel.getSearchValue())) {
             userList.clear();
             for (Map.Entry<Integer, UserOperateModel> entry : users.entrySet()) {
@@ -109,18 +91,12 @@
         rspData.setTotal(userList.size());
         return rspData;
     }
-
-    /**
-     * 鏂板鐢ㄦ埛
-     */
+    
     @GetMapping("/add")
     public String add(ModelMap mmap) {
         return prefix + "/add";
     }
-
-    /**
-     * 鏂板淇濆瓨鐢ㄦ埛
-     */
+    
     @PostMapping("/add")
     @ResponseBody
     public AjaxResult addSave(UserOperateModel user) {
@@ -128,28 +104,19 @@
         user.setUserId(userId);
         return AjaxResult.success(users.put(userId, user));
     }
-
-    /**
-     * 淇敼鐢ㄦ埛
-     */
+    
     @GetMapping("/edit/{userId}")
     public String edit(@PathVariable("userId") Integer userId, ModelMap mmap) {
         mmap.put("user", users.get(userId));
         return prefix + "/edit";
     }
-
-    /**
-     * 淇敼淇濆瓨鐢ㄦ埛
-     */
+    
     @PostMapping("/edit")
     @ResponseBody
     public AjaxResult editSave(UserOperateModel user) {
         return AjaxResult.success(users.put(user.getUserId(), user));
     }
-
-    /**
-     * 瀵煎嚭
-     */
+    
     @PostMapping("/export")
     @ResponseBody
     public AjaxResult export(UserOperateModel user) {
@@ -157,20 +124,14 @@
         ExcelUtil<UserOperateModel> util = new ExcelUtil<UserOperateModel>(UserOperateModel.class);
         return util.exportExcel(list, "鐢ㄦ埛鏁版嵁");
     }
-
-    /**
-     * 涓嬭浇妯℃澘
-     */
+    
     @GetMapping("/importTemplate")
     @ResponseBody
     public AjaxResult importTemplate() {
         ExcelUtil<UserOperateModel> util = new ExcelUtil<UserOperateModel>(UserOperateModel.class);
         return util.importTemplateExcel("鐢ㄦ埛鏁版嵁");
     }
-
-    /**
-     * 瀵煎叆鏁版嵁
-     */
+    
     @PostMapping("/importData")
     @ResponseBody
     public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
@@ -179,10 +140,7 @@
         String message = importUser(userList, updateSupport);
         return AjaxResult.success(message);
     }
-
-    /**
-     * 鍒犻櫎鐢ㄦ埛
-     */
+    
     @PostMapping("/remove")
     @ResponseBody
     public AjaxResult remove(String ids) {
@@ -192,30 +150,19 @@
         }
         return AjaxResult.success();
     }
-
-    /**
-     * 鏌ョ湅璇︾粏
-     */
+    
     @GetMapping("/detail/{userId}")
     public String detail(@PathVariable("userId") Integer userId, ModelMap mmap) {
         mmap.put("user", users.get(userId));
         return prefix + "/detail";
     }
-
     @PostMapping("/clean")
     @ResponseBody
     public AjaxResult clean() {
         users.clear();
         return success();
     }
-
-    /**
-     * 瀵煎叆鐢ㄦ埛鏁版嵁
-     *
-     * @param userList        鐢ㄦ埛鏁版嵁鍒楄〃
-     * @param isUpdateSupport 鏄惁鏇存柊鏀寔锛屽鏋滃凡瀛樺湪锛屽垯杩涜鏇存柊鏁版嵁
-     * @return 缁撴灉
-     */
+    
     public String importUser(List<UserOperateModel> userList, Boolean isUpdateSupport) {
         if (StringUtils.isNull(userList) || userList.size() == 0) {
             throw new BusinessException("Import user data cannot be empty锛�");
@@ -226,7 +173,7 @@
         StringBuilder failureMsg = new StringBuilder();
         for (UserOperateModel user : userList) {
             try {
-                // 楠岃瘉鏄惁瀛樺湪杩欎釜鐢ㄦ埛
+                
                 boolean userFlag = false;
                 for (Map.Entry<Integer, UserOperateModel> entry : users.entrySet()) {
                     if (entry.getValue().getUserName().equals(user.getUserName())) {
diff --git a/src/main/java/com/ots/project/demo/controller/DemoReportController.java b/src/main/java/com/ots/project/demo/controller/DemoReportController.java
index d47c6e0..6619706 100644
--- a/src/main/java/com/ots/project/demo/controller/DemoReportController.java
+++ b/src/main/java/com/ots/project/demo/controller/DemoReportController.java
@@ -1,46 +1,28 @@
 package com.ots.project.demo.controller;
-
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 
-/**
- * 鎶ヨ〃
- *
- * @author ots
- */
 @Controller
 @RequestMapping("/demo/report")
 public class DemoReportController {
     private String prefix = "demo/report";
-
-    /**
-     * 鐧惧害ECharts
-     */
+    
     @GetMapping("/echarts")
     public String echarts() {
         return prefix + "/echarts";
     }
-
-    /**
-     * 鍥捐〃鎻掍欢
-     */
+    
     @GetMapping("/peity")
     public String peity() {
         return prefix + "/peity";
     }
-
-    /**
-     * 绾跨姸鍥炬彃浠�
-     */
+    
     @GetMapping("/sparkline")
     public String sparkline() {
         return prefix + "/sparkline";
     }
-
-    /**
-     * 鍥捐〃缁勫悎
-     */
+    
     @GetMapping("/metrics")
     public String metrics() {
         return prefix + "/metrics";
diff --git a/src/main/java/com/ots/project/demo/controller/DemoTableController.java b/src/main/java/com/ots/project/demo/controller/DemoTableController.java
index 189955b..97f968d 100644
--- a/src/main/java/com/ots/project/demo/controller/DemoTableController.java
+++ b/src/main/java/com/ots/project/demo/controller/DemoTableController.java
@@ -1,5 +1,4 @@
 package com.ots.project.demo.controller;
-
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ots.common.utils.DateUtils;
 import com.ots.common.utils.StringUtils;
@@ -12,21 +11,13 @@
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
-
 import java.util.*;
 
-/**
- * 琛ㄦ牸鐩稿叧
- *
- * @author ots
- */
 @Controller
 @RequestMapping("/demo/table")
 public class DemoTableController extends BaseController {
     private String prefix = "demo/table";
-
     private final static List<UserTableModel> users = new ArrayList<UserTableModel>();
-
     {
         users.add(new UserTableModel(1, "1000001", "娴嬭瘯1", "0", "15888888888", "ry@qq.com", 150.0, "0"));
         users.add(new UserTableModel(2, "1000002", "娴嬭瘯2", "1", "15666666666", "ry@qq.com", 180.0, "1"));
@@ -55,145 +46,94 @@
         users.add(new UserTableModel(25, "1000025", "娴嬭瘯25", "1", "15666666666", "ry@qq.com", 250.0, "1"));
         users.add(new UserTableModel(26, "1000026", "娴嬭瘯26", "1", "15666666666", "ry@qq.com", 250.0, "1"));
     }
-
-    /**
-     * 鎼滅储鐩稿叧
-     */
+    
     @GetMapping("/search")
     public String search() {
         return prefix + "/search";
     }
-
-    /**
-     * 鏁版嵁姹囨��
-     */
+    
     @GetMapping("/footer")
     public String footer() {
         return prefix + "/footer";
     }
-
-    /**
-     * 缁勫悎琛ㄥご
-     */
+    
     @GetMapping("/groupHeader")
     public String groupHeader() {
         return prefix + "/groupHeader";
     }
-
-    /**
-     * 琛ㄦ牸瀵煎嚭
-     */
+    
     @GetMapping("/export")
     public String export() {
         return prefix + "/export";
     }
-
-    /**
-     * 缈婚〉璁颁綇閫夋嫨
-     */
+    
     @GetMapping("/remember")
     public String remember() {
         return prefix + "/remember";
     }
-
-    /**
-     * 璺宠浆鑷虫寚瀹氶〉
-     */
+    
     @GetMapping("/pageGo")
     public String pageGo() {
         return prefix + "/pageGo";
     }
-
-    /**
-     * 鑷畾涔夋煡璇㈠弬鏁�
-     */
+    
     @GetMapping("/params")
     public String params() {
         return prefix + "/params";
     }
-
-    /**
-     * 澶氳〃鏍�
-     */
+    
     @GetMapping("/multi")
     public String multi() {
         return prefix + "/multi";
     }
-
-    /**
-     * 鐐瑰嚮鎸夐挳鍔犺浇琛ㄦ牸
-     */
+    
     @GetMapping("/button")
     public String button() {
         return prefix + "/button";
     }
-
-    /**
-     * 琛ㄦ牸鍐荤粨鍒�
-     */
+    
     @GetMapping("/fixedColumns")
     public String fixedColumns() {
         return prefix + "/fixedColumns";
     }
-
-    /**
-     * 鑷畾涔夎Е鍙戜簨浠�
-     */
+    
     @GetMapping("/event")
     public String event() {
         return prefix + "/event";
     }
-
-    /**
-     * 琛ㄦ牸缁嗚妭瑙嗗浘
-     */
+    
     @GetMapping("/detail")
     public String detail() {
         return prefix + "/detail";
     }
-
-    /**
-     * 琛ㄦ牸鍥剧墖棰勮
-     */
+    
     @GetMapping("/image")
     public String image() {
         return prefix + "/image";
     }
-
-    /**
-     * 鍔ㄦ�佸鍒犳敼鏌�
-     */
+    
     @GetMapping("/curd")
     public String curd() {
         return prefix + "/curd";
     }
-
-    /**
-     * 琛ㄦ牸鎷栨嫿鎿嶄綔
-     */
+    
     @GetMapping("/reorder")
     public String reorder() {
         return prefix + "/reorder";
     }
-
-    /**
-     * 琛ㄦ牸鍏朵粬鎿嶄綔
-     */
+    
     @GetMapping("/other")
     public String other() {
         return prefix + "/other";
     }
-
-    /**
-     * 鏌ヨ鏁版嵁
-     */
+    
     @PostMapping("/list")
     @ResponseBody
     public TableDataInfo list(UserTableModel userModel) {
         TableDataInfo rspData = new TableDataInfo();
         List<UserTableModel> userList = new ArrayList<UserTableModel>(Arrays.asList(new UserTableModel[users.size()]));
         Collections.copy(userList, users);
-        // 鏌ヨ鏉′欢杩囨护
+        
         if (StringUtils.isNotEmpty(userModel.getUserName())) {
             userList.clear();
             for (UserTableModel user : users) {
@@ -218,58 +158,28 @@
         return rspData;
     }
 }
-
 class UserTableModel {
-    /**
-     * 鐢ㄦ埛ID
-     */
+    
     private int userId;
-
-    /**
-     * 鐢ㄦ埛缂栧彿
-     */
+    
     private String userCode;
-
-    /**
-     * 鐢ㄦ埛濮撳悕
-     */
+    
     private String userName;
-
-    /**
-     * 鐢ㄦ埛鎬у埆
-     */
+    
     private String userSex;
-
-    /**
-     * 鐢ㄦ埛鎵嬫満
-     */
+    
     private String userPhone;
-
-    /**
-     * 鐢ㄦ埛閭
-     */
+    
     private String userEmail;
-
-    /**
-     * 鐢ㄦ埛浣欓
-     */
+    
     private double userBalance;
-
-    /**
-     * 鐢ㄦ埛鐘舵�侊紙0姝e父 1鍋滅敤锛�
-     */
+    
     private String status;
-
-    /**
-     * 鍒涘缓鏃堕棿
-     */
+    
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
-
     public UserTableModel() {
-
     }
-
     public UserTableModel(int userId, String userCode, String userName, String userSex, String userPhone,
                           String userEmail, double userBalance, String status) {
         this.userId = userId;
@@ -282,75 +192,57 @@
         this.status = status;
         this.createTime = DateUtils.getNowDate();
     }
-
     public int getUserId() {
         return userId;
     }
-
     public void setUserId(int userId) {
         this.userId = userId;
     }
-
     public String getUserCode() {
         return userCode;
     }
-
     public void setUserCode(String userCode) {
         this.userCode = userCode;
     }
-
     public String getUserName() {
         return userName;
     }
-
     public void setUserName(String userName) {
         this.userName = userName;
     }
-
     public String getUserSex() {
         return userSex;
     }
-
     public void setUserSex(String userSex) {
         this.userSex = userSex;
     }
-
     public String getUserPhone() {
         return userPhone;
     }
-
     public void setUserPhone(String userPhone) {
         this.userPhone = userPhone;
     }
-
     public String getUserEmail() {
         return userEmail;
     }
-
     public void setUserEmail(String userEmail) {
         this.userEmail = userEmail;
     }
-
     public double getUserBalance() {
         return userBalance;
     }
-
     public void setUserBalance(double userBalance) {
         this.userBalance = userBalance;
     }
-
     public String getStatus() {
         return status;
     }
-
     public void setStatus(String status) {
         this.status = status;
     }
-
     public Date getCreateTime() {
         return createTime;
     }
-
     public void setCreateTime(Date createTime) {
         this.createTime = createTime;
     }
diff --git a/src/main/java/com/ots/project/demo/domain/UserOperateModel.java b/src/main/java/com/ots/project/demo/domain/UserOperateModel.java
index 7e86f3c..f84fa7e 100644
--- a/src/main/java/com/ots/project/demo/domain/UserOperateModel.java
+++ b/src/main/java/com/ots/project/demo/domain/UserOperateModel.java
@@ -1,45 +1,30 @@
 package com.ots.project.demo.domain;
-
 import com.ots.common.utils.DateUtils;
 import com.ots.framework.aspectj.lang.annotation.Excel;
 import com.ots.framework.aspectj.lang.annotation.Excel.Type;
 import com.ots.framework.web.domain.BaseEntity;
-
 import java.util.Date;
-
 public class UserOperateModel extends BaseEntity {
     private static final long serialVersionUID = 1L;
-
     private int userId;
-
     @Excel(name = "鐢ㄦ埛缂栧彿")
     private String userCode;
-
     @Excel(name = "鐢ㄦ埛濮撳悕")
     private String userName;
-
     @Excel(name = "鐢ㄦ埛鎬у埆", readConverterExp = "0=鐢�,1=濂�,2=鏈煡")
     private String userSex;
-
     @Excel(name = "鐢ㄦ埛鎵嬫満")
     private String userPhone;
-
     @Excel(name = "鐢ㄦ埛閭")
     private String userEmail;
-
     @Excel(name = "鐢ㄦ埛浣欓")
     private double userBalance;
-
     @Excel(name = "鐢ㄦ埛鐘舵��", readConverterExp = "0=姝e父,1=鍋滅敤")
     private String status;
-
     @Excel(name = "鍒涘缓鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT)
     private Date createTime;
-
     public UserOperateModel() {
-
     }
-
     public UserOperateModel(int userId, String userCode, String userName, String userSex, String userPhone,
                             String userEmail, double userBalance, String status) {
         this.userId = userId;
@@ -52,76 +37,58 @@
         this.status = status;
         this.createTime = DateUtils.getNowDate();
     }
-
     public int getUserId() {
         return userId;
     }
-
     public void setUserId(int userId) {
         this.userId = userId;
     }
-
     public String getUserCode() {
         return userCode;
     }
-
     public void setUserCode(String userCode) {
         this.userCode = userCode;
     }
-
     public String getUserName() {
         return userName;
     }
-
     public void setUserName(String userName) {
         this.userName = userName;
     }
-
     public String getUserSex() {
         return userSex;
     }
-
     public void setUserSex(String userSex) {
         this.userSex = userSex;
     }
-
     public String getUserPhone() {
         return userPhone;
     }
-
     public void setUserPhone(String userPhone) {
         this.userPhone = userPhone;
     }
-
     public String getUserEmail() {
         return userEmail;
     }
-
     public void setUserEmail(String userEmail) {
         this.userEmail = userEmail;
     }
-
     public double getUserBalance() {
         return userBalance;
     }
-
     public void setUserBalance(double userBalance) {
         this.userBalance = userBalance;
     }
-
     public String getStatus() {
         return status;
     }
-
     public void setStatus(String status) {
         this.status = status;
     }
-
     public Date getCreateTime() {
         return createTime;
     }
-
     public void setCreateTime(Date createTime) {
         this.createTime = createTime;
     }
-}
\ No newline at end of file
+}
diff --git a/src/main/java/com/ots/project/exam/controller/DistributorController.java b/src/main/java/com/ots/project/exam/controller/DistributorController.java
index f0b32ad..ed47e97 100644
--- a/src/main/java/com/ots/project/exam/controller/DistributorController.java
+++ b/src/main/java/com/ots/project/exam/controller/DistributorController.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.controller;
-
 import com.ots.common.enums.UserTypeEnum;
 import com.ots.common.utils.StringUtils;
 import com.ots.common.utils.security.ShiroUtils;
@@ -18,36 +17,22 @@
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
-
 import java.util.List;
 import java.util.Objects;
-
 import static com.ots.common.enums.UserTypeEnum.DIS_USER;
 
-/**
- * @Created with IntelliJ IDEA.
- * @User: liguosheng
- * @Date: 2019/11/22
- * @Time: 10:40
- * @description: 鍒嗛攢鍟�
- */
 @Controller
 @RequestMapping("/exam/distributor")
 public class DistributorController extends BaseController {
-
     private String prefix = "exam/distributor";
     @Autowired
     private ISysUserExtendService sysUserExtendService;
-
     @RequiresPermissions("exam:distributor:view")
     @GetMapping()
     public String distributor() {
         return prefix + "/distributor";
     }
-
-    /**
-     * 鏌ヨ鐢ㄦ埛淇℃伅鎵╁睍鍒楄〃
-     */
+    
     @PostMapping("/list")
     @ResponseBody
     public TableDataInfo list(SysUserExtend sysUserExtend) {
@@ -61,20 +46,16 @@
         List<SysUserExtend> list = sysUserExtendService.selectSysUserExtendList(sysUserExtend);
         return getDataTable(list);
     }
-
-    /**
-     * 鏂板鐢ㄦ埛淇℃伅鎵╁睍
-     */
+    
     @GetMapping("/add")
     public String add(ModelMap mmap) {
         List<SysUserExtend> list = getSysUserExtends();
         mmap.put("us", list);
         return prefix + "/add";
     }
-
     List<SysUserExtend> getSysUserExtends() {
         User sysUser = ShiroUtils.getSysUser();
-        //濡傛灉鏄郴缁熺敤鎴疯繑鍥炴墍鏈夌郴缁熺敤鎴峰拰涓嬪睘涓�绾у垎閿�鍟�
+        
         SysUserExtend sysUserExtend = new SysUserExtend();
         if (Objects.equals(UserTypeEnum.SYS_USER.getUserType(), sysUser.getUserType())) {
             sysUserExtend.setParentUserId(sysUser.getUserId());
@@ -82,9 +63,8 @@
             sysUserExtend.setUserId(sysUser.getUserId());
         }
         sysUserExtend.setFirstLevel("1");
-        //濡傛灉鏄竴绾у垎閿�鍟嗭紝杩斿洖鑷繁
+        
         List<SysUserExtend> list = sysUserExtendService.selectSysUserExtendList(sysUserExtend);
-
         if (Objects.equals(UserTypeEnum.SYS_USER.getUserType(), sysUser.getUserType())) {
             SysUserExtend userExtend = new SysUserExtend();
             userExtend.setUserId(sysUser.getUserId());
@@ -93,10 +73,7 @@
         }
         return list;
     }
-
-    /**
-     * 淇敼鐢ㄦ埛淇℃伅鎵╁睍
-     */
+    
     @GetMapping("/edit/{userId}")
     public String edit(@PathVariable("userId") Long userId, ModelMap mmap) {
         SysUserExtend sysUserExtend = sysUserExtendService.selectSysUserExtendById(userId);
@@ -108,15 +85,13 @@
         mmap.put("us", list);
         return prefix + "/edit";
     }
-
     @RequiresPermissions("exam:distributor:remove")
     @PostMapping("/remove")
     @ResponseBody
     public AjaxResult remove(String ids) {
         return toAjax(sysUserExtendService.deleteSysUserExtendByIds(ids));
     }
-
-    // 鍏嶅瘑鐧诲綍
+    
     @RequiresPermissions("exam:distributor:freelogin")
     @PostMapping("/freelogin")
     @ResponseBody
diff --git a/src/main/java/com/ots/project/exam/controller/EntDemographyInfoController.java b/src/main/java/com/ots/project/exam/controller/EntDemographyInfoController.java
index 3032586..db24ed7 100644
--- a/src/main/java/com/ots/project/exam/controller/EntDemographyInfoController.java
+++ b/src/main/java/com/ots/project/exam/controller/EntDemographyInfoController.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.controller;
-
 import com.ots.common.enums.UserTypeEnum;
 import com.ots.common.utils.poi.ExcelUtil;
 import com.ots.common.utils.security.ShiroUtils;
@@ -17,25 +16,16 @@
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.ModelAndView;
-
 import java.util.HashMap;
 import java.util.List;
 import java.util.Objects;
 
-/**
- * 浜哄彛瀛︿俊鎭疌ontroller
- *
- * @author ots
- * @date 2019-12-15
- */
 @Controller
 @RequestMapping("/exam/info")
 public class EntDemographyInfoController extends BaseController {
     private String prefix = "exam/info";
-
     @Autowired
     private IEntDemographyInfoService entDemographyInfoService;
-
     @RequiresPermissions("exam:info:view")
     @GetMapping()
     public ModelAndView info() {
@@ -48,10 +38,7 @@
         }
         return new ModelAndView(prefix + "/info", new HashMap<>());
     }
-
-    /**
-     * 鏌ヨ浜哄彛瀛︿俊鎭垪琛�
-     */
+    
     @RequiresPermissions("exam:info:list")
     @PostMapping("/list")
     @ResponseBody
@@ -60,10 +47,7 @@
         List<EntDemographyInfo> list = entDemographyInfoService.selectEntDemographyInfoList(entDemographyInfo);
         return getDataTable(list);
     }
-
-    /**
-     * 瀵煎嚭浜哄彛瀛︿俊鎭垪琛�
-     */
+    
     @RequiresPermissions("exam:info:export")
     @PostMapping("/export")
     @ResponseBody
@@ -72,18 +56,12 @@
         ExcelUtil<EntDemographyInfo> util = new ExcelUtil<EntDemographyInfo>(EntDemographyInfo.class);
         return util.exportExcel(list, "info");
     }
-
-    /**
-     * 鏂板浜哄彛瀛︿俊鎭�
-     */
+    
     @GetMapping("/add")
     public String add() {
         return prefix + "/add";
     }
-
-    /**
-     * 鏂板淇濆瓨浜哄彛瀛︿俊鎭�
-     */
+    
     @RequiresPermissions("exam:info:add")
     @Log(title = "浜哄彛瀛︿俊鎭�", businessType = BusinessType.INSERT)
     @PostMapping("/add")
@@ -91,20 +69,14 @@
     public AjaxResult addSave(EntDemographyInfo entDemographyInfo) {
         return toAjax(entDemographyInfoService.insertEntDemographyInfo(entDemographyInfo));
     }
-
-    /**
-     * 淇敼浜哄彛瀛︿俊鎭�
-     */
+    
     @GetMapping("/edit/{infoId}")
     public String edit(@PathVariable("infoId") Long infoId, ModelMap mmap) {
         EntDemographyInfo entDemographyInfo = entDemographyInfoService.selectEntDemographyInfoById(infoId);
         mmap.put("entDemographyInfo", entDemographyInfo);
         return prefix + "/edit";
     }
-
-    /**
-     * 淇敼淇濆瓨浜哄彛瀛︿俊鎭�
-     */
+    
     @RequiresPermissions("exam:info:edit")
     @Log(title = "浜哄彛瀛︿俊鎭�", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
@@ -112,10 +84,7 @@
     public AjaxResult editSave(EntDemographyInfo entDemographyInfo) {
         return toAjax(entDemographyInfoService.updateEntDemographyInfo(entDemographyInfo));
     }
-
-    /**
-     * 鍒犻櫎浜哄彛瀛︿俊鎭�
-     */
+    
     @RequiresPermissions("exam:info:remove")
     @Log(title = "浜哄彛瀛︿俊鎭�", businessType = BusinessType.DELETE)
     @PostMapping("/remove")
diff --git a/src/main/java/com/ots/project/exam/controller/EntDemographyParamController.java b/src/main/java/com/ots/project/exam/controller/EntDemographyParamController.java
index be327ff..cd4ad4d 100644
--- a/src/main/java/com/ots/project/exam/controller/EntDemographyParamController.java
+++ b/src/main/java/com/ots/project/exam/controller/EntDemographyParamController.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.controller;
-
 import com.ots.common.enums.UserTypeEnum;
 import com.ots.common.utils.poi.ExcelUtil;
 import com.ots.common.utils.security.ShiroUtils;
@@ -18,34 +17,22 @@
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
-
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 
-/**
- * 浜哄彛瀛﹀彉閲忓畾涔塁ontroller
- *
- * @author ots
- * @date 2019-12-11
- */
 @Controller
 @RequestMapping("/exam/demographyParam")
 public class EntDemographyParamController extends BaseController {
     private String prefix = "exam/demographyParam";
-
     @Autowired
     private IEntDemographyParamService entDemographyParamService;
-
     @RequiresPermissions("exam:demographyParam:view")
     @GetMapping()
     public String demographyParam() {
         return prefix + "/demographyParam";
     }
-
-    /**
-     * 鏌ヨ浜哄彛瀛﹀彉閲忓畾涔夊垪琛�
-     */
+    
     @RequiresPermissions("exam:demographyParam:list")
     @PostMapping("/list")
     @ResponseBody
@@ -55,17 +42,14 @@
         if (Objects.isNull(entDemographyParam.getUserId()) && !Objects.equals(UserTypeEnum.SYS_USER.getUserType(), sysUser.getUserType())) {
             entDemographyParam.setUserId(sysUser.getUserId());
         }
-        //浜哄彛瀛︿笉鍖哄垎鐢ㄦ埛
-        //宸茬粡淇敼涓轰紒涓氱敤鎴风殑浜哄彛瀛︿笉鑳借缃紝鍙湁涓�浠戒汉鍙e銆傜鐞嗗憳鍜屼唬鐞嗗晢鍙互淇敼銆傦紙褰撳墠闇�姹傦級锛岃�屼唬鐞嗗晢涓�у寲浜哄彛瀛︼紝涓嶆敮鎸併��
-        //涓�浠界鐞嗗憳锛屾敼鎴愪竴浠介�氱敤
+        
+        
+        
         entDemographyParam.setUserId(null);
         List<EntDemographyParam> list = entDemographyParamService.selectEntDemographyParamList(entDemographyParam);
         return getDataTable(list);
     }
-
-    /**
-     * 鏌ヨ浜哄彛瀛﹀璇█鍒楄〃
-     */
+    
     @RequiresPermissions("exam:demographyParam:list")
     @PostMapping("/listCodes")
     @ResponseBody
@@ -80,20 +64,14 @@
         List<DemographyDto> list = JsonUtil.toJsonListObject(langCodes, DemographyDto.class);
         return getDataTable(list);
     }
-
-    /**
-     * 鏌ヨ浜哄彛瀛﹀璇█鍒楄〃
-     */
+    
     @RequiresPermissions("exam:demographyParam:list")
     @PostMapping("/addListCodes")
     @ResponseBody
     public TableDataInfo addListCodes(EntDemographyParam entDemographyParam) {
         return getDataTable(new ArrayList<EntDemographyParam>());
     }
-
-    /**
-     * 瀵煎嚭浜哄彛瀛﹀彉閲忓畾涔夊垪琛�
-     */
+    
     @RequiresPermissions("exam:demographyParam:export")
     @PostMapping("/export")
     @ResponseBody
@@ -102,31 +80,23 @@
         ExcelUtil<EntDemographyParam> util = new ExcelUtil<EntDemographyParam>(EntDemographyParam.class);
         return util.exportExcel(list, "demographyParam");
     }
-
-    /**
-     * 鏂板浜哄彛瀛﹀彉閲忓畾涔�
-     */
+    
     @GetMapping("/add")
     public String add(ModelMap mmap) {
         User sysUser = ShiroUtils.getSysUser();
         mmap.put("sysUser", sysUser);
         return prefix + "/add";
     }
-
-    /**
-     * 鏂板淇濆瓨浜哄彛瀛﹀彉閲忓畾涔�
-     */
+    
     @RequiresPermissions("exam:demographyParam:add")
     @Log(title = "浜哄彛瀛﹀彉閲忓畾涔�", businessType = BusinessType.INSERT)
     @PostMapping("/add")
     @ResponseBody
     public AjaxResult addSave(EntDemographyParam entDemographyParam) {
-
         User sysUser = ShiroUtils.getSysUser();
         if (!Objects.equals(UserTypeEnum.SYS_USER.getUserType(), sysUser.getUserType())) {
             return error("鍙湁绯荤粺鐢ㄦ埛鎵嶅厑璁告坊鍔犱汉鍙e鍙橀噺锛�");
         }
-
         EntDemographyParam param = new EntDemographyParam();
         param.setParamCode(entDemographyParam.getParamCode());
         List<EntDemographyParam> entDemographyParams = entDemographyParamService.selectEntDemographyParamList(param);
@@ -135,20 +105,14 @@
         }
         return toAjax(entDemographyParamService.insertEntDemographyParam(entDemographyParam));
     }
-
-    /**
-     * 淇敼浜哄彛瀛﹀彉閲忓畾涔�
-     */
+    
     @GetMapping("/edit/{paramId}")
     public String edit(@PathVariable("paramId") Long paramId, ModelMap mmap) {
         EntDemographyParam entDemographyParam = entDemographyParamService.selectEntDemographyParamById(paramId);
         mmap.put("entDemographyParam", entDemographyParam);
         return prefix + "/edit";
     }
-
-    /**
-     * 淇敼淇濆瓨浜哄彛瀛﹀彉閲忓畾涔�
-     */
+    
     @RequiresPermissions("exam:demographyParam:edit")
     @Log(title = "浜哄彛瀛﹀彉閲忓畾涔�", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
@@ -156,10 +120,7 @@
     public AjaxResult editSave(EntDemographyParam entDemographyParam) {
         return toAjax(entDemographyParamService.updateEntDemographyParam(entDemographyParam));
     }
-
-    /**
-     * 鍒犻櫎浜哄彛瀛﹀彉閲忓畾涔�
-     */
+    
     @RequiresPermissions("exam:demographyParam:remove")
     @Log(title = "浜哄彛瀛﹀彉閲忓畾涔�", businessType = BusinessType.DELETE)
     @PostMapping("/remove")
diff --git a/src/main/java/com/ots/project/exam/controller/EntOperLogController.java b/src/main/java/com/ots/project/exam/controller/EntOperLogController.java
index c171a43..94880c9 100644
--- a/src/main/java/com/ots/project/exam/controller/EntOperLogController.java
+++ b/src/main/java/com/ots/project/exam/controller/EntOperLogController.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.controller;
-
 import java.util.List;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -19,31 +18,20 @@
 import com.ots.framework.web.page.TableDataInfo;
 import org.springframework.stereotype.Controller;
 
-/**
- * 浣跨敤娆℃暟鎿嶄綔璁板綍Controller
- * 
- * @author ots
- * @date 2020-01-19
- */
 @Controller
 @RequestMapping("/exam/entOperLog")
 public class EntOperLogController extends BaseController
 {
     private String prefix = "exam/entOperLog";
-
     @Autowired
     private IEntOperLogService entOperLogService;
-
     @RequiresPermissions("exam:entOperLog:view")
     @GetMapping()
     public String entOperLog()
     {
         return prefix + "/entOperLog";
     }
-
-    /**
-     * 鏌ヨ浣跨敤娆℃暟鎿嶄綔璁板綍鍒楄〃
-     */
+    
     @RequiresPermissions("exam:entOperLog:list")
     @PostMapping("/list")
     @ResponseBody
@@ -53,10 +41,7 @@
         List<EntOperLog> list = entOperLogService.selectEntOperLogList(entOperLog);
         return getDataTable(list);
     }
-
-    /**
-     * 瀵煎嚭浣跨敤娆℃暟鎿嶄綔璁板綍鍒楄〃
-     */
+    
     @RequiresPermissions("exam:entOperLog:export")
     @PostMapping("/export")
     @ResponseBody
@@ -66,19 +51,13 @@
         ExcelUtil<EntOperLog> util = new ExcelUtil<EntOperLog>(EntOperLog.class);
         return util.exportExcel(list, "entOperLog");
     }
-
-    /**
-     * 鏂板浣跨敤娆℃暟鎿嶄綔璁板綍
-     */
+    
     @GetMapping("/add")
     public String add()
     {
         return prefix + "/add";
     }
-
-    /**
-     * 鏂板淇濆瓨浣跨敤娆℃暟鎿嶄綔璁板綍
-     */
+    
     @RequiresPermissions("exam:entOperLog:add")
     @Log(title = "浣跨敤娆℃暟鎿嶄綔璁板綍", businessType = BusinessType.INSERT)
     @PostMapping("/add")
@@ -87,10 +66,7 @@
     {
         return toAjax(entOperLogService.insertEntOperLog(entOperLog));
     }
-
-    /**
-     * 淇敼浣跨敤娆℃暟鎿嶄綔璁板綍
-     */
+    
     @GetMapping("/edit/{logId}")
     public String edit(@PathVariable("logId") Long logId, ModelMap mmap)
     {
@@ -98,10 +74,7 @@
         mmap.put("entOperLog", entOperLog);
         return prefix + "/edit";
     }
-
-    /**
-     * 淇敼淇濆瓨浣跨敤娆℃暟鎿嶄綔璁板綍
-     */
+    
     @RequiresPermissions("exam:entOperLog:edit")
     @Log(title = "浣跨敤娆℃暟鎿嶄綔璁板綍", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
@@ -110,10 +83,7 @@
     {
         return toAjax(entOperLogService.updateEntOperLog(entOperLog));
     }
-
-    /**
-     * 鍒犻櫎浣跨敤娆℃暟鎿嶄綔璁板綍
-     */
+    
     @RequiresPermissions("exam:entOperLog:remove")
     @Log(title = "浣跨敤娆℃暟鎿嶄綔璁板綍", businessType = BusinessType.DELETE)
     @PostMapping( "/remove")
diff --git a/src/main/java/com/ots/project/exam/controller/EntTestDetailController.java b/src/main/java/com/ots/project/exam/controller/EntTestDetailController.java
index b1d8521..cb97ecb 100644
--- a/src/main/java/com/ots/project/exam/controller/EntTestDetailController.java
+++ b/src/main/java/com/ots/project/exam/controller/EntTestDetailController.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.controller;
-
 import com.ots.common.enums.UserTypeEnum;
 import com.ots.common.utils.security.ShiroUtils;
 import com.ots.framework.web.controller.BaseController;
@@ -18,28 +17,19 @@
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
-
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
 
-/**
- * entTestDetailController
- *
- * @author ots
- * @date 2020-03-01
- */
 @Controller
 @RequestMapping("/exam/entTestDetail")
 public class EntTestDetailController extends BaseController {
     private String prefix = "exam/entTestDetail";
-
     @Autowired
     private ITExamReportService examReportService;
-
     @GetMapping("/testDetail/{tokens}")
-    //    @RequiresPermissions("exam:entTestDetail:list")
+    
     public String entTestDetail(@PathVariable List<String> tokens, ModelMap mmap) {
         EntTestDetail entTestDetail = new EntTestDetail();
         entTestDetail.setToken(JsonUtil.toJsonStr(tokens));
@@ -48,11 +38,8 @@
         mmap.put("entTestDetail", entTestDetail);
         return prefix + "/entTestDetail";
     }
+    
 
-    /**
-     * 鏌ヨentTestDetail鍒楄〃
-     */
-//    @RequiresPermissions("exam:entTestDetail:list")
     @PostMapping("/list")
     @ResponseBody
     public TableDataInfo list(EntTestDetail entTestDetail) {
@@ -68,8 +55,7 @@
             if (ExamUtil.isListEmpty(questionReportList)) {
                 continue;
             }
-
-            // 閬嶅巻鍑烘瘡涓�涓猺eport
+            
             for (QuestionReport questionReport : questionReportList) {
                 EntTestDetail entTestDetailTemp = new EntTestDetail();
                 entTestDetailTemp.setPermanentId(questionReport.getPermanentId());
@@ -83,7 +69,7 @@
                 entTestDetailList.add(entTestDetailTemp);
             }
         }
-        //鎸夌収鑰楁椂闄嶅簭鎺掑垪 timeSpent
+        
         if (Objects.equals("TimeSpent",entTestDetail.getSortType())) {
             Collections.sort(entTestDetailList, new TimeSpentComparator());
         }else {
@@ -91,14 +77,9 @@
         }
         return getDataTable(entTestDetailList);
     }
-
-
-    /**
-     * 鏂板entTestDetail
-     */
+    
     @GetMapping("/add")
     public String add() {
         return prefix + "/add";
     }
-
 }
diff --git a/src/main/java/com/ots/project/exam/controller/EntTestMemberController.java b/src/main/java/com/ots/project/exam/controller/EntTestMemberController.java
index d9aecec..51373fd 100644
--- a/src/main/java/com/ots/project/exam/controller/EntTestMemberController.java
+++ b/src/main/java/com/ots/project/exam/controller/EntTestMemberController.java
@@ -1,7 +1,7 @@
 package com.ots.project.exam.controller;
-
 import com.ots.common.constant.UserConstants;
 import com.ots.common.enums.SenderType;
+import com.ots.common.enums.TestMemberStatusEnum;
 import com.ots.common.enums.TestPackageStatusEnum;
 import com.ots.common.enums.UserTypeEnum;
 import com.ots.common.utils.MessageUtils;
@@ -26,93 +26,73 @@
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
-
 import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
-
+import static com.ots.common.enums.TestMemberStatusEnum.*;
 import static com.ots.common.enums.UserTypeEnum.SYS_USER;
 
-/**
- * 鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟Controller
- *
- * @author Shawn
- * @date 2019-11-22
- */
 @Controller
 @RequestMapping("/exam/testMember")
 @Slf4j
 public class EntTestMemberController extends BaseController {
     private String prefix = "exam/testMember";
-
     @Autowired
     private IEntTestMemberService entTestMemberService;
-
     @Autowired
     private IEntTestPackageService entTestPackageService;
-
     @Autowired
     private IEntTestSendtaskService iEntTestSendtaskService;
-
     @Autowired
     private ISysUserExtendService sysUserExtendService;
-
     @Autowired
     private ITExamPaperService itExamPaperService;
     @Autowired
     private VueConfig vueConfig;
-
     @RequiresPermissions("exam:testMember:view")
     @GetMapping()
     public String testMember(ModelMap mmap) {
         memberParam(null, mmap);
         return prefix + "/testMember";
     }
-
     @GetMapping("/memberQuery")
     public String testMemberQuery(String queryType, String queryValue, ModelMap mmap) {
         memberParam(null, mmap);
         if (Objects.nonNull(queryType)) {
             if (Objects.nonNull(queryValue)) {
-                if (Objects.equals("2", queryType)) {//鎸夊鍚嶆悳绱㈡祴璇曠敤鎴�
+                if (Objects.equals("2", queryType)) {
                     mmap.put("memberNameSend", queryValue);
-                } else if (Objects.equals("3", queryType)) {//鎸夐偖绠辨悳绱㈡祴璇曠敤鎴�
+                } else if (Objects.equals("3", queryType)) {
                     mmap.put("memberEmailSend", queryValue);
-                } else if (Objects.equals("4", queryType)) {//鎸夋墜鏈哄彿鐮佹悳绱㈡祴璇曠敤鎴�
+                } else if (Objects.equals("4", queryType)) {
                     mmap.put("memberPhoneSend", queryValue);
-                } else if (Objects.equals("5", queryType)) {//鎸夊瘑鐮佹悳绱㈡祴璇曠敤鎴�
+                } else if (Objects.equals("5", queryType)) {
                     mmap.put("tokenSend", queryValue);
                 }
             }
         }
         return prefix + "/testMemberQuery";
     }
-
-
     @GetMapping("/memberDetailVerify/{testId}")
     @ResponseBody
     public AjaxResult memberDetailVerify(@PathVariable Long testId) {
         EntTestPackage entTestPackage = entTestPackageService.selectEntTestPackageById(testId);
         TExamPaper tExamPaper = itExamPaperService.selectTExamPaperById(entTestPackage.getProdId());
         if (Objects.isNull(tExamPaper)) {
-            // 鏃犳晥鐨勪骇鍝佸寘锛岃閲嶆柊閫夋嫨娴嬭瘯鍖呯殑浜у搧鍖�
+            
             return AjaxResult.error(MessageUtils.message("jsp.exam.member.invalidProductPackage"));
         }
         return AjaxResult.success();
     }
-
-    /**
-     * 鏌ヨ璇勬祴浜哄憳璇︽儏
-     */
+    
     @GetMapping("/memberDetail/{testId}")
     public String testMemberDetail(@PathVariable Long testId, ModelMap mmap) {
         memberParam(testId, mmap);
         return prefix + "/testMember";
     }
-
     public void memberParam(Long testId, ModelMap mmap) {
         User sysUser = ShiroUtils.getSysUser();
         Long userId = sysUser.getUserId();
@@ -129,10 +109,7 @@
         String[] status = {TestPackageStatusEnum.enable.getCode(), TestPackageStatusEnum.pause.getCode(), TestPackageStatusEnum.ending.getCode(), TestPackageStatusEnum.invalid.getCode()};
         mmap.put("testPackages", entTestPackageService.selectEntTestPackageListByIdAndStatusIn(userId, Arrays.asList(status)));
     }
-
-    /**
-     * 鏌ヨ鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟鍒楄〃
-     */
+    
     @RequiresPermissions("exam:testMember:list")
     @PostMapping("/list")
     @ResponseBody
@@ -154,7 +131,6 @@
         List<EntTestMember> list = entTestMemberService.selectEntTestMemberList(entTestMember);
         return getDataTable(list);
     }
-
     @PostMapping("/listTopAnswering")
     @ResponseBody
     public TableDataInfo listTopAnswering(EntTestMember entTestMember) {
@@ -163,20 +139,31 @@
         if (!SYS_USER.getUserType().equals(sysUser.getUserType())) {
             entTestMember.setUserId(sysUser.getUserId());
         }
+        List<String> recyclingStatus = Arrays.asList( TestMemberStatusEnum.completed.getCode(), timeOut.getCode());
+        entTestMember.setStatusList(recyclingStatus);
         return getDataTable(entTestMemberService.selectEntTestMemberTopList(entTestMember));
     }
-
+    @PostMapping("/listTopAnswering2")
+    @ResponseBody
+    public TableDataInfo listTopAnswering2(EntTestMember entTestMember) {
+        startPage();
+        User sysUser = ShiroUtils.getSysUser();
+        if (!SYS_USER.getUserType().equals(sysUser.getUserType())) {
+            entTestMember.setUserId(sysUser.getUserId());
+        }
+        List<String> recyclingStatus = Arrays.asList( answering.getCode());
+        entTestMember.setStatusList(recyclingStatus);
+        return getDataTable(entTestMemberService.selectEntTestMemberTopList(entTestMember));
+    }
     @PostMapping("/queryList")
     @ResponseBody
     public TableDataInfo queryList(EntTestMember entTestMember) {
         startPage();
-
         User sysUser = ShiroUtils.getSysUser();
         String userType = sysUser.getUserType();
-
         List<Long> userIds = new ArrayList<>();
         userIds.add(sysUser.getUserId());
-        //鍒嗛攢鍟嗗彲浠ョ湅鍒板垎閿�鍟嗕笅鐨勪紒涓氫俊鎭�
+        
         if (UserTypeEnum.DIS_USER.getUserType().equals(userType)) {
             SysUserExtend sysUserExtend = new SysUserExtend();
             sysUserExtend.setParentUserId(sysUser.getUserId());
@@ -186,7 +173,6 @@
                 userIds.add(extend.getUserId());
             }
         }
-
         List<EntTestMember> list;
         if (!SYS_USER.getUserType().equals(userType)) {
             entTestMember.setUserList(userIds);
@@ -194,10 +180,7 @@
         list = entTestMemberService.selectEntTestMemberQueryList(entTestMember);
         return getDataTable(list);
     }
-
-    /**
-     * 瀵煎嚭鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟鍒楄〃
-     */
+    
     @RequiresPermissions("exam:testMember:export")
     @PostMapping("/export")
     @ResponseBody
@@ -206,10 +189,7 @@
         ExcelUtil<EntTestMember> util = new ExcelUtil<EntTestMember>(EntTestMember.class);
         return util.exportExcel(list, "娴嬭瘯鐢ㄦ埛閾炬帴锛圱est Taker URLs锛�");
     }
-
-    /**
-     * 涓�閿鍑烘祴璇曞寘閲屾墍鏈夋垚鍛樼殑娴嬭瘯杩炴帴
-     */
+    
     @RequiresPermissions("exam:testMember:export")
     @PostMapping("/exportLinkTest")
     @ResponseBody
@@ -227,10 +207,7 @@
         ExcelUtil<EntTestMemberOther> util = new ExcelUtil<>(EntTestMemberOther.class);
         return util.exportExcel(collect, "娴嬭瘯鐢ㄦ埛閾炬帴锛圱est Taker URLs锛�");
     }
-
-    /**
-     * 鏂板鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟
-     */
+    
     @RequiresPermissions("exam:testMember:batchimport")
     @GetMapping("/add/{testId}")
     public String add(@PathVariable Long testId, ModelMap mmap) {
@@ -241,10 +218,7 @@
         mmap.put("testpkg", value);
         return prefix + "/add";
     }
-
-    /**
-     * 鏂板淇濆瓨鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟
-     */
+    
     @RequiresPermissions("exam:testMember:add")
     @Log(title = "鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟", businessType = BusinessType.INSERT)
     @PostMapping("/add")
@@ -252,10 +226,7 @@
     public AjaxResult addSave(EntTestMember entTestMember) {
         return toAjax(entTestMemberService.insertEntTestMember(entTestMember));
     }
-
-    /**
-     * 鏂板閭�璇风敤鎴烽偖浠跺彂閫佸垪琛�
-     */
+    
     @RequiresPermissions("exam:testMember:add")
     @Log(title = "璁板綍閭�璇风敤鎴峰彂閫佸垪琛�", businessType = BusinessType.INSERT)
     @PostMapping("/addSendTask")
@@ -263,17 +234,13 @@
     public AjaxResult addSaveEmail(SendTask sendTask) {
         return toAjax(iEntTestSendtaskService.insertEntTestSendtaskFromMemberIds(sendTask));
     }
-
-    /**
-     * 淇敼鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟
-     */
+    
     @GetMapping("/edit/{memberId}")
     public String edit(@PathVariable("memberId") Long memberId, ModelMap mmap) {
         EntTestMember entTestMember = entTestMemberService.selectEntTestMemberById(memberId);
         mmap.put("entTestMember", entTestMember);
         return prefix + "/edit";
     }
-
     @GetMapping("/send/sendSms/{memberIds}/{testId}")
     public String sendSms(@PathVariable("memberIds") String memberIds, @PathVariable("testId") Long testId, ModelMap mmap) {
         StringBuilder builder = new StringBuilder();
@@ -291,47 +258,37 @@
         processParams(memberIds, testId, mmap, builder.toString(), type);
         return prefix + "/sendSms";
     }
-
     @GetMapping("/send/sendEmail/{memberIds}/{testId}")
     public String sendEmail(@PathVariable("memberIds") String memberIds, @PathVariable("testId") Long testId, ModelMap mmap) {
-//        String defaultTemplate = "娆㈣繋鎮ㄥ弬鍔犫�滃伐浣滆涓洪棶鍗凤紒鈥濋摼鎺ュ湴鍧�锛� <a href='{url}' target='_blank'>{url}</a>\n濡傛灉涓嶈兘鐩存帴璁块棶锛岃澶嶅埗鍦板潃鍒版祻瑙堝櫒涓洿鎺ユ墦寮�銆傚鏈夌枒闂紝璇峰拰XX鑱旂郴銆�";
+
         String langType = LocaleContextHolder.getLocale().toString();
         StringBuilder builder = new StringBuilder();
-
         builder.append("浜茬埍鐨剓FullName},").append("\n<br>");
         builder.append("Dear {FullName},").append("\n<br>");
         builder.append("喙�喔`傅喔⑧笝 {FullName},").append("\n<br>");
         builder.append("\n<br>");
-
         builder.append("{Company} 閭�璇锋偍瀹屾垚涓�浠芥祴璇曪紝澶ф闇�瑕�20-25鍒嗛挓鏃堕棿銆傛偍鍙互鐩存帴鐐瑰嚮涓嬮潰鐨勯摼鎺ュ紑濮嬭娴嬭瘯銆傚鏋滀笉鑳界洿鎺ヨ闂紝璇峰鍒跺湴鍧�鍒版祻瑙堝櫒涓洿鎺ユ墦寮�銆�").append("\n<br>");
         builder.append("You've been invited to take an assessment by {Company}, which shall take about 20-25 minutes to complete. Please click the link below, or copy the link to your browser, to begin the assessment.").append("\n<br>");
         builder.append("喔勦父喔撪箘喔斷箟喔`副喔氞箑喔娻复喔嵿箖喔箟喔椸赋喙佮笟喔氞笡喔`赴喙�喔∴复喔權笀喔侧竵 {Company} 喔佮福喔膏笓喔侧箖喔娻箟喔ム复喔囙竸喙屶笖喙夃覆喔權弗喙堗覆喔囙箑喔炧阜喙堗腑喙�喔`复喙堗浮喔斷赋喙�喔權复喔權竵喔侧福 喙傕笖喔⑧竸喔膏笓喔覆喔∴覆喔`笘喔勦弗喔脆竵喔椸傅喙堗弗喔脆竾喔勦箤喔斷箟喔侧笝喔ム箞喔侧竾喙傕笖喔⑧笗喔`竾 喔福喔粪腑喔堗赴喔勦副喔斷弗喔竵喙佮弗喙夃抚喔權赋喔ム复喔囙竸喙屶箘喔涏抚喔侧竾喔氞笝喙�喔氞福喔侧抚喙屶箑喔嬥腑喔`箤喔傕腑喔囙竸喔膏笓喔佮箛喙勦笖喙�").append("\n<br>");
-
-
         builder.append("閾炬帴鍦板潃鏄細").append("\n<br>");
         builder.append("The link is:").append("\n<br>");
         builder.append("喔曕覆喔∴弗喔脆竾喔勦箤喔權傅喙�:").append("\n<br>");
         builder.append("<a href='{url}' target='_blank'>{url}</a>").append("\n<br>");
         builder.append("\n<br>");
-
         builder.append("濡傛湁鐤戦棶锛岃涓庡鏈嶈仈绯伙紝閭鏄細support@tai-online.com銆�").append("\n<br>");
         builder.append("Should you have problem assessing the above link, please contact our customer service at support@tai-online.com.").append("\n<br>");
         builder.append("喔覆喔佮竸喔膏笓喔∴傅喔涏副喔嵿斧喔侧箖喔權竵喔侧福喙�喔傕箟喔侧釜喔灌箞喔ム复喔囙竸喙屶競喙夃覆喔囙笗喙夃笝 喙傕笡喔`笖喔曕复喔斷笗喙堗腑喔澿箞喔侧涪喔氞福喔脆竵喔侧福喔ム腹喔佮竸喙夃覆喔傕腑喔囙箑喔`覆喔椸傅喙� support@tai-online.com").append("\n<br>");
         builder.append("\n<br>");
         builder.append("\n<br>");
-
         builder.append("璋㈣阿锛�").append("\n<br>");
         builder.append("All the best,").append("\n<br>");
         builder.append("喔斷箟喔о涪喔勦抚喔侧浮喙�喔勦覆喔`笧").append("\n<br>");
         builder.append("\n<br>");
-
         builder.append("{Company}").append("\n<br>");
-
         String type = SenderType.email.getType();
         processParams(memberIds, testId, mmap, builder.toString(), type);
         return prefix + "/sendEmail";
     }
-
     private void processParams(@PathVariable("memberIds") String memberIds, @PathVariable("testId") Long testId, ModelMap mmap, String defaultTemplate, String type) {
         mmap.put("memberIds", memberIds);
         mmap.put("size", memberIds.split(",").length);
@@ -345,11 +302,7 @@
         }
         mmap.put("testName", entTestPackage.getTestName() + "閭�璇烽偖浠�");
     }
-
-
-    /**
-     * 淇敼淇濆瓨鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟
-     */
+    
     @RequiresPermissions("exam:testMember:edit")
     @Log(title = "鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
@@ -357,10 +310,7 @@
     public AjaxResult editSave(EntTestMember entTestMember) {
         return toAjax(entTestMemberService.updateEntTestMember(entTestMember));
     }
-
-    /**
-     * 鍒犻櫎鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟
-     */
+    
     @RequiresPermissions("exam:testMember:remove")
     @Log(title = "鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟", businessType = BusinessType.DELETE)
     @PostMapping("/remove")
@@ -368,11 +318,8 @@
     public AjaxResult remove(String ids) {
         return toAjax(entTestMemberService.deleteEntTestMemberByIds(ids));
     }
+    
 
-    /**
-     * 鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟
-     */
-//    @RequiresPermissions("enterprise:testMember:import")
     @PostMapping("/importData/{testId}")
     @ResponseBody
     public AjaxResult importData(MultipartFile file, boolean updateSupport, @PathVariable Long testId) throws Exception {
@@ -384,16 +331,11 @@
         String message = entTestMemberService.importEntTestMember(entTestMemberList, updateSupport);
         return AjaxResult.success(message);
     }
-
-
-    /**
-     * 鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟妯℃澘涓嬭浇
-     */
+    
     @GetMapping("/importTemplate")
     @ResponseBody
     public AjaxResult importTemplate() {
         ExcelUtil<EntTestMember> util = new ExcelUtil<EntTestMember>(EntTestMember.class);
         return util.importTemplateExcel("娴嬭瘯鐢ㄦ埛锛圱est-Takers锛�");
     }
-
 }
diff --git a/src/main/java/com/ots/project/exam/controller/EntTestPackageController.java b/src/main/java/com/ots/project/exam/controller/EntTestPackageController.java
index cf80d92..cd3da43 100644
--- a/src/main/java/com/ots/project/exam/controller/EntTestPackageController.java
+++ b/src/main/java/com/ots/project/exam/controller/EntTestPackageController.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.controller;
-
 import com.ots.common.enums.UserTypeEnum;
 import com.ots.common.utils.MessageUtils;
 import com.ots.common.utils.StringUtils;
@@ -12,6 +11,7 @@
 import com.ots.framework.web.page.TableDataInfo;
 import com.ots.project.exam.domain.EntDemographyParam;
 import com.ots.project.exam.domain.EntEmailTemplate;
+import com.ots.project.exam.domain.EntTestMember;
 import com.ots.project.exam.domain.EntTestPackage;
 import com.ots.project.exam.domain.SysUserExtend;
 import com.ots.project.exam.service.*;
@@ -26,12 +26,11 @@
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
-
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
-
 import static com.ots.common.enums.UserTypeEnum.SYS_USER;
 
 /**
@@ -124,7 +123,25 @@
     @PostMapping("/export")
     @ResponseBody
     public AjaxResult export(EntTestPackage entTestPackage) {
+        User sysUser = ShiroUtils.getSysUser();
+        String userType = sysUser.getUserType();
+        List<Long> userIds = new ArrayList<>();
+        userIds.add(sysUser.getUserId());
+
+        if (UserTypeEnum.DIS_USER.getUserType().equals(userType)) {
+            SysUserExtend sysUserExtend = new SysUserExtend();
+            sysUserExtend.setParentUserId(sysUser.getUserId());
+            List<SysUserExtend> sysUserExtends = sysUserExtendService.selectSysUserExtendList(sysUserExtend);
+            for (int i = 0; i < sysUserExtends.size(); i++) {
+                SysUserExtend extend = sysUserExtends.get(i);
+                userIds.add(extend.getUserId());
+            }
+        }
         List<EntTestPackage> list = entTestPackageService.selectEntTestPackageList(entTestPackage);
+        if (!SYS_USER.getUserType().equals(userType)) {
+
+            list = list.stream().filter(p -> userIds.contains(p.getUserId())).collect(Collectors.toList());
+        }
         ExcelUtil<EntTestPackage> util = new ExcelUtil<EntTestPackage>(EntTestPackage.class);
         return util.exportExcel(list, "test_package");
     }
@@ -188,10 +205,8 @@
     public String edit(@PathVariable("id") Long id, ModelMap mmap) {
         EntTestPackage entTestPackage = entTestPackageService.selectEntTestPackageById(id);
         mmap.put("entTestPackage", entTestPackage);
-
         EntDemographyParam entDemographyParam = new EntDemographyParam();
         List<EntDemographyParam> list = entDemographyParamService.selectEntDemographyParamList(entDemographyParam);
-
         String paramCodes = entTestPackage.getParamCodes();
         /**
          * 榛樿鍏ㄩ儴涓篺alse
diff --git a/src/main/java/com/ots/project/exam/controller/EntTestSendtaskController.java b/src/main/java/com/ots/project/exam/controller/EntTestSendtaskController.java
index f0c7d6e..29f293a 100644
--- a/src/main/java/com/ots/project/exam/controller/EntTestSendtaskController.java
+++ b/src/main/java/com/ots/project/exam/controller/EntTestSendtaskController.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.controller;
-
 import com.ots.common.enums.UserTypeEnum;
 import com.ots.common.utils.poi.ExcelUtil;
 import com.ots.common.utils.security.ShiroUtils;
@@ -16,39 +15,26 @@
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
-
 import java.util.List;
 import java.util.Objects;
 
-/**
- * 璇勬祴閭�璇峰彂閫佷换鍔ontroller
- *
- * @author ots
- * @date 2019-12-19
- */
 @Controller
 @RequestMapping("/exam/sendtask")
 public class EntTestSendtaskController extends BaseController {
     private String prefix = "exam/sendtask";
-
     @Autowired
     private IEntTestSendtaskService entTestSendtaskService;
-
     @RequiresPermissions("exam:sendtask:view")
     @GetMapping()
     public String sendtask() {
         return prefix + "/sendtask";
     }
-
     @GetMapping("/condition/{testId}")
     public String hrSendlog(@PathVariable Long testId,ModelMap mmap) {
         mmap.put("testId",testId);
         return prefix + "/sendtask";
     }
-
-    /**
-     * 鏌ヨ璇勬祴閭�璇峰彂閫佷换鍔″垪琛�
-     */
+    
     @RequiresPermissions("exam:sendtask:list")
     @PostMapping("/list")
     @ResponseBody
@@ -64,10 +50,7 @@
         List<EntTestSendtask> list = entTestSendtaskService.selectEntTestSendtaskList(entTestSendtask);
         return getDataTable(list);
     }
-
-    /**
-     * 瀵煎嚭璇勬祴閭�璇峰彂閫佷换鍔″垪琛�
-     */
+    
     @RequiresPermissions("exam:sendtask:export")
     @PostMapping("/export")
     @ResponseBody
@@ -76,18 +59,12 @@
         ExcelUtil<EntTestSendtask> util = new ExcelUtil<EntTestSendtask>(EntTestSendtask.class);
         return util.exportExcel(list, "sendtask");
     }
-
-    /**
-     * 鏂板璇勬祴閭�璇峰彂閫佷换鍔�
-     */
+    
     @GetMapping("/add")
     public String add() {
         return prefix + "/add";
     }
-
-    /**
-     * 鏂板淇濆瓨璇勬祴閭�璇峰彂閫佷换鍔�
-     */
+    
     @RequiresPermissions("exam:sendtask:add")
     @Log(title = "璇勬祴閭�璇峰彂閫佷换鍔�", businessType = BusinessType.INSERT)
     @PostMapping("/add")
@@ -95,20 +72,14 @@
     public AjaxResult addSave(EntTestSendtask entTestSendtask) {
         return toAjax(entTestSendtaskService.insertEntTestSendtask(entTestSendtask));
     }
-
-    /**
-     * 淇敼璇勬祴閭�璇峰彂閫佷换鍔�
-     */
+    
     @GetMapping("/edit/{id}")
     public String edit(@PathVariable("id") Long id, ModelMap mmap) {
         EntTestSendtask entTestSendtask = entTestSendtaskService.selectEntTestSendtaskById(id);
         mmap.put("entTestSendtask", entTestSendtask);
         return prefix + "/edit";
     }
-
-    /**
-     * 淇敼淇濆瓨璇勬祴閭�璇峰彂閫佷换鍔�
-     */
+    
     @RequiresPermissions("exam:sendtask:edit")
     @Log(title = "璇勬祴閭�璇峰彂閫佷换鍔�", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
@@ -116,10 +87,7 @@
     public AjaxResult editSave(EntTestSendtask entTestSendtask) {
         return toAjax(entTestSendtaskService.updateEntTestSendtask(entTestSendtask));
     }
-
-    /**
-     * 鍒犻櫎璇勬祴閭�璇峰彂閫佷换鍔�
-     */
+    
     @RequiresPermissions("exam:sendtask:remove")
     @Log(title = "璇勬祴閭�璇峰彂閫佷换鍔�", businessType = BusinessType.DELETE)
     @PostMapping("/remove")
diff --git a/src/main/java/com/ots/project/exam/controller/EntTestSendtaskMailController.java b/src/main/java/com/ots/project/exam/controller/EntTestSendtaskMailController.java
index daca0fb..50a3e5c 100644
--- a/src/main/java/com/ots/project/exam/controller/EntTestSendtaskMailController.java
+++ b/src/main/java/com/ots/project/exam/controller/EntTestSendtaskMailController.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.controller;
-
 import java.util.List;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -19,31 +18,20 @@
 import com.ots.framework.web.page.TableDataInfo;
 import org.springframework.stereotype.Controller;
 
-/**
- * 閭閫�淇¤褰旵ontroller
- * 
- * @author ots
- * @date 2020-03-09
- */
 @Controller
 @RequestMapping("/exam/mail")
 public class EntTestSendtaskMailController extends BaseController
 {
     private String prefix = "exam/mail";
-
     @Autowired
     private IEntTestSendtaskMailService entTestSendtaskMailService;
-
     @RequiresPermissions("exam:mail:view")
     @GetMapping()
     public String mail()
     {
         return prefix + "/mail";
     }
-
-    /**
-     * 鏌ヨ閭閫�淇¤褰曞垪琛�
-     */
+    
     @RequiresPermissions("exam:mail:list")
     @PostMapping("/list")
     @ResponseBody
@@ -53,10 +41,7 @@
         List<EntTestSendtaskMail> list = entTestSendtaskMailService.selectEntTestSendtaskMailList(entTestSendtaskMail);
         return getDataTable(list);
     }
-
-    /**
-     * 瀵煎嚭閭閫�淇¤褰曞垪琛�
-     */
+    
     @RequiresPermissions("exam:mail:export")
     @PostMapping("/export")
     @ResponseBody
@@ -66,19 +51,13 @@
         ExcelUtil<EntTestSendtaskMail> util = new ExcelUtil<EntTestSendtaskMail>(EntTestSendtaskMail.class);
         return util.exportExcel(list, "mail");
     }
-
-    /**
-     * 鏂板閭閫�淇¤褰�
-     */
+    
     @GetMapping("/add")
     public String add()
     {
         return prefix + "/add";
     }
-
-    /**
-     * 鏂板淇濆瓨閭閫�淇¤褰�
-     */
+    
     @RequiresPermissions("exam:mail:add")
     @Log(title = "閭閫�淇¤褰�", businessType = BusinessType.INSERT)
     @PostMapping("/add")
@@ -87,10 +66,7 @@
     {
         return toAjax(entTestSendtaskMailService.insertEntTestSendtaskMail(entTestSendtaskMail));
     }
-
-    /**
-     * 淇敼閭閫�淇¤褰�
-     */
+    
     @GetMapping("/edit/{id}")
     public String edit(@PathVariable("id") Long id, ModelMap mmap)
     {
@@ -98,10 +74,7 @@
         mmap.put("entTestSendtaskMail", entTestSendtaskMail);
         return prefix + "/edit";
     }
-
-    /**
-     * 淇敼淇濆瓨閭閫�淇¤褰�
-     */
+    
     @RequiresPermissions("exam:mail:edit")
     @Log(title = "閭閫�淇¤褰�", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
@@ -110,10 +83,7 @@
     {
         return toAjax(entTestSendtaskMailService.updateEntTestSendtaskMail(entTestSendtaskMail));
     }
-
-    /**
-     * 鍒犻櫎閭閫�淇¤褰�
-     */
+    
     @RequiresPermissions("exam:mail:remove")
     @Log(title = "閭閫�淇¤褰�", businessType = BusinessType.DELETE)
     @PostMapping( "/remove")
diff --git a/src/main/java/com/ots/project/exam/controller/EnterpriseController.java b/src/main/java/com/ots/project/exam/controller/EnterpriseController.java
index ac5a52a..95afff2 100644
--- a/src/main/java/com/ots/project/exam/controller/EnterpriseController.java
+++ b/src/main/java/com/ots/project/exam/controller/EnterpriseController.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.controller;
-
 import com.ots.common.utils.StringUtils;
 import com.ots.common.utils.security.ShiroUtils;
 import com.ots.framework.aspectj.lang.annotation.Log;
@@ -23,30 +22,19 @@
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
-
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 
-/**
- * @Created with IntelliJ IDEA.
- * @User: liguosheng
- * @Date: 2019/11/22
- * @Time: 10:40
- * @description: 浼佷笟鐢ㄦ埛
- */
 @Controller
 @RequestMapping("/exam/enterprise")
 public class EnterpriseController extends BaseController {
-
     private String prefix = "exam/enterprise";
     @Autowired
     private ISysUserExtendService sysUserExtendService;
-
     @Autowired
     private CountCalculateService calculate;
-
     @RequiresPermissions("exam:enterprise:view")
     @GetMapping()
     public String enterprise(String parentUserId, String userName, ModelMap mmap) {
@@ -61,16 +49,11 @@
         if (Objects.nonNull(userName)) {
             mmap.put("userNameSend", userName);
         }
-
         List<SysUserExtend> list = sysUserExtendService.selectSysUserExtendList(sysUserExtend);
-
         mmap.put("us", list);
         return prefix + "/enterprise";
     }
-
-    /**
-     * 鏌ヨ鐢ㄦ埛淇℃伅鎵╁睍鍒楄〃
-     */
+    
     @RequiresPermissions("exam:enterprise:list")
     @PostMapping("/list")
     @ResponseBody
@@ -85,10 +68,7 @@
         List<SysUserExtend> list = sysUserExtendService.selectSysUserExtendList(sysUserExtend);
         return getDataTable(list);
     }
-
-    /**
-     * 鏂板鐢ㄦ埛淇℃伅鎵╁睍
-     */
+    
     @GetMapping("/add")
     public String add(ModelMap mmap) {
         User sysUser = ShiroUtils.getSysUser();
@@ -102,10 +82,7 @@
         mmap.put("us", list);
         return prefix + "/add";
     }
-
-    /**
-     * 淇敼鐢ㄦ埛淇℃伅鎵╁睍
-     */
+    
     @GetMapping("/edit/{userId}")
     public String edit(@PathVariable("userId") Long userId, ModelMap mmap) {
         SysUserExtend sysUserExtend = sysUserExtendService.selectSysUserExtendById(userId);
@@ -121,10 +98,7 @@
         mmap.put("us", list);
         return prefix + "/edit";
     }
-
-    /**
-     * 娴嬭瘯浜烘暟璁剧疆
-     */
+    
     @RequiresPermissions("exam:enterprise:editUserTimes")
     @GetMapping("/operUseTimes/{userId}")
     public String operUseTimes(@PathVariable("userId") Long userId, ModelMap mmap) {
@@ -142,15 +116,11 @@
             });
             systemScore = list.stream().mapToInt(p -> p.intValue()).sum();
         }
-
         mmap.put("totalNumberOfTesters", systemScore);
-//		鏄剧ず璇ヤ紒涓氬彲鐢ㄦ祴璇曚汉鏁帮紝鎬绘祴璇曚汉鏁�
+
         return prefix + "/operUseTimes";
     }
-
-    /**
-     * 鍏呭�兼祴璇曚汉鏁�
-     */
+    
     @RequiresPermissions("exam:enterprise:editUserTimes")
     @Log(title = "鍏呭�兼祴璇曚汉鏁�", businessType = BusinessType.UPDATE)
     @PostMapping("/operUseTimes/edit/{userId}/{addNum}")
@@ -158,15 +128,23 @@
     public AjaxResult editSave(@PathVariable("userId") Long userId, @PathVariable("addNum") Long addNum) {
         return toAjax(sysUserExtendService.updateTestNum(userId, addNum));
     }
-
+    @PostMapping("/checkUser")
+    @ResponseBody
+    public AjaxResult checkUser() {
+        User sysUser = ShiroUtils.getSysUser();
+        int result = 0;
+        if ("02".equals(sysUser.getUserType())) {
+            result = 1;
+        }
+        return toAjax(result);
+    }
     @RequiresPermissions("exam:enterprise:remove")
     @PostMapping("/remove")
     @ResponseBody
     public AjaxResult remove(String ids) {
         return toAjax(sysUserExtendService.deleteSysUserExtendByIds(ids));
     }
-
-    // 鍏嶅瘑鐧诲綍
+    
     @RequiresPermissions("exam:enterprise:freelogin")
     @PostMapping("/freelogin")
     @ResponseBody
@@ -185,7 +163,6 @@
             return error(msg);
         }
     }
-
     @PostMapping("/freeloginback")
     @ResponseBody
     public AjaxResult freeLoginBack(Long userId) {
@@ -204,7 +181,6 @@
         }
     }
 
-//    @RequiresPermissions("exam:extend:resetpwd")
     @Log(title = "鐢ㄦ埛閲嶇疆瀵嗙爜", businessType = BusinessType.UPDATE)
     @PostMapping("/resetpwd")
     @ResponseBody
diff --git a/src/main/java/com/ots/project/exam/controller/MainIndexController.java b/src/main/java/com/ots/project/exam/controller/MainIndexController.java
index d7524da..f02e75f 100644
--- a/src/main/java/com/ots/project/exam/controller/MainIndexController.java
+++ b/src/main/java/com/ots/project/exam/controller/MainIndexController.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.controller;
-
 import com.ots.common.utils.security.ShiroUtils;
 import com.ots.framework.web.controller.BaseController;
 import com.ots.framework.web.page.TableDataInfo;
@@ -9,22 +8,12 @@
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
-
 import java.util.Objects;
 
-/**
- * 棣栭〉灞曠ず鍐呭
- */
 @Controller
 @RequestMapping("/mail/index")
 public class MainIndexController extends BaseController {
-
-    /**
-     * 鏈�杩�50涓畬鎴愭祴璇曡褰�
-     *
-     * @param sysUserExtend
-     * @return
-     */
+    
     @PostMapping("/listCompleteTestRecord")
     @ResponseBody
     public TableDataInfo listCompleteTestRecord(SysUserExtend sysUserExtend) {
@@ -38,14 +27,10 @@
         if (Objects.nonNull(sysUserExtend.getParentUserTempId())) {
             sysUserExtend.setParentUserId(sysUserExtend.getParentUserTempId());
         }
-//        List<SysUserExtend> list = sysUserExtendService.selectSysUserExtendList(sysUserExtend);
+
         return getDataTable(null);
     }
-
-    /**
-     * @param sysUserExtend
-     * @return
-     */
+    
     @PostMapping("/listAnsweringTestRecord")
     @ResponseBody
     public TableDataInfo listAnsweringTestRecord(SysUserExtend sysUserExtend) {
@@ -59,16 +44,10 @@
         if (Objects.nonNull(sysUserExtend.getParentUserTempId())) {
             sysUserExtend.setParentUserId(sysUserExtend.getParentUserTempId());
         }
-//        List<SysUserExtend> list = sysUserExtendService.selectSysUserExtendList(sysUserExtend);
+
         return getDataTable(null);
     }
-
-    /**
-     * 鏈�杩戝垱寤虹殑20涓祴璇曞寘
-     *
-     * @param sysUserExtend
-     * @return
-     */
+    
     @PostMapping("/listRecentlyCreatedTestPackage")
     @ResponseBody
     public TableDataInfo listRecentlyCreatedTestPackage(SysUserExtend sysUserExtend) {
@@ -82,7 +61,7 @@
         if (Objects.nonNull(sysUserExtend.getParentUserTempId())) {
             sysUserExtend.setParentUserId(sysUserExtend.getParentUserTempId());
         }
-//        List<SysUserExtend> list = sysUserExtendService.selectSysUserExtendList(sysUserExtend);
+
         return getDataTable(null);
     }
 }
diff --git a/src/main/java/com/ots/project/exam/controller/SysUserExtendController.java b/src/main/java/com/ots/project/exam/controller/SysUserExtendController.java
index ed81f52..ede4716 100644
--- a/src/main/java/com/ots/project/exam/controller/SysUserExtendController.java
+++ b/src/main/java/com/ots/project/exam/controller/SysUserExtendController.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.controller;
-
 import com.ots.common.constant.UserConstants;
 import com.ots.common.enums.UserTypeEnum;
 import com.ots.common.utils.MessageUtils;
@@ -22,29 +21,19 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
-
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 
-/**
- * 鐢ㄦ埛淇℃伅鎵╁睍Controller
- *
- * @author ots
- * @date 2019-11-20
- */
 @Controller
 @RequestMapping("/exam/extend")
 public class SysUserExtendController extends BaseController {
     private String prefix = "exam/extend";
-
     @Autowired
     private IUserService userService;
-
     @Autowired
     private ISysUserExtendService sysUserExtendService;
-
     @RequiresPermissions("exam:extend:view")
     @GetMapping()
     public ModelAndView extend() {
@@ -61,28 +50,19 @@
         map.put("sysUserExtend", sysUserExtend == null ? new SysUserExtend() : sysUserExtend);
         return new ModelAndView(prefix + "/extend", map);
     }
-
-    /**
-     * 灞�閮ㄥ埛鏂�
-     *
-     * @param model
-     * @return
-     */
+    
     @RequestMapping("/refresh")
     public String localRefresh(Model model) {
         User user = ShiroUtils.getSysUser();
         SysUserExtend sysUserExtend = sysUserExtendService.selectSysUserExtendById(user.getUserId());
         model.addAttribute("user", user);
         model.addAttribute("sysUserExtend", sysUserExtend);
-        // "test"鏄痶est.html鐨勫悕锛�
-        // "table_refresh"鏄痶est.html涓渶瑕佸埛鏂扮殑閮ㄥ垎鏍囧織,
-        // 鍦ㄦ爣绛鹃噷鍔犲叆锛歵h:fragment="table_refresh"
+        
+        
+        
         return prefix + "/extend::table_refresh";
     }
-
-    /**
-     * 淇敼淇濆瓨鐢ㄦ埛淇℃伅鎵╁睍
-     */
+    
     @RequiresPermissions("exam:extend:edit")
     @Log(title = "鐢ㄦ埛淇℃伅鎵╁睍", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
@@ -90,11 +70,7 @@
     public AjaxResult editSave(SysUserExtend sysUserExtend) {
         return toAjax(sysUserExtendService.updateSysUserExtend(sysUserExtend));
     }
-
-
-    /**
-     * 鏌ヨ鐢ㄦ埛淇℃伅鎵╁睍鍒楄〃
-     */
+    
     @RequiresPermissions("exam:extend:list")
     @PostMapping("/list")
     @ResponseBody
@@ -112,7 +88,6 @@
         List<SysUserExtend> list = sysUserExtendService.selectSysUserExtendList(sysUserExtend);
         return getDataTable(list);
     }
-
     @PostMapping("/list2")
     @ResponseBody
     public TableDataInfo list2(SysUserExtend sysUserExtend) {
@@ -129,10 +104,7 @@
         List<SysUserExtend> list = sysUserExtendService.selectSysUserExtendList(sysUserExtend);
         return getDataTable(list);
     }
-
-    /**
-     * 鏂板淇濆瓨鐢ㄦ埛淇℃伅鎵╁睍
-     */
+    
     @RequiresPermissions("exam:extend:add")
     @Log(title = "鐢ㄦ埛淇℃伅鎵╁睍", businessType = BusinessType.INSERT)
     @PostMapping("/add")
diff --git a/src/main/java/com/ots/project/exam/controller/SysUserPaperController.java b/src/main/java/com/ots/project/exam/controller/SysUserPaperController.java
index 48eeade..2f113d3 100644
--- a/src/main/java/com/ots/project/exam/controller/SysUserPaperController.java
+++ b/src/main/java/com/ots/project/exam/controller/SysUserPaperController.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.controller;
-
 import com.ots.common.enums.UserTypeEnum;
 import com.ots.common.utils.security.ShiroUtils;
 import com.ots.framework.web.controller.BaseController;
@@ -21,66 +20,48 @@
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
-
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
 
-/**
- * 鐢ㄦ埛浜у搧Controller
- *
- * @author ots
- * @date 2020-03-19
- */
 @Controller
 @RequestMapping("/exam/paper")
 public class SysUserPaperController extends BaseController {
     private String prefix = "exam/userpaper";
-
     @Autowired
     private IUserService userService;
-
     @Autowired
     private ISysUserPaperService userPaperService;
-
     @Autowired
     private ITExamPaperService tExamPaperService;
-
     @Autowired
     private ISysUserExtendService sysUserExtendService;
-
     @Autowired
     private IExamUtilService examUtilService;
-
     @Autowired
     private ITReportTemplateService reportTemplateService;
-
     @Autowired
     private ITReportTemplateService itReportTemplateService;
-
     @GetMapping("/dis")
     public String dispaper() {
         return prefix + "/userPaper";
     }
-
     @PostMapping("/list")
     @ResponseBody
     public TableDataInfo list(User user) {
         User sysUser = ShiroUtils.getSysUser();
-        //鏌ユ壘鎵�鏈夌殑闄や簡绠$悊鍛樼殑鐢ㄦ埛
+        
         user.setStatus("0");
         List<User> users = new ArrayList<User>();
-
-        // 绯荤粺鐢ㄦ埛杩斿洖鎵�鏈夌敤鎴�
+        
         if (Objects.equals(UserTypeEnum.SYS_USER.getUserType(), sysUser.getUserType())) {
             startPage();
             user.setUserTypes(Arrays.asList(UserTypeEnum.DIS_USER.getUserType(), UserTypeEnum.ENT_USER.getUserType()));
             users = userService.selectUserList(user);
         }
-
-        //濡傛灉鏄垎閿�鍟嗙敤鎴凤紝杩斿洖鍒嗛攢鍟嗕笅鎵�灞炰紒涓氱敤鎴�
+        
         if (Objects.equals(UserTypeEnum.DIS_USER.getUserType(), sysUser.getUserType())) {
             user.setUserTypes(Arrays.asList(UserTypeEnum.DIS_USER.getUserType(), UserTypeEnum.ENT_USER.getUserType()));
             SysUserExtend sysUserExtend = new SysUserExtend();
@@ -95,7 +76,21 @@
         }
         return getDataTable(users);
     }
-
+    @PostMapping("/reportTemplateText/{arr}")
+    @ResponseBody
+    public String reportTemplateText(@PathVariable String arr) {
+        String[] split = arr.split(",");
+        List<String> templateIds = Arrays.asList(split);
+        List<TReportTemplate> reportTemplates = reportTemplateService.getReportTemplates(ShiroUtils.getSysUser());
+        StringBuilder reportTemplateText = new StringBuilder();
+        for (int i = 0; i < reportTemplates.size(); i++) {
+            TReportTemplate tReportTemplate = reportTemplates.get(i);
+            if (templateIds.contains(String.valueOf(tReportTemplate.getId()))) {
+                reportTemplateText.append(tReportTemplate.getReportType()).append(",");
+            }
+        }
+        return reportTemplateText.substring(0,reportTemplateText.length()-1);
+    }
     @PostMapping("/listCodes")
     @ResponseBody
     public TableDataInfo listCodes(User user) {
@@ -107,7 +102,7 @@
         SysUserPaper sysUserPaper = new SysUserPaper();
         sysUserPaper.setUserId(user.getUserId());
         List<SysUserPaper> sysUserPapers = userPaperService.selectSysUserPaperList(sysUserPaper);
-        //鍙栫湡瀹炲悕绉�
+        
         sysUserPapers.stream().forEach(p -> {
                     p.setProdName(examUtilService.getLangOrLocalLangString("", p.getProdName()));
                     List<TReportTemplate> tReportTemplateList = itReportTemplateService.selectTReportTemplates(p.getReportTemplateId());
@@ -118,14 +113,11 @@
                     }
                 }
         );
-//        //鎶ュ憡妯℃澘缂栫爜  t_report_template
-//        mmap.put("templateList", reportTemplateService.getReportTemplates(ShiroUtils.getSysUser()));
+
+
         return getDataTable(sysUserPapers);
     }
-
-    /**
-     * 淇敼淇濆瓨浜哄彛瀛﹀彉閲忓畾涔�
-     */
+    
     @PostMapping("/edit")
     @ResponseBody
     public AjaxResult editSave(SysUserPaper sysUserPaper) {
@@ -137,20 +129,53 @@
         });
         return toAjax(1);
     }
-
-    /**
-     * 淇敼鐢ㄦ埛
-     */
+    
     @GetMapping("/edit/{userId}")
     public String edit(@PathVariable("userId") Long userId, ModelMap mmap) {
         List<TExamPaper> list = tExamPaperService.getUserPapers();
-        //鍙栫湡瀹炲悕绉�
+        
         list.stream().forEach(p ->
                 p.setName(examUtilService.getLangOrLocalLangString("", p.getName()))
         );
         mmap.put("userId", userId);
         mmap.put("userProds", list);
-        mmap.put("templateList", reportTemplateService.getReportTemplates(ShiroUtils.getSysUser()));
+        List<TReportTemplate> reportTemplates = reportTemplateService.getReportTemplates(ShiroUtils.getSysUser());
+        List<TReportTemplate> collect = reportTemplates.stream().filter(v -> {
+            String reportType = v.getReportType();
+            String[] split = reportType.split("-");
+            List<String> strings = Arrays.asList(split);
+            TExamPaper tExamPaper = list.get(0);
+            String name = tExamPaper.getName();
+            if (Objects.equals("鐫块偦", name)) {
+                name = "RuiLin";
+            }
+            if (strings.contains(name)) {
+                return true;
+            }
+            return false;
+        }).collect(Collectors.toList());
+        mmap.put("templateList", collect);
+        mmap.put("templateListAll", reportTemplates);
         return prefix + "/edit";
     }
+    
+    @RequestMapping("/filterTemplate/{prodName}")
+    @ResponseBody
+    public List<TReportTemplate> filterTemplate(@PathVariable("prodName") String prodName) {
+        if (Objects.equals("鐫块偦", prodName)) {
+            prodName = "RuiLin";
+        }
+        List<String> prods = Arrays.asList(prodName);
+        List<TReportTemplate> reportTemplates = reportTemplateService.getReportTemplates(ShiroUtils.getSysUser());
+        List<TReportTemplate> collect = reportTemplates.stream().filter(v -> {
+            String reportType = v.getReportType();
+            String[] split = reportType.split("-");
+            List<String> strings = Arrays.asList(split);
+            if (strings.contains(prods.get(0))) {
+                return true;
+            }
+            return false;
+        }).collect(Collectors.toList());
+        return collect;
+    }
 }
diff --git a/src/main/java/com/ots/project/exam/controller/TExamLevelController.java b/src/main/java/com/ots/project/exam/controller/TExamLevelController.java
index 3e8e1f0..169950d 100644
--- a/src/main/java/com/ots/project/exam/controller/TExamLevelController.java
+++ b/src/main/java/com/ots/project/exam/controller/TExamLevelController.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.controller;
-
 import com.ots.common.utils.StringUtils;
 import com.ots.common.utils.poi.ExcelUtil;
 import com.ots.framework.aspectj.lang.annotation.Log;
@@ -20,44 +19,31 @@
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
-
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
-/**
- * 闂嵎绫诲瀷Controller
- *
- * @author ots
- * @date 2019-12-15
- */
 @Controller
 @RequestMapping("/exam/level")
 public class TExamLevelController extends BaseController {
     private String prefix = "exam/level";
-
     @Autowired
     private ITExamLevelService tExamLevelService;
-
     @Autowired
     private DictService dictService;
-
     @RequiresPermissions("exam:level:view")
     @GetMapping()
     public String level() {
         return prefix + "/level";
     }
-
-    /**
-     * 鏌ヨ闂嵎绫诲瀷鍒楄〃
-     */
+    
     @RequiresPermissions("exam:level:list")
     @PostMapping("/list")
     @ResponseBody
     public TableDataInfo list(TExamLevel tExamLevel) {
         startPage();
         List<TExamLevel> list = tExamLevelService.selectTExamLevelList(tExamLevel);
-        // 缈昏瘧涓�涓� Item Template
+        
         List<DictData> questionnaireTemplate = dictService.getType("questionnaire_template");
         Map<String, String> dictMap = questionnaireTemplate.stream().collect(Collectors.toMap(DictData::getDictValue, DictData::getDictLabel));
         list.stream().forEach(t -> {
@@ -65,10 +51,7 @@
         });
         return getDataTable(list);
     }
-
-    /**
-     * 瀵煎嚭闂嵎绫诲瀷鍒楄〃
-     */
+    
     @RequiresPermissions("exam:level:export")
     @PostMapping("/export")
     @ResponseBody
@@ -77,10 +60,7 @@
         ExcelUtil<TExamLevel> util = new ExcelUtil<TExamLevel>(TExamLevel.class);
         return util.exportExcel(list, "level");
     }
-
-    /**
-     * 鏂板闂嵎绫诲瀷
-     */
+    
     @GetMapping("/add")
     public String add(String uuid,ModelMap mmap) {
     	if(StringUtils.isNotBlank(uuid)){
@@ -90,10 +70,7 @@
 		}
         return prefix + "/add";
     }
-
-    /**
-     * 鏂板淇濆瓨闂嵎绫诲瀷
-     */
+    
     @RequiresPermissions("exam:level:add")
     @Log(title = "闂嵎绫诲瀷", businessType = BusinessType.INSERT)
     @PostMapping("/add")
@@ -105,20 +82,14 @@
 		}
 		return toAjax(tExamLevelService.insertTExamLevel(tExamLevel));
     }
-
-    /**
-     * 淇敼闂嵎绫诲瀷
-     */
+    
     @GetMapping("/edit/{id}")
     public String edit(@PathVariable("id") Long id, ModelMap mmap) {
         TExamLevel tExamLevel = tExamLevelService.selectTExamLevelById(id);
         mmap.put("tExamLevel", tExamLevel);
         return prefix + "/edit";
     }
-
-    /**
-     * 淇敼淇濆瓨闂嵎绫诲瀷
-     */
+    
     @RequiresPermissions("exam:level:edit")
     @Log(title = "闂嵎绫诲瀷", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
@@ -126,10 +97,7 @@
     public AjaxResult editSave(TExamLevel tExamLevel) {
         return toAjax(tExamLevelService.updateTExamLevel(tExamLevel));
     }
-
-    /**
-     * 鍒犻櫎闂嵎绫诲瀷
-     */
+    
     @RequiresPermissions("exam:level:remove")
     @Log(title = "闂嵎绫诲瀷", businessType = BusinessType.DELETE)
     @PostMapping("/remove")
diff --git a/src/main/java/com/ots/project/exam/controller/TExamPaperController.java b/src/main/java/com/ots/project/exam/controller/TExamPaperController.java
index 3fe7a04..96b2286 100644
--- a/src/main/java/com/ots/project/exam/controller/TExamPaperController.java
+++ b/src/main/java/com/ots/project/exam/controller/TExamPaperController.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.controller;
-
 import com.alibaba.fastjson.JSONArray;
 import com.ots.common.utils.StringUtils;
 import com.ots.common.utils.bean.BeanUtils;
@@ -39,7 +38,6 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.multipart.MultipartFile;
-
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -47,46 +45,29 @@
 import java.util.Objects;
 import java.util.stream.Collectors;
 
-/**
- * 浜у搧鍖呭垪琛–ontroller
- *
- * @author ots
- * @date 2019-11-20
- */
 @Controller
 @RequestMapping("/exam/product")
 public class TExamPaperController extends BaseController {
     private String prefix = "exam/product";
-
     @Autowired
     private ITExamPaperService tExamPaperService;
-
     @Autowired
     private ITTextContentService tTextContentService;
-
     @Autowired
     private ITExamLevelService itExamLevelService;
-
     @Autowired
     private IDictDataService dictDataService;
-
     @Autowired
     private IExamUtilService examUtilService;
-
     @Autowired
     private ITReportTemplateService reportTemplateService;
-
     protected final static ModelMapper modelMapper = ModelMapperSingle.Instance();
-
     @RequiresPermissions("exam:product:view")
     @GetMapping()
     public String product() {
         return prefix + "/product";
     }
-
-    /**
-     * 鏌ヨ浜у搧鍖呭垪琛ㄥ垪琛�
-     */
+    
     @RequiresPermissions("exam:product:list")
     @PostMapping("/list")
     @ResponseBody
@@ -95,10 +76,7 @@
         List<TExamPaper> list = tExamPaperService.selectTExamPaperList(tExamPaper);
         return getDataTable(list);
     }
-
-    /**
-     * 瀵煎嚭浜у搧鍖呭垪琛ㄥ垪琛�
-     */
+    
     @RequiresPermissions("exam:product:export")
     @PostMapping("/export")
     @ResponseBody
@@ -107,23 +85,17 @@
         ExcelUtil<TExamPaper> util = new ExcelUtil<TExamPaper>(TExamPaper.class);
         return util.exportExcel(list, "product");
     }
-
-    /**
-     * 鏂板浜у搧鍖呭垪琛�
-     */
+    
     @GetMapping("/add/{id}")
     public String add(@PathVariable("id") Long id, ModelMap mmap) {
-        // 杩欏彞浠g爜涓轰簡鎻愮ず浼犺繃鏉ョ殑id鏄痩evelId
+        
         Long levelId = id;
         TExamLevel tExamLevel = itExamLevelService.selectTExamLevelById(levelId);
         mmap.put("tExamLevel", tExamLevel);
         mmap.put("templateList", reportTemplateService.getReportTemplates(ShiroUtils.getSysUser()));
         return prefix + "/add-" + tExamLevel.getQuestionTemplateId();
     }
-
-    /**
-     * 鏂板淇濆瓨浜у搧鍖呭垪琛�
-     */
+    
     @RequiresPermissions("exam:product:add")
     @Log(title = "浜у搧鍖呭垪琛�", businessType = BusinessType.INSERT)
     @PostMapping("/add")
@@ -131,27 +103,21 @@
     public AjaxResult addSave(TExamPaper tExamPaper) {
         return toAjax(tExamPaperService.insertTExamPaper(tExamPaper));
     }
-
-    /**
-     * 淇敼浜у搧鍖呭垪琛�
-     */
+    
     @GetMapping("/edit/{id}")
     public String edit(@PathVariable("id") Long id, ModelMap mmap) {
         TExamPaper tExamPaper = tExamPaperService.selectTExamPaperById(id);
-        //鑾峰彇棰樼洰鐨勫唴瀹瑰睍绀�
+        
         List<ExamPaperTitleItem> examPaperTitleItemList = tExamPaperService.getExamPaperTitleContent(tExamPaper);
         mmap.put("examPaperTitleItemList", examPaperTitleItemList);
         mmap.put("templateList", reportTemplateService.getReportTemplates(ShiroUtils.getSysUser()));
         mmap.put("tExamPaper", tExamPaper);
-        // 璺冲埌鍏蜂綋鐨勯〉闈�
+        
         TExamLevel tExamLevel = itExamLevelService.selectTExamLevelById(tExamPaper.getLevelId());
         mmap.put("tExamLevel", tExamLevel);
         return prefix + "/edit-" + tExamLevel.getQuestionTemplateId();
     }
-
-    /**
-     * 淇敼淇濆瓨浜у搧鍖呭垪琛�
-     */
+    
     @RequiresPermissions("exam:product:edit")
     @Log(title = "浜у搧鍖呭垪琛�", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
@@ -159,10 +125,7 @@
     public AjaxResult editSave(TExamPaper tExamPaper) {
         return toAjax(tExamPaperService.updateTExamPaper(tExamPaper));
     }
-
-    /**
-     * 鍒犻櫎浜у搧鍖呭垪琛�
-     */
+    
     @RequiresPermissions("exam:product:remove")
     @Log(title = "浜у搧鍖呭垪琛�", businessType = BusinessType.DELETE)
     @PostMapping("/remove")
@@ -170,17 +133,13 @@
     public AjaxResult remove(String ids) {
         return toAjax(tExamPaperService.deleteTExamPaperByIds(ids));
     }
-
-    /**
-     * 閫夐鐩紝ABCD鐨勯鐩�
-     */
+    
     @GetMapping("/addQuestion/{levelId}/{langType}")
     public String addQuestion(@PathVariable("levelId") Long levelId, @PathVariable("langType") String langType, ModelMap mmap) {
         mmap.put("level", levelId);
         mmap.put("langType", langType);
         return prefix + "/add_question";
     }
-
     @GetMapping("/addIntelligenceTitleQuestion/{levelId}/{langType}")
     public String addIntelligenceTitleQuestion(@PathVariable("levelId") Long levelId, @PathVariable("langType") String langType, ModelMap mmap) {
         mmap.put("level", levelId);
@@ -188,7 +147,6 @@
         mmap.put("template", "intelligence_title");
         return prefix + "/add_question";
     }
-
     @GetMapping("/addIntelligenceQuestion/{levelId}/{langType}")
     public String addIntelligenceQuestion(@PathVariable("levelId") Long levelId, @PathVariable("langType") String langType, ModelMap mmap) {
         mmap.put("level", levelId);
@@ -196,78 +154,57 @@
         mmap.put("template", "intelligence");
         return prefix + "/add_question";
     }
-
-    /**
-     * 閫夐鐩紝ABCD鐨勯鐩�
-     */
+    
     @GetMapping("/addTitle/{questionTemplateId}/{langType}")
     public String addTitle(@PathVariable("questionTemplateId") String questionTemplateId, @PathVariable("langType") String langType, ModelMap mmap) {
         mmap.put("questionTemplateId", questionTemplateId);
         mmap.put("langType", langType);
         return prefix + "/add_title";
     }
-
-    /**
-     * 鏂板娴嬭瘯鍖呯鐞�
-     */
+    
     @GetMapping("/getProdList")
     public String getProdList(String langType,String testType,ModelMap mmap) {
         mmap.put("langType", langType);
         mmap.put("testType", testType);
         return prefix + "/prodtree";
     }
-
-    /**
-     * 鍔犺浇瀛楀吀鍒楄〃鏍�
-     */
+    
     @GetMapping("/treeData/{langType}/{testType}")
     @ResponseBody
     public List<Ztree> treeData(@PathVariable("langType") String langType,@PathVariable("testType") String testType) {
         System.out.println(langType);
         List<Ztree> ztrees = tExamPaperService.selectProdTree(testType);
-        // 澶氳瑷�缈昏瘧
+        
         ztrees.stream().forEach(ztree -> {
             ztree.setName(ExamUtil.getLangString(langType, ztree.getName()));
         });
         return ztrees;
     }
-
-    /**
-     * 鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟
-     */
+    
     @RequiresPermissions("exam:product:import")
     @PostMapping("/importJobData/{langType}/{levelId}/{levelName}")
     @ResponseBody
     public AjaxResult importJobData(MultipartFile file, @PathVariable("langType") String langType, @PathVariable("levelId") Long levelId, @PathVariable("levelName") String leveltName, boolean updateSupport) throws Exception {
         ExcelUtil<QuestionJobImport> util = new ExcelUtil<>(QuestionJobImport.class);
         QuestionJobImport questionJobImport = util.importJobExcel(file.getInputStream(),levelId, leveltName, langType);
-
         List<TQuestion> questionList = questionJobImport.getQuestionList();
-
-        // 澶ч鐩job_title
+        
         for (TQuestion tQuestion : questionList) {
             tQuestion.setTemplate("job_title");
         }
-        // 缈昏瘧澶氳瑷�
-        // 鏇存柊銆佸叆搴撻�昏緫, 澶氳瑷�
+        
+        
         updateBatchImportData(langType, JsonUtil.toJsonStr(questionJobImport.getMultilingualList()), questionList);
-
         if (StringUtils.isEmpty(questionJobImport.getLangType())) {
             return AjaxResult.success(questionJobImport);
         }
-
         if (Objects.isNull(questionJobImport) || Objects.isNull(questionJobImport.getQuestionList()) || questionJobImport.getQuestionList().isEmpty()) {
             return AjaxResult.error("瀵煎叆澶辫触");
         }
-
-        // 缈昏瘧澶氳瑷�
+        
         return AjaxResult.success(questionJobImport);
     }
-
-
-    /**
-     * 鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟妯℃澘涓嬭浇
-     */
+    
     @RequiresPermissions("exam:product:view")
     @GetMapping("/importTemplate")
     @ResponseBody
@@ -275,10 +212,7 @@
         ExcelUtil<QuestionJobImport> util = new ExcelUtil<>(QuestionJobImport.class);
         return util.importTemplateQuestionExcel("JAQ棰樼洰妯℃澘.xlsx");
     }
-
-    /**
-     * 鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟妯℃澘涓嬭浇
-     */
+    
     @RequiresPermissions("exam:product:view")
     @GetMapping("/importMAQTemplate")
     @ResponseBody
@@ -286,10 +220,7 @@
         ExcelUtil<QuestionPersonalityImport> util = new ExcelUtil<>(QuestionPersonalityImport.class);
         return util.importTemplateQuestionExcel("MAQ棰樼洰妯℃澘.xlsx");
     }
-
-    /**
-     * 鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟
-     */
+    
     @RequiresPermissions("exam:product:import")
     @PostMapping("/importMAQData/{langType}")
     @ResponseBody
@@ -299,23 +230,18 @@
         if (StringUtils.isEmpty(questionPersonalityImport.getLangType())) {
             return AjaxResult.success(questionPersonalityImport);
         }
-
         List<TQuestion> questionList = questionPersonalityImport.getQuestionList();
-
-        // 鏍¢獙鏈夋晥鎬�
+        
         if (Objects.isNull(questionPersonalityImport) || Objects.isNull(questionList) || questionList.isEmpty()) {
             return AjaxResult.error("瀵煎叆澶辫触");
         }
-        // 鏇存柊銆佸叆搴撻�昏緫, 澶氳瑷�
+        
         updateBatchImportData(langType, JsonUtil.toJsonStr(questionPersonalityImport.getMultilingualList()), questionList);
-
         return AjaxResult.success(questionPersonalityImport);
     }
-
-    // 鏇存柊銆佸叆搴撻�昏緫, 澶氳瑷�
+    
     private void updateBatchImportData(@PathVariable String langType, String multilinguag, List<TQuestion> questionList) {
         tExamPaperService.updateInsertQuestion(questionList, multilinguag);
-
         for (TQuestion tQuestion : questionList) {
             tQuestion.setTitle(examUtilService.getLangOrLocalLangString(langType, tQuestion.getTitle()));
             List<String> selectInput = tQuestion.getSelectInput();
@@ -328,23 +254,14 @@
             }
         }
     }
-
-    /**
-     * 鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟妯℃澘涓嬭浇
-     */
+    
     @RequiresPermissions("exam:product:changeDeleted")
     @PostMapping("/changeDeleted")
     @ResponseBody
     public AjaxResult changeDeleted(TExamPaper tExamPaper) {
         return toAjax(tExamPaperService.updateDeleted(tExamPaper));
     }
-
-    /**
-     * 浜у搧鍖呮柊澧炶瑷�鍏ュ彛锛屼骇鍝佸寘澶氳瑷�娣诲姞鍏ュ彛
-     * @param uuid
-     * @param mmap
-     * @return
-     */
+    
     @GetMapping("/addLang/{uuid}/{langType}")
     public String addLang(@PathVariable("uuid") Long uuid, @PathVariable("langType") String langType, ModelMap mmap) {
         TExamPaper tExamPaper = tExamPaperService.selectTExamPaperById(uuid);
@@ -352,27 +269,21 @@
         tExamPaper.setLangName(getDitcByType("lang_type", langType));
         tExamPaper.setUuid(uuid);
         tExamPaper.setOperatingLanguage("addLang");
-
-        //鑾峰彇棰樼洰鐨勫唴瀹瑰睍绀�
+        
         List<ExamPaperTitleItem> examPaperTitleItemList = getExamPaperTitleItems(mmap, tExamPaper);
-
         mmap.put("templateList", reportTemplateService.getReportTemplates(ShiroUtils.getSysUser()));
         mmap.put("tExamPaper", tExamPaper);
-        // 璺冲埌鍏蜂綋鐨勯〉闈�
+        
         TExamLevel tExamLevel = itExamLevelService.selectTExamLevelById(tExamPaper.getLevelId());
         mmap.put("tExamLevel", tExamLevel);
-        // 鎵归噺瀵煎叆鐨勬椂鍊欏睍绀洪鐩殑缁村害锛孞ob鎵嶉渶瑕侊紝缁村害閮芥槸涓�鏍风殑
+        
         nmapPutQuestionItem(mmap, examPaperTitleItemList);
-        // 澶氳瑷�娓呯悊鏁版嵁
+        
         tExamPaper.setName("");
         tExamPaper.setGuide("");
-
         return prefix + "/edit-" + tExamLevel.getQuestionTemplateId();
     }
-
-    /**
-     * 鏍规嵁璇█淇敼棰樼洰, 椤甸潰涓婄殑鏂板璇█璋冪敤锛屼骇鍝佸寘淇敼澶氳瑷�棰樼洰鍏ュ彛
-     */
+    
     @GetMapping("/editLang/{uuid}/{langType}")
     public String editLang(@PathVariable("uuid") Long uuid, @PathVariable("langType") String langType, ModelMap mmap) {
         TExamPaper tExamPaper = tExamPaperService.selectTExamPaperById(uuid);
@@ -380,44 +291,33 @@
         tExamPaper.setId(uuid);
         tExamPaper.setLangType(langType);
         tExamPaper.setOperatingLanguage("editLang");
-
-        // 澶氳瑷�
+        
         tExamPaper.setName(ExamUtil.getStringByLang(tExamPaper.getLangType(), tExamPaper.getName()));
-
         tExamPaper.setGuide(ExamUtil.getStringByLang(tExamPaper.getLangType(), tExamPaper.getGuide()));
-
         tExamPaper.setLangName(getDitcByType("lang_type", langType));
         List<ExamPaperTitleItem> examPaperTitleItemList = getExamPaperTitleItems(mmap, tExamPaper);
-
-        // 鎵归噺瀵煎叆鐨勬椂鍊欏睍绀洪鐩殑缁村害锛孞ob鎵嶉渶瑕侊紝缁村害閮芥槸涓�鏍风殑
+        
         nmapPutQuestionItem(mmap, examPaperTitleItemList);
-
-        // 澶氳瑷�
+        
         mmap.put("tExamPaper", tExamPaper);
         mmap.put("templateList", reportTemplateService.getReportTemplates(ShiroUtils.getSysUser()));
-        // 璺冲埌鍏蜂綋鐨勯〉闈�
+        
         TExamLevel tExamLevel = itExamLevelService.selectTExamLevelById(tExamPaper.getLevelId());
         mmap.put("tExamLevel", tExamLevel);
-
         return prefix + "/edit-" + tExamLevel.getQuestionTemplateId();
     }
-
     private List<ExamPaperTitleItem> getExamPaperTitleItems(ModelMap mmap, TExamPaper tExamPaper) {
-        //鑾峰彇棰樼洰鐨勫唴瀹瑰睍绀�
+        
         List<ExamPaperTitleItem> examPaperTitleItemList = tExamPaperService.getExamPaperTitleContent(tExamPaper);
-        // begin 閲嶅棰樼洰
+        
         List<ExamPaperTitleItem> contentOriginalList = getExamDuplicateTitleItems(tExamPaper, examPaperTitleItemList);
-        // end 閲嶅棰樼洰
+        
         mmap.put("examPaperTitleItemList", contentOriginalList);
-
         nmapPutQuestionItem(mmap, examPaperTitleItemList);
-
         return examPaperTitleItemList;
     }
-
     private List<ExamPaperTitleItem> getExamDuplicateTitleItems(TExamPaper tExamPaper, List<ExamPaperTitleItem> examPaperTitleItemList) {
         List<ExamPaperTitleItem> contentOriginalList = JSONArray.parseArray(tExamPaper.getContent(), ExamPaperTitleItem.class);
-
         Map<Integer, QuestionItem> questionItemMap = new HashMap<>();
         for (ExamPaperTitleItem examPaperTitleItem : examPaperTitleItemList) {
             List<QuestionItem> questionItems = examPaperTitleItem.getQuestionItems();
@@ -425,12 +325,11 @@
                 questionItemMap.put(questionItem.getQuestionId(), questionItem);
             }
         }
-
         for (ExamPaperTitleItem examPaperTitleItem : contentOriginalList) {
             List<QuestionItem> questionItems = examPaperTitleItem.getQuestionItems();
             for (QuestionItem questionItem : questionItems) {
                 Integer partOrder = questionItem.getPartOrder();
-                // 澶嶅埗棰樼洰閲岄潰涓嶅瓨鍦ㄧ殑灞炴�у悗鍐嶅鍒�
+                
                 QuestionItem questionItemSource = questionItemMap.get(questionItem.getId());
                 questionItemSource.setTemplate(questionItem.getTemplate());
                 questionItemSource.setParentQuestionId(questionItem.getParentQuestionId());
@@ -440,30 +339,26 @@
         }
         return contentOriginalList;
     }
-
     private void nmapPutQuestionItem(ModelMap mmap, List<ExamPaperTitleItem> examPaperTitleItemList) {
-        // 鎵归噺瀵煎叆鐨勬椂鍊欏睍绀洪鐩殑缁村害锛孞ob鎵嶉渶瑕侊紝缁村害閮芥槸涓�鏍风殑
+        
         List<QuestionItem> questionItems = examPaperTitleItemList.get(0).getQuestionItems();
         mmap.put("questionItems", questionItems);
         mmap.put("parts", JsonUtil.toJsonStr(examPaperTitleItemList.get(0).getParts()));
     }
-
     @GetMapping("/deleteLang/{uuid}/{langType}")
     @ResponseBody
     public AjaxResult deleteLang(@PathVariable("uuid") Long uuid, @PathVariable("langType") String langType) {
-        // 澶氳瑷�鐨勬椂鍊檜uid灏辨槸id
+        
         TExamPaper tExamPaper = tExamPaperService.selectTExamPaperById(uuid);
         tExamPaper.setLangType(langType);
         return toAjax(tExamPaperService.deleteProductContent(tExamPaper));
     }
-
     private String getDitcByType(String type, String dictType) {
         List<DictData> langTypeList = dictDataService.selectDictDataByType(type);
         Map<String, String> lanTypeMap = langTypeList.stream().collect(Collectors.toMap(DictData::getDictValue, DictData::getDictLabel));
         return lanTypeMap.get(dictType);
     }
-
-    // 寮瑰嚭璇█
+    
     @GetMapping("/langType/{id}")
     public String getLangType(@PathVariable("id") Long id,  ModelMap mmap) {
         List<DictData> dictDataList = tExamPaperService.getType(id);
diff --git a/src/main/java/com/ots/project/exam/controller/TExamReportController.java b/src/main/java/com/ots/project/exam/controller/TExamReportController.java
index 96f28b2..764dafe 100644
--- a/src/main/java/com/ots/project/exam/controller/TExamReportController.java
+++ b/src/main/java/com/ots/project/exam/controller/TExamReportController.java
@@ -65,6 +65,7 @@
 import org.apache.commons.collections.map.HashedMap;
 import org.apache.poi.ss.usermodel.BorderStyle;
 import org.apache.poi.ss.usermodel.IndexedColors;
+import org.apache.poi.xssf.streaming.SXSSFSheet;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.jetbrains.annotations.NotNull;
 import org.slf4j.Logger;
@@ -123,6 +124,7 @@
     private IExamUtilService iExamUtilService;
     @Autowired
     private IEntTestPackageService entTestPackageService;
+
     @Autowired
     private ITExamPaperService itExamPaperService;
 
@@ -535,7 +537,7 @@
         setSysHeadToEnglish(tExamReportList, reportResultMap, reportType);
 
         // 鍐欐枃浠�
-        writeFile(fileNameResult, reportResultMap);
+        writeMutiFile(fileNameResult, reportResultMap);
 
         // 杩斿洖涓嬭浇
         return AjaxResult.success(examUtilService.getLangOrLocalLangString("", tExamReportList.get(0).getProductName()) + "_DateReport.xlsx");
@@ -635,13 +637,31 @@
 
     private void writeFile(String fileNameResult, Map<String, List<List<Object>>> reportResultMap) {
         for (Map.Entry<String, List<List<Object>>> entryReport : reportResultMap.entrySet()) {
-            ExcelWriter writer = cn.hutool.poi.excel.ExcelUtil.getWriter(fileNameResult, entryReport.getKey());
+            ExcelWriter writer = cn.hutool.poi.excel.ExcelUtil.getBigWriter(fileNameResult, entryReport.getKey());
             StyleSet styleSet = writer.getStyleSet();
             styleSet.setBorder(BorderStyle.NONE, IndexedColors.OLIVE_GREEN);
             writer.write(entryReport.getValue(), true);
+            SXSSFSheet sheet = (SXSSFSheet) writer.getSheet();
+            sheet.trackAllColumnsForAutoSizing();
+            writer.autoSizeColumnAll();
             writer.close();
         }
-
+    }
+    private void writeMutiFile(String fileNameResult, Map<String, List<List<Object>>> reportResultMap) {
+        FileUtil.del(fileNameResult);
+        ExcelWriter writer = null;
+        for (Map.Entry<String, List<List<Object>>> entryReport : reportResultMap.entrySet()) {
+            if (Objects.isNull(writer)) {
+                writer = new ExcelWriter(fileNameResult,entryReport.getKey());
+            }
+            writer.setSheet(entryReport.getKey());
+            StyleSet styleSet = writer.getStyleSet();
+            styleSet.setBorder(BorderStyle.NONE, IndexedColors.OLIVE_GREEN);
+            writer.write(entryReport.getValue(), true);
+            writer.autoSizeColumnAll();
+            writer.setSheet(entryReport.getKey());
+        }
+        writer.close();
     }
 
     private void setReportResultList(List<Object> demographyHeadSystem, List<List<Object>> reportResultList, Map<String, Object> textMap) {
@@ -677,6 +697,10 @@
     private String getReportType(TExamReport tExamReport) {
         String reportType = ReportTypeEnum.RuiLin.getCode();
         TExamPaper tExamPaper = itExamPaperService.selectTExamPaperById(tExamReport.getProductId());
+        tExamPaper.getName();
+        if (tExamPaper.getName().indexOf("鐫块偦")>0 || tExamPaper.getName().indexOf("RuiLin")>0 ) {
+            return reportType;
+        }
         List<TReportTemplate> tReportTemplateList = itReportTemplateService.selectTReportTemplates(tExamPaper.getReportTemplateId());
         for (TReportTemplate tReportTemplate : tReportTemplateList) {
             if (Objects.isNull(tReportTemplate.getReportType())) {
@@ -698,10 +722,6 @@
     }
 
     private void setDataReportHeader(DataReportHead dataReportHead, Map<String, List<List<Object>>> reportResultMap, String reportType, boolean isRight) {
-        //濡傛灉涓虹┖閲嶆柊鑾峰彇
-        if(Objects.isNull(reportType)){
-
-        }
         if (Objects.equals(reportType, ReportTypeEnum.RuiLin.getCode())) {
             setDataReportHeaderRuilin(dataReportHead, reportResultMap, isRight);
         } else if (Objects.equals(reportType, ReportTypeEnum.CAQ.getCode())) {
diff --git a/src/main/java/com/ots/project/exam/controller/TLibraryCodeController.java b/src/main/java/com/ots/project/exam/controller/TLibraryCodeController.java
index 9cd2c97..83ba114 100644
--- a/src/main/java/com/ots/project/exam/controller/TLibraryCodeController.java
+++ b/src/main/java/com/ots/project/exam/controller/TLibraryCodeController.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.controller;
-
 import com.ots.common.utils.file.FileUploadUtils;
 import com.ots.common.utils.poi.ExcelUtil;
 import com.ots.framework.aspectj.lang.annotation.Log;
@@ -23,43 +22,31 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.multipart.MultipartFile;
-
 import java.io.IOException;
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
 
-/**
- * 鎶ュ憡瀛楀吀Controller
- *
- * @author ots
- * @date 2020-03-24
- */
 @Controller
 @Slf4j
 @RequestMapping("/exam/librarycode")
 public class TLibraryCodeController extends BaseController {
     private String prefix = "exam/librarycode";
-
     @Autowired
     private ITLibraryCodeService tLibraryCodeService;
-
     @RequiresPermissions("exam:librarycode:view")
     @GetMapping()
     public String librarycode() {
         return prefix + "/librarycode";
     }
-
-    /**
-     * 鏌ヨ鎶ュ憡瀛楀吀鍒楄〃
-     */
+    
     @RequiresPermissions("exam:librarycode:list")
     @PostMapping("/list")
     @ResponseBody
     public TableDataInfo list(TLibraryCode tLibraryCode) {
         startPage();
         List<TLibraryCode> list = tLibraryCodeService.selectTLibraryCodeList(tLibraryCode);
-        // 灞曠ず鍥剧墖
+        
         for (TLibraryCode tLibraryCodeTemp : list) {
             if (StringUtils.isNotEmpty(tLibraryCodeTemp.getIcon())) {
                 tLibraryCodeTemp.setIcon(EssConfig.getHttpProfilePath() +"/upload" + tLibraryCodeTemp.getIcon());
@@ -67,10 +54,7 @@
         }
         return getDataTable(list);
     }
-
-    /**
-     * 瀵煎嚭鎶ュ憡瀛楀吀鍒楄〃
-     */
+    
     @RequiresPermissions("exam:librarycode:export")
     @PostMapping("/export")
     @ResponseBody
@@ -79,18 +63,12 @@
         ExcelUtil<TLibraryCode> util = new ExcelUtil<TLibraryCode>(TLibraryCode.class);
         return util.exportExcel(list, "librarycode");
     }
-
-    /**
-     * 鏂板鎶ュ憡瀛楀吀
-     */
+    
     @GetMapping("/add")
     public String add() {
         return prefix + "/add";
     }
-
-    /**
-     * 鏂板淇濆瓨鎶ュ憡瀛楀吀
-     */
+    
     @RequiresPermissions("exam:librarycode:add")
     @Log(title = "鎶ュ憡瀛楀吀", businessType = BusinessType.INSERT)
     @PostMapping("/add")
@@ -104,10 +82,7 @@
         CacheServiceFactory.getInstance().reLoad();
         return result;
     }
-
-    /**
-     * 淇敼鎶ュ憡瀛楀吀
-     */
+    
     @GetMapping("/edit/{id}")
     public String edit(@PathVariable("id") Long id, ModelMap mmap) {
         TLibraryCode tLibraryCode = tLibraryCodeService.selectTLibraryCodeById(id);
@@ -115,10 +90,7 @@
         mmap.put("tLibraryCode", tLibraryCode);
         return prefix + "/edit";
     }
-
-    /**
-     * 淇敼淇濆瓨鎶ュ憡瀛楀吀
-     */
+    
     @RequiresPermissions("exam:librarycode:edit")
     @Log(title = "鎶ュ憡瀛楀吀", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
@@ -128,15 +100,11 @@
             String ufi = FileUploadUtils.upload(EssConfig.getUploadPath(), tLibraryCode.getIconFile());
             tLibraryCode.setIcon(ufi.split("profile/upload")[1]);
         }
-
         AjaxResult result = toAjax(tLibraryCodeService.updateTLibraryCode(tLibraryCode));
         CacheServiceFactory.getInstance().reLoad();
         return result;
     }
-
-    /**
-     * 鍒犻櫎鎶ュ憡瀛楀吀
-     */
+    
     @RequiresPermissions("exam:librarycode:remove")
     @Log(title = "鎶ュ憡瀛楀吀", businessType = BusinessType.DELETE)
     @PostMapping("/remove")
@@ -144,7 +112,6 @@
     public AjaxResult remove(String ids) {
         return toAjax(tLibraryCodeService.deleteTLibraryCodeByIds(ids));
     }
-
     @Log(title = "鎶ュ憡瀛楀吀瀵煎叆", businessType = BusinessType.IMPORT)
     @RequiresPermissions("exam:librarycode:import")
     @PostMapping("/importData")
@@ -167,18 +134,16 @@
         List<TLibraryCode> list = libraryCodes.stream().filter(item -> {
             return StringUtils.isNotBlank(item.getLibraryCode());
         }).collect(Collectors.toList());
-
         String message = tLibraryCodeService.importLibraryCodes(list, updateSupport);
         CacheServiceFactory.getInstance().reLoad();
         return AjaxResult.success(message);
     }
-
     @RequiresPermissions("exam:librarycode:import")
     @GetMapping("/importTemplate")
     @ResponseBody
     public AjaxResult importTemplate() {
         ExcelUtil<TLibraryCode> util = new ExcelUtil<>(TLibraryCode.class);
-        AjaxResult result = util.importTemplateExcel("鎶ュ憡瀛楀吀鏁版嵁");
+        AjaxResult result = util.importTemplateExcel("鎶ュ憡瀛楀吀鍐呭(Report Library Entries)");
         CacheServiceFactory.getInstance().reLoad();
         return result;
     }
diff --git a/src/main/java/com/ots/project/exam/controller/TQuestionController.java b/src/main/java/com/ots/project/exam/controller/TQuestionController.java
index e0f66aa..871d918 100644
--- a/src/main/java/com/ots/project/exam/controller/TQuestionController.java
+++ b/src/main/java/com/ots/project/exam/controller/TQuestionController.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.controller;
-
 import com.alibaba.fastjson.JSONObject;
 import com.ots.common.utils.MessageUtils;
 import com.ots.common.utils.StringUtils;
@@ -34,53 +33,35 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.multipart.MultipartFile;
-
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.stream.Collectors;
-
 import static com.ots.common.enums.ExamPaperQuestion.permanentIdDuplicate;
 
-/**
- * 棰樼洰鍒楄〃Controller
- *
- * @author Shawn
- * @date 2019-11-20
- */
 @Controller
 @RequestMapping("/exam/question")
 public class TQuestionController extends BaseController {
     private static final Logger log = LoggerFactory.getLogger(TQuestionController.class);
     private String prefix = "exam/question";
-
     @Autowired
     private ITQuestionService tQuestionService;
-
     @Autowired
     private ITSubjectService subjectService;
-
     @Autowired
     private ITExamLevelService itExamLevelService;
-
     @Autowired
     private IDictDataService dictDataService;
-
     @Autowired
     private DictService dictService;
-
-
     @RequiresPermissions("exam:question:view")
     @GetMapping()
     public String question() {
         return prefix + "/question";
     }
-
-    /**
-     * 鏌ヨ棰樼洰鍒楄〃鍒楄〃
-     */
+    
     @RequiresPermissions("exam:question:list")
     @PostMapping("/list")
     @ResponseBody
@@ -89,11 +70,7 @@
         List<TQuestion> list = tQuestionService.selectTQuestionList(tQuestion);
         return getDataTable(list);
     }
-
-
-    /**
-     * 涓撻棬涓簆roduct鐨刟dd_question.html 椤甸潰鎻愪緵鏌ヨ
-     */
+    
     @RequiresPermissions("exam:question:list")
     @PostMapping("/listForProductAddQuestion")
     @ResponseBody
@@ -105,30 +82,20 @@
         List<TQuestion> list = tQuestionService.selectTQuestionsForProductAddQuestion(tQuestion);
         return getDataTable(list);
     }
-
-    /**
-     * 鏂板棰樼洰鍒楄〃
-     * 鍙傛暟 id鏄� t_subject 琛ㄧ殑id
-     */
+    
     @GetMapping("/add/{id}")
     public String add(@PathVariable("id") Long id, ModelMap mmap) {
-        // 杩欏彞浠g爜涓轰簡鎻愮ず浼犺繃鏉ョ殑id鏄痩evelid
-        /*
-         * 鍘绘帀棰樼洰缁村害t_subject鍚庡彧鏌ヨt_exam_level 琛紝寰楀埌瀛楀吀閲岄潰鐨�3绫婚棶鍗锋ā鏉匡紝鍒嗗埆璺宠浆鍒�3涓笉鍚岀殑妯℃澘椤甸潰锛屽垎鍒槸
-         * add-job.html,add-personality.html,add-intelligence.html
-         */
-        // 杩欏彞浠g爜涓轰簡鎻愮ず浼犺繃鏉ョ殑id鏄痩evelId
+        
+        
+        
         Long levelId = id;
         TExamLevel tExamLevel = itExamLevelService.selectTExamLevelById(levelId);
-        // 璇█閫夐」鏄剧ず褰撳墠鍥介檯鍖栫殑閭g
+        
         mmap.put("tExamLevel", tExamLevel);
         mmap.put("langType", dictService.getLangType(LocaleContextHolder.getLocale().toString()));
         return prefix + "/add-" + tExamLevel.getQuestionTemplateId();
     }
-
-    /**
-     * 鏂板淇濆瓨棰樼洰鍒楄〃
-     */
+    
     @RequiresPermissions("exam:question:add")
     @Log(title = "棰樼洰鍒楄〃", businessType = BusinessType.INSERT)
     @PostMapping("/add")
@@ -140,10 +107,7 @@
         }
         return toAjax(resultNum);
     }
-
-    /**
-     * 淇敼棰樼洰鍒楄〃
-     */
+    
     @GetMapping("/edit/{id}")
     public String edit(@PathVariable("id") Long id, ModelMap mmap) {
         TQuestion tQuestion = tQuestionService.selectTQuestionById(id);
@@ -153,45 +117,35 @@
         tQuestion.setLangName(lanTypeMap.get(tQuestion.getLangType()));
         return prefix + "/edit-" + tExamLevel.getQuestionTemplateId();
     }
-
     private TExamLevel getEditQuestion(ModelMap mmap, TQuestion tQuestion) {
         QuestionObject questionObject = JSONObject.parseObject(tQuestion.getContent(), QuestionObject.class);
-
         if (ExamUtil.isListNotEmpty(questionObject.getQuestionItemObjects())) {
             setChioceAndSelectInput(tQuestion, questionObject);
         }
-
         tQuestion.setAnalyze(questionObject.getAnalyze());
-        // 澶氳瑷�鐗堟湰
+        
         Map<String, String> titleMap = JsonUtil.toJsonObject(questionObject.getTitleContent(), HashMap.class);
         tQuestion.setTitle(titleMap.get(tQuestion.getLangType()));
-
         TExamLevel tExamLevel = itExamLevelService.selectTExamLevelById(tQuestion.getLevelId());
         mmap.put("tExamLevel", tExamLevel);
         mmap.put("tQuestion", tQuestion);
         return tExamLevel;
     }
-
     private void setChioceAndSelectInput(TQuestion tQuestion, QuestionObject questionObject) {
-        //閫夐」鐨勭涓�涓緭鍏ユ鐨勫唴瀹�
+        
         List<String> choiceInputList = questionObject.getQuestionItemObjects().stream().map(i -> {
             return i.getPrefix();
         }).collect(Collectors.toList());
-
-        //閫夐」鐨勭浜屼釜杈撳叆妗嗙殑鍐呭
+        
         List<String> selectInput = questionObject.getQuestionItemObjects().stream().map(i -> {
-            // 澶氳瑷�鐗堟湰灞曠ず
+            
             Map<String, String> content = JsonUtil.toJsonObject(i.getContent(), HashMap.class);
             return content.get(tQuestion.getLangType());
         }).collect(Collectors.toList());
-
         tQuestion.setChoiceInput(choiceInputList);
         tQuestion.setSelectInput(selectInput);
     }
-
-    /**
-     * 淇敼淇濆瓨棰樼洰鍒楄〃
-     */
+    
     @RequiresPermissions("exam:question:edit")
     @Log(title = "棰樼洰鍒楄〃", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
@@ -199,10 +153,7 @@
     public AjaxResult editSave(TQuestion tQuestion) {
         return toAjax(tQuestionService.updateTQuestion(tQuestion));
     }
-
-    /**
-     * 鍒犻櫎棰樼洰鍒楄〃
-     */
+    
     @RequiresPermissions("exam:question:remove")
     @Log(title = "棰樼洰鍒楄〃", businessType = BusinessType.DELETE)
     @PostMapping("/remove")
@@ -210,10 +161,7 @@
     public AjaxResult remove(String ids) {
         return toAjax(tQuestionService.deleteTQuestionByIds(ids));
     }
-
-    /**
-     * 鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟
-     */
+    
     @RequiresPermissions("enterprise:question:import")
     @PostMapping("/importData")
     @ResponseBody
@@ -226,11 +174,7 @@
         String message = tQuestionService.insertImportQuestion(excelList);
         return AjaxResult.success(message);
     }
-
-
-    /**
-     * 鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟妯℃澘涓嬭浇
-     */
+    
     @RequiresPermissions("enterprise:question:view")
     @GetMapping("/importTemplate")
     @ResponseBody
@@ -238,18 +182,16 @@
         ExcelUtil<QuestionJobImport> util = new ExcelUtil<QuestionJobImport>(QuestionJobImport.class);
         return util.importTemplateExcel("棰樼洰妯$増");
     }
-
     @GetMapping("/addLang/{uuid}")
     public String addLang(@PathVariable("uuid") Long uuid, ModelMap mmap) {
-        // 澶氳瑷�鐨勬椂鍊檜uid灏辨槸id
+        
         TQuestion tQuestion = tQuestionService.selectTQuestionById(uuid);
         tQuestion.setUuid(uuid);
         TExamLevel tExamLevel = getEditQuestion(mmap, tQuestion);
-
-        // 璋冪敤鐨勬槸淇敼椤甸潰杩涜淇敼锛屾墍浠ヤ笉闇�瑕佸~鍐欎富瑕佺殑閫夐」
+        
         tQuestion.setTitle("");
         List<String> selectInputList = tQuestion.getSelectInput();
-        // job宸ヤ綔鍒嗘瀽闂嵎娌℃湁input
+        
         if (ExamUtil.isListNotEmpty(selectInputList)) {
             List<String> selectInputs = new ArrayList<>();
             for (String selectInput : selectInputList) {
@@ -259,15 +201,12 @@
         }
         return prefix + "/edit-" + tExamLevel.getQuestionTemplateId();
     }
-
-    /**
-     *  鏍规嵁璇█淇敼棰樼洰, 椤甸潰涓婄殑鏂板璇█璋冪敤
-     */
+    
     @GetMapping("/editLang/{uuid}/{langType}")
     public String editLang(@PathVariable("uuid") Long uuid, @PathVariable("langType") String langType,ModelMap mmap) {
-        // 澶氳瑷�鐨勬椂鍊檜uid灏辨槸id
+        
         TQuestion tQuestion = tQuestionService.selectTQuestionById(uuid);
-        // 澶氳瑷�鐗堟湰
+        
         tQuestion.setUuid(uuid);
         tQuestion.setLangType(langType);
         TExamLevel tExamLevel = getEditQuestion(mmap, tQuestion);
@@ -276,11 +215,10 @@
         tQuestion.setLangName(lanTypeMap.get(langType));
         return prefix + "/edit-" + tExamLevel.getQuestionTemplateId();
     }
-    
     @GetMapping("/deleteLang/{uuid}/{langType}")
     @ResponseBody
     public AjaxResult deleteLang(@PathVariable("uuid") Long uuid, @PathVariable("langType") String langType) {
-        // 澶氳瑷�鐨勬椂鍊檜uid灏辨槸id
+        
         TQuestion tQuestion = tQuestionService.selectTQuestionById(uuid);
         tQuestion.setLangType(langType);
         return toAjax(tQuestionService.deleteQuestionContent(tQuestion));
diff --git a/src/main/java/com/ots/project/exam/controller/TSubjectController.java b/src/main/java/com/ots/project/exam/controller/TSubjectController.java
index 878c023..35434bf 100644
--- a/src/main/java/com/ots/project/exam/controller/TSubjectController.java
+++ b/src/main/java/com/ots/project/exam/controller/TSubjectController.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.controller;
-
 import com.ots.common.utils.poi.ExcelUtil;
 import com.ots.framework.aspectj.lang.annotation.Log;
 import com.ots.framework.aspectj.lang.enums.BusinessType;
@@ -13,32 +12,20 @@
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
-
 import java.util.List;
 
-/**
- * 缁村害琛–ontroller
- *
- * @author ots
- * @date 2019-12-09
- */
 @Controller
 @RequestMapping("/exam/subject")
 public class TSubjectController extends BaseController {
     private String prefix = "exam/subject";
-
     @Autowired
     private ITSubjectService tSubjectService;
-
     @RequiresPermissions("exam:subject:view")
     @GetMapping()
     public String subject() {
         return prefix + "/subject";
     }
-
-    /**
-     * 鏌ヨ缁村害琛ㄥ垪琛�
-     */
+    
     @RequiresPermissions("exam:subject:list")
     @PostMapping("/list")
     @ResponseBody
@@ -47,10 +34,7 @@
         List<TSubject> list = tSubjectService.selectTSubjectList(tSubject);
         return getDataTable(list);
     }
-
-    /**
-     * 瀵煎嚭缁村害琛ㄥ垪琛�
-     */
+    
     @RequiresPermissions("exam:subject:export")
     @PostMapping("/export")
     @ResponseBody
@@ -59,18 +43,12 @@
         ExcelUtil<TSubject> util = new ExcelUtil<TSubject>(TSubject.class);
         return util.exportExcel(list, "subject");
     }
-
-    /**
-     * 鏂板缁村害琛�
-     */
+    
     @GetMapping("/add")
     public String add() {
         return prefix + "/add";
     }
-
-    /**
-     * 鏂板淇濆瓨缁村害琛�
-     */
+    
     @RequiresPermissions("exam:subject:add")
     @Log(title = "缁村害琛�", businessType = BusinessType.INSERT)
     @PostMapping("/add")
@@ -78,20 +56,14 @@
     public AjaxResult addSave(TSubject tSubject) {
         return toAjax(tSubjectService.insertTSubject(tSubject));
     }
-
-    /**
-     * 淇敼缁村害琛�
-     */
+    
     @GetMapping("/edit/{id}")
     public String edit(@PathVariable("id") Long id, ModelMap mmap) {
         TSubject tSubject = tSubjectService.selectTSubjectById(id);
         mmap.put("tSubject", tSubject);
         return prefix + "/edit";
     }
-
-    /**
-     * 淇敼淇濆瓨缁村害琛�
-     */
+    
     @RequiresPermissions("exam:subject:edit")
     @Log(title = "缁村害琛�", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
@@ -99,10 +71,7 @@
     public AjaxResult editSave(TSubject tSubject) {
         return toAjax(tSubjectService.updateTSubject(tSubject));
     }
-
-    /**
-     * 鍒犻櫎缁村害琛�
-     */
+    
     @RequiresPermissions("exam:subject:remove")
     @Log(title = "缁村害琛�", businessType = BusinessType.DELETE)
     @PostMapping("/remove")
diff --git a/src/main/java/com/ots/project/exam/domain/EntDemographyInfo.java b/src/main/java/com/ots/project/exam/domain/EntDemographyInfo.java
index aa8e3ff..f99dd21 100644
--- a/src/main/java/com/ots/project/exam/domain/EntDemographyInfo.java
+++ b/src/main/java/com/ots/project/exam/domain/EntDemographyInfo.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.domain;
-
 import com.ots.framework.aspectj.lang.annotation.Excel;
 import com.ots.framework.web.domain.BaseEntity;
 import lombok.Getter;
@@ -7,59 +6,30 @@
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 
-/**
- * 浜哄彛瀛︿俊鎭璞� ent_demography_info
- *
- * @author ots
- * @date 2019-12-15
- */
 @Getter
 @Setter
 public class EntDemographyInfo extends BaseEntity {
     private static final long serialVersionUID = 1L;
-
-    /**
-     * 淇℃伅缂栫爜
-     */
+    
     private Long infoId;
-
-    /**
-     * 鎵�灞炰紒涓�
-     */
+    
     @Excel(name = "鎵�灞炰紒涓�")
     private Long userId;
-
-    /**
-     * 鐢ㄦ埛缂栫爜
-     */
+    
     @Excel(name = "鐢ㄦ埛缂栫爜")
     private Long memberId;
-
-    /**
-     * 鍙傛暟缂栫爜
-     */
+    
     @Excel(name = "鍙傛暟缂栫爜")
     private String paramId;
-
-    /**
-     * 鍙傛暟鍚嶇О
-     */
+    
     @Excel(name = "鍙傛暟鍚嶇О")
     private String paramName;
-
-    /**
-     * 绛旈鐨勮瑷�
-     */
+    
     private String langType;
-
-    /**
-     * 鍙傛暟鍊�
-     */
+    
     @Excel(name = "鍙傛暟鍊�")
     private String paramValue;
-
     private String langCodes;
-
     @Override
     public String toString() {
         return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
diff --git a/src/main/java/com/ots/project/exam/domain/EntDemographyParam.java b/src/main/java/com/ots/project/exam/domain/EntDemographyParam.java
index cf19042..78d1290 100644
--- a/src/main/java/com/ots/project/exam/domain/EntDemographyParam.java
+++ b/src/main/java/com/ots/project/exam/domain/EntDemographyParam.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.domain;
-
 import com.ots.framework.aspectj.lang.annotation.Excel;
 import com.ots.framework.web.domain.BaseEntity;
 import lombok.Getter;
@@ -7,78 +6,39 @@
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 
-/**
- * 浜哄彛瀛﹀彉閲忓畾涔夊璞� ent_demography_param
- *
- * @author ots
- * @date 2019-12-11
- */
 @Getter
 @Setter
 public class EntDemographyParam extends BaseEntity {
     private static final long serialVersionUID = 1L;
-
-    /**
-     * 鍙橀噺缂栫爜
-     */
+    
     private Long paramId;
-
-    /**
-     * 浜哄彛瀛︾紪鐮�
-     */
+    
     @Excel(name = "浜哄彛瀛︾紪鐮�")
     private String paramCode;
-
-    /**
-     * 浜哄彛瀛︾紪鐮佸璇█
-     */
+    
     private String langCodes;
-
-    /**
-     * 浼佷笟鐢ㄦ埛ID
-     */
+    
     @Excel(name = "浼佷笟鐢ㄦ埛ID")
     private Long userId;
-
     @Excel(name = "浼佷笟鐢ㄦ埛ID")
     private String userName;
-
-    /**
-     * 鍙橀噺鐘舵�侊紙1姝e父 0鍏抽棴锛�
-     */
+    
     @Excel(name = "鍙橀噺鐘舵��", readConverterExp = "1=姝e父,0=鍏抽棴")
     private String paramStatus;
-
-    /**
-     * 鎺т欢绫诲瀷
-     */
+    
     @Excel(name = "鎺т欢绫诲瀷")
     private String types;
-
-    /**
-     * 鏄惁蹇呭~锛�1鏄級
-     */
+    
     @Excel(name = "蹇呭~")
     private String isRequired;
-
-    /**
-     * 瀛楀吀绫诲瀷
-     */
+    
     @Excel(name = "瀛楀吀绫诲瀷")
     private String dicttype;
-
-    /**
-     * 鎺掑簭
-     */
+    
     @Excel(name = "鎺掑簭")
     private Integer sort;
-
-    /**
-     * 娴嬭瘯鍖呮槸鍚﹂粯璁ら�夋嫨浜�
-     */
+    
     private boolean flag = false;
-
-
     @Override
     public String toString() {
         return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
diff --git a/src/main/java/com/ots/project/exam/domain/EntOperLog.java b/src/main/java/com/ots/project/exam/domain/EntOperLog.java
index 9a48117..a8684db 100644
--- a/src/main/java/com/ots/project/exam/domain/EntOperLog.java
+++ b/src/main/java/com/ots/project/exam/domain/EntOperLog.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.domain;
-
 import com.ots.framework.aspectj.lang.annotation.Excel;
 import com.ots.framework.web.domain.BaseEntity;
 import lombok.Getter;
@@ -7,52 +6,27 @@
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 
-/**
- * 浣跨敤娆℃暟鎿嶄綔璁板綍瀵硅薄 ent_oper_log
- *
- * @author ots
- * @date 2020-01-19
- */
 @Getter
 @Setter
 public class EntOperLog extends BaseEntity {
     private static final long serialVersionUID = 1L;
-
-    /**
-     * 鏃ュ織缂栫爜
-     */
+    
     private Long logId;
-
-    /**
-     * 浼佷笟鐢ㄦ埛
-     */
+    
     @Excel(name = "浼佷笟鐢ㄦ埛")
     private Long userId;
-
-    /**
-     * 浼佷笟鐢ㄦ埛
-     */
+    
     @Excel(name = "浼佷笟鐢ㄦ埛")
     private String userName;
-
-    /**
-     * 浼佷笟鐢ㄦ埛
-     */
+    
     @Excel(name = "鍒涘缓鐢ㄦ埛")
     private String createName;
-
-    /**
-     * 鍙戠敓娆℃暟
-     */
+    
     @Excel(name = "鍙戠敓娆℃暟")
     private Long testNum;
-
-    /**
-     * 鎿嶄綔绫诲瀷
-     */
+    
     @Excel(name = "鎿嶄綔绫诲瀷")
     private String opertype;
-
     @Override
     public String toString() {
         return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
diff --git a/src/main/java/com/ots/project/exam/domain/EntTestDetail.java b/src/main/java/com/ots/project/exam/domain/EntTestDetail.java
index f0e5ce0..ac42bd6 100644
--- a/src/main/java/com/ots/project/exam/domain/EntTestDetail.java
+++ b/src/main/java/com/ots/project/exam/domain/EntTestDetail.java
@@ -1,18 +1,10 @@
 package com.ots.project.exam.domain;
-
 import com.ots.framework.web.domain.BaseEntity;
 import lombok.Getter;
 import lombok.Setter;
-
 import java.util.Comparator;
 import java.util.Date;
 
-/**
- * entTestDetail瀵硅薄 ent_test_detail
- *
- * @author ots
- * @date 2020-03-01
- */
 @Getter
 @Setter
 public class EntTestDetail extends BaseEntity {
diff --git a/src/main/java/com/ots/project/exam/domain/EntTestMember.java b/src/main/java/com/ots/project/exam/domain/EntTestMember.java
index 22e8ba1..4beed96 100644
--- a/src/main/java/com/ots/project/exam/domain/EntTestMember.java
+++ b/src/main/java/com/ots/project/exam/domain/EntTestMember.java
@@ -1,141 +1,69 @@
 package com.ots.project.exam.domain;
-
 import com.ots.framework.aspectj.lang.annotation.Excel;
 import com.ots.framework.web.domain.BaseEntity;
 import lombok.Getter;
 import lombok.Setter;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-
 import java.util.Date;
 import java.util.List;
 
-/**
- * 娴嬭瘎浜哄憳鍚嶅崟瀵硅薄 ent_test_member
- *
- * @author ots
- * @date 2019-12-15
- */
 @Getter
 @Setter
 public class EntTestMember extends BaseEntity {
     private static final long serialVersionUID = 1L;
-    /**
-     * 璇勬祴浜哄憳缂栫爜
-     */
+    
     private Long memberId;
-
     private String langType;
-
     private String prodName;
-
-    /**
-     * 鍚嶇О
-     */
+    
     @Excel(name = "濮撳悕锛團ull Name锛�")
     private String memberName;
-
-    /**
-     * 閮ㄩ棬
-     */
+    
     @Excel(name = "閮ㄩ棬锛圖epartment锛�")
     private String memberDept;
-
-    /**
-     * 閭
-     */
+    
     @Excel(name = "閭锛圗mail锛�")
     private String memberEmail;
-
-    /**
-     * 鎵嬫満鍙风爜
-     */
+    
     @Excel(name = "鎵嬫満鍙风爜锛圕ell Phone锛�")
     private String memberPhone;
-
-    /**
-     * 娴嬭瘯鍖呯紪鐮�
-     */
+    
     private Long testId;
-
-    /**
-     * 娴嬭瘯code
-     */
+    
     private String token;
-
-    /**
-     * 绛旈鏃堕棿
-     */
+    
     private Date startTime;
-
     private Date endTime;
-
-    /**
-     * 鐭俊鐘舵��
-     */
+    
     private String smsStatus;
-
-    /**
-     * 鐭俊鏃堕棿
-     */
+    
     private Date smsTime;
-
-    /**
-     * 閭欢鐘舵��
-     */
+    
     private String emailStatus;
-
-    /**
-     * 閭欢鏃堕棿
-     */
+    
     private Date emailTime;
-
-    /**
-     * 鐘舵��
-     */
+    
     private String status;
-
-
+    private List<String> statusList;
     private String firstName;
-
     private String lastName;
-
     private String userName;
-
     private String testName;
-
     private Long userId;
-
     private List<Long> userList;
-
     private Integer sendHrEmail;
-
-    /**
-     * 鎶ュ憡鍦板潃
-     */
+    
     private String reportAddress;
-
-    /**
-     * 鎶ュ憡缂栫爜
-     */
+    
     private Long reportId;
-
-    /**
-     * HR閭欢鐘舵��
-     */
+    
     private String hrEmailStatus;
-
-    /**
-     * HR閭欢鏃堕棿
-     */
+    
     private Date hrEmailTime;
-
     private String queryValue;
-
     private String queryType;
-
     private int showNum;
-
     @Override
     public String toString() {
         return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
diff --git a/src/main/java/com/ots/project/exam/domain/EntTestMemberBackstage.java b/src/main/java/com/ots/project/exam/domain/EntTestMemberBackstage.java
index ee045a0..c6a3f2d 100644
--- a/src/main/java/com/ots/project/exam/domain/EntTestMemberBackstage.java
+++ b/src/main/java/com/ots/project/exam/domain/EntTestMemberBackstage.java
@@ -1,90 +1,64 @@
 package com.ots.project.exam.domain;
-
 import com.ots.framework.aspectj.lang.annotation.Excel;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.ots.framework.web.domain.BaseEntity;
 import java.util.Date;
 
-/**
- * EntTestMemberBackstage瀵硅薄 ent_test_member_backstage
- * 
- * @author ots
- * @date 2020-02-29
- */
 public class EntTestMemberBackstage extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
-
-    /** 璇勬祴浜哄憳缂栫爜 */
+    
     private Long memberId;
-
-    /** 鍚嶇О */
+    
     @Excel(name = "鍚嶇О")
     private String memberName;
-
-    /** 閮ㄩ棬 */
+    
     @Excel(name = "閮ㄩ棬")
     private String memberDept;
-
-    /** 閭 */
+    
     @Excel(name = "閭")
     private String memberEmail;
-
-    /** 鎵嬫満鍙风爜 */
+    
     @Excel(name = "鎵嬫満鍙风爜")
     private String memberPhone;
-
-    /** 娴嬭瘯鍖呯紪鐮� */
+    
     @Excel(name = "娴嬭瘯鍖呯紪鐮�")
     private Long testId;
-
-    /** 娴嬭瘯code */
+    
     @Excel(name = "娴嬭瘯code")
     private String token;
-
-    /** 寮�濮嬬瓟棰樻椂闂� */
+    
     @Excel(name = "寮�濮嬬瓟棰樻椂闂�", width = 30, dateFormat = "yyyy-MM-dd")
     private Date startTime;
-
-    /** null */
+    
     @Excel(name = "null", width = 30, dateFormat = "yyyy-MM-dd")
     private Date endTime;
-
-    /** 鐭伅鍙戦�佺姸鎬侊紙0鏈鐞� 1宸插彂閫� 2鍙戦�佷腑 3鍙戦�佸け璐� 4閫�淇★級 */
+    
     @Excel(name = "鐭伅鍙戦�佺姸鎬�", readConverterExp = "0=鏈鐞�,1=宸插彂閫�,2=鍙戦�佷腑,3=鍙戦�佸け璐�,4=閫�淇�")
     private String smsStatus;
-
-    /** 鐭俊鍙戦�佹椂闂� */
+    
     @Excel(name = "鐭俊鍙戦�佹椂闂�", width = 30, dateFormat = "yyyy-MM-dd")
     private Date smsTime;
-
-    /** 閭欢鍙戦�佺姸鎬� (0鏈鐞� 1宸插彂閫� 2鍙戦�佷腑 3鍙戦�佸け璐� 4閫�淇�) */
+    
     @Excel(name = "閭欢鍙戦�佺姸鎬� (0鏈鐞� 1宸插彂閫� 2鍙戦�佷腑 3鍙戦�佸け璐� 4閫�淇�)")
     private String emailStatus;
-
-    /** 閭欢鍙戦�佹椂闂� */
+    
     @Excel(name = "閭欢鍙戦�佹椂闂�", width = 30, dateFormat = "yyyy-MM-dd")
     private Date emailTime;
-
-    /** 0鏈鐞� 1宸插畬鎴� 2绛旈涓� 3浣滃簾 */
+    
     @Excel(name = "0鏈鐞� 1宸插畬鎴� 2绛旈涓� 3浣滃簾")
     private String status;
-
-    /** null */
+    
     @Excel(name = "null")
     private String firstname;
-
-    /** null */
+    
     @Excel(name = "null")
     private String lastname;
-
     public void setMemberId(Long memberId) 
     {
         this.memberId = memberId;
     }
-
     public Long getMemberId() 
     {
         return memberId;
@@ -93,7 +67,6 @@
     {
         this.memberName = memberName;
     }
-
     public String getMemberName() 
     {
         return memberName;
@@ -102,7 +75,6 @@
     {
         this.memberDept = memberDept;
     }
-
     public String getMemberDept() 
     {
         return memberDept;
@@ -111,7 +83,6 @@
     {
         this.memberEmail = memberEmail;
     }
-
     public String getMemberEmail() 
     {
         return memberEmail;
@@ -120,7 +91,6 @@
     {
         this.memberPhone = memberPhone;
     }
-
     public String getMemberPhone() 
     {
         return memberPhone;
@@ -129,7 +99,6 @@
     {
         this.testId = testId;
     }
-
     public Long getTestId() 
     {
         return testId;
@@ -138,7 +107,6 @@
     {
         this.token = token;
     }
-
     public String getToken() 
     {
         return token;
@@ -147,7 +115,6 @@
     {
         this.startTime = startTime;
     }
-
     public Date getStartTime() 
     {
         return startTime;
@@ -156,7 +123,6 @@
     {
         this.endTime = endTime;
     }
-
     public Date getEndTime() 
     {
         return endTime;
@@ -165,7 +131,6 @@
     {
         this.smsStatus = smsStatus;
     }
-
     public String getSmsStatus() 
     {
         return smsStatus;
@@ -174,7 +139,6 @@
     {
         this.smsTime = smsTime;
     }
-
     public Date getSmsTime() 
     {
         return smsTime;
@@ -183,7 +147,6 @@
     {
         this.emailStatus = emailStatus;
     }
-
     public String getEmailStatus() 
     {
         return emailStatus;
@@ -192,7 +155,6 @@
     {
         this.emailTime = emailTime;
     }
-
     public Date getEmailTime() 
     {
         return emailTime;
@@ -201,7 +163,6 @@
     {
         this.status = status;
     }
-
     public String getStatus() 
     {
         return status;
@@ -210,7 +171,6 @@
     {
         this.firstname = firstname;
     }
-
     public String getFirstname() 
     {
         return firstname;
@@ -219,12 +179,10 @@
     {
         this.lastname = lastname;
     }
-
     public String getLastname() 
     {
         return lastname;
     }
-
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
diff --git a/src/main/java/com/ots/project/exam/domain/EntTestMemberOther.java b/src/main/java/com/ots/project/exam/domain/EntTestMemberOther.java
index 81a5326..8745a32 100644
--- a/src/main/java/com/ots/project/exam/domain/EntTestMemberOther.java
+++ b/src/main/java/com/ots/project/exam/domain/EntTestMemberOther.java
@@ -1,129 +1,61 @@
 package com.ots.project.exam.domain;
-
 import com.ots.framework.aspectj.lang.annotation.Excel;
 import com.ots.framework.web.domain.BaseEntity;
 import lombok.Getter;
 import lombok.Setter;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-
 import java.util.Date;
 import java.util.List;
 
-/**
- * 娴嬭瘎浜哄憳鍚嶅崟瀵硅薄 ent_test_member
- *
- * @author ots
- * @date 2019-12-15
- */
 @Getter
 @Setter
 public class EntTestMemberOther extends BaseEntity {
     private static final long serialVersionUID = 1L;
-    /**
-     * 璇勬祴浜哄憳缂栫爜
-     */
+    
     private Long memberId;
-
-    /**
-     * 鍚嶇О
-     */
+    
     @Excel(name = "濮撳悕锛團ull Name锛�")
     private String memberName;
-
     @Excel(name = "娴嬭瘯閾炬帴锛圱est Url锛�")
     private String testUrl;
-
-    /**
-     * 閮ㄩ棬
-     */
+    
     private String memberDept;
-
-    /**
-     * 閭
-     */
+    
     private String memberEmail;
-
-    /**
-     * 鎵嬫満鍙风爜
-     */
+    
     private String memberPhone;
-
-    /**
-     * 娴嬭瘯鍖呯紪鐮�
-     */
+    
     private Long testId;
-
-    /**
-     * 娴嬭瘯code
-     */
+    
     private String token;
-
-    /**
-     * 绛旈鏃堕棿
-     */
+    
     private Date startTime;
-
     private Date endTime;
-
-    /**
-     * 鐭俊鐘舵��
-     */
+    
     private String smsStatus;
-
-    /**
-     * 鐭俊鏃堕棿
-     */
+    
     private Date smsTime;
-
-    /**
-     * 閭欢鐘舵��
-     */
+    
     private String emailStatus;
-
-    /**
-     * 閭欢鏃堕棿
-     */
+    
     private Date emailTime;
-
-    /**
-     * 鐘舵��
-     */
+    
     private String status;
-
-
     private String firstName;
-
     private String lastName;
-
     private String userName;
-
     private String testName;
-
     private Long userId;
-
     private List<Long> userList;
-
     private Integer sendHrEmail;
-
-    /**
-     * 鎶ュ憡鍦板潃
-     */
+    
     private String reportAddress;
-
-    /**
-     * 鎶ュ憡缂栫爜
-     */
+    
     private Long reportId;
-
-    /**
-     * HR閭欢鐘舵��
-     */
+    
     private String hrEmailStatus;
-
-    /**
-     * HR閭欢鏃堕棿
-     */
+    
     private Date hrEmailTime;
     @Override
     public String toString() {
diff --git a/src/main/java/com/ots/project/exam/domain/EntTestPackage.java b/src/main/java/com/ots/project/exam/domain/EntTestPackage.java
index a613559..aed2e99 100644
--- a/src/main/java/com/ots/project/exam/domain/EntTestPackage.java
+++ b/src/main/java/com/ots/project/exam/domain/EntTestPackage.java
@@ -1,12 +1,10 @@
 package com.ots.project.exam.domain;
-
 import com.ots.framework.aspectj.lang.annotation.Excel;
 import com.ots.framework.web.domain.BaseEntity;
 import lombok.Getter;
 import lombok.Setter;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-
 import java.util.Date;
 import java.util.List;
 
diff --git a/src/main/java/com/ots/project/exam/domain/EntTestSendtask.java b/src/main/java/com/ots/project/exam/domain/EntTestSendtask.java
index ede76d6..3e361a8 100644
--- a/src/main/java/com/ots/project/exam/domain/EntTestSendtask.java
+++ b/src/main/java/com/ots/project/exam/domain/EntTestSendtask.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.domain;
-
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ots.framework.aspectj.lang.annotation.Excel;
 import com.ots.framework.web.domain.BaseEntity;
@@ -7,114 +6,55 @@
 import lombok.Setter;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-
 import java.util.Date;
 
-/**
- * 璇勬祴閭�璇峰彂閫佷换鍔″璞� ent_test_sendtask
- *
- * @author ots
- * @date 2019-12-19
- */
 @Getter
 @Setter
 public class EntTestSendtask extends BaseEntity {
     private static final long serialVersionUID = 1L;
-
-    /**
-     * 缂栫爜
-     */
+    
     private Long id;
-
-    /**
-     * 鐢ㄦ埛ID
-     */
+    
     private Long userId;
-
-    /**
-     * 娴嬭瘯鍖呯紪鐮�
-     */
+    
     private Long testId;
-
-    /**
-     * 璇勬祴浜哄憳缂栫爜
-     */
+    
     private Long memberId;
-
-    /**
-     * 鍙戜欢浜�
-     */
+    
     private String fromAddressee;
-
-    /**
-     * 鏀朵欢浜�
-     */
+    
     @Excel(name = "鏀朵欢浜�")
     private String addressee;
-
-    /**
-     * 鍙戦�佺被鍨�
-     */
+    
     @Excel(name = "鍙戦�佺被鍨�")
     private String type;
-
-    /**
-     * 鍙戦�佸钩鍙�
-     */
+    
     @Excel(name = "鍙戦�佸钩鍙�")
     private String platform;
-
-    /**
-     * 鏍囬
-     */
+    
     @Excel(name = "鏍囬")
     private String title;
-
-    /**
-     * 鍐呭
-     */
+    
     @Excel(name = "鍐呭")
     private String content;
-
-    /**
-     * 鐭俊鏉℃暟
-     */
+    
     @Excel(name = "鐭俊鏉℃暟")
     private Long number;
-
-    /**
-     * 鐘舵��
-     */
+    
     @Excel(name = "鐘舵��")
     private String status;
-
-    /**
-     * 杩囩▼淇℃伅
-     */
+    
     @Excel(name = "杩囩▼淇℃伅")
     private String message;
-
-    /**
-     * 鐭俊骞冲彴浠诲姟缂栫爜
-     */
+    
     private String taskId;
-
-    /**
-     * 閭欢骞冲彴浠诲姟缂栫爜
-     */
+    
     private String rushtaskid;
-
-    /**
-     * 鍙戦�佹椂闂�
-     */
+    
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date sendTime;
-
-    /**
-     * 寤堕暱鐨勫彂閫佹椂闂�
-     */
+    
     private String sendExtendTime;
-
     @Override
     public String toString() {
         return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
diff --git a/src/main/java/com/ots/project/exam/domain/EntTestSendtaskMail.java b/src/main/java/com/ots/project/exam/domain/EntTestSendtaskMail.java
index e787f67..201109e 100644
--- a/src/main/java/com/ots/project/exam/domain/EntTestSendtaskMail.java
+++ b/src/main/java/com/ots/project/exam/domain/EntTestSendtaskMail.java
@@ -1,132 +1,83 @@
 package com.ots.project.exam.domain;
-
 import com.ots.framework.aspectj.lang.annotation.Excel;
 import com.ots.framework.web.domain.BaseEntity;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-
 import java.util.Date;
 
-/**
- * 閭閫�淇¤褰曞璞� ent_test_sendtask_mail
- *
- * @author ots
- * @date 2020-03-09
- */
 public class EntTestSendtaskMail extends BaseEntity {
     private static final long serialVersionUID = 1L;
-
-    /**
-     * 缂栧彿
-     */
+    
     private Long id;
-
-    /**
-     * 鍙戦�佹椂闂�
-     */
+    
     @Excel(name = "鍙戦�佹椂闂�", width = 30, dateFormat = "yyyy-MM-dd")
     private Date senddate;
-
-    /**
-     * 鍙戦�佷汉
-     */
+    
     @Excel(name = "鍙戦�佷汉")
     private String sender;
-
-    /**
-     * 鏀朵欢浜�
-     */
+    
     @Excel(name = "鏀朵欢浜�")
     private String receiveaddress;
-
-    /**
-     * 鏍囬
-     */
+    
     @Excel(name = "鏍囬")
     private String title;
-
-    /**
-     * 鐢熸垚妯″潡鍚�
-     */
+    
     @Excel(name = "鐢熸垚妯″潡鍚�")
     private String content;
-
-    /**
-     * 閫�淇¢偖绠卞湴鍧�
-     */
+    
     @Excel(name = "閫�淇¢偖绠卞湴鍧�")
     private String realsender;
-
-    /**
-     * 閫�淇″師鍥�
-     */
+    
     @Excel(name = "閫�淇″師鍥�")
     private String reason;
-
     public Long getId() {
         return id;
     }
-
     public void setId(Long id) {
         this.id = id;
     }
-
     public Date getSenddate() {
         return senddate;
     }
-
     public void setSenddate(Date senddate) {
         this.senddate = senddate;
     }
-
     public String getSender() {
         return sender;
     }
-
     public void setSender(String sender) {
         this.sender = sender;
     }
-
     public String getReceiveaddress() {
         return receiveaddress;
     }
-
     public void setReceiveaddress(String receiveaddress) {
         this.receiveaddress = receiveaddress;
     }
-
     public String getTitle() {
         return title;
     }
-
     public void setTitle(String title) {
         this.title = title;
     }
-
     public String getContent() {
         return content;
     }
-
     public void setContent(String content) {
         this.content = content;
     }
-
     public String getRealsender() {
         return realsender;
     }
-
     public void setRealsender(String realsender) {
         this.realsender = realsender;
     }
-
     public String getReason() {
         return reason;
     }
-
     public void setReason(String reason) {
         this.reason = reason;
     }
-
     @Override
     public String toString() {
         return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
diff --git a/src/main/java/com/ots/project/exam/domain/ExamPaper.java b/src/main/java/com/ots/project/exam/domain/ExamPaper.java
index 5b9ed70..aa31813 100644
--- a/src/main/java/com/ots/project/exam/domain/ExamPaper.java
+++ b/src/main/java/com/ots/project/exam/domain/ExamPaper.java
@@ -1,48 +1,27 @@
 package com.ots.project.exam.domain;
-
 import lombok.Getter;
 import lombok.Setter;
-
 import java.io.Serializable;
 import java.util.Date;
-
 @Getter
 @Setter
 public class ExamPaper implements Serializable {
-
     private static final long serialVersionUID = 8509645224550501395L;
-
     private Integer id;
-
     private String name;
-
     private Integer subjectId;
-
     private Integer paperType;
-
     private Integer gradeLevel;
-
     private Integer score;
-
     private Integer questionCount;
-
     private Integer suggestTime;
-
     private Date limitStartTime;
-
     private Date limitEndTime;
-
     private Integer frameTextContentId;
-
     private Integer createUser;
-
     private Date createTime;
-
     private Boolean deleted;
-
     private Integer taskExamId;
-
     private String guide;
-
     private String langType;
 }
diff --git a/src/main/java/com/ots/project/exam/domain/ExamPaperAnswer.java b/src/main/java/com/ots/project/exam/domain/ExamPaperAnswer.java
index 92bda93..2ae2336 100644
--- a/src/main/java/com/ots/project/exam/domain/ExamPaperAnswer.java
+++ b/src/main/java/com/ots/project/exam/domain/ExamPaperAnswer.java
@@ -1,158 +1,110 @@
 package com.ots.project.exam.domain;
-
 import java.io.Serializable;
 import java.util.Date;
-
 public class ExamPaperAnswer implements Serializable {
-
     private static final long serialVersionUID = -2143539181805283910L;
-
     private Integer id;
-
     private Integer examPaperId;
-
     private String paperName;
-
     private Integer paperType;
-
     private Integer subjectId;
-
     private Integer systemScore;
-
     private Integer userScore;
-
     private Integer paperScore;
-
     private Integer questionCorrect;
-
     private Integer questionCount;
-
     private Integer doTime;
-
     private Integer status;
-
     private Integer createUser;
-
     private Date createTime;
-
     private Integer taskExamId;
-
     public Integer getId() {
         return id;
     }
-
     public void setId(Integer id) {
         this.id = id;
     }
-
     public Integer getExamPaperId() {
         return examPaperId;
     }
-
     public void setExamPaperId(Integer examPaperId) {
         this.examPaperId = examPaperId;
     }
-
     public String getPaperName() {
         return paperName;
     }
-
     public void setPaperName(String paperName) {
         this.paperName = paperName == null ? null : paperName.trim();
     }
-
     public Integer getPaperType() {
         return paperType;
     }
-
     public void setPaperType(Integer paperType) {
         this.paperType = paperType;
     }
-
     public Integer getSubjectId() {
         return subjectId;
     }
-
     public void setSubjectId(Integer subjectId) {
         this.subjectId = subjectId;
     }
-
     public Integer getSystemScore() {
         return systemScore;
     }
-
     public void setSystemScore(Integer systemScore) {
         this.systemScore = systemScore;
     }
-
     public Integer getUserScore() {
         return userScore;
     }
-
     public void setUserScore(Integer userScore) {
         this.userScore = userScore;
     }
-
     public Integer getPaperScore() {
         return paperScore;
     }
-
     public void setPaperScore(Integer paperScore) {
         this.paperScore = paperScore;
     }
-
     public Integer getQuestionCorrect() {
         return questionCorrect;
     }
-
     public void setQuestionCorrect(Integer questionCorrect) {
         this.questionCorrect = questionCorrect;
     }
-
     public Integer getQuestionCount() {
         return questionCount;
     }
-
     public void setQuestionCount(Integer questionCount) {
         this.questionCount = questionCount;
     }
-
     public Integer getDoTime() {
         return doTime;
     }
-
     public void setDoTime(Integer doTime) {
         this.doTime = doTime;
     }
-
     public Integer getStatus() {
         return status;
     }
-
     public void setStatus(Integer status) {
         this.status = status;
     }
-
     public Integer getCreateUser() {
         return createUser;
     }
-
     public void setCreateUser(Integer createUser) {
         this.createUser = createUser;
     }
-
     public Date getCreateTime() {
         return createTime;
     }
-
     public void setCreateTime(Date createTime) {
         this.createTime = createTime;
     }
-
     public Integer getTaskExamId() {
         return taskExamId;
     }
-
     public void setTaskExamId(Integer taskExamId) {
         this.taskExamId = taskExamId;
     }
diff --git a/src/main/java/com/ots/project/exam/domain/ExamPaperQuestionCustomerAnswer.java b/src/main/java/com/ots/project/exam/domain/ExamPaperQuestionCustomerAnswer.java
index 1c3a221..58c4da2 100644
--- a/src/main/java/com/ots/project/exam/domain/ExamPaperQuestionCustomerAnswer.java
+++ b/src/main/java/com/ots/project/exam/domain/ExamPaperQuestionCustomerAnswer.java
@@ -1,158 +1,110 @@
 package com.ots.project.exam.domain;
-
 import java.io.Serializable;
 import java.util.Date;
-
 public class ExamPaperQuestionCustomerAnswer implements Serializable {
-
     private static final long serialVersionUID = 3389482731220342366L;
-
     private Integer id;
-
     private Integer questionId;
-
     private Integer examPaperId;
-
     private Integer examPaperAnswerId;
-
     private Integer questionType;
-
     private Integer subjectId;
-
     private Integer customerScore;
-
     private Integer questionScore;
-
     private Integer questionTextContentId;
-
     private String answer;
-
     private Integer textContentId;
-
     private Boolean doRight;
-
     private Integer createUser;
-
     private Date createTime;
-
     private Integer itemOrder;
-
     public Integer getId() {
         return id;
     }
-
     public void setId(Integer id) {
         this.id = id;
     }
-
     public Integer getQuestionId() {
         return questionId;
     }
-
     public void setQuestionId(Integer questionId) {
         this.questionId = questionId;
     }
-
     public Integer getExamPaperId() {
         return examPaperId;
     }
-
     public void setExamPaperId(Integer examPaperId) {
         this.examPaperId = examPaperId;
     }
-
     public Integer getExamPaperAnswerId() {
         return examPaperAnswerId;
     }
-
     public void setExamPaperAnswerId(Integer examPaperAnswerId) {
         this.examPaperAnswerId = examPaperAnswerId;
     }
-
     public Integer getQuestionType() {
         return questionType;
     }
-
     public void setQuestionType(Integer questionType) {
         this.questionType = questionType;
     }
-
     public Integer getSubjectId() {
         return subjectId;
     }
-
     public void setSubjectId(Integer subjectId) {
         this.subjectId = subjectId;
     }
-
     public Integer getCustomerScore() {
         return customerScore;
     }
-
     public void setCustomerScore(Integer customerScore) {
         this.customerScore = customerScore;
     }
-
     public Integer getQuestionScore() {
         return questionScore;
     }
-
     public void setQuestionScore(Integer questionScore) {
         this.questionScore = questionScore;
     }
-
     public Integer getQuestionTextContentId() {
         return questionTextContentId;
     }
-
     public void setQuestionTextContentId(Integer questionTextContentId) {
         this.questionTextContentId = questionTextContentId;
     }
-
     public String getAnswer() {
         return answer;
     }
-
     public void setAnswer(String answer) {
         this.answer = answer == null ? null : answer.trim();
     }
-
     public Integer getTextContentId() {
         return textContentId;
     }
-
     public void setTextContentId(Integer textContentId) {
         this.textContentId = textContentId;
     }
-
     public Boolean getDoRight() {
         return doRight;
     }
-
     public void setDoRight(Boolean doRight) {
         this.doRight = doRight;
     }
-
     public Integer getCreateUser() {
         return createUser;
     }
-
     public void setCreateUser(Integer createUser) {
         this.createUser = createUser;
     }
-
     public Date getCreateTime() {
         return createTime;
     }
-
     public void setCreateTime(Date createTime) {
         this.createTime = createTime;
     }
-
     public Integer getItemOrder() {
         return itemOrder;
     }
-
     public void setItemOrder(Integer itemOrder) {
         this.itemOrder = itemOrder;
     }
diff --git a/src/main/java/com/ots/project/exam/domain/ExamUser.java b/src/main/java/com/ots/project/exam/domain/ExamUser.java
index 85dc50d..066444c 100644
--- a/src/main/java/com/ots/project/exam/domain/ExamUser.java
+++ b/src/main/java/com/ots/project/exam/domain/ExamUser.java
@@ -1,50 +1,28 @@
 package com.ots.project.exam.domain;
-
 import lombok.Getter;
 import lombok.Setter;
-
 import java.io.Serializable;
 import java.util.Date;
-
 @Getter
 @Setter
 public class ExamUser implements Serializable {
-
     private static final long serialVersionUID = -7797183521247423117L;
-
     private Integer id;
-
     private String userUuid;
-
     private String userName;
-
     private String password;
-
     private String realName;
-
     private Integer age;
-
     private Integer sex;
-
     private Date birthDay;
-
     private Integer userLevel;
-
     private String phone;
-
     private Integer role;
-
     private Integer status;
-
     private String imagePath;
-
     private Date createTime;
-
     private Date modifyTime;
-
     private Date lastActiveTime;
-
     private Boolean deleted;
-
     private String wxOpenId;
 }
diff --git a/src/main/java/com/ots/project/exam/domain/NumberOfUsersByCompany.java b/src/main/java/com/ots/project/exam/domain/NumberOfUsersByCompany.java
index 903e2e7..0b926dc 100644
--- a/src/main/java/com/ots/project/exam/domain/NumberOfUsersByCompany.java
+++ b/src/main/java/com/ots/project/exam/domain/NumberOfUsersByCompany.java
@@ -1,39 +1,21 @@
 package com.ots.project.exam.domain;
-
 import lombok.Getter;
 import lombok.Setter;
-
 import java.util.Map;
 
-/**
- * 浼佷笟鐢ㄦ埛浣跨敤娆℃暟缁熻绫�
- */
 @Getter
 @Setter
 public class NumberOfUsersByCompany {
-
     public NumberOfUsersByCompany() {
         this.usedTimes = 0;
         this.testNum = 0;
     }
-
-    /**
-     * 浼佷笟鐢ㄦ埛缂栫爜
-     */
+    
     private long userId;
-
-    /**
-     * 宸蹭娇鐢ㄦ鏁�
-     */
+    
     private int usedTimes;
-
-    /**
-     * 鍙敤娆℃暟,浼佷笟鐢ㄦ埛灞炴�estNum瀹氫箟
-     */
+    
     private int testNum;
-
-    /**
-     * 姣忎釜娴嬭瘯鍖呯殑娆℃暟璁$畻
-     */
+    
     private Map<Long, NumberOfUsersByPackage> testPackageUsageTimesMap;
 }
diff --git a/src/main/java/com/ots/project/exam/domain/NumberOfUsersByPackage.java b/src/main/java/com/ots/project/exam/domain/NumberOfUsersByPackage.java
index aaed119..8060c17 100644
--- a/src/main/java/com/ots/project/exam/domain/NumberOfUsersByPackage.java
+++ b/src/main/java/com/ots/project/exam/domain/NumberOfUsersByPackage.java
@@ -1,37 +1,18 @@
 package com.ots.project.exam.domain;
-
 import lombok.Getter;
 import lombok.Setter;
 
-/**
- * 娴嬭瘯鍖呰绠楁鏁�
- */
 @Getter
 @Setter
 public class NumberOfUsersByPackage {
-
-    /**
-     * 娴嬭瘯鍖呯紪鐮�
-     */
+    
     private Long testId;
-
-    /**
-     * 娴嬭瘯浜烘暟
-     */
+    
     private Long testNum;
-
-    /**
-     * 宸叉祴浜烘暟
-     */
+    
     private Long finishNum;
-
-    /**
-     * 娴嬭瘯涓汉鏁�
-     */
+    
     private Long testingNum;
-
-    /**
-     * 鏈祴浜烘暟
-     */
+    
     private Long unTestNum;
 }
diff --git a/src/main/java/com/ots/project/exam/domain/Question.java b/src/main/java/com/ots/project/exam/domain/Question.java
index 93d7013..3eccf53 100644
--- a/src/main/java/com/ots/project/exam/domain/Question.java
+++ b/src/main/java/com/ots/project/exam/domain/Question.java
@@ -1,138 +1,95 @@
 package com.ots.project.exam.domain;
-
-
 import com.ots.common.enums.QuestionTypeEnum;
 import com.ots.project.tool.exam.ExamUtil;
-
 import java.io.Serializable;
 import java.util.Date;
 import java.util.List;
-
 public class Question implements Serializable {
-
     private static final long serialVersionUID = 8826266720383164363L;
-
     private Integer id;
-
     private Integer questionType;
-
     private Integer subjectId;
-
     private Integer score;
-
     private Integer gradeLevel;
-
     private Integer difficult;
-
     private String correct;
-
     private Integer infoTextContentId;
-
     private Integer createUser;
-
     private Integer status;
-
     private Date createTime;
-
     private Boolean deleted;
-
     public Integer getId() {
         return id;
     }
-
     public void setId(Integer id) {
         this.id = id;
     }
-
     public Integer getQuestionType() {
         return questionType;
     }
-
     public void setQuestionType(Integer questionType) {
         this.questionType = questionType;
     }
-
     public Integer getSubjectId() {
         return subjectId;
     }
-
     public void setSubjectId(Integer subjectId) {
         this.subjectId = subjectId;
     }
-
     public Integer getScore() {
         return score;
     }
-
     public void setScore(Integer score) {
         this.score = score;
     }
-
     public Integer getGradeLevel() {
         return gradeLevel;
     }
-
     public void setGradeLevel(Integer gradeLevel) {
         this.gradeLevel = gradeLevel;
     }
-
     public Integer getDifficult() {
         return difficult;
     }
-
     public void setDifficult(Integer difficult) {
         this.difficult = difficult;
     }
-
     public String getCorrect() {
         return correct;
     }
-
     public void setCorrect(String correct) {
         this.correct = correct == null ? null : correct.trim();
     }
-
     public Integer getInfoTextContentId() {
         return infoTextContentId;
     }
-
     public void setInfoTextContentId(Integer infoTextContentId) {
         this.infoTextContentId = infoTextContentId;
     }
-
     public Integer getCreateUser() {
         return createUser;
     }
-
     public void setCreateUser(Integer createUser) {
         this.createUser = createUser;
     }
-
     public Integer getStatus() {
         return status;
     }
-
     public void setStatus(Integer status) {
         this.status = status;
     }
-
     public Date getCreateTime() {
         return createTime;
     }
-
     public void setCreateTime(Date createTime) {
         this.createTime = createTime;
     }
-
     public Boolean getDeleted() {
         return deleted;
     }
-
     public void setDeleted(Boolean deleted) {
         this.deleted = deleted;
     }
-
-
     public void setCorrectFromVM(String correct, List<String> correctArray) {
         int qType = this.getQuestionType();
         if (qType == QuestionTypeEnum.MultipleChoice.getCode()) {
diff --git a/src/main/java/com/ots/project/exam/domain/Subject.java b/src/main/java/com/ots/project/exam/domain/Subject.java
index e224a82..26755ca 100644
--- a/src/main/java/com/ots/project/exam/domain/Subject.java
+++ b/src/main/java/com/ots/project/exam/domain/Subject.java
@@ -1,67 +1,46 @@
 package com.ots.project.exam.domain;
-
 import java.io.Serializable;
-
 public class Subject implements Serializable {
-
     private static final long serialVersionUID = 8058095034457106501L;
-
     private Integer id;
-
     private String name;
-
     private Integer level;
-
     private String levelName;
-
     private Integer itemOrder;
-
     private Boolean deleted;
-
     public Integer getId() {
         return id;
     }
-
     public void setId(Integer id) {
         this.id = id;
     }
-
     public String getName() {
         return name;
     }
-
     public void setName(String name) {
         this.name = name == null ? null : name.trim();
     }
-
     public Integer getLevel() {
         return level;
     }
-
     public void setLevel(Integer level) {
         this.level = level;
     }
-
     public String getLevelName() {
         return levelName;
     }
-
     public void setLevelName(String levelName) {
         this.levelName = levelName == null ? null : levelName.trim();
     }
-
     public Integer getItemOrder() {
         return itemOrder;
     }
-
     public void setItemOrder(Integer itemOrder) {
         this.itemOrder = itemOrder;
     }
-
     public Boolean getDeleted() {
         return deleted;
     }
-
     public void setDeleted(Boolean deleted) {
         this.deleted = deleted;
     }
diff --git a/src/main/java/com/ots/project/exam/domain/SysUserExtend.java b/src/main/java/com/ots/project/exam/domain/SysUserExtend.java
index d449279..c45a177 100644
--- a/src/main/java/com/ots/project/exam/domain/SysUserExtend.java
+++ b/src/main/java/com/ots/project/exam/domain/SysUserExtend.java
@@ -1,134 +1,69 @@
 package com.ots.project.exam.domain;
-
 import com.ots.framework.aspectj.lang.annotation.Excel;
 import com.ots.framework.web.domain.BaseEntity;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import org.springframework.web.multipart.MultipartFile;
-
 import java.util.Date;
 
-/**
- * 鐢ㄦ埛淇℃伅鎵╁睍瀵硅薄 sys_user_extend
- *
- * @author ots
- * @date 2019-11-20
- */
 public class SysUserExtend extends BaseEntity {
     private static final long serialVersionUID = 1L;
-
-    /**
-     * 鐢ㄦ埛缂栫爜
-     */
+    
     private Long userId;
-
-    /**
-     * 鍒嗛攢鍟嗙紪鐮�
-     */
+    
     private Long parentUserId;
-
     private Long parentUserTempId;
-
-    /**
-     * 娉曚汉
-     */
+    
     @Excel(name = "娉曚汉")
     private String legalPerson;
-
-    /**
-     * 鑱旂郴鍦板潃
-     */
+    
     @Excel(name = "鑱旂郴鍦板潃")
     private String address;
-
-    /**
-     * 鍚堝悓鍦板潃
-     */
+    
     @Excel(name = "鍚堝悓鍦板潃")
     private String contractText;
-
-    /**
-     * 鍚堝悓鑼冨洿
-     */
+    
     @Excel(name = "鍚堝悓鑼冨洿")
     private String contractScope;
-
-    /**
-     * 鐢熸晥鏃堕棿
-     */
+    
     @Excel(name = "鐢熸晥鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
     private Date effectTime;
-
-    /**
-     * 鍚堜綔鏈熼檺
-     */
+    
     @Excel(name = "鍚堜綔鏈熼檺", width = 30, dateFormat = "yyyy-MM-dd")
     private Date invalidTime;
-
-    /**
-     * 鍏徃瑙勬ā
-     */
+    
     @Excel(name = "鍏徃瑙勬ā")
     private Long companySize;
-
-    /**
-     * 钀ヤ笟鎵х収淇℃伅
-     */
+    
     @Excel(name = "钀ヤ笟鎵х収淇℃伅")
     private String businessLicense;
-
-    /**
-     * 涓氬姟缁忕悊
-     */
+    
     @Excel(name = "涓氬姟缁忕悊")
     private String businessManager;
-
-    /**
-     * 浼佷笟LOGO
-     */
+    
     @Excel(name = "浼佷笟LOGO")
     private String businessLogo;
-
-    /**
-     * 鍙敤娴嬭瘯浜烘暟
-     */
+    
     @Excel(name = "鍙敤娴嬭瘯浜烘暟")
     private Long testNum;
-
-    /**
-     * HR閭
-     */
+    
     @Excel(name = "HR閭")
     private String hrEmail;
-
-    /**
-     * 娴嬭瘯鑰呮槸鍚︽敹鍒版姤鍛婏紙0鍚� 1鏄級
-     */
+    
     @Excel(name = "娴嬭瘯鑰呮槸鍚︽敹鍒版姤鍛�", readConverterExp = "0=鍚�,1=鏄�")
     private String sendReport;
-
-    /**
-     * 閭欢鍐呭
-     */
+    
     @Excel(name = "閭欢鍐呭")
     private String mailContent;
-
-    /**
-     * HR鎺ュ彈鎶ュ憡绫诲瀷
-     */
+    
     @Excel(name = "HR鎺ュ彈鎶ュ憡绫诲瀷")
     private String hrReportType;
-
-    /**
-     * 璇█绫诲瀷
-     */
+    
     @Excel(name = "鎶ュ憡璇█绫诲瀷")
     private String langType;
-
     private MultipartFile businessLicenseFile;
     private MultipartFile contractTextFile;
     private MultipartFile businessLogoFile;
-
     private String userType;
     private String userName;
     private String loginName;
@@ -136,252 +71,188 @@
     private String phonenumber;
     private String contactPerson;
     private String contactEmail;
-
     public String getContactPerson() {
         return contactPerson;
     }
-
     public void setContactPerson(String contactPerson) {
         this.contactPerson = contactPerson;
     }
-
     public String getContactEmail() {
         return contactEmail;
     }
-
     public void setContactEmail(String contactEmail) {
         this.contactEmail = contactEmail;
     }
-
     public Long getParentUserTempId() {
         return parentUserTempId;
     }
-
     public void setParentUserTempId(Long parentUserTempId) {
         this.parentUserTempId = parentUserTempId;
     }
-
-    /**
-     * 鏄惁涓轰竴绾т緵搴斿晢
-     */
+    
     private String firstLevel;
-
     public String getFirstLevel() {
         return firstLevel;
     }
-
     public void setFirstLevel(String firstLevel) {
         this.firstLevel = firstLevel;
     }
-
     public String getPhonenumber() {
         return phonenumber;
     }
-
     public void setPhonenumber(String phonenumber) {
         this.phonenumber = phonenumber;
     }
-
     public String getUserType() {
         return userType;
     }
-
     public void setUserType(String userType) {
         this.userType = userType;
     }
-
     public String getUserName() {
         return userName;
     }
-
     public void setUserName(String userName) {
         this.userName = userName;
     }
-
     public String getLoginName() {
         return loginName;
     }
-
     public void setLoginName(String loginName) {
         this.loginName = loginName;
     }
-
     public String getPassword() {
         return password;
     }
-
     public void setPassword(String password) {
         this.password = password;
     }
-
     public void setUserId(Long userId) {
         this.userId = userId;
     }
-
     public Long getUserId() {
         return userId;
     }
-
     public void setLegalPerson(String legalPerson) {
         this.legalPerson = legalPerson;
     }
-
     public String getLegalPerson() {
         return legalPerson;
     }
-
     public void setAddress(String address) {
         this.address = address;
     }
-
     public String getAddress() {
         return address;
     }
-
     public void setContractText(String contractText) {
         this.contractText = contractText;
     }
-
     public String getContractText() {
         return contractText;
     }
-
     public void setContractScope(String contractScope) {
         this.contractScope = contractScope;
     }
-
     public String getContractScope() {
         return contractScope;
     }
-
     public void setEffectTime(Date effectTime) {
         this.effectTime = effectTime;
     }
-
     public Date getEffectTime() {
         return effectTime;
     }
-
     public void setInvalidTime(Date invalidTime) {
         this.invalidTime = invalidTime;
     }
-
     public Date getInvalidTime() {
         return invalidTime;
     }
-
     public void setCompanySize(Long companySize) {
         this.companySize = companySize;
     }
-
     public Long getCompanySize() {
         return companySize;
     }
-
     public void setBusinessLicense(String businessLicense) {
         this.businessLicense = businessLicense;
     }
-
     public String getBusinessLicense() {
         return businessLicense;
     }
-
     public void setBusinessManager(String businessManager) {
         this.businessManager = businessManager;
     }
-
     public String getBusinessManager() {
         return businessManager;
     }
-
     public void setBusinessLogo(String businessLogo) {
         this.businessLogo = businessLogo;
     }
-
     public String getBusinessLogo() {
         return businessLogo;
     }
-
     public void setTestNum(Long testNum) {
         this.testNum = testNum;
     }
-
     public Long getTestNum() {
         return testNum;
     }
-
     public void setHrEmail(String hrEmail) {
         this.hrEmail = hrEmail;
     }
-
     public String getHrEmail() {
         return hrEmail;
     }
-
     public void setSendReport(String sendReport) {
         this.sendReport = sendReport;
     }
-
     public String getSendReport() {
         return sendReport;
     }
-
     public void setMailContent(String mailContent) {
         this.mailContent = mailContent;
     }
-
     public String getMailContent() {
         return mailContent;
     }
-
     public void setHrReportType(String hrReportType) {
         this.hrReportType = hrReportType;
     }
-
     public String getHrReportType() {
         return hrReportType;
     }
-
     public void setLangType(String langType) {
         this.langType = langType;
     }
-
     public String getLangType() {
         return langType;
     }
-
     public MultipartFile getBusinessLicenseFile() {
         return businessLicenseFile;
     }
-
     public void setBusinessLicenseFile(MultipartFile businessLicenseFile) {
         this.businessLicenseFile = businessLicenseFile;
     }
-
     public Long getParentUserId() {
         return parentUserId;
     }
-
     public void setParentUserId(Long parentUserId) {
         this.parentUserId = parentUserId;
     }
-
 	public MultipartFile getContractTextFile() {
 		return contractTextFile;
 	}
-
 	public void setContractTextFile(MultipartFile contractTextFile) {
 		this.contractTextFile = contractTextFile;
 	}
-
 	public MultipartFile getBusinessLogoFile() {
 		return businessLogoFile;
 	}
-
 	public void setBusinessLogoFile(MultipartFile businessLogoFile) {
 		this.businessLogoFile = businessLogoFile;
 	}
-
 	@Override
     public String toString() {
         return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
diff --git a/src/main/java/com/ots/project/exam/domain/SysUserPaper.java b/src/main/java/com/ots/project/exam/domain/SysUserPaper.java
index 3561a6c..3e2976c 100644
--- a/src/main/java/com/ots/project/exam/domain/SysUserPaper.java
+++ b/src/main/java/com/ots/project/exam/domain/SysUserPaper.java
@@ -1,52 +1,26 @@
 package com.ots.project.exam.domain;
-
 import com.ots.framework.web.domain.BaseEntity;
 import lombok.Getter;
 import lombok.Setter;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 
-/**
- * 鐢ㄦ埛浜у搧瀵硅薄 sys_user_paper
- *
- * @author ots
- * @date 2020-03-22
- */
 @Getter
 @Setter
 public class SysUserPaper extends BaseEntity {
     private static final long serialVersionUID = 1L;
-
-    /**
-     * 鐢ㄦ埛ID
-     */
+    
     private Long userId;
-
-    /**
-     * 浜у搧鍖匢D
-     */
+    
     private Long prodId;
-
-    /**
-     * 浜у搧鍖呭悕绉�
-     */
+    
     private String prodName;
-
-    /**
-     * 鐢ㄦ埛浜у搧
-     */
+    
     private String prodCodes;
-
-    /**
-     * 鏀寔鐨勬姤鍛婄紪鐮�
-     */
+    
     private String reportTemplateId;
-
-    /**
-     * 鏀寔妯℃澘鏄剧ず
-     */
+    
     private String reportTemplateText;
-
     @Override
     public String toString() {
         return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
diff --git a/src/main/java/com/ots/project/exam/domain/TExamLevel.java b/src/main/java/com/ots/project/exam/domain/TExamLevel.java
index ae0cab8..6f4c8e8 100644
--- a/src/main/java/com/ots/project/exam/domain/TExamLevel.java
+++ b/src/main/java/com/ots/project/exam/domain/TExamLevel.java
@@ -1,51 +1,33 @@
 package com.ots.project.exam.domain;
-
 import com.ots.framework.aspectj.lang.annotation.Excel;
 import lombok.Getter;
 import lombok.Setter;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-
 import com.ots.framework.web.domain.BaseEntity;
 
-/**
- * 闂嵎绫诲瀷瀵硅薄 t_exam_level
- * 
- * @author ots
- * @date 2019-12-15
- */
 @Getter
 @Setter
 public class TExamLevel extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
-
-    /** 闂嵎缂栫爜 */
+    
     private Long id;
-
-    /** 闂嵎鍚嶇О */
+    
     @Excel(name = "闂嵎鍚嶇О")
     private String levelName;
-
     private String langType;
-
     @Excel(name = "澶囨敞")
     private String remark;
-
-    // 棰樼洰缁村害Id
+    
     private Integer subjectId;
-
-    /**棰樼洰妯℃澘id*/
+    
     private String questionTemplateId;
-
-    /**棰樼洰妯℃澘鍚嶇О*/
+    
     @Excel(name = "棰樼洰妯℃澘")
     private String questionTemplateName;
-
     private String uuid;
-
     private Integer type;
-
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
diff --git a/src/main/java/com/ots/project/exam/domain/TExamPaper.java b/src/main/java/com/ots/project/exam/domain/TExamPaper.java
index 68babc7..5603a34 100644
--- a/src/main/java/com/ots/project/exam/domain/TExamPaper.java
+++ b/src/main/java/com/ots/project/exam/domain/TExamPaper.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.domain;
-
 import com.ots.framework.aspectj.lang.annotation.Excel;
 import com.ots.framework.web.domain.BaseEntity;
 import com.ots.project.exam.dto.ExamPaperTitleItem;
@@ -7,146 +6,75 @@
 import lombok.Setter;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-
 import java.util.Date;
 import java.util.List;
 
-/**
- * 浜у搧鍖呭垪琛ㄥ璞� t_exam_paper
- *
- * @author ots
- * @date 2019-11-20
- */
 @Getter
 @Setter
 public class TExamPaper extends BaseEntity {
     private static final long serialVersionUID = 1L;
-
-    /**
-     * 浜у搧鍖呯紪鐮�
-     */
+    
     private Long id;
-
-    /**
-     * 浜у搧鍖呭悕绉�
-     */
+    
     @Excel(name = "浜у搧鍖呭悕绉�")
     private String name;
-
-    /**
-     * 缁村害
-     */
+    
     @Excel(name = "缁村害")
     private Long subjectId;
-
     private String subjectName;
-
-    /**
-     * 璇曞嵎绫诲瀷( 1鍥哄畾璇曞嵎 2涓存椂璇曞嵎 3鐝骇璇曞嵎 4.鏃舵璇曞嵎 5.鎺ㄩ�佽瘯鍗�)
-     */
+    
     private Long paperType;
-
-    /**
-     * 绾у埆
-     */
+    
     private Long gradeLevel;
-
-    /**
-     * 璇曞嵎鎬诲垎(鍗冨垎鍒�)
-     */
+    
     private Long score;
-
-    /**
-     * 棰樼洰鏁伴噺
-     */
+    
     private Long questionCount;
-
-    /**
-     * 寤鸿鏃堕暱(鍒嗛挓)
-     */
+    
     private Long suggestTime;
-
-    /**
-     * 鏃舵璇曞嵎 寮�濮嬫椂闂�
-     */
+    
     private Date limitStartTime;
-
-    /**
-     * 鏃舵璇曞嵎 缁撴潫鏃堕棿
-     */
+    
     private Date limitEndTime;
-
-    /**
-     * 璇曞嵎妗嗘灦 鍐呭涓篔SON
-     */
+    
     private Long frameTextContentId;
-
-    /**
-     * null
-     */
+    
     private Long createUser;
-
-    /**
-     * null
-     */
+    
     private Long deleted;
-
-    /**
-     * null
-     */
+    
     private Long taskExamId;
-
-    /*鏍囬閲岄潰鐨勯鐩紝鐜板湪鍦ㄥ墠鍙版嫾鎴恓son*/
+    
     private String questions;
-
     private String guide;
-
     private Long levelId;
-
     private String levelName;
-
     private String questionTemplateId;
-
     private String questionTemplateName;
-
-    // 浠庨偅涓骇鍝佸寘鏇存柊杩囨潵
+    
     private Long lastId;
-
-    /*鎶婃爣棰樻暟鎹紶缁欑紪杈戠殑鍓嶅彴*/
+    
     private ExamPaperTitleItem examPaperTitleItem;
-
-    /** 鏍规嵁棰樼洰鍚嶇О鏌ヨ*/
+    
     private String content;
-
-    // 澶氳瑷�
+    
     private Long uuid;
     private String langType;
     private String langName;
     private String multilingual;
     private List<String> multilinguals;
-
-    // 鎸夐鐩煡璇骇鍝佸寘鐨勯檮鍔犲瓧娈�
+    
     private String questionContent;
-
-    // 瀹氫箟鏄柊澧炶瑷�杩樻槸淇敼璇█鐨勫姩浣�
+    
     private String operatingLanguage;
-
-    // 淇敼鐨勬椂鍊欎竴涓増鏈彿锛孷1,V2
+    
     private String version;
-
-    // 鍒涘缓鏂扮増鏈�
+    
     private boolean create = false;
-
-    // 鍖哄垎涓嶅悓鐗堟湰鐨勭紪鍙�
+    
     private String versionId;
-
-    /**
-     * 鎶ュ憡妯℃澘缂栫爜
-     */
+    
     private String reportTemplateId;
-
-
-
     @Override
     public String toString() {
         return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
diff --git a/src/main/java/com/ots/project/exam/domain/TExamPaperQuestion.java b/src/main/java/com/ots/project/exam/domain/TExamPaperQuestion.java
index 7a1920a..0bef9a7 100644
--- a/src/main/java/com/ots/project/exam/domain/TExamPaperQuestion.java
+++ b/src/main/java/com/ots/project/exam/domain/TExamPaperQuestion.java
@@ -1,27 +1,17 @@
 package com.ots.project.exam.domain;
-
 import com.ots.framework.web.domain.BaseEntity;
 import lombok.Getter;
 import lombok.Setter;
-/**
- * 璁板綍浜у搧鍖呭搴旂殑棰樼洰缂栫爜鏂逛究鍚庨潰鐨勬煡璇㈤渶姹傦紝涓轰簡闃叉杩囧ぇ锛岀敤delete鐨勬柟寮忓璞� t_exam_paper_question
- * 
- * @author ots
- * @date 2020-03-03
- */
+
 @Getter
 @Setter
 public class TExamPaperQuestion extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
-
-    /** t_exam_paper鐨刬d */
+    
     private Long paperId;
-
-    /** 棰樼洰鐨勭紪鍙� */
-
+    
     private Integer questionId;
-
-    /** 棰樼洰鐨勬案涔呯紪鍙� */
+    
     private String permanentId;
 }
diff --git a/src/main/java/com/ots/project/exam/domain/TSubject.java b/src/main/java/com/ots/project/exam/domain/TSubject.java
index 3a1d337..a84ea1c 100644
--- a/src/main/java/com/ots/project/exam/domain/TSubject.java
+++ b/src/main/java/com/ots/project/exam/domain/TSubject.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.domain;
-
 import com.ots.framework.aspectj.lang.annotation.Excel;
 import com.ots.framework.web.domain.BaseEntity;
 import lombok.Getter;
@@ -7,57 +6,27 @@
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 
-/**
- * 缁村害琛ㄥ璞� t_subject
- *
- * @author ots
- * @date 2019-12-09
- */
 @Getter
 @Setter
 public class TSubject extends BaseEntity {
     private static final long serialVersionUID = 1L;
-
-    /**
-     * 缁村害缂栫爜
-     */
+    
     private Long id;
-
-    /**
-     * 缁村害鍚嶇О
-     */
+    
     @Excel(name = "缁村害鍚嶇О")
     private String name;
-
-    /**
-     *
-     */
+    
     private Long level;
-
-    /**
-     * 璇█绫诲瀷
-     */
+    
     private String langType;
-
-    /**
-     *
-     */
+    
     private String levelName;
-
-    /**
-     * 鎺掑簭
-     */
+    
     private Long itemOrder;
-
-    /**
-     * null
-     */
+    
     private Long deleted;
-
     private String questionTemplateId;
-
     private String questionTemplateName;
-
     @Override
     public String toString() {
         return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
diff --git a/src/main/java/com/ots/project/exam/domain/TTextContent.java b/src/main/java/com/ots/project/exam/domain/TTextContent.java
index 1c84e7d..f48b5b1 100644
--- a/src/main/java/com/ots/project/exam/domain/TTextContent.java
+++ b/src/main/java/com/ots/project/exam/domain/TTextContent.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.domain;
-
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ots.framework.aspectj.lang.annotation.Excel;
 import com.ots.framework.web.domain.BaseEntity;
@@ -7,50 +6,27 @@
 import lombok.Setter;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-
 import java.util.Date;
 
-/**
- * 棰樼洰鐨勫唴瀹瑰璞� t_text_content
- *
- * @author ots
- * @date 2019-11-24
- */
 @Getter
 @Setter
 public class TTextContent extends BaseEntity {
     private static final long serialVersionUID = 1L;
-
-    /**
-     * null
-     */
+    
     private Long id;
-
-    /**
-     * null
-     */
+    
     @Excel(name = "null")
     private String content;
-
-
-    /**
-     * 鏇存柊鏃堕棿
-     */
+    
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date updateTime;
-
     private Date createTime;
-
-
     public TTextContent() {
     }
-
-
     public TTextContent(String content, Date createTime) {
         this.content = content;
         this.createTime = createTime;
     }
-
     @Override
     public String toString() {
         return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
@@ -59,12 +35,10 @@
                 .append("createTime", getCreateTime())
                 .toString();
     }
-
     @Override
     public Date getCreateTime() {
         return createTime;
     }
-
     @Override
     public void setCreateTime(Date createTime) {
         this.createTime = createTime;
diff --git a/src/main/java/com/ots/project/exam/domain/TTextContentAndQuestion.java b/src/main/java/com/ots/project/exam/domain/TTextContentAndQuestion.java
index a710a92..90d44ff 100644
--- a/src/main/java/com/ots/project/exam/domain/TTextContentAndQuestion.java
+++ b/src/main/java/com/ots/project/exam/domain/TTextContentAndQuestion.java
@@ -1,54 +1,32 @@
 package com.ots.project.exam.domain;
-
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ots.framework.aspectj.lang.annotation.Excel;
 import lombok.Getter;
 import lombok.Setter;
-
 import java.util.Date;
 
-/**
- *  t_text_content 鍜� T_question
- *
- * @author ots
- * @date 2019-12-12
- */
 @Setter
 @Getter
 public class TTextContentAndQuestion {
     private static final long serialVersionUID = 1L;
     private Long id;
-
     @Excel(name = "null")
     private String content;
-
     private Long questionId;
-
     private Integer itemOrder;
-
     private String permanentId;
-
-    /**
-     * 鏇存柊鏃堕棿
-     */
+    
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date updateTime;
-
     public void setContent(String content) {
         this.content = content;
     }
-
     private Date createTime;
-
     public String getContent() {
         return content;
     }
-
-
     public TTextContentAndQuestion() {
     }
-
-
     public TTextContentAndQuestion(String content, Date createTime) {
         this.content = content;
         this.createTime = createTime;
diff --git a/src/main/java/com/ots/project/exam/domain/TaskExamCustomerAnswer.java b/src/main/java/com/ots/project/exam/domain/TaskExamCustomerAnswer.java
index d8168f4..55cf688 100644
--- a/src/main/java/com/ots/project/exam/domain/TaskExamCustomerAnswer.java
+++ b/src/main/java/com/ots/project/exam/domain/TaskExamCustomerAnswer.java
@@ -1,58 +1,40 @@
 package com.ots.project.exam.domain;
-
 import java.io.Serializable;
 import java.util.Date;
-
 public class TaskExamCustomerAnswer implements Serializable {
-
     private static final long serialVersionUID = -556842372977600137L;
-
     private Integer id;
-
     private Integer taskExamId;
-
     private Integer createUser;
-
     private Date createTime;
-
     private Integer textContentId;
-
     public Integer getId() {
         return id;
     }
-
     public void setId(Integer id) {
         this.id = id;
     }
-
     public Integer getTaskExamId() {
         return taskExamId;
     }
-
     public void setTaskExamId(Integer taskExamId) {
         this.taskExamId = taskExamId;
     }
-
     public Integer getCreateUser() {
         return createUser;
     }
-
     public void setCreateUser(Integer createUser) {
         this.createUser = createUser;
     }
-
     public Date getCreateTime() {
         return createTime;
     }
-
     public void setCreateTime(Date createTime) {
         this.createTime = createTime;
     }
-
     public Integer getTextContentId() {
         return textContentId;
     }
-
     public void setTextContentId(Integer textContentId) {
         this.textContentId = textContentId;
     }
diff --git a/src/main/java/com/ots/project/exam/domain/TextContent.java b/src/main/java/com/ots/project/exam/domain/TextContent.java
index 7d7287e..8895699 100644
--- a/src/main/java/com/ots/project/exam/domain/TextContent.java
+++ b/src/main/java/com/ots/project/exam/domain/TextContent.java
@@ -1,47 +1,32 @@
 package com.ots.project.exam.domain;
-
 import java.io.Serializable;
 import java.util.Date;
-
 public class TextContent implements Serializable {
-
     private static final long serialVersionUID = -1279530310964668131L;
-
     public TextContent() {
-
     }
-
     public TextContent(String content, Date createTime) {
         this.content = content;
         this.createTime = createTime;
     }
-
     private Integer id;
-
     private String content;
-
     private Date createTime;
-
     public Integer getId() {
         return id;
     }
-
     public void setId(Integer id) {
         this.id = id;
     }
-
     public String getContent() {
         return content;
     }
-
     public void setContent(String content) {
         this.content = content == null ? null : content.trim();
     }
-
     public Date getCreateTime() {
         return createTime;
     }
-
     public void setCreateTime(Date createTime) {
         this.createTime = createTime;
     }
diff --git a/src/main/java/com/ots/project/exam/domain/UserEventLog.java b/src/main/java/com/ots/project/exam/domain/UserEventLog.java
index a19ba5c..1c4f383 100644
--- a/src/main/java/com/ots/project/exam/domain/UserEventLog.java
+++ b/src/main/java/com/ots/project/exam/domain/UserEventLog.java
@@ -1,80 +1,55 @@
 package com.ots.project.exam.domain;
-
 import java.io.Serializable;
 import java.util.Date;
-
 public class UserEventLog implements Serializable {
-
     private static final long serialVersionUID = -3951198127152024633L;
-
-
     public UserEventLog() {
-
     }
-
     public UserEventLog(Integer userId, String userName, String realName, Date createTime) {
         this.userId = userId;
         this.userName = userName;
         this.realName = realName;
         this.createTime = createTime;
     }
-
     private Integer id;
-
     private Integer userId;
-
     private String userName;
-
     private String realName;
-
     private String content;
-
     private Date createTime;
-
     public Integer getId() {
         return id;
     }
-
     public void setId(Integer id) {
         this.id = id;
     }
-
     public Integer getUserId() {
         return userId;
     }
-
     public void setUserId(Integer userId) {
         this.userId = userId;
     }
-
     public String getUserName() {
         return userName;
     }
-
     public void setUserName(String userName) {
         this.userName = userName == null ? null : userName.trim();
     }
-
     public String getRealName() {
         return realName;
     }
-
     public void setRealName(String realName) {
         this.realName = realName == null ? null : realName.trim();
     }
-
     public String getContent() {
         return content;
     }
-
     public void setContent(String content) {
         this.content = content == null ? null : content.trim();
     }
-
     public Date getCreateTime() {
         return createTime;
     }
-
     public void setCreateTime(Date createTime) {
         this.createTime = createTime;
     }
diff --git a/src/main/java/com/ots/project/exam/domain/WebContext.java b/src/main/java/com/ots/project/exam/domain/WebContext.java
index 12c7360..b4ba393 100644
--- a/src/main/java/com/ots/project/exam/domain/WebContext.java
+++ b/src/main/java/com/ots/project/exam/domain/WebContext.java
@@ -1,18 +1,13 @@
 package com.ots.project.exam.domain;
-
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Component;
-
 @Component
 @AllArgsConstructor
 public class WebContext {
-
     private final static ThreadLocal<ExamUser> USER_THREAD_LOCAL = new ThreadLocal<>();
-
-
     public ExamUser getCurrentUser() {
         ExamUser user = new ExamUser();
-        //涓轰簡璋冭瘯閫氳繃锛屼复鏃惰缃�
+        
         user.setId(3);
         user.setUserName("guobiao");
         user.setUserUuid("dd6837e2-3662-4062-86c7-8ece0f4ef75f");
diff --git a/src/main/java/com/ots/project/exam/domain/comparator/IdComparator.java b/src/main/java/com/ots/project/exam/domain/comparator/IdComparator.java
index 80a8871..4177d14 100644
--- a/src/main/java/com/ots/project/exam/domain/comparator/IdComparator.java
+++ b/src/main/java/com/ots/project/exam/domain/comparator/IdComparator.java
@@ -1,12 +1,9 @@
 package com.ots.project.exam.domain.comparator;
-
 import com.ots.project.exam.domain.EntTestDetail;
-
 import java.util.Comparator;
-
 public class IdComparator implements Comparator<EntTestDetail> {
     @Override
     public int compare(EntTestDetail o1, EntTestDetail o2) {
         return o1.getId() - o2.getId();
     }
-}
\ No newline at end of file
+}
diff --git a/src/main/java/com/ots/project/exam/domain/comparator/TimeSpentComparator.java b/src/main/java/com/ots/project/exam/domain/comparator/TimeSpentComparator.java
index c389a06..68175aa 100644
--- a/src/main/java/com/ots/project/exam/domain/comparator/TimeSpentComparator.java
+++ b/src/main/java/com/ots/project/exam/domain/comparator/TimeSpentComparator.java
@@ -1,13 +1,9 @@
 package com.ots.project.exam.domain.comparator;
-
 import com.ots.project.exam.domain.EntTestDetail;
-
 import java.util.Comparator;
-
 public class TimeSpentComparator implements Comparator<EntTestDetail> {
     @Override
     public int compare(EntTestDetail o1, EntTestDetail o2) {
         return o2.getTimeSpent().intValue() - o1.getTimeSpent().intValue();
     }
-}
-
+}
\ No newline at end of file
diff --git a/src/main/java/com/ots/project/exam/dto/BaseExamPage.java b/src/main/java/com/ots/project/exam/dto/BaseExamPage.java
index ac85ab0..a941bcc 100644
--- a/src/main/java/com/ots/project/exam/dto/BaseExamPage.java
+++ b/src/main/java/com/ots/project/exam/dto/BaseExamPage.java
@@ -1,16 +1,10 @@
 package com.ots.project.exam.dto;
-
 import lombok.Getter;
 import lombok.Setter;
-
-/**
- * @author alvis
- */
 
 @Getter
 @Setter
 public class BaseExamPage {
     private Integer pageIndex;
-
     private Integer pageSize;
 }
diff --git a/src/main/java/com/ots/project/exam/dto/BasePage.java b/src/main/java/com/ots/project/exam/dto/BasePage.java
index d18c7da..6478dcc 100644
--- a/src/main/java/com/ots/project/exam/dto/BasePage.java
+++ b/src/main/java/com/ots/project/exam/dto/BasePage.java
@@ -1,15 +1,8 @@
 package com.ots.project.exam.dto;
-
 import lombok.Data;
-
-/**
- * @author OTS
- */
 
 @Data
 public class BasePage {
     private Integer pageIndex;
-
     private Integer pageSize;
-
 }
diff --git a/src/main/java/com/ots/project/exam/dto/DataReport.java b/src/main/java/com/ots/project/exam/dto/DataReport.java
index 266cdf2..d8f1256 100644
--- a/src/main/java/com/ots/project/exam/dto/DataReport.java
+++ b/src/main/java/com/ots/project/exam/dto/DataReport.java
@@ -1,8 +1,6 @@
 package com.ots.project.exam.dto;
-
 import lombok.Getter;
 import lombok.Setter;
-
 @Setter
 @Getter
 public class DataReport {
@@ -11,9 +9,7 @@
     private String right;
     private String langType;
     public DataReport() {
-
     }
-
     public DataReport(String field, String value, String right, String langType) {
         this.field = field;
         this.value = value;
diff --git a/src/main/java/com/ots/project/exam/dto/DataReportHead.java b/src/main/java/com/ots/project/exam/dto/DataReportHead.java
index b8ca68e..4e368e8 100644
--- a/src/main/java/com/ots/project/exam/dto/DataReportHead.java
+++ b/src/main/java/com/ots/project/exam/dto/DataReportHead.java
@@ -1,27 +1,22 @@
 package com.ots.project.exam.dto;
-
 import lombok.Getter;
 import lombok.Setter;
-
 import java.util.ArrayList;
 import java.util.List;
-
 @Getter
 @Setter
 public class DataReportHead {
-    private List<Object> headSystem; // 绗竴琛岀殑鍒�
-    private List<Object> headEnglish; // 绗簩琛岀殑鍒�
-    private List<Object> headChinese;// 绗笁琛岀殑鍒�
-    private List<Object> headThai;// 绗笁琛岀殑鍒�
-    private List<Object> headRight;  // 娌℃湁鏉冮檺灏卞幓鎺�
-
+    private List<Object> headSystem; 
+    private List<Object> headEnglish; 
+    private List<Object> headChinese;
+    private List<Object> headThai;
+    private List<Object> headRight;  
     public DataReportHead() {
         headSystem = new ArrayList<>();
         headEnglish = new ArrayList<>();
         headChinese = new ArrayList<>();
         headThai = new ArrayList<>();
         headRight = new ArrayList<>();
-
         headChinese.add("瀵煎嚭鍚庡彉閲忓悕锛堜腑鏂囷級");
         headSystem.add("绯荤粺鍐呭彉閲忓悕");
         headEnglish.add("瀵煎嚭鍚庡彉閲忓悕锛堣嫳鏂囷級");
diff --git a/src/main/java/com/ots/project/exam/dto/DemographyDataReportDto.java b/src/main/java/com/ots/project/exam/dto/DemographyDataReportDto.java
index d5701d9..d71a180 100644
--- a/src/main/java/com/ots/project/exam/dto/DemographyDataReportDto.java
+++ b/src/main/java/com/ots/project/exam/dto/DemographyDataReportDto.java
@@ -1,8 +1,6 @@
 package com.ots.project.exam.dto;
-
 import lombok.Getter;
 import lombok.Setter;
-
 @Getter
 @Setter
 public class DemographyDataReportDto {
diff --git a/src/main/java/com/ots/project/exam/dto/DemographyDto.java b/src/main/java/com/ots/project/exam/dto/DemographyDto.java
index 2a8f7dc..4ae707e 100644
--- a/src/main/java/com/ots/project/exam/dto/DemographyDto.java
+++ b/src/main/java/com/ots/project/exam/dto/DemographyDto.java
@@ -1,12 +1,9 @@
 package com.ots.project.exam.dto;
-
 import lombok.Getter;
 import lombok.Setter;
-
 @Getter
 @Setter
 public class DemographyDto {
     private String langType;
-
     private String langCode;
 }
diff --git a/src/main/java/com/ots/project/exam/dto/DictItemDto.java b/src/main/java/com/ots/project/exam/dto/DictItemDto.java
index 369bacd..c9957ca 100644
--- a/src/main/java/com/ots/project/exam/dto/DictItemDto.java
+++ b/src/main/java/com/ots/project/exam/dto/DictItemDto.java
@@ -1,18 +1,11 @@
 package com.ots.project.exam.dto;
-
 import lombok.Getter;
 import lombok.Setter;
-
 @Getter
 @Setter
 public class DictItemDto {
-    /**
-     * 瀛楀吀鍚嶇О
-     */
+    
     private String dictLabel;
-
-    /**
-     * 瀛楀吀鍊�
-     */
+    
     private String dictValue;
 }
diff --git a/src/main/java/com/ots/project/exam/dto/ExamLogin.java b/src/main/java/com/ots/project/exam/dto/ExamLogin.java
index 31038bf..25c111e 100644
--- a/src/main/java/com/ots/project/exam/dto/ExamLogin.java
+++ b/src/main/java/com/ots/project/exam/dto/ExamLogin.java
@@ -1,8 +1,5 @@
 package com.ots.project.exam.dto;
-
 import lombok.Data;
-
-
 @Data
 public class ExamLogin {
     private String userName;
diff --git a/src/main/java/com/ots/project/exam/dto/ExamPaperAnswerInfo.java b/src/main/java/com/ots/project/exam/dto/ExamPaperAnswerInfo.java
index b26e3d5..19588b7 100644
--- a/src/main/java/com/ots/project/exam/dto/ExamPaperAnswerInfo.java
+++ b/src/main/java/com/ots/project/exam/dto/ExamPaperAnswerInfo.java
@@ -1,13 +1,10 @@
 package com.ots.project.exam.dto;
-
 import com.ots.project.exam.domain.ExamPaperAnswer;
 import com.ots.project.exam.domain.ExamPaperQuestionCustomerAnswer;
 import com.ots.project.exam.domain.TExamPaper;
 import lombok.Getter;
 import lombok.Setter;
-
 import java.util.List;
-
 @Getter
 @Setter
 public class ExamPaperAnswerInfo {
diff --git a/src/main/java/com/ots/project/exam/dto/ExamPaperAnswerUpdate.java b/src/main/java/com/ots/project/exam/dto/ExamPaperAnswerUpdate.java
index cde2323..d2e7d13 100644
--- a/src/main/java/com/ots/project/exam/dto/ExamPaperAnswerUpdate.java
+++ b/src/main/java/com/ots/project/exam/dto/ExamPaperAnswerUpdate.java
@@ -1,7 +1,5 @@
 package com.ots.project.exam.dto;
-
 import lombok.Data;
-
 @Data
 public class ExamPaperAnswerUpdate {
     private Integer id;
diff --git a/src/main/java/com/ots/project/exam/dto/ExamPaperQuestion.java b/src/main/java/com/ots/project/exam/dto/ExamPaperQuestion.java
index a29dac6..93a9997 100644
--- a/src/main/java/com/ots/project/exam/dto/ExamPaperQuestion.java
+++ b/src/main/java/com/ots/project/exam/dto/ExamPaperQuestion.java
@@ -1,13 +1,10 @@
 package com.ots.project.exam.dto;
-
 import lombok.Getter;
 import lombok.Setter;
-
-
 @Getter
 @Setter
 public class ExamPaperQuestion {
-    // 浜у搧鍖卛d瀵瑰簲鐨剄uestion_id鐨勬案涔呮�х紪鍙�
+    
     private Long paperId;
     private Integer questionId;
     private String permanentId;
diff --git a/src/main/java/com/ots/project/exam/dto/ExamPaperQuestionItemObject.java b/src/main/java/com/ots/project/exam/dto/ExamPaperQuestionItemObject.java
index d129fb5..424828d 100644
--- a/src/main/java/com/ots/project/exam/dto/ExamPaperQuestionItemObject.java
+++ b/src/main/java/com/ots/project/exam/dto/ExamPaperQuestionItemObject.java
@@ -1,8 +1,6 @@
 package com.ots.project.exam.dto;
-
 import lombok.Getter;
 import lombok.Setter;
-
 @Getter
 @Setter
 public class ExamPaperQuestionItemObject {
diff --git a/src/main/java/com/ots/project/exam/dto/ExamPaperTitleItem.java b/src/main/java/com/ots/project/exam/dto/ExamPaperTitleItem.java
index d17ef12..2823a8e 100644
--- a/src/main/java/com/ots/project/exam/dto/ExamPaperTitleItem.java
+++ b/src/main/java/com/ots/project/exam/dto/ExamPaperTitleItem.java
@@ -1,31 +1,21 @@
 package com.ots.project.exam.dto;
-
-
 import lombok.Getter;
 import lombok.Setter;
-
 import java.util.List;
-// 涓�澶ч锛屼竴澶ф
+
 @Getter
 @Setter
 public class ExamPaperTitleItem {
-
     private String guide;
-
-    //@NotBlank(message = "鏍囬鍐呭涓嶈兘涓虹┖")
+    
     private String name;
-
-    //澶х殑棰樼洰鎻忚堪
+    
     private String description;
-
-    // 棰樼洰姘镐箙缂栧彿
+    
     private String permanentId;
-
-    //@Size(min = 1,message = "璇锋坊鍔犻鐩�")
-    //@Valid
+    
+    
     private List<QuestionItem> questionItems;
-
     private List<QuestionPart> parts;
-
     private Integer questionId;
 }
diff --git a/src/main/java/com/ots/project/exam/dto/ExamPaperTitleItemObject.java b/src/main/java/com/ots/project/exam/dto/ExamPaperTitleItemObject.java
index 8e5b43f..5088977 100644
--- a/src/main/java/com/ots/project/exam/dto/ExamPaperTitleItemObject.java
+++ b/src/main/java/com/ots/project/exam/dto/ExamPaperTitleItemObject.java
@@ -1,29 +1,16 @@
 package com.ots.project.exam.dto;
-
 import lombok.Getter;
 import lombok.Setter;
-
 import java.util.List;
 
-/**
- * 涓�澶ф锛屼竴澶ч
- */
 @Getter
 @Setter
 public class ExamPaperTitleItemObject {
-
     private String name;
-
     private String description;
-
     private String guide;
-
     private String permanentId;
-
     private List<ExamPaperQuestionItemObject> questionItems;
-
     List<QuestionPart> parts;
-
     private Integer questionId;
-
 }
diff --git a/src/main/java/com/ots/project/exam/dto/InterfaceContent.java b/src/main/java/com/ots/project/exam/dto/InterfaceContent.java
index 56997f9..551750f 100644
--- a/src/main/java/com/ots/project/exam/dto/InterfaceContent.java
+++ b/src/main/java/com/ots/project/exam/dto/InterfaceContent.java
@@ -1,10 +1,7 @@
 package com.ots.project.exam.dto;
-
 import lombok.Getter;
 import lombok.Setter;
-
 import java.util.List;
-
 @Getter
 @Setter
 public class InterfaceContent {
diff --git a/src/main/java/com/ots/project/exam/dto/JAQPersons.java b/src/main/java/com/ots/project/exam/dto/JAQPersons.java
index f324fc4..66843ab 100644
--- a/src/main/java/com/ots/project/exam/dto/JAQPersons.java
+++ b/src/main/java/com/ots/project/exam/dto/JAQPersons.java
@@ -1,14 +1,10 @@
 package com.ots.project.exam.dto;
-
 import lombok.Getter;
 import lombok.Setter;
-
 import java.util.Map;
-
 @Getter
 @Setter
 public class JAQPersons {
     private Map<String, String> personInfo;
     private Map<String, String> personPoints;
-
 }
diff --git a/src/main/java/com/ots/project/exam/dto/KeyValue.java b/src/main/java/com/ots/project/exam/dto/KeyValue.java
index 77ae6ec..7a972fd 100644
--- a/src/main/java/com/ots/project/exam/dto/KeyValue.java
+++ b/src/main/java/com/ots/project/exam/dto/KeyValue.java
@@ -1,11 +1,7 @@
 package com.ots.project.exam.dto;
-
 import lombok.Data;
-
 @Data
 public class KeyValue {
-
     private String name;
     private Integer value;
-
 }
diff --git a/src/main/java/com/ots/project/exam/dto/Member.java b/src/main/java/com/ots/project/exam/dto/Member.java
index 9b57e2b..4ac6ecb 100644
--- a/src/main/java/com/ots/project/exam/dto/Member.java
+++ b/src/main/java/com/ots/project/exam/dto/Member.java
@@ -1,16 +1,11 @@
 package com.ots.project.exam.dto;
-
 import lombok.Getter;
 import lombok.Setter;
-
 import javax.validation.constraints.NotNull;
-
 @Getter
 @Setter
 public class Member {
-    /**
-     * 鐢ㄦ埛缂栫爜
-     */
+    
     @NotNull
     private Long memberId;
 }
diff --git a/src/main/java/com/ots/project/exam/dto/PaperFilter.java b/src/main/java/com/ots/project/exam/dto/PaperFilter.java
index 63a1195..6a975b3 100644
--- a/src/main/java/com/ots/project/exam/dto/PaperFilter.java
+++ b/src/main/java/com/ots/project/exam/dto/PaperFilter.java
@@ -1,9 +1,6 @@
 package com.ots.project.exam.dto;
-
 import lombok.Data;
-
 import java.util.Date;
-
 @Data
 public class PaperFilter {
     private Integer userId;
diff --git a/src/main/java/com/ots/project/exam/dto/PaperInfo.java b/src/main/java/com/ots/project/exam/dto/PaperInfo.java
index 35fdbe9..e9654a1 100644
--- a/src/main/java/com/ots/project/exam/dto/PaperInfo.java
+++ b/src/main/java/com/ots/project/exam/dto/PaperInfo.java
@@ -1,9 +1,6 @@
 package com.ots.project.exam.dto;
-
 import lombok.Data;
-
 import java.util.Date;
-
 @Data
 public class PaperInfo {
     private Integer id;
diff --git a/src/main/java/com/ots/project/exam/dto/ParamDefine.java b/src/main/java/com/ots/project/exam/dto/ParamDefine.java
index ab53829..648d5a5 100644
--- a/src/main/java/com/ots/project/exam/dto/ParamDefine.java
+++ b/src/main/java/com/ots/project/exam/dto/ParamDefine.java
@@ -1,55 +1,26 @@
 package com.ots.project.exam.dto;
-
 import lombok.Getter;
 import lombok.Setter;
-
 import java.util.List;
-
 @Getter
 @Setter
 public class ParamDefine {
-    /**
-     * 浼佷笟鐢ㄦ埛缂栫爜
-     */
+    
     private Long userId;
-
-    /**
-     * 璇勬祴鐢ㄦ埛缂栫爜
-     */
+    
     private Long memberId;
-
-    /**
-     * 鍙傛暟缂栫爜
-     */
+    
     private Long paramId;
-
-    /**
-     * 鍙傛暟鍚嶇О
-     */
+    
     private String paramName;
-
-    /**
-     * 鍙傛暟绫诲瀷
-     */
+    
     private String types;
-
-    /**
-     * 璇
-     */
+    
     private String langType;
-
-    /**
-     * 鏄惁蹇呭~锛�1鏄級
-     */
+    
     private String isRequired;
-
-    /**
-     * 濡傛灉閰嶇疆鏈夊瓧鍏革紝杩斿洖瀛楀吀鍒楄〃
-     */
+    
     private List<ParamDefineDictData> dictData;
-
-    /**
-     * 榛樿鍊�
-     */
+    
     private String paramValue;
 }
diff --git a/src/main/java/com/ots/project/exam/dto/ParamDefineDictData.java b/src/main/java/com/ots/project/exam/dto/ParamDefineDictData.java
index 8ad6965..3236253 100644
--- a/src/main/java/com/ots/project/exam/dto/ParamDefineDictData.java
+++ b/src/main/java/com/ots/project/exam/dto/ParamDefineDictData.java
@@ -1,28 +1,15 @@
 package com.ots.project.exam.dto;
-
 import lombok.Getter;
 import lombok.Setter;
-
 @Getter
 @Setter
 public class ParamDefineDictData {
-    /**
-     * 瀛楀吀璇存槑
-     */
+    
     private String dictLabel;
-
-    /**
-     * 瀛楀吀鍊�
-     */
+    
     private String dictValue;
-
-    /**
-     * 瀛楀吀绫诲瀷
-     */
+    
     private String dictType;
-
-    /**
-     * 鐘舵��
-     */
+    
     private String status;
 }
diff --git a/src/main/java/com/ots/project/exam/dto/ParamsInfo.java b/src/main/java/com/ots/project/exam/dto/ParamsInfo.java
index 67d232c..3c64c3e 100644
--- a/src/main/java/com/ots/project/exam/dto/ParamsInfo.java
+++ b/src/main/java/com/ots/project/exam/dto/ParamsInfo.java
@@ -1,46 +1,25 @@
 package com.ots.project.exam.dto;
-
 import lombok.Getter;
 import lombok.Setter;
-
 import javax.validation.constraints.NotNull;
-
 @Getter
 @Setter
 public class ParamsInfo {
-
-    /**
-     * 浜哄彛瀛︿俊鎭紪鐮�
-     */
+    
     private Long infoId;
-
-    /**
-     * 鎵�灞炰紒涓�
-     */
+    
     @NotNull
     private Long userId;
-
-    /**
-     * 璇勬祴鐢ㄦ埛缂栫爜
-     */
+    
     @NotNull
     private Long memberId;
-
-    /**
-     * 鍙傛暟缂栫爜
-     */
+    
     @NotNull
     private String paramId;
-
-    /**
-     * 鍙傛暟鍚嶇О
-     */
+    
     @NotNull
     private String paramName;
-
-    /**
-     * 鍙傛暟鍊�
-     */
+    
     @NotNull
     private String paramValue;
 }
diff --git a/src/main/java/com/ots/project/exam/dto/QuestionAnswer.java b/src/main/java/com/ots/project/exam/dto/QuestionAnswer.java
index df8a136..410b186 100644
--- a/src/main/java/com/ots/project/exam/dto/QuestionAnswer.java
+++ b/src/main/java/com/ots/project/exam/dto/QuestionAnswer.java
@@ -1,15 +1,11 @@
 package com.ots.project.exam.dto;
-
 import lombok.Getter;
 import lombok.Setter;
-
 @Getter
 @Setter
 public class QuestionAnswer {
-
     private String questionItem;
     private String  answerItem;
     private String permanentId;
     private Integer partOrder;
-
 }
diff --git a/src/main/java/com/ots/project/exam/dto/QuestionContent.java b/src/main/java/com/ots/project/exam/dto/QuestionContent.java
index 64b4b1a..66409e5 100644
--- a/src/main/java/com/ots/project/exam/dto/QuestionContent.java
+++ b/src/main/java/com/ots/project/exam/dto/QuestionContent.java
@@ -1,13 +1,10 @@
 package com.ots.project.exam.dto;
-
 import lombok.Getter;
 import lombok.Setter;
-
-
 @Getter
 @Setter
 public class QuestionContent {
-    // ID锛屾案涔呴鐩紪鐮侊紝棰樼洰鍚嶇О锛岃�楁椂
+    
     private String permanentId;
     private String questionTitle;
 }
diff --git a/src/main/java/com/ots/project/exam/dto/QuestionObject.java b/src/main/java/com/ots/project/exam/dto/QuestionObject.java
index 610fe1f..1e91ca2 100644
--- a/src/main/java/com/ots/project/exam/dto/QuestionObject.java
+++ b/src/main/java/com/ots/project/exam/dto/QuestionObject.java
@@ -1,20 +1,12 @@
 package com.ots.project.exam.dto;
-
-
 import lombok.Getter;
 import lombok.Setter;
-
 import java.util.List;
-
 @Getter
 @Setter
 public class QuestionObject {
-
     private String titleContent;
-
     private String analyze;
-
     private List<QuestionEditItem> questionItemObjects;
-
     private String correct;
 }
diff --git a/src/main/java/com/ots/project/exam/dto/QuestionPart.java b/src/main/java/com/ots/project/exam/dto/QuestionPart.java
index b538dc2..41c22b1 100644
--- a/src/main/java/com/ots/project/exam/dto/QuestionPart.java
+++ b/src/main/java/com/ots/project/exam/dto/QuestionPart.java
@@ -1,10 +1,7 @@
 package com.ots.project.exam.dto;
-
 import lombok.Getter;
 import lombok.Setter;
 import java.util.List;
-
-
 @Getter
 @Setter
 public class QuestionPart {
@@ -12,9 +9,8 @@
     private Integer lowestScore;
     private Integer partOrder;
     private List<SignalObject> signals;
-
     public QuestionPart() {
-        // 涓存椂浠g爜锛屽悗闈㈢増鏈幓鎺�
+        
         this.lowestScore = 0;
         this.timeOut = 36000;
     }
diff --git a/src/main/java/com/ots/project/exam/dto/QuestionReport.java b/src/main/java/com/ots/project/exam/dto/QuestionReport.java
index ef7185c..a5ed319 100644
--- a/src/main/java/com/ots/project/exam/dto/QuestionReport.java
+++ b/src/main/java/com/ots/project/exam/dto/QuestionReport.java
@@ -1,16 +1,12 @@
 package com.ots.project.exam.dto;
-
 import com.ots.project.exam.viewmodel.QuestionEditRequestVM;
 import lombok.Getter;
 import lombok.Setter;
-
 import java.util.List;
-
-
 @Getter
 @Setter
 public class QuestionReport {
-    // ID锛屾案涔呴鐩紪鐮侊紝棰樼洰鍚嶇О锛岃�楁椂
+    
     private Integer questionOrder;
     private Integer Id;
     private String permanentId;
diff --git a/src/main/java/com/ots/project/exam/dto/RelatedParty.java b/src/main/java/com/ots/project/exam/dto/RelatedParty.java
index fd80ef8..8ed2ff2 100644
--- a/src/main/java/com/ots/project/exam/dto/RelatedParty.java
+++ b/src/main/java/com/ots/project/exam/dto/RelatedParty.java
@@ -1,101 +1,43 @@
 package com.ots.project.exam.dto;
-
 import lombok.Getter;
 import lombok.Setter;
-
 import java.util.Date;
 
-/**
- * 涓棿灞傦紝鏍规嵁TOKEN杩斿洖鐩稿叧鑱斿弬鏁�
- */
 @Getter
 @Setter
 public class RelatedParty {
-
-    /**
-     * 娴嬭瘯鍖呯紪鐮�
-     */
+    
     private Long testId;
-
-    /**
-     * 娴嬭瘯鍖呭悕绉�
-     */
+    
     private String testName;
-
-    /**
-     * 浜у搧缂栫爜
-     */
+    
     private Long prodId;
-
-
-    /**
-     * 浜у搧鍚嶇О
-     */
+    
     private String prodName;
-
-    /**
-     * 璇勬祴鐢ㄦ埛缂栫爜
-     */
+    
     private Long memberId;
-
-    /**
-     * 璇勬祴鐢ㄦ埛鍚嶇О
-     */
+    
     private String memberName;
-
-    /**
-     * 浼佷笟缂栫爜
-     */
+    
     private Long user_id;
-
-    /**
-     * 浼佷笟鍚嶇О
-     */
-
+    
     private String userName;
-
-    /**
-     * 鍒嗛攢鍟嗙紪鐮�
-     */
+    
     private Long user_parent_id;
-
-    /**
-     *  闂嵎妯$増ID
-     */
+    
     private String questionTemplateId;
-
-    /**
-     * 鎶ュ憡妯℃澘缂栫爜锛屼粠EntTestPackage鐨剅eportTemplateId杩囨潵锛岀敤閫楀彿闅斿紑
-     */
+    
     private String reportTemplateId;
-
-    /**
-     * 鏄惁鑷姩鍙戦�佹姤鍛�
-     */
-
+    
     private boolean autoSendReport;
-
-    /**
-     * 娴嬭瘯鍖呯姸鎬�
-     */
+    
     private String status;
-
     private String position;
-
     private String professionalCategory;
-
     private String superiorPosition;
-
     private Date startTime;
-
-    /**
-     * 鎵嬫満鍙风爜
-     */
+    
     private String memberPhone;
-
-    /**
-     * 閮ㄩ棬鍚嶇О
-     */
+    
     private String memberDept;
-
 }
diff --git a/src/main/java/com/ots/project/exam/dto/RestResponse.java b/src/main/java/com/ots/project/exam/dto/RestResponse.java
index 871c0fa..daa0510 100644
--- a/src/main/java/com/ots/project/exam/dto/RestResponse.java
+++ b/src/main/java/com/ots/project/exam/dto/RestResponse.java
@@ -1,51 +1,32 @@
 package com.ots.project.exam.dto;
-
 import com.ots.common.enums.ResponseCode;
 import com.ots.common.enums.SystemCode;
 import com.ots.project.common.exception.BaseException;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.dao.DuplicateKeyException;
 
-/**
- * @author Shawn
- */
 @Slf4j
 public class RestResponse<T> {
     private int code;
     private String message;
     private T response;
-
     public RestResponse(int code, String message) {
         this.code = code;
         this.message = message;
     }
-
     public RestResponse(int code, String message, T response) {
         this.code = code;
         this.message = message;
         this.response = response;
     }
-
     public static RestResponse fail(Integer code, String msg) {
         return new RestResponse<>(code, msg);
     }
-
-    /**
-     * 澧炲姞閿欒缂栫爜缁熶竴澶勭悊
-     *
-     * @param enumCode
-     * @return
-     */
+    
     public static RestResponse fail(ResponseCode enumCode) {
         return new RestResponse<>(enumCode.getCode(), enumCode.getMessage());
     }
-
-    /**
-     * 寮傚父缁撳悎鏋氫妇鏂逛究寮傚父缁熶竴澶勭悊
-     *
-     * @param e
-     * @return
-     */
+    
     public static RestResponse fail(Exception e) {
         if (e instanceof BaseException) {
             BaseException e1 = (BaseException) e;
@@ -57,37 +38,29 @@
             return new RestResponse<>(999, e.getMessage());
         }
     }
-
     public static RestResponse ok() {
         SystemCode systemCode = SystemCode.OK;
         return new RestResponse<>(systemCode.getCode(), systemCode.getMessage());
     }
-
     public static <F> RestResponse<F> ok(F response) {
         SystemCode systemCode = SystemCode.OK;
         return new RestResponse<>(systemCode.getCode(), systemCode.getMessage(), response);
     }
-
     public int getCode() {
         return code;
     }
-
     public void setCode(int code) {
         this.code = code;
     }
-
     public String getMessage() {
         return message;
     }
-
     public void setMessage(String message) {
         this.message = message;
     }
-
     public T getResponse() {
         return response;
     }
-
     public void setResponse(T response) {
         this.response = response;
     }
diff --git a/src/main/java/com/ots/project/exam/dto/SendTask.java b/src/main/java/com/ots/project/exam/dto/SendTask.java
index ba158c5..474d1a2 100644
--- a/src/main/java/com/ots/project/exam/dto/SendTask.java
+++ b/src/main/java/com/ots/project/exam/dto/SendTask.java
@@ -1,56 +1,24 @@
 package com.ots.project.exam.dto;
-
 import lombok.Getter;
 import lombok.Setter;
 
-/**
- * SendTask 鍙戦�佸唴瀹�
- *
- * @author ots
- * @date 2019-12-19
- */
 @Getter
 @Setter
 public class SendTask {
-
-    /**
-     * 閭�璇风敤鎴穖emberid鍒楄〃涓�
-     */
+    
     private String memberIds;
-
-    /**
-     * 鍙戦�佺被鍨�
-     */
+    
     private String type;
-
-    /**
-     * 鍙戜欢浜�
-     */
+    
     private String fromAddressee;
-
-    /**
-     * 鏀朵欢浜�
-     */
+    
     private String addressee;
-
-    /**
-     * 鍙戦�佸钩鍙�
-     */
+    
     private String platform;
-
-    /**
-     * 鏍囬
-     */
+    
     private String title;
-
-    /**
-     * 鍐呭
-     */
+    
     private String content;
-
-    /**
-     * 鏉℃暟
-     */
+    
     private Long number;
-
 }
diff --git a/src/main/java/com/ots/project/exam/dto/SignalObject.java b/src/main/java/com/ots/project/exam/dto/SignalObject.java
index 188874f..3a81ff4 100644
--- a/src/main/java/com/ots/project/exam/dto/SignalObject.java
+++ b/src/main/java/com/ots/project/exam/dto/SignalObject.java
@@ -1,8 +1,6 @@
 package com.ots.project.exam.dto;
-
 import lombok.Getter;
 import lombok.Setter;
-
 @Getter
 @Setter
 public class SignalObject {
diff --git a/src/main/java/com/ots/project/exam/dto/SubmitReport.java b/src/main/java/com/ots/project/exam/dto/SubmitReport.java
index fc98c00..b781eb3 100644
--- a/src/main/java/com/ots/project/exam/dto/SubmitReport.java
+++ b/src/main/java/com/ots/project/exam/dto/SubmitReport.java
@@ -1,8 +1,6 @@
 package com.ots.project.exam.dto;
-
 import lombok.Getter;
 import lombok.Setter;
-
 @Getter
 @Setter
 public class SubmitReport {
diff --git a/src/main/java/com/ots/project/exam/dto/TaskItemAnswerObject.java b/src/main/java/com/ots/project/exam/dto/TaskItemAnswerObject.java
index 96ad006..308fda2 100644
--- a/src/main/java/com/ots/project/exam/dto/TaskItemAnswerObject.java
+++ b/src/main/java/com/ots/project/exam/dto/TaskItemAnswerObject.java
@@ -1,17 +1,12 @@
 package com.ots.project.exam.dto;
-
 import lombok.Data;
-
 @Data
 public class TaskItemAnswerObject {
     private Integer examPaperId;
     private Integer examPaperAnswerId;
     private Integer status;
-
     public TaskItemAnswerObject() {
-
     }
-
     public TaskItemAnswerObject(Integer examPaperId, Integer examPaperAnswerId, Integer status) {
         this.examPaperId = examPaperId;
         this.examPaperAnswerId = examPaperAnswerId;
diff --git a/src/main/java/com/ots/project/exam/dto/TaskItemObject.java b/src/main/java/com/ots/project/exam/dto/TaskItemObject.java
index 46d2a86..cc62b64 100644
--- a/src/main/java/com/ots/project/exam/dto/TaskItemObject.java
+++ b/src/main/java/com/ots/project/exam/dto/TaskItemObject.java
@@ -1,7 +1,5 @@
 package com.ots.project.exam.dto;
-
 import lombok.Data;
-
 @Data
 public class TaskItemObject {
     private Integer examPaperId;
diff --git a/src/main/java/com/ots/project/exam/listener/CalculateExamPaperAnswerCompleteEvent.java b/src/main/java/com/ots/project/exam/listener/CalculateExamPaperAnswerCompleteEvent.java
index 8caa839..799ca80 100644
--- a/src/main/java/com/ots/project/exam/listener/CalculateExamPaperAnswerCompleteEvent.java
+++ b/src/main/java/com/ots/project/exam/listener/CalculateExamPaperAnswerCompleteEvent.java
@@ -1,24 +1,14 @@
 package com.ots.project.exam.listener;
-
 import com.ots.project.exam.dto.ExamPaperAnswerInfo;
 import org.springframework.context.ApplicationEvent;
 
-/**
- * @author OTS
- */
 public class CalculateExamPaperAnswerCompleteEvent extends ApplicationEvent {
-
-
     private final ExamPaperAnswerInfo examPaperAnswerInfo;
-
-
     public CalculateExamPaperAnswerCompleteEvent(final ExamPaperAnswerInfo examPaperAnswerInfo) {
         super(examPaperAnswerInfo);
         this.examPaperAnswerInfo = examPaperAnswerInfo;
     }
-
     public ExamPaperAnswerInfo getExamPaperAnswerInfo() {
         return examPaperAnswerInfo;
     }
-
 }
diff --git a/src/main/java/com/ots/project/exam/listener/CalculateExamPaperAnswerListener.java b/src/main/java/com/ots/project/exam/listener/CalculateExamPaperAnswerListener.java
index 11a5dcd..a8169fd 100644
--- a/src/main/java/com/ots/project/exam/listener/CalculateExamPaperAnswerListener.java
+++ b/src/main/java/com/ots/project/exam/listener/CalculateExamPaperAnswerListener.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.listener;
-
 import com.ots.common.enums.ExamPaperTypeEnum;
 import com.ots.common.enums.QuestionTypeEnum;
 import com.ots.project.exam.domain.ExamPaperAnswer;
@@ -16,40 +15,28 @@
 import org.springframework.context.ApplicationListener;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
-
 import java.util.Date;
 import java.util.List;
 
-
-/**
- * @author OTS
- */
 @Component
 @AllArgsConstructor
 public class CalculateExamPaperAnswerListener implements ApplicationListener<CalculateExamPaperAnswerCompleteEvent> {
-
     @Autowired
     private ExamPaperAnswerService examPaperAnswerService;
-
     @Autowired
     private ExamPaperQuestionCustomerAnswerService examPaperQuestionCustomerAnswerService;
-
     @Autowired
     private ITTextContentService textContentService;
-
     @Autowired
     private TaskExamCustomerAnswerService examCustomerAnswerService;
-
     @Override
     @Transactional
     public void onApplicationEvent(CalculateExamPaperAnswerCompleteEvent calculateExamPaperAnswerCompleteEvent) {
         Date now = new Date();
-
         ExamPaperAnswerInfo examPaperAnswerInfo = (ExamPaperAnswerInfo) calculateExamPaperAnswerCompleteEvent.getSource();
         TExamPaper examPaper = examPaperAnswerInfo.getExamPaper();
         ExamPaperAnswer examPaperAnswer = examPaperAnswerInfo.getExamPaperAnswer();
         List<ExamPaperQuestionCustomerAnswer> examPaperQuestionCustomerAnswers = examPaperAnswerInfo.getExamPaperQuestionCustomerAnswers();
-
         examPaperAnswerService.insertByFilter(examPaperAnswer);
         examPaperQuestionCustomerAnswers.stream().filter(a -> QuestionTypeEnum.needSaveTextContent(a.getQuestionType())).forEach(d -> {
             TTextContent textContent = new TTextContent(d.getAnswer(), now);
@@ -61,7 +48,6 @@
             d.setExamPaperAnswerId(examPaperAnswer.getId());
         });
         examPaperQuestionCustomerAnswerService.insertList(examPaperQuestionCustomerAnswers);
-
         switch (ExamPaperTypeEnum.fromCode(examPaper.getPaperType().intValue())) {
             case Task: {
                 examCustomerAnswerService.insertOrUpdate(examPaper, examPaperAnswer, now);
diff --git a/src/main/java/com/ots/project/exam/listener/UserEvent.java b/src/main/java/com/ots/project/exam/listener/UserEvent.java
index 87798e0..7f3292e 100644
--- a/src/main/java/com/ots/project/exam/listener/UserEvent.java
+++ b/src/main/java/com/ots/project/exam/listener/UserEvent.java
@@ -1,17 +1,12 @@
 package com.ots.project.exam.listener;
-
 import com.ots.project.exam.domain.UserEventLog;
 import org.springframework.context.ApplicationEvent;
-
 public class UserEvent extends ApplicationEvent {
-
     private final UserEventLog userEventLog;
-
     public UserEvent(final UserEventLog userEventLog) {
         super(userEventLog);
         this.userEventLog = userEventLog;
     }
-
     public UserEventLog getUserEventLog() {
         return userEventLog;
     }
diff --git a/src/main/java/com/ots/project/exam/listener/UserLogListener.java b/src/main/java/com/ots/project/exam/listener/UserLogListener.java
index c06076c..a36303e 100644
--- a/src/main/java/com/ots/project/exam/listener/UserLogListener.java
+++ b/src/main/java/com/ots/project/exam/listener/UserLogListener.java
@@ -1,20 +1,15 @@
 package com.ots.project.exam.listener;
-
 import com.ots.project.exam.service.UserEventLogService;
 import lombok.AllArgsConstructor;
 import org.springframework.context.ApplicationListener;
 import org.springframework.stereotype.Component;
-
 @Component
 @AllArgsConstructor
 public class UserLogListener implements ApplicationListener<UserEvent> {
-
-    //杩欎釜鍏ュ簱鐨勭敤浠g爜鐢熸垚
+    
     private UserEventLogService userEventLogService;
-
     @Override
     public void onApplicationEvent(UserEvent userEvent) {
         userEventLogService.insertByFilter(userEvent.getUserEventLog());
     }
-
 }
diff --git a/src/main/java/com/ots/project/exam/mapper/BaseExamMapper.java b/src/main/java/com/ots/project/exam/mapper/BaseExamMapper.java
index 8a08fad..c1a1540 100644
--- a/src/main/java/com/ots/project/exam/mapper/BaseExamMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/BaseExamMapper.java
@@ -1,16 +1,9 @@
 package com.ots.project.exam.mapper;
-
 public interface BaseExamMapper<T> {
-
     int deleteByPrimaryKey(Integer id);
-
     int insert(T record);
-
     int insertSelective(T record);
-
     T selectByPrimaryKey(Integer id);
-
     int updateByPrimaryKeySelective(T record);
-
     int updateByPrimaryKey(T record);
 }
diff --git a/src/main/java/com/ots/project/exam/mapper/BaseMapper.java b/src/main/java/com/ots/project/exam/mapper/BaseMapper.java
index 867ba3c..1401d29 100644
--- a/src/main/java/com/ots/project/exam/mapper/BaseMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/BaseMapper.java
@@ -1,16 +1,9 @@
 package com.ots.project.exam.mapper;
-
 public interface BaseMapper<T> {
-
     int deleteByPrimaryKey(Integer id);
-
     int insert(T record);
-
     int insertSelective(T record);
-
     T selectByPrimaryKey(Integer id);
-
     int updateByPrimaryKeySelective(T record);
-
     int updateByPrimaryKey(T record);
 }
diff --git a/src/main/java/com/ots/project/exam/mapper/EntDemographyInfoMapper.java b/src/main/java/com/ots/project/exam/mapper/EntDemographyInfoMapper.java
index f112bf0..4596611 100644
--- a/src/main/java/com/ots/project/exam/mapper/EntDemographyInfoMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/EntDemographyInfoMapper.java
@@ -1,64 +1,20 @@
 package com.ots.project.exam.mapper;
-
 import com.ots.project.exam.domain.EntDemographyInfo;
-
 import java.util.List;
 
-/**
- * 浜哄彛瀛︿俊鎭疢apper鎺ュ彛
- *
- * @author ots
- * @date 2019-12-15
- */
 public interface EntDemographyInfoMapper {
-    /**
-     * 鏌ヨ浜哄彛瀛︿俊鎭�
-     *
-     * @param infoId 浜哄彛瀛︿俊鎭疘D
-     * @return 浜哄彛瀛︿俊鎭�
-     */
+    
     EntDemographyInfo selectEntDemographyInfoById(Long infoId);
-
-    /**
-     * 鏌ヨ浜哄彛瀛︿俊鎭垪琛�
-     *
-     * @param entDemographyInfo 浜哄彛瀛︿俊鎭�
-     * @return 浜哄彛瀛︿俊鎭泦鍚�
-     */
+    
     List<EntDemographyInfo> selectEntDemographyInfoList(EntDemographyInfo entDemographyInfo);
-
     List<EntDemographyInfo> selectEntDemographyAndParamList(EntDemographyInfo entDemographyInfo);
-
-    /**
-     * 鏂板浜哄彛瀛︿俊鎭�
-     *
-     * @param entDemographyInfo 浜哄彛瀛︿俊鎭�
-     * @return 缁撴灉
-     */
+    
     int insertEntDemographyInfo(EntDemographyInfo entDemographyInfo);
-
-    /**
-     * 淇敼浜哄彛瀛︿俊鎭�
-     *
-     * @param entDemographyInfo 浜哄彛瀛︿俊鎭�
-     * @return 缁撴灉
-     */
+    
     int updateEntDemographyInfo(EntDemographyInfo entDemographyInfo);
-
-    /**
-     * 鍒犻櫎浜哄彛瀛︿俊鎭�
-     *
-     * @param infoId 浜哄彛瀛︿俊鎭疘D
-     * @return 缁撴灉
-     */
+    
     int deleteEntDemographyInfoById(Long infoId);
-
-    /**
-     * 鎵归噺鍒犻櫎浜哄彛瀛︿俊鎭�
-     *
-     * @param infoIds 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     int deleteEntDemographyInfoByIds(String[] infoIds);
 
     /**
diff --git a/src/main/java/com/ots/project/exam/mapper/EntDemographyParamMapper.java b/src/main/java/com/ots/project/exam/mapper/EntDemographyParamMapper.java
index 690e42c..d0d2052 100644
--- a/src/main/java/com/ots/project/exam/mapper/EntDemographyParamMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/EntDemographyParamMapper.java
@@ -1,64 +1,20 @@
 package com.ots.project.exam.mapper;
-
 import com.ots.project.exam.domain.EntDemographyParam;
-
 import java.util.List;
 import java.util.Map;
 
-/**
- * 浜哄彛瀛﹀彉閲忓畾涔塎apper鎺ュ彛
- *
- * @author ots
- * @date 2019-12-11
- */
 public interface EntDemographyParamMapper {
-    /**
-     * 鏌ヨ浜哄彛瀛﹀彉閲忓畾涔�
-     *
-     * @param paramId 浜哄彛瀛﹀彉閲忓畾涔塈D
-     * @return 浜哄彛瀛﹀彉閲忓畾涔�
-     */
+    
     EntDemographyParam selectEntDemographyParamById(Long paramId);
-
-    /**
-     * 鏌ヨ浜哄彛瀛﹀彉閲忓畾涔夊垪琛�
-     *
-     * @param entDemographyParam 浜哄彛瀛﹀彉閲忓畾涔�
-     * @return 浜哄彛瀛﹀彉閲忓畾涔夐泦鍚�
-     */
+    
     List<EntDemographyParam> selectEntDemographyParamList(EntDemographyParam entDemographyParam);
-
     List<EntDemographyParam> selectEntDemographyParamListByParamIn(String[] paramIds);
-
-    /**
-     * 鏂板浜哄彛瀛﹀彉閲忓畾涔�
-     *
-     * @param entDemographyParam 浜哄彛瀛﹀彉閲忓畾涔�
-     * @return 缁撴灉
-     */
+    
     int insertEntDemographyParam(EntDemographyParam entDemographyParam);
-
-    /**
-     * 淇敼浜哄彛瀛﹀彉閲忓畾涔�
-     *
-     * @param entDemographyParam 浜哄彛瀛﹀彉閲忓畾涔�
-     * @return 缁撴灉
-     */
+    
     int updateEntDemographyParam(EntDemographyParam entDemographyParam);
-
-    /**
-     * 鍒犻櫎浜哄彛瀛﹀彉閲忓畾涔�
-     *
-     * @param paramId 浜哄彛瀛﹀彉閲忓畾涔塈D
-     * @return 缁撴灉
-     */
+    
     int deleteEntDemographyParamById(Long paramId);
-
-    /**
-     * 鎵归噺鍒犻櫎浜哄彛瀛﹀彉閲忓畾涔�
-     *
-     * @param paramIds 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     int deleteEntDemographyParamByIds(String[] paramIds);
 }
diff --git a/src/main/java/com/ots/project/exam/mapper/EntOperLogMapper.java b/src/main/java/com/ots/project/exam/mapper/EntOperLogMapper.java
index 859b9bd..7934ca7 100644
--- a/src/main/java/com/ots/project/exam/mapper/EntOperLogMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/EntOperLogMapper.java
@@ -1,61 +1,18 @@
 package com.ots.project.exam.mapper;
-
 import com.ots.project.exam.domain.EntOperLog;
-
 import java.util.List;
 
-/**
- * 浣跨敤娆℃暟鎿嶄綔璁板綍Mapper鎺ュ彛
- *
- * @author ots
- * @date 2020-01-19
- */
 public interface EntOperLogMapper {
-    /**
-     * 鏌ヨ浣跨敤娆℃暟鎿嶄綔璁板綍
-     *
-     * @param logId 浣跨敤娆℃暟鎿嶄綔璁板綍ID
-     * @return 浣跨敤娆℃暟鎿嶄綔璁板綍
-     */
+    
     EntOperLog selectEntOperLogById(Long logId);
-
-    /**
-     * 鏌ヨ浣跨敤娆℃暟鎿嶄綔璁板綍鍒楄〃
-     *
-     * @param entOperLog 浣跨敤娆℃暟鎿嶄綔璁板綍
-     * @return 浣跨敤娆℃暟鎿嶄綔璁板綍闆嗗悎
-     */
+    
     List<EntOperLog> selectEntOperLogList(EntOperLog entOperLog);
-
-    /**
-     * 鏂板浣跨敤娆℃暟鎿嶄綔璁板綍
-     *
-     * @param entOperLog 浣跨敤娆℃暟鎿嶄綔璁板綍
-     * @return 缁撴灉
-     */
+    
     int insertEntOperLog(EntOperLog entOperLog);
-
-    /**
-     * 淇敼浣跨敤娆℃暟鎿嶄綔璁板綍
-     *
-     * @param entOperLog 浣跨敤娆℃暟鎿嶄綔璁板綍
-     * @return 缁撴灉
-     */
+    
     int updateEntOperLog(EntOperLog entOperLog);
-
-    /**
-     * 鍒犻櫎浣跨敤娆℃暟鎿嶄綔璁板綍
-     *
-     * @param logId 浣跨敤娆℃暟鎿嶄綔璁板綍ID
-     * @return 缁撴灉
-     */
+    
     int deleteEntOperLogById(Long logId);
-
-    /**
-     * 鎵归噺鍒犻櫎浣跨敤娆℃暟鎿嶄綔璁板綍
-     *
-     * @param logIds 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     int deleteEntOperLogByIds(String[] logIds);
 }
diff --git a/src/main/java/com/ots/project/exam/mapper/EntTestMemberBackstageMapper.java b/src/main/java/com/ots/project/exam/mapper/EntTestMemberBackstageMapper.java
index 4c88e16..c1816d4 100644
--- a/src/main/java/com/ots/project/exam/mapper/EntTestMemberBackstageMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/EntTestMemberBackstageMapper.java
@@ -1,61 +1,19 @@
 package com.ots.project.exam.mapper;
-
 import com.ots.project.exam.domain.EntTestMemberBackstage;
 import java.util.List;
 
-/**
- * EntTestMemberBackstageMapper鎺ュ彛
- * 
- * @author ots
- * @date 2020-02-29
- */
 public interface EntTestMemberBackstageMapper 
 {
-    /**
-     * 鏌ヨEntTestMemberBackstage
-     * 
-     * @param memberId EntTestMemberBackstageID
-     * @return EntTestMemberBackstage
-     */
+    
     public EntTestMemberBackstage selectEntTestMemberBackstageById(Long memberId);
-
-    /**
-     * 鏌ヨEntTestMemberBackstage鍒楄〃
-     * 
-     * @param entTestMemberBackstage EntTestMemberBackstage
-     * @return EntTestMemberBackstage闆嗗悎
-     */
+    
     public List<EntTestMemberBackstage> selectEntTestMemberBackstageList(EntTestMemberBackstage entTestMemberBackstage);
-
-    /**
-     * 鏂板EntTestMemberBackstage
-     * 
-     * @param entTestMemberBackstage EntTestMemberBackstage
-     * @return 缁撴灉
-     */
+    
     public int insertEntTestMemberBackstage(EntTestMemberBackstage entTestMemberBackstage);
-
-    /**
-     * 淇敼EntTestMemberBackstage
-     * 
-     * @param entTestMemberBackstage EntTestMemberBackstage
-     * @return 缁撴灉
-     */
+    
     public int updateEntTestMemberBackstage(EntTestMemberBackstage entTestMemberBackstage);
-
-    /**
-     * 鍒犻櫎EntTestMemberBackstage
-     * 
-     * @param memberId EntTestMemberBackstageID
-     * @return 缁撴灉
-     */
+    
     public int deleteEntTestMemberBackstageById(Long memberId);
-
-    /**
-     * 鎵归噺鍒犻櫎EntTestMemberBackstage
-     * 
-     * @param memberIds 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     public int deleteEntTestMemberBackstageByIds(String[] memberIds);
 }
diff --git a/src/main/java/com/ots/project/exam/mapper/EntTestMemberMapper.java b/src/main/java/com/ots/project/exam/mapper/EntTestMemberMapper.java
index 6009881..d8d49b2 100644
--- a/src/main/java/com/ots/project/exam/mapper/EntTestMemberMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/EntTestMemberMapper.java
@@ -1,75 +1,24 @@
 package com.ots.project.exam.mapper;
-
 import com.ots.project.exam.domain.EntTestMember;
-
 import java.util.List;
 import java.util.Map;
 
-/**
- * 娴嬭瘎浜哄憳鍚嶅崟Mapper鎺ュ彛
- *
- * @author ots
- * @date 2019-12-15
- */
 public interface EntTestMemberMapper {
-    /**
-     * 鏌ヨ娴嬭瘎浜哄憳鍚嶅崟
-     *
-     * @param memberId 娴嬭瘎浜哄憳鍚嶅崟ID
-     * @return 娴嬭瘎浜哄憳鍚嶅崟
-     */
+    
     EntTestMember selectEntTestMemberById(Long memberId);
-
-    /**
-     * 鏌ヨ娴嬭瘎浜哄憳鍚嶅崟鍒楄〃
-     *
-     * @param entTestMember 娴嬭瘎浜哄憳鍚嶅崟
-     * @return 娴嬭瘎浜哄憳鍚嶅崟闆嗗悎
-     */
+    
     List<EntTestMember> selectEntTestMemberList(EntTestMember entTestMember);
-
     List<EntTestMember> selectEntTestMemberTopList(EntTestMember entTestMember);
-
     List<EntTestMember> selectEntTestMemberQueryList(EntTestMember entTestMember);
-
-    /**
-     * 鑷畾涔夊弬鏁�
-     * @param params
-     * @return
-     */
+    
     List<EntTestMember> selectEntTestMemberListByMap(Map params);
-
-    /**
-     * 鏂板娴嬭瘎浜哄憳鍚嶅崟
-     *
-     * @param entTestMember 娴嬭瘎浜哄憳鍚嶅崟
-     * @return 缁撴灉
-     */
+    
     int insertEntTestMember(EntTestMember entTestMember);
-
-    /**
-     * 淇敼娴嬭瘎浜哄憳鍚嶅崟
-     *
-     * @param entTestMember 娴嬭瘎浜哄憳鍚嶅崟
-     * @return 缁撴灉
-     */
+    
     int updateEntTestMember(EntTestMember entTestMember);
-
-    /**
-     * 鍒犻櫎娴嬭瘎浜哄憳鍚嶅崟
-     *
-     * @param memberId 娴嬭瘎浜哄憳鍚嶅崟ID
-     * @return 缁撴灉
-     */
+    
     int deleteEntTestMemberById(Long memberId);
-
-    /**
-     * 鎵归噺鍒犻櫎娴嬭瘎浜哄憳鍚嶅崟
-     *
-     * @param memberIds 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     int deleteEntTestMemberByIds(String[] memberIds);
-
     EntTestMember findEntTestMember(Map paramMap);
 }
diff --git a/src/main/java/com/ots/project/exam/mapper/EntTestPackageMapper.java b/src/main/java/com/ots/project/exam/mapper/EntTestPackageMapper.java
index ee1013f..4d5ba45 100644
--- a/src/main/java/com/ots/project/exam/mapper/EntTestPackageMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/EntTestPackageMapper.java
@@ -1,67 +1,21 @@
 package com.ots.project.exam.mapper;
-
 import com.ots.project.exam.domain.EntTestPackage;
-
 import java.util.List;
 import java.util.Map;
 
-/**
- * 娴嬭瘯鍖呯鐞哅apper鎺ュ彛
- *
- * @author ots
- * @date 2019-11-27
- */
 public interface EntTestPackageMapper {
-    /**
-     * 鏌ヨ娴嬭瘯鍖呯鐞�
-     *
-     * @param id 娴嬭瘯鍖呯鐞咺D
-     * @return 娴嬭瘯鍖呯鐞�
-     */
+    
     EntTestPackage selectEntTestPackageById(Long id);
-
-    /**
-     * 鏌ヨ娴嬭瘯鍖呯鐞嗗垪琛�
-     *
-     * @param entTestPackage 娴嬭瘯鍖呯鐞�
-     * @return 娴嬭瘯鍖呯鐞嗛泦鍚�
-     */
+    
     List<EntTestPackage> selectEntTestPackageList(EntTestPackage entTestPackage);
-
     List<EntTestPackage> selectEntTestPackageMainList(EntTestPackage entTestPackage);
-
-    /**
-     * 鏂板娴嬭瘯鍖呯鐞�
-     *
-     * @param entTestPackage 娴嬭瘯鍖呯鐞�
-     * @return 缁撴灉
-     */
+    
     int insertEntTestPackage(EntTestPackage entTestPackage);
-
-    /**
-     * 淇敼娴嬭瘯鍖呯鐞�
-     *
-     * @param entTestPackage 娴嬭瘯鍖呯鐞�
-     * @return 缁撴灉
-     */
+    
     int updateEntTestPackage(EntTestPackage entTestPackage);
-
-    /**
-     * 鍒犻櫎娴嬭瘯鍖呯鐞�
-     *
-     * @param id 娴嬭瘯鍖呯鐞咺D
-     * @return 缁撴灉
-     */
+    
     int deleteEntTestPackageById(Long id);
-
-    /**
-     * 鎵归噺鍒犻櫎娴嬭瘯鍖呯鐞�
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     int deleteEntTestPackageByIds(String[] ids);
-
-
     List<EntTestPackage> selectEntTestPackageListByIdAndStatusIn(Map paramMap);
 }
diff --git a/src/main/java/com/ots/project/exam/mapper/EntTestSendtaskMailMapper.java b/src/main/java/com/ots/project/exam/mapper/EntTestSendtaskMailMapper.java
index de990c1..2a63fa0 100644
--- a/src/main/java/com/ots/project/exam/mapper/EntTestSendtaskMailMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/EntTestSendtaskMailMapper.java
@@ -1,61 +1,18 @@
 package com.ots.project.exam.mapper;
-
 import com.ots.project.exam.domain.EntTestSendtaskMail;
-
 import java.util.List;
 
-/**
- * 閭閫�淇¤褰昅apper鎺ュ彛
- *
- * @author ots
- * @date 2020-03-09
- */
 public interface EntTestSendtaskMailMapper {
-    /**
-     * 鏌ヨ閭閫�淇¤褰�
-     *
-     * @param id 閭閫�淇¤褰旾D
-     * @return 閭閫�淇¤褰�
-     */
+    
     EntTestSendtaskMail selectEntTestSendtaskMailById(Long id);
-
-    /**
-     * 鏌ヨ閭閫�淇¤褰曞垪琛�
-     *
-     * @param entTestSendtaskMail 閭閫�淇¤褰�
-     * @return 閭閫�淇¤褰曢泦鍚�
-     */
+    
     List<EntTestSendtaskMail> selectEntTestSendtaskMailList(EntTestSendtaskMail entTestSendtaskMail);
-
-    /**
-     * 鏂板閭閫�淇¤褰�
-     *
-     * @param entTestSendtaskMail 閭閫�淇¤褰�
-     * @return 缁撴灉
-     */
+    
     int insertEntTestSendtaskMail(EntTestSendtaskMail entTestSendtaskMail);
-
-    /**
-     * 淇敼閭閫�淇¤褰�
-     *
-     * @param entTestSendtaskMail 閭閫�淇¤褰�
-     * @return 缁撴灉
-     */
+    
     int updateEntTestSendtaskMail(EntTestSendtaskMail entTestSendtaskMail);
-
-    /**
-     * 鍒犻櫎閭閫�淇¤褰�
-     *
-     * @param id 閭閫�淇¤褰旾D
-     * @return 缁撴灉
-     */
+    
     int deleteEntTestSendtaskMailById(Long id);
-
-    /**
-     * 鎵归噺鍒犻櫎閭閫�淇¤褰�
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     int deleteEntTestSendtaskMailByIds(String[] ids);
 }
diff --git a/src/main/java/com/ots/project/exam/mapper/EntTestSendtaskMapper.java b/src/main/java/com/ots/project/exam/mapper/EntTestSendtaskMapper.java
index 391b3e7..ccaff90 100644
--- a/src/main/java/com/ots/project/exam/mapper/EntTestSendtaskMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/EntTestSendtaskMapper.java
@@ -1,61 +1,18 @@
 package com.ots.project.exam.mapper;
-
 import com.ots.project.exam.domain.EntTestSendtask;
-
 import java.util.List;
 
-/**
- * 璇勬祴閭�璇峰彂閫佷换鍔apper鎺ュ彛
- *
- * @author ots
- * @date 2019-12-19
- */
 public interface EntTestSendtaskMapper {
-    /**
-     * 鏌ヨ璇勬祴閭�璇峰彂閫佷换鍔�
-     *
-     * @param id 璇勬祴閭�璇峰彂閫佷换鍔D
-     * @return 璇勬祴閭�璇峰彂閫佷换鍔�
-     */
+    
     EntTestSendtask selectEntTestSendtaskById(Long id);
-
-    /**
-     * 鏌ヨ璇勬祴閭�璇峰彂閫佷换鍔″垪琛�
-     *
-     * @param entTestSendtask 璇勬祴閭�璇峰彂閫佷换鍔�
-     * @return 璇勬祴閭�璇峰彂閫佷换鍔¢泦鍚�
-     */
+    
     List<EntTestSendtask> selectEntTestSendtaskList(EntTestSendtask entTestSendtask);
-
-    /**
-     * 鏂板璇勬祴閭�璇峰彂閫佷换鍔�
-     *
-     * @param entTestSendtask 璇勬祴閭�璇峰彂閫佷换鍔�
-     * @return 缁撴灉
-     */
+    
     int insertEntTestSendtask(EntTestSendtask entTestSendtask);
-
-    /**
-     * 淇敼璇勬祴閭�璇峰彂閫佷换鍔�
-     *
-     * @param entTestSendtask 璇勬祴閭�璇峰彂閫佷换鍔�
-     * @return 缁撴灉
-     */
+    
     int updateEntTestSendtask(EntTestSendtask entTestSendtask);
-
-    /**
-     * 鍒犻櫎璇勬祴閭�璇峰彂閫佷换鍔�
-     *
-     * @param id 璇勬祴閭�璇峰彂閫佷换鍔D
-     * @return 缁撴灉
-     */
+    
     int deleteEntTestSendtaskById(Long id);
-
-    /**
-     * 鎵归噺鍒犻櫎璇勬祴閭�璇峰彂閫佷换鍔�
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     int deleteEntTestSendtaskByIds(String[] ids);
 }
diff --git a/src/main/java/com/ots/project/exam/mapper/ExamPaperAnswerMapper.java b/src/main/java/com/ots/project/exam/mapper/ExamPaperAnswerMapper.java
index a0c31ff..bc50a07 100644
--- a/src/main/java/com/ots/project/exam/mapper/ExamPaperAnswerMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/ExamPaperAnswerMapper.java
@@ -1,35 +1,21 @@
 package com.ots.project.exam.mapper;
-
-
 import com.ots.project.exam.domain.ExamPaperAnswer;
 import com.ots.project.exam.dto.KeyValue;
 import com.ots.project.exam.viewmodel.ExamPaperAnswerPageVM;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
-
 import java.util.Date;
 import java.util.List;
-
 @Mapper
 public interface ExamPaperAnswerMapper extends BaseMapper<ExamPaperAnswer> {
     int deleteByPrimaryKey(Integer id);
-
     int insert(ExamPaperAnswer record);
-
     int insertSelective(ExamPaperAnswer record);
-
     ExamPaperAnswer selectByPrimaryKey(Integer id);
-
     int updateByPrimaryKeySelective(ExamPaperAnswer record);
-
     int updateByPrimaryKey(ExamPaperAnswer record);
-
     List<ExamPaperAnswer> studentPage(ExamPaperAnswerPageVM requestVM);
-
     Integer selectAllCount();
-
     List<KeyValue> selectCountByDate(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
-
     ExamPaperAnswer getByPidUid(@Param("pid") Integer paperId, @Param("uid") Integer uid);
-
 }
diff --git a/src/main/java/com/ots/project/exam/mapper/ExamPaperMapper.java b/src/main/java/com/ots/project/exam/mapper/ExamPaperMapper.java
index abd2a83..f731e62 100644
--- a/src/main/java/com/ots/project/exam/mapper/ExamPaperMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/ExamPaperMapper.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.mapper;
-
 import com.ots.project.exam.domain.ExamPaper;
 import com.ots.project.exam.domain.TExamPaper;
 import com.ots.project.exam.dto.KeyValue;
@@ -9,38 +8,22 @@
 import com.ots.project.exam.viewmodel.ExamPaperPageVM;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
-
 import java.util.Date;
 import java.util.List;
-
 @Mapper
 public interface ExamPaperMapper extends BaseExamMapper<ExamPaper> {
     int deleteByPrimaryKey(Integer id);
-
     int insert(ExamPaper record);
-
     int insertSelective(ExamPaper record);
-
     ExamPaper selectByPrimaryKey(Integer id);
-
     int updateByPrimaryKeySelective(ExamPaper record);
-
     int updateByPrimaryKey(ExamPaper record);
-
     List<ExamPaper> page(ExamPaperPageRequestVM requestVM);
-
     List<ExamPaper> taskExamPage(ExamPaperPageRequestVM requestVM);
-
     List<ExamPaper> studentPage(ExamPaperPageVM requestVM);
-
     List<PaperInfo> indexPaper(PaperFilter paperFilter);
-
     Integer selectAllCount();
-
     List<KeyValue> selectCountByDate(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
-
     int updateTaskPaper(@Param("taskId") Integer taskId, @Param("paperIds") List<Integer> paperIds);
-
     int clearTaskPaper(@Param("paperIds") List<Integer> paperIds);
-
 }
diff --git a/src/main/java/com/ots/project/exam/mapper/ExamPaperQuestionCustomerAnswerMapper.java b/src/main/java/com/ots/project/exam/mapper/ExamPaperQuestionCustomerAnswerMapper.java
index f5a0c6e..c8cc1c9 100644
--- a/src/main/java/com/ots/project/exam/mapper/ExamPaperQuestionCustomerAnswerMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/ExamPaperQuestionCustomerAnswerMapper.java
@@ -1,39 +1,24 @@
 package com.ots.project.exam.mapper;
-
-
 import com.ots.project.exam.domain.ExamPaperQuestionCustomerAnswer;
 import com.ots.project.exam.dto.ExamPaperAnswerUpdate;
 import com.ots.project.exam.dto.KeyValue;
 import com.ots.project.exam.viewmodel.QuestionPageStudentRequestVM;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
-
 import java.util.Date;
 import java.util.List;
-
 @Mapper
 public interface ExamPaperQuestionCustomerAnswerMapper extends BaseMapper<ExamPaperQuestionCustomerAnswer> {
     int deleteByPrimaryKey(Integer id);
-
     int insert(ExamPaperQuestionCustomerAnswer record);
-
     int insertSelective(ExamPaperQuestionCustomerAnswer record);
-
     ExamPaperQuestionCustomerAnswer selectByPrimaryKey(Integer id);
-
     int updateByPrimaryKeySelective(ExamPaperQuestionCustomerAnswer record);
-
     int updateByPrimaryKey(ExamPaperQuestionCustomerAnswer record);
-
     List<ExamPaperQuestionCustomerAnswer> selectListByPaperAnswerId(Integer id);
-
     List<ExamPaperQuestionCustomerAnswer> studentPage(QuestionPageStudentRequestVM requestVM);
-
     int insertList(List<ExamPaperQuestionCustomerAnswer> list);
-
     Integer selectAllCount();
-
     List<KeyValue> selectCountByDate(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
-
     int updateScore(List<ExamPaperAnswerUpdate> examPaperAnswerUpdates);
 }
diff --git a/src/main/java/com/ots/project/exam/mapper/QuestionMapper.java b/src/main/java/com/ots/project/exam/mapper/QuestionMapper.java
index da694b7..dceadca 100644
--- a/src/main/java/com/ots/project/exam/mapper/QuestionMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/QuestionMapper.java
@@ -1,33 +1,21 @@
 package com.ots.project.exam.mapper;
-
 import com.ots.project.exam.domain.Question;
 import com.ots.project.exam.dto.KeyValue;
 import com.ots.project.exam.viewmodel.QuestionPageRequestVM;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
-
 import java.util.Date;
 import java.util.List;
-
 @Mapper
 public interface QuestionMapper extends BaseExamMapper<Question> {
     int deleteByPrimaryKey(Integer id);
-
     int insert(Question record);
-
     int insertSelective(Question record);
-
     Question selectByPrimaryKey(Integer id);
-
     int updateByPrimaryKeySelective(Question record);
-
     int updateByPrimaryKey(Question record);
-
     List<Question> page(QuestionPageRequestVM requestVM);
-
     List<Question> selectByIds(@Param("ids") List<Integer> ids);
-
     Integer selectAllCount();
-
     List<KeyValue> selectCountByDate(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
 }
diff --git a/src/main/java/com/ots/project/exam/mapper/SubjectMapper.java b/src/main/java/com/ots/project/exam/mapper/SubjectMapper.java
index 2f30256..aef22c7 100644
--- a/src/main/java/com/ots/project/exam/mapper/SubjectMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/SubjectMapper.java
@@ -1,28 +1,17 @@
 package com.ots.project.exam.mapper;
-
 import com.ots.project.exam.domain.Subject;
 import com.ots.project.exam.viewmodel.SubjectPageRequestVM;
 import org.apache.ibatis.annotations.Mapper;
-
 import java.util.List;
-
 @Mapper
 public interface SubjectMapper extends BaseMapper<Subject> {
     int deleteByPrimaryKey(Integer id);
-
     int insert(Subject record);
-
     int insertSelective(Subject record);
-
     Subject selectByPrimaryKey(Integer id);
-
     int updateByPrimaryKeySelective(Subject record);
-
     int updateByPrimaryKey(Subject record);
-
     List<Subject> getSubjectByLevel(Integer level);
-
     List<Subject> allSubject();
-
     List<Subject> page(SubjectPageRequestVM requestVM);
 }
diff --git a/src/main/java/com/ots/project/exam/mapper/SysUserExtendMapper.java b/src/main/java/com/ots/project/exam/mapper/SysUserExtendMapper.java
index c2aff41..5ea5ae7 100644
--- a/src/main/java/com/ots/project/exam/mapper/SysUserExtendMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/SysUserExtendMapper.java
@@ -1,61 +1,18 @@
 package com.ots.project.exam.mapper;
-
 import com.ots.project.exam.domain.SysUserExtend;
-
 import java.util.List;
 
-/**
- * 鐢ㄦ埛淇℃伅鎵╁睍Mapper鎺ュ彛
- *
- * @author ots
- * @date 2019-11-20
- */
 public interface SysUserExtendMapper {
-    /**
-     * 鏌ヨ鐢ㄦ埛淇℃伅鎵╁睍
-     *
-     * @param userId 鐢ㄦ埛淇℃伅鎵╁睍ID
-     * @return 鐢ㄦ埛淇℃伅鎵╁睍
-     */
+    
     SysUserExtend selectSysUserExtendById(Long userId);
-
-    /**
-     * 鏌ヨ鐢ㄦ埛淇℃伅鎵╁睍鍒楄〃
-     *
-     * @param sysUserExtend 鐢ㄦ埛淇℃伅鎵╁睍
-     * @return 鐢ㄦ埛淇℃伅鎵╁睍闆嗗悎
-     */
+    
     List<SysUserExtend> selectSysUserExtendList(SysUserExtend sysUserExtend);
-
-    /**
-     * 鏂板鐢ㄦ埛淇℃伅鎵╁睍
-     *
-     * @param sysUserExtend 鐢ㄦ埛淇℃伅鎵╁睍
-     * @return 缁撴灉
-     */
+    
     int insertSysUserExtend(SysUserExtend sysUserExtend);
-
-    /**
-     * 淇敼鐢ㄦ埛淇℃伅鎵╁睍
-     *
-     * @param sysUserExtend 鐢ㄦ埛淇℃伅鎵╁睍
-     * @return 缁撴灉
-     */
+    
     int updateSysUserExtend(SysUserExtend sysUserExtend);
-
-    /**
-     * 鍒犻櫎鐢ㄦ埛淇℃伅鎵╁睍
-     *
-     * @param userId 鐢ㄦ埛淇℃伅鎵╁睍ID
-     * @return 缁撴灉
-     */
+    
     int deleteSysUserExtendById(Long userId);
-
-    /**
-     * 鎵归噺鍒犻櫎鐢ㄦ埛淇℃伅鎵╁睍
-     *
-     * @param userIds 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     int deleteSysUserExtendByIds(String[] userIds);
 }
diff --git a/src/main/java/com/ots/project/exam/mapper/SysUserPaperMapper.java b/src/main/java/com/ots/project/exam/mapper/SysUserPaperMapper.java
index aeddd7b..402a7a8 100644
--- a/src/main/java/com/ots/project/exam/mapper/SysUserPaperMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/SysUserPaperMapper.java
@@ -1,61 +1,18 @@
 package com.ots.project.exam.mapper;
-
 import com.ots.project.exam.domain.SysUserPaper;
-
 import java.util.List;
 
-/**
- * 鐢ㄦ埛浜у搧Mapper鎺ュ彛
- *
- * @author ots
- * @date 2020-03-22
- */
 public interface SysUserPaperMapper {
-    /**
-     * 鏌ヨ鐢ㄦ埛浜у搧
-     *
-     * @param userId 鐢ㄦ埛浜у搧ID
-     * @return 鐢ㄦ埛浜у搧
-     */
+    
     SysUserPaper selectSysUserPaperById(Long userId);
-
-    /**
-     * 鏌ヨ鐢ㄦ埛浜у搧鍒楄〃
-     *
-     * @param sysUserPaper 鐢ㄦ埛浜у搧
-     * @return 鐢ㄦ埛浜у搧闆嗗悎
-     */
+    
     List<SysUserPaper> selectSysUserPaperList(SysUserPaper sysUserPaper);
-
-    /**
-     * 鏂板鐢ㄦ埛浜у搧
-     *
-     * @param sysUserPaper 鐢ㄦ埛浜у搧
-     * @return 缁撴灉
-     */
+    
     int insertSysUserPaper(SysUserPaper sysUserPaper);
-
-    /**
-     * 淇敼鐢ㄦ埛浜у搧
-     *
-     * @param sysUserPaper 鐢ㄦ埛浜у搧
-     * @return 缁撴灉
-     */
+    
     int updateSysUserPaper(SysUserPaper sysUserPaper);
-
-    /**
-     * 鍒犻櫎鐢ㄦ埛浜у搧
-     *
-     * @param userId 鐢ㄦ埛浜у搧ID
-     * @return 缁撴灉
-     */
+    
     int deleteSysUserPaperById(Long userId);
-
-    /**
-     * 鎵归噺鍒犻櫎鐢ㄦ埛浜у搧
-     *
-     * @param userIds 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     int deleteSysUserPaperByIds(String[] userIds);
 }
diff --git a/src/main/java/com/ots/project/exam/mapper/TExamLevelMapper.java b/src/main/java/com/ots/project/exam/mapper/TExamLevelMapper.java
index 9cbe363..db9427f 100644
--- a/src/main/java/com/ots/project/exam/mapper/TExamLevelMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/TExamLevelMapper.java
@@ -1,75 +1,26 @@
 package com.ots.project.exam.mapper;
-
 import com.ots.project.exam.domain.TExamLevel;
 import org.apache.ibatis.annotations.Param;
-
 import java.util.List;
 
-/**
- * 闂嵎绫诲瀷Mapper鎺ュ彛
- * 
- * @author ots
- * @date 2019-12-15
- */
 public interface TExamLevelMapper 
 {
-    /**
-     * 鏌ヨ闂嵎绫诲瀷
-     * 
-     * @param id 闂嵎绫诲瀷ID
-     * @return 闂嵎绫诲瀷
-     */
+    
     public TExamLevel selectTExamLevelById(Long id);
-
-    /**
-     * 鏌ヨ闂嵎绫诲瀷鍒楄〃
-     * 
-     * @param tExamLevel 闂嵎绫诲瀷
-     * @return 闂嵎绫诲瀷闆嗗悎
-     */
+    
     public List<TExamLevel> selectTExamLevelList(TExamLevel tExamLevel);
-
     public List<TExamLevel> selectTExamLevelList();
-
     public List<TExamLevel> selectTExamLevelByquestionTemplateIdList(String questionTemplateId);
-
-    /**
-     * 鏂板闂嵎绫诲瀷
-     * 
-     * @param tExamLevel 闂嵎绫诲瀷
-     * @return 缁撴灉
-     */
+    
     public int insertTExamLevel(TExamLevel tExamLevel);
-
-    /**
-     * 淇敼闂嵎绫诲瀷
-     * 
-     * @param tExamLevel 闂嵎绫诲瀷
-     * @return 缁撴灉
-     */
+    
     public int updateTExamLevel(TExamLevel tExamLevel);
-
-    /**
-     * 鍒犻櫎闂嵎绫诲瀷
-     * 
-     * @param id 闂嵎绫诲瀷ID
-     * @return 缁撴灉
-     */
+    
     public int deleteTExamLevelById(Long id);
-
-    /**
-     * 鎵归噺鍒犻櫎闂嵎绫诲瀷
-     * 
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     public int deleteTExamLevelByIds(String[] ids);
-
     List<TExamLevel> selectTExamLevelAndTSubjectById(Long id);
-
 	public TExamLevel selectTExamLevelByUuidLan(@Param("uuid") String uuid, @Param("langType") String langType);
-
 	public List<TExamLevel> selectTExamLevelByUuid(@Param("uuid") String uuid);
-
     List<TExamLevel> selectTExamLevelListByType(Integer[] types);
 }
diff --git a/src/main/java/com/ots/project/exam/mapper/TExamPaperMapper.java b/src/main/java/com/ots/project/exam/mapper/TExamPaperMapper.java
index 0581e03..a8dd18f 100644
--- a/src/main/java/com/ots/project/exam/mapper/TExamPaperMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/TExamPaperMapper.java
@@ -1,70 +1,23 @@
 package com.ots.project.exam.mapper;
-
 import com.ots.project.exam.domain.TExamPaper;
-
 import java.util.List;
 import java.util.Map;
 
-/**
- * 浜у搧鍖呭垪琛∕apper鎺ュ彛
- *
- * @author ots
- * @date 2019-11-20
- */
 public interface TExamPaperMapper {
-    /**
-     * 鏌ヨ浜у搧鍖呭垪琛�
-     *
-     * @param id 浜у搧鍖呭垪琛↖D
-     * @return 浜у搧鍖呭垪琛�
-     */
+    
     TExamPaper selectTExamPaperById(Long id);
-
-    /**
-     * 鏌ヨ浜у搧鍖呭垪琛ㄥ垪琛�
-     *
-     * @param tExamPaper 浜у搧鍖呭垪琛�
-     * @return 浜у搧鍖呭垪琛ㄩ泦鍚�
-     */
+    
     List<TExamPaper> selectTExamPaperList(TExamPaper tExamPaper);
-
-    /**
-     * 鏂板浜у搧鍖呭垪琛�
-     *
-     * @param tExamPaper 浜у搧鍖呭垪琛�
-     * @return 缁撴灉
-     */
+    
     int insertTExamPaper(TExamPaper tExamPaper);
-
-    /**
-     * 淇敼浜у搧鍖呭垪琛�
-     *
-     * @param tExamPaper 浜у搧鍖呭垪琛�
-     * @return 缁撴灉
-     */
+    
     int updateTExamPaper(TExamPaper tExamPaper);
-
-    /**
-     * 鍒犻櫎浜у搧鍖呭垪琛�
-     *
-     * @param id 浜у搧鍖呭垪琛↖D
-     * @return 缁撴灉
-     */
+    
     int deleteTExamPaperById(Long id);
-
-    /**
-     * 鎵归噺鍒犻櫎浜у搧鍖呭垪琛�
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     int deleteTExamPaperByIds(String[] ids);
-
     int updateByDelete(String[] ids);
-
     List<TExamPaper> selectProdByDeleteList(Map params);
-
     String selectEPaperMaxVBypermanentId(TExamPaper tExamPaper);
-
     int updateTExamPaperVersion(TExamPaper tExamPaper);
 }
diff --git a/src/main/java/com/ots/project/exam/mapper/TExamPaperQuestionMapper.java b/src/main/java/com/ots/project/exam/mapper/TExamPaperQuestionMapper.java
index 8e2f6f7..87b5c83 100644
--- a/src/main/java/com/ots/project/exam/mapper/TExamPaperQuestionMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/TExamPaperQuestionMapper.java
@@ -1,61 +1,19 @@
 package com.ots.project.exam.mapper;
-
 import com.ots.project.exam.domain.TExamPaperQuestion;
 import java.util.List;
 
-/**
- * 璁板綍浜у搧鍖呭搴旂殑棰樼洰缂栫爜鏂逛究鍚庨潰鐨勬煡璇㈤渶姹傦紝涓轰簡闃叉杩囧ぇ锛岀敤delete鐨勬柟寮廙apper鎺ュ彛
- * 
- * @author ots
- * @date 2020-03-03
- */
 public interface TExamPaperQuestionMapper 
 {
-    /**
-     * 鏌ヨ璁板綍浜у搧鍖呭搴旂殑棰樼洰缂栫爜鏂逛究鍚庨潰鐨勬煡璇㈤渶姹傦紝涓轰簡闃叉杩囧ぇ锛岀敤delete鐨勬柟寮�
-     * 
-     * @param paperId 璁板綍浜у搧鍖呭搴旂殑棰樼洰缂栫爜鏂逛究鍚庨潰鐨勬煡璇㈤渶姹傦紝涓轰簡闃叉杩囧ぇ锛岀敤delete鐨勬柟寮廔D
-     * @return 璁板綍浜у搧鍖呭搴旂殑棰樼洰缂栫爜鏂逛究鍚庨潰鐨勬煡璇㈤渶姹傦紝涓轰簡闃叉杩囧ぇ锛岀敤delete鐨勬柟寮�
-     */
+    
     public TExamPaperQuestion selectTExamPaperQuestionById(Long paperId);
-
-    /**
-     * 鏌ヨ璁板綍浜у搧鍖呭搴旂殑棰樼洰缂栫爜鏂逛究鍚庨潰鐨勬煡璇㈤渶姹傦紝涓轰簡闃叉杩囧ぇ锛岀敤delete鐨勬柟寮忓垪琛�
-     * 
-     * @param tExamPaperQuestion 璁板綍浜у搧鍖呭搴旂殑棰樼洰缂栫爜鏂逛究鍚庨潰鐨勬煡璇㈤渶姹傦紝涓轰簡闃叉杩囧ぇ锛岀敤delete鐨勬柟寮�
-     * @return 璁板綍浜у搧鍖呭搴旂殑棰樼洰缂栫爜鏂逛究鍚庨潰鐨勬煡璇㈤渶姹傦紝涓轰簡闃叉杩囧ぇ锛岀敤delete鐨勬柟寮忛泦鍚�
-     */
+    
     public List<TExamPaperQuestion> selectTExamPaperQuestionList(TExamPaperQuestion tExamPaperQuestion);
-
-    /**
-     * 鏂板璁板綍浜у搧鍖呭搴旂殑棰樼洰缂栫爜鏂逛究鍚庨潰鐨勬煡璇㈤渶姹傦紝涓轰簡闃叉杩囧ぇ锛岀敤delete鐨勬柟寮�
-     * 
-     * @param tExamPaperQuestion 璁板綍浜у搧鍖呭搴旂殑棰樼洰缂栫爜鏂逛究鍚庨潰鐨勬煡璇㈤渶姹傦紝涓轰簡闃叉杩囧ぇ锛岀敤delete鐨勬柟寮�
-     * @return 缁撴灉
-     */
+    
     public int insertTExamPaperQuestion(TExamPaperQuestion tExamPaperQuestion);
-
-    /**
-     * 淇敼璁板綍浜у搧鍖呭搴旂殑棰樼洰缂栫爜鏂逛究鍚庨潰鐨勬煡璇㈤渶姹傦紝涓轰簡闃叉杩囧ぇ锛岀敤delete鐨勬柟寮�
-     * 
-     * @param tExamPaperQuestion 璁板綍浜у搧鍖呭搴旂殑棰樼洰缂栫爜鏂逛究鍚庨潰鐨勬煡璇㈤渶姹傦紝涓轰簡闃叉杩囧ぇ锛岀敤delete鐨勬柟寮�
-     * @return 缁撴灉
-     */
+    
     public int updateTExamPaperQuestion(TExamPaperQuestion tExamPaperQuestion);
-
-    /**
-     * 鍒犻櫎璁板綍浜у搧鍖呭搴旂殑棰樼洰缂栫爜鏂逛究鍚庨潰鐨勬煡璇㈤渶姹傦紝涓轰簡闃叉杩囧ぇ锛岀敤delete鐨勬柟寮�
-     * 
-     * @param paperId 璁板綍浜у搧鍖呭搴旂殑棰樼洰缂栫爜鏂逛究鍚庨潰鐨勬煡璇㈤渶姹傦紝涓轰簡闃叉杩囧ぇ锛岀敤delete鐨勬柟寮廔D
-     * @return 缁撴灉
-     */
+    
     public int deleteTExamPaperQuestionById(Long paperId);
-
-    /**
-     * 鎵归噺鍒犻櫎璁板綍浜у搧鍖呭搴旂殑棰樼洰缂栫爜鏂逛究鍚庨潰鐨勬煡璇㈤渶姹傦紝涓轰簡闃叉杩囧ぇ锛岀敤delete鐨勬柟寮�
-     * 
-     * @param paperIds 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     public int deleteTExamPaperQuestionByIds(String[] paperIds);
 }
diff --git a/src/main/java/com/ots/project/exam/mapper/TExamReportMapper.java b/src/main/java/com/ots/project/exam/mapper/TExamReportMapper.java
index 1712e84..54a5d87 100644
--- a/src/main/java/com/ots/project/exam/mapper/TExamReportMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/TExamReportMapper.java
@@ -1,94 +1,33 @@
 package com.ots.project.exam.mapper;
-
 import com.ots.project.exam.domain.TExamReport;
-
 import java.util.List;
 import java.util.Map;
 
-/**
- * 璇勬祴鎶ュ憡Mapper鎺ュ彛
- *
- * @author ots
- * @date 2019-12-26
- */
 public interface TExamReportMapper {
-    /**
-     * 鏌ヨ璇勬祴鎶ュ憡
-     *
-     * @param id 璇勬祴鎶ュ憡ID
-     * @return 璇勬祴鎶ュ憡
-     */
+    
     TExamReport selectTExamReportById(Long id);
-
-    /**
-     * 鏌ヨ璇勬祴鎶ュ憡鍒楄〃
-     *
-     * @param tExamReport 璇勬祴鎶ュ憡
-     * @return 璇勬祴鎶ュ憡闆嗗悎
-     */
+    
     List<TExamReport> selectTExamReportList(TExamReport tExamReport);
-
+    List<TExamReport> selectTExamReportNoStatusList(TExamReport tExamReport);
     List<TExamReport> selectTExamHrEmailiReportList(TExamReport tExamReport);
-
     List<TExamReport> selectViewReportList(TExamReport tExamReport);
-
     List<TExamReport> selectHrResendTask(TExamReport tExamReport);
-
-    /**
-     * 鏂板璇勬祴鎶ュ憡
-     *
-     * @param tExamReport 璇勬祴鎶ュ憡
-     * @return 缁撴灉
-     */
+    
     int insertTExamReport(TExamReport tExamReport);
-
-    /**
-     * 淇敼璇勬祴鎶ュ憡
-     *
-     * @param tExamReport 璇勬祴鎶ュ憡
-     * @return 缁撴灉
-     */
+    
     int updateTExamReport(TExamReport tExamReport);
-
     int updateTExamReportStatus(TExamReport tExamReport);
-
     int updateTExamReportByTokenId(TExamReport tExamReport);
-
-    /**
-     * 鍒犻櫎璇勬祴鎶ュ憡
-     *
-     * @param id 璇勬祴鎶ュ憡ID
-     * @return 缁撴灉
-     */
+    
     int deleteTExamReportById(Long id);
-
-    /**
-     * 鎵归噺鍒犻櫎璇勬祴鎶ュ憡
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     int deleteTExamReportByIds(String[] ids);
-
-    /**
-     * 鎵归噺鏇存柊瀹℃牳鐘舵��
-     *
-     * @param params
-     * @return
-     */
+    
     int updateTExamReportByIds(Map params);
-
-    // 缁欐祴璇曞寘鐢ㄦ埛浣跨敤
+    
     List<TExamReport> selectTExamReportByTokenList(String[] tokenIds);
-
     List<TExamReport> selectTExamReportByIds(String[] ids);
-
-    /**
-     * 鏍规嵁鐢ㄦ埛id鏌ヨ鎶ュ憡
-     * @param ids
-     * @return
-     */
+    
     List<TExamReport> selectTReportTemplatesByMemberId(String[] ids);
-
     int updateTExamReportDeleteLastOneByTokenId(TExamReport tExamReport);
 }
diff --git a/src/main/java/com/ots/project/exam/mapper/TQuestionMapper.java b/src/main/java/com/ots/project/exam/mapper/TQuestionMapper.java
index 9bce59b..3bbfa1b 100644
--- a/src/main/java/com/ots/project/exam/mapper/TQuestionMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/TQuestionMapper.java
@@ -1,78 +1,27 @@
 package com.ots.project.exam.mapper;
-
 import com.ots.project.exam.domain.TQuestion;
 import org.apache.ibatis.annotations.Param;
-
 import java.util.List;
 
-/**
- * 棰樼洰鍒楄〃Mapper鎺ュ彛
- *
- * @author Shawn
- * @date 2019-11-20
- */
 public interface TQuestionMapper {
-    /**
-     * 鏌ヨ棰樼洰鍒楄〃
-     *
-     * @param id 棰樼洰鍒楄〃ID
-     * @return 棰樼洰鍒楄〃
-     */
+    
     TQuestion selectTQuestionById(Long id);
-
     List<TQuestion> selectTQuestionByPermanentId(String permanentId);
-
     List<TQuestion> selectTQuestionByIds(List<Long> ids);
-
-    /**
-     * 鏌ヨ棰樼洰鍒楄〃鍒楄〃
-     *
-     * @param tQuestion 棰樼洰鍒楄〃
-     * @return 棰樼洰鍒楄〃闆嗗悎
-     */
+    
     List<TQuestion> selectTQuestionList(TQuestion tQuestion);
-
     List<TQuestion> selectTQuestionsForProductAddQuestion(TQuestion tQuestion);
-
     List<TQuestion> selectTQuestionScore(Integer[] ids);
-
-    /**
-     * 鏂板棰樼洰鍒楄〃
-     *
-     * @param tQuestion 棰樼洰鍒楄〃
-     * @return 缁撴灉
-     */
+    
     int insertTQuestion(TQuestion tQuestion);
-
-    /**
-     * 淇敼棰樼洰鍒楄〃
-     *
-     * @param tQuestion 棰樼洰鍒楄〃
-     * @return 缁撴灉
-     */
+    
     int updateTQuestion(TQuestion tQuestion);
-
     int updateTQuestionByPermanentId(TQuestion tQuestion);
-
-    /**
-     * 鍒犻櫎棰樼洰鍒楄〃
-     *
-     * @param id 棰樼洰鍒楄〃ID
-     * @return 缁撴灉
-     */
+    
     int deleteTQuestionById(Long id);
-
-    /**
-     * 鎵归噺鍒犻櫎棰樼洰鍒楄〃
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     int deleteTQuestionByIds(String[] ids);
-
     int updateQuetionByDelete(String[] ids);
-
     List<TQuestion> selectByIds(@Param("ids") List<Integer> ids);
-
     List<TQuestion> selectTQuestionByPermanentIds( List<String> permanentIds);
 }
diff --git a/src/main/java/com/ots/project/exam/mapper/TReportTemplateMapper.java b/src/main/java/com/ots/project/exam/mapper/TReportTemplateMapper.java
index bdbcaa0..fd64d6f 100644
--- a/src/main/java/com/ots/project/exam/mapper/TReportTemplateMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/TReportTemplateMapper.java
@@ -1,65 +1,21 @@
 package com.ots.project.exam.mapper;
-
 import com.ots.project.exam.domain.TReportTemplate;
 import java.util.List;
 
-/**
- * 鎶ュ憡妯℃澘閰嶇疆Mapper鎺ュ彛
- * 
- * @author ots
- * @date 2020-03-24
- */
 public interface TReportTemplateMapper 
 {
-    /**
-     * 鏌ヨ鎶ュ憡妯℃澘閰嶇疆
-     * 
-     * @param id 鎶ュ憡妯℃澘閰嶇疆ID
-     * @return 鎶ュ憡妯℃澘閰嶇疆
-     */
+    
     public TReportTemplate selectTReportTemplateById(Long id);
-
-    /**
-     * 鏌ヨ鎶ュ憡妯℃澘閰嶇疆鍒楄〃
-     * 
-     * @param tReportTemplate 鎶ュ憡妯℃澘閰嶇疆
-     * @return 鎶ュ憡妯℃澘閰嶇疆闆嗗悎
-     */
+    
     public List<TReportTemplate> selectTReportTemplateList(TReportTemplate tReportTemplate);
-
     public List<TReportTemplate> selectTReportTemplates(String[] ids);
-
    TReportTemplate selectTReportTemplate(TReportTemplate tReportTemplate);
-
-    /**
-     * 鏂板鎶ュ憡妯℃澘閰嶇疆
-     * 
-     * @param tReportTemplate 鎶ュ憡妯℃澘閰嶇疆
-     * @return 缁撴灉
-     */
+    
     public int insertTReportTemplate(TReportTemplate tReportTemplate);
-
-    /**
-     * 淇敼鎶ュ憡妯℃澘閰嶇疆
-     * 
-     * @param tReportTemplate 鎶ュ憡妯℃澘閰嶇疆
-     * @return 缁撴灉
-     */
+    
     public int updateTReportTemplate(TReportTemplate tReportTemplate);
-
-    /**
-     * 鍒犻櫎鎶ュ憡妯℃澘閰嶇疆
-     * 
-     * @param id 鎶ュ憡妯℃澘閰嶇疆ID
-     * @return 缁撴灉
-     */
+    
     public int deleteTReportTemplateById(Long id);
-
-    /**
-     * 鎵归噺鍒犻櫎鎶ュ憡妯℃澘閰嶇疆
-     * 
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     public int deleteTReportTemplateByIds(String[] ids);
 }
diff --git a/src/main/java/com/ots/project/exam/mapper/TSubjectMapper.java b/src/main/java/com/ots/project/exam/mapper/TSubjectMapper.java
index fdf272d..eb6722d 100644
--- a/src/main/java/com/ots/project/exam/mapper/TSubjectMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/TSubjectMapper.java
@@ -1,68 +1,21 @@
 package com.ots.project.exam.mapper;
-
 import com.ots.project.exam.domain.TSubject;
-
 import java.util.List;
 
-/**
- * 缁村害琛∕apper鎺ュ彛
- *
- * @author ots
- * @date 2019-12-09
- */
 public interface TSubjectMapper {
-    /**
-     * 鏌ヨ缁村害琛�
-     *
-     * @param id 缁村害琛↖D
-     * @return 缁村害琛�
-     */
+    
     TSubject selectTSubjectById(Long id);
-
-    /**
-     * 鏌ヨ缁村害琛ㄥ垪琛�
-     *
-     * @param tSubject 缁村害琛�
-     * @return 缁村害琛ㄩ泦鍚�
-     */
+    
     List<TSubject> selectTSubjectList(TSubject tSubject);
-
-
     List<TSubject> selectTSubjectList();
-
-    /**
-     * 鏂板缁村害琛�
-     *
-     * @param tSubject 缁村害琛�
-     * @return 缁撴灉
-     */
+    
     int insertTSubject(TSubject tSubject);
-
-    /**
-     * 淇敼缁村害琛�
-     *
-     * @param tSubject 缁村害琛�
-     * @return 缁撴灉
-     */
+    
     int updateTSubject(TSubject tSubject);
-
-    /**
-     * 鍒犻櫎缁村害琛�
-     *
-     * @param id 缁村害琛↖D
-     * @return 缁撴灉
-     */
+    
     int deleteTSubjectById(Long id);
-
-    /**
-     * 鎵归噺鍒犻櫎缁村害琛�
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     int deleteTSubjectByIds(String[] ids);
-
     TSubject selectTSubjectAndTLeveById(Long id);
-
     List<TSubject> selectTSubjectAndTLeveByTemplateId(String questionTemplateId);
 }
diff --git a/src/main/java/com/ots/project/exam/mapper/TTextContentMapper.java b/src/main/java/com/ots/project/exam/mapper/TTextContentMapper.java
index 420bdb1..5536664 100644
--- a/src/main/java/com/ots/project/exam/mapper/TTextContentMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/TTextContentMapper.java
@@ -1,70 +1,23 @@
 package com.ots.project.exam.mapper;
-
 import com.ots.project.exam.domain.TTextContent;
 import com.ots.project.exam.domain.TTextContentAndQuestion;
-
 import java.util.List;
 
-/**
- * 棰樼洰鐨勫唴瀹筂apper鎺ュ彛
- *
- * @author ots
- * @date 2019-11-24
- */
 public interface TTextContentMapper {
-    /**
-     * 鏌ヨ棰樼洰鐨勫唴瀹�
-     *
-     * @param id 棰樼洰鐨勫唴瀹笽D
-     * @return 棰樼洰鐨勫唴瀹�
-     */
+    
     public TTextContent selectTTextContentById(Long id);
-
-    //鐢╥n鐨勬柟寮忔煡璇�
+    
     public List<TTextContent> selectTTextContentByIds(String[] ids);
-
-    //甯uestionId鐨�
+    
     public List<TTextContentAndQuestion> selectTextContentAndQuestion(String[] ids);
-
-
-    /**
-     * 鏌ヨ棰樼洰鐨勫唴瀹瑰垪琛�
-     *
-     * @param tTextContent 棰樼洰鐨勫唴瀹�
-     * @return 棰樼洰鐨勫唴瀹归泦鍚�
-     */
+    
     public List<TTextContent> selectTTextContentList(TTextContent tTextContent);
-
-    /**
-     * 鏂板棰樼洰鐨勫唴瀹�
-     *
-     * @param tTextContent 棰樼洰鐨勫唴瀹�
-     * @return 缁撴灉
-     */
+    
     public int insertTTextContent(TTextContent tTextContent);
-
-    /**
-     * 淇敼棰樼洰鐨勫唴瀹�
-     *
-     * @param tTextContent 棰樼洰鐨勫唴瀹�
-     * @return 缁撴灉
-     */
+    
     public int updateTTextContent(TTextContent tTextContent);
-
-    /**
-     * 鍒犻櫎棰樼洰鐨勫唴瀹�
-     *
-     * @param id 棰樼洰鐨勫唴瀹笽D
-     * @return 缁撴灉
-     */
+    
     public int deleteTTextContentById(Long id);
-
-    /**
-     * 鎵归噺鍒犻櫎棰樼洰鐨勫唴瀹�
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     public int deleteTTextContentByIds(String[] ids);
-
 }
diff --git a/src/main/java/com/ots/project/exam/mapper/TaskExamCustomerAnswerMapper.java b/src/main/java/com/ots/project/exam/mapper/TaskExamCustomerAnswerMapper.java
index 65dbbec..34a07ec 100644
--- a/src/main/java/com/ots/project/exam/mapper/TaskExamCustomerAnswerMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/TaskExamCustomerAnswerMapper.java
@@ -1,26 +1,16 @@
 package com.ots.project.exam.mapper;
-
 import com.ots.project.exam.domain.TaskExamCustomerAnswer;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
-
 import java.util.List;
-
 @Mapper
 public interface TaskExamCustomerAnswerMapper extends BaseMapper<TaskExamCustomerAnswer> {
     int deleteByPrimaryKey(Integer id);
-
     int insert(TaskExamCustomerAnswer record);
-
     int insertSelective(TaskExamCustomerAnswer record);
-
     TaskExamCustomerAnswer selectByPrimaryKey(Integer id);
-
     int updateByPrimaryKeySelective(TaskExamCustomerAnswer record);
-
     int updateByPrimaryKey(TaskExamCustomerAnswer record);
-
     TaskExamCustomerAnswer getByTUid(@Param("tid") Integer tid, @Param("uid") Integer uid);
-
     List<TaskExamCustomerAnswer> selectByTUid(@Param("taskIds") List<Integer> taskIds, @Param("uid") Integer uid);
 }
diff --git a/src/main/java/com/ots/project/exam/mapper/UserEventLogMapper.java b/src/main/java/com/ots/project/exam/mapper/UserEventLogMapper.java
index 98992ae..69c8218 100644
--- a/src/main/java/com/ots/project/exam/mapper/UserEventLogMapper.java
+++ b/src/main/java/com/ots/project/exam/mapper/UserEventLogMapper.java
@@ -1,33 +1,20 @@
 package com.ots.project.exam.mapper;
-
-
 import com.ots.project.exam.domain.UserEventLog;
 import com.ots.project.exam.dto.KeyValue;
 import com.ots.project.exam.viewmodel.UserEventPageRequestVM;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
-
 import java.util.Date;
 import java.util.List;
-
 @Mapper
 public interface UserEventLogMapper extends BaseMapper<UserEventLog> {
-
     int deleteByPrimaryKey(Integer id);
-
     int insert(UserEventLog record);
-
     int insertSelective(UserEventLog record);
-
     UserEventLog selectByPrimaryKey(Integer id);
-
     int updateByPrimaryKeySelective(UserEventLog record);
-
     int updateByPrimaryKey(UserEventLog record);
-
     List<UserEventLog> getUserEventLogByUserId(Integer id);
-
     List<UserEventLog> page(UserEventPageRequestVM requestVM);
-
     List<KeyValue> selectCountByDate(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
 }
diff --git a/src/main/java/com/ots/project/exam/restcontroller/DashboardController.java b/src/main/java/com/ots/project/exam/restcontroller/DashboardController.java
index ffb8b2b..33b37ef 100644
--- a/src/main/java/com/ots/project/exam/restcontroller/DashboardController.java
+++ b/src/main/java/com/ots/project/exam/restcontroller/DashboardController.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.restcontroller;
-
 import com.ots.common.enums.ExamPaperTypeEnum;
 import com.ots.project.common.BaseApiController;
 import com.ots.project.exam.domain.ExamUser;
@@ -16,35 +15,28 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
-
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
-
 @RestController("StudentDashboardController")
 @RequestMapping(value = "/api/exam/dashboard")
 @AllArgsConstructor
 public class DashboardController extends BaseApiController {
-
     @Autowired
     private IExamPaperService examPaperService;
-
     @RequestMapping(value = "/index", method = RequestMethod.POST)
     public RestResponse<IndexVM> index() {
         IndexVM indexVM = new IndexVM();
         ExamUser user = getCurrentUser();
-
         PaperFilter fixedPaperFilter = new PaperFilter();
         fixedPaperFilter.setGradeLevel(user.getUserLevel());
         fixedPaperFilter.setExamPaperType(ExamPaperTypeEnum.Fixed.getCode());
         indexVM.setFixedPaper(examPaperService.indexPaper(fixedPaperFilter));
-
         PaperFilter timeLimitPaperFilter = new PaperFilter();
         timeLimitPaperFilter.setDateTime(new Date());
         timeLimitPaperFilter.setGradeLevel(user.getUserLevel());
         timeLimitPaperFilter.setExamPaperType(ExamPaperTypeEnum.TimeLimit.getCode());
-
         List<PaperInfo> limitPaper = examPaperService.indexPaper(timeLimitPaperFilter);
         List<PaperInfoVM> paperInfoVMS = limitPaper.stream().map(d -> {
             PaperInfoVM vm = modelMapper.map(d, PaperInfoVM.class);
@@ -55,7 +47,6 @@
         indexVM.setTimeLimitPaper(paperInfoVMS);
         return RestResponse.ok(indexVM);
     }
-
     @RequestMapping(value = "/task", method = RequestMethod.POST)
     public RestResponse<List<TaskItemVm>> task() {
         return RestResponse.ok(new ArrayList<>());
diff --git a/src/main/java/com/ots/project/exam/restcontroller/ExamPaperAnswerController.java b/src/main/java/com/ots/project/exam/restcontroller/ExamPaperAnswerController.java
index 5f5f453..293e36d 100644
--- a/src/main/java/com/ots/project/exam/restcontroller/ExamPaperAnswerController.java
+++ b/src/main/java/com/ots/project/exam/restcontroller/ExamPaperAnswerController.java
@@ -1,6 +1,4 @@
 package com.ots.project.exam.restcontroller;
-
-
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.ots.common.enums.LangTypeEnum;
@@ -28,20 +26,16 @@
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-
 import javax.validation.Valid;
 import java.util.*;
 import java.util.stream.Collectors;
-
 import static com.ots.common.enums.ReportTypeEnum.Brief;
 import static com.ots.common.enums.SenderCode.noSend;
 import static com.ots.common.enums.SenderCode.send;
-
 @RestController("StudentExamPaperAnswerController")
 @RequestMapping(value = "/api/exam/exampaper/answer")
 @AllArgsConstructor
 public class ExamPaperAnswerController extends BaseApiController {
-
     @Autowired
     private ExamPaperAnswerService examPaperAnswerService;
     @Autowired
@@ -57,53 +51,41 @@
     @Autowired
     private TExamPaperServiceImpl examPaperService;
     private static final Logger logger = LoggerFactory.getLogger(Threads.class);
-
-    // 绛旈鎻愪氦
+    
     @RequestMapping(value = "/answerSubmit/{tokenId}", method = RequestMethod.POST)
     public RestResponse answerSubmit(@RequestBody @Valid ExamPaperSubmitVM examPaperSubmitVM, @PathVariable String tokenId) {
         logger.info("tokenId:" + tokenId);
         logger.info("itemOrder:" + examPaperSubmitVM.getItemOrder());
-
         try {
-            // 1銆佹煡璇㈠嚭鐢ㄦ埛鐨勪俊鎭�
+            
             ExamUser user = new ExamUser();
-            // testId绛�
+            
             RelatedParty relatedParty = memberService.queryProdidByToken(tokenId);
-            //鍏ヤ汉鍙e鐨勯敭鍊�
-            // Map<String, String> examInfoMap = getDemographicReport(tokenId, user);
-            // dataReportList 瀵瑰簲鍩虹鏁版嵁瀵煎嚭content閭d釜瀛楁
+            
+            
+            
             List<DataReport> dataReportList = getDemographicDataReport(examPaperSubmitVM, tokenId, user);
-
-            // 3銆佹妸question鍙栧嚭鏉�
+            
             Map<Long, QuestionObject> questionObjectMap = getLongQuestionObjectMap(examPaperSubmitVM);
-
-            // 4銆佹祴璇曞寘鍚嶇О銆佷骇鍝佸悕绉般�佹祴璇曞紑濮嬫椂闂淬�佹祴璇曞畬鎴愭椂闂寸殑
-            // setReportInfo(examPaperSubmitVM, relatedParty, examInfoMap);
+            
+            
             setReportInfo(examPaperSubmitVM, relatedParty, dataReportList);
-
             examPaperSubmitVM.setInterfaceContentList(new ArrayList<>());
             TExamReport tExamReportQuery = new TExamReport();
             tExamReportQuery.setTokenId(tokenId);
             setExamPaperSubTERList(examPaperSubmitVM, tExamReportQuery);
-
-            // 5銆佷繚瀛樿皟鐢ㄦ嘲鍥藉洟闃熺殑鏁版嵁锛岀涓�娈电粨鏉熻皟鐢ㄦ嘲鍥藉洟闃�
-            // setRemoteCallReport(examPaperSubmitVM, tokenId, relatedParty, dataReportList);
-
-            //6銆佸舰鎴愰鐩�佸洖绛旈�夐」,闇�瑕佹潈闄愮瓑绛�
-            // setQuestionAndAnswer(examPaperSubmitVM, tokenId, relatedParty, dataReportList, questionObjectMap);
-
-            // 7銆佷笂涓�娆¢�変粈涔�
+            
+            
+            
+            
+            
             Map<String, String> lastContentMap = getLastChioce(examPaperSubmitVM);
-
-            // 8銆佽繖娆¢�変粈涔�
+            
             Map<String, String> choiceMap = getThisChioce(examPaperSubmitVM);
-
-            // 9銆佽缃姤琛ㄧ殑鍐呭
+            
             setQuestionReport(examPaperSubmitVM);
-
-            // 10銆侀鐩叆搴�
+            
             ExamPaperAnswerInfo examPaperAnswerInfo = answerSubmitResult(examPaperSubmitVM, tokenId, relatedParty, user, dataReportList, lastContentMap, choiceMap);
-
             return RestResponse.ok(examPaperAnswerInfo.getSubmitReport());
         } catch (Exception e) {
             logger.error("{}", e.getMessage(), e);
@@ -116,25 +98,21 @@
             throw e;
         }
     }
-
     private void setExamPaperSubTERList(@RequestBody @Valid ExamPaperSubmitVM examPaperSubmitVM, TExamReport tExamReportQuery) {
         List<TExamReport> tExamReportList = examReportService.selectTExamReportList(tExamReportQuery);
         if (ExamUtil.isListEmpty(tExamReportList)) {
             tExamReportList = new ArrayList<>();
         }
-
         examPaperSubmitVM.setTExamReportList(tExamReportList);
     }
-
     private void setRemoteCallReport(ExamPaperSubmitVM examPaperSubmitVM, @PathVariable String tokenId, RelatedParty relatedParty, List<DataReport> dataReportList) {
         List<InterfaceContent> interfaceContentList = examPaperSubmitVM.getInterfaceContentList();
         if (!StringUtils.equals(examPaperSubmitVM.getIsCallTain(), "callTain")) {
-            // 瑕佸彇鍘熸潵鐨勬暟鎹�
+            
             setInterfaceContent(examPaperSubmitVM, interfaceContentList);
             return;
         }
-
-        // 妯℃嫙璋冪敤
+        
         Map<String, String> thaiCalculationMap = new HashMap<>();
         MAQReport maqReport = new MAQReport();
         maqReport.setQuestionnaireTaker(relatedParty.getMemberName());
@@ -151,7 +129,6 @@
         thaiCalculationMap.put("P_Creat02", "80");
         ReportResultData resultData = maqReport.getTemplateParameters(thaiCalculationMap, Brief, LangTypeEnum.English);
         Map<String, String> thaiDataMap = resultData.getTextMap();
-
         InterfaceContent interfaceContent = new InterfaceContent();
         interfaceContent.setPartOrder(examPaperSubmitVM.getPartOrder());
         interfaceContent.setDataReportList(new ArrayList<>());
@@ -159,13 +136,10 @@
         thaiDataMap.forEach((key, value) -> {
             iterFDataReportList.add(new DataReport(key, value, UserTypeEnum.SYS_USER.getUserType(), examPaperSubmitVM.getLangType()));
         });
-
-        // 鎶婃棫鐨剅eport琛ㄦ暟鎹嬁鍑烘潵
+        
         setInterfaceContent(examPaperSubmitVM, interfaceContentList);
-
         interfaceContentList.add(interfaceContent);
     }
-
     private void setInterfaceContent(ExamPaperSubmitVM examPaperSubmitVM, List<InterfaceContent> interfaceContentList) {
         if (ExamUtil.isListNotEmpty(examPaperSubmitVM.getTExamReportList())) {
             List<InterfaceContent> interfaceContentOldList = null;
@@ -176,8 +150,7 @@
             }
         }
     }
-
-    // 娴嬭瘯鍖呭悕绉般�佷骇鍝佸悕绉般�佹祴璇曞紑濮嬫椂闂淬�佹祴璇曞畬鎴愭椂闂寸殑
+    
     private void setReportInfo(@RequestBody @Valid ExamPaperSubmitVM examPaperSubmitVM, RelatedParty relatedParty, List<DataReport> dataReportList) {
         dataReportList.add(new DataReport("Test Package", relatedParty.getTestName(), "", examPaperSubmitVM.getLangType()));
         dataReportList.add(new DataReport("Test", relatedParty.getProdName(), "", examPaperSubmitVM.getLangType()));
@@ -187,8 +160,7 @@
         dataReportList.add(new DataReport("Begin Time", beginTime, "", examPaperSubmitVM.getLangType()));
         dataReportList.add(new DataReport("End Time", endTime, "", examPaperSubmitVM.getLangType()));
     }
-
-    // 杩欐閫変粈涔�
+    
     private Map<String, String> getThisChioce(@RequestBody @Valid ExamPaperSubmitVM examPaperSubmitVM) {
         Map<String, String> choiceMap = new LinkedHashMap<String, String>();
         examPaperSubmitVM.getAnswerItems().stream().forEach(it -> {
@@ -196,8 +168,7 @@
         });
         return choiceMap;
     }
-
-    // 涓婁竴娆¢�変粈涔�
+    
     private Map<String, String> getLastChioce(@RequestBody @Valid ExamPaperSubmitVM examPaperSubmitVM) {
         Map<String, String> lastContentMap = new LinkedHashMap<String, String>();
         examPaperSubmitVM.getAnswerItems().stream().forEach(it -> {
@@ -205,40 +176,34 @@
         });
         return lastContentMap;
     }
-
-    // 4銆佸舰鎴愰鐩�佸洖绛旈�夐」
+    
     private void setQuestionAndAnswer(@RequestBody @Valid ExamPaperSubmitVM examPaperSubmitVM, String tokenId, RelatedParty relatedParty, List<DataReport> dataReportList, Map<Long, QuestionObject> questionObjectMap) {
-
         List<QuestionAnswer> questionAnswers = examPaperSubmitVM.getAnswerItems().stream().map(item -> {
-
-            //棰樺共锛屽洖绛旈」
+            
             QuestionAnswer questionAnswer = new QuestionAnswer();
             QuestionObject questionObject = questionObjectMap.get(item.getQuestionId().longValue());
-
             try {
-                //1.鍙栭骞�
+                
                 questionAnswer.setQuestionItem(item.getItemOrder() + "." + ExamUtil.html2Text(questionObject.getTitleContent()));
-                //2銆佸彇鍥炵瓟鐨勯�夐」
+                
                 questionObject.getQuestionItemObjects().stream().forEach(q -> {
                     if (item.getContent().equals(q.getPrefix())) {
                         questionAnswer.setAnswerItem(q.getContent());
                     }
                 });
-                // 3銆侀鐩案涔呯紪鍙�
+                
                 questionAnswer.setPermanentId(item.getQuestionReport().getPermanentId());
-
-                // 4銆佹湰棰樼洰鍦ㄩ偅涓�娈�
+                
                 questionAnswer.setPartOrder(item.getQuestionReport().getPartOrder());
             } catch (Exception e) {
             }
             return questionAnswer;
         }).collect(Collectors.toList());
-
         for (int i = 0; i < questionAnswers.size(); i++) {
             if (StringUtils.isEmpty(questionAnswers.get(i).getAnswerItem())) {
                 break;
             }
-            // 鎻掑叆娉板浗鍥㈤槦杩涙潵鐨勬暟鎹紝閫犳暟鎹紝濡傛灉璺冲埌浜嗕笅涓�娈碉紝閭e氨鎻掑叆娉板浗鍥㈤槦鐨勬暟鎹�
+            
             if (i == 0 || questionAnswers.get(i - 1).getPartOrder() != questionAnswers.get(i).getPartOrder()) {
                 if (ExamUtil.isListNotEmpty(examPaperSubmitVM.getInterfaceContentList())) {
                     InterfaceContent interfaceContent = examPaperSubmitVM.getInterfaceContentList().get(0);
@@ -248,28 +213,26 @@
             dataReportList.add(new DataReport(questionAnswers.get(i).getPermanentId(), questionAnswers.get(i).getAnswerItem(), UserTypeEnum.SYS_USER.getUserType(), examPaperSubmitVM.getLangType()));
         }
     }
-
-    // 鎶妐uestion鍙栧嚭鏉�
+    
     private Map<Long, QuestionObject> getLongQuestionObjectMap(@RequestBody @Valid ExamPaperSubmitVM examPaperSubmitVM) {
         List<Long> questionIdList = examPaperSubmitVM.getAnswerItems().stream().map(i -> {
             return i.getQuestionId().longValue();
         }).collect(Collectors.toList());
-        //鎶妐uesitonId鍙栧嚭鏉�
+        
         List<TQuestion> tQuestionList = questionService.selectTQuestionByIds(questionIdList);
-        //棰樼洰id锛屾妸棰樺共锛岄�夐」涔嬬被鐨勫唴瀹瑰彇鍑烘潵
+        
         Map<Long, QuestionObject> questionObjectMap = new HashMap<Long, QuestionObject>();
         tQuestionList.stream().forEach(it -> {
             questionObjectMap.put(it.getId(), JSONObject.parseObject(it.getContent(), QuestionObject.class));
         });
         return questionObjectMap;
     }
-
-    //鍏ヤ汉鍙e鐨勯敭鍊�
+    
     private Map<String, String> getDemographicReport(@PathVariable String tokenId, ExamUser user) {
         Map<String, String> examInfoMap = new LinkedHashMap<String, String>();
         try {
             List<EntDemographyInfo> entDemographyInfoList = memberService.queryDemographyParamInfo(tokenId);
-            //2銆佽幏鍙栫敤鎴风殑鍊�
+            
             EntDemographyInfo entDemographyInfo = entDemographyInfoList.get(0);
             user.setId(entDemographyInfo.getMemberId().intValue());
             entDemographyInfoList.stream().forEach(item -> examInfoMap.put(item.getParamName(), item.getParamValue()));
@@ -279,13 +242,12 @@
         }
         return examInfoMap;
     }
-
-    //鍏ヤ汉鍙e鐨勯敭鍊�
+    
     private List<DataReport> getDemographicDataReport(ExamPaperSubmitVM examPaperSubmitVM, @PathVariable String tokenId, ExamUser user) {
         List<DataReport> dataReportList = new ArrayList<>();
         try {
             List<EntDemographyInfo> entDemographyInfoList = memberService.queryDemographyParamInfo(tokenId);
-            //2銆佽幏鍙栫敤鎴风殑鍊�
+            
             EntDemographyInfo entDemographyInfo = entDemographyInfoList.get(0);
             user.setId(entDemographyInfo.getMemberId().intValue());
             entDemographyInfoList.stream().forEach(item -> {
@@ -297,11 +259,10 @@
         }
         return dataReportList;
     }
-
     private void setQuestionReport(@RequestBody @Valid ExamPaperSubmitVM examPaperSubmitVM) {
         List<ExamPaperTitleItemVM> titleItems = examPaperSubmitVM.getTitleItems();
         List<ExamPaperSubmitItemVM> anserItems = examPaperSubmitVM.getAnswerItems();
-        // 浜烘牸娴嬭瘯棰橈紝鍙湁涓�娈电殑
+        
         if (Objects.isNull(titleItems)) {
             if (Objects.isNull(anserItems)) {
                 return;
@@ -311,23 +272,22 @@
                 questionReport.setId(questionReport.getQuestionOrder() + 1);
                 questionReport.setTimeSpent(ExamUtil.timeSpent(DateTimeUtil.parseToOften(questionReport.getStartTime()), DateTimeUtil.parseToOften(questionReport.getEndTime())));
             }
-            // else 宸ヤ綔闂嵎娴嬭瘯棰�
+            
         } else {
             for (ExamPaperTitleItemVM examPaperTitleItemVM : titleItems) {
-                // 璁板綍JAQ灏忛
+                
                 QuestionReport questionReport = examPaperTitleItemVM.getQuestionReport();
                 questionReport.setId(questionReport.getQuestionOrder() + 1);
                 questionReport.setTimeSpent(ExamUtil.timeSpent(DateTimeUtil.parseToOften(questionReport.getStartTime()), DateTimeUtil.parseToOften(questionReport.getEndTime())));
             }
         }
     }
-
     private ExamPaperAnswerInfo answerSubmitResult(@RequestBody @Valid ExamPaperSubmitVM examPaperSubmitVM, @PathVariable String tokenId, RelatedParty relatedParty, ExamUser user, List<DataReport> dataReportList, Map<String, String> lastContentMap, Map<String, String> choiceMap) {
         TExamReport tExamReport = new TExamReport();
         TExamReport tExamReportQuery = new TExamReport();
         tExamReport.setContent(JSON.toJSON(dataReportList).toString());
         tExamReport.setProductId(examPaperSubmitVM.getId().longValue());
-        tExamReport.setQuestionReport(getQuestionReportsJson(examPaperSubmitVM));// 鎶ュ憡瀛楁
+        tExamReport.setQuestionReport(getQuestionReportsJson(examPaperSubmitVM));
         ExamPaperAnswerInfo examPaperAnswerInfo = examPaperAnswerService.calculateExamPaperAnswer(examPaperSubmitVM, user);
         TExamPaper examPaper = examPaperAnswerInfo.getExamPaper();
         tExamReport.setProductName(examPaper.getName());
@@ -337,125 +297,100 @@
         tExamReport.setChoice(JSON.toJSON(choiceMap).toString());
         tExamReport.setDoTime(examPaperSubmitVM.getDoTime());
         tExamReport.setLangType(examPaperSubmitVM.getLangType());
-        // 鏄惁鑷姩鍙戦�佺姸鎬佹姤鍛�
+        
         setAutoSendReportStatus(relatedParty, tExamReport);
         BeanUtils.copyBeanProp(tExamReportQuery, tExamReport);
-
         tExamReportQuery.setProductId(null);
         tExamReportQuery.setProductName(null);
         List<TExamReport> tExamReportList = examPaperSubmitVM.getTExamReportList();
-        // ExamPaperAnswer examPaperAnswer = examPaperAnswerInfo.getExamPaperAnswer();
-        // questionCount 鍋氶鏁扮洰
+        
+        
         tExamReport.setQuestionCount(0);
-        //member_id
+        
         tExamReport.setMemberId(relatedParty.getMemberId().intValue());
-        // user_id
+        
         tExamReport.setUserId(relatedParty.getUser_id());
-        // parent_id
+        
         tExamReport.setParentId(relatedParty.getUser_parent_id());
-        // test_id
+        
         tExamReport.setTestId(relatedParty.getTestId());
-        // finish
+        
         tExamReport.setFinish(examPaperSubmitVM.getFinish());
         //鏇存柊鐢ㄦ埛绛旈鐘舵��
         setVerifyStatus(examPaperSubmitVM, tExamReport);
-
-        // questionTemplateId
+        
         tExamReport.setQuestionTemplateId(relatedParty.getQuestionTemplateId());
-
-        // 闅忔満棰樼洰缂栧彿
+        
         tExamReport.setQuestionOrder(JSON.toJSONString(examPaperSubmitVM.getQuestionOrder()));
-
-        // 闅忔満鐨勯�夐」缂栧彿
+        
         tExamReport.setOptionOrder(JSON.toJSONString(examPaperSubmitVM.getOptionOrder()));
-
-        // 璁剧疆鎴愬憳鍚嶇О
+        
         tExamReport.setMemberName(relatedParty.getMemberName());
-
-        // 妯$増鍚嶇О
+        
         tExamReport.setReportTemplateId(relatedParty.getReportTemplateId());
-
-        // tExamReport
-
-        // 鐢ㄦ埛绛旈鐨勬椂闂�
+        
+        
         setRemainPartTime(examPaperSubmitVM, tExamReport, tExamReportList);
-
-        // 鏇存柊鎶ュ憡
+        
         updateTExamReport(examPaperSubmitVM, tokenId, relatedParty, tExamReport, tExamReportList);
-
-        // 璋冪敤娉板浗鍥㈤槦
+        
         callThaiInteface(examPaperSubmitVM, tokenId, tExamReport, examPaperAnswerInfo);
         return examPaperAnswerInfo;
     }
-
     private void updateTExamReport(@RequestBody @Valid ExamPaperSubmitVM examPaperSubmitVM, @PathVariable String tokenId, RelatedParty relatedParty, TExamReport tExamReport, List<TExamReport> tExamReportList) {
-        // 寮�濮嬫椂闂存病鏈夋洿鏂板氨鏇存柊涓�涓�
+        
         if (Objects.isNull(relatedParty.getStartTime())) {
             entTestMemberService.updateTestMemberStatus(TestMemberStatusEnum.answering, memberService.queryProdidByToken(tokenId).getMemberId());
         }
-
         if (tExamReportList.size() > 0) {
-            // 鏇存柊鏈鐨勭瓟棰樻椂闂达紝鍏堟妸鍘熸潵鐨勬璇诲嚭鏉�
+            
             examReportService.updateTExamReportByTokenId(tExamReport);
         } else {
             examReportService.insertTExamReport(tExamReport);
         }
-
-        //鏇存柊娴嬭瘯鍖呯殑鐘舵��
+        
         if (!Objects.isNull(examPaperSubmitVM.getFinish())) {
-
-            // 鏍¢獙姣忎竴棰樻槸鍚﹂兘绛斾簡锛屾病鏈夋剰涔夛紝鍥犱负鏈夌殑浜轰細鎻愪氦绌虹殑绛旈璁板綍涓婃潵
+            
             checkCaqQuestionItem(tExamReport);
-
-            // MAQ 鏈夌瓟瀹屼笉鏀圭姸鎬佺殑鎯呭喌
+            
             TestMemberStatusEnum testMemberStatusEnum = TestMemberStatusEnum.codeOf(examPaperSubmitVM.getFinish().toString());
             if (Objects.equals(Integer.parseInt(TestMemberStatusEnum.completed.getCode()), tExamReport.getVerifyStatus())) {
                 testMemberStatusEnum = TestMemberStatusEnum.completed;
             }
-
             entTestMemberService.updateTestMemberStatus(testMemberStatusEnum, tExamReport.getMemberId());
         }
     }
-
     private void checkCaqQuestionItem(TExamReport tExamReport) {
         if (!Objects.equals(tExamReport.getQuestionTemplateId(), "job")) {
             return;
         }
-
         List<QuestionReport> questionReportList = JsonUtil.parseArray(tExamReport.getQuestionReport(), QuestionReport.class);
         for (QuestionReport questionReport : questionReportList) {
-//            questionReport = null; // 娴嬭瘯鐢�
+
             List<QuestionEditRequestVM> questionItems = questionReport.getQuestionItems();
         }
-
     }
-
     private void setVerifyStatus(@RequestBody @Valid ExamPaperSubmitVM examPaperSubmitVM, TExamReport tExamReport) {
         if (Objects.equals(examPaperSubmitVM.getFinish(), 6)) {
             tExamReport.setVerifyStatus(Integer.parseInt(TestMemberStatusEnum.timeOut.getCode()));
         } else {
-            // 鏇存柊鐢ㄦ埛鐨勭瓟棰樼姸鎬�
+            
             tExamReport.setVerifyStatus(examPaperSubmitVM.getVerifyStatus());
         }
     }
-
     private void setRemainPartTime(@RequestBody @Valid ExamPaperSubmitVM examPaperSubmitVM, TExamReport tExamReport, List<TExamReport> tExamReportList) {
         if (Objects.isNull(examPaperSubmitVM.getRemainTime())) {
             return;
         }
-
         Map<Integer, Integer> remainPartTimeMap = null;
-
         if (tExamReportList.size() > 0) {
             remainPartTimeMap = JsonUtil.parseObject(tExamReportList.get(0).getRemainPartTime(), HashMap.class);
         } else {
             remainPartTimeMap = new HashMap<>();
         }
-
         remainPartTimeMap.put(examPaperSubmitVM.getPartOrder(), examPaperSubmitVM.getRemainTime());
         tExamReport.setRemainPartTime(JsonUtil.toJSONString(remainPartTimeMap));
     }
-
     private void callThaiInteface(ExamPaperSubmitVM examPaperSubmitVM, @PathVariable String tokenId, TExamReport tExamReport, ExamPaperAnswerInfo examPaperAnswerInfo) {
         if (Objects.equals(examPaperSubmitVM.getIsCallTain(), "CallThai")) {
             SignalObject signalObject = examPaperService.callTaiData(tokenId, tExamReport.getLangType(), examPaperSubmitVM);
@@ -463,10 +398,9 @@
             submitReport.setSignalObject(signalObject);
         }
     }
-
-    // 鑷姩鍙戦�佺姸鎬佹姤鍛婇渶瑕佸鐞嗙殑鍐呭
+    
     private void setAutoSendReportStatus(RelatedParty relatedParty, TExamReport tExamReport) {
-        // 0锛氬緟鍙戦�侊紱1锛氬凡鍙戦�侊紱2锛氫笉鍙戦��
+        
         if (relatedParty.isAutoSendReport()) {
             tExamReport.setSendHrStatus(send.getCode());
             tExamReport.setSendTesterStatus(send.getCode());
@@ -476,8 +410,7 @@
             tExamReport.setSendTesterStatus(noSend.getCode());
         }
     }
-
-    // 鑾峰緱QuestionReport鍒楄〃鐨凧son瀛楃涓插叆t_exam_roport琛�
+    
     private String getQuestionReportsJson(@RequestBody @Valid ExamPaperSubmitVM examPaperSubmitVM) {
         List<ExamPaperTitleItemVM> titleItems = examPaperSubmitVM.getTitleItems();
         List<ExamPaperSubmitItemVM> answerItems = examPaperSubmitVM.getAnswerItems();
@@ -496,8 +429,7 @@
         }
         return JsonUtil.toJsonStr(questionReportList);
     }
-
-    // 鐐瑰嚮寮�濮嬬瓟棰樼殑鏃跺�欙紝鏀规垚绛旈涓紝浠呮墽琛屼竴娆�
+    
     @RequestMapping(value = "/updateTestMemberStatus/{tokenId}", method = RequestMethod.POST)
     public RestResponse updateTestMemberStatus(@PathVariable String tokenId) {
         entTestMemberService.updateTestMemberStatus(TestMemberStatusEnum.answering, memberService.queryProdidByToken(tokenId).getMemberId());
diff --git a/src/main/java/com/ots/project/exam/restcontroller/ExamPaperController.java b/src/main/java/com/ots/project/exam/restcontroller/ExamPaperController.java
index 98d7ef2..1e71480 100644
--- a/src/main/java/com/ots/project/exam/restcontroller/ExamPaperController.java
+++ b/src/main/java/com/ots/project/exam/restcontroller/ExamPaperController.java
@@ -1,6 +1,4 @@
 package com.ots.project.exam.restcontroller;
-
-
 import cn.hutool.core.collection.CollUtil;
 import com.alibaba.fastjson.JSON;
 import com.ots.common.constant.Constants;
@@ -37,7 +35,6 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
-
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -46,35 +43,26 @@
 import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
-
 @RestController("StudentExamPaperController")
 @RequestMapping(value = "/api/exam/paper")
 @AllArgsConstructor
 @Slf4j
 public class ExamPaperController extends BaseApiController {
-
     @Autowired
     private IExamPaperService examPaperService;
-
     @Autowired
     private TExamPaperServiceImpl itExamPaperService;
-
     @Autowired
     private ITExamReportService examReportService;
-
     @Autowired
     MemberService memberService;
-
     private static final Logger logger = LoggerFactory.getLogger(Threads.class);
-
     @RequestMapping(value = "/select/{tokenId}/{langType}", method = RequestMethod.POST)
     public RestResponse<ExamPaperEditRequestVM> select(@PathVariable String tokenId, @PathVariable String langType) {
         RelatedParty relatedParty = memberService.queryProdidByToken(tokenId);
         ExamPaperEditRequestVM vm = examPaperService.examPaperToVM(relatedParty, tokenId, langType);
         return RestResponse.ok(vm);
     }
-    
-
     @RequestMapping(value = "/selectTokenId/{selectTokenId}", method = RequestMethod.POST)
     public RestResponse<ExamResultRequestVM> selectTokenId(@PathVariable String selectTokenId) {
         try {
@@ -83,33 +71,26 @@
             tExamReport.setTokenId(selectTokenId);
             List<TExamReport> tExamReportList = examReportService.selectTExamReportList(tExamReport);
             ExamResultRequestVM examResultRequestVM = new ExamResultRequestVM();
-
             TExamPaper tExamPaper = itExamPaperService.selectTExamPaperById(memberService.queryProdidByToken(selectTokenId).getProdId());
-
             examResultRequestVM.setDoUrl(tExamPaper.getQuestionTemplateId());
             examResultRequestVM.setReportTemplateId(tExamPaper.getReportTemplateId());
-
             RelatedParty relatedParty = memberService.queryProdidByToken(selectTokenId);
             examResultRequestVM.setStatus(relatedParty.getStatus());
-
             TExamReport tExamReportResult = null;
             if (tExamReportList.size() > 0) {
                 tExamReportResult = tExamReportList.get(0);
-                // 鐩墠鍙煡璇竴涓骇鍝佸寘缁欑敤鎴�
+                
                 tExamReportTemp = tExamReportResult;
                 examResultRequestVM.setDoTime(tExamReportTemp.getDoTime());
                 examResultRequestVM.setFinish(tExamReportTemp.getFinish());
-                // 鑾峰彇鏈�鍚庝竴涓墿浣欐椂闂淬�傛瘮濡傜幇鍦ㄦ湁2娈碉紝鑾峰彇绗�2娈�
+                
                 Integer remainTimeResult = getRemainTimeResult(tExamReportTemp);
                 examResultRequestVM.setRemainTime(remainTimeResult);
             } else {
                 return RestResponse.ok(examResultRequestVM);
             }
-
             LinkedHashMap<String, String> answerMap = JSON.parseObject(tExamReportTemp.getChoice(), LinkedHashMap.class);
-
             examResultRequestVM.setExamItemOrderAndContentList(new ArrayList<>());
-
             if (!Objects.isNull(answerMap)) {
                 answerMap.forEach((k, v) -> {
                     ExamItemOrderAndContent examItemOrderAndContent = new ExamItemOrderAndContent();
@@ -118,8 +99,7 @@
                     examResultRequestVM.getExamItemOrderAndContentList().add(examItemOrderAndContent);
                 });
             }
-
-            // 杩斿洖缁欏墠鍙版寚瀵艰
+            
             getSignalObject(examResultRequestVM, tExamPaper, tExamReportResult);
             return RestResponse.ok(examResultRequestVM);
         } catch (Exception e) {
@@ -127,7 +107,6 @@
             return RestResponse.fail(new UserException("jsp.exam.product.noProduct", new String[]{}));
         }
     }
-
     private Integer getRemainTimeResult(TExamReport tExamReportTemp) {
         Map<Integer, Integer> remainPartTimeMap = JsonUtil.parseObject(tExamReportTemp.getRemainPartTime(), HashMap.class);
         if (Objects.isNull(remainPartTimeMap)) {
@@ -138,20 +117,18 @@
         Arrays.sort(remainPartTimeKeys);
         return remainPartTimeMap.get(remainPartTimeKeys[remainPartTimeKeys.length - 1]);
     }
-
     private void getSignalObject(ExamResultRequestVM examResultRequestVM, TExamPaper tExamPaper, TExamReport tExamReportResult) {
         List<ExamPaperTitleItem> examPaperTitleItemList = JsonUtil.parseArray(tExamPaper.getContent(), ExamPaperTitleItem.class);
         List<QuestionPart> parts = examPaperTitleItemList.get(0).getParts();
         if (CollUtil.isEmpty(parts)) {
             return;
         }
-        QuestionPart questionPart = parts.get(0); // 鍏堝啓姝�
+        QuestionPart questionPart = parts.get(0); 
         List<SignalObject> signals = questionPart.getSignals();
         List<ReportAPIResult> reportAPIResultList = JsonUtil.parseArray(tExamReportResult.getInterfaceContent(), ReportAPIResult.class);
         if (Objects.isNull(reportAPIResultList)) {
             return;
         }
-
         for (SignalObject signalObject : signals) {
             if (Objects.equals(reportAPIResultList.get(0).getSignal(), signalObject.getSignal())) {
                 signalObject.setSignalDescription(ExamUtil.getLangString(tExamReportResult.getLangType(), signalObject.getSignalDescription()));
@@ -164,8 +141,7 @@
             }
         }
     }
-
-    // 璁板綍鐧婚檰鏃ュ織
+    
     @RequestMapping(value = "/recordLogininfor/{selectTokenId}", method = RequestMethod.POST)
     public RestResponse<ExamResultRequestVM> recordLogininfor(@PathVariable String selectTokenId) {
         AsyncManager.me().execute(AsyncFactory.recordLogininfor(memberService.queryProdidByToken(selectTokenId).getMemberId().toString(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
diff --git a/src/main/java/com/ots/project/exam/restcontroller/ExamUserController.java b/src/main/java/com/ots/project/exam/restcontroller/ExamUserController.java
index 31aa137..a668aa1 100644
--- a/src/main/java/com/ots/project/exam/restcontroller/ExamUserController.java
+++ b/src/main/java/com/ots/project/exam/restcontroller/ExamUserController.java
@@ -1,6 +1,4 @@
 package com.ots.project.exam.restcontroller;
-
-
 import com.ots.project.common.BaseApiController;
 import com.ots.project.exam.domain.ExamUser;
 import com.ots.project.exam.dto.ExamLogin;
@@ -11,31 +9,23 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
-
 import javax.validation.Valid;
 
-
-/**
- * @author ots
- */
 @RestController("StudentUserController")
 @RequestMapping(value = "/api/exam/examUser")
 @AllArgsConstructor
 public class ExamUserController extends BaseApiController {
-
     @RequestMapping(value = "/message/unreadCount", method = RequestMethod.POST)
     public RestResponse unReadCount() {
         return RestResponse.ok(0);
     }
-
     @RequestMapping(value = "/current", method = RequestMethod.POST)
     public RestResponse<UserResponseVM> current() {
         ExamUser user = getCurrentUser();
         UserResponseVM userVm = UserResponseVM.from(user);
         return RestResponse.ok(userVm);
     }
-
-    //涓存椂鐧婚檰
+    
     @RequestMapping(value = "/login", method = RequestMethod.POST)
     public RestResponse answerSubmit(@RequestBody @Valid ExamLogin examLogin) {
         ExamUser user = getCurrentUser();
diff --git a/src/main/java/com/ots/project/exam/restcontroller/MemberController.java b/src/main/java/com/ots/project/exam/restcontroller/MemberController.java
index 20ecd67..9693fd3 100644
--- a/src/main/java/com/ots/project/exam/restcontroller/MemberController.java
+++ b/src/main/java/com/ots/project/exam/restcontroller/MemberController.java
@@ -1,55 +1,26 @@
 package com.ots.project.exam.restcontroller;
-
 import com.ots.project.exam.dto.ParamsInfo;
 import com.ots.project.exam.dto.RestResponse;
 import org.springframework.web.bind.annotation.*;
-
 import javax.validation.Valid;
 import java.util.List;
 
-/**
- * 璇勬祴鐢ㄦ埛璁块棶绫�
- */
 @RestController
 @RequestMapping(value = "/remote/member")
 public interface MemberController {
-    /**
-     * 鑾峰彇浜哄彛瀛﹀彉閲忎俊鎭�
-     */
+    
     @RequestMapping(value = "/param/{token}/{lang}", method = RequestMethod.GET)
     RestResponse getdemographyParam(@PathVariable String token, @PathVariable String lang);
-
-    /**
-     * 鏌ヨ鐢ㄦ埛鐨勪汉鍙e淇℃伅
-     *
-     * @return
-     */
+    
     @RequestMapping(value = "/paramInfo/{token}", method = RequestMethod.GET)
     RestResponse queryDemographyParamInfo(@PathVariable String token);
-
-    /**
-     * 淇濆瓨浜哄彛瀛︿俊鎭�
-     *
-     * @param infos
-     * @return
-     */
+    
     @RequestMapping(value = "/save/{token}/{langType}", method = RequestMethod.POST)
     RestResponse saveDemographyParamInfo(@RequestBody @Valid List<ParamsInfo> infos, @PathVariable String token, @PathVariable String langType);
-
-    /**
-     * 鐢ㄦ埛閴存潈鎺ュ彛
-     * 鐢ㄦ埛閫氳繃token鑾峰彇褰撳墠鍙敤鐨勪护鐗岀敤浜庡悗闈�
-     *
-     * @return
-     */
+    
     @RequestMapping(value = "/auth/{token}", method = RequestMethod.GET)
     RestResponse memberAuth(@PathVariable String token);
-
-    /**
-     * 鑾峰彇褰撳墠鏀寔鐨勮瑷�绫诲瀷
-     * @param token
-     * @return
-     */
+    
     @RequestMapping(value = "/langList/{token}/{reportTemplateId}", method = RequestMethod.GET)
     RestResponse queryLangList(@PathVariable String token, @PathVariable String reportTemplateId);
 }
diff --git a/src/main/java/com/ots/project/exam/restcontroller/MemberControllerImpl.java b/src/main/java/com/ots/project/exam/restcontroller/MemberControllerImpl.java
index 14ae59f..0caaa1e 100644
--- a/src/main/java/com/ots/project/exam/restcontroller/MemberControllerImpl.java
+++ b/src/main/java/com/ots/project/exam/restcontroller/MemberControllerImpl.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.restcontroller;
-
 import com.ots.project.exam.domain.EntDemographyInfo;
 import com.ots.project.exam.domain.EntDemographyParam;
 import com.ots.project.exam.domain.EntTestMember;
@@ -13,50 +12,40 @@
 import com.ots.project.exam.service.MemberService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RestController;
-
 import javax.validation.Valid;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.stream.Collectors;
-
 @RestController
 public class MemberControllerImpl implements MemberController {
-
     @Autowired
     private MemberService memberService;
-
     @Autowired
     private IEntTestMemberService entTestMemberService;
-
     @Autowired
     IEntDemographyParamService entDemographyParamService;
-
     @Autowired
     private ITReportTemplateService itReportTemplateService;
-
     @Override
     public RestResponse getdemographyParam(String token, String lang) {
         try {
             List<ParamDefine> collect = memberService.getParamDefines(token, lang);
-            // 绲﹀鍚嶉粯璁ゅ��
+            
             getMemberNameValue(collect);
             return RestResponse.ok(collect);
         } catch (Exception ex) {
             return RestResponse.fail(ex);
         }
     }
-
     private void getMemberNameValue(List<ParamDefine> collect) {
         EntTestMember entTestMember = entTestMemberService.selectEntTestMemberById(collect.get(0).getMemberId());
         String  paramIds = collect.stream().map(it -> {
             return it.getParamId().toString();
         }).collect(Collectors.joining(","));
-
         List<EntDemographyParam> entDemographyParams = entDemographyParamService.selectEntDemographyParamListByParamIn(paramIds);
         Map<Long, String> entDemographyParamsMap = entDemographyParams.stream().collect(
                 Collectors.toMap(EntDemographyParam::getParamId, EntDemographyParam::getParamCode));
-
         for (ParamDefine paramDefine : collect) {
             System.out.println(entDemographyParamsMap.get(paramDefine.getParamId()));
             if (Objects.equals(entDemographyParamsMap.get(paramDefine.getParamId()), "name")) {
@@ -64,7 +53,6 @@
             }
         }
     }
-
     @Override
     public RestResponse queryDemographyParamInfo(String token) {
         try {
@@ -74,7 +62,6 @@
             return RestResponse.fail(ex);
         }
     }
-
     @Override
     public RestResponse saveDemographyParamInfo(@Valid List<ParamsInfo> infos, String token, String langType) {
         try {
@@ -84,7 +71,6 @@
             return RestResponse.fail(ex);
         }
     }
-
     @Override
     public RestResponse memberAuth(String token) {
         try {
@@ -93,25 +79,23 @@
             return RestResponse.fail(ex);
         }
     }
-
     @Override
     public RestResponse queryLangList(String token, String reportTemplateId) {
         try {
             List<DictItemDto> resluts = memberService.queryLang(token);
-            // 鐫块偦鍙湁涓枃
-//            List<TReportTemplate> tReportTemplateList = itReportTemplateService.selectTReportTemplates(reportTemplateId);
-//            // 鐫块偦鐨勫彧鏈変腑鏂�
-//            for (TReportTemplate tReportTemplate : tReportTemplateList) {
-//                if ("RuiLin".equals(tReportTemplate.getReportType())) {
-//                    for (DictItemDto dictData : resluts) {
-//                        if ("Chinese".equals(dictData.getDictValue())) {
-//                            List<DictItemDto> reslutChinese = new ArrayList<>();
-//                            reslutChinese.add(dictData);
-//                            return RestResponse.ok(reslutChinese);
-//                        }
-//                    }
-//                }
-//            }
+            
+
+
+
+
+
+
+
+
+
+
+
+
 
             return RestResponse.ok(resluts);
         } catch (Exception ex) {
diff --git a/src/main/java/com/ots/project/exam/service/BaseService.java b/src/main/java/com/ots/project/exam/service/BaseService.java
index fd7be4c..ee70d52 100644
--- a/src/main/java/com/ots/project/exam/service/BaseService.java
+++ b/src/main/java/com/ots/project/exam/service/BaseService.java
@@ -1,56 +1,16 @@
 package com.ots.project.exam.service;
 
-/**
- * service鎺ュ彛锛屽拰mybatis generator 閰嶅浣跨敤
- *
- * @param <T>
- */
 public interface BaseService<T> {
-    /**
-     * 鏍规嵁id鍒犻櫎鏁版嵁锛岀‖鍒犻櫎
-     *
-     * @param id id
-     * @return int
-     */
+    
     int deleteById(Integer id);
-
-    /**
-     * 鎻掑叆鏁版嵁,瀹屾暣鏁版嵁鎻掑叆
-     *
-     * @param record record
-     * @return int
-     */
+    
     int insert(T record);
-
-    /**
-     * 鎻掑叆涓嶄负null鐨勬暟鎹�
-     *
-     * @param record
-     * @return int
-     */
+    
     int insertByFilter(T record);
-
-    /**
-     * 鏍规嵁id鏌ヨ鏁版嵁
-     *
-     * @param id
-     * @return
-     */
+    
     T selectById(Integer id);
-
-    /**
-     * 鏇存柊涓嶄负null鐨勬暟鎹�
-     *
-     * @param record
-     * @return int
-     */
+    
     int updateByIdFilter(T record);
-
-    /**
-     * 鏇存柊瀹屾暣鐨勬暟鎹�
-     *
-     * @param record
-     * @return int
-     */
+    
     int updateById(T record);
 }
diff --git a/src/main/java/com/ots/project/exam/service/CountCalculateService.java b/src/main/java/com/ots/project/exam/service/CountCalculateService.java
index be4b521..952e610 100644
--- a/src/main/java/com/ots/project/exam/service/CountCalculateService.java
+++ b/src/main/java/com/ots/project/exam/service/CountCalculateService.java
@@ -1,20 +1,8 @@
 package com.ots.project.exam.service;
-
 import com.ots.project.exam.domain.EntTestPackage;
 import com.ots.project.exam.domain.NumberOfUsersByCompany;
 
-/**
- * 鍙敤娆℃暟璁$畻缁勪欢
- * 涓�涓紒涓氫細鎷ユ湁澶氫釜娴嬭瘯鍖�
- * 闇�瑕佽绠楀嚭姣忎釜娴嬭瘯鍖呯殑浣跨敤娆℃暟锛屽苟姹囨�绘祴璇曟�绘暟銆�
- */
 public interface CountCalculateService {
-    /**
-     * 璁$畻浼佷笟涓嬪悇涓骇鍝佸寘浣跨敤娆℃暟
-     *
-     * @param entTestPackage
-     * @return
-     */
+    
     NumberOfUsersByCompany calculateProductPackagesMemberCount(EntTestPackage entTestPackage);
-
 }
diff --git a/src/main/java/com/ots/project/exam/service/ExamPaperAnswerService.java b/src/main/java/com/ots/project/exam/service/ExamPaperAnswerService.java
index e011b72..d9b3365 100644
--- a/src/main/java/com/ots/project/exam/service/ExamPaperAnswerService.java
+++ b/src/main/java/com/ots/project/exam/service/ExamPaperAnswerService.java
@@ -1,53 +1,20 @@
 package com.ots.project.exam.service;
-
-
 import com.github.pagehelper.PageInfo;
 import com.ots.project.exam.domain.ExamPaperAnswer;
 import com.ots.project.exam.domain.ExamUser;
 import com.ots.project.exam.dto.ExamPaperAnswerInfo;
 import com.ots.project.exam.viewmodel.ExamPaperAnswerPageVM;
 import com.ots.project.exam.viewmodel.ExamPaperSubmitVM;
-
 import java.util.List;
-
 public interface ExamPaperAnswerService extends BaseService<ExamPaperAnswer> {
-
-    /**
-     * 瀛︾敓鑰冭瘯璁板綍鍒嗛〉
-     *
-     * @param requestVM 杩囨护鏉′欢
-     * @return PageInfo<ExamPaperAnswer>
-     */
+    
     PageInfo<ExamPaperAnswer> studentPage(ExamPaperAnswerPageVM requestVM);
-
-    /**
-     * 璁$畻璇曞嵎鎻愪氦缁撴灉(涓嶅叆搴�)
-     *
-     * @param examPaperSubmitVM
-     * @param user
-     * @return
-     */
+    
     ExamPaperAnswerInfo calculateExamPaperAnswer(ExamPaperSubmitVM examPaperSubmitVM, ExamUser user);
-
-
-    /**
-     * 璇曞嵎鎵规敼
-     *
-     * @param examPaperSubmitVM examPaperSubmitVM
-     * @return String
-     */
+    
     String judge(ExamPaperSubmitVM examPaperSubmitVM);
-
-    /**
-     * 璇曞嵎绛旈淇℃伅杞垚ViewModel 浼犵粰鍓嶅彴
-     *
-     * @param id 璇曞嵎id
-     * @return ExamPaperSubmitVM
-     */
+    
     ExamPaperSubmitVM examPaperAnswerToVM(Integer id);
-
-
     Integer selectAllCount();
-
     List<Integer> selectMothCount();
 }
diff --git a/src/main/java/com/ots/project/exam/service/ExamPaperQuestionCustomerAnswerService.java b/src/main/java/com/ots/project/exam/service/ExamPaperQuestionCustomerAnswerService.java
index e11544c..5694e85 100644
--- a/src/main/java/com/ots/project/exam/service/ExamPaperQuestionCustomerAnswerService.java
+++ b/src/main/java/com/ots/project/exam/service/ExamPaperQuestionCustomerAnswerService.java
@@ -1,38 +1,18 @@
 package com.ots.project.exam.service;
-
 import com.github.pagehelper.PageInfo;
 import com.ots.project.exam.domain.ExamPaperQuestionCustomerAnswer;
 import com.ots.project.exam.dto.ExamPaperAnswerUpdate;
 import com.ots.project.exam.viewmodel.ExamPaperSubmitItemVM;
 import com.ots.project.exam.viewmodel.QuestionPageStudentRequestVM;
-
 import java.util.List;
-
 public interface ExamPaperQuestionCustomerAnswerService extends BaseService<ExamPaperQuestionCustomerAnswer> {
-
     PageInfo<ExamPaperQuestionCustomerAnswer> studentPage(QuestionPageStudentRequestVM requestVM);
-
     List<ExamPaperQuestionCustomerAnswer> selectListByPaperAnswerId(Integer id);
-
-    /**
-     * 璇曞嵎鎻愪氦绛旀鍏ュ簱
-     *
-     * @param examPaperQuestionCustomerAnswers List<ExamPaperQuestionCustomerAnswer>
-     */
+    
     void insertList(List<ExamPaperQuestionCustomerAnswer> examPaperQuestionCustomerAnswers);
-
-    /**
-     * 璇曞嵎闂绛旈淇℃伅杞垚ViewModel 浼犵粰鍓嶅彴
-     *
-     * @param qa ExamPaperQuestionCustomerAnswer
-     * @return ExamPaperSubmitItemVM
-     */
+    
     ExamPaperSubmitItemVM examPaperQuestionCustomerAnswerToVM(ExamPaperQuestionCustomerAnswer qa);
-
-
     Integer selectAllCount();
-
     List<Integer> selectMothCount();
-
     int updateScore(List<ExamPaperAnswerUpdate> examPaperAnswerUpdates);
 }
diff --git a/src/main/java/com/ots/project/exam/service/ExamPaperService.java b/src/main/java/com/ots/project/exam/service/ExamPaperService.java
index 18b8817..945dab3 100644
--- a/src/main/java/com/ots/project/exam/service/ExamPaperService.java
+++ b/src/main/java/com/ots/project/exam/service/ExamPaperService.java
@@ -1,6 +1,4 @@
 package com.ots.project.exam.service;
-
-
 import com.github.pagehelper.PageInfo;
 import com.ots.project.exam.domain.ExamPaper;
 import com.ots.project.exam.domain.ExamUser;
@@ -9,24 +7,14 @@
 import com.ots.project.exam.viewmodel.ExamPaperEditRequestVM;
 import com.ots.project.exam.viewmodel.ExamPaperPageRequestVM;
 import com.ots.project.exam.viewmodel.ExamPaperPageVM;
-
 import java.util.List;
-
 public interface ExamPaperService extends BaseService<ExamPaper> {
-
     PageInfo<ExamPaper> page(ExamPaperPageRequestVM requestVM);
-
     PageInfo<ExamPaper> taskExamPage(ExamPaperPageRequestVM requestVM);
-
     PageInfo<ExamPaper> studentPage(ExamPaperPageVM requestVM);
-
     ExamPaper savePaperFromVM(ExamPaperEditRequestVM examPaperEditRequestVM, ExamUser user);
-
     ExamPaperEditRequestVM examPaperToVM(Integer id);
-
     List<PaperInfo> indexPaper(PaperFilter paperFilter);
-
     Integer selectAllCount();
-
     List<Integer> selectMothCount();
 }
diff --git a/src/main/java/com/ots/project/exam/service/IBaseExamService.java b/src/main/java/com/ots/project/exam/service/IBaseExamService.java
index 4534ac8..4d7be31 100644
--- a/src/main/java/com/ots/project/exam/service/IBaseExamService.java
+++ b/src/main/java/com/ots/project/exam/service/IBaseExamService.java
@@ -1,56 +1,16 @@
 package com.ots.project.exam.service;
 
-/**
- * service鎺ュ彛锛屽拰mybatis generator 閰嶅浣跨敤
- *
- * @param <T>
- */
 public interface IBaseExamService<T> {
-    /**
-     * 鏍规嵁id鍒犻櫎鏁版嵁锛岀‖鍒犻櫎
-     *
-     * @param id id
-     * @return int
-     */
+    
     int deleteById(Integer id);
-
-    /**
-     * 鎻掑叆鏁版嵁,瀹屾暣鏁版嵁鎻掑叆
-     *
-     * @param record record
-     * @return int
-     */
+    
     int insert(T record);
-
-    /**
-     * 鎻掑叆涓嶄负null鐨勬暟鎹�
-     *
-     * @param record
-     * @return int
-     */
+    
     int insertByFilter(T record);
-
-    /**
-     * 鏍规嵁id鏌ヨ鏁版嵁
-     *
-     * @param id
-     * @return
-     */
+    
     T selectById(Integer id);
-
-    /**
-     * 鏇存柊涓嶄负null鐨勬暟鎹�
-     *
-     * @param record
-     * @return int
-     */
+    
     int updateByIdFilter(T record);
-
-    /**
-     * 鏇存柊瀹屾暣鐨勬暟鎹�
-     *
-     * @param record
-     * @return int
-     */
+    
     int updateById(T record);
 }
diff --git a/src/main/java/com/ots/project/exam/service/IEntDemographyInfoService.java b/src/main/java/com/ots/project/exam/service/IEntDemographyInfoService.java
index 6216e4f..0eeb549 100644
--- a/src/main/java/com/ots/project/exam/service/IEntDemographyInfoService.java
+++ b/src/main/java/com/ots/project/exam/service/IEntDemographyInfoService.java
@@ -1,64 +1,20 @@
 package com.ots.project.exam.service;
-
 import com.ots.project.exam.domain.EntDemographyInfo;
-
 import java.util.List;
 
-/**
- * 浜哄彛瀛︿俊鎭疭ervice鎺ュ彛
- *
- * @author ots
- * @date 2019-12-15
- */
 public interface IEntDemographyInfoService {
-    /**
-     * 鏌ヨ浜哄彛瀛︿俊鎭�
-     *
-     * @param infoId 浜哄彛瀛︿俊鎭疘D
-     * @return 浜哄彛瀛︿俊鎭�
-     */
+    
     EntDemographyInfo selectEntDemographyInfoById(Long infoId);
-
-    /**
-     * 鏌ヨ浜哄彛瀛︿俊鎭垪琛�
-     *
-     * @param entDemographyInfo 浜哄彛瀛︿俊鎭�
-     * @return 浜哄彛瀛︿俊鎭泦鍚�
-     */
+    
     List<EntDemographyInfo> selectEntDemographyInfoList(EntDemographyInfo entDemographyInfo);
-
     List<EntDemographyInfo> selectEntDemographyAndParamList(EntDemographyInfo entDemographyInfo);
-
-    /**
-     * 鏂板浜哄彛瀛︿俊鎭�
-     *
-     * @param entDemographyInfo 浜哄彛瀛︿俊鎭�
-     * @return 缁撴灉
-     */
+    
     int insertEntDemographyInfo(EntDemographyInfo entDemographyInfo);
-
-    /**
-     * 淇敼浜哄彛瀛︿俊鎭�
-     *
-     * @param entDemographyInfo 浜哄彛瀛︿俊鎭�
-     * @return 缁撴灉
-     */
+    
     int updateEntDemographyInfo(EntDemographyInfo entDemographyInfo);
-
-    /**
-     * 鎵归噺鍒犻櫎浜哄彛瀛︿俊鎭�
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     int deleteEntDemographyInfoByIds(String ids);
-
-    /**
-     * 鍒犻櫎浜哄彛瀛︿俊鎭俊鎭�
-     *
-     * @param infoId 浜哄彛瀛︿俊鎭疘D
-     * @return 缁撴灉
-     */
+    
     int deleteEntDemographyInfoById(Long infoId);
 
     /***
diff --git a/src/main/java/com/ots/project/exam/service/IEntDemographyParamService.java b/src/main/java/com/ots/project/exam/service/IEntDemographyParamService.java
index a8b74a2..6990a03 100644
--- a/src/main/java/com/ots/project/exam/service/IEntDemographyParamService.java
+++ b/src/main/java/com/ots/project/exam/service/IEntDemographyParamService.java
@@ -1,64 +1,20 @@
 package com.ots.project.exam.service;
-
 import com.ots.project.exam.domain.EntDemographyParam;
-
 import java.util.List;
 import java.util.Map;
 
-/**
- * 浜哄彛瀛﹀彉閲忓畾涔塖ervice鎺ュ彛
- *
- * @author ots
- * @date 2019-12-11
- */
 public interface IEntDemographyParamService {
-    /**
-     * 鏌ヨ浜哄彛瀛﹀彉閲忓畾涔�
-     *
-     * @param paramId 浜哄彛瀛﹀彉閲忓畾涔塈D
-     * @return 浜哄彛瀛﹀彉閲忓畾涔�
-     */
+    
     EntDemographyParam selectEntDemographyParamById(Long paramId);
-
-    /**
-     * 鏌ヨ浜哄彛瀛﹀彉閲忓畾涔夊垪琛�
-     *
-     * @param entDemographyParam 浜哄彛瀛﹀彉閲忓畾涔�
-     * @return 浜哄彛瀛﹀彉閲忓畾涔夐泦鍚�
-     */
+    
     List<EntDemographyParam> selectEntDemographyParamList(EntDemographyParam entDemographyParam);
-
     List<EntDemographyParam> selectEntDemographyParamListByParamIn(String paramIds);
-
-    /**
-     * 鏂板浜哄彛瀛﹀彉閲忓畾涔�
-     *
-     * @param entDemographyParam 浜哄彛瀛﹀彉閲忓畾涔�
-     * @return 缁撴灉
-     */
+    
     int insertEntDemographyParam(EntDemographyParam entDemographyParam);
-
-    /**
-     * 淇敼浜哄彛瀛﹀彉閲忓畾涔�
-     *
-     * @param entDemographyParam 浜哄彛瀛﹀彉閲忓畾涔�
-     * @return 缁撴灉
-     */
+    
     int updateEntDemographyParam(EntDemographyParam entDemographyParam);
-
-    /**
-     * 鎵归噺鍒犻櫎浜哄彛瀛﹀彉閲忓畾涔�
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     int deleteEntDemographyParamByIds(String ids);
-
-    /**
-     * 鍒犻櫎浜哄彛瀛﹀彉閲忓畾涔変俊鎭�
-     *
-     * @param paramId 浜哄彛瀛﹀彉閲忓畾涔塈D
-     * @return 缁撴灉
-     */
+    
     int deleteEntDemographyParamById(Long paramId);
 }
diff --git a/src/main/java/com/ots/project/exam/service/IEntOperLogService.java b/src/main/java/com/ots/project/exam/service/IEntOperLogService.java
index 121d214..8626133 100644
--- a/src/main/java/com/ots/project/exam/service/IEntOperLogService.java
+++ b/src/main/java/com/ots/project/exam/service/IEntOperLogService.java
@@ -1,70 +1,21 @@
 package com.ots.project.exam.service;
-
 import com.ots.common.enums.OpertypeEnum;
 import com.ots.project.exam.domain.EntOperLog;
-
 import java.util.List;
 
-/**
- * 浣跨敤娆℃暟鎿嶄綔璁板綍Service鎺ュ彛
- *
- * @author ots
- * @date 2020-01-19
- */
 public interface IEntOperLogService {
-    /**
-     * 鏌ヨ浣跨敤娆℃暟鎿嶄綔璁板綍
-     *
-     * @param logId 浣跨敤娆℃暟鎿嶄綔璁板綍ID
-     * @return 浣跨敤娆℃暟鎿嶄綔璁板綍
-     */
+    
     EntOperLog selectEntOperLogById(Long logId);
-
-    /**
-     * 鏌ヨ浣跨敤娆℃暟鎿嶄綔璁板綍鍒楄〃
-     *
-     * @param entOperLog 浣跨敤娆℃暟鎿嶄綔璁板綍
-     * @return 浣跨敤娆℃暟鎿嶄綔璁板綍闆嗗悎
-     */
+    
     List<EntOperLog> selectEntOperLogList(EntOperLog entOperLog);
-
-    /**
-     * 鏂板浣跨敤娆℃暟鎿嶄綔璁板綍
-     *
-     * @param entOperLog 浣跨敤娆℃暟鎿嶄綔璁板綍
-     * @return 缁撴灉
-     */
+    
     int insertEntOperLog(EntOperLog entOperLog);
-
-    /**
-     * 淇敼浣跨敤娆℃暟鎿嶄綔璁板綍
-     *
-     * @param entOperLog 浣跨敤娆℃暟鎿嶄綔璁板綍
-     * @return 缁撴灉
-     */
+    
     int updateEntOperLog(EntOperLog entOperLog);
-
-    /**
-     * 鎵归噺鍒犻櫎浣跨敤娆℃暟鎿嶄綔璁板綍
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     int deleteEntOperLogByIds(String ids);
-
-    /**
-     * 鍒犻櫎浣跨敤娆℃暟鎿嶄綔璁板綍淇℃伅
-     *
-     * @param logId 浣跨敤娆℃暟鎿嶄綔璁板綍ID
-     * @return 缁撴灉
-     */
+    
     int deleteEntOperLogById(Long logId);
-
-    /**
-     * 璁板綍鏃ュ織
-     * @param userId
-     * @param createUserId
-     * @param addNum
-     */
+    
     void saveLog(Long userId, String createUserId, OpertypeEnum opertypeEnum, Long addNum);
 }
diff --git a/src/main/java/com/ots/project/exam/service/IEntTestDetailService.java b/src/main/java/com/ots/project/exam/service/IEntTestDetailService.java
index f74cfbd..4d2efdc 100644
--- a/src/main/java/com/ots/project/exam/service/IEntTestDetailService.java
+++ b/src/main/java/com/ots/project/exam/service/IEntTestDetailService.java
@@ -1,11 +1,5 @@
 package com.ots.project.exam.service;
 
-/**
- * entTestDetailService鎺ュ彛
- * 
- * @author ots
- * @date 2020-03-01
- */
 public interface IEntTestDetailService 
 {
 }
diff --git a/src/main/java/com/ots/project/exam/service/IEntTestMemberBackstageService.java b/src/main/java/com/ots/project/exam/service/IEntTestMemberBackstageService.java
index e304200..e04438d 100644
--- a/src/main/java/com/ots/project/exam/service/IEntTestMemberBackstageService.java
+++ b/src/main/java/com/ots/project/exam/service/IEntTestMemberBackstageService.java
@@ -1,61 +1,18 @@
 package com.ots.project.exam.service;
-
 import com.ots.project.exam.domain.EntTestMemberBackstage;
-
 import java.util.List;
 
-/**
- * EntTestMemberBackstageService鎺ュ彛
- *
- * @author ots
- * @date 2020-02-29
- */
 public interface IEntTestMemberBackstageService {
-    /**
-     * 鏌ヨEntTestMemberBackstage
-     *
-     * @param memberId EntTestMemberBackstageID
-     * @return EntTestMemberBackstage
-     */
+    
     EntTestMemberBackstage selectEntTestMemberBackstageById(Long memberId);
-
-    /**
-     * 鏌ヨEntTestMemberBackstage鍒楄〃
-     *
-     * @param entTestMemberBackstage EntTestMemberBackstage
-     * @return EntTestMemberBackstage闆嗗悎
-     */
+    
     List<EntTestMemberBackstage> selectEntTestMemberBackstageList(EntTestMemberBackstage entTestMemberBackstage);
-
-    /**
-     * 鏂板EntTestMemberBackstage
-     *
-     * @param entTestMemberBackstage EntTestMemberBackstage
-     * @return 缁撴灉
-     */
+    
     int insertEntTestMemberBackstage(EntTestMemberBackstage entTestMemberBackstage);
-
-    /**
-     * 淇敼EntTestMemberBackstage
-     *
-     * @param entTestMemberBackstage EntTestMemberBackstage
-     * @return 缁撴灉
-     */
+    
     int updateEntTestMemberBackstage(EntTestMemberBackstage entTestMemberBackstage);
-
-    /**
-     * 鎵归噺鍒犻櫎EntTestMemberBackstage
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     int deleteEntTestMemberBackstageByIds(String ids);
-
-    /**
-     * 鍒犻櫎EntTestMemberBackstage淇℃伅
-     *
-     * @param memberId EntTestMemberBackstageID
-     * @return 缁撴灉
-     */
+    
     int deleteEntTestMemberBackstageById(Long memberId);
 }
diff --git a/src/main/java/com/ots/project/exam/service/IEntTestMemberService.java b/src/main/java/com/ots/project/exam/service/IEntTestMemberService.java
index 97fb96a..da70b4f 100644
--- a/src/main/java/com/ots/project/exam/service/IEntTestMemberService.java
+++ b/src/main/java/com/ots/project/exam/service/IEntTestMemberService.java
@@ -1,109 +1,32 @@
 package com.ots.project.exam.service;
-
 import com.ots.common.enums.TestMemberStatusEnum;
 import com.ots.project.exam.domain.EntTestMember;
-
 import java.util.List;
 import java.util.Map;
 
-/**
- * 娴嬭瘎浜哄憳鍚嶅崟Service鎺ュ彛
- *
- * @author ots
- * @date 2019-12-15
- */
 public interface IEntTestMemberService {
-    /**
-     * 鏌ヨ娴嬭瘎浜哄憳鍚嶅崟
-     *
-     * @param memberId 娴嬭瘎浜哄憳鍚嶅崟ID
-     * @return 娴嬭瘎浜哄憳鍚嶅崟
-     */
+    
     EntTestMember selectEntTestMemberById(Long memberId);
-
-    /**
-     * 鏌ヨ娴嬭瘎浜哄憳鍚嶅崟鍒楄〃
-     *
-     * @param entTestMember 娴嬭瘎浜哄憳鍚嶅崟
-     * @return 娴嬭瘎浜哄憳鍚嶅崟闆嗗悎
-     */
+    
     List<EntTestMember> selectEntTestMemberList(EntTestMember entTestMember);
-
     List<EntTestMember> selectEntTestMemberTopList(EntTestMember entTestMember);
-
-
     List<EntTestMember> selectEntTestMemberQueryList(EntTestMember entTestMember);
-
-    /**
-     * 鑷畾涔夋潯浠�
-     * @param params
-     * @return
-     */
+    
     List<EntTestMember> selectEntTestMemberList(Map params);
-
-    /**
-     * 鏂板娴嬭瘎浜哄憳鍚嶅崟
-     *
-     * @param entTestMember 娴嬭瘎浜哄憳鍚嶅崟
-     * @return 缁撴灉
-     */
+    
     int insertEntTestMember(EntTestMember entTestMember);
-
-    /**
-     * 淇敼娴嬭瘎浜哄憳鍚嶅崟
-     *
-     * @param entTestMember 娴嬭瘎浜哄憳鍚嶅崟
-     * @return 缁撴灉
-     */
+    
     int updateEntTestMember(EntTestMember entTestMember);
-
-    /**
-     * 鎵归噺鍒犻櫎娴嬭瘎浜哄憳鍚嶅崟
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     int deleteEntTestMemberByIds(String ids);
-
-    /**
-     * 鍒犻櫎娴嬭瘎浜哄憳鍚嶅崟淇℃伅
-     *
-     * @param memberId 娴嬭瘎浜哄憳鍚嶅崟ID
-     * @return 缁撴灉
-     */
+    
     int deleteEntTestMemberById(Long memberId);
-
-    /**
-     * 鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟
-     *
-     * @param entTestMemberList 鐢ㄦ埛鏁版嵁鍒楄〃
-     * @param isUpdateSupport   鏄惁鏇存柊鏀寔锛屽鏋滃凡瀛樺湪锛屽垯杩涜鏇存柊鏁版嵁
-     * @return 缁撴灉
-     */
+    
     String importEntTestMember(List<EntTestMember> entTestMemberList, Boolean isUpdateSupport);
-
-    /**
-     * 閫氳繃token鏌ヨ娴嬭瘯鐢ㄦ埛淇℃伅
-     * @param token
-     * @param status
-     * @return
-     */
+    
     EntTestMember findEntTestMember(String token, List<String> status);
-
-    /**
-     * 鏇存柊鐢ㄦ埛琛ㄧ姸鎬�,濡傛灉鏄瓟棰樹腑锛屽悓姝ユ洿鏂板仛棰樺紑濮嬫椂闂�
-     *
-     * @param statusEnum
-     * @param memberId
-     * @return
-     */
+    
     int updateTestMemberStatus(TestMemberStatusEnum statusEnum, long memberId);
-
-    /**
-     * 鍒ゆ柇鐢ㄦ埛鏄惁瀹屾垚绛旈骞跺瓨鍦ㄦ姤鍛�
-     * @param asList
-     * @param testId
-     * @return
-     */
+    
     boolean checkMemberHasReport(List<String> asList, Long testId);
 }
diff --git a/src/main/java/com/ots/project/exam/service/IEntTestPackageService.java b/src/main/java/com/ots/project/exam/service/IEntTestPackageService.java
index e104bba..7d0308f 100644
--- a/src/main/java/com/ots/project/exam/service/IEntTestPackageService.java
+++ b/src/main/java/com/ots/project/exam/service/IEntTestPackageService.java
@@ -1,88 +1,26 @@
 package com.ots.project.exam.service;
-
 import com.ots.project.exam.domain.EntTestPackage;
-
 import java.util.List;
 import java.util.Map;
 
-/**
- * 娴嬭瘯鍖呯鐞哠ervice鎺ュ彛
- *
- * @author ots
- * @date 2019-11-27
- */
 public interface IEntTestPackageService {
-    /**
-     * 鏌ヨ娴嬭瘯鍖呯鐞�
-     *
-     * @param id 娴嬭瘯鍖呯鐞咺D
-     * @return 娴嬭瘯鍖呯鐞�
-     */
+    
     EntTestPackage selectEntTestPackageById(Long id);
-
-    /**
-     * 鏌ヨ娴嬭瘯鍖呯鐞嗗垪琛�
-     *
-     * @param entTestPackage 娴嬭瘯鍖呯鐞�
-     * @return 娴嬭瘯鍖呯鐞嗛泦鍚�
-     */
+    
     List<EntTestPackage> selectEntTestPackageList(EntTestPackage entTestPackage);
-
     List<EntTestPackage> selectEntTestPackageMainList(EntTestPackage entTestPackage);
-
-    /**
-     * 鏂板娴嬭瘯鍖呯鐞�
-     *
-     * @param entTestPackage 娴嬭瘯鍖呯鐞�
-     * @return 缁撴灉
-     */
+    
     int insertEntTestPackage(EntTestPackage entTestPackage);
-
-    /**
-     * 淇敼娴嬭瘯鍖呯鐞�
-     *
-     * @param entTestPackage 娴嬭瘯鍖呯鐞�
-     * @return 缁撴灉
-     */
+    
     int updateEntTestPackage(EntTestPackage entTestPackage);
-
-    /**
-     * 鎵归噺鍒犻櫎娴嬭瘯鍖呯鐞�
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     int deleteEntTestPackageByIds(String ids);
-
-    /**
-     * 鍒犻櫎娴嬭瘯鍖呯鐞嗕俊鎭�
-     *
-     * @param id 娴嬭瘯鍖呯鐞咺D
-     * @return 缁撴灉
-     */
+    
     int deleteEntTestPackageById(Long id);
-
-    /**
-     * 娴嬭瘯鍖呭垪琛�
-     *
-     * @param userId 浼佷笟缂栫爜
-     * @param status 娴嬭瘯鍖呯姸鎬�
-     * @return
-     */
+    
     List<EntTestPackage> selectEntTestPackageListByIdAndStatusIn(Long userId, List<String> status);
-
-    /**
-     * 娴嬭瘯鍖呭垪琛ㄨ嚜瀹氫箟鏌ヨ
-     * @param paramMap
-     * @return
-     */
+    
     List<EntTestPackage> selectEntTestPackageListByIdAndStatusIn(Map paramMap);
-
-    /**
-     * 鍥炴敹浜烘锛堝洖鏀跺瘑鐮侊級
-     * 浼佷笟鐢ㄦ埛鐐瑰嚮鍥炴敹鎸夐挳锛屽皢娴嬭瘯鍖呬腑鏈櫥褰曡繃鐨勪汉鍛樿缃け鏁堬紝浠ュ洖鏀朵娇鐢ㄤ汉娆℃暟銆�
-     * @param testId
-     * @return
-     */
+    
     int recover(Long testId);
 }
diff --git a/src/main/java/com/ots/project/exam/service/IEntTestSendtaskMailService.java b/src/main/java/com/ots/project/exam/service/IEntTestSendtaskMailService.java
index ef1fbfc..c0dcb14 100644
--- a/src/main/java/com/ots/project/exam/service/IEntTestSendtaskMailService.java
+++ b/src/main/java/com/ots/project/exam/service/IEntTestSendtaskMailService.java
@@ -1,61 +1,19 @@
 package com.ots.project.exam.service;
-
 import com.ots.project.exam.domain.EntTestSendtaskMail;
 import java.util.List;
 
-/**
- * 閭閫�淇¤褰昐ervice鎺ュ彛
- * 
- * @author ots
- * @date 2020-03-09
- */
 public interface IEntTestSendtaskMailService 
 {
-    /**
-     * 鏌ヨ閭閫�淇¤褰�
-     * 
-     * @param id 閭閫�淇¤褰旾D
-     * @return 閭閫�淇¤褰�
-     */
+    
     public EntTestSendtaskMail selectEntTestSendtaskMailById(Long id);
-
-    /**
-     * 鏌ヨ閭閫�淇¤褰曞垪琛�
-     * 
-     * @param entTestSendtaskMail 閭閫�淇¤褰�
-     * @return 閭閫�淇¤褰曢泦鍚�
-     */
+    
     public List<EntTestSendtaskMail> selectEntTestSendtaskMailList(EntTestSendtaskMail entTestSendtaskMail);
-
-    /**
-     * 鏂板閭閫�淇¤褰�
-     * 
-     * @param entTestSendtaskMail 閭閫�淇¤褰�
-     * @return 缁撴灉
-     */
+    
     public int insertEntTestSendtaskMail(EntTestSendtaskMail entTestSendtaskMail);
-
-    /**
-     * 淇敼閭閫�淇¤褰�
-     * 
-     * @param entTestSendtaskMail 閭閫�淇¤褰�
-     * @return 缁撴灉
-     */
+    
     public int updateEntTestSendtaskMail(EntTestSendtaskMail entTestSendtaskMail);
-
-    /**
-     * 鎵归噺鍒犻櫎閭閫�淇¤褰�
-     * 
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     public int deleteEntTestSendtaskMailByIds(String ids);
-
-    /**
-     * 鍒犻櫎閭閫�淇¤褰曚俊鎭�
-     * 
-     * @param id 閭閫�淇¤褰旾D
-     * @return 缁撴灉
-     */
+    
     public int deleteEntTestSendtaskMailById(Long id);
 }
diff --git a/src/main/java/com/ots/project/exam/service/IEntTestSendtaskService.java b/src/main/java/com/ots/project/exam/service/IEntTestSendtaskService.java
index c3226e3..796b65e 100644
--- a/src/main/java/com/ots/project/exam/service/IEntTestSendtaskService.java
+++ b/src/main/java/com/ots/project/exam/service/IEntTestSendtaskService.java
@@ -1,64 +1,20 @@
 package com.ots.project.exam.service;
-
 import com.ots.project.exam.domain.EntTestSendtask;
 import com.ots.project.exam.dto.SendTask;
-
 import java.util.List;
 
-/**
- * 璇勬祴閭�璇峰彂閫佷换鍔ervice鎺ュ彛
- *
- * @author ots
- * @date 2019-12-19
- */
 public interface IEntTestSendtaskService {
-    /**
-     * 鏌ヨ璇勬祴閭�璇峰彂閫佷换鍔�
-     *
-     * @param id 璇勬祴閭�璇峰彂閫佷换鍔D
-     * @return 璇勬祴閭�璇峰彂閫佷换鍔�
-     */
+    
     EntTestSendtask selectEntTestSendtaskById(Long id);
-
-    /**
-     * 鏌ヨ璇勬祴閭�璇峰彂閫佷换鍔″垪琛�
-     *
-     * @param entTestSendtask 璇勬祴閭�璇峰彂閫佷换鍔�
-     * @return 璇勬祴閭�璇峰彂閫佷换鍔¢泦鍚�
-     */
+    
     List<EntTestSendtask> selectEntTestSendtaskList(EntTestSendtask entTestSendtask);
-
-    /**
-     * 鏂板璇勬祴閭�璇峰彂閫佷换鍔�
-     *
-     * @param entTestSendtask 璇勬祴閭�璇峰彂閫佷换鍔�
-     * @return 缁撴灉
-     */
+    
     int insertEntTestSendtask(EntTestSendtask entTestSendtask);
-
-    /**
-     * 淇敼璇勬祴閭�璇峰彂閫佷换鍔�
-     *
-     * @param entTestSendtask 璇勬祴閭�璇峰彂閫佷换鍔�
-     * @return 缁撴灉
-     */
+    
     int updateEntTestSendtask(EntTestSendtask entTestSendtask);
-
-    /**
-     * 鎵归噺鍒犻櫎璇勬祴閭�璇峰彂閫佷换鍔�
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     int deleteEntTestSendtaskByIds(String ids);
-
-    /**
-     * 鍒犻櫎璇勬祴閭�璇峰彂閫佷换鍔′俊鎭�
-     *
-     * @param id 璇勬祴閭�璇峰彂閫佷换鍔D
-     * @return 缁撴灉
-     */
+    
     int deleteEntTestSendtaskById(Long id);
-
     int insertEntTestSendtaskFromMemberIds(SendTask sendTask);
 }
diff --git a/src/main/java/com/ots/project/exam/service/IExamPaperService.java b/src/main/java/com/ots/project/exam/service/IExamPaperService.java
index 44174b3..8e722d0 100644
--- a/src/main/java/com/ots/project/exam/service/IExamPaperService.java
+++ b/src/main/java/com/ots/project/exam/service/IExamPaperService.java
@@ -1,6 +1,4 @@
 package com.ots.project.exam.service;
-
-
 import com.github.pagehelper.PageInfo;
 import com.ots.project.exam.domain.ExamPaper;
 import com.ots.project.exam.domain.ExamUser;
@@ -10,26 +8,15 @@
 import com.ots.project.exam.viewmodel.ExamPaperEditRequestVM;
 import com.ots.project.exam.viewmodel.ExamPaperPageRequestVM;
 import com.ots.project.exam.viewmodel.ExamPaperPageVM;
-
 import java.util.List;
-
 public interface IExamPaperService extends IBaseExamService<ExamPaper> {
-
     PageInfo<ExamPaper> page(ExamPaperPageRequestVM requestVM);
-
     PageInfo<ExamPaper> taskExamPage(ExamPaperPageRequestVM requestVM);
-
     PageInfo<ExamPaper> studentPage(ExamPaperPageVM requestVM);
-
     ExamPaper savePaperFromVM(ExamPaperEditRequestVM examPaperEditRequestVM, ExamUser user);
-
     ExamPaperEditRequestVM examPaperToVM(Integer id, String token_id, String langType);
-
     ExamPaperEditRequestVM examPaperToVM(RelatedParty relatedParty, String token_id, String langType);
-
     List<PaperInfo> indexPaper(PaperFilter paperFilter);
-
     Integer selectAllCount();
-
     List<Integer> selectMothCount();
 }
diff --git a/src/main/java/com/ots/project/exam/service/ISysUserExtendService.java b/src/main/java/com/ots/project/exam/service/ISysUserExtendService.java
index dcb1b67..0b9e22a 100644
--- a/src/main/java/com/ots/project/exam/service/ISysUserExtendService.java
+++ b/src/main/java/com/ots/project/exam/service/ISysUserExtendService.java
@@ -1,72 +1,22 @@
 package com.ots.project.exam.service;
-
 import com.ots.project.exam.domain.SysUserExtend;
 import com.ots.project.system.user.domain.User;
-
 import java.util.List;
 
-/**
- * 鐢ㄦ埛淇℃伅鎵╁睍Service鎺ュ彛
- *
- * @author ots
- * @date 2019-11-20
- */
 public interface ISysUserExtendService {
-    /**
-     * 鏌ヨ鐢ㄦ埛淇℃伅鎵╁睍
-     *
-     * @param userId 鐢ㄦ埛淇℃伅鎵╁睍ID
-     * @return 鐢ㄦ埛淇℃伅鎵╁睍
-     */
+    
     SysUserExtend selectSysUserExtendById(Long userId);
-
-    /**
-     * 鏌ヨ鐢ㄦ埛淇℃伅鎵╁睍鍒楄〃
-     *
-     * @param sysUserExtend 鐢ㄦ埛淇℃伅鎵╁睍
-     * @return 鐢ㄦ埛淇℃伅鎵╁睍闆嗗悎
-     */
+    
     List<SysUserExtend> selectSysUserExtendList(SysUserExtend sysUserExtend);
-
-    /**
-     * 鏂板鐢ㄦ埛淇℃伅鎵╁睍
-     *
-     * @param sysUserExtend 鐢ㄦ埛淇℃伅鎵╁睍
-     * @return 缁撴灉
-     */
+    
     int insertSysUserExtend(SysUserExtend sysUserExtend);
-
-    /**
-     * 淇敼鐢ㄦ埛淇℃伅鎵╁睍
-     *
-     * @param sysUserExtend 鐢ㄦ埛淇℃伅鎵╁睍
-     * @return 缁撴灉
-     */
+    
     int updateSysUserExtend(SysUserExtend sysUserExtend);
-
-    /**
-     * 鎵归噺鍒犻櫎鐢ㄦ埛淇℃伅鎵╁睍
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     int deleteSysUserExtendByIds(String ids);
-
-    /**
-     * 鍒犻櫎鐢ㄦ埛淇℃伅鎵╁睍淇℃伅
-     *
-     * @param userId 鐢ㄦ埛淇℃伅鎵╁睍ID
-     * @return 缁撴灉
-     */
+    
     int deleteSysUserExtendById(Long userId);
-
-    /**
-     * 澧炲姞鐢ㄦ埛浣跨敤娆℃暟
-     * @param userId
-     * @param addNum
-     * @return
-     */
+    
     int updateTestNum(Long userId, Long addNum);
-
 	int resetpwd(User user);
 }
diff --git a/src/main/java/com/ots/project/exam/service/ISysUserPaperService.java b/src/main/java/com/ots/project/exam/service/ISysUserPaperService.java
index 1c6a8cb..d0f9e8b 100644
--- a/src/main/java/com/ots/project/exam/service/ISysUserPaperService.java
+++ b/src/main/java/com/ots/project/exam/service/ISysUserPaperService.java
@@ -1,61 +1,18 @@
 package com.ots.project.exam.service;
-
 import com.ots.project.exam.domain.SysUserPaper;
-
 import java.util.List;
 
-/**
- * 鐢ㄦ埛浜у搧Service鎺ュ彛
- *
- * @author ots
- * @date 2020-03-22
- */
 public interface ISysUserPaperService {
-    /**
-     * 鏌ヨ鐢ㄦ埛浜у搧
-     *
-     * @param userId 鐢ㄦ埛浜у搧ID
-     * @return 鐢ㄦ埛浜у搧
-     */
+    
     SysUserPaper selectSysUserPaperById(Long userId);
-
-    /**
-     * 鏌ヨ鐢ㄦ埛浜у搧鍒楄〃
-     *
-     * @param sysUserPaper 鐢ㄦ埛浜у搧
-     * @return 鐢ㄦ埛浜у搧闆嗗悎
-     */
+    
     List<SysUserPaper> selectSysUserPaperList(SysUserPaper sysUserPaper);
-
-    /**
-     * 鏂板鐢ㄦ埛浜у搧
-     *
-     * @param sysUserPaper 鐢ㄦ埛浜у搧
-     * @return 缁撴灉
-     */
+    
     int insertSysUserPaper(SysUserPaper sysUserPaper);
-
-    /**
-     * 淇敼鐢ㄦ埛浜у搧
-     *
-     * @param sysUserPaper 鐢ㄦ埛浜у搧
-     * @return 缁撴灉
-     */
+    
     int updateSysUserPaper(SysUserPaper sysUserPaper);
-
-    /**
-     * 鎵归噺鍒犻櫎鐢ㄦ埛浜у搧
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     int deleteSysUserPaperByIds(String ids);
-
-    /**
-     * 鍒犻櫎鐢ㄦ埛浜у搧淇℃伅
-     *
-     * @param userId 鐢ㄦ埛浜у搧ID
-     * @return 缁撴灉
-     */
+    
     int deleteSysUserPaperById(Long userId);
 }
diff --git a/src/main/java/com/ots/project/exam/service/ITExamLevelService.java b/src/main/java/com/ots/project/exam/service/ITExamLevelService.java
index c699062..cd3a9ee 100644
--- a/src/main/java/com/ots/project/exam/service/ITExamLevelService.java
+++ b/src/main/java/com/ots/project/exam/service/ITExamLevelService.java
@@ -1,72 +1,25 @@
 package com.ots.project.exam.service;
-
 import com.ots.project.exam.domain.TExamLevel;
-
 import java.util.List;
 
-/**
- * 闂嵎绫诲瀷Service鎺ュ彛
- * 
- * @author ots
- * @date 2019-12-15
- */
 public interface ITExamLevelService 
 {
-    /**
-     * 鏌ヨ闂嵎绫诲瀷
-     * 
-     * @param id 闂嵎绫诲瀷ID
-     * @return 闂嵎绫诲瀷
-     */
+    
     public TExamLevel selectTExamLevelById(Long id);
-
     public List<TExamLevel> selectTExamLevelByUuid(String Uuid);
-
     public List<TExamLevel> selectTExamLevelAndTSubjectById(Long id);
-
-    /**
-     * 鏌ヨ闂嵎绫诲瀷鍒楄〃
-     * 
-     * @param tExamLevel 闂嵎绫诲瀷
-     * @return 闂嵎绫诲瀷闆嗗悎
-     */
+    
     public List<TExamLevel> selectTExamLevelList(TExamLevel tExamLevel);
     public List<TExamLevel> selectTExamLevelList();
     public List<TExamLevel> selectTExamLevelListByType(String type);
-
     public List<TExamLevel> selectTExamLevelByquestionTemplateIdList(String questionTemplateId);
-
-    /**
-     * 鏂板闂嵎绫诲瀷
-     * 
-     * @param tExamLevel 闂嵎绫诲瀷
-     * @return 缁撴灉
-     */
+    
     public int insertTExamLevel(TExamLevel tExamLevel);
-
-    /**
-     * 淇敼闂嵎绫诲瀷
-     * 
-     * @param tExamLevel 闂嵎绫诲瀷
-     * @return 缁撴灉
-     */
+    
     public int updateTExamLevel(TExamLevel tExamLevel);
-
-    /**
-     * 鎵归噺鍒犻櫎闂嵎绫诲瀷
-     * 
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     public int deleteTExamLevelByIds(String ids);
-
-    /**
-     * 鍒犻櫎闂嵎绫诲瀷淇℃伅
-     * 
-     * @param id 闂嵎绫诲瀷ID
-     * @return 缁撴灉
-     */
+    
     public int deleteTExamLevelById(Long id);
-
 	public TExamLevel selectTExamLevelByUuidLan(String uuid,String langType);
 }
diff --git a/src/main/java/com/ots/project/exam/service/ITExamPaperService.java b/src/main/java/com/ots/project/exam/service/ITExamPaperService.java
index 7f08c1c..f929947 100644
--- a/src/main/java/com/ots/project/exam/service/ITExamPaperService.java
+++ b/src/main/java/com/ots/project/exam/service/ITExamPaperService.java
@@ -1,98 +1,36 @@
 package com.ots.project.exam.service;
-
 import com.ots.framework.web.domain.Ztree;
 import com.ots.project.exam.domain.TExamPaper;
 import com.ots.project.exam.domain.TExamReport;
 import com.ots.project.exam.domain.TQuestion;
 import com.ots.project.exam.dto.ExamPaperTitleItem;
 import com.ots.project.system.dict.domain.DictData;
-
 import java.util.List;
 
-/**
- * 浜у搧鍖呭垪琛⊿ervice鎺ュ彛
- *
- * @author ots
- * @date 2019-11-20
- */
 public interface ITExamPaperService {
-    /**
-     * 鏌ヨ浜у搧鍖呭垪琛�
-     *
-     * @param id 浜у搧鍖呭垪琛↖D
-     * @return 浜у搧鍖呭垪琛�
-     */
+    
     TExamPaper selectTExamPaperById(Long id);
-
-    /**
-     * 鏌ヨ浜у搧鍖呭垪琛ㄥ垪琛�
-     *
-     * @param tExamPaper 浜у搧鍖呭垪琛�
-     * @return 浜у搧鍖呭垪琛ㄩ泦鍚�
-     */
+    
     List<TExamPaper> selectTExamPaperList(TExamPaper tExamPaper);
-
-    /**
-     * 鏂板浜у搧鍖呭垪琛�
-     *
-     * @param tExamPaper 浜у搧鍖呭垪琛�
-     * @return 缁撴灉
-     */
+    
     int insertTExamPaper(TExamPaper tExamPaper);
-
-    /**
-     * 淇敼浜у搧鍖呭垪琛�
-     *
-     * @param tExamPaper 浜у搧鍖呭垪琛�
-     * @return 缁撴灉
-     */
+    
     int updateTExamPaper(TExamPaper tExamPaper);
-
-    /**
-     * 鎵归噺鍒犻櫎浜у搧鍖呭垪琛�
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     int deleteTExamPaperByIds(String ids);
-
-    /**
-     * 鍒犻櫎浜у搧鍖呭垪琛ㄤ俊鎭�
-     *
-     * @param id 浜у搧鍖呭垪琛↖D
-     * @return 缁撴灉
-     */
+    
     int deleteTExamPaperById(Long id);
-
-    /**
-     * 浜у搧鍖呭垪琛�
-     * @param deletes
-     * @return
-     */
+    
     List<TExamPaper> selectProdByDeleteList(List<Long> deletes);
-
-    /**
-     * 浜у搧鏍�
-     * @return
-     */
+    
     List<Ztree> selectProdTree(String testType);
-
     List<TExamPaper> getUserPapers();
-
-    /**
-     * 鏇存柊deleted鐨勭姸鎬�
-     * @return
-     */
+    
     int updateDeleted(TExamPaper tExamPaper);
-
-    // 鏇存柊鏃х殑鏁版嵁鐒跺悗鍏ュ簱
+    
     List<TQuestion> updateInsertQuestion(List<TQuestion> questionList, String multilingual);
-
     int deleteProductContent(TExamPaper tExamPaper);
-
     void recallThaiInterface(TExamReport tExamReportResult, String reportType);
-
     List<ExamPaperTitleItem> getExamPaperTitleContent(TExamPaper tExamPaper);
-
     List<DictData> getType(Long id);
 }
diff --git a/src/main/java/com/ots/project/exam/service/ITExamReportService.java b/src/main/java/com/ots/project/exam/service/ITExamReportService.java
index 9ba7470..20e076a 100644
--- a/src/main/java/com/ots/project/exam/service/ITExamReportService.java
+++ b/src/main/java/com/ots/project/exam/service/ITExamReportService.java
@@ -1,133 +1,54 @@
 package com.ots.project.exam.service;
-
 import com.ots.common.enums.LangTypeEnum;
 import com.ots.common.enums.ReportTypeEnum;
 import com.ots.project.exam.domain.TExamReport;
 import com.ots.project.exam.domain.TReportTemplate;
 import com.ots.project.system.dict.domain.DictData;
 import com.ots.project.tool.report.ReportResultData;
-
 import java.util.List;
 import java.util.Map;
 
-/**
- * 璇勬祴鎶ュ憡Service鎺ュ彛
- *
- * @author ots
- * @date 2019-12-26
- */
 public interface ITExamReportService {
-    /**
-     * 鏌ヨ璇勬祴鎶ュ憡
-     *
-     * @param id 璇勬祴鎶ュ憡ID
-     * @return 璇勬祴鎶ュ憡
-     */
+    
     TExamReport selectTExamReportById(Long id);
-
-    /**
-     * 鏌ヨ璇勬祴鎶ュ憡鍒楄〃
-     *
-     * @param tExamReport 璇勬祴鎶ュ憡
-     * @return 璇勬祴鎶ュ憡闆嗗悎
-     */
+    
     List<TExamReport> selectTExamReportList(TExamReport tExamReport);
-
-    // 鏍规嵁finish鏌ヨ
+    List<TExamReport> selectTExamReportNoStatusList(TExamReport tExamReport);
+    
     List<TExamReport> selectViewReportList(TExamReport tExamReport);
-
-    /**
-     * 鏂板璇勬祴鎶ュ憡
-     *
-     * @param tExamReport 璇勬祴鎶ュ憡
-     * @return 缁撴灉
-     */
+    
     int insertTExamReport(TExamReport tExamReport);
-
-    /**
-     * 淇敼璇勬祴鎶ュ憡
-     *
-     * @param tExamReport 璇勬祴鎶ュ憡
-     * @return 缁撴灉
-     */
+    
     int updateTExamReport(TExamReport tExamReport);
-
     int updateTExamReportStatus(TExamReport tExamReport);
-
     int updateTExamReportByTokenId(TExamReport tExamReport);
-
     int updateTExamReportDeleteLastOneByTokenId(TExamReport tExamReport);
-
-    /**
-     * 鎵归噺鍒犻櫎璇勬祴鎶ュ憡
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     int deleteTExamReportByIds(String ids);
-
-    /**
-     * 鍒犻櫎璇勬祴鎶ュ憡淇℃伅
-     *
-     * @param id 璇勬祴鎶ュ憡ID
-     * @return 缁撴灉
-     */
+    
     int deleteTExamReportById(Long id);
-
-    /**
-     * 鎶ュ憡瀹℃壒鐘舵�佸彉鏇�
-     *
-     * @param tExamReport
-     * @return
-     */
+    
     int changeStatus(TExamReport tExamReport);
-
-    /**
-     * 鎵归噺鏇存柊瀹℃壒鐘舵��
-     *
-     * @param ids
-     * @return
-     */
+    
     int updateTexamReportByIds(String ids, String downloadTimes);
-
-    /**
-     * 鏍规嵁tokenId鎵归噺鏌ヨ
-     */
-
+    
     List<TExamReport> selectTExamReportByTokenList(String[] tokenIds);
-
-
     List<TExamReport> selectTExamReportByIds(String[] ids);
-
-
     List<DictData> getType(Long id);
-
     TReportTemplate getReportTemplate(String questionTemplateId, String langType, String templateType);
-
-    // 妯℃嫙璋冪敤鎺ュ彛鎶藉彇鍒版湇鍔″眰
+    
     void setTextPicture(TExamReport tExamReport, ReportResultData reportResultData, List<String> deleteStrList, LangTypeEnum langType, Map<String, Object> textMap);
-
-    // 鍙戦�侀檮浠舵帴鍙�
+    
     public void setExportBaseOrDetailReportData(List<TExamReport> tExamReportList, List<String> deleteStrList, List<String> fileNameList, TReportTemplate tReportTemplate);
-
     public String getDemographicName(TExamReport tExamReport);
-
     public boolean getBaseAndComleteSendMailFile(List<TExamReport> tExamReportList, TExamReport tExamReportResult, List<String> fileNameResult, List<String> deleteStrList, TReportTemplate tReportTemplate);
-
     public TExamReport getReportFromTemplate(TExamReport tExamReport, List<String> fileNameResult, List<String> deleteStrList);
-
     public void getBaseAndDetailRportDataList(TReportTemplate tReportTemplate, Map<String, Map<String, String>> excelMap, List<ReportResultData> reportResultDataList, List<TExamReport> tExamQueryReportList);
-
     public void dealTaiData(List<TExamReport> tExamReportList, Map<String, Map<String, String>> excelMap);
-
     public ReportResultData getRuilinReportData(String langType, Map.Entry<String, Map<String, String>> entry, TExamReport tExamReport);
-
     public ReportResultData getMAQReportData(String langType,ReportTypeEnum reportTypeEnum, Map.Entry<String, Map<String, String>> entry, TExamReport tExamReport);
-
     public ReportResultData getCAQReportData(String langType, Map.Entry<String, Map<String, String>> entry, TExamReport tExamReport);
-
     public void setTextMap(TExamReport tExamReport, ReportResultData reportResultData, Map<String, Object> textMap);
-
     public ReportResultData getReportResultData(String reportType, String langType, Map.Entry<String, Map<String, String>> entry, TExamReport tExamReport);
     public void setExcelMapextraValue(TExamReport tExamReport, Map dataMap);
 }
diff --git a/src/main/java/com/ots/project/exam/service/ITQuestionService.java b/src/main/java/com/ots/project/exam/service/ITQuestionService.java
index 364b295..27c8874 100644
--- a/src/main/java/com/ots/project/exam/service/ITQuestionService.java
+++ b/src/main/java/com/ots/project/exam/service/ITQuestionService.java
@@ -1,87 +1,28 @@
 package com.ots.project.exam.service;
-
 import com.ots.project.exam.domain.TQuestion;
 import com.ots.project.exam.viewmodel.QuestionEditRequestVM;
-
 import java.util.List;
 import java.util.Map;
 
-/**
- * 棰樼洰鍒楄〃Service鎺ュ彛
- *
- * @author Shawn
- * @date 2019-11-20
- */
 public interface ITQuestionService {
-    /**
-     * 鏌ヨ棰樼洰鍒楄〃
-     *
-     * @param id 棰樼洰鍒楄〃ID
-     * @return 棰樼洰鍒楄〃
-     */
+    
     TQuestion selectTQuestionById(Long id);
-
     List<TQuestion> selectTQuestionByIds(List<Long> ids);
-
     List<TQuestion> selectTQuestionByPermanentIds(List<String> ids);
-
-    /**
-     * 鏌ヨ棰樼洰鍒楄〃鍒楄〃
-     *
-     * @param tQuestion 棰樼洰鍒楄〃
-     * @return 棰樼洰鍒楄〃闆嗗悎
-     */
+    
     List<TQuestion> selectTQuestionList(TQuestion tQuestion);
-
     List<TQuestion> selectTQuestionsForProductAddQuestion(TQuestion tQuestion);
-
-    /**
-     * 鏂板棰樼洰鍒楄〃
-     *
-     * @param tQuestion 棰樼洰鍒楄〃
-     * @return 缁撴灉
-     */
+    
     int insertTQuestion(TQuestion tQuestion);
-
-    /**
-     * 淇敼棰樼洰鍒楄〃
-     *
-     * @param tQuestion 棰樼洰鍒楄〃
-     * @return 缁撴灉
-     */
+    
     int updateTQuestion(TQuestion tQuestion);
-
-    /**
-     * 鎵归噺鍒犻櫎棰樼洰鍒楄〃
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     int deleteTQuestionByIds(String ids);
-
     int deleteQuestionContent(TQuestion tQuestion);
-
-    /**
-     * 鍒犻櫎棰樼洰鍒楄〃淇℃伅
-     *
-     * @param id 棰樼洰鍒楄〃ID
-     * @return 缁撴灉
-     */
+    
     int deleteTQuestionById(Long id);
-
-    /**
-     * 杩斿洖缁欑瓟棰榲ue绔殑鏁版嵁
-     *
-     * @param
-     * @return
-     */
+    
     QuestionEditRequestVM getQuestionEditRequestVM(TQuestion question);
-
-    /**
-     * 鎻掑叆瀵煎叆鐨勯鐩�
-     *
-     * @param excelList
-     * @return
-     */
+    
     String insertImportQuestion(List<Map<Integer, String>> excelList);
 }
diff --git a/src/main/java/com/ots/project/exam/service/ITReportTemplateService.java b/src/main/java/com/ots/project/exam/service/ITReportTemplateService.java
index 4731e48..215a7fa 100644
--- a/src/main/java/com/ots/project/exam/service/ITReportTemplateService.java
+++ b/src/main/java/com/ots/project/exam/service/ITReportTemplateService.java
@@ -1,84 +1,26 @@
 package com.ots.project.exam.service;
-
 import com.ots.project.exam.domain.TReportTemplate;
 import com.ots.project.system.user.domain.User;
-
 import java.util.List;
 
-/**
- * 鎶ュ憡妯℃澘閰嶇疆Service鎺ュ彛
- *
- * @author ots
- * @date 2020-03-24
- */
 public interface ITReportTemplateService {
-    /**
-     * 鏌ヨ鎶ュ憡妯℃澘閰嶇疆
-     *
-     * @param id 鎶ュ憡妯℃澘閰嶇疆ID
-     * @return 鎶ュ憡妯℃澘閰嶇疆
-     */
+    
     TReportTemplate selectTReportTemplateById(Long id);
-
-    /**
-     * 鏌ヨ鎶ュ憡妯℃澘閰嶇疆鍒楄〃
-     *
-     * @param tReportTemplate 鎶ュ憡妯℃澘閰嶇疆
-     * @return 鎶ュ憡妯℃澘閰嶇疆闆嗗悎
-     */
+    
     List<TReportTemplate> selectTReportTemplateList(TReportTemplate tReportTemplate);
-
-    /**
-     * 鏌ヨ鐢ㄦ埛鏀寔鐨勪紒涓氭ā鏉�
-     * @return
-     */
+    
     List<TReportTemplate> getReportTemplates(User sysUser);
-
-    /**
-     * 鏌ヨ鐢ㄦ埛鏀寔鐨勪紒涓氭ā鏉�,浜у搧鍖呯紪鐮�
-     * @return
-     */
+    
     List<TReportTemplate> getReportTemplates(User sysUser,Long prodid);
-
-
     List<TReportTemplate> selectTReportTemplates(String ids);
-
-    /**
-     * 鏂板鎶ュ憡妯℃澘閰嶇疆
-     *
-     * @param tReportTemplate 鎶ュ憡妯℃澘閰嶇疆
-     * @return 缁撴灉
-     */
+    
     int insertTReportTemplate(TReportTemplate tReportTemplate);
-
-    /**
-     * 淇敼鎶ュ憡妯℃澘閰嶇疆
-     *
-     * @param tReportTemplate 鎶ュ憡妯℃澘閰嶇疆
-     * @return 缁撴灉
-     */
+    
     int updateTReportTemplate(TReportTemplate tReportTemplate);
-
-    /**
-     * 鎵归噺鍒犻櫎鎶ュ憡妯℃澘閰嶇疆
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     int deleteTReportTemplateByIds(String ids);
-
-    /**
-     * 鍒犻櫎鎶ュ憡妯℃澘閰嶇疆淇℃伅
-     *
-     * @param id 鎶ュ憡妯℃澘閰嶇疆ID
-     * @return 缁撴灉
-     */
+    
     int deleteTReportTemplateById(Long id);
-
-    /**
-     * 寰楀埌妯$増鍦板潃,浣嗘槸鍓嶉潰瑕佸姞EssConfig.uploadPath
-     * @param tReportTemplate
-     * @return
-     */
+    
     String selectTReportTemplateFilePath(TReportTemplate tReportTemplate);
 }
diff --git a/src/main/java/com/ots/project/exam/service/ITSubjectService.java b/src/main/java/com/ots/project/exam/service/ITSubjectService.java
index 35fd4c6..07138cc 100644
--- a/src/main/java/com/ots/project/exam/service/ITSubjectService.java
+++ b/src/main/java/com/ots/project/exam/service/ITSubjectService.java
@@ -1,72 +1,22 @@
 package com.ots.project.exam.service;
-
 import com.ots.project.exam.domain.TSubject;
-
 import java.util.List;
 
-/**
- * 缁村害琛⊿ervice鎺ュ彛
- *
- * @author ots
- * @date 2019-12-09
- */
 public interface ITSubjectService {
-    /**
-     * 鏌ヨ缁村害琛�
-     *
-     * @param id 缁村害琛↖D
-     * @return 缁村害琛�
-     */
+    
     public TSubject selectTSubjectById(Long id);
-
     public TSubject selectTSubjectAndTLeveById(Long id);
-
-    /**
-     * 鏌ヨ缁村害琛ㄥ垪琛�
-     *
-     * @param tSubject 缁村害琛�
-     * @return 缁村害琛ㄩ泦鍚�
-     */
+    
     public List<TSubject> selectTSubjectList(TSubject tSubject);
-
     public List<TSubject> selectTSubjectList();
-
-    /**
-     * 鏂板缁村害琛�
-     *
-     * @param tSubject 缁村害琛�
-     * @return 缁撴灉
-     */
+    
     public int insertTSubject(TSubject tSubject);
-
-    /**
-     * 淇敼缁村害琛�
-     *
-     * @param tSubject 缁村害琛�
-     * @return 缁撴灉
-     */
+    
     public int updateTSubject(TSubject tSubject);
-
-    /**
-     * 鎵归噺鍒犻櫎缁村害琛�
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     public int deleteTSubjectByIds(String ids);
-
-    /**
-     * 鍒犻櫎缁村害琛ㄤ俊鎭�
-     *
-     * @param id 缁村害琛↖D
-     * @return 缁撴灉
-     */
+    
     public int deleteTSubjectById(Long id);
-
-    /**
-     * 鏍规嵁鏂囦欢绫诲瀷鐨勭殑妯℃澘鑾峰緱缁村害瀵瑰簲鐨勭鐩�
-     */
-
+    
     public List<TSubject>  selectTSubjectAndTLeveByTemplateId(String questionTemplateId);
-
 }
diff --git a/src/main/java/com/ots/project/exam/service/ITTextContentService.java b/src/main/java/com/ots/project/exam/service/ITTextContentService.java
index 9406dc3..23b82d8 100644
--- a/src/main/java/com/ots/project/exam/service/ITTextContentService.java
+++ b/src/main/java/com/ots/project/exam/service/ITTextContentService.java
@@ -1,94 +1,27 @@
 package com.ots.project.exam.service;
-
 import com.ots.project.exam.domain.TTextContent;
 import com.ots.project.exam.domain.TTextContentAndQuestion;
-
 import java.util.Date;
 import java.util.List;
 import java.util.function.Function;
 
-/**
- * 棰樼洰鐨勫唴瀹筍ervice鎺ュ彛
- *
- * @author ots
- * @date 2019-11-24
- */
 public interface ITTextContentService {
-    /**
-     * 鏌ヨ棰樼洰鐨勫唴瀹�
-     *
-     * @param id 棰樼洰鐨勫唴瀹笽D
-     * @return 棰樼洰鐨勫唴瀹�
-     */
+    
     public TTextContent selectTTextContentById(Long id);
-
     public List<TTextContent> selectTTextContentByIds(String[] ids);
-
     public List<TTextContentAndQuestion> selectTextContentAndQuestion(String[] ids);
-
-    /**
-     * 鏌ヨ棰樼洰鐨勫唴瀹瑰垪琛�
-     *
-     * @param tTextContent 棰樼洰鐨勫唴瀹�
-     * @return 棰樼洰鐨勫唴瀹归泦鍚�
-     */
+    
     public List<TTextContent> selectTTextContentList(TTextContent tTextContent);
-
-    /**
-     * 鏂板棰樼洰鐨勫唴瀹�
-     *
-     * @param tTextContent 棰樼洰鐨勫唴瀹�
-     * @return 缁撴灉
-     */
+    
     public int insertTTextContent(TTextContent tTextContent);
-
-    /**
-     * 淇敼棰樼洰鐨勫唴瀹�
-     *
-     * @param tTextContent 棰樼洰鐨勫唴瀹�
-     * @return 缁撴灉
-     */
+    
     public int updateTTextContent(TTextContent tTextContent);
-
-    /**
-     * 鎵归噺鍒犻櫎棰樼洰鐨勫唴瀹�
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     public int deleteTTextContentByIds(String ids);
-
-    /**
-     * 鍒犻櫎棰樼洰鐨勫唴瀹逛俊鎭�
-     *
-     * @param id 棰樼洰鐨勫唴瀹笽D
-     * @return 缁撴灉
-     */
+    
     public int deleteTTextContentById(Long id);
-
-
-    /**
-     * 鍒涘缓涓�涓猅extContent锛屽皢鍐呭杞寲涓簀son锛屽洖鍐欏埌content涓紝涓嶅叆搴�
-     *
-     * @param list
-     * @param now
-     * @param mapper
-     * @param <T>
-     * @param <R>
-     * @return
-     */
+    
     <T, R> TTextContent jsonConvertInsert(List<T> list, Date now, Function<? super T, ? extends R> mapper);
-
-    /**
-     * 淇敼涓�涓猅extContent锛屽皢鍐呭杞寲涓簀son锛屽洖鍐欏埌content涓紝涓嶅叆搴�
-     *
-     * @param textContent
-     * @param list
-     * @param mapper
-     * @param <T>
-     * @param <R>
-     * @return
-     */
+    
     <T, R> TTextContent jsonConvertUpdate(TTextContent textContent, List<T> list, Function<? super T, ? extends R> mapper);
-
 }
diff --git a/src/main/java/com/ots/project/exam/service/MemberService.java b/src/main/java/com/ots/project/exam/service/MemberService.java
index 8c8c5e7..00c1c1d 100644
--- a/src/main/java/com/ots/project/exam/service/MemberService.java
+++ b/src/main/java/com/ots/project/exam/service/MemberService.java
@@ -1,46 +1,19 @@
 package com.ots.project.exam.service;
-
 import com.ots.project.exam.domain.EntDemographyInfo;
 import com.ots.project.exam.dto.DictItemDto;
 import com.ots.project.exam.dto.ParamDefine;
 import com.ots.project.exam.dto.ParamsInfo;
 import com.ots.project.exam.dto.RelatedParty;
-
 import java.util.List;
 
-/**
- * VUE鐢ㄦ埛鏈嶅姟
- */
 public interface MemberService {
-
-    /**
-     * 鑾峰彇浼佷笟浜哄彛瀛﹀彉閲忓畾涔�
-     *
-     * @param token
-     * @return
-     * @throws Exception
-     */
+    
     List<ParamDefine> getParamDefines(String token, String lang);
-
-    /**
-     * 鑾峰彇鐢ㄦ埛浜哄彛瀛︿俊鎭�
-     *
-     * @param token
-     * @return
-     */
+    
     List<EntDemographyInfo> queryDemographyParamInfo(String token);
-
     void saveDemographyParamInfo(String token, List<ParamsInfo> infos, String langType);
-
-    /**
-     * 閫氳繃token鑾峰彇褰撳墠娴嬭瘯鍖呯殑鍏宠仈鐨勪骇鍝佸寘缂栫爜
-     *
-     * @return
-     */
+    
     RelatedParty queryProdidByToken(String token);
-
-    /**
-     * 鑾峰彇鏀寔鐨勫璇█
-     */
+    
     List<DictItemDto> queryLang(String token);
 }
diff --git a/src/main/java/com/ots/project/exam/service/QuestionService.java b/src/main/java/com/ots/project/exam/service/QuestionService.java
index bf7dfff..f6e873d 100644
--- a/src/main/java/com/ots/project/exam/service/QuestionService.java
+++ b/src/main/java/com/ots/project/exam/service/QuestionService.java
@@ -1,25 +1,15 @@
 package com.ots.project.exam.service;
-
 import com.github.pagehelper.PageInfo;
 import com.ots.project.exam.domain.Question;
 import com.ots.project.exam.viewmodel.QuestionEditRequestVM;
 import com.ots.project.exam.viewmodel.QuestionPageRequestVM;
-
 import java.util.List;
-
 public interface QuestionService extends IBaseExamService<Question> {
-
     PageInfo<Question> page(QuestionPageRequestVM requestVM);
-
     Question insertFullQuestion(QuestionEditRequestVM model, Integer userId);
-
     Question updateFullQuestion(QuestionEditRequestVM model);
-
     QuestionEditRequestVM getQuestionEditRequestVM(Integer questionId);
-
     QuestionEditRequestVM getQuestionEditRequestVM(Question question);
-
     Integer selectAllCount();
-
     List<Integer> selectMothCount();
 }
diff --git a/src/main/java/com/ots/project/exam/service/ReportCalculationServices.java b/src/main/java/com/ots/project/exam/service/ReportCalculationServices.java
index 4221ec1..6f18e9b 100644
--- a/src/main/java/com/ots/project/exam/service/ReportCalculationServices.java
+++ b/src/main/java/com/ots/project/exam/service/ReportCalculationServices.java
@@ -1,17 +1,7 @@
 package com.ots.project.exam.service;
-
 import com.ots.project.tool.report.reportCalculation.response.ReportAPIResult;
 
-/**
- * 璋冪敤娉板浗鍥㈤槦璁$畻缁勪欢
- */
 public interface ReportCalculationServices {
-
-    /**
-     * 2.1.	MAQ-璁$畻鎺ュ彛锛岀澘閭籖UILIN璁$畻鎺ュ彛,CAQ-璁$畻鎺ュ彛 锛圡AQ-computing interface锛�
-     *
-     * @param request
-     * @return
-     */
+    
     ReportAPIResult stageCalculation(Object request);
 }
diff --git a/src/main/java/com/ots/project/exam/service/SubjectService.java b/src/main/java/com/ots/project/exam/service/SubjectService.java
index 8d7f0e5..4b77fa1 100644
--- a/src/main/java/com/ots/project/exam/service/SubjectService.java
+++ b/src/main/java/com/ots/project/exam/service/SubjectService.java
@@ -1,18 +1,11 @@
 package com.ots.project.exam.service;
-
 import com.github.pagehelper.PageInfo;
 import com.ots.project.exam.domain.Subject;
 import com.ots.project.exam.viewmodel.SubjectPageRequestVM;
-
 import java.util.List;
-
 public interface SubjectService extends BaseService<Subject> {
-
     List<Subject> getSubjectByLevel(Integer level);
-
     List<Subject> allSubject();
-
     Integer levelBySubjectId(Integer id);
-
     PageInfo<Subject> page(SubjectPageRequestVM requestVM);
 }
diff --git a/src/main/java/com/ots/project/exam/service/TaskExamCustomerAnswerService.java b/src/main/java/com/ots/project/exam/service/TaskExamCustomerAnswerService.java
index 740d4f8..2783624 100644
--- a/src/main/java/com/ots/project/exam/service/TaskExamCustomerAnswerService.java
+++ b/src/main/java/com/ots/project/exam/service/TaskExamCustomerAnswerService.java
@@ -1,21 +1,13 @@
 package com.ots.project.exam.service;
-
-
 import com.ots.project.exam.domain.ExamPaper;
 import com.ots.project.exam.domain.ExamPaperAnswer;
 import com.ots.project.exam.domain.TExamPaper;
 import com.ots.project.exam.domain.TaskExamCustomerAnswer;
-
 import java.util.Date;
 import java.util.List;
-
 public interface TaskExamCustomerAnswerService extends BaseService<TaskExamCustomerAnswer> {
-
     void insertOrUpdate(ExamPaper examPaper, ExamPaperAnswer examPaperAnswer, Date now);
-
     void insertOrUpdate(TExamPaper examPaper, ExamPaperAnswer examPaperAnswer, Date now);
-
     TaskExamCustomerAnswer selectByTUid(Integer tid, Integer uid);
-
     List<TaskExamCustomerAnswer> selectByTUid(List<Integer> taskIds, Integer uid);
 }
diff --git a/src/main/java/com/ots/project/exam/service/UserEventLogService.java b/src/main/java/com/ots/project/exam/service/UserEventLogService.java
index ad674b7..7e2310b 100644
--- a/src/main/java/com/ots/project/exam/service/UserEventLogService.java
+++ b/src/main/java/com/ots/project/exam/service/UserEventLogService.java
@@ -1,16 +1,10 @@
 package com.ots.project.exam.service;
-
 import com.github.pagehelper.PageInfo;
 import com.ots.project.exam.domain.UserEventLog;
 import com.ots.project.exam.viewmodel.UserEventPageRequestVM;
-
 import java.util.List;
-
 public interface UserEventLogService extends BaseService<UserEventLog> {
-
     List<UserEventLog> getUserEventLogByUserId(Integer id);
-
     PageInfo<UserEventLog> page(UserEventPageRequestVM requestVM);
-
     List<Integer> selectMothCount();
 }
diff --git a/src/main/java/com/ots/project/exam/service/impl/BaseExamServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/BaseExamServiceImpl.java
index 29a792b..1105240 100644
--- a/src/main/java/com/ots/project/exam/service/impl/BaseExamServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/BaseExamServiceImpl.java
@@ -1,39 +1,30 @@
 package com.ots.project.exam.service.impl;
-
 import com.ots.project.exam.mapper.BaseExamMapper;
 import com.ots.project.exam.service.IBaseExamService;
 import lombok.AllArgsConstructor;
-
 @AllArgsConstructor
 public abstract class BaseExamServiceImpl<T> implements IBaseExamService<T> {
-
     BaseExamMapper<T> baseMapper;
-
     @Override
     public int deleteById(Integer id) {
         return baseMapper.deleteByPrimaryKey(id);
     }
-
     @Override
     public int insert(T record) {
         return baseMapper.insert(record);
     }
-
     @Override
     public int insertByFilter(T record) {
         return baseMapper.insertSelective(record);
     }
-
     @Override
     public T selectById(Integer id) {
         return baseMapper.selectByPrimaryKey(id);
     }
-
     @Override
     public int updateByIdFilter(T record) {
         return baseMapper.updateByPrimaryKeySelective(record);
     }
-
     @Override
     public int updateById(T record) {
         return baseMapper.updateByPrimaryKey(record);
diff --git a/src/main/java/com/ots/project/exam/service/impl/BaseServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/BaseServiceImpl.java
index 60e4277..514f96f 100644
--- a/src/main/java/com/ots/project/exam/service/impl/BaseServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/BaseServiceImpl.java
@@ -1,39 +1,30 @@
 package com.ots.project.exam.service.impl;
-
 import com.ots.project.exam.mapper.BaseMapper;
 import com.ots.project.exam.service.BaseService;
 import lombok.AllArgsConstructor;
-
 @AllArgsConstructor
 public abstract class BaseServiceImpl<T> implements BaseService<T> {
-
     BaseMapper<T> baseMapper;
-
     @Override
     public int deleteById(Integer id) {
         return baseMapper.deleteByPrimaryKey(id);
     }
-
     @Override
     public int insert(T record) {
         return baseMapper.insert(record);
     }
-
     @Override
     public int insertByFilter(T record) {
         return baseMapper.insertSelective(record);
     }
-
     @Override
     public T selectById(Integer id) {
         return baseMapper.selectByPrimaryKey(id);
     }
-
     @Override
     public int updateByIdFilter(T record) {
         return baseMapper.updateByPrimaryKeySelective(record);
     }
-
     @Override
     public int updateById(T record) {
         return baseMapper.updateByPrimaryKey(record);
diff --git a/src/main/java/com/ots/project/exam/service/impl/CountCalculateServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/CountCalculateServiceImpl.java
index 5250508..e05e973 100644
--- a/src/main/java/com/ots/project/exam/service/impl/CountCalculateServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/CountCalculateServiceImpl.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.service.impl;
-
 import com.ots.common.enums.TestMemberStatusEnum;
 import com.ots.project.exam.domain.*;
 import com.ots.project.exam.mapper.EntTestMemberMapper;
@@ -8,29 +7,25 @@
 import com.ots.project.exam.service.CountCalculateService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
-
 import java.util.*;
 import java.util.stream.Collectors;
+import static com.ots.common.enums.TestMemberStatusEnum.answering;
+import static com.ots.common.enums.TestMemberStatusEnum.timeOut;
 
-/**
- * 娆℃暟璁$畻缁勪欢
- */
 @Component
 public class CountCalculateServiceImpl implements CountCalculateService {
-
     @Autowired
     private EntTestMemberMapper entTestMemberMapper;
     @Autowired
     private EntTestPackageMapper entTestPackageMapper;
     @Autowired
     private SysUserExtendMapper sysUserExtendMapper;
-
     @Override
     public NumberOfUsersByCompany calculateProductPackagesMemberCount(EntTestPackage entTestPackage) {
         Long userId = entTestPackage.getUserId();
         NumberOfUsersByCompany result = new NumberOfUsersByCompany();
         if (Objects.nonNull(userId)) {
-            //1銆佹煡璇紒涓氱敤鎴锋墿灞曞弬鏁�
+            
             SysUserExtend sysUserExtend = sysUserExtendMapper.selectSysUserExtendById(userId);
             if (Objects.isNull(sysUserExtend)) {
                 return result;
@@ -42,17 +37,15 @@
             result.setTestNum(testNum.intValue());
         }
         List<EntTestPackage> entTestPackages = findEntTestPackages(entTestPackage);
-        //3銆佹煡璇㈠綋鍓嶆祴璇曞寘涓嬬殑鐢ㄦ埛
+        
         if (Objects.nonNull(entTestPackages) && !entTestPackages.isEmpty()) {
             result = constructResult(userId, entTestPackages);
         }
         return result;
     }
-
     private List<EntTestPackage> findEntTestPackages(EntTestPackage entTestPackage) {
         return entTestPackageMapper.selectEntTestPackageList(entTestPackage);
     }
-
     private NumberOfUsersByCompany constructResult(Long userId, List<EntTestPackage> entTestPackages) {
         List<Long> collect = entTestPackages.stream().map(p -> p.getId()).collect(Collectors.toList());
         List<EntTestMember> entTestMembers = findEntTestMembers(collect);
@@ -63,7 +56,7 @@
         if (Objects.nonNull(result.getTestNum())) {
             result.setUsedTimes(entTestMembers.size());
         }
-        //4銆佹瘡涓祴璇曞寘鐨勪娇鐢ㄦ儏鍐�
+        
         Map<Long, List<EntTestMember>> testPackageUsageTimesMap = entTestMembers.stream().collect(Collectors.groupingBy(EntTestMember::getTestId));
         entTestPackages.stream().forEach(p -> {
             NumberOfUsersByPackage numberOfUsersByPackage = new NumberOfUsersByPackage();
@@ -75,7 +68,7 @@
             if (Objects.nonNull(testMembers)) {
                 total = Long.valueOf(testMembers.size());
                 finishNum = testMembers.stream().filter(testMember -> TestMemberStatusEnum.completed.getCode().equals(testMember.getStatus())).mapToLong(x -> 1).sum();
-                testIngNum = testMembers.stream().filter(testMember -> TestMemberStatusEnum.answering.getCode().equals(testMember.getStatus())).mapToLong(x -> 1).sum();
+                testIngNum = testMembers.stream().filter(testMember -> answering.getCode().equals(testMember.getStatus())).mapToLong(x -> 1).sum();
                 unTestNum = total - testIngNum - finishNum;
             }
             numberOfUsersByPackage.setTestNum(total);
@@ -89,14 +82,12 @@
         });
         return result;
     }
-
     private List<EntTestMember> findEntTestMembers(List<Long> collect) {
         Map map = new HashMap();
         map.put("testIds", collect);
-        //unprocessed("0", "鏈鐞�"),completed("1", "宸插畬鎴�"),answering("2", "绛旈涓�"), 涓夌鐘舵�佺畻宸茬粡浣跨敤浜嗘鏁�
-        List<String> recyclingStatus = Arrays.asList(TestMemberStatusEnum.unprocessed.getCode(), TestMemberStatusEnum.completed.getCode(), TestMemberStatusEnum.answering.getCode());
+        
+        List<String> recyclingStatus = Arrays.asList(TestMemberStatusEnum.unprocessed.getCode(), TestMemberStatusEnum.completed.getCode(), answering.getCode(), timeOut.getCode());
         map.put("status", recyclingStatus);
         return entTestMemberMapper.selectEntTestMemberListByMap(map);
     }
-
 }
diff --git a/src/main/java/com/ots/project/exam/service/impl/EntDemographyInfoServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/EntDemographyInfoServiceImpl.java
index eb75c62..32af7ed 100644
--- a/src/main/java/com/ots/project/exam/service/impl/EntDemographyInfoServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/EntDemographyInfoServiceImpl.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.service.impl;
-
 import com.ots.common.utils.DateUtils;
 import com.ots.common.utils.text.Convert;
 import com.ots.project.exam.domain.EntDemographyInfo;
@@ -7,88 +6,44 @@
 import com.ots.project.exam.service.IEntDemographyInfoService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
 import java.util.List;
 
-/**
- * 浜哄彛瀛︿俊鎭疭ervice涓氬姟灞傚鐞�
- *
- * @author ots
- * @date 2019-12-15
- */
 @Service
 public class EntDemographyInfoServiceImpl implements IEntDemographyInfoService {
     @Autowired
     private EntDemographyInfoMapper entDemographyInfoMapper;
-
-    /**
-     * 鏌ヨ浜哄彛瀛︿俊鎭�
-     *
-     * @param infoId 浜哄彛瀛︿俊鎭疘D
-     * @return 浜哄彛瀛︿俊鎭�
-     */
+    
     @Override
     public EntDemographyInfo selectEntDemographyInfoById(Long infoId) {
         return entDemographyInfoMapper.selectEntDemographyInfoById(infoId);
     }
-
-    /**
-     * 鏌ヨ浜哄彛瀛︿俊鎭垪琛�
-     *
-     * @param entDemographyInfo 浜哄彛瀛︿俊鎭�
-     * @return 浜哄彛瀛︿俊鎭�
-     */
+    
     @Override
     public List<EntDemographyInfo> selectEntDemographyInfoList(EntDemographyInfo entDemographyInfo) {
         return entDemographyInfoMapper.selectEntDemographyInfoList(entDemographyInfo);
     }
-
     @Override
     public List<EntDemographyInfo> selectEntDemographyAndParamList(EntDemographyInfo entDemographyInfo) {
         return entDemographyInfoMapper.selectEntDemographyAndParamList(entDemographyInfo);
     }
-
-    /**
-     * 鏂板浜哄彛瀛︿俊鎭�
-     *
-     * @param entDemographyInfo 浜哄彛瀛︿俊鎭�
-     * @return 缁撴灉
-     */
+    
     @Override
     public int insertEntDemographyInfo(EntDemographyInfo entDemographyInfo) {
         entDemographyInfo.setCreateTime(DateUtils.getNowDate());
         return entDemographyInfoMapper.insertEntDemographyInfo(entDemographyInfo);
     }
-
-    /**
-     * 淇敼浜哄彛瀛︿俊鎭�
-     *
-     * @param entDemographyInfo 浜哄彛瀛︿俊鎭�
-     * @return 缁撴灉
-     */
+    
     @Override
     public int updateEntDemographyInfo(EntDemographyInfo entDemographyInfo) {
         entDemographyInfo.setUpdateTime(DateUtils.getNowDate());
         return entDemographyInfoMapper.updateEntDemographyInfo(entDemographyInfo);
     }
-
-    /**
-     * 鍒犻櫎浜哄彛瀛︿俊鎭璞�
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     @Override
     public int deleteEntDemographyInfoByIds(String ids) {
         return entDemographyInfoMapper.deleteEntDemographyInfoByIds(Convert.toStrArray(ids));
     }
-
-    /**
-     * 鍒犻櫎浜哄彛瀛︿俊鎭俊鎭�
-     *
-     * @param infoId 浜哄彛瀛︿俊鎭疘D
-     * @return 缁撴灉
-     */
+    
     public int deleteEntDemographyInfoById(Long infoId) {
         return entDemographyInfoMapper.deleteEntDemographyInfoById(infoId);
     }
diff --git a/src/main/java/com/ots/project/exam/service/impl/EntDemographyParamServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/EntDemographyParamServiceImpl.java
index a22da3d..80e093a 100644
--- a/src/main/java/com/ots/project/exam/service/impl/EntDemographyParamServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/EntDemographyParamServiceImpl.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.service.impl;
-
 import com.ots.common.utils.DateUtils;
 import com.ots.common.utils.StringUtils;
 import com.ots.common.utils.text.Convert;
@@ -9,70 +8,36 @@
 import com.ots.project.system.user.mapper.UserMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
 import java.util.List;
 import java.util.Map;
 
-/**
- * 浜哄彛瀛﹀彉閲忓畾涔塖ervice涓氬姟灞傚鐞�
- *
- * @author ots
- * @date 2019-12-11
- */
 @Service
 public class EntDemographyParamServiceImpl implements IEntDemographyParamService {
     @Autowired
     private EntDemographyParamMapper entDemographyParamMapper;
-
     @Autowired
     private UserMapper userMapper;
-
-
-    /**
-     * 鏌ヨ浜哄彛瀛﹀彉閲忓畾涔�
-     *
-     * @param paramId 浜哄彛瀛﹀彉閲忓畾涔塈D
-     * @return 浜哄彛瀛﹀彉閲忓畾涔�
-     */
+    
     @Override
     public EntDemographyParam selectEntDemographyParamById(Long paramId) {
         return entDemographyParamMapper.selectEntDemographyParamById(paramId);
     }
-
-    /**
-     * 鏌ヨ浜哄彛瀛﹀彉閲忓畾涔夊垪琛�
-     *
-     * @param entDemographyParam 浜哄彛瀛﹀彉閲忓畾涔�
-     * @return 浜哄彛瀛﹀彉閲忓畾涔�
-     */
+    
     @Override
     public List<EntDemographyParam> selectEntDemographyParamList(EntDemographyParam entDemographyParam) {
         return entDemographyParamMapper.selectEntDemographyParamList(entDemographyParam);
     }
-
     @Override
     public List<EntDemographyParam> selectEntDemographyParamListByParamIn(String paramIds) {
         return entDemographyParamMapper.selectEntDemographyParamListByParamIn(Convert.toStrArray(paramIds));
     }
-
-    /**
-     * 鏂板浜哄彛瀛﹀彉閲忓畾涔�
-     *
-     * @param entDemographyParam 浜哄彛瀛﹀彉閲忓畾涔�
-     * @return 缁撴灉
-     */
+    
     @Override
     public int insertEntDemographyParam(EntDemographyParam entDemographyParam) {
         entDemographyParam.setCreateTime(DateUtils.getNowDate());
         return entDemographyParamMapper.insertEntDemographyParam(entDemographyParam);
     }
-
-    /**
-     * 淇敼浜哄彛瀛﹀彉閲忓畾涔�
-     *
-     * @param entDemographyParam 浜哄彛瀛﹀彉閲忓畾涔�
-     * @return 缁撴灉
-     */
+    
     @Override
     public int updateEntDemographyParam(EntDemographyParam entDemographyParam) {
         if (StringUtils.isEmpty(entDemographyParam.getIsRequired())) {
@@ -81,24 +46,12 @@
         entDemographyParam.setUpdateTime(DateUtils.getNowDate());
         return entDemographyParamMapper.updateEntDemographyParam(entDemographyParam);
     }
-
-    /**
-     * 鍒犻櫎浜哄彛瀛﹀彉閲忓畾涔夊璞�
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     @Override
     public int deleteEntDemographyParamByIds(String ids) {
         return entDemographyParamMapper.deleteEntDemographyParamByIds(Convert.toStrArray(ids));
     }
-
-    /**
-     * 鍒犻櫎浜哄彛瀛﹀彉閲忓畾涔変俊鎭�
-     *
-     * @param paramId 浜哄彛瀛﹀彉閲忓畾涔塈D
-     * @return 缁撴灉
-     */
+    
     public int deleteEntDemographyParamById(Long paramId) {
         return entDemographyParamMapper.deleteEntDemographyParamById(paramId);
     }
diff --git a/src/main/java/com/ots/project/exam/service/impl/EntOperLogServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/EntOperLogServiceImpl.java
index 6cab921..8be1ff6 100644
--- a/src/main/java/com/ots/project/exam/service/impl/EntOperLogServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/EntOperLogServiceImpl.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.service.impl;
-
 import com.ots.common.enums.OpertypeEnum;
 import com.ots.common.utils.DateUtils;
 import com.ots.common.utils.text.Convert;
@@ -8,88 +7,44 @@
 import com.ots.project.exam.service.IEntOperLogService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
 import java.util.Date;
 import java.util.List;
 
-/**
- * 浣跨敤娆℃暟鎿嶄綔璁板綍Service涓氬姟灞傚鐞�
- *
- * @author ots
- * @date 2020-01-19
- */
 @Service
 public class EntOperLogServiceImpl implements IEntOperLogService {
     @Autowired
     private EntOperLogMapper entOperLogMapper;
-
-    /**
-     * 鏌ヨ浣跨敤娆℃暟鎿嶄綔璁板綍
-     *
-     * @param logId 浣跨敤娆℃暟鎿嶄綔璁板綍ID
-     * @return 浣跨敤娆℃暟鎿嶄綔璁板綍
-     */
+    
     @Override
     public EntOperLog selectEntOperLogById(Long logId) {
         return entOperLogMapper.selectEntOperLogById(logId);
     }
-
-    /**
-     * 鏌ヨ浣跨敤娆℃暟鎿嶄綔璁板綍鍒楄〃
-     *
-     * @param entOperLog 浣跨敤娆℃暟鎿嶄綔璁板綍
-     * @return 浣跨敤娆℃暟鎿嶄綔璁板綍
-     */
+    
     @Override
     public List<EntOperLog> selectEntOperLogList(EntOperLog entOperLog) {
         return entOperLogMapper.selectEntOperLogList(entOperLog);
     }
-
-    /**
-     * 鏂板浣跨敤娆℃暟鎿嶄綔璁板綍
-     *
-     * @param entOperLog 浣跨敤娆℃暟鎿嶄綔璁板綍
-     * @return 缁撴灉
-     */
+    
     @Override
     public int insertEntOperLog(EntOperLog entOperLog) {
         entOperLog.setCreateTime(DateUtils.getNowDate());
         return entOperLogMapper.insertEntOperLog(entOperLog);
     }
-
-    /**
-     * 淇敼浣跨敤娆℃暟鎿嶄綔璁板綍
-     *
-     * @param entOperLog 浣跨敤娆℃暟鎿嶄綔璁板綍
-     * @return 缁撴灉
-     */
+    
     @Override
     public int updateEntOperLog(EntOperLog entOperLog) {
         entOperLog.setUpdateTime(DateUtils.getNowDate());
         return entOperLogMapper.updateEntOperLog(entOperLog);
     }
-
-    /**
-     * 鍒犻櫎浣跨敤娆℃暟鎿嶄綔璁板綍瀵硅薄
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     @Override
     public int deleteEntOperLogByIds(String ids) {
         return entOperLogMapper.deleteEntOperLogByIds(Convert.toStrArray(ids));
     }
-
-    /**
-     * 鍒犻櫎浣跨敤娆℃暟鎿嶄綔璁板綍淇℃伅
-     *
-     * @param logId 浣跨敤娆℃暟鎿嶄綔璁板綍ID
-     * @return 缁撴灉
-     */
+    
     public int deleteEntOperLogById(Long logId) {
         return entOperLogMapper.deleteEntOperLogById(logId);
     }
-
     @Override
     public void saveLog(Long userId, String createUserId, OpertypeEnum opertypeEnum, Long addNum) {
         EntOperLog entOperLog = new EntOperLog();
diff --git a/src/main/java/com/ots/project/exam/service/impl/EntTestDetailServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/EntTestDetailServiceImpl.java
index 6ca61ab..16aa8a0 100644
--- a/src/main/java/com/ots/project/exam/service/impl/EntTestDetailServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/EntTestDetailServiceImpl.java
@@ -1,16 +1,8 @@
 package com.ots.project.exam.service.impl;
-
 import com.ots.project.exam.service.IEntTestDetailService;
 import org.springframework.stereotype.Service;
 
-/**
- * entTestDetailService涓氬姟灞傚鐞�
- * 
- * @author ots
- * @date 2020-03-01
- */
 @Service
 public class EntTestDetailServiceImpl implements IEntTestDetailService 
 {
-
 }
diff --git a/src/main/java/com/ots/project/exam/service/impl/EntTestMemberBackstageServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/EntTestMemberBackstageServiceImpl.java
index 77794f2..0c336fa 100644
--- a/src/main/java/com/ots/project/exam/service/impl/EntTestMemberBackstageServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/EntTestMemberBackstageServiceImpl.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.service.impl;
-
 import com.ots.common.utils.DateUtils;
 import com.ots.common.utils.text.Convert;
 import com.ots.project.exam.domain.EntTestMemberBackstage;
@@ -7,83 +6,40 @@
 import com.ots.project.exam.service.IEntTestMemberBackstageService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
 import java.util.List;
 
-/**
- * EntTestMemberBackstageService涓氬姟灞傚鐞�
- *
- * @author ots
- * @date 2020-02-29
- */
 @Service
 public class EntTestMemberBackstageServiceImpl implements IEntTestMemberBackstageService {
     @Autowired
     private EntTestMemberBackstageMapper entTestMemberBackstageMapper;
-
-    /**
-     * 鏌ヨEntTestMemberBackstage
-     *
-     * @param memberId EntTestMemberBackstageID
-     * @return EntTestMemberBackstage
-     */
+    
     @Override
     public EntTestMemberBackstage selectEntTestMemberBackstageById(Long memberId) {
         return entTestMemberBackstageMapper.selectEntTestMemberBackstageById(memberId);
     }
-
-    /**
-     * 鏌ヨEntTestMemberBackstage鍒楄〃
-     *
-     * @param entTestMemberBackstage EntTestMemberBackstage
-     * @return EntTestMemberBackstage
-     */
+    
     @Override
     public List<EntTestMemberBackstage> selectEntTestMemberBackstageList(EntTestMemberBackstage entTestMemberBackstage) {
         return entTestMemberBackstageMapper.selectEntTestMemberBackstageList(entTestMemberBackstage);
     }
-
-    /**
-     * 鏂板EntTestMemberBackstage
-     *
-     * @param entTestMemberBackstage EntTestMemberBackstage
-     * @return 缁撴灉
-     */
+    
     @Override
     public int insertEntTestMemberBackstage(EntTestMemberBackstage entTestMemberBackstage) {
         entTestMemberBackstage.setCreateTime(DateUtils.getNowDate());
         return entTestMemberBackstageMapper.insertEntTestMemberBackstage(entTestMemberBackstage);
     }
-
-    /**
-     * 淇敼EntTestMemberBackstage
-     *
-     * @param entTestMemberBackstage EntTestMemberBackstage
-     * @return 缁撴灉
-     */
+    
     @Override
     public int updateEntTestMemberBackstage(EntTestMemberBackstage entTestMemberBackstage) {
         entTestMemberBackstage.setUpdateTime(DateUtils.getNowDate());
         return entTestMemberBackstageMapper.updateEntTestMemberBackstage(entTestMemberBackstage);
     }
-
-    /**
-     * 鍒犻櫎EntTestMemberBackstage瀵硅薄
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     @Override
     public int deleteEntTestMemberBackstageByIds(String ids) {
         return entTestMemberBackstageMapper.deleteEntTestMemberBackstageByIds(Convert.toStrArray(ids));
     }
-
-    /**
-     * 鍒犻櫎EntTestMemberBackstage淇℃伅
-     *
-     * @param memberId EntTestMemberBackstageID
-     * @return 缁撴灉
-     */
+    
     public int deleteEntTestMemberBackstageById(Long memberId) {
         return entTestMemberBackstageMapper.deleteEntTestMemberBackstageById(memberId);
     }
diff --git a/src/main/java/com/ots/project/exam/service/impl/EntTestMemberServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/EntTestMemberServiceImpl.java
index 7c59115..e6014b0 100644
--- a/src/main/java/com/ots/project/exam/service/impl/EntTestMemberServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/EntTestMemberServiceImpl.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.service.impl;
-
 import com.ots.common.enums.TestMemberStatusEnum;
 import com.ots.common.enums.UsageCountEnum;
 import com.ots.common.exception.BusinessException;
@@ -20,65 +19,40 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-
 import java.util.*;
 import java.util.stream.Collectors;
-
 import static com.ots.common.enums.ResponseCode.*;
 import static com.ots.common.enums.TestMemberStatusEnum.*;
 
-/**
- * 娴嬭瘎浜哄憳鍚嶅崟Service涓氬姟灞傚鐞�
- *
- * @author ots
- * @date 2019-12-15
- */
 @Service
 @Slf4j
 public class EntTestMemberServiceImpl implements IEntTestMemberService {
     @Autowired
     private EntTestMemberMapper entTestMemberMapper;
-
     @Autowired
     private EntTestPackageMapper entTestPackageMapper;
-
     @Autowired
     private SysUserExtendMapper sysUserExtendMapper;
     @Autowired
     private TExamReportMapper tReportTemplateMapper;
-
-
-    /**
-     * 鏌ヨ娴嬭瘎浜哄憳鍚嶅崟
-     *
-     * @param memberId 娴嬭瘎浜哄憳鍚嶅崟ID
-     * @return 娴嬭瘎浜哄憳鍚嶅崟
-     */
+    
     @Override
     public EntTestMember selectEntTestMemberById(Long memberId) {
         return entTestMemberMapper.selectEntTestMemberById(memberId);
     }
-
-    /**
-     * 鏌ヨ娴嬭瘎浜哄憳鍚嶅崟鍒楄〃
-     *
-     * @param entTestMember 娴嬭瘎浜哄憳鍚嶅崟
-     * @return 娴嬭瘎浜哄憳鍚嶅崟
-     */
+    
     @Override
     public List<EntTestMember> selectEntTestMemberList(EntTestMember entTestMember) {
         return entTestMemberMapper.selectEntTestMemberList(entTestMember);
     }
-
     @Override
     public List<EntTestMember> selectEntTestMemberTopList(EntTestMember entTestMember) {
         return entTestMemberMapper.selectEntTestMemberTopList(entTestMember);
     }
-
     @Override
     public List<EntTestMember> selectEntTestMemberQueryList(EntTestMember entTestMember) {
         List<EntTestMember> entTestMembers = entTestMemberMapper.selectEntTestMemberQueryList(entTestMember);
-        //鏌ヨ鎶ュ憡琛ㄦ槸鍚︾粰HR鍙戦�侀偖浠�
+        
         List<String> collect = entTestMembers.stream().map(p -> String.valueOf(p.getMemberId())).collect(Collectors.toList());
         if (Objects.isNull(collect)) {
             return new ArrayList<>();
@@ -87,10 +61,8 @@
         if (Objects.isNull(memberIds) || memberIds.length == 0) {
             return new ArrayList<>();
         }
-
         List<TExamReport> tExamReports = tReportTemplateMapper.selectTReportTemplatesByMemberId(memberIds);
-
-        //琛ュ厖repor琛ㄧ殑HR閭鍙戦�佺姸鎬�
+        
         Map<String, EntTestMember> map = new HashMap();
         for (EntTestMember testMember : entTestMembers) {
             map.put(String.valueOf(testMember.getMemberId()), testMember);
@@ -106,18 +78,11 @@
         }
         return entTestMembers;
     }
-
     @Override
     public List<EntTestMember> selectEntTestMemberList(Map params) {
         return entTestMemberMapper.selectEntTestMemberListByMap(params);
     }
-
-    /**
-     * 鏂板娴嬭瘎浜哄憳鍚嶅崟锛屽苟鍑忓幓鍙敤娆℃暟
-     *
-     * @param entTestMember 娴嬭瘎浜哄憳鍚嶅崟
-     * @return 缁撴灉
-     */
+    
     @Override
     @Transactional
     public int insertEntTestMember(EntTestMember entTestMember) {
@@ -127,78 +92,48 @@
         usageCount(entTestMember, UsageCountEnum.reduce);
         return result;
     }
-
-    /**
-     * 浣跨敤娆℃暟锛堟牴鎹紶鍏ョ殑绫诲瀷 鍒ゆ柇娆℃暟鏄鍔犺繕鏄噺灏戯級
-     * 璋冪敤锛屽鍔犳垨鑰呮墸鍑忎竴娆°��
-     *
-     * @param entTestMember
-     */
+    
     private void usageCount(EntTestMember entTestMember, UsageCountEnum op) {
         MISSING_PARAMETERS.assertNotNull(entTestMember.getTestId(), "娴嬭瘯鍖呯紪鐮�");
         EntTestPackage entTestPackage = entTestPackageMapper.selectEntTestPackageById(entTestMember.getTestId());
-
         ERROR_MESSAGE_CHECK.assertNotNull(entTestPackage, "娴嬭瘯鍖呬俊鎭笉瀛樺湪锛�");
         SysUserExtend sysUserExtend = sysUserExtendMapper.selectSysUserExtendById(entTestPackage.getUserId());
-
         ERROR_MESSAGE_CHECK.assertNotNull(sysUserExtend, "鏈厤缃彲浣跨敤娆℃暟锛�");
         USR_TIME_ISOVER.assertIsTrue(sysUserExtend.getTestNum() > 0, entTestPackage.getUserId());
         sysUserExtend.setTestNum(sysUserExtend.getTestNum() + op.getOp());
-
         sysUserExtendMapper.updateSysUserExtend(sysUserExtend);
     }
-
-    /**
-     * 淇敼娴嬭瘎浜哄憳鍚嶅崟
-     *
-     * @param entTestMember 娴嬭瘎浜哄憳鍚嶅崟
-     * @return 缁撴灉
-     */
+    
     @Override
     @Transactional
     public int updateEntTestMember(EntTestMember entTestMember) {
         entTestMember.setUpdateTime(DateUtils.getNowDate());
         int reslut = entTestMemberMapper.updateEntTestMember(entTestMember);
-        //鍥炴敹鐘舵�侊紝闇�瑕佸洖鏀舵鏁�
+        
         List<String> status = Arrays.asList(TestMemberStatusEnum.recover.getCode(), TestMemberStatusEnum.expiryRecovery.getCode());
         if (status.contains(entTestMember.getStatus())) {
             usageCount(entTestMember, UsageCountEnum.add);
         }
         return reslut;
     }
-
-    /**
-     * 鍒犻櫎娴嬭瘎浜哄憳鍚嶅崟瀵硅薄
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     @Override
     public int deleteEntTestMemberByIds(String ids) {
         return entTestMemberMapper.deleteEntTestMemberByIds(Convert.toStrArray(ids));
     }
-
-    /**
-     * 鍒犻櫎娴嬭瘎浜哄憳鍚嶅崟淇℃伅
-     *
-     * @param memberId 娴嬭瘎浜哄憳鍚嶅崟ID
-     * @return 缁撴灉
-     */
+    
     public int deleteEntTestMemberById(Long memberId) {
         return entTestMemberMapper.deleteEntTestMemberById(memberId);
     }
-
     @Override
     public String importEntTestMember(List<EntTestMember> entTestMemberList, Boolean isUpdateSupport) {
         if (StringUtils.isNull(entTestMemberList) || entTestMemberList.size() == 0) {
             throw new BusinessException("Import user data cannot be empty锛�");
         }
-
         int successNum = 0;
         int failureNum = 0;
         StringBuilder successMsg = new StringBuilder();
         StringBuilder failureMsg = new StringBuilder();
-
         for (EntTestMember entTestMember : entTestMemberList) {
             try {
                 insertEntTestMember(entTestMember);
@@ -213,26 +148,20 @@
             successNum++;
             successMsg.append("<br/>" + successNum + "銆�"+ MessageUtils.message("jsp.testPackage.name") +" " + entTestMember.getMemberName() + MessageUtils.message("imported.successfully"));
         }
-
-
         if (failureNum > 0) {
             failureMsg.insert(0, MessageUtils.message("import.internationalization.001") + failureNum + MessageUtils.message("import.internationalization.002"));
-//            throw new BusinessException(failureMsg.toString());
+
         } else {
             successMsg.insert(0, MessageUtils.message("import.internationalization.003") + successNum + MessageUtils.message("import.internationalization.004"));
         }
-
         return successMsg.toString();
     }
-
-
     public EntTestMember findEntTestMember(String token, List<String> status) {
         Map paramMap = new HashMap();
         paramMap.put("token", token);
         paramMap.put("status", status);
         return entTestMemberMapper.findEntTestMember(paramMap);
     }
-
     @Override
     public int updateTestMemberStatus(TestMemberStatusEnum statusEnum, long memberId) {
         EntTestMember member = selectEntTestMemberById(memberId);
@@ -242,11 +171,9 @@
         } else if (completed == statusEnum || timeOut == statusEnum) {
             member.setEndTime(new Date());
         }
-
         int result = updateEntTestMember(member);
         return result;
     }
-
     @Override
     public boolean checkMemberHasReport(List<String> asList, Long testId) {
         return false;
diff --git a/src/main/java/com/ots/project/exam/service/impl/EntTestPackageServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/EntTestPackageServiceImpl.java
index 0c0e945..b2e0343 100644
--- a/src/main/java/com/ots/project/exam/service/impl/EntTestPackageServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/EntTestPackageServiceImpl.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.service.impl;
-
 import com.ots.common.enums.TestMemberStatusEnum;
 import com.ots.common.utils.DateUtils;
 import com.ots.common.utils.StringUtils;
@@ -10,50 +9,28 @@
 import com.ots.project.exam.service.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
 import java.util.*;
-
 import static com.ots.common.enums.OpertypeEnum.DIS_USER;
 import static com.ots.common.enums.ResponseCode.ERROR_RECOVER;
 
-/**
- * 娴嬭瘯鍖呯鐞哠ervice涓氬姟灞傚鐞�
- *
- * @author ots
- * @date 2019-11-27
- */
 @Service
 public class EntTestPackageServiceImpl implements IEntTestPackageService {
     @Autowired
     private EntTestPackageMapper entTestPackageMapper;
-
     @Autowired
     private IEntTestMemberService entTestMemberService;
-
     @Autowired
     private CountCalculateService calculate;
     @Autowired
     private IEntOperLogService entOperLogService;
     @Autowired
     private ITReportTemplateService reportTemplateService;
-
-    /**
-     * 鏌ヨ娴嬭瘯鍖呯鐞�
-     *
-     * @param id 娴嬭瘯鍖呯鐞咺D
-     * @return 娴嬭瘯鍖呯鐞�
-     */
+    
     @Override
     public EntTestPackage selectEntTestPackageById(Long id) {
         return entTestPackageMapper.selectEntTestPackageById(id);
     }
-
-    /**
-     * 鏌ヨ娴嬭瘯鍖呯鐞嗗垪琛�
-     *
-     * @param entTestPackage 娴嬭瘯鍖呯鐞�
-     * @return 娴嬭瘯鍖呯鐞�
-     */
+    
     @Override
     public List<EntTestPackage> selectEntTestPackageList(EntTestPackage entTestPackage) {
         List<EntTestPackage> entTestPackages = entTestPackageMapper.selectEntTestPackageList(entTestPackage);
@@ -69,7 +46,7 @@
                 String[] split = reportTemplateId.split(",");
                 Arrays.stream(split).forEach(item -> {
                     TReportTemplate template = reportTemplateService.selectTReportTemplateById(Long.parseLong(item));
-                    // 濡傛灉鎶ュ憡琚垹闄や簡灏变笉璇诲嚭鏉ヤ簡
+                    
                     if (Objects.nonNull(template)) {
                         String reportTemplateShowValue = Objects.isNull(p.getReportTemplateShowValue()) ? "" : p.getReportTemplateShowValue();
                         p.setReportTemplateShowValue(template.getReportType() + "-" + template.getTemplateType() + "-" + template.getLangType() + ";" + reportTemplateShowValue);
@@ -79,63 +56,36 @@
         });
         return entTestPackages;
     }
-
-
     @Override
     public List<EntTestPackage> selectEntTestPackageMainList(EntTestPackage entTestPackage) {
         List<EntTestPackage> entTestPackages = entTestPackageMapper.selectEntTestPackageMainList(entTestPackage);
         return entTestPackages;
     }
-
-    /**
-     * 鏂板娴嬭瘯鍖呯鐞�
-     *
-     * @param entTestPackage 娴嬭瘯鍖呯鐞�
-     * @return 缁撴灉
-     */
+    
     @Override
     public int insertEntTestPackage(EntTestPackage entTestPackage) {
-        // 濡傛灉鐢ㄦ埛缂栫爜涓虹┖锛屾彁鍙栧綋澶╂湁鏁堢櫥褰曠敤鎴�
+        
         if (Objects.isNull(entTestPackage.getUserId())) {
             entTestPackage.setUserId(ShiroUtils.getSysUser().getUserId());
         }
         entTestPackage.setCreateTime(DateUtils.getNowDate());
         return entTestPackageMapper.insertEntTestPackage(entTestPackage);
     }
-
-    /**
-     * 淇敼娴嬭瘯鍖呯鐞�
-     *
-     * @param entTestPackage 娴嬭瘯鍖呯鐞�
-     * @return 缁撴灉
-     */
+    
     @Override
     public int updateEntTestPackage(EntTestPackage entTestPackage) {
         entTestPackage.setUpdateTime(DateUtils.getNowDate());
         return entTestPackageMapper.updateEntTestPackage(entTestPackage);
     }
-
-    /**
-     * 鍒犻櫎娴嬭瘯鍖呯鐞嗗璞�
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     @Override
     public int deleteEntTestPackageByIds(String ids) {
         return entTestPackageMapper.deleteEntTestPackageByIds(Convert.toStrArray(ids));
     }
-
-    /**
-     * 鍒犻櫎娴嬭瘯鍖呯鐞嗕俊鎭�
-     *
-     * @param id 娴嬭瘯鍖呯鐞咺D
-     * @return 缁撴灉
-     */
+    
     public int deleteEntTestPackageById(Long id) {
         return entTestPackageMapper.deleteEntTestPackageById(id);
     }
-
     @Override
     public List<EntTestPackage> selectEntTestPackageListByIdAndStatusIn(Long userId, List<String> status) {
         if (Objects.isNull(userId) && Objects.isNull(status) && status.isEmpty()) {
@@ -150,11 +100,9 @@
         }
         return selectEntTestPackageListByIdAndStatusIn(paramMap);
     }
-
     public List<EntTestPackage> selectEntTestPackageListByIdAndStatusIn(Map paramMap) {
         return entTestPackageMapper.selectEntTestPackageListByIdAndStatusIn(paramMap);
     }
-
     @Override
     public int recover(Long testId) {
         EntTestMember member = new EntTestMember();
diff --git a/src/main/java/com/ots/project/exam/service/impl/EntTestSendtaskMailServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/EntTestSendtaskMailServiceImpl.java
index fce858b..7439099 100644
--- a/src/main/java/com/ots/project/exam/service/impl/EntTestSendtaskMailServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/EntTestSendtaskMailServiceImpl.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.service.impl;
-
 import java.util.List;
 import com.ots.common.utils.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -9,86 +8,44 @@
 import com.ots.project.exam.service.IEntTestSendtaskMailService;
 import com.ots.common.utils.text.Convert;
 
-/**
- * 閭閫�淇¤褰昐ervice涓氬姟灞傚鐞�
- * 
- * @author ots
- * @date 2020-03-09
- */
 @Service
 public class EntTestSendtaskMailServiceImpl implements IEntTestSendtaskMailService 
 {
     @Autowired
     private EntTestSendtaskMailMapper entTestSendtaskMailMapper;
-
-    /**
-     * 鏌ヨ閭閫�淇¤褰�
-     * 
-     * @param id 閭閫�淇¤褰旾D
-     * @return 閭閫�淇¤褰�
-     */
+    
     @Override
     public EntTestSendtaskMail selectEntTestSendtaskMailById(Long id)
     {
         return entTestSendtaskMailMapper.selectEntTestSendtaskMailById(id);
     }
-
-    /**
-     * 鏌ヨ閭閫�淇¤褰曞垪琛�
-     * 
-     * @param entTestSendtaskMail 閭閫�淇¤褰�
-     * @return 閭閫�淇¤褰�
-     */
+    
     @Override
     public List<EntTestSendtaskMail> selectEntTestSendtaskMailList(EntTestSendtaskMail entTestSendtaskMail)
     {
         return entTestSendtaskMailMapper.selectEntTestSendtaskMailList(entTestSendtaskMail);
     }
-
-    /**
-     * 鏂板閭閫�淇¤褰�
-     * 
-     * @param entTestSendtaskMail 閭閫�淇¤褰�
-     * @return 缁撴灉
-     */
+    
     @Override
     public int insertEntTestSendtaskMail(EntTestSendtaskMail entTestSendtaskMail)
     {
         entTestSendtaskMail.setCreateTime(DateUtils.getNowDate());
         return entTestSendtaskMailMapper.insertEntTestSendtaskMail(entTestSendtaskMail);
     }
-
-    /**
-     * 淇敼閭閫�淇¤褰�
-     * 
-     * @param entTestSendtaskMail 閭閫�淇¤褰�
-     * @return 缁撴灉
-     */
+    
     @Override
     public int updateEntTestSendtaskMail(EntTestSendtaskMail entTestSendtaskMail)
     {
         entTestSendtaskMail.setUpdateTime(DateUtils.getNowDate());
         return entTestSendtaskMailMapper.updateEntTestSendtaskMail(entTestSendtaskMail);
     }
-
-    /**
-     * 鍒犻櫎閭閫�淇¤褰曞璞�
-     * 
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     @Override
     public int deleteEntTestSendtaskMailByIds(String ids)
     {
         return entTestSendtaskMailMapper.deleteEntTestSendtaskMailByIds(Convert.toStrArray(ids));
     }
-
-    /**
-     * 鍒犻櫎閭閫�淇¤褰曚俊鎭�
-     * 
-     * @param id 閭閫�淇¤褰旾D
-     * @return 缁撴灉
-     */
+    
     public int deleteEntTestSendtaskMailById(Long id)
     {
         return entTestSendtaskMailMapper.deleteEntTestSendtaskMailById(id);
diff --git a/src/main/java/com/ots/project/exam/service/impl/EntTestSendtaskServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/EntTestSendtaskServiceImpl.java
index bdea33f..fef244f 100644
--- a/src/main/java/com/ots/project/exam/service/impl/EntTestSendtaskServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/EntTestSendtaskServiceImpl.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.service.impl;
-
 import com.ots.common.enums.SenderType;
 import com.ots.common.enums.SendtaskStatus;
 import com.ots.common.utils.DateUtils;
@@ -16,104 +15,56 @@
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
 import java.text.MessageFormat;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Objects;
-
 import static com.ots.common.enums.ResponseCode.*;
 
-/**
- * 璇勬祴閭�璇峰彂閫佷换鍔ervice涓氬姟灞傚鐞�
- *
- * @author ots
- * @date 2019-12-19
- */
 @Service
 @Slf4j
 public class EntTestSendtaskServiceImpl implements IEntTestSendtaskService {
     @Autowired
     private EntTestSendtaskMapper entTestSendtaskMapper;
-
     @Autowired
     private EntTestMemberServiceImpl entTestMemberService;
-
     @Autowired
     private EntTestPackageServiceImpl entTestPackageService;
-
     @Autowired
     private VueConfig vueConfig;
     @Autowired
     private IUserService userService;
-
-    /**
-     * 鏌ヨ璇勬祴閭�璇峰彂閫佷换鍔�
-     *
-     * @param id 璇勬祴閭�璇峰彂閫佷换鍔D
-     * @return 璇勬祴閭�璇峰彂閫佷换鍔�
-     */
+    
     @Override
     public EntTestSendtask selectEntTestSendtaskById(Long id) {
         return entTestSendtaskMapper.selectEntTestSendtaskById(id);
     }
-
-    /**
-     * 鏌ヨ璇勬祴閭�璇峰彂閫佷换鍔″垪琛�
-     *
-     * @param entTestSendtask 璇勬祴閭�璇峰彂閫佷换鍔�
-     * @return 璇勬祴閭�璇峰彂閫佷换鍔�
-     */
+    
     @Override
     public List<EntTestSendtask> selectEntTestSendtaskList(EntTestSendtask entTestSendtask) {
         return entTestSendtaskMapper.selectEntTestSendtaskList(entTestSendtask);
     }
-
-    /**
-     * 鏂板璇勬祴閭�璇峰彂閫佷换鍔�
-     *
-     * @param entTestSendtask 璇勬祴閭�璇峰彂閫佷换鍔�
-     * @return 缁撴灉
-     */
+    
     @Override
     public int insertEntTestSendtask(EntTestSendtask entTestSendtask) {
         entTestSendtask.setCreateTime(DateUtils.getNowDate());
         return entTestSendtaskMapper.insertEntTestSendtask(entTestSendtask);
     }
-
-    /**
-     * 淇敼璇勬祴閭�璇峰彂閫佷换鍔�
-     *
-     * @param entTestSendtask 璇勬祴閭�璇峰彂閫佷换鍔�
-     * @return 缁撴灉
-     */
+    
     @Override
     public int updateEntTestSendtask(EntTestSendtask entTestSendtask) {
         entTestSendtask.setUpdateTime(DateUtils.getNowDate());
         return entTestSendtaskMapper.updateEntTestSendtask(entTestSendtask);
     }
-
-    /**
-     * 鍒犻櫎璇勬祴閭�璇峰彂閫佷换鍔″璞�
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     @Override
     public int deleteEntTestSendtaskByIds(String ids) {
         return entTestSendtaskMapper.deleteEntTestSendtaskByIds(Convert.toStrArray(ids));
     }
-
-    /**
-     * 鍒犻櫎璇勬祴閭�璇峰彂閫佷换鍔′俊鎭�
-     *
-     * @param id 璇勬祴閭�璇峰彂閫佷换鍔D
-     * @return 缁撴灉
-     */
+    
     public int deleteEntTestSendtaskById(Long id) {
         return entTestSendtaskMapper.deleteEntTestSendtaskById(id);
     }
-
     @Override
     public int insertEntTestSendtaskFromMemberIds(SendTask sendTask) {
         String memberIds = sendTask.getMemberIds();
@@ -139,16 +90,16 @@
                 TEL_IS_NOLL.assertNotNull(entTestMember.getMemberPhone());
                 entTestSendtask.setAddressee(entTestMember.getMemberPhone());
             }
-            //鐢熸垚閾炬帴涓撳睘鍦板潃
+            
             String url = vueConfig.getUrl();
             String token = entTestMember.getToken();
             String urlNew = MessageFormat.format(url, token);
-            //鏇挎崲閾炬帴鍦板潃
+            
             String content = entTestSendtask.getContent();
             String replace = content.replace("{url}", urlNew);
-            //鏇挎崲鍏徃鍚嶇О
+            
             String content2 = replace.replace("{Company}",user.getUserName());
-            //鏇挎崲鐢ㄦ埛鍚嶇О
+            
             String content3 = content2.replace("{FullName}",entTestMember.getMemberName());
             entTestSendtask.setContent(content3);
             entTestSendtask.setCreateTime(DateUtils.getNowDate());
diff --git a/src/main/java/com/ots/project/exam/service/impl/ExamPaperAnswerServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/ExamPaperAnswerServiceImpl.java
index 2e84856..de8fd52 100644
--- a/src/main/java/com/ots/project/exam/service/impl/ExamPaperAnswerServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/ExamPaperAnswerServiceImpl.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.service.impl;
-
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.ots.common.enums.QuestionTypeEnum;
@@ -27,18 +26,15 @@
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.stream.Collectors;
-
 @Service
 public class ExamPaperAnswerServiceImpl implements ExamPaperAnswerService {
     private static final Logger log = LoggerFactory.getLogger(ExamPaperAnswerServiceImpl.class);
-
     @Autowired
     private TExamPaperMapper examPaperMapper;
     @Autowired
@@ -47,7 +43,6 @@
     private ITTextContentService textContentService;
     @Autowired
     private TQuestionMapper questionMapper;
-
     @Override
     public ExamPaperAnswerInfo calculateExamPaperAnswer(ExamPaperSubmitVM examPaperSubmitVM, ExamUser user) {
         ExamPaperAnswerInfo examPaperAnswerInfo = new ExamPaperAnswerInfo();
@@ -57,103 +52,85 @@
         List<ExamPaperTitleItemObject> examPaperTitleItemObjects = JsonUtil.toJsonListObject(frameTextContent, ExamPaperTitleItemObject.class);
         List<Integer> questionIds = examPaperTitleItemObjects.stream().flatMap(t -> t.getQuestionItems().stream().map(q -> q.getId())).collect(Collectors.toList());
         List<TQuestion> questions = questionMapper.selectByIds(questionIds);
-
-        // 鏄惁璺冲埌涓嬩竴娈�
+        
         setWhichPart(examPaperSubmitVM, examPaperAnswerInfo, examPaperTitleItemObjects, questions);
-
         examPaperAnswerInfo.setExamPaper(examPaper);
-
         return examPaperAnswerInfo;
     }
-
-    // 鍒ゆ柇鏄惁璺冲埌涓嬩竴娈�
+    
     private void setWhichPart(ExamPaperSubmitVM examPaperSubmitVM, ExamPaperAnswerInfo examPaperAnswerInfo, List<ExamPaperTitleItemObject> examPaperTitleItemObjects, List<TQuestion> questions) {
-        // 鍒嗙墖涓嶈冻澶氬皯鍒嗕笉鑳界瓟棰�,绛旈鏈簲璇ョ殑鍒嗘暟鏄惁鍒颁簡闃�鍊笺��
+        
         if (Objects.isNull(examPaperSubmitVM.getPartOrder())) {
             return;
         }
         int answerPartOrder = examPaperSubmitVM.getPartOrder();
-
         SubmitReport submitReport = new SubmitReport();
         if (Objects.isNull(answerPartOrder)) {
             submitReport.setJump("this");
             examPaperAnswerInfo.setSubmitReport(submitReport);
             return;
         }
-
-        // 璁$畻鏄惁寰楀垎
+        
         List<ExamPaperSubmitItemVM> answerItems = examPaperSubmitVM.getAnswerItems();
-
-        // 鐢ㄦ埛绛旂殑閫夐」
-        // (questionId, content绛旂殑椤�)
+        
+        
         Map<Integer, String> answerContentMap = getAnswerContentMap(answerItems);
-
-        // 鍘熷鍒嗙墖
+        
         Map<Integer, QuestionPart> partMap = getParts(examPaperTitleItemObjects);
-
-        // 閭d竴棰樻槸閭d竴鐗�
-        // (questionId, partOrder)
+        
+        
         Map<Integer, Integer> questionPartOrdeMap = getQuestionPartOrdeMap(examPaperTitleItemObjects);
-        // 鐢ㄦ埛绛斿灏戝垎寰楀垎
-        // (partOrder, score)
+        
+        
         Map<Integer, Integer> partAnswerScoreMap = new HashMap<>();
-        // 鏈鏈潵搴旇寰楀灏戝垎
-        // (partOrder, score)
+        
+        
         Map<Integer, Integer> partQuestionScoreMap = new HashMap<>();
-        // 鐢ㄦ埛鏈鑰楁椂
+        
         Map<Integer, Integer> partAnswerTimeMap = new HashMap<>();
-
         setAnswerScoreMap(questions, answerContentMap, questionPartOrdeMap, partAnswerScoreMap, partQuestionScoreMap);
+        
 
-        // 鏈簲寰楀灏戝垎鍒颁簡闃�鍊笺��
-//        System.out.println("鏈搴旇寰楀灏戝垎锛�" + partQuestionScoreMap.get(answerPartOrder));
-//        System.out.println("鏈鏈�浣庡垎锛�" + partMap.get(answerPartOrder).getLowestScore());
-//        System.out.println("鑷繁寰楀垎锛�" + partAnswerScoreMap.get(answerPartOrder));
-//        if (Objects.nonNull(answerPartOrder) && partQuestionScoreMap.get(answerPartOrder) >= partMap.get(answerPartOrder).getLowestScore()) {
-//            if (partAnswerScoreMap.get(answerPartOrder) < partQuestionScoreMap.get(answerPartOrder)) {
-//                submitReport.setJump("next");
-//            } else {
-//                submitReport.setJump("this");
-//            }
-//        } else {
-//            submitReport.setJump("this");
-//        }
+
+
+
+
+
+
+
+
+
+
+
         examPaperAnswerInfo.setSubmitReport(submitReport);
-        // 鏃堕棿鐨勫垽鏂�
-
+        
     }
-
     private void setAnswerScoreMap(List<TQuestion> questions, Map<Integer, String> answerContentMap, Map<Integer, Integer> questionPartOrdeMap, Map<Integer, Integer> partAnswerScoreMap, Map<Integer, Integer> partQuestionScoreMap) {
         for (TQuestion tQuestion : questions) {
-            // 棰樼洰鐨勬
+            
             int partOrder = questionPartOrdeMap.get(tQuestion.getId().intValue());
-
-            // 鍒濆鍊奸泦鍚�
+            
             if (Objects.isNull(partQuestionScoreMap.get(partOrder))){
                 partQuestionScoreMap.put(partOrder, 0);
             }
-
             if (Objects.isNull(partAnswerScoreMap.get(partOrder))) {
                 partAnswerScoreMap.put(partOrder, 0);
             }
-
-            // 鏈潵搴旇鐨勫灏戝垎
-            // 鐢ㄦ埛鑳界瓟澶氬皯鍒嗗緱鍒�
+            
+            
             if (Objects.nonNull(answerContentMap.get(tQuestion.getId().intValue()))) {
                 setAnswerScoreMap(partQuestionScoreMap, tQuestion, partOrder);
             }
+            
 
-            // 鍒嗘暟鐨勫垽鏂�
-//            System.out.println("棰樼洰鍙凤細" + tQuestion.getId().intValue());
-//            System.out.println("棰樼洰鐨勬纭瓟妗堬細" + tQuestion.getCorrect());
-//            System.out.println("鑷繁閫夋嫨锛�" + answerContentMap.get(tQuestion.getId().intValue()));
+
+
             if (Objects.equals(tQuestion.getCorrect(), answerContentMap.get(tQuestion.getId().intValue()))) {
-                // 鐢ㄦ埛鑳界瓟澶氬皯鍒嗗緱鍒�
+                
                 setAnswerScoreMap(partAnswerScoreMap, tQuestion, partOrder);
             }
         }
     }
-
     private Map<Integer, Integer> getQuestionPartOrdeMap(List<ExamPaperTitleItemObject> examPaperTitleItemObjects) {
         Map<Integer, Integer> questionPartOrdeMap = new HashMap<>();
         for (ExamPaperTitleItemObject examPaperTitleItemObject : examPaperTitleItemObjects) {
@@ -164,17 +141,15 @@
         }
         return questionPartOrdeMap;
     }
-
     private Map<Integer, QuestionPart> getParts(List<ExamPaperTitleItemObject> examPaperTitleItemObjects) {
         List<QuestionPart> parts = examPaperTitleItemObjects.get(0).getParts();
-        // (partOrder, questionPart)
+        
         Map<Integer, QuestionPart> partMap = new HashMap<>();
         for (QuestionPart questionPart : parts) {
             partMap.put(questionPart.getPartOrder(), questionPart);
         }
         return partMap;
     }
-
     private Map<Integer, String> getAnswerContentMap(List<ExamPaperSubmitItemVM> answerItems) {
         Map<Integer, String> answerContentMap = new HashMap<>();
         answerItems.stream().forEach(answerItem ->{
@@ -182,7 +157,6 @@
         });
         return answerContentMap;
     }
-
     private void setAnswerScoreMap(Map<Integer, Integer> partQuestionScoreMap, TQuestion tQuestion, int partOrder) {
         int questonScore = Objects.nonNull(tQuestion.getScore()) ? tQuestion.getScore().intValue() : 0;
         if (Objects.nonNull(partQuestionScoreMap.get(partOrder))) {
@@ -192,24 +166,13 @@
             partQuestionScoreMap.put(partOrder, questonScore);
         }
     }
-
-    /**
-     * 鐢ㄦ埛鎻愪氦绛旀鐨勮浆鍖栧瓨鍌ㄥ璞�
-     *
-     * @param question               question
-     * @param customerQuestionAnswer customerQuestionAnswer
-     * @param examPaper              examPaper
-     * @param itemOrder              itemOrder
-     * @param user                   user
-     * @param now                    now
-     * @return ExamPaperQuestionCustomerAnswer
-     */
+    
     private ExamPaperQuestionCustomerAnswer ExamPaperQuestionCustomerAnswerFromVM(TQuestion question, ExamPaperSubmitItemVM customerQuestionAnswer, TExamPaper examPaper, Integer itemOrder, ExamUser user, Date now) {
         ExamPaperQuestionCustomerAnswer examPaperQuestionCustomerAnswer = new ExamPaperQuestionCustomerAnswer();
         examPaperQuestionCustomerAnswer.setQuestionId(question.getId().intValue());
         examPaperQuestionCustomerAnswer.setExamPaperId(examPaper.getId().intValue());
-        // examPaperQuestionCustomerAnswer.setWhichPart(question.getScore().intValue());
-        // examPaperQuestionCustomerAnswer.setSubjectId(examPaper.getSubjectId().intValue());
+        
+        
         examPaperQuestionCustomerAnswer.setItemOrder(itemOrder);
         examPaperQuestionCustomerAnswer.setCreateTime(now);
         examPaperQuestionCustomerAnswer.setCreateUser(user.getId());
@@ -222,14 +185,7 @@
         }
         return examPaperQuestionCustomerAnswer;
     }
-
-    /**
-     * 鍒ゆ柇鎻愪氦绛旀鏄惁姝g‘锛屼繚鐣欑敤鎴锋彁浜ょ殑绛旀
-     *
-     * @param examPaperQuestionCustomerAnswer examPaperQuestionCustomerAnswer
-     * @param question                        question
-     * @param customerQuestionAnswer          customerQuestionAnswer
-     */
+    
     private void setSpecialFromVM(ExamPaperQuestionCustomerAnswer examPaperQuestionCustomerAnswer, TQuestion question, ExamPaperSubmitItemVM customerQuestionAnswer) {
         QuestionTypeEnum questionTypeEnum = QuestionTypeEnum.fromCode(examPaperQuestionCustomerAnswer.getQuestionType());
         switch (questionTypeEnum) {
@@ -256,60 +212,47 @@
                 break;
         }
     }
-
-
     @Override
     public PageInfo<ExamPaperAnswer> studentPage(ExamPaperAnswerPageVM requestVM) {
         return PageHelper.startPage(requestVM.getPageIndex(), requestVM.getPageSize(), "id desc").doSelectPageInfo(() ->
                 examPaperAnswerMapper.studentPage(requestVM));
     }
-
-
     @Override
     public String judge(ExamPaperSubmitVM examPaperSubmitVM) {
         return null;
     }
-
     @Override
     public ExamPaperSubmitVM examPaperAnswerToVM(Integer id) {
         return null;
     }
-
     @Override
     public Integer selectAllCount() {
         return null;
     }
-
     @Override
     public List<Integer> selectMothCount() {
         return null;
     }
-
     @Override
     public int deleteById(Integer id) {
         return 0;
     }
-
     @Override
     public int insert(ExamPaperAnswer record) {
         return examPaperAnswerMapper.insertSelective(record);
     }
-
     @Override
     public int insertByFilter(ExamPaperAnswer record) {
         return examPaperAnswerMapper.insertSelective(record);
     }
-
     @Override
     public ExamPaperAnswer selectById(Integer id) {
         return null;
     }
-
     @Override
     public int updateByIdFilter(ExamPaperAnswer record) {
         return 0;
     }
-
     @Override
     public int updateById(ExamPaperAnswer record) {
         return 0;
diff --git a/src/main/java/com/ots/project/exam/service/impl/ExamPaperQuestionCustomerAnswerServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/ExamPaperQuestionCustomerAnswerServiceImpl.java
index 80d5ea2..b871e0b 100644
--- a/src/main/java/com/ots/project/exam/service/impl/ExamPaperQuestionCustomerAnswerServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/ExamPaperQuestionCustomerAnswerServiceImpl.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.service.impl;
-
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.ots.common.enums.QuestionTypeEnum;
@@ -17,46 +16,35 @@
 import com.ots.project.tool.exam.JsonUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
-
 @Service
 public class ExamPaperQuestionCustomerAnswerServiceImpl extends BaseServiceImpl<ExamPaperQuestionCustomerAnswer> implements ExamPaperQuestionCustomerAnswerService {
-
     @Autowired
     private ExamPaperQuestionCustomerAnswerMapper examPaperQuestionCustomerAnswerMapper;
-
     @Autowired
     private ITTextContentService textContentService;
-
     @Autowired
     public ExamPaperQuestionCustomerAnswerServiceImpl(ExamPaperQuestionCustomerAnswerMapper examPaperQuestionCustomerAnswerMapper, ITTextContentService textContentService) {
         super(examPaperQuestionCustomerAnswerMapper);
         this.examPaperQuestionCustomerAnswerMapper = examPaperQuestionCustomerAnswerMapper;
         this.textContentService = textContentService;
     }
-
-
     @Override
     public PageInfo<ExamPaperQuestionCustomerAnswer> studentPage(QuestionPageStudentRequestVM requestVM) {
         return PageHelper.startPage(requestVM.getPageIndex(), requestVM.getPageSize(), "id desc").doSelectPageInfo(() ->
                 examPaperQuestionCustomerAnswerMapper.studentPage(requestVM)
         );
     }
-
     @Override
     public List<ExamPaperQuestionCustomerAnswer> selectListByPaperAnswerId(Integer id) {
         return examPaperQuestionCustomerAnswerMapper.selectListByPaperAnswerId(id);
     }
-
-
     @Override
     public void insertList(List<ExamPaperQuestionCustomerAnswer> examPaperQuestionCustomerAnswers) {
         examPaperQuestionCustomerAnswerMapper.insertList(examPaperQuestionCustomerAnswers);
     }
-
     @Override
     public ExamPaperSubmitItemVM examPaperQuestionCustomerAnswerToVM(ExamPaperQuestionCustomerAnswer qa) {
         ExamPaperSubmitItemVM examPaperSubmitItemVM = new ExamPaperSubmitItemVM();
@@ -69,12 +57,10 @@
         setSpecialToVM(examPaperSubmitItemVM, qa);
         return examPaperSubmitItemVM;
     }
-
     @Override
     public Integer selectAllCount() {
         return examPaperQuestionCustomerAnswerMapper.selectAllCount();
     }
-
     @Override
     public List<Integer> selectMothCount() {
         Date startTime = DateTimeUtil.getMonthStartDay();
@@ -86,12 +72,10 @@
             return null == keyValue ? 0 : keyValue.getValue();
         }).collect(Collectors.toList());
     }
-
     @Override
     public int updateScore(List<ExamPaperAnswerUpdate> examPaperAnswerUpdates) {
         return examPaperQuestionCustomerAnswerMapper.updateScore(examPaperAnswerUpdates);
     }
-
     private void setSpecialToVM(ExamPaperSubmitItemVM examPaperSubmitItemVM, ExamPaperQuestionCustomerAnswer examPaperQuestionCustomerAnswer) {
         QuestionTypeEnum questionTypeEnum = QuestionTypeEnum.fromCode(examPaperQuestionCustomerAnswer.getQuestionType());
         switch (questionTypeEnum) {
diff --git a/src/main/java/com/ots/project/exam/service/impl/ExamPaperServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/ExamPaperServiceImpl.java
index 52264c2..9030e1a 100644
--- a/src/main/java/com/ots/project/exam/service/impl/ExamPaperServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/ExamPaperServiceImpl.java
@@ -1,6 +1,4 @@
 package com.ots.project.exam.service.impl;
-
-
 import cn.hutool.core.collection.CollUtil;
 import com.alibaba.fastjson.JSON;
 import com.github.pagehelper.PageInfo;
@@ -38,7 +36,6 @@
 import org.modelmapper.ModelMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -47,93 +44,68 @@
 import java.util.Map;
 import java.util.Objects;
 import java.util.stream.Collectors;
-
-
 @Service
 public class ExamPaperServiceImpl implements IExamPaperService {
-
     protected final static ModelMapper modelMapper = ModelMapperSingle.Instance();
-
     @Autowired
     private ExamPaperMapper examPaperMapper;
-
     @Autowired
     private ITTextContentService textContentService;
-
     @Autowired
     private TQuestionMapper questionMapper;
-
     @Autowired
     private ITQuestionService questionService;
-
     @Autowired
     private ITExamReportService examReportService;
-
     @Autowired
     private IExamUtilService examUtilService;
-
     @Autowired
     private ITExamPaperService itExamPaperService;
-
-
     @Override
     public List<PaperInfo> indexPaper(PaperFilter paperFilter) {
         return examPaperMapper.indexPaper(paperFilter);
     }
-
-
     @Override
     public PageInfo<ExamPaper> page(ExamPaperPageRequestVM requestVM) {
         return null;
     }
-
     @Override
     public PageInfo<ExamPaper> taskExamPage(ExamPaperPageRequestVM requestVM) {
         return null;
     }
-
     @Override
     public PageInfo<ExamPaper> studentPage(ExamPaperPageVM requestVM) {
         return null;
     }
-
     @Override
     public ExamPaper savePaperFromVM(ExamPaperEditRequestVM examPaperEditRequestVM, ExamUser user) {
         return null;
     }
-
-    // 鍒嗗彂棰樼洰鍒板墠鍙扮殑鏂规硶
+    
     @Override
     public ExamPaperEditRequestVM examPaperToVM(Integer id, String tokenId, String langType) {
         TExamPaper tExamPaper = itExamPaperService.selectTExamPaperById(id.longValue());
-
         tExamPaper.setLangType(langType);
-
         ExamPaperEditRequestVM vm = modelMapper.map(tExamPaper, ExamPaperEditRequestVM.class);
-        // 瑙f瀽鍑洪鐩�
+        
         List<ExamPaperTitleItemVM> examPaperTitleItemVMS = resolveToQuestion(tExamPaper, vm);
-        // 璁剧疆澶ч鐨勪笅鏍噏uestionOrder,宸ヤ綔绫诲瀷闂嵎鍜屾祴璇曢棶鍗烽兘瑕�
+        
         setQuestionOrder(examPaperTitleItemVMS);
-        // 宸ヤ綔闂嵎棰樼洰闅忔満锛岃缃畆eport缁欏墠鍙颁篃鏄湪杩欓噷
+        
         setRandomQuestionOrderAndReport(tokenId, vm, examPaperTitleItemVMS);
-
-        // 浼犲垎娈电殑鏁版嵁缁欏墠鍙�
+        
         vm.setParts(examPaperTitleItemVMS.get(0).getParts());
-
-        // 澶氳瑷�鐨勭炕璇�
+        
         multilingualTranslation(langType, vm);
-
-        // 璁剧疆questionReport杩斿洖缁欏墠鍙�
+        
         return vm;
     }
-
     @Override
     public ExamPaperEditRequestVM examPaperToVM(RelatedParty relatedParty, String token_id, String langType) {
         ExamPaperEditRequestVM vm = examPaperToVM(relatedParty.getProdId().intValue(), token_id, langType);
         setExtraReturnValue(relatedParty, vm);
         return vm;
     }
-
     private void setExtraReturnValue(RelatedParty relatedParty, ExamPaperEditRequestVM vm) {
         vm.setQuestionTemplateId(relatedParty.getQuestionTemplateId());
         vm.setReportTemplateId(relatedParty.getReportTemplateId());
@@ -146,15 +118,13 @@
             vm.setMemberName(relatedParty.getMemberName());
         }
     }
-
     private void setRandomQuestionOrderAndReport(String tokenId, ExamPaperEditRequestVM vm, List<ExamPaperTitleItemVM> examPaperTitleItemVMS) {
         List<Integer> intList = new ArrayList<>();
-        // examPaperTitleItemVMS 涓轰竴涓ぇ棰橈紝涓�涓ぇ娈�
+        
         vm.setTitleItems(randomQuestion(examPaperTitleItemVMS, intList, tokenId,vm));
-        // 棰樼洰鐨勯『搴�
+        
         vm.setQuestionOrder(intList);
     }
-
     private void setQuestionOrder(List<ExamPaperTitleItemVM> examPaperTitleItemVMS) {
         int questionOrederNum = 0;
         int questionItemQONum = 0;
@@ -165,41 +135,35 @@
             }
         }
     }
-
-    // 瑙f瀽寰楀埌棰樼洰
+    
     private List<ExamPaperTitleItemVM> resolveToQuestion(TExamPaper examPaper, ExamPaperEditRequestVM vm) {
         vm.setLevel(examPaper.getGradeLevel().intValue());
         TTextContent frameTextContent = textContentService.selectTTextContentById(examPaper.getFrameTextContentId().longValue());
         List<ExamPaperTitleItemObject> examPaperTitleItemObjects = JsonUtil.toJsonListObject(frameTextContent.getContent(), ExamPaperTitleItemObject.class);
-
-        // titleQuestionIds 鐨勫ぇ棰樼洰
+        
         TExamPaper tExamPaper = new TExamPaper();
         BeanUtils.copyProperties(examPaper, tExamPaper);
         examUtilService.setTitleName(tExamPaper, examPaperTitleItemObjects);
-
         List<Integer> questionIds = examPaperTitleItemObjects.stream()
                 .flatMap(t -> t.getQuestionItems().stream()
                         .map(q -> q.getId()))
                 .collect(Collectors.toList());
         List<TQuestion> questions = questionMapper.selectByIds(questionIds);
-        // vm.setScore(ExamUtil.originalScoreToVM(examPaper.getScore()));
+        
         return examPaperTitleItemObjects.stream().map(t -> {
             ExamPaperTitleItemVM tTitleVM = modelMapper.map(t, ExamPaperTitleItemVM.class);
-            // 璁剧疆姘镐箙缂栧彿
+            
             tTitleVM.setPermanentId(t.getPermanentId());
-
-            // 灏忛
+            
             List<QuestionEditRequestVM> questionItemsVM = t.getQuestionItems().stream().map(i -> {
                 try {
                     TQuestion question = questions.stream().filter(q -> q.getId().equals(i.getId().longValue())).findFirst().get();
                     QuestionEditRequestVM questionEditRequestVM = questionService.getQuestionEditRequestVM(question);
                     questionEditRequestVM.setItemOrder(i.getItemOrder());
-
-                    // 姘镐箙缂栧彿
+                    
                     if (Objects.isNull(question.getPermanentId())) {
                         question.setPermanentId(i.getPermanentId());
                     }
-
                     questionEditRequestVM.setPermanentId(question.getPermanentId());
                     questionEditRequestVM.setPartOrder(i.getPartOrder());
                     questionEditRequestVM.setParentQuestionId(i.getParentQuestionId());
@@ -216,8 +180,7 @@
             return tTitleVM;
         }).collect(Collectors.toList());
     }
-
-    // 澶氳瑷�缈昏瘧
+    
     private void multilingualTranslation(String langType, ExamPaperEditRequestVM vm) {
         vm.setName(ExamUtil.getLangString(langType, vm.getName()));
         vm.setGuide(ExamUtil.getLangString(langType, vm.getGuide()));
@@ -232,42 +195,37 @@
                 }
             }
         }
-
-        // 缈昏瘧鍒嗘
+        
         if (CollUtil.isEmpty(vm.getParts())) {
             return;
         }
-
         vm.getParts().stream().forEach(questionPart -> {
             questionPart.getSignals().stream().forEach(signalObject -> {
                 signalObject.setSignalDescription(ExamUtil.getLangString(langType, signalObject.getSignalDescription()));
             });
         });
     }
-
     private List<ExamPaperTitleItemVM> randomQuestion(List<ExamPaperTitleItemVM> examPaperTitleItemVMS, List<Integer> intList, String tokenId, ExamPaperEditRequestVM vm) {
-        // 鍒ゆ柇鏄惁鏄┖
+        
         if (Objects.isNull(examPaperTitleItemVMS) || examPaperTitleItemVMS.isEmpty()) {
             return examPaperTitleItemVMS;
         }
-
-        // 浜烘牸绫诲瀷闂嵎锛屾櫤鍔�
+        
         if (Objects.equals(vm.getQuestionTemplateId(), "personality")) {
             return getExamOnePaperTitleItemVMS(examPaperTitleItemVMS, intList, tokenId);
         } else if (Objects.equals(vm.getQuestionTemplateId(), "intelligence")) {
             return getExamPaperIntelligenceQeustionVMS(examPaperTitleItemVMS, intList, tokenId, vm);
         } else {
-            // 宸ヤ綔绫诲瀷闂嵎
+            
             return getExamJobPaperTitleItemVMS(examPaperTitleItemVMS, intList, tokenId);
         }
     }
-
     private List<ExamPaperTitleItemVM> getExamOnePaperTitleItemVMS(List<ExamPaperTitleItemVM> examPaperTitleItemVMS, List<Integer> intList, String tokenId) {
-        // 浜烘牸闂嵎鍜屾櫤鍔涢棶鍗烽殢鏈�
+        
         TExamReport tExamReportQuery = new TExamReport();
         tExamReportQuery.setTokenId(tokenId);
         List<QuestionEditRequestVM> questionItems = examPaperTitleItemVMS.get(0).getQuestionItems();
-        // 鏂板闅忔満鎵撲贡搴忓垪
+        
         List<TExamReport> tExamReportList = examReportService.selectTExamReportList(tExamReportQuery);
         if (Objects.nonNull(tExamReportList) && tExamReportList.size() > 0) {
             TExamReport tExamReport = tExamReportList.get(0);
@@ -277,41 +235,35 @@
         }
         List<QuestionEditRequestVM> questionItemsNew = new ArrayList<>();
         for (int i = 0; i < intList.size(); i++) {
-            questionItemsNew.add(questionItems.get(intList.get(i)));// 鍙栧埌搴曟槸閭d竴棰�
+            questionItemsNew.add(questionItems.get(intList.get(i)));
         }
-
-        // 閲嶆柊鎺掑簭,璁剧疆questionReport缁欏墠绔�
+        
         for (int i = 0; i < questionItemsNew.size(); i++) {
-            questionItemsNew.get(i).setItemOrder(i+1);// itemOrder鏄悗鍙扮粰鐨勫簭鍙�
-            // 璁剧疆questionReport缁欏墠绔�
+            questionItemsNew.get(i).setItemOrder(i+1);
+            
             setQuestionReportForVM(tExamReportList, questionItemsNew.get(i));
         }
-
         examPaperTitleItemVMS.get(0).setQuestionItems(questionItemsNew);
         return examPaperTitleItemVMS;
     }
-
     private List<ExamPaperTitleItemVM> getExamPaperIntelligenceQeustionVMS(List<ExamPaperTitleItemVM> examPaperTitleItemVMS, List<Integer> intList, String tokenId, ExamPaperEditRequestVM vm) {
-        // 鑾峰彇鏅哄姏棰橀噷闈㈢殑棰樼洰
+        
         TExamReport tExamReportQuery = new TExamReport();
         tExamReportQuery.setTokenId(tokenId);
         List<TExamReport> tExamReportList = examReportService.selectTExamReportList(tExamReportQuery);
-        // map鏄瘡涓�娈�
-        // 鏂扮殑瑕佸彂缁欏墠鍙扮殑
+        
+        
         List<QuestionEditRequestVM> questionItemsResulte = new ArrayList<>();
         if (Objects.nonNull(tExamReportList) && tExamReportList.size() > 0) {
             questionItemsResulte = getIntelligenceQuestionOrder(examPaperTitleItemVMS, tExamReportList, vm);
         } else {
             initializeIntelligenceQuestion(examPaperTitleItemVMS, intList, questionItemsResulte, vm);
         }
-
-        // 閲嶆柊鎺掑簭,璁剧疆questionReport缁欏墠绔�
+        
         calculationNumber(tExamReportList, questionItemsResulte);
-
         examPaperTitleItemVMS.get(0).setQuestionItems(questionItemsResulte);
         return examPaperTitleItemVMS;
     }
-
     private List<QuestionEditRequestVM> getIntelligenceQuestionOrder(List<ExamPaperTitleItemVM> examPaperTitleItemVMS, List<TExamReport> tExamReportList, ExamPaperEditRequestVM vm) {
         TExamReport tExamReport = tExamReportList.get(0);
         List<Integer> intList = JSON.parseObject(tExamReport.getQuestionOrder(), ArrayList.class);
@@ -320,57 +272,51 @@
         List<QuestionEditRequestVM> questionItemsResulte = new ArrayList<>();
         for (int i = 0; i < intList.size(); i++) {
             int order = intList.get(i);
-            // 閫夐」鐨勬槧灏�
+            
             Map<String, QuestionEditItemVM> itemsMap = new HashMap<>();
             List<QuestionEditItemVM> items = questionItems.get(order).getItems();
             items.stream().forEach(item-> itemsMap.put(item.getPrefix(), item));
-
-            // 寰楀埌鏄偅涓�棰樼殑閫夐」
+            
             List<String> itemList = optionIntList.get(i);
-
-            // 鎺掑ソ搴忕殑閫夐」
+            
             List<QuestionEditItemVM> itemsResult = itemList.stream().map(num -> {
                 return itemsMap.get(num);
             }).collect(Collectors.toList());
             questionItems.get(order).setItems(itemsResult);
             questionItemsResulte.add(questionItems.get(order));
         }
-//        List<QuestionEditRequestVM> questionItemsResulte = intList.stream().map(order-> {
-//
-//            // 閫夐」鐨勬槧灏�
-//            Map<String, QuestionEditItemVM> itemsMap = new HashMap<>();
-//            List<QuestionEditItemVM> items = questionItems.get(order).getItems();
-//            items.stream().forEach(item-> itemsMap.put(item.getPrefix(), item));
-//
-//            // 寰楀埌鏄偅涓�棰樼殑閫夐」
-//            List<String> itemList = optionIntList.get(order);
-//
-//            // 鎺掑ソ搴忕殑閫夐」
-//            List<QuestionEditItemVM> itemsResult = itemList.stream().map(num -> {
-//                return itemsMap.get(num);
-//            }).collect(Collectors.toList());
-//            questionItems.get(order).setItems(itemsResult);
-//
-//            return questionItems.get(order);
-//        }).collect(Collectors.toList());
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
         vm.setOptionOrder(optionIntList);
         return questionItemsResulte;
     }
-
     private void calculationNumber(List<TExamReport> tExamReportList, List<QuestionEditRequestVM> questionItemsResulte) {
         Integer intelligenceTitleNum = 0;
         Integer intelligenceNum = 0;
-
-        // 璁$畻搴忓彿
+        
         Integer itemSize = 0;
         for (QuestionEditRequestVM questionEditRequestVM : questionItemsResulte) {
             if (StringUtils.isEmpty(questionEditRequestVM.getParentQuestionId())) {
                 itemSize++;
             }
         }
-
-        // 鏍规嵁姣忎竴娈佃绠楀簭鍙�,缁勬垚闆嗗悎partSizeMap锛屽垎寮�璁板綍搴忓彿
+        
         Map<Integer, Integer> partSizeMap = new HashMap<>();
         for (QuestionEditRequestVM questionEditRequestVM : questionItemsResulte) {
             if (StringUtils.isNotEmpty(questionEditRequestVM.getParentQuestionId())) {
@@ -383,56 +329,47 @@
                 partSizeMap.put(partOrder, 1);
             }
         }
-
-
         Integer partOrder = 0;
         for (Integer i = 0; i < questionItemsResulte.size(); i++) {
             QuestionEditRequestVM questionEditRequestVM = questionItemsResulte.get(i);
-
-            // 棰樼洰鐨勫簭鍙疯鍒嗗紑璁帮紝partOrder涓嶄竴鏍峰氨閲嶆柊璁$畻
+            
             if (!Objects.equals(partOrder, questionEditRequestVM.getPartOrder())) {
                 partOrder = questionEditRequestVM.getPartOrder();
                 intelligenceTitleNum = 0;
             }
-            questionEditRequestVM.setItemOrder(i + 1);// itemOrder鏄悗鍙扮粰鐨勫簭鍙�
-            // 璁剧疆questionReport缁欏墠绔�
+            questionEditRequestVM.setItemOrder(i + 1);
+            
             setQuestionReportForVM(tExamReportList, questionEditRequestVM);
-            // 缁欏墠绔簭鍙�
-            if (Objects.equals(questionEditRequestVM.getTemplate(), "intelligence_title")) { // 闂瓟棰�
+            
+            if (Objects.equals(questionEditRequestVM.getTemplate(), "intelligence_title")) { 
                 questionEditRequestVM.setQuestionNumber(String.valueOf(++intelligenceTitleNum) + "/" + partSizeMap.get(questionEditRequestVM.getPartOrder()).toString());
                 intelligenceNum = 0;
-            } else if (StringUtils.isEmpty(questionEditRequestVM.getParentQuestionId())) { //鏅�氶
+            } else if (StringUtils.isEmpty(questionEditRequestVM.getParentQuestionId())) { 
                 questionEditRequestVM.setQuestionNumber(String.valueOf(++intelligenceTitleNum) + "/" + partSizeMap.get(questionEditRequestVM.getPartOrder()).toString());
-            } else { // 闂瓟棰樼殑灏忛
+            } else { 
                 questionEditRequestVM.setQuestionNumber("(" + ++intelligenceNum + ")");
             }
         }
     }
-
     private void initializeIntelligenceQuestion(List<ExamPaperTitleItemVM> examPaperTitleItemVMS, List<Integer> intList, List<QuestionEditRequestVM> questionItemsResulte, ExamPaperEditRequestVM vm) {
-        // 鍘熸潵鐨勯鐩�
+        
         List<QuestionEditRequestVM> questionItems = examPaperTitleItemVMS.get(0).getQuestionItems();
-        // 閬嶅巻姣忎竴娈电殑棰樼洰
-        // 娈碉細棰樼洰棰樼洰鍒楄〃,part:棰樼洰鍒楄〃
+        
+        
         Map<Integer, List<QuestionEditRequestVM>> questionEditRequestVMSMap = getPartOrderQuestionMap(examPaperTitleItemVMS, questionItems);
-
-        // parentQuestionId : 棰樼洰
+        
         Map<String, List<QuestionEditRequestVM>> parentQuestionIdMap = getParentQuestionIdMap(questionItems);
-
-        // 鎻愬墠鎵撲贡
+        
         for (Map.Entry<String, List<QuestionEditRequestVM>> entry : parentQuestionIdMap.entrySet()) {
             entry.setValue(getQuestionEditRequestRandVMS(entry.getValue()));
         }
-
         for (Map.Entry<Integer, List<QuestionEditRequestVM>> entry : questionEditRequestVMSMap.entrySet()) {
-            // intelligence_title
+            
             getIntelligenceTitleResult(entry.getValue(), parentQuestionIdMap, questionItemsResulte);
-
-            // intelligence
+            
             getintelligenceResult(entry.getValue(), questionItemsResulte);
         }
-
-        // 璁剧疆搴忓彿
+        
         vm.setOptionOrder(new ArrayList<>());
         for (QuestionEditRequestVM questionEditRequestVM : questionItemsResulte) {
             intList.add(questionEditRequestVM.getQuestionOrder());
@@ -444,18 +381,16 @@
             vm.getOptionOrder().add(prfixList);
         }
     }
-
     private void getintelligenceResult(List<QuestionEditRequestVM> questionItems, List<QuestionEditRequestVM> questionItemsResult) {
         List<QuestionEditRequestVM> intelligenceList = questionItems.stream().filter((QuestionEditRequestVM questionEditRequestVM) -> Objects.equals(questionEditRequestVM.getTemplate(), "intelligence") && StringUtils.isEmpty(questionEditRequestVM.getParentQuestionId())).collect(Collectors.toList());
         intelligenceList = getQuestionEditRequestRandVMS(intelligenceList);
         questionItemsResult.addAll(intelligenceList);
     }
-
     private void getIntelligenceTitleResult(List<QuestionEditRequestVM> questionItems, Map<String, List<QuestionEditRequestVM>> parentQuestionIdMap, List<QuestionEditRequestVM> questionItemsResult) {
-        // intelligence_title
+        
         List<QuestionEditRequestVM> intelligenceTitleList = questionItems.stream().filter((QuestionEditRequestVM questionEditRequestVM) -> Objects.equals(questionEditRequestVM.getTemplate(), "intelligence_title")).collect(Collectors.toList());
         intelligenceTitleList = getQuestionEditRequestRandVMS(intelligenceTitleList);
-        // 澶ч涓嬮潰鐨勫皬棰樼洰
+        
         List<QuestionEditRequestVM> intelligenceTitleResultList = new ArrayList<>();
         for (QuestionEditRequestVM questionEditRequestVM : intelligenceTitleList) {
             intelligenceTitleResultList.add(questionEditRequestVM);
@@ -463,25 +398,22 @@
         }
         questionItemsResult.addAll(intelligenceTitleResultList);
     }
-
     private Map<String, List<QuestionEditRequestVM>> getParentQuestionIdMap(List<QuestionEditRequestVM> questionItems) {
         Map<String, List<QuestionEditRequestVM>> parentQuestionIdMap = questionItems.stream().collect(Collectors.groupingBy(QuestionEditRequestVM::getParentQuestionId));
         parentQuestionIdMap.remove("");
         return parentQuestionIdMap;
     }
-
     private Map<Integer, List<QuestionEditRequestVM>> getPartOrderQuestionMap(List<ExamPaperTitleItemVM> examPaperTitleItemVMS, List<QuestionEditRequestVM> questionItems) {
         List<QuestionPart> parts = examPaperTitleItemVMS.get(0).getParts();
-        // Map(partOrder,QuestionEditRequestVMList)
+        
         Map<Integer, List<QuestionEditRequestVM>> questionEditRequestVMSMap = new LinkedHashMap<>();
         for (QuestionPart questionPart : parts) {
-            // 濉厖questionEditRequestVMSMap
+            
             getPartintelligenceAndTitleMap(questionItems, questionEditRequestVMSMap, questionPart);
         }
         return questionEditRequestVMSMap;
     }
-
-    // 鎵撲贡棰樼洰
+    
     private List<QuestionEditRequestVM> getQuestionEditRequestRandVMS(List<QuestionEditRequestVM> questionEditRequestVM) {
         List<Integer> randList = new ArrayList<>();
         for (int i = 0; i < questionEditRequestVM.size(); i++) {
@@ -490,16 +422,15 @@
         Collections.shuffle(randList);
         List<QuestionEditRequestVM> intelligenceTitleListResult = new ArrayList<>();
         for (int i : randList) {
-            // 閲嶆柊鎺掑簭鐨勬椂鍊欐墦涔遍鐩殑姣忎竴涓�夐」
+            
             QuestionEditRequestVM questionEditRequestVMResult = questionEditRequestVM.get(i);
-            // 鎵撲贡棰樼洰閫夐」鐨勯『搴�
+            
             setRandQuestionItems( questionEditRequestVMResult);
             intelligenceTitleListResult.add(questionEditRequestVMResult);
         }
         questionEditRequestVM = intelligenceTitleListResult;
         return questionEditRequestVM;
     }
-
     private void setRandQuestionItems( QuestionEditRequestVM questionEditRequestVMDTO) {
         List<QuestionEditItemVM> items = questionEditRequestVMDTO.getItems();
         List<Integer> randItemList = new ArrayList<>();
@@ -508,33 +439,26 @@
             for (int j = 0; j < items.size(); j++) {
                 randItemList.add(j);
             }
-
             Collections.shuffle(randItemList);
-
             for (int k : randItemList) {
                 itemsResult.add(items.get(k));
             }
-
             questionEditRequestVMDTO.setItems(itemsResult);
         }
     }
-
     private void getPartintelligenceAndTitleMap(List<QuestionEditRequestVM> intelligenceAndTitleList, Map<Integer, List<QuestionEditRequestVM>> questionEditRequestVMSMap, QuestionPart questionPart) {
         Integer partOrder = questionPart.getPartOrder();
         List<QuestionEditRequestVM> questionEditRequestListVMS = new ArrayList<>();
         for (QuestionEditRequestVM questionEditRequestVM : intelligenceAndTitleList) {
             if (Objects.equals(questionEditRequestVM.getPartOrder(), partOrder)) {
                 questionEditRequestListVMS.add(questionEditRequestVM);
-
             }
         }
         questionEditRequestVMSMap.put(partOrder, questionEditRequestListVMS);
     }
-
-
-    // 璁剧疆棰樼洰涓嬫爣鐨勯殢鏈�
+    
     private void setSubscript(List<Integer> intList, List<QuestionEditRequestVM> questionItems) {
-        // 濡傛灉棰樼洰鏈夊垎娈�
+        
         if (Objects.nonNull(questionItems.get(0).getPartOrder()) && questionItems.get(0).getPartOrder() != 0) {
             int partOrder = questionItems.get(0).getPartOrder();
             List<Integer> partOrderList = new ArrayList<>();
@@ -551,25 +475,21 @@
                     partOrderList.add(i);
                 }
             }
-
-            // 鏈�鍚庝竴娆℃墦涔�
+            
             Collections.shuffle(partOrderList);
             for (int partOrderTemp : partOrderList) {
                 intList.add(partOrderTemp);
             }
-
         } else {
             for (int i = 0; i < questionItems.size(); i++) {
                 intList.add(i);
             }
-
-            // 闅忔満鎵撲贡鏁扮粍鐨勯『搴�
+            
             Collections.shuffle(intList);
         }
     }
-
     private List<ExamPaperTitleItemVM> getExamJobPaperTitleItemVMS(List<ExamPaperTitleItemVM> examPaperTitleItemVMS, List<Integer> intList, String tokenId) {
-        // 鍒ゆ柇棰樼洰椤哄簭鏄惁宸茬粡闅忔満杩囦簡
+        
         TExamReport tExamReportQuery = new TExamReport();
         tExamReportQuery.setTokenId(tokenId);
         List<TExamReport> tExamReportList = examReportService.selectTExamReportList(tExamReportQuery);
@@ -577,25 +497,19 @@
             TExamReport tExamReport = tExamReportList.get(0);
             intList = JSON.parseObject(tExamReport.getQuestionOrder(), ArrayList.class);
         } else {
-            // 鏂板闅忔満鎵撲贡搴忓垪
+            
             for (int i = 0; i < examPaperTitleItemVMS.size(); i++) {
                 intList.add(i);
             }
-
-            // 闅忔満鎵撲贡鏁扮粍鐨勯『搴�
+            
             Collections.shuffle(intList);
         }
-
-
         List<ExamPaperTitleItemVM> examPaperTitleItemVMSRandoms = new ArrayList<ExamPaperTitleItemVM>();
-
         int itemOrder = 0;
         for (int i = 0; i < intList.size(); i++) {
             examPaperTitleItemVMSRandoms.add(examPaperTitleItemVMS.get(intList.get(i)));
         }
-
-
-        // 閲嶆柊鎺掑簭閫夐」鐨勯『搴忥紝璁剧疆questionReport缁欏墠绔�
+        
         for (ExamPaperTitleItemVM examPaperTitleItemVM : examPaperTitleItemVMSRandoms) {
             List<QuestionEditRequestVM> questionItems = examPaperTitleItemVM.getQuestionItems();
             int suffixIndex = 97;
@@ -603,13 +517,12 @@
                 questionEditRequestVM.setItemOrder(++itemOrder);
                 questionEditRequestVM.setPermanentId(examPaperTitleItemVM.getPermanentId() + (char)suffixIndex++);
             }
-            // 璁剧疆questionReport缁欏墠绔�
+            
             setQuestionReportForVM(tExamReportList, examPaperTitleItemVM);
         }
         return examPaperTitleItemVMSRandoms;
     }
-
-    // 璁剧疆questionReport缁欏墠绔�,job, 浜烘牸閮藉彲浠ョ敤
+    
     private void setQuestionReportForVM(List<TExamReport> tExamReportList, ExamPaperTitleItemVM examPaperTitleItemVM) {
         for (TExamReport tExamReport : tExamReportList) {
             List<QuestionReport> questionReportList = JsonUtil.toJsonListObject(tExamReport.getQuestionReport(), QuestionReport.class);
@@ -623,8 +536,7 @@
             }
         }
     }
-
-    // 璁剧疆questionReport缁欏墠绔�,job, 浜烘牸閮藉彲浠ョ敤
+    
     private void setQuestionReportForVM(List<TExamReport> tExamReportList, QuestionEditRequestVM editRequestVM) {
         for (TExamReport tExamReport : tExamReportList) {
             List<QuestionReport> questionReportList = JsonUtil.toJsonListObject(tExamReport.getQuestionReport(), QuestionReport.class);
@@ -638,43 +550,34 @@
             }
         }
     }
-
     @Override
     public Integer selectAllCount() {
         return examPaperMapper.selectAllCount();
     }
-
     @Override
     public List<Integer> selectMothCount() {
         return null;
     }
-
-
     @Override
     public int deleteById(Integer id) {
         return 0;
     }
-
     @Override
     public int insert(ExamPaper record) {
         return 0;
     }
-
     @Override
     public int insertByFilter(ExamPaper record) {
         return 0;
     }
-
     @Override
     public ExamPaper selectById(Integer id) {
         return null;
     }
-
     @Override
     public int updateByIdFilter(ExamPaper record) {
         return 0;
     }
-
     @Override
     public int updateById(ExamPaper record) {
         return 0;
diff --git a/src/main/java/com/ots/project/exam/service/impl/MemberServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/MemberServiceImpl.java
index a61960d..33cd92c 100644
--- a/src/main/java/com/ots/project/exam/service/impl/MemberServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/MemberServiceImpl.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.service.impl;
-
 import com.ots.common.utils.StringUtils;
 import com.ots.framework.web.service.DictService;
 import com.ots.project.exam.domain.EntDemographyInfo;
@@ -28,63 +27,48 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-
 import java.util.Arrays;
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
-
 import static com.ots.common.enums.ResponseCode.TEST_MEMBERINFO_EMPTY;
 import static com.ots.common.enums.ResponseCode.TEST_URL_FAIL;
-
 @Service
 @Slf4j
 public class MemberServiceImpl implements MemberService {
-
-    //0鏈鐞� 1宸插畬鎴� 2绛旈涓� 3浣滃簾
+    
     private static final String UNTREATED_0 = "0";
     private static final String DONE_1 = "1";
     private static final String ANSWERING_2 = "2";
     private static final String TIMEOUT_6 = "6";
-
     private List<String> status = Arrays.asList(UNTREATED_0, DONE_1, ANSWERING_2, TIMEOUT_6);
-
     @Autowired
     private IEntTestMemberService entTestMemberService;
-
     @Autowired
     private IEntDemographyParamService entDemographyParamService;
-
     @Autowired
     private IEntTestPackageService entTestPackageService;
-
     @Autowired
     private IEntDemographyInfoService entDemographyInfoService;
-
     @Autowired
     private DictService dictService;
-
     @Autowired
     private ISysUserExtendService sysUserExtendService;
-
     @Autowired
     private ITExamPaperService itExamPaperService;
-
     @Override
     public List<ParamDefine> getParamDefines(String token, String lang) {
         EntTestMember entTestMember = entTestMemberService.findEntTestMember(token, status);
         TEST_URL_FAIL.assertNotNull(entTestMember);
         Long testId = entTestMember.getTestId();
         Long memberId = entTestMember.getMemberId();
-
-          //鎵惧埌鎵�灞炰紒涓欼D
+          
         EntTestPackage entTestPackage = entTestPackageService.selectEntTestPackageById(testId);
         String paramCodes = entTestPackage.getParamCodes();
         if (Objects.isNull(paramCodes)) {
             return null;
         }
-
-        //閫氳繃浼佷笟缂栫爜瀵绘壘浜哄彛瀛﹀畾涔�
+        
         List<EntDemographyParam> entDemographyParams = entDemographyParamService.selectEntDemographyParamListByParamIn(paramCodes);
         if (Objects.isNull(entDemographyParams) || entDemographyParams.isEmpty()) {
             return null;
@@ -111,10 +95,9 @@
             paramDefine.setMemberId(memberId);
             return paramDefine;
         }).collect(Collectors.toList());
-        //杩囨护绌哄璞�
+        
         return result.stream().filter(a -> Objects.nonNull(a)).collect(Collectors.toList());
     }
-
     @Override
     public List<EntDemographyInfo> queryDemographyParamInfo(String token) {
         EntTestMember entTestMember = entTestMemberService.findEntTestMember(token, status);
@@ -125,7 +108,6 @@
         TEST_MEMBERINFO_EMPTY.assertNotEmpty(entDemographyInfos);
         return entDemographyInfos;
     }
-
     @Override
     @Transactional
     public void saveDemographyParamInfo(String token, List<ParamsInfo> infos, String langType) {
@@ -141,7 +123,6 @@
             }
         });
     }
-
     @Override
     public RelatedParty queryProdidByToken(String token) {
         RelatedParty party = new RelatedParty();
@@ -178,7 +159,6 @@
         }
         return party;
     }
-
     @Override
     public List<DictItemDto> queryLang(String token) {
         EntTestMember entTestMember = entTestMemberService.findEntTestMember(token, status);
diff --git a/src/main/java/com/ots/project/exam/service/impl/ReportCalculationServicesImpl.java b/src/main/java/com/ots/project/exam/service/impl/ReportCalculationServicesImpl.java
index b16b200..84395b3 100644
--- a/src/main/java/com/ots/project/exam/service/impl/ReportCalculationServicesImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/ReportCalculationServicesImpl.java
@@ -1,12 +1,10 @@
 package com.ots.project.exam.service.impl;
-
 import com.alibaba.fastjson.JSON;
 import com.ots.project.exam.service.ReportCalculationServices;
 import com.ots.project.tool.report.reportCalculation.response.ReportAPIResult;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
-
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
 import java.io.BufferedReader;
@@ -15,36 +13,28 @@
 import java.io.PrintWriter;
 import java.net.Socket;
 import java.util.Objects;
-
 @Service
 @Slf4j
 public class ReportCalculationServicesImpl implements ReportCalculationServices {
-
     private Socket socket;
-
     private PrintWriter socketOut;
-
     private BufferedReader socketIn;
-
     @Value("${ATSTai.port}")
     private int port;
-
     @Value("${ATSTai.host}")
     private String host;
-
     @PostConstruct
     private void init() {
         try {
-            //棣栧厛鐩存帴鍒涘缓socket,绔彛鍙�1~1023涓虹郴缁熶繚瀛橈紝涓�鑸鍦�1023涔嬪
+            
             socket = new Socket(host, port);
-            //鍒涘缓涓変釜娴侊紝绯荤粺杈撳叆娴丅ufferedReader systemIn锛宻ocket杈撳叆娴丅ufferedReader socketIn锛宻ocket杈撳嚭娴丳rintWriter socketOut;
+            
             socketIn = new BufferedReader(new InputStreamReader(socket.getInputStream()));
             socketOut = new PrintWriter(socket.getOutputStream());
         } catch (Exception ex) {
             log.error("璋冪敤娉板浗鍥㈤槦缁勪欢杩炴帴澶辫触锛歿}",ex.getMessage(),ex);
         }
     }
-
     @PreDestroy
     private void destory() {
         if (Objects.nonNull(socketIn)) {
@@ -65,22 +55,15 @@
             }
         }
     }
-
-    /**
-     * 鍒ゆ柇鏄惁鏂紑杩炴帴锛屾柇寮�杩斿洖true,娌℃湁杩斿洖false
-     * @param socket
-     * @return
-     */
+    
     public Boolean isServerClose(Socket socket){
         try{
-            socket.sendUrgentData(0xFF);//鍙戦��1涓瓧鑺傜殑绱ф�ユ暟鎹紝榛樿鎯呭喌涓嬶紝鏈嶅姟鍣ㄧ娌℃湁寮�鍚揣鎬ユ暟鎹鐞嗭紝涓嶅奖鍝嶆甯搁�氫俊
+            socket.sendUrgentData(0xFF);
             return false;
         }catch(Exception se){
             return true;
         }
     }
-
-
     @Override
     public ReportAPIResult stageCalculation(Object request) {
         if (isServerClose(socket)) {
@@ -104,11 +87,10 @@
         }
         return reportAPIResult;
     }
-
     private ReportAPIResult getReportAPIResult(Object request) throws IOException {
         ReportAPIResult reportAPIResult;
         socketOut.println(JSON.toJSONString(request));
-        socketOut.flush();//璧跺揩鍒锋柊浣縎erver鏀跺埌锛屼篃鍙互鎹㈡垚socketOut.println(readline, ture)
+        socketOut.flush();
         String inTemp = socketIn.readLine();
         reportAPIResult = JSON.parseObject(inTemp, ReportAPIResult.class);
         return reportAPIResult;
diff --git a/src/main/java/com/ots/project/exam/service/impl/SubjectServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/SubjectServiceImpl.java
index 69c444c..64cb3c3 100644
--- a/src/main/java/com/ots/project/exam/service/impl/SubjectServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/SubjectServiceImpl.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.service.impl;
-
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.ots.project.exam.domain.Subject;
@@ -10,54 +9,43 @@
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
-
 import java.util.List;
-
 @Service("examSubject")
 public class SubjectServiceImpl extends BaseServiceImpl<Subject> implements SubjectService {
-
     private final static String CACHE_NAME = "Subject";
     @Autowired
     private SubjectMapper subjectMapper;
-
     @Autowired
     public SubjectServiceImpl(SubjectMapper subjectMapper) {
         super(subjectMapper);
         this.subjectMapper = subjectMapper;
     }
-
     @Override
     @Cacheable(value = CACHE_NAME, key = "#id", unless = "#result == null")
     public Subject selectById(Integer id) {
         return super.selectById(id);
     }
-
     @Override
     @CacheEvict(value = CACHE_NAME, key = "#record.id")
     public int updateByIdFilter(Subject record) {
         return super.updateByIdFilter(record);
     }
-
     @Override
     public List<Subject> getSubjectByLevel(Integer level) {
         return subjectMapper.getSubjectByLevel(level);
     }
-
     @Override
     public List<Subject> allSubject() {
         return subjectMapper.allSubject();
     }
-
     @Override
     public Integer levelBySubjectId(Integer id) {
         return this.selectById(id).getLevel();
     }
-
     @Override
     public PageInfo<Subject> page(SubjectPageRequestVM requestVM) {
         return PageHelper.startPage(requestVM.getPageIndex(), requestVM.getPageSize(), "id desc").doSelectPageInfo(() ->
                 subjectMapper.page(requestVM)
         );
     }
-
 }
diff --git a/src/main/java/com/ots/project/exam/service/impl/SysUserExtendServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/SysUserExtendServiceImpl.java
index 90bf821..686c8d1 100644
--- a/src/main/java/com/ots/project/exam/service/impl/SysUserExtendServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/SysUserExtendServiceImpl.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.service.impl;
-
 import com.ots.common.enums.OpertypeEnum;
 import com.ots.common.utils.StringUtils;
 import com.ots.common.utils.file.FileUploadUtils;
@@ -18,24 +17,15 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
-
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Objects;
-
 import static com.ots.common.enums.UserTypeEnum.DIS_USER;
 import static com.ots.common.enums.UserTypeEnum.SYS_USER;
 
-/**
- * 鐢ㄦ埛淇℃伅鎵╁睍Service涓氬姟灞傚鐞�
- *
- * @author ots
- * @date 2019-11-20
- */
 @Service
 public class SysUserExtendServiceImpl implements ISysUserExtendService {
-
     @Autowired
     private SysUserExtendMapper sysUserExtendMapper;
     @Autowired
@@ -46,38 +36,19 @@
     private EntOperLogServiceImpl entOperLogService;
     @Autowired
     private PasswordService passwordService;
-
-    /**
-     * 鏌ヨ鐢ㄦ埛淇℃伅鎵╁睍
-     *
-     * @param userId 鐢ㄦ埛淇℃伅鎵╁睍ID
-     * @return 鐢ㄦ埛淇℃伅鎵╁睍
-     */
+    
     @Override
     public SysUserExtend selectSysUserExtendById(Long userId) {
         return sysUserExtendMapper.selectSysUserExtendById(userId);
     }
-
-    /**
-     * 鏌ヨ鐢ㄦ埛淇℃伅鎵╁睍鍒楄〃
-     *
-     * @param sysUserExtend 鐢ㄦ埛淇℃伅鎵╁睍
-     * @return 鐢ㄦ埛淇℃伅鎵╁睍
-     */
+    
     @Override
     public List<SysUserExtend> selectSysUserExtendList(SysUserExtend sysUserExtend) {
         return sysUserExtendMapper.selectSysUserExtendList(sysUserExtend);
     }
-
-    /**
-     * 鏂板鐢ㄦ埛淇℃伅鎵╁睍
-     *
-     * @param sysUserExtend 鐢ㄦ埛淇℃伅鎵╁睍
-     * @return 缁撴灉
-     */
+    
     @Override
     public int insertSysUserExtend(SysUserExtend sysUserExtend) {
-
         MultipartFile businessLicenseFile = sysUserExtend.getBusinessLicenseFile();
         if (businessLicenseFile != null && !businessLicenseFile.isEmpty()) {
             try {
@@ -96,7 +67,6 @@
                 e.printStackTrace();
             }
         }
-
         if (StringUtils.isNotBlank(sysUserExtend.getLoginName())) {
             User user = new User();
             user.setLoginName(sysUserExtend.getLoginName());
@@ -130,13 +100,7 @@
         }
         return sysUserExtendMapper.insertSysUserExtend(sysUserExtend);
     }
-
-    /**
-     * 淇敼鐢ㄦ埛淇℃伅鎵╁睍
-     *
-     * @param sysUserExtend 鐢ㄦ埛淇℃伅鎵╁睍
-     * @return 缁撴灉
-     */
+    
     @Override
     public int updateSysUserExtend(SysUserExtend sysUserExtend) {
         MultipartFile businessLicenseFile = sysUserExtend.getBusinessLicenseFile();
@@ -176,7 +140,6 @@
             user.setPhonenumber(sysUserExtend.getPhonenumber());
             this.userMapper.updateUser(user);
         }
-
         Long userId = sysUserExtend.getUserId();
         User user = userMapper.selectUserById(userId);
         if (user.getUserType().equals(DIS_USER.getUserType()) && !Objects.equals("1",sysUserExtend.getFirstLevel())) {
@@ -184,9 +147,8 @@
             e.setRoleId(4L);
             e.setUserId(user.getUserId());
             List<UserRole> rs = Arrays.asList(e);
-            this.userRoleMapper.deleteUserRoleInfo(e);//鍏堝垹闄わ紝鍐嶆柊澧�
+            this.userRoleMapper.deleteUserRoleInfo(e);
             this.userRoleMapper.batchUserRole(rs);
-
             UserRole de = new UserRole();
             de.setRoleId(6L);
             de.setUserId(user.getUserId());
@@ -196,39 +158,24 @@
             e.setRoleId(6L);
             e.setUserId(sysUserExtend.getUserId());
             List<UserRole> rs = Arrays.asList(e);
-            this.userRoleMapper.deleteUserRoleInfo(e);//鍏堝垹闄わ紝鍐嶆柊澧�
+            this.userRoleMapper.deleteUserRoleInfo(e);
             this.userRoleMapper.batchUserRole(rs);
-
             UserRole de = new UserRole();
             de.setRoleId(4L);
             de.setUserId(user.getUserId());
             userRoleMapper.deleteUserRoleInfo(de);
         }
-
         return sysUserExtendMapper.updateSysUserExtend(sysUserExtend);
     }
-
-    /**
-     * 鍒犻櫎鐢ㄦ埛淇℃伅鎵╁睍瀵硅薄
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     @Override
     public int deleteSysUserExtendByIds(String ids) {
         return sysUserExtendMapper.deleteSysUserExtendByIds(Convert.toStrArray(ids));
     }
-
-    /**
-     * 鍒犻櫎鐢ㄦ埛淇℃伅鎵╁睍淇℃伅
-     *
-     * @param userId 鐢ㄦ埛淇℃伅鎵╁睍ID
-     * @return 缁撴灉
-     */
+    
     public int deleteSysUserExtendById(Long userId) {
         return sysUserExtendMapper.deleteSysUserExtendById(userId);
     }
-
     @Override
     @Transactional
     public int updateTestNum(Long userId, Long addNum) {
@@ -239,7 +186,6 @@
         entOperLogService.saveLog(userId, String.valueOf(ShiroUtils.getSysUser().getUserId()), OpertypeEnum.SYS_USER, addNum);
         return result;
     }
-
 	@Override
 	public int resetpwd(User user) {
 		user.randomSalt();
diff --git a/src/main/java/com/ots/project/exam/service/impl/SysUserPaperServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/SysUserPaperServiceImpl.java
index c5e444f..521f4cd 100644
--- a/src/main/java/com/ots/project/exam/service/impl/SysUserPaperServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/SysUserPaperServiceImpl.java
@@ -1,86 +1,42 @@
 package com.ots.project.exam.service.impl;
-
 import com.ots.common.utils.text.Convert;
 import com.ots.project.exam.domain.SysUserPaper;
 import com.ots.project.exam.mapper.SysUserPaperMapper;
 import com.ots.project.exam.service.ISysUserPaperService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
 import java.util.List;
 
-/**
- * 鐢ㄦ埛浜у搧Service涓氬姟灞傚鐞�
- *
- * @author ots
- * @date 2020-03-22
- */
 @Service
 public class SysUserPaperServiceImpl implements ISysUserPaperService {
     @Autowired
     private SysUserPaperMapper sysUserPaperMapper;
-
-    /**
-     * 鏌ヨ鐢ㄦ埛浜у搧
-     *
-     * @param userId 鐢ㄦ埛浜у搧ID
-     * @return 鐢ㄦ埛浜у搧
-     */
+    
     @Override
     public SysUserPaper selectSysUserPaperById(Long userId) {
         return sysUserPaperMapper.selectSysUserPaperById(userId);
     }
-
-    /**
-     * 鏌ヨ鐢ㄦ埛浜у搧鍒楄〃
-     *
-     * @param sysUserPaper 鐢ㄦ埛浜у搧
-     * @return 鐢ㄦ埛浜у搧
-     */
+    
     @Override
     public List<SysUserPaper> selectSysUserPaperList(SysUserPaper sysUserPaper) {
         return sysUserPaperMapper.selectSysUserPaperList(sysUserPaper);
     }
-
-    /**
-     * 鏂板鐢ㄦ埛浜у搧
-     *
-     * @param sysUserPaper 鐢ㄦ埛浜у搧
-     * @return 缁撴灉
-     */
+    
     @Override
     public int insertSysUserPaper(SysUserPaper sysUserPaper) {
         return sysUserPaperMapper.insertSysUserPaper(sysUserPaper);
     }
-
-    /**
-     * 淇敼鐢ㄦ埛浜у搧
-     *
-     * @param sysUserPaper 鐢ㄦ埛浜у搧
-     * @return 缁撴灉
-     */
+    
     @Override
     public int updateSysUserPaper(SysUserPaper sysUserPaper) {
         return sysUserPaperMapper.updateSysUserPaper(sysUserPaper);
     }
-
-    /**
-     * 鍒犻櫎鐢ㄦ埛浜у搧瀵硅薄
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     @Override
     public int deleteSysUserPaperByIds(String ids) {
         return sysUserPaperMapper.deleteSysUserPaperByIds(Convert.toStrArray(ids));
     }
-
-    /**
-     * 鍒犻櫎鐢ㄦ埛浜у搧淇℃伅
-     *
-     * @param userId 鐢ㄦ埛浜у搧ID
-     * @return 缁撴灉
-     */
+    
     public int deleteSysUserPaperById(Long userId) {
         return sysUserPaperMapper.deleteSysUserPaperById(userId);
     }
diff --git a/src/main/java/com/ots/project/exam/service/impl/TExamLevelServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/TExamLevelServiceImpl.java
index fd0c6db..623f0cb 100644
--- a/src/main/java/com/ots/project/exam/service/impl/TExamLevelServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/TExamLevelServiceImpl.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.service.impl;
-
 import com.ots.common.utils.DateUtils;
 import com.ots.common.utils.StringUtils;
 import com.ots.common.utils.text.Convert;
@@ -10,64 +9,40 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.i18n.LocaleContextHolder;
 import org.springframework.stereotype.Service;
-
 import java.util.ArrayList;
 import java.util.List;
 import java.util.UUID;
 
-/**
- * 闂嵎绫诲瀷Service涓氬姟灞傚鐞�
- *
- * @author ots
- * @date 2019-12-15
- */
 @Service("examLevel")
 public class TExamLevelServiceImpl implements ITExamLevelService {
     @Autowired
     private TExamLevelMapper tExamLevelMapper;
-
     @Autowired
     private DictService dictService;
-
-    /**
-     * 鏌ヨ闂嵎绫诲瀷
-     *
-     * @param id 闂嵎绫诲瀷ID
-     * @return 闂嵎绫诲瀷
-     */
+    
     @Override
     public TExamLevel selectTExamLevelById(Long id) {
         return tExamLevelMapper.selectTExamLevelById(id);
     }
-
     @Override
     public List<TExamLevel> selectTExamLevelByUuid(String uuid) {
         return tExamLevelMapper.selectTExamLevelByUuid(uuid);
     }
-
     @Override
     public TExamLevel selectTExamLevelByUuidLan(String uuid,String langType) {
         return tExamLevelMapper.selectTExamLevelByUuidLan(uuid,langType);
     }
-
     @Override
     public List<TExamLevel> selectTExamLevelAndTSubjectById(Long id) {
         return tExamLevelMapper.selectTExamLevelAndTSubjectById(id);
     }
-
-    /**
-     * 鏌ヨ闂嵎绫诲瀷鍒楄〃
-     *
-     * @param tExamLevel 闂嵎绫诲瀷
-     * @return 闂嵎绫诲瀷
-     */
+    
     @Override
     public List<TExamLevel> selectTExamLevelList(TExamLevel tExamLevel) {
-		//globalization(tExamLevel);
+		
 		return tExamLevelMapper.selectTExamLevelList(tExamLevel);
     }
-
-    // 鍥介檯鍖�
+    
 	private void globalization(TExamLevel tExamLevel) {
 		if(StringUtils.isNotBlank(tExamLevel.getUuid())){
 			/*List<DictData> lang_types = this.dictService.getType("lang_type");
@@ -91,13 +66,11 @@
 			tExamLevel.setLangType(this.dictService.getLangType(LocaleContextHolder.getLocale().toString()));
 		}
 	}
-
 	public List<TExamLevel> selectTExamLevelList() {
 		TExamLevel t = new TExamLevel();
 		t.setLangType(this.dictService.getLangType(LocaleContextHolder.getLocale().toString()));
         return tExamLevelMapper.selectTExamLevelList(t);
     }
-
     @Override
     public List<TExamLevel> selectTExamLevelListByType(String type) {
         List<Integer> types = new ArrayList<>();
@@ -105,25 +78,17 @@
             types.add(1);
             types.add(3);
         }
-
         if (StringUtils.equals(type, "questionnaire")) {
             types.add(1);
             types.add(2);
         }
         return tExamLevelMapper.selectTExamLevelListByType(types.stream().toArray(Integer[]::new));
     }
-
     @Override
     public List<TExamLevel> selectTExamLevelByquestionTemplateIdList(String questionTemplateId) {
         return tExamLevelMapper.selectTExamLevelByquestionTemplateIdList(questionTemplateId);
     }
-
-    /**
-     * 鏂板闂嵎绫诲瀷
-     *
-     * @param tExamLevel 闂嵎绫诲瀷
-     * @return 缁撴灉
-     */
+    
     @Override
     public int insertTExamLevel(TExamLevel tExamLevel) {
         tExamLevel.setCreateTime(DateUtils.getNowDate());
@@ -133,13 +98,7 @@
 		}
         return tExamLevelMapper.insertTExamLevel(tExamLevel);
     }
-
-    /**
-     * 淇敼闂嵎绫诲瀷
-     *
-     * @param tExamLevel 闂嵎绫诲瀷
-     * @return 缁撴灉
-     */
+    
     @Override
     public int updateTExamLevel(TExamLevel tExamLevel) {
         tExamLevel.setUpdateTime(DateUtils.getNowDate());
@@ -149,24 +108,12 @@
 		}
         return tExamLevelMapper.updateTExamLevel(tExamLevel);
     }
-
-    /**
-     * 鍒犻櫎闂嵎绫诲瀷瀵硅薄
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     @Override
     public int deleteTExamLevelByIds(String ids) {
         return tExamLevelMapper.deleteTExamLevelByIds(Convert.toStrArray(ids));
     }
-
-    /**
-     * 鍒犻櫎闂嵎绫诲瀷淇℃伅
-     *
-     * @param id 闂嵎绫诲瀷ID
-     * @return 缁撴灉
-     */
+    
     public int deleteTExamLevelById(Long id) {
         return tExamLevelMapper.deleteTExamLevelById(id);
     }
diff --git a/src/main/java/com/ots/project/exam/service/impl/TExamPaperServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/TExamPaperServiceImpl.java
index 4fb6e8b..db0c951 100644
--- a/src/main/java/com/ots/project/exam/service/impl/TExamPaperServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/TExamPaperServiceImpl.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.service.impl;
-
 import cn.hutool.core.collection.CollUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -42,10 +41,8 @@
 import org.springframework.context.i18n.LocaleContextHolder;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-
 import java.util.*;
 import java.util.stream.Collectors;
-
 import static com.ots.project.tool.report.reportCalculation.request.CalculationTypeEnum.*;
 import static com.ots.project.tool.report.reportCalculation.request.ReportTypeEnum.firstPath;
 import static com.ots.project.tool.report.reportCalculation.request.ReportTypeEnum.secondPath;
diff --git a/src/main/java/com/ots/project/exam/service/impl/TExamReportServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/TExamReportServiceImpl.java
index 4629005..bf215da 100644
--- a/src/main/java/com/ots/project/exam/service/impl/TExamReportServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/TExamReportServiceImpl.java
@@ -1,6 +1,6 @@
 package com.ots.project.exam.service.impl;
-
 import cn.hutool.core.collection.CollUtil;
+import lombok.extern.slf4j.Slf4j;
 import com.ots.common.enums.LangTypeEnum;
 import com.ots.common.enums.ReportTypeEnum;
 import com.ots.common.enums.TemplateTypeEnum;
@@ -36,6 +36,7 @@
 import com.ots.project.tool.exam.JsonUtil;
 import com.ots.project.tool.report.CAQ.CAQReport;
 import com.ots.project.tool.report.MAQ.MAQReport;
+import com.ots.project.tool.report.MAQNEW.MAQReport_V2;
 import com.ots.project.tool.report.ReportResultData;
 import com.ots.project.tool.report.RuilinMAQ.RuilinMAQReport;
 import com.ots.project.tool.report.SAQ.SAQReport;
@@ -45,7 +46,6 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-
 import javax.imageio.ImageIO;
 import java.awt.*;
 import java.awt.image.BufferedImage;
@@ -61,141 +61,87 @@
 import java.util.Set;
 import java.util.stream.Collectors;
 
-/**
- * 璇勬祴鎶ュ憡Service涓氬姟灞傚鐞�
- *
- * @author ots
- * @date 2019-12-26
- */
 @Service
+@Slf4j
 public class TExamReportServiceImpl implements ITExamReportService {
     @Autowired
     private TExamReportMapper tExamReportMapper;
-
     @Autowired
     private IDictDataService dictDataService;
-
     @Autowired
     private SysUserExtendMapper sysUserExtendMapper;
-
     @Autowired
     BarChart barChart;
-
     @Autowired
     IEntDemographyInfoService entDemographyInfoService;
-
     @Autowired
     IEntDemographyParamService entDemographyParamService;
-
     @Autowired
     private ITReportTemplateService itReportTemplateService;
-
     @Autowired
     private IEntTestMemberService entTestMemberService;
-
     private static final Logger logger = LoggerFactory.getLogger(Threads.class);
-
     @Autowired
     private MemberService memberService;
-
-
-    /**
-     * 鏌ヨ璇勬祴鎶ュ憡
-     *
-     * @param id 璇勬祴鎶ュ憡ID
-     * @return 璇勬祴鎶ュ憡
-     */
+    
     @Override
     public TExamReport selectTExamReportById(Long id) {
         return tExamReportMapper.selectTExamReportById(id);
     }
-
-    /**
-     * 鏌ヨ璇勬祴鎶ュ憡鍒楄〃
-     *
-     * @param tExamReport 璇勬祴鎶ュ憡
-     * @return 璇勬祴鎶ュ憡
-     */
+    
     @Override
     public List<TExamReport> selectTExamReportList(TExamReport tExamReport) {
         return tExamReportMapper.selectTExamReportList(tExamReport);
     }
-
+    @Override
+    public List<TExamReport> selectTExamReportNoStatusList(TExamReport tExamReport) {
+        return tExamReportMapper.selectTExamReportNoStatusList(tExamReport);
+    }
     @Override
     public List<TExamReport> selectViewReportList(TExamReport tExamReport) {
         return tExamReportMapper.selectViewReportList(tExamReport);
     }
-
-    /**
-     * 鏂板璇勬祴鎶ュ憡
-     *
-     * @param tExamReport 璇勬祴鎶ュ憡
-     * @return 缁撴灉
-     */
+    
     @Override
     public int insertTExamReport(TExamReport tExamReport) {
         tExamReport.setCreateTime(DateUtils.getNowDate());
         return tExamReportMapper.insertTExamReport(tExamReport);
     }
-
-    /**
-     * 淇敼璇勬祴鎶ュ憡
-     *
-     * @param tExamReport 璇勬祴鎶ュ憡
-     * @return 缁撴灉
-     */
+    
     @Override
     public int updateTExamReport(TExamReport tExamReport) {
         tExamReport.setUpdateTime(DateUtils.getNowDate());
         return tExamReportMapper.updateTExamReport(tExamReport);
     }
-
     @Override
     @Transactional
     public int updateTExamReportStatus(TExamReport tExamReport) {
         tExamReport.setUpdateTime(DateUtils.getNowDate());
         return tExamReportMapper.updateTExamReportStatus(tExamReport);
     }
-
     @Override
     public int updateTExamReportByTokenId(TExamReport tExamReport) {
         tExamReport.setUpdateTime(DateUtils.getNowDate());
         return tExamReportMapper.updateTExamReportByTokenId(tExamReport);
     }
-
     @Override
     public int updateTExamReportDeleteLastOneByTokenId(TExamReport tExamReport) {
         tExamReport.setUpdateTime(DateUtils.getNowDate());
         return tExamReportMapper.updateTExamReportDeleteLastOneByTokenId(tExamReport);
     }
-
-
-    /**
-     * 鍒犻櫎璇勬祴鎶ュ憡瀵硅薄
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     @Override
     public int deleteTExamReportByIds(String ids) {
         return tExamReportMapper.deleteTExamReportByIds(Convert.toStrArray(ids));
     }
-
-    /**
-     * 鍒犻櫎璇勬祴鎶ュ憡淇℃伅
-     *
-     * @param id 璇勬祴鎶ュ憡ID
-     * @return 缁撴灉
-     */
+    
     public int deleteTExamReportById(Long id) {
         return tExamReportMapper.deleteTExamReportById(id);
     }
-
     @Override
     public int changeStatus(TExamReport tExamReport) {
         return tExamReportMapper.updateTExamReport(tExamReport);
     }
-
     @Override
     public int updateTexamReportByIds(String ids, String downloadTimes) {
         Map params = new HashMap<>();
@@ -204,20 +150,17 @@
         params.put("downloadTimes", downloadTimes);
         return tExamReportMapper.updateTExamReportByIds(params);
     }
-
     @Override
     public List<TExamReport> selectTExamReportByTokenList(String[] tokenIds) {
         return tExamReportMapper.selectTExamReportByTokenList(tokenIds);
     }
-
     @Override
     public List<TExamReport> selectTExamReportByIds(String[] ids) {
         return tExamReportMapper.selectTExamReportByIds(ids);
     }
-
     @Override
     public List<DictData> getType(Long id) {
-        // 鏌ヨ瀛楀吀鍏�
+        
         List<DictData> dictDataList = dictDataService.selectDictDataByType("lang_type");
         SysUserExtend sysUserExtend = sysUserExtendMapper.selectSysUserExtendById(id);
         String langType = sysUserExtend.getLangType();
@@ -229,9 +172,6 @@
         }
         return dictDataListResult;
     }
-
-
-
     @Override
     public TReportTemplate getReportTemplate(String questionTemplateId, String langType, String templateType) {
         TReportTemplate tReportTemplate = new TReportTemplate();
@@ -241,69 +181,57 @@
         tReportTemplate.setReportType(productTypeMap.get(questionTemplateId));
         return tReportTemplate;
     }
-
-    // 妯℃嫙璋冪敤鎺ュ彛鎶藉彇鍒版湇鍔″眰
+    
     @Override
     public void setTextPicture(TExamReport tExamReport, ReportResultData reportResultData, List<String> deleteStrList, LangTypeEnum langType, Map<String, Object> textMap) {
-        // begin 璋冪敤鎺ュ彛鐨勪唬鐮佸潡
-
-        // 杩欓噷鏄痯ut鏄犲皠锛宼extMap鍜寃ord鏂囨。瀵瑰簲
+        
+        
         setTextMap(tExamReport, reportResultData, textMap);
-
-        // begin 閫犺繘搴︽潯鐨勬暟鎹�
-        // setProgressPicture(deleteStrList, langType, thaiCalculationMap, textMap);
-        // end 閫犺繘搴︽潯鐨勬暟鎹�
-
-        // 澶勭悊姘存淮
+        
+        
+        
+        
         setWaterDropPicture(reportResultData, deleteStrList, textMap, tExamReport);
-
-        // 澶勭悊url鐨勫浘鐗�
+        
         setIconPicture(reportResultData, textMap);
     }
-
     @Override
     public void setExportBaseOrDetailReportData(List<TExamReport> tExamReportList, List<String> deleteStrList, List<String> fileNameList, TReportTemplate tReportTemplate) {
-        // begin 浠巈xcel鍙栨暟鎹�
+        
         Map<String, Map<String, String>> excelMap = new HashMap<>();
-        // end 浠巈xcel鍙栨暟鎹�
-
-        // 澶勭悊娉板浗鍥㈤槦鏁版嵁
+        
+        
         dealTaiData(tExamReportList, excelMap);
-
-        // 鐢熸垚绠�鍗曠増鏈拰璇︾粏鐗�
+        
         getBaseAndDetailReport(deleteStrList, fileNameList, tReportTemplate, excelMap);
     }
-
     private void getBaseAndDetailReport(List<String> deleteStrList, List<String> fileNameList, TReportTemplate tReportTemplate, Map<String, Map<String, String>> excelMap) {
         List<ReportResultData> reportResultDataList = new ArrayList<>();
         List<TExamReport> tExamReportList = new ArrayList<>();
         getBaseAndDetailRportDataList(tReportTemplate, excelMap, reportResultDataList, tExamReportList);
         getReportFile(deleteStrList, fileNameList, tReportTemplate, reportResultDataList, tExamReportList);
     }
-
     private void getReportFile(List<String> deleteStrList, List<String> fileNameList, TReportTemplate tReportTemplate, List<ReportResultData> reportResultDataList, List<TExamReport> tExamReportList) {
         Map<String, Object> textMap = new HashMap<>();
         String path = itReportTemplateService.selectTReportTemplateFilePath(tReportTemplate);
         for (int i = 0; i < tExamReportList.size(); i++) {
             setTextPicture(tExamReportList.get(i), reportResultDataList.get(i), deleteStrList, LangTypeEnum.codeOf(tReportTemplate.getLangType()), textMap);
-            // 鐢熸垚鎶ュ憡鏂囦欢锛岃繖涓槸鍙傝�冭缁嗙増
-            // String fileName = "/2020/04/13/7e57e1cb61e24c7cfc894fa55bf385d5.docx";
+            
+            
             WordUtil wordUtil = new WordUtil();
             String zipFileName = wordUtil.makeReportFile(path, tReportTemplate, textMap, new HashMap<>(), deleteStrList);
             fileNameList.add(zipFileName);
-
             wordUtil.deleteFileByStr(deleteStrList);
             textMap.clear();
         }
     }
-
     public void getBaseAndDetailRportDataList(TReportTemplate tReportTemplate, Map<String, Map<String, String>> excelMap, List<ReportResultData> reportResultDataList, List<TExamReport> tExamQueryReportList) {
         for (Map.Entry<String, Map<String, String>> entry : excelMap.entrySet()) {
             ReportResultData resultData = null;
             TExamReport tExamReport = new TExamReport();
-            // if else MAQ SAQ CAQ
+            
             String reportType = tReportTemplate.getReportType();
-            // SAQ鐨勬姤鍛�
+            
             reportType = getTypeIfIsSAQ(tReportTemplate, reportType);
             String langType = tReportTemplate.getLangType();
             resultData = getReportResultData(reportType, langType, entry, tExamReport);
@@ -311,14 +239,12 @@
             reportResultDataList.add(resultData);
         }
     }
-
     private String getTypeIfIsSAQ(TReportTemplate tReportTemplate, String reportType) {
         if (Objects.equals(tReportTemplate.getTemplateType(), TemplateTypeEnum.SAQ.getCode())) {
             reportType = TemplateTypeEnum.SAQ.getCode();
         }
         return reportType;
     }
-
     @Override
     public ReportResultData getReportResultData(String reportType,String langType, Map.Entry<String, Map<String, String>> entry, TExamReport tExamReport) {
         ReportResultData resultData = null;
@@ -330,19 +256,20 @@
             resultData = getSAQReportData(langType, ReportTypeEnum.codeOf(reportType), entry, tExamReport);
         } else if (Objects.equals(reportType, ReportTypeEnum.JAQ.getCode())) {
             resultData = getJAQReportData(entry.getValue());
+        } else if(Objects.equals(reportType, ReportTypeEnum.MAQV2.getCode())){
+            resultData = getMAQ_V2ReportData(langType, ReportTypeEnum.codeOf(reportType), entry, tExamReport);
         } else {
             resultData = getMAQReportData(langType, ReportTypeEnum.codeOf(reportType), entry, tExamReport);
         }
         return resultData;
     }
-
     public void dealTaiData(List<TExamReport> tExamReportList, Map<String, Map<String, String>> excelMap) {
         for (TExamReport tExamReport : tExamReportList) {
             List<ReportAPIResult> reportAPIResultList = JsonUtil.parseArray(tExamReport.getInterfaceContent(), ReportAPIResult.class);
             Map dataMap = new HashMap();
             try {
                 reportAPIResultList.stream().forEach(reportAPIResult -> {
-                    // 闇�瑕佸皢绗竴娆¤皟鐢ㄦ嘲鍥藉洟闃熷拰绗簩娆¤皟鐢ㄧ殑鍔犺捣鏉�
+                    
                     Map<String, String> data = reportAPIResult.getData();
                     for (Map.Entry<String, String> entry : data.entrySet()) {
                         try {
@@ -360,13 +287,10 @@
             } catch (Exception e) {
                 logger.error("id:" + tExamReport.getId() + "  memberName:" + tExamReport.getMemberName() + "  " + tExamReport.getInterfaceContent());
             }
-
-            // 鎶ュ憡棰濆鍊�
+            
             setExcelMapextraValue(tExamReport, dataMap);
-
-            // 鍙栦汉鍙e鍙橀噺濉殑閭d釜濮撳悕
+            
             String name = getDemographicName(tExamReport);
-
             if (StringUtils.isNotEmpty(name)) {
                 excelMap.put(name, dataMap);
             } else {
@@ -374,11 +298,11 @@
             }
         }
     }
-
     public void setExcelMapextraValue(TExamReport tExamReport, Map dataMap) {
         dataMap.put("password", tExamReport.getTokenId());
         dataMap.put("reportId", tExamReport.getId().toString());
         dataMap.put("userName", tExamReport.getUserName());
+        dataMap.put("memberName", tExamReport.getMemberName());
         dataMap.put("reportTemplateId", tExamReport.getReportTemplateId());
         dataMap.put("Begin Time", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, tExamReport.getCreateTime()));
         dataMap.put("End Time", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, tExamReport.getUpdateTime()));
@@ -386,12 +310,13 @@
         dataMap.put("Test Package", ExamUtil.getLangString(tExamReport.getLangType(), tExamReport.getTestName()));
         dataMap.put("Test", ExamUtil.getLangString(tExamReport.getLangType(), tExamReport.getProductName()));
         EntTestMember entTestMember = entTestMemberService.selectEntTestMemberById(tExamReport.getMemberId().longValue());
+        if (Objects.isNull(entTestMember)) {
+            return;
+        }
         dataMap.put("reportGenerationDate", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, entTestMember.getEndTime()));
         List<ReportAPIResult> interfaceContentList = JsonUtil.parseArray(tExamReport.getInterfaceContent(), ReportAPIResult.class);
-
-        // 閬嶅巻鎶ュ憡閲岄潰鐨勫�兼斁杩涘幓
+        
         setPExtro(dataMap, interfaceContentList);
-
         if (ExamUtil.isListNotEmpty(interfaceContentList)) {
             dataMap.put("Signal", interfaceContentList.get(0).getSignal());
         }
@@ -399,34 +324,28 @@
         questionReports.stream().forEach(questionReport -> {
             dataMap.put(questionReport.getPermanentId(), questionReport.getAnswer());
         });
-
-        // 鍙戦偖浠剁殑閭d釜鍚嶅瓧
-        // 鍙栦汉鍙e鍙橀噺濉殑閭d釜濮撳悕
+        
+        
         String name = getDemographicName(tExamReport);
         if (StringUtils.isNotEmpty(name)) {
             dataMap.put("sendEmailFileName", name.replaceAll(" ", "_"));
         } else {
             dataMap.put("sendEmailFileName", tExamReport.getMemberName().replaceAll(" ", "_"));
         }
-
-        // 娴嬭瘯浜哄憳閭
+        
         dataMap.put("testEmail", tExamReport.getMemberEmail());
-
-        // 娴嬭瘯寮�濮嬪拰缁撴潫鏃堕棿
+        
         dataMap.put("beginTime", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, tExamReport.getCreateTime()));
         dataMap.put("endTime", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, entTestMember.getEndTime()));
-
         RelatedParty relatedParty = memberService.queryProdidByToken(tExamReport.getTokenId());
-
-        // 鏁板瓧琛ㄥご閭i噷鐢�
+        
         dataMap.put("Phone", relatedParty.getMemberPhone());
         dataMap.put("Department", relatedParty.getMemberDept());
         dataMap.put("AccessCode", tExamReport.getTokenId());
         dataMap.put("Position", relatedParty.getPosition());
         dataMap.put("Occupation Category", relatedParty.getProfessionalCategory());
         dataMap.put("Superior Position", relatedParty.getSuperiorPosition());
-
-        // 鎶妌ull寮勬帀
+        
         Set dataKeySet = dataMap.keySet();
         for (Object dataKey : dataKeySet) {
             if (Objects.isNull(dataMap.get(dataKey))) {
@@ -434,7 +353,6 @@
             }
         }
     }
-
     private void setPExtro(Map dataMap, List<ReportAPIResult> interfaceContentList) {
         if (CollUtil.isEmpty(interfaceContentList)) {
             return;
@@ -450,7 +368,6 @@
             }
         }
     }
-
     @Override
     public String getDemographicName(TExamReport tExamReport) {
         EntDemographyInfo entDemographyInfo = new EntDemographyInfo();
@@ -459,25 +376,34 @@
         if (ExamUtil.isListEmpty(entDemographyInfos)) {
             return "";
         }
-        // 浜哄彛瀛︾殑key
+        
         Map<String, String> entDemographyMap = entDemographyInfos.stream().collect(
                 Collectors.toMap(EntDemographyInfo::getParamId, EntDemographyInfo::getParamValue));
-
-        //浼佷笟鐨勯偅涓弬鏁�
+        
         String  paramIds = entDemographyInfos.stream().map(it -> {
             return it.getParamId();
         }).collect(Collectors.joining(","));
-
         List<EntDemographyParam> entDemographyParams = entDemographyParamService.selectEntDemographyParamListByParamIn(paramIds);
         for (EntDemographyParam entDemographyParam : entDemographyParams) {
             if (Objects.equals(entDemographyParam.getParamCode(), "name")) {
                return entDemographyMap.get(entDemographyParam.getParamId().toString());
             }
         }
-
         return "";
     }
-
+    public ReportResultData getMAQ_V2ReportData(String langType, ReportTypeEnum reportTypeEnum, Map.Entry<String, Map<String, String>> entry, TExamReport tExamReport) {
+        MAQReport_V2 report = new MAQReport_V2();
+        report.setQuestionnaireTaker(entry.getValue().get("memberName"));
+        report.setQuestionnaireID(entry.getValue().get("password"));
+        report.setReportGenerationDate(entry.getValue().get("reportGenerationDate"));
+        report.setQuestionnaireEmail(entry.getValue().get("testEmail"));
+        report.setUserName(entry.getValue().get("userName"));
+        report.setQuestionnaireStartTime(entry.getValue().get("beginTime"));
+        report.setQuestionnaireEndTime(entry.getValue().get("endTime"));
+        tExamReport.setId(Long.valueOf(entry.getValue().get("reportId")));
+        ReportResultData resultData = report.getTemplateParameters(entry.getValue(), reportTypeEnum, LangTypeEnum.codeOf(langType));
+        return resultData;
+    }
     public ReportResultData getMAQReportData(String langType, ReportTypeEnum reportTypeEnum, Map.Entry<String, Map<String, String>> entry, TExamReport tExamReport) {
         MAQReport report = new MAQReport();
         report.setQuestionnaireTaker(entry.getKey());
@@ -487,13 +413,11 @@
         ReportResultData resultData = report.getTemplateParameters(entry.getValue(), reportTypeEnum, LangTypeEnum.codeOf(langType));
         return resultData;
     }
-
     public ReportResultData getJAQReportData(Map textMap) {
         ReportResultData reportResultData = new ReportResultData();
         reportResultData.setTextMap(textMap);
         return reportResultData;
     }
-
     public ReportResultData getSAQReportData(String langType, ReportTypeEnum reportTypeEnum, Map.Entry<String, Map<String, String>> entry, TExamReport tExamReport) {
         SAQReport report = new SAQReport();
         report.setQuestionnaireTaker(entry.getKey());
@@ -503,7 +427,6 @@
         ReportResultData resultData = report.getTemplateParameters(entry.getValue(), reportTypeEnum, LangTypeEnum.codeOf(langType));
         return resultData;
     }
-
     public ReportResultData getCAQReportData(String langType, Map.Entry<String, Map<String, String>> entry, TExamReport tExamReport) {
         ReportResultData resultData = null;
         CAQReport report = new CAQReport();
@@ -516,7 +439,6 @@
         resultData.setTextMap(templateParameterMap);
         return resultData;
     }
-
     public ReportResultData getRuilinReportData(String langType, Map.Entry<String, Map<String, String>> entry, TExamReport tExamReport) {
         ReportResultData resultData;
         RuilinMAQReport report = new RuilinMAQReport();
@@ -531,13 +453,11 @@
         resultData.setTextMap(templateParameterMap);
         return resultData;
     }
-
     private void setIconPicture(ReportResultData reportResultData, Map<String, Object> textMap) {
         Map<String, String> iconMap = reportResultData.getIconMap();
         if (Objects.isNull(iconMap) || iconMap.isEmpty()) {
             return;
         }
-
         for (Map.Entry<String, String> entry : iconMap.entrySet()) {
             WordParam wordParam = new WordParam();
             wordParam.setContent(EssConfig.getUploadPath() + entry.getValue());
@@ -545,108 +465,93 @@
             textMap.put(entry.getKey(), wordParam);
         }
     }
-
     public void setTextMap(TExamReport tExamReport, ReportResultData reportResultData, Map<String, Object> textMap) {
         textMap.putAll(reportResultData.getTextMap());
         textMap.put("reportId", tExamReport.getId().toString());
     }
-
     private void setWaterDropPicture(ReportResultData reportResultData, List<String> deleteStrList, Map<String, Object> textMap, TExamReport tExamReport) {
-        // 绗簩涓浘鐗�
+        
         if (Objects.isNull(reportResultData.getImageMap())) {
             return;
         }
-
         Map<String, String> pictureMap = reportResultData.getImageMap();
 
-//        // begin 璋冭瘯鐨勪复鏃朵唬鐮�
-//        pictureMap.put("Flexibility_1_waterDrops", "100");
-//        pictureMap.put("Creativity_2_waterDrops", "0");
-//        pictureMap.put("ResponseFidelityDiagnosis_waterDrops1", "100");
-//        pictureMap.put("ResponseFidelityDiagnosis_waterDrops2", "0");
-//        System.out.println("--ResponseFidelityDiagnosis_waterDrops1--" + pictureMap.get("ResponseFidelityDiagnosis_waterDrops1"));
-//        // end 璋冭瘯鐨勪复鏃朵唬鐮�
+
+
+
+
+
+
         for (Map.Entry<String, String> entry : pictureMap.entrySet()) {
-            // setWaterDrop(textMap, entry, deleteStrList);
-            setWaterDropCreatePic(textMap, entry, deleteStrList, tExamReport.getId().toString()); // 鐢熸垚鍥剧墖鐨勬柟寮�
+            
+            setWaterDropCreatePic(textMap, entry, deleteStrList, tExamReport.getId().toString()); 
         }
     }
-
-    // 璁剧疆姘存淮
+    
     private void setWaterDrop(Map<String, Object> textMap, Map.Entry<String, String> entry, List<String> deleteStrList) {
-
         String[] strValue = entry.getValue().toString().split("\\.");
         BufferedImage bufferedImage = saveNumberPicture(strValue[0]);
-
-        // 寰楀埌鍥剧墖鍦板潃
+        
         String path = getUploadPicturePath(entry.getKey()+ "_number.png");
-
         try {
             File file = new File(path);
-            ImageIO.write(bufferedImage, "png", file);//鍐欏叆鏂囦欢
+            ImageIO.write(bufferedImage, "png", file);
         } catch (IOException e) {
             e.printStackTrace();
         }
-
         deleteStrList.add(path);
         double retreat = 465;
-
-        // double posistionValue = Double.valueOf(entry.getValue()) * 5 - retreat;
-        // 姘存淮鐨勬暟瀛楀浘鐗�
+        
+        
         double posistionValue = (Double.valueOf(entry.getValue()) / 100) * retreat;
         double offsetNumX = -3;
         double offsetNumY = 2;
         WordParam wordParamWaterDorpNumber = new WordParam(posistionValue > 0 ? posistionValue + offsetNumX : offsetNumX, offsetNumY, 20, 20, path);
         wordParamWaterDorpNumber.setTopPosition(1);
         textMap.put(entry.getKey()+ "_number", wordParamWaterDorpNumber);
-
         WordParam wordParam = new WordParam();
         wordParam.setX(posistionValue > 0 ? posistionValue : 0);
-
         String[] watherDropPictrues = entry.getKey().split("_");
-
-        // 涓嶅悓棰滆壊鐨勬按婊�
+        
         wordParam.setContent(WordUtil.getTemplatePicture(ExamUtil.getWaterDropPictureMap(watherDropPictrues[0])));
-
-        // 姘存淮鏀惧ぇ涓�鍊�
+        
         wordParam.setPicWidth(15);
         wordParam.setPicHeight(25);
         textMap.put(entry.getKey(), wordParam);
     }
-
-    // 璁剧疆姘存淮
+    
     private void setWaterDropCreatePic(Map<String, Object> textMap, Map.Entry<String, String> entry, List<String> deleteStrList, String id) {
-
         String[] strValue = entry.getValue().toString().split("\\.");
         String key = entry.getKey();
-
         String[] waterDropPicture = key.split("_");
-
-        // 鍙栧墠缂�鎴栬�呭叏鍚�
+        
         String waterDropName =StringUtils.isNotEmpty(ExamUtil.getWaterDropPictureMap(waterDropPicture[0])) ? ExamUtil.getWaterDropPictureMap(waterDropPicture[0]) : ExamUtil.getWaterDropPictureMap(key);
-
+        if(waterDropPicture[1].equals("V2")){
+        	waterDropName = ExamUtil.getWaterDropPictureMap("ResponseFidelityDiagnosis_V2");
+        }
         if (StringUtils.isEmpty(waterDropName)) {
             return;
         }
-
         WordParam wordParam = new WordParam();
-
         Float floatValue = Float.valueOf(strValue[0]);
-
         String suffixDate = DateTimeUtil.dateMillisecondFormat(new Date());
-
         ImageUtil.creteWaterDropPic(key, waterDropName, floatValue, id, suffixDate);
-
-        // 鍥犱负鏄悓涓�涓洰褰曪紝鐢ㄥ悗缂�鍖轰竴涓嬪浘鐗�
+        
         wordParam.setContent(EssConfig.getProfile() + "/" + key + "_" + id + "_" + floatValue.toString() + "_" + suffixDate + ".png");
-
         deleteStrList.add(EssConfig.getProfile() + "/" + key + "_" + id + "_" + floatValue.toString() + "_" + suffixDate + ".png");
-
-        // 姘存淮鏀惧ぇ涓�鍊�
+        
         if (StringUtils.equals(key.split("_")[0], "ResponseFidelityDiagnosis")) {
-            wordParam.setPicWidth(446);
-            wordParam.setPicHeight(33); // 鐜板湪鐢�500/888 鍏跺疄鏄�445/888
-        } else if (StringUtils.equals(key.split("_")[0], "RuilinTestResultValidityDiagnosisContext")) {
+        	if(StringUtils.equals(key.split("_")[1], "V2")){
+	    		wordParam.setPicWidth(210);
+	    		wordParam.setPicHeight(50); 
+        	}else{
+        		wordParam.setPicWidth(446);
+        		wordParam.setPicHeight(33); 
+        	}
+        } else if (StringUtils.equals(key.split("_")[0], "ResponseFidelityDiagnosisV2")){
+        	wordParam.setPicWidth(210);
+    		wordParam.setPicHeight(33); 
+        }else if (StringUtils.equals(key.split("_")[0], "RuilinTestResultValidityDiagnosisContext")) {
             wordParam.setPicWidth(450);
             wordParam.setPicHeight(35);
             wordParam.setX(-13.75);
@@ -655,33 +560,25 @@
             wordParam.setPicHeight(35);
             wordParam.setX(-13.75);
         }
-
         textMap.put(entry.getKey(), wordParam);
-
     }
-
     private BufferedImage saveNumberPicture(String textNumber) {
         int width = 200;
         int heigth = 150;
-        Font font = new Font("", Font.BOLD, 60);//瀛椾綋
+        Font font = new Font("", Font.BOLD, 60);
         return ImageUtil.waterMarkByText(width, heigth, textNumber, Color.black, font, null,
                 0.8f);
     }
-
-    // 缁熶竴璺緞
+    
     private String getUploadPicturePath(String name) {
         return EssConfig.getUploadPath() + name;
     }
-
-
     @Override
     public boolean getBaseAndComleteSendMailFile(List<TExamReport> tExamReportList, TExamReport tExamReportResult, List<String> fileNameResult, List<String> deleteStrList, TReportTemplate tReportTemplate) {
         try {
             List<String> fileNameList = new ArrayList<>();
 
-//            setExportBaseOrDetailReportData(tExamReportList, deleteStrList, fileNameList, path, tReportTemplate, tReportTemplate.getLangType(), reportType, reportTypeEnumMap.get(tReportTemplate.getTemplateType()));
             setExportBaseOrDetailReportData(tExamReportList, deleteStrList, fileNameList, tReportTemplate);
-
             for (String fileNameTemp : fileNameList) {
                 if (StringUtils.isEmpty(fileNameTemp)) {
                     continue;
@@ -689,34 +586,29 @@
                 fileNameResult.add(EssConfig.getProfile() + "/" + fileNameTemp);
             }
         } catch (Exception e) {
+        	log.error("鍙戠敓寮傚父:{}", e);
             return false;
         }
-
         return true;
     }
-
-    // 鐢熸垚鎶ュ憡鐨勫叆鍙�
+    
     @Override
     public TExamReport getReportFromTemplate(TExamReport tExamReport, List<String> fileNameResult, List<String> deleteStrList) {
         List<TExamReport> tExamReportList = selectTExamReportList(tExamReport);
         TExamReport tExamReportResult = tExamReportList.get(0);
-
-        // 瓒呮椂
+        
         if (Objects.isNull(tExamReportResult.getFinish()) || tExamReportResult.getFinish() == 0) {
             return null;
         }
-
-        // 瀵煎嚭鍩虹鐗堟湰
+        
         List<TReportTemplate> tReportTemplateList = itReportTemplateService.selectTReportTemplates(tExamReportResult.getReportTemplateId());
         for (TReportTemplate tReportTemplate : tReportTemplateList) {
-            // 鍒ゆ柇涓嶆槸璇█鐨勬ā鐗堜笉瀵煎嚭锛屽悗鏉ュ張璇磋瀵煎嚭
-//            if (!Objects.equals(tReportTemplate.getLangType(), tExamReportResult.getLangType())) {
-//                continue;
-//            }
+            
+
+
 
             getBaseAndComleteSendMailFile(tExamReportList, tExamReportResult, fileNameResult, deleteStrList, tReportTemplate);
         }
         return tExamReportResult;
     }
-
 }
diff --git a/src/main/java/com/ots/project/exam/service/impl/TQuestionServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/TQuestionServiceImpl.java
index 90f33c8..8aab9d8 100644
--- a/src/main/java/com/ots/project/exam/service/impl/TQuestionServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/TQuestionServiceImpl.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.service.impl;
-
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.ots.common.enums.QuestionTypeEnum;
@@ -29,89 +28,54 @@
 import org.springframework.context.i18n.LocaleContextHolder;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.stream.Collectors;
-
 import static com.ots.common.enums.ExamPaperQuestion.permanentIdDuplicate;
 
-/**
- * 棰樼洰鍒楄〃Service涓氬姟灞傚鐞�
- *
- * @author Shawn
- * @date 2019-11-20
- */
 @Service("examQuestion")
 public class TQuestionServiceImpl implements ITQuestionService {
     @Autowired
     private TQuestionMapper tQuestionMapper;
-
     @Autowired
     private TTextContentMapper tTextContentMapper;
-
     @Autowired
     private ITTextContentService textContentService;
-
     @Autowired
     private IDictDataService dictDataService;
-
     @Autowired
     private DictService dictService;
-
     protected final static ModelMapper modelMapper = ModelMapperSingle.Instance();
-
-    /**
-     * 鏌ヨ棰樼洰鍒楄〃
-     *
-     * @param id 棰樼洰鍒楄〃ID
-     * @return 棰樼洰鍒楄〃
-     */
+    
     @Override
     public TQuestion selectTQuestionById(Long id) {
         return tQuestionMapper.selectTQuestionById(id);
     }
-
-    /**
-     * 鏌ヨ棰樼洰鍒楄〃
-     *
-     * @param id 棰樼洰鍒楄〃ID
-     * @return 棰樼洰鍒楄〃
-     */
+    
     @Override
     public List<TQuestion> selectTQuestionByIds(List<Long> ids) {
         return tQuestionMapper.selectTQuestionByIds(ids);
     }
-
     @Override
     public List<TQuestion> selectTQuestionByPermanentIds(List<String> permanentIds) {
         return tQuestionMapper.selectTQuestionByPermanentIds(permanentIds);
     }
-
-    /**
-     * 鏌ヨ棰樼洰鍒楄〃鍒楄〃
-     *
-     * @param tQuestion 棰樼洰鍒楄〃
-     * @return 棰樼洰鍒楄〃
-     */
+    
     @Override
     public List<TQuestion> selectTQuestionList(TQuestion tQuestion) {
         List<TQuestion> tQuestionList = tQuestionMapper.selectTQuestionList(tQuestion);
         List<TQuestion> tQuestionResultList = new ArrayList<>();
-        // 鍥介檯鍖栫殑閫夋嫨鐨勫璇█绫诲瀷
+        
         String localLangType = dictService.getLangType(LocaleContextHolder.getLocale().toString());
         for (TQuestion question : tQuestionList) {
             String content = question.getContent();
             QuestionObject questionObject = JSONObject.parseObject(content, QuestionObject.class);
-
             setChioceAndSelectInput(question, questionObject);
-
             question.setTitle(questionObject.getTitleContent());
-
-            // 閬嶅巻鍑哄悇绉嶈瑷�
+            
             Map<String, String> titleMap = JsonUtil.toJsonObject(question.getTitle(), HashMap.class);
             if (Objects.isNull(titleMap)) {
                 TQuestion questionResult = new TQuestion();
@@ -119,26 +83,26 @@
                 questionResult.setLangType("Chinese");
                 tQuestionResultList.add(questionResult);
             } else {
-                // 澶栧眰
+                
                 if (Objects.isNull(tQuestion.getUuid())) {
-                    // 濡傛灉鏄畨鏉′欢鏌ヨ
+                    
                     if (StringUtils.isNotEmpty(tQuestion.getLangType())) {
-                        // 鏈夎繖绉嶈瑷�
+                        
                         if (StringUtils.isNotEmpty(titleMap.get(tQuestion.getLangType()))) {
-                            // 鏈夊厛灞曠ず鍥介檯鍖�
+                            
                             if (StringUtils.isNotEmpty(titleMap.get(localLangType))) {
                                 addQuestionResult(tQuestionResultList, question, localLangType, titleMap.get(localLangType));
                             } else {
                                 addQuestionResult(tQuestionResultList, question, tQuestion.getLangType(), titleMap.get(tQuestion.getLangType()));
                             }
                         }
-                    } else if (StringUtils.isNotEmpty(titleMap.get(localLangType))) { // 涓嶆槸瀹夋潯浠舵煡璇�
+                    } else if (StringUtils.isNotEmpty(titleMap.get(localLangType))) { 
                         addQuestionResult(tQuestionResultList, question, localLangType, titleMap.get(localLangType));
-                    } else { // 鏃犺濡備綍閮借闅忎究灞曠ず涓�绉嶈瑷�
+                    } else { 
                         addQuestionResult(tQuestionResultList, question, titleMap.keySet().stream().findFirst().get(), titleMap.values().stream().findFirst().get());
                     }
                 } else {
-                    // 澶氳瑷�鐨勯偅灞�
+                    
                     if (StringUtils.isNotEmpty(tQuestion.getLangType())) {
                         addQuestionResult(tQuestionResultList, question, tQuestion.getLangType(), titleMap.get(tQuestion.getLangType()));
                     } else {
@@ -149,64 +113,47 @@
                 }
             }
         }
-
         tQuestionList.clear();
         tQuestionList.addAll(tQuestionResultList);
         return tQuestionList;
     }
-
     private void setChioceAndSelectInput(TQuestion question, QuestionObject questionObject) {
         if (ExamUtil.isListEmpty(questionObject.getQuestionItemObjects())) {
             return;
         }
-
-        //閫夐」A銆丅銆丆銆丏
+        
         List<String> choiceInputList = questionObject.getQuestionItemObjects().stream().map(i -> {
             return i.getPrefix();
         }).collect(Collectors.toList());
         question.setChoiceInput(choiceInputList);
-
-        //閫夐」鍐呭
+        
         List<String> stemList = questionObject.getQuestionItemObjects().stream().map(i -> {
             return ExamUtil.getLangString(question.getLangType(), i.getContent());
         }).collect(Collectors.toList());
         question.setSelectInput(stemList);
     }
-
     private void addQuestionResult(List<TQuestion> tQuestionResultList, TQuestion question, String key, String value) {
         TQuestion questionResult = new TQuestion();
         BeanUtils.copyProperties(question, questionResult);
-
-        // 璇█绫诲瀷
+        
         questionResult.setLangType(key);
-
-        // 璇█绫诲瀷瀵瑰簲鐨勯鐩�
+        
         questionResult.setTitle(value);
-
-        // 閫氳繃闂嵎鐨勫ぇ棰樻病鏈夐�夐」
+        
         if (ExamUtil.isListNotEmpty(question.getChoiceInput())) {
             setLanSelectInput(question, key);
         }
-
         tQuestionResultList.add(questionResult);
     }
-
     private void setLanSelectInput(TQuestion question, String key) {
-        // 璇█瀵瑰簲鐨勯�夐」
+        
         List<String> selectInputList = question.getSelectInput();
-
-        // 鏇存柊
+        
         for (String selectInput : selectInputList) {
             selectInput = ExamUtil.getStringByLang(key, selectInput);;
         }
     }
-
-    /**
-     * 褰撳湪product 鐨刟dd_question.html鐨勬椂鍊欒皟鐢�
-     *
-     * @param tQuestion 棰樼洰鍒楄〃
-     * @return 棰樼洰鍒楄〃
-     */
+    
     @Override
     public List<TQuestion> selectTQuestionsForProductAddQuestion(TQuestion tQuestion) {
         List<TQuestion> tQuestionList = tQuestionMapper.selectTQuestionsForProductAddQuestion(tQuestion);
@@ -215,25 +162,17 @@
             QuestionObject questionObject = JSONObject.parseObject(content, QuestionObject.class);
             question.setLangType(tQuestion.getLangType());
             setChioceAndSelectInput(question, questionObject);
-            // 澶氳瑷�
+            
             Map<String, String> titleMap = JsonUtil.toJsonObject(questionObject.getTitleContent(), HashMap.class);
-
             if (Objects.isNull(titleMap)) {
                 question.setTitle(questionObject.getTitleContent());
             } else {
                 question.setTitle(ExamUtil.getLangString(tQuestion.getLangType(), questionObject.getTitleContent()));
             }
         }
-
         return tQuestionList;
     }
-
-    /**
-     * 鏂板棰樼洰鍒楄〃
-     *
-     * @param tQuestion 棰樼洰鍒楄〃
-     * @return 缁撴灉
-     */
+    
     @Override
     @Transactional
     public int insertTQuestion(TQuestion tQuestion) {
@@ -243,31 +182,26 @@
                 return permanentIdDuplicate.ordinal();
             }
         }
-        //鎷艰t_text_content锛宼Question鍙傛暟鐨勫睘鎬т篃鏄細鍦ㄦ鏂规硶鍐呴儴淇敼
+        
         TTextContent textContent = getQuestionTextContent(tQuestion);
-
-        //鍏ュ簱t_text_content
+        
         tTextContentMapper.insertTTextContent(textContent);
-
-        //鎶妕_text_content鐨刬d璧嬪�肩粰t_question鐨刬nfo_text_content_id
+        
         tQuestion.setInfoTextContentId(textContent.getId());
         return tQuestionMapper.insertTQuestion(tQuestion);
     }
-
     private TTextContent getQuestionTextContent(TQuestion tQuestion) {
-        //bgin 绛旀閫夐」灏佽,鍘熷洜鏄柟渚垮悗闈㈣浆鎹㈡垚json
+        
         List<QuestionEditItem> questionEditItems = new ArrayList<QuestionEditItem>();
         List<QuestionEditItem> itemObjects = null;
-
-        // 澶ч鐩笉闇�瑕侀�夐」
+        
         if (ExamUtil.isListNotEmpty(tQuestion.getChoiceInput())) {
             itemObjects = getQuestionEditItems(tQuestion, questionEditItems);
         }
-
         QuestionObject questionObject = new QuestionObject();
         questionObject.setQuestionItemObjects(itemObjects);
         questionObject.setAnalyze(tQuestion.getAnalyze());
-        // 澶氳瑷�
+        
         if (StringUtils.isNotEmpty(tQuestion.getMultilingual())) {
             questionObject.setTitleContent(tQuestion.getTitle());
         } else {
@@ -278,26 +212,24 @@
         TTextContent textContent = new TTextContent();
         textContent.setCreateTime(DateUtils.getNowDate());
         textContent.setContent(JSON.toJSONString(questionObject));
-        //end 绛旀閫夐」灏佽,鍘熷洜鏄柟渚垮悗闈㈣浆鎹㈡垚json
+        
         return textContent;
     }
-
     private List<QuestionEditItem> getQuestionEditItems(TQuestion tQuestion, List<QuestionEditItem> questionEditItems) {
         for (int i = 0; i < tQuestion.getChoiceInput().size(); i++) {
             QuestionEditItem questionEditItem = new QuestionEditItem();
             questionEditItem.setPrefix(tQuestion.getChoiceInput().get(i));
-            // 澶氳瑷�
-            if (StringUtils.isNotEmpty(tQuestion.getMultilingual())) { // 鎵归噺瀵煎叆鐨勬椂鍊欏凡缁忔嫾濂藉悇绉嶈瑷�
+            
+            if (StringUtils.isNotEmpty(tQuestion.getMultilingual())) { 
                 questionEditItem.setContent(tQuestion.getSelectInput().get(i));
             } else {
                 questionEditItem.setContent(ExamUtil.getStringMapJson(tQuestion.getLangType(), tQuestion.getSelectInput().get(i), new HashMap<>()));
             }
-            // 棰樼洰鐨勫垎鏁�
-            questionEditItem.setScore(Objects.isNull(tQuestion.getScore()) ? 0 : tQuestion.getScore().intValue());//鐩墠鐢ㄤ笉涓婅繖涓垎鏁帮紝鍏堣涓�0
+            
+            questionEditItem.setScore(Objects.isNull(tQuestion.getScore()) ? 0 : tQuestion.getScore().intValue());
             questionEditItems.add(questionEditItem);
         }
-
-        //閬嶅巻姣忎竴涓�夐」
+        
         return questionEditItems.stream().map(i ->
                 {
                     QuestionEditItem item = modelMapper.map(i, QuestionEditItem.class);
@@ -306,96 +238,72 @@
                 }
         ).collect(Collectors.toList());
     }
-
-    /**
-     * 淇敼棰樼洰鍒楄〃
-     *
-     * @param tQuestion 棰樼洰鍒楄〃
-     * @return 缁撴灉
-     */
+    
     @Override
     public int updateTQuestion(TQuestion tQuestion) {
-
-        // 澶氳瑷�鐨勬洿鏂�
+        
         if (tQuestion.getUuid() != null) {
             TQuestion questionOld = tQuestionMapper.selectTQuestionById(tQuestion.getId());
-            // 鍚堝苟绗簩涓緭鍏ユ閫夐」鐨勫唴瀹�
+            
             updateQuestionLangContent(tQuestion, questionOld);
             return tQuestionMapper.updateTQuestion(tQuestion);
         }
-
-
-        // 鎸夌収permanateid 鏇存柊璇█
+        
         List<TQuestion> questionOldlist = tQuestionMapper.selectTQuestionByPermanentId(tQuestion.getPermanentId());
         if (ExamUtil.isListNotEmpty(questionOldlist)) {
-            // 鍚堝苟绗簩涓緭鍏ユ閫夐」鐨勫唴瀹�
+            
             for (TQuestion tQuestionUpdate : questionOldlist) {
-                // 鍏煎鏃х増鏈紝 鏃х増鏈病鏈塼emplateid锛屾柊鐗堟湰鏈�
+                
                 if (StringUtils.isNotEmpty(tQuestion.getTemplate()) && StringUtils.isEmpty(tQuestionUpdate.getTemplate())) {
                     tQuestionUpdate.setTemplate(tQuestion.getTemplate());
                 }
                 updateQuestionLangContent(tQuestion, tQuestionUpdate);
             }
-
             return 1;
         }
-
         TQuestion questionOld = null;
-
-        //淇敼鎺夋棫鐨勪骇鍝佸寘
+        
         if (!Objects.isNull(tQuestion.getId())) {
-            // 鍦ㄩ鐩垪琛ㄤ慨鏀圭殑鏃跺�欎細杩涘叆姝ら�昏緫锛屽叾浠栭�昏緫鏄壒閲忓鍏�
+            
             questionOld = tQuestionMapper.selectTQuestionById(tQuestion.getId());
             questionOld.setDeleted(2L);
             questionOld.setUpdateTime(DateUtils.getNowDate());
             tQuestionMapper.updateTQuestion(questionOld);
         }
-
-        // 鏇存敼棰樼洰鐨勫唴瀹规暟鎹�
+        
         setInsertQuestion(tQuestion);
-
-        //鎻掑叆鏂扮殑t_question
+        
         return tQuestionMapper.insertTQuestion(tQuestion);
     }
-
     private void setInsertQuestion(TQuestion tQuestion) {
-        //鏂扮殑question鐢ㄦ彃鍏ユ柊璁板綍鐨勬柟寮�
+        
         tQuestion.setUpdateTime(DateUtils.getNowDate());
-
-        //鎷艰t_text_content锛宼Question鍙傛暟鐨勫睘鎬т篃鏄細鍦ㄦ鏂规硶鍐呴儴淇敼
+        
         TTextContent textContent = getQuestionTextContent(tQuestion);
         textContent.setId(null);
-
-        //鍏ュ簱t_text_content
+        
         tTextContentMapper.insertTTextContent(textContent);
-
-        //鎶妕_text_content鐨刬d璧嬪�肩粰t_question鐨刬nfo_text_content_id
+        
         tQuestion.setInfoTextContentId(textContent.getId());
-
         tQuestion.setDeleted(1L);
-
-        // 璁板綍浠庨偅涓鐩慨鏀硅繃鏉ョ殑id
+        
         tQuestion.setLastId(tQuestion.getId());
     }
-
-    // 澶氳瑷�鏇存柊棰樼洰鐨勫唴瀹癸紝淇敼鍗曚釜鐨勬椂鍊欎娇鐢�
+    
     private int updateQuestionContent(TQuestion tQuestion, TQuestion questionOld) {
         if (Objects.isNull(tQuestion.getId()) || tQuestion.getId() == 0) {
             tQuestion.setId(questionOld.getId());
         }
-        // 棰樼洰鐨勪粠content
+        
         QuestionObject questionObject = JSONObject.parseObject(questionOld.getContent(), QuestionObject.class);
-
-        //鏂扮殑question鐢ㄦ彃鍏ユ柊璁板綍鐨勬柟寮�
+        
         tQuestion.setUpdateTime(DateUtils.getNowDate());
-
-        // 鏈�澶嶆潅锛屽悎骞跺悇璇█鐗堟湰
-        // 棰樼洰鍚堝苟
+        
+        
         Map<String, String> titleMap = JsonUtil.toJsonObject(questionObject.getTitleContent(), HashMap.class);
         titleMap.put(tQuestion.getLangType(), tQuestion.getTitle());
         questionObject.setTitleContent(JsonUtil.toJsonStr(titleMap));
-
-        // 閫夐」鐨勫唴瀹瑰悎骞�
+        
         List<String> selectInput = tQuestion.getSelectInput();
         int selectInputNum = 0;
         List<QuestionEditItem> questionItemObjects = questionObject.getQuestionItemObjects();
@@ -404,70 +312,57 @@
             contentMap.put(tQuestion.getLangType(), selectInput.get(selectInputNum++));
             questionItemObject.setContent(JsonUtil.toJsonStr(contentMap));
         }
-
         TTextContent questionTextContent = tTextContentMapper.selectTTextContentById(questionOld.getInfoTextContentId());
         questionTextContent.setUpdateTime(DateUtils.getNowDate());
         questionTextContent.setContent(JsonUtil.toJsonStr(questionObject));
-
-        //鍏ュ簱t_text_content
+        
         return tTextContentMapper.updateTTextContent(questionTextContent);
     }
-
-    // 瀵煎叆鐨勬椂鍊欎娇鐢�
+    
     private int updateQuestionLangContent(TQuestion tQuestion, TQuestion questionOld) {
         if (Objects.isNull(tQuestion.getId()) || tQuestion.getId() == 0) {
             tQuestion.setId(questionOld.getId());
         }
-        // 棰樼洰鐨勪粠content
+        
         QuestionObject questionObject = JSONObject.parseObject(questionOld.getContent(), QuestionObject.class);
-
-        //鏂扮殑question鐢ㄦ彃鍏ユ柊璁板綍鐨勬柟寮�
+        
         tQuestion.setUpdateTime(DateUtils.getNowDate());
-
-        // 鏈�澶嶆潅锛屽悎骞跺悇璇█鐗堟湰
-        // 棰樼洰鍚堝苟锛屽鏋滄槸鎵归噺瀵煎叆鐨勮瘽娌℃湁uuid
+        
+        
         String langType = tQuestion.getLangType();
         if (Objects.isNull(tQuestion.getUuid())) {
             langType = "ALL";
         }
         questionObject.setTitleContent(ExamUtil.getStringMapJson(langType, tQuestion.getTitle(), questionObject.getTitleContent()));
-
-        // 閫夐」鐨勫唴瀹瑰悎骞�
+        
         updateQuestionEditItem(tQuestion, questionObject);
-
         TTextContent questionTextContent = tTextContentMapper.selectTTextContentById(questionOld.getInfoTextContentId());
         questionTextContent.setUpdateTime(DateUtils.getNowDate());
         questionTextContent.setContent(JsonUtil.toJsonStr(questionObject));
-
-        // 鏇存柊涓�涓嬩骇鍝佸寘鐨勫唴瀹�
-
-        //鍏ュ簱t_text_content
+        
+        
         tQuestionMapper.updateTQuestion(questionOld);
         return tTextContentMapper.updateTTextContent(questionTextContent);
     }
-
     private void updateQuestionEditItem(TQuestion tQuestion, QuestionObject questionObject) {
-        // 濡傛灉鏈夊ぇ棰橈紝灏变笉闇�瑕�
+        
         if (ExamUtil.isListEmpty(tQuestion.getChoiceInput())) {
             return;
         }
         List<String> selectInput = tQuestion.getSelectInput();
         int selectInputNum = 0;
         List<QuestionEditItem> questionItemObjects = questionObject.getQuestionItemObjects();
-
-        // 棰樼洰鍚堝苟锛屽鏋滄槸鎵归噺瀵煎叆鐨勮瘽娌℃湁uuid
+        
         String langType = tQuestion.getLangType();
         if (Objects.isNull(tQuestion.getUuid())) {
             langType = "ALL";
         }
-
         for (QuestionEditItem questionItemObject : questionItemObjects) {
             if (selectInputNum < selectInput.size()) {
                 questionItemObject.setContent(ExamUtil.getStringMapJson(langType, selectInput.get(selectInputNum++), questionItemObject.getContent()));
             }
         }
-
-        // 娣诲姞鏂扮殑閫夐」
+        
         if (selectInput.size() > questionItemObjects.size()) {
             QuestionEditItem questionItemObject = new QuestionEditItem();
             String prefix = tQuestion.getChoiceInput().get(tQuestion.getChoiceInput().size() - 1);
@@ -476,31 +371,25 @@
             questionItemObject.setScore(0);
             questionItemObjects.add(questionItemObject);
         }
-
-        // 鍒犻櫎閫夐」鐨勯�夐」
+        
         if (selectInput.size() < questionItemObjects.size()) {
             for (int i = questionItemObjects.size() - 1; i > selectInput.size() - 1; i--) {
                 questionItemObjects.remove(i);
             }
         }
     }
-
-
-    // 澶氳瑷�鏇存柊棰樼洰鐨勫唴瀹�
+    
     public int deleteQuestionContent(TQuestion tQuestion) {
         TQuestion questionOld = tQuestionMapper.selectTQuestionById(tQuestion.getId());
-        // 鍘熸潵棰樼洰鐨刢ontent
+        
         QuestionObject questionObject = JSONObject.parseObject(questionOld.getContent(), QuestionObject.class);
-
-        // 鏂扮殑question鐢ㄦ彃鍏ユ柊璁板綍鐨勬柟寮�
+        
         tQuestion.setUpdateTime(DateUtils.getNowDate());
-
-        // 鍒犻櫎鏌愪竴绉嶈瑷�
+        
         Map<String, String> titleMap = JsonUtil.toJsonObject(questionObject.getTitleContent(), HashMap.class);
         titleMap.remove(tQuestion.getLangType());
         questionObject.setTitleContent(JsonUtil.toJsonStr(titleMap));
-
-        // 閫夐」鐨勫唴瀹瑰悎骞�
+        
         List<QuestionEditItem> questionItemObjects = questionObject.getQuestionItemObjects();
         if (ExamUtil.isListNotEmpty(questionItemObjects)) {
             for (QuestionEditItem questionItemObject : questionItemObjects) {
@@ -509,45 +398,29 @@
                 questionItemObject.setContent(JsonUtil.toJsonStr(contentMap));
             }
         }
-
         TTextContent questionTextContent = tTextContentMapper.selectTTextContentById(questionOld.getInfoTextContentId());
         questionTextContent.setUpdateTime(DateUtils.getNowDate());
         questionTextContent.setContent(JsonUtil.toJsonStr(questionObject));
-
-        //鍏ュ簱t_text_content
+        
         return tTextContentMapper.updateTTextContent(questionTextContent);
     }
-
-    /**
-     * 鍒犻櫎棰樼洰鍒楄〃瀵硅薄
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     @Override
     public int deleteTQuestionByIds(String ids) {
         return tQuestionMapper.updateQuetionByDelete(Convert.toStrArray(ids));
     }
-
-    /**
-     * 鍒犻櫎棰樼洰鍒楄〃淇℃伅
-     *
-     * @param id 棰樼洰鍒楄〃ID
-     * @return 缁撴灉
-     */
+    
     public int deleteTQuestionById(Long id) {
         return tQuestionMapper.deleteTQuestionById(id);
     }
-
     @Override
     public QuestionEditRequestVM getQuestionEditRequestVM(TQuestion question) {
-        //棰樼洰鏄犲皠
+        
         TTextContent questionInfoTextContent = textContentService.selectTTextContentById(question.getInfoTextContentId().longValue());
         QuestionObject questionObject = JsonUtil.toJsonObject(questionInfoTextContent.getContent(), QuestionObject.class);
         QuestionEditRequestVM questionEditRequestVM = modelMapper.map(question, QuestionEditRequestVM.class);
         questionEditRequestVM.setTitle(questionObject.getTitleContent());
-
-        //绛旀
+        
         QuestionTypeEnum questionTypeEnum = QuestionTypeEnum.fromCode(question.getQuestionType().intValue());
         switch (questionTypeEnum) {
             case SingleChoice:
@@ -569,9 +442,7 @@
         }
         questionEditRequestVM.setScore(ExamUtil.scoreToVM(0));
         questionEditRequestVM.setAnalyze(questionObject.getAnalyze());
-
-
-        //棰樼洰椤规槧灏� 濡傛灉閫夐」涓虹┖锛岄偅涔堝氨缁欎竴涓粯璁ゅ�硷紝鍚﹀垯鏅哄姏棰樹細鎶ラ敊
+        
         if (Objects.nonNull(questionObject.getQuestionItemObjects())) {
             List<QuestionEditItemVM> editItems = questionObject.getQuestionItemObjects().stream().map(o -> {
                 QuestionEditItemVM questionEditItemVM = modelMapper.map(o, QuestionEditItemVM.class);
@@ -592,50 +463,42 @@
         }
         return questionEditRequestVM;
     }
-
     @Override
     public String insertImportQuestion(List<Map<Integer, String>> excelList) {
-        // 1銆丣AQ棰樼洰姘镐箙缂栧彿	缁村害	棰樼洰鎬诲垎	棰樼洰	璇█绫诲瀷	姝g‘绛旀
-
-        // 2銆佸垱寤篵ean
+        
+        
         TQuestion tQuestion = new TQuestion();
-
-
-        // 3銆佸彇鍑洪�夐」
+        
         Map<Integer, String> headerMap = excelList.get(0);
         List<String> prefixList = new ArrayList<>();
         for (int i = 6; i < headerMap.size(); i++) {
             prefixList.add(headerMap.get(i));
         }
-
-        // 4銆佸鍏ョ殑娑堟伅
+        
         StringBuilder successMsg = new StringBuilder();
         StringBuilder failureMsg = new StringBuilder();
-
-        // 5銆侀亶鍘嗗嚭杈撳叆鐨勯鐩叆搴�
+        
         for (int i = 1; i < excelList.size(); i++) {
-
             Map<Integer, String> excelDataMap = excelList.get(i);
             try {
-                // JAQ棰樼洰姘镐箙缂栧彿
+                
                 tQuestion.setPermanentId(excelDataMap.get(0));
-                //缁村害闇�瑕佽浆鎹�,浠e紑鍙�
+                
                 tQuestion.setSubjectId(Long.valueOf(excelDataMap.get(1)));
-                // 棰樼洰鎬诲垎
+                
                 tQuestion.setScore(Long.valueOf(excelDataMap.get(2)));
-                // 棰樼洰
+                
                 tQuestion.setTitle(excelDataMap.get(3));
-                // 璇█绫诲瀷
+                
                 tQuestion.setLangType(excelDataMap.get(4));
-                // 姝g‘绛旀
+                
                 tQuestion.setCorrect(excelDataMap.get(5));
-                // 閫夐」
+                
                 int prefixNum = 0;
                 tQuestion.setChoiceInput(new ArrayList<>());
-                List<String> choiceInput = tQuestion.getChoiceInput(); // A,B,C,D
+                List<String> choiceInput = tQuestion.getChoiceInput(); 
                 tQuestion.setSelectInput(new ArrayList<>());
-
-                List<String> selectInput = tQuestion.getSelectInput(); // A,B,C,D鐨勫唴瀹�
+                List<String> selectInput = tQuestion.getSelectInput(); 
                 for (int j = 6; j < excelDataMap.size(); j++) {
                     choiceInput.add(prefixList.get(prefixNum++));
                     selectInput.add(excelDataMap.get(j));
@@ -649,7 +512,6 @@
         StringBuilder meg = failureMsg.append(successMsg);
         return meg.toString();
     }
-
     public void setQuestionInfoFromVM(TextContent infoTextContent, QuestionEditRequestVM model) {
         List<QuestionEditItem> itemObjects = model.getItems().stream().map(i ->
                 {
@@ -665,14 +527,11 @@
         questionObject.setCorrect(model.getCorrect());
         infoTextContent.setContent(JsonUtil.toJsonStr(questionObject));
     }
-
-    // 濡傛灉鏈鐩凡缁忔湁浜嗚绉嶈瑷�锛屽氨涓嶈灞曠ず锛宔dit-*.html浣跨敤
+    
     public List<DictData> getType(Long id) {
-
-        // 鏌ヨ瀛楀吀鍏�
+        
         List<DictData> dictDataList = dictDataService.selectDictDataByType("lang_type");
-
-        // 鏌ョ湅宸茬粡瀛樺湪鐨勯鐩�
+        
         if (Objects.nonNull(id)) {
             TQuestion question = selectTQuestionById(id);
             String content = question.getContent();
@@ -689,9 +548,7 @@
             return dictDataList;
         }
     }
-
     public List<TQuestion> selectTQuestionByPermanentId(String permanentId) {
         return tQuestionMapper.selectTQuestionByPermanentId(permanentId);
     }
-
 }
diff --git a/src/main/java/com/ots/project/exam/service/impl/TReportTemplateServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/TReportTemplateServiceImpl.java
index 5ec5010..2b71524 100644
--- a/src/main/java/com/ots/project/exam/service/impl/TReportTemplateServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/TReportTemplateServiceImpl.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.service.impl;
-
 import com.ots.common.enums.UserTypeEnum;
 import com.ots.common.utils.DateUtils;
 import com.ots.common.utils.StringUtils;
@@ -19,42 +18,25 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
-
 import java.io.IOException;
 import java.util.*;
 import java.util.stream.Collectors;
 
-/**
- * 鎶ュ憡妯℃澘閰嶇疆Service涓氬姟灞傚鐞�
- *
- * @author ots
- * @date 2020-03-24
- */
 @Service
 public class TReportTemplateServiceImpl implements ITReportTemplateService {
     @Autowired
     private TReportTemplateMapper tReportTemplateMapper;
-
     @Autowired
     private ISysUserExtendService sysUserExtendService;
-
     @Autowired
     private ISysUserPaperService userPaperService;
-
     @Autowired
     private ITExamPaperService paperService;
-
-    /**
-     * 鏌ヨ鎶ュ憡妯℃澘閰嶇疆
-     *
-     * @param id 鎶ュ憡妯℃澘閰嶇疆ID
-     * @return 鎶ュ憡妯℃澘閰嶇疆
-     */
+    
     @Override
     public TReportTemplate selectTReportTemplateById(Long id) {
         return tReportTemplateMapper.selectTReportTemplateById(id);
     }
-
     @Override
     public String selectTReportTemplateFilePath(TReportTemplate tReportTemplate) {
         TReportTemplate tReportTemplateResult = tReportTemplateMapper.selectTReportTemplate(tReportTemplate);
@@ -63,26 +45,17 @@
         }
         return "";
     }
-
-    /**
-     * 鏌ヨ鎶ュ憡妯℃澘閰嶇疆鍒楄〃
-     *
-     * @param tReportTemplate 鎶ュ憡妯℃澘閰嶇疆
-     * @return 鎶ュ憡妯℃澘閰嶇疆
-     */
+    
     @Override
     public List<TReportTemplate> selectTReportTemplateList(TReportTemplate tReportTemplate) {
         return tReportTemplateMapper.selectTReportTemplateList(tReportTemplate);
     }
-
     @Override
     public List<TReportTemplate> getReportTemplates(User user) {
         return getReportTemplates(user, null);
     }
-
     @Override
     public List<TReportTemplate> getReportTemplates(User user, Long prodId) {
-
         if (Objects.nonNull(prodId)) {
             TExamPaper tExamPaper = paperService.selectTExamPaperById(prodId);
             String reportTemplateId = tExamPaper.getReportTemplateId();
@@ -92,17 +65,14 @@
                 item.setReportType(value);
                 return item;
             }).collect(Collectors.toList());
-
-            //鍙栫敤鎴锋巿鏉冨拰浜у搧鍖呴厤缃殑浜ら泦
+            
             if (!Objects.equals(UserTypeEnum.SYS_USER.getUserType(), user.getUserType())) {
                 SysUserExtend sysUserExtend = sysUserExtendService.selectSysUserExtendById(user.getUserId());
-                //鏌ヨ浜у搧鍖呮巿鏉冨垎閰嶇殑鎶ュ憡妯℃澘
+                
                 SysUserPaper sysUserPaper = new SysUserPaper();
                 sysUserPaper.setUserId(user.getUserId());
                 sysUserPaper.setProdId(prodId);
-
                 List<SysUserPaper> sysUserPapers = userPaperService.selectSysUserPaperList(sysUserPaper);
-
                 List<TReportTemplate> templates = new ArrayList<>();
                 for (SysUserPaper paper : sysUserPapers) {
                     String rid = paper.getReportTemplateId();
@@ -111,7 +81,6 @@
                     }
                     templates.addAll(selectTReportTemplates(rid));
                 }
-
                 List<Long> collect = ret.stream().map(pp -> pp.getId()).collect(Collectors.toList());
                 List<TReportTemplate> resultTemplateList = new ArrayList<>();
                 for (TReportTemplate template : templates) {
@@ -125,7 +94,7 @@
                                 ArrayList::new
                         )
                 );
-                //鏍规嵁浼佷笟鐢ㄦ埛閰嶇疆鐨勬敮鎸佽瑷�绫诲瀷杩囨护
+                
                 if (Objects.nonNull(sysUserExtend) && Objects.nonNull(sysUserExtend.getLangType())) {
                     List<String> langTypes = Arrays.asList(sysUserExtend.getLangType().split(","));
                     tReportTemplates = tReportTemplates.stream().filter(f -> langTypes.contains(f.getLangType())).collect(Collectors.toList());
@@ -139,7 +108,6 @@
             }
             return ret;
         }
-
         if (Objects.equals(UserTypeEnum.SYS_USER.getUserType(), user.getUserType())) {
             TReportTemplate template = new TReportTemplate();
             List<TReportTemplate> tReportTemplates = tReportTemplateMapper.selectTReportTemplateList(template);
@@ -150,14 +118,12 @@
             }).collect(Collectors.toList());
             return ret;
         }
-
-        //鏌ヨ浜у搧鍖呮巿鏉冨垎閰嶇殑鎶ュ憡妯℃澘
+        
         SysUserPaper sysUserPaper = new SysUserPaper();
         if (!Objects.equals(UserTypeEnum.SYS_USER.getUserType(), user.getUserType())) {
             sysUserPaper.setUserId(user.getUserId());
         }
         List<SysUserPaper> sysUserPapers = userPaperService.selectSysUserPaperList(sysUserPaper);
-
         List<TReportTemplate> templates = new ArrayList<>();
         for (SysUserPaper paper : sysUserPapers) {
             String reportTemplateId = paper.getReportTemplateId();
@@ -166,16 +132,15 @@
             }
             templates.addAll(selectTReportTemplates(reportTemplateId));
         }
+        
 
-        //瀵硅薄鍘婚噸
-//        List<TReportTemplate> tReportTemplates = templates.stream().distinct().collect(Collectors.toList());
         List<TReportTemplate> tReportTemplates = templates.stream().collect(Collectors.collectingAndThen
                 (Collectors.toCollection(() ->
                                 new TreeSet<>(Comparator.comparing(t -> t.getLocation()))),
                         ArrayList::new
                 )
         );
-        //鏍规嵁浼佷笟鐢ㄦ埛閰嶇疆鐨勬敮鎸佽瑷�绫诲瀷杩囨护
+        
         if (Objects.equals(UserTypeEnum.ENT_USER.getUserType(), user.getUserType())) {
             SysUserExtend sysUserExtend = sysUserExtendService.selectSysUserExtendById(user.getUserId());
             if (Objects.nonNull(sysUserExtend) && Objects.nonNull(sysUserExtend.getLangType())) {
@@ -188,10 +153,8 @@
             item.setReportType(value);
             return item;
         }).collect(Collectors.toList());
-
         return result;
     }
-
     @Override
     public List<TReportTemplate> selectTReportTemplates(String ids) {
         if (Objects.isNull(ids)) {
@@ -199,14 +162,7 @@
         }
         return tReportTemplateMapper.selectTReportTemplates(Convert.toStrArray(ids));
     }
-
-
-    /**
-     * 鏂板鎶ュ憡妯℃澘閰嶇疆
-     *
-     * @param tReportTemplate 鎶ュ憡妯℃澘閰嶇疆
-     * @return 缁撴灉
-     */
+    
     @Override
     public int insertTReportTemplate(TReportTemplate tReportTemplate) {
         tReportTemplate.setCreateTime(DateUtils.getNowDate());
@@ -221,13 +177,7 @@
         }
         return tReportTemplateMapper.insertTReportTemplate(tReportTemplate);
     }
-
-    /**
-     * 淇敼鎶ュ憡妯℃澘閰嶇疆
-     *
-     * @param tReportTemplate 鎶ュ憡妯℃澘閰嶇疆
-     * @return 缁撴灉
-     */
+    
     @Override
     public int updateTReportTemplate(TReportTemplate tReportTemplate) {
         tReportTemplate.setUpdateTime(DateUtils.getNowDate());
@@ -243,24 +193,12 @@
         }
         return tReportTemplateMapper.updateTReportTemplate(tReportTemplate);
     }
-
-    /**
-     * 鍒犻櫎鎶ュ憡妯℃澘閰嶇疆瀵硅薄
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     @Override
     public int deleteTReportTemplateByIds(String ids) {
         return tReportTemplateMapper.deleteTReportTemplateByIds(Convert.toStrArray(ids));
     }
-
-    /**
-     * 鍒犻櫎鎶ュ憡妯℃澘閰嶇疆淇℃伅
-     *
-     * @param id 鎶ュ憡妯℃澘閰嶇疆ID
-     * @return 缁撴灉
-     */
+    
     public int deleteTReportTemplateById(Long id) {
         return tReportTemplateMapper.deleteTReportTemplateById(id);
     }
diff --git a/src/main/java/com/ots/project/exam/service/impl/TSubjectServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/TSubjectServiceImpl.java
index 26f0d63..fba9195 100644
--- a/src/main/java/com/ots/project/exam/service/impl/TSubjectServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/TSubjectServiceImpl.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.service.impl;
-
 import com.ots.common.utils.DateUtils;
 import com.ots.common.utils.text.Convert;
 import com.ots.project.exam.domain.TExamLevel;
@@ -9,61 +8,33 @@
 import com.ots.project.exam.service.ITSubjectService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
 import java.util.List;
 
-/**
- * 缁村害琛⊿ervice涓氬姟灞傚鐞�
- *
- * @author ots
- * @date 2019-12-09
- */
 @Service("subject")
 public class TSubjectServiceImpl implements ITSubjectService {
     @Autowired
     private TSubjectMapper tSubjectMapper;
-
     @Autowired
     private TExamLevelMapper tExamLevelMapper;
-
-    /**
-     * 鏌ヨ缁村害琛�
-     *
-     * @param id 缁村害琛↖D
-     * @return 缁村害琛�
-     */
+    
     @Override
     public TSubject selectTSubjectById(Long id) {
         return tSubjectMapper.selectTSubjectById(id);
     }
-
     @Override
     public TSubject selectTSubjectAndTLeveById(Long id) {
         return tSubjectMapper.selectTSubjectAndTLeveById(id);
     }
-
-    /**
-     * 鏌ヨ缁村害琛ㄥ垪琛�
-     *
-     * @param tSubject 缁村害琛�
-     * @return 缁村害琛�
-     */
+    
     @Override
     public List<TSubject> selectTSubjectList(TSubject tSubject) {
         return tSubjectMapper.selectTSubjectList(tSubject);
     }
-
     @Override
     public List<TSubject> selectTSubjectList() {
         return tSubjectMapper.selectTSubjectList();
     }
-
-    /**
-     * 鏂板缁村害琛�
-     *
-     * @param tSubject 缁村害琛�
-     * @return 缁撴灉
-     */
+    
     @Override
     public int insertTSubject(TSubject tSubject) {
         tSubject.setCreateTime(DateUtils.getNowDate());
@@ -71,13 +42,7 @@
         tSubject.setLevelName(tExamLevel.getLevelName());
         return tSubjectMapper.insertTSubject(tSubject);
     }
-
-    /**
-     * 淇敼缁村害琛�
-     *
-     * @param tSubject 缁村害琛�
-     * @return 缁撴灉
-     */
+    
     @Override
     public int updateTSubject(TSubject tSubject) {
         tSubject.setUpdateTime(DateUtils.getNowDate());
@@ -85,28 +50,15 @@
         tSubject.setLevelName(tExamLevel.getLevelName());
         return tSubjectMapper.updateTSubject(tSubject);
     }
-
-    /**
-     * 鍒犻櫎缁村害琛ㄥ璞�
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     @Override
     public int deleteTSubjectByIds(String ids) {
         return tSubjectMapper.deleteTSubjectByIds(Convert.toStrArray(ids));
     }
-
-    /**
-     * 鍒犻櫎缁村害琛ㄤ俊鎭�
-     *
-     * @param id 缁村害琛↖D
-     * @return 缁撴灉
-     */
+    
     public int deleteTSubjectById(Long id) {
         return tSubjectMapper.deleteTSubjectById(id);
     }
-
     @Override
     public List<TSubject> selectTSubjectAndTLeveByTemplateId(String questionTemplateId) {
         return tSubjectMapper.selectTSubjectAndTLeveByTemplateId(questionTemplateId);
diff --git a/src/main/java/com/ots/project/exam/service/impl/TTextContentServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/TTextContentServiceImpl.java
index 131d4f8..778cf9c 100644
--- a/src/main/java/com/ots/project/exam/service/impl/TTextContentServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/TTextContentServiceImpl.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.service.impl;
-
 import com.ots.common.utils.DateUtils;
 import com.ots.common.utils.text.Convert;
 import com.ots.project.exam.domain.TTextContent;
@@ -9,101 +8,55 @@
 import com.ots.project.tool.exam.JsonUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
 import java.util.Date;
 import java.util.List;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
-/**
- * 棰樼洰鐨勫唴瀹筍ervice涓氬姟灞傚鐞�
- *
- * @author ots
- * @date 2019-11-24
- */
 @Service
 public class TTextContentServiceImpl implements ITTextContentService {
     @Autowired
     private TTextContentMapper tTextContentMapper;
-
-    /**
-     * 鏌ヨ棰樼洰鐨勫唴瀹�
-     *
-     * @param id 棰樼洰鐨勫唴瀹笽D
-     * @return 棰樼洰鐨勫唴瀹�
-     */
+    
     @Override
     public TTextContent selectTTextContentById(Long id) {
         return tTextContentMapper.selectTTextContentById(id);
     }
-
-    //鐢╥n鐨勬柟寮忔煡璇�
+    
     @Override
     public List<TTextContent> selectTTextContentByIds(String[] ids) {
         return tTextContentMapper.selectTTextContentByIds(ids);
     }
-
     @Override
     public List<TTextContentAndQuestion> selectTextContentAndQuestion(String[] ids) {
         return tTextContentMapper.selectTextContentAndQuestion(ids);
     }
-
-    /**
-     * 鏌ヨ棰樼洰鐨勫唴瀹瑰垪琛�
-     *
-     * @param tTextContent 棰樼洰鐨勫唴瀹�
-     * @return 棰樼洰鐨勫唴瀹�
-     */
+    
     @Override
     public List<TTextContent> selectTTextContentList(TTextContent tTextContent) {
         return tTextContentMapper.selectTTextContentList(tTextContent);
     }
-
-    /**
-     * 鏂板棰樼洰鐨勫唴瀹�
-     *
-     * @param tTextContent 棰樼洰鐨勫唴瀹�
-     * @return 缁撴灉
-     */
+    
     @Override
     public int insertTTextContent(TTextContent tTextContent) {
         tTextContent.setCreateTime(DateUtils.getNowDate());
         return tTextContentMapper.insertTTextContent(tTextContent);
     }
-
-    /**
-     * 淇敼棰樼洰鐨勫唴瀹�
-     *
-     * @param tTextContent 棰樼洰鐨勫唴瀹�
-     * @return 缁撴灉
-     */
+    
     @Override
     public int updateTTextContent(TTextContent tTextContent) {
         tTextContent.setUpdateTime(DateUtils.getNowDate());
         return tTextContentMapper.updateTTextContent(tTextContent);
     }
-
-    /**
-     * 鍒犻櫎棰樼洰鐨勫唴瀹瑰璞�
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
+    
     @Override
     public int deleteTTextContentByIds(String ids) {
         return tTextContentMapper.deleteTTextContentByIds(Convert.toStrArray(ids));
     }
-
-    /**
-     * 鍒犻櫎棰樼洰鐨勫唴瀹逛俊鎭�
-     *
-     * @param id 棰樼洰鐨勫唴瀹笽D
-     * @return 缁撴灉
-     */
+    
     public int deleteTTextContentById(Long id) {
         return tTextContentMapper.deleteTTextContentById(id);
     }
-
     @Override
     public <T, R> TTextContent jsonConvertInsert(List<T> list, Date now, Function<? super T, ? extends R> mapper) {
         String frameTextContent = null;
@@ -114,10 +67,9 @@
             frameTextContent = JsonUtil.toJsonStr(mapList);
         }
         TTextContent textContent = new TTextContent(frameTextContent, now);
-        //insertByFilter(textContent);  cache useless
+        
         return textContent;
     }
-
     @Override
     public <T, R> TTextContent jsonConvertUpdate(TTextContent textContent, List<T> list, Function<? super T, ? extends R> mapper) {
         String frameTextContent = null;
@@ -128,7 +80,7 @@
             frameTextContent = JsonUtil.toJsonStr(mapList);
         }
         textContent.setContent(frameTextContent);
-        //this.updateByIdFilter(textContent);  cache useless
+        
         return textContent;
     }
 }
diff --git a/src/main/java/com/ots/project/exam/service/impl/TaskExamCustomerAnswerImpl.java b/src/main/java/com/ots/project/exam/service/impl/TaskExamCustomerAnswerImpl.java
index bd010af..ddb28b7 100644
--- a/src/main/java/com/ots/project/exam/service/impl/TaskExamCustomerAnswerImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/TaskExamCustomerAnswerImpl.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.service.impl;
-
 import com.ots.project.exam.domain.*;
 import com.ots.project.exam.dto.TaskItemAnswerObject;
 import com.ots.project.exam.mapper.TaskExamCustomerAnswerMapper;
@@ -8,27 +7,21 @@
 import com.ots.project.tool.exam.JsonUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
-
 @Service
 public class TaskExamCustomerAnswerImpl extends BaseServiceImpl<TaskExamCustomerAnswer> implements TaskExamCustomerAnswerService {
-
     @Autowired
     private TaskExamCustomerAnswerMapper taskExamCustomerAnswerMapper;
-
     @Autowired
     private ITTextContentService textContentService;
-
     @Autowired
     public TaskExamCustomerAnswerImpl(TaskExamCustomerAnswerMapper taskExamCustomerAnswerMapper, ITTextContentService textContentService) {
         super(taskExamCustomerAnswerMapper);
         this.taskExamCustomerAnswerMapper = taskExamCustomerAnswerMapper;
         this.textContentService = textContentService;
     }
-
     @Override
     public void insertOrUpdate(ExamPaper examPaper, ExamPaperAnswer examPaperAnswer, Date now) {
         Integer taskId = examPaper.getTaskExamId();
@@ -52,7 +45,6 @@
             textContentService.updateTTextContent(textContent);
         }
     }
-
     @Override
     public void insertOrUpdate(TExamPaper examPaper, ExamPaperAnswer examPaperAnswer, Date now) {
         Integer taskId = examPaper.getTaskExamId().intValue();
@@ -76,12 +68,10 @@
             textContentService.updateTTextContent(textContent);
         }
     }
-
     @Override
     public TaskExamCustomerAnswer selectByTUid(Integer tid, Integer uid) {
         return taskExamCustomerAnswerMapper.getByTUid(tid, uid);
     }
-
     @Override
     public List<TaskExamCustomerAnswer> selectByTUid(List<Integer> taskIds, Integer uid) {
         return taskExamCustomerAnswerMapper.selectByTUid(taskIds, uid);
diff --git a/src/main/java/com/ots/project/exam/service/impl/UserEventLogServiceImpl.java b/src/main/java/com/ots/project/exam/service/impl/UserEventLogServiceImpl.java
index 59c3857..b1e2683 100644
--- a/src/main/java/com/ots/project/exam/service/impl/UserEventLogServiceImpl.java
+++ b/src/main/java/com/ots/project/exam/service/impl/UserEventLogServiceImpl.java
@@ -1,5 +1,4 @@
 package com.ots.project.exam.service.impl;
-
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.ots.project.exam.domain.UserEventLog;
@@ -10,36 +9,28 @@
 import com.ots.project.tool.exam.DateTimeUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
-
 @Service
 public class UserEventLogServiceImpl extends BaseServiceImpl<UserEventLog> implements UserEventLogService {
-
     @Autowired
     private UserEventLogMapper userEventLogMapper;
-
     @Autowired
     public UserEventLogServiceImpl(UserEventLogMapper userEventLogMapper) {
         super(userEventLogMapper);
         this.userEventLogMapper = userEventLogMapper;
     }
-
     @Override
     public List<UserEventLog> getUserEventLogByUserId(Integer id) {
         return userEventLogMapper.getUserEventLogByUserId(id);
     }
-
     @Override
     public PageInfo<UserEventLog> page(UserEventPageRequestVM requestVM) {
         return PageHelper.startPage(requestVM.getPageIndex(), requestVM.getPageSize(), "id desc").doSelectPageInfo(() ->
                 userEventLogMapper.page(requestVM)
         );
     }
-
-
     @Override
     public List<Integer> selectMothCount() {
         Date startTime = DateTimeUtil.getMonthStartDay();
@@ -51,5 +42,4 @@
             return null == keyValue ? 0 : keyValue.getValue();
         }).collect(Collectors.toList());
     }
-
 }
diff --git a/src/main/java/com/ots/project/exam/viewmodel/BaseVM.java b/src/main/java/com/ots/project/exam/viewmodel/BaseVM.java
index 26a2f5d..d05520b 100644
--- a/src/main/java/com/ots/project/exam/viewmodel/BaseVM.java
+++ b/src/main/java/com/ots/project/exam/viewmodel/BaseVM.java
@@ -1,16 +1,9 @@
 package com.ots.project.exam.viewmodel;
-
 import com.ots.project.tool.exam.ModelMapperSingle;
 import lombok.Data;
 import org.modelmapper.ModelMapper;
 
-/**
- * @author ots
- */
-
 @Data
 public class BaseVM {
     protected static ModelMapper modelMapper = ModelMapperSingle.Instance();
-
-
 }
diff --git a/src/main/java/com/ots/project/exam/viewmodel/ExamItemOrderAndContent.java b/src/main/java/com/ots/project/exam/viewmodel/ExamItemOrderAndContent.java
index a772075..d25dea3 100644
--- a/src/main/java/com/ots/project/exam/viewmodel/ExamItemOrderAndContent.java
+++ b/src/main/java/com/ots/project/exam/viewmodel/ExamItemOrderAndContent.java
@@ -1,8 +1,6 @@
 package com.ots.project.exam.viewmodel;
-
 import lombok.Getter;
 import lombok.Setter;
-
 @Getter
 @Setter
 public class ExamItemOrderAndContent {
diff --git a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperAnswerPageResponseVM.java b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperAnswerPageResponseVM.java
index ad4ab1b..a5ce170 100644
--- a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperAnswerPageResponseVM.java
+++ b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperAnswerPageResponseVM.java
@@ -1,32 +1,18 @@
 package com.ots.project.exam.viewmodel;
-
 import lombok.Data;
-
 @Data
 public class ExamPaperAnswerPageResponseVM {
     private Integer id;
-
     private String createTime;
-
     private String userScore;
-
     private String subjectName;
-
     private Integer subjectId;
-
     private Integer questionCount;
-
     private Integer questionCorrect;
-
     private String paperScore;
-
     private String doTime;
-
     private Integer paperType;
-
     private String systemScore;
-
     private Integer status;
-
     private String paperName;
 }
diff --git a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperAnswerPageVM.java b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperAnswerPageVM.java
index 483cbfd..583edb8 100644
--- a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperAnswerPageVM.java
+++ b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperAnswerPageVM.java
@@ -1,13 +1,8 @@
 package com.ots.project.exam.viewmodel;
-
 import com.ots.project.exam.dto.BasePage;
 import lombok.Data;
-
 @Data
 public class ExamPaperAnswerPageVM extends BasePage {
-
     private Integer subjectId;
-
     private Integer createUser;
-
 }
diff --git a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperEditRequestVM.java b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperEditRequestVM.java
index ff4be65..4a4a1f3 100644
--- a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperEditRequestVM.java
+++ b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperEditRequestVM.java
@@ -1,15 +1,12 @@
 package com.ots.project.exam.viewmodel;
-
 import com.ots.project.exam.dto.QuestionPart;
 import lombok.Getter;
 import lombok.Setter;
-
 import javax.validation.Valid;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Size;
 import java.util.List;
-
 @Getter
 @Setter
 public class ExamPaperEditRequestVM {
@@ -24,31 +21,20 @@
     private String name;
     @NotNull
     private Integer suggestTime;
-
     private List<String> limitDateTime;
-
     @Size(min = 1, message = "璇锋坊鍔犺瘯鍗锋爣棰�")
     @Valid
     private List<ExamPaperTitleItemVM> titleItems;
-
     private String score;
-
     private String guide;
-
-    // 棰樼洰鐨勯『搴�
+    
     private List<Integer> questionOrder;
-
     private List<QuestionPart> parts;
-
     private String questionTemplateId;
-
-    // 鎶ュ憡id
+    
     private String reportTemplateId;
-
     private String memberName;
-
-    // 閫夐」鐨勯『搴�
+    
     private List<List<String>> optionOrder;
-
     private Integer timeOut;
 }
diff --git a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperPageRequestVM.java b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperPageRequestVM.java
index c4ae475..02ae96a 100644
--- a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperPageRequestVM.java
+++ b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperPageRequestVM.java
@@ -1,11 +1,8 @@
 package com.ots.project.exam.viewmodel;
-
 import com.ots.project.exam.dto.BaseExamPage;
 import lombok.Data;
-
 @Data
 public class ExamPaperPageRequestVM extends BaseExamPage {
-
     private Integer id;
     private Integer subjectId;
     private Integer level;
diff --git a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperPageResponseVM.java b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperPageResponseVM.java
index 0c09633..68b2a46 100644
--- a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperPageResponseVM.java
+++ b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperPageResponseVM.java
@@ -1,26 +1,15 @@
 package com.ots.project.exam.viewmodel;
-
 import lombok.Data;
-
 @Data
 public class ExamPaperPageResponseVM {
     private Integer id;
-
     private String name;
-
     private Integer questionCount;
-
     private Integer score;
-
     private String createTime;
-
     private Integer createUser;
-
     private Integer subjectId;
-
     private String subjectName;
-
     private Integer paperType;
-
     private Integer frameTextContentId;
 }
diff --git a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperPageVM.java b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperPageVM.java
index 09dd5f5..1ec63cb 100644
--- a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperPageVM.java
+++ b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperPageVM.java
@@ -1,10 +1,7 @@
 package com.ots.project.exam.viewmodel;
-
 import com.ots.project.exam.dto.BaseExamPage;
 import lombok.Data;
-
 import javax.validation.constraints.NotNull;
-
 @Data
 public class ExamPaperPageVM extends BaseExamPage {
     @NotNull
diff --git a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperReadVM.java b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperReadVM.java
index 7f5f318..c2add67 100644
--- a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperReadVM.java
+++ b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperReadVM.java
@@ -1,7 +1,5 @@
 package com.ots.project.exam.viewmodel;
-
 import lombok.Data;
-
 @Data
 public class ExamPaperReadVM {
     private ExamPaperEditRequestVM paper;
diff --git a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperSubmitItemVM.java b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperSubmitItemVM.java
index 9043d54..e9306d2 100644
--- a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperSubmitItemVM.java
+++ b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperSubmitItemVM.java
@@ -1,37 +1,24 @@
 package com.ots.project.exam.viewmodel;
-
 import com.ots.project.exam.dto.QuestionReport;
 import lombok.Getter;
 import lombok.Setter;
-
 import javax.validation.constraints.NotNull;
 import java.util.List;
-
 @Getter
 @Setter
 public class ExamPaperSubmitItemVM {
     private Integer id;
     @NotNull
     private Integer questionId;
-
     private Boolean doRight;
-
     private String content;
-
     private String lastContent;
-
     private Integer itemOrder;
-
     private List<String> contentArray;
-
     private String score;
-
     private String questionScore;
-
     private String startTime;
-
     private String endTime;
-
-    // 棰樼洰鎶ュ憡 浜烘牸鏂囧叿鐨勯鐩姤鍛�
+    
     private QuestionReport questionReport;
 }
diff --git a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperSubmitVM.java b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperSubmitVM.java
index 5364040..b1beced 100644
--- a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperSubmitVM.java
+++ b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperSubmitVM.java
@@ -1,61 +1,37 @@
 package com.ots.project.exam.viewmodel;
-
 import com.ots.project.exam.domain.TExamReport;
 import com.ots.project.exam.dto.InterfaceContent;
 import lombok.Getter;
 import lombok.Setter;
-
 import java.util.List;
-
-
 @Setter
 @Getter
 public class ExamPaperSubmitVM {
-
     private Integer id;
-
     private Integer questionId;
-
     private Integer doTime;
-
     private Integer verifyStatus;
-
     private Integer finish;
-
-    // 澶ч鍔犲皬棰�
+    
     private List<ExamPaperTitleItemVM> titleItems;
-
-    // 灏忛鐨勯�夐」鍐呭
+    
     private List<ExamPaperSubmitItemVM> answerItems;
-
     private List<Integer> questionOrder;
-
     private List<List<String>> optionOrder;
-
-    // 姝e湪绛旂殑娈�
+    
     private Integer partOrder;
-
-    // 姝e湪绛旈鐨勫簭鍙�
+    
     private String itemOrder;
-
-    // 绛旈鎻愪氦鐨勮瑷�
+    
     private String langType;
-
-    // 鏄惁璋冪敤娉板浗鍥㈤槦
+    
     private String isCallTain;
-
-    // 瀛樿皟鐢ㄦ嘲鍥藉洟闃熸帴鍙g殑鍐呭
+    
     private List<InterfaceContent> interfaceContentList;
-
-    // 宸茬粡瀛樺湪鐨勬姤琛ㄨ褰�
+    
     List<TExamReport> tExamReportList;
-
     private Integer remainTime;
-
     private boolean submitClick = false;
-
-    // 鏄惁鏄噸鏂扮敓鎴愭姤鍛婄殑
+    
     private boolean isRecallThaiInterface = false;
-
-
 }
diff --git a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperTitleItemVM.java b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperTitleItemVM.java
index 83d0bbe..1369f8d 100644
--- a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperTitleItemVM.java
+++ b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperTitleItemVM.java
@@ -1,38 +1,24 @@
 package com.ots.project.exam.viewmodel;
-
 import com.ots.project.exam.dto.QuestionPart;
 import com.ots.project.exam.dto.QuestionReport;
 import lombok.Getter;
 import lombok.Setter;
-
 import java.util.List;
 
-/**
- * 涓�澶ч锛屼竴娈�
- */
 @Getter
 @Setter
 public class ExamPaperTitleItemVM {
-
     private String guide;
-
     private String name;
-
     private String description;
-
-    // 棰樼洰姘镐箙缂栧彿
+    
     private String permanentId;
-
-    // 涓嬫爣鐢�
+    
     private Integer questionOrder;
-
-    // job宸ヤ綔闂嵎鐨勫紑濮嬫椂闂村拰缁撴潫鏃堕棿
+    
     private QuestionReport questionReport;
-
     private List<QuestionEditRequestVM> questionItems;
-
     private String startTime;
     private String endTime;
-
     private List<QuestionPart> parts;
 }
diff --git a/src/main/java/com/ots/project/exam/viewmodel/ExamResultRequestVM.java b/src/main/java/com/ots/project/exam/viewmodel/ExamResultRequestVM.java
index 9f28eee..c953f19 100644
--- a/src/main/java/com/ots/project/exam/viewmodel/ExamResultRequestVM.java
+++ b/src/main/java/com/ots/project/exam/viewmodel/ExamResultRequestVM.java
@@ -1,11 +1,8 @@
 package com.ots.project.exam.viewmodel;
-
 import com.ots.project.exam.dto.SignalObject;
 import lombok.Getter;
 import lombok.Setter;
-
 import java.util.List;
-
 @Getter
 @Setter
 public class ExamResultRequestVM {
@@ -13,7 +10,7 @@
     private Integer finish;
     private String doUrl;
     private List<ExamItemOrderAndContent> examItemOrderAndContentList;
-    // 鐫块偦鐨勬煡璇█鐨勬椂鍊欓渶瑕佺敤鍒�
+    
     private String reportTemplateId;
     private SignalObject signalObject;
     private String status;
diff --git a/src/main/java/com/ots/project/exam/viewmodel/IndexVM.java b/src/main/java/com/ots/project/exam/viewmodel/IndexVM.java
index 344c9c8..288ca30 100644
--- a/src/main/java/com/ots/project/exam/viewmodel/IndexVM.java
+++ b/src/main/java/com/ots/project/exam/viewmodel/IndexVM.java
@@ -1,10 +1,7 @@
 package com.ots.project.exam.viewmodel;
-
 import com.ots.project.exam.dto.PaperInfo;
 import lombok.Data;
-
 import java.util.List;
-
 @Data
 public class IndexVM {
     private List<PaperInfo> fixedPaper;
diff --git a/src/main/java/com/ots/project/exam/viewmodel/PaperInfoVM.java b/src/main/java/com/ots/project/exam/viewmodel/PaperInfoVM.java
index b8b7dbf..560a983 100644
--- a/src/main/java/com/ots/project/exam/viewmodel/PaperInfoVM.java
+++ b/src/main/java/com/ots/project/exam/viewmodel/PaperInfoVM.java
@@ -1,8 +1,6 @@
 package com.ots.project.exam.viewmodel;
-
 import com.ots.project.exam.dto.PaperInfo;
 import lombok.Data;
-
 @Data
 public class PaperInfoVM extends PaperInfo {
     private String startTime;
diff --git a/src/main/java/com/ots/project/exam/viewmodel/QuestionEditItemVM.java b/src/main/java/com/ots/project/exam/viewmodel/QuestionEditItemVM.java
index 30f2e7a..8e68c74 100644
--- a/src/main/java/com/ots/project/exam/viewmodel/QuestionEditItemVM.java
+++ b/src/main/java/com/ots/project/exam/viewmodel/QuestionEditItemVM.java
@@ -1,8 +1,6 @@
 package com.ots.project.exam.viewmodel;
-
 import lombok.Getter;
 import lombok.Setter;
-
 @Getter
 @Setter
 public class QuestionEditItemVM {
diff --git a/src/main/java/com/ots/project/exam/viewmodel/QuestionEditRequestVM.java b/src/main/java/com/ots/project/exam/viewmodel/QuestionEditRequestVM.java
index 5d86567..142a2a8 100644
--- a/src/main/java/com/ots/project/exam/viewmodel/QuestionEditRequestVM.java
+++ b/src/main/java/com/ots/project/exam/viewmodel/QuestionEditRequestVM.java
@@ -1,37 +1,25 @@
 package com.ots.project.exam.viewmodel;
-
 import com.ots.project.exam.dto.QuestionReport;
 import lombok.Getter;
 import lombok.Setter;
-
 import java.util.List;
-
 @Getter
 @Setter
 public class QuestionEditRequestVM {
-
     private Integer id;
     private Integer questionType;
     private Integer subjectId;
     private String title;
-
     private Integer gradeLevel;
-
     private List<QuestionEditItemVM> items;
     private String analyze;
-
     private List<String> correctArray;
-
     private String correct;
     private String score;
-
     private Integer difficult;
-
     private Integer itemOrder;
-
     private Integer questionOrder;
-
-    // 浜烘牸鍜屾櫤鍔涢棶鍗风殑寮�濮嬫椂闂村拰缁撴潫鏃堕棿
+    
     private String permanentId;
     private QuestionReport questionReport;
     private String startTime;
diff --git a/src/main/java/com/ots/project/exam/viewmodel/QuestionPageRequestVM.java b/src/main/java/com/ots/project/exam/viewmodel/QuestionPageRequestVM.java
index 505bc69..c929f09 100644
--- a/src/main/java/com/ots/project/exam/viewmodel/QuestionPageRequestVM.java
+++ b/src/main/java/com/ots/project/exam/viewmodel/QuestionPageRequestVM.java
@@ -1,11 +1,8 @@
 package com.ots.project.exam.viewmodel;
-
 import com.ots.project.exam.dto.BasePage;
 import lombok.Data;
-
 @Data
 public class QuestionPageRequestVM extends BasePage {
-
     private Integer id;
     private Integer level;
     private Integer subjectId;
diff --git a/src/main/java/com/ots/project/exam/viewmodel/QuestionPageStudentRequestVM.java b/src/main/java/com/ots/project/exam/viewmodel/QuestionPageStudentRequestVM.java
index b68d089..beb1849 100644
--- a/src/main/java/com/ots/project/exam/viewmodel/QuestionPageStudentRequestVM.java
+++ b/src/main/java/com/ots/project/exam/viewmodel/QuestionPageStudentRequestVM.java
@@ -1,8 +1,6 @@
 package com.ots.project.exam.viewmodel;
-
 import com.ots.project.exam.dto.BasePage;
 import lombok.Data;
-
 @Data
 public class QuestionPageStudentRequestVM extends BasePage {
     private Integer createUser;
diff --git a/src/main/java/com/ots/project/exam/viewmodel/SubjectPageRequestVM.java b/src/main/java/com/ots/project/exam/viewmodel/SubjectPageRequestVM.java
index 28fbb48..d4106d6 100644
--- a/src/main/java/com/ots/project/exam/viewmodel/SubjectPageRequestVM.java
+++ b/src/main/java/com/ots/project/exam/viewmodel/SubjectPageRequestVM.java
@@ -1,8 +1,6 @@
 package com.ots.project.exam.viewmodel;
-
 import com.ots.project.exam.dto.BasePage;
 import lombok.Data;
-
 @Data
 public class SubjectPageRequestVM extends BasePage {
     private Integer id;
diff --git a/src/main/java/com/ots/project/exam/viewmodel/TaskItemPaperVm.java b/src/main/java/com/ots/project/exam/viewmodel/TaskItemPaperVm.java
index b503473..077a5d6 100644
--- a/src/main/java/com/ots/project/exam/viewmodel/TaskItemPaperVm.java
+++ b/src/main/java/com/ots/project/exam/viewmodel/TaskItemPaperVm.java
@@ -1,7 +1,5 @@
 package com.ots.project.exam.viewmodel;
-
 import lombok.Data;
-
 @Data
 public class TaskItemPaperVm {
     private Integer examPaperId;
diff --git a/src/main/java/com/ots/project/exam/viewmodel/TaskItemVm.java b/src/main/java/com/ots/project/exam/viewmodel/TaskItemVm.java
index 8d25ba4..e6e3ec7 100644
--- a/src/main/java/com/ots/project/exam/viewmodel/TaskItemVm.java
+++ b/src/main/java/com/ots/project/exam/viewmodel/TaskItemVm.java
@@ -1,9 +1,6 @@
 package com.ots.project.exam.viewmodel;
-
 import lombok.Data;
-
 import java.util.List;
-
 @Data
 public class TaskItemVm {
     private Integer id;
diff --git a/src/main/java/com/ots/project/exam/viewmodel/UserEventPageRequestVM.java b/src/main/java/com/ots/project/exam/viewmodel/UserEventPageRequestVM.java
index 9be5234..3124044 100644
--- a/src/main/java/com/ots/project/exam/viewmodel/UserEventPageRequestVM.java
+++ b/src/main/java/com/ots/project/exam/viewmodel/UserEventPageRequestVM.java
@@ -1,17 +1,9 @@
 package com.ots.project.exam.viewmodel;
-
 import com.ots.project.exam.dto.BasePage;
 import lombok.Data;
 
-/**
- * @author alvis
- */
-
 @Data
 public class UserEventPageRequestVM extends BasePage {
-
     private Integer userId;
-
     private String userName;
-
 }
diff --git a/src/main/java/com/ots/project/exam/viewmodel/UserResponseVM.java b/src/main/java/com/ots/project/exam/viewmodel/UserResponseVM.java
index bf6d909..8d14f8d 100644
--- a/src/main/java/com/ots/project/exam/viewmodel/UserResponseVM.java
+++ b/src/main/java/com/ots/project/exam/viewmodel/UserResponseVM.java
@@ -1,46 +1,25 @@
 package com.ots.project.exam.viewmodel;
-
 import com.ots.project.exam.domain.ExamUser;
 import com.ots.project.tool.exam.DateTimeUtil;
 import lombok.Data;
 
-/**
- * @author ots
- */
-
 @Data
 public class UserResponseVM extends BaseVM {
-
     private Integer id;
-
     private String userUuid;
-
     private String userName;
-
     private String realName;
-
     private Integer age;
-
     private Integer role;
-
     private Integer sex;
-
     private String birthDay;
-
     private String phone;
-
     private String lastActiveTime;
-
     private String createTime;
-
     private String modifyTime;
-
     private Integer status;
-
     private Integer userLevel;
-
     private String imagePath;
-
     public static UserResponseVM from(ExamUser user) {
         UserResponseVM vm = modelMapper.map(user, UserResponseVM.class);
         vm.setBirthDay(DateTimeUtil.dateFormat(user.getBirthDay()));
diff --git a/src/main/java/com/ots/project/monitor/job/task/DeleteSensitiveInformationTesk.java b/src/main/java/com/ots/project/monitor/job/task/DeleteSensitiveInformationTesk.java
index e857e7f..95c138c 100644
--- a/src/main/java/com/ots/project/monitor/job/task/DeleteSensitiveInformationTesk.java
+++ b/src/main/java/com/ots/project/monitor/job/task/DeleteSensitiveInformationTesk.java
@@ -1,5 +1,4 @@
 package com.ots.project.monitor.job.task;
-
 import com.ots.common.utils.bean.BeanUtils;
 import com.ots.project.exam.domain.EntTestMember;
 import com.ots.project.exam.domain.EntTestMemberBackstage;
@@ -8,33 +7,25 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
-
 import java.util.*;
 
-/**
- * 绯荤粺鑷姩鍒犻櫎12涓湀浠ヤ笂鐨勬祴璇曚汉鍛樺悕绉般�侀偖绠便�佹墍鍦ㄤ紒涓氬悕绉�
- * 姣忓ぉ鎵ц涓�娆�
- */
 @Component("deleteSensitiveInformationTesk")
 @Slf4j
 public class DeleteSensitiveInformationTesk {
     private final static String EMPTY_STR = "NA";
     @Autowired
     IEntTestMemberService entTestMemberService;
-
     @Autowired
     IEntTestMemberBackstageService entTestMemberBackstageService;
-
     public void deleteSensitiveInformationTesk() {
-        //鍒版湡12涓湀娓呯┖ent_test_member锛屽鍚嶏紝閭欢锛屽彿鐮併��
+        
         Map map = testMemberParams();
         List<EntTestMember> entTestMembers = entTestMemberService.selectEntTestMemberList(map);
-
         entTestMembers.stream().forEach(p -> {
             Long memberId = p.getMemberId();
             try {
                 EntTestMemberBackstage stage = new EntTestMemberBackstage();
-                //鏇存柊鏁版嵁鍓嶅厛鎶婃暟鎹叆搴撳埌澶囦唤琛�
+                
                 BeanUtils.copyBeanProp(stage, p);
                 entTestMemberBackstageService.insertEntTestMemberBackstage(stage);
                 p.setMemberName(EMPTY_STR);
@@ -47,17 +38,15 @@
             }
         });
     }
-
     private Map testMemberParams() {
         Map paramMap = new HashMap();
-        Calendar ca = Calendar.getInstance();//寰楀埌涓�涓狢alendar鐨勫疄渚�
-        ca.setTime(new Date()); //璁剧疆鏃堕棿涓哄綋鍓嶆椂闂�
-        ca.add(Calendar.YEAR, -1); //骞翠唤鍑�1
+        Calendar ca = Calendar.getInstance();
+        ca.setTime(new Date()); 
+        ca.add(Calendar.YEAR, -1); 
         paramMap.put("deleteSensitiveTime", ca.getTime());
         paramMap.put("desensitization", "desensitization");
         return paramMap;
     }
-
     public static void main(String[] args) {
         DeleteSensitiveInformationTesk tesk = new DeleteSensitiveInformationTesk();
         Map map = tesk.testMemberParams();
diff --git a/src/main/java/com/ots/project/monitor/job/task/HrEmailTask.java b/src/main/java/com/ots/project/monitor/job/task/HrEmailTask.java
index 195fc1b..2611564 100644
--- a/src/main/java/com/ots/project/monitor/job/task/HrEmailTask.java
+++ b/src/main/java/com/ots/project/monitor/job/task/HrEmailTask.java
@@ -1,32 +1,21 @@
 package com.ots.project.monitor.job.task;
-
 import com.ots.project.exam.domain.TExamReport;
 import com.ots.project.exam.mapper.TExamReportMapper;
 import com.ots.project.exam.service.impl.TExamPaperServiceImpl;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
-
 import java.util.List;
 import java.util.Optional;
 
-/**
- * 閽堝鍙戦�丠r閭欢澶辫触锛岀郴缁熷仛鑷姩閲嶆柊鍙戦�侊紝1涓皬鏃跺彂閫佷竴娆★紝鍙戦��3娆″悗杩樻槸澶辫触銆備笉鍐嶅鐞嗐��
- */
 @Component("HrEmailTask")
 @Slf4j
 public class HrEmailTask {
-
     @Autowired
     private TExamPaperServiceImpl examPaperService;
-
     @Autowired
     private TExamReportMapper examReportMapper;
-
-    /**
-     * send_hr_status 鐘舵��3鏄彂閫佸け璐ワ紝涓旈噸璇曟鏁板皬浜�3鐨勬暟鎹�
-     * finish 涓� 1鐨勬暟鎹�
-     */
+    
     public void hrEmailFailedRetransmission() {
         TExamReport tExamReport = new TExamReport();
         tExamReport.setFinish(1);
diff --git a/src/main/java/com/ots/project/monitor/job/task/RecoverTask.java b/src/main/java/com/ots/project/monitor/job/task/RecoverTask.java
index 4fcc10b..5c484f0 100644
--- a/src/main/java/com/ots/project/monitor/job/task/RecoverTask.java
+++ b/src/main/java/com/ots/project/monitor/job/task/RecoverTask.java
@@ -1,5 +1,4 @@
 package com.ots.project.monitor.job.task;
-
 import com.ots.common.enums.TestMemberStatusEnum;
 import com.ots.common.enums.TestPackageStatusEnum;
 import com.ots.project.exam.domain.EntTestMember;
@@ -9,46 +8,33 @@
 import com.ots.project.exam.service.impl.EntOperLogServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
-
 import java.util.*;
 import java.util.stream.Collectors;
-
 import static com.ots.common.enums.OpertypeEnum.DIS_USER;
 
-/**
- * 鎺у埗娴嬭瘯鍖呯姸鎬�
- * 鍒版湡鍚庨渶瑕佸洖鏀舵鏁扮殑鐙珛绋嬪簭
- */
 @Component("recoverTask")
 public class RecoverTask {
-
     @Autowired
     IEntTestPackageService entTestPackageService;
     @Autowired
     IEntTestMemberService entTestMemberService;
     @Autowired
     private EntOperLogServiceImpl entOperLogService;
-
-    /**
-     * 杩囨湡鍥炴敹璇勬祴璧勬牸锛屽彉鏇�
-     */
+    
     public void expiredRecyclingTestEligibility() {
         Map paramMap = testPackageParams();
-        //杩囨湡娴嬭瘯鍖�
+        
         List<EntTestPackage> entTestPackages = entTestPackageService.selectEntTestPackageListByIdAndStatusIn(paramMap);
-
-        //闇�瑕佹牴鎹紒涓氱敤鎴峰垎缁�,瑕佺櫥璁版棩蹇楀拰缁熻
+        
         Map<Long, List<EntTestPackage>> collect = entTestPackages.stream().collect(Collectors.groupingBy(EntTestPackage::getUserId));
-
         collect.forEach((userId, value) -> {
             List<Long> testIds = entTestPackages.stream().map(p -> p.getId()).collect(Collectors.toList());
             Map map = testMemberParams(testIds);
             List<EntTestMember> entTestMembers = entTestMemberService.selectEntTestMemberList(map);
-
             entTestMembers.stream().forEach(it -> {
                 it.setStatus(TestMemberStatusEnum.expiryRecovery.getCode());
                 entTestMemberService.updateEntTestMember(it);
-                //璁板綍鏃ュ織
+                
                 entOperLogService.saveLog(userId, "", DIS_USER, Long.valueOf(entTestMembers.size()));
             });
             entTestPackages.stream().forEach(it -> {
@@ -56,15 +42,8 @@
                 entTestPackageService.updateEntTestPackage(it);
             });
         });
-
     }
-
-    /**
-     * 璇勬祴浜哄憳鏌ヨ鍙傛暟
-     *
-     * @param testIds
-     * @return
-     */
+    
     private Map testMemberParams(List<Long> testIds) {
         Map map = new HashMap();
         map.put("testIds", testIds);
@@ -72,12 +51,7 @@
         map.put("status", recyclingStatus);
         return map;
     }
-
-    /**
-     * 娴嬭瘯鍖呮煡璇㈠弬鏁�
-     *
-     * @return
-     */
+    
     private Map testPackageParams() {
         Map paramMap = new HashMap();
         List<String> status = Arrays.asList(TestPackageStatusEnum.enable.getCode(), TestPackageStatusEnum.pause.getCode());
diff --git a/src/main/java/com/ots/project/monitor/job/task/SenderEmailReportTask.java b/src/main/java/com/ots/project/monitor/job/task/SenderEmailReportTask.java
index 4b6b4cf..b848715 100644
--- a/src/main/java/com/ots/project/monitor/job/task/SenderEmailReportTask.java
+++ b/src/main/java/com/ots/project/monitor/job/task/SenderEmailReportTask.java
@@ -1,5 +1,4 @@
 package com.ots.project.monitor.job.task;
-
 import com.ots.common.enums.LangTypeEnum;
 import com.ots.common.enums.ReportTypeEnum;
 import com.ots.common.enums.SenderCode;
@@ -23,19 +22,14 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
-
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-/**
- * 閭欢鐭俊鍙戦�佷换鍔�
- */
 @Component("SenderEmailReportTask")
 @Slf4j
 public class SenderEmailReportTask {
-
     private static final String SMS_ZJCM = "SMS_ZJCM";
     private static final String SMS_ZJCM_INTERNATIONAL = "SMS_ZJCM_INTERNATIONAL";
     private static final String EMAIL_126 = "EMAIL_126";
@@ -57,9 +51,8 @@
     private TReportTemplateMapper tReportTemplateMapper;
     @Autowired
     private ITReportTemplateService itReportTemplateService;
-
     public void senderTask() {
-        // 鏌ユ壘report琛ㄥ緱鍑鸿鍙戦�佹姤鍛婄殑鐢ㄦ埛
+        
         TExamReport tExamReportTemp = new TExamReport();
         tExamReportTemp.setFinish(1);
         tExamReportTemp.setSendTesterStatus(0);
@@ -67,51 +60,42 @@
         if (ExamUtil.isListEmpty(tExamReportList)) {
             return;
         }
-
-        // textMapList鐨�
+        
         List<Map<String, Object>> textMapList = new ArrayList<>();
         List<String> deleteFileStrList = new ArrayList<>();
-        // 璇█绫诲瀷
+        
         Map<String, LangTypeEnum> langTypeEnumMap = getLangTypeEnumMap();
-        // 鎶ュ憡绫诲瀷
+        
         Map<String, ReportTypeEnum> reportTypeEnumMap = getStringReportTypeEnumMap();
-        // 鏌ュ嚭鍏ㄩ儴鐨勬姤鍛婏紝鍑忓皯娑堣�楃殑鎬ц兘
+        
         Map<Long, TReportTemplate> tReportTemplateMap = getAllTReportTemplateMap();
-
-        // 閬嶅巻姣忎釜report琛�
-        // 缁欐祴璇曡�呭彂閫侀偖浠�
+        
+        
         List<String> allReportList = new ArrayList<>();
-
-        // hr 閭
+        
         Map<String, List<String>> hrEmail = new HashMap<>();
-
-        // 寰幆姣忎釜涓姤鍛婅褰�
+        
         for (TExamReport tExamReport : tExamReportList) {
             String[] reportIds = tExamReport.getReportTemplateId().split(",");
-
-            // 閬嶅巻鍑烘ā鐗堢敓鎴愭枃浠�
+            
             List<String> reprotList =  saveReport(textMapList, deleteFileStrList, langTypeEnumMap, reportTypeEnumMap, tReportTemplateMap, allReportList, tExamReport, reportIds);
-
-            // 璋冪敤鍙戦�佺▼搴忓彂缁欑敤鎴�
+            
             if (emailMessage.sendEmailwithAttachment(tExamReport.getMemberEmail(), "娴嬭瘯鎶ュ憡", "鎮ㄥ凡瀹屾垚娴嬭瘯", reprotList.stream().toArray(String[]::new)).isResult()) {
                 tExamReport.setSendTesterStatus(SenderCode.success.getCode());
-            } else { // 鍙戦�佹垚鍔燂紝鍙戦�佸け璐ュ鐞�
+            } else { 
                 tExamReport.setSendTesterStatus(SenderCode.fail.getCode());
             }
-
-            // 鍙戦�佺粰Hr
+            
             if (emailMessage.sendEmailwithAttachment(tExamReport.getTestEmail(), "娴嬭瘯鎶ュ憡", "鎮ㄥ凡瀹屾垚娴嬭瘯", reprotList.stream().toArray(String[]::new)).isResult()) {
                 tExamReport.setSendHrStatus(SenderCode.success.getCode());
-            } else { // 鍙戦�佹垚鍔燂紝鍙戦�佸け璐ュ鐞�
+            } else { 
                 tExamReport.setSendHrStatus(SenderCode.fail.getCode());
             }
-
             tExamReportService.updateTExamReportStatus(tExamReport);
         }
     }
-
     private void setHrFiles(Map<String, List<String>> hrEmail, TExamReport tExamReport, List<String> reprotList) {
-        // 淇濈暀鍙戠粰Hr鐨勯偖绠�
+        
         List<String> hrEmailList =  hrEmail.get(tExamReport.getTestEmail());
         if (ExamUtil.isListEmpty(hrEmailList)) {
             List<String> hrFileList = new ArrayList<>();
@@ -121,17 +105,16 @@
             hrEmailList.addAll(reprotList);
         }
     }
-
     private List<String> saveReport(List<Map<String, Object>> textMapList, List<String> deleteFileStrList, Map<String, LangTypeEnum> langTypeEnumMap, Map<String, ReportTypeEnum> reportTypeEnumMap, Map<Long, TReportTemplate> tReportTemplateMap, List<String> allReportList, TExamReport tExamReport, String[] reportIds) {
         List<String> sendReportList = new ArrayList<>();
         for (String reportId : reportIds) {
-            // 妯℃嫙璋冪敤鎺ュ彛
+            
             Map<String, String> thaiCalculationMap = new HashMap<>();
             MAQReport report = new MAQReport();
             WordUtil util = new WordUtil();
-            // 瀵煎嚭鍩虹鐗堟湰杩樻槸璇︾粏鐗�
-            String reportType = tReportTemplateMap.get(Long.valueOf(reportId)).getReportType();// "Brief";
-            String templateType = tReportTemplateMap.get(Long.valueOf(reportId)).getTemplateType();// "Brief";
+            
+            String reportType = tReportTemplateMap.get(Long.valueOf(reportId)).getReportType();
+            String templateType = tReportTemplateMap.get(Long.valueOf(reportId)).getTemplateType();
             String path = "";
             Map<String, Object> textMap = new HashMap<>();
             TReportTemplate tReportTemplate = tReportTemplateMap.get(Long.valueOf(reportId));
@@ -146,23 +129,20 @@
                 e.printStackTrace();
                 continue;
             }
-
-            // 鐢熸垚鎶ュ憡鏂囦欢
+            
             String zipFileName = util.makeReportFile(path, tReportTemplate, textMap, new HashMap<>(), deleteFileStrList);
             allReportList.add(zipFileName);
             for (String fileName : allReportList) {
                 sendReportList.add(EssConfig.getProfile() + "/" + fileName);
             }
-            // 娓呯┖锛岀粰涓嬩竴涓敤鎴风敤
+            
             textMapList.clear();
             textMap.clear();
-            // 鍒犻櫎涓存椂鏂囦欢
+            
             util.deleteFileByStr(deleteFileStrList);
         }
-
         return sendReportList;
     }
-
     private Map<Long, TReportTemplate> getAllTReportTemplateMap() {
         List<TReportTemplate> tReportTemplateList = tReportTemplateMapper.selectTReportTemplateList(new TReportTemplate());
         Map<Long, TReportTemplate> tReportTemplateMap = new HashMap<>();
@@ -171,7 +151,6 @@
         }
         return tReportTemplateMap;
     }
-
     private Map<String, ReportTypeEnum> getStringReportTypeEnumMap() {
         Map<String, ReportTypeEnum> reportTypeEnumMap = new HashMap<>();
         for (ReportTypeEnum reportTypeEnumTemp : ReportTypeEnum.values()) {
@@ -179,7 +158,6 @@
         }
         return reportTypeEnumMap;
     }
-
     private Map<String, LangTypeEnum> getLangTypeEnumMap() {
         Map<String, LangTypeEnum> langTypeEnumMap = new HashMap<>();
         for (LangTypeEnum langTypeEnumTemp : LangTypeEnum.values()) {
diff --git a/src/main/java/com/ots/project/monitor/job/task/SenderTask.java b/src/main/java/com/ots/project/monitor/job/task/SenderTask.java
index 2f752c8..638e1ab 100644
--- a/src/main/java/com/ots/project/monitor/job/task/SenderTask.java
+++ b/src/main/java/com/ots/project/monitor/job/task/SenderTask.java
@@ -1,5 +1,4 @@
 package com.ots.project.monitor.job.task;
-
 import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSON;
 import com.ots.common.enums.SenderType;
@@ -24,21 +23,15 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
-
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
-
 import static com.ots.common.enums.SmsStatusEnum.*;
 
-/**
- * 閭欢鐭俊鍙戦�佷换鍔�
- */
 @Component("senderTask")
 @Slf4j
 public class SenderTask {
-
     private static final String SMS_ZJCM = "SMS_ZJCM";
     private static final String SMS_ZJCM_INTERNATIONAL = "SMS_ZJCM_INTERNATIONAL";
     private static final String EMAIL_126 = "EMAIL_126";
@@ -52,29 +45,26 @@
     EmailMessage emailMessage;
     @Autowired
     IEntTestSendtaskMailService entTestSendtaskMailService;
-
     @Autowired
     private ConfigService configService;
-
     public void senderTask(String type) {
         EntTestSendtask testSendtask = new EntTestSendtask();
         testSendtask.setStatus(SendtaskStatus.Untreated.getStatus());
         testSendtask.setType(type);
         List<EntTestSendtask> entTestSendtasks = entTestSendtaskService.selectEntTestSendtaskList(testSendtask);
         if (SenderType.email.getType().equals(type)) {
-            //鍙戦�侀偖浠�
+            
             entTestSendtasks.stream().forEach(p -> sendEmail(p));
-            //閭欢閫�淇℃儏鍐靛鐞� 寮傛
+            
             bounceStatusUpdate();
         }
         if (SenderType.sms.getType().equals(type)) {
-            //鍙戦�佺煭淇�
+            
             entTestSendtasks.stream().forEach(p -> sendSms(p));
-            //鐭俊涓嬪彂鐘舵�佽窡杩� 寮傛
+            
             smsDeliveryStatus();
         }
     }
-
     private void mailBounceInformationStorage(List<BouncedUser> bouncedUserList) {
         try {
             bouncedUserList.stream().forEach(user -> {
@@ -87,7 +77,6 @@
             log.error("璁板綍閫�淇′俊鎭け璐ワ細{}", e.getMessage(), e);
         }
     }
-
     private void bounceStatusUpdate() {
         String mailMode = configService.getKey("MailMode");
         if (Objects.equals("RushMail", mailMode)) {
@@ -134,8 +123,8 @@
             }
         } else {
             EmailUtil eu = new EmailUtil(EmailMessageImpl.userName, EmailMessageImpl.password);
-            List<BouncedUser> bouncedUserList = eu.receiveMail(DefaultConfigurer.getIMAP(), "imap");// imap鏀朵俊
-            //閭欢閫�淇℃暟鎹叆搴�
+            List<BouncedUser> bouncedUserList = eu.receiveMail(DefaultConfigurer.getIMAP(), "imap");
+            
             mailBounceInformationStorage(bouncedUserList);
             bouncedUserList.stream().forEach(user -> {
                 EntTestSendtask entTestSendtask = new EntTestSendtask();
@@ -153,13 +142,11 @@
             });
         }
     }
-
     public static void main(String[] args) {
         String str = "12321231232131 nihaodfdfdl 鏀朵欢浜洪偖浠跺湴鍧�锛坙jhua@bydq.com.cn锛変笉瀛樺湪锛岄偖浠舵棤娉曢�佽揪銆� ";
         String substring = str.substring(str.indexOf("鏀朵欢浜洪偖浠跺湴鍧�锛�") + "鏀朵欢浜洪偖浠跺湴鍧�锛�".length(), str.indexOf("锛変笉瀛樺湪锛岄偖浠舵棤娉曢�佽揪"));
         System.out.println(substring);
     }
-
     private void smsDeliveryStatus() {
         List<Statusbox> statusboxList = shortMessage.getReport();
         if (Objects.isNull(statusboxList) || statusboxList.size() == 0) {
@@ -181,12 +168,7 @@
             }
         }
     }
-
-    /**
-     * 鍙戦偖浠�
-     *
-     * @param testSendtask
-     */
+    
     public void sendEmail(EntTestSendtask testSendtask) {
         if (Objects.equals(EMAIL_126, testSendtask.getPlatform())) {
             RushMailResult result = emailMessage.sendEmail(testSendtask.getAddressee(), testSendtask.getTitle(), testSendtask.getContent());
@@ -210,12 +192,7 @@
         entTestMemberService.updateEntTestMember(entTestMember);
         entTestSendtaskService.updateEntTestSendtask(testSendtask);
     }
-
-    /**
-     * 鍙戠煭淇�
-     *
-     * @param testSendtask
-     */
+    
     public void sendSms(EntTestSendtask testSendtask) {
         if (Objects.equals(SMS_ZJCM, testSendtask.getPlatform())) {
             Returnsms returnsms = shortMessage.sendSms(Arrays.asList(testSendtask.getAddressee()), "銆怲AI娴嬭瘎銆�", testSendtask.getContent());
diff --git a/src/main/java/com/ots/project/tool/gen/service/IExamUtilService.java b/src/main/java/com/ots/project/tool/gen/service/IExamUtilService.java
index 0ff97a7..27917bb 100644
--- a/src/main/java/com/ots/project/tool/gen/service/IExamUtilService.java
+++ b/src/main/java/com/ots/project/tool/gen/service/IExamUtilService.java
@@ -1,21 +1,12 @@
 package com.ots.project.tool.gen.service;
-
 import com.ots.project.exam.domain.TExamPaper;
 import com.ots.project.exam.dto.ExamPaperTitleItemObject;
-
 import java.util.List;
 
-/**
- * 涓氬姟 鏈嶅姟灞�
- *
- * @author ots
- */
 public interface IExamUtilService {
-    // 鍙栨湰鍦扮殑璇█
+    
     String getLocalLangType(String langType);
-
-    // 濡傛灉娌℃湁灏卞幓鍙栨湰鍦扮殑璇█鐨刯son绫诲瀷
+    
     String getLangOrLocalLangString(String langType, String contentMapJson);
-
     void setTitleName(TExamPaper tExamPaper, List<ExamPaperTitleItemObject> examPaperTitleItemObjectList);
 }
diff --git a/src/main/java/com/ots/project/tool/gen/service/IExamUtilServiceImpl.java b/src/main/java/com/ots/project/tool/gen/service/IExamUtilServiceImpl.java
index 4ae133d..65ad5c5 100644
--- a/src/main/java/com/ots/project/tool/gen/service/IExamUtilServiceImpl.java
+++ b/src/main/java/com/ots/project/tool/gen/service/IExamUtilServiceImpl.java
@@ -1,5 +1,4 @@
 package com.ots.project.tool.gen.service;
-
 import com.alibaba.fastjson.JSONObject;
 import com.ots.common.utils.StringUtils;
 import com.ots.framework.web.service.DictService;
@@ -12,71 +11,57 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.i18n.LocaleContextHolder;
 import org.springframework.stereotype.Service;
-
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
-
 @Service
 public class IExamUtilServiceImpl implements IExamUtilService {
     @Autowired
     private DictService dictService;
-
     @Autowired
     private TQuestionMapper questionMapper;
-
     @Override
     public String getLocalLangType(String langType) {
-        // 鍙栨湰鍦扮殑璇█
+        
         if (StringUtils.equals(langType, "ALL") || StringUtils.isEmpty(langType)) {
             return dictService.getLangType(LocaleContextHolder.getLocale().toString());
         }
-
         return langType;
     }
-
     @Override
     public String getLangOrLocalLangString(String langType, String contentMapJson) {
         langType = getLocalLangType(langType);
         return ExamUtil.getLangString(langType, contentMapJson);
     }
-
-    // Job 宸ヤ綔鍒嗘瀽鏂囧叿鐨勫ぇ棰樼洰鍘诲彇question琛�
+    
     @Override
     public void setTitleName(TExamPaper tExamPaper, List<ExamPaperTitleItemObject> examPaperTitleItemObjectList) {
-        // 宸ヤ綔鍒嗘瀽闂嵎鐨勫ぇ棰橈紝澶ч閲岄潰濡傛灉鏈塹uestionId锛屽氨鍙杚uestionId鐨勯鐩�
+        
         Map<Long, String> questionIdMap = new HashMap<>();
         for (ExamPaperTitleItemObject examPaperTitleItemObject : examPaperTitleItemObjectList) {
             if (Objects.isNull(examPaperTitleItemObject.getQuestionId())) {
                 continue;
             }
-
             questionIdMap.put(examPaperTitleItemObject.getQuestionId().longValue(), "");
         }
-
         if (questionIdMap.size() == 0) {
             return;
         }
-
-        // 濡傛灉鏈塹uestionid灏辨槸宸ヤ綔鍒嗘瀽闂嵎锛岃鍙杚uestion琛ㄧ殑
+        
         List<TQuestion> questionList = questionMapper.selectTQuestionByIds(new ArrayList<Long>(questionIdMap.keySet()));
-
         if (ExamUtil.isListEmpty(questionList)) {
             return;
         }
-
         questionList.stream().forEach(question -> {
             QuestionObject questionObject = JSONObject.parseObject(question.getContent(), QuestionObject.class);
             questionIdMap.put(question.getId(), getLangOrLocalLangString(tExamPaper.getLangType(), questionObject.getTitleContent()));
         });
-
-        // 鏇挎崲棰樼洰鐨勬爣棰�
+        
         for (ExamPaperTitleItemObject examPaperTitleItemObject : examPaperTitleItemObjectList) {
-            // name灏辨槸娈电殑棰樼洰
+            
             examPaperTitleItemObject.setName(questionIdMap.get(examPaperTitleItemObject.getQuestionId().longValue()));
         }
-
     }
 }
diff --git a/src/main/java/com/ots/project/tool/report/JAQ/JAQReport.java b/src/main/java/com/ots/project/tool/report/JAQ/JAQReport.java
index 78d6d35..2bb8a36 100644
--- a/src/main/java/com/ots/project/tool/report/JAQ/JAQReport.java
+++ b/src/main/java/com/ots/project/tool/report/JAQ/JAQReport.java
@@ -1,5 +1,4 @@
 package com.ots.project.tool.report.JAQ;
-
 import com.alibaba.fastjson.JSONObject;
 import com.ots.common.enums.LangTypeEnum;
 import com.ots.common.utils.StringUtils;
@@ -17,33 +16,18 @@
 import com.ots.project.tool.report.reportCalculation.response.ReportAPIResult;
 import lombok.Getter;
 import lombok.Setter;
-
 import java.util.*;
-
 @Getter
 @Setter
 public class JAQReport {
-
     TQuestionServiceImpl tQuestionService = AppUtil.getObject("examQuestion", TQuestionServiceImpl.class);
-
-    /**
-     * 宀椾綅鍚嶇О
-     */
+    
     private String postName;
-
-    /**
-     * 鎶ュ憡鐢熸垚鏃ユ湡
-     */
+    
     private String reportGenerationDate;
-
-    /**
-     * 鎶ュ憡搴忓彿
-     */
+    
     private String reportNumber;
-
-    /**
-     * @return
-     */
+    
     public List<Map<String, Object>> getTemplateParameters(ReportAPIResult result, LangTypeEnum langType) {
         Map<String, Object> infoMap = new HashMap();
         infoMap.put("postName", postName);
@@ -56,7 +40,6 @@
         tableList.put("table4", getTable4(result, langType));
         return Arrays.asList(infoMap, tableList);
     }
-
     List<Table4> getTable4(ReportAPIResult result, LangTypeEnum langType) {
         List<Table4> table4 = result.getTable4();
         table4.stream().forEach(item -> {
@@ -66,7 +49,7 @@
             }
             StringBuilder stringBuilder = new StringBuilder();
             List<String> listOfTopicNumbers = item.getListOfTopicNumbers();
-            //鏌ユ壘瀵逛簬鐨勪富棰樼洰(鏍规嵁JAQ棰樼洰缂栫爜锛屽拰璇█绫诲瀷鎵鹃鐩�)
+            
             listOfTopicNumbers.stream().forEach(p -> {
                 String topic = queryTopic(langType, p);
                 if (StringUtils.isBlank(topic)) {
@@ -78,7 +61,6 @@
         });
         return table4;
     }
-
     List<Table3> getTable3(ReportAPIResult result, LangTypeEnum langType) {
         List<Table3> table3 = result.getTable3();
         table3.stream().forEach(item -> {
@@ -89,7 +71,6 @@
         });
         return table3;
     }
-
     List<Table2> getTable2(ReportAPIResult result, LangTypeEnum langType) {
         List<Table2> table2 = result.getTable2();
         table2.stream().forEach(item -> {
@@ -100,7 +81,6 @@
         });
         return table2;
     }
-
     List<Table1> getTable1(ReportAPIResult result, LangTypeEnum langType) {
         List<Table1> table1 = result.getTable1();
         table1.stream().forEach(item -> {
@@ -111,14 +91,7 @@
         });
         return table1;
     }
-
-    /**
-     * 鏍规嵁姘镐箙缂栧彿鏌ヨ瑷�棰樼洰
-     *
-     * @param langType
-     * @param permanentId
-     * @return
-     */
+    
     private String queryTopic(LangTypeEnum langType, String permanentId) {
         List<TQuestion> tQuestionList = tQuestionService.selectTQuestionByPermanentId(permanentId);
         if (Objects.isNull(tQuestionList) || tQuestionList.size() == 0) {
diff --git a/src/main/resources/application-sand.yml b/src/main/resources/application-sand.yml
index f4ccc4f..1bc0760 100644
--- a/src/main/resources/application-sand.yml
+++ b/src/main/resources/application-sand.yml
@@ -26,7 +26,7 @@
         druid:
             # 涓诲簱鏁版嵁婧�
             master:
-                url: jdbc:mysql://120.24.39.179:3306/ots-sand?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                url: jdbc:mysql://127.0.0.1:3306/ots-sand?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                 username: root
                 password: TAI@2019#Zjun
             # 浠庡簱鏁版嵁婧�
diff --git a/src/main/resources/mailConfig.properties b/src/main/resources/mailConfig.properties
index e169452..17cec9b 100644
--- a/src/main/resources/mailConfig.properties
+++ b/src/main/resources/mailConfig.properties
@@ -3,13 +3,13 @@
 #\u7AEF\u53E3\u53F7
 mailPort=25
 #\u90AE\u7BB1\u8D26\u53F7
-mailUsername=guobiao8900@126.com
+mailUsername=
 #\u90AE\u7BB1\u6388\u6743\u7801
 mailPassword=Perfect8900
 #\u65F6\u95F4\u5EF6\u8FDF
 mailTimeout=25000
 #\u53D1\u9001\u4EBA
-mailFrom=guobiao8900@126.com
+mailFrom=
 #\u53D1\u4EF6\u4EBA
 personal=\u9ED1\u767D\u8272\u8C03
 #\u4E3B\u9898
diff --git a/src/main/resources/mybatis/exam/EntTestMemberMapper.xml b/src/main/resources/mybatis/exam/EntTestMemberMapper.xml
index 0a10334..bd7c75d 100644
--- a/src/main/resources/mybatis/exam/EntTestMemberMapper.xml
+++ b/src/main/resources/mybatis/exam/EntTestMemberMapper.xml
@@ -69,7 +69,11 @@
             <if test="memberEmail != null  and memberEmail != ''"> and m.member_email like concat('%',   #{memberEmail}, '%')</if>
             <if test="memberPhone != null  and memberPhone != ''"> and m.member_phone like concat('%',   #{memberPhone}, '%')</if>
             <if test="testId != null "> and m.test_id = #{testId}</if>
-            <if test="status != null  and status != ''"> and m.status = #{status}</if>
+            <if test="statusList != null "> and m.status in
+                <foreach item="status" collection="statusList" open="(" separator="," close=")">
+                    #{status}
+                </foreach>
+            </if>
             <if test="userId != null  and userId != ''"> and u.user_id = #{userId}</if>
         </where>
     </select>
diff --git a/src/main/resources/mybatis/exam/TExamReportMapper.xml b/src/main/resources/mybatis/exam/TExamReportMapper.xml
index d0b3502..0464bfd 100644
--- a/src/main/resources/mybatis/exam/TExamReportMapper.xml
+++ b/src/main/resources/mybatis/exam/TExamReportMapper.xml
@@ -73,6 +73,34 @@
         left join sys_user_extend e on e.user_id = u.user_id
     </sql>
 
+    <sql id = "selectTExamReportListVoForReport">
+        select m.member_dept,p.status,t.id, t.product_id, t.product_name, t.content, t.token_id, t.create_time, t.update_time, t.states,
+        t.last_content,t.choice,t.do_time, t.question_count, t.member_id,t.user_id,t.parent_id,t.downloadTimes,t.verifyStatus,t.test_id,
+        t.finish,m.member_name,p.test_name,u.user_name,t.question_order, t.question_report, t.question_template_id, t.interface_content,
+        t.lang_type, t.report_address, p.report_template_id, t.send_hr_status, t.send_tester_status, m.member_email, p.test_email,
+        t.member_name, p.auto_send_report, e.hr_email, e.mail_content, t.option_order, t.remain_part_time,
+         t.report_address_new,t.hrReportEmail,t.hrTitle,t.hrSendTime,t.hrUpdateTime,t.retriesTime
+         from t_exam_report t
+        left join sys_user u on u.user_id = t.user_id
+        right join ent_test_member m on m.member_id = t.member_id and m.status = '1'
+        left join ent_test_package p on p.id = t.test_id
+        left join sys_user_extend e on e.user_id = u.user_id
+    </sql>
+
+    <sql id = "selectTExamReportListNoStatusVo">
+        select m.member_dept,p.status,t.id, t.product_id, t.product_name, t.content, t.token_id, t.create_time, t.update_time, t.states,
+        t.last_content,t.choice,t.do_time, t.question_count, t.member_id,t.user_id,t.parent_id,t.downloadTimes,t.verifyStatus,t.test_id,
+        t.finish,m.member_name,p.test_name,u.user_name,t.question_order, t.question_report, t.question_template_id, t.interface_content,
+        t.lang_type, t.report_address, p.report_template_id, t.send_hr_status, t.send_tester_status, m.member_email, p.test_email,
+        t.member_name, p.auto_send_report, e.hr_email, e.mail_content, t.option_order, t.remain_part_time,
+         t.report_address_new,t.hrReportEmail,t.hrTitle,t.hrSendTime,t.hrUpdateTime,t.retriesTime
+         from t_exam_report t
+        left join sys_user u on u.user_id = t.user_id
+        right join ent_test_member m on m.member_id = t.member_id
+        left join ent_test_package p on p.id = t.test_id
+        left join sys_user_extend e on e.user_id = u.user_id
+    </sql>
+
     <select id="selectTExamReportList" parameterType="TExamReport" resultMap="TExamReportResult">
         <include refid="selectTExamReportListVo"/>
         <where>  
@@ -105,6 +133,38 @@
         </where>
     </select>
 
+    <select id="selectTExamReportNoStatusList" parameterType="TExamReport" resultMap="TExamReportResult">
+        <include refid="selectTExamReportListVo"/>
+        <where>
+            <if test="id != null "> and t.id = #{id}</if>
+            <if test="productId != null "> and t.product_id = #{productId}</if>
+            <if test="tokenId != null  and tokenId != ''"> and t.token_id = #{tokenId}</if>
+            <if test="downloadTimes != null "> and t.downloadTimes = #{downloadTimes}</if>
+            <if test="verifyStatus != null "> and t.verifyStatus = #{verifyStatus}</if>
+            <if test="memberId != null  and memberId != ''"> and t.member_id = #{memberId}</if>
+            <if test="productName != null  and productName != ''"> and t.product_name like concat('%', #{productName}, '%')</if>
+            <if test="userName != null  and userName != ''"> and u.user_name like concat('%', #{userName}, '%')</if>
+            <if test="testName != null  and testName != ''"> and u.test_name like concat('%', #{testName}, '%')</if>
+            <if test="memberName != null  and memberName != ''"> and m.member_name like concat('%', #{memberName}, '%')</if>
+            <if test="testId != null  and testId != ''"> and t.test_id = #{testId}</if>
+            <if test="status != null  and status != ''"> and p.status = #{status}</if>
+            <if test="finish != null  and finish != ''"> and t.finish = #{finish}</if>
+            <if test="sendTesterStatus != null"> and t.send_tester_status = #{sendTesterStatus}</if>
+            <if test="hrReportEmail != null"> and t.hrReportEmail = #{hrReportEmail}</if>
+            <if test="sendHrStatus != null"> and t.send_hr_status = #{sendHrStatus}</if>
+            <if test="sendHrStatusList != null"> and t.send_hr_status in
+                <foreach collection="sendHrStatusList" item="sendStatus" open="(" separator="," close=")">
+                    #{sendStatus}
+                </foreach>
+            </if>
+            <if test="userIds != null"> and t.user_id in
+                <foreach collection="userIds" item="userId" open="(" separator="," close=")">
+                    #{userId}
+                </foreach>
+            </if>
+        </where>
+    </select>
+
     <select id="selectTExamHrEmailiReportList" parameterType="TExamReport" resultMap="TExamReportResult">
         select id, product_id, product_name, content, token_id, create_time, update_time, states,last_content,choice,do_time, question_count, member_id,user_id,parent_id,downloadTimes,verifyStatus,test_id,finish, question_order, question_report, question_template_id, interface_content, lang_type, report_address, report_template_id, send_hr_status, send_tester_status, member_name, option_order, remain_part_time from t_exam_report
         <where>
diff --git a/src/main/resources/static/ajax/libs/layui/lay/modules/laydate.js b/src/main/resources/static/ajax/libs/layui/lay/modules/laydate.js
index a7aa009..fcc94da 100644
--- a/src/main/resources/static/ajax/libs/layui/lay/modules/laydate.js
+++ b/src/main/resources/static/ajax/libs/layui/lay/modules/laydate.js
@@ -1,2 +1,615 @@
 /** layui-v5.0.9 鏃ユ湡涓庢椂闂寸粍浠� MIT License By https://www.layui.com */
- ;!function(){"use strict";var e=window.layui&&layui.define,t={getPath:function(){var e=document.currentScript?document.currentScript.src:function(){for(var e,t=document.scripts,n=t.length-1,a=n;a>0;a--)if("interactive"===t[a].readyState){e=t[a].src;break}return e||t[n].src}();return e.substring(0,e.lastIndexOf("/")+1)}(),getStyle:function(e,t){var n=e.currentStyle?e.currentStyle:window.getComputedStyle(e,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](t)},link:function(e,a,i){if(n.path){var r=document.getElementsByTagName("head")[0],o=document.createElement("link");"string"==typeof a&&(i=a);var s=(i||e).replace(/\.|\//g,""),l="layuicss-"+s,d=0;o.rel="stylesheet",o.href=n.path+e,o.id=l,document.getElementById(l)||r.appendChild(o),"function"==typeof a&&!function c(){return++d>80?window.console&&console.error("laydate.css: Invalid"):void(1989===parseInt(t.getStyle(document.getElementById(l),"width"))?a():setTimeout(c,100))}()}}},n={v:"5.0.9",config:{},index:window.laydate&&window.laydate.v?1e5:0,path:t.getPath,set:function(e){var t=this;return t.config=w.extend({},t.config,e),t},ready:function(a){var i="laydate",r="",o=(e?"modules/laydate/":"theme/")+"default/laydate.css?v="+n.v+r;return e?layui.addcss(o,a,i):t.link(o,a,i),this}},a=function(){var e=this;return{hint:function(t){e.hint.call(e,t)},config:e.config}},i="laydate",r=".layui-laydate",o="layui-this",s="laydate-disabled",l="寮�濮嬫棩鏈熻秴鍑轰簡缁撴潫鏃ユ湡<br>寤鸿閲嶆柊閫夋嫨",d=[100,2e5],c="layui-laydate-static",m="layui-laydate-list",u="laydate-selected",h="layui-laydate-hint",y="laydate-day-prev",f="laydate-day-next",p="layui-laydate-footer",g=".laydate-btns-confirm",v="laydate-time-text",D=".laydate-btns-time",T=function(e){var t=this;t.index=++n.index,t.config=w.extend({},t.config,n.config,e),n.ready(function(){t.init()})},w=function(e){return new C(e)},C=function(e){for(var t=0,n="object"==typeof e?[e]:(this.selector=e,document.querySelectorAll(e||null));t<n.length;t++)this.push(n[t])};C.prototype=[],C.prototype.constructor=C,w.extend=function(){var e=1,t=arguments,n=function(e,t){e=e||(t.constructor===Array?[]:{});for(var a in t)e[a]=t[a]&&t[a].constructor===Object?n(e[a],t[a]):t[a];return e};for(t[0]="object"==typeof t[0]?t[0]:{};e<t.length;e++)"object"==typeof t[e]&&n(t[0],t[e]);return t[0]},w.ie=function(){var e=navigator.userAgent.toLowerCase();return!!(window.ActiveXObject||"ActiveXObject"in window)&&((e.match(/msie\s(\d+)/)||[])[1]||"11")}(),w.stope=function(e){e=e||window.event,e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},w.each=function(e,t){var n,a=this;if("function"!=typeof t)return a;if(e=e||[],e.constructor===Object){for(n in e)if(t.call(e[n],n,e[n]))break}else for(n=0;n<e.length&&!t.call(e[n],n,e[n]);n++);return a},w.digit=function(e,t,n){var a="";e=String(e),t=t||2;for(var i=e.length;i<t;i++)a+="0";return e<Math.pow(10,t)?a+(0|e):e},w.elem=function(e,t){var n=document.createElement(e);return w.each(t||{},function(e,t){n.setAttribute(e,t)}),n},C.addStr=function(e,t){return e=e.replace(/\s+/," "),t=t.replace(/\s+/," ").split(" "),w.each(t,function(t,n){new RegExp("\\b"+n+"\\b").test(e)||(e=e+" "+n)}),e.replace(/^\s|\s$/,"")},C.removeStr=function(e,t){return e=e.replace(/\s+/," "),t=t.replace(/\s+/," ").split(" "),w.each(t,function(t,n){var a=new RegExp("\\b"+n+"\\b");a.test(e)&&(e=e.replace(a,""))}),e.replace(/\s+/," ").replace(/^\s|\s$/,"")},C.prototype.find=function(e){var t=this,n=0,a=[],i="object"==typeof e;return this.each(function(r,o){for(var s=i?[e]:o.querySelectorAll(e||null);n<s.length;n++)a.push(s[n]);t.shift()}),i||(t.selector=(t.selector?t.selector+" ":"")+e),w.each(a,function(e,n){t.push(n)}),t},C.prototype.each=function(e){return w.each.call(this,this,e)},C.prototype.addClass=function(e,t){return this.each(function(n,a){a.className=C[t?"removeStr":"addStr"](a.className,e)})},C.prototype.removeClass=function(e){return this.addClass(e,!0)},C.prototype.hasClass=function(e){var t=!1;return this.each(function(n,a){new RegExp("\\b"+e+"\\b").test(a.className)&&(t=!0)}),t},C.prototype.attr=function(e,t){var n=this;return void 0===t?function(){if(n.length>0)return n[0].getAttribute(e)}():n.each(function(n,a){a.setAttribute(e,t)})},C.prototype.removeAttr=function(e){return this.each(function(t,n){n.removeAttribute(e)})},C.prototype.html=function(e){return this.each(function(t,n){n.innerHTML=e})},C.prototype.val=function(e){return this.each(function(t,n){n.value=e})},C.prototype.append=function(e){return this.each(function(t,n){"object"==typeof e?n.appendChild(e):n.innerHTML=n.innerHTML+e})},C.prototype.remove=function(e){return this.each(function(t,n){e?n.removeChild(e):n.parentNode.removeChild(n)})},C.prototype.on=function(e,t){return this.each(function(n,a){a.attachEvent?a.attachEvent("on"+e,function(e){e.target=e.srcElement,t.call(a,e)}):a.addEventListener(e,t,!1)})},C.prototype.off=function(e,t){return this.each(function(n,a){a.detachEvent?a.detachEvent("on"+e,t):a.removeEventListener(e,t,!1)})},T.isLeapYear=function(e){return e%4===0&&e%100!==0||e%400===0},T.prototype.config={type:"date",range:!1,format:"yyyy-MM-dd",value:null,min:"1900-1-1",max:"2099-12-31",trigger:"focus",show:!1,showBottom:!0,btns:["clear","now","confirm"],lang:"cn",theme:"default",position:null,calendar:!1,mark:{},zIndex:null,done:null,change:null},T.prototype.lang=function(){var e=this,t=e.config,n={cn:{weeks:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],time:["h","min","s"],timeTips:"selection period",startTime:"starting time",endTime:"end Time",dateTips:"return date",month:["Jan","Feb","Mar","Apr","May","Jun","July","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"confirm",clear:"clear",now:"now"}},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"}}};return n[t.lang]||n.cn},T.prototype.init=function(){var e=this,t=e.config,n="yyyy|y|MM|M|dd|d|HH|H|mm|m|ss|s",a="static"===t.position,i={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};t.elem=w(t.elem),t.eventElem=w(t.eventElem),t.elem[0]&&(t.range===!0&&(t.range="-"),t.format===i.date&&(t.format=i[t.type]),e.format=t.format.match(new RegExp(n+"|.","g"))||[],e.EXP_IF="",e.EXP_SPLIT="",w.each(e.format,function(t,a){var i=new RegExp(n).test(a)?"\\d{"+function(){return new RegExp(n).test(e.format[0===t?t+1:t-1]||"")?/^yyyy|y$/.test(a)?4:a.length:/^yyyy$/.test(a)?"1,4":/^y$/.test(a)?"1,308":"1,2"}()+"}":"\\"+a;e.EXP_IF=e.EXP_IF+i,e.EXP_SPLIT=e.EXP_SPLIT+"("+i+")"}),e.EXP_IF=new RegExp("^"+(t.range?e.EXP_IF+"\\s\\"+t.range+"\\s"+e.EXP_IF:e.EXP_IF)+"$"),e.EXP_SPLIT=new RegExp("^"+e.EXP_SPLIT+"$",""),e.isInput(t.elem[0])||"focus"===t.trigger&&(t.trigger="click"),t.elem.attr("lay-key")||(t.elem.attr("lay-key",e.index),t.eventElem.attr("lay-key",e.index)),t.mark=w.extend({},t.calendar&&"cn"===t.lang?{"0-1-1":"鍏冩棪","0-2-14":"鎯呬汉","0-3-8":"濡囧コ","0-3-12":"妞嶆爲","0-4-1":"鎰氫汉","0-5-1":"鍔冲姩","0-5-4":"闈掑勾","0-6-1":"鍎跨","0-9-10":"鏁欏笀","0-9-18":"鍥借��","0-10-1":"鍥藉簡","0-12-25":"鍦h癁"}:{},t.mark),w.each(["min","max"],function(e,n){var a=[],i=[];if("number"==typeof t[n]){var r=t[n],o=(new Date).getTime(),s=864e5,l=new Date(r?r<s?o+r*s:r:o);a=[l.getFullYear(),l.getMonth()+1,l.getDate()],r<s||(i=[l.getHours(),l.getMinutes(),l.getSeconds()])}else a=(t[n].match(/\d+-\d+-\d+/)||[""])[0].split("-"),i=(t[n].match(/\d+:\d+:\d+/)||[""])[0].split(":");t[n]={year:0|a[0]||(new Date).getFullYear(),month:a[1]?(0|a[1])-1:(new Date).getMonth(),date:0|a[2]||(new Date).getDate(),hours:0|i[0],minutes:0|i[1],seconds:0|i[2]}}),e.elemID="layui-laydate"+t.elem.attr("lay-key"),(t.show||a)&&e.render(),a||e.events(),t.value&&(t.value.constructor===Date?e.setValue(e.parse(0,e.systemDate(t.value))):e.setValue(t.value)))},T.prototype.render=function(){var e=this,t=e.config,n=e.lang(),a="static"===t.position,i=e.elem=w.elem("div",{id:e.elemID,"class":["layui-laydate",t.range?" layui-laydate-range":"",a?" "+c:"",t.theme&&"default"!==t.theme&&!/^#/.test(t.theme)?" laydate-theme-"+t.theme:""].join("")}),r=e.elemMain=[],o=e.elemHeader=[],s=e.elemCont=[],l=e.table=[],d=e.footer=w.elem("div",{"class":p});if(t.zIndex&&(i.style.zIndex=t.zIndex),w.each(new Array(2),function(e){if(!t.range&&e>0)return!0;var a=w.elem("div",{"class":"layui-laydate-header"}),i=[function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-prev-y"});return e.innerHTML="&#xe65a;",e}(),function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-prev-m"});return e.innerHTML="&#xe603;",e}(),function(){var e=w.elem("div",{"class":"laydate-set-ym"}),t=w.elem("span"),n=w.elem("span");return e.appendChild(t),e.appendChild(n),e}(),function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-next-m"});return e.innerHTML="&#xe602;",e}(),function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-next-y"});return e.innerHTML="&#xe65b;",e}()],d=w.elem("div",{"class":"layui-laydate-content"}),c=w.elem("table"),m=w.elem("thead"),u=w.elem("tr");w.each(i,function(e,t){a.appendChild(t)}),m.appendChild(u),w.each(new Array(6),function(e){var t=c.insertRow(0);w.each(new Array(7),function(a){if(0===e){var i=w.elem("th");i.innerHTML=n.weeks[a],u.appendChild(i)}t.insertCell(a)})}),c.insertBefore(m,c.children[0]),d.appendChild(c),r[e]=w.elem("div",{"class":"layui-laydate-main laydate-main-list-"+e}),r[e].appendChild(a),r[e].appendChild(d),o.push(i),s.push(d),l.push(c)}),w(d).html(function(){var e=[],i=[];return"datetime"===t.type&&e.push('<span lay-type="datetime" class="laydate-btns-time">'+n.timeTips+"</span>"),w.each(t.btns,function(e,r){var o=n.tools[r]||"btn";t.range&&"now"===r||(a&&"clear"===r&&(o="cn"===t.lang?"閲嶇疆":"Reset"),i.push('<span lay-type="'+r+'" class="laydate-btns-'+r+'">'+o+"</span>"))}),e.push('<div class="laydate-footer-btns">'+i.join("")+"</div>"),e.join("")}()),w.each(r,function(e,t){i.appendChild(t)}),t.showBottom&&i.appendChild(d),/^#/.test(t.theme)){var m=w.elem("style"),u=["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} .layui-this{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,e.elemID).replace(/{{theme}}/g,t.theme);"styleSheet"in m?(m.setAttribute("type","text/css"),m.styleSheet.cssText=u):m.innerHTML=u,w(i).addClass("laydate-theme-molv"),i.appendChild(m)}e.remove(T.thisElemDate),a?t.elem.append(i):(document.body.appendChild(i),e.position()),e.checkDate().calendar(),e.changeEvent(),T.thisElemDate=e.elemID,"function"==typeof t.ready&&t.ready(w.extend({},t.dateTime,{month:t.dateTime.month+1}))},T.prototype.remove=function(e){var t=this,n=(t.config,w("#"+(e||t.elemID)));return n.hasClass(c)||t.checkDate(function(){n.remove()}),t},T.prototype.position=function(){var e=this,t=e.config,n=e.bindElem||t.elem[0],a=n.getBoundingClientRect(),i=e.elem.offsetWidth,r=e.elem.offsetHeight,o=function(e){return e=e?"scrollLeft":"scrollTop",document.body[e]|document.documentElement[e]},s=function(e){return document.documentElement[e?"clientWidth":"clientHeight"]},l=5,d=a.left,c=a.bottom;d+i+l>s("width")&&(d=s("width")-i-l),c+r+l>s()&&(c=a.top>r?a.top-r:s()-r,c-=2*l),t.position&&(e.elem.style.position=t.position),e.elem.style.left=d+("fixed"===t.position?0:o(1))+"px",e.elem.style.top=c+("fixed"===t.position?0:o())+"px"},T.prototype.hint=function(e){var t=this,n=(t.config,w.elem("div",{"class":h}));n.innerHTML=e||"",w(t.elem).find("."+h).remove(),t.elem.appendChild(n),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){w(t.elem).find("."+h).remove()},3e3)},T.prototype.getAsYM=function(e,t,n){return n?t--:t++,t<0&&(t=11,e--),t>11&&(t=0,e++),[e,t]},T.prototype.systemDate=function(e){var t=e||new Date;return{year:t.getFullYear(),month:t.getMonth(),date:t.getDate(),hours:e?e.getHours():0,minutes:e?e.getMinutes():0,seconds:e?e.getSeconds():0}},T.prototype.checkDate=function(e){var t,a,i=this,r=(new Date,i.config),o=r.dateTime=r.dateTime||i.systemDate(),s=i.bindElem||r.elem[0],l=(i.isInput(s)?"val":"html",i.isInput(s)?s.value:"static"===r.position?"":s.innerHTML),c=function(e){e.year>d[1]&&(e.year=d[1],a=!0),e.month>11&&(e.month=11,a=!0),e.hours>23&&(e.hours=0,a=!0),e.minutes>59&&(e.minutes=0,e.hours++,a=!0),e.seconds>59&&(e.seconds=0,e.minutes++,a=!0),t=n.getEndDate(e.month+1,e.year),e.date>t&&(e.date=t,a=!0)},m=function(e,t,n){var o=["startTime","endTime"];t=(t.match(i.EXP_SPLIT)||[]).slice(1),n=n||0,r.range&&(i[o[n]]=i[o[n]]||{}),w.each(i.format,function(s,l){var c=parseFloat(t[s]);t[s].length<l.length&&(a=!0),/yyyy|y/.test(l)?(c<d[0]&&(c=d[0],a=!0),e.year=c):/MM|M/.test(l)?(c<1&&(c=1,a=!0),e.month=c-1):/dd|d/.test(l)?(c<1&&(c=1,a=!0),e.date=c):/HH|H/.test(l)?(c<1&&(c=0,a=!0),e.hours=c,r.range&&(i[o[n]].hours=c)):/mm|m/.test(l)?(c<1&&(c=0,a=!0),e.minutes=c,r.range&&(i[o[n]].minutes=c)):/ss|s/.test(l)&&(c<1&&(c=0,a=!0),e.seconds=c,r.range&&(i[o[n]].seconds=c))}),c(e)};return"limit"===e?(c(o),i):(l=l||r.value,"string"==typeof l&&(l=l.replace(/\s+/g," ").replace(/^\s|\s$/g,"")),i.startState&&!i.endState&&(delete i.startState,i.endState=!0),"string"==typeof l&&l?i.EXP_IF.test(l)?r.range?(l=l.split(" "+r.range+" "),i.startDate=i.startDate||i.systemDate(),i.endDate=i.endDate||i.systemDate(),r.dateTime=w.extend({},i.startDate),w.each([i.startDate,i.endDate],function(e,t){m(t,l[e],e)})):m(o,l):(i.hint("鏃ユ湡鏍煎紡涓嶅悎娉�<br>蹇呴』閬靛惊涓嬭堪鏍煎紡锛�<br>"+(r.range?r.format+" "+r.range+" "+r.format:r.format)+"<br>宸蹭负浣犻噸缃�"),a=!0):l&&l.constructor===Date?r.dateTime=i.systemDate(l):(r.dateTime=i.systemDate(),delete i.startState,delete i.endState,delete i.startDate,delete i.endDate,delete i.startTime,delete i.endTime),c(o),a&&l&&i.setValue(r.range?i.endDate?i.parse():"":i.parse()),e&&e(),i)},T.prototype.mark=function(e,t){var n,a=this,i=a.config;return w.each(i.mark,function(e,a){var i=e.split("-");i[0]!=t[0]&&0!=i[0]||i[1]!=t[1]&&0!=i[1]||i[2]!=t[2]||(n=a||t[2])}),n&&e.html('<span class="laydate-day-mark">'+n+"</span>"),a},T.prototype.limit=function(e,t,n,a){var i,r=this,o=r.config,l={},d=o[n>41?"endDate":"dateTime"],c=w.extend({},d,t||{});return w.each({now:c,min:o.min,max:o.max},function(e,t){l[e]=r.newDate(w.extend({year:t.year,month:t.month,date:t.date},function(){var e={};return w.each(a,function(n,a){e[a]=t[a]}),e}())).getTime()}),i=l.now<l.min||l.now>l.max,e&&e[i?"addClass":"removeClass"](s),i},T.prototype.calendar=function(e){var t,a,i,r=this,s=r.config,l=e||s.dateTime,c=new Date,m=r.lang(),u="date"!==s.type&&"datetime"!==s.type,h=e?1:0,y=w(r.table[h]).find("td"),f=w(r.elemHeader[h][2]).find("span");if(l.year<d[0]&&(l.year=d[0],r.hint("鏈�浣庡彧鑳芥敮鎸佸埌鍏厓"+d[0]+"骞�")),l.year>d[1]&&(l.year=d[1],r.hint("鏈�楂樺彧鑳芥敮鎸佸埌鍏厓"+d[1]+"骞�")),r.firstDate||(r.firstDate=w.extend({},l)),c.setFullYear(l.year,l.month,1),t=c.getDay(),a=n.getEndDate(l.month||12,l.year),i=n.getEndDate(l.month+1,l.year),w.each(y,function(e,n){var d=[l.year,l.month],c=0;n=w(n),n.removeAttr("class"),e<t?(c=a-t+e,n.addClass("laydate-day-prev"),d=r.getAsYM(l.year,l.month,"sub")):e>=t&&e<i+t?(c=e-t,s.range||c+1===l.date&&n.addClass(o)):(c=e-i-t,n.addClass("laydate-day-next"),d=r.getAsYM(l.year,l.month)),d[1]++,d[2]=c+1,n.attr("lay-ymd",d.join("-")).html(d[2]),r.mark(n,d).limit(n,{year:d[0],month:d[1]-1,date:d[2]},e)}),w(f[0]).attr("lay-ym",l.year+"-"+(l.month+1)),w(f[1]).attr("lay-ym",l.year+"-"+(l.month+1)),"cn"===s.lang?(w(f[0]).attr("lay-type","year").html(l.year+""),w(f[1]).attr("lay-type","month").html(l.month+1+"")):(w(f[0]).attr("lay-type","month").html(m.month[l.month]),w(f[1]).attr("lay-type","year").html(l.year)),u&&(s.range&&(e?r.endDate=r.endDate||{year:l.year+("year"===s.type?1:0),month:l.month+("month"===s.type?0:-1)}:r.startDate=r.startDate||{year:l.year,month:l.month},e&&(r.listYM=[[r.startDate.year,r.startDate.month+1],[r.endDate.year,r.endDate.month+1]],r.list(s.type,0).list(s.type,1),"time"===s.type?r.setBtnStatus("鏃堕棿",w.extend({},r.systemDate(),r.startTime),w.extend({},r.systemDate(),r.endTime)):r.setBtnStatus(!0))),s.range||(r.listYM=[[l.year,l.month+1]],r.list(s.type,0))),s.range&&!e){var p=r.getAsYM(l.year,l.month);r.calendar(w.extend({},l,{year:p[0],month:p[1]}))}return s.range||r.limit(w(r.footer).find(g),null,0,["hours","minutes","seconds"]),s.range&&e&&!u&&r.stampRange(),r},T.prototype.list=function(e,t){var n=this,a=n.config,i=a.dateTime,r=n.lang(),l=a.range&&"date"!==a.type&&"datetime"!==a.type,d=w.elem("ul",{"class":m+" "+{year:"laydate-year-list",month:"laydate-month-list",time:"laydate-time-list"}[e]}),c=n.elemHeader[t],u=w(c[2]).find("span"),h=n.elemCont[t||0],y=w(h).find("."+m)[0],f="cn"===a.lang,p=f?"":"",T=n.listYM[t]||{},C=["hours","minutes","seconds"],x=["startTime","endTime"][t];if(T[0]<1&&(T[0]=1),"year"===e){var M,b=M=T[0]-7;b<1&&(b=M=1),w.each(new Array(15),function(e){var i=w.elem("li",{"lay-ym":M}),r={year:M};M==T[0]&&w(i).addClass(o),i.innerHTML=M+p,d.appendChild(i),M<n.firstDate.year?(r.month=a.min.month,r.date=a.min.date):M>=n.firstDate.year&&(r.month=a.max.month,r.date=a.max.date),n.limit(w(i),r,t),M++}),w(u[f?0:1]).attr("lay-ym",M-8+"-"+T[1]).html(b+p+" - "+(M-1+p))}else if("month"===e)w.each(new Array(12),function(e){var i=w.elem("li",{"lay-ym":e}),s={year:T[0],month:e};e+1==T[1]&&w(i).addClass(o),i.innerHTML=r.month[e]+(f?"":""),d.appendChild(i),T[0]<n.firstDate.year?s.date=a.min.date:T[0]>=n.firstDate.year&&(s.date=a.max.date),n.limit(w(i),s,t)}),w(u[f?0:1]).attr("lay-ym",T[0]+"-"+T[1]).html(T[0]+p);else if("time"===e){var E=function(){w(d).find("ol").each(function(e,a){w(a).find("li").each(function(a,i){n.limit(w(i),[{hours:a},{hours:n[x].hours,minutes:a},{hours:n[x].hours,minutes:n[x].minutes,seconds:a}][e],t,[["hours"],["hours","minutes"],["hours","minutes","seconds"]][e])})}),a.range||n.limit(w(n.footer).find(g),n[x],0,["hours","minutes","seconds"])};a.range?n[x]||(n[x]={hours:0,minutes:0,seconds:0}):n[x]=i,w.each([24,60,60],function(e,t){var a=w.elem("li"),i=["<p>"+r.time[e]+"</p><ol>"];w.each(new Array(t),function(t){i.push("<li"+(n[x][C[e]]===t?' class="'+o+'"':"")+">"+w.digit(t,2)+"</li>")}),a.innerHTML=i.join("")+"</ol>",d.appendChild(a)}),E()}if(y&&h.removeChild(y),h.appendChild(d),"year"===e||"month"===e)w(n.elemMain[t]).addClass("laydate-ym-show"),w(d).find("li").on("click",function(){var r=0|w(this).attr("lay-ym");if(!w(this).hasClass(s)){if(0===t)i[e]=r,l&&(n.startDate[e]=r),n.limit(w(n.footer).find(g),null,0);else if(l)n.endDate[e]=r;else{var c="year"===e?n.getAsYM(r,T[1]-1,"sub"):n.getAsYM(T[0],r,"sub");w.extend(i,{year:c[0],month:c[1]})}"year"===a.type||"month"===a.type?(w(d).find("."+o).removeClass(o),w(this).addClass(o),"month"===a.type&&"year"===e&&(n.listYM[t][0]=r,l&&(n[["startDate","endDate"][t]].year=r),n.list("month",t))):(n.checkDate("limit").calendar(),n.closeList()),n.setBtnStatus(),a.range||n.done(null,"change"),w(n.footer).find(D).removeClass(s)}});else{var S=w.elem("span",{"class":v}),k=function(){w(d).find("ol").each(function(e){var t=this,a=w(t).find("li");t.scrollTop=30*(n[x][C[e]]-2),t.scrollTop<=0&&a.each(function(e,n){if(!w(this).hasClass(s))return t.scrollTop=30*(e-2),!0})})},H=w(c[2]).find("."+v);k(),S.innerHTML=a.range?[r.startTime,r.endTime][t]:r.timeTips,w(n.elemMain[t]).addClass("laydate-time-show"),H[0]&&H.remove(),c[2].appendChild(S),w(d).find("ol").each(function(e){var t=this;w(t).find("li").on("click",function(){var r=0|this.innerHTML;w(this).hasClass(s)||(a.range?n[x][C[e]]=r:i[C[e]]=r,w(t).find("."+o).removeClass(o),w(this).addClass(o),E(),k(),(n.endDate||"time"===a.type)&&n.done(null,"change"),n.setBtnStatus())})})}return n},T.prototype.listYM=[],T.prototype.closeList=function(){var e=this;e.config;w.each(e.elemCont,function(t,n){w(this).find("."+m).remove(),w(e.elemMain[t]).removeClass("laydate-ym-show laydate-time-show")}),w(e.elem).find("."+v).remove()},T.prototype.setBtnStatus=function(e,t,n){var a,i=this,r=i.config,o=w(i.footer).find(g),d=r.range&&"date"!==r.type&&"time"!==r.type;d&&(t=t||i.startDate,n=n||i.endDate,a=i.newDate(t).getTime()>i.newDate(n).getTime(),i.limit(null,t)||i.limit(null,n)?o.addClass(s):o[a?"addClass":"removeClass"](s),e&&a&&i.hint("string"==typeof e?l.replace(/鏃ユ湡/g,e):l))},T.prototype.parse=function(e,t){var n=this,a=n.config,i=t||(e?w.extend({},n.endDate,n.endTime):a.range?w.extend({},n.startDate,n.startTime):a.dateTime),r=n.format.concat();return w.each(r,function(e,t){/yyyy|y/.test(t)?r[e]=w.digit(i.year,t.length):/MM|M/.test(t)?r[e]=w.digit(i.month+1,t.length):/dd|d/.test(t)?r[e]=w.digit(i.date,t.length):/HH|H/.test(t)?r[e]=w.digit(i.hours,t.length):/mm|m/.test(t)?r[e]=w.digit(i.minutes,t.length):/ss|s/.test(t)&&(r[e]=w.digit(i.seconds,t.length))}),a.range&&!e?r.join("")+" "+a.range+" "+n.parse(1):r.join("")},T.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},T.prototype.setValue=function(e){var t=this,n=t.config,a=t.bindElem||n.elem[0],i=t.isInput(a)?"val":"html";return"static"===n.position||w(a)[i](e||""),this},T.prototype.stampRange=function(){var e,t,n=this,a=n.config,i=w(n.elem).find("td");if(a.range&&!n.endDate&&w(n.footer).find(g).addClass(s),n.endDate)return e=n.newDate({year:n.startDate.year,month:n.startDate.month,date:n.startDate.date}).getTime(),t=n.newDate({year:n.endDate.year,month:n.endDate.month,date:n.endDate.date}).getTime(),e>t?n.hint(l):void w.each(i,function(a,i){var r=w(i).attr("lay-ymd").split("-"),s=n.newDate({year:r[0],month:r[1]-1,date:r[2]}).getTime();w(i).removeClass(u+" "+o),s!==e&&s!==t||w(i).addClass(w(i).hasClass(y)||w(i).hasClass(f)?u:o),s>e&&s<t&&w(i).addClass(u)})},T.prototype.done=function(e,t){var n=this,a=n.config,i=w.extend({},n.startDate?w.extend(n.startDate,n.startTime):a.dateTime),r=w.extend({},w.extend(n.endDate,n.endTime));return w.each([i,r],function(e,t){"month"in t&&w.extend(t,{month:t.month+1})}),e=e||[n.parse(),i,r],"function"==typeof a[t||"done"]&&a[t||"done"].apply(a,e),n},T.prototype.choose=function(e){var t=this,n=t.config,a=n.dateTime,i=w(t.elem).find("td"),r=e.attr("lay-ymd").split("-"),l=function(e){new Date;e&&w.extend(a,r),n.range&&(t.startDate?w.extend(t.startDate,r):t.startDate=w.extend({},r,t.startTime),t.startYMD=r)};if(r={year:0|r[0],month:(0|r[1])-1,date:0|r[2]},!e.hasClass(s))if(n.range){if(w.each(["startTime","endTime"],function(e,n){t[n]=t[n]||{hours:0,minutes:0,seconds:0}}),t.endState)l(),delete t.endState,delete t.endDate,t.startState=!0,i.removeClass(o+" "+u),e.addClass(o);else if(t.startState){if(e.addClass(o),t.endDate?w.extend(t.endDate,r):t.endDate=w.extend({},r,t.endTime),t.newDate(r).getTime()<t.newDate(t.startYMD).getTime()){var d=w.extend({},t.endDate,{hours:t.startDate.hours,minutes:t.startDate.minutes,seconds:t.startDate.seconds});w.extend(t.endDate,t.startDate,{hours:t.endDate.hours,minutes:t.endDate.minutes,seconds:t.endDate.seconds}),t.startDate=d}n.showBottom||t.done(),t.stampRange(),t.endState=!0,t.done(null,"change")}else e.addClass(o),l(),t.startState=!0;w(t.footer).find(g)[t.endDate?"removeClass":"addClass"](s)}else"static"===n.position?(l(!0),t.calendar().done().done(null,"change")):"date"===n.type?(l(!0),t.setValue(t.parse()).remove().done()):"datetime"===n.type&&(l(!0),t.calendar().done(null,"change"))},T.prototype.tool=function(e,t){var n=this,a=n.config,i=a.dateTime,r="static"===a.position,o={datetime:function(){w(e).hasClass(s)||(n.list("time",0),a.range&&n.list("time",1),w(e).attr("lay-type","date").html(n.lang().dateTips))},date:function(){n.closeList(),w(e).attr("lay-type","datetime").html(n.lang().timeTips)},clear:function(){n.setValue("").remove(),r&&(w.extend(i,n.firstDate),n.calendar()),a.range&&(delete n.startState,delete n.endState,delete n.endDate,delete n.startTime,delete n.endTime),n.done(["",{},{}])},now:function(){var e=new Date;w.extend(i,n.systemDate(),{hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds()}),n.setValue(n.parse()).remove(),r&&n.calendar(),n.done()},confirm:function(){if(a.range){if(!n.endDate)return n.hint("璇峰厛閫夋嫨鏃ユ湡鑼冨洿");if(w(e).hasClass(s))return n.hint("time"===a.type?l.replace(/鏃ユ湡/g,"鏃堕棿"):l)}else if(w(e).hasClass(s))return n.hint("涓嶅湪鏈夋晥鏃ユ湡鎴栨椂闂磋寖鍥村唴");n.done(),n.setValue(n.parse()).remove()}};o[t]&&o[t]()},T.prototype.change=function(e){var t=this,n=t.config,a=n.dateTime,i=n.range&&("year"===n.type||"month"===n.type),r=t.elemCont[e||0],o=t.listYM[e],s=function(s){var l=["startDate","endDate"][e],d=w(r).find(".laydate-year-list")[0],c=w(r).find(".laydate-month-list")[0];return d&&(o[0]=s?o[0]-15:o[0]+15,t.list("year",e)),c&&(s?o[0]--:o[0]++,t.list("month",e)),(d||c)&&(w.extend(a,{year:o[0]}),i&&(t[l].year=o[0]),n.range||t.done(null,"change"),t.setBtnStatus(),n.range||t.limit(w(t.footer).find(g),{year:o[0]})),d||c};return{prevYear:function(){s("sub")||(a.year--,t.checkDate("limit").calendar(),n.range||t.done(null,"change"))},prevMonth:function(){var e=t.getAsYM(a.year,a.month,"sub");w.extend(a,{year:e[0],month:e[1]}),t.checkDate("limit").calendar(),n.range||t.done(null,"change")},nextMonth:function(){var e=t.getAsYM(a.year,a.month);w.extend(a,{year:e[0],month:e[1]}),t.checkDate("limit").calendar(),n.range||t.done(null,"change")},nextYear:function(){s()||(a.year++,t.checkDate("limit").calendar(),n.range||t.done(null,"change"))}}},T.prototype.changeEvent=function(){var e=this;e.config;w(e.elem).on("click",function(e){w.stope(e)}),w.each(e.elemHeader,function(t,n){w(n[0]).on("click",function(n){e.change(t).prevYear()}),w(n[1]).on("click",function(n){e.change(t).prevMonth()}),w(n[2]).find("span").on("click",function(n){var a=w(this),i=a.attr("lay-ym"),r=a.attr("lay-type");i&&(i=i.split("-"),e.listYM[t]=[0|i[0],0|i[1]],e.list(r,t),w(e.footer).find(D).addClass(s))}),w(n[3]).on("click",function(n){e.change(t).nextMonth()}),w(n[4]).on("click",function(n){e.change(t).nextYear()})}),w.each(e.table,function(t,n){var a=w(n).find("td");a.on("click",function(){e.choose(w(this))})}),w(e.footer).find("span").on("click",function(){var t=w(this).attr("lay-type");e.tool(this,t)})},T.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())},T.prototype.events=function(){var e=this,t=e.config,n=function(n,a){n.on(t.trigger,function(){a&&(e.bindElem=this),e.render()})};t.elem[0]&&!t.elem[0].eventHandler&&(n(t.elem,"bind"),n(t.eventElem),w(document).on("click",function(n){n.target!==t.elem[0]&&n.target!==t.eventElem[0]&&n.target!==w(t.closeStop)[0]&&e.remove()}).on("keydown",function(t){13===t.keyCode&&w("#"+e.elemID)[0]&&e.elemID===T.thisElem&&(t.preventDefault(),w(e.footer).find(g)[0].click())}),w(window).on("resize",function(){return!(!e.elem||!w(r)[0])&&void e.position()}),t.elem[0].eventHandler=!0)},n.render=function(e){var t=new T(e);return a.call(t)},n.getEndDate=function(e,t){var n=new Date;return n.setFullYear(t||n.getFullYear(),e||n.getMonth()+1,1),new Date(n.getTime()-864e5).getDate()},window.lay=window.lay||w,e?(n.ready(),layui.define(function(e){n.path=layui.cache.dir,e(i,n)})):"function"==typeof define&&define.amd?define(function(){return n}):function(){n.ready(),window.laydate=n}()}();
+;!function () {
+    "use strict";
+    var e = window.layui && layui.define, t = {
+            getPath: function () {
+                var e = document.currentScript ? document.currentScript.src : function () {
+                    for (var e, t = document.scripts, n = t.length - 1, a = n; a > 0; a--) if ("interactive" === t[a].readyState) {
+                        e = t[a].src;
+                        break
+                    }
+                    return e || t[n].src
+                }();
+                return e.substring(0, e.lastIndexOf("/") + 1)
+            }(), getStyle: function (e, t) {
+                var n = e.currentStyle ? e.currentStyle : window.getComputedStyle(e, null);
+                return n[n.getPropertyValue ? "getPropertyValue" : "getAttribute"](t)
+            }, link: function (e, a, i) {
+                if (n.path) {
+                    var r = document.getElementsByTagName("head")[0], o = document.createElement("link");
+                    "string" == typeof a && (i = a);
+                    var s = (i || e).replace(/\.|\//g, ""), l = "layuicss-" + s, d = 0;
+                    o.rel = "stylesheet", o.href = n.path + e, o.id = l, document.getElementById(l) || r.appendChild(o), "function" == typeof a && !function c() {
+                        return ++d > 80 ? window.console && console.error("laydate.css: Invalid") : void (1989 === parseInt(t.getStyle(document.getElementById(l), "width")) ? a() : setTimeout(c, 100))
+                    }()
+                }
+            }
+        }, n = {
+            v: "5.0.9",
+            config: {},
+            index: window.laydate && window.laydate.v ? 1e5 : 0,
+            path: t.getPath,
+            set: function (e) {
+                var t = this;
+                return t.config = w.extend({}, t.config, e), t
+            },
+            ready: function (a) {
+                var i = "laydate", r = "", o = (e ? "modules/laydate/" : "theme/") + "default/laydate.css?v=" + n.v + r;
+                return e ? layui.addcss(o, a, i) : t.link(o, a, i), this
+            }
+        }, a = function () {
+            var e = this;
+            return {
+                hint: function (t) {
+                    e.hint.call(e, t)
+                }, config: e.config
+            }
+        }, i = "laydate", r = ".layui-laydate", o = "layui-this", s = "laydate-disabled", l = "寮�濮嬫棩鏈熻秴鍑轰簡缁撴潫鏃ユ湡<br>寤鸿閲嶆柊閫夋嫨",
+        d = [100, 2e5], c = "layui-laydate-static", m = "layui-laydate-list", u = "laydate-selected",
+        h = "layui-laydate-hint", y = "laydate-day-prev", f = "laydate-day-next", p = "layui-laydate-footer",
+        g = ".laydate-btns-confirm", v = "laydate-time-text", D = ".laydate-btns-time", T = function (e) {
+            var t = this;
+            t.index = ++n.index, t.config = w.extend({}, t.config, n.config, e), n.ready(function () {
+                t.init()
+            })
+        }, w = function (e) {
+            return new C(e)
+        }, C = function (e) {
+            for (var t = 0, n = "object" == typeof e ? [e] : (this.selector = e, document.querySelectorAll(e || null)); t < n.length; t++) this.push(n[t])
+        };
+    C.prototype = [], C.prototype.constructor = C, w.extend = function () {
+        var e = 1, t = arguments, n = function (e, t) {
+            e = e || (t.constructor === Array ? [] : {});
+            for (var a in t) e[a] = t[a] && t[a].constructor === Object ? n(e[a], t[a]) : t[a];
+            return e
+        };
+        for (t[0] = "object" == typeof t[0] ? t[0] : {}; e < t.length; e++) "object" == typeof t[e] && n(t[0], t[e]);
+        return t[0]
+    }, w.ie = function () {
+        var e = navigator.userAgent.toLowerCase();
+        return !!(window.ActiveXObject || "ActiveXObject" in window) && ((e.match(/msie\s(\d+)/) || [])[1] || "11")
+    }(), w.stope = function (e) {
+        e = e || window.event, e.stopPropagation ? e.stopPropagation() : e.cancelBubble = !0
+    }, w.each = function (e, t) {
+        var n, a = this;
+        if ("function" != typeof t) return a;
+        if (e = e || [], e.constructor === Object) {
+            for (n in e) if (t.call(e[n], n, e[n])) break
+        } else for (n = 0; n < e.length && !t.call(e[n], n, e[n]); n++) ;
+        return a
+    }, w.digit = function (e, t, n) {
+        var a = "";
+        e = String(e), t = t || 2;
+        for (var i = e.length; i < t; i++) a += "0";
+        return e < Math.pow(10, t) ? a + (0 | e) : e
+    }, w.elem = function (e, t) {
+        var n = document.createElement(e);
+        return w.each(t || {}, function (e, t) {
+            n.setAttribute(e, t)
+        }), n
+    }, C.addStr = function (e, t) {
+        return e = e.replace(/\s+/, " "), t = t.replace(/\s+/, " ").split(" "), w.each(t, function (t, n) {
+            new RegExp("\\b" + n + "\\b").test(e) || (e = e + " " + n)
+        }), e.replace(/^\s|\s$/, "")
+    }, C.removeStr = function (e, t) {
+        return e = e.replace(/\s+/, " "), t = t.replace(/\s+/, " ").split(" "), w.each(t, function (t, n) {
+            var a = new RegExp("\\b" + n + "\\b");
+            a.test(e) && (e = e.replace(a, ""))
+        }), e.replace(/\s+/, " ").replace(/^\s|\s$/, "")
+    }, C.prototype.find = function (e) {
+        var t = this, n = 0, a = [], i = "object" == typeof e;
+        return this.each(function (r, o) {
+            for (var s = i ? [e] : o.querySelectorAll(e || null); n < s.length; n++) a.push(s[n]);
+            t.shift()
+        }), i || (t.selector = (t.selector ? t.selector + " " : "") + e), w.each(a, function (e, n) {
+            t.push(n)
+        }), t
+    }, C.prototype.each = function (e) {
+        return w.each.call(this, this, e)
+    }, C.prototype.addClass = function (e, t) {
+        return this.each(function (n, a) {
+            a.className = C[t ? "removeStr" : "addStr"](a.className, e)
+        })
+    }, C.prototype.removeClass = function (e) {
+        return this.addClass(e, !0)
+    }, C.prototype.hasClass = function (e) {
+        var t = !1;
+        return this.each(function (n, a) {
+            new RegExp("\\b" + e + "\\b").test(a.className) && (t = !0)
+        }), t
+    }, C.prototype.attr = function (e, t) {
+        var n = this;
+        return void 0 === t ? function () {
+            if (n.length > 0) return n[0].getAttribute(e)
+        }() : n.each(function (n, a) {
+            a.setAttribute(e, t)
+        })
+    }, C.prototype.removeAttr = function (e) {
+        return this.each(function (t, n) {
+            n.removeAttribute(e)
+        })
+    }, C.prototype.html = function (e) {
+        return this.each(function (t, n) {
+            n.innerHTML = e
+        })
+    }, C.prototype.val = function (e) {
+        return this.each(function (t, n) {
+            n.value = e
+        })
+    }, C.prototype.append = function (e) {
+        return this.each(function (t, n) {
+            "object" == typeof e ? n.appendChild(e) : n.innerHTML = n.innerHTML + e
+        })
+    }, C.prototype.remove = function (e) {
+        return this.each(function (t, n) {
+            e ? n.removeChild(e) : n.parentNode.removeChild(n)
+        })
+    }, C.prototype.on = function (e, t) {
+        return this.each(function (n, a) {
+            a.attachEvent ? a.attachEvent("on" + e, function (e) {
+                e.target = e.srcElement, t.call(a, e)
+            }) : a.addEventListener(e, t, !1)
+        })
+    }, C.prototype.off = function (e, t) {
+        return this.each(function (n, a) {
+            a.detachEvent ? a.detachEvent("on" + e, t) : a.removeEventListener(e, t, !1)
+        })
+    }, T.isLeapYear = function (e) {
+        return e % 4 === 0 && e % 100 !== 0 || e % 400 === 0
+    }, T.prototype.config = {
+        type: "date",
+        range: !1,
+        format: "yyyy-MM-dd",
+        value: null,
+        min: "1900-1-1",
+        max: "2099-12-31",
+        trigger: "focus",
+        show: !1,
+        showBottom: !0,
+        btns: ["clear", "now", "confirm"],
+        lang: "cn",
+        theme: "default",
+        position: null,
+        calendar: !1,
+        mark: {},
+        zIndex: null,
+        done: null,
+        change: null
+    }, T.prototype.lang = function () {
+        var e = this, t = e.config, n = {
+            cn: {
+                weeks: ["鏃�", "涓�", "浜�", "涓�", "鍥�", "浜�", "鍏�"],
+                time: ["鏃�", "鍒�", "绉�"],
+                timeTips: "閫夋嫨",
+                startTime: "寮�濮嬫椂闂�",
+                endTime: "缁撴潫鏃堕棿",
+                dateTips: "閫夋嫨鏃ユ湡",
+                month: ["涓�", "浜�", "涓�", "鍥�", "浜�", "鍏�", "涓�", "鍏�", "涔�", "鍗�", "鍗佷竴", "鍗佷簩"],
+                tools: {confirm: "纭", clear: "娓呯┖", now: "鐜板湪"}
+            },
+            en: {
+                weeks: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
+                time: ["Hours", "Minutes", "Seconds"],
+                timeTips: "Select Time",
+                startTime: "Start Time",
+                endTime: "End Time",
+                dateTips: "Select Date",
+                month: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+                tools: {confirm: "Confirm", clear: "Clear", now: "Now"}
+            }
+        };
+        return n[t.lang] || n.cn
+    }, T.prototype.init = function () {
+        var e = this, t = e.config, n = "yyyy|y|MM|M|dd|d|HH|H|mm|m|ss|s", a = "static" === t.position,
+            i = {year: "yyyy", month: "yyyy-MM", date: "yyyy-MM-dd", time: "HH:mm:ss", datetime: "yyyy-MM-dd HH:mm:ss"};
+        t.elem = w(t.elem), t.eventElem = w(t.eventElem), t.elem[0] && (t.range === !0 && (t.range = "-"), t.format === i.date && (t.format = i[t.type]), e.format = t.format.match(new RegExp(n + "|.", "g")) || [], e.EXP_IF = "", e.EXP_SPLIT = "", w.each(e.format, function (t, a) {
+            var i = new RegExp(n).test(a) ? "\\d{" + function () {
+                return new RegExp(n).test(e.format[0 === t ? t + 1 : t - 1] || "") ? /^yyyy|y$/.test(a) ? 4 : a.length : /^yyyy$/.test(a) ? "1,4" : /^y$/.test(a) ? "1,308" : "1,2"
+            }() + "}" : "\\" + a;
+            e.EXP_IF = e.EXP_IF + i, e.EXP_SPLIT = e.EXP_SPLIT + "(" + i + ")"
+        }), e.EXP_IF = new RegExp("^" + (t.range ? e.EXP_IF + "\\s\\" + t.range + "\\s" + e.EXP_IF : e.EXP_IF) + "$"), e.EXP_SPLIT = new RegExp("^" + e.EXP_SPLIT + "$", ""), e.isInput(t.elem[0]) || "focus" === t.trigger && (t.trigger = "click"), t.elem.attr("lay-key") || (t.elem.attr("lay-key", e.index), t.eventElem.attr("lay-key", e.index)), t.mark = w.extend({}, t.calendar && "cn" === t.lang ? {
+            "0-1-1": "鍏冩棪",
+            "0-2-14": "鎯呬汉",
+            "0-3-8": "濡囧コ",
+            "0-3-12": "妞嶆爲",
+            "0-4-1": "鎰氫汉",
+            "0-5-1": "鍔冲姩",
+            "0-5-4": "闈掑勾",
+            "0-6-1": "鍎跨",
+            "0-9-10": "鏁欏笀",
+            "0-9-18": "鍥借��",
+            "0-10-1": "鍥藉簡",
+            "0-12-25": "鍦h癁"
+        } : {}, t.mark), w.each(["min", "max"], function (e, n) {
+            var a = [], i = [];
+            if ("number" == typeof t[n]) {
+                var r = t[n], o = (new Date).getTime(), s = 864e5, l = new Date(r ? r < s ? o + r * s : r : o);
+                a = [l.getFullYear(), l.getMonth() + 1, l.getDate()], r < s || (i = [l.getHours(), l.getMinutes(), l.getSeconds()])
+            } else a = (t[n].match(/\d+-\d+-\d+/) || [""])[0].split("-"), i = (t[n].match(/\d+:\d+:\d+/) || [""])[0].split(":");
+            t[n] = {
+                year: 0 | a[0] || (new Date).getFullYear(),
+                month: a[1] ? (0 | a[1]) - 1 : (new Date).getMonth(),
+                date: 0 | a[2] || (new Date).getDate(),
+                hours: 0 | i[0],
+                minutes: 0 | i[1],
+                seconds: 0 | i[2]
+            }
+        }), e.elemID = "layui-laydate" + t.elem.attr("lay-key"), (t.show || a) && e.render(), a || e.events(), t.value && (t.value.constructor === Date ? e.setValue(e.parse(0, e.systemDate(t.value))) : e.setValue(t.value)))
+    }, T.prototype.render = function () {
+        var e = this, t = e.config, n = e.lang(), a = "static" === t.position, i = e.elem = w.elem("div", {
+                id: e.elemID,
+                "class": ["layui-laydate", t.range ? " layui-laydate-range" : "", a ? " " + c : "", t.theme && "default" !== t.theme && !/^#/.test(t.theme) ? " laydate-theme-" + t.theme : ""].join("")
+            }), r = e.elemMain = [], o = e.elemHeader = [], s = e.elemCont = [], l = e.table = [],
+            d = e.footer = w.elem("div", {"class": p});
+        if (t.zIndex && (i.style.zIndex = t.zIndex), w.each(new Array(2), function (e) {
+            if (!t.range && e > 0) return !0;
+            var a = w.elem("div", {"class": "layui-laydate-header"}), i = [function () {
+                    var e = w.elem("i", {"class": "layui-icon laydate-icon laydate-prev-y"});
+                    return e.innerHTML = "&#xe65a;", e
+                }(), function () {
+                    var e = w.elem("i", {"class": "layui-icon laydate-icon laydate-prev-m"});
+                    return e.innerHTML = "&#xe603;", e
+                }(), function () {
+                    var e = w.elem("div", {"class": "laydate-set-ym"}), t = w.elem("span"), n = w.elem("span");
+                    return e.appendChild(t), e.appendChild(n), e
+                }(), function () {
+                    var e = w.elem("i", {"class": "layui-icon laydate-icon laydate-next-m"});
+                    return e.innerHTML = "&#xe602;", e
+                }(), function () {
+                    var e = w.elem("i", {"class": "layui-icon laydate-icon laydate-next-y"});
+                    return e.innerHTML = "&#xe65b;", e
+                }()], d = w.elem("div", {"class": "layui-laydate-content"}), c = w.elem("table"), m = w.elem("thead"),
+                u = w.elem("tr");
+            w.each(i, function (e, t) {
+                a.appendChild(t)
+            }), m.appendChild(u), w.each(new Array(6), function (e) {
+                var t = c.insertRow(0);
+                w.each(new Array(7), function (a) {
+                    if (0 === e) {
+                        var i = w.elem("th");
+                        i.innerHTML = n.weeks[a], u.appendChild(i)
+                    }
+                    t.insertCell(a)
+                })
+            }), c.insertBefore(m, c.children[0]), d.appendChild(c), r[e] = w.elem("div", {"class": "layui-laydate-main laydate-main-list-" + e}), r[e].appendChild(a), r[e].appendChild(d), o.push(i), s.push(d), l.push(c)
+        }), w(d).html(function () {
+            var e = [], i = [];
+            return "datetime" === t.type && e.push('<span lay-type="datetime" class="laydate-btns-time">' + n.timeTips + "</span>"), w.each(t.btns, function (e, r) {
+                var o = n.tools[r] || "btn";
+                t.range && "now" === r || (a && "clear" === r && (o = "cn" === t.lang ? "閲嶇疆" : "Reset"), i.push('<span lay-type="' + r + '" class="laydate-btns-' + r + '">' + o + "</span>"))
+            }), e.push('<div class="laydate-footer-btns">' + i.join("") + "</div>"), e.join("")
+        }()), w.each(r, function (e, t) {
+            i.appendChild(t)
+        }), t.showBottom && i.appendChild(d), /^#/.test(t.theme)) {
+            var m = w.elem("style"),
+                u = ["#{{id}} .layui-laydate-header{background-color:{{theme}};}", "#{{id}} .layui-this{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g, e.elemID).replace(/{{theme}}/g, t.theme);
+            "styleSheet" in m ? (m.setAttribute("type", "text/css"), m.styleSheet.cssText = u) : m.innerHTML = u, w(i).addClass("laydate-theme-molv"), i.appendChild(m)
+        }
+        e.remove(T.thisElemDate), a ? t.elem.append(i) : (document.body.appendChild(i), e.position()), e.checkDate().calendar(), e.changeEvent(), T.thisElemDate = e.elemID, "function" == typeof t.ready && t.ready(w.extend({}, t.dateTime, {month: t.dateTime.month + 1}))
+    }, T.prototype.remove = function (e) {
+        var t = this, n = (t.config, w("#" + (e || t.elemID)));
+        return n.hasClass(c) || t.checkDate(function () {
+            n.remove()
+        }), t
+    }, T.prototype.position = function () {
+        var e = this, t = e.config, n = e.bindElem || t.elem[0], a = n.getBoundingClientRect(), i = e.elem.offsetWidth,
+            r = e.elem.offsetHeight, o = function (e) {
+                return e = e ? "scrollLeft" : "scrollTop", document.body[e] | document.documentElement[e]
+            }, s = function (e) {
+                return document.documentElement[e ? "clientWidth" : "clientHeight"]
+            }, l = 5, d = a.left, c = a.bottom;
+        d + i + l > s("width") && (d = s("width") - i - l), c + r + l > s() && (c = a.top > r ? a.top - r : s() - r, c -= 2 * l), t.position && (e.elem.style.position = t.position), e.elem.style.left = d + ("fixed" === t.position ? 0 : o(1)) + "px", e.elem.style.top = c + ("fixed" === t.position ? 0 : o()) + "px"
+    }, T.prototype.hint = function (e) {
+        var t = this, n = (t.config, w.elem("div", {"class": h}));
+        n.innerHTML = e || "", w(t.elem).find("." + h).remove(), t.elem.appendChild(n), clearTimeout(t.hinTimer), t.hinTimer = setTimeout(function () {
+            w(t.elem).find("." + h).remove()
+        }, 3e3)
+    }, T.prototype.getAsYM = function (e, t, n) {
+        return n ? t-- : t++, t < 0 && (t = 11, e--), t > 11 && (t = 0, e++), [e, t]
+    }, T.prototype.systemDate = function (e) {
+        var t = e || new Date;
+        return {
+            year: t.getFullYear(),
+            month: t.getMonth(),
+            date: t.getDate(),
+            hours: e ? e.getHours() : 0,
+            minutes: e ? e.getMinutes() : 0,
+            seconds: e ? e.getSeconds() : 0
+        }
+    }, T.prototype.checkDate = function (e) {
+        var t, a, i = this, r = (new Date, i.config), o = r.dateTime = r.dateTime || i.systemDate(),
+            s = i.bindElem || r.elem[0],
+            l = (i.isInput(s) ? "val" : "html", i.isInput(s) ? s.value : "static" === r.position ? "" : s.innerHTML),
+            c = function (e) {
+                e.year > d[1] && (e.year = d[1], a = !0), e.month > 11 && (e.month = 11, a = !0), e.hours > 23 && (e.hours = 0, a = !0), e.minutes > 59 && (e.minutes = 0, e.hours++, a = !0), e.seconds > 59 && (e.seconds = 0, e.minutes++, a = !0), t = n.getEndDate(e.month + 1, e.year), e.date > t && (e.date = t, a = !0)
+            }, m = function (e, t, n) {
+                var o = ["startTime", "endTime"];
+                t = (t.match(i.EXP_SPLIT) || []).slice(1), n = n || 0, r.range && (i[o[n]] = i[o[n]] || {}), w.each(i.format, function (s, l) {
+                    var c = parseFloat(t[s]);
+                    t[s].length < l.length && (a = !0), /yyyy|y/.test(l) ? (c < d[0] && (c = d[0], a = !0), e.year = c) : /MM|M/.test(l) ? (c < 1 && (c = 1, a = !0), e.month = c - 1) : /dd|d/.test(l) ? (c < 1 && (c = 1, a = !0), e.date = c) : /HH|H/.test(l) ? (c < 1 && (c = 0, a = !0), e.hours = c, r.range && (i[o[n]].hours = c)) : /mm|m/.test(l) ? (c < 1 && (c = 0, a = !0), e.minutes = c, r.range && (i[o[n]].minutes = c)) : /ss|s/.test(l) && (c < 1 && (c = 0, a = !0), e.seconds = c, r.range && (i[o[n]].seconds = c))
+                }), c(e)
+            };
+        return "limit" === e ? (c(o), i) : (l = l || r.value, "string" == typeof l && (l = l.replace(/\s+/g, " ").replace(/^\s|\s$/g, "")), i.startState && !i.endState && (delete i.startState, i.endState = !0), "string" == typeof l && l ? i.EXP_IF.test(l) ? r.range ? (l = l.split(" " + r.range + " "), i.startDate = i.startDate || i.systemDate(), i.endDate = i.endDate || i.systemDate(), r.dateTime = w.extend({}, i.startDate), w.each([i.startDate, i.endDate], function (e, t) {
+            m(t, l[e], e)
+        })) : m(o, l) : (i.hint("鏃ユ湡鏍煎紡涓嶅悎娉�<br>蹇呴』閬靛惊涓嬭堪鏍煎紡锛�<br>" + (r.range ? r.format + " " + r.range + " " + r.format : r.format) + "<br>宸蹭负浣犻噸缃�"), a = !0) : l && l.constructor === Date ? r.dateTime = i.systemDate(l) : (r.dateTime = i.systemDate(), delete i.startState, delete i.endState, delete i.startDate, delete i.endDate, delete i.startTime, delete i.endTime), c(o), a && l && i.setValue(r.range ? i.endDate ? i.parse() : "" : i.parse()), e && e(), i)
+    }, T.prototype.mark = function (e, t) {
+        var n, a = this, i = a.config;
+        return w.each(i.mark, function (e, a) {
+            var i = e.split("-");
+            i[0] != t[0] && 0 != i[0] || i[1] != t[1] && 0 != i[1] || i[2] != t[2] || (n = a || t[2])
+        }), n && e.html('<span class="laydate-day-mark">' + n + "</span>"), a
+    }, T.prototype.limit = function (e, t, n, a) {
+        var i, r = this, o = r.config, l = {}, d = o[n > 41 ? "endDate" : "dateTime"], c = w.extend({}, d, t || {});
+        return w.each({now: c, min: o.min, max: o.max}, function (e, t) {
+            l[e] = r.newDate(w.extend({year: t.year, month: t.month, date: t.date}, function () {
+                var e = {};
+                return w.each(a, function (n, a) {
+                    e[a] = t[a]
+                }), e
+            }())).getTime()
+        }), i = l.now < l.min || l.now > l.max, e && e[i ? "addClass" : "removeClass"](s), i
+    }, T.prototype.calendar = function (e) {
+        var t, a, i, r = this, s = r.config, l = e || s.dateTime, c = new Date, m = r.lang(),
+            u = "date" !== s.type && "datetime" !== s.type, h = e ? 1 : 0, y = w(r.table[h]).find("td"),
+            f = w(r.elemHeader[h][2]).find("span");
+        if (l.year < d[0] && (l.year = d[0], r.hint("鏈�浣庡彧鑳芥敮鎸佸埌鍏厓" + d[0] + "骞�")), l.year > d[1] && (l.year = d[1], r.hint("鏈�楂樺彧鑳芥敮鎸佸埌鍏厓" + d[1] + "骞�")), r.firstDate || (r.firstDate = w.extend({}, l)), c.setFullYear(l.year, l.month, 1), t = c.getDay(), a = n.getEndDate(l.month || 12, l.year), i = n.getEndDate(l.month + 1, l.year), w.each(y, function (e, n) {
+            var d = [l.year, l.month], c = 0;
+            n = w(n), n.removeAttr("class"), e < t ? (c = a - t + e, n.addClass("laydate-day-prev"), d = r.getAsYM(l.year, l.month, "sub")) : e >= t && e < i + t ? (c = e - t, s.range || c + 1 === l.date && n.addClass(o)) : (c = e - i - t, n.addClass("laydate-day-next"), d = r.getAsYM(l.year, l.month)), d[1]++, d[2] = c + 1, n.attr("lay-ymd", d.join("-")).html(d[2]), r.mark(n, d).limit(n, {
+                year: d[0],
+                month: d[1] - 1,
+                date: d[2]
+            }, e)
+        }), w(f[0]).attr("lay-ym", l.year + "-" + (l.month + 1)), w(f[1]).attr("lay-ym", l.year + "-" + (l.month + 1)), "cn" === s.lang ? (w(f[0]).attr("lay-type", "year").html(l.year + ""), w(f[1]).attr("lay-type", "month").html(l.month + 1 + "")) : (w(f[0]).attr("lay-type", "month").html(m.month[l.month]), w(f[1]).attr("lay-type", "year").html(l.year)), u && (s.range && (e ? r.endDate = r.endDate || {
+            year: l.year + ("year" === s.type ? 1 : 0),
+            month: l.month + ("month" === s.type ? 0 : -1)
+        } : r.startDate = r.startDate || {
+            year: l.year,
+            month: l.month
+        }, e && (r.listYM = [[r.startDate.year, r.startDate.month + 1], [r.endDate.year, r.endDate.month + 1]], r.list(s.type, 0).list(s.type, 1), "time" === s.type ? r.setBtnStatus("鏃堕棿", w.extend({}, r.systemDate(), r.startTime), w.extend({}, r.systemDate(), r.endTime)) : r.setBtnStatus(!0))), s.range || (r.listYM = [[l.year, l.month + 1]], r.list(s.type, 0))), s.range && !e) {
+            var p = r.getAsYM(l.year, l.month);
+            r.calendar(w.extend({}, l, {year: p[0], month: p[1]}))
+        }
+        return s.range || r.limit(w(r.footer).find(g), null, 0, ["hours", "minutes", "seconds"]), s.range && e && !u && r.stampRange(), r
+    }, T.prototype.list = function (e, t) {
+        var n = this, a = n.config, i = a.dateTime, r = n.lang(),
+            l = a.range && "date" !== a.type && "datetime" !== a.type, d = w.elem("ul", {
+                "class": m + " " + {
+                    year: "laydate-year-list",
+                    month: "laydate-month-list",
+                    time: "laydate-time-list"
+                }[e]
+            }), c = n.elemHeader[t], u = w(c[2]).find("span"), h = n.elemCont[t || 0], y = w(h).find("." + m)[0],
+            f = "cn" === a.lang, p = f ? "" : "", T = n.listYM[t] || {}, C = ["hours", "minutes", "seconds"],
+            x = ["startTime", "endTime"][t];
+        if (T[0] < 1 && (T[0] = 1), "year" === e) {
+            var M, b = M = T[0] - 7;
+            b < 1 && (b = M = 1), w.each(new Array(15), function (e) {
+                var i = w.elem("li", {"lay-ym": M}), r = {year: M};
+                M == T[0] && w(i).addClass(o), i.innerHTML = M + p, d.appendChild(i), M < n.firstDate.year ? (r.month = a.min.month, r.date = a.min.date) : M >= n.firstDate.year && (r.month = a.max.month, r.date = a.max.date), n.limit(w(i), r, t), M++
+            }), w(u[f ? 0 : 1]).attr("lay-ym", M - 8 + "-" + T[1]).html(b + p + " - " + (M - 1 + p))
+        } else if ("month" === e) w.each(new Array(12), function (e) {
+            var i = w.elem("li", {"lay-ym": e}), s = {year: T[0], month: e};
+            e + 1 == T[1] && w(i).addClass(o), i.innerHTML = r.month[e] + (f ? "" : ""), d.appendChild(i), T[0] < n.firstDate.year ? s.date = a.min.date : T[0] >= n.firstDate.year && (s.date = a.max.date), n.limit(w(i), s, t)
+        }), w(u[f ? 0 : 1]).attr("lay-ym", T[0] + "-" + T[1]).html(T[0] + p); else if ("time" === e) {
+            var E = function () {
+                w(d).find("ol").each(function (e, a) {
+                    w(a).find("li").each(function (a, i) {
+                        n.limit(w(i), [{hours: a}, {hours: n[x].hours, minutes: a}, {
+                            hours: n[x].hours,
+                            minutes: n[x].minutes,
+                            seconds: a
+                        }][e], t, [["hours"], ["hours", "minutes"], ["hours", "minutes", "seconds"]][e])
+                    })
+                }), a.range || n.limit(w(n.footer).find(g), n[x], 0, ["hours", "minutes", "seconds"])
+            };
+            a.range ? n[x] || (n[x] = {
+                hours: 0,
+                minutes: 0,
+                seconds: 0
+            }) : n[x] = i, w.each([24, 60, 60], function (e, t) {
+                var a = w.elem("li"), i = ["<p>" + r.time[e] + "</p><ol>"];
+                w.each(new Array(t), function (t) {
+                    i.push("<li" + (n[x][C[e]] === t ? ' class="' + o + '"' : "") + ">" + w.digit(t, 2) + "</li>")
+                }), a.innerHTML = i.join("") + "</ol>", d.appendChild(a)
+            }), E()
+        }
+        if (y && h.removeChild(y), h.appendChild(d), "year" === e || "month" === e) w(n.elemMain[t]).addClass("laydate-ym-show"), w(d).find("li").on("click", function () {
+            var r = 0 | w(this).attr("lay-ym");
+            if (!w(this).hasClass(s)) {
+                if (0 === t) i[e] = r, l && (n.startDate[e] = r), n.limit(w(n.footer).find(g), null, 0); else if (l) n.endDate[e] = r; else {
+                    var c = "year" === e ? n.getAsYM(r, T[1] - 1, "sub") : n.getAsYM(T[0], r, "sub");
+                    w.extend(i, {year: c[0], month: c[1]})
+                }
+                "year" === a.type || "month" === a.type ? (w(d).find("." + o).removeClass(o), w(this).addClass(o), "month" === a.type && "year" === e && (n.listYM[t][0] = r, l && (n[["startDate", "endDate"][t]].year = r), n.list("month", t))) : (n.checkDate("limit").calendar(), n.closeList()), n.setBtnStatus(), a.range || n.done(null, "change"), w(n.footer).find(D).removeClass(s)
+            }
+        }); else {
+            var S = w.elem("span", {"class": v}), k = function () {
+                w(d).find("ol").each(function (e) {
+                    var t = this, a = w(t).find("li");
+                    t.scrollTop = 30 * (n[x][C[e]] - 2), t.scrollTop <= 0 && a.each(function (e, n) {
+                        if (!w(this).hasClass(s)) return t.scrollTop = 30 * (e - 2), !0
+                    })
+                })
+            }, H = w(c[2]).find("." + v);
+            k(), S.innerHTML = a.range ? [r.startTime, r.endTime][t] : r.timeTips, w(n.elemMain[t]).addClass("laydate-time-show"), H[0] && H.remove(), c[2].appendChild(S), w(d).find("ol").each(function (e) {
+                var t = this;
+                w(t).find("li").on("click", function () {
+                    var r = 0 | this.innerHTML;
+                    w(this).hasClass(s) || (a.range ? n[x][C[e]] = r : i[C[e]] = r, w(t).find("." + o).removeClass(o), w(this).addClass(o), E(), k(), (n.endDate || "time" === a.type) && n.done(null, "change"), n.setBtnStatus())
+                })
+            })
+        }
+        return n
+    }, T.prototype.listYM = [], T.prototype.closeList = function () {
+        var e = this;
+        e.config;
+        w.each(e.elemCont, function (t, n) {
+            w(this).find("." + m).remove(), w(e.elemMain[t]).removeClass("laydate-ym-show laydate-time-show")
+        }), w(e.elem).find("." + v).remove()
+    }, T.prototype.setBtnStatus = function (e, t, n) {
+        var a, i = this, r = i.config, o = w(i.footer).find(g), d = r.range && "date" !== r.type && "time" !== r.type;
+        d && (t = t || i.startDate, n = n || i.endDate, a = i.newDate(t).getTime() > i.newDate(n).getTime(), i.limit(null, t) || i.limit(null, n) ? o.addClass(s) : o[a ? "addClass" : "removeClass"](s), e && a && i.hint("string" == typeof e ? l.replace(/鏃ユ湡/g, e) : l))
+    }, T.prototype.parse = function (e, t) {
+        var n = this, a = n.config,
+            i = t || (e ? w.extend({}, n.endDate, n.endTime) : a.range ? w.extend({}, n.startDate, n.startTime) : a.dateTime),
+            r = n.format.concat();
+        return w.each(r, function (e, t) {
+            /yyyy|y/.test(t) ? r[e] = w.digit(i.year, t.length) : /MM|M/.test(t) ? r[e] = w.digit(i.month + 1, t.length) : /dd|d/.test(t) ? r[e] = w.digit(i.date, t.length) : /HH|H/.test(t) ? r[e] = w.digit(i.hours, t.length) : /mm|m/.test(t) ? r[e] = w.digit(i.minutes, t.length) : /ss|s/.test(t) && (r[e] = w.digit(i.seconds, t.length))
+        }), a.range && !e ? r.join("") + " " + a.range + " " + n.parse(1) : r.join("")
+    }, T.prototype.newDate = function (e) {
+        return e = e || {}, new Date(e.year || 1, e.month || 0, e.date || 1, e.hours || 0, e.minutes || 0, e.seconds || 0)
+    }, T.prototype.setValue = function (e) {
+        var t = this, n = t.config, a = t.bindElem || n.elem[0], i = t.isInput(a) ? "val" : "html";
+        return "static" === n.position || w(a)[i](e || ""), this
+    }, T.prototype.stampRange = function () {
+        var e, t, n = this, a = n.config, i = w(n.elem).find("td");
+        if (a.range && !n.endDate && w(n.footer).find(g).addClass(s), n.endDate) return e = n.newDate({
+            year: n.startDate.year,
+            month: n.startDate.month,
+            date: n.startDate.date
+        }).getTime(), t = n.newDate({
+            year: n.endDate.year,
+            month: n.endDate.month,
+            date: n.endDate.date
+        }).getTime(), e > t ? n.hint(l) : void w.each(i, function (a, i) {
+            var r = w(i).attr("lay-ymd").split("-"), s = n.newDate({year: r[0], month: r[1] - 1, date: r[2]}).getTime();
+            w(i).removeClass(u + " " + o), s !== e && s !== t || w(i).addClass(w(i).hasClass(y) || w(i).hasClass(f) ? u : o), s > e && s < t && w(i).addClass(u)
+        })
+    }, T.prototype.done = function (e, t) {
+        var n = this, a = n.config, i = w.extend({}, n.startDate ? w.extend(n.startDate, n.startTime) : a.dateTime),
+            r = w.extend({}, w.extend(n.endDate, n.endTime));
+        return w.each([i, r], function (e, t) {
+            "month" in t && w.extend(t, {month: t.month + 1})
+        }), e = e || [n.parse(), i, r], "function" == typeof a[t || "done"] && a[t || "done"].apply(a, e), n
+    }, T.prototype.choose = function (e) {
+        var t = this, n = t.config, a = n.dateTime, i = w(t.elem).find("td"), r = e.attr("lay-ymd").split("-"),
+            l = function (e) {
+                new Date;
+                e && w.extend(a, r), n.range && (t.startDate ? w.extend(t.startDate, r) : t.startDate = w.extend({}, r, t.startTime), t.startYMD = r)
+            };
+        if (r = {year: 0 | r[0], month: (0 | r[1]) - 1, date: 0 | r[2]}, !e.hasClass(s)) if (n.range) {
+            if (w.each(["startTime", "endTime"], function (e, n) {
+                t[n] = t[n] || {hours: 0, minutes: 0, seconds: 0}
+            }), t.endState) l(), delete t.endState, delete t.endDate, t.startState = !0, i.removeClass(o + " " + u), e.addClass(o); else if (t.startState) {
+                if (e.addClass(o), t.endDate ? w.extend(t.endDate, r) : t.endDate = w.extend({}, r, t.endTime), t.newDate(r).getTime() < t.newDate(t.startYMD).getTime()) {
+                    var d = w.extend({}, t.endDate, {
+                        hours: t.startDate.hours,
+                        minutes: t.startDate.minutes,
+                        seconds: t.startDate.seconds
+                    });
+                    w.extend(t.endDate, t.startDate, {
+                        hours: t.endDate.hours,
+                        minutes: t.endDate.minutes,
+                        seconds: t.endDate.seconds
+                    }), t.startDate = d
+                }
+                n.showBottom || t.done(), t.stampRange(), t.endState = !0, t.done(null, "change")
+            } else e.addClass(o), l(), t.startState = !0;
+            w(t.footer).find(g)[t.endDate ? "removeClass" : "addClass"](s)
+        } else "static" === n.position ? (l(!0), t.calendar().done().done(null, "change")) : "date" === n.type ? (l(!0), t.setValue(t.parse()).remove().done()) : "datetime" === n.type && (l(!0), t.calendar().done(null, "change"))
+    }, T.prototype.tool = function (e, t) {
+        var n = this, a = n.config, i = a.dateTime, r = "static" === a.position, o = {
+            datetime: function () {
+                w(e).hasClass(s) || (n.list("time", 0), a.range && n.list("time", 1), w(e).attr("lay-type", "date").html(n.lang().dateTips))
+            }, date: function () {
+                n.closeList(), w(e).attr("lay-type", "datetime").html(n.lang().timeTips)
+            }, clear: function () {
+                n.setValue("").remove(), r && (w.extend(i, n.firstDate), n.calendar()), a.range && (delete n.startState, delete n.endState, delete n.endDate, delete n.startTime, delete n.endTime), n.done(["", {}, {}])
+            }, now: function () {
+                var e = new Date;
+                w.extend(i, n.systemDate(), {
+                    hours: e.getHours(),
+                    minutes: e.getMinutes(),
+                    seconds: e.getSeconds()
+                }), n.setValue(n.parse()).remove(), r && n.calendar(), n.done()
+            }, confirm: function () {
+                if (a.range) {
+                    if (!n.endDate) return n.hint("璇峰厛閫夋嫨鏃ユ湡鑼冨洿");
+                    if (w(e).hasClass(s)) return n.hint("time" === a.type ? l.replace(/鏃ユ湡/g, "鏃堕棿") : l)
+                } else if (w(e).hasClass(s)) return n.hint("涓嶅湪鏈夋晥鏃ユ湡鎴栨椂闂磋寖鍥村唴");
+                n.done(), n.setValue(n.parse()).remove()
+            }
+        };
+        o[t] && o[t]()
+    }, T.prototype.change = function (e) {
+        var t = this, n = t.config, a = n.dateTime, i = n.range && ("year" === n.type || "month" === n.type),
+            r = t.elemCont[e || 0], o = t.listYM[e], s = function (s) {
+                var l = ["startDate", "endDate"][e], d = w(r).find(".laydate-year-list")[0],
+                    c = w(r).find(".laydate-month-list")[0];
+                return d && (o[0] = s ? o[0] - 15 : o[0] + 15, t.list("year", e)), c && (s ? o[0]-- : o[0]++, t.list("month", e)), (d || c) && (w.extend(a, {year: o[0]}), i && (t[l].year = o[0]), n.range || t.done(null, "change"), t.setBtnStatus(), n.range || t.limit(w(t.footer).find(g), {year: o[0]})), d || c
+            };
+        return {
+            prevYear: function () {
+                s("sub") || (a.year--, t.checkDate("limit").calendar(), n.range || t.done(null, "change"))
+            }, prevMonth: function () {
+                var e = t.getAsYM(a.year, a.month, "sub");
+                w.extend(a, {
+                    year: e[0],
+                    month: e[1]
+                }), t.checkDate("limit").calendar(), n.range || t.done(null, "change")
+            }, nextMonth: function () {
+                var e = t.getAsYM(a.year, a.month);
+                w.extend(a, {
+                    year: e[0],
+                    month: e[1]
+                }), t.checkDate("limit").calendar(), n.range || t.done(null, "change")
+            }, nextYear: function () {
+                s() || (a.year++, t.checkDate("limit").calendar(), n.range || t.done(null, "change"))
+            }
+        }
+    }, T.prototype.changeEvent = function () {
+        var e = this;
+        e.config;
+        w(e.elem).on("click", function (e) {
+            w.stope(e)
+        }), w.each(e.elemHeader, function (t, n) {
+            w(n[0]).on("click", function (n) {
+                e.change(t).prevYear()
+            }), w(n[1]).on("click", function (n) {
+                e.change(t).prevMonth()
+            }), w(n[2]).find("span").on("click", function (n) {
+                var a = w(this), i = a.attr("lay-ym"), r = a.attr("lay-type");
+                i && (i = i.split("-"), e.listYM[t] = [0 | i[0], 0 | i[1]], e.list(r, t), w(e.footer).find(D).addClass(s))
+            }), w(n[3]).on("click", function (n) {
+                e.change(t).nextMonth()
+            }), w(n[4]).on("click", function (n) {
+                e.change(t).nextYear()
+            })
+        }), w.each(e.table, function (t, n) {
+            var a = w(n).find("td");
+            a.on("click", function () {
+                e.choose(w(this))
+            })
+        }), w(e.footer).find("span").on("click", function () {
+            var t = w(this).attr("lay-type");
+            e.tool(this, t)
+        })
+    }, T.prototype.isInput = function (e) {
+        return /input|textarea/.test(e.tagName.toLocaleLowerCase())
+    }, T.prototype.events = function () {
+        var e = this, t = e.config, n = function (n, a) {
+            n.on(t.trigger, function () {
+                a && (e.bindElem = this), e.render()
+            })
+        };
+        t.elem[0] && !t.elem[0].eventHandler && (n(t.elem, "bind"), n(t.eventElem), w(document).on("click", function (n) {
+            n.target !== t.elem[0] && n.target !== t.eventElem[0] && n.target !== w(t.closeStop)[0] && e.remove()
+        }).on("keydown", function (t) {
+            13 === t.keyCode && w("#" + e.elemID)[0] && e.elemID === T.thisElem && (t.preventDefault(), w(e.footer).find(g)[0].click())
+        }), w(window).on("resize", function () {
+            return !(!e.elem || !w(r)[0]) && void e.position()
+        }), t.elem[0].eventHandler = !0)
+    }, n.render = function (e) {
+        var t = new T(e);
+        return a.call(t)
+    }, n.getEndDate = function (e, t) {
+        var n = new Date;
+        return n.setFullYear(t || n.getFullYear(), e || n.getMonth() + 1, 1), new Date(n.getTime() - 864e5).getDate()
+    }, window.lay = window.lay || w, e ? (n.ready(), layui.define(function (e) {
+        n.path = layui.cache.dir, e(i, n)
+    })) : "function" == typeof define && define.amd ? define(function () {
+        return n
+    }) : function () {
+        n.ready(), window.laydate = n
+    }()
+}();
diff --git a/src/main/resources/static/downloadTemplates/ReportTemplates/Bar1_V2.png b/src/main/resources/static/downloadTemplates/ReportTemplates/Bar1_V2.png
new file mode 100644
index 0000000..00eeb15
--- /dev/null
+++ b/src/main/resources/static/downloadTemplates/ReportTemplates/Bar1_V2.png
Binary files differ
diff --git a/src/main/resources/static/downloadTemplates/ReportTemplates/Bar2_V2.png b/src/main/resources/static/downloadTemplates/ReportTemplates/Bar2_V2.png
new file mode 100644
index 0000000..66c5343
--- /dev/null
+++ b/src/main/resources/static/downloadTemplates/ReportTemplates/Bar2_V2.png
Binary files differ
diff --git a/src/main/resources/static/downloadTemplates/ReportTemplates/waterDropDarkBlue_V2.png b/src/main/resources/static/downloadTemplates/ReportTemplates/waterDropDarkBlue_V2.png
new file mode 100644
index 0000000..bc7ffcf
--- /dev/null
+++ b/src/main/resources/static/downloadTemplates/ReportTemplates/waterDropDarkBlue_V2.png
Binary files differ
diff --git a/src/main/resources/static/i18n/messages_en_US.properties b/src/main/resources/static/i18n/messages_en_US.properties
index e20c2c9..c8b2ed6 100644
--- a/src/main/resources/static/i18n/messages_en_US.properties
+++ b/src/main/resources/static/i18n/messages_en_US.properties
@@ -20,7 +20,7 @@
 basis.pleasechoose=Please choose
 basis.save=Save
 basis.close=Close
-basis.createTime=Create Time
+basis.createTime=Creating Time
 basis.createName=Creator
 basis.createBy=CreatorID
 basis.languageVersion=Language Version
@@ -120,6 +120,7 @@
 menu.system.user.manager.view=Manager List
 menu.exam.distributor.view=Distributor List
 menu.exam.enterprise.view=Client List
+menu.exam.enterprise.view1=Search distributors/clients
 menu.questionbank.manager=Testbank Management
 menu.testbackage.manager=Test Pakcage Management
 menu.param.manager=Paramater Management
@@ -182,7 +183,7 @@
 menu.exam.user.extend.list=List User Extension
 menu.exam.user.extend.add=Add User Extenstion
 menu.exam.user.extend.edit=Edit User Extension
-menu.exam.testMember.list=View Testtaker
+menu.exam.testMember.list=Search test-takers
 menu.exam.testMember.add=Add Testtaker
 menu.exam.testMember.edit=Edit Testtaker
 menu.exam.testMember.remove=Delete Testtaker
@@ -316,8 +317,8 @@
 jsp.exam.report.003=Data is being exported, please wait\u2026
 jsp.exam.report.004=Some complete reports are not allowed to be downloaded. Please select again.
 jsp.exam.report.005=Under construction
-jsp.exam.report.006=Test package Name
-jsp.exam.report.007=Product Name
+jsp.exam.report.006=Test package
+jsp.exam.report.007=Test Product
 jsp.exam.report.008=User Name
 jsp.exam.report.009=Client Name
 jsp.exam.report.010=Distributor User
@@ -346,7 +347,7 @@
 jsp.exam.test_package.006=recycle 
 jsp.exam.test_package.007=Report
 jsp.exam.test_package.008=Client code
-jsp.exam.test_package.009=Testtakers 
+jsp.exam.test_package.009=Assigned # of Tests 
 jsp.exam.test_package.010=# of Tests Completed
 jsp.exam.test_package.0101=# of Tests Incomplete
 jsp.exam.test_package.011=# of Tests Not Started
@@ -384,7 +385,7 @@
 jsp.system.config.004=System Imbed
 jsp.system.config.005=Parameter Key Name Already Existing
 jsp.system.dept.001=Superior Dept
-jsp.system.dept.002=Dept Name
+jsp.system.dept.002=Dept
 jsp.system.dept.003=Show Ordering
 jsp.system.dept.004=Contact Person
 jsp.system.dept.005=Telephone
@@ -579,7 +580,7 @@
 dict.ic124=Chinese
 dict.ic125=English
 dict.ic126=\u0E44\u0E17\u0E22
-dict.ic127=Start
+dict.ic127=In Use
 dict.ic128=Pause
 dict.ic129=End
 dict.ic130=Expire
@@ -712,7 +713,7 @@
 basis.content=Content
 basis.testPackageName=Test Package Nme
 basis.testProducts=Product Name
-basis.area=Area
+basis.area=Region
 jsp.monitor.operlog.systemModule=System Module
 jsp.monitor.operlog.logNumber=Log Number
 jsp.monitor.operlog.operator=Operator
@@ -753,7 +754,7 @@
 basis.freelogin=Direct Login
 jsp.system.user.profile.029=Return to Main Account
 jsp.exam.test_package.startTime=Test Start time
-jsp.exam.test_package.endTime=Test End time
+jsp.exam.test_package.endTime=Test Ending time
 jsp.exam.test_package.testinfo=View Progress
 jsp.exam.test_package.testtoken=token
 jsp.exam.test_package.timeSpent=Time Spent
@@ -943,11 +944,11 @@
 whether.to.update.existing.data=Whether to update existing data
 dataFormatError=Data format error
 the.name.cannot.contain.special.characters=Special characters not allowed
-test.user.name=User Name
+test.user.name=Test-taker
 language.used.in.the.test=Test Language
 current.time=DateTime
-enterprise.customer.name=Company Name
-test.product.name=Product Package Name
+enterprise.customer.name=Client/Distributor
+test.product.name=Test Product
 test.user.name.dict1=Search by Test-Taker Name
 test.user.name.dict2=Search by Test-Taker Email
 test.user.name.dict3=Search by Test-Taker Cell#
@@ -955,6 +956,8 @@
 jsp.main.other.001=Recently Completed Tests
 jsp.main.other.002=Recently Abandoned Tests or Tests Being Completed
 jsp.main.other.003=Recently Created Test Packages
+jsp.main.other.004=Most Recent Status Time
+jsp.main.other.005=Product Type
 menu.exam.test_package.search=Search Test Package
 jsp.exam.package.langtype=Mail Language Type
 jsp.exam.test_package.memberEmailContent=Tester Report Message Content
diff --git a/src/main/resources/static/i18n/messages_th_TH.properties b/src/main/resources/static/i18n/messages_th_TH.properties
index 45a60a1..41d7d46 100644
--- a/src/main/resources/static/i18n/messages_th_TH.properties
+++ b/src/main/resources/static/i18n/messages_th_TH.properties
@@ -119,7 +119,7 @@
 menu.user.manager=\u7528\u6237\u7BA1\u7406
 menu.system.user.manager.view=\u7BA1\u7406\u5458\u5217\u8868
 menu.exam.distributor.view=\u5206\u9500\u5546\u5217\u8868
-menu.exam.enterprise.view=\u4F01\u4E1A\u7528\u6237\u5217\u8868
+menu.exam.enterprise.view=\u641C\u7D22\u4F01\u4E1A
 menu.questionbank.manager=\u9898\u5E93\u7BA1\u7406
 menu.testbackage.manager=\u6D4B\u8BD5\u5305\u7BA1\u7406
 menu.param.manager=\u53C2\u6570\u8BBE\u7F6E
@@ -182,7 +182,7 @@
 menu.exam.user.extend.list=\u7528\u6237\u6269\u5C55\u53C2\u6570\u6743\u9650
 menu.exam.user.extend.add=\u7528\u6237\u6269\u5C55\u53C2\u6570\u589E\u52A0
 menu.exam.user.extend.edit=\u7528\u6237\u6269\u5C55\u53C2\u6570\u4FEE\u6539
-menu.exam.testMember.list=\u67E5\u770B\u8BC4\u6D4B\u4EBA\u5458\u5217\u8868
+menu.exam.testMember.list=\u641C\u7D22\u6D4B\u8BD5\u7528\u6237\u4EBA\u5458
 menu.exam.testMember.add=\u65B0\u589E\u8BC4\u6D4B\u4EBA\u5458
 menu.exam.testMember.edit=\u4FEE\u6539\u8BC4\u6D4B\u4EBA\u5458
 menu.exam.testMember.remove=\u5220\u9664\u8BC4\u6D4B\u4EBA\u5458
@@ -627,7 +627,6 @@
 dict.ic172=\u589E\u52A0\u6B21\u6570
 dict.ic173=\u4F01\u4E1A\u56DE\u6536
 dict.ic174=\u5230\u671F\u56DE\u6536
-dict.ic175=Email Template Configuration
 demography.level.ic1=\u0E25\u0E39\u0E01\u0E08\u0E49\u0E32\u0E07
 demography.level.ic2=\u0E1C\u0E39\u0E49\u0E14\u0E39\u0E41\u0E25\u0E23\u0E30\u0E14\u0E31\u0E1A\u0E15\u0E49\u0E19
 demography.level.ic3=\u0E1C\u0E39\u0E49\u0E08\u0E31\u0E14\u0E01\u0E32\u0E23\u0E23\u0E30\u0E14\u0E31\u0E1A\u0E01\u0E25\u0E32\u0E07
@@ -945,12 +944,14 @@
 the.name.cannot.contain.special.characters=\u4E0D\u652F\u6301\u7279\u6B8A\u7B26\u53F7
 test.user.name=\u6D4B\u8BD5\u7528\u6237\u59D3\u540D
 language.used.in.the.test=\u6D4B\u8BD5\u6240\u7528\u7684\u8BED\u8A00
-current.time=\u5F53\u524D\u65F6\u95F4
+current.time=\u6700\u540E\u72B6\u6001\u65F6\u95F4
 enterprise.customer.name=\u4F01\u4E1A\u5BA2\u6237\u540D\u79F0
 test.product.name=\u6D4B\u8BD5\u4EA7\u54C1\u540D\u79F0
 jsp.main.other.001=\u6700\u8FD1\u5B8C\u6210\u6D4B\u8BD5\u8BB0\u5F55
 jsp.main.other.002=\u6700\u8FD1\u6B63\u5728\u7B54\u9898\u6D4B\u8BD5\u8BB0\u5F55
 jsp.main.other.003=\u6700\u8FD1\u521B\u5EFA\u7684\u6D4B\u8BD5\u5305
+jsp.main.other.004=Most Recent Status Time
+jsp.main.other.005=Product Type
 menu.exam.test_package.search=\u641C\u7D22\u6D4B\u8BD5\u5305
 jsp.exam.package.langtype=Mail Language Type
 jsp.exam.test_package.memberEmailContent=Tester Report Message Content
diff --git a/src/main/resources/static/i18n/messages_zh_CN.properties b/src/main/resources/static/i18n/messages_zh_CN.properties
index 65526eb..a13354d 100644
--- a/src/main/resources/static/i18n/messages_zh_CN.properties
+++ b/src/main/resources/static/i18n/messages_zh_CN.properties
@@ -120,6 +120,7 @@
 menu.system.user.manager.view=\u7BA1\u7406\u5458\u5217\u8868
 menu.exam.distributor.view=\u5206\u9500\u5546\u5217\u8868
 menu.exam.enterprise.view=\u4F01\u4E1A\u7528\u6237\u5217\u8868
+menu.exam.enterprise.view1=\u641C\u7D22\u4F01\u4E1A
 menu.questionbank.manager=\u9898\u5E93\u7BA1\u7406
 menu.testbackage.manager=\u6D4B\u8BD5\u5305\u7BA1\u7406
 menu.param.manager=\u53C2\u6570\u8BBE\u7F6E
@@ -182,7 +183,7 @@
 menu.exam.user.extend.list=\u7528\u6237\u6269\u5C55\u53C2\u6570\u6743\u9650
 menu.exam.user.extend.add=\u7528\u6237\u6269\u5C55\u53C2\u6570\u589E\u52A0
 menu.exam.user.extend.edit=\u7528\u6237\u6269\u5C55\u53C2\u6570\u4FEE\u6539
-menu.exam.testMember.list=\u67E5\u770B\u8BC4\u6D4B\u4EBA\u5458\u5217\u8868
+menu.exam.testMember.list=\u641C\u7D22\u6D4B\u8BD5\u7528\u6237\u4EBA\u5458
 menu.exam.testMember.add=\u65B0\u589E\u8BC4\u6D4B\u4EBA\u5458
 menu.exam.testMember.edit=\u4FEE\u6539\u8BC4\u6D4B\u4EBA\u5458
 menu.exam.testMember.remove=\u5220\u9664\u8BC4\u6D4B\u4EBA\u5458
@@ -307,7 +308,7 @@
 jsp.exam.report.userCode=\u7528\u6237\u7F16\u7801
 jsp.exam.report.downloadPermissions=\u4E0B\u8F7D\u6743\u9650
 jsp.exam.report.answerStatus=\u7B54\u9898\u72B6\u6001
-jsp.exam.report.exportEvaluationUserAnswerRecords=\u5BFC\u51FA\u8BC4\u6D4B\u7528\u6237\u7B54\u9898\u8BB0\u5F55
+jsp.exam.report.exportEvaluationUserAnswerRecords=\u5BFC\u51FA\u6D4B\u8BD5\u6570\u636E
 jsp.exam.report.exportBaseReport=\u91CD\u65B0\u751F\u6210(\u57FA\u7840)\u62A5\u544A\u5E76\u5BFC\u51FA
 jsp.exam.report.exportVerboseReport=\u91CD\u65B0\u751F\u6210(\u8BE6\u7EC6)\u62A5\u544A\u5E76\u5BFC\u51FA
 jsp.exam.report.requestToDownloadTheSecondTestReport=\u7533\u8BF7\u4E0B\u8F7D\u7B2C\u4E8C\u4EFD\u6D4B\u8BD5\u62A5\u544A
@@ -627,7 +628,6 @@
 dict.ic172=\u589E\u52A0\u6B21\u6570
 dict.ic173=\u4F01\u4E1A\u56DE\u6536
 dict.ic174=\u5230\u671F\u56DE\u6536
-dict.ic175=\u90AE\u4EF6\u6A21\u677F\u914D\u7F6E
 demography.level.ic1=\u975E\u7BA1\u7406\u4EBA\u5458
 demography.level.ic2=\u57FA\u5C42\uFF08\u4E00\u7EBF\uFF09\u7BA1\u7406\u4EBA\u5458
 demography.level.ic3=\u4E2D\u5C42\u7BA1\u7406\u4EBA\u5458
@@ -924,7 +924,7 @@
 dict.ic14113=\u5730\u5740\u65E0\u6548
 dict.ic14114=\u5DF2\u7ECF\u6253\u5F00
 confirm.the.need.for.recycling=\u786E\u8BA4\u9700\u8981\u56DE\u6536
-confirm.the.need.for.recycling.apend=\u5417? \u6D4B\u8BD5\u5305\u4E2D\u672A\u767B\u5F55\u8FC7\u7684\u4EBA\u5458\u5C06\u5931\u6548\uFF01=\u5417? \u6D4B\u8BD5\u5305\u4E2D\u672A\u767B\u5F55\u8FC7\u7684\u4EBA\u5458\u5C06\u5931\u6548\uFF01
+confirm.the.need.for.recycling.apend=\u5417? \u6D4B\u8BD5\u5305\u4E2D\u672A\u767B\u5F55\u8FC7\u7684\u4EBA\u5458\u5C06\u5931\u6548\uFF01
 in.special.cases=\u7279\u6B8A\u60C5\u51B5\u4E0B\uFF0C\u8BBE\u7F6E\u4E3A\u201C\u81EA\u5B9A\u6570\u636E\u6743\u9650\u201D
 task.message.202008001=\u786E\u8BA4\u8981\u7ACB\u5373\u6267\u884C\u4E00\u6B21\u4EFB\u52A1\u5417\uFF1F
 task.message.202008002=\u786E\u8BA4\u8981\u505C\u7528\u4EFB\u52A1\u5417\uFF1F
@@ -952,9 +952,11 @@
 test.user.name.dict2=\u6309\u90AE\u7BB1\u641C\u7D22\u6D4B\u8BD5\u7528\u6237
 test.user.name.dict3=\u6309\u624B\u673A\u53F7\u7801\u641C\u7D22\u6D4B\u8BD5\u7528\u6237
 test.user.name.dict4=\u6309\u5BC6\u7801\u641C\u7D22\u6D4B\u8BD5\u7528\u6237
-jsp.main.other.001=\u6700\u8FD1\u5B8C\u6210\u6D4B\u8BD5\u8BB0\u5F55
-jsp.main.other.002=\u6700\u8FD1\u6B63\u5728\u7B54\u9898\u6D4B\u8BD5\u8BB0\u5F55
+jsp.main.other.001=\u6700\u8FD1\u5B8C\u6210\u7684\u6D4B\u8BD5\u8BB0\u5F55
+jsp.main.other.002=\u672A\u5B8C\u6210\u7684\u6D4B\u8BD5\u8BB0\u5F55\uFF08\u6B63\u5728\u7B54\u9898\u6216\u8005\u6682\u65F6\u653E\u5F03\u7B54\u9898\uFF09
 jsp.main.other.003=\u6700\u8FD1\u521B\u5EFA\u7684\u6D4B\u8BD5\u5305
+jsp.main.other.004=\u6700\u540E\u72B6\u6001\u65F6\u95F4
+jsp.main.other.005=\u7C7B\u578B
 menu.exam.test_package.search=\u641C\u7D22\u6D4B\u8BD5\u5305
 jsp.exam.package.langtype=\u90AE\u4EF6\u8BED\u8A00\u7C7B\u578B
 jsp.exam.test_package.memberEmailContent=\u6D4B\u8BD5\u8005\u62A5\u544A\u90AE\u4EF6\u5185\u5BB9
diff --git a/src/main/resources/static/ots.jpg b/src/main/resources/static/ots.jpg
index d3bc2aa..cfdb39b 100644
--- a/src/main/resources/static/ots.jpg
+++ b/src/main/resources/static/ots.jpg
Binary files differ
diff --git a/src/main/resources/static/ots/js/common.js b/src/main/resources/static/ots/js/common.js
index 5fcc985..7d2c51c 100644
--- a/src/main/resources/static/ots/js/common.js
+++ b/src/main/resources/static/ots/js/common.js
@@ -26,9 +26,22 @@
 	// laydate 鏃堕棿鎺т欢缁戝畾
 	if ($(".select-time").length > 0) {
 		layui.use('laydate', function() {
+		    var lobj = {"zh_CN":"cn","en_US":"en"}
+
+		    var lang = "en_US";
+            var query = top.window.location.search.substring(1);
+            var vars = query.split("&");
+            for (var i=0;i<vars.length;i++) {
+                var pair = vars[i].split("=");
+                if(pair[0] == 'lang'){
+                    lang = pair[1];
+                }
+            }
+
 		    var laydate = layui.laydate;
 		    var startDate = laydate.render({
 		        elem: '#startTime',
+                lang: lobj[lang],
 		        max: $('#endTime').val(),
 		        theme: 'molv',
 		        trigger: 'click',
@@ -47,6 +60,7 @@
 		    });
 		    var endDate = laydate.render({
 		        elem: '#endTime',
+                lang: lobj[lang],
 		        min: $('#startTime').val(),
 		        theme: 'molv',
 		        trigger: 'click',
diff --git a/src/main/resources/templates/exam/demographyParam/demographyParam.html b/src/main/resources/templates/exam/demographyParam/demographyParam.html
index 17b6110..cd5a0b3 100644
--- a/src/main/resources/templates/exam/demographyParam/demographyParam.html
+++ b/src/main/resources/templates/exam/demographyParam/demographyParam.html
@@ -45,13 +45,15 @@
                 <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="exam:demographyParam:add">
                     <i class="fa fa-plus"></i> [[#{basis.add}]]
                 </a>
-                <a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="exam:demographyParam:edit">
+                <a style="background-color: #7b76b7;border-color: #7b76b7;color: #FFFFFF"
+                   class="btn single disabled" onclick="$.operate.edit()" shiro:hasPermission="exam:demographyParam:edit">
                     <i class="fa fa-edit"></i> [[#{basis.edit}]]
                 </a>
                 <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="exam:demographyParam:remove">
                     <i class="fa fa-remove"></i> [[#{basis.del}]]
                 </a>
-                <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="exam:demographyParam:export">
+                <a style="background-color: #a87242;border-color: #a87242;color: #FFFFFF"
+                   class="btn" onclick="$.table.exportExcel()" shiro:hasPermission="exam:demographyParam:export">
                     <i class="fa fa-download"></i> [[#{basis.export}]]
                  </a>
             </div>
@@ -145,16 +147,17 @@
                     field : 'remark', 
                     title : [[#{basis.remark}]]
                 },
-                {
-                    title: [[#{basis.operate}]],
-                    align: 'center',
-                    formatter: function(value, row, index) {
-                        var actions = [];
-                        actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.paramId + '\')"><i class="fa fa-edit"></i>'+[[#{basis.edit}]]+'</a> ');
-                        actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.paramId + '\')"><i class="fa fa-remove"></i>'+[[#{basis.del}]]+'</a>');
-                        return actions.join('');
-                    }
-                }]
+                // {
+                //     title: [[#{basis.operate}]],
+                //     align: 'center',
+                //     formatter: function(value, row, index) {
+                //         var actions = [];
+                //         actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.paramId + '\')"><i class="fa fa-edit"></i>'+[[#{basis.edit}]]+'</a> ');
+                //         actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.paramId + '\')"><i class="fa fa-remove"></i>'+[[#{basis.del}]]+'</a>');
+                //         return actions.join('');
+                //     }
+                // }
+                ]
             };
             $.table.init(options);
         });
diff --git a/src/main/resources/templates/exam/distributor/distributor.html b/src/main/resources/templates/exam/distributor/distributor.html
index 1823794..66860c4 100644
--- a/src/main/resources/templates/exam/distributor/distributor.html
+++ b/src/main/resources/templates/exam/distributor/distributor.html
@@ -35,13 +35,13 @@
                 <a class="btn btn-success" onclick="$.operate.addTab()" shiro:hasPermission="exam:distributor:add">
                     <i class="fa fa-plus"></i> [[#{basis.add}]]
                 </a>
-                <a class="btn btn-primary single disabled" onclick="$.operate.editTab()" shiro:hasPermission="exam:distributor:edit">
+                <a class="btn single disabled" style="background-color: #7b76b7;border-color: #7b76b7;color: #FFFFFF" onclick="$.operate.editTab()" shiro:hasPermission="exam:distributor:edit">
                     <i class="fa fa-edit"></i> [[#{basis.edit}]]
                 </a>
                 <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="exam:distributor:remove">
                     <i class="fa fa-remove"></i> [[#{basis.del}]]
                 </a>
-                <a class="btn btn-warning single disabled" onclick="resetpwd()" shiro:hasPermission="exam:enterprise:resetpwd">
+                <a class="btn single disabled" style="background-color: #6fcef3;border-color: #6fcef3;color: #FFFFFF" onclick="resetpwd()" shiro:hasPermission="exam:enterprise:resetpwd">
                     <i class="fa fa-edit"></i> [[#{menu.user.resetpwd}]]
                 </a>
             </div>
@@ -99,10 +99,10 @@
                     align: 'center',
                     formatter: function(value, row, index) {
                         var actions = [];
-                        actions.push('<a class="btn btn-info btn-xs " href="javascript:void(0)" onclick="openEntr(\'' + row.userId + '\')"><i class="fa fa-list-ul"></i>'+[[#{dict.ic108}]]+'</a> ');
-                        actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.editTab(\'' + row.userId + '\')"><i class="fa fa-edit"></i>'+[[#{basis.edit}]]+'</a> ');
-                        actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.userId + '\')"><i class="fa fa-remove"></i>'+[[#{basis.del}]]+'</a> ');
-                        actions.push('<a class="btn btn-danger btn-xs ' + freeloginFlag + '" href="javascript:void(0)" onclick="freelogin(\'' + row.userId + '\')"><i class="fa fa-eye"></i>'+[[#{basis.freelogin}]]+'</a>');
+                        actions.push('<a class="btn btn-xs " style="background-color: #a87242;border-color: #a87242;color: #FFFFFF" href="javascript:void(0)" onclick="openEntr(\'' + row.userId + '\')"><i class="fa fa-list-ul"></i>'+[[#{dict.ic108}]]+'</a> ');
+                        // actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.editTab(\'' + row.userId + '\')"><i class="fa fa-edit"></i>'+[[#{basis.edit}]]+'</a> ');
+                        // actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.userId + '\')"><i class="fa fa-remove"></i>'+[[#{basis.del}]]+'</a> ');
+                        actions.push('<a style="background-color: #b459d4;border-color: #b459d4;color: #FFFFFF" class="btn btn-xs ' + freeloginFlag + '" href="javascript:void(0)" onclick="freelogin(\'' + row.userId + '\')"><i class="fa fa-eye"></i>'+[[#{basis.freelogin}]]+'</a>');
                         actions.push('<a class="btn btn-success btn-xs ' + resetpwdFlag + '" href="javascript:void(0)" onclick="authUser(\'' + row.userId + '\')"><i class="fa fa-edit"></i>'+[[#{jsp.product.package.authorization}]]+'</a> ');
                         return actions.join('');
                     }
diff --git a/src/main/resources/templates/exam/enterprise/add.html b/src/main/resources/templates/exam/enterprise/add.html
index 52de553..3d38916 100644
--- a/src/main/resources/templates/exam/enterprise/add.html
+++ b/src/main/resources/templates/exam/enterprise/add.html
@@ -168,7 +168,7 @@
                 <div class="form-group">
                     <label class="col-sm-4 control-label">[[#{jsp.exam.enterprise.availabletesters}]]锛�</label>
                     <div class="col-sm-8">
-                        <input name="testNum" class="form-control" type="number">
+                        <input name="testNum" class="form-control" type="number" required>
                     </div>
                 </div>
             </div>
diff --git a/src/main/resources/templates/exam/enterprise/enterprise.html b/src/main/resources/templates/exam/enterprise/enterprise.html
index 1caa235..102d433 100644
--- a/src/main/resources/templates/exam/enterprise/enterprise.html
+++ b/src/main/resources/templates/exam/enterprise/enterprise.html
@@ -39,13 +39,13 @@
                 <a class="btn btn-success" onclick="$.operate.addTab()" shiro:hasPermission="exam:enterprise:add">
                     <i class="fa fa-plus"></i> [[#{basis.add}]]
                 </a>
-                <a class="btn btn-primary single disabled" onclick="$.operate.editTab()" shiro:hasPermission="exam:enterprise:edit">
+                <a class="btn single disabled" style="background-color: #7b76b7;border-color: #7b76b7;color: #FFFFFF" onclick="$.operate.editTab()" shiro:hasPermission="exam:enterprise:edit">
                     <i class="fa fa-edit"></i> [[#{basis.edit}]]
                 </a>
-                <a class="btn btn-warning single disabled" onclick="operUseTimes()" shiro:hasPermission="exam:enterprise:editUserTimes">
+                <a class="btn btn-info single disabled" onclick="operUseTimes()" shiro:hasPermission="exam:enterprise:editUserTimes">
                     <i class="fa fa-edit"></i> [[#{jsp.test.number.setting}]]
                 </a>
-                <a class="btn btn-warning single disabled" onclick="resetpwd()" shiro:hasPermission="exam:enterprise:resetpwd">
+                <a class="btn single disabled" style="background-color: #6fcef3;border-color: #6fcef3;color: #FFFFFF" onclick="resetpwd()" shiro:hasPermission="exam:enterprise:resetpwd">
                     <i class="fa fa-edit"></i> [[#{menu.user.resetpwd}]]
                 </a>
                 <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="exam:enterprise:remove">
@@ -119,10 +119,10 @@
                     align: 'center',
                     formatter: function(value, row, index) {
                         var actions = [];
-                        actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.editTab(\'' + row.userId + '\')"><i class="fa fa-edit"></i>'+[[#{basis.edit}]]+'</a> ');
-                        actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.userId + '\')"><i class="fa fa-remove"></i>'+[[#{basis.del}]]+'</a> ');
-                        actions.push('<a class="btn btn-danger btn-xs ' + freeloginFlag + '" href="javascript:void(0)" onclick="freelogin(\'' + row.userId + '\')"><i class="fa fa-eye"></i>'+[[#{basis.freelogin}]]+'</a>');
-                        actions.push('<a class="btn btn-success btn-xs ' + resetpwdFlag + '" href="javascript:void(0)" onclick="authUser(\'' + row.userId + '\')"><i class="fa fa-edit"></i>'+[[#{jsp.product.package.authorization}]]+'</a> ');
+                        // actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.editTab(\'' + row.userId + '\')"><i class="fa fa-edit"></i>'+[[#{basis.edit}]]+'</a> ');
+                        // actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.userId + '\')"><i class="fa fa-remove"></i>'+[[#{basis.del}]]+'</a> ');
+                        actions.push('<a style="background-color: #b459d4;border-color: #b459d4;color: #FFFFFF" class="btn btn-xs ' + freeloginFlag + '" href="javascript:void(0)" onclick="freelogin(\'' + row.userId + '\')"><i class="fa fa-eye"></i>'+[[#{basis.freelogin}]]+'</a>');
+                        actions.push('<a style="background-color: #a87242;border-color: #a87242;color: #FFFFFF" class="btn btn-xs ' + resetpwdFlag + '" href="javascript:void(0)" onclick="authUser(\'' + row.userId + '\')"><i class="fa fa-edit"></i>'+[[#{jsp.product.package.authorization}]]+'</a> ');
                         return actions.join('');
                     }
                 }]
diff --git a/src/main/resources/templates/exam/level/level.html b/src/main/resources/templates/exam/level/level.html
index c07d5a2..9f01b66 100644
--- a/src/main/resources/templates/exam/level/level.html
+++ b/src/main/resources/templates/exam/level/level.html
@@ -42,14 +42,16 @@
                 <i class="fa fa-plus"></i> [[#{jsp.add.language}]]
             </a>
 
-            <a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="exam:level:edit">
+            <a style="background-color: #7b76b7;border-color: #7b76b7;color: #FFFFFF"
+               class="btn single disabled" onclick="$.operate.edit()" shiro:hasPermission="exam:level:edit">
                 <i class="fa fa-edit"></i> [[#{basis.edit}]]
             </a>
             <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()"
                shiro:hasPermission="exam:level:remove">
                 <i class="fa fa-remove"></i> [[#{basis.del}]]
             </a>
-            <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="exam:level:export">
+            <a style="background-color: #a87242;border-color: #a87242;color: #FFFFFF"
+                class="btn" onclick="$.table.exportExcel()" shiro:hasPermission="exam:level:export">
                 <i class="fa fa-download"></i> [[#{basis.export}]]
             </a>
         </div>
@@ -109,8 +111,8 @@
                         if (!uuid) {
                             actions.push('<a class="btn btn-primary btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="detail(\'' + row.uuid + '\')"><i class="fa fa-edit"></i>' +[[#{jsp.main.031}]]+'</a> ');
                         }
-                        actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>' + [[#{basis.edit}]] + '</a> ');
-                        actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>' + [[#{basis.del}]] + '</a>');
+                        // actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>' + [[#{basis.edit}]] + '</a> ');
+                        // actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>' + [[#{basis.del}]] + '</a>');
                         return actions.join('');
                     }
                 }]
diff --git a/src/main/resources/templates/exam/librarycode/librarycode.html b/src/main/resources/templates/exam/librarycode/librarycode.html
index 075b985..a3ede9a 100644
--- a/src/main/resources/templates/exam/librarycode/librarycode.html
+++ b/src/main/resources/templates/exam/librarycode/librarycode.html
@@ -49,7 +49,7 @@
             <a class="btn btn-info" onclick="importExcel()" shiro:hasPermission="exam:librarycode:import">
                 <i class="fa fa-upload"></i> [[#{basis.import}]]
             </a>
-            <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="exam:librarycode:export">
+            <a class="btn btn-default" onclick="$.table.exportExcel()" shiro:hasPermission="exam:librarycode:export">
                 <i class="fa fa-download"></i> [[#{basis.export}]]
             </a>
         </div>
@@ -93,7 +93,7 @@
                 },
                 {
                     field: 'englistContent',
-                    title: [[#{jsp.exam.template.reportdict}]]
+                    title: [[#{jsp.exam.librarycode.englishdictionarycontent}]]
                 },
                 {
                     field: 'chineseContent',
@@ -114,16 +114,17 @@
                     field: 'remark',
                     title: [[#{basis.remark}]]
                 },
-                {
-                    title: [[#{basis.operate}]],
-                    align: 'center',
-                    formatter: function (value, row, index) {
-                        var actions = [];
-                        actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.editTab(\'' + row.id + '\')"><i class="fa fa-edit"></i>[[#{menu.exam.distributor.edit}]]</a> ');
-                        actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>[[#{menu.exam.distributor.remove}]]</a>');
-                        return actions.join('');
-                    }
-                }]
+                // {
+                //     title: [[#{basis.operate}]],
+                //     align: 'center',
+                //     formatter: function (value, row, index) {
+                //         var actions = [];
+                //         actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.editTab(\'' + row.id + '\')"><i class="fa fa-edit"></i>[[#{menu.exam.distributor.edit}]]</a> ');
+                //         actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>[[#{menu.exam.distributor.remove}]]</a>');
+                //         return actions.join('');
+                //     }
+                // }
+                ]
         };
 
         $.table.init(options);
diff --git a/src/main/resources/templates/exam/product/product.html b/src/main/resources/templates/exam/product/product.html
index 12484ce..a61ec57 100644
--- a/src/main/resources/templates/exam/product/product.html
+++ b/src/main/resources/templates/exam/product/product.html
@@ -51,7 +51,8 @@
                shiro:hasPermission="exam:product:remove">
                 <i class="fa fa-remove"></i> [[#{basis.del}]]
             </a>
-            <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="exam:product:export">
+            <a style="background-color: #a87242;border-color: #a87242;color: #FFFFFF"
+                class="btn" onclick="$.table.exportExcel()" shiro:hasPermission="exam:product:export">
                 <i class="fa fa-download"></i> [[#{basis.export}]]
             </a>
         </div>
diff --git a/src/main/resources/templates/exam/question/add-intelligence.html b/src/main/resources/templates/exam/question/add-intelligence.html
index 703eac3..a80d422 100644
--- a/src/main/resources/templates/exam/question/add-intelligence.html
+++ b/src/main/resources/templates/exam/question/add-intelligence.html
@@ -151,7 +151,7 @@
 
     var prefix = ctx + "exam/question";
     var option = [];
-    var clicknum = 2;
+    var clicknum = 6;
     // 澶氳瑷�鐨剈uid
     var uuid = $("input[name='uuid']").val();
 
@@ -209,15 +209,14 @@
             if (clicknum < 0 || clicknum > 26) {
                 return;
             }
-
             //娣诲姞绛旀椤�
             var $content = $('#optionTemplte').clone();
             $content.removeAttrs('id');
             $content.removeAttrs('hidden');
             $content.removeAttrs('style');
             var $contenChildren = $content.children();
-            $contenChildren.eq(0).html(option[clicknum]);
-            $contenChildren.eq(1).val(option[clicknum]);
+            $contenChildren.eq(0).html(clicknum);
+            $contenChildren.eq(1).val(clicknum);
             clicknum++;
             $('#optionEdit').append($content);
         });
diff --git a/src/main/resources/templates/exam/question/question.html b/src/main/resources/templates/exam/question/question.html
index e20f05c..271a9af 100644
--- a/src/main/resources/templates/exam/question/question.html
+++ b/src/main/resources/templates/exam/question/question.html
@@ -181,11 +181,11 @@
                             actions.push('<a class="btn btn-primary btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="detail(\'' + row.id + '\',\'' + row.levelId + '\')" ><i class="fa fa-edit"></i>[[#{jsp.main.031}]]</a> ');
                         }
                         if (uuid) {
-                            actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="editlan(\''+ row.langType + '\')"><i class="fa fa-edit"></i>' + [[#{basis.edit}]] + '</a> ');
-                            actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="deletelan(\'' + row.langType + '\')"><i class="fa fa-remove"></i>' + [[#{basis.del}]] + '</a>');
+                            actions.push('<a class="btn btn-info btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="editlan(\''+ row.langType + '\')"><i class="fa fa-edit"></i>' + [[#{basis.edit}]] + '</a> ');
+                            // actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="deletelan(\'' + row.langType + '\')"><i class="fa fa-remove"></i>' + [[#{basis.del}]] + '</a>');
                         } else {
                             // actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.editTab(\'' + row.id + '\')"><i class="fa fa-edit"></i>' + [[#{basis.edit}]] + '</a> ');
-                            actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>' + [[#{basis.del}]] + '</a>');
+                            // actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>' + [[#{basis.del}]] + '</a>');
                         }
                         return actions.join('');
                     }
diff --git a/src/main/resources/templates/exam/template/template.html b/src/main/resources/templates/exam/template/template.html
index 8a12fc2..fd89f10 100644
--- a/src/main/resources/templates/exam/template/template.html
+++ b/src/main/resources/templates/exam/template/template.html
@@ -44,13 +44,15 @@
                 <a class="btn btn-success" onclick="$.operate.addTab()" shiro:hasPermission="exam:template:add">
                     <i class="fa fa-plus"></i> [[#{dict.ic18}]]
                 </a>
-                <a class="btn btn-primary single disabled" onclick="$.operate.editTab()" shiro:hasPermission="exam:template:edit">
+                <a style="background-color: #7b76b7;border-color: #7b76b7;color: #FFFFFF"
+                   class="btn single disabled" onclick="$.operate.editTab()" shiro:hasPermission="exam:template:edit">
                     <i class="fa fa-edit"></i> [[#{dict.ic19}]]
                 </a>
                 <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="exam:template:remove">
                     <i class="fa fa-remove"></i> [[#{dict.ic20}]]
                 </a>
-                <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="exam:template:export">
+                <a style="background-color: #a87242;border-color: #a87242;color: #FFFFFF"
+                   class="btn" onclick="$.table.exportExcel()" shiro:hasPermission="exam:template:export">
                     <i class="fa fa-download"></i> [[#{dict.ic22}]]
                 </a>
                 <a class="btn btn-danger+" onclick="emailEdit()" shiro:hasPermission="exam:email:edit">
@@ -116,16 +118,17 @@
                     field : 'remark', 
                     title : [[#{basis.remark}]]
                 },
-                {
-                    title: [[#{operating.operating}]],
-                    align: 'center',
-                    formatter: function(value, row, index) {
-                        var actions = [];
-                        actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.editTab(\'' + row.id + '\')"><i class="fa fa-edit"></i>[[#{menu.exam.distributor.edit}]]</a> ');
-                        actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>[[#{dict.ic20}]]</a>');
-                        return actions.join('');
-                    }
-                }]
+                // {
+                //     title: [[#{operating.operating}]],
+                //     align: 'center',
+                //     formatter: function(value, row, index) {
+                //         var actions = [];
+                //         actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.editTab(\'' + row.id + '\')"><i class="fa fa-edit"></i>[[#{menu.exam.distributor.edit}]]</a> ');
+                //         actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>[[#{dict.ic20}]]</a>');
+                //         return actions.join('');
+                //     }
+                // }
+                ]
             };
             $.table.init(options);
         });
diff --git a/src/main/resources/templates/exam/testMember/add.html b/src/main/resources/templates/exam/testMember/add.html
index a054178..e646345 100644
--- a/src/main/resources/templates/exam/testMember/add.html
+++ b/src/main/resources/templates/exam/testMember/add.html
@@ -40,7 +40,7 @@
         <div class="form-group">
             <label class="col-sm-3 control-label">[[#{basis.remark}]]锛�</label>
             <div class="col-sm-8">
-                <input name="remark" class="form-control" type="text" required>
+                <input name="remark" class="form-control" type="text">
             </div>
         </div>
     </form>
diff --git a/src/main/resources/templates/exam/testMember/edit.html b/src/main/resources/templates/exam/testMember/edit.html
index d5e5290..0de8a3c 100644
--- a/src/main/resources/templates/exam/testMember/edit.html
+++ b/src/main/resources/templates/exam/testMember/edit.html
@@ -40,7 +40,7 @@
             <div class="form-group">
                 <label class="col-sm-3 control-label">[[#{basis.remark}]]锛�</label>
                 <div class="col-sm-8">
-                    <input name="remark" th:field="*{remark}" class="form-control" type="text" required>
+                    <input name="remark" th:field="*{remark}" class="form-control" type="text">
                 </div>
             </div>
             <div th:if="*{status==0}" class="form-group">
diff --git a/src/main/resources/templates/exam/testMember/testMember.html b/src/main/resources/templates/exam/testMember/testMember.html
index 697eda5..c360842 100644
--- a/src/main/resources/templates/exam/testMember/testMember.html
+++ b/src/main/resources/templates/exam/testMember/testMember.html
@@ -23,7 +23,7 @@
                             <input type="text" id="testIdSh" name="testIdSh" readonly th:value="${packageTestName}">
                         </li>
                         <li>
-                            <p>[[#{basis.name}]]</p>
+                            <p>[[#{jsp.testPackage.name}]]</p>
                             <input type="text" name="memberName"/>
                         </li>
                         <!--<li>
@@ -69,7 +69,8 @@
             <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="exam:testMember:add">
                 <i class="fa fa-plus"></i> [[#{basis.add}]]
             </a>
-            <a class="btn btn-primary single disabled" onclick="$.operate.edit()"
+            <a style="background-color: #7b76b7;border-color: #7b76b7;color: #FFFFFF"
+                class="btn single disabled" onclick="$.operate.edit()"
                shiro:hasPermission="exam:testMember:edit">
                 <i class="fa fa-edit"></i> [[#{basis.edit}]]
             </a>
@@ -77,7 +78,8 @@
                shiro:hasPermission="exam:testMember:remove">
                 <i class="fa fa-remove"></i> [[#{basis.del}]]
             </a>
-            <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="exam:testMember:export">
+            <a style="background-color: #a87242;border-color: #a87242;color: #FFFFFF"
+                class="btn" onclick="$.table.exportExcel()" shiro:hasPermission="exam:testMember:export">
                 <i class="fa fa-download"></i> [[#{basis.export}]]
             </a>
             <a class="btn btn-info" onclick="importExcel()" shiro:hasPermission="exam:testMember:batchimport">
@@ -249,9 +251,9 @@
                     align: 'center',
                     formatter: function (value, row, index) {
                         var actions = [];
-                        actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.memberId + '\')"><i class="fa fa-edit"></i>' + [[#{basis.edit}]] + '</a> ');
-                        actions.push('<a class="btn btn-warning btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="openMemberReport(' + row.memberId + "," + row.testId + ')"><i class="fa fa-edit"></i>[[#{view.report}]]</a> ');
-                        actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.memberId + '\')"><i class="fa fa-remove"></i>' + [[#{basis.del}]] + '</a>');
+                        // actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.memberId + '\')"><i class="fa fa-edit"></i>' + [[#{basis.edit}]] + '</a> ');
+                        actions.push('<a style="background-color: #b459d4;border-color: #b459d4;color: #FFFFFF" class="btn btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="openMemberReport(' + row.memberId + "," + row.testId + ')"><i class="fa fa-edit"></i>[[#{view.report}]]</a> ');
+                        // actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.memberId + '\')"><i class="fa fa-remove"></i>' + [[#{basis.del}]] + '</a>');
                         return actions.join('');
                     }
                 }]
diff --git a/src/main/resources/templates/exam/test_package/test_package.html b/src/main/resources/templates/exam/test_package/test_package.html
index 0d36314..c051318 100644
--- a/src/main/resources/templates/exam/test_package/test_package.html
+++ b/src/main/resources/templates/exam/test_package/test_package.html
@@ -15,7 +15,7 @@
                             <input type="text" name="userName"/>
                         </li>
                         <li>
-                            <p>[[#{basis.name}]]锛�</p>
+                            <p>[[#{jsp.exam.report.TestPackage}]]锛�</p>
                             <input type="text" name="testName" th:value="${testName}"/>
                         </li>
                         <li>
@@ -77,7 +77,8 @@
             <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="exam:test_package:add">
                 <i class="fa fa-plus"></i> [[#{basis.create}]]
             </a>
-            <a class="btn btn-primary single disabled" onclick="$.operate.edit()"
+            <a style="background-color: #7b76b7;border-color: #7b76b7;color: #FFFFFF"
+               class="btn single disabled" onclick="$.operate.edit()"
                shiro:hasPermission="exam:test_package:edit">
                 <i class="fa fa-edit"></i> [[#{basis.edit}]]
             </a>
@@ -85,13 +86,16 @@
                shiro:hasPermission="exam:test_package:remove">
                 <i class="fa fa-remove"></i> [[#{basis.del}]]
             </a>
-            <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="exam:test_package:export">
+            <a style="background-color: #a87242;border-color: #a87242;color: #FFFFFF"
+                class="btn" onclick="$.table.exportExcel()" shiro:hasPermission="exam:test_package:export">
                 <i class="fa fa-download"></i> [[#{basis.export}]]
             </a>
-            <a class="btn btn-default" onclick="javascript:recover()" shiro:hasPermission="exam:test_package:recover">
+            <a style="background-color: #6fcef3;border-color: #6fcef3;color: #FFFFFF"
+               class="btn" onclick="javascript:recover()" shiro:hasPermission="exam:test_package:recover">
                 <i class="fa fa-address-book"></i> [[#{jsp.exam.test_package.006}]]
             </a>
-            <a class="btn btn-warning" onclick="javascript:testReport()" shiro:hasPermission="exam:test_package:testreport">
+            <a style="background-color:#b459d4;color:#ffffff"
+                class="btn" onclick="javascript:testReport()" shiro:hasPermission="exam:test_package:testreport">
                 <i class="fa fa-download"></i> [[#{jsp.exam.test_package.007}]]
             </a>
         </div>
@@ -235,8 +239,8 @@
                     align: 'center',
                     formatter: function (value, row, index) {
                         var actions = [];
-                        actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>'+[[#{basis.edit}]]+'</a> ');
-                        actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>'+[[#{basis.del}]]+'</a>');
+                        // actions.push('<a class="btn btn-info btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>'+[[#{basis.edit}]]+'</a> ');
+                        // actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>'+[[#{basis.del}]]+'</a>');
                         return actions.join('');
                     }
                 }]
diff --git a/src/main/resources/templates/exam/userpaper/edit.html b/src/main/resources/templates/exam/userpaper/edit.html
index bcf0726..5b7cd29 100644
--- a/src/main/resources/templates/exam/userpaper/edit.html
+++ b/src/main/resources/templates/exam/userpaper/edit.html
@@ -15,7 +15,7 @@
             <div class="select-list col-sm-8">
                 <ul>
                     <li>
-                        <select id="prodId" name="prodId" class="select2-container" onchange="testTypeChange()" >
+                        <select id="prodId" name="prodId" class="select2-container" onchange="testTypeChange()">
                             <option th:each="dict : ${userProds}" th:text="${dict.name}"
                                     th:value="${dict.id} "></option>
                         </select>
@@ -26,22 +26,30 @@
         <div class="form-group">
             <label class="col-sm-3 control-label">[[#{jsp.exam.productReportTemplate}]]锛�</label>
             <div class="col-sm-8">
-                <select id="reportTemplateId" name="reportTemplateId" class="form-control noselect2 selectpicker"
-                        multiple>
-                    <option th:each="dict : ${templateList}" th:text="${dict['reportType']}"
-                            th:value="${dict['id']}"></option>
-                </select>
-<!--                <select id="reportTemplateIdAll" name="reportTemplateIdAll" class="form-control noselect2 selectpicker"-->
+<!--                <select id="reportTemplateId" name="reportTemplateId" class="form-control noselect2 selectpicker"-->
 <!--                        multiple>-->
 <!--                    <option th:each="dict : ${templateList}" th:text="${dict['reportType']}"-->
 <!--                            th:value="${dict['id']}"></option>-->
 <!--                </select>-->
+                <ui id="tempB">
+                    <li>
+                        <span th:each="temp:${templateList}" style="margin-right:10px;">
+                            <input type="checkbox" th:value="${temp.id}" name="templateN">
+                            <span th:text="${temp.reportType}" name="unitspan"></span>
+                        </span>
+                    </li>
+                </ui>
+                <!--                <select id="reportTemplateIdAll" name="reportTemplateIdAll" class="form-control noselect2 selectpicker"-->
+                <!--                        multiple>-->
+                <!--                    <option th:each="dict : ${templateList}" th:text="${dict['reportType']}"-->
+                <!--                            th:value="${dict['id']}"></option>-->
+                <!--                </select>-->
             </div>
         </div>
         <div class="form-group">
             <label class="col-sm-1 control-label"></label>
             <div class="col-sm-2">
-                <a class="btn btn-success" onclick="insertRow()">
+                <a class="btn btn-success" onclick="insertRow()" >
                     <i class="fa fa-plus"></i> [[#{jsp.product.package.authorization}]]
                 </a>
             </div>
@@ -59,6 +67,7 @@
 <th:block th:include="include :: bootstrap-select-js"/>
 <script type="text/javascript">
     var prefix = ctx + "exam/paper";
+
     $("#form-demographyParam-edit").validate({
         focusCleanup: true
     });
@@ -106,36 +115,56 @@
         $.table.init(options);
     });
 
+    function testTypeChange() {
+        var prodName = $("#prodId option:selected").text();
+        if ("鐫块偦" == prodName) {
+            prodName = "RuiLin";
+        }
+        $("#tempB").empty();
+        $.post(prefix + "/filterTemplate/" + prodName, function (data) {
+            for (var i = 0; i < data.length; i++) {
+                $("#tempB").append('<li><span><input type="checkbox" name="templateN" value="'+data[i].id+'">' +data[i].reportType + '</span></span></li>');
+            }
+        });
+    }
+
     /*[[#{basis.add}]]琛ㄦ牸琛� */
     function insertRow() {
+
+        var arr = [];
+        $("input[name='templateN']:checked").each(function (index, item) {//
+            arr.push($(this).val());
+        });
+
+        var reportTemplateId = "";
+        for (var i = 0; i < arr.length; i++) {
+            if (i == arr.length - 1) {
+                reportTemplateId = reportTemplateId + arr[i]
+            } else {
+                reportTemplateId = reportTemplateId + arr[i] + ",";
+            }
+        }
+
         var prodId = $("#prodId").val();
         var prodName = $("#prodId option:selected").text();
-        var arr = $("#reportTemplateId").val();//鍙栧�兼槸涓�涓暟缁�
-        var reportTemplateId = "";
-        for(var i = 0; i < arr.length; i++) {
-            if (i==arr.length-1) {
-                reportTemplateId=reportTemplateId+arr[i]
-            }else {
-                reportTemplateId=reportTemplateId+arr[i]+",";
+
+        $.post(prefix + "/reportTemplateText/" + reportTemplateId, function (data) {
+            if (checkDuplicate(prodId)) {
+                $.modal.alertWarning('瀛樺湪浜у搧鍖呮潈闄愶紝涓嶅厑璁搁噸澶嶆坊鍔狅紒');
+                return;
             }
-        }
 
-        var reportTemplateText = $("#reportTemplateId option:selected").text();
+            $.btTable.bootstrapTable('insertRow', {
+                index: 0, // 浣犳兂鎻掑叆鍒板摢锛�0琛ㄧず绗竴琛�
+                row: {
+                    prodId: prodId,
+                    reportTemplateId: reportTemplateId,
+                    reportTemplateText: data,
+                    prodName: prodName
+                }
+            })
+        });
 
-        if (checkDuplicate(prodId)) {
-            $.modal.alertWarning('瀛樺湪浜у搧鍖呮潈闄愶紝涓嶅厑璁搁噸澶嶆坊鍔狅紒');
-            return;
-        }
-
-        $.btTable.bootstrapTable('insertRow', {
-            index: 0, // 浣犳兂鎻掑叆鍒板摢锛�0琛ㄧず绗竴琛�
-            row: {
-                prodId: prodId,
-                reportTemplateId: reportTemplateId,
-                reportTemplateText: reportTemplateText,
-                prodName: prodName
-            }
-        })
     }
 
     function checkDuplicate(prodId) {
diff --git a/src/main/resources/templates/exam/userpaper/userPaper.html b/src/main/resources/templates/exam/userpaper/userPaper.html
index fb6ecec..b0c1f13 100644
--- a/src/main/resources/templates/exam/userpaper/userPaper.html
+++ b/src/main/resources/templates/exam/userpaper/userPaper.html
@@ -120,7 +120,7 @@
                     align: 'center',
                     formatter: function (value, row, index) {
                         var actions = [];
-                        actions.push('<a class="btn btn-success btn-xs href="javascript:void(0)" onclick="$.operate.edit(\'' + row.userId + '\')"><i class="fa fa-edit"></i>'+[[#{jsp.product.package.authorization}]]+'</a> ');
+                        actions.push('<a style="background-color: #a87242;border-color: #a87242;color: #FFFFFF" class="btn btn-success btn-xs href="javascript:void(0)" onclick="$.operate.edit(\'' + row.userId + '\')"><i class="fa fa-edit"></i>'+[[#{jsp.product.package.authorization}]]+'</a> ');
                         return actions.join('');
                     }
                 }]
diff --git a/src/main/resources/templates/include.html b/src/main/resources/templates/include.html
index 343076f..9e44cb6 100644
--- a/src/main/resources/templates/include.html
+++ b/src/main/resources/templates/include.html
@@ -173,4 +173,4 @@
 <div th:fragment="bootstrap-table-reorder-js">
 	<script th:src="@{/ajax/libs/bootstrap-table/extensions/reorder/bootstrap-table-reorder.js}"></script>
 	<script th:src="@{/ajax/libs/bootstrap-table/extensions/reorder/jquery.tablednd.js}"></script>
-</div>
\ No newline at end of file
+</div>
diff --git a/src/main/resources/templates/main.html b/src/main/resources/templates/main.html
index ad95bc4..f603c95 100644
--- a/src/main/resources/templates/main.html
+++ b/src/main/resources/templates/main.html
@@ -10,11 +10,11 @@
             <form id="post-form1">
                 <div class="select-list">
                     <ul>
-                        <li>
+                        <li  id="hideA">
                             <p>[[#{jsp.exam.enterprise.companyname}]]锛�</p>
                             <input type="text" name="userName" id="userName" value=""/>
                         </li>
-                        <li>
+                        <li  id="hideB">
                             <a class="btn btn-primary btn-rounded btn-sm" onclick="openUserList()">
                             <i class="fa fa-search"></i>&nbsp;[[#{menu.exam.enterprise.view}]]</a>
                         </li>
@@ -42,14 +42,6 @@
                 </div>
             </form>
         </div>
-<!--        <div class="col-sm-12 select-table" id="enterpriseInfo">-->
-<!--            <p class="select-title" align="center">浼佷笟淇℃伅</p>-->
-<!--            <table id="bootstrap-table1" data-mobile-responsive="true"></table>-->
-<!--        </div>-->
-<!--        <div class="col-sm-12 select-table" id="memberInfo">-->
-<!--            <p class="select-title" align="center">鐢ㄦ埛淇℃伅</p>-->
-<!--            <table id="bootstrap-table2" data-mobile-responsive="true"></table>-->
-<!--        </div>-->
         <div class="col-sm-12 select-table">
             <p class="select-title" align="center">[[#{jsp.main.other.001}]]</p>
             <table id="bootstrap-table-form1" data-mobile-responsive="true"></table>
@@ -80,72 +72,18 @@
     var statusDatas = [[${@dict.getType('test_status')}]];
     var userId = [[${user.userId}]];
 
-    // $(function () {
-    //     var options = {
-    //         id: "bootstrap-table1",
-    //         url: ctx + "exam/extend/list2?userType=02",
-    //         showSearch: false,
-    //         showRefresh: false,
-    //         showToggle: false,
-    //         showColumns: false,
-    //         createUrl: ctx + "exam/enterprise/add",
-    //         updateUrl: ctx + "exam/enterprise/edit/{id}",
-    //         removeUrl: ctx + "exam/enterprise/remove",
-    //         exportUrl: ctx + "exam/enterprise/export",
-    //         modalName: [[#{jsp.exam.demographyParam.businessuser}]],
-    //         // showRefresh: true,
-    //         queryParams: queryParams,
-    //         pageSize: 10,
-    //         pageList: [10, 50, 100],
-    //         columns: [
-    //             {
-    //                 field: 'userId',
-    //                 title: 'ID'
-    //             },
-    //             {
-    //                 field: 'loginName',
-    //                 title: [[#{jsp.exam.distributor.loginname}]]
-    //             },
-    //             {
-    //                 field: 'userName',
-    //                 title: [[#{jsp.exam.enterprise.companyname}]]
-    //             },
-    //             {
-    //                 field: 'businessManager',
-    //                 title: [[#{jsp.exam.distributor.businessmanager}]]
-    //             },
-    //             {
-    //                 field: 'testNum',
-    //                 title: [[#{jsp.exam.enterprise.usetimes}]],
-    //                 formatter: function (value, row, index) {
-    //                     return '<a href="javascript:void(0)" onclick="modifyUsageCount(\'' + row.id + '\')">' + value + '</a>';
-    //                 }
-    //             },
-    //             {
-    //                 field: 'effectTime',
-    //                 title: [[#{jsp.exam.enterprise.effectivetime}]]
-    //             },
-    //             {
-    //                 field: 'invalidTime',
-    //                 title: [[#{jsp.exam.distributor.termcooperation}]]
-    //             },
-    //             {
-    //                 field: 'legalPerson',
-    //                 title: [[#{jsp.exam.enterprise.corporate}]]
-    //             },
-    //             {
-    //                 title: [[#{basis.operate}]],
-    //                 align: 'center',
-    //                 formatter: function (value, row, index) {
-    //                     var actions = [];
-    //                     actions.push('<a class="btn btn-danger btn-xs " href="javascript:void(0)" onclick="freelogin(\'' + row.userId + '\')"><i class="fa fa-eye"></i>' + [[#{basis.freelogin}]] + '</a>');
-    //                     return actions.join('');
-    //                 }
-    //             }
-    //         ]
-    //     };
-    //     $.table.init(options);
-    // });
+    $(function(){ //浠g爜閮ㄥ垎
+        $.ajax({
+            type: "post",
+            url: ctx + "exam/enterprise/checkUser",
+            success: function (data) {
+                if(data.code=='0') {
+                    $("#hideA").css('display','none');
+                    $("#hideB").css('display','none');
+                }
+            }
+        });
+    })
 
     function freelogin(id) {
         $.ajax({
@@ -183,146 +121,6 @@
         }
         $("#" + tableId).bootstrapTable('refresh', params);
     }
-
-    // function searchDefine2() {
-    //     var tableId = 'bootstrap-table2';
-    //     var params = {
-    //         queryValue: $("#queryValue").val(),
-    //         queryType: $("#queryType").val(),
-    //         limit: 10,
-    //     }
-    //     $("#" + tableId).bootstrapTable('refresh', params);
-    // }
-    //
-    // $(function () {
-    //     var options = {
-    //         id: "bootstrap-table2",
-    //         url: ctx + "exam/testMember" + "/list",
-    //         showSearch: false,
-    //         showRefresh: false,
-    //         showToggle: false,
-    //         showColumns: false,
-    //         createUrl: ctx + "exam/testMember" + "/add/" + $("#testId").val(),
-    //         updateUrl: ctx + "exam/testMember" + "/edit/{id}",
-    //         removeUrl: ctx + "exam/testMember" + "/remove",
-    //         exportUrl: ctx + "exam/testMember" + "/export",
-    //         exportUrlLinkTest: ctx + "exam/testMember" + "/exportLinkTest",
-    //         importUrl: ctx + "exam/testMember" + "/importData/" + $("#testId").val(),
-    //         importTemplateUrl: ctx + "exam/testMember" + "/importTemplate",
-    //         modalName: [[#{jsp.exam.test_package.032}]],
-    //         pageSize: 10,
-    //         pageList: [10, 50, 100],
-    //         queryParams: queryParams2,
-    //         // queryParams: function (params) {
-    //         //     var temp = {
-    //         //         queryValue:$("#queryValue").val(),
-    //         //         queryType: $("#queryType").val(),
-    //         //     }
-    //         //     return temp;
-    //         // },
-    //         columns: [
-    //             {
-    //                 field: 'memberId',
-    //                 title: [[#{jsp.exam.test_package.033}]],
-    //                 visible: false
-    //             },
-    //             {
-    //                 field: 'memberName',
-    //                 title: [[#{jsp.exam.report.008}]]
-    //             },
-    //             {
-    //                 field: 'memberDept',
-    //                 title: [[#{jsp.system.dept.002}]],
-    //                 sortable: true
-    //
-    //             },
-    //             {
-    //                 field: 'memberEmail',
-    //                 title: [[#{jsp.system.user.profile.005}]]
-    //             },
-    //             {
-    //                 field: 'memberPhone',
-    //                 title: [[#{jsp.system.user.profile.003}]]
-    //             },
-    //             {
-    //                 field: 'testId',
-    //                 title: [[#{jsp.exam.report.014}]],
-    //                 visible: false
-    //             },
-    //             {
-    //                 field: 'startTime',
-    //                 title: [[#{jsp.exam.test_package.startTime}]]
-    //             },
-    //             {
-    //                 field: 'endTime',
-    //                 title: [[#{jsp.exam.test_package.endTime}]]
-    //             },
-    //             {
-    //                 field: 'smsStatus',
-    //                 title: [[#{jsp.exam.test_package.035}]],
-    //                 formatter: function (value, row, index) {
-    //                     return $.table.selectDictLabel(sms_type, value);
-    //                 }
-    //             },
-    //             {
-    //                 field: 'smsTime',
-    //                 title: [[#{jsp.exam.test_package.036}]]
-    //             },
-    //             {
-    //                 field: 'emailStatus',
-    //                 title: [[#{jsp.exam.test_package.037}]],
-    //                 formatter: function (value, row, index) {
-    //                     return $.table.selectDictLabel(email_status, value);
-    //                 }
-    //             },
-    //             {
-    //                 field: 'emailTime',
-    //                 title: [[#{jsp.exam.test_package.038}]]
-    //             },
-    //             {
-    //                 field: 'status',
-    //                 title: [[#{basis.state}]],
-    //                 formatter: function (value, row, index) {
-    //                     return $.table.selectDictLabel(test_member_status, value);
-    //                 }
-    //             },
-    //             {
-    //                 field: 'remark',
-    //                 title: [[#{basis.remark}]]
-    //             },
-    //             {
-    //                 field: 'token',
-    //                 title: [[#{jsp.exam.test_package.testtoken}]],
-    //                 visible: false
-    //             },
-    //             {
-    //                 field: 'hrEmailStatus',
-    //                 title: [[#{hr.mailbox.status}]],
-    //                 formatter: function (value, row, index) {
-    //                     if (value == 1) {
-    //                         return [[#{dict.ic138}]];
-    //                     } else if (value == 2) {
-    //                         return [[#{dict.ic140}]];
-    //                     } else {
-    //                         return "-";
-    //                     }
-    //                 },
-    //                 visible: false
-    //             },
-    //             {
-    //                 title: [[#{basis.operate}]],
-    //                 align: 'center',
-    //                 formatter: function (value, row, index) {
-    //                     var actions = [];
-    //                     actions.push('<a class="btn btn-success btn-xs " href="javascript:void(0)" onclick="openTestDetail(\'' + row.token + '\')"><i class="fa fa-edit"></i>[[#{jsp.exam.test_package.testinfo}]]</a> ');
-    //                     actions.push('<a class="btn btn-warning btn-xs " href="javascript:void(0)" onclick="openMemberReport(' + row.memberId + "," + row.testId + ')"><i class="fa fa-edit"></i>[[#{view.report}]]</a> ');
-    //                     return actions.join('');
-    //                 }
-    //             }
-    //         ]
-    //     };
-    //     $.table.init(options);
-    // });
 
     // 鏌ョ湅娴嬭瘯杩涘害
     function openTestDetail(token) {
@@ -421,11 +219,6 @@
         $.modal.openTab([[#{menu.exam.enterprise.view}]], url);
     }
 
-    function openPackageList() {
-        var url = ctx + 'exam/test_package/searchTestPackage?testName=' + $("#testName").val();
-        $.modal.openTab([[#{menu.exam.test_package.search}]], url);
-    }
-
     function openMemberSearch() {
         var url = ctx + 'exam/testMember/memberQuery?queryType=' + $("#queryType").val() + '&queryValue=' + $("#queryValue").val();
         $.modal.openTab([[#{menu.exam.testMember.list}]], url);
@@ -488,16 +281,16 @@
                     field: 'langType',
                     title: [[#{language.used.in.the.test}]]
                 },
-                {
-                    field: 'status',
-                    title: [[#{basis.state}]],
-                    formatter: function (value, row, index) {
-                        return $.table.selectDictLabel(test_member_status, value);
-                    }
-                },
+                // {
+                //     field: 'status',
+                //     title: [[#{basis.state}]],
+                //     formatter: function (value, row, index) {
+                //         return $.table.selectDictLabel(test_member_status, value);
+                //     }
+                // },
                 {
                     field: 'startTime',
-                    title: [[#{current.time}]]
+                    title: [[#{jsp.main.other.004}]]
                 },
             ]
         };
@@ -549,7 +342,7 @@
                 },
                 {
                     field: 'userName',
-                    title: [[#{jsp.exam.enterprise.companyname}]],
+                    title: [[#{enterprise.customer.name}]],
                     formatter: function (value, row, index) {
                         // return '<a href="javascript:void(0)" onclick="userDetail(\'' + row.userId + '\')">' + value + '</a>';
                         return '<a href="javascript:void(0)" onclick="freelogin(\'' + row.userId + '\')">' + value + '</a>';
@@ -561,7 +354,7 @@
                 },
                 {
                     field: 'testType',
-                    title: [[#{basis.type}]],
+                    title: [[#{jsp.main.other.005}]],
                     formatter: function (value, row, index) {
                         return $.table.selectDictLabel(testTypeDatas, value);
                     }
@@ -577,21 +370,21 @@
                     field: 'testNum',
                     title: [[#{jsp.exam.test_package.009}]]
                 },
-                {
-                    field: 'finishNum',
-                    title: [[#{jsp.exam.test_package.010}]]
-                }, {
-                    field: 'testingNum',
-                    title: [[#{jsp.exam.test_package.0101}]]
-                },
-                {
-                    field: 'unTestNum',
-                    title: [[#{jsp.exam.test_package.011}]]
-                },
-                {
-                    field: 'testEmail',
-                    title: [[#{jsp.exam.test_package.012}]]
-                },
+                // {
+                //     field: 'finishNum',
+                //     title: [[#{jsp.exam.test_package.010}]]
+                // }, {
+                //     field: 'testingNum',
+                //     title: [[#{jsp.exam.test_package.0101}]]
+                // },
+                // {
+                //     field: 'unTestNum',
+                //     title: [[#{jsp.exam.test_package.011}]]
+                // },
+                // {
+                //     field: 'testEmail',
+                //     title: [[#{jsp.exam.test_package.012}]]
+                // },
                 {
                     field: 'invalidTime',
                     title: [[#{jsp.exam.test_package.004}]],
@@ -651,7 +444,7 @@
     /*浼佷笟鐢ㄦ埛鎴栬�呭垎閿�鍟嗙晫闈�-璇︾粏*/
     function userDetail(userId) {
         var url = ctx + "exam/distributor";
-        $.modal.openTab([[#{menu.exam.enterprise.view}]], url);
+        $.modal.openTab([[#{menu.exam.enterprise.view1}]], url);
     }
 </script>
 </body>
diff --git a/src/main/resources/templates/monitor/job/job.html b/src/main/resources/templates/monitor/job/job.html
index 8927114..ade8659 100644
--- a/src/main/resources/templates/monitor/job/job.html
+++ b/src/main/resources/templates/monitor/job/job.html
@@ -38,13 +38,15 @@
 				<a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="monitor:job:add">
 	                <i class="fa fa-plus"></i>[[#{basis.add}]]
 	            </a>
-	            <a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="monitor:job:edit">
+	            <a style="background-color: #7b76b7;border-color: #7b76b7;color: #FFFFFF"
+				   class="btn single disabled" onclick="$.operate.edit()" shiro:hasPermission="monitor:job:edit">
 		            <i class="fa fa-edit"></i> [[#{basis.edit}]]
 		        </a>
 				<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="monitor:job:remove">
 		            <i class="fa fa-remove"></i> [[#{basis.del}]]
 		        </a>
-		         <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="monitor:job:export">
+		         <a style="background-color: #a87242;border-color: #a87242;color: #FFFFFF"
+					class="btn" onclick="$.table.exportExcel()" shiro:hasPermission="monitor:job:export">
 		            <i class="fa fa-download"></i> [[#{basis.export}]]
 		        </a>
 		        <a class="btn btn-info" onclick="javascript:jobLog()" shiro:hasPermission="monitor:job:list">
diff --git a/src/main/resources/templates/monitor/job/jobLog.html b/src/main/resources/templates/monitor/job/jobLog.html
index 220c66a..ce99fb7 100644
--- a/src/main/resources/templates/monitor/job/jobLog.html
+++ b/src/main/resources/templates/monitor/job/jobLog.html
@@ -48,7 +48,8 @@
 	            <a class="btn btn-danger" onclick="$.operate.clean()" shiro:hasPermission="monitor:job:remove">
 	                <i class="fa fa-trash"></i> [[#{basis.clear}]]
 	            </a>
-	            <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="monitor:job:export">
+	            <a style="background-color: #a87242;border-color: #a87242;color: #FFFFFF"
+				    class="btn" onclick="$.table.exportExcel()" shiro:hasPermission="monitor:job:export">
 		            <i class="fa fa-download"></i> [[#{basis.export}]]
 		        </a>
 	        </div>
diff --git a/src/main/resources/templates/monitor/operlog/operlog.html b/src/main/resources/templates/monitor/operlog/operlog.html
index dcdc5d7..3877b1c 100644
--- a/src/main/resources/templates/monitor/operlog/operlog.html
+++ b/src/main/resources/templates/monitor/operlog/operlog.html
@@ -50,7 +50,8 @@
 		        <a class="btn btn-danger" onclick="$.operate.clean()" shiro:hasPermission="monitor:operlog:remove">
 	                <i class="fa fa-trash"></i> [[#{basis.clear}]]
 	            </a>
-	            <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="monitor:operlog:export">
+	            <a style="background-color: #a87242;border-color: #a87242;color: #FFFFFF"
+				   class="btn" onclick="$.table.exportExcel()" shiro:hasPermission="monitor:operlog:export">
 		            <i class="fa fa-download"></i> [[#{basis.export}]]
 		        </a>
 	        </div>
@@ -140,7 +141,7 @@
 		            align: 'center',
 		            formatter: function(value, row, index) {
 		                var actions = [];
-		                actions.push('<a class="btn btn-warning btn-xs ' + detailFlag + '" href="javascript:void(0)" onclick="$.operate.detail(\'' + row.operId + '\')"><i class="fa fa-search"></i>[[#{detailed.detailed}]]</a>');
+		                actions.push('<a class="btn btn-info btn-xs ' + detailFlag + '" href="javascript:void(0)" onclick="$.operate.detail(\'' + row.operId + '\')"><i class="fa fa-search"></i>[[#{detailed.detailed}]]</a>');
 		                return actions.join('');
 		            }
 		        }]
diff --git a/src/main/resources/templates/system/dept/dept.html b/src/main/resources/templates/system/dept/dept.html
index 4e699c1..b288c54 100644
--- a/src/main/resources/templates/system/dept/dept.html
+++ b/src/main/resources/templates/system/dept/dept.html
@@ -95,8 +95,8 @@
 		            formatter: function(value, row, index) {
 		                if (row.parentId != 0) {
 		                    var actions = [];
-		                    actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.deptId + '\')"><i class="fa fa-edit"></i>'+[[#{basis.edit}]]+'</a> ');
-		                    actions.push('<a class="btn btn-info  btn-xs ' + addFlag + '" href="javascript:void(0)" onclick="$.operate.add(\'' + row.deptId + '\')"><i class="fa fa-plus"></i>'+[[#{basis.add}]]+'</a> ');
+		                    // actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.deptId + '\')"><i class="fa fa-edit"></i>'+[[#{basis.edit}]]+'</a> ');
+		                    // actions.push('<a class="btn btn-info  btn-xs ' + addFlag + '" href="javascript:void(0)" onclick="$.operate.add(\'' + row.deptId + '\')"><i class="fa fa-plus"></i>'+[[#{basis.add}]]+'</a> ');
 		                    actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.deptId + '\')"><i class="fa fa-trash"></i>'+[[#{basis.del}]]+'</a>');
 		                    return actions.join('');
 		                } else {
diff --git a/src/main/resources/templates/system/dict/data/data.html b/src/main/resources/templates/system/dict/data/data.html
index 1bb26be..beb8834 100644
--- a/src/main/resources/templates/system/dict/data/data.html
+++ b/src/main/resources/templates/system/dict/data/data.html
@@ -37,13 +37,15 @@
 	            <a class="btn btn-success" onclick="add()" shiro:hasPermission="system:dict:add">
 	                <i class="fa fa-plus"></i>[[#{basis.add}]]
 	            </a>
-	            <a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="system:dict:edit">
+	            <a style="background-color: #7b76b7;border-color: #7b76b7;color: #FFFFFF"
+				   class="btn single disabled" onclick="$.operate.edit()" shiro:hasPermission="system:dict:edit">
 		            <i class="fa fa-edit"></i> [[#{basis.edit}]]
 		        </a>
 				<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="system:dict:remove">
 		            <i class="fa fa-remove"></i> [[#{basis.del}]]
 		        </a>
-		        <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="system:dict:export">
+		        <a style="background-color: #a87242;border-color: #a87242;color: #FFFFFF"
+				   class="btn" onclick="$.table.exportExcel()" shiro:hasPermission="system:dict:export">
 		            <i class="fa fa-download"></i> [[#{basis.export}]]
 		        </a>
 	        </div>
@@ -107,16 +109,17 @@
 						title: [[#{basis.createTime}]],
 						sortable: true
 					},
-					{
-						title: [[#{basis.operate}]],
-						align: 'center',
-						formatter: function(value, row, index) {
-							var actions = [];
-							actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.dictCode + '\')"><i class="fa fa-edit"></i>'+[[#{basis.edit}]]+'</a> ');
-							actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.dictCode + '\')"><i class="fa fa-remove"></i>'+[[#{basis.del}]]+'</a>');
-							return actions.join('');
-						}
-					}]
+					// {
+					// 	title: [[#{basis.operate}]],
+					// 	align: 'center',
+					// 	formatter: function(value, row, index) {
+					// 		var actions = [];
+					// 		actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.dictCode + '\')"><i class="fa fa-edit"></i>'+[[#{basis.edit}]]+'</a> ');
+					// 		actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.dictCode + '\')"><i class="fa fa-remove"></i>'+[[#{basis.del}]]+'</a>');
+					// 		return actions.join('');
+					// 	}
+					// }
+					]
 				};
 			$.table.init(options);
 		});
diff --git a/src/main/resources/templates/system/dict/type/type.html b/src/main/resources/templates/system/dict/type/type.html
index a031b72..6bbf486 100644
--- a/src/main/resources/templates/system/dict/type/type.html
+++ b/src/main/resources/templates/system/dict/type/type.html
@@ -41,13 +41,15 @@
 	            <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="system:dict:add">
 	                <i class="fa fa-plus"></i>[[#{basis.add}]]
 	            </a>
-	            <a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="system:dict:edit">
+	            <a style="background-color: #7b76b7;border-color: #7b76b7;color: #FFFFFF"
+				    class="btn single disabled" onclick="$.operate.edit()" shiro:hasPermission="system:dict:edit">
 		            <i class="fa fa-edit"></i> [[#{basis.edit}]]
 		        </a>
 				<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="system:dict:remove">
 		            <i class="fa fa-remove"></i> [[#{basis.del}]]
 		        </a>
-		        <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="system:dict:export">
+		        <a style="background-color: #a87242;border-color: #a87242;color: #FFFFFF"
+				   class="btn" onclick="$.table.exportExcel()" shiro:hasPermission="system:dict:export">
 		            <i class="fa fa-download"></i> [[#{basis.export}]]
 		        </a>
 	        </div>
@@ -117,9 +119,9 @@
 		            align: 'center',
 		            formatter: function(value, row, index) {
 		                var actions = [];
-		                actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.dictId + '\')"><i class="fa fa-edit"></i>'+[[#{basis.edit}]]+'</a> ');
+		                // actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.dictId + '\')"><i class="fa fa-edit"></i>'+[[#{basis.edit}]]+'</a> ');
 		                actions.push('<a class="btn btn-info btn-xs ' + listFlag + '" href="javascript:void(0)" onclick="detail(\'' + row.dictId + '\')"><i class="fa fa-list-ul"></i>鍒楄〃</a> ');
-		                actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.dictId + '\')"><i class="fa fa-remove"></i>'+[[#{basis.del}]]+'</a>');
+		                // actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.dictId + '\')"><i class="fa fa-remove"></i>'+[[#{basis.del}]]+'</a>');
 		                return actions.join('');
 		            }
 		        }]
diff --git a/src/main/resources/templates/system/role/role.html b/src/main/resources/templates/system/role/role.html
index ab49e41..383b80d 100644
--- a/src/main/resources/templates/system/role/role.html
+++ b/src/main/resources/templates/system/role/role.html
@@ -41,13 +41,15 @@
 				<a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="system:role:add">
 	                <i class="fa fa-plus"></i>[[#{basis.add}]]
 	            </a>
-	            <a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="system:role:edit">
+	            <a style="background-color: #7b76b7;border-color: #7b76b7;color: #FFFFFF"
+				   class="btn single disabled" onclick="$.operate.edit()" shiro:hasPermission="system:role:edit">
 		            <i class="fa fa-edit"></i> [[#{basis.edit}]]
 		        </a>
 				<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="system:role:remove">
 		            <i class="fa fa-remove"></i> [[#{basis.del}]]
 		        </a>
-		        <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="system:role:export">
+		        <a style="background-color: #a87242;border-color: #a87242;color: #FFFFFF"
+				    class="btn" onclick="$.table.exportExcel()" shiro:hasPermission="system:role:export">
 		            <i class="fa fa-download"></i> [[#{basis.export}]]
 		        </a>
 	        </div>
@@ -113,10 +115,10 @@
 		            align: 'center',
 		            formatter: function(value, row, index) {
 		                var actions = [];
-		                actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.roleId + '\')"><i class="fa fa-edit"></i>'+[[#{basis.edit}]]+'</a> ');
+		                // actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.roleId + '\')"><i class="fa fa-edit"></i>'+[[#{basis.edit}]]+'</a> ');
 		                actions.push('<a class="btn btn-primary btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="authDataScope(\'' + row.roleId + '\')"><i class="fa fa-check-square-o"></i>'+[[#{data.permission}]]+'</a> ');
 		                actions.push('<a class="btn btn-info btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="authUser(\'' + row.roleId + '\')"><i class="fa fa-user"></i>'+[[#{jsp.system.role.015}]]+'</a> ');
-		                actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.roleId + '\')"><i class="fa fa-remove"></i>'+[[#{basis.del}]]+'</a> ');
+		                // actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.roleId + '\')"><i class="fa fa-remove"></i>'+[[#{basis.del}]]+'</a> ');
 		                return actions.join('');
 		            }
 		        }]
diff --git a/src/main/resources/templates/system/user/profile/profile.html b/src/main/resources/templates/system/user/profile/profile.html
index 7a24d7a..c1f003c 100644
--- a/src/main/resources/templates/system/user/profile/profile.html
+++ b/src/main/resources/templates/system/user/profile/profile.html
@@ -43,7 +43,7 @@
                 </div>
             </div>
         </div>
-        
+
         <div class="col-sm-9 about">
             <div class="ibox float-e-margins">
                 <div class="ibox-title ibox-title-gray dashboard-header">
@@ -94,13 +94,13 @@
                                     </div>
                                     <div class="form-group">
                                         <div class="col-sm-offset-2 col-sm-10">
-                                            <button type="button" class="btn btn-sm btn-primary" onclick="submitUserInfo()"><i class="fa fa-check"></i>save</button>&nbsp;
-                                            <button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>close</button>
+                                            <button type="button" class="btn btn-sm btn-primary" onclick="submitUserInfo()"><i class="fa fa-check"></i>[[#{basis.save}]]</button>&nbsp;
+                                            <button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>[[#{basis.close}]]</button>
                                         </div>
                                     </div>
                                 </form>
                             </div>
-                            
+
                             <!--淇敼瀵嗙爜-->
                             <div class="tab-pane" id="modify_password">
                                 <form class="form-horizontal" id="form-user-resetPwd">
@@ -124,8 +124,8 @@
                                     </div>
                                     <div class="form-group">
                                         <div class="col-sm-offset-2 col-sm-10">
-                                            <button type="button" class="btn btn-sm btn-primary" onclick="submitChangPassword()"><i class="fa fa-check"></i>save</button>&nbsp;
-                                            <button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>close </button>
+                                            <button type="button" class="btn btn-sm btn-primary" onclick="submitChangPassword()"><i class="fa fa-check"></i>[[#{basis.save}]]</button>&nbsp;
+                                            <button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>[[#{basis.close}]] </button>
                                         </div>
                                     </div>
                                 </form>
@@ -137,7 +137,7 @@
         </div>
     </div>
 	</section>
-    
+
     <th:block th:include="include :: footer" />
     <script>
 	    /*鐢ㄦ埛绠$悊-澶村儚*/
@@ -145,7 +145,7 @@
 	        var url = ctx + 'system/user/profile/avatar';
 	        $.modal.open("淇敼澶村儚", url);
 	    }
-	    
+
 	    /*鐢ㄦ埛淇℃伅-淇敼*/
 	    $("#form-user-edit").validate({
 			onkeyup: false,
@@ -209,13 +209,13 @@
 		    },
 		    focusCleanup: true
 		});
-		
+
 		function submitUserInfo() {
 	        if ($.validate.form()) {
 	        	$.operate.saveModal(ctx + "system/user/profile/update", $('#form-user-edit').serialize());
 	        }
 	    }
-	    
+
 	    /*鐢ㄦ埛绠$悊-淇敼瀵嗙爜*/
 	    $("#form-user-resetPwd").validate({
 	    	onkeyup: false,
@@ -261,7 +261,7 @@
 	        },
 	        focusCleanup: true
 		});
-		
+
 		function submitChangPassword () {
 	        if ($.validate.form("form-user-resetPwd")) {
 	        	$.operate.saveModal(ctx + "system/user/profile/resetPwd", $('#form-user-resetPwd').serialize());
diff --git a/src/main/resources/templates/system/user/usermanager.html b/src/main/resources/templates/system/user/usermanager.html
index cdf15ab..f55088b 100644
--- a/src/main/resources/templates/system/user/usermanager.html
+++ b/src/main/resources/templates/system/user/usermanager.html
@@ -45,7 +45,7 @@
             <a class="btn btn-success" onclick="$.operate.addTab()" shiro:hasPermission="system:user:add">
                 <i class="fa fa-plus"></i>[[#{basis.add}]]
             </a>
-            <a class="btn btn-primary single disabled" onclick="$.operate.editTab()" shiro:hasPermission="system:user:edit">
+            <a class="btn single disabled" style="background-color: #7b76b7;border-color: #7b76b7;color: #FFFFFF" onclick="$.operate.editTab()" shiro:hasPermission="system:user:edit">
                 <i class="fa fa-edit"></i> [[#{basis.edit}]]
             </a>
             <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="system:user:remove">
@@ -54,7 +54,8 @@
             <a class="btn btn-info" onclick="$.table.importExcel()" shiro:hasPermission="system:user:import">
                 <i class="fa fa-upload"></i> [[#{basis.import}]]
             </a>
-            <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="system:user:export">
+            <a style="background-color: #a87242;border-color: #a87242;color: #FFFFFF"
+                class="btn" onclick="$.table.exportExcel()" shiro:hasPermission="system:user:export">
                 <i class="fa fa-download"></i> [[#{basis.export}]]
             </a>
         </div>
@@ -141,9 +142,9 @@
 		            align: 'center',
 		            formatter: function(value, row, index) {
 		                var actions = [];
-		                actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.editTab(\'' + row.userId + '\')"><i class="fa fa-edit"></i>'+[[#{basis.edit}]]+'</a> ');
-		                actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.userId + '\')"><i class="fa fa-remove"></i>'+[[#{basis.del}]]+'</a> ');
-		                actions.push('<a class="btn btn-info btn-xs ' + resetPwdFlag + '" href="javascript:void(0)" onclick="resetPwd(\'' + row.userId + '\')"><i class="fa fa-key"></i>'+[[#{basis.reset}]]+'</a>');
+		                // actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.editTab(\'' + row.userId + '\')"><i class="fa fa-edit"></i>'+[[#{basis.edit}]]+'</a> ');
+		                // actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.userId + '\')"><i class="fa fa-remove"></i>'+[[#{basis.del}]]+'</a> ');
+		                actions.push('<a class="btn btn-warning btn-xs ' + resetPwdFlag + '" href="javascript:void(0)" onclick="resetPwd(\'' + row.userId + '\')"><i class="fa fa-key"></i>'+[[#{basis.reset}]]+'</a>');
 		                return actions.join('');
 		            }
 		        }]
diff --git a/src/main/resources/vm/html/add.html.vm b/src/main/resources/vm/html/add.html.vm
deleted file mode 100644
index e6e8a98..0000000
--- a/src/main/resources/vm/html/add.html.vm
+++ /dev/null
@@ -1,166 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh" xmlns:th="http://www.thymeleaf.org">
-<head>
-    <th:block th:include="include :: header('鏂板${functionName}')"/>
-    #foreach($column in $columns)
-        #if($column.insert && !$column.superColumn && !$column.pk && $column.htmlType == "datetime")
-            <th:block th:include="include :: datetimepicker-css"/>
-            #break
-        #end
-    #end
-</head>
-<body class="white-bg">
-<div class="wrapper wrapper-content animated fadeInRight ibox-content">
-    <form class="form-horizontal m" id="form-${businessName}-add">
-        #foreach($column in $columns)
-            #set($field=$column.javaField)
-            #if($column.insert && !$column.superColumn && !$column.pk)
-                #set($parentheseIndex=$column.columnComment.indexOf("锛�"))
-                #if($parentheseIndex != -1)
-                    #set($comment=$column.columnComment.substring(0, $parentheseIndex))
-                #else
-                    #set($comment=$column.columnComment)
-                #end
-                #set($dictType=$column.dictType)
-                #if("" != $treeParentCode && $column.javaField == $treeParentCode)
-                    <div class="form-group">
-                        <label class="col-sm-3 control-label">${comment}锛�</label>
-                        <div class="col-sm-8">
-                            <div class="input-group">
-                                #set($BusinessName=$businessName.substring(0,1).toUpperCase() + ${businessName.substring(1)})
-                                #set($deptId = "${className}?.deptId")
-                                #set($deptName = "${className}?.deptName")
-                                <input id="treeId" name="${treeParentCode}" type="hidden" th:value="${${deptId}}"/>
-                                <input class="form-control" type="text" onclick="select${BusinessName}Tree()"
-                                       id="treeName" readonly="true" th:value="${${deptName}}"#if($column.required)
-                                       required#end>
-                                <span class="input-group-addon"><i class="fa fa-search"></i></span>
-                            </div>
-                        </div>
-                    </div>
-                #elseif($column.htmlType == "input")
-                    <div class="form-group">
-                        <label class="col-sm-3 control-label">${comment}锛�</label>
-                        <div class="col-sm-8">
-                            <input name="${field}" class="form-control" type="text"#if($column.required) required#end>
-                        </div>
-                    </div>
-                #elseif($column.htmlType == "select" && "" != $dictType)
-                    <div class="form-group">
-                        <label class="col-sm-3 control-label">${comment}锛�</label>
-                        <div class="col-sm-8">
-                            <select name="${field}" class="form-control m-b"
-                                    th:with="type=${@dict.getType('${dictType}')}"#if($column.required) required#end>
-                                <option th:each="dict : ${type}" th:text="${dict.dictLabel}"
-                                        th:value="${dict.dictValue}"></option>
-                            </select>
-                        </div>
-                    </div>
-                #elseif($column.htmlType == "select" && $dictType)
-                    <div class="form-group">
-                        <label class="col-sm-3 control-label">${comment}锛�</label>
-                        <div class="col-sm-8">
-                            <select name="${field}" class="form-control m-b"#if($column.required) required#end>
-                                <option value="">鎵�鏈�</option>
-                            </select>
-                            <span class="help-block m-b-none"><i class="fa fa-info-circle"></i> 浠g爜鐢熸垚璇烽�夋嫨瀛楀吀灞炴��</span>
-                        </div>
-                    </div>
-                #elseif($column.htmlType == "radio" && "" != $dictType)
-                    <div class="form-group">
-                        <label class="col-sm-3 control-label">${comment}锛�</label>
-                        <div class="col-sm-8">
-                            <div class="radio-box" th:each="dict : ${@dict.getType('${dictType}')}">
-                                <input type="radio" th:id="${dict.dictCode}" name="${field}"
-                                       th:value="${dict.dictValue}" th:checked="${dict.default}"#if($column.required)
-                                       required#end>
-                                <label th:for="${dict.dictCode}" th:text="${dict.dictLabel}"></label>
-                            </div>
-                        </div>
-                    </div>
-                #elseif($column.htmlType == "radio" && $dictType)
-                    <div class="form-group">
-                        <label class="col-sm-3 control-label">${comment}锛�</label>
-                        <div class="col-sm-8">
-                            <div class="radio-box">
-                                <input type="radio" name="${field}" value=""#if($column.required) required#end>
-                                <label th:for="${field}" th:text="鏈煡"></label>
-                            </div>
-                            <span class="help-block m-b-none"><i class="fa fa-info-circle"></i> 浠g爜鐢熸垚璇烽�夋嫨瀛楀吀灞炴��</span>
-                        </div>
-                    </div>
-                #elseif($column.htmlType == "datetime")
-                    <div class="form-group">
-                        <label class="col-sm-3 control-label">${comment}锛�</label>
-                        <div class="col-sm-8">
-                            <div class="input-group date">
-                                <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
-                                <input name="${field}" class="form-control" placeholder="yyyy-MM-dd"
-                                       type="text"#if($column.required) required#end>
-                            </div>
-                        </div>
-                    </div>
-                #elseif($column.htmlType == "textarea")
-                    <div class="form-group">
-                        <label class="col-sm-3 control-label">${comment}锛�</label>
-                        <div class="col-sm-8">
-                            <textarea name="${field}" class="form-control"#if($column.required) required#end></textarea>
-                        </div>
-                    </div>
-                #end
-            #end
-        #end
-    </form>
-</div>
-<th:block th:include="include :: footer"/>
-    #foreach($column in $columns)
-        #if($column.insert && !$column.superColumn && !$column.pk && $column.htmlType == "datetime")
-        <th:block th:include="include :: datetimepicker-js"/>
-            #break
-        #end
-    #end
-<script type="text/javascript">
-    var prefix = ctx + "${moduleName}/${businessName}"
-    $("#form-${businessName}-add").validate({
-        focusCleanup: true
-    });
-
-    function submitHandler() {
-        if ($.validate.form()) {
-            $.operate.save(prefix + "/add", $('#form-${businessName}-add').serialize());
-        }
-    }
-        #foreach($column in $columns)
-            #if($column.insert && !$column.superColumn && !$column.pk && $column.htmlType == "datetime")
-
-            $("input[name='$column.javaField']").datetimepicker({
-                format: "yyyy-mm-dd",
-                minView: "month",
-                autoclose: true
-            });
-                #break
-            #end
-        #end
-        #if($table.tree)
-
-        /*${functionName}-鏂板-閫夋嫨鐖堕儴闂ㄦ爲*/
-        function select${BusinessName}Tree() {
-            var options = {
-                title: '${functionName}閫夋嫨',
-                width: "380",
-                url: prefix + "/select${BusinessName}Tree/" + $("#treeId").val(),
-                callBack: doSubmit
-            };
-            $.modal.openOptions(options);
-        }
-
-        function doSubmit(index, layero) {
-            var body = layer.getChildFrame('body', index);
-            $("#treeId").val(body.find('#treeId').val());
-            $("#treeName").val(body.find('#treeName').val());
-            layer.close(index);
-        }
-        #end
-</script>
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/resources/vm/html/edit.html.vm b/src/main/resources/vm/html/edit.html.vm
deleted file mode 100644
index b886f73..0000000
--- a/src/main/resources/vm/html/edit.html.vm
+++ /dev/null
@@ -1,160 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
-<head>
-    <th:block th:include="include :: header('淇敼${functionName}')" />
-#foreach($column in $columns)
-#if($column.edit && !$column.superColumn && !$column.pk && $column.htmlType == "datetime")
-    <th:block th:include="include :: datetimepicker-css" />
-#break
-#end
-#end
-</head>
-<body class="white-bg">
-    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
-        <form class="form-horizontal m" id="form-${businessName}-edit" th:object="${${className}}">
-            <input name="${pkColumn.javaField}" th:field="*{${pkColumn.javaField}}" type="hidden">
-#foreach($column in $columns)
-#if($column.edit && !$column.superColumn && !$column.pk)
-#set($parentheseIndex=$column.columnComment.indexOf("锛�"))
-#if($parentheseIndex != -1)
-#set($comment=$column.columnComment.substring(0, $parentheseIndex))
-#else
-#set($comment=$column.columnComment)
-#end
-#set($field=$column.javaField)
-#set($dictType=$column.dictType)
-#if("" != $treeParentCode && $column.javaField == $treeParentCode)
-            <div class="form-group">    
-                <label class="col-sm-3 control-label">${comment}锛�</label>
-                <div class="col-sm-8">
-                    <div class="input-group">
-#set($BusinessName=$businessName.substring(0,1).toUpperCase() + ${businessName.substring(1)})
-#set($deptId = "${className}?.deptId")
-#set($deptName = "${className}?.deptName")
-                        <input id="treeId" name="${treeParentCode}" type="hidden" th:field="*{${treeParentCode}}" />
-                        <input class="form-control" type="text" onclick="select${BusinessName}Tree()" id="treeName" readonly="true" th:field="*{parentName}"#if($column.required) required#end>
-                        <span class="input-group-addon"><i class="fa fa-search"></i></span>
-                    </div>
-                </div>
-            </div>
-#elseif($column.htmlType == "input")
-            <div class="form-group">    
-                <label class="col-sm-3 control-label">${comment}锛�</label>
-                <div class="col-sm-8">
-                    <input name="${field}" th:field="*{${field}}" class="form-control" type="text"#if($column.required) required#end>
-                </div>
-            </div>
-#elseif($column.htmlType == "select" && "" != $dictType)
-            <div class="form-group">    
-                <label class="col-sm-3 control-label">${comment}锛�</label>
-                <div class="col-sm-8">
-                    <select name="${field}" class="form-control m-b" th:with="type=${@dict.getType('${dictType}')}"#if($column.required) required#end>
-                        <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{${field}}"></option>
-                    </select>
-                </div>
-            </div>
-#elseif($column.htmlType == "select" && $dictType)
-            <div class="form-group">    
-                <label class="col-sm-3 control-label">${comment}锛�</label>
-                <div class="col-sm-8">
-                    <select name="${field}" class="form-control m-b"#if($column.required) required#end>
-                        <option value="">鎵�鏈�</option>
-                    </select>
-                    <span class="help-block m-b-none"><i class="fa fa-info-circle"></i> 浠g爜鐢熸垚璇烽�夋嫨瀛楀吀灞炴��</span>
-                </div>
-            </div>
-#elseif($column.htmlType == "radio" && "" != $dictType)
-            <div class="form-group">    
-                <label class="col-sm-3 control-label">${comment}锛�</label>
-                <div class="col-sm-8">
-                    <div class="radio-box" th:each="dict : ${@dict.getType('${dictType}')}">
-                        <input type="radio" th:id="${dict.dictCode}" name="${field}" th:value="${dict.dictValue}" th:field="*{${field}}"#if($column.required) required#end>
-                        <label th:for="${dict.dictCode}" th:text="${dict.dictLabel}"></label>
-                    </div>
-                </div>
-            </div>
-#elseif($column.htmlType == "radio" && $dictType)
-            <div class="form-group">    
-                <label class="col-sm-3 control-label">${comment}锛�</label>
-                <div class="col-sm-8">
-                    <div class="radio-box">
-                        <input type="radio" name="${field}" value=""#if($column.required) required#end>
-                        <label th:for="${field}" th:text="鏈煡"></label>
-                    </div>
-                    <span class="help-block m-b-none"><i class="fa fa-info-circle"></i> 浠g爜鐢熸垚璇烽�夋嫨瀛楀吀灞炴��</span>
-                </div>
-            </div>
-#elseif($column.htmlType == "datetime")
-            <div class="form-group">    
-                <label class="col-sm-3 control-label">${comment}锛�</label>
-                <div class="col-sm-8">
-                    <div class="input-group date">
-                        <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
-                        <input name="${field}" th:value="${#dates.format(${className}.${field}, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text"#if($column.required) required#end>
-                    </div>
-                </div>
-            </div>
-#elseif($column.htmlType == "textarea")
-            <div class="form-group">
-                <label class="col-sm-3 control-label">${comment}锛�</label>
-                <div class="col-sm-8">
-                    <textarea name="${field}" class="form-control"#if($column.required) required#end>[[*{${field}}]]</textarea>
-                </div>
-            </div>
-#end
-#end
-#end
-        </form>
-    </div>
-    <th:block th:include="include :: footer" />
-#foreach($column in $columns)
-#if($column.edit && !$column.superColumn && !$column.pk && $column.htmlType == "datetime")
-    <th:block th:include="include :: datetimepicker-js" />
-#break
-#end
-#end
-    <script type="text/javascript">
-        var prefix = ctx + "${moduleName}/${businessName}";
-        $("#form-${businessName}-edit").validate({
-            focusCleanup: true
-        });
-
-        function submitHandler() {
-            if ($.validate.form()) {
-                $.operate.save(prefix + "/edit", $('#form-${businessName}-edit').serialize());
-            }
-        }
-#foreach($column in $columns)
-#if($column.edit && !$column.superColumn && !$column.pk && $column.htmlType == "datetime")
-
-        $("input[name='$column.javaField']").datetimepicker({
-            format: "yyyy-mm-dd",
-            minView: "month",
-            autoclose: true
-        });
-#break
-#end
-#end
-#if($table.tree)
-
-        /*${functionName}-鏂板-閫夋嫨鐖堕儴闂ㄦ爲*/
-        function select${BusinessName}Tree() {
-            var options = {
-                title: '${functionName}閫夋嫨',
-                width: "380",
-                url: prefix + "/select${BusinessName}Tree/" + $("#treeId").val(),
-                callBack: doSubmit
-            };
-            $.modal.openOptions(options);
-        }
-
-        function doSubmit(index, layero){
-            var body = layer.getChildFrame('body', index);
-               $("#treeId").val(body.find('#treeId').val());
-               $("#treeName").val(body.find('#treeName').val());
-               layer.close(index);
-        }
-#end
-    </script>
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/resources/vm/html/list-tree.html.vm b/src/main/resources/vm/html/list-tree.html.vm
deleted file mode 100644
index 4b854c2..0000000
--- a/src/main/resources/vm/html/list-tree.html.vm
+++ /dev/null
@@ -1,150 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
-<head>
-    <th:block th:include="include :: header('${functionName}鍒楄〃')" />
-</head>
-<body class="gray-bg">
-     <div class="container-div">
-        <div class="row">
-            <div class="col-sm-12 search-collapse">
-                <form id="formId">
-                    <div class="select-list">
-                        <ul>
-#foreach($column in $columns)
-#if($column.query)
-#set($dictType=$column.dictType)
-#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
-#set($parentheseIndex=$column.columnComment.indexOf("锛�"))
-#if($parentheseIndex != -1)
-#set($comment=$column.columnComment.substring(0, $parentheseIndex))
-#else  
-#set($comment=$column.columnComment)
-#end  
-#if($column.htmlType == "input")
-                            <li>
-                                <p>${comment}锛�</p>
-                                <input type="text" name="${column.javaField}"/>
-                            </li>
-#elseif($column.htmlType == "select" || $column.htmlType == "radio" && "" != $dictType)
-                            <li>
-                                <p>${comment}锛�</p>
-                                <select name="${column.javaField}" th:with="type=${@dict.getType('${dictType}')}">
-                                    <option value="">鎵�鏈�</option>
-                                    <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
-                                </select>
-                            </li>
-#elseif($column.htmlType == "select" || $column.htmlType == "radio" && $dictType)
-                            <li>
-                                <p>${comment}锛�</p>
-                                <select name="${column.javaField}">
-                                    <option value="">鎵�鏈�</option>
-                                </select>
-                            </li>
-#elseif($column.htmlType == "datetime")
-                            <li class="select-time">
-                                <p>${comment}锛�</p>
-                                <input type="text" class="time-input" id="startTime" placeholder="寮�濮嬫椂闂�" name="params[begin${AttrName}]"/>
-                                <span>-</span>
-                                <input type="text" class="time-input" id="endTime" placeholder="缁撴潫鏃堕棿" name="params[end${AttrName}]"/>
-                            </li>                
-#end
-#end
-#end
-                            <li>
-                                <a class="btn btn-primary btn-rounded btn-sm" onclick="$.treeTable.search()"><i class="fa fa-search"></i>&nbsp;鎼滅储</a>
-                                <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;閲嶇疆</a>
-                            </li>
-                        </ul>
-                    </div>
-                </form>
-            </div>
-
-            <div class="btn-group-sm" id="toolbar" role="group">
-                <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="${permissionPrefix}:add">
-                    <i class="fa fa-plus"></i> 鏂板
-                </a>
-                <a class="btn btn-primary" onclick="$.operate.edit()" shiro:hasPermission="${permissionPrefix}:edit">
-                    <i class="fa fa-edit"></i> 淇敼
-                </a>
-                <a class="btn btn-info" id="expandAllBtn">
-                    <i class="fa fa-exchange"></i> 灞曞紑/鎶樺彔
-                </a>
-            </div>
-            <div class="col-sm-12 select-table table-striped">
-                <table id="bootstrap-tree-table"></table>
-            </div>
-        </div>
-    </div>
-    <th:block th:include="include :: footer" />
-    <script th:inline="javascript">
-        var addFlag = [[${@permission.hasPermi('${permissionPrefix}:add')}]];
-        var editFlag = [[${@permission.hasPermi('${permissionPrefix}:edit')}]];
-        var removeFlag = [[${@permission.hasPermi('${permissionPrefix}:remove')}]];
-#foreach($column in $columns)
-#if(${column.dictType} != '')
-        var ${column.javaField}Datas = [[${@dict.getType('${column.dictType}')}]];
-#end
-#end
-        var prefix = ctx + "${moduleName}/${businessName}";
-
-        $(function() {
-            var options = {
-                code: "${treeCode}",
-                parentCode: "${treeParentCode}",
-                expandColumn: "${expandColumn}",
-                uniqueId: "${pkColumn.javaField}",
-                url: prefix + "/list",
-                createUrl: prefix + "/add/{id}",
-                updateUrl: prefix + "/edit/{id}",
-                removeUrl: prefix + "/remove/{id}",
-                exportUrl: prefix + "/export",
-                modalName: "${functionName}",
-                columns: [{
-                    field: 'selectItem', 
-                    radio: true
-                },
-#foreach($column in $columns)
-#set($dictType=$column.dictType)
-#set($javaField=$column.javaField)
-#set($parentheseIndex=$column.columnComment.indexOf("锛�"))
-#if($parentheseIndex != -1)
-#set($comment=$column.columnComment.substring(0, $parentheseIndex))
-#else
-#set($comment=$column.columnComment)
-#end
-#if($column.pk)
-#elseif($column.list && "" != $dictType)
-                {
-                    field : '${javaField}', 
-                    title : '${comment}',
-                    align: 'left',
-                    formatter: function(value, row, index) {
-                        return $.table.selectDictLabel(${javaField}Datas, value);
-                    }
-                },
-#elseif($column.list && "" != $javaField)
-                {
-                    field : '${javaField}', 
-                    title : '${comment}',
-                    align: 'left'
-                },
-#end                
-#end
-                {
-                    title: '鎿嶄綔',
-                    align: 'center',
-                    align: 'left',
-                    formatter: function(value, row, index) {
-                        var actions = [];
-                        actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.${pkColumn.javaField} + '\')"><i class="fa fa-edit"></i>缂栬緫</a> ');
-                        actions.push('<a class="btn btn-info  btn-xs ' + addFlag + '" href="javascript:void(0)" onclick="$.operate.add(\'' + row.${pkColumn.javaField} + '\')"><i class="fa fa-plus"></i>鏂板</a> ');
-                        actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.${pkColumn.javaField} + '\')"><i class="fa fa-remove"></i>鍒犻櫎</a>');
-                        return actions.join('');
-                    }
-                }]
-            };
-            $.treeTable.init(options);
-        });
-    </script>
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/resources/vm/html/list.html.vm b/src/main/resources/vm/html/list.html.vm
deleted file mode 100644
index 8069d2f..0000000
--- a/src/main/resources/vm/html/list.html.vm
+++ /dev/null
@@ -1,148 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
-<head>
-    <th:block th:include="include :: header('${functionName}鍒楄〃')" />
-</head>
-<body class="gray-bg">
-     <div class="container-div">
-        <div class="row">
-            <div class="col-sm-12 search-collapse">
-                <form id="formId">
-                    <div class="select-list">
-                        <ul>
-#foreach($column in $columns)
-#if($column.query)
-#set($dictType=$column.dictType)
-#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
-#set($parentheseIndex=$column.columnComment.indexOf("锛�"))
-#if($parentheseIndex != -1)
-#set($comment=$column.columnComment.substring(0, $parentheseIndex))
-#else  
-#set($comment=$column.columnComment)
-#end  
-#if($column.htmlType == "input")
-                            <li>
-                                <p>${comment}锛�</p>
-                                <input type="text" name="${column.javaField}"/>
-                            </li>
-#elseif($column.htmlType == "select" || $column.htmlType == "radio" && "" != $dictType)
-                            <li>
-                                <p>${comment}锛�</p>
-                                <select name="${column.javaField}" th:with="type=${@dict.getType('${dictType}')}">
-                                    <option value="">鎵�鏈�</option>
-                                    <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
-                                </select>
-                            </li>
-#elseif($column.htmlType == "select" || $column.htmlType == "radio" && $dictType)
-                            <li>
-                                <p>${comment}锛�</p>
-                                <select name="${column.javaField}">
-                                    <option value="">鎵�鏈�</option>
-                                </select>
-                            </li>
-#elseif($column.htmlType == "datetime")
-                            <li class="select-time">
-                                <p>${comment}锛�</p>
-                                <input type="text" class="time-input" id="startTime" placeholder="寮�濮嬫椂闂�" name="params[begin${AttrName}]"/>
-                                <span>-</span>
-                                <input type="text" class="time-input" id="endTime" placeholder="缁撴潫鏃堕棿" name="params[end${AttrName}]"/>
-                            </li>
-#end
-#end
-#end
-                            <li>
-                                <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;鎼滅储</a>
-                                <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;閲嶇疆</a>
-                            </li>
-                        </ul>
-                    </div>
-                </form>
-            </div>
-
-            <div class="btn-group-sm" id="toolbar" role="group">
-                <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="${permissionPrefix}:add">
-                    <i class="fa fa-plus"></i> 娣诲姞
-                </a>
-                <a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="${permissionPrefix}:edit">
-                    <i class="fa fa-edit"></i> 淇敼
-                </a>
-                <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="${permissionPrefix}:remove">
-                    <i class="fa fa-remove"></i> 鍒犻櫎
-                </a>
-                <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="${permissionPrefix}:export">
-                    <i class="fa fa-download"></i> 瀵煎嚭
-                 </a>
-            </div>
-            <div class="col-sm-12 select-table table-striped">
-                <table id="bootstrap-table" data-mobile-responsive="true"></table>
-            </div>
-        </div>
-    </div>
-    <th:block th:include="include :: footer" />
-    <script th:inline="javascript">
-        var editFlag = [[${@permission.hasPermi('${permissionPrefix}:edit')}]];
-        var removeFlag = [[${@permission.hasPermi('${permissionPrefix}:remove')}]];
-#foreach($column in $columns)
-#if(${column.dictType} != '')
-        var ${column.javaField}Datas = [[${@dict.getType('${column.dictType}')}]];
-#end
-#end
-        var prefix = ctx + "${moduleName}/${businessName}";
-
-        $(function() {
-            var options = {
-                url: prefix + "/list",
-                createUrl: prefix + "/add",
-                updateUrl: prefix + "/edit/{id}",
-                removeUrl: prefix + "/remove",
-                exportUrl: prefix + "/export",
-                modalName: "${functionName}",
-                columns: [{
-                    checkbox: true
-                },
-#foreach($column in $columns)
-#set($dictType=$column.dictType)
-#set($javaField=$column.javaField)
-#set($parentheseIndex=$column.columnComment.indexOf("锛�"))
-#if($parentheseIndex != -1)
-#set($comment=$column.columnComment.substring(0, $parentheseIndex))
-#else
-#set($comment=$column.columnComment)
-#end
-#if($column.pk)
-                {
-                    field : '${javaField}', 
-                    title : '${comment}',
-                    visible: false
-                },
-#elseif($column.list && "" != $dictType)
-                {
-                    field : '${javaField}', 
-                    title : '${comment}',
-                    formatter: function(value, row, index) {
-                       return $.table.selectDictLabel(${javaField}Datas, value);
-                    }
-                },
-#elseif($column.list && "" != $javaField)
-                {
-                    field : '${javaField}', 
-                    title : '${comment}'
-                },
-#end                
-#end
-                {
-                    title: '鎿嶄綔',
-                    align: 'center',
-                    formatter: function(value, row, index) {
-                        var actions = [];
-                        actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.${pkColumn.javaField} + '\')"><i class="fa fa-edit"></i>缂栬緫</a> ');
-                        actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.${pkColumn.javaField} + '\')"><i class="fa fa-remove"></i>鍒犻櫎</a>');
-                        return actions.join('');
-                    }
-                }]
-            };
-            $.table.init(options);
-        });
-    </script>
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/resources/vm/html/tree.html.vm b/src/main/resources/vm/html/tree.html.vm
deleted file mode 100644
index a3297c6..0000000
--- a/src/main/resources/vm/html/tree.html.vm
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
-<head>
-    <th:block th:include="include :: header('${functionName}鏍戦�夋嫨')" />
-    <th:block th:include="include :: ztree-css" />
-</head>
-<style>
-    body{height:auto;font-family: "Microsoft YaHei";}
-    button{font-family: "SimSun","Helvetica Neue",Helvetica,Arial;}
-</style>
-<body class="hold-transition box box-main">
-#set($treeId = "${className}?." + $treeCode)
-#set($treeName = "${className}?." + $treeName)
-    <input id="treeId"   name="treeId"    type="hidden" th:value="${${treeId}}"/>
-    <input id="treeName" name="treeName"  type="hidden" th:value="${${treeName}}"/>
-    <div class="wrapper"><div class="treeShowHideButton" onclick="$.tree.toggleSearch();">
-        <label id="btnShow" title="鏄剧ず鎼滅储" style="display:none;">锔�</label>
-        <label id="btnHide" title="闅愯棌鎼滅储">锔�</label>
-    </div>
-    <div class="treeSearchInput" id="search">
-        <label for="keyword">鍏抽敭瀛楋細</label><input type="text" class="empty" id="keyword" maxlength="50">
-        <button class="btn" id="btn" onclick="$.tree.searchNode()"> 鎼滅储 </button>
-    </div>
-    <div class="treeExpandCollapse">
-        <a href="#" onclick="$.tree.expand()">灞曞紑</a> /
-        <a href="#" onclick="$.tree.collapse()">鎶樺彔</a>
-    </div>
-    <div id="tree" class="ztree treeselect"></div>
-    </div>
-    <th:block th:include="include :: footer" />
-    <th:block th:include="include :: ztree-js" />
-    <script th:inline="javascript">
-        $(function() {
-            var url = ctx + "system/${businessName}/treeData";
-            var options = {
-                url: url,
-                expandLevel: 2,
-                onClick : zOnClick
-            };
-            $.tree.init(options);
-        });
-
-        function zOnClick(event, treeId, treeNode) {
-            var treeId = treeNode.id;
-            var treeName = treeNode.name;
-            $("#treeId").val(treeId);
-            $("#treeName").val(treeName);
-        }
-    </script>
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/resources/vm/java/controller.java.vm b/src/main/resources/vm/java/controller.java.vm
deleted file mode 100644
index 9d86e1f..0000000
--- a/src/main/resources/vm/java/controller.java.vm
+++ /dev/null
@@ -1,200 +0,0 @@
-package ${packageName}.${moduleName}.controller;
-
-import java.util.List;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import com.ots.framework.aspectj.lang.annotation.Log;
-import com.ots.framework.aspectj.lang.enums.BusinessType;
-import ${packageName}.${moduleName}.domain.${ClassName};
-import ${packageName}.${moduleName}.service.I${ClassName}Service;
-import com.ots.framework.web.controller.BaseController;
-import com.ots.framework.web.domain.AjaxResult;
-import com.ots.common.utils.poi.ExcelUtil;
-#if($table.crud)
-import com.ots.framework.web.page.TableDataInfo;
-#elseif($table.tree)
-import com.ots.common.utils.StringUtils;
-import com.ots.framework.web.domain.Ztree;
-#end
-import org.springframework.stereotype.Controller;
-
-/**
- * ${functionName}Controller
- * 
- * @author ${author}
- * @date ${datetime}
- */
-@Controller
-@RequestMapping("/${moduleName}/${businessName}")
-public class ${ClassName}Controller extends BaseController
-{
-    private String prefix = "${moduleName}/${businessName}";
-
-    @Autowired
-    private I${ClassName}Service ${className}Service;
-
-    @RequiresPermissions("${permissionPrefix}:view")
-    @GetMapping()
-    public String ${businessName}()
-    {
-        return prefix + "/${businessName}";
-    }
-
-#if($table.tree)
-    /**
-     * 鏌ヨ${functionName}鏍戝垪琛�
-     */
-    @RequiresPermissions("${permissionPrefix}:list")
-    @PostMapping("/list")
-    @ResponseBody
-    public List<${ClassName}> list(${ClassName} ${className})
-    {
-        List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
-        return list;
-    }
-#elseif($table.crud)
-    /**
-     * 鏌ヨ${functionName}鍒楄〃
-     */
-    @RequiresPermissions("${permissionPrefix}:list")
-    @PostMapping("/list")
-    @ResponseBody
-    public TableDataInfo list(${ClassName} ${className})
-    {
-        startPage();
-        List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
-        return getDataTable(list);
-    }
-#end
-
-    /**
-     * 瀵煎嚭${functionName}鍒楄〃
-     */
-    @RequiresPermissions("${permissionPrefix}:export")
-    @PostMapping("/export")
-    @ResponseBody
-    public AjaxResult export(${ClassName} ${className})
-    {
-        List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
-        ExcelUtil<${ClassName}> util = new ExcelUtil<${ClassName}>(${ClassName}.class);
-        return util.exportExcel(list, "${businessName}");
-    }
-
-#if($table.crud)
-    /**
-     * 鏂板${functionName}
-     */
-    @GetMapping("/add")
-    public String add()
-    {
-        return prefix + "/add";
-    }
-#elseif($table.tree)
-    /**
-     * 鏂板${functionName}
-     */
-    @GetMapping(value = { "/add/{${pkColumn.javaField}}", "/add/" })
-    public String add(@PathVariable(value = "${pkColumn.javaField}", required = false) Long ${pkColumn.javaField}, ModelMap mmap)
-    {
-        if (StringUtils.isNotNull(${pkColumn.javaField}))
-        {
-            mmap.put("${className}", ${className}Service.select${ClassName}ById(${pkColumn.javaField}));
-        }
-        return prefix + "/add";
-    }
-#end
-
-    /**
-     * 鏂板淇濆瓨${functionName}
-     */
-    @RequiresPermissions("${permissionPrefix}:add")
-    @Log(title = "${functionName}", businessType = BusinessType.INSERT)
-    @PostMapping("/add")
-    @ResponseBody
-    public AjaxResult addSave(${ClassName} ${className})
-    {
-        return toAjax(${className}Service.insert${ClassName}(${className}));
-    }
-
-    /**
-     * 淇敼${functionName}
-     */
-    @GetMapping("/edit/{${pkColumn.javaField}}")
-    public String edit(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField}, ModelMap mmap)
-    {
-        ${ClassName} ${className} = ${className}Service.select${ClassName}ById(${pkColumn.javaField});
-        mmap.put("${className}", ${className});
-        return prefix + "/edit";
-    }
-
-    /**
-     * 淇敼淇濆瓨${functionName}
-     */
-    @RequiresPermissions("${permissionPrefix}:edit")
-    @Log(title = "${functionName}", businessType = BusinessType.UPDATE)
-    @PostMapping("/edit")
-    @ResponseBody
-    public AjaxResult editSave(${ClassName} ${className})
-    {
-        return toAjax(${className}Service.update${ClassName}(${className}));
-    }
-
-#if($table.crud)
-    /**
-     * 鍒犻櫎${functionName}
-     */
-    @RequiresPermissions("${permissionPrefix}:remove")
-    @Log(title = "${functionName}", businessType = BusinessType.DELETE)
-    @PostMapping( "/remove")
-    @ResponseBody
-    public AjaxResult remove(String ids)
-    {
-        return toAjax(${className}Service.delete${ClassName}ByIds(ids));
-    }
-#elseif($table.tree)
-    /**
-     * 鍒犻櫎
-     */
-    @RequiresPermissions("${permissionPrefix}:remove")
-    @Log(title = "${functionName}", businessType = BusinessType.DELETE)
-    @GetMapping("/remove/{${pkColumn.javaField}}")
-    @ResponseBody
-    public AjaxResult remove(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField})
-    {
-        return toAjax(${className}Service.delete${ClassName}ById(${pkColumn.javaField}));
-    }
-#end
-#if($table.tree)
-
-    /**
-     * 閫夋嫨${functionName}鏍�
-     */
-#set($BusinessName=$businessName.substring(0,1).toUpperCase() + ${businessName.substring(1)})
-    @GetMapping(value = { "/select${BusinessName}Tree/{${pkColumn.javaField}}", "/select${BusinessName}Tree/" })
-    public String select${BusinessName}Tree(@PathVariable(value = "${pkColumn.javaField}", required = false) Long ${pkColumn.javaField}, ModelMap mmap)
-    {
-        if (StringUtils.isNotNull(${pkColumn.javaField}))
-        {
-            mmap.put("${className}", ${className}Service.select${ClassName}ById(${pkColumn.javaField}));
-        }
-        return prefix + "/tree";
-    }
-
-    /**
-     * 鍔犺浇${functionName}鏍戝垪琛�
-     */
-    @GetMapping("/treeData")
-    @ResponseBody
-    public List<Ztree> treeData()
-    {
-        List<Ztree> ztrees = ${className}Service.select${ClassName}Tree();
-        return ztrees;
-    }
-#end
-}
diff --git a/src/main/resources/vm/java/domain.java.vm b/src/main/resources/vm/java/domain.java.vm
deleted file mode 100644
index 829d11f..0000000
--- a/src/main/resources/vm/java/domain.java.vm
+++ /dev/null
@@ -1,76 +0,0 @@
-package ${packageName}.${moduleName}.domain;
-
-import com.ots.framework.aspectj.lang.annotation.Excel;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-#if($table.crud)
-import com.ots.framework.web.domain.BaseEntity;
-#elseif($table.tree)
-#end
-#foreach ($import in $importList)
-import ${import};
-#end
-
-/**
- * ${functionName}瀵硅薄 ${tableName}
- * 
- * @author ${author}
- * @date ${datetime}
- */
-#if($table.crud)
-#set($Entity="BaseEntity")
-#elseif($table.tree)
-#set($Entity="TreeEntity")
-#end
-public class ${ClassName} extends ${Entity}
-{
-    private static final long serialVersionUID = 1L;
-
-#foreach ($column in $columns)
-#if(!$column.superColumn)
-    /** $column.columnComment */
-#if($column.list)
-#set($parentheseIndex=$column.columnComment.indexOf("锛�"))
-#if($parentheseIndex != -1)
-#set($comment=$column.columnComment.substring(0, $parentheseIndex))
-#else
-#set($comment=$column.columnComment)
-#end
-#if($parentheseIndex != -1)
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-#elseif($column.javaType == 'Date')
-    @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
-#else
-    @Excel(name = "${comment}")
-#end
-#end
-    private $column.javaType $column.javaField;
-
-#end
-#end
-#foreach ($column in $columns)
-#if(!$column.superColumn)
-#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
-    public void set${AttrName}($column.javaType $column.javaField) 
-    {
-        this.$column.javaField = $column.javaField;
-    }
-
-    public $column.javaType get${AttrName}() 
-    {
-        return $column.javaField;
-    }
-#end
-#end
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-#foreach ($column in $columns)
-#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
-            .append("${column.javaField}", get${AttrName}())
-#end
-            .toString();
-    }
-}
diff --git a/src/main/resources/vm/java/mapper.java.vm b/src/main/resources/vm/java/mapper.java.vm
deleted file mode 100644
index 7c702f2..0000000
--- a/src/main/resources/vm/java/mapper.java.vm
+++ /dev/null
@@ -1,61 +0,0 @@
-package ${packageName}.${moduleName}.mapper;
-
-import ${packageName}.${moduleName}.domain.${ClassName};
-import java.util.List;
-
-/**
- * ${functionName}Mapper鎺ュ彛
- * 
- * @author ${author}
- * @date ${datetime}
- */
-public interface ${ClassName}Mapper 
-{
-    /**
-     * 鏌ヨ${functionName}
-     * 
-     * @param ${pkColumn.javaField} ${functionName}ID
-     * @return ${functionName}
-     */
-    public ${ClassName} select${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField});
-
-    /**
-     * 鏌ヨ${functionName}鍒楄〃
-     * 
-     * @param ${className} ${functionName}
-     * @return ${functionName}闆嗗悎
-     */
-    public List<${ClassName}> select${ClassName}List(${ClassName} ${className});
-
-    /**
-     * 鏂板${functionName}
-     * 
-     * @param ${className} ${functionName}
-     * @return 缁撴灉
-     */
-    public int insert${ClassName}(${ClassName} ${className});
-
-    /**
-     * 淇敼${functionName}
-     * 
-     * @param ${className} ${functionName}
-     * @return 缁撴灉
-     */
-    public int update${ClassName}(${ClassName} ${className});
-
-    /**
-     * 鍒犻櫎${functionName}
-     * 
-     * @param ${pkColumn.javaField} ${functionName}ID
-     * @return 缁撴灉
-     */
-    public int delete${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField});
-
-    /**
-     * 鎵归噺鍒犻櫎${functionName}
-     * 
-     * @param ${pkColumn.javaField}s 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
-    public int delete${ClassName}ByIds(String[] ${pkColumn.javaField}s);
-}
diff --git a/src/main/resources/vm/java/service.java.vm b/src/main/resources/vm/java/service.java.vm
deleted file mode 100644
index 90dc1fa..0000000
--- a/src/main/resources/vm/java/service.java.vm
+++ /dev/null
@@ -1,73 +0,0 @@
-package ${packageName}.${moduleName}.service;
-
-import ${packageName}.${moduleName}.domain.${ClassName};
-import java.util.List;
-#if($table.tree)
-import com.ots.framework.web.domain.Ztree;
-#end
-
-/**
- * ${functionName}Service鎺ュ彛
- * 
- * @author ${author}
- * @date ${datetime}
- */
-public interface I${ClassName}Service 
-{
-    /**
-     * 鏌ヨ${functionName}
-     * 
-     * @param ${pkColumn.javaField} ${functionName}ID
-     * @return ${functionName}
-     */
-    public ${ClassName} select${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField});
-
-    /**
-     * 鏌ヨ${functionName}鍒楄〃
-     * 
-     * @param ${className} ${functionName}
-     * @return ${functionName}闆嗗悎
-     */
-    public List<${ClassName}> select${ClassName}List(${ClassName} ${className});
-
-    /**
-     * 鏂板${functionName}
-     * 
-     * @param ${className} ${functionName}
-     * @return 缁撴灉
-     */
-    public int insert${ClassName}(${ClassName} ${className});
-
-    /**
-     * 淇敼${functionName}
-     * 
-     * @param ${className} ${functionName}
-     * @return 缁撴灉
-     */
-    public int update${ClassName}(${ClassName} ${className});
-
-    /**
-     * 鎵归噺鍒犻櫎${functionName}
-     * 
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
-    public int delete${ClassName}ByIds(String ids);
-
-    /**
-     * 鍒犻櫎${functionName}淇℃伅
-     * 
-     * @param ${pkColumn.javaField} ${functionName}ID
-     * @return 缁撴灉
-     */
-    public int delete${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField});
-#if($table.tree)
-
-    /**
-     * 鏌ヨ${functionName}鏍戝垪琛�
-     * 
-     * @return 鎵�鏈�${functionName}淇℃伅
-     */
-    public List<Ztree> select${ClassName}Tree();
-#end
-}
diff --git a/src/main/resources/vm/java/serviceImpl.java.vm b/src/main/resources/vm/java/serviceImpl.java.vm
deleted file mode 100644
index 3ec8c32..0000000
--- a/src/main/resources/vm/java/serviceImpl.java.vm
+++ /dev/null
@@ -1,140 +0,0 @@
-package ${packageName}.${moduleName}.service.impl;
-
-import java.util.List;
-#if($table.tree)
-import java.util.ArrayList;
-import com.ots.framework.web.domain.Ztree;
-#end
-#foreach ($column in $columns)
-#if($column.javaField == 'createTime' || $column.javaField == 'updateTime')
-import com.ots.common.utils.DateUtils;
-#break
-#end
-#end
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import ${packageName}.${moduleName}.mapper.${ClassName}Mapper;
-import ${packageName}.${moduleName}.domain.${ClassName};
-import ${packageName}.${moduleName}.service.I${ClassName}Service;
-import com.ots.common.utils.text.Convert;
-
-/**
- * ${functionName}Service涓氬姟灞傚鐞�
- * 
- * @author ${author}
- * @date ${datetime}
- */
-@Service
-public class ${ClassName}ServiceImpl implements I${ClassName}Service 
-{
-    @Autowired
-    private ${ClassName}Mapper ${className}Mapper;
-
-    /**
-     * 鏌ヨ${functionName}
-     * 
-     * @param ${pkColumn.javaField} ${functionName}ID
-     * @return ${functionName}
-     */
-    @Override
-    public ${ClassName} select${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField})
-    {
-        return ${className}Mapper.select${ClassName}ById(${pkColumn.javaField});
-    }
-
-    /**
-     * 鏌ヨ${functionName}鍒楄〃
-     * 
-     * @param ${className} ${functionName}
-     * @return ${functionName}
-     */
-    @Override
-    public List<${ClassName}> select${ClassName}List(${ClassName} ${className})
-    {
-        return ${className}Mapper.select${ClassName}List(${className});
-    }
-
-    /**
-     * 鏂板${functionName}
-     * 
-     * @param ${className} ${functionName}
-     * @return 缁撴灉
-     */
-    @Override
-    public int insert${ClassName}(${ClassName} ${className})
-    {
-#foreach ($column in $columns)
-#if($column.javaField == 'createTime')
-        ${className}.setCreateTime(DateUtils.getNowDate());
-#end
-#end
-        return ${className}Mapper.insert${ClassName}(${className});
-    }
-
-    /**
-     * 淇敼${functionName}
-     * 
-     * @param ${className} ${functionName}
-     * @return 缁撴灉
-     */
-    @Override
-    public int update${ClassName}(${ClassName} ${className})
-    {
-#foreach ($column in $columns)
-#if($column.javaField == 'createTime')
-        ${className}.setUpdateTime(DateUtils.getNowDate());
-#end
-#end
-        return ${className}Mapper.update${ClassName}(${className});
-    }
-
-    /**
-     * 鍒犻櫎${functionName}瀵硅薄
-     * 
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
-     * @return 缁撴灉
-     */
-    @Override
-    public int delete${ClassName}ByIds(String ids)
-    {
-        return ${className}Mapper.delete${ClassName}ByIds(Convert.toStrArray(ids));
-    }
-
-    /**
-     * 鍒犻櫎${functionName}淇℃伅
-     * 
-     * @param ${pkColumn.javaField} ${functionName}ID
-     * @return 缁撴灉
-     */
-    public int delete${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField})
-    {
-        return ${className}Mapper.delete${ClassName}ById(${pkColumn.javaField});
-    }
-#if($table.tree)
-
-    /**
-     * 鏌ヨ${functionName}鏍戝垪琛�
-     * 
-     * @return 鎵�鏈�${functionName}淇℃伅
-     */
-    @Override
-    public List<Ztree> select${ClassName}Tree()
-    {
-        List<${ClassName}> ${className}List = ${className}Mapper.select${ClassName}List(new ${ClassName}());
-        List<Ztree> ztrees = new ArrayList<Ztree>();
-        for (${ClassName} ${className} : ${className}List)
-        {
-            Ztree ztree = new Ztree();
-#set($TreeCode=$treeCode.substring(0,1).toUpperCase() + ${treeCode.substring(1)})
-#set($TreeParentCode=$treeParentCode.substring(0,1).toUpperCase() + ${treeParentCode.substring(1)})
-#set($TreeName=$treeName.substring(0,1).toUpperCase() + ${treeName.substring(1)})
-            ztree.setId(${className}.get${TreeCode}());
-            ztree.setpId(${className}.get${TreeParentCode}());
-            ztree.setName(${className}.get${TreeName}());
-            ztree.setTitle(${className}.get${TreeName}());
-            ztrees.add(ztree);
-        }
-        return ztrees;
-    }
-#end
-}
diff --git a/src/main/resources/vm/sql/sql.vm b/src/main/resources/vm/sql/sql.vm
deleted file mode 100644
index de26cb3..0000000
--- a/src/main/resources/vm/sql/sql.vm
+++ /dev/null
@@ -1,19 +0,0 @@
--- 鑿滃崟 SQL
-insert into sys_menu (menu_name, parent_id, order_num, url,menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
-values('${functionName}', '3', '1', '/${moduleName}/${businessName}', 'C', '0', '${permissionPrefix}:view', '#', 'admin', '2018-03-01', 'ry', '2018-03-01', '${functionName}鑿滃崟');
-
--- 鎸夐挳鐖惰彍鍗旾D
-SELECT @parentId := LAST_INSERT_ID();
-
--- 鎸夐挳 SQL
-insert into sys_menu  (menu_name, parent_id, order_num, url,menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
-values('${functionName}鏌ヨ', @parentId, '1',  '#',  'F', '0', '${permissionPrefix}:list',         '#', 'admin', '2018-03-01', 'ry', '2018-03-01', '');
-
-insert into sys_menu  (menu_name, parent_id, order_num, url,menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
-values('${functionName}鏂板', @parentId, '2',  '#',  'F', '0', '${permissionPrefix}:add',          '#', 'admin', '2018-03-01', 'ry', '2018-03-01', '');
-
-insert into sys_menu  (menu_name, parent_id, order_num, url,menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
-values('${functionName}淇敼', @parentId, '3',  '#',  'F', '0', '${permissionPrefix}:edit',         '#', 'admin', '2018-03-01', 'ry', '2018-03-01', '');
-
-insert into sys_menu  (menu_name, parent_id, order_num, url,menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
-values('${functionName}鍒犻櫎', @parentId, '4',  '#',  'F', '0', '${permissionPrefix}:remove',       '#', 'admin', '2018-03-01', 'ry', '2018-03-01', '');
diff --git a/src/main/resources/vm/xml/mapper.xml.vm b/src/main/resources/vm/xml/mapper.xml.vm
deleted file mode 100644
index 516211e..0000000
--- a/src/main/resources/vm/xml/mapper.xml.vm
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="${packageName}.${moduleName}.mapper.${ClassName}Mapper">
-    
-    <resultMap type="${ClassName}" id="${ClassName}Result">
-#foreach ($column in $columns)
-        <result property="${column.javaField}"    column="${column.columnName}"    />
-#end
-#if($table.tree)
-        <result property="parentName" column="parent_name" />
-#end
-    </resultMap>
-
-    <sql id="select${ClassName}Vo">
-        select#foreach($column in $columns) $column.columnName#if($velocityCount != $columns.size()),#end#end from ${tableName}
-    </sql>
-
-    <select id="select${ClassName}List" parameterType="${ClassName}" resultMap="${ClassName}Result">
-        <include refid="select${ClassName}Vo"/>
-        <where>  
-#foreach($column in $columns)
-#set($queryType=$column.queryType)
-#set($javaField=$column.javaField)
-#set($javaType=$column.javaType)
-#set($columnName=$column.columnName)
-#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
-#if($column.query)
-#if($column.queryType == "EQ")
-            <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName = #{$javaField}</if>
-#elseif($queryType == "NE")
-            <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName != #{$javaField}</if>
-#elseif(\$queryType == "GT")
-            <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName &gt; #{$javaField}</if>
-#elseif(\$queryType == "GTE")
-            <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName &gt;= #{$javaField}</if>
-#elseif(\$queryType == "LT")
-            <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName &lt; #{$javaField}</if>
-#elseif(\$queryType == "LTE")
-            <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName &lt;= #{$javaField}</if>
-#elseif($queryType == "LIKE")
-            <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName like concat('%', #{$javaField}, '%')</if>
-#elseif($queryType == "BETWEEN")
-            <if test="params.begin$AttrName != null and params.begin$AttrName != '' and params.end$AttrName != null and params.end$AttrName != ''"> and $columnName between #{params.begin$AttrName} and #{params.end$AttrName}</if>
-#end
-#end
-#end
-        </where>
-#if($table.tree)
-        order by ${tree_parent_code}
-#end
-    </select>
-    
-    <select id="select${ClassName}ById" parameterType="${pkColumn.javaType}" resultMap="${ClassName}Result">
-#if($table.crud)
-        <include refid="select${ClassName}Vo"/>
-        where ${pkColumn.columnName} = #{${pkColumn.javaField}}
-#elseif($table.tree)
-        select#foreach($column in $columns) t.$column.columnName,#end p.dept_name as parent_name
-        from ${tableName} t
-        left join ${tableName} p on p.${pkColumn.columnName} = t.${tree_parent_code}
-        where t.${pkColumn.columnName} = #{${pkColumn.javaField}}
-#end
-    </select>
-        
-    <insert id="insert${ClassName}" parameterType="${ClassName}"#if($pkColumn.increment) useGeneratedKeys="true" keyProperty="$pkColumn.javaField"#end>
-        insert into ${tableName}
-        <trim prefix="(" suffix=")" suffixOverrides=",">
-#foreach($column in $columns)
-#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment)
-            <if test="$column.javaField != null #if($column.javaType == 'String' ) and $column.javaField != ''#end">$column.columnName,</if>
-#end
-#end
-         </trim>
-        <trim prefix="values (" suffix=")" suffixOverrides=",">
-#foreach($column in $columns)
-#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment)
-            <if test="$column.javaField != null #if($column.javaType == 'String' ) and $column.javaField != ''#end">#{$column.javaField},</if>
-#end
-#end
-         </trim>
-    </insert>
-
-    <update id="update${ClassName}" parameterType="${ClassName}">
-        update ${tableName}
-        <trim prefix="SET" suffixOverrides=",">
-#foreach($column in $columns)
-#if($column.columnName != $pkColumn.columnName)
-            <if test="$column.javaField != null #if($column.javaType == 'String' ) and $column.javaField != ''#end">$column.columnName = #{$column.javaField},</if>
-#end
-#end
-        </trim>
-        where ${pkColumn.columnName} = #{${pkColumn.javaField}}
-    </update>
-
-    <delete id="delete${ClassName}ById" parameterType="${pkColumn.javaType}">
-        delete from ${tableName} where ${pkColumn.columnName} = #{${pkColumn.javaField}}
-    </delete>
-
-    <delete id="delete${ClassName}ByIds" parameterType="String">
-        delete from ${tableName} where ${pkColumn.columnName} in 
-        <foreach item="${pkColumn.javaField}" collection="array" open="(" separator="," close=")">
-            #{${pkColumn.javaField}}
-        </foreach>
-    </delete>
-    
-</mapper>
\ No newline at end of file
diff --git a/src/main/scripts/ots.sh b/src/main/scripts/ots.sh
deleted file mode 100644
index d4bd927..0000000
--- a/src/main/scripts/ots.sh
+++ /dev/null
@@ -1,141 +0,0 @@
-#!/usr/bin/env bash
-# -----------------------------------------------------------------------------
-#   Author: guobiao8900@126.com
-#     date: 2019-10-22 10:39
-#     Desc: TAI Online Testing System Deploy
-# -----------------------------------------------------------------------------
-# Source function library.
-. /etc/rc.d/init.d/functions
-export LANG="en_US.UTF-8"
-PROJECT_NAME=OTS
-APP_NAME=manager
-RUN_USER=root
-PROG=${PROJECT_NAME}-${APP_NAME}
-PID_FILE=/tmp/$PROG.pid
-
-BASE_DIR=$(cd `dirname $0`; pwd)
-APP_HOME=$(cd `dirname ${BASE_DIR}`; pwd)
-
-APP_JAR=${APP_HOME}/main/*.jar
-APP_CONF=${APP_HOME}/conf/
-APP_LOG_DIR=/data/logs/${PROJECT_NAME}/${APP_NAME}
-
-#JVM鍙傛暟
-JVM_OPTS="-Xms1024m -Xmx1024m -Xmn256m -Djava.awt.headless=true -XX:MaxPermSize=128m"
-PORT=8090
-
-[ -z "`grep $RUN_USER /etc/passwd`" ] && echo -e "error: user $RUN_USER does not exist"
-
-[ -n "${APP_LOG_DIR}" ] && mkdir -pv ${APP_LOG_DIR} >/dev/null && chown -R ${RUN_USER}:${RUN_USER} ${APP_LOG_DIR} >/dev/null
-
-if [ -f "${APP_CONF}/application.yml" ]; then
-    PORT="$(cat ${APP_CONF}/application.yml | grep server.port | tr -cd "[0-9]")"
-fi
-
-JAVA_CMD="java -jar ${APP_JAR}"
-PARAMS="-Dspring.config.location=${APP_CONF} --daemon"
-[ -n "$PORT" ] && PARAMS="$PARAMS --server.port=${PORT}"
-[ -n "$JVM_OPTS" ] && PARAMS="$PARAMS ${JVM_OPTS}"
-
-RETVAL=1
-liv=
-
-start() {
-
-    echo -n "Starting $PROG "
-    if [ $(whoami) == 'root' ]
-    then
-        echo "daemon --user $RUN_USER --pidfile $PID_FILE $JAVA_CMD $PARAMS"
-        daemon --user $RUN_USER --pidfile $PID_FILE "$JAVA_CMD $PARAMS 2>&1 &" > /dev/null
-    else
-        daemon --pidfile $PID_FILE "$JAVA_CMD $PARAMS 2>&1 &" > /dev/null
-    fi
-        RETVAL=$?
-
-    if [ $RETVAL = 0 ]
-    then
-        for ((i=0;i<30;i++))
-        do
-            if [ -n "$PORT" ]
-            then
-                liv=$(netstat -an | grep $PORT | grep LISTEN | grep -v grep | awk '{print $4}')
-                [ -n "$liv" ] && pid=$(ps -ef | grep -v grep | grep java | grep $APP_JAR | awk '{print $2}')
-            else
-                pid=$(ps -ef | grep -v grep | grep java | grep $APP_JAR | awk '{print $2}')
-            fi
-            if [ -n "$pid" ]
-            then
-                echo $pid > "$PID_FILE";
-                chown ${RUN_USER}:${RUN_USER} "$PID_FILE";
-                RETVAL=0
-                break
-            fi
-            RETVAL=1
-            sleep 1
-        done
-    fi
-
-    if [ $RETVAL -eq 0 ]
-    then
-        action $"pid: $pid" /bin/true
-    else
-        action $"" /bin/false
-    fi
-    return $RETVAL
-
-}
-
-stop() {
-    [ -f "$PID_FILE" ] && local pid=$(cat $PID_FILE)
-    if [ -f $PID_FILE ]; then
-        killproc -p $PID_FILE
-        RETVAL=$?
-    fi
-
-    if [ $RETVAL -eq 0 ]; then
-        action "Stopping $PROG pid: $pid" /bin/true
-        [ -f $PID_FILE  ] && rm -rf $PID_FILE
-    elif [ $RETVAL -ne 0 ]; then
-        action "Stopping $PROG" /bin/false
-        RETVAL=1
-    fi
-    return $RETVAL
-}
-
-
-restart() {
-    rh_status
-    status=$(rh_status| tr -cd "[0-9]")
-    [ -n "$status" ] && stop
-    sleep 2
-    start
-}
-
-rh_status() {
-     status -p $PID_FILE $APP_NAME
-}
-
-rh_status_q() {
-    rh_status >/dev/null 2>&1
-}
-
-case "$1" in
-    start)
-    (rh_status_q && rh_status ) && exit 0
-    $1
-    ;;
-    stop)
-    (rh_status_q || rh_status )|| exit 0
-    $1
-    ;;
-    restart)
-    $1
-    ;;
-    status)
-    rh_status
-    ;;
-    *)
-    echo $"Usage: $0 {start|stop|status|restart}"
-    exit 2
-    ;;
-esac

--
Gitblit v1.9.1