Browse Source

groupByTables

dev
yinzuomei 3 years ago
parent
commit
f4a002d0f3
  1. 4
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/SubTableJoinDTO.java
  2. 4
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java
  3. 6
      epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemDao.xml
  4. 6
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java
  5. 35
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java
  6. 10
      epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml

4
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/SubTableJoinDTO.java

@ -10,4 +10,8 @@ public class SubTableJoinDTO implements Serializable {
private static final long serialVersionUID = 8243764437194993736L; private static final long serialVersionUID = 8243764437194993736L;
private String tableName; private String tableName;
private String joinTableSql; private String joinTableSql;
/**
* 是否支持添加一行1支持默认0不支持
*/
private Boolean supportAdd;
} }

4
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java

@ -26,8 +26,8 @@ import java.util.Set;
* @author yinzuomei@elink-cn.com * @author yinzuomei@elink-cn.com
* @date 2020/6/4 13:16 * @date 2020/6/4 13:16
*/ */
// @FeignClient(name = ServiceConstant.OPER_CUSTOMIZE_SERVER, fallbackFactory = OperCustomizeOpenFeignClientFallbackFactory.class,url = "http://localhost:8089") @FeignClient(name = ServiceConstant.OPER_CUSTOMIZE_SERVER, fallbackFactory = OperCustomizeOpenFeignClientFallbackFactory.class,url = "http://localhost:8089")
@FeignClient(name = ServiceConstant.OPER_CUSTOMIZE_SERVER, fallbackFactory = OperCustomizeOpenFeignClientFallbackFactory.class) // @FeignClient(name = ServiceConstant.OPER_CUSTOMIZE_SERVER, fallbackFactory = OperCustomizeOpenFeignClientFallbackFactory.class)
public interface OperCustomizeOpenFeignClient { public interface OperCustomizeOpenFeignClient {
@PostMapping(value = "/oper/customize/customerfootbar/customerfootbars", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE) @PostMapping(value = "/oper/customize/customerfootbar/customerfootbars", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)

6
epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemDao.xml

@ -154,10 +154,12 @@
<select id="querySubTables" parameterType="map" resultType="com.epmet.dto.result.SubTableJoinDTO"> <select id="querySubTables" parameterType="map" resultType="com.epmet.dto.result.SubTableJoinDTO">
select select
temp.TABLE_NAME as tableName, temp.TABLE_NAME as tableName,
CONCAT('left join ',temp.TABLE_NAME, ' on ( ic_resi_user.ID=',temp.TABLE_NAME,'.IC_RESI_USER and ',temp.TABLE_NAME,'.del_flag="0" )') as joinTableSql CONCAT('left join ',temp.TABLE_NAME, ' on ( ic_resi_user.ID=',temp.TABLE_NAME,'.IC_RESI_USER and ',temp.TABLE_NAME,'.del_flag="0" )') as joinTableSql,
SUPPORT_ADD as supportAdd
from ( from (
SELECT DISTINCT SELECT DISTINCT
m.TABLE_NAME m.TABLE_NAME,
m.SUPPORT_ADD
FROM FROM
ic_form_item_group m ic_form_item_group m
WHERE WHERE

6
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java

@ -62,7 +62,8 @@ public interface IcResiUserDao extends BaseDao<IcResiUserEntity> {
@Param("currentStaffAgencyId") String currentStaffAgencyId, @Param("currentStaffAgencyId") String currentStaffAgencyId,
@Param("staffOrgPath") String staffOrgPath, @Param("staffOrgPath") String staffOrgPath,
@Param("resultTableName") String resultTableName, @Param("resultTableName") String resultTableName,
@Param("keyword") String keyword); @Param("keyword") String keyword,
@Param("groupByTables")Set<String> groupByTables);
/** /**
* 查询主表 * 查询主表
@ -108,7 +109,8 @@ public interface IcResiUserDao extends BaseDao<IcResiUserEntity> {
@Param("conditions") List<ResiUserQueryValueDTO> conditions, @Param("conditions") List<ResiUserQueryValueDTO> conditions,
@Param("subTables") List<String> subTables, @Param("subTables") List<String> subTables,
@Param("showSqlColumns") List<IcCustomExportResultDTO.SqlColumn> showSqlColumns, @Param("currentStaffAgencyId") String currentStaffAgencyId, @Param("showSqlColumns") List<IcCustomExportResultDTO.SqlColumn> showSqlColumns, @Param("currentStaffAgencyId") String currentStaffAgencyId,
@Param("staffOrgPath") String staffOrgPath); @Param("staffOrgPath") String staffOrgPath,
@Param("groupByTables") List<String> groupByTables);
/** /**
* @param userId * @param userId

35
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java

@ -555,13 +555,17 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
// log.info("2、查询条件+查询列对应的tables并集去重:"+ JSON.toJSONString(tables,true)); // log.info("2、查询条件+查询列对应的tables并集去重:"+ JSON.toJSONString(tables,true));
//最终关联的子表对应的sql: //最终关联的子表对应的sql:
List<String> finalSubTables =new ArrayList<>(); List<String> finalSubTables =new ArrayList<>();
//groupBy用到的表
Set<String> groupByTables=new HashSet<>();
subTables.forEach(subTable->{ subTables.forEach(subTable->{
if(tables.contains(subTable.getTableName())){ if(tables.contains(subTable.getTableName())){
finalSubTables.add(subTable.getJoinTableSql()); finalSubTables.add(subTable.getJoinTableSql());
if(subTable.getSupportAdd()){
groupByTables.add(subTable.getTableName());
}
} }
}); });
PageInfo<Map<String, Object>> pageInfo=new PageInfo<>(); PageInfo<Map<String, Object>> pageInfo=new PageInfo<>();
if (null == formDTO.getIsPage()||formDTO.getIsPage()) { if (null == formDTO.getIsPage()||formDTO.getIsPage()) {
//分页 //分页
@ -572,7 +576,8 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
formDTO.getConditions(), formDTO.getConditions(),
resultColumns, resultColumns,
finalSubTables, finalSubTables,
staffInfoCacheResult.getAgencyId(), finalStaffOrgPath,null, formDTO.getKeyword())); staffInfoCacheResult.getAgencyId(), finalStaffOrgPath,null, formDTO.getKeyword(),
groupByTables));
}else{ }else{
List<Map<String,Object>> list=baseDao.selectListResiMap(formDTO.getCustomerId(), List<Map<String,Object>> list=baseDao.selectListResiMap(formDTO.getCustomerId(),
formDTO.getFormCode(), formDTO.getFormCode(),
@ -581,7 +586,8 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
finalSubTables, finalSubTables,
staffInfoCacheResult.getAgencyId(), staffInfoCacheResult.getAgencyId(),
staffOrgPath,null, staffOrgPath,null,
formDTO.getKeyword()); formDTO.getKeyword(),
groupByTables);
pageInfo.setTotal(CollectionUtils.isEmpty(list)?NumConstant.ZERO:list.size()); pageInfo.setTotal(CollectionUtils.isEmpty(list)?NumConstant.ZERO:list.size());
pageInfo.setList(list); pageInfo.setList(list);
} }
@ -747,13 +753,14 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
List<ResiUserQueryValueDTO> conditions, List<ResiUserQueryValueDTO> conditions,
String currentStaffAgencyId, String currentStaffAgencyId,
String staffOrgPath){ String staffOrgPath){
List<String> finalSubTables = getFinalSubables(customerId, formCode, resultTableName, conditions); // List<String> finalSubTables = getFinalSubables(customerId, formCode, resultTableName, conditions);
Map<String,List<String>> map=getFinalSubables(customerId, formCode, resultTableName, conditions);
return baseDao.dynamicQuery(customerId,resultTableName,conditions,finalSubTables, null, currentStaffAgencyId,staffOrgPath); return baseDao.dynamicQuery(customerId,resultTableName,conditions,map.get("finalSubTables"), null, currentStaffAgencyId,staffOrgPath,map.get("groupByTables"));
} }
@NotNull @NotNull
public List<String> getFinalSubables(String customerId, String formCode, String resultTableName, List<ResiUserQueryValueDTO> conditions) { public Map<String,List<String>> getFinalSubables(String customerId, String formCode, String resultTableName, List<ResiUserQueryValueDTO> conditions) {
Map<String,List<String>> map=new HashMap<>();
CustomerFormQueryDTO queryDTO=new CustomerFormQueryDTO(); CustomerFormQueryDTO queryDTO=new CustomerFormQueryDTO();
queryDTO.setCustomerId(customerId); queryDTO.setCustomerId(customerId);
queryDTO.setFormCode(formCode); queryDTO.setFormCode(formCode);
@ -769,12 +776,19 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
// log.info("2、查询条件+查询列对应的tables并集去重:"+ JSON.toJSONString(tables,true)); // log.info("2、查询条件+查询列对应的tables并集去重:"+ JSON.toJSONString(tables,true));
//最终关联的子表对应的sql: //最终关联的子表对应的sql:
List<String> finalSubTables =new ArrayList<>(); List<String> finalSubTables =new ArrayList<>();
//groupBy用到的表
Set<String> groupByTables=new HashSet<>();
subTables.forEach(subTable->{ subTables.forEach(subTable->{
if(tables.contains(subTable.getTableName())){ if(tables.contains(subTable.getTableName())){
finalSubTables.add(subTable.getJoinTableSql()); finalSubTables.add(subTable.getJoinTableSql());
if(subTable.getSupportAdd()){
groupByTables.add(subTable.getTableName());
}
} }
}); });
return finalSubTables; map.put("finalSubTables",finalSubTables);
map.put("groupByTables",groupByTables.stream().collect(Collectors.toList()));
return map;
} }
/** /**
@ -1656,8 +1670,9 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
@Override @Override
public List<Map<String, Object>> dynamicQuery(String customerId, String formCode, String resultTableName, List<IcCustomExportResultDTO.SqlColumn> showSqlColumns, List<ResiUserQueryValueDTO> conditions, String currentStaffAgencyId, String staffOrgPath) { public List<Map<String, Object>> dynamicQuery(String customerId, String formCode, String resultTableName, List<IcCustomExportResultDTO.SqlColumn> showSqlColumns, List<ResiUserQueryValueDTO> conditions, String currentStaffAgencyId, String staffOrgPath) {
List<String> finalSubTables = getFinalSubables(customerId, formCode, resultTableName, conditions); // List<String> finalSubTables = getFinalSubables(customerId, formCode, resultTableName, conditions);
return baseDao.dynamicQuery(customerId,resultTableName,conditions,finalSubTables,showSqlColumns,currentStaffAgencyId,staffOrgPath); Map<String,List<String>> map=getFinalSubables(customerId, formCode, resultTableName, conditions);
return baseDao.dynamicQuery(customerId,resultTableName,conditions,map.get("finalSubTables"),showSqlColumns,currentStaffAgencyId,staffOrgPath,map.get("groupByTables"));
} }
} }

10
epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml

@ -160,6 +160,11 @@
</if> </if>
</where> </where>
group by IC_RESI_USER.id group by IC_RESI_USER.id
<if test="null != groupByTables and groupByTables.size() > 0">
<foreach item="groupTableName" collection="groupByTables" open="," separator="," close="">
${groupTableName}.ID
</foreach>
</if>
order by ic_resi_user.CREATED_TIME desc order by ic_resi_user.CREATED_TIME desc
</select> </select>
@ -193,6 +198,11 @@
<include refid="listWhereForPage"></include> <include refid="listWhereForPage"></include>
</where> </where>
group by IC_RESI_USER.id group by IC_RESI_USER.id
<if test="null != groupByTables and groupByTables.size() > 0">
<foreach item="groupTableName" collection="groupByTables" open="," separator="," close="">
${groupTableName}.ID
</foreach>
</if>
order by ic_resi_user.CREATED_TIME desc order by ic_resi_user.CREATED_TIME desc
</select> </select>

Loading…
Cancel
Save