Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/cache/NacosConfigCache.java
@@ -8,12 +8,6 @@ import org.springblade.core.cache.utils.CacheUtil; import org.springblade.core.secure.BladeUser; import org.springblade.core.tool.utils.Func; import org.springblade.core.cache.utils.CacheUtil; import org.springblade.core.secure.BladeUser; import org.springblade.core.tool.utils.Func; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; import org.yaml.snakeyaml.Yaml; Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java
@@ -435,8 +435,8 @@ private List<CodeRule> listCodeRuleDOByIdCollections(Collection<String> idCollections) throws VciBaseException { List<CodeRule> codeRuleDOList = new ArrayList<CodeRule>(); if (!CollectionUtils.isEmpty(idCollections)) { Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(idCollections); for (Collection<String> ids : oidCollectionsList) { Collection<Collection<String>> idCollectionsList = VciBaseUtil.switchCollectionForOracleIn(idCollections); for (Collection<String> ids : idCollectionsList) { List<CodeRule> tempDOList = codeRuleMapper.selectList( Wrappers.<CodeRule>query() .lambda().in(CodeRule::getId,ids) Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -103,10 +103,22 @@ public class MdmEngineServiceImpl implements MdmEngineService { /** * 多线程方式批量执行开启线程池的总数 */ @Value("${batchadd.thread_num:10}") private Integer THREAD_NUM; /** * 单次sql的最多导入数量 */ @Value("${batchadd.single_maxnum:500}") @Value("${batchadd.single_maxnum:200}") private Integer MAX_IMPORT_NUM; /** * 是否开启多线程方式导入历史数据 */ @Value("${batchadd.is_thread_import:false}") private boolean IS_THREAD_IMPORT; /** * 模板的服务 @@ -419,7 +431,7 @@ * @param orderDTO 申请的信息,需要包含属性的内容和码段相关的内容 * @return 返回编码的内容 */ private String addSaveCode(CodeOrderDTO orderDTO,boolean authUser) throws Exception { private String addSaveCode(CodeOrderDTO orderDTO, boolean authUser) throws Exception { VciBaseUtil.alertNotNull(orderDTO, "编码申请相关的属性和码段的内容都为空", orderDTO.getCodeClassifyOid(), "主题库分类的主键", orderDTO.getTemplateOid(), "模板的主键", orderDTO.getCodeRuleOid(), "编码规则的主键"); CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(orderDTO.getCodeClassifyOid()); @@ -3532,7 +3544,6 @@ * @return 处理成功数据条数 */ @Override @Transactional(rollbackFor = Exception.class) public Integer insertBatchByType(String btmType, List<BaseModel> baseModels) { //使用传入的业务类型查询表 R<List<BtmTypeVO>> listR = btmTypeClient.selectByIdCollection(Collections.singletonList(btmType)); @@ -3557,28 +3568,33 @@ throw new VciBaseException("类型转换错误:" + e.toString()); } }); try { bactchExecuteInsert(listR.getData().get(0).getTableName(),maps); }catch (Exception e){ throw new ServiceException("分批执行insert语句报错:"+e.getMessage()); // 是否开启多线程执行插入语句 if(IS_THREAD_IMPORT){ try { threadBactchExecuteInsert(listR.getData().get(0).getTableName(),maps); }catch (Exception e){ throw new ServiceException("分批执行insert语句报错:"+e.getMessage()); } }else { bacthExcecuteInsert(listR.getData().get(0).getTableName(),maps); } return maps.size(); } /** * 分批执行insert语句 * 多线程方式分批执行insert语句 * @param tableName * @param maps * @throws ServiceException */ @Transactional(rollbackFor = Exception.class) void bactchExecuteInsert(String tableName, List<Map<String, String>> maps) throws ServiceException{ ExecutorService executor = Executors.newFixedThreadPool(10); // 创建一个固定大小的线程池 private void threadBactchExecuteInsert(String tableName, List<Map<String, String>> maps) throws ServiceException{ ExecutorService executor = Executors.newFixedThreadPool(THREAD_NUM); // 创建一个固定大小的线程池 List<Map<String, String>> threadSafeMaps = new CopyOnWriteArrayList<>(maps); for (int i = 0; i < threadSafeMaps.size(); i += MAX_IMPORT_NUM) { final int startIndex = i; final int endIndex = Math.min(i + MAX_IMPORT_NUM, maps.size()); final int endIndex = Math.min(i + MAX_IMPORT_NUM, threadSafeMaps.size()); executor.execute(() -> { List<Map<String, String>> subList = threadSafeMaps.subList(startIndex, endIndex); @@ -3599,6 +3615,21 @@ } /** * 单线程方式分批执行 * @param tableName * @param maps */ private void bacthExcecuteInsert(String tableName, List<Map<String, String>> maps){ for (int i = 0; i < maps.size(); i += MAX_IMPORT_NUM) { final int startIndex = i; final int endIndex = Math.min(i + MAX_IMPORT_NUM, maps.size()); List<Map<String, String>> subList = maps.subList(startIndex, endIndex); // 调用插入数据库的方法 commonsMapper.insertByBaseModel(tableName, maps.get(0), subList); } } /** * 传入业务类型以及ID查询业务表数据是否重复 * * @param btmType 业务类型 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -1038,7 +1038,7 @@ //VciBaseUtil.setCurrentUserSessionInfo(sessionInfo); List<String> rowIndexList = ruleRowIndexMap.get(ruleOid); List<ClientBusinessObject> thisCbos = finalNeedSaveCboList.stream().filter(cbo -> rowIndexList.contains(cbo.getAttributeValue(IMPORT_ROW_INDEX)) && !errorMap.containsKey(cbo.getAttributeValue(IMPORT_ROW_INDEX))).collect(Collectors.toList()); List<BaseModel> dataCBOList=new ArrayList<>(); List<BaseModel> dataCBOList=new CopyOnWriteArrayList<>(); thisCbos.stream().forEach(clientBusinessObject -> { BaseModel baseModel=new BaseModel(); BeanUtil.convert(clientBusinessObject,baseModel); Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
@@ -85,8 +85,8 @@ private FormulaServiceImpl formulaService; // 注入事务管理器 @Autowired private TransactionTemplate transactionTemplate; // @Autowired // private TransactionTemplate transactionTemplate; @Override @Transactional(rollbackFor = Exception.class) @@ -273,9 +273,9 @@ codeAllCodeService.updateBatchById(editCodeDOs); } // 获取事务定义 DefaultTransactionDefinition def = new DefaultTransactionDefinition(); //DefaultTransactionDefinition def = new DefaultTransactionDefinition(); // 开始事务 TransactionStatus status = transactionTemplate.getTransactionManager().getTransaction(def); //TransactionStatus status = transactionTemplate.getTransactionManager().getTransaction(def); if(!CollectionUtils.isEmpty(addCodeDOs)){ Map<String, String> statusMap = addCodeDOs.stream().collect(Collectors.toMap(s -> s.getOid(), s -> s.getLcStatus())); addCodeDOs.stream().filter(s -> StringUtils.equalsIgnoreCase("codeallcode",s.getBtmname())).forEach(s -> { @@ -318,14 +318,14 @@ codeAllCodeService.saveBatch(addCodeDOs); } try { mdmEngineService.insertBatchByType(dataCBOList.get(0).getBtmname(),dataCBOList); // try { mdmEngineService.insertBatchByType(dataCBOList.get(0).getBtmname(),dataCBOList); // 提交事务 transactionTemplate.getTransactionManager().commit(status); }catch (Exception e){ // 出现异常时回滚事务 transactionTemplate.getTransactionManager().rollback(status); } //transactionTemplate.getTransactionManager().commit(status); // }catch (Exception e){ // // 出现异常时回滚事务 // transactionTemplate.getTransactionManager().rollback(status); // } } return codeList; Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CommonsMapper.xml
@@ -52,6 +52,22 @@ </foreach> </insert> <!--<insert id="insertByBaseModel" parameterType="java.util.Map"> <foreach collection="mapList" item="value" index="key" separator=","> insert into ${tableName} ( <foreach collection="columnMap" item="value" index="key" separator=","> ${key} </foreach> ) <foreach collection="mapList" item="columnMap" separator=" union all "> select <foreach collection="columnMap" item="value" index="key" separator=","> #{value} </foreach> from dual </foreach> </foreach> </insert>--> <insert id="deleteByTaleAndOid" > delete from ${tableName} where oid in (${oids}) </insert> Source/UBCS/ubcs-service/ubcs-system/pom.xml
@@ -31,6 +31,12 @@ <groupId>com.vci.ubcs</groupId> <artifactId>ubcs-system-api</artifactId> <version>3.0.1.RELEASE</version> <exclusions> <exclusion> <groupId>org.springblade</groupId> <artifactId>blade-starter-log</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.vci.ubcs</groupId> @@ -38,19 +44,16 @@ <version>3.0.1.RELEASE</version> </dependency> <dependency> <groupId>com.oracle.database.jdbc</groupId> <artifactId>ojdbc8</artifactId> </dependency> <dependency> <groupId>cn.easyproject</groupId> <artifactId>orai18n</artifactId> <version>${orai18n.version}</version> </dependency> <dependency> <groupId>com.vci.ubcs</groupId> <artifactId>ubcs-util-api</artifactId> <version>3.0.1.RELEASE</version> <scope>compile</scope> <exclusions> <exclusion> <groupId>org.springblade</groupId> <artifactId>blade-starter-log</artifactId> </exclusion> </exclusions> </dependency> </dependencies> Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/MdmCountConfigController.java
@@ -5,7 +5,6 @@ import com.vci.ubcs.system.vo.MdmCountConfigVO; import io.swagger.annotations.Api; import lombok.AllArgsConstructor; import oracle.jdbc.proxy.annotation.Post; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.api.R; import org.springframework.web.bind.annotation.PostMapping; Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/MenuController.java
@@ -33,6 +33,7 @@ import lombok.AllArgsConstructor; import org.springblade.core.cache.utils.CacheUtil; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.BladeUser; @@ -105,6 +106,7 @@ //@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR) @ApiOperationSupport(order = 3) @ApiOperation(value = "懒加载列表", notes = "传入menu") @ApiLog("菜单懒加载列表") public R<List<MenuVO>> lazyList(Long parentId, @ApiIgnore @RequestParam Map<String, Object> menu) { List<MenuVO> list = menuService.lazyList(parentId, menu); return R.data(MenuWrapper.build().listNodeLazyVO(list)); Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/MenuServiceImpl.java
@@ -74,6 +74,7 @@ @Override public List<MenuVO> lazyList(Long parentId, Map<String, Object> param) { int i = 1 / 0; if (Func.isEmpty(Func.toStr(param.get(PARENT_ID)))) { parentId = null; }