|
@@ -4,7 +4,6 @@ import jakarta.annotation.Resource
|
|
|
import org.brynhild.graduation.common.constant.AccountConstant
|
|
|
import org.brynhild.graduation.common.transfer.dto.Result
|
|
|
import org.brynhild.graduation.common.utils.JwtUtil
|
|
|
-import org.brynhild.graduation.persistence.device.entity.SignInRecord
|
|
|
import org.brynhild.graduation.persistence.device.repository.AreaRepository
|
|
|
import org.brynhild.graduation.persistence.device.repository.SignInRecordRepository
|
|
|
import org.brynhild.graduation.persistence.file.entity.LocalFile
|
|
@@ -13,8 +12,6 @@ import org.brynhild.graduation.persistence.timetable.entity.Course
|
|
|
import org.brynhild.graduation.persistence.timetable.entity.TimeTable
|
|
|
import org.brynhild.graduation.persistence.timetable.repository.CourseRepository
|
|
|
import org.brynhild.graduation.persistence.timetable.repository.TimeTableRepository
|
|
|
-import org.brynhild.graduation.persistence.user.entity.Class
|
|
|
-import org.brynhild.graduation.persistence.user.entity.User
|
|
|
import org.brynhild.graduation.persistence.user.repository.ClassRepository
|
|
|
import org.brynhild.graduation.persistence.user.repository.UserRepository
|
|
|
import org.brynhild.graduation.timetable.config.CosConfig
|
|
@@ -28,14 +25,7 @@ import org.brynhild.graduation.transfer.file.dto.FileInfo
|
|
|
import org.brynhild.graduation.transfer.timetable.bo.ClassStatisticInfo
|
|
|
import org.brynhild.graduation.transfer.timetable.bo.CourseStatisticInfo
|
|
|
import org.brynhild.graduation.transfer.timetable.bo.StudentStatisticInfo
|
|
|
-import org.brynhild.graduation.transfer.timetable.vo.AdminAddTimeTable
|
|
|
-import org.brynhild.graduation.transfer.timetable.vo.AdminDeleteTimeTable
|
|
|
-import org.brynhild.graduation.transfer.timetable.vo.AdminModifyTimeTable
|
|
|
-import org.brynhild.graduation.transfer.timetable.vo.AdminQueryClassStatistic
|
|
|
-import org.brynhild.graduation.transfer.timetable.vo.AdminQueryStudentStatistic
|
|
|
-import org.brynhild.graduation.transfer.timetable.vo.QueryTeachingClassRequest
|
|
|
-import org.brynhild.graduation.transfer.timetable.vo.QueryTeachingCourseStatisticRequest
|
|
|
-import org.brynhild.graduation.transfer.timetable.vo.QueryTimeTableRequest
|
|
|
+import org.brynhild.graduation.transfer.timetable.vo.*
|
|
|
import org.brynhild.graduation.transfer.view.ViewConvertor
|
|
|
import org.springframework.beans.factory.annotation.Autowired
|
|
|
import org.springframework.stereotype.Service
|
|
@@ -144,161 +134,161 @@ class TimeTableServiceImpl implements ITimeTableService {
|
|
|
|
|
|
@Override
|
|
|
Result queryClassStatistic(AdminQueryClassStatistic info, String token) {
|
|
|
- def result=getClassStatistic(info)
|
|
|
- return new Result(true,"查询成功",result)
|
|
|
+ def result = getClassStatistic(info)
|
|
|
+ return new Result(true, "查询成功", result)
|
|
|
}
|
|
|
|
|
|
- private List<ClassStatisticInfo> getClassStatistic(AdminQueryClassStatistic info){
|
|
|
+ private List<ClassStatisticInfo> getClassStatistic(AdminQueryClassStatistic info) {
|
|
|
def timeTableByClass = tableRepository.findTimeTableByClazz("${info.id}")
|
|
|
- def courseMap=new HashMap<Long, Course>()
|
|
|
- def countMap=new HashMap<Long,Long>()
|
|
|
- def actualCountMap=new HashMap<Long,Long>()
|
|
|
+ def courseMap = new HashMap<Long, Course>()
|
|
|
+ def countMap = new HashMap<Long, Long>()
|
|
|
+ def actualCountMap = new HashMap<Long, Long>()
|
|
|
|
|
|
def courseIdSet = timeTableByClass.stream().map { it.courseId }.collect(Collectors.toSet())
|
|
|
- for(courseId in courseIdSet){
|
|
|
- courseRepository.findById(courseId).ifPresent {courseMap.put(courseId,it)}
|
|
|
+ for (courseId in courseIdSet) {
|
|
|
+ courseRepository.findById(courseId).ifPresent { courseMap.put(courseId, it) }
|
|
|
}
|
|
|
timeTableByClass.stream().forEachOrdered {
|
|
|
- countMap.computeIfAbsent(it.courseId,i->0L)
|
|
|
- countMap.put(it.courseId,countMap.get(it.courseId)+1L)
|
|
|
+ countMap.computeIfAbsent(it.courseId, i -> 0L)
|
|
|
+ countMap.put(it.courseId, countMap.get(it.courseId) + 1L)
|
|
|
}
|
|
|
|
|
|
def listOfUsers = userRepository.findUserByDepartmentId(info.id)
|
|
|
- def userCount=listOfUsers.size()
|
|
|
- List<ClassStatisticInfo> infoList=new ArrayList<>()
|
|
|
+ def userCount = listOfUsers.size()
|
|
|
+ List<ClassStatisticInfo> infoList = new ArrayList<>()
|
|
|
|
|
|
println "${listOfUsers.size()},${courseIdSet.size()}"
|
|
|
|
|
|
- for(timetable in timeTableByClass){
|
|
|
- def startSignInTime=timetable.getStartSignInTime()
|
|
|
+ for (timetable in timeTableByClass) {
|
|
|
+ def startSignInTime = timetable.getStartSignInTime()
|
|
|
def endSignInTime = timetable.getEndSignInTime()
|
|
|
|
|
|
- def startSignOutTime=timetable.getStartSignOutTime()
|
|
|
- def endSignOutTime=timetable.getEndSignOutTime()
|
|
|
+ def startSignOutTime = timetable.getStartSignOutTime()
|
|
|
+ def endSignOutTime = timetable.getEndSignOutTime()
|
|
|
|
|
|
println "${startSignInTime}----${endSignInTime}"
|
|
|
println "${startSignOutTime}----${endSignOutTime}"
|
|
|
|
|
|
def listOfRecords = signInRecordRepository.findSignInRecordByTimeBetweenAndAreaId(startSignInTime, endSignInTime, timetable.areaId)
|
|
|
def signIn = listOfRecords.stream().map { it.userId }.collect(Collectors.toSet())
|
|
|
- listOfRecords=signInRecordRepository.findSignInRecordByTimeBetweenAndAreaId(timetable.startSignOutTime,timetable.endSignOutTime,timetable.areaId)
|
|
|
+ listOfRecords = signInRecordRepository.findSignInRecordByTimeBetweenAndAreaId(timetable.startSignOutTime, timetable.endSignOutTime, timetable.areaId)
|
|
|
def signOut = listOfRecords.stream().map { it.userId }.collect(Collectors.toSet())
|
|
|
signIn.retainAll(signOut)
|
|
|
|
|
|
- actualCountMap.computeIfAbsent(timetable.courseId,i->0L)
|
|
|
- actualCountMap.put(timetable.courseId,actualCountMap.get(timetable.courseId)+signIn.size())
|
|
|
+ actualCountMap.computeIfAbsent(timetable.courseId, i -> 0L)
|
|
|
+ actualCountMap.put(timetable.courseId, actualCountMap.get(timetable.courseId) + signIn.size())
|
|
|
}
|
|
|
|
|
|
- for(course in courseMap.values()){
|
|
|
- infoList.add(new ClassStatisticInfo(course,countMap.get(course.id)*userCount,actualCountMap.get(course.id)))
|
|
|
+ for (course in courseMap.values()) {
|
|
|
+ infoList.add(new ClassStatisticInfo(course, countMap.get(course.id) * userCount, actualCountMap.get(course.id)))
|
|
|
}
|
|
|
|
|
|
- infoList=infoList.sort()
|
|
|
+ infoList = infoList.sort()
|
|
|
return infoList
|
|
|
}
|
|
|
|
|
|
|
|
|
@Override
|
|
|
Result queryStudentStatistic(AdminQueryStudentStatistic info, String token) {
|
|
|
- def result=getStudentStatistic(info)
|
|
|
- return new Result(true,"查询成功",result)
|
|
|
+ def result = getStudentStatistic(info)
|
|
|
+ return new Result(true, "查询成功", result)
|
|
|
}
|
|
|
|
|
|
- private List<StudentStatisticInfo> getStudentStatistic(AdminQueryStudentStatistic info){
|
|
|
+ private List<StudentStatisticInfo> getStudentStatistic(AdminQueryStudentStatistic info) {
|
|
|
def optional = userRepository.findById(info.id)
|
|
|
- if(optional.isEmpty()){
|
|
|
+ if (optional.isEmpty()) {
|
|
|
return new ArrayList<StudentStatisticInfo>()
|
|
|
}
|
|
|
def user = optional.get()
|
|
|
def timeTableByClass = tableRepository.findTimeTableByClazz("${user.departmentId}")
|
|
|
- def courseMap=new HashMap<Long, Course>()
|
|
|
- def countMap=new HashMap<Long,Long>()
|
|
|
- def actualCountMap=new HashMap<Long,Long>()
|
|
|
+ def courseMap = new HashMap<Long, Course>()
|
|
|
+ def countMap = new HashMap<Long, Long>()
|
|
|
+ def actualCountMap = new HashMap<Long, Long>()
|
|
|
|
|
|
def courseIdSet = timeTableByClass.stream().map { it.courseId }.collect(Collectors.toSet())
|
|
|
- for(courseId in courseIdSet){
|
|
|
- courseRepository.findById(courseId).ifPresent {courseMap.put(courseId,it)}
|
|
|
+ for (courseId in courseIdSet) {
|
|
|
+ courseRepository.findById(courseId).ifPresent { courseMap.put(courseId, it) }
|
|
|
}
|
|
|
timeTableByClass.stream().forEach {
|
|
|
- countMap.computeIfAbsent(it.courseId,i->0L)
|
|
|
+ countMap.computeIfAbsent(it.courseId, i -> 0L)
|
|
|
// countMap.computeIfPresent(it.courseId,i->i+1)
|
|
|
- countMap.put(it.courseId,countMap.get(it.courseId)+1)
|
|
|
+ countMap.put(it.courseId, countMap.get(it.courseId) + 1)
|
|
|
}
|
|
|
|
|
|
- List<StudentStatisticInfo> infoList=new ArrayList<>()
|
|
|
+ List<StudentStatisticInfo> infoList = new ArrayList<>()
|
|
|
|
|
|
- for(timetable in timeTableByClass){
|
|
|
- def startSignInTime=timetable.getStartSignInTime()
|
|
|
+ for (timetable in timeTableByClass) {
|
|
|
+ def startSignInTime = timetable.getStartSignInTime()
|
|
|
def endSignInTime = timetable.getEndSignInTime()
|
|
|
|
|
|
- def listOfRecords = signInRecordRepository.findSignInRecordByTimeBetweenAndAreaIdAndUserId(startSignInTime, endSignInTime, timetable.areaId,info.id)
|
|
|
- if(listOfRecords.isEmpty()){
|
|
|
+ def listOfRecords = signInRecordRepository.findSignInRecordByTimeBetweenAndAreaIdAndUserId(startSignInTime, endSignInTime, timetable.areaId, info.id)
|
|
|
+ if (listOfRecords.isEmpty()) {
|
|
|
continue
|
|
|
}
|
|
|
- listOfRecords=signInRecordRepository.findSignInRecordByTimeBetweenAndAreaIdAndUserId(timetable.startSignOutTime,timetable.endSignOutTime,timetable.areaId,info.id)
|
|
|
- if(listOfRecords.isEmpty()){
|
|
|
+ listOfRecords = signInRecordRepository.findSignInRecordByTimeBetweenAndAreaIdAndUserId(timetable.startSignOutTime, timetable.endSignOutTime, timetable.areaId, info.id)
|
|
|
+ if (listOfRecords.isEmpty()) {
|
|
|
continue
|
|
|
}
|
|
|
|
|
|
- actualCountMap.computeIfAbsent(timetable.courseId,i->0L)
|
|
|
+ actualCountMap.computeIfAbsent(timetable.courseId, i -> 0L)
|
|
|
// actualCountMap.computeIfPresent(timetable.courseId,i->i+signIn.size())
|
|
|
- actualCountMap.put(timetable.courseId,actualCountMap.get(timetable.courseId)+1)
|
|
|
+ actualCountMap.put(timetable.courseId, actualCountMap.get(timetable.courseId) + 1)
|
|
|
}
|
|
|
|
|
|
- for(course in courseMap.values()){
|
|
|
- infoList.add(new StudentStatisticInfo(course,countMap.get(course.id),actualCountMap.getOrDefault(course.id,0L)))
|
|
|
+ for (course in courseMap.values()) {
|
|
|
+ infoList.add(new StudentStatisticInfo(course, countMap.get(course.id), actualCountMap.getOrDefault(course.id, 0L)))
|
|
|
}
|
|
|
|
|
|
- infoList=infoList.sort()
|
|
|
+ infoList = infoList.sort()
|
|
|
return infoList
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
Result generateClassStatistic(AdminQueryClassStatistic info, String token) {
|
|
|
def optional = classRepository.findById(info.id)
|
|
|
- if(optional.isEmpty()){
|
|
|
- return new Result(false,"查询失败");
|
|
|
+ if (optional.isEmpty()) {
|
|
|
+ return new Result(false, "查询失败");
|
|
|
}
|
|
|
- def result=getClassStatistic(info)
|
|
|
- def filename="docOutput/class-${info.id}.docx"
|
|
|
- def map=new HashMap<String,String>()
|
|
|
+ def result = getClassStatistic(info)
|
|
|
+ def filename = "docOutput/class-${info.id}.docx"
|
|
|
+ def map = new HashMap<String, String>()
|
|
|
def clazz = optional.get()
|
|
|
- map.put("title",clazz.name)
|
|
|
- WordExecutor.generateClassStatisticReport(filename,result ,map)
|
|
|
- def localFile=new LocalFile();
|
|
|
- localFile.path="class-${info.id}.docx"
|
|
|
- cosJavaRepository.addUploadFileTaskSync(new File(filename),localFile)
|
|
|
+ map.put("title", clazz.name)
|
|
|
+ WordExecutor.generateClassStatisticReport(filename, result, map)
|
|
|
+ def localFile = new LocalFile();
|
|
|
+ localFile.path = "class-${info.id}.docx"
|
|
|
+ cosJavaRepository.addUploadFileTaskSync(new File(filename), localFile)
|
|
|
|
|
|
FileInfo fileInfo = new FileInfo();
|
|
|
fileInfo.setPath(config.getRedirectPath() + localFile.getPath());
|
|
|
- def list=new ArrayList<FileInfo>()
|
|
|
+ def list = new ArrayList<FileInfo>()
|
|
|
list.add(fileInfo)
|
|
|
|
|
|
- return new Result(true,"生成成功",list)
|
|
|
+ return new Result(true, "生成成功", list)
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
Result generateStudentStatistic(AdminQueryStudentStatistic info, String token) {
|
|
|
def optional = userRepository.findById(info.id)
|
|
|
- if(optional.isEmpty()){
|
|
|
- return new Result(false,"查询失败")
|
|
|
+ if (optional.isEmpty()) {
|
|
|
+ return new Result(false, "查询失败")
|
|
|
}
|
|
|
def user = optional.get()
|
|
|
- def result=getStudentStatistic(info)
|
|
|
- def filename="docOutput/student-${info.id}.docx"
|
|
|
- def map=new HashMap<String,String>()
|
|
|
- map.put("title",user.name)
|
|
|
- WordExecutor.generateStudentStatisticReport(filename,result,map)
|
|
|
- def localFile=new LocalFile();
|
|
|
+ def result = getStudentStatistic(info)
|
|
|
+ def filename = "docOutput/student-${info.id}.docx"
|
|
|
+ def map = new HashMap<String, String>()
|
|
|
+ map.put("title", user.name)
|
|
|
+ WordExecutor.generateStudentStatisticReport(filename, result, map)
|
|
|
+ def localFile = new LocalFile();
|
|
|
|
|
|
- localFile.path="student-${info.id}.docx"
|
|
|
- cosJavaRepository.addUploadFileTaskSync(new File(filename),localFile)
|
|
|
+ localFile.path = "student-${info.id}.docx"
|
|
|
+ cosJavaRepository.addUploadFileTaskSync(new File(filename), localFile)
|
|
|
|
|
|
FileInfo fileInfo = new FileInfo();
|
|
|
fileInfo.setPath(config.getRedirectPath() + localFile.getPath());
|
|
|
- def list=new ArrayList<FileInfo>()
|
|
|
+ def list = new ArrayList<FileInfo>()
|
|
|
list.add(fileInfo)
|
|
|
- return new Result(true,"生成成功",list)
|
|
|
+ return new Result(true, "生成成功", list)
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -306,84 +296,84 @@ class TimeTableServiceImpl implements ITimeTableService {
|
|
|
def listOfTables = tableRepository.findTimeTableByTeacher(request.getTeacherId())
|
|
|
def collect = listOfTables.stream().map { Long.parseLong(it.clazz) }.collect(Collectors.toSet())
|
|
|
def classes = classRepository.findAllById(collect)
|
|
|
- return new Result(true,"查询成功",classes)
|
|
|
+ return new Result(true, "查询成功", classes)
|
|
|
}
|
|
|
|
|
|
- private List<CourseStatisticInfo> getTeachingCourseStatistic(QueryTeachingCourseStatisticRequest request){
|
|
|
+ private List<CourseStatisticInfo> getTeachingCourseStatistic(QueryTeachingCourseStatisticRequest request) {
|
|
|
def timeTableByClass = tableRepository.findTimeTableByTeacher(request.id)
|
|
|
- def courseMap=new HashMap<Long, Course>()
|
|
|
- def countMap=new HashMap<Long,Long>()
|
|
|
- def actualCountMap=new HashMap<Long,Long>()
|
|
|
+ def courseMap = new HashMap<Long, Course>()
|
|
|
+ def countMap = new HashMap<Long, Long>()
|
|
|
+ def actualCountMap = new HashMap<Long, Long>()
|
|
|
|
|
|
def courseIdSet = timeTableByClass.stream().map { it.courseId }.collect(Collectors.toSet())
|
|
|
- for(courseId in courseIdSet){
|
|
|
- courseRepository.findById(courseId).ifPresent {courseMap.put(courseId,it)}
|
|
|
+ for (courseId in courseIdSet) {
|
|
|
+ courseRepository.findById(courseId).ifPresent { courseMap.put(courseId, it) }
|
|
|
}
|
|
|
timeTableByClass.stream().forEach {
|
|
|
- countMap.computeIfAbsent(it.courseId,i->0L)
|
|
|
- countMap.put(it.courseId,countMap.get(it.courseId)+1)
|
|
|
+ countMap.computeIfAbsent(it.courseId, i -> 0L)
|
|
|
+ countMap.put(it.courseId, countMap.get(it.courseId) + 1)
|
|
|
}
|
|
|
- List<CourseStatisticInfo> infoList=new ArrayList<>()
|
|
|
+ List<CourseStatisticInfo> infoList = new ArrayList<>()
|
|
|
|
|
|
- for(timetable in timeTableByClass){
|
|
|
- def startSignInTime=timetable.getStartSignInTime()
|
|
|
+ for (timetable in timeTableByClass) {
|
|
|
+ def startSignInTime = timetable.getStartSignInTime()
|
|
|
def endSignInTime = timetable.getEndSignInTime()
|
|
|
|
|
|
- def startSignOutTime=timetable.getStartSignOutTime()
|
|
|
- def endSignOutTime=timetable.getEndSignOutTime()
|
|
|
+ def startSignOutTime = timetable.getStartSignOutTime()
|
|
|
+ def endSignOutTime = timetable.getEndSignOutTime()
|
|
|
|
|
|
println "${startSignInTime}----${endSignInTime}"
|
|
|
println "${startSignOutTime}----${endSignOutTime}"
|
|
|
|
|
|
def listOfRecords = signInRecordRepository.findSignInRecordByTimeBetweenAndAreaId(startSignInTime, endSignInTime, timetable.areaId)
|
|
|
def signIn = listOfRecords.stream().map { it.userId }.collect(Collectors.toSet())
|
|
|
- listOfRecords=signInRecordRepository.findSignInRecordByTimeBetweenAndAreaId(timetable.startSignOutTime,timetable.endSignOutTime,timetable.areaId)
|
|
|
+ listOfRecords = signInRecordRepository.findSignInRecordByTimeBetweenAndAreaId(timetable.startSignOutTime, timetable.endSignOutTime, timetable.areaId)
|
|
|
def signOut = listOfRecords.stream().map { it.userId }.collect(Collectors.toSet())
|
|
|
signIn.retainAll(signOut)
|
|
|
|
|
|
- actualCountMap.computeIfAbsent(timetable.courseId,i->0L)
|
|
|
- actualCountMap.put(timetable.courseId,actualCountMap.get(timetable.courseId)+signIn.size())
|
|
|
+ actualCountMap.computeIfAbsent(timetable.courseId, i -> 0L)
|
|
|
+ actualCountMap.put(timetable.courseId, actualCountMap.get(timetable.courseId) + signIn.size())
|
|
|
}
|
|
|
|
|
|
- for(course in courseMap.values()){
|
|
|
- infoList.add(new CourseStatisticInfo(course,countMap.get(course.id),actualCountMap.getOrDefault(course.id,0L)))
|
|
|
+ for (course in courseMap.values()) {
|
|
|
+ infoList.add(new CourseStatisticInfo(course, countMap.get(course.id), actualCountMap.getOrDefault(course.id, 0L)))
|
|
|
}
|
|
|
|
|
|
- infoList=infoList.sort()
|
|
|
+ infoList = infoList.sort()
|
|
|
return infoList
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
Result queryTeachingCourseStatistic(QueryTeachingCourseStatisticRequest request) {
|
|
|
def optional = userRepository.findById(request.id)
|
|
|
- if(optional.isEmpty()){
|
|
|
- return new Result(false,"用户不存在")
|
|
|
+ if (optional.isEmpty()) {
|
|
|
+ return new Result(false, "用户不存在")
|
|
|
}
|
|
|
- return new Result(true,"查询成功",getTeachingCourseStatistic(request))
|
|
|
+ return new Result(true, "查询成功", getTeachingCourseStatistic(request))
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
Result generateTeachingCourseStatistic(QueryTeachingCourseStatisticRequest request) {
|
|
|
def optional = userRepository.findById(request.id)
|
|
|
- if(optional.isEmpty()){
|
|
|
- return new Result(false,"用户不存在")
|
|
|
+ if (optional.isEmpty()) {
|
|
|
+ return new Result(false, "用户不存在")
|
|
|
}
|
|
|
- def user=optional.get()
|
|
|
- def result=getTeachingCourseStatistic(request)
|
|
|
- def filename="docOutput/teaching-class-${request.id}.docx"
|
|
|
- def map=new HashMap<String,String>()
|
|
|
- map.put("title","${user.name}教学课程")
|
|
|
- WordExecutor.generateTeachingCourseStatisticReport(filename,result ,map)
|
|
|
- def localFile=new LocalFile();
|
|
|
- localFile.path="teaching-class-${request.id}.docx"
|
|
|
- cosJavaRepository.addUploadFileTaskSync(new File(filename),localFile)
|
|
|
+ def user = optional.get()
|
|
|
+ def result = getTeachingCourseStatistic(request)
|
|
|
+ def filename = "docOutput/teaching-class-${request.id}.docx"
|
|
|
+ def map = new HashMap<String, String>()
|
|
|
+ map.put("title", "${user.name}教学课程")
|
|
|
+ WordExecutor.generateTeachingCourseStatisticReport(filename, result, map)
|
|
|
+ def localFile = new LocalFile();
|
|
|
+ localFile.path = "teaching-class-${request.id}.docx"
|
|
|
+ cosJavaRepository.addUploadFileTaskSync(new File(filename), localFile)
|
|
|
|
|
|
FileInfo fileInfo = new FileInfo();
|
|
|
fileInfo.setPath(config.getRedirectPath() + localFile.getPath());
|
|
|
- def list=new ArrayList<FileInfo>()
|
|
|
+ def list = new ArrayList<FileInfo>()
|
|
|
list.add(fileInfo)
|
|
|
|
|
|
- return new Result(true,"生成成功",list)
|
|
|
+ return new Result(true, "生成成功", list)
|
|
|
}
|
|
|
|
|
|
@Autowired
|