Browse Source

Merge branch 'develop' into release_temp

dev
sunyuchao 4 years ago
parent
commit
10d52fa1ab
  1. 37
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/GridLivelyFormDTO.java
  2. 20
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/GridDateIdResultDTO.java
  3. 33
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/GridLivelyResultDTO.java
  4. 4
      epmet-module/data-aggregator/data-aggregator-server/deploy/docker-compose-prod.yml
  5. 29
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java
  6. 8
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java
  7. 8
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StaffPatrolRecordDao.java
  8. 7
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerAgencyDao.java
  9. 72
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/GridLivelyExcel.java
  10. 8
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java
  11. 13
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java
  12. 8
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java
  13. 10
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java
  14. 18
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java
  15. 115
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java
  16. 15
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml
  17. 16
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffPatrolRecordDao.xml
  18. 13
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerAgencyDao.xml
  19. 2
      epmet-module/data-report/data-report-server/deploy/docker-compose-prod.yml
  20. 34
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/ImportInfoFormDTO.java
  21. 31
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/InfoByNamesResultDTO.java
  22. 38
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java
  23. 9
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerGridDao.java
  24. 10
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodDao.java
  25. 3
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcNeighborHoodEntity.java
  26. 13
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcNeighborHoodExcel.java
  27. 13
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java
  28. 194
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java
  29. 19
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerGridDao.xml
  30. 14
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodDao.xml
  31. 99
      epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/IcPartymemberStyleCategoryDictDTO.java
  32. 6
      epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/IcPartymemberStyleDTO.java
  33. 36
      epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/AddStyleCategoryFormDTO.java
  34. 1
      epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/PartyMemberStyleFormDTO.java
  35. 15
      epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/StyleCategoryCommonFormDTO.java
  36. 21
      epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/StyleSelectListFormDTO.java
  37. 30
      epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/UpdateStyleCategoryFormDTO.java
  38. 27
      epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/result/StyleCategoryDictResDTO.java
  39. 101
      epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleCategoryDictController.java
  40. 1
      epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java
  41. 20
      epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartymemberStyleCategoryDictDao.java
  42. 4
      epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartymemberStyleDao.java
  43. 66
      epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/entity/IcPartymemberStyleCategoryDictEntity.java
  44. 3
      epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/entity/IcPartymemberStyleEntity.java
  45. 3
      epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/excel/IcPartymemberStyleExcel.java
  46. 3
      epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/excel/IcPartymemberStyleImportExcel.java
  47. 54
      epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleCategoryDictService.java
  48. 171
      epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleCategoryDictServiceImpl.java
  49. 10
      epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java
  50. 23
      epmet-module/resi-partymember/resi-partymember-server/src/main/resources/db/migration/V0.0.2__style_dict.sql
  51. 18
      epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartymemberStyleCategoryDictDao.xml
  52. 6
      epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartymemberStyleDao.xml
  53. 3
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java
  54. 13
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java
  55. 16
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcUserChangeRecordServiceImpl.java
  56. 19
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcUserTransferRecordServiceImpl.java
  57. 5
      epmet-user/epmet-user-server/src/main/resources/bootstrap.yml
  58. 47
      epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml

37
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/GridLivelyFormDTO.java

@ -0,0 +1,37 @@
package com.epmet.dataaggre.dto.govorg.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
/**
* @Description 网格活跃度-接口入参
* @Author sun
*/
@Data
public class GridLivelyFormDTO implements Serializable {
private static final long serialVersionUID = -3651225675593357002L;
public interface Grid extends CustomerClientShowGroup {
}
/**
* 组织Id
*/
@NotBlank(message = "组织ID不能为空", groups = {Grid.class})
private String agencyId;
/**
* 起始查询时间yyyyMMdd
*/
@NotBlank(message = "起始查询时间不能为空", groups = {Grid.class})
private String startTime;
/**
* 结束查询时间yyyyMMdd
*/
@NotBlank(message = "结束查询时间不能为空", groups = {Grid.class})
private String endTime;
}

20
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/GridDateIdResultDTO.java

@ -0,0 +1,20 @@
package com.epmet.dataaggre.dto.govorg.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 网格下按天的上报事件或直接立项数据-接口返参
* @Author sun
*/
@Data
public class GridDateIdResultDTO implements Serializable {
private static final long serialVersionUID = -4304356050545598564L;
//网格Id
private String gridId;
//日维度Id
private String dateId;
//网格所属组织的所有上级Id
private String pids;
}

33
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/GridLivelyResultDTO.java

@ -0,0 +1,33 @@
package com.epmet.dataaggre.dto.govorg.result;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Description 网格活跃度-接口返参
* @Author sun
*/
@Data
public class GridLivelyResultDTO implements Serializable {
private static final long serialVersionUID = -4304356050545598564L;
//组织Id
private String agencyId;
//组织名称
private String agencyName;
//组织下所有网格总数
private Integer gridSumNum;
//活跃网格数
private Integer gridLivelyNum;
//活跃网格数占比
private String gridLivelyRatio;
//正常运行网格数
private Integer gridOrdinaryNum;
//正常运行网格数占比
private String gridOrdinaryRatio;
//僵尸网格数
private Integer gridLazyNum;
//僵尸网格数占比
private String gridLazyRatio;
}

4
epmet-module/data-aggregator/data-aggregator-server/deploy/docker-compose-prod.yml

@ -9,10 +9,10 @@ services:
volumes: volumes:
- "/opt/epmet-cloud-logs/prod:/logs" - "/opt/epmet-cloud-logs/prod:/logs"
environment: environment:
RUN_INSTRUCT: "java -Xms256m -Xmx512m -jar ./data-aggregator.jar" RUN_INSTRUCT: "java -Xms256m -Xmx760m -jar ./data-aggregator.jar"
restart: "unless-stopped" restart: "unless-stopped"
deploy: deploy:
resources: resources:
limits: limits:
cpus: '0.1' cpus: '0.1'
memory: 600M memory: 800M

29
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java

@ -5,6 +5,7 @@ import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.WriteSheet;
import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.annotation.RequirePermission; import com.epmet.commons.tools.annotation.RequirePermission;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.enums.RequirePermissionEnum; import com.epmet.commons.tools.enums.RequirePermissionEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetErrorCode;
@ -26,6 +27,7 @@ import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity;
import com.epmet.dataaggre.enums.GridMemberDataAnalysisEnums; import com.epmet.dataaggre.enums.GridMemberDataAnalysisEnums;
import com.epmet.dataaggre.service.AggreGridService; import com.epmet.dataaggre.service.AggreGridService;
import com.epmet.dataaggre.service.govorg.GovOrgService; import com.epmet.dataaggre.service.govorg.GovOrgService;
import com.epmet.dto.form.patrol.PcworkRecordListFormDTO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -373,4 +375,31 @@ public class GovOrgController {
sb.append("的工作统计"); sb.append("的工作统计");
return sb.toString(); return sb.toString();
} }
/**
* @Description 查询组织的直属下级组织下网格活跃度统计查平阴实际是查的下边八个街道的活跃程度
* @author sun
* 网格按运行情况分为活跃网格正常运行网格和僵尸网格三个类别
* 以自然周为计量单位对末级网格运行情况进行考核
* 1周内每个末级网格有5天及5天以上上传事件或开展例行工作的为活跃网格
* 有2天及2天以上5天以下上传事件或开展例行工作的为正常运行网格
* 只有1天上传事件或开展例行工作的为僵尸网格
*/
@PostMapping("gridlively")
public Result<List<GridLivelyResultDTO>> grdiLively(@RequestBody GridLivelyFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, GridLivelyFormDTO.Grid.class);
return new Result<List<GridLivelyResultDTO>>().ok(govOrgService.grdiLively(formDTO));
}
/**
* @Author sun
* @Description 查询组织的直属下级组织下网格活跃度统计--文件导出
**/
@NoRepeatSubmit
@PostMapping("export")
public void pcworkRecordListExport(HttpServletResponse response, @RequestBody GridLivelyFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, GridLivelyFormDTO.Grid.class);
govOrgService.grdiLivelyExport(response, formDTO);
}
} }

8
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java

@ -25,6 +25,8 @@ import com.epmet.dataaggre.dto.datastats.result.*;
import com.epmet.dataaggre.dto.epmetuser.FactIcuserCategoryAnalysisDailyDTO; import com.epmet.dataaggre.dto.epmetuser.FactIcuserCategoryAnalysisDailyDTO;
import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO; import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO; import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO;
import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO;
import com.epmet.dataaggre.dto.govorg.result.GridDateIdResultDTO;
import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO; import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO;
import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO; import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO;
import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO; import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO;
@ -358,4 +360,10 @@ public interface DataStatsDao {
@Param("orgId")String orgId, @Param("orgId")String orgId,
@Param("dateId") String dateId, @Param("dateId") String dateId,
@Param("configIds") List<String> configIds); @Param("configIds") List<String> configIds);
/**
* @Description 查询直属下级组织下网格在查询时间段内存在上报事件(直接立项)数的网格一天一条
* @author sun
*/
List<GridDateIdResultDTO> gridDateProjectIncrList(GridLivelyFormDTO formDTO);
} }

8
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StaffPatrolRecordDao.java

@ -22,6 +22,8 @@ import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO; import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.form.StaffListFormDTO; import com.epmet.dataaggre.dto.epmetuser.form.StaffListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.StaffListResultDTO; import com.epmet.dataaggre.dto.epmetuser.result.StaffListResultDTO;
import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO;
import com.epmet.dataaggre.dto.govorg.result.GridDateIdResultDTO;
import com.epmet.dataaggre.entity.epmetuser.StaffPatrolRecordEntity; import com.epmet.dataaggre.entity.epmetuser.StaffPatrolRecordEntity;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -60,4 +62,10 @@ public interface StaffPatrolRecordDao extends BaseDao<StaffPatrolRecordEntity> {
* @author sun * @author sun
*/ */
List<StaffListResultDTO> gridMemberPatrol(GridMemberPatrolListFormDTO formDTO); List<StaffListResultDTO> gridMemberPatrol(GridMemberPatrolListFormDTO formDTO);
/**
* @Description 查询直属下级组织下网格在查询时间段内存在例行工作次数的网格
* @author sun
*/
List<GridDateIdResultDTO> gridDateRoutineWorkList(GridLivelyFormDTO formDTO);
} }

7
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerAgencyDao.java

@ -23,8 +23,8 @@ import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* 机关单位信息表 * 机关单位信息表
@ -100,4 +100,9 @@ public interface CustomerAgencyDao extends BaseDao<CustomerAgencyEntity> {
*/ */
List<String> getOrgList(@Param("staffId") String staffId); List<String> getOrgList(@Param("staffId") String staffId);
/**
* @Description 查询当前组织的直属下级组织列表及组织下的网格总数
* @author sun
*/
LinkedList<GridLivelyResultDTO> subAgencyListAndGridSumNum(@Param("agencyId") String agencyId);
} }

72
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/GridLivelyExcel.java

@ -0,0 +1,72 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dataaggre.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data;
/**
* @Description 网格活跃度文件导出-接口返参
* @Author sun
*/
@Data
public class GridLivelyExcel {
@ExcelProperty("组织ID")
@ExcelIgnore
private String agencyId;
//组织名称
@ExcelProperty("组织名称")
@ColumnWidth(15)
private String agencyName;
//组织下所有网格总数
@ExcelProperty("网格总数")
@ColumnWidth(15)
private Integer gridSumNum;
//活跃网格数
@ExcelProperty("活跃网格数")
@ColumnWidth(15)
private Integer gridLivelyNum;
//活跃网格数占比
@ExcelProperty("活跃网格数占比")
@ColumnWidth(15)
private String gridLivelyRatio;
//正常运行网格数
@ExcelProperty("正常运行网格数")
@ColumnWidth(15)
private Integer gridOrdinaryNum;
//正常运行网格数占比
@ExcelProperty("正常运行网格数占比")
@ColumnWidth(15)
private String gridOrdinaryRatio;
//僵尸网格数
@ExcelProperty("僵尸网格数")
@ColumnWidth(15)
private Integer gridLazyNum;
//僵尸网格数占比
@ExcelProperty("僵尸网格数占比")
@ColumnWidth(15)
private String gridLazyRatio;
}

8
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java

@ -6,6 +6,8 @@ import com.epmet.dataaggre.dto.datastats.result.*;
import com.epmet.dataaggre.dto.epmetuser.FactIcuserCategoryAnalysisDailyDTO; import com.epmet.dataaggre.dto.epmetuser.FactIcuserCategoryAnalysisDailyDTO;
import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO; import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO; import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO;
import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO;
import com.epmet.dataaggre.dto.govorg.result.GridDateIdResultDTO;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO; import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO; import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO;
import com.epmet.dataaggre.dto.govproject.result.ProjectMonthIncrResultDTO; import com.epmet.dataaggre.dto.govproject.result.ProjectMonthIncrResultDTO;
@ -284,4 +286,10 @@ public interface DataStatsService {
List<FactIcuserCategoryAnalysisDailyDTO> queryGridIcUserCategoryData(String orgId, String dateId, List<String> configIds); List<FactIcuserCategoryAnalysisDailyDTO> queryGridIcUserCategoryData(String orgId, String dateId, List<String> configIds);
List<FactIcuserCategoryAnalysisDailyDTO> queryAgencyIcUserCategoryData(String gridPids, String orgId,String dateId, List<String> configIds); List<FactIcuserCategoryAnalysisDailyDTO> queryAgencyIcUserCategoryData(String gridPids, String orgId,String dateId, List<String> configIds);
/**
* @Description 查询直属下级组织下网格在查询时间段内存在上报事件(直接立项)数的网格一天一条
* @author sun
*/
List<GridDateIdResultDTO> getGridDateProjectIncrList(GridLivelyFormDTO formDTO);
} }

13
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java

@ -24,7 +24,9 @@ import com.epmet.dataaggre.dto.evaluationindex.ScreenAgencyOrGridListDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerAgencyDTO; import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerAgencyDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerGridDTO; import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerGridDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenGovernRankDataDailyDTO; import com.epmet.dataaggre.dto.evaluationindex.ScreenGovernRankDataDailyDTO;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO; import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO;
import com.epmet.dataaggre.dto.govorg.result.GridDateIdResultDTO;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO; import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO;
import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO; import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO;
import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO; import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO;
@ -2187,4 +2189,13 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve
} }
return dataStatsDao.queryAgencyIcUserCategoryData(gridPids,orgId,dateId,configIds); return dataStatsDao.queryAgencyIcUserCategoryData(gridPids,orgId,dateId,configIds);
} }
/**
* @Description 查询直属下级组织下网格在查询时间段内存在上报事件(直接立项)数的网格一天一条
* @author sun
*/
@Override
public List<GridDateIdResultDTO> getGridDateProjectIncrList(GridLivelyFormDTO formDTO) {
return dataStatsDao.gridDateProjectIncrList(formDTO);
}
} }

8
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java

@ -2,8 +2,10 @@ package com.epmet.dataaggre.service.epmetuser;
import com.epmet.dataaggre.dto.epmetuser.form.*; import com.epmet.dataaggre.dto.epmetuser.form.*;
import com.epmet.dataaggre.dto.epmetuser.result.*; import com.epmet.dataaggre.dto.epmetuser.result.*;
import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO;
import com.epmet.dataaggre.dto.govorg.form.OrgStaffListFormDTO; import com.epmet.dataaggre.dto.govorg.form.OrgStaffListFormDTO;
import com.epmet.dataaggre.dto.govorg.form.StaffDetailV2FormDTO; import com.epmet.dataaggre.dto.govorg.form.StaffDetailV2FormDTO;
import com.epmet.dataaggre.dto.govorg.result.GridDateIdResultDTO;
import com.epmet.dataaggre.dto.govorg.result.GridStaffResultDTO; import com.epmet.dataaggre.dto.govorg.result.GridStaffResultDTO;
import com.epmet.dataaggre.dto.govproject.result.ProjectAnalysisResultDTO; import com.epmet.dataaggre.dto.govproject.result.ProjectAnalysisResultDTO;
import com.epmet.dataaggre.entity.epmetuser.CustomerStaffEntity; import com.epmet.dataaggre.entity.epmetuser.CustomerStaffEntity;
@ -184,4 +186,10 @@ public interface EpmetUserService {
* @return * @return
*/ */
List<IcUserCategoryResultDTO> queryIcUserCategoryData(IcUserCategoryFormDTO formDTO); List<IcUserCategoryResultDTO> queryIcUserCategoryData(IcUserCategoryFormDTO formDTO);
/**
* @Description 查询直属下级组织下网格在查询时间段内存在例行工作次数的网格
* @author sun
*/
List<GridDateIdResultDTO> getGridDateRoutineWorkList(GridLivelyFormDTO formDTO);
} }

10
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java

@ -23,8 +23,10 @@ import com.epmet.dataaggre.dto.epmetuser.result.*;
import com.epmet.dataaggre.dto.govorg.CustomerAgencyDTO; import com.epmet.dataaggre.dto.govorg.CustomerAgencyDTO;
import com.epmet.dataaggre.dto.govorg.CustomerDepartmentDTO; import com.epmet.dataaggre.dto.govorg.CustomerDepartmentDTO;
import com.epmet.dataaggre.dto.govorg.CustomerGridDTO; import com.epmet.dataaggre.dto.govorg.CustomerGridDTO;
import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO;
import com.epmet.dataaggre.dto.govorg.form.OrgStaffListFormDTO; import com.epmet.dataaggre.dto.govorg.form.OrgStaffListFormDTO;
import com.epmet.dataaggre.dto.govorg.form.StaffDetailV2FormDTO; import com.epmet.dataaggre.dto.govorg.form.StaffDetailV2FormDTO;
import com.epmet.dataaggre.dto.govorg.result.GridDateIdResultDTO;
import com.epmet.dataaggre.dto.govorg.result.GridStaffResultDTO; import com.epmet.dataaggre.dto.govorg.result.GridStaffResultDTO;
import com.epmet.dataaggre.dto.govorg.result.StaffOrgNameResultDTO; import com.epmet.dataaggre.dto.govorg.result.StaffOrgNameResultDTO;
import com.epmet.dataaggre.dto.govorg.result.StaffOrgRelationResultDTO; import com.epmet.dataaggre.dto.govorg.result.StaffOrgRelationResultDTO;
@ -816,6 +818,14 @@ public class EpmetUserServiceImpl implements EpmetUserService {
return resList; return resList;
} }
/**
* @Description 查询直属下级组织下网格在查询时间段内存在例行工作次数的网格
* @author sun
*/
@Override
public List<GridDateIdResultDTO> getGridDateRoutineWorkList(GridLivelyFormDTO formDTO) {
return staffPatrolRecordDao.gridDateRoutineWorkList(formDTO);
}
} }

18
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java

@ -4,14 +4,12 @@ import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dataaggre.dto.govorg.CustomerAgencyDTO; import com.epmet.dataaggre.dto.govorg.CustomerAgencyDTO;
import com.epmet.dataaggre.dto.govorg.CustomerDepartmentDTO; import com.epmet.dataaggre.dto.govorg.CustomerDepartmentDTO;
import com.epmet.dataaggre.dto.govorg.CustomerGridDTO; import com.epmet.dataaggre.dto.govorg.CustomerGridDTO;
import com.epmet.dataaggre.dto.govorg.form.NextAreaCodeFormDTO; import com.epmet.dataaggre.dto.govorg.form.*;
import com.epmet.dataaggre.dto.govorg.form.OrgStaffListFormDTO;
import com.epmet.dataaggre.dto.govorg.form.StaffDetailV2FormDTO;
import com.epmet.dataaggre.dto.govorg.form.SubOrgFormDTO;
import com.epmet.dataaggre.dto.govorg.result.*; import com.epmet.dataaggre.dto.govorg.result.*;
import com.epmet.dataaggre.dto.resigroup.result.OrgInfoCommonDTO; import com.epmet.dataaggre.dto.resigroup.result.OrgInfoCommonDTO;
import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity; import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity;
import javax.servlet.http.HttpServletResponse;
import java.util.List; import java.util.List;
/** /**
@ -172,4 +170,16 @@ public interface GovOrgService {
* @date 2021/11/5 2:57 下午 * @date 2021/11/5 2:57 下午
*/ */
CustomerGridDTO getGridInfo(String gridId); CustomerGridDTO getGridInfo(String gridId);
/**
* @Description 查询组织的直属下级组织下网格活跃度统计查平阴实际是查的下边八个街道的活跃程度
* @author sun
*/
List<GridLivelyResultDTO> grdiLively(GridLivelyFormDTO formDTO);
/**
* @Author sun
* @Description 查询组织的直属下级组织下网格活跃度统计--文件导出
**/
void grdiLivelyExport(HttpServletResponse response, GridLivelyFormDTO formDTO);
} }

115
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java

@ -1,5 +1,8 @@
package com.epmet.dataaggre.service.govorg.impl; package com.epmet.dataaggre.service.govorg.impl;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.epmet.commons.dynamic.datasource.annotation.DataSource; import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.NumConstant;
@ -8,19 +11,20 @@ import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.dataaggre.constant.DataSourceConstant; import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.dao.govorg.*; import com.epmet.dataaggre.dao.govorg.*;
import com.epmet.dataaggre.dto.epmetuser.result.ListStaffResultDTO; import com.epmet.dataaggre.dto.epmetuser.result.ListStaffResultDTO;
import com.epmet.dataaggre.dto.epmetuser.result.StaffRoleListResultDTO; import com.epmet.dataaggre.dto.epmetuser.result.StaffRoleListResultDTO;
import com.epmet.dataaggre.dto.govorg.*; import com.epmet.dataaggre.dto.govorg.*;
import com.epmet.dataaggre.dto.govorg.form.NextAreaCodeFormDTO; import com.epmet.dataaggre.dto.govorg.form.*;
import com.epmet.dataaggre.dto.govorg.form.OrgStaffListFormDTO;
import com.epmet.dataaggre.dto.govorg.form.StaffDetailV2FormDTO;
import com.epmet.dataaggre.dto.govorg.form.SubOrgFormDTO;
import com.epmet.dataaggre.dto.govorg.result.*; import com.epmet.dataaggre.dto.govorg.result.*;
import com.epmet.dataaggre.dto.resigroup.result.OrgInfoCommonDTO; import com.epmet.dataaggre.dto.resigroup.result.OrgInfoCommonDTO;
import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity; import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity;
import com.epmet.dataaggre.excel.GridLivelyExcel;
import com.epmet.dataaggre.service.commonservice.AreaCodeService; import com.epmet.dataaggre.service.commonservice.AreaCodeService;
import com.epmet.dataaggre.service.datastats.DataStatsService;
import com.epmet.dataaggre.service.epmetuser.EpmetUserService; import com.epmet.dataaggre.service.epmetuser.EpmetUserService;
import com.epmet.dataaggre.service.govorg.GovOrgService; import com.epmet.dataaggre.service.govorg.GovOrgService;
import com.epmet.dataaggre.service.opercrm.CustomerRelation; import com.epmet.dataaggre.service.opercrm.CustomerRelation;
@ -30,6 +34,9 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -58,6 +65,8 @@ public class GovOrgServiceImpl implements GovOrgService {
private CustomerStaffGridDao customerStaffGridDao; private CustomerStaffGridDao customerStaffGridDao;
@Autowired @Autowired
private EpmetUserService epmetUserService; private EpmetUserService epmetUserService;
@Autowired
private DataStatsService dataStatsService;
/** /**
* @param staffId * @param staffId
@ -590,5 +599,103 @@ public class GovOrgServiceImpl implements GovOrgService {
return customerGridDao.getGridInfo(gridId); return customerGridDao.getGridInfo(gridId);
} }
/**
* @Description 查询组织的直属下级组织下网格活跃度统计查平阴实际是查的下边八个街道的活跃程度
* @author sun
* 网格按运行情况分为活跃网格正常运行网格和僵尸网格三个类别
* 以自然周为计量单位对末级网格运行情况进行考核
* 1周内每个末级网格有5天及5天以上上传事件或开展例行工作的为活跃网格
* 有2天及2天以上5天以下上传事件或开展例行工作的为正常运行网格
* 只有1天上传事件或开展例行工作的为僵尸网格
*/
@Override
public List<GridLivelyResultDTO> grdiLively(GridLivelyFormDTO formDTO) {
//1.查询当前组织的直属下级组织列表及组织下的网格总数
LinkedList<GridLivelyResultDTO> subList = customerAgencyDao.subAgencyListAndGridSumNum(formDTO.getAgencyId());
//2.查询直属下级组织下网格在查询时间段内存在例行工作次数的网格,一天一条
List<GridDateIdResultDTO> workList = epmetUserService.getGridDateRoutineWorkList(formDTO);
//3.查询直属下级组织下网格在查询时间段内存在上报事件(直接立项)数的网格,一天一条
List<GridDateIdResultDTO> projectList = dataStatsService.getGridDateProjectIncrList(formDTO);
//4.汇总数据,一个网格一天只记录一条数据,这条数据可能是例行工作的也可能是上报事件的,也可能某一天两个数都有,但只记录一条
Map<String, String> map = new HashMap<>();
workList.forEach(w -> {
map.put(w.getGridId() + w.getDateId(), w.getDateId());
});
//projectList.stream().filter(pro -> !map.containsKey(pro.getGridId() + pro.getDateId())).forEach(p -> workList.add(p));
projectList.forEach(pro -> {
if (!map.containsKey(pro.getGridId() + pro.getDateId())) {
workList.add(pro);
}
});
//5.按组织封装数据
//计算百分比使用,保留小数点后两位
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(NumConstant.TWO);
subList.forEach(sub -> {
Map<String, Integer> hash = new HashMap<>();
workList.forEach(w -> {
if (w.getPids().contains(sub.getAgencyId())) {
if (hash.containsKey(w.getGridId())) {
hash.put(w.getGridId(), hash.get(w.getGridId()) + NumConstant.ONE);
} else {
hash.put(w.getGridId(), NumConstant.ONE);
}
}
});
//活跃网格数、普通网格数、僵尸网格数
int gridLivelyNum = 0;
int gridOrdinaryNum = 0;
for (Integer val : hash.values()) {
if (val >= NumConstant.FIVE) {
gridLivelyNum++;
} else if (val >= NumConstant.TWO && val < NumConstant.FIVE) {
gridOrdinaryNum++;
}
}
sub.setGridLivelyNum(gridLivelyNum);
sub.setGridLivelyRatio((sub.getGridSumNum() == 0 || gridLivelyNum > sub.getGridSumNum()) ? "0%" : numberFormat.format(((float) gridLivelyNum / (float) sub.getGridSumNum()) * 100) + "%");
sub.setGridOrdinaryNum(gridOrdinaryNum);
sub.setGridOrdinaryRatio((sub.getGridSumNum() == 0 || gridOrdinaryNum > sub.getGridSumNum()) ? "0%" : numberFormat.format(((float) gridOrdinaryNum / (float) sub.getGridSumNum()) * 100) + "%");
int gridLazyNum = sub.getGridSumNum() - gridLivelyNum - gridOrdinaryNum;
sub.setGridLazyNum(gridLazyNum < 0 ? 0 : gridLazyNum);
sub.setGridLazyRatio((sub.getGridSumNum() == 0 || gridLazyNum < 0) ? "0%" : numberFormat.format(((float) gridLazyNum / (float) sub.getGridSumNum()) * 100) + "%");
});
return subList;
}
/**
* @Author sun
* @Description 查询组织的直属下级组织下网格活跃度统计--文件导出
**/
@Override
public void grdiLivelyExport(HttpServletResponse response, GridLivelyFormDTO formDTO) {
ExcelWriter excelWriter = null;
try {
excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel("网格活跃度统计表.xlsx", response)).build();
WriteSheet writeSheet = EasyExcel.writerSheet(excelSheetName(formDTO)).build();
writeSheet.setClazz(GridLivelyExcel.class);
List<GridLivelyExcel> data = ConvertUtils.sourceToTarget(grdiLively(formDTO), GridLivelyExcel.class);
excelWriter.write(data, writeSheet);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (excelWriter != null) {
excelWriter.finish();
}
}
}
private String excelSheetName(GridLivelyFormDTO formDTO){
StringBuilder name = new StringBuilder();
SimpleDateFormat format1 = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat format2 = new SimpleDateFormat("yyyy年MM月dd日");
try{
name.append(format2.format(format1.parse(formDTO.getStartTime()))).append("至").append(format2.format(format1.parse(formDTO.getEndTime()))).append("网格活跃度统计");
} catch (Exception e) {
e.printStackTrace();
}
return name.toString();
}
} }

15
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml

@ -1146,4 +1146,19 @@
</if> </if>
group by m.CONFIG_ID,m.COLUMN_NAME group by m.CONFIG_ID,m.COLUMN_NAME
</select> </select>
<select id="gridDateProjectIncrList" resultType="com.epmet.dataaggre.dto.govorg.result.GridDateIdResultDTO">
SELECT
grid_id gridId,
date_id dateId,
pids pids
FROM
fact_grid_member_statistics_daily
WHERE del_flag = '0'
AND DATE_FORMAT(created_time,'%Y%m%d') <![CDATA[ >= ]]> #{startTime}
AND DATE_FORMAT(created_time,'%Y%m%d') <![CDATA[ <= ]]> #{endTime}
AND project_incr > 0
AND pids LIKE CONCAT('%', #{agencyId}, '%')
GROUP BY grid_id, date_id
</select>
</mapper> </mapper>

16
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffPatrolRecordDao.xml

@ -141,4 +141,20 @@
GROUP BY staff_id GROUP BY staff_id
</select> </select>
<select id="gridDateRoutineWorkList" resultType="com.epmet.dataaggre.dto.govorg.result.GridDateIdResultDTO">
SELECT
grid_id gridId,
date_id dateId,
grid_pids pids
FROM
stats_staff_patrol_record_daily
WHERE
del_flag = '0'
AND DATE_FORMAT(created_time,'%Y%m%d') <![CDATA[ >= ]]> #{startTime}
AND DATE_FORMAT(created_time,'%Y%m%d') <![CDATA[ <= ]]> #{endTime}
AND routine_work_count > 0
AND grid_pids LIKE CONCAT('%', #{agencyId}, '%')
GROUP BY grid_id, date_id
</select>
</mapper> </mapper>

13
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerAgencyDao.xml

@ -286,4 +286,17 @@
AND USER_ID = #{staffId} AND USER_ID = #{staffId}
</select> </select>
<select id="subAgencyListAndGridSumNum" resultType="com.epmet.dataaggre.dto.govorg.result.GridLivelyResultDTO">
SELECT
ca.id agencyId,
ca.organization_name agencyName,
(select COUNT(0) from customer_grid where del_flag = '0' and pids LIKE CONCAT('%',ca.id,'%')) gridSumNum
FROM
customer_agency ca
WHERE
del_flag = '0'
AND pid = #{agencyId}
ORDER BY created_time ASC
</select>
</mapper> </mapper>

2
epmet-module/data-report/data-report-server/deploy/docker-compose-prod.yml

@ -9,7 +9,7 @@ services:
volumes: volumes:
- "/opt/epmet-cloud-logs/prod:/logs" - "/opt/epmet-cloud-logs/prod:/logs"
environment: environment:
RUN_INSTRUCT: "java -Xms256m -Xmx1024m -jar ./data-report.jar" RUN_INSTRUCT: "java -Xms256m -Xmx1524m -jar ./data-report.jar"
restart: "unless-stopped" restart: "unless-stopped"
deploy: deploy:
resources: resources:

34
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/ImportInfoFormDTO.java

@ -0,0 +1,34 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2022/2/12 10:38 上午
* @DESC
*/
@Data
public class ImportInfoFormDTO implements Serializable {
private static final long serialVersionUID = -3978921489168201769L;
public interface ImportInfoForm{}
/**
* 选中的组织ID
*/
@NotBlank(message = "orgId不能为空",groups = ImportInfoForm.class)
private String orgId;
/**
* 组织类型 agency:组织grid:网格
*/
@NotBlank(message = "orgType不能为空",groups = ImportInfoForm.class)
private String orgType;
private String customerId;
private String userId;
}

31
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/InfoByNamesResultDTO.java

@ -0,0 +1,31 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2022/2/12 2:15 下午
* @DESC
*/
@Data
public class InfoByNamesResultDTO implements Serializable {
private static final long serialVersionUID = 264490056071606346L;
private String gridId;
private String agencyId;
private String gridName;
private String agencyName;
private String pid;
private String pids;
private String parentAgencyId;
private String agencyPids;
}

38
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java

@ -28,10 +28,13 @@ import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.IcNeighborHoodDTO; import com.epmet.dto.IcNeighborHoodDTO;
import com.epmet.dto.form.ImportInfoFormDTO;
import com.epmet.service.IcNeighborHoodService; import com.epmet.service.IcNeighborHoodService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -85,6 +88,18 @@ public class IcNeighborHoodController {
return new Result(); return new Result();
} }
/**
* @Description 通过ID查询小区信息
* @Param ids
* @Return {@link Result< List< IcNeighborHoodDTO>>}
* @Author zhaoqifeng
* @Date 2021/11/8 10:46
*/
@PostMapping("getlistbyids")
public Result<List<IcNeighborHoodDTO>> getListByIds(@RequestBody List<String> ids) {
return new Result<List<IcNeighborHoodDTO>>().ok(icNeighborHoodService.getListByIds(ids));
}
/** /**
* @Description 获取网格下小区列表 * @Description 获取网格下小区列表
* @Param dto * @Param dto
@ -98,15 +113,22 @@ public class IcNeighborHoodController {
} }
/** /**
* @Description 通过ID查询小区信息 * @Description 小区信息导入
* @Param ids * @param tokenDTO
* @Return {@link Result< List< IcNeighborHoodDTO>>} * @param file
* @Author zhaoqifeng * @author zxc
* @Date 2021/11/8 10:46 * @date 2022/2/12 10:47 上午
*/ */
@PostMapping("getlistbyids") @PostMapping("neighborhoodimport")
public Result<List<IcNeighborHoodDTO>> getListByIds(@RequestBody List<String> ids) { public Result neighborhoodImport(@LoginUser TokenDto tokenDTO, @RequestParam("file") MultipartFile file,
return new Result<List<IcNeighborHoodDTO>>().ok(icNeighborHoodService.getListByIds(ids)); @RequestParam("orgId")String orgId,
@RequestParam("orgType")String orgType) throws IOException {
ImportInfoFormDTO formDTO = new ImportInfoFormDTO();
formDTO.setCustomerId(tokenDTO.getCustomerId());
formDTO.setOrgType(orgType);
formDTO.setOrgId(orgId);
formDTO.setUserId(tokenDTO.getUserId());
return new Result().ok(icNeighborHoodService.neighborhoodImport(formDTO,file));
} }
} }

9
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerGridDao.java

@ -365,4 +365,13 @@ public interface CustomerGridDao extends BaseDao<CustomerGridEntity> {
@Param("operateUserId") String operateUserId); @Param("operateUserId") String operateUserId);
List<CustomerStaffGridResultDTO> getStaffGridList(@Param("customerId") String customerId, @Param("orgId") String orgId, @Param("orgType") String orgType); List<CustomerStaffGridResultDTO> getStaffGridList(@Param("customerId") String customerId, @Param("orgId") String orgId, @Param("orgType") String orgType);
/**
* @Description 根据网格名字查询网格信息
* @param names
* @author zxc
* @date 2022/2/12 2:06 下午
*/
List<InfoByNamesResultDTO> selectGridInfoByNames(@Param("names")List<String> names,@Param("customerId")String customerId);
} }

10
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodDao.java

@ -51,4 +51,14 @@ public interface IcNeighborHoodDao extends BaseDao<IcNeighborHoodEntity> {
Integer checkNameUq(@Param("customerId") String customerId, Integer checkNameUq(@Param("customerId") String customerId,
@Param("neighborHoodName")String neighborHoodName, @Param("neighborHoodName")String neighborHoodName,
@Param("neighborId")String neighborId); @Param("neighborId")String neighborId);
/**
* @Description 根据小区名查询存在小区
* @param names
* @param customerId
* @author zxc
* @date 2022/2/12 2:59 下午
*/
List<String> selectNeighborhoodNameByNames(@Param("names")List<String> names,@Param("customerId") String customerId);
} }

3
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcNeighborHoodEntity.java

@ -17,6 +17,7 @@
package com.epmet.entity; package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity; import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
@ -98,4 +99,6 @@ public class IcNeighborHoodEntity extends BaseEpmetEntity {
*/ */
private String location; private String location;
@TableField(exist = false)
private String gridName;
} }

13
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcNeighborHoodExcel.java

@ -21,6 +21,7 @@ import cn.afterturn.easypoi.excel.annotation.Excel;
import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.util.ExcelVerifyInfo; import com.epmet.util.ExcelVerifyInfo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data; import lombok.Data;
import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.Length;
@ -121,4 +122,16 @@ public class IcNeighborHoodExcel extends ExcelVerifyInfo implements Serializable
@Length(max=500,message = "不能超过500个字") @Length(max=500,message = "不能超过500个字")
private String remark; private String remark;
@JsonIgnore
private Boolean status = false;
@JsonIgnore
private Boolean existNameStatus = false;
@JsonIgnore
private Boolean agencyNameStatus = false;
@JsonIgnore
private Boolean reStatus = false;
} }

13
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java

@ -20,9 +20,13 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.dto.result.OptionResultDTO;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.IcNeighborHoodDTO; import com.epmet.dto.IcNeighborHoodDTO;
import com.epmet.dto.form.ImportInfoFormDTO;
import com.epmet.entity.IcNeighborHoodEntity; import com.epmet.entity.IcNeighborHoodEntity;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -112,4 +116,13 @@ public interface IcNeighborHoodService extends BaseService<IcNeighborHoodEntity>
* @Date 2021/11/8 10:45 * @Date 2021/11/8 10:45
*/ */
List<IcNeighborHoodDTO> getListByIds(List<String> ids); List<IcNeighborHoodDTO> getListByIds(List<String> ids);
/**
* @Description 小区信息导入
* @param formDTO
* @param file
* @author zxc
* @date 2022/2/12 11:11 上午
*/
Result neighborhoodImport(ImportInfoFormDTO formDTO, MultipartFile file) throws IOException;
} }

194
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java

@ -17,30 +17,45 @@
package com.epmet.service.impl; package com.epmet.service.impl;
import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.dto.result.OptionResultDTO;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache;
import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.CustomerGridConstant;
import com.epmet.dao.CustomerGridDao;
import com.epmet.dao.IcNeighborHoodDao; import com.epmet.dao.IcNeighborHoodDao;
import com.epmet.dto.IcNeighborHoodDTO; import com.epmet.dto.IcNeighborHoodDTO;
import com.epmet.dto.form.ImportInfoFormDTO;
import com.epmet.dto.result.InfoByNamesResultDTO;
import com.epmet.entity.IcNeighborHoodEntity; import com.epmet.entity.IcNeighborHoodEntity;
import com.epmet.excel.IcBuildingExcel;
import com.epmet.excel.IcNeighborHoodExcel;
import com.epmet.service.IcNeighborHoodService; import com.epmet.service.IcNeighborHoodService;
import com.epmet.util.ExcelPoiUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.util.Arrays; import java.io.IOException;
import java.util.Collections; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -53,6 +68,8 @@ import java.util.stream.Collectors;
@Service @Service
public class IcNeighborHoodServiceImpl extends BaseServiceImpl<IcNeighborHoodDao, IcNeighborHoodEntity> implements IcNeighborHoodService { public class IcNeighborHoodServiceImpl extends BaseServiceImpl<IcNeighborHoodDao, IcNeighborHoodEntity> implements IcNeighborHoodService {
@Autowired
private CustomerGridDao customerGridDao;
@Override @Override
public PageData<IcNeighborHoodDTO> page(Map<String, Object> params) { public PageData<IcNeighborHoodDTO> page(Map<String, Object> params) {
@ -160,4 +177,173 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl<IcNeighborHoodDao
return ConvertUtils.sourceToTarget(list, IcNeighborHoodDTO.class); return ConvertUtils.sourceToTarget(list, IcNeighborHoodDTO.class);
} }
/**
* @Description 小区信息导入
* @param formDTO
* @param file
* @author zxc
* @date 2022/2/12 11:11 上午
*/
@Override
public Result neighborhoodImport(ImportInfoFormDTO formDTO, MultipartFile file) throws IOException {
ExcelImportResult<IcNeighborHoodExcel> importResult = ExcelPoiUtils.importExcelMore(file, 0, 1, IcNeighborHoodExcel.class);
List<IcNeighborHoodExcel> failList = importResult.getFailList();
//存放错误数据行号
List<Integer> numList = new ArrayList<>();
if(CollectionUtils.isNotEmpty(failList)){
for ( IcNeighborHoodExcel entity : failList) {
//打印失败的行 和失败的信息
log.error("第{}行,{}",entity.getRowNum(),entity.getErrorMsg());
numList.add(entity.getRowNum());
}
}
List<IcNeighborHoodExcel> result =importResult.getList();
return disposeImportNeighborhood(formDTO,result);
}
/**
* @Description 根据左侧树选中的层级可导入对应数据
* 1. 选中社区可导入该社区下所有小区信息楼宇信息房屋信息没有匹配的小区楼宇均新增网格没有对应的不新增
* 2. 选中网格可导入该网格下所有小区信息楼宇信息房屋信息没有匹配的小区楼宇均新增
* 3. 选中小区可导入该小区下所有楼宇信息房屋信息没有匹配的楼宇均新增
* 4. 选中楼宇可导入该楼宇下所有房屋信息
* @param formDTO
* @param result
* @author zxc
* @date 2022/2/12 2:02 下午
*/
public Result disposeImportNeighborhood(ImportInfoFormDTO formDTO, List<IcNeighborHoodExcel> result){
if (CollectionUtils.isEmpty(result)){
return new Result().error(9999,"excel表格内没有数据");
}
List<Integer> nums = new ArrayList<>();
List<String> gridNames = result.stream().map(m -> m.getGridName()).collect(Collectors.toList());
// 1. 查询数据网格是否存在
List<InfoByNamesResultDTO> gridInfos = customerGridDao.selectGridInfoByNames(gridNames, formDTO.getCustomerId());
if (CollectionUtils.isEmpty(gridInfos)){
// 网格没有对应的不新增
for (int i = NumConstant.ONE; i <= result.size(); i++) {
nums.add(i);
}
String str = String.format("共%s条,成功导入%s条。",result.size(),0);
return new Result().error(9999,str + "第"+nums.stream().map(String::valueOf).collect(Collectors.joining("、"))+"行未成功!");
}
result.forEach(r -> {
for (InfoByNamesResultDTO g : gridInfos) {
if (r.getGridName().equals(g.getGridName())){
// 能查询出网格,变为true
r.setStatus(true);
break;
}
}
});
Map<Boolean, List<IcNeighborHoodExcel>> groupStatus = result.stream().collect(Collectors.groupingBy(IcNeighborHoodExcel::getStatus));
// 只获取能查询到的网格
List<IcNeighborHoodExcel> neighborHoods = groupStatus.get(true);
// 2. 查询组织选中组织下存在的小区
List<String> existNames = baseDao.selectNeighborhoodNameByNames(neighborHoods.stream().map(m -> m.getNeighborHoodName()).collect(Collectors.toList()), formDTO.getCustomerId());
// 为了显示多少行插入成功,未成功
result.forEach(r -> {
for (String s : existNames) {
if (r.getNeighborHoodName().equals(s)){
// 数据库已存在此小区名变为true
r.setExistNameStatus(true);
break;
}
}
});
Map<Boolean, List<IcNeighborHoodExcel>> groupByExistName = neighborHoods.stream().collect(Collectors.groupingBy(IcNeighborHoodExcel::getExistNameStatus));
// 获取需要插入的数据
List<IcNeighborHoodExcel> needInsert = groupByExistName.get(false);
if (CollectionUtils.isEmpty(needInsert)){
for (int i = NumConstant.ONE; i <= result.size(); i++) {
nums.add(i);
}
String str = String.format("共%s条,成功导入%s条。",result.size(),0);
return new Result().error(9999,str + "第"+nums.stream().map(String::valueOf).collect(Collectors.joining("、"))+"行未成功!");
}
if (formDTO.getOrgType().equals(CustomerGridConstant.AGENCY)){
AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(formDTO.getOrgId());
if (null == agencyInfo){
throw new EpmetException("未查询到组织信息...");
}
needInsert.forEach(n -> {
if (agencyInfo.getOrganizationName().equals(n.getAgencyName())){
// 所属组织名一样变为true
n.setAgencyNameStatus(true);
}
});
}else {
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(formDTO.getOrgId());
if (null == gridInfo){
throw new EpmetException("未查询到网格信息...");
}
needInsert.forEach(n -> {
if (gridInfo.getGridName().equals(n.getGridName())){
//网格名一样变为true
n.setAgencyNameStatus(true);
}
});
}
Map<Boolean, List<IcNeighborHoodExcel>> groupByAgencyNameStatus = needInsert.stream().collect(Collectors.groupingBy(IcNeighborHoodExcel::getAgencyNameStatus));
List<IcNeighborHoodExcel> finalNeedInsert = groupByAgencyNameStatus.get(true);
if (CollectionUtils.isEmpty(finalNeedInsert)){
for (int i = NumConstant.ONE; i <= result.size(); i++) {
nums.add(i);
}
String str = String.format("共%s条,成功导入%s条。",result.size(),0);
return new Result().error(9999,str +"第"+nums.stream().map(String::valueOf).collect(Collectors.joining("、"))+"行未成功!");
}
Map<String, Long> collect = finalNeedInsert.stream().collect(Collectors.groupingBy(o -> o.getGridName() + "_" + o.getNeighborHoodName(), Collectors.counting()));
collect.forEach((k,v) -> {
if (Integer.valueOf(v.toString()).compareTo(1) > 0){
for (IcNeighborHoodExcel r : result) {
if (k.equals(r.getGridName()+"_"+r.getNeighborHoodName())){
r.setReStatus(true);
}
}
}
});
List<IcNeighborHoodExcel> realFinalResult = new ArrayList<>();
for (int i = NumConstant.ZERO; i < result.size(); i++) {
if (result.get(i).getStatus() == true && result.get(i).getExistNameStatus() == false &&
result.get(i).getAgencyNameStatus() == true && result.get(i).getReStatus() == false){
realFinalResult.add(result.get(i));
}
}
List<IcNeighborHoodEntity> entities = ConvertUtils.sourceToTarget(realFinalResult, IcNeighborHoodEntity.class);
entities.forEach(e -> {
for (InfoByNamesResultDTO g : gridInfos) {
if (e.getGridName().equals(g.getGridName())){
e.setAgencyId(g.getAgencyId());
e.setAgencyPids(g.getAgencyPids());
e.setCustomerId(formDTO.getCustomerId());
e.setGridId(g.getGridId());
e.setParentAgencyId(g.getParentAgencyId());
break;
}
}
});
importInsert(entities);
for (int i = NumConstant.ZERO; i < result.size(); i++) {
if (result.get(i).getStatus() == false || result.get(i).getExistNameStatus() == true || result.get(i).getAgencyNameStatus() == false || result.get(i).getReStatus() == true){
nums.add(i + NumConstant.ONE);
}
}
String str = String.format("共%s条,成功导入%s条。",result.size(),entities.size());
if (CollectionUtils.isNotEmpty(nums)){
return new Result().error(9999,str + "第"+nums.stream().map(String::valueOf).collect(Collectors.joining("、"))+"行未成功!");
}
return new Result().ok(str);
}
@Transactional(rollbackFor = Exception.class)
public void importInsert(List<IcNeighborHoodEntity> entities){
List<List<IcNeighborHoodEntity>> partition = ListUtils.partition(entities, NumConstant.ONE_HUNDRED);
partition.forEach(p -> {
insertBatch(p);
});
}
} }

19
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerGridDao.xml

@ -806,4 +806,23 @@
</if> </if>
</select> </select>
<!-- 根据网格名字查询网格信息 -->
<select id="selectGridInfoByNames" resultType="com.epmet.dto.result.InfoByNamesResultDTO">
SELECT
g.ID AS gridId,
g.GRID_NAME AS gridName,
a.ID AS agencyId,
a.PID AS parentAgencyId,
a.PIDS AS agencyPids
FROM customer_grid g
INNER JOIN customer_agency a ON (a.ID = g.PID AND a.DEL_FLAG = '0')
WHERE g.DEL_FLAG = 0
AND g.CUSTOMER_ID = #{customerId}
AND g.GRID_NAME IN (
<foreach collection="names" item="n" separator=",">
#{n}
</foreach>
)
</select>
</mapper> </mapper>

14
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodDao.xml

@ -214,4 +214,18 @@
and a.id !=#{neighborId} and a.id !=#{neighborId}
</if> </if>
</select> </select>
<!-- 根据小区名查询存在小区 -->
<select id="selectNeighborhoodNameByNames" resultType="java.lang.String">
SELECT
NEIGHBOR_HOOD_NAME
FROM ic_neighbor_hood
WHERE DEL_FLAG = '0'
AND CUSTOMER_ID = #{customerId}
AND NEIGHBOR_HOOD_NAME IN (
<foreach collection="names" item="n" separator=",">
#{n}
</foreach>
)
</select>
</mapper> </mapper>

99
epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/IcPartymemberStyleCategoryDictDTO.java

@ -0,0 +1,99 @@
package com.epmet.dto;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 党员风采分类字典表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-02-12
*/
@Data
public class IcPartymemberStyleCategoryDictDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 楼栋主键
*/
private String id;
/**
* 客户id
*/
private String customerId;
/**
* 上级分类ID 顶级此列存储0
*/
private String pid;
/**
* 所有上级分类ID英文顿号隔开顶级此列存储0
*/
private String pids;
/**
* 分类编码分类编码+customer_id唯一;从1000开始
*/
private String categoryCode;
/**
* 上级分类编码
*/
private String parentCategoryCode;
/**
* 分类名称
*/
private String categoryName;
/**
* 分类级别1,2,3,4.... 目前只有一级
*/
private Integer level;
/**
* 排序
*/
private Integer sort;
/**
* 0:可用1被禁用默认0
*/
private Boolean beDisabled;
/**
* 删除标识 0未删除1已删除
*/
private String delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

6
epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/IcPartymemberStyleDTO.java

@ -98,5 +98,9 @@ public class IcPartymemberStyleDTO implements Serializable {
private Date updatedTime; private Date updatedTime;
private List<String> imageList; private List<String> imageList;
/**
* 分类名称
*/
private String categoryName;
private String categoryId;
} }

36
epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/AddStyleCategoryFormDTO.java

@ -0,0 +1,36 @@
package com.epmet.resi.partymember.dto.partymember.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 党员风采分类添加或修改分类
*/
@Data
public class AddStyleCategoryFormDTO implements Serializable {
public interface AddUserInternalGroup {
}
public interface AddUserShowGroup extends CustomerClientShowGroup {
}
@NotBlank(message = "customerId不能为空", groups = AddUserInternalGroup.class)
private String customerId;
/**
* 分类名称
*/
@NotBlank(message = "分类名称不能为空", groups = AddUserShowGroup.class)
@Length(max = 10, groups = AddUserShowGroup.class)
private String categoryName;
/**
* 主键
*/
private String categoryId;
}

1
epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/PartyMemberStyleFormDTO.java

@ -22,4 +22,5 @@ public class PartyMemberStyleFormDTO implements Serializable {
private String mainDeed; private String mainDeed;
private Integer pageNo; private Integer pageNo;
private Integer pageSize; private Integer pageSize;
private String categoryId;
} }

15
epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/StyleCategoryCommonFormDTO.java

@ -0,0 +1,15 @@
package com.epmet.resi.partymember.dto.partymember.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
@Data
public class StyleCategoryCommonFormDTO implements Serializable {
private static final long serialVersionUID = -291713921309878763L;
public interface AddUserInternalGroup {}
@NotBlank(message = "customerId不能为空",groups = AddUserInternalGroup.class)
private String customerId;
}

21
epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/StyleSelectListFormDTO.java

@ -0,0 +1,21 @@
package com.epmet.resi.partymember.dto.partymember.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
@Data
public class StyleSelectListFormDTO implements Serializable {
public interface AddUserInternalGroup {}
@NotBlank(message = "customerId不能为空",groups = AddUserInternalGroup.class)
private String customerId;
/**
* query:查询条件用新增或者编辑addorupdate
*/
@NotBlank(message = "type不能为空",groups = AddUserInternalGroup.class)
private String type;
}

30
epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/UpdateStyleCategoryFormDTO.java

@ -0,0 +1,30 @@
package com.epmet.resi.partymember.dto.partymember.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@Data
public class UpdateStyleCategoryFormDTO implements Serializable {
public interface DeleteInternalGroup {
}
public interface UpdateStatusInternalGroup {
}
/**
* 主键
*/
@NotBlank(message = "categoryId不能为空", groups = {DeleteInternalGroup.class,UpdateStatusInternalGroup.class})
private String categoryId;
/**
* 0:可用1被禁用默认0
*/
@NotNull(message = "beDisabled不能为空", groups = {UpdateStatusInternalGroup.class})
private Boolean beDisabled;
private String userId;
}

27
epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/result/StyleCategoryDictResDTO.java

@ -0,0 +1,27 @@
package com.epmet.resi.partymember.dto.partymember.result;
import lombok.Data;
import java.io.Serializable;
/**
* 党员风采分类列表查询
*/
@Data
public class StyleCategoryDictResDTO implements Serializable {
/**
* 主键
*/
private String categoryId;
/**
* 分类名称
*/
private String categoryName;
/**
* 0:可用1被禁用默认0
*/
private Boolean beDisabled;
}

101
epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleCategoryDictController.java

@ -0,0 +1,101 @@
package com.epmet.modules.partymember.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.modules.partymember.service.IcPartymemberStyleCategoryDictService;
import com.epmet.resi.partymember.dto.partymember.form.AddStyleCategoryFormDTO;
import com.epmet.resi.partymember.dto.partymember.form.StyleCategoryCommonFormDTO;
import com.epmet.resi.partymember.dto.partymember.form.StyleSelectListFormDTO;
import com.epmet.resi.partymember.dto.partymember.form.UpdateStyleCategoryFormDTO;
import com.epmet.resi.partymember.dto.partymember.result.StyleCategoryDictResDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* 党员风采分类字典表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-02-12
*/
@RestController
@RequestMapping("stylecategorydict")
public class IcPartymemberStyleCategoryDictController {
@Autowired
private IcPartymemberStyleCategoryDictService icPartymemberStyleCategoryDictService;
/**
* 党员风采分类列表查询
* @param formDTO
* @return
*/
@PostMapping("list")
public Result<List<StyleCategoryDictResDTO>> list(@RequestBody StyleCategoryCommonFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO,StyleCategoryCommonFormDTO.AddUserInternalGroup.class);
return new Result<List<StyleCategoryDictResDTO>>().ok(icPartymemberStyleCategoryDictService.queryList(formDTO.getCustomerId()));
}
/**
* 党员风采分类添加或修改分类
* @param formDTO
* @return
*/
@PostMapping("addorupdate")
public Result addOrUpdate(@RequestBody AddStyleCategoryFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO, AddStyleCategoryFormDTO.AddUserInternalGroup.class,AddStyleCategoryFormDTO.AddUserShowGroup.class);
icPartymemberStyleCategoryDictService.addOrUpdate(formDTO);
return new Result();
}
/**
* 党员风采分类删除分类删除的分类如果已经使用过清空已经使用的记录修改时需要重新选择
* @param formDTO
* @return
*/
@PostMapping("delete")
public Result delete(@LoginUser TokenDto tokenDto, @RequestBody UpdateStyleCategoryFormDTO formDTO){
formDTO.setUserId(tokenDto.getUserId());
ValidatorUtils.validateEntity(formDTO,UpdateStyleCategoryFormDTO.DeleteInternalGroup.class);
icPartymemberStyleCategoryDictService.delete(formDTO);
return new Result();
}
/**
* 党员风采分类启用或禁用
* @param tokenDto
* @param formDTO
* @return
*/
@PostMapping("updatestatus")
public Result updateStatus(@LoginUser TokenDto tokenDto, @RequestBody UpdateStyleCategoryFormDTO formDTO){
formDTO.setUserId(tokenDto.getUserId());
ValidatorUtils.validateEntity(formDTO,UpdateStyleCategoryFormDTO.UpdateStatusInternalGroup.class);
icPartymemberStyleCategoryDictService.updateStatus(formDTO);
return new Result();
}
/**
* 党员风采-分类下拉框
* 查询条件中展示所有未删除的
* 新增活修改党员风采展示可用的
*
* @param formDTO
* @return
*/
@PostMapping("select-list")
public Result<List<StyleCategoryDictResDTO>> list(@RequestBody StyleSelectListFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, StyleSelectListFormDTO.AddUserInternalGroup.class);
return new Result<List<StyleCategoryDictResDTO>>().ok(icPartymemberStyleCategoryDictService.selectList(formDTO));
}
}

1
epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java

@ -100,6 +100,7 @@ public class IcPartymemberStyleController {
excel.setGridName(item.getGridName()); excel.setGridName(item.getGridName());
excel.setName(item.getName()); excel.setName(item.getName());
excel.setMainDeed(item.getMainDeed()); excel.setMainDeed(item.getMainDeed());
excel.setCategoryName(item.getCategoryName());
return excel; return excel;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
} }

20
epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartymemberStyleCategoryDictDao.java

@ -0,0 +1,20 @@
package com.epmet.modules.partymember.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.modules.partymember.entity.IcPartymemberStyleCategoryDictEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 党员风采分类字典表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-02-12
*/
@Mapper
public interface IcPartymemberStyleCategoryDictDao extends BaseDao<IcPartymemberStyleCategoryDictEntity> {
Integer getMaxCategoryCode(String customerId);
int updateToDel(@Param("categoryId") String categoryId,@Param("userId") String userId);
}

4
epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartymemberStyleDao.java

@ -20,6 +20,7 @@ package com.epmet.modules.partymember.dao;
import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.modules.partymember.entity.IcPartymemberStyleEntity; import com.epmet.modules.partymember.entity.IcPartymemberStyleEntity;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/** /**
* 党员风采 * 党员风采
@ -29,5 +30,6 @@ import org.apache.ibatis.annotations.Mapper;
*/ */
@Mapper @Mapper
public interface IcPartymemberStyleDao extends BaseDao<IcPartymemberStyleEntity> { public interface IcPartymemberStyleDao extends BaseDao<IcPartymemberStyleEntity> {
int clearCategry(@Param("categoryId") String categoryId, @Param("userId")String userId);
} }

66
epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/entity/IcPartymemberStyleCategoryDictEntity.java

@ -0,0 +1,66 @@
package com.epmet.modules.partymember.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 党员风采分类字典表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-02-12
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("ic_partymember_style_category_dict")
public class IcPartymemberStyleCategoryDictEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户id
*/
private String customerId;
/**
* 上级分类ID 顶级此列存储0
*/
private String pid;
/**
* 所有上级分类ID英文顿号隔开顶级此列存储0
*/
private String pids;
/**
* 分类编码分类编码+customer_id唯一;从1000开始
*/
private String categoryCode;
/**
* 上级分类编码
*/
private String parentCategoryCode;
/**
* 分类名称
*/
private String categoryName;
/**
* 分类级别1,2,3,4.... 目前只有一级
*/
private Integer level;
/**
* 排序
*/
private Integer sort;
/**
* 0:可用1被禁用默认0
*/
private Boolean beDisabled;
}

3
epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/entity/IcPartymemberStyleEntity.java

@ -59,5 +59,6 @@ public class IcPartymemberStyleEntity extends BaseEpmetEntity {
* 主要事迹 * 主要事迹
*/ */
private String mainDeed; private String mainDeed;
private String categoryId;
private String categoryCode;
} }

3
epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/excel/IcPartymemberStyleExcel.java

@ -40,4 +40,7 @@ public class IcPartymemberStyleExcel {
@Excel(name = "主要事迹") @Excel(name = "主要事迹")
private String mainDeed; private String mainDeed;
@Excel(name="所属分类")
private String categoryName;
} }

3
epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/excel/IcPartymemberStyleImportExcel.java

@ -41,4 +41,7 @@ public class IcPartymemberStyleImportExcel extends ExcelVerifyInfo {
@Excel(name = "照片") @Excel(name = "照片")
private String imageUrl; private String imageUrl;
@Excel(name="所属分类")
private String categoryName;
} }

54
epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleCategoryDictService.java

@ -0,0 +1,54 @@
package com.epmet.modules.partymember.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.modules.partymember.entity.IcPartymemberStyleCategoryDictEntity;
import com.epmet.resi.partymember.dto.partymember.form.AddStyleCategoryFormDTO;
import com.epmet.resi.partymember.dto.partymember.form.StyleSelectListFormDTO;
import com.epmet.resi.partymember.dto.partymember.form.UpdateStyleCategoryFormDTO;
import com.epmet.resi.partymember.dto.partymember.result.StyleCategoryDictResDTO;
import java.util.List;
/**
* 党员风采分类字典表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-02-12
*/
public interface IcPartymemberStyleCategoryDictService extends BaseService<IcPartymemberStyleCategoryDictEntity> {
/**
* 党员风采分类列表查询
* @param customerId
* @return
*/
List<StyleCategoryDictResDTO> queryList(String customerId);
/**
* 党员风采分类添加或修改分类
* @param formDTO
*/
void addOrUpdate(AddStyleCategoryFormDTO formDTO);
/**
* 删除的分类如果已经使用过清空已经使用的记录修改时需要重新选择
* @param formDTO
*/
void delete(UpdateStyleCategoryFormDTO formDTO);
/**
* 党员风采分类启用或禁用
* 新增党员风采时不显示已经禁用的分类已经使用了禁用的分类正常显示
* @param formDTO
*/
void updateStatus(UpdateStyleCategoryFormDTO formDTO);
/**
* 党员风采-分类下拉框
* @param formDTO
* @return
*/
List<StyleCategoryDictResDTO> selectList(StyleSelectListFormDTO formDTO);
IcPartymemberStyleCategoryDictEntity get(String categoryId);
}

171
epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleCategoryDictServiceImpl.java

@ -0,0 +1,171 @@
package com.epmet.modules.partymember.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.modules.partymember.dao.IcPartymemberStyleCategoryDictDao;
import com.epmet.modules.partymember.dao.IcPartymemberStyleDao;
import com.epmet.modules.partymember.entity.IcPartymemberStyleCategoryDictEntity;
import com.epmet.modules.partymember.service.IcPartymemberStyleCategoryDictService;
import com.epmet.resi.partymember.dto.partymember.form.AddStyleCategoryFormDTO;
import com.epmet.resi.partymember.dto.partymember.form.StyleSelectListFormDTO;
import com.epmet.resi.partymember.dto.partymember.form.UpdateStyleCategoryFormDTO;
import com.epmet.resi.partymember.dto.partymember.result.StyleCategoryDictResDTO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* 党员风采分类字典表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-02-12
*/
@Service
public class IcPartymemberStyleCategoryDictServiceImpl extends BaseServiceImpl<IcPartymemberStyleCategoryDictDao, IcPartymemberStyleCategoryDictEntity> implements IcPartymemberStyleCategoryDictService {
@Autowired
private IcPartymemberStyleDao icPartymemberStyleDao;
/**
* 党员风采分类列表查询
*
* @param customerId
* @return
*/
@Override
public List<StyleCategoryDictResDTO> queryList(String customerId) {
LambdaQueryWrapper<IcPartymemberStyleCategoryDictEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(IcPartymemberStyleCategoryDictEntity::getCustomerId, customerId);
queryWrapper.orderByDesc(IcPartymemberStyleCategoryDictEntity::getSort);
List<IcPartymemberStyleCategoryDictEntity> list = baseDao.selectList(queryWrapper);
List<StyleCategoryDictResDTO> resultList = new ArrayList<>();
for (IcPartymemberStyleCategoryDictEntity entity : list) {
StyleCategoryDictResDTO resDTO = new StyleCategoryDictResDTO();
resDTO.setCategoryId(entity.getId());
resDTO.setCategoryName(entity.getCategoryName());
resDTO.setBeDisabled(entity.getBeDisabled());
resultList.add(resDTO);
}
return resultList;
}
/**
* 党员风采分类添加或修改分类
*
* @param formDTO
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void addOrUpdate(AddStyleCategoryFormDTO formDTO) {
//校验分类名称是否唯一
LambdaQueryWrapper<IcPartymemberStyleCategoryDictEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(IcPartymemberStyleCategoryDictEntity::getCustomerId, formDTO.getCustomerId())
.eq(IcPartymemberStyleCategoryDictEntity::getCategoryName, formDTO.getCategoryName())
.ne(StringUtils.isNotBlank(formDTO.getCategoryId()), IcPartymemberStyleCategoryDictEntity::getId, formDTO.getCategoryId());
Integer cout = baseDao.selectCount(queryWrapper);
if (cout > NumConstant.ZERO) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "分类名称已存在", "分类名称已存在");
}
if (StringUtils.isNotBlank(formDTO.getCategoryId())) {
//更新分类名称
LambdaUpdateWrapper<IcPartymemberStyleCategoryDictEntity> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(IcPartymemberStyleCategoryDictEntity::getCategoryName, formDTO.getCategoryName());
updateWrapper.eq(IcPartymemberStyleCategoryDictEntity::getId, formDTO.getCategoryId());
baseDao.update(null, updateWrapper);
return;
}
IcPartymemberStyleCategoryDictEntity insert = new IcPartymemberStyleCategoryDictEntity();
insert.setCategoryName(formDTO.getCategoryName());
insert.setCustomerId(formDTO.getCustomerId());
insert.setPid(NumConstant.ZERO_STR);
insert.setPids(NumConstant.ZERO_STR);
// 查询 当前客户下最大的一级分类数。
Integer maxCategoryCode = baseDao.getMaxCategoryCode(formDTO.getCustomerId());
if (NumConstant.ZERO == maxCategoryCode) {
maxCategoryCode = 1001;
} else {
maxCategoryCode++;
}
insert.setCategoryCode(String.valueOf(maxCategoryCode));
insert.setParentCategoryCode(NumConstant.ZERO_STR);
insert.setLevel(NumConstant.ONE);
LambdaQueryWrapper<IcPartymemberStyleCategoryDictEntity> maxSortWrapper = new LambdaQueryWrapper<>();
maxSortWrapper.eq(IcPartymemberStyleCategoryDictEntity::getCustomerId, formDTO.getCustomerId())
.orderByDesc(IcPartymemberStyleCategoryDictEntity::getSort).last("limit 1");
IcPartymemberStyleCategoryDictEntity max = baseDao.selectOne(maxSortWrapper);
insert.setSort(null == max ? NumConstant.ONE : max.getSort() + NumConstant.ONE);
insert.setBeDisabled(false);
baseDao.insert(insert);
}
/**
* 删除的分类如果已经使用过清空已经使用的记录修改时需要重新选择
*
* @param formDTO
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void delete(UpdateStyleCategoryFormDTO formDTO) {
baseDao.updateToDel(formDTO.getCategoryId(),formDTO.getUserId());
icPartymemberStyleDao.clearCategry(formDTO.getCategoryId(),formDTO.getUserId());
}
/**
* 党员风采分类启用或禁用
* 新增党员风采时不显示已经禁用的分类已经使用了禁用的分类正常显示
*
* @param formDTO
*/
@Override
public void updateStatus(UpdateStyleCategoryFormDTO formDTO) {
LambdaUpdateWrapper<IcPartymemberStyleCategoryDictEntity> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(IcPartymemberStyleCategoryDictEntity::getBeDisabled, formDTO.getBeDisabled())
.set(IcPartymemberStyleCategoryDictEntity::getUpdatedBy, formDTO.getUserId())
.set(IcPartymemberStyleCategoryDictEntity::getUpdatedTime, new Date());
updateWrapper.eq(IcPartymemberStyleCategoryDictEntity::getId, formDTO.getCategoryId());
baseDao.update(null, updateWrapper);
}
/**
* 党员风采-分类下拉框
*
* @param formDTO
* @return
*/
@Override
public List<StyleCategoryDictResDTO> selectList(StyleSelectListFormDTO formDTO) {
LambdaQueryWrapper<IcPartymemberStyleCategoryDictEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(IcPartymemberStyleCategoryDictEntity::getCustomerId, formDTO.getCustomerId());
if("addorupdate".equals(formDTO.getType())){
//查询可用的
queryWrapper.eq(IcPartymemberStyleCategoryDictEntity::getBeDisabled,false);
}
queryWrapper.orderByAsc(IcPartymemberStyleCategoryDictEntity::getSort);
List<IcPartymemberStyleCategoryDictEntity> list = baseDao.selectList(queryWrapper);
List<StyleCategoryDictResDTO> resultList = new ArrayList<>();
for (IcPartymemberStyleCategoryDictEntity entity : list) {
StyleCategoryDictResDTO resDTO = new StyleCategoryDictResDTO();
resDTO.setCategoryId(entity.getId());
resDTO.setCategoryName(entity.getCategoryName());
resDTO.setBeDisabled(entity.getBeDisabled());
resultList.add(resDTO);
}
return resultList;
}
@Override
public IcPartymemberStyleCategoryDictEntity get(String categoryId) {
return baseDao.selectById(categoryId);
}
}

10
epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java

@ -39,9 +39,11 @@ import com.epmet.dto.CustomerGridDTO;
import com.epmet.dto.form.GridOptionFormDTO; import com.epmet.dto.form.GridOptionFormDTO;
import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.modules.partymember.dao.IcPartymemberStyleDao; import com.epmet.modules.partymember.dao.IcPartymemberStyleDao;
import com.epmet.modules.partymember.entity.IcPartymemberStyleCategoryDictEntity;
import com.epmet.modules.partymember.entity.IcPartymemberStyleEntity; import com.epmet.modules.partymember.entity.IcPartymemberStyleEntity;
import com.epmet.modules.partymember.entity.IcPartymemberStyleImageEntity; import com.epmet.modules.partymember.entity.IcPartymemberStyleImageEntity;
import com.epmet.modules.partymember.excel.IcPartymemberStyleImportExcel; import com.epmet.modules.partymember.excel.IcPartymemberStyleImportExcel;
import com.epmet.modules.partymember.service.IcPartymemberStyleCategoryDictService;
import com.epmet.modules.partymember.service.IcPartymemberStyleImageService; import com.epmet.modules.partymember.service.IcPartymemberStyleImageService;
import com.epmet.modules.partymember.service.IcPartymemberStyleService; import com.epmet.modules.partymember.service.IcPartymemberStyleService;
import com.epmet.resi.partymember.dto.partymember.IcPartymemberStyleDTO; import com.epmet.resi.partymember.dto.partymember.IcPartymemberStyleDTO;
@ -76,6 +78,8 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl<IcPartymember
private IcPartymemberStyleImageService icPartymemberStyleImageService; private IcPartymemberStyleImageService icPartymemberStyleImageService;
@Resource @Resource
private GovOrgOpenFeignClient govOrgOpenFeignClient; private GovOrgOpenFeignClient govOrgOpenFeignClient;
@Resource
private IcPartymemberStyleCategoryDictService icPartymemberStyleCategoryDictService;
@Override @Override
public PageData<IcPartymemberStyleDTO> page(Map<String, Object> params) { public PageData<IcPartymemberStyleDTO> page(Map<String, Object> params) {
@ -105,6 +109,8 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl<IcPartymember
return; return;
} }
item.setGridName(gridInfo.getGridName()); item.setGridName(gridInfo.getGridName());
IcPartymemberStyleCategoryDictEntity dict = icPartymemberStyleCategoryDictService.get(item.getCategoryId());
item.setCategoryName(null == dict ? StrConstant.EPMETY_STR : dict.getCategoryName());
} }
}); });
@ -188,6 +194,7 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl<IcPartymember
wrapper.eq(StringUtils.isNotBlank(formDTO.getGridId()), IcPartymemberStyleEntity::getGridId, formDTO.getGridId()); wrapper.eq(StringUtils.isNotBlank(formDTO.getGridId()), IcPartymemberStyleEntity::getGridId, formDTO.getGridId());
wrapper.like(StringUtils.isNotBlank(formDTO.getName()), IcPartymemberStyleEntity::getName, formDTO.getName()); wrapper.like(StringUtils.isNotBlank(formDTO.getName()), IcPartymemberStyleEntity::getName, formDTO.getName());
wrapper.like(StringUtils.isNotBlank(formDTO.getMainDeed()), IcPartymemberStyleEntity::getMainDeed, formDTO.getMainDeed()); wrapper.like(StringUtils.isNotBlank(formDTO.getMainDeed()), IcPartymemberStyleEntity::getMainDeed, formDTO.getMainDeed());
wrapper.eq(StringUtils.isNotBlank(formDTO.getCategoryId()),IcPartymemberStyleEntity::getCategoryId,formDTO.getCategoryId());
List<IcPartymemberStyleEntity> list = baseDao.selectList(wrapper); List<IcPartymemberStyleEntity> list = baseDao.selectList(wrapper);
PageInfo<IcPartymemberStyleEntity> pageInfo = new PageInfo<>(list); PageInfo<IcPartymemberStyleEntity> pageInfo = new PageInfo<>(list);
List<IcPartymemberStyleDTO> dtoList = ConvertUtils.sourceToTarget(list, IcPartymemberStyleDTO.class); List<IcPartymemberStyleDTO> dtoList = ConvertUtils.sourceToTarget(list, IcPartymemberStyleDTO.class);
@ -200,6 +207,8 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl<IcPartymember
return; return;
} }
item.setGridName(gridInfo.getGridName()); item.setGridName(gridInfo.getGridName());
IcPartymemberStyleCategoryDictEntity dict = icPartymemberStyleCategoryDictService.get(item.getCategoryId());
item.setCategoryName(null == dict ? StrConstant.EPMETY_STR : dict.getCategoryName());
} }
}); });
return new PageData<>(dtoList, pageInfo.getTotal()); return new PageData<>(dtoList, pageInfo.getTotal());
@ -265,6 +274,7 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl<IcPartymember
entity.setGridId(gridMap.get(item.getGridName())); entity.setGridId(gridMap.get(item.getGridName()));
entity.setName(item.getName()); entity.setName(item.getName());
entity.setMainDeed(item.getMainDeed()); entity.setMainDeed(item.getMainDeed());
AtomicInteger i = new AtomicInteger(); AtomicInteger i = new AtomicInteger();
if (StringUtils.isNotBlank(item.getImageUrl())) { if (StringUtils.isNotBlank(item.getImageUrl())) {
Arrays.asList(item.getImageUrl().split(StrConstant.COMMA)).forEach(url -> { Arrays.asList(item.getImageUrl().split(StrConstant.COMMA)).forEach(url -> {

23
epmet-module/resi-partymember/resi-partymember-server/src/main/resources/db/migration/V0.0.2__style_dict.sql

@ -0,0 +1,23 @@
CREATE TABLE `ic_partymember_style_category_dict` (
`ID` varchar(64) NOT NULL COMMENT '楼栋主键',
`CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户id',
`PID` varchar(64) CHARACTER SET utf8 NOT NULL COMMENT '上级分类ID 顶级此列存储0',
`PIDS` varchar(512) CHARACTER SET utf8 NOT NULL COMMENT '所有上级分类ID英文顿号隔开,顶级此列存储0',
`CATEGORY_CODE` varchar(64) CHARACTER SET utf8 NOT NULL COMMENT '分类编码,分类编码+customer_id唯一;从1000开始',
`PARENT_CATEGORY_CODE` varchar(64) CHARACTER SET utf8 NOT NULL COMMENT '上级分类编码',
`CATEGORY_NAME` varchar(128) CHARACTER SET utf8 NOT NULL COMMENT '分类名称',
`LEVEL` int(10) NOT NULL COMMENT '分类级别1,2,3,4.... 目前只有一级',
`SORT` int(10) unsigned NOT NULL COMMENT '排序',
`BE_DISABLED` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0:可用;1:被禁用。默认0',
`DEL_FLAG` varchar(1) NOT NULL DEFAULT '0' COMMENT '删除标识 0未删除、1已删除',
`REVISION` int(11) NOT NULL DEFAULT '0' COMMENT '乐观锁',
`CREATED_BY` varchar(32) NOT NULL COMMENT '创建人',
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人',
`UPDATED_TIME` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='党员风采分类字典表';
alter table ic_partymember_style add COLUMN CATEGORY_ID VARCHAR(64) comment '分类主键' AFTER MAIN_DEED;
alter table ic_partymember_style add COLUMN CATEGORY_CODE VARCHAR(64) comment '分类编码' after CATEGORY_ID;

18
epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartymemberStyleCategoryDictDao.xml

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.modules.partymember.dao.IcPartymemberStyleCategoryDictDao">
<select id="getMaxCategoryCode" parameterType="java.lang.String" resultType="java.lang.Integer">
SELECT
IFNULL( MAX(CATEGORY_CODE), 0)
FROM
ic_partymember_style_category_dict
WHERE CUSTOMER_ID = #{customerId}
</select>
<update id="updateToDel" parameterType="map">
update ic_partymember_style_category_dict set del_flag='1',UPDATED_BY=#{userId},UPDATED_TIME=now()
where id=#{categoryId}
</update>
</mapper>

6
epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartymemberStyleDao.xml

@ -18,5 +18,11 @@
<result property="updatedTime" column="UPDATED_TIME"/> <result property="updatedTime" column="UPDATED_TIME"/>
</resultMap> </resultMap>
<update id="clearCategry" parameterType="map">
update ic_partymember_style
set CATEGORY_ID='',CATEGORY_CODE='',UPDATED_BY=#{userId},UPDATED_TIME=now()
where del_flag='0'
and CATEGORY_ID=#{categoryId}
</update>
</mapper> </mapper>

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

@ -237,7 +237,7 @@ public interface IcResiUserDao extends BaseDao<IcResiUserEntity> {
List<VolunteerDistributionResultDTO.Distribution> listIcResiInfosByUserIds(@Param("userIds") List<String> userIds); List<VolunteerDistributionResultDTO.Distribution> listIcResiInfosByUserIds(@Param("userIds") List<String> userIds);
Map<String, String> getCategoryListMap(@Param("icUserId") String icUserId); Map<String, String> getCategoryListMap(@Param("columns")List<String> columns, @Param("icUserId") String icUserId);
Map<String, String> selectResiInfoMap(@Param("idCard") String idCard); Map<String, String> selectResiInfoMap(@Param("idCard") String idCard);
@ -261,4 +261,5 @@ public interface IcResiUserDao extends BaseDao<IcResiUserEntity> {
*/ */
Map<String, BigDecimal> getDataAnalyseCount(@Param("customerId") String customerId, @Param("tableName") String tableName, Map<String, BigDecimal> getDataAnalyseCount(@Param("customerId") String customerId, @Param("tableName") String tableName,
@Param("columnList") List<String> columnList, @Param("id") String id, @Param("level") String level); @Param("columnList") List<String> columnList, @Param("id") String id, @Param("level") String level);
List<Map<String, String>> getIcUserList(@Param("customerId") String customerId, @Param("columns")List<String> columns);
} }

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

@ -382,12 +382,15 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
icUserTransferRecordService.add(formDTO); icUserTransferRecordService.add(formDTO);
} }
//2.判断类别数据是否修改[类别修改的变更明细里边存修改后的新值,是就存1否就存-1] //2.判断类别数据是否修改[类别修改的变更明细里边存修改后的新值,是就存1否就存-1]
Result<List<IcResiCategoryWarnConfigDTO>> resultList = operCustomizeOpenFeignClient.categoryWarnConfigList(tokenDto.getCustomerId()); IcResiCategoryStatsConfigDTO sfdto = new IcResiCategoryStatsConfigDTO();
if (!resultList.success()) { sfdto.setCustomerId(tokenDto.getCustomerId());
throw new RuntimeException("居民信息修改,获取客户居民类别预警配置表数据失败"); Result<List<IcResiCategoryStatsConfigDTO>> categoryListResult = operCustomizeOpenFeignClient.getCategoryList(sfdto);
if (!categoryListResult.success()){
throw new RenException("居民信息修改,获取客户居民类别预警配置表数据失败");
} }
//修改前数据库居民十八类信息值 //修改前数据库居民十八类信息值
Map<String, String> hash = icResiUserDao.getCategoryListMap(entity.getId()); List<String> columns = categoryListResult.getData().stream().map(IcResiCategoryStatsConfigDTO::getColumnName).collect(Collectors.toList());
Map<String, String> hash = icResiUserDao.getCategoryListMap(columns, entity.getId());
//封装变更记录和变更明细数据 //封装变更记录和变更明细数据
//变更记录 //变更记录
IcUserChangeRecordEntity changeRecordEntity = new IcUserChangeRecordEntity(); IcUserChangeRecordEntity changeRecordEntity = new IcUserChangeRecordEntity();
@ -396,7 +399,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
//变更明细 //变更明细
List<IcUserChangeDetailedEntity> list = new ArrayList<>(); List<IcUserChangeDetailedEntity> list = new ArrayList<>();
IcUserChangeDetailedEntity categoryEntity = null; IcUserChangeDetailedEntity categoryEntity = null;
for (IcResiCategoryWarnConfigDTO dto : resultList.getData()) { for (IcResiCategoryStatsConfigDTO dto : categoryListResult.getData()) {
String oldValue = hash.get(dto.getColumnName()); String oldValue = hash.get(dto.getColumnName());
if (map.containsKey(dto.getColumnName()) && !oldValue.equals(map.get(dto.getColumnName()))) { if (map.containsKey(dto.getColumnName()) && !oldValue.equals(map.get(dto.getColumnName()))) {
//类别修改后的值 //类别修改后的值

16
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcUserChangeRecordServiceImpl.java

@ -21,12 +21,13 @@ import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dao.IcResiUserDao; import com.epmet.dao.IcResiUserDao;
import com.epmet.dao.IcUserChangeRecordDao; import com.epmet.dao.IcUserChangeRecordDao;
import com.epmet.dto.IcResiCategoryWarnConfigDTO; import com.epmet.dto.IcResiCategoryStatsConfigDTO;
import com.epmet.dto.IcUserChangeRecordDTO; import com.epmet.dto.IcUserChangeRecordDTO;
import com.epmet.dto.form.IcResiUserChangeRecordFormDTO; import com.epmet.dto.form.IcResiUserChangeRecordFormDTO;
import com.epmet.dto.form.IcUserChangeRecordInitFormDTO; import com.epmet.dto.form.IcUserChangeRecordInitFormDTO;
@ -171,10 +172,13 @@ public class IcUserChangeRecordServiceImpl extends BaseServiceImpl<IcUserChangeR
log.info("开始初始客户下居民的变更记录和变更明细数据,客户Id->"+customerId); log.info("开始初始客户下居民的变更记录和变更明细数据,客户Id->"+customerId);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//1.获取客户居民类别预警配置表数据 //1.获取客户居民类别预警配置表数据
Result<List<IcResiCategoryWarnConfigDTO>> resultList = operCustomizeOpenFeignClient.categoryWarnConfigList(customerId); IcResiCategoryStatsConfigDTO sfdto = new IcResiCategoryStatsConfigDTO();
if (!resultList.success()) { sfdto.setCustomerId(customerId);
throw new RuntimeException("居民信息修改,获取客户居民类别预警配置表数据失败"); Result<List<IcResiCategoryStatsConfigDTO>> categoryListResult = operCustomizeOpenFeignClient.getCategoryList(sfdto);
if (!categoryListResult.success()){
throw new RenException("居民信息修改,获取客户居民类别预警配置表数据失败");
} }
List<String> columns = categoryListResult.getData().stream().map(IcResiCategoryStatsConfigDTO::getColumnName).collect(Collectors.toList());
List<IcUserChangeRecordEntity> changeList = new ArrayList<>(); List<IcUserChangeRecordEntity> changeList = new ArrayList<>();
IcUserChangeRecordEntity change = null; IcUserChangeRecordEntity change = null;
List<IcUserChangeDetailedEntity> detailedList = new ArrayList<>(); List<IcUserChangeDetailedEntity> detailedList = new ArrayList<>();
@ -187,7 +191,7 @@ public class IcUserChangeRecordServiceImpl extends BaseServiceImpl<IcUserChangeR
do { do {
//一千条一循环查询客户下居民数据 //一千条一循环查询客户下居民数据
PageHelper.startPage(pageNo, NumConstant.ONE_THOUSAND); PageHelper.startPage(pageNo, NumConstant.ONE_THOUSAND);
icUserList = icResiUserDao.getIcUserList(customerId); icUserList = icResiUserDao.getIcUserList(customerId, columns);
pageNo++; pageNo++;
//3.遍历封装数据 //3.遍历封装数据
@ -195,7 +199,7 @@ public class IcUserChangeRecordServiceImpl extends BaseServiceImpl<IcUserChangeR
//存放一个人的类别为是的变更明细数据 //存放一个人的类别为是的变更明细数据
List<IcUserChangeDetailedEntity> subList = new ArrayList<>(); List<IcUserChangeDetailedEntity> subList = new ArrayList<>();
String changeId = UUID.randomUUID().toString().replaceAll("-", ""); String changeId = UUID.randomUUID().toString().replaceAll("-", "");
for (IcResiCategoryWarnConfigDTO dto : resultList.getData()){ for (IcResiCategoryStatsConfigDTO dto : categoryListResult.getData()){
if(map.containsKey(dto.getColumnName())&&"1".equals(map.get(dto.getColumnName()))){ if(map.containsKey(dto.getColumnName())&&"1".equals(map.get(dto.getColumnName()))){
detailed = new IcUserChangeDetailedEntity(); detailed = new IcUserChangeDetailedEntity();
detailed.setCustomerId(customerId); detailed.setCustomerId(customerId);

19
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcUserTransferRecordServiceImpl.java

@ -27,6 +27,7 @@ import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dao.IcResiUserDao; import com.epmet.dao.IcResiUserDao;
import com.epmet.dao.IcUserTransferRecordDao; import com.epmet.dao.IcUserTransferRecordDao;
import com.epmet.dto.IcResiCategoryStatsConfigDTO;
import com.epmet.dto.IcResiCategoryWarnConfigDTO; import com.epmet.dto.IcResiCategoryWarnConfigDTO;
import com.epmet.dto.IcResiUserDTO; import com.epmet.dto.IcResiUserDTO;
import com.epmet.dto.form.IcResiUserOrgMsgFormDTO; import com.epmet.dto.form.IcResiUserOrgMsgFormDTO;
@ -51,6 +52,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* 居民调动记录表 * 居民调动记录表
@ -173,12 +175,15 @@ public class IcUserTransferRecordServiceImpl extends BaseServiceImpl<IcUserTrans
changeRecordEntity.setRemark(formDTO.getRemark()); changeRecordEntity.setRemark(formDTO.getRemark());
icUserChangeRecordService.insert(changeRecordEntity); icUserChangeRecordService.insert(changeRecordEntity);
//6-2.变更明细【类别明细迁出组织的-1,迁入组织的1】 //6-2.变更明细【类别明细迁出组织的-1,迁入组织的1】
Result<List<IcResiCategoryWarnConfigDTO>> resultList = operCustomizeOpenFeignClient.categoryWarnConfigList(formDTO.getCustomerId()); IcResiCategoryStatsConfigDTO dto = new IcResiCategoryStatsConfigDTO();
if (!resultList.success()) { dto.setCustomerId(formDTO.getCustomerId());
throw new RuntimeException("人员调动,获取客户居民类别预警配置表数据失败"); Result<List<IcResiCategoryStatsConfigDTO>> categoryListResult = operCustomizeOpenFeignClient.getCategoryList(dto);
if (!categoryListResult.success()){
throw new RenException("人员调动,获取客户居民类别预警配置表数据失败");
} }
Map<String, String> map = icResiUserDao.getCategoryListMap(formDTO.getIcUserId()); List<String> columns = categoryListResult.getData().stream().map(IcResiCategoryStatsConfigDTO::getColumnName).collect(Collectors.toList());
List<IcUserChangeDetailedEntity> changeDetailedEntityList = saveChangeDetailed(resultList.getData(), map, changeRecordEntity.getId(), formDTO, resiUserDTO); Map<String, String> map = icResiUserDao.getCategoryListMap(columns, formDTO.getIcUserId());
List<IcUserChangeDetailedEntity> changeDetailedEntityList = saveChangeDetailed(categoryListResult.getData(), map, changeRecordEntity.getId(), formDTO, resiUserDTO);
icUserChangeDetailedService.insertBatch(changeDetailedEntityList); icUserChangeDetailedService.insertBatch(changeDetailedEntityList);
} }
@ -231,7 +236,7 @@ public class IcUserTransferRecordServiceImpl extends BaseServiceImpl<IcUserTrans
* @Author sun * @Author sun
* @Description 变更明细 * @Description 变更明细
**/ **/
private List<IcUserChangeDetailedEntity> saveChangeDetailed(List<IcResiCategoryWarnConfigDTO> configList, Map<String, String> map, String icUserChangeRecordId, IcResiUserTransferFormDTO formDTO, IcResiUserDTO resiUserDTO) { private List<IcUserChangeDetailedEntity> saveChangeDetailed(List<IcResiCategoryStatsConfigDTO> configList, Map<String, String> map, String icUserChangeRecordId, IcResiUserTransferFormDTO formDTO, IcResiUserDTO resiUserDTO) {
List<IcUserChangeDetailedEntity> list = new ArrayList<>(); List<IcUserChangeDetailedEntity> list = new ArrayList<>();
IcUserChangeDetailedEntity outEntity = null; IcUserChangeDetailedEntity outEntity = null;
IcUserChangeDetailedEntity inEntity = null; IcUserChangeDetailedEntity inEntity = null;
@ -246,7 +251,7 @@ public class IcUserTransferRecordServiceImpl extends BaseServiceImpl<IcUserTrans
throw new EpmetException(String.format("查询组织信息失败%s", formDTO.getNewAgencyId())); throw new EpmetException(String.format("查询组织信息失败%s", formDTO.getNewAgencyId()));
} }
} }
for (IcResiCategoryWarnConfigDTO cf : configList) { for (IcResiCategoryStatsConfigDTO cf : configList) {
if ("1".equals(map.get(cf.getColumnName()))) { if ("1".equals(map.get(cf.getColumnName()))) {
//迁出 //迁出
outEntity = new IcUserChangeDetailedEntity(); outEntity = new IcUserChangeDetailedEntity();

5
epmet-user/epmet-user-server/src/main/resources/bootstrap.yml

@ -79,6 +79,11 @@ spring:
namespace: @nacos.config.namespace@ namespace: @nacos.config.namespace@
group: @nacos.config.group@ group: @nacos.config.group@
file-extension: yaml file-extension: yaml
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
management: management:
endpoints: endpoints:
web: web:

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

@ -518,24 +518,9 @@
<select id="getCategoryListMap" resultType="java.util.Map"> <select id="getCategoryListMap" resultType="java.util.Map">
SELECT SELECT
IFNULL(is_kc,'0') IS_KC, <foreach collection="columns" separator="," item="c">
IFNULL(is_cj,'0') IS_CJ, IFNULL(`${c}`,'0') AS `${c}`
IFNULL(is_ylfn,'0') IS_YLFN, </foreach>
IFNULL(is_sn,'0') IS_SN,
IFNULL(is_special,'0') IS_SPECIAL,
IFNULL(is_volunteer,'0') IS_VOLUNTEER,
IFNULL(is_unemployed,'0') IS_UNEMPLOYED,
IFNULL(is_mb,'0') IS_MB,
IFNULL(is_sz,'0') IS_SZ,
IFNULL(is_sd,'0') IS_SD,
IFNULL(is_veterans,'0') IS_VETERANS,
IFNULL(is_ensure_house,'0') IS_ENSURE_HOUSE,
IFNULL(is_party,'0') IS_PARTY,
IFNULL(is_old_people,'0') IS_OLD_PEOPLE,
IFNULL(is_xfry,'0')IS_XFRY,
IFNULL(is_united_front,'0') IS_UNITED_FRONT,
IFNULL(is_db,'0') IS_DB,
IFNULL(is_dbh,'0') IS_DBH
FROM FROM
ic_resi_user ic_resi_user
WHERE WHERE
@ -590,25 +575,13 @@
iru.home_id HOME_ID, iru.home_id HOME_ID,
iru.name NAME, iru.name NAME,
iru.created_by CREATED_BY, iru.created_by CREATED_BY,
date_format(iru.created_time, '%Y-%m-%d %h:%i:%s') CREATED_TIME, date_format(iru.created_time, '%Y-%m-%d %h:%i:%s') CREATED_TIME
IFNULL(iru.is_kc,'0') IS_KC, <if test="columns != null and columns.size() > 0">
IFNULL(iru.is_cj,'0') IS_CJ, ,
IFNULL(iru.is_ylfn,'0') IS_YLFN, <foreach collection="columns" separator="," item="c">
IFNULL(iru.is_sn,'0') IS_SN, IFNULL(`${c}`,'0') AS `${c}`
IFNULL(iru.is_special,'0') IS_SPECIAL, </foreach>
IFNULL(iru.is_volunteer,'0') IS_VOLUNTEER, </if>
IFNULL(iru.is_unemployed,'0') IS_UNEMPLOYED,
IFNULL(iru.is_mb,'0') IS_MB,
IFNULL(iru.is_sz,'0') IS_SZ,
IFNULL(iru.is_sd,'0') IS_SD,
IFNULL(iru.is_veterans,'0') IS_VETERANS,
IFNULL(iru.is_ensure_house,'0') IS_ENSURE_HOUSE,
IFNULL(iru.is_party,'0') IS_PARTY,
IFNULL(iru.is_old_people,'0') IS_OLD_PEOPLE,
IFNULL(iru.is_xfry,'0')IS_XFRY,
IFNULL(iru.is_united_front,'0') IS_UNITED_FRONT,
IFNULL(iru.is_db,'0') IS_DB,
IFNULL(iru.is_dbh,'0') IS_DBH
FROM FROM
ic_resi_user iru ic_resi_user iru
<!-- 只查询在变更记录表不存在新增节点的居民 --> <!-- 只查询在变更记录表不存在新增节点的居民 -->

Loading…
Cancel
Save