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/MasterDataServiceImpl.java | 1150 +++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 982 insertions(+), 168 deletions(-) diff --git a/src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java index 98e53f6..0b10b35 100644 --- a/src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java +++ b/src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java @@ -4,25 +4,25 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.highdatas.mdm.entity.Character; import com.highdatas.mdm.entity.*; import com.highdatas.mdm.mapper.TableInfoMapper; import com.highdatas.mdm.pojo.*; import com.highdatas.mdm.service.*; -import com.highdatas.mdm.util.Constant; -import com.highdatas.mdm.util.ContentBuilder; -import com.highdatas.mdm.util.DbUtils; +import com.highdatas.mdm.util.*; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.mybatis.spring.SqlSessionTemplate; +import org.apache.ibatis.session.SqlSessionFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import javax.sql.DataSource; import java.sql.Connection; import java.sql.SQLException; import java.text.MessageFormat; import java.util.*; import java.util.stream.Collectors; - /** * @author kimi * @description @@ -30,6 +30,7 @@ */ @Service +@Slf4j public class MasterDataServiceImpl implements MasterDataService { @Autowired IMenuMappingService menuMappingService; @@ -44,9 +45,27 @@ @Autowired IFlowsService flowsService; @Autowired - + RedisClient redisClient; + @Autowired + IMaintainFieldService maintainFieldService; + @Autowired + IMasterAuthorService masterAuthorService; + @Autowired + SqlSessionFactory sqlSessionFactory; @Resource - protected SqlSessionTemplate sqlSessionTemplate; + protected DataSource dataSource; + @Autowired + AntianaphylaxisClient antianaphylaxisClient; + + + /** + * + * @description: 鏍规嵁琛ㄥ悕鍜宨d鑾峰彇鏁版嵁 + * @param tableName 琛ㄥ悕 + * @param id 鏁版嵁id + * @return: 鏁版嵁 + * + */ @Override public Result selectById(String tableName, String id) { try{ @@ -70,43 +89,85 @@ return Result.error(CodeMsg.SELECT_ERROR); } } - + /** + * + * @description: 鏍规嵁鐢ㄦ埛鍜岃〃鍚嶈幏鍙栨暟鎹� + * @param tableName 琛ㄥ悕 + * @param character 鐢ㄦ埛 + * @return: 鏁版嵁 + * + */ @Override - public Result selectList(String tableName) { - return selectList(tableName, null,null, (maintainService.getNowVersion(tableName).getVersion())); + public Result selectList(Character character, String tableName) { + return selectList(character, tableName, null,null, (maintainService.getNowVersion(tableName).getVersion())); } - + /** + * + * @description: 鏍规嵁鐢ㄦ埛鍜岃〃鍚嶏紝绛涢�夋潯浠惰幏鍙栨暟鎹� + * @param tableName 琛ㄥ悕 + * @param whereSegment 绛涢�夋潯浠� + * @param character 鐢ㄦ埛 + * @return: 鏁版嵁 + * + */ @Override - public Result selectList(String tableName, String whereSegment) { - return selectList(tableName, whereSegment, (maintainService.getNowVersion(tableName).getVersion())); + public Result selectList(Character character, String tableName, String whereSegment) { + return selectList(character,tableName, whereSegment, (maintainService.getNowVersion(tableName).getVersion())); } - + /** + * + * @description: 鏍规嵁鐢ㄦ埛鍜岃〃鍚嶏紝绛涢�夋潯浠讹紝鏁版嵁鐗堟湰鑾峰彇鏁版嵁 + * @param tableName 琛ㄥ悕 + * @param whereSegment 绛涢�夋潯浠� + * @param version 鏁版嵁鐗堟湰 + * @param character 鐢ㄦ埛 + * @return: 鏁版嵁 + * + */ @Override - public Result selectList(String tableName, String whereSegment, String version) { - return selectList(tableName, null, whereSegment, version); + public Result selectList(Character character,String tableName, String whereSegment, String version) { + return selectList(character, tableName, null, whereSegment, version); } - + /** + * + * @description: 鏍规嵁鐢ㄦ埛锛屽瓧娈碉紝琛ㄥ悕锛岀瓫閫夋潯浠惰幏鍙栨暟鎹� + * @param tableName 琛ㄥ悕 + * @param whereSegment 绛涢�夋潯浠� + * @param fieldList 瀛楁 + * @param character 鐢ㄦ埛 + * @return: 鏁版嵁 + * + */ @Override - public Result selectList(String tableName, List<String> fieldList, String whereSegment) { - return selectList(tableName, fieldList, whereSegment, maintainService.getNowVersion(tableName).getVersion()); + public Result selectList(Character character, String tableName, List<String> fieldList, String whereSegment) { + return selectList(character, tableName, fieldList, whereSegment, maintainService.getNowVersion(tableName).getVersion()); } - + /** + * + * @description: 鏍规嵁鐢ㄦ埛锛屽瓧娈碉紝琛ㄥ悕锛岀瓫閫夋潯浠讹紝鏁版嵁鐗堟湰鑾峰彇鏁版嵁 + * @param tableName 琛ㄥ悕 + * @param whereSegment 绛涢�夋潯浠� + * @param fieldList 瀛楁 + * @param version 鏁版嵁鐗堟湰 + * @param character 鐢ㄦ埛 + * @return: 鏁版嵁 + * + */ @Override - public Result selectList(String tableName,List<String> fieldList, String whereSegment, String version) { + public Result selectList(Character character, String tableName,List<String> fieldList, String whereSegment, String version) { try{ JSONObject object = new JSONObject(); - + //TODO only add version + Maintain maintainFromVersion = maintainService.getMaintainFromVersion(tableName, version); String fields; if (fieldList == null || fieldList.size() == 0) { - fields = getFields(tableName); + fields = getFields(character, tableName, maintainFromVersion); } else { fields = fieldList.stream().collect(Collectors.joining(Constant.COMMA)); } //std List<Map<String, Object>> select = mapper.select(tableName, fields, whereSegment); - //TODO only add version - Maintain maintainFromVersion = maintainService.getMaintainFromVersion(tableName, version); List<Map<String, Object>> maps = maintainService.selectVersionOperatorByType(tableName, maintainFromVersion.getId(), Operate.create); @@ -119,12 +180,27 @@ } } - + /** + * + * @description: 鏍规嵁鐢ㄦ埛锛屽瓧娈碉紝琛ㄥ悕鑾峰彇鏁版嵁 + * @param tableName 琛ㄥ悕 + * @param fieldList 瀛楁 + * @param character 鐢ㄦ埛 + * @return: 鏁版嵁 + * + */ @Override - public Result selectList(String tableName, List<String> fields) { - return selectList(tableName,fields,Constant.WHERE_DEFAULT,(maintainService.getNowVersion(tableName).getVersion())); + public Result selectList(Character character, String tableName, List<String> fields) { + return selectList(character, tableName,fields,Constant.WHERE_DEFAULT,(maintainService.getNowVersion(tableName).getVersion())); } - + /** + * + * @description: 鏍规嵁琛ㄥ悕锛岀瓫閫夋潯浠惰幏鍙栨暟鎹潯鏁� + * @param tableName 琛ㄥ悕 + * @param whereSegment 绛涢�夋潯浠� + * @return: 鏁版嵁鏉℃暟 + * + */ public Long getCount(String tableName, String whereSegment) { try{ if (StringUtils.isEmpty(whereSegment)) { @@ -138,20 +214,71 @@ return null; } } - public Long getCountByVersion (String maintainId, String tableName,String tableTempName,Integer fromOrderNo, Integer toOrderNo, String whereSegment) { + /** + * + * @description: 鏍规嵁鏉′欢鑾峰彇鏁版嵁鏉℃暟 + * @param maintainId 鏁版嵁鐗堟湰 + * @param tableName 琛ㄥ悕 + * @param tableTempName 涓存椂琛ㄥ悕 + * @param whereSegment 绛涢�夋潯浠� + * @param fieldList 瀛楁 + * @param version 鏁版嵁鐗堟湰 + * @param character 鐢ㄦ埛 + * @param fromOrderNo 浠庡摢涓増鏈紑濮嬪線鍓嶆帹 + * @param toOrderNo 鍒板摢涓増鏈粨鏉熷線鍓嶆帹 + * @return: 鏁版嵁鏉℃暟 + * + */ + @Override + public Long getCountByVersion (Character character, String maintainId, String tableName,String tableTempName,Integer fromOrderNo, Integer toOrderNo, String whereSegment) { try{ Maintain maintain = maintainService.selectById(maintainId); + String fields = getFields(character,tableName, maintain); + String tempFields = getTempFields(character, tableName, Constant.A1, maintain); + String A1fields = getFields(character, tableName, Constant.A1, maintain); - String fields = getFields(tableName, maintain); - String Hfields = getFields(tableName, Constant.H, maintain); - String tempFields = getTempFields(tableName, maintain); - String A1fields = getFields(tableName, Constant.A1, maintain); - String A2fields = getFields(tableName, Constant.A2, maintain); - String tempHFields = getTempFields(tableName, Constant.H, maintain); if (StringUtils.isEmpty(whereSegment)) { whereSegment = Constant.WHERE_DEFAULT; } - Long count = mapper.getCountByVersion(tableName, tableTempName, fields, tempFields, Hfields, A1fields,A2fields,tempHFields, fromOrderNo, toOrderNo, DbUtils.quotedStr(maintainId), whereSegment); + Long count; + if (StringUtils.isEmpty(fields)) { + return 0L; + } + count = mapper.getCountByVersion(tableName, tableTempName, fields, tempFields, A1fields,fromOrderNo, toOrderNo, whereSegment); + return count; + } + catch (Exception e) { + e.printStackTrace(); + return null; + } + } + /** + * + * @description: 鏍规嵁鏉′欢鑾峰彇鏈�澶х増鏈殑鏁版嵁鏉℃暟 + * @param maintainId 鏁版嵁鐗堟湰 + * @param tableName 琛ㄥ悕 + * @param tableTempName 涓存椂琛ㄥ悕 + * @param whereSegment 绛涢�夋潯浠� + * @param fieldList 瀛楁 + * @param version 鏁版嵁鐗堟湰 + * @param character 鐢ㄦ埛 + * @return: 鏁版嵁鏉℃暟 + * + */ + public Long getCountByMaxVersion (Character character, String maintainId, String tableName,String tableTempName,Integer fromOrderNo, String whereSegment) { + try{ + Maintain maintain = maintainService.selectById(maintainId); + + String fields = getFields(character, tableName, maintain); + + String tempFields = getTempFields(character, tableName, Constant.A1, maintain); + String A1fields = getFields(character, tableName, Constant.A1, maintain); + + if (StringUtils.isEmpty(whereSegment)) { + whereSegment = Constant.WHERE_DEFAULT; + } + + Long count = mapper.getCountByMaxVersion(tableName, tableTempName, fields, tempFields, A1fields, fromOrderNo, whereSegment); return count; } catch (Exception e) { @@ -160,40 +287,54 @@ } } - public Long getCountByMaxVersion (String maintainId, String tableName,String tableTempName,Integer fromOrderNo, Integer toOrderNo, String whereSegment) { - try{ - Maintain maintain = maintainService.selectById(maintainId); - - String fields = getFields(tableName, maintain); - String Hfields = getFields(tableName, Constant.H, maintain); - String tempFields = getTempFields(tableName, maintain); - String A1fields = getFields(tableName, Constant.A1, maintain); - String A2fields = getFields(tableName, Constant.A2, maintain); - String tempHFields = getTempFields(tableName, Constant.H, maintain); - if (StringUtils.isEmpty(whereSegment)) { - whereSegment = Constant.WHERE_DEFAULT; - } - Long count = mapper.getCountByMaxVersion(tableName, tableTempName, fields, tempFields, Hfields, A1fields,A2fields,tempHFields, fromOrderNo, toOrderNo, DbUtils.quotedStr(maintainId), whereSegment); - return count; - } - catch (Exception e) { - e.printStackTrace(); - return null; - } - } - - + /** + * + * @description: 鏍规嵁琛ㄥ悕鑾峰彇瀛楁sql + * @param tableName 琛ㄥ悕 + * @return: 瀛楁sql + * + */ @Override public String getFields(String tableName) { - return getFields(tableName, Constant.EMPTY); + return getFields(tableName, Constant.EMPTY_Str); } - + /** + * + * @description: 鏍规嵁琛ㄥ悕 鐢ㄦ埛锛� 鐗堟湰鑾峰彇瀛楁sql + * @param tableName 琛ㄥ悕 + * @param character 鐢ㄦ埛 + * @param maintain 鐗堟湰 + * @return: 瀛楁sql + * + */ @Override - public String getFields(String tableName, Maintain maintain) { + public String getFields(Character character, String tableName, Maintain maintain) { - return getFields(tableName, null, maintain); + return getFields(character, tableName, null, maintain); } + /** + * + * @description: 鏍规嵁琛ㄥ悕 鐢ㄦ埛锛� 鐗堟湰鑾峰彇瀛楁sql + * @param tableName 琛ㄥ悕 + * @param character 鐢ㄦ埛 + * @param maintain 鐗堟湰 + * @param uuid 璇锋眰鍞竴鏍囪瘑锛宭og涓煡璇㈡椂闂翠娇鐢� + * @return: 瀛楁sql + * + */ + @Override + public String getFields(Character character, String tableName, Maintain maintain, String uuid) { + return getFields(character, tableName, null, maintain, uuid); + } + /** + * + * @description: 鏍规嵁琛ㄥ悕 鐢ㄦ埛锛� 鐗堟湰缁勮 casewhen 瀛楁sql + * @param tableName 琛ㄥ悕 + + * @return: 瀛楁sql + * + */ private String getCaseWhenFields(String tableName) { List<TableSchemaResult> tableField = mapper.getTableField(tableName); ContentBuilder contentBuilder = new ContentBuilder(Constant.COMMA); @@ -207,6 +348,14 @@ } return contentBuilder.toString(); } + /** + * + * @description: 鏍规嵁琛ㄥ悕 锛岃幏鍙栧瓧娈祍ql骞舵坊鍔犲埆鍚� + * @param tableName 琛ㄥ悕 + * @param alias 鍒悕 + * @return: 瀛楁sql + * + */ @Override public String getFields(String tableName, String alias) { List<TableSchemaResult> tableField = mapper.getTableField(tableName); @@ -226,11 +375,43 @@ } return contentBuilder.toString(); } - + /** + * + * @description: 鏍规嵁琛ㄥ悕 鐢ㄦ埛锛� 鐗堟湰鑾峰彇瀛楁sql锛屽苟娣诲姞鍒悕 + * @param tableName 琛ㄥ悕 + * @param character 鐢ㄦ埛 + * @param maintain 鐗堟湰 + * @param alias 鍒悕 + * @return: 瀛楁sql + * + */ @Override - public String getFields(String tableName, String alias, Maintain maintain) { - List<SysField> fields = fieldService.getFieldByMaintain(maintain.getId()); + public String getFields(Character character, String tableName, String alias, Maintain maintain) { + return getFields(character, tableName, alias, maintain, null); + } + /** + * + * @description: 鏍规嵁琛ㄥ悕 鐢ㄦ埛锛� 鐗堟湰鑾峰彇瀛楁sql锛屽苟娣诲姞鍒悕 + * @param tableName 琛ㄥ悕 + * @param character 鐢ㄦ埛 + * @param maintain 鐗堟湰 + * @param alias 鍒悕 + * @param uuid 璇锋眰鍞竴鏍囪瘑锛宭og涓煡璇㈡椂闂翠娇鐢� + * @return: 瀛楁sql + * + */ + @Override + public String getFields(Character character, String tableName, String alias, Maintain maintain, String uuid) { + List<SysField> fields; + if (character == null) { + fields = fieldService.getFieldByMaintain(maintain.getId()); + }else { + fields = masterAuthorService.getField(character, maintain.getId(), uuid); + } ContentBuilder contentBuilder = new ContentBuilder(Constant.COMMA); + if (fields == null) { + return Constant.EMPTY_Str; + } if (!fields.contains(Constant.ID)) { fields.add(new SysField().setField(Constant.ID)); } @@ -252,18 +433,45 @@ return contentBuilder.toString(); } + /** + * + * @description: 鏍规嵁琛ㄥ悕 鐢ㄦ埛锛� 鐗堟湰鑾峰彇涓存椂琛ㄥ瓧娈祍ql锛屽苟娣诲姞鍒悕 + * @param tableName 涓存椂琛ㄥ悕 + * @param character 鐢ㄦ埛 + * @param maintain 鐗堟湰 + * @return: 瀛楁sql + * + */ @Override - public String getTempFields(String tableName, Maintain maintain) { - return getTempFields(tableName, null, maintain); + public String getTempFields(Character character, String tableName, Maintain maintain) { + return getTempFields(character, tableName, null, maintain); } + /** + * + * @description: 鏍规嵁琛ㄥ悕 鐢ㄦ埛锛� 鐗堟湰鑾峰彇涓存椂琛ㄥ瓧娈祍ql锛屽苟娣诲姞鍒悕 + * @param tableName 涓存椂琛ㄥ悕 + * @param character 鐢ㄦ埛 + * @return: 瀛楁sql + * + */ @Override - public String getTempFields(String tableName) { - return getTempFields(tableName, Constant.EMPTY_Str); + public String getTempFields(Character character, String tableName) { + return getTempFields(character, tableName, Constant.EMPTY_Str); } + /** + * + * @description: 鏍规嵁琛ㄥ悕 鐢ㄦ埛鑾峰彇涓存椂琛ㄥ瓧娈祍ql锛屽苟娣诲姞鑷畾涔夊埆鍚� + * @param tableName 涓存椂琛ㄥ悕 + * @param character 鐢ㄦ埛 + * @param alias 鍒悕 + * @return: 瀛楁sql + * + */ @Override - public String getTempFields(String tableName, String alias) { + public String getTempFields(Character character, String tableName, String alias) { List<TableSchemaResult> tableField = mapper.getTableField(tableName); + ContentBuilder contentBuilder = new ContentBuilder(Constant.COMMA); for (TableSchemaResult tableSchemaResult : tableField) { String fieldName = tableSchemaResult.getFieldName(); @@ -283,14 +491,32 @@ } return contentBuilder.toString(); } - + /** + * + * @description: 鏍规嵁琛ㄥ悕 鐢ㄦ埛锛� 鐗堟湰鑾峰彇涓存椂琛ㄥ瓧娈祍ql锛屽苟娣诲姞鑷畾涔夊埆鍚� + * @param tableName 涓存椂琛ㄥ悕 + * @param character 鐢ㄦ埛 + * @param maintain 鐗堟湰 + * @param alias 鍒悕 + * @return: 瀛楁sql + * + */ @Override - public String getTempFields(String tableName, String alias, Maintain maintain) { - List<SysField> fields = fieldService.getFieldByMaintain(maintain.getId()); + public String getTempFields(Character character, String tableName, String alias, Maintain maintain) { + List<SysField> fields; + if (character == null) { + fields = fieldService.getFieldByMaintain(maintain.getId()); + }else { + fields = masterAuthorService.getField(character, maintain.getId()); + } + if (fields == null) { + return Constant.EMPTY_Str; + } ContentBuilder contentBuilder = new ContentBuilder(Constant.COMMA); if (!fields.contains(Constant.ID)) { fields.add(new SysField().setField(Constant.ID)); } + List<String> joinFieldList = getJoinFieldList(); for (SysField field : fields) { String fieldName = field.getField(); @@ -298,60 +524,379 @@ if (StringUtils.isEmpty(alias)) { contentBuilder.append(MessageFormat.format("{0} as id", Constant.STD_ID)); } else { - contentBuilder.append(MessageFormat.format("{0}.{1} as id", alias, Constant.STD_ID)); + if (joinFieldList.contains(fieldName)) { + contentBuilder.append(MessageFormat.format("{0}.{1} as id", alias, Constant.STD_ID)); + } else { + contentBuilder.append(MessageFormat.format("{0} as id", Constant.STD_ID)); + } + } continue; } if (StringUtils.isEmpty(alias)) { contentBuilder.append(fieldName); } else { - contentBuilder.append(MessageFormat.format(Constant.Alias,alias,fieldName)); + if (joinFieldList.contains(fieldName)) { + contentBuilder.append(MessageFormat.format(Constant.Alias,alias,fieldName)); + } else { + contentBuilder.append(fieldName); + } } } return contentBuilder.toString(); } - @Override - public Result selectListByPageByVersion(String tableName, Integer pageNo, Integer pageSize, boolean findMax) { - return selectListByPageByVersion(tableName,Constant.WHERE_DEFAULT,pageNo,pageSize, findMax); + private List<String> getJoinFieldList() { + List<TableSchemaResult> fieldList = new ArrayList<>(); + List<TableSchemaResult> maintainList = mapper.getTableField("maintain"); + if (maintainList != null) { + fieldList.addAll(maintainList); + } + List<TableSchemaResult> flows = mapper.getTableField("flows"); + if (flows != null) { + fieldList.addAll(flows); + } + List<TableSchemaResult> maintain_detail = mapper.getTableField("maintain_detail"); + if (maintain_detail != null) { + fieldList.addAll(maintain_detail); + } + return fieldList.stream().map(tableSchemaResult -> tableSchemaResult.getFieldName()).collect(Collectors.toList()); } + /** + * + * @description: 鏍规嵁鏉′欢鑾峰彇鏁版嵁 + * @param tableName 涓存椂琛ㄥ悕 + * @param character 鐢ㄦ埛 + * @param pageNo 椤垫暟 + * @param pageSize 姣忛〉鏁版嵁閲� + * @param findMax 鏄惁鏌ヨ鐨勬渶澶х増鏈殑鏁版嵁 + * @return: 鏁版嵁 + * + */ + @Override + public Result selectListByPageByVersion(Character character, String tableName, Integer pageNo, Integer pageSize, boolean findMax) { + return selectListByPageByVersion(character, tableName,Constant.WHERE_DEFAULT,pageNo,pageSize, findMax); + } + /** + * + * @description: 鏍规嵁鏉′欢鑾峰彇鏁版嵁 + * @param tableName 涓存椂琛ㄥ悕 + * @param character 鐢ㄦ埛 + * @param whereSegment 绛涢�夋潯浠� + * @param pageNo 椤垫暟 + * @param pageSize 姣忛〉鏁版嵁閲� + * @param findMax 鏄惁鏌ヨ鐨勬渶澶х増鏈殑鏁版嵁 + * @return: 鏁版嵁 + * + */ + @Override + public Result selectListByPageByVersion(Character character, String tableName, String whereSegment, Integer pageNo, boolean findMax) { + return selectListByPageByVersion(character, tableName,null, whereSegment,pageNo, null, String.valueOf(maintainService.getNowVersion(tableName).getVersion()), findMax); + } + /** + * + * @description: 鏍规嵁鏉′欢鑾峰彇鏁版嵁 + * @param tableName 涓存椂琛ㄥ悕 + * @param character 鐢ㄦ埛 + * @param pageNo 椤垫暟 + * @param version 鐗堟湰鍙� + * @param findMax 鏄惁鏌ヨ鐨勬渶澶х増鏈殑鏁版嵁 + * @param uuid 璇锋眰鍞竴鏍囪瘑锛宭og涓煡璇㈡椂闂翠娇鐢� + * @return: 鏁版嵁 + * + */ + @Override + public Result selectListByPageByVersion(Character character, String tableName, Integer pageNo, String version, boolean findMax) { + return selectListByPageByVersion(character, tableName,null,Constant.WHERE_DEFAULT,pageNo, null, version, findMax); + } + /** + * + * @description: 鏍规嵁鏉′欢鑾峰彇鏁版嵁 + * @param tableName 涓存椂琛ㄥ悕 + * @param character 鐢ㄦ埛 + * @param pageNo 椤垫暟 + * @param findMax 鏄惁鏌ヨ鐨勬渶澶х増鏈殑鏁版嵁 + * @return: 鏁版嵁 + * + */ + @Override + public Result selectListByPageByVersion(Character character, String tableName, Integer pageNo, boolean findMax) { + return selectListByPageByVersion(character, tableName,null,Constant.WHERE_DEFAULT,pageNo, null, String.valueOf(maintainService.getNowVersion(tableName).getVersion()), findMax); + } + /** + * + * @description: 鏍规嵁鏉′欢鑾峰彇鏁版嵁 + * @param tableName 涓存椂琛ㄥ悕 + * @param character 鐢ㄦ埛 + * @param whereSegment 绛涢�夋潯浠� + * @param pageNo 椤垫暟 + * @param pageSize 姣忛〉鏁版嵁閲� + * @param findMax 鏄惁鏌ヨ鐨勬渶澶х増鏈殑鏁版嵁 + * @return: 鏁版嵁 + * + */ + @Override + public Result selectListByPageByVersion(Character character, String tableName, String whereSegment, Integer pageNo, Integer pageSize, boolean findMax) { + return selectListByPageByVersion(character, tableName,null,whereSegment,pageNo,pageSize, findMax); + } + /** + * + * @description: 鏍规嵁鏉′欢鑾峰彇鏁版嵁 + * @param tableName 涓存椂琛ㄥ悕 + * @param character 鐢ㄦ埛 + * @param fieldList 绛涢�夊瓧娈� + * @param whereSegment 绛涢�夋潯浠� + * @param pageNo 椤垫暟 + * @param pageSize 姣忛〉鏁版嵁閲� + * @param findMax 鏄惁鏌ヨ鐨勬渶澶х増鏈殑鏁版嵁 + * @return: 鏁版嵁 + * + */ + @Override + public Result selectListByPageByVersion(Character character, String tableName, List<String> fieldList, String whereSegment, Integer pageNo, boolean findMax) { + return selectListByPageByVersion(character, tableName,null,whereSegment,pageNo, null, findMax); + } + /** + * + * @description: 鏍规嵁鏉′欢鑾峰彇鏁版嵁 + * @param tableName 涓存椂琛ㄥ悕 + * @param character 鐢ㄦ埛 + * @param whereSegment 绛涢�夋潯浠� + * @param pageNo 椤垫暟 + * @param fieldList 瀛楁鍒楄〃 + * @param findMax 鏄惁鏌ヨ鐨勬渶澶х増鏈殑鏁版嵁 + * @return: 鏁版嵁 + * + */ + @Override + public Result selectListByPageByVersion(Character character, String tableName, List<String> fieldList, Integer pageNo, boolean findMax) { + return selectListByPageByVersion(character, tableName,null,Constant.WHERE_DEFAULT,pageNo, findMax); + } + /** + * + * @description: 鏍规嵁鏉′欢鑾峰彇鏁版嵁 + * @param tableName 涓存椂琛ㄥ悕 + * @param character 鐢ㄦ埛 + * @param whereSegment 绛涢�夋潯浠� + * @param pageNo 椤垫暟 + * @param version 鐗堟湰鍙� + * @param findMax 鏄惁鏌ヨ鐨勬渶澶х増鏈殑鏁版嵁 + * @return: 鏁版嵁 + * + */ + @Override + public Result selectListByPageByVersion(Character character, String tableName, String whereSegment, Integer pageNo, String version, boolean findMax) { + return selectListByPageByVersion(character, tableName, null,whereSegment, pageNo, null,version, findMax); + } + /** + * + * @description: 鏍规嵁鏉′欢鑾峰彇鏁版嵁 + * @param tableName 涓存椂琛ㄥ悕 + * @param character 鐢ㄦ埛 + * @param whereSegment 绛涢�夋潯浠� + * @param pageNo 椤垫暟 + * @param version 鐗堟湰鍙� + * @param findMax 鏄惁鏌ヨ鐨勬渶澶х増鏈殑鏁版嵁 + * @param uuid 鏃ュ織浣跨敤 + * @return: 鏁版嵁 + * + */ + @Override + public Result selectListByPageByVersion(Character character, String tableName, String whereSegment, Integer pageNo, String version, boolean findMax, String uuid) { + return selectListByPageByVersion(character, tableName, null,whereSegment, pageNo, null,version, findMax, uuid); + } + /** + * + * @description: 鏍规嵁鏉′欢鑾峰彇鏁版嵁 + * @param tableName 涓存椂琛ㄥ悕 + * @param character 鐢ㄦ埛 + * @param whereSegment 绛涢�夋潯浠� + * @param version 鐗堟湰鍙� + * @param findMax 鏄惁鏌ヨ鐨勬渶澶х増鏈殑鏁版嵁 + * @return: 鏁版嵁 + * + */ + @Override + public List<Map<String, Object>> selectListByVersion(Character character, String tableName, List<String> fieldList, String whereSegment, String version, boolean findMax) { + Maintain maintainFromVersion = maintainService.getMaintainFromVersion(tableName, version); + Maintain nowVersionMaintain = maintainService.getNowVersion(tableName); + boolean isMax = maintainService.checkdMaxVersion(maintainFromVersion.getId()); + boolean isNow = maintainService.checkNowVersion(maintainFromVersion.getId()); + boolean isFirst = maintainService.checkFirstVersion(maintainFromVersion.getId()); - @Override - public Result selectListByPageByVersion(String tableName, String whereSegment, Integer pageNo, boolean findMax) { - return selectListByPageByVersion(tableName,null, whereSegment,pageNo, null, String.valueOf(maintainService.getNowVersion(tableName).getVersion()), findMax); - } + Integer fromVersionOrderNo = maintainFromVersion.getOrderNo(); + Integer nowVersionOrderNo = 0; + if (nowVersionMaintain != null) { + nowVersionOrderNo = nowVersionMaintain.getOrderNo(); + } - @Override - public Result selectListByPageByVersion(String tableName, Integer pageNo, String version, boolean findMax) { - return selectListByPageByVersion(tableName,null,Constant.WHERE_DEFAULT,pageNo, null, version, findMax); - } - @Override - public Result selectListByPageByVersion(String tableName, Integer pageNo, boolean findMax) { - return selectListByPageByVersion(tableName,null,Constant.WHERE_DEFAULT,pageNo, null, String.valueOf(maintainService.getNowVersion(tableName).getVersion()), findMax); - } + String tableTempName = tableName + Constant.RECORD; + List<Map<String, Object>> result = null; - @Override - public Result selectListByPageByVersion(String tableName, String whereSegment, Integer pageNo, Integer pageSize, boolean findMax) { - return selectListByPageByVersion(tableName,null,whereSegment,pageNo,pageSize, findMax); - } + String fields; + String tempFields; + String A1Fields; - @Override - public Result selectListByPageByVersion(String tableName, List<String> fieldList, String whereSegment, Integer pageNo, boolean findMax) { - return selectListByPageByVersion(tableName,null,whereSegment,pageNo, null, findMax); - } - @Override - public Result selectListByPageByVersion(String tableName, List<String> fieldList, Integer pageNo, boolean findMax) { - return selectListByPageByVersion(tableName,null,Constant.WHERE_DEFAULT,pageNo, findMax); - } - @Override - public Result selectListByPageByVersion(String tableName, String whereSegment, Integer pageNo, String version, boolean findMax) { - return selectListByPageByVersion(tableName, null,whereSegment, pageNo, null,version, findMax); - } + if (fieldList == null || fieldList.size() == 0) { + fields = getFields(character, tableName, maintainFromVersion); + A1Fields = getFields(character, tableName, Constant.A1, maintainFromVersion); + tempFields = getTempFields(character, tableName, Constant.A1, maintainFromVersion); + } else { + fields = fieldList.stream().collect(Collectors.joining(Constant.COMMA)); + A1Fields = fieldList.stream() + .map(s -> MessageFormat.format(Constant.Alias,Constant.A1, s)) + .collect(Collectors.joining(Constant.COMMA)); + tempFields = fieldList.stream() + .map(s -> + s.equalsIgnoreCase(Constant.ID) ? MessageFormat.format("{0} as id",Constant.STD_ID): s) + .map(s -> MessageFormat.format(Constant.Alias,Constant.A1, s)) + .collect(Collectors.joining(Constant.COMMA)); - @Override - public Result selectListByPageByVersion(String tableName, List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, String version, boolean findMax) { + } + if (isNow && !findMax){ + result = mapper.selectByPage(tableName, fields, whereSegment, null); + } + else if (isMax && findMax) { + ContentBuilder builder = new ContentBuilder(Constant.COMMA); + if (nowVersionMaintain == null) { + builder.append(DbUtils.quotedStr(maintainFromVersion.getId())); + }else { + List<String> maintainIds = maintainService.getCompareVersionMaintains(nowVersionMaintain, maintainFromVersion); + long con = maintainIds.stream().map(s -> builder.append(DbUtils.quotedStr(s))).count(); + } + result = mapper.selectByPageByMaxVersion(tableName,tableTempName,fields, A1Fields, tempFields, nowVersionOrderNo, whereSegment, null); + + }else { + result = mapper.selectByPageByVersion(tableName,tableTempName,fields, A1Fields, tempFields, nowVersionOrderNo, fromVersionOrderNo, whereSegment, null); + } + + return result; + } + /** + * + * @description: 鏍规嵁鏉′欢鑾峰彇鏁版嵁sql璇彞 + * @param tableName 涓存椂琛ㄥ悕 + * @param character 鐢ㄦ埛 + * @param whereSegment 绛涢�夋潯浠� + * @param version 鐗堟湰鍙� + * @param findMax 鏄惁鏌ヨ鐨勬渶澶х増鏈殑鏁版嵁 + * @return: 鏁版嵁sql璇彞 + * + */ + @Override + public String selectByVersionSql(Character character, String tableName, List<String> fieldList, String whereSegment, String version, boolean findMax) { + Maintain maintainFromVersion = maintainService.getMaintainFromVersion(tableName, version); + Maintain nowVersionMaintain = maintainService.getNowVersion(tableName); + boolean isMax = maintainService.checkdMaxVersion(maintainFromVersion.getId()); + boolean isNow = maintainService.checkNowVersion(maintainFromVersion.getId()); + boolean isFirst = maintainService.checkFirstVersion(maintainFromVersion.getId()); + + Integer fromVersionOrderNo = maintainFromVersion.getOrderNo(); + Integer nowVersionOrderNo = 0; + if (nowVersionMaintain != null) { + nowVersionOrderNo = nowVersionMaintain.getOrderNo(); + } + + String tableTempName = tableName + Constant.RECORD; + String result = null; + + String fields; + String tempFields; + String Hfields; + String A1fields; + String A2fields; + + String tempHfields; + if (fieldList == null || fieldList.size() == 0) { + fields = getFields(null, tableName, maintainFromVersion); + Hfields = getFields(null, tableName,Constant.H, maintainFromVersion); + A1fields = getFields(null, tableName,Constant.A1, maintainFromVersion); + A2fields = getFields(null, tableName,Constant.A2, maintainFromVersion); + tempFields = getTempFields(null, tableName, maintainFromVersion); + tempHfields = getTempFields(null, tableName, Constant.H, maintainFromVersion); + } else { + fields = fieldList.stream().collect(Collectors.joining(Constant.COMMA)); + Hfields = fieldList.stream().map(s -> MessageFormat.format(Constant.Alias,Constant.H, s)).collect(Collectors.joining(Constant.COMMA)); + A1fields = fieldList.stream().map(s -> MessageFormat.format(Constant.Alias,Constant.A1, s)).collect(Collectors.joining(Constant.COMMA)); + A2fields = fieldList.stream().map(s -> MessageFormat.format(Constant.Alias,Constant.A2, s)).collect(Collectors.joining(Constant.COMMA)); + tempFields = fieldList.stream() + .map(s -> + s.equalsIgnoreCase(Constant.ID) ? MessageFormat.format("{0} as id",Constant.STD_ID): s) + .collect(Collectors.joining(Constant.COMMA)); + + tempHfields = fieldList.stream() + .map(s -> + s.equalsIgnoreCase(Constant.ID) ? MessageFormat.format("{0} as id",Constant.STD_ID): s) + .map(s -> MessageFormat.format(Constant.Alias,Constant.H,s)) + .collect(Collectors.joining(Constant.COMMA)); + + } + MyBatisSql ibatisSql = new MyBatisSql(); + Map<String, Object> parameterMap = new HashMap<>(); + if (isNow && !findMax){ + parameterMap.put("tableName", tableName); + parameterMap.put("fields", fields); + parameterMap.put("where", whereSegment); + parameterMap.put("limit", null); + result = DbUtils.getMyBatisSql("selectByPage", parameterMap, sqlSessionFactory).getSql(); + } + else if (isMax && findMax) { + ContentBuilder builder = new ContentBuilder(Constant.COMMA); + if (nowVersionMaintain == null) { + builder.append(DbUtils.quotedStr(maintainFromVersion.getId())); + }else { + List<String> maintainIds = maintainService.getCompareVersionMaintains(nowVersionMaintain, maintainFromVersion); + long con = maintainIds.stream().map(s -> builder.append(DbUtils.quotedStr(s))).count(); + } + parameterMap.put("tableName", tableName); + parameterMap.put("tableTempName", tableTempName); + parameterMap.put("fields", fields); + parameterMap.put("tempFields", tempFields); + parameterMap.put("Hfields", Hfields); + parameterMap.put("A1fields", A1fields); + parameterMap.put("A2fields", A2fields); + parameterMap.put("tempHFields", tempHfields); + parameterMap.put("fromOrderNo", fromVersionOrderNo); + parameterMap.put("toOrderNo", nowVersionOrderNo); + parameterMap.put("maintainId", DbUtils.quotedStr(maintainFromVersion.getId())); + parameterMap.put("where", whereSegment); + parameterMap.put("limit", null); + result = DbUtils.getMyBatisSql("selectByPageByMaxVersion", parameterMap, sqlSessionFactory).getSql(); + + }else { + parameterMap.put("tableName", tableName); + parameterMap.put("tableTempName", tableTempName); + parameterMap.put("fields", fields); + parameterMap.put("tempFields", tempFields); + parameterMap.put("Hfields", Hfields); + parameterMap.put("A1fields", A1fields); + parameterMap.put("A2fields", A2fields); + parameterMap.put("tempHFields", tempHfields); + parameterMap.put("fromOrderNo", fromVersionOrderNo); + parameterMap.put("toOrderNo", nowVersionOrderNo); + parameterMap.put("maintainId", DbUtils.quotedStr(maintainFromVersion.getId())); + parameterMap.put("where", whereSegment); + parameterMap.put("limit", null); + result = DbUtils.getMyBatisSql("selectByPageByVersion", parameterMap, sqlSessionFactory).getSql(); + } + + return result; + } + /** + * + * @description: 鏍规嵁鏉′欢鑾峰彇鏁版嵁閲� + * @param tableName 涓存椂琛ㄥ悕 + * @param character 鐢ㄦ埛 + * @param whereSegment 绛涢�夋潯浠� + * @param version 鐗堟湰鍙� + * @param findMax 鏄惁鏌ヨ鐨勬渶澶х増鏈殑鏁版嵁 + * @return: 鏁版嵁閲� + * + */ + @Override + public Long getCountByVersion(Character character, String tableName, String whereSegment, String version, boolean findMax) { Maintain maintainFromVersion = maintainService.getMaintainFromVersion(tableName, version); Maintain nowVersionMaintain = maintainService.getNowVersion(tableName); boolean isMax = maintainService.checkdMaxVersion(maintainFromVersion.getId()); @@ -368,61 +913,182 @@ Long count; - if (isNow && !findMax){ + if (isNow && !findMax){ + count = getCount(tableName, whereSegment); + } + else if (isMax && findMax) { + if (isFirst && nowVersionMaintain == null) { + nowVersionOrderNo = nowVersionOrderNo - 1; + } + + count = getCountByMaxVersion(character, maintainFromVersion.getId(), tableName, tableTempName, nowVersionOrderNo, whereSegment); + }else { + count = getCountByVersion(character, maintainFromVersion.getId(), tableName, tableTempName, nowVersionOrderNo, fromVersionOrderNo, whereSegment); + } + return count; + } + /** + * + * @description: 鏍规嵁鏉′欢鑾峰彇鏁版嵁 + * @param tableName 涓存椂琛ㄥ悕 + * @param character 鐢ㄦ埛 + * @param whereSegment 绛涢�夋潯浠� + * @param pageNo 椤垫暟 + * @param pageSize 姣忛〉鏉℃暟 + * @param version 鐗堟湰鍙� + * @param findMax 鏄惁鏌ヨ鐨勬渶澶х増鏈殑鏁版嵁 + * @return: 鏁版嵁 + * + */ + @Override + public Result selectListByPageByVersion(Character character, String tableName, List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, String version, boolean findMax) { + return selectListByPageByVersion(character, tableName, fieldList, whereSegment, pageNo, pageSize, version, findMax, null); + } + /** + * + * @description: 鏍规嵁鏉′欢鑾峰彇鏁版嵁 + * @param tableName 涓存椂琛ㄥ悕 + * @param character 鐢ㄦ埛 + * @param fieldList 瀛楁鍒楄〃 + * @param whereSegment 绛涢�夋潯浠� + * @param pageNo 椤垫暟 + * @param pageSize 姣忛〉鏉℃暟 + * @param version 鐗堟湰鍙� + * @param findMax 鏄惁鏌ヨ鐨勬渶澶х増鏈殑鏁版嵁 + * @return: 鏁版嵁 + * + */ + @Override + public Result selectListByPageByVersion(Character character, String tableName, List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, String version, boolean findMax, String uuid) { + return selectListByPageByVersion(character, tableName, fieldList, whereSegment, pageNo, pageSize, version, findMax, uuid, null); + } + /** + * + * @description: 鏍规嵁鏉′欢鑾峰彇鏁版嵁 + * @param tableName 涓存椂琛ㄥ悕 + * @param character 鐢ㄦ埛 + * @param whereSegment 绛涢�夋潯浠� + * @param pageNo 椤垫暟 + * @param pageSize 姣忛〉鏉℃暟 + * @param version 鐗堟湰鍙� + * @param findMax 鏄惁鏌ヨ鐨勬渶澶х増鏈殑鏁版嵁 + * @param uuid 渚涙棩蹇椾娇鐢� + * @param page 宸茬粡璁$畻濂界殑鍒嗛〉瀵硅薄 + * @return: 鏁版嵁 + * + */ + @Override + public Result selectListByPageByVersion(Character character, String tableName, List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, String version, boolean findMax, String uuid, Page page) { + String fieldStr = ""; + if (fieldList == null || fieldList.isEmpty()) { + fieldStr = ""; + } else { + fieldList.stream().collect(Collectors.joining(Constant.UnderLine)); + } + String key; + if (page == null) { + key = DbUtils.StrJoinLink(Constant.UnderLine, character.getId(), tableName, whereSegment, String.valueOf(pageNo), String.valueOf(pageSize), version, String.valueOf(findMax)); + + } else { + key = DbUtils.StrJoinLink(Constant.UnderLine, character.getId(), tableName, whereSegment, String.valueOf(pageNo), String.valueOf(pageSize), version, String.valueOf(findMax), page.getLimitSQL()); + } + + if (!findMax) { + Object redisValObj = redisClient.getRedisValObj(key); + if (redisValObj != null) { + JSONObject object = (JSONObject) redisValObj; + Result result = JSONObject.parseObject(object.toJSONString(), Result.class); + return result; + } + } + + Maintain maintainFromVersion = maintainService.getMaintainFromVersion(tableName, version); + Maintain nowVersionMaintain = maintainService.getNowVersion(tableName); + boolean isMax = maintainService.checkdMaxVersion(maintainFromVersion.getId()); + boolean isNow = maintainService.checkNowVersion(maintainFromVersion.getId()); + boolean isFirst = maintainService.checkFirstVersion(maintainFromVersion.getId()); + + Integer fromVersionOrderNo = maintainFromVersion.getOrderNo(); + Integer nowVersionOrderNo = 0; + if (nowVersionMaintain != null) { + nowVersionOrderNo = nowVersionMaintain.getOrderNo(); + } + + String tableTempName = tableName + Constant.RECORD; + + Long count; + Date startDate = new Date(); + if (isNow && !findMax){ count = getCount(tableName, whereSegment); } else if (isMax && findMax) { if (isFirst && nowVersionMaintain == null) { nowVersionOrderNo = nowVersionOrderNo - 1; } - count = getCountByMaxVersion(maintainFromVersion.getId(), tableName, tableTempName, fromVersionOrderNo, nowVersionOrderNo, whereSegment); - }else { - count = getCountByVersion(maintainFromVersion.getId(), tableName, tableTempName, nowVersionOrderNo, fromVersionOrderNo, whereSegment); - } + count = getCountByMaxVersion(character, maintainFromVersion.getId(), tableName, tableTempName, nowVersionOrderNo, whereSegment); + }else { + count = getCountByVersion(character, maintainFromVersion.getId(), tableName, tableTempName, nowVersionOrderNo, fromVersionOrderNo, whereSegment); + } + Date endDate = new Date(); + log.info(MessageFormat.format("master tag:{0} MASTER-- select count:{1} ms",uuid, (endDate.getTime() - startDate.getTime()))); + + if (page != null && count != null) { + page.setRecordCount(count.intValue()); + } + if (count == null || count == 0) { + return Result.success(null); + } //mapper.selectByPageByVersion(tableName, tableTempName, fieldList, whereSegment,); - Page page = new Page(count); - if (pageSize != null && pageSize.compareTo(1) != -1) { - page.setPageSize(pageSize); - } List<Map<String, Object>> result = null; - if (page.getPageCount() < pageNo) { - return Result.error(CodeMsg.SELECT_ERROR_NOTFOUND); + + if (page == null) { + page = new Page(count); + if (pageSize != null && pageSize.compareTo(1) != -1) { + page.setPageSize(pageSize); + } + + if (page.getPageCount() < pageNo) { + return Result.error(CodeMsg.SELECT_ERROR_NOTFOUND); + } + page.setPageNo(pageNo); } - page.setPageNo(pageNo); String limitSQL = page.getLimitSQL(); String fields; String tempFields; - String Hfields; - String A1fields; - String A2fields; - String tempHfields; + String A1Fields; + if (fieldList == null || fieldList.size() == 0) { - fields = getFields(tableName, maintainFromVersion); - Hfields = getFields(tableName,Constant.H, maintainFromVersion); - A1fields = getFields(tableName,Constant.A1, maintainFromVersion); - A2fields = getFields(tableName,Constant.A2, maintainFromVersion); - tempFields = getTempFields(tableName, maintainFromVersion); - tempHfields = getTempFields(tableName, Constant.H, maintainFromVersion); - } else { - fields = fieldList.stream().collect(Collectors.joining(Constant.COMMA)); - Hfields = fieldList.stream().map(s -> MessageFormat.format(Constant.Alias,Constant.H, s)).collect(Collectors.joining(Constant.COMMA)); - A1fields = fieldList.stream().map(s -> MessageFormat.format(Constant.Alias,Constant.A1, s)).collect(Collectors.joining(Constant.COMMA)); - A2fields = fieldList.stream().map(s -> MessageFormat.format(Constant.Alias,Constant.A2, s)).collect(Collectors.joining(Constant.COMMA)); - tempFields = fieldList.stream() + fields = getFields(character, tableName, maintainFromVersion, uuid); + A1Fields = getFields(character, tableName, Constant.A1, maintainFromVersion, uuid); + List<String> fieldStrList = DbUtils.split(fields, Constant.COMMA); + tempFields = fieldStrList.stream() .map(s -> - s.equalsIgnoreCase(Constant.ID) ? MessageFormat.format("{} as id",Constant.STD_ID): s) + s.equalsIgnoreCase(Constant.ID) ? MessageFormat.format("{0} as id",Constant.STD_ID): s) + .map(s -> MessageFormat.format(Constant.Alias,Constant.A1, s)) .collect(Collectors.joining(Constant.COMMA)); - tempHfields = fieldList.stream() + } else { + if (!fieldList.contains(Constant.ID)) { + fieldList.add(Constant.ID); + } + fields = fieldList.stream().collect(Collectors.joining(Constant.COMMA)); + A1Fields = fieldList.stream() + .map(s -> MessageFormat.format(Constant.Alias,Constant.A1, s)) + .collect(Collectors.joining(Constant.COMMA)); + tempFields = fieldList.stream() .map(s -> - s.equalsIgnoreCase(Constant.ID) ? MessageFormat.format("{} as id",Constant.STD_ID): s) - .map(s -> MessageFormat.format(Constant.Alias,Constant.H,s)) + s.equalsIgnoreCase(Constant.ID) ? MessageFormat.format("{0} as id",Constant.STD_ID): s) + .map(s -> MessageFormat.format(Constant.Alias,Constant.A1, s)) .collect(Collectors.joining(Constant.COMMA)); } + startDate = new Date(); + log.info(MessageFormat.format("master tag:{0} MASTER-- select field :{1} ms",uuid, (startDate.getTime() - endDate.getTime()))); + + if (isNow && !findMax){ result = mapper.selectByPage(tableName, fields, whereSegment, page.getLimitSQL()); } @@ -435,15 +1101,17 @@ long con = maintainIds.stream().map(s -> builder.append(DbUtils.quotedStr(s))).count(); } - result = mapper.selectByPageByMaxVersion(tableName,tableTempName,fields,tempFields, Hfields, A1fields, A2fields, tempHfields, fromVersionOrderNo, nowVersionOrderNo, DbUtils.quotedStr(maintainFromVersion.getId()), whereSegment, limitSQL); + result = mapper.selectByPageByMaxVersion(tableName,tableTempName,fields, A1Fields, tempFields, nowVersionOrderNo, whereSegment, limitSQL); }else { - result = mapper.selectByPageByVersion(tableName,tableTempName,fields,tempFields, Hfields, A1fields, A2fields, tempHfields, nowVersionOrderNo, fromVersionOrderNo, DbUtils.quotedStr(maintainFromVersion.getId()), whereSegment, limitSQL); + result = mapper.selectByPageByVersion(tableName,tableTempName,fields, A1Fields, tempFields, nowVersionOrderNo, fromVersionOrderNo, whereSegment, limitSQL); } + endDate = new Date(); + log.info(MessageFormat.format("master tag:{0} MASTER-- select dataMap :{1} ms",uuid, (endDate.getTime() - startDate.getTime()))); EntityWrapper<SysField> sysFieldEntityWrapper = new EntityWrapper<>(); sysFieldEntityWrapper.eq("table_name", tableName); - List<SysField> sysFields = fieldService.getFieldByMaintain(maintainFromVersion.getId()); + List<SysField> sysFields = masterAuthorService.getField(character, maintainFromVersion.getId()); if (isMax) { sysFields.add(new SysField().setAlias("鏁版嵁鐘舵��").setField("operate").setVisible(true).setFormat("operate_")); sysFields.add(new SysField().setAlias("瀹℃壒鐘舵��").setField("status").setVisible(true).setFormat("status_")); @@ -451,6 +1119,11 @@ JSONObject resultobject = new JSONObject(); JSONObject object = new JSONObject(); + + Map<String, AntianaphylaxisResult> helpfulField = antianaphylaxisClient.getHelpfulField(fields, tableName); + antianaphylaxisClient.fixMasterData(result,helpfulField); + startDate = new Date(); + log.info(MessageFormat.format("master tag:{0} MASTER-- antianaphy dataMap :{1} ms",uuid, (startDate.getTime() - endDate.getTime()))); object.fluentPut("total", page.getRecordCount()); object.fluentPut("size", page.getPageSize()); @@ -461,11 +1134,37 @@ resultobject.fluentPut("grid",object); resultobject.fluentPut("fields",sysFields); resultobject.fluentPut("maintainId", maintainFromVersion.getId()); + + + redisClient.putRedisValObj(key, Result.success(resultobject)); + return Result.success(resultobject); } - + /** + * + * @description: 涓婁紶鏁版嵁鍚庣殑鎿嶄綔 + * @param tableName 涓存椂琛ㄥ悕 + * @param uploadType 鏇存柊绫诲瀷 + * @param userId 鐢ㄦ埛id + * @return: 鐢熸垚鍚庣殑鐗堟湰 + * + */ @Override public Maintain uploadedData(String tableName, SysAssembleUpdateType uploadType, String userId) { + return uploadedData(tableName, uploadType, userId, true); + } + /** + * + * @description: 涓婁紶鏁版嵁鍚庣殑鎿嶄綔 + * @param tableName 涓存椂琛ㄥ悕 + * @param uploadType 鏇存柊绫诲瀷 + * @param bigVersion 鏄惁鐢熸垚澶х増鏈� + * @param userId 鐢ㄦ埛id + * @return: 鐢熸垚鍚庣殑鐗堟湰 + * + */ + @Override + public Maintain uploadedData(String tableName, SysAssembleUpdateType uploadType, String userId, boolean bigVersion) { MenuMapping menuMapping = menuMappingService.selectOne(new EntityWrapper<MenuMapping>().eq("table_name",tableName)); SysOperateLog operateLog = new SysOperateLog(); @@ -490,7 +1189,12 @@ maxVersion.deleteById(); }else { - biggerVersion = DbUtils.versionAddBig(mVersion); + if (bigVersion) { + biggerVersion = DbUtils.versionAddBig(mVersion); + }else { + biggerVersion = DbUtils.versionAddSub(mVersion); + } + maintain.setOrderNo(DbUtils.getOrderNoAdd(maxVersion.getOrderNo())); } } @@ -503,18 +1207,18 @@ maintain.setTableName(tableName); maintain.setCreateTime(new Date()); - Connection connection = sqlSessionTemplate.getConnection(); + Connection connection = null; try { + connection = dataSource.getConnection(); + connection.setAutoCommit(false); mapper.insertMatintainDetailFromTemp(DbUtils.quotedStr(maintain.getId()), maintain.getTableName() + Constant.RECORD , DbUtils.quotedStr(Operate.create.toString())); - connection.commit(); mapper.updateStdId( maintain.getTableName() + Constant.RECORD); - connection.commit(); Integer aLong = mapper.tempDeal(maintain.getTableName() + Constant.RECORD, DbUtils.quotedStr(maintain.getId())); - connection.commit(); if (aLong == null) { maintain.setDesp("涓婁紶鏁版嵁"); + }else { + maintain.setDesp(MessageFormat.format("涓婁紶鏁版嵁{0}鏉�", aLong)); } - maintain.setDesp(MessageFormat.format("涓婁紶鏁版嵁{0}鏉�", aLong)); if (uploadType.equals(SysAssembleUpdateType.All)) { List<TableSchemaResult> tableField = mapper.getTableField(tableName); @@ -524,17 +1228,15 @@ .map(s -> s.equalsIgnoreCase(Constant.STD_ID) ? MessageFormat.format(Constant.FieldAsAlias, Constant.ID, Constant.STD_ID) : s).collect(Collectors.joining(Constant.COMMA)); mapper.insertRecordFromStandrad(maintain.getTableName(), maintain.getTableName() + Constant.RECORD, collect); - connection.commit(); mapper.insertMatintainDetailFromStandrad(DbUtils.quotedStr(maintain.getId()), maintain.getTableName() + Constant.RECORD); - connection.commit(); Integer standradCnt = mapper.tempDeal(maintain.getTableName() + Constant.RECORD, DbUtils.quotedStr(maintain.getId())); - connection.commit(); + if (standradCnt != null) { maintain.setDesp(maintain.getDesp() + MessageFormat.format("鍒犻櫎鍘熸暟鎹畕0}鏉�", standradCnt)); }else { maintain.setDesp(maintain.getDesp() + "鍒犻櫎鍘熸暟鎹�"); } - maintain.setDesp(maintain.getDesp() + MessageFormat.format("鍒犻櫎鍘熸暟鎹畕0}鏉�", standradCnt)); + } operateLog.setCreateTime(new Date()) @@ -542,7 +1244,7 @@ .setId(DbUtils.getUUID()) .setMaintainId(menuMapping.getId()) .setOperate("open") - .setDesp(MessageFormat.format("涓婁紶鏁版嵁{0}鏉�", aLong)); + .setDesp("鎵归噺涓婁紶鏁版嵁"); maintain.insert(); connection.commit(); @@ -550,21 +1252,23 @@ catch (Exception e) { e.printStackTrace(); - - } - finally { + }finally { if (connection != null) { try { - connection.commit(); + connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } + return maintain; } + + //bak + @Deprecated public Result selectListByPage(String tableName, List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, String version) { Maintain maintainFromVersion = maintainService.getMaintainFromVersion(tableName, version); long changeCount = maintainService.countVersionOperatorByType(tableName + Constant.RECORD, whereSegment, maintainFromVersion.getId(), Operate.create); @@ -636,8 +1340,12 @@ } @Override - public Result selectListByPageByVersion(String tableName,List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, boolean findMax) { - return selectListByPageByVersion(tableName, fieldList, whereSegment,pageNo,pageSize,String.valueOf(maintainService.getNowVersion(tableName).getVersion()), findMax); + public Result selectListByPageByVersion(Character character, String tableName,List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, boolean findMax, String uuid) { + return selectListByPageByVersion(character, tableName, fieldList, whereSegment,pageNo,pageSize,String.valueOf(maintainService.getNowVersion(tableName).getVersion()), findMax, uuid); + } + @Override + public Result selectListByPageByVersion(Character character, String tableName,List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, boolean findMax) { + return selectListByPageByVersion(character, tableName, fieldList, whereSegment,pageNo,pageSize,String.valueOf(maintainService.getNowVersion(tableName).getVersion()), findMax); } @Override @@ -679,11 +1387,12 @@ public Result insert(String tableName, String json) { try { - List<SysField> fieldByTable = fieldService.getFieldByTable(tableName); - - List<String> fieldNameList = fieldByTable.stream().map(sysField -> sysField.getField()).collect(Collectors.toList()); - String fields = fieldByTable.stream().map(sysField -> sysField.getField()).collect(Collectors.joining(Constant.COMMA)); - + JSONObject dataObject = JSON.parseObject(json); + Set<String> keySet = dataObject.keySet(); + List<String> fieldNameList = new ArrayList<>(keySet); +// List<SysField> fieldByTable = fieldService.getFieldByTable(tableName); +// List<String> fieldNameList = fieldByTable.stream().map(sysField -> sysField.getField()).collect(Collectors.toList()); + String fields = keySet.stream().collect(Collectors.joining(Constant.COMMA)); ContentBuilder builder = new ContentBuilder(Constant.COMMA); Object parse = JSON.parse(json); List<String> ids = new ArrayList<>(); @@ -913,6 +1622,111 @@ return Result.error(CodeMsg.DELETE_ERROR); } } + /** + * + * @description: 鑾峰彇琛ㄤ腑distinct鍚庣殑鍊� + * @param tableName 涓存椂琛ㄥ悕 + * @param field 瀛楁鍚� + * @return: 鍘婚噸鍚庣殑鏁版嵁 + * + */ + @Override + public Set<String> getFieldValByTable(String tableName, String field) { + //鏌ョ紦瀛� + String key = DbUtils.getFieldRedisKey(tableName,field); + List<Object> redisList = redisClient.getRedisList(key); + if (redisList != null) { + HashSet<String> strings = new HashSet<>(); + for (Object o : redisList) { + strings.add(o.toString()); + } + return strings; + } + // 璇绘暟鎹簱 + String tempTableName = tableName + Constant.RECORD; + // List<Map<String, Object>> maps = mapper.selectByPage(tableName, MessageFormat.format(Constant.DISTINCT, field), Constant.WHERE_DEFAULT, null); + + List<Map<String, Object>> maps = mapper.selectDistinct(tempTableName, field, Constant.WHERE_DEFAULT); + + if (maps.size() == 0) { + return null; + } + Set<String> result = maps.stream() + .filter(one -> one != null) + .map(one -> one.get(field)) + .filter(o -> o != null) + .map(o -> o.toString()).collect(Collectors.toSet()); + redisClient.putRedisList(key, new ArrayList(result)); + return result; + } + /** + * + * @description: 鑾峰彇琛ㄤ腑distinct鍚庣殑鍊� + * @param maintainFieldId 瀛楁鐗堟湰id + * @param tableName 琛ㄥ悕 + * @param field 瀛楁鍚� + * @return: 鍘婚噸鍚庣殑鏁版嵁 + * + */ + @Override + public Set<String> getFieldValByMaintainField(String maintainFieldId, String field, String tableName) { + //鏌ョ紦瀛� + MaintainField maintainField = maintainFieldService.selectById(maintainFieldId); + // 璇绘暟鎹簱 + List<Maintain> list = maintainFieldService.getMaintainByMaintainField(maintainFieldId, tableName); + Maintain max = list.stream().max(new Comparator<Maintain>() { + @Override + public int compare(Maintain o1, Maintain o2) { + return o1.getOrderNo() - o2.getOrderNo(); + } + }).get(); + Maintain min = list.stream().min(new Comparator<Maintain>() { + @Override + public int compare(Maintain o1, Maintain o2) { + return o1.getOrderNo() - o2.getOrderNo(); + } + }).get(); + ArrayList<String> fieldList = new ArrayList<>(); + fieldList.add(field); + fieldList.add(Constant.ID); + // where + + List<Map<String, Object>> maps = selectListByVersion(null, tableName, fieldList, Constant.WHERE_DEFAULT, max.getVersion(), false); + String tempTableName = tableName + Constant.RECORD; + List<Map<String, Object>> tempVals = mapper.getOneTempFieldDataByMaintainExtent(DbUtils.quotedStr(tableName), tempTableName, field, min.getOrderNo(), max.getOrderNo()); + maps.addAll(tempVals); + if (maps.size() == 0) { + return null; + } + Set<String> result = maps.stream() + .filter(one -> one != null) + .map(one -> one.get(field)) + .filter(o -> o != null) + .map(o -> o.toString()).collect(Collectors.toSet()); + String val = result.stream().collect(Collectors.joining(Constant.SEMICOLON)); + + return result; + } + /** + * + * @description: 鍒涘缓绱㈠紩 + * @param recordTableName 璁板綍琛ㄥ悕绉� + * @return: + * + */ + @Override + public void createIdx(String recordTableName) { + String idxName = MessageFormat.format(Constant.IDX_TEMPLATE, recordTableName, Constant.STD_ID); + + List<Map<String, Object>> maps = mapper.selectIdxByTableName(DbUtils.quotedStr(recordTableName)); + long existsIdx = maps.stream().filter(stringObjectMap -> stringObjectMap.get("index_name") != null) + .map(stringObjectMap -> stringObjectMap.get("index_name").toString()) + .filter(s -> idxName.equalsIgnoreCase(s)).count(); + if (existsIdx == 0) { + + mapper.createIdx(recordTableName, idxName, Constant.STD_ID + Constant.COMMA + Constant.DEAL); + } + } } -- Gitblit v1.8.0