Преглед изворни кода

合伙人部门ID生成修改

xuqiang пре 5 месеци
родитељ
комит
f2a96758e0

+ 2 - 0
src/main/java/com/ydtech/modules/admin/dao/SysDeptMapper.java

@@ -65,6 +65,8 @@ public interface SysDeptMapper extends BaseMapper<SysDept> {
     List<SysDept> queryFiveLevelDept(@Param("vo") SysDeptVo sysDeptVo);
 
     List<SysDept> getListByIdsByKzt(@Param("ids") List<String> deptIds);
+
+    String selectMaxId(@Param("parentId") String parentId, @Param("comlevel")String comlevel);
 }
 
 

+ 27 - 16
src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java

@@ -3841,31 +3841,42 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
          String deptType = sysDeptVo.getDeptType();
          String comlevel = sysDeptVo.getComlevel();
          String parentId = sysDeptVo.getParentId();
+         String max = null;
          if ("C".equals(deptType) && comlevel.equals("5")) {
              sysDeptVo.setDeptType("M");
+             max = sysDeptMapper.selectMaxId(sysDeptVo.getParentId(),comlevel);
          } else if ("D".equals(deptType)) {
              sysDeptVo.setDeptType("D");
              deptType = "M";
          }
-         String number;
-         String maxId = sysDeptMapper.getMaxId(sysDeptVo.getParentId(), deptType, comlevel);
-         if (!maxId.equals("0")) {
-             String substring = maxId.substring(parentId.length() + 1);
-             int i = Integer.parseInt("1" + substring) + 1;
-             number = String.valueOf(i);
-         } else {
-             number = "101";
-         }
-
-         String substring = number.substring(number.length() - 2);
          String serialNumber;
-         if ("M,D".contains(sysDeptVo.getDeptType())) {
-             serialNumber = parentId + sysDeptVo.getDeptType() + substring;
-         } else {
-             serialNumber = parentId + substring;
-         }
+        if (StringUtils.isNotEmpty(max) && Integer.parseInt(max.substring(parentId.length() + 1)) >= 99){
+            serialNumber = incrementString(max);
+        }else {
+            String number;
+            String maxId = sysDeptMapper.getMaxId(sysDeptVo.getParentId(), deptType, comlevel);
+            if (!maxId.equals("0")) {
+                String substring = maxId.substring(parentId.length() + 1);
+                int i = Integer.parseInt("1" + substring) + 1;
+                number = String.valueOf(i);
+            } else {
+                number = "101";
+            }
+            String substring = number.substring(number.length() - 2);
+            if ("M,D".contains(sysDeptVo.getDeptType())) {
+                serialNumber = parentId + sysDeptVo.getDeptType() + substring;
+            } else {
+                serialNumber = parentId + substring;
+            }
+        }
          return serialNumber;
      }
 
 
+    public  String incrementString(String str) {
+        String numberPart = str.replaceAll("[^0-9]$", "").replaceAll("^.*?(\\d+)$", "$1");
+        long num = Long.parseLong(numberPart) + 1;
+        return str.replaceAll("(\\d+)$", String.valueOf(num));
+    }
+
 }

+ 5 - 0
src/main/resources/mapper/modules/admin/SysDeptMapper.xml

@@ -195,4 +195,9 @@
         </where>
     </select>
 
+    <select id="selectMaxId" resultType="java.lang.String">
+        SELECT id FROM sys_dept WHERE parent_id = #{parentId} and comlevel = #{comlevel}
+        ORDER BY CAST(SUBSTRING_INDEX(id, 'M', 1) AS UNSIGNED) DESC, CAST(SUBSTRING_INDEX(id, 'M', -1) AS UNSIGNED) DESC LIMIT 1
+    </select>
+
 </mapper>