浏览代码

单位修改时,批量修改下级单位编码。

tomatozq 5 年之前
父节点
当前提交
72e96ee9e0

+ 2 - 0
common/src/main/java/com/jpsoft/smart/modules/base/dao/CompanyInfoDAO.java

@@ -27,4 +27,6 @@ public interface CompanyInfoDAO {
 	long countByParentId(String parentId);
 
 	long countByCompanyCode(String code);
+
+	int updateCode(String oldCode,int startIndex, String newCode);
 }

+ 2 - 0
common/src/main/java/com/jpsoft/smart/modules/base/service/CompanyInfoService.java

@@ -18,4 +18,6 @@ public interface CompanyInfoService {
     long countByParentId(String parentId);
 
     long countByCompanyCode(String code);
+
+    int updateCode(String oldCode, String newCode);
 }

+ 5 - 0
common/src/main/java/com/jpsoft/smart/modules/base/service/impl/CompanyInfoServiceImpl.java

@@ -82,4 +82,9 @@ public class CompanyInfoServiceImpl implements CompanyInfoService {
 	public long countByCompanyCode(String code) {
 		return companyInfoDAO.countByCompanyCode(code);
 	}
+
+	@Override
+	public int updateCode(String oldCode, String newCode) {
+		return companyInfoDAO.updateCode(oldCode + "%",oldCode.length()+1 ,newCode);
+	}
 }

+ 5 - 0
common/src/main/resources/mapper/base/CompanyInfo.xml

@@ -86,6 +86,11 @@
         </set>
         where id_=#{id}
     </update>
+    <update id="updateCode">
+        update base_company_info
+        set code_ = concat(#{newCode},substr(code_,#{startIndex}))
+        where code_ like #{oldCode}
+    </update>
     <select id="get" parameterType="string" resultMap="CompanyInfoMap">
         select a.*,b.name_ as parent_name
         from base_company_info a

+ 31 - 11
web/src/main/java/com/jpsoft/smart/modules/base/controller/CompanyInfoController.java

@@ -177,27 +177,47 @@ public class CompanyInfoController {
 
         try {
             int affectCount = 0;
-            CompanyInfo companyInfo = new CompanyInfo();
-            PojoUtils.map(companyInfoDTO, companyInfo);
+            CompanyInfo srcCompany = companyInfoService.get(companyInfoDTO.getId());
+
+            CompanyInfo destCompany = new CompanyInfo();
+            PojoUtils.map(companyInfoDTO, destCompany);
 
             //上级单位code
-            if (StringUtils.isNotEmpty(companyInfo.getParentId())){
-                CompanyInfo parent = companyInfoService.get(companyInfo.getParentId());
-                companyInfo.setCode(parent.getCode() + "," + companyInfo.getId());
+            if (StringUtils.isNotEmpty(destCompany.getParentId())){
+                CompanyInfo parent = companyInfoService.get(destCompany.getParentId());
+                destCompany.setCode(parent.getCode() + "," + destCompany.getId());
             }
             else{
-                companyInfo.setCode(companyInfo.getId());
+                destCompany.setCode(destCompany.getId());
             }
 
-            companyInfo.setUpdateBy(subject);
-            companyInfo.setUpdateTime(new Date());
-            companyInfoService.update(companyInfo);
-            map.put("companyInfo",companyInfo);
+            String newCode = destCompany.getCode();
+            String oldCode = srcCompany.getCode();
+
+            if (StringUtils.isNotEmpty(oldCode) && !oldCode.equals(newCode)) {
+                companyInfoService.updateCode(oldCode,newCode);
+//                List<CompanyInfo> children = companyInfoService.findByCompanyCode(oldCode + "%");
+//
+//                for (CompanyInfo child : children) {
+//                    child.setCode(newCode + child.getCode().substring(oldCode.length()));
+//                    child.setUpdateTime(new Date());
+//                    child.setUpdateBy(subject);
+//
+//                    companyInfoService.update(child);
+//                }
+            }
+
+            destCompany.setUpdateBy(subject);
+            destCompany.setUpdateTime(new Date());
+            companyInfoService.update(destCompany);
+
+            map.put("companyInfo",destCompany);
+
             affectCount++;
 
             CompanyPosition companyPosition = new CompanyPosition();
             Map<String,Object> searchParams1 = new HashMap<>();
-            searchParams1.put("companyId",companyInfo.getId());
+            searchParams1.put("companyId",destCompany.getId());
             List<Sort> sortList1 = new ArrayList<>();
             sortList1.add(new Sort("id_","asc"));
             Page<CompanyPosition> page1 = companyPositionService.pageSearch(searchParams1,1,1,false,sortList1);