pref: 企标授权部门历史数据修复接口性能提升
This commit is contained in:
+4
@@ -3,6 +3,8 @@ package com.jero.modules.laws.enterprise.mapper;
|
||||
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardAuthDept;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author ThinkBook
|
||||
* @description 针对表【laws_enterprise_standard_auth_dept】的数据库操作Mapper
|
||||
@@ -11,6 +13,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
*/
|
||||
public interface EnterpriseStandardAuthDeptMapper extends BaseMapper<EnterpriseStandardAuthDept> {
|
||||
|
||||
int batchInsert(List<EnterpriseStandardAuthDept> list);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
+8
@@ -21,4 +21,12 @@
|
||||
update_by,update_time,org_code,
|
||||
standard_id,authDept
|
||||
</sql>
|
||||
|
||||
<insert id="batchInsert">
|
||||
INSERT INTO laws_enterprise_standard_auth_dept (id, standard_id, auth_dept)
|
||||
VALUES
|
||||
<foreach collection="list" item="item" separator=",">
|
||||
(#{item.id}, #{item.standardId}, #{item.authDept})
|
||||
</foreach>
|
||||
</insert>
|
||||
</mapper>
|
||||
|
||||
+4
@@ -4,6 +4,8 @@ import com.jero.modules.laws.enterprise.entity.EnterpriseStandardAuthDept;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.jero.modules.laws.standard.entity.LawsStandardTempPermission;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author ThinkBook
|
||||
* @description 针对表【laws_enterprise_standard_auth_dept】的数据库操作Service
|
||||
@@ -12,4 +14,6 @@ import com.jero.modules.laws.standard.entity.LawsStandardTempPermission;
|
||||
public interface EnterpriseStandardAuthDeptService extends IService<EnterpriseStandardAuthDept> {
|
||||
|
||||
void saveTempPermission(LawsStandardTempPermission lawsStandardTempPermission);
|
||||
|
||||
void batchInsertWithTransaction(List<EnterpriseStandardAuthDept> list, int batchSize);
|
||||
}
|
||||
|
||||
+24
@@ -12,6 +12,9 @@ import com.jero.modules.laws.standard.entity.LawsStandardTempPermission;
|
||||
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
|
||||
import com.jero.modules.sys.utils.UserUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.ibatis.session.ExecutorType;
|
||||
import org.apache.ibatis.session.SqlSession;
|
||||
import org.apache.ibatis.session.SqlSessionFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -37,6 +40,9 @@ public class EnterpriseStandardAuthDeptServiceImpl extends ServiceImpl<Enterpris
|
||||
@Resource
|
||||
private EnterpriseStandardAuthUserServiceImpl authUserService;
|
||||
|
||||
@Resource
|
||||
private SqlSessionFactory sqlSessionFactory;
|
||||
|
||||
@Override
|
||||
public void saveTempPermission(LawsStandardTempPermission lawsStandardTempPermission) {
|
||||
List<String> standardIdList = lawsStandardTempPermission.getStandardIdList();
|
||||
@@ -61,6 +67,24 @@ public class EnterpriseStandardAuthDeptServiceImpl extends ServiceImpl<Enterpris
|
||||
}
|
||||
saveBatch(esAuthDepts);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void batchInsertWithTransaction(List<EnterpriseStandardAuthDept> list, int batchSize) {
|
||||
try (SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH)) {
|
||||
EnterpriseStandardAuthDeptMapper batchMapper = sqlSession.getMapper(EnterpriseStandardAuthDeptMapper.class);
|
||||
|
||||
for (int i = 0; i < list.size(); i += batchSize) {
|
||||
int end = Math.min(i + batchSize, list.size());
|
||||
List<EnterpriseStandardAuthDept> batchList = list.subList(i, end);
|
||||
batchMapper.batchInsert(batchList);
|
||||
sqlSession.commit(); // 提交每个批次
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// 处理异常,根据需要记录日志或抛出
|
||||
log.error("批量插入失败", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
+4
-3
@@ -2,6 +2,7 @@ package com.jero.modules.laws.oldSystem.controller;
|
||||
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.common.aspect.annotation.AutoLog;
|
||||
import com.jero.modules.laws.oldSystem.service.OldSystemDepartRelationService;
|
||||
import com.jero.modules.laws.oldSystem.service.OldSystemService;
|
||||
@@ -152,10 +153,10 @@ public class OldSystemController {
|
||||
}
|
||||
@GetMapping("/esAuthDeptDataFix")
|
||||
@AutoLog(value = "老法规系统-企标授权部门数据修复")
|
||||
@ApiOperation(value="老法规系统-企标授权部门数据修复", notes="老法规系统-企标授权部门数据修复", produces = "application/octet-stream")
|
||||
@ApiOperation(value="老法规系统-企标授权部门数据修复", notes="老法规系统-企标授权部门数据修复")
|
||||
@ApiOperationSupport(order = 100)
|
||||
public void esAuthDeptDataFix() {
|
||||
oldSystemDeptRelationService.esAuthDeptDataFix();
|
||||
public Result<?> esAuthDeptDataFix() {
|
||||
return Result.OK(oldSystemDeptRelationService.esAuthDeptDataFix());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -22,5 +22,5 @@ public interface OldSystemDepartRelationService extends IService<OldSystemDepart
|
||||
*/
|
||||
void importDepartRelationData(MultipartFile file, HttpServletResponse response);
|
||||
|
||||
void esAuthDeptDataFix();
|
||||
String esAuthDeptDataFix();
|
||||
}
|
||||
|
||||
+6
-3
@@ -1,6 +1,7 @@
|
||||
package com.jero.modules.laws.oldSystem.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jero.common.api.vo.ResultCommon;
|
||||
import com.jero.common.constant.CommonConstant;
|
||||
@@ -194,7 +195,7 @@ public class OldSystemDepartRelationServiceImpl extends ServiceImpl<OldSystemDep
|
||||
|
||||
|
||||
@Override
|
||||
public void esAuthDeptDataFix() {
|
||||
public String esAuthDeptDataFix() {
|
||||
List<EnterpriseStandardAuthDept> needSaveAllData = new ArrayList<>();
|
||||
// 获取所有没有被删除的部门
|
||||
LambdaQueryWrapper<SysDepart> departWrapper = new LambdaQueryWrapper<>();
|
||||
@@ -231,6 +232,7 @@ public class OldSystemDepartRelationServiceImpl extends ServiceImpl<OldSystemDep
|
||||
// 构造需要保存的数据
|
||||
for (String childDeptId : childDeptIdSet) {
|
||||
EnterpriseStandardAuthDept esAd = new EnterpriseStandardAuthDept();
|
||||
esAd.setId(IdWorker.getIdStr());
|
||||
esAd.setStandardId(curStandardId);
|
||||
esAd.setAuthDept(childDeptId);
|
||||
needSaveAllData.add(esAd);
|
||||
@@ -242,14 +244,15 @@ public class OldSystemDepartRelationServiceImpl extends ServiceImpl<OldSystemDep
|
||||
}
|
||||
}
|
||||
if (needSaveAllData.isEmpty()) {
|
||||
return;
|
||||
return "没有需要修复的数据";
|
||||
}
|
||||
// 根据standardId和authDept去重
|
||||
List<EnterpriseStandardAuthDept> distinctData = needSaveAllData.stream()
|
||||
.collect(Collectors.collectingAndThen(Collectors.toCollection(() ->
|
||||
new TreeSet<>(Comparator.comparing(o -> o.getStandardId() + ";" + o.getAuthDept()))), ArrayList::new));
|
||||
log.info("需要保存的数据条数为:{}", distinctData.size());
|
||||
esAdService.saveBatch(needSaveAllData, distinctData.size());
|
||||
esAdService.batchInsertWithTransaction(needSaveAllData, 5000);
|
||||
return "修复完成,共修复数据" + distinctData.size() + "条";
|
||||
}
|
||||
|
||||
// 递归查询所有子部门Id
|
||||
|
||||
Reference in New Issue
Block a user