From 93af1c6ffb9ae0e894689ad3a37b548e57d54cff Mon Sep 17 00:00:00 2001 From: linzhijie <19970921lzj> Date: 星期四, 11 三月 2021 19:10:07 +0800 Subject: [PATCH] 有注释的测评系统业务代码 --- src/main/java/com/ots/project/exam/mapper/TExamPaperMapper.java | 59 src/main/java/com/ots/project/exam/dto/DataReport.java | 4 src/main/resources/vm/java/domain.java.vm | 76 src/main/java/com/ots/project/exam/dto/QuestionContent.java | 5 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/resources/vm/html/tree.html.vm | 51 src/main/java/com/ots/project/exam/service/impl/EntTestMemberBackstageServiceImpl.java | 56 src/main/resources/static/i18n/messages_th_TH.properties | 10 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/domain/TExamReport.java | 147 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 | 113 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 | 583 + src/main/java/com/ots/project/exam/domain/TExamPaperQuestion.java | 18 src/main/java/com/ots/project/exam/service/IEntTestSendtaskService.java | 56 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/resources/mybatis/tool/GenTableMapper.xml | 169 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 | 29 OTS-VUE-API.md | 116 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/assembly/assembly.xml | 40 src/main/resources/vm/java/serviceImpl.java.vm | 140 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/resources/vm/xml/mapper.xml.vm | 108 src/main/java/com/ots/project/exam/dto/QuestionObject.java | 8 src/main/java/com/ots/project/exam/service/ISysUserExtendService.java | 64 src/main/resources/application.yml | 57 src/main/java/com/ots/project/exam/service/impl/EntOperLogServiceImpl.java | 57 src/main/resources/templates/exam/testMember/testMember.html | 12 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 | 64 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 | 149 src/main/java/com/ots/project/exam/viewmodel/ExamPaperReadVM.java | 2 src/main/java/com/ots/project/exam/mapper/SysUserExtendMapper.java | 55 LICENSE | 20 src/main/java/com/ots/project/demo/controller/DemoDialogController.java | 41 src/main/java/com/ots/project/exam/controller/TReportTemplateController.java | 45 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 ots-docs/前后端国际化-配置-20200123.xls | 0 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 .gitignore | 43 src/main/java/com/ots/project/exam/viewmodel/BaseVM.java | 7 src/main/resources/static/i18n/messages_en_US.properties | 29 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/project/exam/service/impl/TExamReportServiceImpl.java | 274 src/main/java/com/ots/project/exam/mapper/TExamReportMapper.java | 80 jar/tai-ots-framework-1.0-test.jar | 0 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 ots-docs/index.html | 21 src/main/java/com/ots/project/exam/listener/UserEvent.java | 5 src/main/resources/static/i18n/messages_zh_CN.properties | 9 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 jar/tai-ots-framework-1.0.jar | 0 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 | 16 src/main/java/com/ots/project/exam/dto/TaskItemAnswerObject.java | 5 src/main/java/com/ots/project/exam/controller/TLibraryCodeController.java | 53 .idea/workspace.xml | 34 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 | 6 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 ots-docs/.nojekyll | 0 src/main/java/com/ots/project/exam/service/ITExamReportService.java | 104 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 | 38 src/main/java/com/ots/project/exam/controller/SysUserExtendController.java | 42 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 | 48 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/resources/vm/java/controller.java.vm | 200 src/main/java/com/ots/project/exam/service/impl/BaseExamServiceImpl.java | 9 src/main/resources/templates/include.html | 2 src/main/resources/vm/html/add.html.vm | 166 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/java/com/ots/project/exam/domain/ExamPaper.java | 21 src/main/resources/logback.xml | 70 src/main/resources/vm/java/mapper.java.vm | 61 src/main/java/com/ots/project/exam/mapper/SysUserPaperMapper.java | 55 src/main/resources/mybatis/tool/GenTableColumnMapper.xml | 120 src/main/scripts/ots.sh | 141 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/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 ots-docs/README.md | 261 + src/main/java/com/ots/OtsApplication.java | 36 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/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/resources/vm/html/list.html.vm | 148 src/main/java/com/ots/project/exam/service/SubjectService.java | 7 src/main/resources/vm/java/service.java.vm | 73 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 | 107 src/main/java/com/ots/project/exam/service/impl/EntTestMemberServiceImpl.java | 95 src/main/resources/templates/exam/userpaper/edit.html | 87 src/main/resources/static/ajax/libs/layui/lay/modules/laydate.js | 615 -- src/main/java/com/ots/project/exam/service/impl/TExamPaperServiceImpl.java | 463 + 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 | 112 src/main/java/com/ots/project/exam/domain/NumberOfUsersByCompany.java | 26 src/main/java/com/ots/project/exam/service/impl/CountCalculateServiceImpl.java | 19 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/resources/vm/html/list-tree.html.vm | 150 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 | 115 src/main/java/com/ots/project/exam/listener/CalculateExamPaperAnswerListener.java | 14 src/main/java/com/ots/project/exam/mapper/TTextContentMapper.java | 63 src/main/resources/vm/html/edit.html.vm | 160 src/main/java/com/ots/project/monitor/job/task/RecoverTask.java | 38 src/main/java/com/ots/project/exam/controller/TExamPaperController.java | 193 src/main/java/com/ots/project/exam/mapper/BaseMapper.java | 7 src/main/resources/vm/sql/sql.vm | 19 290 files changed, 11,426 insertions(+), 2,901 deletions(-) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fd446f4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,43 @@ +###################################################################### +# 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/.idea/workspace.xml b/.idea/workspace.xml index de7c9fa..4369cfd 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -32,7 +32,6 @@ <property name="RequestMappingsPanelWidth1" value="75" /> <property name="RunOnceActivity.OpenProjectViewOnStart" value="true" /> <property name="RunOnceActivity.ShowReadmeOnStart" value="true" /> - <property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" /> <property name="SONARLINT_PRECOMMIT_ANALYSIS" value="true" /> <property name="WebServerToolWindowFactoryState" value="false" /> <property name="aspect.path.notification.shown" value="true" /> @@ -81,6 +80,7 @@ <workItem from="1615431378367" duration="118000" /> <workItem from="1615431745167" duration="7921000" /> <workItem from="1615460071688" duration="345000" /> + <workItem from="1615460464699" duration="344000" /> </task> <task id="LOCAL-00001" summary="娴嬭瘎椤圭洰鏈�鏂颁唬鐮�"> <created>1615212708854</created> @@ -89,7 +89,14 @@ <option name="project" value="LOCAL" /> <updated>1615212708854</updated> </task> - <option name="localTasksCounter" value="2" /> + <task id="LOCAL-00002" summary="娴嬭瘎绯荤粺澶栭儴浠g爜"> + <created>1615460723307</created> + <option name="number" value="00002" /> + <option name="presentableId" value="LOCAL-00002" /> + <option name="project" value="LOCAL" /> + <updated>1615460723307</updated> + </task> + <option name="localTasksCounter" value="3" /> <servers /> </component> <component name="TypeScriptGeneratedFilesManager"> @@ -97,25 +104,26 @@ </component> <component name="VcsManagerConfiguration"> <MESSAGE value="娴嬭瘎椤圭洰鏈�鏂颁唬鐮�" /> - <option name="LAST_COMMIT_MESSAGE" value="娴嬭瘎椤圭洰鏈�鏂颁唬鐮�" /> + <MESSAGE value="娴嬭瘎绯荤粺澶栭儴浠g爜" /> + <option name="LAST_COMMIT_MESSAGE" value="娴嬭瘎绯荤粺澶栭儴浠g爜" /> </component> <component name="WindowStateProjectService"> <state x="414" y="174" key="#com.intellij.execution.impl.EditConfigurationsDialog" timestamp="1615210973816"> <screen x="0" y="0" width="1920" height="1040" /> </state> <state x="414" y="174" key="#com.intellij.execution.impl.EditConfigurationsDialog/0.0.1920.1040@0.0.1920.1040" timestamp="1615210973816" /> - <state x="456" y="74" key="CommitChangelistDialog2" timestamp="1615212702942"> + <state x="456" y="74" key="CommitChangelistDialog2" timestamp="1615460721590"> <screen x="0" y="0" width="1920" height="1040" /> </state> - <state x="456" y="74" key="CommitChangelistDialog2/0.0.1920.1040@0.0.1920.1040" timestamp="1615212702942" /> - <state x="740" y="274" key="FileChooserDialogImpl" timestamp="1615460372194"> + <state x="456" y="74" key="CommitChangelistDialog2/0.0.1920.1040@0.0.1920.1040" timestamp="1615460721590" /> + <state x="740" y="274" key="FileChooserDialogImpl" timestamp="1615460475306"> <screen x="0" y="0" width="1920" height="1040" /> </state> - <state x="740" y="274" key="FileChooserDialogImpl/0.0.1920.1040@0.0.1920.1040" timestamp="1615460372194" /> - <state width="263" height="353" key="Git.Branch.Popup" timestamp="1615212849907"> + <state x="740" y="274" key="FileChooserDialogImpl/0.0.1920.1040@0.0.1920.1040" timestamp="1615460475306" /> + <state width="267" height="357" key="Git.Branch.Popup" timestamp="1615460729320"> <screen x="0" y="0" width="1920" height="1040" /> </state> - <state width="263" height="353" key="Git.Branch.Popup/0.0.1920.1040@0.0.1920.1040" timestamp="1615212849907" /> + <state width="267" height="357" key="Git.Branch.Popup/0.0.1920.1040@0.0.1920.1040" timestamp="1615460729320" /> <state width="1877" height="469" key="GridCell.Tab.0.bottom" timestamp="1615455836101"> <screen x="0" y="0" width="1920" height="1040" /> </state> @@ -156,10 +164,10 @@ <screen x="0" y="0" width="1920" height="1040" /> </state> <state x="461" y="164" key="SettingsEditor/0.0.1920.1040@0.0.1920.1040" timestamp="1615431876749" /> - <state x="552" y="252" key="Vcs.Push.Dialog.v2" timestamp="1615213185827"> + <state x="552" y="252" key="Vcs.Push.Dialog.v2" timestamp="1615460743690"> <screen x="0" y="0" width="1920" height="1040" /> </state> - <state x="552" y="252" key="Vcs.Push.Dialog.v2/0.0.1920.1040@0.0.1920.1040" timestamp="1615213185827" /> + <state x="552" y="252" key="Vcs.Push.Dialog.v2/0.0.1920.1040@0.0.1920.1040" timestamp="1615460743690" /> <state x="754" y="432" key="com.intellij.openapi.vcs.update.UpdateOrStatusOptionsDialogupdate-v2" timestamp="1615427969273"> <screen x="0" y="0" width="1920" height="1040" /> </state> @@ -168,6 +176,10 @@ <screen x="0" y="0" width="1920" height="1040" /> </state> <state x="661" y="252" width="598" height="748" key="find.popup/0.0.1920.1040@0.0.1920.1040" timestamp="1615459508061" /> + <state x="761" y="426" key="git4idea.remote.GitConfigureRemotesDialog" timestamp="1615460537318"> + <screen x="0" y="0" width="1920" height="1040" /> + </state> + <state x="761" y="426" key="git4idea.remote.GitConfigureRemotesDialog/0.0.1920.1040@0.0.1920.1040" timestamp="1615460537318" /> <state x="616" y="240" width="672" height="677" key="run.anything.popup" timestamp="1615428502881"> <screen x="0" y="0" width="1920" height="1040" /> </state> diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..66066ed --- /dev/null +++ b/LICENSE @@ -0,0 +1,20 @@ +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 new file mode 100644 index 0000000..8a5c698 --- /dev/null +++ b/OTS-VUE-API.md @@ -0,0 +1,116 @@ +# 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/README.md b/README.md deleted file mode 100644 index 0427e22..0000000 --- a/README.md +++ /dev/null @@ -1,4 +0,0 @@ -## TAI_OTS_MASTER - -娴嬭瘎澶栭儴浠g爜 - diff --git a/jar/tai-ots-framework-1.0-test.jar b/jar/tai-ots-framework-1.0-test.jar new file mode 100644 index 0000000..2dbff22 --- /dev/null +++ b/jar/tai-ots-framework-1.0-test.jar Binary files differ diff --git a/jar/tai-ots-framework-1.0.jar b/jar/tai-ots-framework-1.0.jar new file mode 100644 index 0000000..2dbff22 --- /dev/null +++ b/jar/tai-ots-framework-1.0.jar Binary files differ diff --git a/ots-docs/.nojekyll b/ots-docs/.nojekyll new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/ots-docs/.nojekyll diff --git a/ots-docs/README.md b/ots-docs/README.md new file mode 100644 index 0000000..2279cfd --- /dev/null +++ b/ots-docs/README.md @@ -0,0 +1,261 @@ +# 骞冲彴绠�浠� + +娴嬭瘎鏈嶅姟绯荤粺 +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 new file mode 100644 index 0000000..f48a914 --- /dev/null +++ b/ots-docs/index.html @@ -0,0 +1,21 @@ +<!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" new file mode 100644 index 0000000..3188c61 --- /dev/null +++ "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" Binary files differ diff --git a/pom.xml b/pom.xml index 6896115..278c0b1 100644 --- a/pom.xml +++ b/pom.xml @@ -248,13 +248,7 @@ <artifactId>springfox-swagger-ui</artifactId> <version>${swagger.version}</version> </dependency> - - <dependency> - <groupId>com.github.ulisesbocchio</groupId> - <artifactId>jasypt-spring-boot-starter</artifactId> - <version>2.0.0</version> - </dependency> - + <!-- 鑾峰彇绯荤粺淇℃伅 --> <dependency> <groupId>com.github.oshi</groupId> @@ -365,6 +359,8 @@ <groupId>com.ots</groupId> <artifactId>tai-ots-framework</artifactId> <version>1.0</version> + <scope>system</scope> + <systemPath>${project.basedir}/jar/tai-ots-framework-1.0.jar</systemPath> </dependency> </dependencies> @@ -403,6 +399,25 @@ <fork>true</fork> <!-- 濡傛灉娌℃湁璇ラ厤缃紝devtools涓嶄細鐢熸晥 --> </configuration> </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-assembly-plugin</artifactId> + <configuration> + <finalName>${project.artifactId}</finalName> + <descriptors> + <descriptor>src/main/assembly/assembly.xml</descriptor> + </descriptors> + </configuration> + <executions> + <execution> + <id>make-assembly</id> + <phase>package</phase> + <goals> + <goal>single</goal> + </goals> + </execution> + </executions> + </plugin> </plugins> </build> diff --git a/src/main/assembly/assembly.xml b/src/main/assembly/assembly.xml new file mode 100644 index 0000000..2e3c23e --- /dev/null +++ b/src/main/assembly/assembly.xml @@ -0,0 +1,40 @@ +<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/OtsApplication.java b/src/main/java/com/ots/OtsApplication.java index 37c99c0..38d48e2 100644 --- a/src/main/java/com/ots/OtsApplication.java +++ b/src/main/java/com/ots/OtsApplication.java @@ -1,30 +1,18 @@ package com.ots; -import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties; -import org.jasypt.encryption.StringEncryptor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.CommandLineRunner; + import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; -import org.springframework.context.ApplicationContext; -import org.springframework.core.env.Environment; +/** + * 鍚姩绋嬪簭 + * + * @author ots + */ @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) -@EnableEncryptableProperties -public class OtsApplication implements CommandLineRunner { - - private static final Logger l = LoggerFactory.getLogger(OtsApplication.class); - - @Autowired - private StringEncryptor stringEncryptor; - - @Autowired - private ApplicationContext applicationContext; - +public class OtsApplication { public static void main(String[] args) { - + // System.setProperty("spring.devtools.restart.enabled", "false"); SpringApplication.run(OtsApplication.class, args); StringBuilder builder = new StringBuilder(); builder.append("********************************************************************\n"); @@ -35,10 +23,4 @@ builder.append("********************************************************************\n"); System.out.println(builder.toString()); } - - @Override - public void run(String... args) throws Exception { - Environment environment = applicationContext.getEnvironment(); - l.info(stringEncryptor.encrypt(environment.getProperty("password"))); - } -} +} \ 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 db8b846..5e0bfcc 100644 --- a/src/main/java/com/ots/OtsServletInitializer.java +++ b/src/main/java/com/ots/OtsServletInitializer.java @@ -1,7 +1,13 @@ 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 deleted file mode 100644 index 7f88ce7..0000000 --- a/src/main/java/com/ots/framework/web/controller/BaseController.java +++ /dev/null @@ -1,115 +0,0 @@ -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 91c5cf2..3bfe895 100644 --- a/src/main/java/com/ots/project/common/BaseApiController.java +++ b/src/main/java/com/ots/project/common/BaseApiController.java @@ -1,15 +1,20 @@ 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 fdbe8a0..18163f0 100644 --- a/src/main/java/com/ots/project/common/CommonController.java +++ b/src/main/java/com/ots/project/common/CommonController.java @@ -1,4 +1,5 @@ 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; @@ -12,24 +13,38 @@ 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", @@ -42,14 +57,17 @@ 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(); @@ -60,31 +78,36 @@ 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 8719887..cf79a9e 100644 --- a/src/main/java/com/ots/project/demo/controller/DemoDialogController.java +++ b/src/main/java/com/ots/project/demo/controller/DemoDialogController.java @@ -1,43 +1,70 @@ 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 70e06e5..37e3d77 100644 --- a/src/main/java/com/ots/project/demo/controller/DemoFormController.java +++ b/src/main/java/com/ots/project/demo/controller/DemoFormController.java @@ -1,18 +1,27 @@ 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")); @@ -20,52 +29,82 @@ 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) { @@ -79,46 +118,71 @@ 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() { @@ -128,45 +192,69 @@ 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 2ab7a84..4134579 100644 --- a/src/main/java/com/ots/project/demo/controller/DemoIconController.java +++ b/src/main/java/com/ots/project/demo/controller/DemoIconController.java @@ -1,18 +1,30 @@ 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 ae320d2..69e7369 100644 --- a/src/main/java/com/ots/project/demo/controller/DemoOperateController.java +++ b/src/main/java/com/ots/project/demo/controller/DemoOperateController.java @@ -1,4 +1,5 @@ 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; @@ -13,16 +14,24 @@ 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")); @@ -51,23 +60,32 @@ 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()) { @@ -91,12 +109,18 @@ rspData.setTotal(userList.size()); return rspData; } - + + /** + * 鏂板鐢ㄦ埛 + */ @GetMapping("/add") public String add(ModelMap mmap) { return prefix + "/add"; } - + + /** + * 鏂板淇濆瓨鐢ㄦ埛 + */ @PostMapping("/add") @ResponseBody public AjaxResult addSave(UserOperateModel user) { @@ -104,19 +128,28 @@ 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) { @@ -124,14 +157,20 @@ 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 { @@ -140,7 +179,10 @@ String message = importUser(userList, updateSupport); return AjaxResult.success(message); } - + + /** + * 鍒犻櫎鐢ㄦ埛 + */ @PostMapping("/remove") @ResponseBody public AjaxResult remove(String ids) { @@ -150,19 +192,30 @@ } 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锛�"); @@ -173,7 +226,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 6619706..d47c6e0 100644 --- a/src/main/java/com/ots/project/demo/controller/DemoReportController.java +++ b/src/main/java/com/ots/project/demo/controller/DemoReportController.java @@ -1,28 +1,46 @@ 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 97f968d..189955b 100644 --- a/src/main/java/com/ots/project/demo/controller/DemoTableController.java +++ b/src/main/java/com/ots/project/demo/controller/DemoTableController.java @@ -1,4 +1,5 @@ package com.ots.project.demo.controller; + import com.fasterxml.jackson.annotation.JsonFormat; import com.ots.common.utils.DateUtils; import com.ots.common.utils.StringUtils; @@ -11,13 +12,21 @@ 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")); @@ -46,94 +55,145 @@ 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) { @@ -158,28 +218,58 @@ 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; @@ -192,57 +282,75 @@ 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 f84fa7e..7e86f3c 100644 --- a/src/main/java/com/ots/project/demo/domain/UserOperateModel.java +++ b/src/main/java/com/ots/project/demo/domain/UserOperateModel.java @@ -1,30 +1,45 @@ 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; @@ -37,58 +52,76 @@ 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 ed47e97..f0b32ad 100644 --- a/src/main/java/com/ots/project/exam/controller/DistributorController.java +++ b/src/main/java/com/ots/project/exam/controller/DistributorController.java @@ -1,4 +1,5 @@ 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; @@ -17,22 +18,36 @@ 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) { @@ -46,16 +61,20 @@ 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()); @@ -63,8 +82,9 @@ 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()); @@ -73,7 +93,10 @@ } return list; } - + + /** + * 淇敼鐢ㄦ埛淇℃伅鎵╁睍 + */ @GetMapping("/edit/{userId}") public String edit(@PathVariable("userId") Long userId, ModelMap mmap) { SysUserExtend sysUserExtend = sysUserExtendService.selectSysUserExtendById(userId); @@ -85,13 +108,15 @@ 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 db24ed7..3032586 100644 --- a/src/main/java/com/ots/project/exam/controller/EntDemographyInfoController.java +++ b/src/main/java/com/ots/project/exam/controller/EntDemographyInfoController.java @@ -1,4 +1,5 @@ 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,16 +17,25 @@ 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() { @@ -38,7 +48,10 @@ } return new ModelAndView(prefix + "/info", new HashMap<>()); } - + + /** + * 鏌ヨ浜哄彛瀛︿俊鎭垪琛� + */ @RequiresPermissions("exam:info:list") @PostMapping("/list") @ResponseBody @@ -47,7 +60,10 @@ List<EntDemographyInfo> list = entDemographyInfoService.selectEntDemographyInfoList(entDemographyInfo); return getDataTable(list); } - + + /** + * 瀵煎嚭浜哄彛瀛︿俊鎭垪琛� + */ @RequiresPermissions("exam:info:export") @PostMapping("/export") @ResponseBody @@ -56,12 +72,18 @@ 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") @@ -69,14 +91,20 @@ 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") @@ -84,7 +112,10 @@ 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 cd4ad4d..be327ff 100644 --- a/src/main/java/com/ots/project/exam/controller/EntDemographyParamController.java +++ b/src/main/java/com/ots/project/exam/controller/EntDemographyParamController.java @@ -1,4 +1,5 @@ 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,22 +18,34 @@ 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 @@ -42,14 +55,17 @@ 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 @@ -64,14 +80,20 @@ 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 @@ -80,23 +102,31 @@ 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); @@ -105,14 +135,20 @@ } 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") @@ -120,7 +156,10 @@ 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 94880c9..c171a43 100644 --- a/src/main/java/com/ots/project/exam/controller/EntOperLogController.java +++ b/src/main/java/com/ots/project/exam/controller/EntOperLogController.java @@ -1,4 +1,5 @@ package com.ots.project.exam.controller; + import java.util.List; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; @@ -18,20 +19,31 @@ 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 @@ -41,7 +53,10 @@ List<EntOperLog> list = entOperLogService.selectEntOperLogList(entOperLog); return getDataTable(list); } - + + /** + * 瀵煎嚭浣跨敤娆℃暟鎿嶄綔璁板綍鍒楄〃 + */ @RequiresPermissions("exam:entOperLog:export") @PostMapping("/export") @ResponseBody @@ -51,13 +66,19 @@ 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") @@ -66,7 +87,10 @@ { return toAjax(entOperLogService.insertEntOperLog(entOperLog)); } - + + /** + * 淇敼浣跨敤娆℃暟鎿嶄綔璁板綍 + */ @GetMapping("/edit/{logId}") public String edit(@PathVariable("logId") Long logId, ModelMap mmap) { @@ -74,7 +98,10 @@ mmap.put("entOperLog", entOperLog); return prefix + "/edit"; } - + + /** + * 淇敼淇濆瓨浣跨敤娆℃暟鎿嶄綔璁板綍 + */ @RequiresPermissions("exam:entOperLog:edit") @Log(title = "浣跨敤娆℃暟鎿嶄綔璁板綍", businessType = BusinessType.UPDATE) @PostMapping("/edit") @@ -83,7 +110,10 @@ { 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 cb97ecb..b1d8521 100644 --- a/src/main/java/com/ots/project/exam/controller/EntTestDetailController.java +++ b/src/main/java/com/ots/project/exam/controller/EntTestDetailController.java @@ -1,4 +1,5 @@ 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; @@ -17,19 +18,28 @@ 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)); @@ -38,8 +48,11 @@ mmap.put("entTestDetail", entTestDetail); return prefix + "/entTestDetail"; } - + /** + * 鏌ヨentTestDetail鍒楄〃 + */ +// @RequiresPermissions("exam:entTestDetail:list") @PostMapping("/list") @ResponseBody public TableDataInfo list(EntTestDetail entTestDetail) { @@ -55,7 +68,8 @@ if (ExamUtil.isListEmpty(questionReportList)) { continue; } - + + // 閬嶅巻鍑烘瘡涓�涓猺eport for (QuestionReport questionReport : questionReportList) { EntTestDetail entTestDetailTemp = new EntTestDetail(); entTestDetailTemp.setPermanentId(questionReport.getPermanentId()); @@ -69,7 +83,7 @@ entTestDetailList.add(entTestDetailTemp); } } - + //鎸夌収鑰楁椂闄嶅簭鎺掑垪 timeSpent if (Objects.equals("TimeSpent",entTestDetail.getSortType())) { Collections.sort(entTestDetailList, new TimeSpentComparator()); }else { @@ -77,9 +91,14 @@ } 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 d435946..d9aecec 100644 --- a/src/main/java/com/ots/project/exam/controller/EntTestMemberController.java +++ b/src/main/java/com/ots/project/exam/controller/EntTestMemberController.java @@ -1,4 +1,5 @@ package com.ots.project.exam.controller; + import com.ots.common.constant.UserConstants; import com.ots.common.enums.SenderType; import com.ots.common.enums.TestPackageStatusEnum; @@ -25,72 +26,93 @@ 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.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(); @@ -107,7 +129,10 @@ 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 @@ -129,6 +154,7 @@ List<EntTestMember> list = entTestMemberService.selectEntTestMemberList(entTestMember); return getDataTable(list); } + @PostMapping("/listTopAnswering") @ResponseBody public TableDataInfo listTopAnswering(EntTestMember entTestMember) { @@ -139,15 +165,18 @@ } 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()); @@ -157,6 +186,7 @@ userIds.add(extend.getUserId()); } } + List<EntTestMember> list; if (!SYS_USER.getUserType().equals(userType)) { entTestMember.setUserList(userIds); @@ -164,7 +194,10 @@ list = entTestMemberService.selectEntTestMemberQueryList(entTestMember); return getDataTable(list); } - + + /** + * 瀵煎嚭鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟鍒楄〃 + */ @RequiresPermissions("exam:testMember:export") @PostMapping("/export") @ResponseBody @@ -173,7 +206,10 @@ ExcelUtil<EntTestMember> util = new ExcelUtil<EntTestMember>(EntTestMember.class); return util.exportExcel(list, "娴嬭瘯鐢ㄦ埛閾炬帴锛圱est Taker URLs锛�"); } - + + /** + * 涓�閿鍑烘祴璇曞寘閲屾墍鏈夋垚鍛樼殑娴嬭瘯杩炴帴 + */ @RequiresPermissions("exam:testMember:export") @PostMapping("/exportLinkTest") @ResponseBody @@ -191,7 +227,10 @@ 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) { @@ -202,7 +241,10 @@ mmap.put("testpkg", value); return prefix + "/add"; } - + + /** + * 鏂板淇濆瓨鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟 + */ @RequiresPermissions("exam:testMember:add") @Log(title = "鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟", businessType = BusinessType.INSERT) @PostMapping("/add") @@ -210,7 +252,10 @@ public AjaxResult addSave(EntTestMember entTestMember) { return toAjax(entTestMemberService.insertEntTestMember(entTestMember)); } - + + /** + * 鏂板閭�璇风敤鎴烽偖浠跺彂閫佸垪琛� + */ @RequiresPermissions("exam:testMember:add") @Log(title = "璁板綍閭�璇风敤鎴峰彂閫佸垪琛�", businessType = BusinessType.INSERT) @PostMapping("/addSendTask") @@ -218,13 +263,17 @@ 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(); @@ -242,37 +291,47 @@ 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); @@ -286,7 +345,11 @@ } mmap.put("testName", entTestPackage.getTestName() + "閭�璇烽偖浠�"); } - + + + /** + * 淇敼淇濆瓨鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟 + */ @RequiresPermissions("exam:testMember:edit") @Log(title = "鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟", businessType = BusinessType.UPDATE) @PostMapping("/edit") @@ -294,7 +357,10 @@ public AjaxResult editSave(EntTestMember entTestMember) { return toAjax(entTestMemberService.updateEntTestMember(entTestMember)); } - + + /** + * 鍒犻櫎鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟 + */ @RequiresPermissions("exam:testMember:remove") @Log(title = "鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟", businessType = BusinessType.DELETE) @PostMapping("/remove") @@ -302,8 +368,11 @@ 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 { @@ -315,11 +384,16 @@ 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 cb71242..b8b107b 100644 --- a/src/main/java/com/ots/project/exam/controller/EntTestPackageController.java +++ b/src/main/java/com/ots/project/exam/controller/EntTestPackageController.java @@ -1,4 +1,5 @@ package com.ots.project.exam.controller; + import com.ots.common.enums.UserTypeEnum; import com.ots.common.utils.MessageUtils; import com.ots.common.utils.StringUtils; @@ -10,7 +11,6 @@ import com.ots.framework.web.domain.AjaxResult; import com.ots.framework.web.page.TableDataInfo; import com.ots.project.exam.domain.EntDemographyParam; -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.IEntDemographyParamService; @@ -28,31 +28,46 @@ 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; +/** + * 娴嬭瘯鍖呯鐞咰ontroller + * + * @author ots + * @date 2019-11-27 + */ @Controller @RequestMapping("/exam/test_package") public class EntTestPackageController extends BaseController { private String prefix = "exam/test_package"; + @Autowired private IEntTestPackageService entTestPackageService; + @Autowired private IEntDemographyParamService entDemographyParamService; + @Autowired private ISysUserExtendService sysUserExtendService; + @Autowired private ITReportTemplateService reportTemplateService; + @RequiresPermissions("exam:test_package:view") @GetMapping() public String test_package() { return prefix + "/test_package"; } - + + /** + * 鏌ヨ娴嬭瘯鍖呯鐞嗗垪琛� + */ @RequiresPermissions("exam:test_package:list") @PostMapping("/list") @ResponseBody @@ -64,7 +79,7 @@ if (UserTypeEnum.ENT_USER.getUserType().equals(userType)) { entTestPackage.setUserId(sysUser.getUserId()); } - + //鍒嗛攢鍟嗗彲浠ョ湅鍒板垎閿�鍟嗕笅鐨勪紒涓氫俊鎭� if (UserTypeEnum.DIS_USER.getUserType().equals(userType)) { SysUserExtend sysUserExtend = new SysUserExtend(); sysUserExtend.setParentUserId(sysUser.getUserId()); @@ -76,7 +91,11 @@ } return getDataTable(entTestPackageService.selectEntTestPackageList(entTestPackage)); } - + + + /** + * 鏌ヨ娴嬭瘯鍖呯鐞嗗垪琛� + */ @PostMapping("/listTopTestPackage") @ResponseBody public TableDataInfo listTopTestPackage(EntTestPackage entTestPackage) { @@ -85,53 +104,43 @@ if (!SYS_USER.getUserType().equals(sysUser.getUserType())) { entTestPackage.setUserId(sysUser.getUserId()); } - - return getDataTable(entTestPackageService.selectEntTestPackageList(entTestPackage)); + return getDataTable(entTestPackageService.selectEntTestPackageMainList(entTestPackage)); } - + + /** + * 瀵煎嚭娴嬭瘯鍖呯鐞嗗垪琛� + */ @RequiresPermissions("exam:test_package:export") @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"); } - + + /** + * 鍥炴敹浜烘锛堝洖鏀跺瘑鐮侊級 + */ @RequiresPermissions("exam:test_package:recover") @PostMapping("/recover/{testId}") @ResponseBody public AjaxResult recover(@PathVariable Long testId) { return toAjax(entTestPackageService.recover(testId)); } - + + /** + * 鏂板娴嬭瘯鍖呯鐞� + */ @GetMapping("/add") public String add(ModelMap mmap) { - + //澶氳瑷�閫夋嫨 EntDemographyParam entDemographyParam = new EntDemographyParam(); entDemographyParam.setParamStatus("1"); List<EntDemographyParam> list = entDemographyParamService.selectEntDemographyParamList(entDemographyParam); mmap.put("roles", list); - - + //鎶ュ憡妯℃澘缂栫爜 t_report_template +// mmap.put("templateList", reportTemplateService.getReportTemplates(ShiroUtils.getSysUser())); mmap.put("template", getTemplate()); SysUserExtend sysUserExtend = sysUserExtendService.selectSysUserExtendById(ShiroUtils.getUserId()); String mailContent = sysUserExtend.getMailContent(); @@ -141,6 +150,7 @@ mmap.put("hrTemplate", mailContent); return prefix + "/add"; } + @NotNull private String getHrTemplate() { String template = "浜茬埍鐨剓Company}浜哄姏璧勬簮閮紝\n" + @@ -166,6 +176,7 @@ "喔澿箞喔侧涪喔氞福喔脆竵喔侧福喔ム腹喔佮竸喙夃覆喔副喔∴笧喔编笝喔樴箤喔氞福喔脆俯喔� TAI"; return template; } + @NotNull private String getTemplate() { String template = "浜茬埍鐨剓FullName},\n" + @@ -192,13 +203,19 @@ "<br>"; return template; } - + + /** + * 鏍规嵁浜у搧鍖匢D鑾峰彇妯℃澘缂栫爜 + */ @PostMapping("/prodTemplate") @ResponseBody public AjaxResult changeTemplate(Long prodId) { return AjaxResult.success(MessageUtils.message("basis.successfulOperation"), reportTemplateService.getReportTemplates(ShiroUtils.getSysUser(), prodId)); } - + + /** + * 鏂板淇濆瓨娴嬭瘯鍖呯鐞� + */ @RequiresPermissions("exam:test_package:add") @Log(title = "娴嬭瘯鍖呯鐞�", businessType = BusinessType.INSERT) @PostMapping("/add") @@ -206,15 +223,22 @@ public AjaxResult addSave(EntTestPackage entTestPackage) { return toAjax(entTestPackageService.insertEntTestPackage(entTestPackage)); } - + + /** + * 淇敼娴嬭瘯鍖呯鐞� + */ @GetMapping("/edit/{id}") 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 + */ if (Objects.nonNull(paramCodes)) { String[] split = paramCodes.split(","); list.forEach(p -> { @@ -223,7 +247,9 @@ }); }); } - + /** + * 瀛樺湪鏁版嵁鍒欐洿鏂颁负true + */ if (Objects.nonNull(paramCodes)) { String[] split = paramCodes.split(","); list.forEach(p -> { @@ -235,11 +261,15 @@ }); } mmap.put("roles", list); - + + //鎶ュ憡妯℃澘缂栫爜 t_report_template mmap.put("templateList", reportTemplateService.getReportTemplates(ShiroUtils.getSysUser(), entTestPackage.getProdId())); return prefix + "/edit"; } - + + /** + * 淇敼淇濆瓨娴嬭瘯鍖呯鐞� + */ @RequiresPermissions("exam:test_package:edit") @Log(title = "娴嬭瘯鍖呯鐞�", businessType = BusinessType.UPDATE) @PostMapping("/edit") @@ -247,7 +277,10 @@ public AjaxResult editSave(EntTestPackage entTestPackage) { return toAjax(entTestPackageService.updateEntTestPackage(entTestPackage)); } - + + /** + * 鍒犻櫎娴嬭瘯鍖呯鐞� + */ @RequiresPermissions("exam:test_package:remove") @Log(title = "娴嬭瘯鍖呯鐞�", businessType = BusinessType.DELETE) @PostMapping("/remove") @@ -255,4 +288,6 @@ public AjaxResult remove(String ids) { return toAjax(entTestPackageService.deleteEntTestPackageByIds(ids)); } + + } 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 29f293a..f0c7d6e 100644 --- a/src/main/java/com/ots/project/exam/controller/EntTestSendtaskController.java +++ b/src/main/java/com/ots/project/exam/controller/EntTestSendtaskController.java @@ -1,4 +1,5 @@ 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; @@ -15,26 +16,39 @@ 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 @@ -50,7 +64,10 @@ List<EntTestSendtask> list = entTestSendtaskService.selectEntTestSendtaskList(entTestSendtask); return getDataTable(list); } - + + /** + * 瀵煎嚭璇勬祴閭�璇峰彂閫佷换鍔″垪琛� + */ @RequiresPermissions("exam:sendtask:export") @PostMapping("/export") @ResponseBody @@ -59,12 +76,18 @@ 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") @@ -72,14 +95,20 @@ 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") @@ -87,7 +116,10 @@ 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 50a3e5c..daca0fb 100644 --- a/src/main/java/com/ots/project/exam/controller/EntTestSendtaskMailController.java +++ b/src/main/java/com/ots/project/exam/controller/EntTestSendtaskMailController.java @@ -1,4 +1,5 @@ package com.ots.project.exam.controller; + import java.util.List; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; @@ -18,20 +19,31 @@ 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 @@ -41,7 +53,10 @@ List<EntTestSendtaskMail> list = entTestSendtaskMailService.selectEntTestSendtaskMailList(entTestSendtaskMail); return getDataTable(list); } - + + /** + * 瀵煎嚭閭閫�淇¤褰曞垪琛� + */ @RequiresPermissions("exam:mail:export") @PostMapping("/export") @ResponseBody @@ -51,13 +66,19 @@ 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") @@ -66,7 +87,10 @@ { return toAjax(entTestSendtaskMailService.insertEntTestSendtaskMail(entTestSendtaskMail)); } - + + /** + * 淇敼閭閫�淇¤褰� + */ @GetMapping("/edit/{id}") public String edit(@PathVariable("id") Long id, ModelMap mmap) { @@ -74,7 +98,10 @@ mmap.put("entTestSendtaskMail", entTestSendtaskMail); return prefix + "/edit"; } - + + /** + * 淇敼淇濆瓨閭閫�淇¤褰� + */ @RequiresPermissions("exam:mail:edit") @Log(title = "閭閫�淇¤褰�", businessType = BusinessType.UPDATE) @PostMapping("/edit") @@ -83,7 +110,10 @@ { 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 2dcb141..ac5a52a 100644 --- a/src/main/java/com/ots/project/exam/controller/EnterpriseController.java +++ b/src/main/java/com/ots/project/exam/controller/EnterpriseController.java @@ -1,4 +1,5 @@ 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; @@ -22,19 +23,30 @@ 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) { @@ -49,11 +61,16 @@ 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 @@ -68,7 +85,10 @@ List<SysUserExtend> list = sysUserExtendService.selectSysUserExtendList(sysUserExtend); return getDataTable(list); } - + + /** + * 鏂板鐢ㄦ埛淇℃伅鎵╁睍 + */ @GetMapping("/add") public String add(ModelMap mmap) { User sysUser = ShiroUtils.getSysUser(); @@ -82,7 +102,10 @@ mmap.put("us", list); return prefix + "/add"; } - + + /** + * 淇敼鐢ㄦ埛淇℃伅鎵╁睍 + */ @GetMapping("/edit/{userId}") public String edit(@PathVariable("userId") Long userId, ModelMap mmap) { SysUserExtend sysUserExtend = sysUserExtendService.selectSysUserExtendById(userId); @@ -98,7 +121,10 @@ mmap.put("us", list); return prefix + "/edit"; } - + + /** + * 娴嬭瘯浜烘暟璁剧疆 + */ @RequiresPermissions("exam:enterprise:editUserTimes") @GetMapping("/operUseTimes/{userId}") public String operUseTimes(@PathVariable("userId") Long userId, ModelMap mmap) { @@ -116,11 +142,15 @@ }); systemScore = list.stream().mapToInt(p -> p.intValue()).sum(); } - mmap.put("totalNumberOfTesters", systemScore); + mmap.put("totalNumberOfTesters", systemScore); +// 鏄剧ず璇ヤ紒涓氬彲鐢ㄦ祴璇曚汉鏁帮紝鎬绘祴璇曚汉鏁� return prefix + "/operUseTimes"; } - + + /** + * 鍏呭�兼祴璇曚汉鏁� + */ @RequiresPermissions("exam:enterprise:editUserTimes") @Log(title = "鍏呭�兼祴璇曚汉鏁�", businessType = BusinessType.UPDATE) @PostMapping("/operUseTimes/edit/{userId}/{addNum}") @@ -128,13 +158,15 @@ public AjaxResult editSave(@PathVariable("userId") Long userId, @PathVariable("addNum") Long addNum) { return toAjax(sysUserExtendService.updateTestNum(userId, addNum)); } + @RequiresPermissions("exam:enterprise:remove") @PostMapping("/remove") @ResponseBody public AjaxResult remove(String ids) { return toAjax(sysUserExtendService.deleteSysUserExtendByIds(ids)); } - + + // 鍏嶅瘑鐧诲綍 @RequiresPermissions("exam:enterprise:freelogin") @PostMapping("/freelogin") @ResponseBody @@ -153,6 +185,7 @@ return error(msg); } } + @PostMapping("/freeloginback") @ResponseBody public AjaxResult freeLoginBack(Long userId) { @@ -171,6 +204,7 @@ } } +// @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 f02e75f..d7524da 100644 --- a/src/main/java/com/ots/project/exam/controller/MainIndexController.java +++ b/src/main/java/com/ots/project/exam/controller/MainIndexController.java @@ -1,4 +1,5 @@ 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; @@ -8,12 +9,22 @@ 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) { @@ -27,10 +38,14 @@ 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) { @@ -44,10 +59,16 @@ 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) { @@ -61,7 +82,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 ede4716..ed81f52 100644 --- a/src/main/java/com/ots/project/exam/controller/SysUserExtendController.java +++ b/src/main/java/com/ots/project/exam/controller/SysUserExtendController.java @@ -1,4 +1,5 @@ package com.ots.project.exam.controller; + import com.ots.common.constant.UserConstants; import com.ots.common.enums.UserTypeEnum; import com.ots.common.utils.MessageUtils; @@ -21,19 +22,29 @@ 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() { @@ -50,19 +61,28 @@ 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") @@ -70,7 +90,11 @@ public AjaxResult editSave(SysUserExtend sysUserExtend) { return toAjax(sysUserExtendService.updateSysUserExtend(sysUserExtend)); } - + + + /** + * 鏌ヨ鐢ㄦ埛淇℃伅鎵╁睍鍒楄〃 + */ @RequiresPermissions("exam:extend:list") @PostMapping("/list") @ResponseBody @@ -88,6 +112,7 @@ List<SysUserExtend> list = sysUserExtendService.selectSysUserExtendList(sysUserExtend); return getDataTable(list); } + @PostMapping("/list2") @ResponseBody public TableDataInfo list2(SysUserExtend sysUserExtend) { @@ -104,7 +129,10 @@ 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 2f113d3..48eeade 100644 --- a/src/main/java/com/ots/project/exam/controller/SysUserPaperController.java +++ b/src/main/java/com/ots/project/exam/controller/SysUserPaperController.java @@ -1,4 +1,5 @@ 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; @@ -20,48 +21,66 @@ 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(); @@ -76,21 +95,7 @@ } 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) { @@ -102,7 +107,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()); @@ -113,11 +118,14 @@ } } ); - - +// //鎶ュ憡妯℃澘缂栫爜 t_report_template +// mmap.put("templateList", reportTemplateService.getReportTemplates(ShiroUtils.getSysUser())); return getDataTable(sysUserPapers); } - + + /** + * 淇敼淇濆瓨浜哄彛瀛﹀彉閲忓畾涔� + */ @PostMapping("/edit") @ResponseBody public AjaxResult editSave(SysUserPaper sysUserPaper) { @@ -129,53 +137,20 @@ }); 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); - 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); + mmap.put("templateList", reportTemplateService.getReportTemplates(ShiroUtils.getSysUser())); 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 169950d..3e8e1f0 100644 --- a/src/main/java/com/ots/project/exam/controller/TExamLevelController.java +++ b/src/main/java/com/ots/project/exam/controller/TExamLevelController.java @@ -1,4 +1,5 @@ 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; @@ -19,31 +20,44 @@ 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 -> { @@ -51,7 +65,10 @@ }); return getDataTable(list); } - + + /** + * 瀵煎嚭闂嵎绫诲瀷鍒楄〃 + */ @RequiresPermissions("exam:level:export") @PostMapping("/export") @ResponseBody @@ -60,7 +77,10 @@ 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)){ @@ -70,7 +90,10 @@ } return prefix + "/add"; } - + + /** + * 鏂板淇濆瓨闂嵎绫诲瀷 + */ @RequiresPermissions("exam:level:add") @Log(title = "闂嵎绫诲瀷", businessType = BusinessType.INSERT) @PostMapping("/add") @@ -82,14 +105,20 @@ } 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") @@ -97,7 +126,10 @@ 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 96b2286..3fe7a04 100644 --- a/src/main/java/com/ots/project/exam/controller/TExamPaperController.java +++ b/src/main/java/com/ots/project/exam/controller/TExamPaperController.java @@ -1,4 +1,5 @@ package com.ots.project.exam.controller; + import com.alibaba.fastjson.JSONArray; import com.ots.common.utils.StringUtils; import com.ots.common.utils.bean.BeanUtils; @@ -38,6 +39,7 @@ 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; @@ -45,29 +47,46 @@ 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 @@ -76,7 +95,10 @@ List<TExamPaper> list = tExamPaperService.selectTExamPaperList(tExamPaper); return getDataTable(list); } - + + /** + * 瀵煎嚭浜у搧鍖呭垪琛ㄥ垪琛� + */ @RequiresPermissions("exam:product:export") @PostMapping("/export") @ResponseBody @@ -85,17 +107,23 @@ 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") @@ -103,21 +131,27 @@ 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") @@ -125,7 +159,10 @@ public AjaxResult editSave(TExamPaper tExamPaper) { return toAjax(tExamPaperService.updateTExamPaper(tExamPaper)); } - + + /** + * 鍒犻櫎浜у搧鍖呭垪琛� + */ @RequiresPermissions("exam:product:remove") @Log(title = "浜у搧鍖呭垪琛�", businessType = BusinessType.DELETE) @PostMapping("/remove") @@ -133,13 +170,17 @@ 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); @@ -147,6 +188,7 @@ 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); @@ -154,57 +196,78 @@ 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 @@ -212,7 +275,10 @@ ExcelUtil<QuestionJobImport> util = new ExcelUtil<>(QuestionJobImport.class); return util.importTemplateQuestionExcel("JAQ棰樼洰妯℃澘.xlsx"); } - + + /** + * 鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟妯℃澘涓嬭浇 + */ @RequiresPermissions("exam:product:view") @GetMapping("/importMAQTemplate") @ResponseBody @@ -220,7 +286,10 @@ ExcelUtil<QuestionPersonalityImport> util = new ExcelUtil<>(QuestionPersonalityImport.class); return util.importTemplateQuestionExcel("MAQ棰樼洰妯℃澘.xlsx"); } - + + /** + * 鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟 + */ @RequiresPermissions("exam:product:import") @PostMapping("/importMAQData/{langType}") @ResponseBody @@ -230,18 +299,23 @@ 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(); @@ -254,14 +328,23 @@ } } } - + + /** + * 鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟妯℃澘涓嬭浇 + */ @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); @@ -269,21 +352,27 @@ 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); @@ -291,33 +380,44 @@ 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(); @@ -325,11 +425,12 @@ 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()); @@ -339,26 +440,30 @@ } 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 0ed95ee..320f3df 100644 --- a/src/main/java/com/ots/project/exam/controller/TExamReportController.java +++ b/src/main/java/com/ots/project/exam/controller/TExamReportController.java @@ -1,4 +1,5 @@ package com.ots.project.exam.controller; + import cn.hutool.core.collection.CollUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.ArrayUtil; @@ -63,7 +64,6 @@ 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; @@ -77,6 +77,7 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; + import java.io.FileNotFoundException; import java.io.IOException; import java.util.ArrayList; @@ -93,8 +94,15 @@ import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; + import static com.ots.project.tool.report.reportCalculation.request.CalculationTypeEnum.JAQ; +/** + * 璇勬祴鎶ュ憡Controller + * + * @author ots + * @date 2019-12-26 + */ @Controller @RequestMapping("/exam/report") public class TExamReportController extends BaseController { @@ -114,46 +122,63 @@ private IExamUtilService iExamUtilService; @Autowired private IEntTestPackageService entTestPackageService; + @Autowired private ITExamPaperService itExamPaperService; + @Autowired private IEntDemographyInfoService entDemographyInfoService; + @Autowired ReportCalculationServices calculationServices; + @Autowired MemberService memberService; + @Autowired ITQuestionService itQuestionService; + @Autowired private TExamPaperServiceImpl examPaperService; + @Autowired private ISysUserExtendService sysUserExtendService; - + /** + * 浼佷笟鎶ュ憡鎺堟潈锛屽鎵规姤琛� + * + * @return + */ @RequiresPermissions("exam:report:viewVerify") @GetMapping("/viewVerify") public String reportVerify() { return prefix + "/verifyReport"; } - + + /** + * 鏌ヨ璇勬祴鎶ュ憡鍒楄〃 + */ @RequiresPermissions("exam:report:viewVerify") @PostMapping("/verifyList") @ResponseBody public TableDataInfo verifyList(TExamReport tExamReport) { startPage(); - tExamReport.setStatus("1"); + tExamReport.setStatus("1");//娴嬭瘯鍖呯姸鎬� List<TExamReport> list = tExamReportService.selectTExamReportList(tExamReport); - + // 澶氳瑷� String langType = dictService.getLangType(LocaleContextHolder.getLocale().toString()); for (TExamReport tExamReportTemp : list) { tExamReportTemp.setProductName(ExamUtil.getLangString(langType, tExamReportTemp.getProductName())); } return getDataTable(list); } + + @RequiresPermissions("exam:report:view") @GetMapping() public String report() { return prefix + "/report"; } + @RequiresPermissions("exam:test_package:testreport") @GetMapping("/reportView/{testId}/{prodId}") public String reportView(@PathVariable String testId, @PathVariable String prodId, ModelMap mmap) { @@ -161,6 +186,7 @@ mmap.put("testId", testId); return prefix + "/report"; } + @RequiresPermissions("exam:test_package:testreport") @GetMapping("/member/reportView/{testId}/{memberId}") public String memberReportView(@PathVariable Long testId, @PathVariable String memberId, ModelMap mmap) { @@ -170,7 +196,10 @@ mmap.put("memberId", memberId); return prefix + "/report"; } - + + /** + * 鏌ヨ璇勬祴鎶ュ憡鍒楄〃(澶撮儴) + */ @RequiresPermissions("exam:hrEmailReport:view") @PostMapping("/hrLog") @ResponseBody @@ -179,7 +208,10 @@ List<TExamReport> tExamReports = tExamReportService.selectTExamReportList(tExamReport); return getDataTable(tExamReports); } - + + /** + * 鏌ヨ璇勬祴鎶ュ憡鍒楄〃(澶撮儴) + */ @RequiresPermissions("exam:report:list") @PostMapping("/list") @ResponseBody @@ -189,12 +221,15 @@ if (Objects.isNull(tExamReport.getProductId())) { return getDataTable(list); } - + + // 澶氳瑷�鍙栨湰鍦伴偅绉� String langType = dictService.getLangType(LocaleContextHolder.getLocale().toString()); list = tExamReportService.selectTExamReportList(tExamReport); + if (Objects.isNull(list) || list.isEmpty()) { return getDataTable(list); } + Map<String, String> filed = JSON.parseObject(list.get(0).getContent(), LinkedHashMap.class); Map<String, String> title = new LinkedHashMap<>(); int i = 0; @@ -213,11 +248,18 @@ } title.put("娴嬭瘯鍖呯紪鐮�", String.valueOf(i++)); title.put("绛斿嵎缂栫爜", String.valueOf(i++)); + List<Map<String, String>> filedList = new ArrayList<>(); filedList.add(title); return getDataTable(filedList); } - + + /** + * 鏌ヨ璇勬祴鎶ュ憡鍒楄〃(鏁版嵁鍒�) + * + * @param tExamReport + * @return + */ @RequiresPermissions("exam:report:list") @PostMapping("/listData") @ResponseBody @@ -227,16 +269,20 @@ return getDataTable(list); } startPage(); - + // 瀹屾垚鐨� tExamReport.setFinish(1); list = tExamReportService.selectViewReportList(tExamReport); - + // 澶氳瑷�缈昏瘧 for (TExamReport tExamReportTemp : list) { tExamReportTemp.setProductName(examUtilService.getLangOrLocalLangString("", tExamReportTemp.getProductName())); } + return getDataTable(list); } - + + /** + * 瀵煎嚭璇勬祴鎶ュ憡鍒楄〃 + */ @RequiresPermissions("exam:report:export") @PostMapping("/export") @ResponseBody @@ -245,147 +291,172 @@ ExcelUtil<TExamReport> util = new ExcelUtil<TExamReport>(TExamReport.class); return util.exportExcel(list, "report"); } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + /** + * 瀵煎嚭璇勬祴浜哄憳鐢ㄦ埛绛旈璁板綍 + * + * @param tExamReport + * @return + */ +// @RequiresPermissions("exam:report:export") +// @PostMapping("/exportReport") +// @ResponseBody +// public AjaxResult exportReport(TExamReport tExamReport) { +// DataMap<Integer, Object[]> dataMap = new DataMap<>(); +// List<TExamReport> list = tExamReportService.selectTExamReportList(tExamReport); +// +// // 鎷兼帴鐢熸垚report鐨勯敭鍊煎 +// User sysUser = ShiroUtils.getSysUser(); +// boolean isRight = Objects.equals(UserTypeEnum.SYS_USER.getUserType(), sysUser.getUserType()); +// +// int keyPosition = -1; +// int keySize = 0; +// List<DataMap> reportList = new ArrayList<>(); +// List<DataMap> reportTaiList = new ArrayList<>(); +// List<DataMap> reportLocalList = new ArrayList<>(); +// Map<String, String> mapPara = new HashedMap(); +// Set<String> langTypeSet = new HashSet<>(); +// for (TExamReport it : list) { +// List<DataReport> dataReportList = new ArrayList<>(); +// +// // 璇诲嚭浜哄彛瀛﹀彉閲� +// setLocalDataReportByParamId(mapPara, it, dataReportList); +// +// // 寰楀埌浜哄彛瀛︽湁澶氬皯绉嶈瑷� +// setDataReportLangSet(mapPara, langTypeSet); +// +// // 鍙栨渶澶氬�奸偅涓� +// if (dataReportList.size() > keySize) { +// keySize = dataReportList.size(); +// keyPosition++; +// } +// +// DataMap<String, String> dataReportMap = new DataMap<>(); +// +// // 闈炴嘲鍥藉洟闃熺殑鍐呭 +// setContentMap(it, dataReportList, dataReportMap, reportLocalList); +// +// // 娉板浗鍥㈤槦鐨勫唴瀹� +// setTaiInterfaceContentMap(it, dataReportMap, isRight, reportTaiList); +// +// reportList.add(dataReportMap); +// } +// +// // 鍙杒ey鏈�澶氱殑锛岄槻姝㈡墦涔� +// Object[] keys = reportTaiList.get(keyPosition).getKeys().toArray(); +// +// Object[] keysAll = reportList.get(keyPosition).getKeys().toArray(); +// +// List<Object[]> keyDemography = new ArrayList<>(); +// +// // 3琛岋紝3绉嶈瑷� +// setAllLangLocalDataValue(keyPosition, reportLocalList, mapPara, langTypeSet, keyDemography); +// +// int position = 0; +// for (;position < keyDemography.size(); position++) { +// // 琛ㄥご鍙﹀鐨勪笢瑗匡紝绛旈涓嶄竴鑷寸瓑绛夛紝濡備腑鏂囪嚜澶竉T1 +// setExtracHead(dataMap, keys, keyDemography, position); +// } +// +// for (int i = 0; i < reportList.size(); i++) { +// DataMap<String,String> valueDataMap = reportList.get(i); +// List<String> valueList = new ArrayList<>(); +// for (Object key : keysAll) { +// valueList.add(valueDataMap.get(key.toString())); +// } +// dataMap.put(i + position, valueList.toArray()); +// } +// +// ExcelUtil<DataMap> util = new ExcelUtil<DataMap>(DataMap.class); +// // 瀵煎嚭鏁版嵁鎶ュ憡鍙�変竴涓祴璇曞寘 +// return util.exportExcelByDataMap(dataMap, examUtilService.getLangOrLocalLangString("", list.get(0).getProductName()) + "_DateReport"); +// } - + // 瀵煎嚭鏁版嵁鎶ュ憡 @RequiresPermissions("exam:report:export") @PostMapping("/exportDataReport/{ids}") @ResponseBody public AjaxResult exportReport(TExamReport tExamReport, @PathVariable("ids") String[] ids) throws IOException { List<TExamReport> tExamReportList = tExamReportService.selectTExamReportByIds(ids); - + + // 鎷兼帴鐢熸垚report鐨勯敭鍊煎 User sysUser = ShiroUtils.getSysUser(); boolean isRight = Objects.equals(UserTypeEnum.SYS_USER.getUserType(), sysUser.getUserType()); - - + // 浜哄彛瀛﹀彉閲� + // 涓夎 DataReportHead dataReportHead = new DataReportHead(); String fileNameResult = EssConfig.getDownloadPath() + examUtilService.getLangOrLocalLangString("", tExamReportList.get(0).getProductName()) + "_DateReport.xlsx"; - + + // 鎶妔heet鏀惧湪map閲岄潰 Map<String, List<List<Object>>> reportResultMap = new HashMap<>(); + Map<String, Map<String, String>> demograpyMap = new HashMap<>(); - + + // 浜哄彛瀛� setDemograyMap(tExamReportList, dataReportHead, demograpyMap); - + + // 鎶ュ憡绫诲瀷 String reportType = getReportType(tExamReport); - + + // 妯$増鐨勫唴瀹� setDataReportHeader(dataReportHead, reportResultMap, reportType, isRight); - + + // Map<sheet鍚�, Map<濮撳悕, Map<key, value>>> 鏁版嵁 Map<String, Map<String, Map<String, String>>> sheetExcelMap = new HashMap<>(); - + + // 濡傛灉鏄疛AQ瑕佽皟鐢ㄦ嘲鍥藉洟闃熺殑鎺ュ彛锛屽鏋滀笉鏄紝鍘昏〃閲岄潰鎵� setDealTaiData(ids, tExamReportList, reportType, sheetExcelMap); - + + // 鏋勯�犲�� setRportListValue(reportResultMap, demograpyMap, sheetExcelMap, reportType); - + + // 寮勬垚鍜屼粬浠師鏉ヤ竴鏍� setSysHeadToEnglish(tExamReportList, reportResultMap, reportType); - + + // 鍐欐枃浠� writeFile(fileNameResult, reportResultMap); - + + // 杩斿洖涓嬭浇 return AjaxResult.success(examUtilService.getLangOrLocalLangString("", tExamReportList.get(0).getProductName()) + "_DateReport.xlsx"); } + private void setDealTaiData(@PathVariable("ids") String[] ids, List<TExamReport> tExamReportList, String reportType, Map<String, Map<String, Map<String, String>>> sheetExcelMap) throws IOException { if (Objects.equals(reportType, ReportTypeEnum.JAQ.getCode())) { - + // 瑕佸垹闄ょ殑鏂囦欢 List<TExamReport> tExamReports = tExamReportService.selectTExamReportByIds(ids); Map<String, TExamReport> tokenReportMap = new HashMap<>(); for (TExamReport tExamReport : tExamReports) { tokenReportMap.put(tExamReport.getTokenId(), tExamReport); } - + + // JAQ 璋冪敤娉板浗鍥㈤槦鏁版嵁 ReportAPIResult reportAPIResult = getThaiJAQData(tExamReports); - - + + // 娉板浗鏁版嵁 + // JAQ Output Data Map<String, String> thaiData = reportAPIResult.getData(); Map<String, Map<String, String>> excelOutPutMap = new HashMap<>(); excelOutPutMap.put("JAQ", thaiData); sheetExcelMap.put("JAQ Output Data", excelOutPutMap); - + + // JAQ Input Data Map<String, Map<String, String>> excelInputMap = new HashMap<>(); List<JAQPersons> persons = (List<JAQPersons>) reportAPIResult.getAnswerData().get("persons"); for (JAQPersons jaqPersons : persons) { Map<String, String> personInfo = jaqPersons.getPersonInfo(); Map<String, String> personPoints = jaqPersons.getPersonPoints(); String name = personInfo.get("fullName"); + Map<String, String> excelValueMap = new HashMap<>(); excelValueMap.putAll(personInfo); excelValueMap.putAll(personPoints); excelValueMap.put("Name", name); excelInputMap.put(name, excelValueMap); tExamReportService.setExcelMapextraValue(tokenReportMap.get(excelValueMap.get("accessCode")), excelValueMap); - tExamReportService.setExcelMapextraValue(tokenReportMap.get(excelValueMap.get("accessCode")), thaiData); + tExamReportService.setExcelMapextraValue(tokenReportMap.get(excelValueMap.get("accessCode")), thaiData); // 涓烘柟渚垮紑鍙戯紝涓嶇鎬ц兘 } - + + // 杈撳嚭sheet鐨勯澶栧�� sheetExcelMap.put("JAQ Input Data", excelInputMap); } else { Map<String, Map<String, String>> excelMap = new HashMap<>(); @@ -393,19 +464,21 @@ sheetExcelMap.put("Sheet1", excelMap); } } + private void setSysHeadToEnglish(List<TExamReport> tExamReportList, Map<String, List<List<Object>>> reportResultMap, String reportType) { Set<String> heavyDischargeDemography = new HashSet<>(); Map<String, String> systemEnglisMap = new HashMap<>(); for (TExamReport tExamReportIt : tExamReportList) { - + // 璇诲嚭浜哄彛瀛﹀彉閲�,闄嶇淮 List<DemographyDataReportDto> demographyDataReportDtoList = setLocalDataReportByParamId(tExamReportIt); for (DemographyDataReportDto demographyDataReportDto : demographyDataReportDtoList) { - + // 鎺掗噸鐢� if (heavyDischargeDemography.contains(demographyDataReportDto.getParamId())) { continue; } else { heavyDischargeDemography.add(demographyDataReportDto.getParamId()); } + List<DemographyDto> demographyDtoList = JsonUtil.parseArray(demographyDataReportDto.getLangCode(), DemographyDto.class); for (DemographyDto demographyDto : demographyDtoList) { if (Objects.equals(demographyDto.getLangType(), "English")) { @@ -414,6 +487,7 @@ } } } + for (Map.Entry<String, List<List<Object>>> entryReport : reportResultMap.entrySet()) { List<Object> headSystem = entryReport.getValue().get(0); for (int i = 0; i < headSystem.size(); i++) { @@ -423,11 +497,13 @@ } } } + private void setRportListValue(Map<String, List<List<Object>>> reportResultMap, Map<String, Map<String, String>> demograpyMap, Map<String, Map<String, Map<String, String>>> sheetExcelMap, String reportType) { for (Map.Entry<String, Map<String, Map<String, String>>> sheetEntry : sheetExcelMap.entrySet()) { for (Map.Entry<String, Map<String, String>> entry : sheetEntry.getValue().entrySet()) { - + // 鎺ュ彛 ReportResultData resultData = getReportResultData(reportType, entry); + Map<String, Object> textMap = new HashMap<>(); textMap.putAll(resultData.getTextMap()); textMap.putAll(demograpyMap.get(textMap.get("reportId"))); @@ -435,20 +511,20 @@ } } } + 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.getBigWriter(fileNameResult, entryReport.getKey()); + ExcelWriter writer = cn.hutool.poi.excel.ExcelUtil.getWriter(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 setReportResultList(List<Object> demographyHeadSystem, List<List<Object>> reportResultList, Map<String, Object> textMap) { - + // 寮�濮嬪彇鍊� List<Object> reportValue = new ArrayList<>(); for (Object key : demographyHeadSystem) { Object value = textMap.get(key.toString().trim().replace("%", "")); @@ -458,14 +534,17 @@ reportValue.add(""); } } + reportResultList.add(reportValue); } + private ReportResultData getReportResultData(String reportType, Map.Entry<String, Map<String, String>> entry) { TExamReport tExamQueryReport = new TExamReport(); String langType = examUtilService.getLocalLangType(""); ReportResultData resultData = tExamReportService.getReportResultData(reportType, langType, entry, tExamQueryReport); return resultData; } + private Map<String, LangTypeEnum> getStringLangTypeEnumMap() { Map<String, LangTypeEnum> langTypeEnumMap = new HashMap<>(); for (LangTypeEnum langTypeEnumTemp : LangTypeEnum.values()) { @@ -473,6 +552,7 @@ } return langTypeEnumMap; } + private String getReportType(TExamReport tExamReport) { String reportType = ReportTypeEnum.RuiLin.getCode(); TExamPaper tExamPaper = itExamPaperService.selectTExamPaperById(tExamReport.getProductId()); @@ -481,16 +561,21 @@ if (Objects.isNull(tReportTemplate.getReportType())) { continue; } - + + // 鍙栫涓�涓ā鐗堢殑閰嶇疆 reportType = ReportTypeEnum.valueOf(tReportTemplate.getReportType()).getCode(); - + + // 濡傛灉鏄疭AQ璧癝AQ鐨勬ā鐗� if (Objects.equals(tReportTemplate.getTemplateType(), "SAQ")) { reportType = ReportTypeEnum.valueOf(tReportTemplate.getTemplateType()).getCode(); } + break; + } return reportType; } + private void setDataReportHeader(DataReportHead dataReportHead, Map<String, List<List<Object>>> reportResultMap, String reportType, boolean isRight) { if (Objects.equals(reportType, ReportTypeEnum.RuiLin.getCode())) { setDataReportHeaderRuilin(dataReportHead, reportResultMap, isRight); @@ -504,6 +589,7 @@ setDataReportHeadMaq(dataReportHead, reportResultMap, isRight); } } + private void setDataReportHeadMaq(DataReportHead dataReportHead, Map<String, List<List<Object>>> reportResultMap, boolean isRight) { ExcelReader reader = cn.hutool.poi.excel.ExcelUtil.getReader(FileUtil.file(EssConfig.getReportTemplates() + "MAQHead.xlsx")); List<String> sheetNames = reader.getSheetNames(); @@ -524,6 +610,7 @@ deleteNoRightKeys(dataReportHead, isRight, readList, i); } } + private void setDataReportHeadSaq(DataReportHead dataReportHead, Map<String, List<List<Object>>> reportResultMap, boolean isRight) { ExcelReader reader = cn.hutool.poi.excel.ExcelUtil.getReader(FileUtil.file(EssConfig.getReportTemplates() + "SAQHead.xlsx")); List<String> sheetNames = reader.getSheetNames(); @@ -544,18 +631,20 @@ deleteNoRightKeys(dataReportHead, isRight, readList, i); } } + private void setDataReportHeadJaq(DataReportHead dataReportHead, Map<String, List<List<Object>>> reportResultMap) { ExcelReader reader = cn.hutool.poi.excel.ExcelUtil.getReader(FileUtil.file(EssConfig.getReportTemplates() + "JAQHead.xlsx")); List<String> sheetNames = reader.getSheetNames(); - + // JAQ涓嶈浜哄彛瀛︼紝鎵�浠ヨclear List<Object> headSystem = dataReportHead.getHeadSystem(); List<Object> headEnglish = dataReportHead.getHeadEnglish(); for (String sheetName : sheetNames) { ExcelReader readerSheet = cn.hutool.poi.excel.ExcelUtil.getReader(FileUtil.file(EssConfig.getReportTemplates() + "JAQHead.xlsx"), sheetName); List<List<Object>> readList = readerSheet.read(); if (Objects.equals("JAQ Input Data", sheetName)) { + List<Object> head = readList.get(0); - + // Name AccessCode Phone Department + 浜哄彛瀛� String[] heads = {"Name", "AccessCode", "Phone", "Department"}; List<Object> headList = CollUtil.toList(heads); Set headExtends = new HashSet(headList); @@ -564,6 +653,7 @@ headList.add(headSystem.get(i)); } } + head.addAll(0, headList); } List<List<Object>> reportResultList = new ArrayList<>(); @@ -572,14 +662,17 @@ reportResultList.add(readList.get(i++)); } } + private void setDataReportHeadCaq(DataReportHead dataReportHead, Map<String, List<List<Object>>> reportResultMap, boolean isRight) { ExcelReader reader = cn.hutool.poi.excel.ExcelUtil.getReader(FileUtil.file(EssConfig.getReportTemplates() + "CAQHead.xlsx")); + List<String> sheetNames = reader.getSheetNames(); for (String sheetName : sheetNames) { ExcelReader readerSheet = cn.hutool.poi.excel.ExcelUtil.getReader(FileUtil.file(EssConfig.getReportTemplates() + "CAQHead.xlsx"), sheetName); List<List<Object>> readList = readerSheet.read(); List<List<Object>> reportResultList = new ArrayList<>(); reportResultMap.put(sheetName, reportResultList); + int i = 0; dataReportHead.getHeadSystem().addAll(readList.get(i++)); reportResultList.add(dataReportHead.getHeadSystem()); @@ -590,6 +683,7 @@ deleteNoRightKeys(dataReportHead, isRight, readList, i); } } + private void setDataReportHeaderRuilin(DataReportHead dataReportHead, Map<String, List<List<Object>>> reportResultMap, boolean isRight) { ExcelReader reader = cn.hutool.poi.excel.ExcelUtil.getReader(FileUtil.file(EssConfig.getReportTemplates() + "RuiLinHead.xlsx")); List<String> sheetNames = reader.getSheetNames(); @@ -605,11 +699,14 @@ deleteNoRightKeys(dataReportHead, isRight, readList, i); reportResultMap.put(sheetName, reportResultList); } + + } + private void deleteNoRightKeys(DataReportHead dataReportHead, boolean isRight, List<List<Object>> readList, int i) { if (!isRight) { - - +// if (true) { + // 闇�瑕佸墧闄ょ殑琛� Set<Object> rightSet = new HashSet(); for (; i < readList.size(); i++) { List<Object> objects = readList.get(i); @@ -623,6 +720,7 @@ deleteNoRight(rightSet, dataReportHead.getHeadThai()); } } + private void deleteNoRight(Set<Object> rightSet, List<Object> headSystem) { if (CollUtil.isEmpty(headSystem)) { return; @@ -634,27 +732,32 @@ } } } + private void setDemograyMap(List<TExamReport> tExamReportList, DataReportHead dataReportHead, Map<String, Map<String, String>> demograpyMap) { Set<String> heavyDischargeDemography = new HashSet<>(); for (TExamReport tExamReportIt : tExamReportList) { - + // 璇诲嚭浜哄彛瀛﹀彉閲�,闄嶇淮 List<DemographyDataReportDto> demographyDataReportDtoList = setLocalDataReportByParamId(tExamReportIt); Map<String, String> demograpyValueMap = new HashMap<>(); for (DemographyDataReportDto demographyDataReportDto : demographyDataReportDtoList) { demograpyValueMap.put(demographyDataReportDto.getParamId(), demographyDataReportDto.getParamValue()); - + + // 鎺掗噸鐢� if (heavyDischargeDemography.contains(demographyDataReportDto.getParamId())) { continue; } else { heavyDischargeDemography.add(demographyDataReportDto.getParamId()); } - + + // 娣诲姞鍚勭璇█鐨勮〃澶� setDataReportDemography(dataReportHead, demographyDataReportDto); } - + + // 浜哄彛瀛﹂敭鍜屽�� demograpyMap.put(tExamReportIt.getId().toString(), demograpyValueMap); } } + private void setDataReportDemography(DataReportHead dataReportHead, DemographyDataReportDto demographyDataReportDto) { dataReportHead.getHeadSystem().add(demographyDataReportDto.getParamId()); List<DemographyDto> demographyDtoList = JsonUtil.parseArray(demographyDataReportDto.getLangCode(), DemographyDto.class); @@ -662,8 +765,9 @@ findLandCode(dataReportHead.getHeadEnglish(), demographyDtoList, "English"); findLandCode(dataReportHead.getHeadThai(), demographyDtoList, "Thai"); } + private void findLandCode(List<Object> demographyHeadLang, List<DemographyDto> demographyDtoList, String lang) { - + // 鎵惧嚭涓枃鐨� boolean isLang = false; for (DemographyDto demographyDto : demographyDtoList) { if (Objects.equals(demographyDto.getLangType(), lang)) { @@ -671,17 +775,20 @@ isLang = true; } } + if (!isLang) { demographyHeadLang.add(""); } } + private void setExtracHead(DataMap<Integer, Object[]> dataMap, Object[] keys, List<Object[]> keyDemography, int position) { - + // ISP_T1 IM_T1 Inconsistency_T1 if (position == 1) { keys[0] = "ISP_T1"; keys[1] = "IM_T1"; keys[2] = "Inconsistency_T1"; } + if (position == 2) { keys[0] = "鑷じ_T1"; keys[1] = "鍗拌薄绠$悊_T1"; @@ -690,15 +797,18 @@ } dataMap.put(position, ArrayUtil.addAll(keyDemography.get(position), keys)); } + private void setAllLangLocalDataValue(int keyPosition, List<DataMap> reportLocalList, Map<String, String> mapPara, Set<String> langTypeSet, List<Object[]> keyDemography) { - + // 绯荤粺鍙橀噺鍚嶅摢涓�琛�,绗竴琛� setAllLangLocalRowValue(keyPosition, reportLocalList, mapPara, keyDemography, langTypeSet.iterator().next(), "绯荤粺鍐呭彉閲忓悕"); + Map<String, Map<String, String>> multiLanguageMap = new HashedMap(); setLangSystemV(multiLanguageMap); for (String langType : langTypeSet) { setAllLangLocalRowValue(keyPosition, reportLocalList, mapPara, keyDemography, langType, multiLanguageMap.get("Chinese").get(langType)); } } + private void setLangSystemV(Map<String, Map<String, String>> multiLanguageMap) { Map<String, String> langTypeChineseMap = new HashedMap(); langTypeChineseMap.put("English", "瀵煎嚭鍚庡彉閲忓悕锛堣嫳鏂囷級"); @@ -706,22 +816,25 @@ langTypeChineseMap.put("Thai", "瀵煎嚭鍚庡彉閲忓悕锛堟嘲鏂囷級"); multiLanguageMap.put("Chinese", langTypeChineseMap); } + private void setClientV(Map<String, String> langTypeChineseMap) { langTypeChineseMap.put("English", "Client"); langTypeChineseMap.put("Chinese", "浼佷笟瀹㈡埛鍚嶇О"); langTypeChineseMap.put("Thai", "Client"); } + private void setAllLangLocalRowValue(int keyPosition, List<DataMap> reportLocalList, Map<String, String> mapPara, List<Object[]> keyDemography, String langType, String systemVariable) { DataMap<String, String> reportLocalMap = reportLocalList.get(keyPosition); - + // 涓�琛�,琛岀殑paramid List<String> rowList = reportLocalMap.getKeys(); List<String> rowValues = new ArrayList<>(); - + // rowValues.add("绯荤粺鍙橀噺"); rowValues.add(systemVariable); + for (String row : rowList) { - + // json涓� String rows = mapPara.get(row); - + // 鍋氭垚map List<Map<String, String>> langMapList = JsonUtil.parseObject(rows, ArrayList.class); String langCode = ""; for (Map<String, String> langMap : langMapList) { @@ -731,12 +844,14 @@ } rowValues.add(langCode); } - + + // 浼佷笟鐢ㄦ埛 Map<String, String> clientLangMap = new HashedMap(); setClientV(clientLangMap); rowValues.add(clientLangMap.get(langType)); keyDemography.add(rowValues.toArray()); } + private void setDataReportLangSet(Map<String, String> mapPara, Set<String> langTypeSet) { for (Map.Entry<String, String> entry : mapPara.entrySet()) { List<Map<String, String>> langMapList = JsonUtil.parseObject(entry.getValue(), ArrayList.class); @@ -745,6 +860,7 @@ } } } + private List<DemographyDataReportDto> setLocalDataReportByParamId(TExamReport it) { EntDemographyInfo entDemographyInfoAsParam = new EntDemographyInfo(); entDemographyInfoAsParam.setMemberId(it.getMemberId().longValue()); @@ -760,25 +876,32 @@ } return demographyDataReportDtoList; } + private void setTaiInterfaceContentMap(TExamReport it, DataMap<String, String> dataReportMap, boolean isRight, List<DataMap> reportTaiList) { try { DataMap<String, String> dataReportTaiMap = new DataMap<>(); List<ReportAPIResult> reportAPIResultList = JsonUtil.parseArray(it.getInterfaceContent(), ReportAPIResult.class); DataReport dataReportTai = new DataReport(); - + + // 绗竴娈� set1PartDataReport(dataReportMap, dataReportTaiMap, isRight, reportAPIResultList, dataReportTai); - + + // 绗簩娈�,涓嶈鏉冮檺, setNoRightPart(dataReportMap, dataReportTaiMap, reportAPIResultList, dataReportTai); - + + // 绗簩娈�,瑕佹潈闄� set2PartDataReport(dataReportMap, dataReportTaiMap, isRight, reportAPIResultList, dataReportTai); - + + // 瑕佹潈闄�,鏈�鍚庨偅涓�鐐筊eport setEndPartDataReport(dataReportMap, dataReportTaiMap, reportAPIResultList, dataReportTai, isRight); - + + // 娉板浗鍥㈤槦鐨勬暟鎹� reportTaiList.add(dataReportTaiMap); } catch (Exception e) { logger.error(" id:" + it.getId() + " memberName" + it.getMemberName() + " " + it.getInterfaceContent()); } } + private void setEndPartDataReport(DataMap<String, String> dataReportMap, DataMap<String, String> dataReportTaiMap, List<ReportAPIResult> reportAPIResultList, DataReport dataReportTai, boolean isRight) { if (!isRight) { return; @@ -793,6 +916,7 @@ setDataReportValueMap(dataReportTaiMap, dataReportTai); } } + private void set2PartDataReport(DataMap<String, String> dataReportMap, DataMap<String, String> dataReportTaiMap, boolean isRight, List<ReportAPIResult> reportAPIResultList, DataReport dataReportTai) { if (isRight) { List<String> keepPartOrderList = new ArrayList<>(); @@ -804,7 +928,7 @@ setDataReportValueMap(dataReportMap, dataReportTai); setDataReportValueMap(dataReportTaiMap, dataReportTai); } - + // 鐒跺悗棰樼洰 Map<String, String> answerDataMap = new LinkedHashMap<>(); Map<String, String> answerDataNoOrder = reportAPIResultList.get(1).getAnswerData(); answerDataNoOrder.entrySet().stream().sorted(Map.Entry.comparingByKey()) @@ -817,6 +941,7 @@ } } } + private void setNoRightPart(DataMap<String, String> dataReportMap, DataMap<String, String> dataReportTaiMap, List<ReportAPIResult> reportAPIResultList, DataReport dataReportTai) { List<String> keepPartOrderList = new ArrayList<>(); keepPartOrderList.addAll(Arrays.asList("P_Flex01,P_Creat02,P_Analyt03,P_Indep04,P_Achiev05,P_Initi06,P_Persis07,P_Thorou08,P_Depend09,P_Plan10,P_Integr11,P_Energy12,P_Social13,P_Lead14,P_Influ15,P_Team16,P_Empath17,P_Polite18,P_Regula19,P_ManStr,P_Confid21,P_Mind22,P_SDE23,P_IM24,P_INCON25,P_Open26,P_Consci27,P_Extro28,P_Agree29,P_EmSt30,P_Task31,P_People32,P_Judg33,STDA,DA,SLDA,SLAG,AG,STAG".split(","))); @@ -828,20 +953,22 @@ setDataReportValueMap(dataReportTaiMap, dataReportTai); } } + private void set1PartDataReport(DataMap<String, String> dataReportMap, DataMap<String, String> dataReportTaiMap, boolean isRight, List<ReportAPIResult> reportAPIResultList, DataReport dataReportTai) { if (isRight) { - + // 瑕佹潈闄愶紝绗竴娈� List<String> keepPartOrderList = new ArrayList<>(); keepPartOrderList.addAll(Arrays.asList("P_SDE_T1,P_IM_T1,P_INCON_T1,Signal,INC1T1,INC2T1,INC3T1,INC4T1,INC5T1,INC6T1,INC7T1,INC8T1".split(","))); Map<String, String> taiDataMap = reportAPIResultList.get(0).getData(); taiDataMap.put("Signal", reportAPIResultList.get(0).getSignal()); - + // 绗竴娈电殑娉板浗杩斿洖 for (String keepPartOrder : keepPartOrderList) { dataReportTai.setField(keepPartOrder); dataReportTai.setValue(taiDataMap.get(keepPartOrder)); setDataReportValueMap(dataReportMap, dataReportTai); setDataReportValueMap(dataReportTaiMap, dataReportTai); } + Map<String, String> answerDataMap = new LinkedHashMap<>(); Map<String, String> answerDataNoOrder = reportAPIResultList.get(0).getAnswerData(); answerDataNoOrder.entrySet().stream().sorted( @@ -850,10 +977,11 @@ public int compare(Map.Entry<String, String> o1, Map.Entry<String, String> o2) { int key1 = Integer.valueOf(o1.getKey().substring(3)); int key2 = Integer.valueOf(o2.getKey().substring(3)); - return key1 - key2; + return key1 - key2; // 闄嶅簭鎺掑簭锛屽鏋滄兂鍗囧簭灏卞弽杩囨潵 } } ).forEachOrdered(x -> answerDataMap.put(x.getKey(), x.getValue())); + for (Map.Entry<String, String> entry : answerDataMap.entrySet()) { dataReportTai.setField(entry.getKey()); dataReportTai.setValue(entry.getValue()); @@ -862,43 +990,52 @@ } } } + private void setContentMap(TExamReport it, List<DataReport> dataReportList, DataMap<String, String> dataReportMap, List<DataMap> reportLocalList) { DataMap<String, String> dataReportLocalMap = new DataMap<>(); - + // 绯荤粺鍙橀噺 dataReportMap.put("variableNamesInTheSystem", ""); dataReportList.stream().forEach(dataReport -> { - + // 鍒ゆ柇鏉冮檺 if (StringUtils.isNotEmpty(dataReport.getRight())) { if (StringUtils.equals((UserTypeEnum.SYS_USER.getUserType()), dataReport.getRight())) { setDataReportMap(dataReportMap, dataReport); setDataReportMap(dataReportLocalMap, dataReport); + } } else { setDataReportMap(dataReportMap, dataReport); setDataReportMap(dataReportLocalMap, dataReport); } }); + dataReportMap.put("Client", it.getUserName()); reportLocalList.add(dataReportLocalMap); } + private void setDataReportMap(DataMap<String, String> filed, DataReport dataReport) { filed.put(dataReport.getField(), iExamUtilService.getLangOrLocalLangString(dataReport.getLangType(), dataReport.getValue())); } + private void setDataReportValueMap(DataMap<String, String> filed, DataReport dataReport) { filed.put(dataReport.getField(), dataReport.getValue()); } - + + // 绠�鍗曟姤鍛� @RequiresPermissions("exam:report:basisExport") @PostMapping("/exportBasisReport/{ids}/{langType}") @ResponseBody public AjaxResult exportBasisReport(@PathVariable("ids") String[] ids, @PathVariable("langType") String langType) { List<TExamReport> tExamReportList = tExamReportService.selectTExamReportByIds(ids); + List<TReportTemplate> tReportTemplateList = itReportTemplateService.selectTReportTemplates(tExamReportList.get(0).getReportTemplateId()); + Map<String, ReportTypeEnum> reportTypeEnumMap = new HashMap<>(); for (com.ots.common.enums.ReportTypeEnum reportTypeEnumTemp : ReportTypeEnum.values()) { reportTypeEnumMap.put(reportTypeEnumTemp.getCode(), reportTypeEnumTemp); } - + + // 瀵煎嚭鍩虹鐗堟湰 String questionTemplateId = tExamReportList.get(0).getQuestionTemplateId(); String templateType = "Brief"; String reportType = ""; @@ -906,7 +1043,7 @@ String fileName = ""; TReportTemplate tReportTemplate = tExamReportService.getReportTemplate(questionTemplateId, langType, templateType); try { - + // 澶勭悊鐫块偦 for (TReportTemplate tReportTemplateTemp : tReportTemplateList) { if (Objects.equals(tReportTemplateTemp.getReportType(), "RuiLin")) { tReportTemplate = tReportTemplateTemp; @@ -915,6 +1052,7 @@ break; } } + reportType = tReportTemplate.getReportType(); path = itReportTemplateService.selectTReportTemplateFilePath(tReportTemplate); if (StringUtils.isEmpty(path)) { @@ -924,6 +1062,7 @@ e.printStackTrace(); return AjaxResult.error(MessageUtils.message("jsp.exam.report.noTemplate")); } + List<String> deleteFileStrList = new ArrayList<>(); List<String> deleteStrList = new ArrayList<>(); List<String> fileNameList = new ArrayList<>(); @@ -931,7 +1070,8 @@ tExamReportService.setExportBaseOrDetailReportData(tExamReportList, deleteStrList, fileNameList, tReportTemplate); return wordUtil.exportBaseOrDetailReport(path, deleteFileStrList, fileNameList); } - + + // 璇︾粏鎶ュ憡 @RequiresPermissions("exam:report:detailReportexport") @PostMapping("/exportDetailedReport/{ids}/{langType}") @ResponseBody @@ -942,39 +1082,47 @@ tExamReport.setId(Long.valueOf(id)); tExamReportList.add(tExamReport); } - + + + // 闄勪欢鐨勪綅缃�,鍏蜂綋閭欢闄勪欢鐨勪綅缃� List<String> fileNameResult = new ArrayList<>(); - + // 瑕佸垹闄ょ殑鏂囦欢 List<String> deleteStrList = new ArrayList<>(); + List<String> exportFileList = new ArrayList<>(); + List<TExamReport> tExamReports = tExamReportService.selectTExamReportByIds(ids); TExamReport tExamReport = tExamReports.get(0); String reportType = getReportType(tExamReport); if (Objects.equals("JAQ", reportType)) { dealJAQReport(deleteStrList, exportFileList, tExamReports); } else { - + // MAQ,SAQ,CAQ dealReprotFile(tExamReportList, fileNameResult, deleteStrList, exportFileList, reportType); } + WordUtil wordUtil = new WordUtil(); return wordUtil.exportBaseOrDetailReport("DataReport", deleteStrList, exportFileList); } - + + // jaq鎶ュ憡 dealJAQReport private void dealJAQReport(List<String> deleteStrList, List<String> exportFileList, List<TExamReport> tExamReports) throws IOException { TExamReport tExamReport = tExamReports.get(0); ReportAPIResult reportAPIResult = getThaiJAQData(tExamReports); - + // 娉板浗鏁版嵁 Map<String, String> thaiData = reportAPIResult.getData(); - + + // 鐢熸垚JAQ鎶ュ憡 List<TReportTemplate> tReportTemplateList = itReportTemplateService.selectTReportTemplates(tExamReport.getReportTemplateId()); Map<String, Object> textMap = new HashMap<>(); - + + // 鏋勯�犺〃 textMap.putAll(thaiData); WordUtil wordUtil = new WordUtil(); textMap.put("sendEmailFileName", "JAQ"); RelatedParty relatedParty = memberService.queryProdidByToken(tExamReport.getTokenId()); for (TReportTemplate tReportTemplate : tReportTemplateList) { - + // 瀵圭涓�寮犺〃鐨勬枃瀛楄繘琛岀炕璇� Map<String, String> jaqMap = getJaqQuestionByPermanentIdMap(tReportTemplate, tExamReport); changTable1(textMap, tReportTemplate, thaiData); changTable2(textMap, tReportTemplate, thaiData); @@ -987,12 +1135,14 @@ textMap.put("superiorPosition", relatedParty.getSuperiorPosition()); String zipFileName = wordUtil.makeReportFile(tReportTemplate.getLocation(), tReportTemplate, textMap, null, deleteStrList); exportFileList.add(zipFileName); - + + // 鍒犻櫎瑕佸垹鐨� wordUtil.deleteFileByStr(deleteStrList); } } + private void changTable4(Map<String, Object> textMap, TReportTemplate tReportTemplate, Map<String, String> jaqMap, Map<String, String> thaiData) { - + // 鏇挎崲鍊� for (Integer i = 1; i <= 3; i++) { textMap.put("T4com1item" + i.toString(), ExamUtil.getLangString(tReportTemplate.getLangType(), jaqMap.get(thaiData.get("T4com1item" + i.toString())))); textMap.put("T4com2item" + i.toString(), ExamUtil.getLangString(tReportTemplate.getLangType(), jaqMap.get(thaiData.get("T4com2item" + i.toString())))); @@ -1003,25 +1153,32 @@ textMap.put("T4com7item" + i.toString(), ExamUtil.getLangString(tReportTemplate.getLangType(), jaqMap.get(thaiData.get("T4com7item" + i.toString())))); textMap.put("T4com8item" + i.toString(), ExamUtil.getLangString(tReportTemplate.getLangType(), jaqMap.get(thaiData.get("T4com8item" + i.toString())))); } + Map<String, String> tagMap = getTranslationCapability(); - + + // 鏇挎崲鍊� for (Integer i = 1; i <= 12; i++) { textMap.put("T4com" + i.toString(), ExamUtil.getLangString(tReportTemplate.getLangType(), tagMap.get(thaiData.get("T4com" + i.toString())))); } } + private void changTable3(Map<String, Object> textMap, TReportTemplate tReportTemplate, Map<String, String> jaqMap, Map<String, String> thaiData) { - + + // 鏇挎崲鍊� for (Integer i = 1; i <= 25; i++) { textMap.put("T3item" + i.toString(), ExamUtil.getLangString(tReportTemplate.getLangType(), jaqMap.get(thaiData.get("T3item" + i.toString())))); } + WordUtil.changeJAQStyle(textMap, 2, 25, "T3Line"); - + + // 鑳滀换鍔涢偅涓�鍒楁浛鎹� Map<String, String> tagMap = getTranslationCapability(); - + // 鏇挎崲鍊� for (Integer i = 1; i <= 25; i++) { textMap.put("T3com" + i.toString(), ExamUtil.getLangString(tReportTemplate.getLangType(), tagMap.get(thaiData.get("T3com" + i.toString())))); } } + @NotNull private Map<String, String> getJaqQuestionByPermanentIdMap(TReportTemplate tReportTemplate, TExamReport tExamReport) { List<QuestionReport> questionReports = JsonUtil.toJsonListObject(tExamReport.getQuestionReport(), QuestionReport.class); @@ -1029,22 +1186,27 @@ for (QuestionReport questionReport : questionReports) { jaqMap.put(questionReport.getPermanentId(), questionReport.getQuestionTitle()); } - + + // 鍙栫壒瀹氱殑閭g璇█鐢熸垚鎶ュ憡 List<TQuestion> tQuestions = itQuestionService.selectTQuestionByPermanentIds(new ArrayList<>(jaqMap.keySet())); + for (TQuestion tQuestion : tQuestions) { QuestionObject questionObject = JsonUtil.parseObject(tQuestion.getContent(), QuestionObject.class); jaqMap.put(tQuestion.getPermanentId(), ExamUtil.getLangString(tReportTemplate.getLangType(), questionObject.getTitleContent())); } return jaqMap; } + private void changTable1(Map<String, Object> textMap, TReportTemplate tReportTemplate, Map<String, String> thaiData) { Map<String, String> tagMap = getTranslationCapability(); - + + // 鏇挎崲鍊� for (Integer i = 1; i <= 12; i++) { String textValue = thaiData.get("T1com" + i.toString()); textMap.put("T1com" + i.toString(), ExamUtil.getLangString(tReportTemplate.getLangType(), tagMap.get(textValue))); } } + private Map<String, String> getTranslationCapability() { ExcelReader reader = cn.hutool.poi.excel.ExcelUtil.getReader(FileUtil.file(EssConfig.getReportTemplates() + "JAQTable1Tag.xlsx")); List<List<Object>> readList = reader.read(); @@ -1059,30 +1221,37 @@ } return tagMap; } + private void changTable2(Map<String, Object> textMap, TReportTemplate tReportTemplate, Map<String, String> thaiData) { Map<String, String> tagMap = getTranslationCapability(); - + + //JAQ涓婇鑹� WordUtil.changeJAQStyle(textMap, 1, 12, "T2Line"); - + + // 鏇挎崲鍊� for (Integer i = 1; i <= 12; i++) { textMap.put("T2com" + i.toString(), ExamUtil.getLangString(tReportTemplate.getLangType(), tagMap.get(thaiData.get("T2com" + i.toString())))); } } + private ReportAPIResult getThaiJAQData(List<TExamReport> tExamReports) { List<JAQPersons> persons = new ArrayList<>(); Integer personCout = 0; for (TExamReport tExamReport : tExamReports) { - + // 浜虹殑淇℃伅 Map<String, String> personInfo = new LinkedHashMap<>(); personInfo.put("accessCode", tExamReport.getTokenId()); personInfo.put("fullName", tExamReport.getMemberName()); - + // 绛旈鐨勪汉 JAQPersons person = new JAQPersons(); person.setPersonInfo(personInfo); - + + // 绛旈鐨勯�夐」 Map<String, String> personPoints = new LinkedHashMap<>(); person.setPersonPoints(personPoints); - + + // 閫犳暟鎹�,璁板緱灞忚斀锛岄�爅aq鏁版嵁 +// makeJAQData(personPoints); List<QuestionReport> questionReportList = JsonUtil.parseArray(tExamReport.getQuestionReport(), QuestionReport.class); for (QuestionReport questionReport : questionReportList) { @@ -1094,6 +1263,7 @@ persons.add(person); personCout++; } + Map<String, List<JAQPersons>> data = new LinkedHashMap<>(); data.put("persons", persons); HolderInfo info = new HolderInfo(); @@ -1113,6 +1283,7 @@ reportAPIResult.setAnswerData(data); return reportAPIResult; } + private void makeJAQData(Map<String, String> personPoints) { String topics = "JAQ0001a,JAQ0001b,JAQ0002a,JAQ0002b,JAQ0003a,JAQ0003b,JAQ0004a,JAQ0004b,JAQ0005a,JAQ0005b,JAQ0006a,JAQ0006b,JAQ0007a,JAQ0007b,JAQ0008a,JAQ0008b,JAQ0009a,JAQ0009b,JAQ0010a,JAQ0010b,JAQ0011a,JAQ0011b,JAQ0012a,JAQ0012b,JAQ0013a,JAQ0013b,JAQ0014a,JAQ0014b,JAQ0015a,JAQ0015b,JAQ0016a,JAQ0016b,JAQ0017a,JAQ0017b,JAQ0018a,JAQ0018b,JAQ0019a,JAQ0019b,JAQ0020a,JAQ0020b,JAQ0021a,JAQ0021b,JAQ0022a,JAQ0022b,JAQ0023a,JAQ0023b,JAQ0024a,JAQ0024b,JAQ0025a,JAQ0025b,JAQ0026a,JAQ0026b,JAQ0027a,JAQ0027b,JAQ0028a,JAQ0028b,JAQ0029a,JAQ0029b,JAQ0030a,JAQ0030b,JAQ0031a,JAQ0031b,JAQ0032a,JAQ0032b,JAQ0033a,JAQ0033b,JAQ0034a,JAQ0034b,JAQ0035a,JAQ0035b,JAQ0036a,JAQ0036b,JAQ0037a,JAQ0037b,JAQ0038a,JAQ0038b,JAQ0039a,JAQ0039b,JAQ0040a,JAQ0040b,JAQ0041a,JAQ0041b,JAQ0042a,JAQ0042b,JAQ0043a,JAQ0043b,JAQ0044a,JAQ0044b,JAQ0045a,JAQ0045b,JAQ0046a,JAQ0046b,JAQ0047a,JAQ0047b,JAQ0048a,JAQ0048b,JAQ0049a,JAQ0049b,JAQ0050a,JAQ0050b,JAQ0051a,JAQ0051b,JAQ0052a,JAQ0052b,JAQ0053a,JAQ0053b,JAQ0054a,JAQ0054b,JAQ0055a,JAQ0055b,JAQ0056a,JAQ0056b,JAQ0057a,JAQ0057b,JAQ0058a,JAQ0058b,JAQ0059a,JAQ0059b,JAQ0060a,JAQ0060b,JAQ0061a,JAQ0061b,JAQ0062a,JAQ0062b,JAQ0063a,JAQ0063b,JAQ0064a,JAQ0064b,JAQ0065a,JAQ0065b,JAQ0066a,JAQ0066b,JAQ0067a,JAQ0067b,JAQ0068a,JAQ0068b,JAQ0069a,JAQ0069b,JAQ0070a,JAQ0070b,JAQ0071a,JAQ0071b,JAQ0072a,JAQ0072b,JAQ0073a,JAQ0073b,JAQ0074a,JAQ0074b,JAQ0075a,JAQ0075b,JAQ0076a,JAQ0076b,JAQ0077a,JAQ0077b,JAQ0078a,JAQ0078b,JAQ0079a,JAQ0079b,JAQ0080a,JAQ0080b,JAQ0081a,JAQ0081b,JAQ0082a,JAQ0082b,JAQ0083a,JAQ0083b,JAQ0084a,JAQ0084b,JAQ0085a,JAQ0085b,JAQ0086a,JAQ0086b,JAQ0087a,JAQ0087b,JAQ0088a,JAQ0088b,JAQ0089a,JAQ0089b,JAQ0090a,JAQ0090b,JAQ0091a,JAQ0091b,JAQ0092a,JAQ0092b,JAQ0093a,JAQ0093b,JAQ0094a,JAQ0094b,JAQ0095a,JAQ0095b,JAQ0096a,JAQ0096b,JAQ0097a,JAQ0097b,JAQ0098a,JAQ0098b,JAQ0099a,JAQ0099b,JAQ0100a,JAQ0100b,JAQ0101a,JAQ0101b,JAQ0102a,JAQ0102b,JAQ0103a,JAQ0103b,JAQ0104a,JAQ0104b,JAQ0105a,JAQ0105b,JAQ0106a,JAQ0106b,JAQ0107a,JAQ0107b,JAQ0108a,JAQ0108b,JAQ0109a,JAQ0109b,JAQ0110a,JAQ0110b,JAQ0111a,JAQ0111b,JAQ0112a,JAQ0112b,JAQ0113a,JAQ0113b,JAQ0114a,JAQ0114b,JAQ0115a,JAQ0115b,JAQ0116a,JAQ0116b,JAQ0117a,JAQ0117b,JAQ0118a,JAQ0118b,JAQ0119a,JAQ0119b,JAQ0120a,JAQ0120b,JAQ0121a,JAQ0121b,JAQ0122a,JAQ0122b,JAQ0123a,JAQ0123b,JAQ0124a,JAQ0124b,JAQ0125a,JAQ0125b,JAQ0126a,JAQ0126b,JAQ0127a,JAQ0127b,JAQ0128a,JAQ0128b,JAQ0129a,JAQ0129b,JAQ0130a,JAQ0130b,JAQ0131a,JAQ0131b,JAQ0132a,JAQ0132b,JAQ0133a,JAQ0133b,JAQ0134a,JAQ0134b,JAQ0135a,JAQ0135b"; String[] split = topics.split(","); @@ -1120,14 +1291,17 @@ personPoints.put(item, "2"); }); } + private void dealReprotFile(List<TExamReport> tExamReportList, List<String> fileNameResult, List<String> deleteStrList, List<String> exportFileList, String reportType) { for (TExamReport tExamReport : tExamReportList) { fileNameResult.clear(); - + // 閲嶆柊璋冪敤娉板浗鍥㈤槦鐨勬帴鍙o紝閲岄潰浼氭洿鏂版暟鎹簱 TExamReport tExamReportComplete = tExamReportService.selectTExamReportById(tExamReport.getId()); itExamPaperService.recallThaiInterface(tExamReportComplete, reportType); - + + // 寮�濮嬬敓鎴愭姤鍛� TExamReport tExamReportResult = tExamReportService.getReportFromTemplate(tExamReport, fileNameResult, deleteStrList); + if (tExamReportResult == null) { continue; } @@ -1135,31 +1309,41 @@ String[] exportFiles = exportFile.split("/"); exportFileList.add(exportFiles[exportFiles.length - 1]); } - + + // 鏇存柊鍘嗗彶鍦板潃 updateHisReportAddress(fileNameResult, deleteStrList, tExamReportResult); } } + private void updateHisReportAddress(List<String> fileNameResult, List<String> deleteStrList, TExamReport tExamReportResult) { - + // 涓嬭浇鍘嗗彶鏂囦欢 if (StringUtils.isEmpty(tExamReportResult.getReportAddress())) { return; } + TExamReport tExamReportUpdate = new TExamReport(); tExamReportUpdate.setId(tExamReportResult.getId()); tExamReportUpdate.setReportAddress(JsonUtil.toJSONString(fileNameResult)); tExamReportUpdate.setReportAddressNew(JsonUtil.toJSONString(fileNameResult)); tExamReportService.updateTExamReport(tExamReportUpdate); } + private Map<String, Map<String, String>> getDataFromExcel() { ExcelUtil<String> excelUtil = new ExcelUtil<>(String.class); return excelUtil.getMAQFromExcel(); } - + + /** + * 鏂板璇勬祴鎶ュ憡 + */ @GetMapping("/add") public String add() { return prefix + "/add"; } - + + /** + * 鏂板淇濆瓨璇勬祴鎶ュ憡 + */ @RequiresPermissions("exam:report:add") @Log(title = "璇勬祴鎶ュ憡", businessType = BusinessType.INSERT) @PostMapping("/add") @@ -1167,14 +1351,20 @@ public AjaxResult addSave(TExamReport tExamReport) { return toAjax(tExamReportService.insertTExamReport(tExamReport)); } - + + /** + * 淇敼璇勬祴鎶ュ憡 + */ @GetMapping("/edit/{id}") public String edit(@PathVariable("id") Long id, ModelMap mmap) { TExamReport tExamReport = tExamReportService.selectTExamReportById(id); mmap.put("tExamReport", tExamReport); return prefix + "/edit"; } - + + /** + * 淇敼淇濆瓨璇勬祴鎶ュ憡 + */ @RequiresPermissions("exam:report:edit") @Log(title = "璇勬祴鎶ュ憡", businessType = BusinessType.UPDATE) @PostMapping("/edit") @@ -1182,7 +1372,10 @@ public AjaxResult editSave(TExamReport tExamReport) { return toAjax(tExamReportService.updateTExamReport(tExamReport)); } - + + /** + * 鍒犻櫎璇勬祴鎶ュ憡 + */ @RequiresPermissions("exam:report:remove") @Log(title = "璇勬祴鎶ュ憡", businessType = BusinessType.DELETE) @PostMapping("/remove") @@ -1190,7 +1383,10 @@ public AjaxResult remove(String ids) { return toAjax(tExamReportService.deleteTExamReportByIds(ids)); } - + + /** + * 瀹℃壒鐘舵�佷慨鏀� + */ @Log(title = "浼佷笟鐢ㄦ埛瀹℃壒", businessType = BusinessType.UPDATE) @RequiresPermissions("exam:report:edit") @PostMapping("/changeStatus") @@ -1198,7 +1394,10 @@ public AjaxResult changeStatus(TExamReport tExamReport) { return toAjax(tExamReportService.changeStatus(tExamReport)); } - + + /** + * 鎵归噺鏇存柊瀹℃壒鐘舵�� + */ @RequiresPermissions("exam:report:edit") @Log(title = "鎵归噺鏇存柊瀹℃壒鐘舵��", businessType = BusinessType.DELETE) @PostMapping("/batchVerify") @@ -1206,13 +1405,14 @@ public AjaxResult batchVerify(String ids) { return toAjax(tExamReportService.updateTexamReportByIds(ids, "1")); } + @GetMapping("/langType/{userIds}/{productId}") public String getLangType(@PathVariable("userIds") Long[] userIds, @PathVariable("productId") Long productId, ModelMap mmap) { List<DictData> dictDataList = tExamReportService.getType(userIds[0]); try { TExamPaper tExamPaper = itExamPaperService.selectTExamPaperById(productId); List<TReportTemplate> tReportTemplateList = itReportTemplateService.selectTReportTemplates(tExamPaper.getReportTemplateId()); - + // 鐫块偦鐨勫彧鏈変腑鏂� for (TReportTemplate tReportTemplate : tReportTemplateList) { if ("RuiLin".equals(tReportTemplate.getReportType())) { for (DictData dictData : dictDataList) { @@ -1226,31 +1426,39 @@ } } } catch (Exception e) { + } + mmap.put("dictDatas", dictDataList); return prefix + "/report::langTypeDiv"; } + @PostMapping("/testerReport/{memberId}") @ResponseBody public AjaxResult getTesterReport(@PathVariable Integer memberId) { TExamReport tExamReport = new TExamReport(); tExamReport.setMemberId(memberId); - + // 闄勪欢鐨勪綅缃�,鍏蜂綋閭欢闄勪欢鐨勪綅缃� List<String> fileNameResult = new ArrayList<>(); - + // 瑕佸垹闄ょ殑鏂囦欢 List<String> deleteStrList = new ArrayList<>(); + WordUtil wordUtil = new WordUtil(); + TExamReport tExamReportResult = tExamReportService.getReportFromTemplate(tExamReport, fileNameResult, deleteStrList); if (tExamReportResult == null) { return AjaxResult.success("绛旈鏈畬鎴愶紒"); } + List<String> exportFileList = new ArrayList<>(); for (String exportFile : fileNameResult) { String[] exportFiles = exportFile.split("/"); exportFileList.add(exportFiles[exportFiles.length - 1]); } + return wordUtil.exportBaseOrDetailReport(tExamReportResult.getMemberName(), deleteStrList, exportFileList); } + @PostMapping("/exportSendedReport/{ids}") @ResponseBody public AjaxResult getTesterReport(@PathVariable String[] ids) { @@ -1265,6 +1473,7 @@ fileNameList.add(addresses[addresses.length - 1]); } } + return wordUtil.exportZipKeepFiles(MessageUtils.message("jsp.exam.report.sendedReport"), new ArrayList<>(), fileNameList); } catch (FileNotFoundException e) { e.printStackTrace(); @@ -1273,7 +1482,10 @@ } return AjaxResult.error(MessageUtils.message("jsp.exam.report.noHisReport")); } - + + /** + * 鏌ヨ璇勬祴閭�璇峰彂閫佷换鍔″垪琛� + */ @RequiresPermissions("exam:hrEmailReport:view") @PostMapping("/hrSendlogList") @ResponseBody @@ -1281,12 +1493,13 @@ startPage(); tExamReport.setFinish(1); tExamReport.setSendHrStatusList(Arrays.asList(1, 3)); + User sysUser = ShiroUtils.getSysUser(); String userType = sysUser.getUserType(); if (UserTypeEnum.ENT_USER.getUserType().equals(userType)) { tExamReport.setUserId(sysUser.getUserId()); } - + //鍒嗛攢鍟嗗彲浠ョ湅鍒板垎閿�鍟嗕笅鐨勪紒涓氫俊鎭� if (UserTypeEnum.DIS_USER.getUserType().equals(userType)) { SysUserExtend sysUserExtend = new SysUserExtend(); sysUserExtend.setParentUserId(sysUser.getUserId()); @@ -1298,12 +1511,14 @@ List<TExamReport> list = tExamReportService.selectTExamReportList(tExamReport); return getDataTable(list); } + @RequiresPermissions("exam:hrEmailReport:view") @GetMapping("/hrSendlog/{testId}") public String hrSendlog(@PathVariable Long testId,ModelMap mmap) { mmap.put("testId",testId); return "exam/hrSendlog/hrSendlog"; } + @RequiresPermissions("exam:hremail:reissue") @GetMapping("/sendEmail/{id}") @ResponseBody 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 83ba114..9cd2c97 100644 --- a/src/main/java/com/ots/project/exam/controller/TLibraryCodeController.java +++ b/src/main/java/com/ots/project/exam/controller/TLibraryCodeController.java @@ -1,4 +1,5 @@ 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; @@ -22,31 +23,43 @@ 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()); @@ -54,7 +67,10 @@ } return getDataTable(list); } - + + /** + * 瀵煎嚭鎶ュ憡瀛楀吀鍒楄〃 + */ @RequiresPermissions("exam:librarycode:export") @PostMapping("/export") @ResponseBody @@ -63,12 +79,18 @@ 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") @@ -82,7 +104,10 @@ CacheServiceFactory.getInstance().reLoad(); return result; } - + + /** + * 淇敼鎶ュ憡瀛楀吀 + */ @GetMapping("/edit/{id}") public String edit(@PathVariable("id") Long id, ModelMap mmap) { TLibraryCode tLibraryCode = tLibraryCodeService.selectTLibraryCodeById(id); @@ -90,7 +115,10 @@ mmap.put("tLibraryCode", tLibraryCode); return prefix + "/edit"; } - + + /** + * 淇敼淇濆瓨鎶ュ憡瀛楀吀 + */ @RequiresPermissions("exam:librarycode:edit") @Log(title = "鎶ュ憡瀛楀吀", businessType = BusinessType.UPDATE) @PostMapping("/edit") @@ -100,11 +128,15 @@ 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") @@ -112,6 +144,7 @@ public AjaxResult remove(String ids) { return toAjax(tLibraryCodeService.deleteTLibraryCodeByIds(ids)); } + @Log(title = "鎶ュ憡瀛楀吀瀵煎叆", businessType = BusinessType.IMPORT) @RequiresPermissions("exam:librarycode:import") @PostMapping("/importData") @@ -134,16 +167,18 @@ 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("鎶ュ憡瀛楀吀鍐呭(Report Library Entries)"); + AjaxResult result = util.importTemplateExcel("鎶ュ憡瀛楀吀鏁版嵁"); 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 871d918..e0f66aa 100644 --- a/src/main/java/com/ots/project/exam/controller/TQuestionController.java +++ b/src/main/java/com/ots/project/exam/controller/TQuestionController.java @@ -1,4 +1,5 @@ package com.ots.project.exam.controller; + import com.alibaba.fastjson.JSONObject; import com.ots.common.utils.MessageUtils; import com.ots.common.utils.StringUtils; @@ -33,35 +34,53 @@ 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 @@ -70,7 +89,11 @@ List<TQuestion> list = tQuestionService.selectTQuestionList(tQuestion); return getDataTable(list); } - + + + /** + * 涓撻棬涓簆roduct鐨刟dd_question.html 椤甸潰鎻愪緵鏌ヨ + */ @RequiresPermissions("exam:question:list") @PostMapping("/listForProductAddQuestion") @ResponseBody @@ -82,20 +105,30 @@ 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") @@ -107,7 +140,10 @@ } return toAjax(resultNum); } - + + /** + * 淇敼棰樼洰鍒楄〃 + */ @GetMapping("/edit/{id}") public String edit(@PathVariable("id") Long id, ModelMap mmap) { TQuestion tQuestion = tQuestionService.selectTQuestionById(id); @@ -117,35 +153,45 @@ 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") @@ -153,7 +199,10 @@ public AjaxResult editSave(TQuestion tQuestion) { return toAjax(tQuestionService.updateTQuestion(tQuestion)); } - + + /** + * 鍒犻櫎棰樼洰鍒楄〃 + */ @RequiresPermissions("exam:question:remove") @Log(title = "棰樼洰鍒楄〃", businessType = BusinessType.DELETE) @PostMapping("/remove") @@ -161,7 +210,10 @@ public AjaxResult remove(String ids) { return toAjax(tQuestionService.deleteTQuestionByIds(ids)); } - + + /** + * 鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟 + */ @RequiresPermissions("enterprise:question:import") @PostMapping("/importData") @ResponseBody @@ -174,7 +226,11 @@ String message = tQuestionService.insertImportQuestion(excelList); return AjaxResult.success(message); } - + + + /** + * 鎵归噺瀵煎叆娴嬭瘯浜哄憳鍚嶅崟妯℃澘涓嬭浇 + */ @RequiresPermissions("enterprise:question:view") @GetMapping("/importTemplate") @ResponseBody @@ -182,16 +238,18 @@ 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) { @@ -201,12 +259,15 @@ } 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); @@ -215,10 +276,11 @@ 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/TReportTemplateController.java b/src/main/java/com/ots/project/exam/controller/TReportTemplateController.java index bd6dca2..7085583 100644 --- a/src/main/java/com/ots/project/exam/controller/TReportTemplateController.java +++ b/src/main/java/com/ots/project/exam/controller/TReportTemplateController.java @@ -1,4 +1,5 @@ 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; @@ -12,21 +13,33 @@ import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; + import java.util.List; import java.util.Objects; +/** + * 鎶ュ憡妯℃澘閰嶇疆Controller + * + * @author ots + * @date 2020-03-24 + */ @Controller @RequestMapping("/exam/template") public class TReportTemplateController extends BaseController { private String prefix = "exam/template"; + @Autowired private ITReportTemplateService tReportTemplateService; + @RequiresPermissions("exam:template:view") @GetMapping() public String template() { return prefix + "/template"; } - + + /** + * 鏌ヨ鎶ュ憡妯℃澘閰嶇疆鍒楄〃 + */ @RequiresPermissions("exam:template:list") @PostMapping("/list") @ResponseBody @@ -35,7 +48,10 @@ List<TReportTemplate> list = tReportTemplateService.selectTReportTemplateList(tReportTemplate); return getDataTable(list); } - + + /** + * 瀵煎嚭鎶ュ憡妯℃澘閰嶇疆鍒楄〃 + */ @RequiresPermissions("exam:template:export") @PostMapping("/export") @ResponseBody @@ -44,12 +60,18 @@ ExcelUtil<TReportTemplate> util = new ExcelUtil<TReportTemplate>(TReportTemplate.class); return util.exportExcel(list, "template"); } - + + /** + * 鏂板鎶ュ憡妯℃澘閰嶇疆 + */ @GetMapping("/add") public String add() { return prefix + "/add"; } - + + /** + * 鏂板淇濆瓨鎶ュ憡妯℃澘閰嶇疆 + */ @RequiresPermissions("exam:template:add") @Log(title = "鎶ュ憡妯℃澘閰嶇疆", businessType = BusinessType.INSERT) @PostMapping("/add") @@ -61,14 +83,20 @@ } return toAjax(tReportTemplateService.insertTReportTemplate(tReportTemplate)); } - + + /** + * 淇敼鎶ュ憡妯℃澘閰嶇疆 + */ @GetMapping("/edit/{id}") public String edit(@PathVariable("id") Long id, ModelMap mmap) { TReportTemplate tReportTemplate = tReportTemplateService.selectTReportTemplateById(id); mmap.put("tReportTemplate", tReportTemplate); return prefix + "/edit"; } - + + /** + * 淇敼淇濆瓨鎶ュ憡妯℃澘閰嶇疆 + */ @RequiresPermissions("exam:template:edit") @Log(title = "鎶ュ憡妯℃澘閰嶇疆", businessType = BusinessType.UPDATE) @PostMapping("/edit") @@ -76,7 +104,10 @@ public AjaxResult editSave(TReportTemplate tReportTemplate) { return toAjax(tReportTemplateService.updateTReportTemplate(tReportTemplate)); } - + + /** + * 鍒犻櫎鎶ュ憡妯℃澘閰嶇疆 + */ @RequiresPermissions("exam:template:remove") @Log(title = "鎶ュ憡妯℃澘閰嶇疆", businessType = BusinessType.DELETE) @PostMapping("/remove") 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 35434bf..878c023 100644 --- a/src/main/java/com/ots/project/exam/controller/TSubjectController.java +++ b/src/main/java/com/ots/project/exam/controller/TSubjectController.java @@ -1,4 +1,5 @@ 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; @@ -12,20 +13,32 @@ 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 @@ -34,7 +47,10 @@ List<TSubject> list = tSubjectService.selectTSubjectList(tSubject); return getDataTable(list); } - + + /** + * 瀵煎嚭缁村害琛ㄥ垪琛� + */ @RequiresPermissions("exam:subject:export") @PostMapping("/export") @ResponseBody @@ -43,12 +59,18 @@ 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") @@ -56,14 +78,20 @@ 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") @@ -71,7 +99,10 @@ 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 f99dd21..aa8e3ff 100644 --- a/src/main/java/com/ots/project/exam/domain/EntDemographyInfo.java +++ b/src/main/java/com/ots/project/exam/domain/EntDemographyInfo.java @@ -1,4 +1,5 @@ package com.ots.project.exam.domain; + import com.ots.framework.aspectj.lang.annotation.Excel; import com.ots.framework.web.domain.BaseEntity; import lombok.Getter; @@ -6,30 +7,59 @@ 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 78d1290..cf19042 100644 --- a/src/main/java/com/ots/project/exam/domain/EntDemographyParam.java +++ b/src/main/java/com/ots/project/exam/domain/EntDemographyParam.java @@ -1,4 +1,5 @@ package com.ots.project.exam.domain; + import com.ots.framework.aspectj.lang.annotation.Excel; import com.ots.framework.web.domain.BaseEntity; import lombok.Getter; @@ -6,39 +7,78 @@ 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 a8684db..9a48117 100644 --- a/src/main/java/com/ots/project/exam/domain/EntOperLog.java +++ b/src/main/java/com/ots/project/exam/domain/EntOperLog.java @@ -1,4 +1,5 @@ package com.ots.project.exam.domain; + import com.ots.framework.aspectj.lang.annotation.Excel; import com.ots.framework.web.domain.BaseEntity; import lombok.Getter; @@ -6,27 +7,52 @@ 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 ac42bd6..f0e5ce0 100644 --- a/src/main/java/com/ots/project/exam/domain/EntTestDetail.java +++ b/src/main/java/com/ots/project/exam/domain/EntTestDetail.java @@ -1,10 +1,18 @@ 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 44ea33d..22e8ba1 100644 --- a/src/main/java/com/ots/project/exam/domain/EntTestMember.java +++ b/src/main/java/com/ots/project/exam/domain/EntTestMember.java @@ -1,68 +1,141 @@ 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 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 c6a3f2d..ee045a0 100644 --- a/src/main/java/com/ots/project/exam/domain/EntTestMemberBackstage.java +++ b/src/main/java/com/ots/project/exam/domain/EntTestMemberBackstage.java @@ -1,64 +1,90 @@ 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; @@ -67,6 +93,7 @@ { this.memberName = memberName; } + public String getMemberName() { return memberName; @@ -75,6 +102,7 @@ { this.memberDept = memberDept; } + public String getMemberDept() { return memberDept; @@ -83,6 +111,7 @@ { this.memberEmail = memberEmail; } + public String getMemberEmail() { return memberEmail; @@ -91,6 +120,7 @@ { this.memberPhone = memberPhone; } + public String getMemberPhone() { return memberPhone; @@ -99,6 +129,7 @@ { this.testId = testId; } + public Long getTestId() { return testId; @@ -107,6 +138,7 @@ { this.token = token; } + public String getToken() { return token; @@ -115,6 +147,7 @@ { this.startTime = startTime; } + public Date getStartTime() { return startTime; @@ -123,6 +156,7 @@ { this.endTime = endTime; } + public Date getEndTime() { return endTime; @@ -131,6 +165,7 @@ { this.smsStatus = smsStatus; } + public String getSmsStatus() { return smsStatus; @@ -139,6 +174,7 @@ { this.smsTime = smsTime; } + public Date getSmsTime() { return smsTime; @@ -147,6 +183,7 @@ { this.emailStatus = emailStatus; } + public String getEmailStatus() { return emailStatus; @@ -155,6 +192,7 @@ { this.emailTime = emailTime; } + public Date getEmailTime() { return emailTime; @@ -163,6 +201,7 @@ { this.status = status; } + public String getStatus() { return status; @@ -171,6 +210,7 @@ { this.firstname = firstname; } + public String getFirstname() { return firstname; @@ -179,10 +219,12 @@ { 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 8745a32..81a5326 100644 --- a/src/main/java/com/ots/project/exam/domain/EntTestMemberOther.java +++ b/src/main/java/com/ots/project/exam/domain/EntTestMemberOther.java @@ -1,61 +1,129 @@ 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 1cb8678..3350027 100644 --- a/src/main/java/com/ots/project/exam/domain/EntTestPackage.java +++ b/src/main/java/com/ots/project/exam/domain/EntTestPackage.java @@ -1,85 +1,180 @@ 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_package + * + * @author ots + * @date 2019-11-27 + */ @Getter @Setter public class EntTestPackage extends BaseEntity { private static final long serialVersionUID = 1L; - + + /** + * 娴嬭瘯鍖呯紪鐮� + */ private Long id; - + + /** + * 浼佷笟鐢ㄦ埛ID + */ @Excel(name = "浼佷笟鐢ㄦ埛ID") private Long userId; - + + /** + * + */ @Excel(name = "浼佷笟鍚嶇О") private String userName; - + + /** + * 浜у搧缂栫爜 + */ @Excel(name = "浜у搧缂栫爜") private Long prodId; - + + /** + * 娴嬭瘯鍖呭悕绉� + */ @Excel(name = "娴嬭瘯鍖呭悕绉�") private String testName; - + + /** + * 浜у搧鍖呭悕绉� + */ @Excel(name = "浜у搧鍖呭悕绉�") private String prodName; - + + /** + * 娴嬭瘯鍖呯被鍨� + */ @Excel(name = "娴嬭瘯鍖呯被鍨�") private String testType; - + + /** + * 鍖哄煙 + */ @Excel(name = "鍖哄煙") private String testArea; - + + /** + * 璇 + */ @Excel(name = "璇") private String langType; - + + /** + * 閭�璇峰唴瀹� + */ @Excel(name = "閭�璇峰唴瀹�") private String template; - + + /** + * 閫氱煡閭锛岄偖绠遍�氳繃閫楀彿鍒嗛殧 + */ @Excel(name = "閫氱煡閭锛岄偖绠遍�氳繃閫楀彿鍒嗛殧") private String testEmail; - + + /** + * 浠诲姟妗嗘灦 鍐呭涓篔SON + */ @Excel(name = "浠诲姟妗嗘灦 鍐呭涓篔SON") private Long frameTextContentId; - + + /** + * 鏈夋晥鏈� + */ @Excel(name = "鏈夋晥鏈�", width = 30, dateFormat = "yyyy-MM-dd") private Date invalidTime; - + + /** + * 鐘舵�侊紙鍚敤銆佹殏鍋溿�佺户缁�佺粨鏉燂級 + */ @Excel(name = "鐘舵��", readConverterExp = "鍚�=鐢ㄣ�佹殏鍋溿�佺户缁�佺粨鏉�") private String status; - + + /** + * 娴嬭瘯浜烘暟 + */ private Long testNum; - + + /** + * 宸叉祴浜烘暟 + */ private Long finishNum; - + + /** + * 娴嬭瘯涓汉鏁� + */ private Long testingNum; - + + /** + * 鏈祴浜烘暟 + */ private Long unTestNum; - + + /** + * 浜哄彛瀛︾紪鐮佺粍鍚� + */ private String paramCodes; - + + /** + * 鐢ㄦ埛鍒楄〃 + */ private List<Long> userIds; - + + /** + * 鏄惁鑷姩缁欐祴璇曡�呭彂閫佹祴璇曟姤鍛� + */ private boolean autoSendReport; - + + /** + * 鎶ュ憡妯℃澘缂栫爜 + */ private String reportTemplateId; - + + /** + * 鎶ュ憡妯℃澘灞曠ず鍐呭 锛坮eportType-templateType-langType锛� + */ private String reportTemplateShowValue; - + + /** + * 鍙戦�佺粰HR閭欢妯℃澘鍐呭 + */ private String hrTemplate; - + + /** + * 宀椾綅 + */ private String position; - + + /** + * 鑱屼笟澶х被 + */ private String professionalCategory; - + + /** + * 涓婄骇宀椾綅 + * + */ private String superiorPosition; + private String phonenumber; + + + + @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) 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 3e361a8..ede76d6 100644 --- a/src/main/java/com/ots/project/exam/domain/EntTestSendtask.java +++ b/src/main/java/com/ots/project/exam/domain/EntTestSendtask.java @@ -1,4 +1,5 @@ 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; @@ -6,55 +7,114 @@ 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 201109e..e787f67 100644 --- a/src/main/java/com/ots/project/exam/domain/EntTestSendtaskMail.java +++ b/src/main/java/com/ots/project/exam/domain/EntTestSendtaskMail.java @@ -1,83 +1,132 @@ 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 aa31813..5b9ed70 100644 --- a/src/main/java/com/ots/project/exam/domain/ExamPaper.java +++ b/src/main/java/com/ots/project/exam/domain/ExamPaper.java @@ -1,27 +1,48 @@ 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 2ae2336..92bda93 100644 --- a/src/main/java/com/ots/project/exam/domain/ExamPaperAnswer.java +++ b/src/main/java/com/ots/project/exam/domain/ExamPaperAnswer.java @@ -1,110 +1,158 @@ 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 58c4da2..1c3a221 100644 --- a/src/main/java/com/ots/project/exam/domain/ExamPaperQuestionCustomerAnswer.java +++ b/src/main/java/com/ots/project/exam/domain/ExamPaperQuestionCustomerAnswer.java @@ -1,110 +1,158 @@ 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 066444c..85dc50d 100644 --- a/src/main/java/com/ots/project/exam/domain/ExamUser.java +++ b/src/main/java/com/ots/project/exam/domain/ExamUser.java @@ -1,28 +1,50 @@ 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 0b926dc..903e2e7 100644 --- a/src/main/java/com/ots/project/exam/domain/NumberOfUsersByCompany.java +++ b/src/main/java/com/ots/project/exam/domain/NumberOfUsersByCompany.java @@ -1,21 +1,39 @@ 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 8060c17..aaed119 100644 --- a/src/main/java/com/ots/project/exam/domain/NumberOfUsersByPackage.java +++ b/src/main/java/com/ots/project/exam/domain/NumberOfUsersByPackage.java @@ -1,18 +1,37 @@ 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 3eccf53..93d7013 100644 --- a/src/main/java/com/ots/project/exam/domain/Question.java +++ b/src/main/java/com/ots/project/exam/domain/Question.java @@ -1,95 +1,138 @@ 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 26755ca..e224a82 100644 --- a/src/main/java/com/ots/project/exam/domain/Subject.java +++ b/src/main/java/com/ots/project/exam/domain/Subject.java @@ -1,46 +1,67 @@ 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 c45a177..d449279 100644 --- a/src/main/java/com/ots/project/exam/domain/SysUserExtend.java +++ b/src/main/java/com/ots/project/exam/domain/SysUserExtend.java @@ -1,69 +1,134 @@ 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; @@ -71,188 +136,252 @@ 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 3e2976c..3561a6c 100644 --- a/src/main/java/com/ots/project/exam/domain/SysUserPaper.java +++ b/src/main/java/com/ots/project/exam/domain/SysUserPaper.java @@ -1,26 +1,52 @@ 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 6f4c8e8..ae0cab8 100644 --- a/src/main/java/com/ots/project/exam/domain/TExamLevel.java +++ b/src/main/java/com/ots/project/exam/domain/TExamLevel.java @@ -1,33 +1,51 @@ 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 5603a34..68babc7 100644 --- a/src/main/java/com/ots/project/exam/domain/TExamPaper.java +++ b/src/main/java/com/ots/project/exam/domain/TExamPaper.java @@ -1,4 +1,5 @@ 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; @@ -6,75 +7,146 @@ 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 0bef9a7..7a1920a 100644 --- a/src/main/java/com/ots/project/exam/domain/TExamPaperQuestion.java +++ b/src/main/java/com/ots/project/exam/domain/TExamPaperQuestion.java @@ -1,17 +1,27 @@ 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/TExamReport.java b/src/main/java/com/ots/project/exam/domain/TExamReport.java index be7520a..3e415d2 100644 --- a/src/main/java/com/ots/project/exam/domain/TExamReport.java +++ b/src/main/java/com/ots/project/exam/domain/TExamReport.java @@ -1,4 +1,5 @@ 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; @@ -6,91 +7,187 @@ 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_report + * + * @author ots + * @date 2019-12-26 + */ @Getter @Setter public class TExamReport extends BaseEntity { private static final long serialVersionUID = 1L; - + + /** + * 鎶ュ憡缂栫爜 + */ private Long id; - + + /** + * 浜у搧缂栫爜 + */ @Excel(name = "浜у搧缂栫爜") private Long productId; - + + /** + * 娴嬭瘯鍖呯紪鐮� + */ private Long testId; - + + /** + * 娴嬭瘯鍖呭悕绉� + */ private String testName; - + + /** + * 浜у搧鍚嶇О + */ @Excel(name = "浜у搧鍚嶇О") private String productName; - + + /** + * 鎶ュ憡鍐呭json涓� + */ private String content; - + + /** + * tokenid + */ @Excel(name = "tokenid") private String tokenId; - + + /** + * 1锛氭湁鏁堬紝0锛氭棤鏁� + */ private String states; + private String lastContent; + private String choice; + private Integer doTime; + private Integer questionCount; + private Integer memberId; + private String memberName; + private Long userId; + private String userName; + private Long parentId; + private String questionOrder; - + + /** + * 璇︾粏鎶ュ憡涓嬭浇鐘舵�� 0:涓嶅厑璁镐笅杞斤紝1锛氬厑璁镐笅杞斤紝2锛氫笅杞藉鏍镐腑 + */ private Integer downloadTimes; - + + // 瀵瑰簲鏋氫妇绫诲瀷鐨凾estMemberStatusEnum private Integer verifyStatus; - + + //鏄惁宸茬粡瀹屾垚 private Integer finish; - + + // 璇勬祴鎶ュ憡鐨勫瓧娈� private String questionReport; - + + // 棰樼洰绫诲瀷锛岃蛋妯$増锛孞OB锛孧AQ锛孲AQ private String questionTemplateId; - + + // 淇濈暀璋冪敤鎺ュ彛杩斿洖鐨勬暟鎹� private String interfaceContent; - + + // 鏈�鍚庝竴娆$瓟棰樼殑璇█绫诲瀷 private String langType; - + + /** + * 娴嬭瘯鍖呯殑鐘舵�� + */ private String status; - + + /** + * 鎶ュ憡鍦板潃 + */ private String reportAddress; - + + /** + * 鎶ュ憡绫诲瀷 + */ private String reportTemplateId; - + + /** + * 鍙戦�乭r鐨勭姸鎬� + */ private Integer sendHrStatus; - + + /** + * 鍙戦�佹祴璇曡�呯殑鐘舵�� + */ private Integer sendTesterStatus; - + + /** + * 娴嬭瘯浜哄憳鐨勯偖绠� + */ private String memberEmail; - + + /** + * Hr鐨勯偖绠� + */ private String testEmail; + private Integer autoSendReport; + private String hrEmail; + private String mailContent; + private String remark; + private String optionOrder; + private String remainPartTime; + private String ids; + private String reportAddressNew; + private String memberDept; + private String hrReportEmail; + private String hrTitle; + private List sendHrStatusList; - + + /** + * 鐢ㄦ埛鍒楄〃 + */ private List<Long> userIds; - + + /** + * hr鍙戦�佹椂闂� + */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date hrSendTime; - + + /** + * Hr鏇存柊鏃堕棿 + */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date hrUpdateTime; + private Integer retriesTime; + + + @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) 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 a84ea1c..3a1d337 100644 --- a/src/main/java/com/ots/project/exam/domain/TSubject.java +++ b/src/main/java/com/ots/project/exam/domain/TSubject.java @@ -1,4 +1,5 @@ package com.ots.project.exam.domain; + import com.ots.framework.aspectj.lang.annotation.Excel; import com.ots.framework.web.domain.BaseEntity; import lombok.Getter; @@ -6,27 +7,57 @@ 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 f48b5b1..1c84e7d 100644 --- a/src/main/java/com/ots/project/exam/domain/TTextContent.java +++ b/src/main/java/com/ots/project/exam/domain/TTextContent.java @@ -1,4 +1,5 @@ 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; @@ -6,27 +7,50 @@ 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) @@ -35,10 +59,12 @@ .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 90d44ff..a710a92 100644 --- a/src/main/java/com/ots/project/exam/domain/TTextContentAndQuestion.java +++ b/src/main/java/com/ots/project/exam/domain/TTextContentAndQuestion.java @@ -1,32 +1,54 @@ 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 55cf688..d8168f4 100644 --- a/src/main/java/com/ots/project/exam/domain/TaskExamCustomerAnswer.java +++ b/src/main/java/com/ots/project/exam/domain/TaskExamCustomerAnswer.java @@ -1,40 +1,58 @@ 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 8895699..7d7287e 100644 --- a/src/main/java/com/ots/project/exam/domain/TextContent.java +++ b/src/main/java/com/ots/project/exam/domain/TextContent.java @@ -1,32 +1,47 @@ 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 1c4f383..a19ba5c 100644 --- a/src/main/java/com/ots/project/exam/domain/UserEventLog.java +++ b/src/main/java/com/ots/project/exam/domain/UserEventLog.java @@ -1,55 +1,80 @@ 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 b4ba393..12c7360 100644 --- a/src/main/java/com/ots/project/exam/domain/WebContext.java +++ b/src/main/java/com/ots/project/exam/domain/WebContext.java @@ -1,13 +1,18 @@ 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 4177d14..80a8871 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,9 +1,12 @@ 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 68175aa..c389a06 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,9 +1,13 @@ 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 a941bcc..ac85ab0 100644 --- a/src/main/java/com/ots/project/exam/dto/BaseExamPage.java +++ b/src/main/java/com/ots/project/exam/dto/BaseExamPage.java @@ -1,10 +1,16 @@ 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 6478dcc..d18c7da 100644 --- a/src/main/java/com/ots/project/exam/dto/BasePage.java +++ b/src/main/java/com/ots/project/exam/dto/BasePage.java @@ -1,8 +1,15 @@ 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 d8f1256..266cdf2 100644 --- a/src/main/java/com/ots/project/exam/dto/DataReport.java +++ b/src/main/java/com/ots/project/exam/dto/DataReport.java @@ -1,6 +1,8 @@ package com.ots.project.exam.dto; + import lombok.Getter; import lombok.Setter; + @Setter @Getter public class DataReport { @@ -9,7 +11,9 @@ 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 4e368e8..b8ca68e 100644 --- a/src/main/java/com/ots/project/exam/dto/DataReportHead.java +++ b/src/main/java/com/ots/project/exam/dto/DataReportHead.java @@ -1,22 +1,27 @@ 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 d71a180..d5701d9 100644 --- a/src/main/java/com/ots/project/exam/dto/DemographyDataReportDto.java +++ b/src/main/java/com/ots/project/exam/dto/DemographyDataReportDto.java @@ -1,6 +1,8 @@ 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 4ae707e..2a8f7dc 100644 --- a/src/main/java/com/ots/project/exam/dto/DemographyDto.java +++ b/src/main/java/com/ots/project/exam/dto/DemographyDto.java @@ -1,9 +1,12 @@ 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 c9957ca..369bacd 100644 --- a/src/main/java/com/ots/project/exam/dto/DictItemDto.java +++ b/src/main/java/com/ots/project/exam/dto/DictItemDto.java @@ -1,11 +1,18 @@ 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 25c111e..31038bf 100644 --- a/src/main/java/com/ots/project/exam/dto/ExamLogin.java +++ b/src/main/java/com/ots/project/exam/dto/ExamLogin.java @@ -1,5 +1,8 @@ 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 19588b7..b26e3d5 100644 --- a/src/main/java/com/ots/project/exam/dto/ExamPaperAnswerInfo.java +++ b/src/main/java/com/ots/project/exam/dto/ExamPaperAnswerInfo.java @@ -1,10 +1,13 @@ 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 d2e7d13..cde2323 100644 --- a/src/main/java/com/ots/project/exam/dto/ExamPaperAnswerUpdate.java +++ b/src/main/java/com/ots/project/exam/dto/ExamPaperAnswerUpdate.java @@ -1,5 +1,7 @@ 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 93a9997..a29dac6 100644 --- a/src/main/java/com/ots/project/exam/dto/ExamPaperQuestion.java +++ b/src/main/java/com/ots/project/exam/dto/ExamPaperQuestion.java @@ -1,10 +1,13 @@ 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 424828d..d129fb5 100644 --- a/src/main/java/com/ots/project/exam/dto/ExamPaperQuestionItemObject.java +++ b/src/main/java/com/ots/project/exam/dto/ExamPaperQuestionItemObject.java @@ -1,6 +1,8 @@ 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 2823a8e..d17ef12 100644 --- a/src/main/java/com/ots/project/exam/dto/ExamPaperTitleItem.java +++ b/src/main/java/com/ots/project/exam/dto/ExamPaperTitleItem.java @@ -1,21 +1,31 @@ package com.ots.project.exam.dto; + + import lombok.Getter; import lombok.Setter; -import java.util.List; +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 5088977..8e5b43f 100644 --- a/src/main/java/com/ots/project/exam/dto/ExamPaperTitleItemObject.java +++ b/src/main/java/com/ots/project/exam/dto/ExamPaperTitleItemObject.java @@ -1,16 +1,29 @@ 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 551750f..56997f9 100644 --- a/src/main/java/com/ots/project/exam/dto/InterfaceContent.java +++ b/src/main/java/com/ots/project/exam/dto/InterfaceContent.java @@ -1,7 +1,10 @@ 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 66843ab..f324fc4 100644 --- a/src/main/java/com/ots/project/exam/dto/JAQPersons.java +++ b/src/main/java/com/ots/project/exam/dto/JAQPersons.java @@ -1,10 +1,14 @@ 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 7a972fd..77ae6ec 100644 --- a/src/main/java/com/ots/project/exam/dto/KeyValue.java +++ b/src/main/java/com/ots/project/exam/dto/KeyValue.java @@ -1,7 +1,11 @@ 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 4ac6ecb..9b57e2b 100644 --- a/src/main/java/com/ots/project/exam/dto/Member.java +++ b/src/main/java/com/ots/project/exam/dto/Member.java @@ -1,11 +1,16 @@ 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 6a975b3..63a1195 100644 --- a/src/main/java/com/ots/project/exam/dto/PaperFilter.java +++ b/src/main/java/com/ots/project/exam/dto/PaperFilter.java @@ -1,6 +1,9 @@ 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 e9654a1..35fdbe9 100644 --- a/src/main/java/com/ots/project/exam/dto/PaperInfo.java +++ b/src/main/java/com/ots/project/exam/dto/PaperInfo.java @@ -1,6 +1,9 @@ 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 648d5a5..ab53829 100644 --- a/src/main/java/com/ots/project/exam/dto/ParamDefine.java +++ b/src/main/java/com/ots/project/exam/dto/ParamDefine.java @@ -1,26 +1,55 @@ 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 3236253..8ad6965 100644 --- a/src/main/java/com/ots/project/exam/dto/ParamDefineDictData.java +++ b/src/main/java/com/ots/project/exam/dto/ParamDefineDictData.java @@ -1,15 +1,28 @@ 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 3c64c3e..67d232c 100644 --- a/src/main/java/com/ots/project/exam/dto/ParamsInfo.java +++ b/src/main/java/com/ots/project/exam/dto/ParamsInfo.java @@ -1,25 +1,46 @@ 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 410b186..df8a136 100644 --- a/src/main/java/com/ots/project/exam/dto/QuestionAnswer.java +++ b/src/main/java/com/ots/project/exam/dto/QuestionAnswer.java @@ -1,11 +1,15 @@ 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 66409e5..64b4b1a 100644 --- a/src/main/java/com/ots/project/exam/dto/QuestionContent.java +++ b/src/main/java/com/ots/project/exam/dto/QuestionContent.java @@ -1,10 +1,13 @@ 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 1e91ca2..610fe1f 100644 --- a/src/main/java/com/ots/project/exam/dto/QuestionObject.java +++ b/src/main/java/com/ots/project/exam/dto/QuestionObject.java @@ -1,12 +1,20 @@ 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 41c22b1..b538dc2 100644 --- a/src/main/java/com/ots/project/exam/dto/QuestionPart.java +++ b/src/main/java/com/ots/project/exam/dto/QuestionPart.java @@ -1,7 +1,10 @@ package com.ots.project.exam.dto; + import lombok.Getter; import lombok.Setter; import java.util.List; + + @Getter @Setter public class QuestionPart { @@ -9,8 +12,9 @@ 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 a5ed319..ef7185c 100644 --- a/src/main/java/com/ots/project/exam/dto/QuestionReport.java +++ b/src/main/java/com/ots/project/exam/dto/QuestionReport.java @@ -1,12 +1,16 @@ 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 8ed2ff2..fd80ef8 100644 --- a/src/main/java/com/ots/project/exam/dto/RelatedParty.java +++ b/src/main/java/com/ots/project/exam/dto/RelatedParty.java @@ -1,43 +1,101 @@ 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 daa0510..871c0fa 100644 --- a/src/main/java/com/ots/project/exam/dto/RestResponse.java +++ b/src/main/java/com/ots/project/exam/dto/RestResponse.java @@ -1,32 +1,51 @@ 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; @@ -38,29 +57,37 @@ 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 474d1a2..ba158c5 100644 --- a/src/main/java/com/ots/project/exam/dto/SendTask.java +++ b/src/main/java/com/ots/project/exam/dto/SendTask.java @@ -1,24 +1,56 @@ 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 3a81ff4..188874f 100644 --- a/src/main/java/com/ots/project/exam/dto/SignalObject.java +++ b/src/main/java/com/ots/project/exam/dto/SignalObject.java @@ -1,6 +1,8 @@ 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 b781eb3..fc98c00 100644 --- a/src/main/java/com/ots/project/exam/dto/SubmitReport.java +++ b/src/main/java/com/ots/project/exam/dto/SubmitReport.java @@ -1,6 +1,8 @@ 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 308fda2..96ad006 100644 --- a/src/main/java/com/ots/project/exam/dto/TaskItemAnswerObject.java +++ b/src/main/java/com/ots/project/exam/dto/TaskItemAnswerObject.java @@ -1,12 +1,17 @@ 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 cc62b64..46d2a86 100644 --- a/src/main/java/com/ots/project/exam/dto/TaskItemObject.java +++ b/src/main/java/com/ots/project/exam/dto/TaskItemObject.java @@ -1,5 +1,7 @@ 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 799ca80..8caa839 100644 --- a/src/main/java/com/ots/project/exam/listener/CalculateExamPaperAnswerCompleteEvent.java +++ b/src/main/java/com/ots/project/exam/listener/CalculateExamPaperAnswerCompleteEvent.java @@ -1,14 +1,24 @@ 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 a8169fd..11a5dcd 100644 --- a/src/main/java/com/ots/project/exam/listener/CalculateExamPaperAnswerListener.java +++ b/src/main/java/com/ots/project/exam/listener/CalculateExamPaperAnswerListener.java @@ -1,4 +1,5 @@ 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; @@ -15,28 +16,40 @@ 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); @@ -48,6 +61,7 @@ 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 7f3292e..87798e0 100644 --- a/src/main/java/com/ots/project/exam/listener/UserEvent.java +++ b/src/main/java/com/ots/project/exam/listener/UserEvent.java @@ -1,12 +1,17 @@ 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 a36303e..c06076c 100644 --- a/src/main/java/com/ots/project/exam/listener/UserLogListener.java +++ b/src/main/java/com/ots/project/exam/listener/UserLogListener.java @@ -1,15 +1,20 @@ 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 c1a1540..8a08fad 100644 --- a/src/main/java/com/ots/project/exam/mapper/BaseExamMapper.java +++ b/src/main/java/com/ots/project/exam/mapper/BaseExamMapper.java @@ -1,9 +1,16 @@ 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 1401d29..867ba3c 100644 --- a/src/main/java/com/ots/project/exam/mapper/BaseMapper.java +++ b/src/main/java/com/ots/project/exam/mapper/BaseMapper.java @@ -1,9 +1,16 @@ 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 4b4831f..50f9824 100644 --- a/src/main/java/com/ots/project/exam/mapper/EntDemographyInfoMapper.java +++ b/src/main/java/com/ots/project/exam/mapper/EntDemographyInfoMapper.java @@ -1,19 +1,63 @@ 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 d0d2052..690e42c 100644 --- a/src/main/java/com/ots/project/exam/mapper/EntDemographyParamMapper.java +++ b/src/main/java/com/ots/project/exam/mapper/EntDemographyParamMapper.java @@ -1,20 +1,64 @@ 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 7934ca7..859b9bd 100644 --- a/src/main/java/com/ots/project/exam/mapper/EntOperLogMapper.java +++ b/src/main/java/com/ots/project/exam/mapper/EntOperLogMapper.java @@ -1,18 +1,61 @@ 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 c1816d4..4c88e16 100644 --- a/src/main/java/com/ots/project/exam/mapper/EntTestMemberBackstageMapper.java +++ b/src/main/java/com/ots/project/exam/mapper/EntTestMemberBackstageMapper.java @@ -1,19 +1,61 @@ 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 d8d49b2..6009881 100644 --- a/src/main/java/com/ots/project/exam/mapper/EntTestMemberMapper.java +++ b/src/main/java/com/ots/project/exam/mapper/EntTestMemberMapper.java @@ -1,24 +1,75 @@ 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 4d5ba45..ee1013f 100644 --- a/src/main/java/com/ots/project/exam/mapper/EntTestPackageMapper.java +++ b/src/main/java/com/ots/project/exam/mapper/EntTestPackageMapper.java @@ -1,21 +1,67 @@ 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 2a63fa0..de990c1 100644 --- a/src/main/java/com/ots/project/exam/mapper/EntTestSendtaskMailMapper.java +++ b/src/main/java/com/ots/project/exam/mapper/EntTestSendtaskMailMapper.java @@ -1,18 +1,61 @@ 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 ccaff90..391b3e7 100644 --- a/src/main/java/com/ots/project/exam/mapper/EntTestSendtaskMapper.java +++ b/src/main/java/com/ots/project/exam/mapper/EntTestSendtaskMapper.java @@ -1,18 +1,61 @@ 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 bc50a07..a0c31ff 100644 --- a/src/main/java/com/ots/project/exam/mapper/ExamPaperAnswerMapper.java +++ b/src/main/java/com/ots/project/exam/mapper/ExamPaperAnswerMapper.java @@ -1,21 +1,35 @@ 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 f731e62..abd2a83 100644 --- a/src/main/java/com/ots/project/exam/mapper/ExamPaperMapper.java +++ b/src/main/java/com/ots/project/exam/mapper/ExamPaperMapper.java @@ -1,4 +1,5 @@ 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; @@ -8,22 +9,38 @@ 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 c8cc1c9..f5a0c6e 100644 --- a/src/main/java/com/ots/project/exam/mapper/ExamPaperQuestionCustomerAnswerMapper.java +++ b/src/main/java/com/ots/project/exam/mapper/ExamPaperQuestionCustomerAnswerMapper.java @@ -1,24 +1,39 @@ 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 dceadca..da694b7 100644 --- a/src/main/java/com/ots/project/exam/mapper/QuestionMapper.java +++ b/src/main/java/com/ots/project/exam/mapper/QuestionMapper.java @@ -1,21 +1,33 @@ 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 aef22c7..2f30256 100644 --- a/src/main/java/com/ots/project/exam/mapper/SubjectMapper.java +++ b/src/main/java/com/ots/project/exam/mapper/SubjectMapper.java @@ -1,17 +1,28 @@ 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 5ea5ae7..c2aff41 100644 --- a/src/main/java/com/ots/project/exam/mapper/SysUserExtendMapper.java +++ b/src/main/java/com/ots/project/exam/mapper/SysUserExtendMapper.java @@ -1,18 +1,61 @@ 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 402a7a8..aeddd7b 100644 --- a/src/main/java/com/ots/project/exam/mapper/SysUserPaperMapper.java +++ b/src/main/java/com/ots/project/exam/mapper/SysUserPaperMapper.java @@ -1,18 +1,61 @@ 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 db9427f..9cbe363 100644 --- a/src/main/java/com/ots/project/exam/mapper/TExamLevelMapper.java +++ b/src/main/java/com/ots/project/exam/mapper/TExamLevelMapper.java @@ -1,26 +1,75 @@ 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 a8dd18f..0581e03 100644 --- a/src/main/java/com/ots/project/exam/mapper/TExamPaperMapper.java +++ b/src/main/java/com/ots/project/exam/mapper/TExamPaperMapper.java @@ -1,23 +1,70 @@ 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 87b5c83..8e2f6f7 100644 --- a/src/main/java/com/ots/project/exam/mapper/TExamPaperQuestionMapper.java +++ b/src/main/java/com/ots/project/exam/mapper/TExamPaperQuestionMapper.java @@ -1,19 +1,61 @@ 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 eddc90d..1712e84 100644 --- a/src/main/java/com/ots/project/exam/mapper/TExamReportMapper.java +++ b/src/main/java/com/ots/project/exam/mapper/TExamReportMapper.java @@ -1,32 +1,94 @@ 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> 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 3bbfa1b..9bce59b 100644 --- a/src/main/java/com/ots/project/exam/mapper/TQuestionMapper.java +++ b/src/main/java/com/ots/project/exam/mapper/TQuestionMapper.java @@ -1,27 +1,78 @@ 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 fd64d6f..bdbcaa0 100644 --- a/src/main/java/com/ots/project/exam/mapper/TReportTemplateMapper.java +++ b/src/main/java/com/ots/project/exam/mapper/TReportTemplateMapper.java @@ -1,21 +1,65 @@ 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 eb6722d..fdf272d 100644 --- a/src/main/java/com/ots/project/exam/mapper/TSubjectMapper.java +++ b/src/main/java/com/ots/project/exam/mapper/TSubjectMapper.java @@ -1,21 +1,68 @@ 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 5536664..420bdb1 100644 --- a/src/main/java/com/ots/project/exam/mapper/TTextContentMapper.java +++ b/src/main/java/com/ots/project/exam/mapper/TTextContentMapper.java @@ -1,23 +1,70 @@ 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 34a07ec..65dbbec 100644 --- a/src/main/java/com/ots/project/exam/mapper/TaskExamCustomerAnswerMapper.java +++ b/src/main/java/com/ots/project/exam/mapper/TaskExamCustomerAnswerMapper.java @@ -1,16 +1,26 @@ 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 69c8218..98992ae 100644 --- a/src/main/java/com/ots/project/exam/mapper/UserEventLogMapper.java +++ b/src/main/java/com/ots/project/exam/mapper/UserEventLogMapper.java @@ -1,20 +1,33 @@ 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 33b37ef..ffb8b2b 100644 --- a/src/main/java/com/ots/project/exam/restcontroller/DashboardController.java +++ b/src/main/java/com/ots/project/exam/restcontroller/DashboardController.java @@ -1,4 +1,5 @@ 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; @@ -15,28 +16,35 @@ 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); @@ -47,6 +55,7 @@ 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 68f7f6b..c31249c 100644 --- a/src/main/java/com/ots/project/exam/restcontroller/ExamPaperAnswerController.java +++ b/src/main/java/com/ots/project/exam/restcontroller/ExamPaperAnswerController.java @@ -1,4 +1,6 @@ package com.ots.project.exam.restcontroller; + + import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.ots.common.enums.LangTypeEnum; @@ -26,16 +28,20 @@ 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 @@ -51,41 +57,53 @@ @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); @@ -98,21 +116,25 @@ 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()); @@ -129,6 +151,7 @@ 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<>()); @@ -136,10 +159,13 @@ 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; @@ -150,7 +176,8 @@ } } } - + + // 娴嬭瘯鍖呭悕绉般�佷骇鍝佸悕绉般�佹祴璇曞紑濮嬫椂闂淬�佹祴璇曞畬鎴愭椂闂寸殑 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())); @@ -160,7 +187,8 @@ 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 -> { @@ -168,7 +196,8 @@ }); return choiceMap; } - + + // 涓婁竴娆¢�変粈涔� private Map<String, String> getLastChioce(@RequestBody @Valid ExamPaperSubmitVM examPaperSubmitVM) { Map<String, String> lastContentMap = new LinkedHashMap<String, String>(); examPaperSubmitVM.getAnswerItems().stream().forEach(it -> { @@ -176,34 +205,40 @@ }); 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); @@ -213,26 +248,28 @@ 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())); @@ -242,12 +279,13 @@ } 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 -> { @@ -259,10 +297,11 @@ } 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; @@ -272,22 +311,23 @@ 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()); @@ -297,99 +337,124 @@ 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); @@ -397,9 +462,10 @@ submitReport.setSignalObject(signalObject); } } - + + // 鑷姩鍙戦�佺姸鎬佹姤鍛婇渶瑕佸鐞嗙殑鍐呭 private void setAutoSendReportStatus(RelatedParty relatedParty, TExamReport tExamReport) { - + // 0锛氬緟鍙戦�侊紱1锛氬凡鍙戦�侊紱2锛氫笉鍙戦�� if (relatedParty.isAutoSendReport()) { tExamReport.setSendHrStatus(send.getCode()); tExamReport.setSendTesterStatus(send.getCode()); @@ -409,7 +475,8 @@ 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(); @@ -428,7 +495,8 @@ } 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 1e71480..98d7ef2 100644 --- a/src/main/java/com/ots/project/exam/restcontroller/ExamPaperController.java +++ b/src/main/java/com/ots/project/exam/restcontroller/ExamPaperController.java @@ -1,4 +1,6 @@ package com.ots.project.exam.restcontroller; + + import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSON; import com.ots.common.constant.Constants; @@ -35,6 +37,7 @@ 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; @@ -43,26 +46,35 @@ 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 { @@ -71,26 +83,33 @@ 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(); @@ -99,7 +118,8 @@ examResultRequestVM.getExamItemOrderAndContentList().add(examItemOrderAndContent); }); } - + + // 杩斿洖缁欏墠鍙版寚瀵艰 getSignalObject(examResultRequestVM, tExamPaper, tExamReportResult); return RestResponse.ok(examResultRequestVM); } catch (Exception e) { @@ -107,6 +127,7 @@ 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)) { @@ -117,18 +138,20 @@ 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())); @@ -141,7 +164,8 @@ } } } - + + // 璁板綍鐧婚檰鏃ュ織 @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 a668aa1..31aa137 100644 --- a/src/main/java/com/ots/project/exam/restcontroller/ExamUserController.java +++ b/src/main/java/com/ots/project/exam/restcontroller/ExamUserController.java @@ -1,4 +1,6 @@ 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; @@ -9,23 +11,31 @@ 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 9693fd3..20ecd67 100644 --- a/src/main/java/com/ots/project/exam/restcontroller/MemberController.java +++ b/src/main/java/com/ots/project/exam/restcontroller/MemberController.java @@ -1,26 +1,55 @@ 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 0caaa1e..14ae59f 100644 --- a/src/main/java/com/ots/project/exam/restcontroller/MemberControllerImpl.java +++ b/src/main/java/com/ots/project/exam/restcontroller/MemberControllerImpl.java @@ -1,4 +1,5 @@ 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; @@ -12,40 +13,50 @@ 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")) { @@ -53,6 +64,7 @@ } } } + @Override public RestResponse queryDemographyParamInfo(String token) { try { @@ -62,6 +74,7 @@ return RestResponse.fail(ex); } } + @Override public RestResponse saveDemographyParamInfo(@Valid List<ParamsInfo> infos, String token, String langType) { try { @@ -71,6 +84,7 @@ return RestResponse.fail(ex); } } + @Override public RestResponse memberAuth(String token) { try { @@ -79,23 +93,25 @@ 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 ee70d52..fd7be4c 100644 --- a/src/main/java/com/ots/project/exam/service/BaseService.java +++ b/src/main/java/com/ots/project/exam/service/BaseService.java @@ -1,16 +1,56 @@ 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 952e610..be4b521 100644 --- a/src/main/java/com/ots/project/exam/service/CountCalculateService.java +++ b/src/main/java/com/ots/project/exam/service/CountCalculateService.java @@ -1,8 +1,20 @@ 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 d9b3365..e011b72 100644 --- a/src/main/java/com/ots/project/exam/service/ExamPaperAnswerService.java +++ b/src/main/java/com/ots/project/exam/service/ExamPaperAnswerService.java @@ -1,20 +1,53 @@ 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 5694e85..e11544c 100644 --- a/src/main/java/com/ots/project/exam/service/ExamPaperQuestionCustomerAnswerService.java +++ b/src/main/java/com/ots/project/exam/service/ExamPaperQuestionCustomerAnswerService.java @@ -1,18 +1,38 @@ 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 945dab3..18b8817 100644 --- a/src/main/java/com/ots/project/exam/service/ExamPaperService.java +++ b/src/main/java/com/ots/project/exam/service/ExamPaperService.java @@ -1,4 +1,6 @@ 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; @@ -7,14 +9,24 @@ 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 4d7be31..4534ac8 100644 --- a/src/main/java/com/ots/project/exam/service/IBaseExamService.java +++ b/src/main/java/com/ots/project/exam/service/IBaseExamService.java @@ -1,16 +1,56 @@ 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 bf31cb0..405945c 100644 --- a/src/main/java/com/ots/project/exam/service/IEntDemographyInfoService.java +++ b/src/main/java/com/ots/project/exam/service/IEntDemographyInfoService.java @@ -1,19 +1,63 @@ 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 6990a03..a8b74a2 100644 --- a/src/main/java/com/ots/project/exam/service/IEntDemographyParamService.java +++ b/src/main/java/com/ots/project/exam/service/IEntDemographyParamService.java @@ -1,20 +1,64 @@ 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 8626133..121d214 100644 --- a/src/main/java/com/ots/project/exam/service/IEntOperLogService.java +++ b/src/main/java/com/ots/project/exam/service/IEntOperLogService.java @@ -1,21 +1,70 @@ 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 4d2efdc..f74cfbd 100644 --- a/src/main/java/com/ots/project/exam/service/IEntTestDetailService.java +++ b/src/main/java/com/ots/project/exam/service/IEntTestDetailService.java @@ -1,5 +1,11 @@ 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 e04438d..e304200 100644 --- a/src/main/java/com/ots/project/exam/service/IEntTestMemberBackstageService.java +++ b/src/main/java/com/ots/project/exam/service/IEntTestMemberBackstageService.java @@ -1,18 +1,61 @@ 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 da70b4f..97fb96a 100644 --- a/src/main/java/com/ots/project/exam/service/IEntTestMemberService.java +++ b/src/main/java/com/ots/project/exam/service/IEntTestMemberService.java @@ -1,32 +1,109 @@ 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 7d0308f..e104bba 100644 --- a/src/main/java/com/ots/project/exam/service/IEntTestPackageService.java +++ b/src/main/java/com/ots/project/exam/service/IEntTestPackageService.java @@ -1,26 +1,88 @@ 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 c0dcb14..ef1fbfc 100644 --- a/src/main/java/com/ots/project/exam/service/IEntTestSendtaskMailService.java +++ b/src/main/java/com/ots/project/exam/service/IEntTestSendtaskMailService.java @@ -1,19 +1,61 @@ 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 796b65e..c3226e3 100644 --- a/src/main/java/com/ots/project/exam/service/IEntTestSendtaskService.java +++ b/src/main/java/com/ots/project/exam/service/IEntTestSendtaskService.java @@ -1,20 +1,64 @@ 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 8e722d0..44174b3 100644 --- a/src/main/java/com/ots/project/exam/service/IExamPaperService.java +++ b/src/main/java/com/ots/project/exam/service/IExamPaperService.java @@ -1,4 +1,6 @@ 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; @@ -8,15 +10,26 @@ 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 0b9e22a..dcb1b67 100644 --- a/src/main/java/com/ots/project/exam/service/ISysUserExtendService.java +++ b/src/main/java/com/ots/project/exam/service/ISysUserExtendService.java @@ -1,22 +1,72 @@ 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 d0f9e8b..1c6a8cb 100644 --- a/src/main/java/com/ots/project/exam/service/ISysUserPaperService.java +++ b/src/main/java/com/ots/project/exam/service/ISysUserPaperService.java @@ -1,18 +1,61 @@ 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 cd3a9ee..c699062 100644 --- a/src/main/java/com/ots/project/exam/service/ITExamLevelService.java +++ b/src/main/java/com/ots/project/exam/service/ITExamLevelService.java @@ -1,25 +1,72 @@ 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 f929947..7f08c1c 100644 --- a/src/main/java/com/ots/project/exam/service/ITExamPaperService.java +++ b/src/main/java/com/ots/project/exam/service/ITExamPaperService.java @@ -1,36 +1,98 @@ 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 e310940..9ba7470 100644 --- a/src/main/java/com/ots/project/exam/service/ITExamReportService.java +++ b/src/main/java/com/ots/project/exam/service/ITExamReportService.java @@ -1,53 +1,133 @@ 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> 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 27c8874..364b295 100644 --- a/src/main/java/com/ots/project/exam/service/ITQuestionService.java +++ b/src/main/java/com/ots/project/exam/service/ITQuestionService.java @@ -1,28 +1,87 @@ 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 215a7fa..4731e48 100644 --- a/src/main/java/com/ots/project/exam/service/ITReportTemplateService.java +++ b/src/main/java/com/ots/project/exam/service/ITReportTemplateService.java @@ -1,26 +1,84 @@ 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 07138cc..35fd4c6 100644 --- a/src/main/java/com/ots/project/exam/service/ITSubjectService.java +++ b/src/main/java/com/ots/project/exam/service/ITSubjectService.java @@ -1,22 +1,72 @@ 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 23b82d8..9406dc3 100644 --- a/src/main/java/com/ots/project/exam/service/ITTextContentService.java +++ b/src/main/java/com/ots/project/exam/service/ITTextContentService.java @@ -1,27 +1,94 @@ 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 00c1c1d..8c8c5e7 100644 --- a/src/main/java/com/ots/project/exam/service/MemberService.java +++ b/src/main/java/com/ots/project/exam/service/MemberService.java @@ -1,19 +1,46 @@ 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 f6e873d..bf7dfff 100644 --- a/src/main/java/com/ots/project/exam/service/QuestionService.java +++ b/src/main/java/com/ots/project/exam/service/QuestionService.java @@ -1,15 +1,25 @@ 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 6f18e9b..4221ec1 100644 --- a/src/main/java/com/ots/project/exam/service/ReportCalculationServices.java +++ b/src/main/java/com/ots/project/exam/service/ReportCalculationServices.java @@ -1,7 +1,17 @@ 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 4b77fa1..8d7f0e5 100644 --- a/src/main/java/com/ots/project/exam/service/SubjectService.java +++ b/src/main/java/com/ots/project/exam/service/SubjectService.java @@ -1,11 +1,18 @@ 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 2783624..740d4f8 100644 --- a/src/main/java/com/ots/project/exam/service/TaskExamCustomerAnswerService.java +++ b/src/main/java/com/ots/project/exam/service/TaskExamCustomerAnswerService.java @@ -1,13 +1,21 @@ 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 7e2310b..ad674b7 100644 --- a/src/main/java/com/ots/project/exam/service/UserEventLogService.java +++ b/src/main/java/com/ots/project/exam/service/UserEventLogService.java @@ -1,10 +1,16 @@ 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 1105240..29a792b 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,30 +1,39 @@ 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 514f96f..60e4277 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,30 +1,39 @@ 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 e52b8cd..5250508 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,4 +1,5 @@ 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; @@ -7,23 +8,29 @@ 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; +/** + * 娆℃暟璁$畻缁勪欢 + */ @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; @@ -35,15 +42,17 @@ 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); @@ -54,7 +63,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(); @@ -80,12 +89,14 @@ }); 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()); 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 02df770..777b6ad 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,4 +1,5 @@ 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; @@ -6,44 +7,88 @@ 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 80e093a..a22da3d 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,4 +1,5 @@ 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; @@ -8,36 +9,70 @@ 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())) { @@ -46,12 +81,24 @@ 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 8be1ff6..6cab921 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,4 +1,5 @@ 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; @@ -7,44 +8,88 @@ 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 16aa8a0..6ca61ab 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,8 +1,16 @@ 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 0c336fa..77794f2 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,4 +1,5 @@ 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; @@ -6,40 +7,83 @@ 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 e6014b0..7c59115 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,4 +1,5 @@ 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; @@ -19,40 +20,65 @@ 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<>(); @@ -61,8 +87,10 @@ 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); @@ -78,11 +106,18 @@ } return entTestMembers; } + @Override public List<EntTestMember> selectEntTestMemberList(Map params) { return entTestMemberMapper.selectEntTestMemberListByMap(params); } - + + /** + * 鏂板娴嬭瘎浜哄憳鍚嶅崟锛屽苟鍑忓幓鍙敤娆℃暟 + * + * @param entTestMember 娴嬭瘎浜哄憳鍚嶅崟 + * @return 缁撴灉 + */ @Override @Transactional public int insertEntTestMember(EntTestMember entTestMember) { @@ -92,48 +127,78 @@ 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); @@ -148,20 +213,26 @@ 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); @@ -171,9 +242,11 @@ } 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 b2e0343..0c0e945 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,4 +1,5 @@ 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; @@ -9,28 +10,50 @@ 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); @@ -46,7 +69,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); @@ -56,36 +79,63 @@ }); 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()) { @@ -100,9 +150,11 @@ } 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 7439099..fce858b 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,4 +1,5 @@ package com.ots.project.exam.service.impl; + import java.util.List; import com.ots.common.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -8,44 +9,86 @@ 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 fef244f..bdea33f 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,4 +1,5 @@ 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; @@ -15,56 +16,104 @@ 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(); @@ -90,16 +139,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 de8fd52..2e84856 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,4 +1,5 @@ package com.ots.project.exam.service.impl; + import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.ots.common.enums.QuestionTypeEnum; @@ -26,15 +27,18 @@ 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 @@ -43,6 +47,7 @@ private ITTextContentService textContentService; @Autowired private TQuestionMapper questionMapper; + @Override public ExamPaperAnswerInfo calculateExamPaperAnswer(ExamPaperSubmitVM examPaperSubmitVM, ExamUser user) { ExamPaperAnswerInfo examPaperAnswerInfo = new ExamPaperAnswerInfo(); @@ -52,85 +57,103 @@ 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) { @@ -141,15 +164,17 @@ } 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 ->{ @@ -157,6 +182,7 @@ }); 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))) { @@ -166,13 +192,24 @@ 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()); @@ -185,7 +222,14 @@ } 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) { @@ -212,47 +256,60 @@ 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 b871e0b..80d5ea2 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,4 +1,5 @@ package com.ots.project.exam.service.impl; + import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.ots.common.enums.QuestionTypeEnum; @@ -16,35 +17,46 @@ 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(); @@ -57,10 +69,12 @@ setSpecialToVM(examPaperSubmitItemVM, qa); return examPaperSubmitItemVM; } + @Override public Integer selectAllCount() { return examPaperQuestionCustomerAnswerMapper.selectAllCount(); } + @Override public List<Integer> selectMothCount() { Date startTime = DateTimeUtil.getMonthStartDay(); @@ -72,10 +86,12 @@ 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 9030e1a..52264c2 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,4 +1,6 @@ package com.ots.project.exam.service.impl; + + import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSON; import com.github.pagehelper.PageInfo; @@ -36,6 +38,7 @@ 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; @@ -44,68 +47,93 @@ 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()); @@ -118,13 +146,15 @@ 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; @@ -135,35 +165,41 @@ } } } - + + // 瑙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()); @@ -180,7 +216,8 @@ 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())); @@ -195,37 +232,42 @@ } } } - + + // 缈昏瘧鍒嗘 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); @@ -235,35 +277,41 @@ } List<QuestionEditRequestVM> questionItemsNew = new ArrayList<>(); for (int i = 0; i < intList.size(); i++) { - questionItemsNew.add(questionItems.get(intList.get(i))); + questionItemsNew.add(questionItems.get(intList.get(i)));// 鍙栧埌搴曟槸閭d竴棰� } - + + // 閲嶆柊鎺掑簭,璁剧疆questionReport缁欏墠绔� for (int i = 0; i < questionItemsNew.size(); i++) { - questionItemsNew.get(i).setItemOrder(i+1); - + questionItemsNew.get(i).setItemOrder(i+1);// itemOrder鏄悗鍙扮粰鐨勫簭鍙� + // 璁剧疆questionReport缁欏墠绔� 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); @@ -272,51 +320,57 @@ 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())) { @@ -329,47 +383,56 @@ 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); - + questionEditRequestVM.setItemOrder(i + 1);// itemOrder鏄悗鍙扮粰鐨勫簭鍙� + // 璁剧疆questionReport缁欏墠绔� 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()); @@ -381,16 +444,18 @@ 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); @@ -398,22 +463,25 @@ } 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++) { @@ -422,15 +490,16 @@ 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<>(); @@ -439,26 +508,33 @@ 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<>(); @@ -475,21 +551,25 @@ 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); @@ -497,19 +577,25 @@ 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; @@ -517,12 +603,13 @@ 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); @@ -536,7 +623,8 @@ } } } - + + // 璁剧疆questionReport缁欏墠绔�,job, 浜烘牸閮藉彲浠ョ敤 private void setQuestionReportForVM(List<TExamReport> tExamReportList, QuestionEditRequestVM editRequestVM) { for (TExamReport tExamReport : tExamReportList) { List<QuestionReport> questionReportList = JsonUtil.toJsonListObject(tExamReport.getQuestionReport(), QuestionReport.class); @@ -550,34 +638,43 @@ } } } + @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 33cd92c..a61960d 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,4 +1,5 @@ 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; @@ -27,48 +28,63 @@ 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; @@ -95,9 +111,10 @@ 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); @@ -108,6 +125,7 @@ TEST_MEMBERINFO_EMPTY.assertNotEmpty(entDemographyInfos); return entDemographyInfos; } + @Override @Transactional public void saveDemographyParamInfo(String token, List<ParamsInfo> infos, String langType) { @@ -123,6 +141,7 @@ } }); } + @Override public RelatedParty queryProdidByToken(String token) { RelatedParty party = new RelatedParty(); @@ -159,6 +178,7 @@ } 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 84395b3..b16b200 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,10 +1,12 @@ 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; @@ -13,28 +15,36 @@ 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)) { @@ -55,15 +65,22 @@ } } } - + + /** + * 鍒ゆ柇鏄惁鏂紑杩炴帴锛屾柇寮�杩斿洖true,娌℃湁杩斿洖false + * @param socket + * @return + */ public Boolean isServerClose(Socket socket){ try{ - socket.sendUrgentData(0xFF); + socket.sendUrgentData(0xFF);//鍙戦��1涓瓧鑺傜殑绱ф�ユ暟鎹紝榛樿鎯呭喌涓嬶紝鏈嶅姟鍣ㄧ娌℃湁寮�鍚揣鎬ユ暟鎹鐞嗭紝涓嶅奖鍝嶆甯搁�氫俊 return false; }catch(Exception se){ return true; } } + + @Override public ReportAPIResult stageCalculation(Object request) { if (isServerClose(socket)) { @@ -87,10 +104,11 @@ } return reportAPIResult; } + private ReportAPIResult getReportAPIResult(Object request) throws IOException { ReportAPIResult reportAPIResult; socketOut.println(JSON.toJSONString(request)); - socketOut.flush(); + socketOut.flush();//璧跺揩鍒锋柊浣縎erver鏀跺埌锛屼篃鍙互鎹㈡垚socketOut.println(readline, ture) 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 64cb3c3..69c444c 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,4 +1,5 @@ package com.ots.project.exam.service.impl; + import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.ots.project.exam.domain.Subject; @@ -9,43 +10,54 @@ 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 686c8d1..90bf821 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,4 +1,5 @@ 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; @@ -17,15 +18,24 @@ 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 @@ -36,19 +46,38 @@ 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 { @@ -67,6 +96,7 @@ e.printStackTrace(); } } + if (StringUtils.isNotBlank(sysUserExtend.getLoginName())) { User user = new User(); user.setLoginName(sysUserExtend.getLoginName()); @@ -100,7 +130,13 @@ } return sysUserExtendMapper.insertSysUserExtend(sysUserExtend); } - + + /** + * 淇敼鐢ㄦ埛淇℃伅鎵╁睍 + * + * @param sysUserExtend 鐢ㄦ埛淇℃伅鎵╁睍 + * @return 缁撴灉 + */ @Override public int updateSysUserExtend(SysUserExtend sysUserExtend) { MultipartFile businessLicenseFile = sysUserExtend.getBusinessLicenseFile(); @@ -140,6 +176,7 @@ 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())) { @@ -147,8 +184,9 @@ 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()); @@ -158,24 +196,39 @@ 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) { @@ -186,6 +239,7 @@ 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 521f4cd..c5e444f 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,42 +1,86 @@ 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 623f0cb..fd0c6db 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,4 +1,5 @@ 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,40 +10,64 @@ 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"); @@ -66,11 +91,13 @@ 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<>(); @@ -78,17 +105,25 @@ 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()); @@ -98,7 +133,13 @@ } return tExamLevelMapper.insertTExamLevel(tExamLevel); } - + + /** + * 淇敼闂嵎绫诲瀷 + * + * @param tExamLevel 闂嵎绫诲瀷 + * @return 缁撴灉 + */ @Override public int updateTExamLevel(TExamLevel tExamLevel) { tExamLevel.setUpdateTime(DateUtils.getNowDate()); @@ -108,12 +149,24 @@ } 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 f3a50b1..7a54b0a 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,4 +1,5 @@ package com.ots.project.exam.service.impl; + import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -38,62 +39,103 @@ 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; +/** + * 浜у搧鍖呭垪琛⊿ervice涓氬姟灞傚鐞� + * + * @author ots + * @date 2019-11-20 + */ @Service("examPaper") @Slf4j public class TExamPaperServiceImpl implements ITExamPaperService { @Autowired private TExamPaperMapper tExamPaperMapper; + @Autowired private TTextContentMapper tTextContentMapper; + @Autowired private TExamLevelMapper tExamLevelMapper; + @Autowired private TQuestionMapper questionMapper; + @Autowired private ITQuestionService tQuestionService; + @Autowired private IDictDataService dictDataService; + @Autowired private DictService dictService; + @Autowired private ITTextContentService tTextContentService; + @Autowired private TExamPaperQuestionMapper tExamPaperQuestionMapper; + @Autowired private ITExamPaperService tExamPaperService; + @Autowired private ISysUserPaperService userPaperService; + @Autowired private IExamUtilService examUtilService; + protected final static ModelMapper modelMapper = ModelMapperSingle.Instance(); + @Autowired private ITReportTemplateService itReportTemplateService; + @Autowired private ITExamReportService examReportService; + @Autowired private EntTestMemberMapper entTestMemberMapper; + @Autowired EmailMessage emailMessage; + @Autowired ReportCalculationServices calculationServices; + private static final Logger logger = LoggerFactory.getLogger(Threads.class); - + + + /** + * 鏌ヨ浜у搧鍖呭垪琛� + * + * @param id 浜у搧鍖呭垪琛↖D + * @return 浜у搧鍖呭垪琛� + */ @Override public TExamPaper selectTExamPaperById(Long id) { return tExamPaperMapper.selectTExamPaperById(id); } - + + /** + * 鏌ヨ浜у搧鍖呭垪琛ㄥ垪琛� + * + * @param tExamPaper 浜у搧鍖呭垪琛� + * @return 浜у搧鍖呭垪琛� + */ @Override public List<TExamPaper> selectTExamPaperList(TExamPaper tExamPaper) { + List<TExamPaper> tExamPaperList = tExamPaperMapper.selectTExamPaperList(tExamPaper); List<TExamPaper> tExamPaperResultList = new ArrayList<>(); - + + // 閬嶅巻鍑哄悇绉嶈瑷� for (TExamPaper tExamPaperTemp : tExamPaperList) { Map<String, String> nameMap = JsonUtil.toJsonObject(tExamPaperTemp.getName(), HashMap.class); if (Objects.isNull(nameMap)) { @@ -115,16 +157,24 @@ }); } } - + + // 杩欐牱鎵嶈兘缈婚〉 tExamPaperList.clear(); tExamPaperList.addAll(tExamPaperResultList); return tExamPaperList; } - + + /** + * 鏂板浜у搧鍖呭垪琛� + * + * @param tExamPaper 浜у搧鍖呭垪琛� + * @return 缁撴灉 + */ @Override @Transactional public int insertTExamPaper(TExamPaper tExamPaper) { - + + // 娣诲姞鐗堟湰鍙� if (Objects.nonNull(tExamPaper.getVersionId())) { String maxVersion = tExamPaperMapper.selectEPaperMaxVBypermanentId(tExamPaper); if (StringUtils.isEmpty(maxVersion) && StringUtils.isNotEmpty(tExamPaper.getVersionId())) { @@ -139,31 +189,40 @@ } else { setVersion(tExamPaper); } - + + // 鎺у埗璇█ tExamPaper.setLangType(examUtilService.getLocalLangType(tExamPaper.getLangType())); + tExamPaper.setCreateTime(DateUtils.getNowDate()); - + + //鎷艰t_text_content锛宼Question鍙傛暟鐨勫睘鎬т篃鏄細鍦ㄦ鏂规硶鍐呴儴淇敼 TTextContent textContent = new TTextContent(); - + + // 璁剧疆浜у搧鍖呭悕绉板拰鎸囧璇� setInserPerperNameAndGuide(tExamPaper); - + + // 璁剧疆浜у搧鍖呯殑content鐨勫唴瀹�,鍏_exam_paper_question琛� setInsertPaperContent(tExamPaper, textContent); - + + //鍏ュ簱t_text_content tTextContentMapper.insertTTextContent(textContent); tExamPaper.setFrameTextContentId(textContent.getId()); - - + + //璁$畻璇曞嵎鎬诲垎 + // SetExamPaperAttribute(tExamPaper); setQuestionContentJson(tExamPaper); tExamPaperMapper.insertTExamPaper(tExamPaper); - + // 鏈�鍚庡叆t_exam_paper_question琛� return setExamPaperQuestion(tExamPaper); } + private void setVersion(TExamPaper tExamPaper) { tExamPaper.setVersionId(UUID.randomUUID().toString().replaceAll("-", "")); tExamPaper.setVersion("V1"); } + private void setInsertPaperContent(TExamPaper tExamPaper, TTextContent textContent) { - + // 澶氳瑷�2銆乧ontent琛ㄩ噷闈㈢殑锛孧ultilingual涓嶄负绌鸿〃绀哄凡缁忓仛浜嗗璇█ if (StringUtils.isNotEmpty(tExamPaper.getMultilingual())) { String content = tExamPaper.getQuestions(); content = setPartsContent(tExamPaper, content); @@ -179,6 +238,7 @@ textContent.setContent(JsonUtil.toJSONString(examPaperTitleItemList)); } } + private String setPartsContent(TExamPaper tExamPaper, String content) { List<ExamPaperTitleItem> examPaperTitleItemList = JsonUtil.parseArray(content, ExamPaperTitleItem.class); List<QuestionPart> parts = examPaperTitleItemList.get(0).getParts(); @@ -186,7 +246,8 @@ content = JsonUtil.toJSONString(examPaperTitleItemList); return content; } - + + // 澶氳瑷� private void setPartLangsData(TExamPaper tExamPaper, List<QuestionPart> parts) { if (ExamUtil.isListNotEmpty(parts)) { for (QuestionPart questionPart : parts) { @@ -197,6 +258,7 @@ } } } + private int setExamPaperQuestion(TExamPaper tExamPaper) { List<ExamPaperTitleItem> examPaperTitleItemList = JsonUtil.toJsonListObject(tExamPaper.getQuestions(), ExamPaperTitleItem.class); int size = examPaperTitleItemList.size(); @@ -211,20 +273,22 @@ tExamPaperQuestionMapper.insertTExamPaperQuestion(tExamPaperQuestion); }); } + return 1; } + private void setInserPerperNameAndGuide(TExamPaper tExamPaper) { - - + // 澶氳瑷� + // 澶氳瑷�1銆� 棰樼洰杞寲涓哄璇█,鎵归噺瀵煎叆鐨勪笉杞寲 Map<String, String> nameMap = new HashMap<>(); Map<String, String> guideMap = new HashMap<>(); if (StringUtils.isNotEmpty(tExamPaper.getMultilingual())) { - + // 鎵归噺瀵煎叆 setInserPerperBatch(tExamPaper, nameMap, guideMap); - + // 鍚嶇О鍜屾寚瀵艰 setProductNameAndGuide(tExamPaper, nameMap, guideMap); - } else { - + } else { // 闈炴壒閲忓鍏� + // 濡傛灉鏄彃鍏ョ殑瑕嗙洊 if (tExamPaper.isCreate() && Objects.nonNull(tExamPaper.getId())) { TExamPaper tExamPaperLast = tExamPaperMapper.selectTExamPaperById(tExamPaper.getId()); String nameMapJson = ExamUtil.getStringMapJson(tExamPaper.getLangType(), tExamPaper.getName(), tExamPaperLast.getName()); @@ -238,15 +302,16 @@ nameMap.put(tExamPaper.getLangType(), tExamPaper.getName()); guideMap.put(tExamPaper.getLangType(), tExamPaper.getGuide()); } - + // 鍚嶇О鍜屾寚瀵艰 setProductNameAndGuide(tExamPaper, nameMap, guideMap); } } - + + // 鎵归噺瀵煎叆鎻掑叆 private void setInserPerperBatch(TExamPaper tExamPaper, Map<String, String> nameMap, Map<String, String> guideMap) { List<String> multilingualList = JsonUtil.toJsonListObject(tExamPaper.getMultilingual(), String.class); for (int i = 0; i < multilingualList.size(); i++) { - + // 濡傛灉閫夋嫨浜嗗璇█鑰屽鍏ョ殑涓嶆槸鏈湴鍥介檯鍖栫殑閭g璇█ if (StringUtils.equals(tExamPaper.getLangType(), "ALL") && !multilingualList.contains(dictService.getLangType(LocaleContextHolder.getLocale().toString()))) { nameMap.put(multilingualList.get(i), tExamPaper.getName()); guideMap.put(multilingualList.get(i), tExamPaper.getGuide()); @@ -259,12 +324,14 @@ } } } - + + // 璁剧疆浜у搧鍖呯殑鍚嶇О鍜屾寚瀵艰 private void setProductNameAndGuide(TExamPaper tExamPaper, Map<String, String> nameMap, Map<String, String> guideMap) { tExamPaper.setName(JsonUtil.toJsonStr(nameMap)); tExamPaper.setGuide(JsonUtil.toJsonStr(guideMap)); } - + + // 娣诲姞鍒皅uesitonContent瀛楁锛屼笓闂ㄤ负棰樼洰鎼滅储锛岀┖闂存崲鏃堕棿锛岃褰曞皬棰橈紝涓嶆槸澶ч private void setQuestionContentJson(TExamPaper tExamPaper) { String langType = tExamPaper.getLangType(); tExamPaper.setLangType(""); @@ -282,61 +349,81 @@ tExamPaper.setQuestionContent(JsonUtil.toJsonStr(questionContentList)); tExamPaper.setLangType(langType); } + private void SetExamPaperAttribute(TExamPaper tExamPaper) { - + // begin 璁$畻鏁翠釜浜у搧鍖呯殑鍒嗘暟 List<ExamPaperTitleItemObject> examPaperTitleItemObjectList = JSONArray.parseArray(tExamPaper.getQuestions(), ExamPaperTitleItemObject.class); - + //灏嗘暟鎹墦妯啀杞琹ist[(1,2,3),(4,5,6)] ->(1,2,3,4,5,6) ->[(1),(2),(3),(4),(5),(6)] List<Integer> questionIds = examPaperTitleItemObjectList.stream().flatMap(t -> t.getQuestionItems().stream().map(q -> q.getId())).collect(Collectors.toList()); Integer[] ids = questionIds.toArray(new Integer[questionIds.size()]); List<TQuestion> tQuestionList = questionMapper.selectTQuestionScore(ids); - - + //sql璇彞鏄痵um(),閮芥槸1鏉� + //tExamPaper.setScore(tQuestionList.get(0).getScore()); tExamPaper.setScore(0l); - - + // end 璁$畻鏁翠釜浜у搧鍖呯殑鍒嗘暟 + + //棰樼洰鎬绘暟 tExamPaper.setQuestionCount(Long.valueOf(questionIds.size())); } - + + /** + * 淇敼浜у搧鍖呭垪琛� + * + * @param tExamPaper 浜у搧鍖呭垪琛� + * @return 缁撴灉 + */ @Override @Transactional public int updateTExamPaper(TExamPaper tExamPaper) { - + // 澶氳瑷�鐨勬儏鍐� if (StringUtils.isEmpty(tExamPaper.getVersion())) { setVersion(tExamPaper); updateTExamPaperVersion(tExamPaper); } + if (tExamPaper.isCreate()) { insertTExamPaper(tExamPaper); } updateLangProduct(tExamPaper); return setExamPaperQuestion(tExamPaper); } - + + // 鏇存柊浜у搧鍖呯殑鐗堟湰 public int updateTExamPaperVersion(TExamPaper tExamPaper) { return tExamPaperMapper.updateTExamPaperVersion(tExamPaper); } + private int updateLangProduct(TExamPaper tExamPaper) { - + // 浜у搧鍖呭悕绉板璇█ TExamPaper tExamPaperForUpdate = selectTExamPaperById(tExamPaper.getId()); - + + // 鏇存柊浜у搧鍖呯殑鍐呭 setExamPaperInfor(tExamPaper, tExamPaperForUpdate); - + + // 澶勭悊content閲岄潰鐨勶紝鏃х殑content鎷兼柊鐨刢ontent TTextContent textContent = tTextContentMapper.selectTTextContentById(tExamPaperForUpdate.getFrameTextContentId()); + textContent.setContent(tExamPaper.getQuestions()); textContent.setUpdateTime(DateUtils.getNowDate()); tTextContentMapper.updateTTextContent(textContent); tExamPaperForUpdate.setUpdateTime(DateUtils.getNowDate()); return tExamPaperMapper.updateTExamPaper(tExamPaperForUpdate); } + private void setExamPaperInfor(TExamPaper tExamPaper, TExamPaper tExamPaperForUpdate) { tExamPaperForUpdate.setName(ExamUtil.getStringMapJson(tExamPaper.getLangType(), tExamPaper.getName(), tExamPaperForUpdate.getName())); - + + // 鎸囧璇璇█ tExamPaperForUpdate.setGuide(ExamUtil.getStringMapJson(tExamPaper.getLangType(), tExamPaper.getGuide(), tExamPaperForUpdate.getGuide())); + tExamPaperForUpdate.setSuggestTime(tExamPaper.getSuggestTime()); + tExamPaperForUpdate.setReportTemplateId(tExamPaper.getReportTemplateId()); - + + // 璁剧疆鍒嗘鐨勫璇█ setLangsPart(tExamPaper, tExamPaperForUpdate); } + private void setLangsPart(TExamPaper tExamPaper, TExamPaper tExamPaperForUpdate) { try { List<ExamPaperTitleItem> examPaperTitleItemListNew = JsonUtil.parseArray(tExamPaper.getQuestions(), ExamPaperTitleItem.class); @@ -353,33 +440,39 @@ } tExamPaper.setQuestions(JsonUtil.toJSONString(examPaperTitleItemListNew)); } catch (Exception e) { + } } + @Override public int deleteProductContent(TExamPaper tExamPaper) { - + // 浜у搧鍖呭悕绉板璇█ TExamPaper tExamPaperForUpdate = selectTExamPaperById(tExamPaper.getId()); tExamPaperForUpdate.setName(ExamUtil.deleteLangString(tExamPaper.getLangType(), tExamPaperForUpdate.getName())); - + + // 鎸囧璇璇█ tExamPaperForUpdate.setGuide(ExamUtil.deleteLangString(tExamPaper.getLangType(), tExamPaperForUpdate.getGuide())); - + + // 澶勭悊content閲岄潰鐨勶紝鏃х殑content鎷兼柊鐨刢ontent TTextContent textContent = tTextContentMapper.selectTTextContentById(tExamPaperForUpdate.getFrameTextContentId()); List<ExamPaperTitleItem> examPaperTitleItemUpdateList = JsonUtil.toJsonListObject(textContent.getContent(), ExamPaperTitleItem.class); int questionNum = 0; for (ExamPaperTitleItem examPaperTitleItem : examPaperTitleItemUpdateList) { - + // 涓洪棶棰樼殑姣忎竴椤规坊鍔犲璇█ examPaperTitleItem.setName(ExamUtil.deleteLangString(tExamPaper.getLangType(), examPaperTitleItem.getName())); examPaperTitleItem.setGuide(ExamUtil.deleteLangString(tExamPaper.getLangType(), examPaperTitleItem.getGuide())); examPaperTitleItem.setDescription(ExamUtil.deleteLangString(tExamPaper.getLangType(), examPaperTitleItem.getDescription())); } + textContent.setContent(JsonUtil.toJsonStr(examPaperTitleItemUpdateList)); textContent.setUpdateTime(DateUtils.getNowDate()); - + // 鍒犻櫎鍒嗘鐨勫璇█ deleteLangParts(tExamPaper, textContent); tTextContentMapper.updateTTextContent(textContent); tExamPaperForUpdate.setUpdateTime(DateUtils.getNowDate()); return tExamPaperMapper.updateTExamPaper(tExamPaperForUpdate); } + private void deleteLangParts(TExamPaper tExamPaper, TTextContent textContent) { try { List<ExamPaperTitleItem> examPaperTitleItemForPartList = JsonUtil.parseArray(textContent.getContent(), ExamPaperTitleItem.class); @@ -393,27 +486,46 @@ textContent.setContent(JsonUtil.toJSONString(examPaperTitleItemForPartList)); } } catch (Exception e) { + } } - + + /** + * 鍒犻櫎浜у搧鍖呭垪琛ㄥ璞� + * + * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID + * @return 缁撴灉 + */ @Override public int deleteTExamPaperByIds(String ids) { - + // 鍒犻櫎绱㈠紩鐨勮〃 tExamPaperQuestionMapper.deleteTExamPaperQuestionByIds(Convert.toStrArray(ids)); - + // 鍒犻櫎content琛紝鐪佺┖闂� return tExamPaperMapper.updateByDelete(Convert.toStrArray(ids)); } - + + /** + * 鍒犻櫎浜у搧鍖呭垪琛ㄤ俊鎭� + * + * @param id 浜у搧鍖呭垪琛↖D + * @return 缁撴灉 + */ public int deleteTExamPaperById(Long id) { return tExamPaperMapper.deleteTExamPaperById(id); } + @Override public List<TExamPaper> selectProdByDeleteList(List<Long> deletes) { Map map = new HashMap<>(); map.put("deleteds", deletes); return tExamPaperMapper.selectProdByDeleteList(map); } - + + /** + * 鎵�鏈夊彲閫変骇鍝佸寘 + * + * @return 鎵�鏈夊彲閫変骇鍝佸寘 + */ public List<Ztree> selectProdTree(String testType) { List<Ztree> ztrees = new ArrayList<>(); List<TExamPaper> dictList = getUserPapers(); @@ -428,8 +540,10 @@ continue; } String questionTemplateId = tExamLevel.getQuestionTemplateId(); + if (!Objects.equals(testType, questionTemplateId)) { if (Objects.equals("questionnaire",testType) && Objects.equals("job",questionTemplateId)) { + } else { continue; } @@ -442,13 +556,14 @@ } return ztrees; } + public List<TExamPaper> getUserPapers() { User sysUser = ShiroUtils.getSysUser(); List<TExamPaper> dictList; if (Objects.equals(UserTypeEnum.SYS_USER.getUserType(), sysUser.getUserType())) { TExamPaper tExamPaper = new TExamPaper(); dictList = tExamPaperService.selectTExamPaperList(tExamPaper); - } + }//鍏朵粬鐢ㄦ埛灞曠ずsys_user_paper鍒嗛厤鐨勪骇鍝佸寘 else { SysUserPaper sysUserPaper = new SysUserPaper(); sysUserPaper.setUserId(sysUser.getUserId()); @@ -460,38 +575,46 @@ return paper; }).collect(Collectors.toList()); } - + + //鍙栫湡瀹炲悕绉� dictList.stream().forEach(p -> { p.setName(ExamUtil.getStringByLang(p.getLangType(), p.getName())); }); + return dictList; } + @Override public int updateDeleted(TExamPaper tExamPaper) { return tExamPaperMapper.updateTExamPaper(tExamPaper); } + @Transactional @Override public List<TQuestion> updateInsertQuestion(List<TQuestion> questionList, String multilingual) { questionList.stream().forEach(question -> { - + // 鏇存柊鏃х殑 question.setMultilingual(multilingual); tQuestionService.updateTQuestion(question); }); return questionList; } - + + // 濡傛灉鏈鐩凡缁忔湁浜嗚绉嶈瑷�锛屽氨涓嶈灞曠ず锛宔dit-*.html浣跨敤 @Override public List<DictData> getType(Long id) { - + + // 鏌ヨ瀛楀吀鍏� List<DictData> dictDataList = dictDataService.selectDictDataByType("lang_type"); - + + // 鏌ョ湅宸茬粡瀛樺湪鐨勯鐩� if (Objects.nonNull(id)) { TExamPaper tExamPaper = selectTExamPaperById(id); Map<String, String> titleMap = JsonUtil.toJsonObject(tExamPaper.getName(), HashMap.class); if (Objects.isNull(titleMap)) { return dictDataList; } + List<DictData> dictDataListResult = new ArrayList<>(); for (DictData dictData : dictDataList) { if (StringUtils.isEmpty(titleMap.get(dictData.getDictValue()))) { @@ -503,29 +626,35 @@ return dictDataList; } } + @Override public void recallThaiInterface(TExamReport tExamReportResult, String reportType) { TExamReport tExamReportUpdate = new TExamReport(); tExamReportUpdate.setId(tExamReportResult.getId()); tExamReportUpdate.setTokenId(tExamReportResult.getTokenId()); - + // 鍘绘帀鍘熸潵鐨勯偅浜涘唴瀹� tExamReportResult.setInterfaceContent(""); - + + // Maq鍜孲AQ閲嶆柊鎺� recallMaqAndSaqThaiInterface(tExamReportResult, reportType, tExamReportUpdate); + recallCaqThaiInterface(tExamReportResult, reportType, tExamReportUpdate); } + private void recallCaqThaiInterface(TExamReport tExamReportResult, String reportType, TExamReport tExamReportUpdate) { if (Objects.equals("CAQ", reportType)) { ExamPaperSubmitVM examPaperSubmitVM = new ExamPaperSubmitVM(); - + // 鏄惁鏄噸鏂拌皟鐢ㄦ嘲鍥藉洟闃� examPaperSubmitVM.setRecallThaiInterface(true); - + // 璧版墜鍔ㄦ彁浜ょ殑鏂瑰紡璧嬪�� examPaperSubmitVM.setSubmitClick(true); + if (!recallThaiInterfaceForMAQAndCAQ(tExamReportResult, tExamReportUpdate, examPaperSubmitVM, 2)) { return; } } } + private void recallMaqAndSaqThaiInterface(TExamReport tExamReportResult, String reportType, TExamReport tExamReportUpdate) { List<QuestionReport> questionReports = JsonUtil.parseArray(tExamReportResult.getQuestionReport(), QuestionReport.class); if (Objects.equals("MAQ", reportType) || Objects.equals("SAQ", reportType)) { @@ -534,7 +663,7 @@ for (Integer partOrder : partOrderSet) { ExamPaperSubmitVM examPaperSubmitVM = new ExamPaperSubmitVM(); examPaperSubmitVM.setPartOrder(partOrder); - + // 鏄惁鏄噸鏂拌皟鐢ㄦ嘲鍥藉洟闃� examPaperSubmitVM.setRecallThaiInterface(true); if (!recallThaiInterfaceForMAQAndCAQ(tExamReportResult, tExamReportUpdate, examPaperSubmitVM, examPaperSubmitVM.getPartOrder())) { return; @@ -542,6 +671,7 @@ } } } + private boolean recallThaiInterfaceForMAQAndCAQ(TExamReport tExamReportResult, TExamReport tExamReportUpdate, ExamPaperSubmitVM examPaperSubmitVM, Integer partOrder2) { ReportAPIResult reportAPIResult = getTaiInterface(examPaperSubmitVM, tExamReportResult, tExamReportUpdate); if (Objects.equals(reportAPIResult.getCode(), "fail")) { @@ -549,32 +679,43 @@ examReportService.updateTExamReportByTokenId(tExamReportUpdate); return false; } - + + // 鏇存柊娉板浗鎺ュ彛鏁版嵁锛屼繚瀛樻嘲鍥芥帴鍙f暟鎹� updateTaiInterfaceContent(tExamReportUpdate, tExamReportResult, reportAPIResult, partOrder2); tExamReportResult.setInterfaceContent(tExamReportUpdate.getInterfaceContent()); return true; } + @Override public List<ExamPaperTitleItem> getExamPaperTitleContent(TExamPaper tExamPaper) { - + //琛ㄧず杩樻病鏈夋坊鍔犻鐩� if (Objects.isNull(tExamPaper.getFrameTextContentId())) { return null; } + TTextContent tTextContent = tTextContentService.selectTTextContentById(tExamPaper.getFrameTextContentId()); - + + //澶ф爣棰橈紝绗竴娈垫煡t_exam_paper鐨則_text_content List<ExamPaperTitleItemObject> examPaperTitleItemObjectList = JSONArray.parseArray(tTextContent.getContent(), ExamPaperTitleItemObject.class); - + + // 宸ヤ綔鍒嗘瀽闂嵎鍘诲幓question鐨勯鐩綔涓哄睍绀� examUtilService.setTitleName(tExamPaper, examPaperTitleItemObjectList); - + + //鏍囬銆侀骞�=>閫夐」 鍚嶅瓧锛歯ame,棰樼洰锛歲uestionItems锛屽ぇ鏍囬 List<ExamPaperTitleItem> examPaperTitleItemList = new ArrayList<>(); - + + // 璁剧疆question鐨勫�� setPaperQuestion(tExamPaper, examPaperTitleItemObjectList, examPaperTitleItemList); - + + // 鍒嗙墖鐨勮繑鍥� examPaperTitleItemList.get(0).setParts(examPaperTitleItemObjectList.get(0).getParts()); - + + // 澶勭悊鍒嗙墖澶氳瑷� getPartsmultiLanguage(tExamPaper, examPaperTitleItemList); + return examPaperTitleItemList; } + private void getPartsmultiLanguage(TExamPaper tExamPaper, List<ExamPaperTitleItem> examPaperTitleItemList) { List<QuestionPart> parts = examPaperTitleItemList.get(0).getParts(); if (CollUtil.isEmpty(parts)) { @@ -587,39 +728,47 @@ }); } } + private void setPaperQuestion(TExamPaper tExamPaper, List<ExamPaperTitleItemObject> examPaperTitleItemObjectList, List<ExamPaperTitleItem> examPaperTitleItemList) { - + //ExamPaperTitleItem->QuestionItem->QuestionEditItem->(A,B,C) for (ExamPaperTitleItemObject examPaperTitleItemObject : examPaperTitleItemObjectList) { - + //鏍囬銆侀骞�=>閫夐」锛堝崟涓級 ExamPaperTitleItem examPaperTitleItem = new ExamPaperTitleItem(); + examPaperTitleItem.setName(ExamUtil.getLangString(tExamPaper.getLangType(), examPaperTitleItemObject.getName())); - + + //澶ф爣棰樹笅闈㈡湁澶氬皯涓锛屾煡t_question List<ExamPaperQuestionItemObject> examPaperQuestionList = examPaperTitleItemObject.getQuestionItems(); - + + //map淇濆瓨棰樼洰鐨勯『搴� Map<Integer, ExamPaperQuestionItemObject> questionOrder = new HashMap<>(); List<String> ids = new ArrayList<String>(); for (ExamPaperQuestionItemObject examPaperQuestionItemObject : examPaperQuestionList) { ids.add(examPaperQuestionItemObject.getId().toString()); questionOrder.put(examPaperQuestionItemObject.getId(), examPaperQuestionItemObject); } + if (ExamUtil.isListEmpty(ids)) { continue; } - + + //begin 鏌ヨ鍑烘瘡涓�涓爣棰樼殑棰樼洰{"analyze":"杩欎釜鏄В鏋�","correct":"C","questionItemObjects":[{"content":"<p>B閫夐」</p>","prefix":"B","score":500},{"content":"A閫夐」","prefix":"A","score":500},{"content":"C閫夐」","prefix":"C","score":500},{"content":"D閫夐」鐨勭瓟妗�","prefix":"D","score":500}],"titleContent":"璇烽棶娴锋磱鏈�澶氱殑鏄粈涔�"} List<TTextContentAndQuestion> tTextContents = tTextContentService.selectTextContentAndQuestion(ids.toArray(new String[ids.size()])); List<QuestionItem> questionItemList = tTextContents.stream().map(i -> { QuestionItem questionItem = new QuestionItem(); - + + //begin 鑾峰彇棰樺共鍐呭 QuestionObject questionObject = JSONObject.parseObject(i.getContent(), QuestionObject.class); - + // 澶氳瑷� questionItem.setTitle(ExamUtil.getLangString(tExamPaper.getLangType(), questionObject.getTitleContent())); questionItem.setId(i.getId().intValue()); questionItem.setQuestionId(i.getQuestionId().intValue()); questionItem.setItemOrder(questionOrder.get(i.getQuestionId().intValue()).getItemOrder()); questionItem.setPermanentId(i.getPermanentId()); questionItem.setPartOrder(questionOrder.get(i.getQuestionId().intValue()).getPartOrder()); - - + //end 鑾峰彇棰樺共鍐呭 + + //begin 鑾峰彇閲岄潰鐨勯�夐」锛屽鏋滈�夐」涓虹┖锛屽氨缁欎竴涓粯璁ゅ�硷紝鍚﹀垯鏅哄姏棰樹細鎶ラ敊 if (Objects.nonNull(questionObject.getQuestionItemObjects())) { List<QuestionEditItem> items = questionObject.getQuestionItemObjects().stream().map(val -> { QuestionEditItem questionEditItem = modelMapper.map(val, QuestionEditItem.class); @@ -635,32 +784,46 @@ questionEditItem.setScore(0); items.add(questionEditItem); questionItem.setItems(items); + } - + //end 鑾峰彇閲岄潰鐨勯�夐」 + return questionItem; }).collect(Collectors.toList()); - - + //end 鏌ヨ鍑烘瘡涓�涓爣棰樼殑棰樼洰 + + //澶ф爣棰橀噷闈㈢殑棰樼洰 examPaperTitleItem.setQuestionItems(questionItemList); + examPaperTitleItem.setDescription(ExamUtil.getLangString(tExamPaper.getLangType(), examPaperTitleItemObject.getDescription())); + examPaperTitleItem.setGuide(ExamUtil.getLangString(tExamPaper.getLangType(), examPaperTitleItemObject.getGuide())); + examPaperTitleItem.setPermanentId(examPaperTitleItemObject.getPermanentId()); + examPaperTitleItem.setQuestionId(examPaperTitleItemObject.getQuestionId()); + examPaperTitleItemList.add(examPaperTitleItem); } } + public RestResponse<SignalObject> getSignalObjectRestResponse(ExamPaperSubmitVM examPaperSubmitVM, TExamReport tExamReport, List<TExamReport> tExamReportList, String langType) { - + // 鏌ヨ缁撴灉 TExamReport tExamReportResult = tExamReportList.get(0); - + + // 璋冪敤娉板浗鎺ュ彛 ReportAPIResult reportAPIResult = getTaiInterface(examPaperSubmitVM, tExamReportResult, tExamReport); - + + // 鏇存柊娉板浗鎺ュ彛鏁版嵁锛屼繚瀛樻嘲鍥芥帴鍙f暟鎹� updateTaiInterfaceContent(tExamReport, tExamReportResult, reportAPIResult, examPaperSubmitVM.getPartOrder()); - + + // 鍙戦�侀偖浠朵釜鐢ㄦ埛鍜孒R sendHRAndMemberEmail(tExamReport, true, true); - + + // 杩斿洖鎻愮ず缁欏墠鍙� return getSignalObject(examPaperSubmitVM.getPartOrder(), tExamReportResult, reportAPIResult, langType); } + private RestResponse<SignalObject> getSignalObject(int partOrder, TExamReport tExamReportResult, ReportAPIResult reportAPIResult, String langType) { TExamPaper tExamPaper = selectTExamPaperById(tExamReportResult.getProductId()); List<ExamPaperTitleItem> examPaperTitleItemList = JsonUtil.parseArray(tExamPaper.getContent(), ExamPaperTitleItem.class); @@ -682,72 +845,88 @@ signalObject.setMessage(reportAPIResult.getMessage()); return RestResponse.ok(signalObject); } - + + // 鍙戦�侀檮浠剁粰HR public void sendHRAndMemberEmail(TExamReport tExamReport, boolean justHr, boolean justMember) { - + // 闄勪欢鐨勪綅缃�,鍏蜂綋閭欢闄勪欢鐨勪綅缃� List<String> fileNameResult = new ArrayList<>(); - + // 瑕佸垹闄ょ殑鏂囦欢 List<String> deleteStrList = new ArrayList<>(); + TExamReport tExamReportResult = examReportService.getReportFromTemplate(tExamReport, fileNameResult, deleteStrList); if (tExamReportResult == null) { return; } - + + // 璋冪敤鍙戦�佺▼搴忓彂缁欑敤鎴� String title = tExamReportResult.getMemberName() + MessageUtils.message("jsp.exam.quesiton.reportTilte"); String content = tExamReportResult.getMailContent(); StringBuilder remark = new StringBuilder(); remark.append("澶辫触閭锛�"); + if (justMember) { - + // 鐢ㄦ埛鍙戦偖浠� sendMemberEmail(tExamReport, fileNameResult, tExamReportResult, title, content, remark); } if (justHr) { - + // 鍙戦�佺粰Hr,浣嗗彇testEmail sendHrEmail(tExamReport, fileNameResult, tExamReportResult, title, content, remark); } - + + // 鏇存柊鍙戦�佺姸鎬侊紝鍘嗗彶閭欢鍦板潃 tExamReport.setReportAddress(JsonUtil.toJSONString(fileNameResult)); - + + // 鏀句竴涓綋鍓嶉偖浠剁殑鍦板潃 tExamReport.setReportAddressNew(JsonUtil.toJSONString(fileNameResult)); examReportService.updateTExamReportByTokenId(tExamReport); - - + + // 鑺傜渷绌洪棿鍒犻櫎鏂囦欢 + // deleteStrList.addAll(fileNameResult); WordUtil wordUtil = new WordUtil(); wordUtil.deleteFileByStr(deleteStrList); } + public void sendHrEmail(TExamReport tExamReport, List<String> fileNameResult, TExamReport tExamReportResult, String title, String content, StringBuilder remark) { - + // 濡傛灉鍒涘缓娴嬭瘯鍖呯殑鏃跺�欐病鏈夊~閭锛岄偅涔堝氨鐢ㄩ泦鍥㈢殑鍙朒R閭閭 List<String> hrEmailList = null; try { hrEmailList = Arrays.asList(tExamReportResult.getTestEmail().split(",")); } catch (Exception ex) { + } if (ExamUtil.isListEmpty(hrEmailList)) { try { hrEmailList = Arrays.asList(tExamReportResult.getHrEmail().split(",")); } catch (Exception ex) { + } } + if (Objects.isNull(hrEmailList)) { throw new RuntimeException("Hr Email Is Not Configured"); } - + + //鏇挎崲鍏徃鍚嶇О String userName = ExamUtil.getLangString(tExamReportResult.getLangType(), tExamReportResult.getUserName()); - + //鏇挎崲鐢ㄦ埛鍚嶇О String fullName = ExamUtil.getLangString(tExamReportResult.getLangType(), tExamReportResult.getMemberName()); String productName = ExamUtil.getLangString(tExamReportResult.getLangType(), tExamReportResult.getProductName()); if (StringUtils.isEmpty(content)) { + content = loadReportHrDefaultTemplate(fullName, userName, productName); } + content = content.replace("{Company}", StringUtils.isNotEmpty(userName) ? userName : ""); content = content.replace("{fullName}", StringUtils.isNotEmpty(fullName) ? fullName : ""); content = content.replace("{prodName}", StringUtils.isNotEmpty(productName) ? productName : ""); + for (String email : hrEmailList) { + String hrEmailStatus = "1"; RushMailResult rushMailResult = emailMessage.sendEmailwithAttachment(email, title, content, fileNameResult.stream().toArray(String[]::new)); if (rushMailResult.isResult()) { tExamReport.setSendHrStatus(SenderCode.success.getCode()); - } else { + } else { // 鍙戦�佹垚鍔燂紝鍙戦�佸け璐ュ鐞� remark.append(tExamReportResult.getMemberEmail() + ","); tExamReport.setSendHrStatus(SenderCode.fail.getCode()); hrEmailStatus = "2"; @@ -757,7 +936,7 @@ tExamReport.setHrSendTime(new Date()); tExamReport.setHrUpdateTime(new Date()); try { - + //鏇存柊鐢ㄦ埛琛ㄥ彂閫丠R閭欢鐘舵�� EntTestMember entTestMember = entTestMemberMapper.selectEntTestMemberById(Long.valueOf(tExamReportResult.getMemberId())); entTestMember.setHrEmailStatus(hrEmailStatus); entTestMember.setHrEmailTime(new Date()); @@ -765,23 +944,33 @@ } catch (Exception ex) { log.error("update HrEmailStatus error:{}", ex.getMessage(), ex); } + } + tExamReport.setRemark(remark.toString()); } + private String loadReportHrDefaultTemplate(String fullName, String userName, String productName) { StringBuilder builder = new StringBuilder(); + builder.append("浜茬埍鐨剓Company}浜哄姏璧勬簮閮紝").append("<br>"); builder.append("Dear HR Staff at {Company},").append("<br><br>"); + builder.append("闄勪欢鏄瘂fullName}鏈�杩戝畬鎴愮殑{prodName}娴嬭瘎鎶ュ憡銆�").append("<br>"); builder.append("Attached please find the assessment report on ({prodName}) of ({fullName}).").append("<br><br>"); + builder.append("濡傛湁鐤戦棶锛岃涓庡鏈嶈仈绯伙紝閭鏄細support@tai-online.com銆�").append("<br>"); builder.append("Should you have questions, please contact our customer service at support@tai-online.com. ").append("<br><br><br>"); + builder.append("璋㈣阿锛�").append("<br>"); builder.append("All the best,").append("<br><br><br>"); + builder.append("TAI鍏徃瀹㈡埛鏈嶅姟閮�").append("<br>"); builder.append("Customer Service Dept., TAI, LLC").append("<br><br><br>"); + return builder.toString(); } + private String loadReportMemberDefaultTemplate(String fullName, String userName, String productName) { StringBuilder builder = new StringBuilder(); builder.append("Subject Line: Your assessment report is attached (鎮ㄧ殑娴嬭瘎鎶ュ憡闄勪笂浜�)"); @@ -807,28 +996,35 @@ builder.append(userName); return builder.toString(); } + + private void sendMemberEmail(TExamReport tExamReport, List<String> fileNameResult, TExamReport tExamReportResult, String title, String content, StringBuilder remark) { + if (StringUtils.isEmpty(content)) { - + //鏇挎崲鍏徃鍚嶇О String userName = tExamReportResult.getUserName(); - + //鏇挎崲鐢ㄦ埛鍚嶇О String fullName = tExamReportResult.getMemberName(); String productName = ExamUtil.getLangString(tExamReportResult.getLangType(), tExamReportResult.getProductName()); content = loadReportMemberDefaultTemplate(fullName, userName, productName); } + if (Objects.nonNull(tExamReportResult.getAutoSendReport()) && tExamReportResult.getAutoSendReport() == 1) { boolean result = emailMessage.sendEmailwithAttachment(tExamReportResult.getMemberEmail(), title, content, fileNameResult.stream().toArray(String[]::new)).isResult(); if (result) { tExamReport.setSendTesterStatus(SenderCode.success.getCode()); - } else { + } else { // 鍙戦�佹垚鍔燂紝鍙戦�佸け璐ュ鐞� remark.append(tExamReportResult.getMemberEmail() + ","); tExamReport.setSendTesterStatus(SenderCode.fail.getCode()); } } else { tExamReport.setSendTesterStatus(SenderCode.noSend.getCode()); } + tExamReport.setRemark(remark.toString()); } + + private void updateTaiInterfaceContent(TExamReport tExamReportUpdate, TExamReport tExamReportResult, ReportAPIResult reportAPIResult, int partOrder) { List<ReportAPIResult> reportAPIResultList = JsonUtil.parseArray(tExamReportResult.getInterfaceContent(), ReportAPIResult.class); if (CollUtil.isNotEmpty(reportAPIResultList)) { @@ -837,21 +1033,25 @@ reportAPIResultList.remove(reportAPIResultList.size() - 1); } } + if (ExamUtil.isListEmpty(reportAPIResultList)) { reportAPIResultList = new ArrayList<>(); } else { int size = reportAPIResultList.size(); int deletNum = size - (partOrder - 1); - + + // 濡傛灉鍓嶅彴鍙互璺冲埌涓婁竴棰橈紝鍒欒鍒犻櫎鍘熸潵鍏ュ簱鐨� for (int i = size - 1; i >= 0 && deletNum > 0; i--, deletNum--) { reportAPIResultList.remove(i); } + logger.info("reportAPIResultList:鐨勪釜鏁�" + reportAPIResultList.size()); } reportAPIResultList.add(reportAPIResult); tExamReportUpdate.setInterfaceContent(JsonUtil.toJSONString(reportAPIResultList)); examReportService.updateTExamReportByTokenId(tExamReportUpdate); } + private ReportAPIResult getTaiInterface(ExamPaperSubmitVM examPaperSubmitVM, TExamReport tExamReportResult, TExamReport tExamReportUpdate) { Map<Integer, ReportTypeEnum> reportTypeEnumMap = new HashMap<>(); reportTypeEnumMap.put(1, firstPath); @@ -862,13 +1062,16 @@ if ("SAQ".equals(tReportTemplate.getTemplateType()) || Objects.equals("SAQ", tReportTemplate.getReportType())) { calculationTypeEnum = SAQ; } + if ("RuiLin".equals(tReportTemplate.getReportType())) { calculationTypeEnum = RUILIN; } + if ("CAQ".equals(tReportTemplate.getReportType())) { calculationTypeEnum = CAQ; } } + HolderInfo info = new HolderInfo(); info.setAccessCode(tExamReportResult.getTokenId()); info.setFullName(tExamReportResult.getMemberName()); @@ -881,10 +1084,11 @@ return getReportAPIMAQResult(examPaperSubmitVM, tExamReportResult, tExamReportUpdate, reportTypeEnumMap, info); } } + private ReportAPIResult getReportAPICAQResult(ExamPaperSubmitVM examPaperSubmitVM, TExamReport tExamReportResult, TExamReport tExamReport, HolderInfo info) { Map data = new HashMap(); - - + // 閫犳暟鎹� + // createMAQAndCAQData(examPaperSubmitVM, CAQ, data); getWaitTaiData(examPaperSubmitVM, tExamReportResult, data); CaqRequest request = new CaqRequest(); request.setInfo(info); @@ -896,8 +1100,9 @@ } return reportAPIResult; } + public SignalObject callTaiData(String tokenId, String langType, ExamPaperSubmitVM examPaperSubmitVM) { - + // 鏌ユ壘褰撳墠鐨勭瓟棰樿褰� TExamReport tExamReport = new TExamReport(); tExamReport.setTokenId(tokenId); List<TExamReport> tExamReportList = examReportService.selectTExamReportList(tExamReport); @@ -909,9 +1114,11 @@ if (ExamUtil.isListEmpty(questionReportList)) { return getEmptySignalObjectResult(); } + try { - + // 璋冪敤娉板浗鍥㈤槦涔嬪悗鏇存柊鎶ヨ〃璁板綍,鍙戦�佺粰HR閭欢 RestResponse<SignalObject> signalObject = getSignalObjectRestResponse(examPaperSubmitVM, tExamReport, tExamReportList, langType); + if (Objects.nonNull(signalObject)) { return signalObject.getResponse(); } @@ -919,19 +1126,23 @@ updateChoice(examPaperSubmitVM, tExamReport, tExamReportOldResult); throw e; } + return getEmptySignalObjectResult(); } + private SignalObject getEmptySignalObjectResult() { SignalObject signalObject = new SignalObject(); signalObject.setSignalDescription(""); return signalObject; } + private void updateChoice(ExamPaperSubmitVM examPaperSubmitVM, TExamReport tExamReport, TExamReport tExamReportOldResult) { tExamReport.setFinish(0); if (StringUtils.isEmpty(tExamReport.getTokenId()) || StringUtils.isEmpty(examPaperSubmitVM.getItemOrder())) { examReportService.updateTExamReportByTokenId(tExamReport); return; } + String choice = tExamReportOldResult.getChoice(); LinkedHashMap<String, String> linkedHashMap = JsonUtil.parseObject(choice, LinkedHashMap.class); Iterator<String> iterator = linkedHashMap.keySet().iterator(); @@ -947,17 +1158,19 @@ tExamReport.setRemark(tExamReport.getRemark() + ",itemOrder:" + examPaperSubmitVM.getItemOrder()); examReportService.updateTExamReportByTokenId(tExamReport); } - + + // 閫犳暟鎹嚱鏁板叆鍙� private void createMAQAndCAQData(ExamPaperSubmitVM examPaperSubmitVM, CalculationTypeEnum calculationTypeEnum, Map data) { if (calculationTypeEnum == CAQ) { - + // 閫燙AQ鐨勬暟鎹� simulationCAQTaiData(examPaperSubmitVM.getPartOrder(), data); } else { - + // 閫犳暟鎹�,MAQ锛屼笉闇�瑕侊紝涓婄嚎鐨勬椂鍊欒娉ㄩ噴鎺� simulationTaiData(examPaperSubmitVM.getPartOrder(), data); } } - + + // 妯℃嫙娉板浗鍥㈤槦 private void simulationTaiData(int partOrder, Map data) { String topics = "MAQ0001,MAQ0003,MAQ0006,MAQ0009,MAQ0013,MAQ0020,MAQ0041,MAQ0048,MAQ0088,MAQ0094,MAQ0098,MAQ0112,MAQ0117,MAQ0133,MAQ0145,MAQ0163,MAQ0172,MAQ0174,MAQ0175,MAQ0183,MAQ0194,MAQ0203,MAQ0209,MAQ0212,MAQ0224,MAQ0232,MAQ0233,MAQ0235,MAQ0236,MAQ0241,MAQ0244,MAQ0249,MAQ0250,MAQ0251,MAQ0004,MAQ0005,MAQ0007,MAQ0010,MAQ0011,MAQ0014,MAQ0015,MAQ0019,MAQ0021,MAQ0024,MAQ0025,MAQ0026,MAQ0027,MAQ0028,MAQ0029,MAQ0030,MAQ0034,MAQ0035,MAQ0036,MAQ0038,MAQ0039,MAQ0040,MAQ0042,MAQ0044,MAQ0045,MAQ0046,MAQ0047,MAQ0049,MAQ0051,MAQ0053,MAQ0055,MAQ0058,MAQ0059,MAQ0060,MAQ0061,MAQ0062,MAQ0064,MAQ0065,MAQ0067,MAQ0069,MAQ0070,MAQ0071,MAQ0072,MAQ0073,MAQ0074,MAQ0076,MAQ0077,MAQ0078,MAQ0079,MAQ0080,MAQ0081,MAQ0082,MAQ0084,MAQ0085,MAQ0086,MAQ0087,MAQ0089,MAQ0090,MAQ0091,MAQ0092,MAQ0095,MAQ0097,MAQ0099,MAQ0100,MAQ0101,MAQ0103,MAQ0104,MAQ0106,MAQ0107,MAQ0110,MAQ0111,MAQ0113,MAQ0115,MAQ0118,MAQ0119,MAQ0120,MAQ0124,MAQ0126,MAQ0127,MAQ0129,MAQ0130,MAQ0131,MAQ0132,MAQ0134,MAQ0135,MAQ0136,MAQ0138,MAQ0140,MAQ0141,MAQ0142,MAQ0143,MAQ0144,MAQ0146,MAQ0147,MAQ0149,MAQ0150,MAQ0151,MAQ0152,MAQ0156,MAQ0157,MAQ0158,MAQ0159,MAQ0160,MAQ0161,MAQ0162,MAQ0164,MAQ0165,MAQ0166,MAQ0167,MAQ0168,MAQ0169,MAQ0170,MAQ0171,MAQ0173,MAQ0176,MAQ0178,MAQ0179,MAQ0180,MAQ0181,MAQ0182,MAQ0184,MAQ0185,MAQ0187,MAQ0190,MAQ0191,MAQ0192,MAQ0193,MAQ0195,MAQ0197,MAQ0199,MAQ0200,MAQ0201,MAQ0202,MAQ0204,MAQ0205,MAQ0206,MAQ0207,MAQ0208,MAQ0210,MAQ0211,MAQ0213,MAQ0214,MAQ0216,MAQ0218,MAQ0219,MAQ0220,MAQ0221,MAQ0223,MAQ0225,MAQ0226,MAQ0227,MAQ0228,MAQ0229,MAQ0230,MAQ0231,MAQ0234,MAQ0237,MAQ0240,MAQ0242,MAQ0243,MAQ0245,MAQ0247,MAQ0248,MAQ0253,MAQ0254,MAQ0255"; if (partOrder == 1) { @@ -968,7 +1181,8 @@ data.put(item, "5"); }); } - + + // 妯℃嫙CAQ鐨勬暟鎹� private void simulationCAQTaiData(int partOrder, Map data) { String topics = "CAQ1010,CAQ1020,CAQ1030,CAQ1040,CAQ1050,CAQ1060,CAQ1070,CAQ1080,CAQ1090,CAQ1100,CAQ1110,CAQ1120,CAQ1130,CAQ1140,CAQ1150,CAQ2010,CAQ2020,CAQ2030,CAQ2040,CAQ2050,CAQ2060,CAQ2070,CAQ2080,CAQ2090,CAQ2100,CAQ2110,CAQ2120,CAQ2130,CAQ2140,CAQ2150,CAQ2160,CAQ2170,CAQ2180,CAQ2190,CAQ2200"; if (partOrder == 1) { @@ -979,30 +1193,34 @@ data.put(item, "5"); }); } + private void setNormalSubmit(ExamPaperSubmitVM examPaperSubmitVM, Map data, List<QuestionReport> questionReportList) { for (QuestionReport questionReport : questionReportList) { - + // PermanentId 绛変簬0鏄櫤鍔涢鐨勫ぇ棰橈紝闂瓟棰橈紝椤轰究鍒ゆ柇涓虹┖ if (questionReport.getPartOrder() > examPaperSubmitVM.getPartOrder() || Objects.isNull(questionReport.getPermanentId()) || Objects.equals(questionReport.getPermanentId(), "0")) { continue; } data.put(questionReport.getPermanentId(), questionReport.getAnswer()); } } + private void setManSubmit(Map data, List<QuestionReport> questionReportList) { for (QuestionReport questionReport : questionReportList) { - + // PermanentId 绛変簬0鏄櫤鍔涢鐨勫ぇ棰橈紝闂瓟棰橈紝椤轰究鍒ゆ柇涓虹┖ if (StringUtils.isNotEmpty(questionReport.getPermanentId()) && !Objects.equals(questionReport.getPermanentId(), "0")) { data.put(questionReport.getPermanentId(), questionReport.getAnswer()); } } } + private ReportAPIResult getReportAPISAQResult(ExamPaperSubmitVM examPaperSubmitVM, TExamReport tExamReportResult, TExamReport tExamReport, Map<Integer, ReportTypeEnum> reportTypeEnumMap, HolderInfo info) { return getReportAPIMAQResult(examPaperSubmitVM, tExamReportResult, tExamReport, reportTypeEnumMap, info); } + private ReportAPIResult getReportAPIMAQResult(ExamPaperSubmitVM examPaperSubmitVM, TExamReport tExamReportResult, TExamReport tExamReport, Map<Integer, ReportTypeEnum> reportTypeEnumMap, HolderInfo info) { Map data = new HashMap(); - - + // 閫犳暟鎹� +// createMAQAndCAQData(examPaperSubmitVM, MAQ, data); getWaitTaiData(examPaperSubmitVM, tExamReportResult, data); MaqRequest request = new MaqRequest(); request.setInfo(info); @@ -1010,19 +1228,22 @@ request.setData(data); ReportAPIResult reportAPIResult = calculationServices.stageCalculation(request); reportAPIResult.setAnswerData(data); - + // 閲嶆柊璋冪敤娉板浗鍥㈤槦鐨勬帴鍙g殑璇濓紝涓嶉渶瑕佹洿鏂伴鐩簡 if (Objects.equals(reportAPIResult.getCode(), "fail") && !examPaperSubmitVM.isRecallThaiInterface()) { updateChoice(examPaperSubmitVM, tExamReport, tExamReportResult); } return reportAPIResult; } + private void getWaitTaiData(ExamPaperSubmitVM examPaperSubmitVM, TExamReport tExamReportResult, Map data) { List<QuestionReport> questionReportList = JsonUtil.parseArray(tExamReportResult.getQuestionReport(), QuestionReport.class); if (examPaperSubmitVM.isSubmitClick()) { - + // 鑷繁鎻愪氦鐨勯偅绉嶏紝濡傛櫤鍔涢 setManSubmit(data, questionReportList); } else { setNormalSubmit(examPaperSubmitVM, data, questionReportList); } } + + } 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 37ec5d8..4629005 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,4 +1,5 @@ package com.ots.project.exam.service.impl; + import cn.hutool.core.collection.CollUtil; import com.ots.common.enums.LangTypeEnum; import com.ots.common.enums.ReportTypeEnum; @@ -44,6 +45,7 @@ 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; @@ -59,82 +61,141 @@ import java.util.Set; import java.util.stream.Collectors; +/** + * 璇勬祴鎶ュ憡Service涓氬姟灞傚鐞� + * + * @author ots + * @date 2019-12-26 + */ @Service 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> 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<>(); @@ -143,17 +204,20 @@ 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(); @@ -165,6 +229,9 @@ } return dictDataListResult; } + + + @Override public TReportTemplate getReportTemplate(String questionTemplateId, String langType, String templateType) { TReportTemplate tReportTemplate = new TReportTemplate(); @@ -174,57 +241,69 @@ 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); @@ -232,12 +311,14 @@ 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; @@ -254,13 +335,14 @@ } 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 { @@ -278,10 +360,13 @@ } 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 { @@ -289,6 +374,7 @@ } } } + public void setExcelMapextraValue(TExamReport tExamReport, Map dataMap) { dataMap.put("password", tExamReport.getTokenId()); dataMap.put("reportId", tExamReport.getId().toString()); @@ -302,8 +388,10 @@ EntTestMember entTestMember = entTestMemberService.selectEntTestMemberById(tExamReport.getMemberId().longValue()); 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()); } @@ -311,28 +399,34 @@ 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))) { @@ -340,6 +434,7 @@ } } } + private void setPExtro(Map dataMap, List<ReportAPIResult> interfaceContentList) { if (CollUtil.isEmpty(interfaceContentList)) { return; @@ -355,6 +450,7 @@ } } } + @Override public String getDemographicName(TExamReport tExamReport) { EntDemographyInfo entDemographyInfo = new EntDemographyInfo(); @@ -363,21 +459,25 @@ 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 getMAQReportData(String langType, ReportTypeEnum reportTypeEnum, Map.Entry<String, Map<String, String>> entry, TExamReport tExamReport) { MAQReport report = new MAQReport(); report.setQuestionnaireTaker(entry.getKey()); @@ -387,11 +487,13 @@ 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()); @@ -401,6 +503,7 @@ 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(); @@ -413,6 +516,7 @@ 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(); @@ -427,11 +531,13 @@ 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()); @@ -439,81 +545,107 @@ 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()) { - - setWaterDropCreatePic(textMap, entry, deleteStrList, tExamReport.getId().toString()); + // setWaterDrop(textMap, entry, deleteStrList); + 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 (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); + wordParam.setPicHeight(33); // 鐜板湪鐢�500/888 鍏跺疄鏄�445/888 } else if (StringUtils.equals(key.split("_")[0], "RuilinTestResultValidityDiagnosisContext")) { wordParam.setPicWidth(450); wordParam.setPicHeight(35); @@ -523,25 +655,33 @@ 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; @@ -551,26 +691,32 @@ } catch (Exception 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 8aab9d8..90f33c8 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,4 +1,5 @@ package com.ots.project.exam.service.impl; + import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.ots.common.enums.QuestionTypeEnum; @@ -28,54 +29,89 @@ 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(); @@ -83,26 +119,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 { @@ -113,47 +149,64 @@ } } } + 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); @@ -162,17 +215,25 @@ 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) { @@ -182,26 +243,31 @@ 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 { @@ -212,24 +278,26 @@ 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()); + // 棰樼洰鐨勫垎鏁� + questionEditItem.setScore(Objects.isNull(tQuestion.getScore()) ? 0 : tQuestion.getScore().intValue());//鐩墠鐢ㄤ笉涓婅繖涓垎鏁帮紝鍏堣涓�0 questionEditItems.add(questionEditItem); } - + + //閬嶅巻姣忎竴涓�夐」 return questionEditItems.stream().map(i -> { QuestionEditItem item = modelMapper.map(i, QuestionEditItem.class); @@ -238,72 +306,96 @@ } ).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(); @@ -312,57 +404,70 @@ 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); @@ -371,25 +476,31 @@ 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) { @@ -398,29 +509,45 @@ 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: @@ -442,7 +569,9 @@ } 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); @@ -463,42 +592,50 @@ } 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(); + List<String> choiceInput = tQuestion.getChoiceInput(); // A,B,C,D tQuestion.setSelectInput(new ArrayList<>()); - List<String> selectInput = tQuestion.getSelectInput(); + + List<String> selectInput = tQuestion.getSelectInput(); // A,B,C,D鐨勫唴瀹� for (int j = 6; j < excelDataMap.size(); j++) { choiceInput.add(prefixList.get(prefixNum++)); selectInput.add(excelDataMap.get(j)); @@ -512,6 +649,7 @@ StringBuilder meg = failureMsg.append(successMsg); return meg.toString(); } + public void setQuestionInfoFromVM(TextContent infoTextContent, QuestionEditRequestVM model) { List<QuestionEditItem> itemObjects = model.getItems().stream().map(i -> { @@ -527,11 +665,14 @@ 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(); @@ -548,7 +689,9 @@ 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 2b71524..5ec5010 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,4 +1,5 @@ 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; @@ -18,25 +19,42 @@ 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); @@ -45,17 +63,26 @@ } 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(); @@ -65,14 +92,17 @@ 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(); @@ -81,6 +111,7 @@ } 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) { @@ -94,7 +125,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()); @@ -108,6 +139,7 @@ } return ret; } + if (Objects.equals(UserTypeEnum.SYS_USER.getUserType(), user.getUserType())) { TReportTemplate template = new TReportTemplate(); List<TReportTemplate> tReportTemplates = tReportTemplateMapper.selectTReportTemplateList(template); @@ -118,12 +150,14 @@ }).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(); @@ -132,15 +166,16 @@ } 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())) { @@ -153,8 +188,10 @@ item.setReportType(value); return item; }).collect(Collectors.toList()); + return result; } + @Override public List<TReportTemplate> selectTReportTemplates(String ids) { if (Objects.isNull(ids)) { @@ -162,7 +199,14 @@ } return tReportTemplateMapper.selectTReportTemplates(Convert.toStrArray(ids)); } - + + + /** + * 鏂板鎶ュ憡妯℃澘閰嶇疆 + * + * @param tReportTemplate 鎶ュ憡妯℃澘閰嶇疆 + * @return 缁撴灉 + */ @Override public int insertTReportTemplate(TReportTemplate tReportTemplate) { tReportTemplate.setCreateTime(DateUtils.getNowDate()); @@ -177,7 +221,13 @@ } return tReportTemplateMapper.insertTReportTemplate(tReportTemplate); } - + + /** + * 淇敼鎶ュ憡妯℃澘閰嶇疆 + * + * @param tReportTemplate 鎶ュ憡妯℃澘閰嶇疆 + * @return 缁撴灉 + */ @Override public int updateTReportTemplate(TReportTemplate tReportTemplate) { tReportTemplate.setUpdateTime(DateUtils.getNowDate()); @@ -193,12 +243,24 @@ } 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 fba9195..26f0d63 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,4 +1,5 @@ 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; @@ -8,33 +9,61 @@ 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()); @@ -42,7 +71,13 @@ tSubject.setLevelName(tExamLevel.getLevelName()); return tSubjectMapper.insertTSubject(tSubject); } - + + /** + * 淇敼缁村害琛� + * + * @param tSubject 缁村害琛� + * @return 缁撴灉 + */ @Override public int updateTSubject(TSubject tSubject) { tSubject.setUpdateTime(DateUtils.getNowDate()); @@ -50,15 +85,28 @@ 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 778cf9c..131d4f8 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,4 +1,5 @@ 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; @@ -8,55 +9,101 @@ 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; @@ -67,9 +114,10 @@ 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; @@ -80,7 +128,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 ddb28b7..bd010af 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,4 +1,5 @@ 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; @@ -7,21 +8,27 @@ 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(); @@ -45,6 +52,7 @@ textContentService.updateTTextContent(textContent); } } + @Override public void insertOrUpdate(TExamPaper examPaper, ExamPaperAnswer examPaperAnswer, Date now) { Integer taskId = examPaper.getTaskExamId().intValue(); @@ -68,10 +76,12 @@ 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 b1e2683..59c3857 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,4 +1,5 @@ package com.ots.project.exam.service.impl; + import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.ots.project.exam.domain.UserEventLog; @@ -9,28 +10,36 @@ 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(); @@ -42,4 +51,5 @@ 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 d05520b..26a2f5d 100644 --- a/src/main/java/com/ots/project/exam/viewmodel/BaseVM.java +++ b/src/main/java/com/ots/project/exam/viewmodel/BaseVM.java @@ -1,9 +1,16 @@ 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 d25dea3..a772075 100644 --- a/src/main/java/com/ots/project/exam/viewmodel/ExamItemOrderAndContent.java +++ b/src/main/java/com/ots/project/exam/viewmodel/ExamItemOrderAndContent.java @@ -1,6 +1,8 @@ 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 a5ce170..ad4ab1b 100644 --- a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperAnswerPageResponseVM.java +++ b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperAnswerPageResponseVM.java @@ -1,18 +1,32 @@ 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 583edb8..483cbfd 100644 --- a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperAnswerPageVM.java +++ b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperAnswerPageVM.java @@ -1,8 +1,13 @@ 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 4a4a1f3..ff4be65 100644 --- a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperEditRequestVM.java +++ b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperEditRequestVM.java @@ -1,12 +1,15 @@ 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 { @@ -21,20 +24,31 @@ 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 02ae96a..c4ae475 100644 --- a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperPageRequestVM.java +++ b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperPageRequestVM.java @@ -1,8 +1,11 @@ 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 68b2a46..0c09633 100644 --- a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperPageResponseVM.java +++ b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperPageResponseVM.java @@ -1,15 +1,26 @@ 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 1ec63cb..09dd5f5 100644 --- a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperPageVM.java +++ b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperPageVM.java @@ -1,7 +1,10 @@ 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 c2add67..7f5f318 100644 --- a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperReadVM.java +++ b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperReadVM.java @@ -1,5 +1,7 @@ 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 e9306d2..9043d54 100644 --- a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperSubmitItemVM.java +++ b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperSubmitItemVM.java @@ -1,24 +1,37 @@ 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 b1beced..5364040 100644 --- a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperSubmitVM.java +++ b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperSubmitVM.java @@ -1,37 +1,61 @@ 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 1369f8d..83d0bbe 100644 --- a/src/main/java/com/ots/project/exam/viewmodel/ExamPaperTitleItemVM.java +++ b/src/main/java/com/ots/project/exam/viewmodel/ExamPaperTitleItemVM.java @@ -1,24 +1,38 @@ 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 c953f19..9f28eee 100644 --- a/src/main/java/com/ots/project/exam/viewmodel/ExamResultRequestVM.java +++ b/src/main/java/com/ots/project/exam/viewmodel/ExamResultRequestVM.java @@ -1,8 +1,11 @@ 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 { @@ -10,7 +13,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 288ca30..344c9c8 100644 --- a/src/main/java/com/ots/project/exam/viewmodel/IndexVM.java +++ b/src/main/java/com/ots/project/exam/viewmodel/IndexVM.java @@ -1,7 +1,10 @@ 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 560a983..b8b7dbf 100644 --- a/src/main/java/com/ots/project/exam/viewmodel/PaperInfoVM.java +++ b/src/main/java/com/ots/project/exam/viewmodel/PaperInfoVM.java @@ -1,6 +1,8 @@ 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 8e68c74..30f2e7a 100644 --- a/src/main/java/com/ots/project/exam/viewmodel/QuestionEditItemVM.java +++ b/src/main/java/com/ots/project/exam/viewmodel/QuestionEditItemVM.java @@ -1,6 +1,8 @@ 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 142a2a8..5d86567 100644 --- a/src/main/java/com/ots/project/exam/viewmodel/QuestionEditRequestVM.java +++ b/src/main/java/com/ots/project/exam/viewmodel/QuestionEditRequestVM.java @@ -1,25 +1,37 @@ 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 c929f09..505bc69 100644 --- a/src/main/java/com/ots/project/exam/viewmodel/QuestionPageRequestVM.java +++ b/src/main/java/com/ots/project/exam/viewmodel/QuestionPageRequestVM.java @@ -1,8 +1,11 @@ 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 beb1849..b68d089 100644 --- a/src/main/java/com/ots/project/exam/viewmodel/QuestionPageStudentRequestVM.java +++ b/src/main/java/com/ots/project/exam/viewmodel/QuestionPageStudentRequestVM.java @@ -1,6 +1,8 @@ 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 d4106d6..28fbb48 100644 --- a/src/main/java/com/ots/project/exam/viewmodel/SubjectPageRequestVM.java +++ b/src/main/java/com/ots/project/exam/viewmodel/SubjectPageRequestVM.java @@ -1,6 +1,8 @@ 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 077a5d6..b503473 100644 --- a/src/main/java/com/ots/project/exam/viewmodel/TaskItemPaperVm.java +++ b/src/main/java/com/ots/project/exam/viewmodel/TaskItemPaperVm.java @@ -1,5 +1,7 @@ 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 e6e3ec7..8d25ba4 100644 --- a/src/main/java/com/ots/project/exam/viewmodel/TaskItemVm.java +++ b/src/main/java/com/ots/project/exam/viewmodel/TaskItemVm.java @@ -1,6 +1,9 @@ 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 3124044..9be5234 100644 --- a/src/main/java/com/ots/project/exam/viewmodel/UserEventPageRequestVM.java +++ b/src/main/java/com/ots/project/exam/viewmodel/UserEventPageRequestVM.java @@ -1,9 +1,17 @@ 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 8d14f8d..bf6d909 100644 --- a/src/main/java/com/ots/project/exam/viewmodel/UserResponseVM.java +++ b/src/main/java/com/ots/project/exam/viewmodel/UserResponseVM.java @@ -1,25 +1,46 @@ 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 95c138c..e857e7f 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,4 +1,5 @@ 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; @@ -7,25 +8,33 @@ 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); @@ -38,15 +47,17 @@ } }); } + private Map testMemberParams() { Map paramMap = new HashMap(); - Calendar ca = Calendar.getInstance(); - ca.setTime(new Date()); - ca.add(Calendar.YEAR, -1); + Calendar ca = Calendar.getInstance();//寰楀埌涓�涓狢alendar鐨勫疄渚� + ca.setTime(new Date()); //璁剧疆鏃堕棿涓哄綋鍓嶆椂闂� + ca.add(Calendar.YEAR, -1); //骞翠唤鍑�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 2611564..195fc1b 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,21 +1,32 @@ 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 5c484f0..4fcc10b 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,4 +1,5 @@ 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; @@ -8,33 +9,46 @@ 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 -> { @@ -42,8 +56,15 @@ entTestPackageService.updateEntTestPackage(it); }); }); + } - + + /** + * 璇勬祴浜哄憳鏌ヨ鍙傛暟 + * + * @param testIds + * @return + */ private Map testMemberParams(List<Long> testIds) { Map map = new HashMap(); map.put("testIds", testIds); @@ -51,7 +72,12 @@ 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 b848715..4b6b4cf 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,4 +1,5 @@ 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; @@ -22,14 +23,19 @@ 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"; @@ -51,8 +57,9 @@ private TReportTemplateMapper tReportTemplateMapper; @Autowired private ITReportTemplateService itReportTemplateService; + public void senderTask() { - + // 鏌ユ壘report琛ㄥ緱鍑鸿鍙戦�佹姤鍛婄殑鐢ㄦ埛 TExamReport tExamReportTemp = new TExamReport(); tExamReportTemp.setFinish(1); tExamReportTemp.setSendTesterStatus(0); @@ -60,42 +67,51 @@ 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<>(); @@ -105,16 +121,17 @@ 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(); - String templateType = tReportTemplateMap.get(Long.valueOf(reportId)).getTemplateType(); + // 瀵煎嚭鍩虹鐗堟湰杩樻槸璇︾粏鐗� + String reportType = tReportTemplateMap.get(Long.valueOf(reportId)).getReportType();// "Brief"; + String templateType = tReportTemplateMap.get(Long.valueOf(reportId)).getTemplateType();// "Brief"; String path = ""; Map<String, Object> textMap = new HashMap<>(); TReportTemplate tReportTemplate = tReportTemplateMap.get(Long.valueOf(reportId)); @@ -129,20 +146,23 @@ 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<>(); @@ -151,6 +171,7 @@ } return tReportTemplateMap; } + private Map<String, ReportTypeEnum> getStringReportTypeEnumMap() { Map<String, ReportTypeEnum> reportTypeEnumMap = new HashMap<>(); for (ReportTypeEnum reportTypeEnumTemp : ReportTypeEnum.values()) { @@ -158,6 +179,7 @@ } 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 638e1ab..2f752c8 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,4 +1,5 @@ package com.ots.project.monitor.job.task; + import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; import com.ots.common.enums.SenderType; @@ -23,15 +24,21 @@ 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"; @@ -45,26 +52,29 @@ 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 -> { @@ -77,6 +87,7 @@ log.error("璁板綍閫�淇′俊鎭け璐ワ細{}", e.getMessage(), e); } } + private void bounceStatusUpdate() { String mailMode = configService.getKey("MailMode"); if (Objects.equals("RushMail", mailMode)) { @@ -123,8 +134,8 @@ } } else { EmailUtil eu = new EmailUtil(EmailMessageImpl.userName, EmailMessageImpl.password); - List<BouncedUser> bouncedUserList = eu.receiveMail(DefaultConfigurer.getIMAP(), "imap"); - + List<BouncedUser> bouncedUserList = eu.receiveMail(DefaultConfigurer.getIMAP(), "imap");// imap鏀朵俊 + //閭欢閫�淇℃暟鎹叆搴� mailBounceInformationStorage(bouncedUserList); bouncedUserList.stream().forEach(user -> { EntTestSendtask entTestSendtask = new EntTestSendtask(); @@ -142,11 +153,13 @@ }); } } + 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) { @@ -168,7 +181,12 @@ } } } - + + /** + * 鍙戦偖浠� + * + * @param testSendtask + */ public void sendEmail(EntTestSendtask testSendtask) { if (Objects.equals(EMAIL_126, testSendtask.getPlatform())) { RushMailResult result = emailMessage.sendEmail(testSendtask.getAddressee(), testSendtask.getTitle(), testSendtask.getContent()); @@ -192,7 +210,12 @@ 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 27917bb..0ff97a7 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,12 +1,21 @@ 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 65ad5c5..4ae133d 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,4 +1,5 @@ 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; @@ -11,57 +12,71 @@ 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 2bb8a36..78d6d35 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,4 +1,5 @@ package com.ots.project.tool.report.JAQ; + import com.alibaba.fastjson.JSONObject; import com.ots.common.enums.LangTypeEnum; import com.ots.common.utils.StringUtils; @@ -16,18 +17,33 @@ 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); @@ -40,6 +56,7 @@ 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 -> { @@ -49,7 +66,7 @@ } StringBuilder stringBuilder = new StringBuilder(); List<String> listOfTopicNumbers = item.getListOfTopicNumbers(); - + //鏌ユ壘瀵逛簬鐨勪富棰樼洰(鏍规嵁JAQ棰樼洰缂栫爜锛屽拰璇█绫诲瀷鎵鹃鐩�) listOfTopicNumbers.stream().forEach(p -> { String topic = queryTopic(langType, p); if (StringUtils.isBlank(topic)) { @@ -61,6 +78,7 @@ }); return table4; } + List<Table3> getTable3(ReportAPIResult result, LangTypeEnum langType) { List<Table3> table3 = result.getTable3(); table3.stream().forEach(item -> { @@ -71,6 +89,7 @@ }); return table3; } + List<Table2> getTable2(ReportAPIResult result, LangTypeEnum langType) { List<Table2> table2 = result.getTable2(); table2.stream().forEach(item -> { @@ -81,6 +100,7 @@ }); return table2; } + List<Table1> getTable1(ReportAPIResult result, LangTypeEnum langType) { List<Table1> table1 = result.getTable1(); table1.stream().forEach(item -> { @@ -91,7 +111,14 @@ }); 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 cdac1ce..1592d84 100644 --- a/src/main/resources/application-sand.yml +++ b/src/main/resources/application-sand.yml @@ -1,35 +1,56 @@ +# 椤圭洰鐩稿叧閰嶇疆 ots: + # 鍚嶇О name: ots + # 鐗堟湰 version: 1.0.5 + # 鐗堟潈骞翠唤 copyrightYear: 2020 + # 瀹炰緥婕旂ず寮�鍏� demoEnabled: false + # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ots/uploadPath锛孡inux閰嶇疆 /home/data/ots/uploadPath锛� profile: /home/data/ots/uploadPath + # 鍥剧墖鐨剈rl锛屽:vue绔http://139.199.11.114/images鍦板潃 imagePath: http://120.24.39.179:8090/profile/images + # 鑾峰彇ip鍦板潃寮�鍏� addressEnabled: true + # 鎶ュ憡妯$増鍦板潃 reportTemplates: /home/data/ots/reportTemplates/ + # http profile httpProfilePath: http://120.24.39.179:8090/profile - +# 鏁版嵁婧愰厤缃� spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver druid: + # 涓诲簱鏁版嵁婧� master: url: jdbc:mysql://120.24.39.179:3306/ots-sand?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root password: TAI@2019#Zjun + # 浠庡簱鏁版嵁婧� slave: + # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴 enabled: false url: username: - password: + password: + # 鍒濆杩炴帴鏁� initialSize: 5 + # 鏈�灏忚繛鎺ユ睜鏁伴噺 minIdle: 10 + # 鏈�澶ц繛鎺ユ睜鏁伴噺 maxActive: 20 + # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂� maxWait: 60000 + # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣 timeBetweenEvictionRunsMillis: 60000 + # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣 minEvictableIdleTimeMillis: 300000 + # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣 maxEvictableIdleTimeMillis: 900000 + # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁� validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: false @@ -38,29 +59,30 @@ enabled: true statViewServlet: enabled: true + # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂� allow: url-pattern: /druid/* + # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮� login-username: login-password: filter: stat: enabled: true + # 鎱QL璁板綍 log-slow-sql: true slow-sql-millis: 1000 merge-sql: true wall: config: multi-statement-allow: true - +# 閭欢鏈嶅姟 mail: +# VUE绔闂湴鍧� vue: url: http://120.24.39.179/exam-stu/#/ots/{0}/login +# 杩滅▼娉板浗璁$畻鏈嶅姟 ATSTai: host: 127.0.0.1 - port: 9123 -jasypt: - encryptor: - password: 5ciqxnka5s02w9qu - algorithm: PBEWithMD5AndDES \ No newline at end of file + port: 9123 \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index bdfe337..ab5b1fc 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,78 +1,125 @@ +# 鐜閰嶇疆 server: + # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负80 port: 8090 servlet: + # 搴旂敤鐨勮闂矾寰� context-path: / tomcat: + # tomcat鐨刄RI缂栫爜 uri-encoding: UTF-8 + # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200 max-threads: 800 + # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�25 min-spare-threads: 30 - +# 鏃ュ織閰嶇疆 logging: level: com.ots: debug org.springframework: warn +# 鐢ㄦ埛閰嶇疆 user: password: + # 瀵嗙爜閿欒{maxRetryCount}娆¢攣瀹�10鍒嗛挓 maxRetryCount: 5 +# Spring閰嶇疆 spring: + # 妯℃澘寮曟搸 thymeleaf: mode: HTML encoding: utf-8 + # 绂佺敤缂撳瓨 cache: false + # 璧勬簮淇℃伅 messages: + # 鍥介檯鍖栬祫婧愭枃浠惰矾寰� basename: static/i18n/messages jackson: time-zone: GMT+8 date-format: yyyy-MM-dd HH:mm:ss profiles: - active: sand + active: online + # 鏂囦欢涓婁紶 servlet: multipart: + # 鍗曚釜鏂囦欢澶у皬 max-file-size: 10MB + # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬 max-request-size: 20MB + # 鏈嶅姟妯″潡 devtools: restart: + # 鐑儴缃插紑鍏� enabled: true +# MyBatis mybatis: + # 鎼滅储鎸囧畾鍖呭埆鍚� typeAliasesPackage: com.ots.project + # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢 mapperLocations: classpath:mybatis/**/*Mapper.xml + # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠� configLocation: classpath:mybatis/mybatis-config.xml +# PageHelper鍒嗛〉鎻掍欢 pagehelper: helperDialect: mysql reasonable: true supportMethodsArguments: true params: count=countSql +# Shiro shiro: user: + # 鐧诲綍鍦板潃 loginUrl: /login + # 鏉冮檺璁よ瘉澶辫触鍦板潃 unauthorizedUrl: /unauth + # 棣栭〉鍦板潃 indexUrl: /index + # 楠岃瘉鐮佸紑鍏� captchaEnabled: true + # 楠岃瘉鐮佺被鍨� math 鏁扮粍璁$畻 char 瀛楃 captchaType: math cookie: - domain: + # 璁剧疆Cookie鐨勫煙鍚� 榛樿绌猴紝鍗冲綋鍓嶈闂殑鍩熷悕 + domain: + # 璁剧疆cookie鐨勬湁鏁堣闂矾寰� path: / + # 璁剧疆HttpOnly灞炴�� httpOnly: true + # 璁剧疆Cookie鐨勮繃鏈熸椂闂达紝澶╀负鍗曚綅 maxAge: 30 session: + # Session瓒呮椂鏃堕棿锛堥粯璁�30鍒嗛挓锛� expireTime: 30 + # 鍚屾session鍒版暟鎹簱鐨勫懆鏈燂紙榛樿1鍒嗛挓锛� dbSyncPeriod: 1 + # 鐩搁殧澶氫箙妫�鏌ヤ竴娆ession鐨勬湁鏁堟�э紝榛樿灏辨槸10鍒嗛挓 validationInterval: 10 + # 鍚屼竴涓敤鎴锋渶澶т細璇濇暟锛屾瘮濡�2鐨勬剰鎬濇槸鍚屼竴涓处鍙峰厑璁告渶澶氬悓鏃朵袱涓汉鐧诲綍锛堥粯璁�-1涓嶉檺鍒讹級 maxSession: -1 + # 韪㈠嚭涔嬪墠鐧诲綍鐨�/涔嬪悗鐧诲綍鐨勭敤鎴凤紝榛樿韪㈠嚭涔嬪墠鐧诲綍鐨勭敤鎴� kickoutAfter: false -xss: +# 闃叉XSS鏀诲嚮 +xss: + # 杩囨护寮�鍏� enabled: true + # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛� excludes: /system/notice/* + # 鍖归厤閾炬帴 urlPatterns: /system/*,/monitor/*,/tool/* -gen: +# 浠g爜鐢熸垚 +gen: + # 浣滆�� author: ots + # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool packageName: com.ots.project + # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true autoRemovePre: true + # 琛ㄥ墠缂�(绫诲悕涓嶄細鍖呭惈琛ㄥ墠缂�) tablePrefix: sys_ diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml new file mode 100644 index 0000000..9081e29 --- /dev/null +++ b/src/main/resources/logback.xml @@ -0,0 +1,70 @@ +<?xml version="1.0" encoding="UTF-8"?> +<configuration> + <!-- 鏃ュ織瀛樻斁璺緞 --> + <property name="log.path" value="/home/data/ots/logs" /> + <!-- 鏃ュ織杈撳嚭鏍煎紡 --> + <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" /> + + <!-- 鎺у埗鍙拌緭鍑� --> + <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <pattern>${log.pattern}</pattern> + </encoder> + </appender> + + <!-- 绯荤粺鏃ュ織杈撳嚭 --> + <appender name="file_sys" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${log.path}/ots-sys.log</file> + <!-- 寰幆鏀跨瓥锛氬熀浜庢椂闂村垱寤烘棩蹇楁枃浠� --> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <!-- 鏃ュ織鏂囦欢鍚嶆牸寮� --> + <fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern> + <!-- 鏃ュ織鏈�澶х殑鍘嗗彶 60澶� --> + <maxHistory>60</maxHistory> + </rollingPolicy> + <encoder> + <pattern>${log.pattern}</pattern> + </encoder> +<!-- <filter class="ch.qos.logback.classic.filter.LevelFilter">--> +<!-- <!– 杩囨护鐨勭骇鍒� –>--> +<!-- <level>INFO</level>--> +<!-- <!– 鍖归厤鏃剁殑鎿嶄綔锛氭帴鏀讹紙璁板綍锛� –>--> +<!-- <onMatch>ACCEPT</onMatch>--> +<!-- <!– 涓嶅尮閰嶆椂鐨勬搷浣滐細鎷掔粷锛堜笉璁板綍锛� –>--> +<!-- <onMismatch>DENY</onMismatch>--> +<!-- </filter>--> + </appender> + + <!-- 鐢ㄦ埛璁块棶鏃ュ織杈撳嚭 --> + <appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${log.path}/sys-user.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <!-- 鎸夊ぉ鍥炴粴 daily --> + <fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern> + <!-- 鏃ュ織鏈�澶х殑鍘嗗彶 60澶� --> + <maxHistory>60</maxHistory> + </rollingPolicy> + <encoder> + <pattern>${log.pattern}</pattern> + </encoder> + </appender> + + <!-- 绯荤粺妯″潡鏃ュ織绾у埆鎺у埗 --> + <logger name="com.ots" level="info" /> + <!-- Spring鏃ュ織绾у埆鎺у埗 --> + <logger name="org.springframework" level="warn" /> + + <root level="info"> + <appender-ref ref="console" /> + </root> + + <!--绯荤粺鎿嶄綔鏃ュ織--> + <root level="info"> + <appender-ref ref="file_sys" /> + </root> + + <!--绯荤粺鐢ㄦ埛鎿嶄綔鏃ュ織--> + <logger name="sys-user" level="info"> + <appender-ref ref="sys-user"/> + </logger> +</configuration> \ No newline at end of file diff --git a/src/main/resources/mailConfig.properties b/src/main/resources/mailConfig.properties index 8f631bb..1bf8d25 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=xxxxx +mailUsername=guobiao8900@126.com #\u90AE\u7BB1\u6388\u6743\u7801 -mailPassword=xxxxxx +mailPassword= #\u65F6\u95F4\u5EF6\u8FDF mailTimeout=25000 #\u53D1\u9001\u4EBA -mailFrom=xxxxx +mailFrom=guobiao8900@126.com #\u53D1\u4EF6\u4EBA personal=\u9ED1\u767D\u8272\u8C03 #\u4E3B\u9898 diff --git a/src/main/resources/mybatis/tool/GenTableColumnMapper.xml b/src/main/resources/mybatis/tool/GenTableColumnMapper.xml new file mode 100644 index 0000000..4203db3 --- /dev/null +++ b/src/main/resources/mybatis/tool/GenTableColumnMapper.xml @@ -0,0 +1,120 @@ +<?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="com.ots.project.tool.gen.mapper.GenTableColumnMapper"> + + <resultMap type="GenTableColumn" id="GenTableColumnResult"> + <id property="columnId" column="column_id" /> + <result property="tableId" column="table_id" /> + <result property="columnName" column="column_name" /> + <result property="columnComment" column="column_comment" /> + <result property="columnType" column="column_type" /> + <result property="javaType" column="java_type" /> + <result property="javaField" column="java_field" /> + <result property="isPk" column="is_pk" /> + <result property="isIncrement" column="is_increment" /> + <result property="isRequired" column="is_required" /> + <result property="isInsert" column="is_insert" /> + <result property="isEdit" column="is_edit" /> + <result property="isList" column="is_list" /> + <result property="isQuery" column="is_query" /> + <result property="queryType" column="query_type" /> + <result property="htmlType" column="html_type" /> + <result property="dictType" column="dict_type" /> + <result property="sort" column="sort" /> + <result property="createBy" column="create_by" /> + <result property="createTime" column="create_time" /> + <result property="updateBy" column="update_by" /> + <result property="updateTime" column="update_time" /> + </resultMap> + + <sql id="selectGenTableColumnVo"> + select column_id, table_id, column_name, column_comment, column_type, java_type, java_field, is_pk, is_increment, is_required, is_insert, is_edit, is_list, is_query, query_type, html_type, dict_type, sort, create_by, create_time, update_by, update_time from gen_table_column + </sql> + + <select id="selectGenTableColumnListByTableId" parameterType="GenTableColumn" resultMap="GenTableColumnResult"> + <include refid="selectGenTableColumnVo"/> + where table_id = #{tableId} + order by sort + </select> + + <select id="selectDbTableColumnsByName" parameterType="String" resultMap="GenTableColumnResult"> + select column_name, (case when (is_nullable = 'no' <![CDATA[ && ]]> column_key != 'pri') then '1' else null end) as is_required, (case when column_key = 'pri' then '1' else '0' end) as is_pk, ordinal_position as sort, column_comment, (case when extra = 'auto_increment' then '1' else '0' end) as is_increment, column_type + from information_schema.columns where table_schema = (select database()) and table_name = (#{tableName}) + order by ordinal_position + </select> + + <insert id="insertGenTableColumn" parameterType="GenTableColumn" useGeneratedKeys="true" keyProperty="columnId"> + insert into gen_table_column ( + <if test="tableId != null and tableId != ''">table_id,</if> + <if test="columnName != null and columnName != ''">column_name,</if> + <if test="columnComment != null and columnComment != ''">column_comment,</if> + <if test="columnType != null and columnType != ''">column_type,</if> + <if test="javaType != null and javaType != ''">java_type,</if> + <if test="javaField != null and javaField != ''">java_field,</if> + <if test="isPk != null and isPk != ''">is_pk,</if> + <if test="isIncrement != null and isIncrement != ''">is_increment,</if> + <if test="isRequired != null and isRequired != ''">is_required,</if> + <if test="isInsert != null and isInsert != ''">is_insert,</if> + <if test="isEdit != null and isEdit != ''">is_edit,</if> + <if test="isList != null and isList != ''">is_list,</if> + <if test="isQuery != null and isQuery != ''">is_query,</if> + <if test="queryType != null and queryType != ''">query_type,</if> + <if test="htmlType != null and htmlType != ''">html_type,</if> + <if test="dictType != null and dictType != ''">dict_type,</if> + <if test="sort != null">sort,</if> + <if test="createBy != null and createBy != ''">create_by,</if> + create_time + )values( + <if test="tableId != null and tableId != ''">#{tableId},</if> + <if test="columnName != null and columnName != ''">#{columnName},</if> + <if test="columnComment != null and columnComment != ''">#{columnComment},</if> + <if test="columnType != null and columnType != ''">#{columnType},</if> + <if test="javaType != null and javaType != ''">#{javaType},</if> + <if test="javaField != null and javaField != ''">#{javaField},</if> + <if test="isPk != null and isPk != ''">#{isPk},</if> + <if test="isIncrement != null and isIncrement != ''">#{isIncrement},</if> + <if test="isRequired != null and isRequired != ''">#{isRequired},</if> + <if test="isInsert != null and isInsert != ''">#{isInsert},</if> + <if test="isEdit != null and isEdit != ''">#{isEdit},</if> + <if test="isList != null and isList != ''">#{isList},</if> + <if test="isQuery != null and isQuery != ''">#{isQuery},</if> + <if test="queryType != null and queryType != ''">#{queryType},</if> + <if test="htmlType != null and htmlType != ''">#{htmlType},</if> + <if test="dictType != null and dictType != ''">#{dictType},</if> + <if test="sort != null">#{sort},</if> + <if test="createBy != null and createBy != ''">#{createBy},</if> + sysdate() + ) + </insert> + + <update id="updateGenTableColumn" parameterType="GenTableColumn"> + update gen_table_column + <set> + column_comment = #{columnComment}, + java_type = #{javaType}, + java_field = #{javaField}, + is_insert = #{isInsert}, + is_edit = #{isEdit}, + is_list = #{isList}, + is_query = #{isQuery}, + is_required = #{isRequired}, + query_type = #{queryType}, + html_type = #{htmlType}, + dict_type = #{dictType}, + sort = #{sort}, + update_by = #{updateBy}, + update_time = sysdate() + </set> + where column_id = #{columnId} + </update> + + <delete id="deleteGenTableColumnByIds" parameterType="Long"> + delete from gen_table_column where table_id in + <foreach collection="array" item="tableId" open="(" separator="," close=")"> + #{tableId} + </foreach> + </delete> + +</mapper> \ No newline at end of file diff --git a/src/main/resources/mybatis/tool/GenTableMapper.xml b/src/main/resources/mybatis/tool/GenTableMapper.xml new file mode 100644 index 0000000..00ddcbb --- /dev/null +++ b/src/main/resources/mybatis/tool/GenTableMapper.xml @@ -0,0 +1,169 @@ +<?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="com.ots.project.tool.gen.mapper.GenTableMapper"> + + <resultMap type="GenTable" id="GenTableResult"> + <id property="tableId" column="table_id" /> + <result property="tableName" column="table_name" /> + <result property="tableComment" column="table_comment" /> + <result property="className" column="class_name" /> + <result property="tplCategory" column="tpl_category" /> + <result property="packageName" column="package_name" /> + <result property="moduleName" column="module_name" /> + <result property="businessName" column="business_name" /> + <result property="functionName" column="function_name" /> + <result property="functionAuthor" column="function_author" /> + <result property="options" column="options" /> + <result property="createBy" column="create_by" /> + <result property="createTime" column="create_time" /> + <result property="updateBy" column="update_by" /> + <result property="updateTime" column="update_time" /> + <result property="remark" column="remark" /> + <collection property="columns" javaType="java.util.List" resultMap="GenTableColumnResult" /> + </resultMap> + + <resultMap type="GenTableColumn" id="GenTableColumnResult"> + <id property="columnId" column="column_id" /> + <result property="tableId" column="table_id" /> + <result property="columnName" column="column_name" /> + <result property="columnComment" column="column_comment" /> + <result property="columnType" column="column_type" /> + <result property="javaType" column="java_type" /> + <result property="javaField" column="java_field" /> + <result property="isPk" column="is_pk" /> + <result property="isIncrement" column="is_increment" /> + <result property="isRequired" column="is_required" /> + <result property="isInsert" column="is_insert" /> + <result property="isEdit" column="is_edit" /> + <result property="isList" column="is_list" /> + <result property="isQuery" column="is_query" /> + <result property="queryType" column="query_type" /> + <result property="htmlType" column="html_type" /> + <result property="dictType" column="dict_type" /> + <result property="sort" column="sort" /> + <result property="createBy" column="create_by" /> + <result property="createTime" column="create_time" /> + <result property="updateBy" column="update_by" /> + <result property="updateTime" column="update_time" /> + </resultMap> + + <sql id="selectGenTableVo"> + select table_id, table_name, table_comment, class_name, tpl_category, package_name, module_name, business_name, function_name, function_author, options, create_by, create_time, update_by, update_time, remark from gen_table + </sql> + + <select id="selectGenTableList" parameterType="GenTable" resultMap="GenTableResult"> + <include refid="selectGenTableVo"/> + <where> + <if test="tableName != null and tableName != ''"> + table_name like concat('%', #{tableName}, '%') + </if> + <if test="tableComment != null and tableComment != ''"> + AND table_comment like concat('%', #{tableComment}, '%') + </if> + </where> + </select> + + <select id="selectDbTableList" parameterType="GenTable" resultMap="GenTableResult"> + select table_name, table_comment, create_time, update_time from information_schema.tables + where table_schema = (select database()) + AND table_name NOT LIKE 'qrtz_%' AND table_name NOT LIKE 'gen_%' + AND table_name NOT IN (select table_name from gen_table) + <if test="tableName != null and tableName != ''"> + AND table_name like concat('%', #{tableName}, '%') + </if> + <if test="tableComment != null and tableComment != ''"> + AND table_comment like concat('%', #{tableComment}, '%') + </if> + </select> + + <select id="selectDbTableListByNames" resultMap="GenTableResult"> + select table_name, table_comment, create_time, update_time from information_schema.tables + where table_name NOT LIKE 'qrtz_%' and table_name NOT LIKE 'gen_%' and table_schema = (select database()) + and table_name in + <foreach collection="array" item="name" open="(" separator="," close=")"> + #{name} + </foreach> + </select> + + <select id="selectTableByName" parameterType="String" resultMap="GenTableResult"> + select table_name, table_comment, create_time, update_time from information_schema.tables + where table_comment <![CDATA[ <> ]]> '' and table_schema = (select database()) + and table_name = #{tableName} + </select> + + <select id="selectGenTableById" parameterType="Long" resultMap="GenTableResult"> + SELECT t.table_id, t.table_name, t.table_comment, t.class_name, t.tpl_category, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.options, t.remark, + c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort + FROM gen_table t + LEFT JOIN gen_table_column c ON t.table_id = c.table_id + where t.table_id = #{tableId} + </select> + + <select id="selectGenTableByName" parameterType="String" resultMap="GenTableResult"> + SELECT t.table_id, t.table_name, t.table_comment, t.class_name, t.tpl_category, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.options, t.remark, + c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort + FROM gen_table t + LEFT JOIN gen_table_column c ON t.table_id = c.table_id + where t.table_name = #{tableName} + </select> + + <insert id="insertGenTable" parameterType="GenTable" useGeneratedKeys="true" keyProperty="tableId"> + insert into gen_table ( + <if test="tableName != null">table_name,</if> + <if test="tableComment != null and tableComment != ''">table_comment,</if> + <if test="className != null and className != ''">class_name,</if> + <if test="tplCategory != null and tplCategory != ''">tpl_category,</if> + <if test="packageName != null and packageName != ''">package_name,</if> + <if test="moduleName != null and moduleName != ''">module_name,</if> + <if test="businessName != null and businessName != ''">business_name,</if> + <if test="functionName != null and functionName != ''">function_name,</if> + <if test="functionAuthor != null and functionAuthor != ''">function_author,</if> + <if test="remark != null and remark != ''">remark,</if> + <if test="createBy != null and createBy != ''">create_by,</if> + create_time + )values( + <if test="tableName != null">#{tableName},</if> + <if test="tableComment != null and tableComment != ''">#{tableComment},</if> + <if test="className != null and className != ''">#{className},</if> + <if test="tplCategory != null and tplCategory != ''">#{tplCategory},</if> + <if test="packageName != null and packageName != ''">#{packageName},</if> + <if test="moduleName != null and moduleName != ''">#{moduleName},</if> + <if test="businessName != null and businessName != ''">#{businessName},</if> + <if test="functionName != null and functionName != ''">#{functionName},</if> + <if test="functionAuthor != null and functionAuthor != ''">#{functionAuthor},</if> + <if test="remark != null and remark != ''">#{remark},</if> + <if test="createBy != null and createBy != ''">#{createBy},</if> + sysdate() + ) + </insert> + + <update id="updateGenTable" parameterType="GenTable"> + update gen_table + <set> + <if test="tableName != null">table_name = #{tableName},</if> + <if test="tableComment != null and tableComment != ''">table_comment = #{tableComment},</if> + <if test="className != null and className != ''">class_name = #{className},</if> + <if test="functionAuthor != null and functionAuthor != ''">function_author = #{functionAuthor},</if> + <if test="tplCategory != null and tplCategory != ''">tpl_category = #{tplCategory},</if> + <if test="packageName != null and packageName != ''">package_name = #{packageName},</if> + <if test="moduleName != null and moduleName != ''">module_name = #{moduleName},</if> + <if test="businessName != null and businessName != ''">business_name = #{businessName},</if> + <if test="functionName != null and functionName != ''">function_name = #{functionName},</if> + <if test="options != null and options != ''">options = #{options},</if> + <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if> + <if test="remark != null">remark = #{remark},</if> + update_time = sysdate() + </set> + where table_id = #{tableId} + </update> + + <delete id="deleteGenTableByIds" parameterType="Long"> + delete from gen_table where table_id in + <foreach collection="array" item="tableId" open="(" separator="," close=")"> + #{tableId} + </foreach> + </delete> + +</mapper> \ No newline at end of file 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 fcc94da..a7aa009 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,615 +1,2 @@ /** 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: ["鏃�", "涓�", "浜�", "涓�", "鍥�", "浜�", "鍏�"], - 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 = "", e - }(), function () { - var e = w.elem("i", {"class": "layui-icon laydate-icon laydate-prev-m"}); - return e.innerHTML = "", 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 = "", e - }(), function () { - var e = w.elem("i", {"class": "layui-icon laydate-icon laydate-next-y"}); - return e.innerHTML = "", 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:["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="",e}(),function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-prev-m"});return e.innerHTML="",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="",e}(),function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-next-y"});return e.innerHTML="",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/i18n/messages_en_US.properties b/src/main/resources/static/i18n/messages_en_US.properties index 409c029..113ae9c 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=Creating Time +basis.createTime=Create Time basis.createName=Creator basis.createBy=CreatorID basis.languageVersion=Language Version @@ -120,7 +120,6 @@ 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 @@ -183,7 +182,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=Search test-takers +menu.exam.testMember.list=View Testtaker menu.exam.testMember.add=Add Testtaker menu.exam.testMember.edit=Edit Testtaker menu.exam.testMember.remove=Delete Testtaker @@ -317,8 +316,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 -jsp.exam.report.007=Test Product +jsp.exam.report.006=Test package Name +jsp.exam.report.007=Product Name jsp.exam.report.008=User Name jsp.exam.report.009=Client Name jsp.exam.report.010=Distributor User @@ -347,7 +346,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=Assigned # of Tests +jsp.exam.test_package.009=Testtakers 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 @@ -385,7 +384,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 +jsp.system.dept.002=Dept Name jsp.system.dept.003=Show Ordering jsp.system.dept.004=Contact Person jsp.system.dept.005=Telephone @@ -580,7 +579,7 @@ dict.ic124=Chinese dict.ic125=English dict.ic126=\u0E44\u0E17\u0E22 -dict.ic127=In Use +dict.ic127=Start dict.ic128=Pause dict.ic129=End dict.ic130=Expire @@ -712,7 +711,7 @@ basis.content=Content basis.testPackageName=Test Package Nme basis.testProducts=Product Name -basis.area=Region +basis.area=Area jsp.monitor.operlog.systemModule=System Module jsp.monitor.operlog.logNumber=Log Number jsp.monitor.operlog.operator=Operator @@ -753,7 +752,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 Ending time +jsp.exam.test_package.endTime=Test End time jsp.exam.test_package.testinfo=View Progress jsp.exam.test_package.testtoken=token jsp.exam.test_package.timeSpent=Time Spent @@ -943,17 +942,15 @@ 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=Test-taker +test.user.name=User Name language.used.in.the.test=Test Language current.time=DateTime -enterprise.customer.name=Client/Distributor -test.product.name=Test Product +enterprise.customer.name=Company Name +test.product.name=Product Package Name 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# test.user.name.dict4=Search by Test-Taker Code 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 \ No newline at end of file +jsp.main.other.003=Recently Created Test Packages \ No newline at end of file diff --git a/src/main/resources/static/i18n/messages_th_TH.properties b/src/main/resources/static/i18n/messages_th_TH.properties index 7c7da7d..6e9ebc4 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=\u641C\u7D22\u4F01\u4E1A +menu.exam.enterprise.view=\u4F01\u4E1A\u7528\u6237\u5217\u8868 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=\u641C\u7D22\u6D4B\u8BD5\u7528\u6237\u4EBA\u5458 +menu.exam.testMember.list=\u67E5\u770B\u8BC4\u6D4B\u4EBA\u5458\u5217\u8868 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 @@ -944,11 +944,9 @@ 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=\u6700\u540E\u72B6\u6001\u65F6\u95F4 +current.time=\u5F53\u524D\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 +jsp.main.other.003=\u6700\u8FD1\u521B\u5EFA\u7684\u6D4B\u8BD5\u5305 \ No newline at end of file diff --git a/src/main/resources/static/i18n/messages_zh_CN.properties b/src/main/resources/static/i18n/messages_zh_CN.properties index 1e78853..1489d9b 100644 --- a/src/main/resources/static/i18n/messages_zh_CN.properties +++ b/src/main/resources/static/i18n/messages_zh_CN.properties @@ -120,7 +120,6 @@ 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 @@ -183,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=\u641C\u7D22\u6D4B\u8BD5\u7528\u6237\u4EBA\u5458 +menu.exam.testMember.list=\u67E5\u770B\u8BC4\u6D4B\u4EBA\u5458\u5217\u8868 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 @@ -953,7 +952,5 @@ 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=\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 \ No newline at end of file +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 \ No newline at end of file diff --git a/src/main/resources/static/ots/js/common.js b/src/main/resources/static/ots/js/common.js index 7d2c51c..5fcc985 100644 --- a/src/main/resources/static/ots/js/common.js +++ b/src/main/resources/static/ots/js/common.js @@ -26,22 +26,9 @@ // 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', @@ -60,7 +47,6 @@ }); 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 cd5a0b3..17b6110 100644 --- a/src/main/resources/templates/exam/demographyParam/demographyParam.html +++ b/src/main/resources/templates/exam/demographyParam/demographyParam.html @@ -45,15 +45,13 @@ <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="exam:demographyParam:add"> <i class="fa fa-plus"></i> [[#{basis.add}]] </a> - <a style="background-color: #7b76b7;border-color: #7b76b7;color: #FFFFFF" - class="btn single disabled" onclick="$.operate.edit()" shiro:hasPermission="exam:demographyParam:edit"> + <a class="btn btn-primary 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 style="background-color: #a87242;border-color: #a87242;color: #FFFFFF" - class="btn" onclick="$.table.exportExcel()" shiro:hasPermission="exam:demographyParam:export"> + <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="exam:demographyParam:export"> <i class="fa fa-download"></i> [[#{basis.export}]] </a> </div> @@ -147,17 +145,16 @@ 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 6eb4168..8477e08 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 single disabled" style="background-color: #7b76b7;border-color: #7b76b7;color: #FFFFFF" onclick="$.operate.editTab()" shiro:hasPermission="exam:distributor:edit"> + <a class="btn btn-primary single disabled" 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 single disabled" style="background-color: #6fcef3;border-color: #6fcef3;color: #FFFFFF" onclick="resetpwd()" shiro:hasPermission="exam:enterprise:resetpwd"> + <a class="btn btn-warning single disabled" onclick="resetpwd()" shiro:hasPermission="exam:enterprise:resetpwd"> <i class="fa fa-edit"></i> [[#{menu.user.resetpwd}]] </a> </div> @@ -97,10 +97,10 @@ align: 'center', formatter: function(value, row, index) { var actions = []; - 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-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>'); return actions.join(''); } }] diff --git a/src/main/resources/templates/exam/enterprise/enterprise.html b/src/main/resources/templates/exam/enterprise/enterprise.html index 102d433..1caa235 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 single disabled" style="background-color: #7b76b7;border-color: #7b76b7;color: #FFFFFF" onclick="$.operate.editTab()" shiro:hasPermission="exam:enterprise:edit"> + <a class="btn btn-primary single disabled" onclick="$.operate.editTab()" shiro:hasPermission="exam:enterprise:edit"> <i class="fa fa-edit"></i> [[#{basis.edit}]] </a> - <a class="btn btn-info single disabled" onclick="operUseTimes()" shiro:hasPermission="exam:enterprise:editUserTimes"> + <a class="btn btn-warning single disabled" onclick="operUseTimes()" shiro:hasPermission="exam:enterprise:editUserTimes"> <i class="fa fa-edit"></i> [[#{jsp.test.number.setting}]] </a> - <a class="btn single disabled" style="background-color: #6fcef3;border-color: #6fcef3;color: #FFFFFF" onclick="resetpwd()" shiro:hasPermission="exam:enterprise:resetpwd"> + <a class="btn btn-warning single disabled" 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 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> '); + 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> '); return actions.join(''); } }] diff --git a/src/main/resources/templates/exam/level/level.html b/src/main/resources/templates/exam/level/level.html index 9f01b66..c07d5a2 100644 --- a/src/main/resources/templates/exam/level/level.html +++ b/src/main/resources/templates/exam/level/level.html @@ -42,16 +42,14 @@ <i class="fa fa-plus"></i> [[#{jsp.add.language}]] </a> - <a style="background-color: #7b76b7;border-color: #7b76b7;color: #FFFFFF" - class="btn single disabled" onclick="$.operate.edit()" shiro:hasPermission="exam:level:edit"> + <a class="btn btn-primary 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 style="background-color: #a87242;border-color: #a87242;color: #FFFFFF" - class="btn" onclick="$.table.exportExcel()" shiro:hasPermission="exam:level:export"> + <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="exam:level:export"> <i class="fa fa-download"></i> [[#{basis.export}]] </a> </div> @@ -111,8 +109,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 a3ede9a..075b985 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-default" onclick="$.table.exportExcel()" shiro:hasPermission="exam:librarycode:export"> + <a class="btn btn-warning" 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.librarycode.englishdictionarycontent}]] + title: [[#{jsp.exam.template.reportdict}]] }, { field: 'chineseContent', @@ -114,17 +114,16 @@ 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 a61ec57..12484ce 100644 --- a/src/main/resources/templates/exam/product/product.html +++ b/src/main/resources/templates/exam/product/product.html @@ -51,8 +51,7 @@ shiro:hasPermission="exam:product:remove"> <i class="fa fa-remove"></i> [[#{basis.del}]] </a> - <a style="background-color: #a87242;border-color: #a87242;color: #FFFFFF" - class="btn" onclick="$.table.exportExcel()" shiro:hasPermission="exam:product:export"> + <a class="btn btn-warning" 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 a80d422..703eac3 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 = 6; + var clicknum = 2; // 澶氳瑷�鐨剈uid var uuid = $("input[name='uuid']").val(); @@ -209,14 +209,15 @@ 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(clicknum); - $contenChildren.eq(1).val(clicknum); + $contenChildren.eq(0).html(option[clicknum]); + $contenChildren.eq(1).val(option[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 271a9af..e20f05c 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-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>'); + 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>'); } 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 5e81112..f977352 100644 --- a/src/main/resources/templates/exam/template/template.html +++ b/src/main/resources/templates/exam/template/template.html @@ -44,15 +44,13 @@ <a class="btn btn-success" onclick="$.operate.addTab()" shiro:hasPermission="exam:template:add"> <i class="fa fa-plus"></i> [[#{dict.ic18}]] </a> - <a style="background-color: #7b76b7;border-color: #7b76b7;color: #FFFFFF" - class="btn single disabled" onclick="$.operate.editTab()" shiro:hasPermission="exam:template:edit"> + <a class="btn btn-primary 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 style="background-color: #a87242;border-color: #a87242;color: #FFFFFF" - class="btn" onclick="$.table.exportExcel()" shiro:hasPermission="exam:template:export"> + <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="exam:template:export"> <i class="fa fa-download"></i> [[#{dict.ic22}]] </a> </div> @@ -115,17 +113,16 @@ 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 e646345..a054178 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"> + <input name="remark" class="form-control" type="text" required> </div> </div> </form> diff --git a/src/main/resources/templates/exam/testMember/edit.html b/src/main/resources/templates/exam/testMember/edit.html index 0de8a3c..d5e5290 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"> + <input name="remark" th:field="*{remark}" class="form-control" type="text" required> </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 24ec4ce..697eda5 100644 --- a/src/main/resources/templates/exam/testMember/testMember.html +++ b/src/main/resources/templates/exam/testMember/testMember.html @@ -69,8 +69,7 @@ <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="exam:testMember:add"> <i class="fa fa-plus"></i> [[#{basis.add}]] </a> - <a style="background-color: #7b76b7;border-color: #7b76b7;color: #FFFFFF" - class="btn single disabled" onclick="$.operate.edit()" + <a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="exam:testMember:edit"> <i class="fa fa-edit"></i> [[#{basis.edit}]] </a> @@ -78,8 +77,7 @@ shiro:hasPermission="exam:testMember:remove"> <i class="fa fa-remove"></i> [[#{basis.del}]] </a> - <a style="background-color: #a87242;border-color: #a87242;color: #FFFFFF" - class="btn" onclick="$.table.exportExcel()" shiro:hasPermission="exam:testMember:export"> + <a class="btn btn-warning" 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"> @@ -251,9 +249,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 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>'); + 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>'); 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 682f0eb..9e6b883 100644 --- a/src/main/resources/templates/exam/test_package/test_package.html +++ b/src/main/resources/templates/exam/test_package/test_package.html @@ -77,8 +77,7 @@ <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="exam:test_package:add"> <i class="fa fa-plus"></i> [[#{basis.create}]] </a> - <a style="background-color: #7b76b7;border-color: #7b76b7;color: #FFFFFF" - class="btn single disabled" onclick="$.operate.edit()" + <a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="exam:test_package:edit"> <i class="fa fa-edit"></i> [[#{basis.edit}]] </a> @@ -86,16 +85,13 @@ shiro:hasPermission="exam:test_package:remove"> <i class="fa fa-remove"></i> [[#{basis.del}]] </a> - <a style="background-color: #a87242;border-color: #a87242;color: #FFFFFF" - class="btn" onclick="$.table.exportExcel()" shiro:hasPermission="exam:test_package:export"> + <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="exam:test_package:export"> <i class="fa fa-download"></i> [[#{basis.export}]] </a> - <a style="background-color: #6fcef3;border-color: #6fcef3;color: #FFFFFF" - class="btn" onclick="javascript:recover()" shiro:hasPermission="exam:test_package:recover"> + <a class="btn btn-default" onclick="javascript:recover()" shiro:hasPermission="exam:test_package:recover"> <i class="fa fa-address-book"></i> [[#{jsp.exam.test_package.006}]] </a> - <a style="background-color: #7b76b7;border-color: #7b76b7;color: #FFFFFF" - class="btn" onclick="javascript:testReport()" shiro:hasPermission="exam:test_package:testreport"> + <a class="btn btn-warning" onclick="javascript:testReport()" shiro:hasPermission="exam:test_package:testreport"> <i class="fa fa-download"></i> [[#{jsp.exam.test_package.007}]] </a> </div> @@ -239,8 +235,8 @@ align: 'center', formatter: function (value, row, index) { var actions = []; - // 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>'); + 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/userpaper/edit.html b/src/main/resources/templates/exam/userpaper/edit.html index 5324011..bcf0726 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,24 +26,16 @@ <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"--> + <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"--> <!-- 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"> @@ -67,7 +59,6 @@ <th:block th:include="include :: bootstrap-select-js"/> <script type="text/javascript"> var prefix = ctx + "exam/paper"; - $("#form-demographyParam-edit").validate({ focusCleanup: true }); @@ -115,56 +106,36 @@ $.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 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] + ","; + 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 reportTemplateText = $("#reportTemplateId option:selected").text(); - $.post(prefix + "/reportTemplateText/" + reportTemplateId, function (data) { - if (checkDuplicate(prodId)) { - $.modal.alertWarning('瀛樺湪浜у搧鍖呮潈闄愶紝涓嶅厑璁搁噸澶嶆坊鍔狅紒'); - return; + if (checkDuplicate(prodId)) { + $.modal.alertWarning('瀛樺湪浜у搧鍖呮潈闄愶紝涓嶅厑璁搁噸澶嶆坊鍔狅紒'); + return; + } + + $.btTable.bootstrapTable('insertRow', { + index: 0, // 浣犳兂鎻掑叆鍒板摢锛�0琛ㄧず绗竴琛� + row: { + prodId: prodId, + reportTemplateId: reportTemplateId, + reportTemplateText: reportTemplateText, + prodName: prodName } - - $.btTable.bootstrapTable('insertRow', { - index: 0, // 浣犳兂鎻掑叆鍒板摢锛�0琛ㄧず绗竴琛� - row: { - prodId: prodId, - reportTemplateId: reportTemplateId, - reportTemplateText: data, - prodName: prodName - } - }) - }); - + }) } function checkDuplicate(prodId) { diff --git a/src/main/resources/templates/include.html b/src/main/resources/templates/include.html index 9e44cb6..343076f 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> +</div> \ No newline at end of file diff --git a/src/main/resources/templates/main.html b/src/main/resources/templates/main.html index d40f39d..e62de72 100644 --- a/src/main/resources/templates/main.html +++ b/src/main/resources/templates/main.html @@ -15,7 +15,7 @@ id="userName" value=""/> </li> <li><a class="btn btn-primary btn-rounded btn-sm" onclick="openUserList()"><i - class="fa fa-search"></i> [[#{menu.exam.enterprise.view1}]]</a></li> + class="fa fa-search"></i> [[#{menu.exam.enterprise.view}]]</a></li> <li> <input type="text" name="queryValue" id="queryValue" value=""/> <select name="queryType" id="queryType" th:with="type=${@dict.getType('quickQueryType')}"> @@ -340,8 +340,8 @@ showColumns: false, sortName: "updateTime", sortOrder: "desc", - pageSize: 25, - pageList: [25, 100, 200], + pageSize: 50, + pageList: [50, 100, 200], queryParams: querylistTopAnsweFinished, columns: [ { @@ -405,7 +405,7 @@ function openUserList() { var url = ctx + 'exam/enterprise?userName=' + $("#userName").val(); - $.modal.openTab([[#{menu.exam.enterprise.view1}]], url); + $.modal.openTab([[#{menu.exam.enterprise.view}]], url); } function openMemberSearch() { @@ -429,8 +429,8 @@ showColumns: false, sortName: "updateTime", sortOrder: "desc", - pageSize: 25, - pageList: [25, 100, 200], + pageSize: 50, + pageList: [50, 100, 200], queryParams: querylistTopAnswering, columns: [ { @@ -470,16 +470,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: [[#{jsp.main.other.004}]] + title: [[#{current.time}]] }, ] }; @@ -531,7 +531,7 @@ }, { field: 'userName', - title: [[#{enterprise.customer.name}]], + title: [[#{jsp.exam.enterprise.companyname}]], 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>'; @@ -543,7 +543,7 @@ }, { field: 'testType', - title: [[#{jsp.main.other.005}]], + title: [[#{basis.type}]], formatter: function (value, row, index) { return $.table.selectDictLabel(testTypeDatas, value); } @@ -559,21 +559,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}]], @@ -633,7 +633,7 @@ /*浼佷笟鐢ㄦ埛鎴栬�呭垎閿�鍟嗙晫闈�-璇︾粏*/ function userDetail(userId) { var url = ctx + "exam/distributor"; - $.modal.openTab([[#{menu.exam.enterprise.view1}]], url); + $.modal.openTab([[#{menu.exam.enterprise.view}]], url); } </script> </body> diff --git a/src/main/resources/templates/monitor/job/job.html b/src/main/resources/templates/monitor/job/job.html index ade8659..8927114 100644 --- a/src/main/resources/templates/monitor/job/job.html +++ b/src/main/resources/templates/monitor/job/job.html @@ -38,15 +38,13 @@ <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="monitor:job:add"> <i class="fa fa-plus"></i>[[#{basis.add}]] </a> - <a style="background-color: #7b76b7;border-color: #7b76b7;color: #FFFFFF" - class="btn single disabled" onclick="$.operate.edit()" shiro:hasPermission="monitor:job:edit"> + <a class="btn btn-primary 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 style="background-color: #a87242;border-color: #a87242;color: #FFFFFF" - class="btn" onclick="$.table.exportExcel()" shiro:hasPermission="monitor:job:export"> + <a class="btn btn-warning" 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 ce99fb7..220c66a 100644 --- a/src/main/resources/templates/monitor/job/jobLog.html +++ b/src/main/resources/templates/monitor/job/jobLog.html @@ -48,8 +48,7 @@ <a class="btn btn-danger" onclick="$.operate.clean()" shiro:hasPermission="monitor:job:remove"> <i class="fa fa-trash"></i> [[#{basis.clear}]] </a> - <a style="background-color: #a87242;border-color: #a87242;color: #FFFFFF" - class="btn" onclick="$.table.exportExcel()" shiro:hasPermission="monitor:job:export"> + <a class="btn btn-warning" 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 3877b1c..dcdc5d7 100644 --- a/src/main/resources/templates/monitor/operlog/operlog.html +++ b/src/main/resources/templates/monitor/operlog/operlog.html @@ -50,8 +50,7 @@ <a class="btn btn-danger" onclick="$.operate.clean()" shiro:hasPermission="monitor:operlog:remove"> <i class="fa fa-trash"></i> [[#{basis.clear}]] </a> - <a style="background-color: #a87242;border-color: #a87242;color: #FFFFFF" - class="btn" onclick="$.table.exportExcel()" shiro:hasPermission="monitor:operlog:export"> + <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="monitor:operlog:export"> <i class="fa fa-download"></i> [[#{basis.export}]] </a> </div> @@ -141,7 +140,7 @@ align: 'center', formatter: function(value, row, index) { var actions = []; - 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>'); + 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>'); return actions.join(''); } }] diff --git a/src/main/resources/templates/system/dept/dept.html b/src/main/resources/templates/system/dept/dept.html index b288c54..4e699c1 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 beb8834..1bb26be 100644 --- a/src/main/resources/templates/system/dict/data/data.html +++ b/src/main/resources/templates/system/dict/data/data.html @@ -37,15 +37,13 @@ <a class="btn btn-success" onclick="add()" shiro:hasPermission="system:dict:add"> <i class="fa fa-plus"></i>[[#{basis.add}]] </a> - <a style="background-color: #7b76b7;border-color: #7b76b7;color: #FFFFFF" - class="btn single disabled" onclick="$.operate.edit()" shiro:hasPermission="system:dict:edit"> + <a class="btn btn-primary 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 style="background-color: #a87242;border-color: #a87242;color: #FFFFFF" - class="btn" onclick="$.table.exportExcel()" shiro:hasPermission="system:dict:export"> + <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="system:dict:export"> <i class="fa fa-download"></i> [[#{basis.export}]] </a> </div> @@ -109,17 +107,16 @@ 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 6bbf486..a031b72 100644 --- a/src/main/resources/templates/system/dict/type/type.html +++ b/src/main/resources/templates/system/dict/type/type.html @@ -41,15 +41,13 @@ <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="system:dict:add"> <i class="fa fa-plus"></i>[[#{basis.add}]] </a> - <a style="background-color: #7b76b7;border-color: #7b76b7;color: #FFFFFF" - class="btn single disabled" onclick="$.operate.edit()" shiro:hasPermission="system:dict:edit"> + <a class="btn btn-primary 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 style="background-color: #a87242;border-color: #a87242;color: #FFFFFF" - class="btn" onclick="$.table.exportExcel()" shiro:hasPermission="system:dict:export"> + <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="system:dict:export"> <i class="fa fa-download"></i> [[#{basis.export}]] </a> </div> @@ -119,9 +117,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 383b80d..ab49e41 100644 --- a/src/main/resources/templates/system/role/role.html +++ b/src/main/resources/templates/system/role/role.html @@ -41,15 +41,13 @@ <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="system:role:add"> <i class="fa fa-plus"></i>[[#{basis.add}]] </a> - <a style="background-color: #7b76b7;border-color: #7b76b7;color: #FFFFFF" - class="btn single disabled" onclick="$.operate.edit()" shiro:hasPermission="system:role:edit"> + <a class="btn btn-primary 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 style="background-color: #a87242;border-color: #a87242;color: #FFFFFF" - class="btn" onclick="$.table.exportExcel()" shiro:hasPermission="system:role:export"> + <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="system:role:export"> <i class="fa fa-download"></i> [[#{basis.export}]] </a> </div> @@ -115,10 +113,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 c1f003c..7a24d7a 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>[[#{basis.save}]]</button> - <button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>[[#{basis.close}]]</button> + <button type="button" class="btn btn-sm btn-primary" onclick="submitUserInfo()"><i class="fa fa-check"></i>save</button> + <button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>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>[[#{basis.save}]]</button> - <button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>[[#{basis.close}]] </button> + <button type="button" class="btn btn-sm btn-primary" onclick="submitChangPassword()"><i class="fa fa-check"></i>save</button> + <button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>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 f55088b..cdf15ab 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 single disabled" style="background-color: #7b76b7;border-color: #7b76b7;color: #FFFFFF" onclick="$.operate.editTab()" shiro:hasPermission="system:user:edit"> + <a class="btn btn-primary single disabled" 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,8 +54,7 @@ <a class="btn btn-info" onclick="$.table.importExcel()" shiro:hasPermission="system:user:import"> <i class="fa fa-upload"></i> [[#{basis.import}]] </a> - <a style="background-color: #a87242;border-color: #a87242;color: #FFFFFF" - class="btn" onclick="$.table.exportExcel()" shiro:hasPermission="system:user:export"> + <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="system:user:export"> <i class="fa fa-download"></i> [[#{basis.export}]] </a> </div> @@ -142,9 +141,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-warning 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-info 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 new file mode 100644 index 0000000..e6e8a98 --- /dev/null +++ b/src/main/resources/vm/html/add.html.vm @@ -0,0 +1,166 @@ +<!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 new file mode 100644 index 0000000..b886f73 --- /dev/null +++ b/src/main/resources/vm/html/edit.html.vm @@ -0,0 +1,160 @@ +<!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 new file mode 100644 index 0000000..4b854c2 --- /dev/null +++ b/src/main/resources/vm/html/list-tree.html.vm @@ -0,0 +1,150 @@ +<!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> 鎼滅储</a> + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i> 閲嶇疆</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 new file mode 100644 index 0000000..8069d2f --- /dev/null +++ b/src/main/resources/vm/html/list.html.vm @@ -0,0 +1,148 @@ +<!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> 鎼滅储</a> + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i> 閲嶇疆</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 new file mode 100644 index 0000000..a3297c6 --- /dev/null +++ b/src/main/resources/vm/html/tree.html.vm @@ -0,0 +1,51 @@ +<!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 new file mode 100644 index 0000000..9d86e1f --- /dev/null +++ b/src/main/resources/vm/java/controller.java.vm @@ -0,0 +1,200 @@ +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 new file mode 100644 index 0000000..829d11f --- /dev/null +++ b/src/main/resources/vm/java/domain.java.vm @@ -0,0 +1,76 @@ +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 new file mode 100644 index 0000000..7c702f2 --- /dev/null +++ b/src/main/resources/vm/java/mapper.java.vm @@ -0,0 +1,61 @@ +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 new file mode 100644 index 0000000..90dc1fa --- /dev/null +++ b/src/main/resources/vm/java/service.java.vm @@ -0,0 +1,73 @@ +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 new file mode 100644 index 0000000..3ec8c32 --- /dev/null +++ b/src/main/resources/vm/java/serviceImpl.java.vm @@ -0,0 +1,140 @@ +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 new file mode 100644 index 0000000..de26cb3 --- /dev/null +++ b/src/main/resources/vm/sql/sql.vm @@ -0,0 +1,19 @@ +-- 鑿滃崟 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 new file mode 100644 index 0000000..516211e --- /dev/null +++ b/src/main/resources/vm/xml/mapper.xml.vm @@ -0,0 +1,108 @@ +<?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 > #{$javaField}</if> +#elseif(\$queryType == "GTE") + <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName >= #{$javaField}</if> +#elseif(\$queryType == "LT") + <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName < #{$javaField}</if> +#elseif(\$queryType == "LTE") + <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName <= #{$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 new file mode 100644 index 0000000..d4bd927 --- /dev/null +++ b/src/main/scripts/ots.sh @@ -0,0 +1,141 @@ +#!/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