From c007f0ca1785db093d48f4846cda82fe8e955765 Mon Sep 17 00:00:00 2001 From: kimi <kimi42345@gmail.com> Date: 星期三, 27 五月 2020 09:59:29 +0800 Subject: [PATCH] merage --- src/main/java/com/highdatas/mdm/service/impl/SysViewServiceImpl.java | 446 ++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 324 insertions(+), 122 deletions(-) diff --git a/src/main/java/com/highdatas/mdm/service/impl/SysViewServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/SysViewServiceImpl.java index 1f3e728..1a3420d 100644 --- a/src/main/java/com/highdatas/mdm/service/impl/SysViewServiceImpl.java +++ b/src/main/java/com/highdatas/mdm/service/impl/SysViewServiceImpl.java @@ -14,6 +14,7 @@ import com.highdatas.mdm.util.pool.MqEntity; import com.highdatas.mdm.util.pool.MqMessage; import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -36,6 +37,7 @@ * @since 2020-04-15 */ @Service +@Slf4j public class SysViewServiceImpl extends ServiceImpl<SysViewMapper, SysView> implements ISysViewService { @Autowired ISysViewJoinService joinService; @@ -61,10 +63,32 @@ DispenseService dispenseService; @Autowired RuleClient ruleClient; + @Autowired + AntianaphylaxisClient antianaphylaxisClient; + @Autowired + RedisClient redisClient; + /** + * + * @description: 閫氳繃id鑾峰彇瑙嗗浘鍒嗗彂鐨勫垎椤电殑鍥炰俊 + * @param viewId 瑙嗗浘id + * @return: 鍒嗛〉瀵硅薄 + * + */ @Override public Page getInitPageInfo(String viewId) { - Page page = new Page(0); + + SysView sysView = selectById(viewId); + String userId = sysView.getUserId(); + String realRedisKey = RedisClient.getRealRedisKey(userId + "-" + sysView.getId()); + Object redisValObj = redisClient.getRedisValObj(realRedisKey); + if (redisValObj != null) { + JSONObject object = (JSONObject) redisValObj; + Page page = JSONObject.parseObject(object.toJSONString(), Page.class); + return page; + } + + Page page = new Page(0); String viewTableName = sysView.getViewTableName(); List<TableSchemaResult> tableField = tableInfoMapper.getTableField(viewTableName); int totalLength = 0; @@ -76,8 +100,10 @@ page.setPageSize(pageSize); Long viewCount = getViewCount(sysView); if (viewCount == 0) { - return null; + redisClient.putRedisValObj(realRedisKey, page); + return page; } + page.setRecordCount(viewCount.intValue()); int pages; if (viewCount % pageSize == 0) { pages = Long.valueOf(viewCount/pageSize).intValue(); @@ -85,75 +111,115 @@ pages = (Long.valueOf(viewCount/pageSize).intValue()) + 1; } page.setPages(pages); + + redisClient.putRedisValObj(realRedisKey, page); return page; } + /** + * + * @description: 鍒涘缓瑙嗗浘 + * @param viewId 瑙嗗浘id + * @return: 鍒涘缓鏄惁鎴愬姛 + * + */ @Override public boolean createView(String viewId) { - SysView sysView = selectById(viewId); - if (sysView == null) { - return false; + try { + SysView sysView = selectById(viewId); + + if (sysView == null) { + log.error("view not found"); + return false; + } + String userId = sysView.getUserId(); + TUser user = DbUtils.getUserById(userId); + if (user == null) { + log.error("user not found"); + return false; + } + + Maintain baseMaintain = getBaseMaintain(sysView); + if (baseMaintain == null) { + log.error("baseMaintain not found"); + return false; + } + String baseTableName = baseMaintain.getTableName(); + sysView.setBaseTableName(baseTableName); + + List<String> totalFieldList = getTotalFieldList(sysView); + + // + String tableName = getViewTableName(sysView); + log.info("View TABLE name:" + tableName); + totalFieldList.add(Constant.ID); + boolean created = dropCreateViewTable(totalFieldList, tableName); + + //TODO 涓婚敭 + if (!created) { + log.info("un create view table:" + tableName); + return false; + } + totalFieldList.remove(Constant.ID); + List<String> baseFieldList = getBaseFieldList(sysView); + //trans first + if (baseFieldList == null && baseFieldList.isEmpty()) { + log.error("base field not found:"); + return false; + } + baseFieldList.add(Constant.ID); + String baseFields = baseFieldList.stream() + .map(s -> Constant.ID.equalsIgnoreCase(s) ? Constant.MYSQL_UUID : s) + .collect(Collectors.joining(Constant.COMMA)); + String fixBaseFields = baseFieldList.stream() + .map(s -> Constant.ID.equalsIgnoreCase(s) ? Constant.ID : changeFieldName(baseTableName, s)) + .collect(Collectors.joining(Constant.COMMA)); + + baseFieldList.remove(Constant.ID); + + String filter = masterAuthorService.getFilter(user, baseMaintain.getId()); + if (StringUtils.isEmpty(filter)) { + filter = Constant.WHERE_DEFAULT; + } + + log.info("View base filter:" + filter); + String s = masterDataService.selectByVersionSql(null, baseTableName, baseFieldList, filter, baseMaintain.getVersion(), false); + log.info("View base select sql:" + s); + //base INSERT + tableInfoMapper.insertOneSelect(tableName, fixBaseFields, baseFields, s); + + log.info("insert select"); + // left insert + InsertJoin(sysView); + log.info("insert left join"); + // change val common + changeValCommon(sysView); + log.info("changeValCommon"); + //change logic + + + boolean checked = checkTempData(sysView); + if (!checked) { + sysView.setStatus(ViewStatus.unChecked).updateById(); + } else { + sysView.setStatus(ViewStatus.working).updateById(); + } + + // + return true; } - String userId = sysView.getUserId(); - TUser user = DbUtils.getUserById(userId); - if (user == null) { + catch (Exception e) { + e.printStackTrace(); return false; } - Maintain baseMaintain = getBaseMaintain(sysView); - if (baseMaintain == null) { - return false; - } - String baseTableName = baseMaintain.getTableName(); - sysView.setBaseTableName(baseTableName); - - List<String> totalFieldList = getTotalFieldList(sysView); - - // - String tableName = getViewTableName(sysView); - totalFieldList.add(Constant.ID); - boolean created = dropCreateViewTable(totalFieldList, tableName); - //TODO 涓婚敭 - if (!created) { - return false; - } - totalFieldList.remove(Constant.ID); - List<String> baseFieldList = getBaseFieldList(sysView); - //trans first - baseFieldList.add(Constant.ID); - String baseFields = baseFieldList.stream() - .map(s -> Constant.ID.equalsIgnoreCase(s) ? Constant.MYSQL_UUID : s) - .collect(Collectors.joining(Constant.COMMA)); - String fixBaseFields = baseFieldList.stream() - .map(s -> Constant.ID.equalsIgnoreCase(s) ? Constant.ID : changeFieldName(baseTableName, s)) - .collect(Collectors.joining(Constant.COMMA)); - - baseFieldList.remove(Constant.ID); - - String filter = masterAuthorService.getFilter(user, baseMaintain.getId()); - - String s = masterDataService.selectByVersionSql(null, baseTableName, baseFieldList, filter, baseMaintain.getVersion(), false); - - //base INSERT - tableInfoMapper.insertOneSelect(tableName, fixBaseFields, baseFields, s); - - // left insert - InsertJoin(sysView); - - // change val common - changeValCommon(sysView); - - - boolean checked = checkTempData(sysView); - if (!checked) { - sysView.setStatus(ViewStatus.unChecked).updateById(); - } else { - sysView.setStatus(ViewStatus.working).updateById(); - } - - // - return true; } - + /** + * + * @description: 瑙嗗浘璐ㄩ噺妫�楠� + * @param sysView 瑙嗗浘 + * @return: 鏄惁閫氳繃妫�楠� + * + */ private boolean checkTempData(SysView sysView) { SysAssembleCheckType checkType = sysView.getCheckType(); if (checkType == null) { @@ -185,7 +251,13 @@ } return true; } - + /** + * + * @description: 鎻掑叆鍏宠仈琛ㄦ暟鎹� + * @param sysView 瑙嗗浘 + * @return: + * + */ private void InsertJoin(SysView sysView) { String userId = sysView.getUserId(); TUser user = DbUtils.getUserById(userId); @@ -196,10 +268,9 @@ List<SysViewJoin> viewJoinList = sysView.getViewJoinList(); for (SysViewJoin sysViewJoin : viewJoinList) { - sysViewJoin.setBaseField(changeFieldName(baseTableName, sysViewJoin.getBaseField())); + sysViewJoin.setBaseField(changeFieldName(sysView.getBaseTableName(), sysViewJoin.getBaseField())); Maintain joinMaintain = getJoinMaintain(sysViewJoin); String joinTableName = joinMaintain.getTableName(); - sysViewJoin.setBaseTableName(sysView.getViewTableName()); String joinStr = sysViewJoin.createJoinStr(); if (StringUtils.isEmpty(joinStr)) { @@ -218,16 +289,26 @@ // JOIN String joinSql = joinBuilder.toString(); if (StringUtils.isEmpty(joinSql)) { + log.info("sysViewJoin sql is null"); return; } tableInfoMapper.updateJoin(tableName, joinSql, updateFieldBuilder.toString(), Constant.WHERE_DEFAULT); } - + /** + * + * @description: 1瀵�1 鏁版嵁杞崲 + * @param sysView 瑙嗗浘 + * @return: + * + */ private void changeValCommon(SysView sysView) { String mappingField = sysView.getMappingField(); String tableName = sysView.getViewTableName(); String mappingTable = sysView.getMappingTable(); - + mappingTable = tableInfoMapper.selectTableByName(mappingTable); + if (StringUtils.isEmpty(mappingTable)) { + return; + } List<String> split = DbUtils.split(mappingField); for (String oneMapField : split) { String base = MessageFormat.format(Constant.Alias, tableName, oneMapField); @@ -243,7 +324,14 @@ tableInfoMapper.updateJoin(tableName, changeJoinStr, updateSegment.toRawString(), filterSegment.toString()); } } - + /** + * + * @description: 浠庢柊鐢熸垚瑙嗗浘琛� + * @param tableName 琛ㄥ悕 + * @param totalFieldList 瀛楁鍒楄〃 + * @return: 鐢熸垚鏄惁鎴愬姛 + * + */ private boolean dropCreateViewTable(List<String> totalFieldList, String tableName) { boolean created = unBigDataDataSourceInfo.dropData(tableName); if (!created) { @@ -258,6 +346,13 @@ return true; } + /** + * + * @description: 鑾峰彇瑙嗗浘鐨勭墿鐞嗚〃鍚� + * @param view 瑙嗗浘瀵硅薄 + * @return: 鐗╃悊琛ㄥ悕 + * + */ @Override public String getViewTableName(SysView view) { String viewTableName = view.getViewTableName(); @@ -268,7 +363,13 @@ } return viewTableName; } - + /** + * + * @description: 鑾峰彇瑙嗗浘 mapping鐨勭墿鐞嗚〃鍚� + * @param view 瑙嗗浘瀵硅薄 + * @return: mapping鐨勭墿鐞嗚〃鍚� + * + */ @Override public String getMappingTableName(SysView view) { String id = view.getId(); @@ -277,6 +378,15 @@ view.setMappingTable(mappingTableName).updateById(); return mappingTableName; } + /** + * + * @description: 鑾峰彇鍏宠仈涓婚鐨勬湁鏉冮檺鐨勫瓧娈� + * @param user 鐢ㄦ埛 + * @param join 鍏宠仈涓婚瀵硅薄 + * @return: 鍏宠仈涓婚鐨勬湁鏉冮檺鐨勫瓧娈� + * + */ + @Override public List<String> getSubFieldList(SysViewJoin join, TUser user) { String fieldsStr = join.getFields(); @@ -284,14 +394,22 @@ if (Constant.All.equalsIgnoreCase(fieldsStr)) { Maintain joinMaintain = getJoinMaintain(join); List<SysField> fieldList = masterAuthorService.getField(user, joinMaintain.getId()); - baseFieldList = fieldList.stream().map(sysField -> sysField.getField()).collect(Collectors.toList()); + if (fieldList != null) { + baseFieldList = fieldList.stream().map(sysField -> sysField.getField()).collect(Collectors.toList()); + } }else { baseFieldList = DbUtils.split(fieldsStr); } return baseFieldList; } - + /** + * + * @description: 鑾峰彇鍩哄噯涓婚鐨勬湁鏉冮檺鐨勫瓧娈� + * @param sysView 涓婚 + * @return: 鍩哄噯涓婚鐨勬湁鏉冮檺鐨勫瓧娈� + * + */ private List<String> getBaseFieldList(SysView sysView) { String fieldsStr = sysView.getFields(); List<String> baseFieldList = new ArrayList<>(); @@ -307,6 +425,13 @@ return baseFieldList; } + /** + * + * @description: 鑾峰彇1瀵�1杞崲鐨勫瓧娈� + * @param sysView 瑙嗗浘 + * @return: 1瀵�1杞崲鐨勫瓧娈靛垪琛� + * + */ @Override public List<ViewMapFieldItem> getMapField(SysView sysView) { List<ViewMapFieldItem> result = new ArrayList<>(); @@ -357,14 +482,26 @@ } return result; } - + /** + * + * @description: 鑾峰彇鍏宠仈涓婚瀵硅薄 + * @param sysView 瑙嗗浘 + * @return: 鑾峰彇鍏宠仈涓婚瀵硅薄 + * + */ private List<SysViewJoin> getJoinList(SysView sysView) { String id = sysView.getId(); Wrapper<SysViewJoin> eq = new EntityWrapper<SysViewJoin>().eq(Constant.PARENT_ID, id); List<SysViewJoin> joinList = joinService.selectList(eq); return joinList; } - + /** + * + * @description: 鑾峰彇鍏ㄩ儴瀛楁鍒楄〃 + * @param sysView 瑙嗗浘 + * @return: 鍏ㄩ儴瀛楁鍒楄〃 + * + */ public List<String> getTotalFieldList(SysView sysView) { String userId = sysView.getUserId(); TUser user = DbUtils.getUserById(userId); @@ -388,7 +525,13 @@ sysView.setViewJoinList(sysViewJoins); return totalFieldList; } - + /** + * + * @description: 鑾峰彇鍩哄噯涓婚瀵硅薄 + * @param sysView 瑙嗗浘 + * @return: 鑾峰彇鍩哄噯涓婚瀵硅薄 + * + */ @Override public Maintain getBaseMaintain(SysView sysView) { @@ -404,7 +547,13 @@ } return baseMaintain; } - + /** + * + * @description: 鑾峰彇鍏宠仈涓婚瀵硅薄 + * @param viewJoin 瑙嗗浘鍏宠仈涓婚 + * @return: 鑾峰彇鍏宠仈涓婚瀵硅薄 + * + */ @Override public Maintain getJoinMaintain(SysViewJoin viewJoin) { @@ -420,46 +569,66 @@ } return baseMaintain; } - + /** + * + * @description: 鑾峰彇瑙嗗浘瀹為檯浣跨敤鐨勫瓧娈� + * @param field 涓婚瀛楁 + * @param baseTableName 琛ㄥ悕 + * @return: 瑙嗗浘瀹為檯浣跨敤鐨勫瓧娈� + * + */ @Override public String changeFieldName(String baseTableName, String field) { return DbUtils.StrJoinLink(Constant.EMPTY_Str, baseTableName, Constant.UnderLine, field); } - + /** + * + * @description: 瀹℃壒缁撴潫鍚庢牴鎹潯浠堕噸鏂扮敓鎴愯鍥惧苟鍒嗗彂 + * @param maintainId 鐗堟湰id + * @param status 瀹℃壒鐘舵�� + * @return: + * + */ @Override public void dealFlow(String maintainId, ActivitiStatus status) { - if (!ActivitiStatus.open.equals(status)) { + try { + if (!ActivitiStatus.open.equals(status)) { + return; + } + Maintain maintain = maintainService.selectById(maintainId); + String maintainTableName = maintain.getTableName(); + + Wrapper<SysView> eq = new EntityWrapper<SysView>() + .eq("need_update", true) + .eq("base_maintain", maintainTableName); + List<SysView> sysViews = selectList(eq); + for (SysView sysView : sysViews) { + ViewStatus viewStatus = sysView.getStatus(); + if (!ViewStatus.working.equals(viewStatus)) { + continue; + } + createView(sysView.getId()); + + Boolean subscribe = sysView.getSubscribe(); + if (!subscribe) { + continue; + } + MqEntity mqEntity = new MqEntity(); + mqEntity.setUserId(sysView.getUserId()); + mqEntity.setMsgTopicName(Constant.View); + mqEntity.setType(Constant.View); + mqEntity.setDataId(sysView.getId()); + mqEntity.setMsgTagName(sysView.getId()); + mqEntity.setMsgKey(DbUtils.getUUID(16)); + MqMessage mqMessage = new MqMessage(mqEntity); + dispenseService.pushActiveMq(mqMessage); + } return; } - Maintain maintain = maintainService.selectById(maintainId); - String maintainTableName = maintain.getTableName(); - - Wrapper<SysView> eq = new EntityWrapper<SysView>() - .eq("need_update", true) - .eq("base_maintain", maintainTableName); - List<SysView> sysViews = selectList(eq); - for (SysView sysView : sysViews) { - ViewStatus viewStatus = sysView.getStatus(); - if (!ViewStatus.working.equals(viewStatus)) { - continue; - } - createView(sysView.getId()); - - Boolean subscribe = sysView.getSubscribe(); - if (!subscribe) { - continue; - } - MqEntity mqEntity = new MqEntity(); - mqEntity.setUserId(sysView.getUserId()); - mqEntity.setMsgTopicName(Constant.View); - mqEntity.setType(Constant.View); - mqEntity.setDataId(sysView.getId()); - mqEntity.setMsgTagName(sysView.getId()); - mqEntity.setMsgKey(DbUtils.getUUID(16)); - MqMessage mqMessage = new MqMessage(mqEntity); - dispenseService.pushActiveMq(mqMessage); + catch (Exception e) { + e.printStackTrace(); } - return; + } @Override @@ -538,8 +707,9 @@ @Override public Result getMapData(SysView sysView, String changedField, Integer pageNo, int pageSize) { String mappingTable = sysView.getMappingTable(); - if (StringUtils.isEmpty(mappingTable)) { - return null; + + if (StringUtils.isEmpty(mappingTable) && !StringUtils.isEmpty(sysView.getMappingField())) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); } boolean exists = unBigDataDataSourceInfo.checkTableExists(mappingTable); if (!exists) { @@ -572,39 +742,66 @@ public long getViewCount(SysView sysView) { String viewTableName = sysView.getViewTableName(); if (StringUtils.isEmpty(viewTableName)) { + log.info(" view table is null"); return 0; } boolean exists = unBigDataDataSourceInfo.checkTableExists(viewTableName); if (!exists) { + log.info(" view table is not exist" + viewTableName); return 0; } Long count = tableInfoMapper.getCount(viewTableName, Constant.WHERE_DEFAULT); + log.info(" view table count" + count); if (count == null) { return 0L; } return count; } - @Override public Result getViewData(SysView sysView, Integer pageNo, int pageSize) { + return getViewData(sysView, pageNo, pageSize,null); + } + + @Override + public Result getViewData(SysView sysView, Integer pageNo, int pageSize, Page page) { String viewTableName = sysView.getViewTableName(); - long count = getViewCount(sysView); + long count = 0; + + if (page == null) { + count = getViewCount(sysView); + page = new Page(count); + page.setPageSize(pageSize); + page.setPageNo(pageNo); + }else { + count = page.getRecordCount(); + } + + log.info(" view count "+count); if (count == 0) { return null; } - Page page = new Page(count); - page.setPageSize(pageSize); - page.setPageNo(pageNo); + List<TableSchemaResult> tableField = tableInfoMapper.getTableField(viewTableName); String fields = tableField.stream().map(tableSchemaResult -> tableSchemaResult.getFieldName()).collect(Collectors.joining(Constant.COMMA)); + log.info(" view field" + fields); + List<Map<String, Object>> maps = tableInfoMapper.selectByPage(viewTableName, fields, Constant.WHERE_DEFAULT, page.getLimitSQL()); + if (maps == null || maps.isEmpty()) { + log.info(" view data is null"); + } + Map<String, AntianaphylaxisResult> helpfulField = antianaphylaxisClient.getHelpfulField(fields, viewTableName); + antianaphylaxisClient.fixMasterData(maps,helpfulField); + JSONObject object = new JSONObject(); object.fluentPut("records", maps); - object.fluentPut("pages", page.getPageCount()); - object.fluentPut("current", pageNo); - object.fluentPut("total", count); - object.fluentPut("pageSize", page.getPageSize()); + if (page == null) { + object.fluentPut("pages", page.getPageCount()); + object.fluentPut("current", pageNo); + object.fluentPut("total", count); + object.fluentPut("pageSize", page.getPageSize()); + } + //fields ArrayList<ViewField> sysFields = new ArrayList<>(); @@ -620,7 +817,7 @@ ViewField viewField = new ViewField(); viewField.setChangedField(changeFieldName); viewField.setField(field); - viewField.setFieldName(oneFieldByMaintain.getAlias()); + viewField.setAlias(oneFieldByMaintain.getAlias()); viewField.setMenuId(sysView.getId()); viewField.setMenuName(sysView.getName()); sysFields.add(viewField); @@ -641,7 +838,7 @@ ViewField viewField = new ViewField(); viewField.setChangedField(changeFieldName); viewField.setField(subField); - viewField.setFieldName(oneFieldByMaintain.getAlias()); + viewField.setAlias(oneFieldByMaintain.getAlias()); viewField.setMenuId(sysView.getId()); viewField.setMenuName(sysView.getName()); sysFields.add(viewField); @@ -663,6 +860,9 @@ fields.add(field); fields.add(Constant.ID); String filter = masterAuthorService.getFilter(user, maintain.getId()); + if (StringUtils.isEmpty(filter)) { + filter = Constant.WHERE_DEFAULT; + } String sql = masterDataService.selectByVersionSql(user, maintain.getTableName(), fields, filter, maintain.getVersion(), false); String tableName = MessageFormat.format(Constant.asTempSql, sql, Constant.H); String mappingTable = sysView.getMappingTable(); @@ -676,8 +876,6 @@ maps = tableInfoMapper.selectDistinct(tableName, MessageFormat.format(Constant.FieldAsAlias, field, Constant.Pre), Constant.WHERE_DEFAULT); } - - //todo 澶ф暟鎹噺浼樺寲 fields.remove(Constant.ID); ArrayList<SysField> sysFields = new ArrayList<>(); @@ -715,7 +913,11 @@ if (StringUtils.isEmpty(mappingTable) || StringUtils.isEmpty(mappingfield)) { return true; } - tableInfoMapper.delete(mappingTable, segment.toString()); + mappingTable = tableInfoMapper.selectTableByName(mappingTable); + if (!StringUtils.isEmpty(mappingTable)){ + tableInfoMapper.delete(mappingTable, segment.toString()); + } + String mappingField = sysView.getMappingField(); List<String> split = DbUtils.split(mappingField); String collect = split.stream().filter(s -> !s.equalsIgnoreCase(changedField)).collect(Collectors.joining(Constant.SEMICOLON)); -- Gitblit v1.8.0