Переглянути джерело

修复批量新增评卷员问题

ting.yin 1 рік тому
батько
коміт
5741344822

+ 12 - 12
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/user/service/impl/UserServiceImpl.java

@@ -257,11 +257,11 @@ public class UserServiceImpl implements UserService {
         int successNum = 0;
         for (MarkGroup group : groups) {
             List<Marker> saveList = new ArrayList<Marker>();
-            String prefix = exam.getSchoolId() + "-" + subjectCode + "-" + group.getNumber();
+            String prefix = exam.getSchoolId() + "-" + subjectCode + "-" + group.getNumber() + "-";
             int maxNumber = this.findMaxNumberByLoginNameStart(prefix);
             int createNumber = 1;
             while (saveList.size() < number) {
-                String loginName = prefix + "-" + (maxNumber + createNumber);
+                String loginName = prefix + (maxNumber + createNumber);
                 User user = userDao.findFirstByLoginName(loginName);
                 if (user == null) {
                     user = new User();
@@ -285,7 +285,6 @@ public class UserServiceImpl implements UserService {
                         }
                     }
                     userDao.save(user);
-                    successNum++;
                     Marker marker = new Marker();
                     marker.setSubjectCode(subjectCode);
                     marker.setGroupNumber(group.getNumber());
@@ -293,9 +292,11 @@ public class UserServiceImpl implements UserService {
                     marker.setExamId(examId);
                     marker.setEnable(true);
                     saveList.add(marker);
+                    successNum++;
+                    createNumber++;
                 }
-                createNumber++;
             }
+            markerService.batchSave(saveList);
         }
         return successNum;
     }
@@ -325,13 +326,13 @@ public class UserServiceImpl implements UserService {
         List<SubjectUser> saveList = new ArrayList<SubjectUser>();
         int successNum = 0;
         int createNumber = 1;
-        String prefix = exam.getSchoolId() + "-" + subjectCode;
+        String prefix = exam.getSchoolId() + "-" + subjectCode + "-";
         if (role.equals(Role.INSPECTOR)) {
-            prefix = exam.getSchoolId() + "-FH-" + subjectCode;
+            prefix = exam.getSchoolId() + "-FH-" + subjectCode + "-";
         }
         int maxNumber = this.findMaxNumberByLoginNameStart(prefix);
         while (saveList.size() < number) {
-            String loginName = prefix + "-" + (maxNumber + createNumber);
+            String loginName = prefix + (maxNumber + createNumber);
             User user = userDao.findFirstByLoginName(loginName);
             if (user == null) {
                 user = new User();
@@ -355,13 +356,13 @@ public class UserServiceImpl implements UserService {
                 user.setSchoolId(exam.getSchoolId());
                 user.setCreatedTime(new Date());
                 user = userDao.save(user);
-                successNum++;
                 SubjectUser subjectUser = new SubjectUser();
                 subjectUser.setSubjectCode(subjectCode);
                 subjectUser.setUserId(user.getId());
                 saveList.add(subjectUser);
+                successNum++;
+                createNumber++;
             }
-            createNumber++;
         }
         subjectUserService.batchSave(saveList);
         return successNum;
@@ -414,9 +415,8 @@ public class UserServiceImpl implements UserService {
         int number = 0;
         for (User user : list) {
             try {
-                String userNumber = user.getLoginName()
-                        .substring(prefix.length() + 1, user.getLoginName().length() - 1);
-                int no = Integer.parseInt(userNumber);
+                String[] str = user.getLoginName().split("-");
+                int no = Integer.parseInt(str[str.length - 1]);
                 if (number < no) {
                     number = no;
                 }