From e9ff18cd60bff2ace704040d726544c16079833b Mon Sep 17 00:00:00 2001 From: jianjun Date: Sat, 12 Feb 2022 15:06:22 +0800 Subject: [PATCH 01/87] =?UTF-8?q?=E5=B1=85=E6=B0=91=E7=B1=BB=E5=88=AB?= =?UTF-8?q?=E5=88=86=E6=9E=90=E4=B8=AD=20=E4=BC=98=E5=8C=96=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/dao/IcResiUserDao.java | 99 ++++++++++++------- .../com/epmet/dao/IcStatsResiWarnDao.java | 5 +- .../impl/StatsResiWarnServiceImpl.java | 19 +++- .../main/resources/mapper/IcResiUserDao.xml | 30 ++++++ 4 files changed, 110 insertions(+), 43 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java index f1822e93f2..d7ec101574 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java @@ -27,6 +27,7 @@ import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; import java.util.List; import java.util.Map; import java.util.Set; @@ -52,121 +53,124 @@ public interface IcResiUserDao extends BaseDao { **/ void upTable(@Param("tableName") String tableName, @Param("id") String id, @Param("map") Map map); - List> selectListResiMap(@Param("customerId") String customerId, - @Param("formCode") String formCode, - @Param("conditions") List conditions, - @Param("resultColumns") List resultColumns, - @Param("subTables") List subTables, - @Param("currentStaffAgencyId")String currentStaffAgencyId, - @Param("staffOrgPath") String staffOrgPath, - @Param("resultTableName")String resultTableName); + List> selectListResiMap(@Param("customerId") String customerId, + @Param("formCode") String formCode, + @Param("conditions") List conditions, + @Param("resultColumns") List resultColumns, + @Param("subTables") List subTables, + @Param("currentStaffAgencyId") String currentStaffAgencyId, + @Param("staffOrgPath") String staffOrgPath, + @Param("resultTableName") String resultTableName); + /** * 查询主表 * * @param icResiUserId - * @return java.util.List> + * @return java.util.List> * @author yinzuomei * @date 2021/10/28 11:20 上午 */ List> selectListMapById(@Param("customerId") String customerId, - @Param("icResiUserId")String icResiUserId); + @Param("icResiUserId") String icResiUserId); /** * 根据ic_resi_user.id去查询各个子表记录,动态传入表名 * * @param icResiUserId * @param subTableName - * @return java.util.List> + * @return java.util.List> * @author yinzuomei * @date 2021/10/28 11:19 上午 */ - List> selectSubTableRecords(@Param("customerId")String customerId, + List> selectSubTableRecords(@Param("customerId") String customerId, @Param("icResiUserId") String icResiUserId, @Param("subTableName") String subTableName); int updateToDel(String icResiUserId); - int updateSubTableToDel(@Param("subTalbeName") String subTalbeName, @Param("icResiUserId")String icResiUserId); + int updateSubTableToDel(@Param("subTalbeName") String subTalbeName, @Param("icResiUserId") String icResiUserId); /** * 接口名称 * - * @param customerId 客户id + * @param customerId 客户id * @param resultTableName 获取哪个表的数据??? - * @param conditions 前端传入的查询入参 - * @return java.util.List> + * @param conditions 前端传入的查询入参 + * @return java.util.List> * @author yinzuomei * @date 2021/11/2 10:35 上午 */ - List> dynamicQuery(@Param("customerId")String customerId, - @Param("resultTableName")String resultTableName, - @Param("conditions") List conditions, - @Param("subTables") List subTables, - @Param("currentStaffAgencyId")String currentStaffAgencyId, - @Param("staffOrgPath")String staffOrgPath); + List> dynamicQuery(@Param("customerId") String customerId, + @Param("resultTableName") String resultTableName, + @Param("conditions") List conditions, + @Param("subTables") List subTables, + @Param("currentStaffAgencyId") String currentStaffAgencyId, + @Param("staffOrgPath") String staffOrgPath); /** - * @Description 查询个人信息 * @param userId + * @Description 查询个人信息 * @author zxc * @date 2021/11/3 10:28 上午 */ PersonDataResultDTO personData(@Param("userId") String userId); /** - * @Description 根据名字,组织查询人 * @param name * @param agencyId + * @Description 根据名字,组织查询人 * @author zxc * @date 2021/11/3 2:05 下午 */ - List searchByName(@Param("name")String name, @Param("agencyId")String agencyId,@Param("pageNo")Integer pageNo); + List searchByName(@Param("name") String name, @Param("agencyId") String agencyId, @Param("pageNo") Integer pageNo); Set selectUserDemandCode(String icResiUserId); - String selectCategoryNames(@Param("customerId") String customerId,@Param("codeSet") Set codeSet); + + String selectCategoryNames(@Param("customerId") String customerId, @Param("codeSet") Set codeSet); @MapKey("HOME_ID") Map> getHomeUserCategoryCount(@Param("buildId") String buildId); /** - * @Description 根据userId查询志愿者 * @param userId + * @Description 根据userId查询志愿者 * @author zxc * @date 2021/11/5 5:44 下午 */ - List selectVolunteerByUserId(@Param("userId")String userId); + List selectVolunteerByUserId(@Param("userId") String userId); /** - * @Description 查询人员类别 * @param columns + * @Description 查询人员类别 * @author zxc * @date 2021/11/8 1:50 下午 */ - Map selectPersonType(@Param("columns")List columns,@Param("customerId")String customerId, - @Param("tableName")String tableName,@Param("userId")String userId); + Map selectPersonType(@Param("columns") List columns, @Param("customerId") String customerId, + @Param("tableName") String tableName, @Param("userId") String userId); /** * @Author sun * @Description 查询居民信息 **/ IcResiUserDTO getResiUser(IcResiUserDTO dto); + /** - * * @param agencyId * @param gridId * @param name * @return */ List selectDemandUsers(@Param("agencyId") String agencyId, - @Param("gridId")String gridId, - @Param("name")String name); + @Param("gridId") String gridId, + @Param("name") String name); - IcResiUserDTO selectIdByIdCard(@Param("customerId") String customerId, - @Param("idNum")String idNum, - @Param("icResiUserId")String icResiUserId); + IcResiUserDTO selectIdByIdCard(@Param("customerId") String customerId, + @Param("idNum") String idNum, + @Param("icResiUserId") String icResiUserId); /** * 获取居民名称,家属名称和id + * * @param isResiUserId * @return */ @@ -183,6 +187,7 @@ public interface IcResiUserDao extends BaseDao { /** * 组织内党员年龄范围统计 + * * @Param orgType * @Param orgId * @Return {@link List< OptionDataResultDTO>} @@ -193,6 +198,7 @@ public interface IcResiUserDao extends BaseDao { /** * 获取年龄范围内党员列表 + * * @Param orgType * @Param orgId * @Param min @@ -207,6 +213,7 @@ public interface IcResiUserDao extends BaseDao { /** * 党员文化程度统计 + * * @Param orgType * @Param orgId * @Return {@link List< OptionDataResultDTO>} @@ -217,6 +224,7 @@ public interface IcResiUserDao extends BaseDao { /** * 按教育程度获取党员列表 + * * @Param orgType * @Param orgId * @Param code @@ -225,7 +233,22 @@ public interface IcResiUserDao extends BaseDao { * @Date 2021/12/10 17:24 */ List getPartyMemberEducationList(@Param("orgType") String orgType, @Param("orgId") String orgId, - @Param("code") String code); + @Param("code") String code); List listIcResiInfosByUserIds(@Param("userIds") List userIds); + + /** + * desc: 获取数据分析列中的 各类居民数据 + * + * @param customerId + * @param tableName + * @param columnList + * @param id 非必填 leve有值时 必填 + * @param level 非必填 + * @return java.util.Map 字段名:数量 + * @author LiuJanJun + * @date 2022/2/12 3:03 下午 + */ + Map getDataAnalyseCount(@Param("customerId") String customerId, @Param("tableName") String tableName, + @Param("columnList") List columnList, @Param("id") String id, @Param("level") String level); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcStatsResiWarnDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcStatsResiWarnDao.java index ef9fac802c..b7ff80da49 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcStatsResiWarnDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcStatsResiWarnDao.java @@ -18,7 +18,6 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; -import com.epmet.dto.IcResiCategoryStatsConfigDTO; import com.epmet.entity.IcStatsResiWarnEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -41,7 +40,7 @@ public interface IcStatsResiWarnDao extends BaseDao { @Param("buildingIdList") List buildingIdList, @Param("tableName") String tableName, @Param("columnName") String columnName); - + @Deprecated Integer countListByLevelAndCol( @Param("customerId") String customerId, @Param("tableName") String tableName, @@ -58,4 +57,4 @@ public interface IcStatsResiWarnDao extends BaseDao { @Param("columnName") String columnName, @Param("icStatsResiWarn") IcStatsResiWarnEntity icStatsResiWarn); -} \ No newline at end of file +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StatsResiWarnServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StatsResiWarnServiceImpl.java index 3b12bcd10d..45e03e07aa 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StatsResiWarnServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StatsResiWarnServiceImpl.java @@ -2,6 +2,7 @@ package com.epmet.service.impl; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; @@ -24,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -178,6 +180,18 @@ public class StatsResiWarnServiceImpl implements StatsResiWarnService { List icResiCategoryStatsConfigDTOList = statsResult.getData(); //获取tableName 和columnName List result = new ArrayList<>(); + //tableName List + Map> paramMap = new HashMap<>(); + icResiCategoryStatsConfigDTOList.forEach(config->{ + List list = paramMap.getOrDefault(config.getTableName(), new ArrayList<>()); + list.add(config.getColumnName()); + paramMap.put(config.getTableName(),list); + }); + Map> tableColumnCountMap = new HashMap<>(); + paramMap.forEach((tableName,columnList) ->{ + Map countMap = icResiUserDao.getDataAnalyseCount(customerId,tableName,columnList, id,level); + tableColumnCountMap.put(tableName,countMap); + }); icResiCategoryStatsConfigDTOList.forEach(item->{ IcStatsResiResultDTO resultDTO = new IcStatsResiResultDTO(); resultDTO.setId(item.getId()); @@ -186,8 +200,9 @@ public class StatsResiWarnServiceImpl implements StatsResiWarnService { resultDTO.setHouseShowIcon(item.getHouseShowIcon()); resultDTO.setManagementIcon(item.getManagementIcon()); //根据id ,level 获取count - Integer count = icStatsResiWarnDao.countListByLevelAndCol(customerId,item.getTableName(),item.getColumnName(),id,level); - resultDTO.setCount(count); + //Integer count = icStatsResiWarnDao.countListByLevelAndCol(customerId,item.getTableName(),item.getColumnName(),id,level); + Map orDefault = tableColumnCountMap.getOrDefault(item.getTableName(), new HashMap<>()); + resultDTO.setCount(orDefault.getOrDefault(item.getColumnName(), NumConstant.ZERO_DECIMAL).intValue()); result.add(resultDTO); }); return result; diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml index 6b07136f1c..a2785ada74 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml @@ -506,4 +506,34 @@ #{userId} + From fe3f5c682a0f6d48cc40986dd0ed12780a7474b4 Mon Sep 17 00:00:00 2001 From: jianjun Date: Sat, 12 Feb 2022 15:29:28 +0800 Subject: [PATCH 02/87] =?UTF-8?q?=E5=B1=85=E6=B0=91=E7=B1=BB=E5=88=AB?= =?UTF-8?q?=E5=88=86=E6=9E=90=E4=B8=AD=20=E4=BC=98=E5=8C=96=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=20=E7=A9=BA=E6=8C=87=E9=92=88=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/service/impl/StatsResiWarnServiceImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StatsResiWarnServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StatsResiWarnServiceImpl.java index 45e03e07aa..275c126c5a 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StatsResiWarnServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StatsResiWarnServiceImpl.java @@ -190,7 +190,9 @@ public class StatsResiWarnServiceImpl implements StatsResiWarnService { Map> tableColumnCountMap = new HashMap<>(); paramMap.forEach((tableName,columnList) ->{ Map countMap = icResiUserDao.getDataAnalyseCount(customerId,tableName,columnList, id,level); - tableColumnCountMap.put(tableName,countMap); + if (countMap != null){ + tableColumnCountMap.put(tableName,countMap); + } }); icResiCategoryStatsConfigDTOList.forEach(item->{ IcStatsResiResultDTO resultDTO = new IcStatsResiResultDTO(); From 4b5f6d65aba283281908fb52dc1d0f185648848c Mon Sep 17 00:00:00 2001 From: jianjun Date: Sat, 12 Feb 2022 15:52:22 +0800 Subject: [PATCH 03/87] =?UTF-8?q?=E5=B1=85=E6=B0=91=E7=B1=BB=E5=88=AB?= =?UTF-8?q?=E5=88=86=E6=9E=90=E4=B8=AD=20=E4=BC=98=E5=8C=96=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=20pids=20like=20=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/IcResiUserDao.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml index a2785ada74..7cbaa98498 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml @@ -515,7 +515,7 @@ WHERE 1=1 - AND (CONCAT(PIDS, ':', agency_id) like CONCAT(#{id},':%')) + AND (CONCAT(PIDS, agency_id) like CONCAT(#{id},'%')) AND GRID_ID = #{id} From 2edc1236efe0c7fbc8ad4f4fd86cee3c5d46e66e Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Sat, 12 Feb 2022 16:15:09 +0800 Subject: [PATCH 04/87] =?UTF-8?q?=E9=A3=8E=E9=87=87=E5=88=86=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IcPartymemberStyleCategoryDictDTO.java | 99 +++++++++++++ .../form/AddStyleCategoryFormDTO.java | 36 +++++ .../form/StyleCategoryCommonFormDTO.java | 15 ++ .../form/UpdateStyleCategoryFormDTO.java | 30 ++++ .../result/StyleCategoryDictResDTO.java | 27 ++++ ...artymemberStyleCategoryDictController.java | 87 +++++++++++ .../IcPartymemberStyleCategoryDictDao.java | 20 +++ .../dao/IcPartymemberStyleDao.java | 4 +- .../IcPartymemberStyleCategoryDictEntity.java | 66 +++++++++ ...IcPartymemberStyleCategoryDictService.java | 47 ++++++ ...rtymemberStyleCategoryDictServiceImpl.java | 138 ++++++++++++++++++ .../db/migration/V0.0.2__style_dict.sql | 23 +++ .../IcPartymemberStyleCategoryDictDao.xml | 18 +++ .../partymember/IcPartymemberStyleDao.xml | 6 + 14 files changed, 615 insertions(+), 1 deletion(-) create mode 100644 epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/IcPartymemberStyleCategoryDictDTO.java create mode 100644 epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/AddStyleCategoryFormDTO.java create mode 100644 epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/StyleCategoryCommonFormDTO.java create mode 100644 epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/UpdateStyleCategoryFormDTO.java create mode 100644 epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/result/StyleCategoryDictResDTO.java create mode 100644 epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleCategoryDictController.java create mode 100644 epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartymemberStyleCategoryDictDao.java create mode 100644 epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/entity/IcPartymemberStyleCategoryDictEntity.java create mode 100644 epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleCategoryDictService.java create mode 100644 epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleCategoryDictServiceImpl.java create mode 100644 epmet-module/resi-partymember/resi-partymember-server/src/main/resources/db/migration/V0.0.2__style_dict.sql create mode 100644 epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartymemberStyleCategoryDictDao.xml diff --git a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/IcPartymemberStyleCategoryDictDTO.java b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/IcPartymemberStyleCategoryDictDTO.java new file mode 100644 index 0000000000..a93b2ec63b --- /dev/null +++ b/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; + +} \ No newline at end of file diff --git a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/AddStyleCategoryFormDTO.java b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/AddStyleCategoryFormDTO.java new file mode 100644 index 0000000000..729b9fb731 --- /dev/null +++ b/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; + +} diff --git a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/StyleCategoryCommonFormDTO.java b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/StyleCategoryCommonFormDTO.java new file mode 100644 index 0000000000..a575b8a6dc --- /dev/null +++ b/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; +} diff --git a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/UpdateStyleCategoryFormDTO.java b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/UpdateStyleCategoryFormDTO.java new file mode 100644 index 0000000000..0eae2aa4af --- /dev/null +++ b/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; +} diff --git a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/result/StyleCategoryDictResDTO.java b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/result/StyleCategoryDictResDTO.java new file mode 100644 index 0000000000..3c8767503d --- /dev/null +++ b/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; + +} diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleCategoryDictController.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleCategoryDictController.java new file mode 100644 index 0000000000..f591c3570c --- /dev/null +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleCategoryDictController.java @@ -0,0 +1,87 @@ +package com.epmet.modules.partymember.controller; + +import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.page.PageData; +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.commons.tools.validator.group.AddGroup; +import com.epmet.commons.tools.validator.group.DefaultGroup; +import com.epmet.commons.tools.validator.group.UpdateGroup; +import com.epmet.dto.IcPartymemberStyleCategoryDictDTO; +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.UpdateStyleCategoryFormDTO; +import com.epmet.resi.partymember.dto.partymember.result.StyleCategoryDictResDTO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + + +/** + * 党员风采分类字典表 + * + * @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(@RequestBody StyleCategoryCommonFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO,StyleCategoryCommonFormDTO.AddUserInternalGroup.class); + return new Result>().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(); + } + +} \ No newline at end of file diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartymemberStyleCategoryDictDao.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartymemberStyleCategoryDictDao.java new file mode 100644 index 0000000000..cc768ad36c --- /dev/null +++ b/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 { + + Integer getMaxCategoryCode(String customerId); + + int updateToDel(@Param("categoryId") String categoryId,@Param("userId") String userId); +} \ No newline at end of file diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartymemberStyleDao.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartymemberStyleDao.java index de5966a068..6566bb5722 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartymemberStyleDao.java +++ b/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.modules.partymember.entity.IcPartymemberStyleEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * 党员风采 @@ -29,5 +30,6 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface IcPartymemberStyleDao extends BaseDao { - + + int clearCategry(@Param("categoryId") String categoryId, @Param("userId")String userId); } \ No newline at end of file diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/entity/IcPartymemberStyleCategoryDictEntity.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/entity/IcPartymemberStyleCategoryDictEntity.java new file mode 100644 index 0000000000..73c469dc82 --- /dev/null +++ b/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; + +} diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleCategoryDictService.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleCategoryDictService.java new file mode 100644 index 0000000000..08a61ddc69 --- /dev/null +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleCategoryDictService.java @@ -0,0 +1,47 @@ +package com.epmet.modules.partymember.service; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.commons.tools.page.PageData; +import com.epmet.dto.IcPartymemberStyleCategoryDictDTO; +import com.epmet.modules.partymember.entity.IcPartymemberStyleCategoryDictEntity; +import com.epmet.resi.partymember.dto.partymember.form.AddStyleCategoryFormDTO; +import com.epmet.resi.partymember.dto.partymember.form.UpdateStyleCategoryFormDTO; +import com.epmet.resi.partymember.dto.partymember.result.StyleCategoryDictResDTO; + +import java.util.List; +import java.util.Map; + +/** + * 党员风采分类字典表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-02-12 + */ +public interface IcPartymemberStyleCategoryDictService extends BaseService { + + /** + * 【党员风采分类】列表查询 + * @param customerId + * @return + */ + List queryList(String customerId); + + /** + * 党员风采分类】添加或修改分类 + * @param formDTO + */ + void addOrUpdate(AddStyleCategoryFormDTO formDTO); + + /** + * 删除的分类如果已经使用过,清空已经使用的记录,修改时需要重新选择, + * @param formDTO + */ + void delete(UpdateStyleCategoryFormDTO formDTO); + + /** + * 【党员风采分类】启用或禁用 + * 新增党员风采时不显示已经禁用的分类,已经使用了禁用的分类正常显示, + * @param formDTO + */ + void updateStatus(UpdateStyleCategoryFormDTO formDTO); +} \ No newline at end of file diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleCategoryDictServiceImpl.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleCategoryDictServiceImpl.java new file mode 100644 index 0000000000..6889bb4a30 --- /dev/null +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleCategoryDictServiceImpl.java @@ -0,0 +1,138 @@ +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.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 implements IcPartymemberStyleCategoryDictService { + + @Autowired + private IcPartymemberStyleDao icPartymemberStyleDao; + + /** + * 【党员风采分类】列表查询 + * + * @param customerId + * @return + */ + @Override + public List queryList(String customerId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(IcPartymemberStyleCategoryDictEntity::getCustomerId, customerId); + queryWrapper.orderByDesc(IcPartymemberStyleCategoryDictEntity::getSort); + List list = baseDao.selectList(queryWrapper); + List 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 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 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 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 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); + } + +} \ No newline at end of file diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/db/migration/V0.0.2__style_dict.sql b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/db/migration/V0.0.2__style_dict.sql new file mode 100644 index 0000000000..1881277a69 --- /dev/null +++ b/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; diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartymemberStyleCategoryDictDao.xml b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartymemberStyleCategoryDictDao.xml new file mode 100644 index 0000000000..27d838e556 --- /dev/null +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartymemberStyleCategoryDictDao.xml @@ -0,0 +1,18 @@ + + + + + + + + + update ic_partymember_style_category_dict set del_flag='1',UPDATED_BY=#{userId},UPDATED_TIME=now() + where id=#{categoryId} + + \ No newline at end of file diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartymemberStyleDao.xml b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartymemberStyleDao.xml index a8375fe173..2fd2b45dfc 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartymemberStyleDao.xml +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartymemberStyleDao.xml @@ -18,5 +18,11 @@ + + update ic_partymember_style + set CATEGORY_ID='',CATEGORY_CODE='',UPDATED_BY=#{userId},UPDATED_TIME=now() + where del_flag='0' + and CATEGORY_ID=#{categoryId} + \ No newline at end of file From 691b65179d5043ac2f8dd8fd3ca42eaef312bdef Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Sat, 12 Feb 2022 16:38:11 +0800 Subject: [PATCH 05/87] =?UTF-8?q?=E5=B0=8F=E5=8C=BA=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/dto/form/ImportInfoFormDTO.java | 34 ++++ .../dto/result/InfoByNamesResultDTO.java | 31 ++++ .../controller/IcNeighborHoodController.java | 38 +++- .../java/com/epmet/dao/CustomerGridDao.java | 9 + .../java/com/epmet/dao/IcNeighborHoodDao.java | 10 + .../epmet/entity/IcNeighborHoodEntity.java | 3 + .../com/epmet/excel/IcNeighborHoodExcel.java | 10 + .../epmet/service/IcNeighborHoodService.java | 13 ++ .../impl/IcNeighborHoodServiceImpl.java | 173 +++++++++++++++++- .../main/resources/mapper/CustomerGridDao.xml | 19 ++ .../resources/mapper/IcNeighborHoodDao.xml | 14 ++ 11 files changed, 342 insertions(+), 12 deletions(-) create mode 100644 epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/ImportInfoFormDTO.java create mode 100644 epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/InfoByNamesResultDTO.java diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/ImportInfoFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/ImportInfoFormDTO.java new file mode 100644 index 0000000000..33ad356bb1 --- /dev/null +++ b/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; +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/InfoByNamesResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/InfoByNamesResultDTO.java new file mode 100644 index 0000000000..00e92b3ece --- /dev/null +++ b/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; + +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java index fcd64c4658..806faa2240 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java +++ b/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.UpdateGroup; import com.epmet.dto.IcNeighborHoodDTO; +import com.epmet.dto.form.ImportInfoFormDTO; import com.epmet.service.IcNeighborHoodService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.List; import java.util.Map; @@ -85,6 +88,18 @@ public class IcNeighborHoodController { return new Result(); } + /** + * @Description 通过ID查询小区信息 + * @Param ids + * @Return {@link Result< List< IcNeighborHoodDTO>>} + * @Author zhaoqifeng + * @Date 2021/11/8 10:46 + */ + @PostMapping("getlistbyids") + public Result> getListByIds(@RequestBody List ids) { + return new Result>().ok(icNeighborHoodService.getListByIds(ids)); + } + /** * @Description 获取网格下小区列表 * @Param dto @@ -98,15 +113,22 @@ public class IcNeighborHoodController { } /** - * @Description 通过ID查询小区信息 - * @Param ids - * @Return {@link Result< List< IcNeighborHoodDTO>>} - * @Author zhaoqifeng - * @Date 2021/11/8 10:46 + * @Description 小区信息导入 + * @param tokenDTO + * @param file + * @author zxc + * @date 2022/2/12 10:47 上午 */ - @PostMapping("getlistbyids") - public Result> getListByIds(@RequestBody List ids) { - return new Result>().ok(icNeighborHoodService.getListByIds(ids)); + @PostMapping("neighborhoodimport") + public Result neighborhoodImport(@LoginUser TokenDto tokenDTO, @RequestParam("file") MultipartFile file, + @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)); } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerGridDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerGridDao.java index 7eef403d38..3dcedd5c73 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerGridDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerGridDao.java @@ -365,4 +365,13 @@ public interface CustomerGridDao extends BaseDao { @Param("operateUserId") String operateUserId); List 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 selectGridInfoByNames(@Param("names")List names,@Param("customerId")String customerId); + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodDao.java index 6e5d0487eb..3203e96854 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodDao.java @@ -51,4 +51,14 @@ public interface IcNeighborHoodDao extends BaseDao { Integer checkNameUq(@Param("customerId") String customerId, @Param("neighborHoodName")String neighborHoodName, @Param("neighborId")String neighborId); + + /** + * @Description 根据小区名查询存在小区 + * @param names + * @param customerId + * @author zxc + * @date 2022/2/12 2:59 下午 + */ + List selectNeighborhoodNameByNames(@Param("names")List names,@Param("customerId") String customerId); + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcNeighborHoodEntity.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcNeighborHoodEntity.java index 62489898d2..42dd382d19 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcNeighborHoodEntity.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcNeighborHoodEntity.java @@ -17,6 +17,7 @@ package com.epmet.entity; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.epmet.commons.mybatis.entity.BaseEpmetEntity; @@ -98,4 +99,6 @@ public class IcNeighborHoodEntity extends BaseEpmetEntity { */ private String location; + @TableField(exist = false) + private String gridName; } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcNeighborHoodExcel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcNeighborHoodExcel.java index 72c57047e0..661d166d53 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcNeighborHoodExcel.java +++ b/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.UpdateGroup; import com.epmet.util.ExcelVerifyInfo; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import org.hibernate.validator.constraints.Length; @@ -121,4 +122,13 @@ public class IcNeighborHoodExcel extends ExcelVerifyInfo implements Serializable @Length(max=500,message = "不能超过500个字") private String remark; + @JsonIgnore + private Boolean status = false; + + @JsonIgnore + private Boolean existNameStatus = false; + + @JsonIgnore + private Boolean agencyNameStatus = false; + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java index 3592d82175..fa4305de08 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java +++ b/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.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.Result; import com.epmet.dto.IcNeighborHoodDTO; +import com.epmet.dto.form.ImportInfoFormDTO; import com.epmet.entity.IcNeighborHoodEntity; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.List; import java.util.Map; @@ -112,4 +116,13 @@ public interface IcNeighborHoodService extends BaseService * @Date 2021/11/8 10:45 */ List getListByIds(List ids); + + /** + * @Description 小区信息导入 + * @param formDTO + * @param file + * @author zxc + * @date 2022/2/12 11:11 上午 + */ + Result neighborhoodImport(ImportInfoFormDTO formDTO, MultipartFile file) throws IOException; } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java index 3d5b6fa96b..f8f4bf189e 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java +++ b/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; +import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; 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.OptionResultDTO; +import com.epmet.commons.tools.exception.EpmetException; 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.bean.AgencyInfoCache; +import com.epmet.commons.tools.redis.common.bean.GridInfoCache; 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.dto.IcNeighborHoodDTO; +import com.epmet.dto.form.ImportInfoFormDTO; +import com.epmet.dto.result.InfoByNamesResultDTO; import com.epmet.entity.IcNeighborHoodEntity; +import com.epmet.excel.IcBuildingExcel; +import com.epmet.excel.IcNeighborHoodExcel; import com.epmet.service.IcNeighborHoodService; +import com.epmet.util.ExcelPoiUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.ListUtils; 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 org.springframework.web.multipart.MultipartFile; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Map; +import java.io.IOException; +import java.util.*; import java.util.stream.Collectors; /** @@ -53,6 +68,8 @@ import java.util.stream.Collectors; @Service public class IcNeighborHoodServiceImpl extends BaseServiceImpl implements IcNeighborHoodService { + @Autowired + private CustomerGridDao customerGridDao; @Override public PageData page(Map params) { @@ -160,4 +177,152 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl importResult = ExcelPoiUtils.importExcelMore(file, 0, 1, IcNeighborHoodExcel.class); + List failList = importResult.getFailList(); + //存放错误数据行号 + List numList = new ArrayList<>(); + if(CollectionUtils.isNotEmpty(failList)){ + for ( IcNeighborHoodExcel entity : failList) { + //打印失败的行 和失败的信息 + log.error("第{}行,{}",entity.getRowNum(),entity.getErrorMsg()); + numList.add(entity.getRowNum()); + } + } + List 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 result){ + if (CollectionUtils.isEmpty(result)){ + return new Result().error(9999,"excel表格内没有数据"); + } + List nums = new ArrayList<>(); + List gridNames = result.stream().map(m -> m.getGridName()).collect(Collectors.toList()); + // 1. 查询数据网格是否存在 + List 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())){ + r.setStatus(true); + break; + } + } + }); + Map> groupStatus = result.stream().collect(Collectors.groupingBy(IcNeighborHoodExcel::getStatus)); + // 只获取能查询到的网格 + List neighborHoods = groupStatus.get(true); + // 2. 查询组织选中组织下存在的小区 + List 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)){ + r.setExistNameStatus(true); + break; + } + } + }); + Map> groupByExistName = neighborHoods.stream().collect(Collectors.groupingBy(IcNeighborHoodExcel::getExistNameStatus)); + // 获取需要插入的数据 + List 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())){ + 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())){ + n.setAgencyNameStatus(true); + } + }); + } + Map> groupByAgencyNameStatus = needInsert.stream().collect(Collectors.groupingBy(IcNeighborHoodExcel::getAgencyNameStatus)); + List 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("、"))+"行未成功!"); + } + List entities = ConvertUtils.sourceToTarget(finalNeedInsert, 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){ + 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 entities){ + List> partition = ListUtils.partition(entities, NumConstant.ONE_HUNDRED); + partition.forEach(p -> { + insertBatch(p); + }); + } + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerGridDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerGridDao.xml index a70cf1d9b6..623ca76ed4 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerGridDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerGridDao.xml @@ -806,4 +806,23 @@ + + + diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodDao.xml index 73c23350d7..36daaf0d27 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodDao.xml @@ -214,4 +214,18 @@ and a.id !=#{neighborId} + + + From 420203339cdebfdd68065170750e5ae1fe86829d Mon Sep 17 00:00:00 2001 From: jianjun Date: Sat, 12 Feb 2022 16:51:28 +0800 Subject: [PATCH 06/87] =?UTF-8?q?like=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/IcResiUserDao.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml index 7cbaa98498..7441f98ec4 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml @@ -515,7 +515,7 @@ WHERE 1=1 - AND (CONCAT(PIDS, agency_id) like CONCAT(#{id},'%')) + AND (CONCAT(PIDS,':', agency_id) like CONCAT('%',#{id},'%')) AND GRID_ID = #{id} From 1118785559bc4028210a44e29e54df8334ee1bae Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Sat, 12 Feb 2022 16:58:39 +0800 Subject: [PATCH 07/87] =?UTF-8?q?=E5=85=9A=E5=91=98=E9=A3=8E=E9=87=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../partymember/IcPartymemberStyleDTO.java | 6 +++- .../form/PartyMemberStyleFormDTO.java | 1 + .../form/StyleSelectListFormDTO.java | 21 ++++++++++++ ...artymemberStyleCategoryDictController.java | 28 ++++++++++++---- .../IcPartymemberStyleController.java | 1 + .../entity/IcPartymemberStyleEntity.java | 3 +- .../excel/IcPartymemberStyleExcel.java | 3 ++ .../excel/IcPartymemberStyleImportExcel.java | 3 ++ ...IcPartymemberStyleCategoryDictService.java | 13 ++++++-- ...rtymemberStyleCategoryDictServiceImpl.java | 33 +++++++++++++++++++ .../impl/IcPartymemberStyleServiceImpl.java | 10 ++++++ 11 files changed, 110 insertions(+), 12 deletions(-) create mode 100644 epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/StyleSelectListFormDTO.java diff --git a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/IcPartymemberStyleDTO.java b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/IcPartymemberStyleDTO.java index 1bfdc10d0b..7c9d5c314f 100644 --- a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/IcPartymemberStyleDTO.java +++ b/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 List imageList; - + /** + * 分类名称 + */ + private String categoryName; + private String categoryId; } \ No newline at end of file diff --git a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/PartyMemberStyleFormDTO.java b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/PartyMemberStyleFormDTO.java index 6cedb15c89..40edfb678a 100644 --- a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/PartyMemberStyleFormDTO.java +++ b/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 Integer pageNo; private Integer pageSize; + private String categoryId; } diff --git a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/StyleSelectListFormDTO.java b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/StyleSelectListFormDTO.java new file mode 100644 index 0000000000..ee39dcbf74 --- /dev/null +++ b/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; +} diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleCategoryDictController.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleCategoryDictController.java index f591c3570c..e1212d5e56 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleCategoryDictController.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleCategoryDictController.java @@ -1,24 +1,22 @@ package com.epmet.modules.partymember.controller; import com.epmet.commons.tools.annotation.LoginUser; -import com.epmet.commons.tools.page.PageData; 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.commons.tools.validator.group.AddGroup; -import com.epmet.commons.tools.validator.group.DefaultGroup; -import com.epmet.commons.tools.validator.group.UpdateGroup; -import com.epmet.dto.IcPartymemberStyleCategoryDictDTO; 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.*; +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; -import java.util.Map; /** @@ -84,4 +82,20 @@ public class IcPartymemberStyleCategoryDictController { return new Result(); } + /** + * 党员风采-分类下拉框 + * 查询条件中:展示所有未删除的 + * 新增活修改党员风采:展示可用的 + * + * @param formDTO + * @return + */ + @PostMapping("select-list") + public Result> list(@RequestBody StyleSelectListFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, StyleSelectListFormDTO.AddUserInternalGroup.class); + return new Result>().ok(icPartymemberStyleCategoryDictService.selectList(formDTO)); + } + + + } \ No newline at end of file diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java index cadf703b2c..15f4c03cb3 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java +++ b/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.setName(item.getName()); excel.setMainDeed(item.getMainDeed()); + excel.setCategoryName(item.getCategoryName()); return excel; }).collect(Collectors.toList()); } diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/entity/IcPartymemberStyleEntity.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/entity/IcPartymemberStyleEntity.java index ad3e4afe9e..24402da193 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/entity/IcPartymemberStyleEntity.java +++ b/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 categoryId; + private String categoryCode; } diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/excel/IcPartymemberStyleExcel.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/excel/IcPartymemberStyleExcel.java index a64decdd9c..108a49b1cf 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/excel/IcPartymemberStyleExcel.java +++ b/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 = "主要事迹") private String mainDeed; + + @Excel(name="所属分类") + private String categoryName; } \ No newline at end of file diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/excel/IcPartymemberStyleImportExcel.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/excel/IcPartymemberStyleImportExcel.java index fa48ae5b34..5dd13cc84f 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/excel/IcPartymemberStyleImportExcel.java +++ b/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 = "照片") private String imageUrl; + + @Excel(name="所属分类") + private String categoryName; } \ No newline at end of file diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleCategoryDictService.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleCategoryDictService.java index 08a61ddc69..894d22bbf9 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleCategoryDictService.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleCategoryDictService.java @@ -1,15 +1,13 @@ package com.epmet.modules.partymember.service; import com.epmet.commons.mybatis.service.BaseService; -import com.epmet.commons.tools.page.PageData; -import com.epmet.dto.IcPartymemberStyleCategoryDictDTO; 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; -import java.util.Map; /** * 党员风采分类字典表 @@ -44,4 +42,13 @@ public interface IcPartymemberStyleCategoryDictService extends BaseService selectList(StyleSelectListFormDTO formDTO); + + IcPartymemberStyleCategoryDictEntity get(String categoryId); } \ No newline at end of file diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleCategoryDictServiceImpl.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleCategoryDictServiceImpl.java index 6889bb4a30..e1b7880dec 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleCategoryDictServiceImpl.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleCategoryDictServiceImpl.java @@ -11,6 +11,7 @@ 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; @@ -135,4 +136,36 @@ public class IcPartymemberStyleCategoryDictServiceImpl extends BaseServiceImpl selectList(StyleSelectListFormDTO formDTO) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(IcPartymemberStyleCategoryDictEntity::getCustomerId, formDTO.getCustomerId()); + if("addorupdate".equals(formDTO.getType())){ + //查询可用的 + queryWrapper.eq(IcPartymemberStyleCategoryDictEntity::getBeDisabled,false); + } + queryWrapper.orderByAsc(IcPartymemberStyleCategoryDictEntity::getSort); + List list = baseDao.selectList(queryWrapper); + List 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); + } + } \ No newline at end of file diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java index f02233a520..f4eb51a073 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java +++ b/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.feign.GovOrgOpenFeignClient; 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.IcPartymemberStyleImageEntity; 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.IcPartymemberStyleService; import com.epmet.resi.partymember.dto.partymember.IcPartymemberStyleDTO; @@ -76,6 +78,8 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl page(Map params) { @@ -105,6 +109,8 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl list = baseDao.selectList(wrapper); PageInfo pageInfo = new PageInfo<>(list); List dtoList = ConvertUtils.sourceToTarget(list, IcPartymemberStyleDTO.class); @@ -200,6 +207,8 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl(dtoList, pageInfo.getTotal()); @@ -265,6 +274,7 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl { From 4236964b3777802c5cf699d38256f454c12b195a Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Sat, 12 Feb 2022 17:29:52 +0800 Subject: [PATCH 08/87] =?UTF-8?q?=E5=B0=8F=E5=8C=BA=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E6=8E=92=E9=99=A4=E9=87=8D=E5=A4=8D=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/excel/IcNeighborHoodExcel.java | 3 +++ .../impl/IcNeighborHoodServiceImpl.java | 25 +++++++++++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcNeighborHoodExcel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcNeighborHoodExcel.java index 661d166d53..b996da1bf2 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcNeighborHoodExcel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcNeighborHoodExcel.java @@ -131,4 +131,7 @@ public class IcNeighborHoodExcel extends ExcelVerifyInfo implements Serializable @JsonIgnore private Boolean agencyNameStatus = false; + @JsonIgnore + private Boolean reStatus = false; + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java index f8f4bf189e..763406f059 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java @@ -231,6 +231,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl { for (InfoByNamesResultDTO g : gridInfos) { if (r.getGridName().equals(g.getGridName())){ + // 能查询出网格,变为true r.setStatus(true); break; } @@ -245,6 +246,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl { for (String s : existNames) { if (r.getNeighborHoodName().equals(s)){ + // 数据库已存在此小区名变为true r.setExistNameStatus(true); break; } @@ -267,6 +269,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl { if (agencyInfo.getOrganizationName().equals(n.getAgencyName())){ + // 所属组织名一样变为true n.setAgencyNameStatus(true); } }); @@ -277,6 +280,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl { if (gridInfo.getGridName().equals(n.getGridName())){ + //网格名一样变为true n.setAgencyNameStatus(true); } }); @@ -290,7 +294,24 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl entities = ConvertUtils.sourceToTarget(finalNeedInsert, IcNeighborHoodEntity.class); + Map 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 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 entities = ConvertUtils.sourceToTarget(realFinalResult, IcNeighborHoodEntity.class); entities.forEach(e -> { for (InfoByNamesResultDTO g : gridInfos) { if (e.getGridName().equals(g.getGridName())){ @@ -306,7 +327,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl Date: Sun, 13 Feb 2022 10:12:08 +0800 Subject: [PATCH 09/87] =?UTF-8?q?=E5=B0=8F=E5=8C=BA=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E5=85=B3=E8=81=94=E7=89=A9=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/NeighborHoodAndManagementDTO.java | 42 ++++++++++++ .../epmet/dao/IcPropertyManagementDao.java | 20 ++++++ .../epmet/entity/IcNeighborHoodEntity.java | 3 + .../impl/IcNeighborHoodServiceImpl.java | 68 +++++++++++++++++-- .../mapper/IcPropertyManagementDao.xml | 25 +++++++ 5 files changed, 154 insertions(+), 4 deletions(-) create mode 100644 epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/NeighborHoodAndManagementDTO.java diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/NeighborHoodAndManagementDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/NeighborHoodAndManagementDTO.java new file mode 100644 index 0000000000..babc828970 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/NeighborHoodAndManagementDTO.java @@ -0,0 +1,42 @@ +package com.epmet.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2022/2/13 8:51 上午 + * @DESC + */ +@Data +public class NeighborHoodAndManagementDTO implements Serializable { + + private static final long serialVersionUID = -7500263771019585308L; + + private String gridId; + + /** + * 小区ID + */ + private String id; + + private String gridName; + + /** + * 小区名字 + */ + private String neighborHoodName; + private String neighborHoodId; + + /** + * 物业ID + */ + private String propertyId; + + /** + * 物业名字 + */ + private String propertyName; + +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcPropertyManagementDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcPropertyManagementDao.java index b79a5cc3e6..442f3d0514 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcPropertyManagementDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcPropertyManagementDao.java @@ -20,6 +20,10 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.entity.IcPropertyManagementEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; /** * 物业表 @@ -31,4 +35,20 @@ import org.apache.ibatis.annotations.Mapper; public interface IcPropertyManagementDao extends BaseDao { IcPropertyManagementEntity selectByName(String name); + + /** + * @Description 根据物业名查询已存在的物业名 + * @param names + * @author zxc + * @date 2022/2/13 9:21 上午 + */ + List selectExistNames(@Param("names")List names); + + /** + * @Description 根据名字查ID + * @param names + * @author zxc + * @date 2022/2/13 9:59 上午 + */ + List selectIdByName(@Param("names")List names); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcNeighborHoodEntity.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcNeighborHoodEntity.java index 42dd382d19..9fb05feb87 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcNeighborHoodEntity.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcNeighborHoodEntity.java @@ -101,4 +101,7 @@ public class IcNeighborHoodEntity extends BaseEpmetEntity { @TableField(exist = false) private String gridName; + + @TableField(exist = false) + private String propertyName; } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java index 763406f059..5edf3b870a 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java @@ -37,13 +37,19 @@ 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.IcPropertyManagementDao; import com.epmet.dto.IcNeighborHoodDTO; +import com.epmet.dto.NeighborHoodAndManagementDTO; import com.epmet.dto.form.ImportInfoFormDTO; import com.epmet.dto.result.InfoByNamesResultDTO; import com.epmet.entity.IcNeighborHoodEntity; +import com.epmet.entity.IcNeighborHoodPropertyEntity; +import com.epmet.entity.IcPropertyManagementEntity; import com.epmet.excel.IcBuildingExcel; import com.epmet.excel.IcNeighborHoodExcel; +import com.epmet.service.IcNeighborHoodPropertyService; import com.epmet.service.IcNeighborHoodService; +import com.epmet.service.IcPropertyManagementService; import com.epmet.util.ExcelPoiUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -70,6 +76,12 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl page(Map params) { @@ -217,7 +229,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl nums = new ArrayList<>(); - List gridNames = result.stream().map(m -> m.getGridName()).collect(Collectors.toList()); + List gridNames = result.stream().map(m -> m.getGridName()).distinct().collect(Collectors.toList()); // 1. 查询数据网格是否存在 List gridInfos = customerGridDao.selectGridInfoByNames(gridNames, formDTO.getCustomerId()); if (CollectionUtils.isEmpty(gridInfos)){ @@ -241,7 +253,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl neighborHoods = groupStatus.get(true); // 2. 查询组织选中组织下存在的小区 - List existNames = baseDao.selectNeighborhoodNameByNames(neighborHoods.stream().map(m -> m.getNeighborHoodName()).collect(Collectors.toList()), formDTO.getCustomerId()); + List existNames = baseDao.selectNeighborhoodNameByNames(neighborHoods.stream().map(m -> m.getNeighborHoodName()).distinct().collect(Collectors.toList()), formDTO.getCustomerId()); // 为了显示多少行插入成功,未成功 result.forEach(r -> { for (String s : existNames) { @@ -324,8 +336,31 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl propertyNames = finalNeedInsert.stream().map(m -> m.getPropertyName()).distinct().collect(Collectors.toList()); + List disposePropertyNames = finalNeedInsert.stream().map(m -> m.getPropertyName()).distinct().collect(Collectors.toList()); + List existPropertyNames = propertyManagementDao.selectExistNames(propertyNames); + disposePropertyNames.removeAll(existPropertyNames); + List propertyManagementEntities = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(disposePropertyNames)){ + disposePropertyNames.forEach(name -> { + IcPropertyManagementEntity e = new IcPropertyManagementEntity(); + e.setName(name); + propertyManagementEntities.add(e); + }); + } + importInsert(entities,propertyManagementEntities); + // 小区物业关系表插入 + List neighborHoodAndManagementDTOS = ConvertUtils.sourceToTarget(entities, NeighborHoodAndManagementDTO.class); + List propertyManagementInfos = propertyManagementDao.selectIdByName(propertyNames); + neighborHoodAndManagementDTOS.forEach(n -> propertyManagementInfos.stream().filter(p -> p.getName().equals(n.getPropertyName())) + .forEach(p -> { + n.setPropertyId(p.getId()); + n.setNeighborHoodId(n.getId()); + })); + List icNeighborHoodPropertyEntities = ConvertUtils.sourceToTarget(neighborHoodAndManagementDTOS, IcNeighborHoodPropertyEntity.class); + neighborHoodPropertyInsert(icNeighborHoodPropertyEntities); - 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); @@ -338,12 +373,37 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl entities){ + public void importInsert(List entities,List propertyManagementEntities){ List> partition = ListUtils.partition(entities, NumConstant.ONE_HUNDRED); partition.forEach(p -> { insertBatch(p); }); + List> partition1 = ListUtils.partition(propertyManagementEntities, NumConstant.ONE_HUNDRED); + partition1.forEach(p -> { + propertyManagementService.insertBatch(p); + }); + } + + /** + * @Description 小区物业关系表插入 + * @param entities + * @author zxc + * @date 2022/2/13 10:09 上午 + */ + @Transactional(rollbackFor = Exception.class) + public void neighborHoodPropertyInsert(List entities){ + List> partition = ListUtils.partition(entities, NumConstant.ONE_HUNDRED); + partition.forEach(p -> { + neighborHoodPropertyService.insertBatch(p); + }); } } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcPropertyManagementDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcPropertyManagementDao.xml index 725fdf969f..5a5cf172a3 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcPropertyManagementDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcPropertyManagementDao.xml @@ -23,4 +23,29 @@ m.DEL_FLAG = '0' AND m.`NAME` = #{name} + + + + + + + \ No newline at end of file From 93e70100cb9995da246ed6e3f2e568d07af28050 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Sun, 13 Feb 2022 11:09:42 +0800 Subject: [PATCH 10/87] louyu --- .../epmet/controller/BuildingController.java | 22 +++++++++++++++++++ .../com/epmet/service/BuildingService.java | 14 ++++++++++++ .../service/impl/BuildingServiceImpl.java | 21 ++++++++++++++++++ 3 files changed, 57 insertions(+) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java index adaa3ed3f1..a3f5fb6d8e 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java @@ -31,6 +31,7 @@ import com.epmet.dao.IcBuildingUnitDao; import com.epmet.dto.BuildingTreeLevelDTO; import com.epmet.dto.form.IcBulidingFormDTO; import com.epmet.dto.form.IcBulidingUnitFormDTO; +import com.epmet.dto.form.ImportInfoFormDTO; import com.epmet.dto.form.ListIcNeighborHoodFormDTO; import com.epmet.dto.result.BuildingResultDTO; import com.epmet.dto.result.BuildingResultPagedDTO; @@ -199,6 +200,27 @@ public class BuildingController { return new Result().ok(str); } + /** + * @Description 楼宇导入 + * @param tokenDTO + * @param file + * @param orgId + * @param orgType + * @author zxc + * @date 2022/2/13 10:18 上午 + */ + @PostMapping("buildingimport") + public Result buildingImportExcel(@LoginUser TokenDto tokenDTO, @RequestParam("file") MultipartFile file, + @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(buildingService.buildingImportExcel(formDTO,file)); + } + /** * 查看楼宇单元列表 * @param tokenDTO diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/BuildingService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/BuildingService.java index 81b70a4bd2..240c24d454 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/BuildingService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/BuildingService.java @@ -17,15 +17,19 @@ package com.epmet.service; +import com.epmet.commons.tools.utils.Result; import com.epmet.dto.BuildingTreeLevelDTO; import com.epmet.dto.form.IcBulidingFormDTO; +import com.epmet.dto.form.ImportInfoFormDTO; import com.epmet.dto.form.ListIcNeighborHoodFormDTO; import com.epmet.dto.result.BuildingResultDTO; import com.epmet.dto.result.BuildingResultPagedDTO; import com.epmet.dto.result.IcNeighborHoodResultDTO; import com.epmet.excel.IcBuildingExcel; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.util.List; /** @@ -62,4 +66,14 @@ public interface BuildingService { List buildingListByIds(List buildingIdList); BuildingResultPagedDTO buildinglistbyidsPage(List buildingIdList, Integer pageNo, Integer pageSize); + + /** + * @Description 楼宇导入 + * @param formDTO + * @param file + * @author zxc + * @date 2022/2/13 10:18 上午 + */ + Result buildingImportExcel(ImportInfoFormDTO formDTO, MultipartFile file) throws IOException; + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java index cdf6227a8e..dc75b51ce1 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java @@ -13,11 +13,13 @@ import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.Result; import com.epmet.dao.*; import com.epmet.dto.BuildingTreeLevelDTO; import com.epmet.dto.CustomerStaffAgencyDTO; import com.epmet.dto.IcBuildingDTO; import com.epmet.dto.form.IcBulidingFormDTO; +import com.epmet.dto.form.ImportInfoFormDTO; import com.epmet.dto.form.ListIcNeighborHoodFormDTO; import com.epmet.dto.result.BuildingResultDTO; import com.epmet.dto.result.BuildingResultPagedDTO; @@ -36,9 +38,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -366,6 +370,23 @@ public class BuildingServiceImpl implements BuildingService { return result; } + /** + * @Description 楼宇导入 + * 根据左侧树选中的层级,可导入对应数据: + * 1. 选中社区可导入该社区下所有小区信息、楼宇信息、房屋信息(没有匹配的小区、楼宇均新增,网格没有对应的不新增); + * 2. 选中网格可导入该网格下所有小区信息、楼宇信息、房屋信息(没有匹配的小区、楼宇均新增); + * 3. 选中小区可导入该小区下所有楼宇信息、房屋信息(没有匹配的楼宇均新增); + * 4. 选中楼宇可导入该楼宇下所有房屋信息。 + * @param formDTO + * @param file + * @author zxc + * @date 2022/2/13 10:15 上午 + */ + @Override + public Result buildingImportExcel(ImportInfoFormDTO formDTO, MultipartFile file) throws IOException { + return null; + } + private List searchAllBuilding(ListIcNeighborHoodFormDTO formDTO) { // QueryWrapper neighborHoodEntityQueryWrapper = new QueryWrapper<>(); From 5d54b5effd473f7e37c85a7f1ebcde231e5844f6 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Sun, 13 Feb 2022 12:19:20 +0800 Subject: [PATCH 11/87] =?UTF-8?q?=E5=85=9A=E5=91=98=E9=A3=8E=E9=87=87?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E5=AF=BC=E5=87=BA=E6=B7=BB=E5=8A=A0=E6=89=80?= =?UTF-8?q?=E5=B1=9E=E5=88=86=E7=B1=BB=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IcPartymemberStyleController.java | 1 + .../excel/IcPartymemberStyleImportExcel.java | 8 +++++++- .../IcPartymemberStyleCategoryDictService.java | 3 +++ ...artymemberStyleCategoryDictServiceImpl.java | 18 +++++++++++++++--- .../impl/IcPartymemberStyleServiceImpl.java | 18 ++++++++++++++++-- 5 files changed, 42 insertions(+), 6 deletions(-) diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java index 15f4c03cb3..796f5e1e0b 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java +++ b/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.setName(item.getName()); excel.setMainDeed(item.getMainDeed()); + //导出时新增分类名称 excel.setCategoryName(item.getCategoryName()); return excel; }).collect(Collectors.toList()); diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/excel/IcPartymemberStyleImportExcel.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/excel/IcPartymemberStyleImportExcel.java index 5dd13cc84f..722f994d92 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/excel/IcPartymemberStyleImportExcel.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/excel/IcPartymemberStyleImportExcel.java @@ -21,8 +21,10 @@ import cn.afterturn.easypoi.excel.annotation.Excel; import com.epmet.commons.tools.utils.ExcelVerifyInfo; import lombok.Data; +import javax.validation.constraints.NotBlank; + /** - * 党员风采 + * 党员风采导入 * * @author generator generator@elink-cn.com * @since v1.0.0 2021-11-18 @@ -31,17 +33,21 @@ import lombok.Data; public class IcPartymemberStyleImportExcel extends ExcelVerifyInfo { @Excel(name = "所属网格") + @NotBlank(message = "此列不能为空") private String gridName; @Excel(name = "党员姓名") + @NotBlank(message = "此列不能为空") private String name; @Excel(name = "主要事迹") + @NotBlank(message = "此列不能为空") private String mainDeed; @Excel(name = "照片") private String imageUrl; @Excel(name="所属分类") + @NotBlank(message = "此列不能为空") private String categoryName; } \ No newline at end of file diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleCategoryDictService.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleCategoryDictService.java index 894d22bbf9..1cbad15a09 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleCategoryDictService.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleCategoryDictService.java @@ -8,6 +8,7 @@ import com.epmet.resi.partymember.dto.partymember.form.UpdateStyleCategoryFormDT import com.epmet.resi.partymember.dto.partymember.result.StyleCategoryDictResDTO; import java.util.List; +import java.util.Map; /** * 党员风采分类字典表 @@ -51,4 +52,6 @@ public interface IcPartymemberStyleCategoryDictService extends BaseService selectList(StyleSelectListFormDTO formDTO); IcPartymemberStyleCategoryDictEntity get(String categoryId); + + Map getCategoryDictMap(String customerId); } \ No newline at end of file diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleCategoryDictServiceImpl.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleCategoryDictServiceImpl.java index e1b7880dec..39e34e4c61 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleCategoryDictServiceImpl.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleCategoryDictServiceImpl.java @@ -18,10 +18,10 @@ 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 org.springframework.util.CollectionUtils; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; /** * 党员风采分类字典表 @@ -168,4 +168,16 @@ public class IcPartymemberStyleCategoryDictServiceImpl extends BaseServiceImpl getCategoryDictMap(String customerId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(IcPartymemberStyleCategoryDictEntity::getCustomerId, customerId); + List list=baseDao.selectList(queryWrapper); + Map map=new HashMap<>(); + if(!CollectionUtils.isEmpty(list)){ + map=list.stream().collect(Collectors.toMap(IcPartymemberStyleCategoryDictEntity::getCategoryName, m -> m, (k1, k2) -> k1)); + } + return map; + } + } \ No newline at end of file diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java index f4eb51a073..be22a71067 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java @@ -18,6 +18,7 @@ package com.epmet.modules.partymember.service.impl; import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -109,6 +110,7 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl importResult = ExcelPoiUtils.importExcelMore(file, 0, 1, IcPartymemberStyleImportExcel.class); + List failList = importResult.getFailList(); + log.info("excel中的数据校验失败:"+JSON.toJSONString(failList,true)); //存放错误数据行号 List numList = new ArrayList<>(); if (!org.springframework.util.CollectionUtils.isEmpty(failList)) { @@ -249,8 +253,10 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl gridMap = gridOptionResult.getData().stream().collect(Collectors.toMap(CustomerGridDTO::getGridName, CustomerGridDTO::getId)); + //获取党员风采所有分类:key:分类名称; + Map categoryDictMap=icPartymemberStyleCategoryDictService.getCategoryDictMap(tokenDto.getCustomerId()); //1.数据校验 只允许导入当前组织下的网格的数据 - //网格名称不一样的数据舍弃 + //网格名称不一样的数据舍弃或者分类名称不存在也舍弃 Iterator iterator = result.iterator(); while (iterator.hasNext()) { IcPartymemberStyleImportExcel obj = iterator.next(); @@ -258,6 +264,12 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl%s,行号->%s", obj.getGridName(), obj.getRowNum())); iterator.remove(); + continue; + } + if (null == categoryDictMap.get(obj.getCategoryName().trim())) { + numList.add(obj.getRowNum()); + log.warn(String.format("分类名称【%s】不存在,不可导入,行号->%s", obj.getCategoryName(), obj.getRowNum())); + iterator.remove(); } } if (CollectionUtils.isEmpty(result)) { @@ -274,7 +286,9 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl { From fa0058664b36f51ef5d4493e46bba8e846baccb5 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Sun, 13 Feb 2022 14:03:13 +0800 Subject: [PATCH 12/87] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E5=8E=BB=E6=8E=89?= =?UTF-8?q?=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../excel/IcPartymemberStyleImportExcel.java | 3 --- .../impl/IcPartymemberStyleServiceImpl.java | 18 ------------------ 2 files changed, 21 deletions(-) diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/excel/IcPartymemberStyleImportExcel.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/excel/IcPartymemberStyleImportExcel.java index 722f994d92..38da34f534 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/excel/IcPartymemberStyleImportExcel.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/excel/IcPartymemberStyleImportExcel.java @@ -44,9 +44,6 @@ public class IcPartymemberStyleImportExcel extends ExcelVerifyInfo { @NotBlank(message = "此列不能为空") private String mainDeed; - @Excel(name = "照片") - private String imageUrl; - @Excel(name="所属分类") @NotBlank(message = "此列不能为空") private String categoryName; diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java index be22a71067..f245cfbc39 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java @@ -18,7 +18,6 @@ package com.epmet.modules.partymember.service.impl; import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; -import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -232,7 +231,6 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl importResult = ExcelPoiUtils.importExcelMore(file, 0, 1, IcPartymemberStyleImportExcel.class); List failList = importResult.getFailList(); - log.info("excel中的数据校验失败:"+JSON.toJSONString(failList,true)); //存放错误数据行号 List numList = new ArrayList<>(); if (!org.springframework.util.CollectionUtils.isEmpty(failList)) { @@ -290,22 +288,6 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl { - IcPartymemberStyleImageEntity urlEntity = new IcPartymemberStyleImageEntity(); - urlEntity.setImageUrl(url); - urlEntity.setCustomerId(tokenDto.getCustomerId()); - urlEntity.setStyleId(entity.getId()); - urlEntity.setSort(i.getAndIncrement()); - urlEntity.setRevision(NumConstant.ZERO); - urlEntity.setDelFlag(NumConstant.ZERO_STR); - urlEntity.setCreatedBy(tokenDto.getUserId()); - urlEntity.setUpdatedBy(tokenDto.getUserId()); - urlEntity.setCreatedTime(new Date()); - urlEntity.setUpdatedTime(new Date()); - imageList.add(urlEntity); - }); - } return entity; }).collect(Collectors.toList()); From f9ef9e267e41000ec87a3961762e0fb35fbe585b Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Sun, 13 Feb 2022 14:14:09 +0800 Subject: [PATCH 13/87] =?UTF-8?q?=E6=88=BF=E5=B1=8B=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- epmet-module/gov-org/gov-org-server/pom.xml | 6 +++ .../com/epmet/controller/HouseController.java | 43 +++++++++++++-- .../java/com/epmet/model/HouseInfoModel.java | 52 +++++++++++++++++++ .../epmet/model/ImportHouseInfoListener.java | 33 ++++++++++++ 4 files changed, 130 insertions(+), 4 deletions(-) create mode 100644 epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModel.java create mode 100644 epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java diff --git a/epmet-module/gov-org/gov-org-server/pom.xml b/epmet-module/gov-org/gov-org-server/pom.xml index 9bd6cedb44..094292fe13 100644 --- a/epmet-module/gov-org/gov-org-server/pom.xml +++ b/epmet-module/gov-org/gov-org-server/pom.xml @@ -125,6 +125,12 @@ 2.0.0 compile + + com.alibaba + easyexcel + 3.0.3 + compile + diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java index cd54f15e64..ef37b0234b 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java @@ -19,6 +19,9 @@ package com.epmet.controller; import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelReader; +import com.alibaba.excel.read.metadata.ReadSheet; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.constant.NumConstant; @@ -28,16 +31,15 @@ import com.epmet.commons.tools.feign.ResultDataResolver; 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.dto.form.IcHouseFormDTO; -import com.epmet.dto.form.IcNeighborHoodFormDTO; -import com.epmet.dto.form.ListIcNeighborHoodFormDTO; -import com.epmet.dto.form.LoginUserDetailsFormDTO; +import com.epmet.dto.form.*; import com.epmet.dto.result.HouseInfoDTO; import com.epmet.dto.result.IcNeighborHoodResultDTO; import com.epmet.dto.result.LoginUserDetailsResultDTO; import com.epmet.excel.IcHouseExcel; import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.GovOrgOpenFeignClient; +import com.epmet.model.HouseInfoModel; +import com.epmet.model.ImportHouseInfoListener; import com.epmet.service.HouseService; import com.epmet.util.ExcelPoiUtils; import lombok.extern.slf4j.Slf4j; @@ -49,6 +51,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; @@ -232,4 +235,36 @@ public class HouseController implements ResultDataResolver { Result> queryListHouseInfo(@RequestBody Set houseIds, @RequestParam("customerId") String customerId){ return new Result>().ok(houseService.queryListHouseInfo(houseIds,customerId)); } + + @PostMapping("houseimport") + public Result houseImport(@LoginUser TokenDto tokenDTO, @RequestParam("file") MultipartFile file, + @RequestParam("orgId")String orgId, + @RequestParam("orgType")String orgType){ + ImportInfoFormDTO formDTO = new ImportInfoFormDTO(); + formDTO.setCustomerId(tokenDTO.getCustomerId()); + formDTO.setOrgType(orgType); + formDTO.setOrgId(orgId); + formDTO.setUserId(tokenDTO.getUserId()); + ExcelReader excelReader = null; + try { + InputStream inputStream = null; + try { + inputStream = file.getInputStream(); + } catch (IOException e) { + return new Result().error("读取文件失败"); + } + excelReader = EasyExcel.read(inputStream).build(); + // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener + ReadSheet readSheet = EasyExcel.readSheet(0).head(HouseInfoModel.class) + .registerReadListener(new ImportHouseInfoListener(formDTO)) + .build(); + excelReader.read(readSheet); + } finally { + if (excelReader != null) { + excelReader.finish(); + } + } + return new Result<>(); + } + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModel.java new file mode 100644 index 0000000000..db6078ba53 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModel.java @@ -0,0 +1,52 @@ +package com.epmet.model; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +/** + * @Author zxc + * @DateTime 2022/2/13 1:26 下午 + * @DESC + */ +@Data +public class HouseInfoModel { + + @ExcelProperty(value = "所属组织") + private String agencyName; + + @ExcelProperty(value = "所属网格") + private String gridName; + + @ExcelProperty(value = "所属小区") + @Length(max=50,message = "不能超过50个字") + private String neighborHoodName; + + @ExcelProperty(value = "所属楼栋") + private String buildingName; + + @ExcelProperty(value = "单元号") + private Integer buildingUnit; + + @ExcelProperty(value = "门牌号") + private String doorName; + + @ExcelProperty(value = "房屋类型") + private String houseType; + + @ExcelProperty(value = "房屋用途") + private String purpose; + + @ExcelProperty(value = "出租") + private String rentFlag; + + @ExcelProperty(value = "房主姓名") + private String ownerName; + + @ExcelProperty(value = "房主电话") + private String ownerPhone; + + @ExcelProperty(value = "房主身份证") + private String ownerIdCard; + +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java new file mode 100644 index 0000000000..640a0e73ce --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java @@ -0,0 +1,33 @@ +package com.epmet.model; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import com.epmet.dto.form.ImportInfoFormDTO; + +/** + * @Author zxc + * @DateTime 2022/2/13 1:25 下午 + * @DESC + */ +public class ImportHouseInfoListener extends AnalysisEventListener { + + private ImportInfoFormDTO formDTO; + + public ImportHouseInfoListener(ImportInfoFormDTO formDTO){ + this.formDTO = formDTO; + } + + @Override + public void invoke(HouseInfoModel data, AnalysisContext context) { + System.out.println("aaa"); + if (null == data){ + return; + } + } + + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + + } + +} From 444c837fdcea59c54e5207cac803c0fa1d41e878 Mon Sep 17 00:00:00 2001 From: jianjun Date: Sun, 13 Feb 2022 15:02:08 +0800 Subject: [PATCH 14/87] =?UTF-8?q?9999=E6=9B=BF=E6=8D=A2=E4=B8=BA=E7=BB=9F?= =?UTF-8?q?=E4=B8=80=E9=94=99=E8=AF=AF=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/IcSocietyOrgController.java | 7 +++---- .../impl/IcPartyActivityServiceImpl.java | 7 ++++--- .../service/impl/IcPartyUnitServiceImpl.java | 6 +++--- .../epmet/controller/BuildingController.java | 3 ++- .../com/epmet/controller/HouseController.java | 2 +- .../controller/NeighborHoodController.java | 3 ++- .../service/impl/BuildingServiceImpl.java | 2 +- .../impl/IcNeighborHoodServiceImpl.java | 18 +++++++++--------- .../impl/IcPartymemberStyleServiceImpl.java | 7 ++++--- 9 files changed, 29 insertions(+), 26 deletions(-) diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcSocietyOrgController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcSocietyOrgController.java index 786fc77928..2b07959e33 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcSocietyOrgController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcSocietyOrgController.java @@ -20,6 +20,7 @@ package com.epmet.controller; import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ExcelPoiUtils; import com.epmet.commons.tools.utils.ExcelUtils; @@ -27,10 +28,8 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dto.form.AddSocietyOrgFormDTO; import com.epmet.dto.form.EditSocietyOrgFormDTO; -import com.epmet.dto.form.GetListPlaceOrgFormDTO; import com.epmet.dto.form.GetListSocietyOrgFormDTO; import com.epmet.dto.form.demand.ServiceQueryFormDTO; -import com.epmet.dto.result.GetListPlaceOrgResultDTO; import com.epmet.dto.result.GetListSocietyOrgResultDTO; import com.epmet.dto.result.demand.OptionDTO; import com.epmet.excel.IcSocietyOrgExcel; @@ -164,9 +163,9 @@ public class IcSocietyOrgController { Collections.sort(resultList); String subList = resultList.stream().map(String::valueOf).collect(Collectors.joining("、")); log.warn(str + "第" + subList + "行未成功!"); - return new Result().error(9999, str + "第" + subList + "行未成功!"); + return new Result().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), str + "第" + subList + "行未成功!"); } return new Result().ok(str); } -} \ No newline at end of file +} diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyActivityServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyActivityServiceImpl.java index cdfa84d5e2..4cea3f9136 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyActivityServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyActivityServiceImpl.java @@ -24,6 +24,7 @@ import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; 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.exception.EpmetErrorCode; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.security.dto.TokenDto; @@ -267,7 +268,7 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl list = result.stream().map(item -> { @@ -296,7 +297,7 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl list = result.stream().map(item -> { @@ -405,7 +405,7 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl result){ if (CollectionUtils.isEmpty(result)){ - return new Result().error(9999,"excel表格内没有数据"); + return new Result().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"excel表格内没有数据"); } List nums = new ArrayList<>(); - List gridNames = result.stream().map(m -> m.getGridName()).distinct().collect(Collectors.toList()); + List gridNames = result.stream().map(IcNeighborHoodExcel::getGridName).distinct().collect(Collectors.toList()); // 1. 查询数据网格是否存在 List gridInfos = customerGridDao.selectGridInfoByNames(gridNames, formDTO.getCustomerId()); if (CollectionUtils.isEmpty(gridInfos)){ @@ -238,7 +238,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl { for (InfoByNamesResultDTO g : gridInfos) { @@ -253,7 +253,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl neighborHoods = groupStatus.get(true); // 2. 查询组织选中组织下存在的小区 - List existNames = baseDao.selectNeighborhoodNameByNames(neighborHoods.stream().map(m -> m.getNeighborHoodName()).distinct().collect(Collectors.toList()), formDTO.getCustomerId()); + List existNames = baseDao.selectNeighborhoodNameByNames(neighborHoods.stream().map(IcNeighborHoodExcel::getNeighborHoodName).distinct().collect(Collectors.toList()), formDTO.getCustomerId()); // 为了显示多少行插入成功,未成功 result.forEach(r -> { for (String s : existNames) { @@ -272,7 +272,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl collect = finalNeedInsert.stream().collect(Collectors.groupingBy(o -> o.getGridName() + "_" + o.getNeighborHoodName(), Collectors.counting())); collect.forEach((k,v) -> { @@ -368,7 +368,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl imageList = new ArrayList<>(); List list = result.stream().map(item -> { @@ -299,9 +300,9 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl Date: Sun, 13 Feb 2022 15:41:44 +0800 Subject: [PATCH 15/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=201.=E5=B1=85?= =?UTF-8?q?=E6=B0=91=E4=BF=A1=E6=81=AF=E5=AF=BC=E5=85=A5=EF=BC=9A=E5=B0=86?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=88=86=E5=A4=9A=E6=89=B9=E6=AC=A1=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=EF=BC=8C=E5=87=8F=E5=B0=91=E5=86=85=E5=AD=98=E5=8D=A0?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/DynamicEasyExcelListener.java | 144 ++++++++++++++++-- .../impl/IcResiUserImportServiceImpl.java | 85 ++--------- 2 files changed, 146 insertions(+), 83 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/DynamicEasyExcelListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/DynamicEasyExcelListener.java index 4c12594a45..bf65c3bbf2 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/DynamicEasyExcelListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/DynamicEasyExcelListener.java @@ -2,12 +2,16 @@ package com.epmet.excel.handler; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; -import com.alibaba.fastjson.JSON; +import com.epmet.dto.result.FormItemResult; +import com.epmet.service.impl.IcResiUserImportServiceImpl; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 创建一个监听器 @@ -15,6 +19,64 @@ import java.util.Map; @Slf4j public class DynamicEasyExcelListener extends AnalysisEventListener> { + /** + * 一次性导入的条数 + */ + private static final Integer ONCE_BATCH_IMPORT_ITEMS_SIZE = 2000; + + /** + * 客户id + */ + private String customerId; + + /** + * 当前操作人的AgencyId + */ + private String currUserAgencyId; + + /** + * 当前用户ID + */ + private String currentUserId; + + /** + * 当前用户agencyId + */ + private String currUserAgencyPids; + + /** + * 数据库表名 + */ + private String tableName; + + private IcResiUserImportServiceImpl icResiUserImportService; + + /** + * item列表 + */ + private List formItemList; + + /** + * 是否是基础信息表 + */ + private Boolean isPrimary; + + /** + * 有几行是表头 + */ + private Integer headRowNumber; + + /** + * key:itemId + * value:ColumnWrapper 列封装信息,列基础信息和列值 + */ + private Map itemIdAndColumnWrapper; + + /** + * 被丢弃的header,原因:checkbox的情况下,选项在表格中是多列,但是在item中不存在 + */ + private Map abandonedHeaders; + /** * 表头数据(存储所有的表头数据) */ @@ -26,6 +88,23 @@ public class DynamicEasyExcelListener extends AnalysisEventListener> dataList = new ArrayList<>(); // Map dataList = new HashMap<>(); + + public DynamicEasyExcelListener(IcResiUserImportServiceImpl icResiUserImportService, String customerId, + String currentUserId, String currUserAgencyId, + String currUserAgencyPids, Boolean isPrimary, String tableName, + List formItemList, Integer headRowNumber) { + + this.customerId = customerId; + this.icResiUserImportService = icResiUserImportService; + this.formItemList = formItemList; + this.isPrimary = isPrimary; + this.currentUserId = currentUserId; + this.currUserAgencyId = currUserAgencyId; + this.currUserAgencyPids = currUserAgencyPids; + this.tableName = tableName; + this.headRowNumber = headRowNumber; + } + /** * 这里会一行行的返回头 * @@ -34,9 +113,35 @@ public class DynamicEasyExcelListener extends AnalysisEventListener headMap, AnalysisContext context) { - //log.info("解析到一条头数据:{}", JSON.toJSONString(headMap)); - //存储全部表头数据 headList.add(headMap); + + if (headList.size() < headRowNumber) { + return; + } + + // 合并多级表头到一个list中,key为列序号 + Map> headers = icResiUserImportService.mergeMultiLevelHeadLabels(headList); + + // 清洗表头数据,通过items剔除,并且得到options + abandonedHeaders = icResiUserImportService.removeAndGetOptionsFromHeaders(headers, formItemList); + + // 交换表头信息,以label连起来的string作为key,列号的列表作为value + HashMap> combinedHeaders = icResiUserImportService.exchangeKeyAndValueOfHeaders(headers); + + // 得到客户配置item数据。<"兴趣爱好:兴趣特长", item对象> + Map customizedLabelCompbinedItemsMap = formItemList.stream().collect( + Collectors.toMap(formItem -> { + String groupLabel = formItem.getGroupLabel(); + String label = formItem.getLabel(); + if (StringUtils.isNotBlank(groupLabel)) { + return groupLabel.concat(":").concat(label); + } else { + return label; + } + }, formItem -> formItem) + ); + + itemIdAndColumnWrapper = icResiUserImportService.convertExcelHeaders2DBColumnWrappers(customizedLabelCompbinedItemsMap, combinedHeaders); } /** @@ -48,26 +153,37 @@ public class DynamicEasyExcelListener extends AnalysisEventListener data, AnalysisContext context) { - //log.info("解析到一条数据:{}", JSON.toJSONString(data)); + // 每2000条数据处理一次 dataList.add(data); + + // 达到了批量导入的阈值,执行一次持久化 + if (dataList.size() >= ONCE_BATCH_IMPORT_ITEMS_SIZE) { + execPersistant(); + } } /** - * 所有数据解析完成了 都会来调用 - * + * 所有数据解析完成了会调用 + * 此处也要判断,然后执行持久化,因为最后一部分数据,达不到批量阈值,不能漏掉,在最后结束的时候给他执行进去 * @param context */ @Override public void doAfterAllAnalysed(AnalysisContext context) { - // 这里也要保存数据,确保最后遗留的数据也存储到数据库 - //log.info("所有数据解析完成!"); - } - - public List> getHeadList() { - return headList; + if (dataList.size() != 0) { + execPersistant(); + } } - public List> getDataList() { - return dataList; + /** + * 执行持久化 + */ + private void execPersistant() { + // 持久化 + if (isPrimary) { + icResiUserImportService.persistIcResiBaseInfo(itemIdAndColumnWrapper, dataList, currUserAgencyId, abandonedHeaders, currUserAgencyPids, currentUserId, tableName); + } else { + icResiUserImportService.persistIcResiExtraInfo(itemIdAndColumnWrapper, dataList, currUserAgencyId, abandonedHeaders, currentUserId, tableName, customerId); + } + dataList.clear(); } } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java index 71e0e0d9ca..d236c92004 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java @@ -232,7 +232,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res // 上传主表信息 importIcResiBaseInfoFromExcel(formItemList,excelPathName, IcResiUserTableEnum.IC_RESI_USER.getSheetNo(), IcResiUserTableEnum.IC_RESI_USER.getHeadRowNo(), - currUserAgencyId, agencyInfo.getPids(), loginUserId, IcResiUserTableEnum.IC_RESI_USER.getTableName()); + currUserAgencyId, agencyInfo.getPids(), loginUserId, IcResiUserTableEnum.IC_RESI_USER.getTableName(), customerId); // 上传附表信息 for (IcResiUserTableEnum sheet : IcResiUserTableEnum.values()) { @@ -320,43 +320,12 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res * @param currentUserId * @return */ - private Object importIcResiBaseInfoFromExcel(List formItemList, String excelPathName, int sheetNo, int headRowNumber, String currUserAgencyId, String currUserAgencyPids, String currentUserId, - String tableName) { - DynamicEasyExcelListener readListener = new DynamicEasyExcelListener(); - //EasyExcelFactory.read(new File(excelPathName)).registerReadListener(readListener).headRowNumber(headRowNumber).sheet(sheetNo).doRead(); - EasyExcel.read(new File(excelPathName)).registerReadListener(readListener).headRowNumber(headRowNumber).sheet(sheetNo).doRead(); - - List> headList = readListener.getHeadList(); - List> dataList = readListener.getDataList(); - - // 合并多级表头到一个list中,key为列序号 - Map> headers = mergeMultiLevelHeadLabels(headList); - - // 清洗表头数据,通过items剔除,并且得到options - Map abandonedHeaders = removeAndGetOptionsFromHeaders(headers, formItemList); - - // 交换表头信息,以label连起来的string作为key,列号的列表作为value - HashMap> combinedHeaders = exchangeKeyAndValueOfHeaders(headers); - - // 得到客户配置item数据。<"兴趣爱好:兴趣特长", item对象> - Map customizedLabelCompbinedItemsMap = formItemList.stream().collect( - Collectors.toMap(formItem -> { - String groupLabel = formItem.getGroupLabel(); - String label = formItem.getLabel(); - if (StringUtils.isNotBlank(groupLabel)) { - return groupLabel.concat(":").concat(label); - } else { - return label; - } - }, formItem -> formItem) - ); - - Map itemIdAndColumnWrapper = convertExcelHeaders2DBColumnWrappers(customizedLabelCompbinedItemsMap, combinedHeaders); - - // 持久化 - persistIcResiBaseInfo(itemIdAndColumnWrapper, dataList, currUserAgencyId, abandonedHeaders, currUserAgencyPids, currentUserId, tableName); + private void importIcResiBaseInfoFromExcel(List formItemList, String excelPathName, int sheetNo, int headRowNumber, String currUserAgencyId, String currUserAgencyPids, String currentUserId, + String tableName, String customerId) { - return headers; + DynamicEasyExcelListener readListener = new DynamicEasyExcelListener(this, customerId, currentUserId, currUserAgencyId, currUserAgencyPids, + true, tableName, formItemList, headRowNumber); + EasyExcel.read(new File(excelPathName)).registerReadListener(readListener).headRowNumber(headRowNumber).sheet(sheetNo).doRead(); } /** @@ -371,34 +340,12 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res * @param targetTableName 要插入哪一个表 * @return */ - private Object importIcResiExtraInfoFromExcel(List formItemList, String excelPathName, int sheetNo, int headRowNumber, String currUserAgencyId, String currentUserId, + private void importIcResiExtraInfoFromExcel(List formItemList, String excelPathName, int sheetNo, int headRowNumber, String currUserAgencyId, String currentUserId, String targetTableName, String customerId) { - DynamicEasyExcelListener readListener = new DynamicEasyExcelListener(); - EasyExcelFactory.read(new File(excelPathName)).registerReadListener(readListener).headRowNumber(headRowNumber).sheet(sheetNo).doRead(); - - List> headList = readListener.getHeadList(); - List> dataList = readListener.getDataList(); - - Map> headers = mergeMultiLevelHeadLabels(headList); - - Map abandonedHeaders = removeAndGetOptionsFromHeaders(headers, formItemList); - HashMap> combinedHeaders = exchangeKeyAndValueOfHeaders(headers); - - Map formItemMap = formItemList.stream().collect( - Collectors.toMap(formItem -> { - String groupLabel = formItem.getGroupLabel(); - String label = formItem.getLabel(); - if (StringUtils.isNotBlank(groupLabel)) { - return groupLabel.concat(":").concat(label); - } else { - return label; - } - }, formItem -> formItem) - ); - Map headerColumnWrapper = convertExcelHeaders2DBColumnWrappers(formItemMap, combinedHeaders); - persistIcResiExtraInfo(headerColumnWrapper, dataList, currUserAgencyId, abandonedHeaders, currentUserId, targetTableName, customerId); - return headerColumnWrapper; + DynamicEasyExcelListener readListener = new DynamicEasyExcelListener(this, customerId, currentUserId, currUserAgencyId, null, + false, targetTableName, formItemList, headRowNumber); + EasyExcelFactory.read(new File(excelPathName)).registerReadListener(readListener).headRowNumber(headRowNumber).sheet(sheetNo).doRead(); } /** @@ -408,7 +355,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res * @param currUserAgencyId 当前用户的组织id * @param checkBoxOptionColumnIdxAndLabel 复选框的列号&label中文 */ - private void persistIcResiBaseInfo(Map itemIdAndColumnWrapper, List> dataRows, + public void persistIcResiBaseInfo(Map itemIdAndColumnWrapper, List> dataRows, String currUserAgencyId, Map checkBoxOptionColumnIdxAndLabel, String currUserAgencyPids, String currentUserId, String tableName) { @@ -517,7 +464,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res * @param checkBoxOptionColumnIdxAndLabel 复选框的列号&label中文 * @param targetTableName 要插入到哪一个表 */ - private void persistIcResiExtraInfo(Map headerColumnWrapper, List> dataRows, + public void persistIcResiExtraInfo(Map headerColumnWrapper, List> dataRows, String currUserAgencyId, Map checkBoxOptionColumnIdxAndLabel, String currentUserId, String targetTableName, String customerId) { @@ -709,7 +656,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res * @author wxz * @date 2021.10.28 21:27:18 */ - private HashMap> exchangeKeyAndValueOfHeaders(Map> headers) { + public HashMap> exchangeKeyAndValueOfHeaders(Map> headers) { HashMap> itemAndColIndexs = new LinkedHashMap<>(); headers.forEach((k, v) -> { @@ -734,7 +681,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res * @author wxz * @date 2021.10.28 21:07:12 */ - private Map removeAndGetOptionsFromHeaders(Map> headers, List items) { + public Map removeAndGetOptionsFromHeaders(Map> headers, List items) { List itemLabels = items.stream().map(i -> i.getLabel()).collect(Collectors.toList()); Map abandonedOptions = new HashMap<>(); for (Map.Entry> entry:headers.entrySet()) { @@ -765,7 +712,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res * value:列号组成的列表(例如[1,2,3]) * @return key:itemId;value:columnWrapper */ - private Map convertExcelHeaders2DBColumnWrappers(Map customizedLabelCompbinedItemsMap, Map> combinedHeaders) { + public Map convertExcelHeaders2DBColumnWrappers(Map customizedLabelCompbinedItemsMap, Map> combinedHeaders) { // HashMap> tables = new HashMap<>(); Map columns = new LinkedHashMap<>(combinedHeaders.size()); @@ -835,7 +782,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res * @author wxz * @date 2021.10.27 16:17:34 */ - private Map> mergeMultiLevelHeadLabels(List> headList) { + public Map> mergeMultiLevelHeadLabels(List> headList) { Map lastNotNullHeads = new LinkedHashMap<>(); From afbfb6cbf59887548c4d188ee7d59e241f33f6b0 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Sun, 13 Feb 2022 16:37:42 +0800 Subject: [PATCH 16/87] =?UTF-8?q?=E6=88=BF=E5=B1=8B=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E9=80=9A=E7=94=A8DTO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/dto/ImportHouseGeneralDTO.java | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java new file mode 100644 index 0000000000..0b0e6d2e19 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java @@ -0,0 +1,86 @@ +package com.epmet.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2022/2/13 4:32 下午 + * @DESC + */ +@Data +public class ImportHouseGeneralDTO implements Serializable { + + private static final long serialVersionUID = -345610717773879687L; + + /** + * 组织名、ID + */ + private String agencyName; + private String agencyId; + + /** + * 网格名、ID + */ + private String gridName; + private String gridId; + + /** + * 小区名、ID + */ + private String neighborHoodName; + private String neighborHoodId; + + /** + * 所属楼栋、ID + */ + private String buildingName; + private String buildingId; + + /** + * 单元号、ID + */ + private Integer buildingUnit; + private Integer buildingUnitId; + + /** + * 门牌号 + */ + private String doorName; + + /** + * 房屋类型 + */ + private String houseType; + + /** + * 房屋用途 + */ + private String purpose; + + /** + * 是否出租 + */ + private String rentFlag; + + /** + * 姓名 + */ + private String ownerName; + + /** + * 电话 + */ + private String ownerPhone; + + /** + * 身份证 + */ + private String ownerIdCard; + + /** + * 行数 + */ + private Integer num; +} From 55ba9b5b71c9747562b9ab613a6c6fb96c98ce10 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Sun, 13 Feb 2022 16:46:57 +0800 Subject: [PATCH 17/87] emm --- .../src/main/java/com/epmet/dto/form/ImportInfoFormDTO.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/ImportInfoFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/ImportInfoFormDTO.java index 33ad356bb1..ca83776f30 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/ImportInfoFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/ImportInfoFormDTO.java @@ -24,7 +24,7 @@ public class ImportInfoFormDTO implements Serializable { private String orgId; /** - * 组织类型 agency:组织,grid:网格 + * 组织类型 agency:组织,grid:网格,neighborHood:小区,building:楼栋 */ @NotBlank(message = "orgType不能为空",groups = ImportInfoForm.class) private String orgType; From a03ca03f47af0d2c8108bf073524d78cb008d1d3 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Sun, 13 Feb 2022 17:01:17 +0800 Subject: [PATCH 18/87] =?UTF-8?q?=E6=88=BF=E5=B1=8BID?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java index 0b0e6d2e19..b0601d449c 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java @@ -80,7 +80,12 @@ public class ImportHouseGeneralDTO implements Serializable { private String ownerIdCard; /** - * 行数 + * 行号 */ private Integer num; + + /** + * 房屋ID + */ + private Integer houseId; } From 413af387af662b99c4af85dc6d87c2060cba93b7 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Sun, 13 Feb 2022 17:03:24 +0800 Subject: [PATCH 19/87] fangwuID --- .../src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java index b0601d449c..99e09837b0 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java @@ -87,5 +87,5 @@ public class ImportHouseGeneralDTO implements Serializable { /** * 房屋ID */ - private Integer houseId; + private String houseId; } From c554be8b0b38f93a2611df56a91b4eb70cf16f5c Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Mon, 14 Feb 2022 10:52:51 +0800 Subject: [PATCH 20/87] =?UTF-8?q?=E6=88=BF=E5=B1=8B=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=9A=82=E6=8F=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/commons/tools/redis/RedisKeys.java | 44 ++++++ .../com/epmet/controller/HouseController.java | 8 +- .../java/com/epmet/dao/IcBuildingDao.java | 49 +++++++ .../com/epmet/model/HouseInfoModelDTO.java | 41 ++++++ .../epmet/model/ImportHouseInfoListener.java | 128 +++++++++++++++++- .../java/com/epmet/redis/IcHouseRedis.java | 94 +++++++++++++ .../main/resources/mapper/IcBuildingDao.xml | 40 ++++++ 7 files changed, 401 insertions(+), 3 deletions(-) create mode 100644 epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModelDTO.java diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java index dc3fb232bc..8e179837e2 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java @@ -640,4 +640,48 @@ public class RedisKeys { public static String getHouseInfoCacheKey(String houseId,String customerId){ return rootPrefix.concat("house:").concat(customerId).concat(":").concat(houseId); } + + /** + * @Description 临时房屋缓存key + * @param customerId + * @param userId + * @author zxc + * @date 2022/2/14 9:38 上午 + */ + public static String getTemporaryHouseInfoCacheKey(String customerId,String userId){ + return rootPrefix.concat("temporary:").concat("temporaryHouse:").concat(customerId).concat(":").concat(userId); + } + + /** + * @Description 临时网格缓存key + * @param customerId + * @param userId + * @author zxc + * @date 2022/2/14 9:38 上午 + */ + public static String getTemporaryGridInfoCacheKey(String customerId,String userId){ + return rootPrefix.concat("temporary:").concat("temporaryGrid:").concat(customerId).concat(":").concat(userId); + } + + /** + * @Description 临时小区缓存key + * @param customerId + * @param userId + * @author zxc + * @date 2022/2/14 9:39 上午 + */ + public static String getTemporaryNeighborHoodInfoCacheKey(String customerId,String userId){ + return rootPrefix.concat("temporary:").concat("temporaryNeighborHood:").concat(customerId).concat(":").concat(userId); + } + + /** + * @Description 临时楼栋缓存key + * @param customerId + * @param userId + * @author zxc + * @date 2022/2/14 9:39 上午 + */ + public static String getTemporaryBuildingInfoCacheKey(String customerId,String userId){ + return rootPrefix.concat("temporary:").concat("temporaryBuilding:").concat(customerId).concat(":").concat(userId); + } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java index e41c93421d..ed586e0fdb 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java @@ -31,6 +31,7 @@ import com.epmet.commons.tools.feign.ResultDataResolver; 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.dao.IcBuildingDao; import com.epmet.dto.form.*; import com.epmet.dto.result.HouseInfoDTO; import com.epmet.dto.result.IcNeighborHoodResultDTO; @@ -40,6 +41,7 @@ import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.model.HouseInfoModel; import com.epmet.model.ImportHouseInfoListener; +import com.epmet.redis.IcHouseRedis; import com.epmet.service.HouseService; import com.epmet.util.ExcelPoiUtils; import lombok.extern.slf4j.Slf4j; @@ -72,6 +74,10 @@ public class HouseController implements ResultDataResolver { @Autowired private EpmetUserOpenFeignClient userOpenFeignClient; + @Autowired + private IcBuildingDao icBuildingDao; + @Autowired + private IcHouseRedis icHouseRedis; @PostMapping("houselist") @@ -256,7 +262,7 @@ public class HouseController implements ResultDataResolver { excelReader = EasyExcel.read(inputStream).build(); // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener ReadSheet readSheet = EasyExcel.readSheet(0).head(HouseInfoModel.class) - .registerReadListener(new ImportHouseInfoListener(formDTO)) + .registerReadListener(new ImportHouseInfoListener(formDTO,icBuildingDao,icHouseRedis)) .build(); excelReader.read(readSheet); } finally { diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java index 6d029cb291..8a1092573a 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java @@ -19,6 +19,7 @@ package com.epmet.dao; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.ImportHouseGeneralDTO; import com.epmet.dto.result.BaseInfoFamilyBuildingResultDTO; import com.epmet.dto.result.BuildingResultDTO; import com.epmet.entity.CustomerAgencyEntity; @@ -73,4 +74,52 @@ public interface IcBuildingDao extends BaseDao { List buildingListByIds(@Param("buildingIdList") List buildingIdList); IPage buildingListByIds(IPage page,@Param("buildingIdList") List buildingIdList); + /** + * @Description 根据ID查询楼栋名 + * @param orgId + * @author zxc + * @date 2022/2/13 2:32 下午 + */ + String selectBuildingNameById(@Param("orgId")String orgId); + + /** + * @Description 根据ID查询小区名 + * @param orgId + * @author zxc + * @date 2022/2/13 4:21 下午 + */ + String selectNeighborHoodNameById(@Param("orgId")String orgId); + + /** + * @Description 根据ID查询网格名 + * @param orgId + * @author zxc + * @date 2022/2/13 4:26 下午 + */ + String selectGridNameById(@Param("orgId")String orgId); + + /** + * @Description 根据ID查询组织名 + * @param orgId + * @author zxc + * @date 2022/2/13 4:29 下午 + */ + String selectAgencyNameById(@Param("orgId")String orgId); + + /** + * @Description 查询组织下所有网格信息 + * @param orgId + * @author zxc + * @date 2022/2/14 9:48 上午 + */ + List selectAllGridByOrgId(@Param("orgId")String orgId); + + /** + * @Description 查询网格下所有的小区 + * @param orgId + * @author zxc + * @date 2022/2/14 10:21 上午 + */ + List selectAllNeighborHoodByGridIds(@Param("orgIds")List orgId); + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModelDTO.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModelDTO.java new file mode 100644 index 0000000000..2193e9cf2d --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModelDTO.java @@ -0,0 +1,41 @@ +package com.epmet.model; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +/** + * @Author zxc + * @DateTime 2022/2/13 1:26 下午 + * @DESC + */ +@Data +public class HouseInfoModelDTO { + + private String agencyName; + + private String gridName; + + private String neighborHoodName; + + private String buildingName; + + private Integer buildingUnit; + + private String doorName; + + private String houseType; + + private String purpose; + + private String rentFlag; + + private String ownerName; + + private String ownerPhone; + + private String ownerIdCard; + + private Integer num; + +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java index 640a0e73ce..d8c402b040 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java @@ -2,7 +2,21 @@ package com.epmet.model; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; +import com.alibaba.fastjson.JSON; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.dao.IcBuildingDao; +import com.epmet.dto.ImportHouseGeneralDTO; import com.epmet.dto.form.ImportInfoFormDTO; +import com.epmet.redis.IcHouseRedis; +import org.apache.commons.lang3.StringUtils; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * @Author zxc @@ -11,23 +25,133 @@ import com.epmet.dto.form.ImportInfoFormDTO; */ public class ImportHouseInfoListener extends AnalysisEventListener { + List nums = new ArrayList<>(); + List needDisposeList = new ArrayList<>(); + List needInsertList = new ArrayList<>(); + Integer num = NumConstant.ZERO; + String buildingName = null; + String neighborHoodName = null; + String gridName = null; + String agencyName = null; + Map gridInfos = null; + List gridInfoDTOs = null; + Map neighborHoodInfos = null; + List neighborHoodInfoDTOs = null; + private ImportInfoFormDTO formDTO; + private IcBuildingDao icBuildingDao; + private IcHouseRedis icHouseRedis; - public ImportHouseInfoListener(ImportInfoFormDTO formDTO){ + public ImportHouseInfoListener(ImportInfoFormDTO formDTO,IcBuildingDao icBuildingDao, IcHouseRedis icHouseRedis){ this.formDTO = formDTO; + this.icBuildingDao = icBuildingDao; + this.icHouseRedis = icHouseRedis; } @Override public void invoke(HouseInfoModel data, AnalysisContext context) { - System.out.println("aaa"); if (null == data){ return; } + ImportHouseGeneralDTO dto = ConvertUtils.sourceToTarget(data, ImportHouseGeneralDTO.class); + num = num + NumConstant.ONE; + if (formDTO.getOrgType().equals("building")){ + buildingName = null == buildingName ? icBuildingDao.selectBuildingNameById(formDTO.getOrgId()) : buildingName; + // 不是本楼的 + if (!data.getBuildingName().equals(buildingName)){ + nums.add(num); + }else { + /** + * 1。根据楼宇查询 + */ + needDisposeList.add(dto); + Map collect = needDisposeList.stream().collect(Collectors.toMap(n -> n.getBuildingId() + "_" + n.getBuildingUnitId() + "_" + n.getDoorName(), n -> StringUtils.isNotBlank(n.getHouseId()) ? n.getHouseId() : "")); + icHouseRedis.setTemporaryCacheHouse(formDTO.getCustomerId(), collect, formDTO.getUserId()); +// Map temporaryCacheHouses = icHouseRedis.getTemporaryCacheHouses(formDTO.getCustomerId(), formDTO.getUserId()); + // TODO 等待方法 + List result = new ArrayList<>(); + //把房屋ID不为空的行号加入nums,说明已存在 + result.forEach(r -> { + if (StringUtils.isNotBlank(r.getHouseId())){ + nums.add(r.getNum()); + } + }); + } + }else if (formDTO.getOrgType().equals("neighborHood")){ + neighborHoodName = null == neighborHoodName ? icBuildingDao.selectNeighborHoodNameById(formDTO.getOrgId()) : neighborHoodName; + //不是本小区的 + if (!data.getNeighborHoodName().equals(neighborHoodName)){ + nums.add(num); + }else { + + } + }else if (formDTO.getOrgType().equals("grid")){ + gridName = null == gridName ? icBuildingDao.selectGridNameById(formDTO.getOrgId()) : gridName; + //不是本网格的 + if (!data.getGridName().equals(gridName)){ + nums.add(num); + }else { + // + } + }else if (formDTO.getOrgType().equals("agency")){ + agencyName = null == agencyName ? icBuildingDao.selectAgencyNameById(formDTO.getOrgId()) : agencyName; + //不是本组织的 + if (!data.getAgencyName().equals(agencyName)){ + nums.add(num); + }else { + // 根据组织查询出所有网格,甩出不是本组织下的网格 + gridInfos = null == gridInfos ? getGridInfos(formDTO.getOrgId()) : gridInfos; + if (null == gridInfos){ + // 组织下确实不存在网格 + return; + } + // 根据网格名对比,没有找到的就把行号加入到未执行成功队列中 + Object cacheGridName = icHouseRedis.getTemporaryCacheGrid(formDTO.getCustomerId(), formDTO.getUserId(), dto.getGridName()); + if (null == cacheGridName){ + nums.add(num); + return; + } + dto.setGridId(cacheGridName.toString()); + dto.setAgencyId(formDTO.getOrgId()); + needDisposeList.add(dto); + } + } + } + + /** + * @Description 获取网格信息 + * @param orgId + * @author zxc + * @date 2022/2/14 9:57 上午 + */ + public Map getGridInfos(String orgId){ + gridInfoDTOs = icBuildingDao.selectAllGridByOrgId(orgId); + gridInfos = gridInfoDTOs.stream().collect(Collectors.toMap(n -> n.getGridName(), n -> n.getGridId())); + icHouseRedis.setTemporaryCacheGrid(formDTO.getCustomerId(), gridInfos, formDTO.getUserId()); + return gridInfos; + } + + /** + * @Description 获取网格下的小区 + * @param gridIds + * @author zxc + * @date 2022/2/14 10:16 上午 + */ + public Map getNeighborHoodInfos(List gridIds){ + neighborHoodInfoDTOs = icBuildingDao.selectAllNeighborHoodByGridIds(gridIds); + neighborHoodInfos = neighborHoodInfoDTOs.stream().collect(Collectors.toMap(n -> n.getGridId() + "_" + n.getNeighborHoodName(), n -> n.getNeighborHoodId())); + icHouseRedis.setTemporaryCacheNeighBorHood(formDTO.getCustomerId(), neighborHoodInfos, formDTO.getUserId()); + return neighborHoodInfos; } @Override public void doAfterAllAnalysed(AnalysisContext context) { + // 删除缓存 + icHouseRedis.delTemporaryCacheGrids(formDTO.getCustomerId(), formDTO.getUserId()); + icHouseRedis.delTemporaryCacheNeighBorHood(formDTO.getCustomerId(), formDTO.getUserId()); + icHouseRedis.delTemporaryCacheBuilding(formDTO.getCustomerId(), formDTO.getUserId()); + icHouseRedis.delTemporaryCacheHouses(formDTO.getCustomerId(), formDTO.getUserId()); } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/IcHouseRedis.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/IcHouseRedis.java index 4f3ece54a8..a4882e915e 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/IcHouseRedis.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/IcHouseRedis.java @@ -18,15 +18,23 @@ package com.epmet.redis; import cn.hutool.core.bean.BeanUtil; +import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.redis.RedisKeys; import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.dao.IcHouseDao; +import com.epmet.dto.ImportHouseGeneralDTO; import com.epmet.dto.result.HouseInfoDTO; +import com.epmet.model.HouseInfoModel; +import com.epmet.model.HouseInfoModelDTO; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -43,6 +51,9 @@ public class IcHouseRedis { @Autowired private IcHouseDao icHouseDao; + @Autowired + private RedisTemplate redisTemplate; + public void delete(Object[] ids) { } @@ -79,4 +90,87 @@ public class IcHouseRedis { return houseInfo; } + /** + * @Description 存放房屋临时缓存 + * @param customerId + * @param map + * @param userId + * @author zxc + * @date 2022/2/14 9:04 上午 + */ + public void setTemporaryCacheHouse(String customerId, Map map,String userId){ + String key = RedisKeys.getTemporaryHouseInfoCacheKey(customerId,userId); + redisUtils.hMSet(key,map,RedisUtils.NOT_EXPIRE); + } + + /** + * @Description 获取房屋临时缓存 + * @param customerId + * @param userId + * @author zxc + * @date 2022/2/14 9:28 上午 + */ + public Object getTemporaryCacheHouse(String customerId,String userId,String buildingIdAndUnitIdAndHouseName){ + String key = RedisKeys.getTemporaryHouseInfoCacheKey(customerId,userId); + return redisUtils.hGet(key, buildingIdAndUnitIdAndHouseName); + } + + /** + * @Description 删除房屋临时缓存 + * @param customerId + * @param userId + * @author zxc + * @date 2022/2/14 9:29 上午 + */ + public void delTemporaryCacheHouses(String customerId,String userId){ + String key = RedisKeys.getTemporaryHouseInfoCacheKey(customerId,userId); + redisUtils.delete(key); + } + + public void setTemporaryCacheGrid(String customerId, Map map,String userId) { + String key = RedisKeys.getTemporaryGridInfoCacheKey(customerId, userId); + redisUtils.hMSet(key, map, RedisUtils.NOT_EXPIRE); + } + public Object getTemporaryCacheGrid(String customerId,String userId,String gridName){ + String key = RedisKeys.getTemporaryGridInfoCacheKey(customerId,userId); + Object o = redisUtils.hGet(key, gridName); + return o; + } + public Map getTemporaryCacheGrids(String customerId,String userId){ + String key = RedisKeys.getTemporaryGridInfoCacheKey(customerId,userId); + return redisUtils.hGetAll(key); + } + public void delTemporaryCacheGrids(String customerId,String userId){ + String key = RedisKeys.getTemporaryGridInfoCacheKey(customerId,userId); + redisUtils.delete(key); + } + + public void setTemporaryCacheNeighBorHood(String customerId, Map map,String userId) { + String key = RedisKeys.getTemporaryNeighborHoodInfoCacheKey(customerId, userId); + redisUtils.hMSet(key, map, RedisUtils.NOT_EXPIRE); + } + public Object getTemporaryCacheNeighBorHood(String customerId,String userId,String gridIdAndNeighborHoodName){ + String key = RedisKeys.getTemporaryNeighborHoodInfoCacheKey(customerId,userId); + return redisUtils.hGet(key, gridIdAndNeighborHoodName); + } + public void delTemporaryCacheNeighBorHood(String customerId,String userId){ + String key = RedisKeys.getTemporaryNeighborHoodInfoCacheKey(customerId,userId); + redisUtils.delete(key); + } + + public void setTemporaryCacheBuilding(String customerId, Map map,String userId) { + String key = RedisKeys.getTemporaryBuildingInfoCacheKey(customerId, userId); + redisUtils.hMSet(key, map, RedisUtils.NOT_EXPIRE); + } + public Object getTemporaryCacheBuilding(String customerId,String userId,String neighborHoodIdAndBuildingName){ + String key = RedisKeys.getTemporaryBuildingInfoCacheKey(customerId,userId); + return redisUtils.hGet(key, neighborHoodIdAndBuildingName); + } + public void delTemporaryCacheBuilding(String customerId,String userId){ + String key = RedisKeys.getTemporaryBuildingInfoCacheKey(customerId,userId); + redisUtils.delete(key); + } + + + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml index d4f3847235..19291a2fc4 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml @@ -221,4 +221,44 @@ order by gridName,neighborHoodName,buildingName + + + + + + + + + + + + + + + + + + From 11ff0e4433336fe25c70f64cfa337ec79a85a4c1 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Mon, 14 Feb 2022 14:11:10 +0800 Subject: [PATCH 21/87] =?UTF-8?q?id=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java index 99e09837b0..2cc7e8cc4e 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java @@ -42,7 +42,7 @@ public class ImportHouseGeneralDTO implements Serializable { * 单元号、ID */ private Integer buildingUnit; - private Integer buildingUnitId; + private String buildingUnitId; /** * 门牌号 From 2e346ab5ef85aa14d7f15070ca476a3d1b44e8dd Mon Sep 17 00:00:00 2001 From: jianjun Date: Mon, 14 Feb 2022 14:22:35 +0800 Subject: [PATCH 22/87] =?UTF-8?q?=E6=98=AF=E5=90=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/commons/tools/constant/StrConstant.java | 3 +++ .../java/com/epmet/service/impl/IcResiUserServiceImpl.java | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java index a18f34f72b..c575c5241f 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java @@ -105,4 +105,7 @@ public interface StrConstant { * 积分规则修改的头 */ String POINT_CHANGE_HEAD = "修改了%s规则,"; + + String YES = "是"; + String NO = "否"; } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java index a8b7737b21..5e0b18bdfe 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java @@ -949,7 +949,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl remoteOptions = icResiUserImportService.listRemoteOptions(columnWrappers, e.getOptionSourceValue(), currentStaffAgencyId, "query"); if (FormItemTypeEnum.CHECKBOX.getCode().equals(e.getItemType())) { - remoteOptions.forEach((label, value) -> map.put(value, vauleStr.contains(value) ? "是" : "否")); + remoteOptions.forEach((label, value) -> map.put(value, vauleStr.contains(value) ? StrConstant.YES : StrConstant.NO)); } else if (FormItemTypeEnum.SELECT.getCode().equals(e.getItemType())) { remoteOptions.forEach((label, value) -> { if (vauleStr.equals(value)) { @@ -969,7 +969,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl { - map.put(optionDTO.getValue(), vauleStr.contains(optionDTO.getValue()) ? "是" : "否"); + map.put(optionDTO.getValue(), vauleStr.contains(optionDTO.getValue()) ? StrConstant.YES : StrConstant.NO); }); break; case SELECT: From 38397a605aa5ef48f5ff567d0add4de6f91a74a6 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Mon, 14 Feb 2022 14:35:48 +0800 Subject: [PATCH 23/87] =?UTF-8?q?=E6=88=BF=E5=B1=8B=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=9A=82=E6=8F=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/commons/tools/redis/RedisKeys.java | 11 ++ .../java/com/epmet/dao/IcBuildingDao.java | 16 ++ .../epmet/model/ImportHouseInfoListener.java | 168 ++++++++++++++---- .../java/com/epmet/redis/IcHouseRedis.java | 119 +++++++++++++ .../main/resources/mapper/IcBuildingDao.xml | 22 +++ 5 files changed, 300 insertions(+), 36 deletions(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java index 8e179837e2..580a8d97e1 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java @@ -684,4 +684,15 @@ public class RedisKeys { public static String getTemporaryBuildingInfoCacheKey(String customerId,String userId){ return rootPrefix.concat("temporary:").concat("temporaryBuilding:").concat(customerId).concat(":").concat(userId); } + + /** + * @Description 临时楼栋单元缓存key + * @param customerId + * @param userId + * @author zxc + * @date 2022/2/14 1:54 下午 + */ + public static String getTemporaryBuildingUnitInfoCacheKey(String customerId,String userId){ + return rootPrefix.concat("temporary:").concat("temporaryBuildingUnit:").concat(customerId).concat(":").concat(userId); + } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java index 8a1092573a..4a04c1ee71 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java @@ -122,4 +122,20 @@ public interface IcBuildingDao extends BaseDao { */ List selectAllNeighborHoodByGridIds(@Param("orgIds")List orgId); + /** + * @Description 根据小区ID查询楼栋 + * @param neighborHoodId + * @author zxc + * @date 2022/2/14 1:25 下午 + */ + List selectAllBuildingByNeighborHoodId(@Param("neighborHoodId")String neighborHoodId); + + /** + * @Description 根据楼栋ID查询楼栋单元 + * @param building + * @author zxc + * @date 2022/2/14 1:58 下午 + */ + List selectAllBuildingUnitByBuildingId(@Param("building")String building); + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java index d8c402b040..3d2aed1a32 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java @@ -4,6 +4,9 @@ import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.redis.common.CustomerOrgRedis; +import com.epmet.commons.tools.redis.common.bean.GridInfoCache; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.dao.IcBuildingDao; import com.epmet.dto.ImportHouseGeneralDTO; @@ -12,10 +15,7 @@ import com.epmet.redis.IcHouseRedis; import org.apache.commons.lang3.StringUtils; import org.springframework.util.CollectionUtils; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -26,17 +26,24 @@ import java.util.stream.Collectors; public class ImportHouseInfoListener extends AnalysisEventListener { List nums = new ArrayList<>(); + Integer num = NumConstant.ZERO; + List needDisposeList = new ArrayList<>(); List needInsertList = new ArrayList<>(); - Integer num = NumConstant.ZERO; + String buildingName = null; String neighborHoodName = null; String gridName = null; String agencyName = null; + Map gridInfos = null; List gridInfoDTOs = null; Map neighborHoodInfos = null; List neighborHoodInfoDTOs = null; + Map buildingInfos = null; + List buildingInfoDTOs = null; + Map buildingUnitInfos = null; + List buildingUnitInfoDTOs = null; private ImportInfoFormDTO formDTO; private IcBuildingDao icBuildingDao; @@ -53,8 +60,9 @@ public class ImportHouseInfoListener extends AnalysisEventListener getBuildingInfos(String neighborHoodId){ + buildingInfoDTOs = icBuildingDao.selectAllBuildingByNeighborHoodId(neighborHoodId); + buildingInfos = buildingInfoDTOs.stream().collect(Collectors.toMap(n -> n.getNeighborHoodId() + "_" + n.getBuildingName(), n -> n.getBuildingId())); + icHouseRedis.setTemporaryCacheBuilding(formDTO.getCustomerId(), buildingInfos, formDTO.getUserId()); + return buildingInfos; + } + + /** + * @Description 获取楼栋下的单元 + * @param buildingId + * @author zxc + * @date 2022/2/14 2:04 下午 + */ + public Map getBuildingUnitInfos(String buildingId){ + buildingUnitInfoDTOs = icBuildingDao.selectAllBuildingUnitByBuildingId(buildingId); + buildingUnitInfos = buildingInfoDTOs.stream().collect(Collectors.toMap(n -> n.getBuildingId() + "_" + n.getBuildingUnit(), n -> n.getBuildingUnitId())); + icHouseRedis.setTemporaryCacheBuildingUnit(formDTO.getCustomerId(), buildingUnitInfos, formDTO.getUserId()); + return buildingInfos; + } + @Override public void doAfterAllAnalysed(AnalysisContext context) { @@ -151,6 +246,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener map,String userId) { String key = RedisKeys.getTemporaryGridInfoCacheKey(customerId, userId); redisUtils.hMSet(key, map, RedisUtils.NOT_EXPIRE); } + + /** + * @Description 获取网格临时缓存【单个】 + * @param customerId + * @param userId + * @param gridName + * @author zxc + * @date 2022/2/14 1:49 下午 + */ public Object getTemporaryCacheGrid(String customerId,String userId,String gridName){ String key = RedisKeys.getTemporaryGridInfoCacheKey(customerId,userId); Object o = redisUtils.hGet(key, gridName); return o; } + + /** + * @Description 获取网格临时缓存【多个】 + * @param customerId + * @param userId + * @author zxc + * @date 2022/2/14 1:50 下午 + */ public Map getTemporaryCacheGrids(String customerId,String userId){ String key = RedisKeys.getTemporaryGridInfoCacheKey(customerId,userId); return redisUtils.hGetAll(key); } + + /** + * @Description 删除网格临时缓存 + * @param customerId + * @param userId + * @author zxc + * @date 2022/2/14 1:50 下午 + */ public void delTemporaryCacheGrids(String customerId,String userId){ String key = RedisKeys.getTemporaryGridInfoCacheKey(customerId,userId); redisUtils.delete(key); } + /** + * @Description 保存临时小区缓存 + * @param customerId + * @param map + * @param userId + * @author zxc + * @date 2022/2/14 1:50 下午 + */ public void setTemporaryCacheNeighBorHood(String customerId, Map map,String userId) { String key = RedisKeys.getTemporaryNeighborHoodInfoCacheKey(customerId, userId); redisUtils.hMSet(key, map, RedisUtils.NOT_EXPIRE); } + + /** + * @Description 获取临时小区缓存【单个】 + * @param customerId + * @param userId + * @param gridIdAndNeighborHoodName + * @author zxc + * @date 2022/2/14 1:50 下午 + */ public Object getTemporaryCacheNeighBorHood(String customerId,String userId,String gridIdAndNeighborHoodName){ String key = RedisKeys.getTemporaryNeighborHoodInfoCacheKey(customerId,userId); return redisUtils.hGet(key, gridIdAndNeighborHoodName); } + + /** + * @Description 删除临时小区缓存 + * @param customerId + * @param userId + * @author zxc + * @date 2022/2/14 1:51 下午 + */ public void delTemporaryCacheNeighBorHood(String customerId,String userId){ String key = RedisKeys.getTemporaryNeighborHoodInfoCacheKey(customerId,userId); redisUtils.delete(key); } + /** + * @Description 保存临时楼栋缓存 + * @param customerId + * @param map + * @param userId + * @author zxc + * @date 2022/2/14 1:51 下午 + */ public void setTemporaryCacheBuilding(String customerId, Map map,String userId) { String key = RedisKeys.getTemporaryBuildingInfoCacheKey(customerId, userId); redisUtils.hMSet(key, map, RedisUtils.NOT_EXPIRE); } + + /** + * @Description 获取临时楼栋缓存【单个】 + * @param customerId + * @param userId + * @param neighborHoodIdAndBuildingName + * @author zxc + * @date 2022/2/14 1:51 下午 + */ public Object getTemporaryCacheBuilding(String customerId,String userId,String neighborHoodIdAndBuildingName){ String key = RedisKeys.getTemporaryBuildingInfoCacheKey(customerId,userId); return redisUtils.hGet(key, neighborHoodIdAndBuildingName); } + + /** + * @Description 删除临时楼栋缓存 + * @param customerId + * @param userId + * @author zxc + * @date 2022/2/14 1:51 下午 + */ public void delTemporaryCacheBuilding(String customerId,String userId){ String key = RedisKeys.getTemporaryBuildingInfoCacheKey(customerId,userId); redisUtils.delete(key); } + /** + * @Description 保存临时楼栋单元缓存 + * @param customerId + * @param map + * @param userId + * @author zxc + * @date 2022/2/14 1:51 下午 + */ + public void setTemporaryCacheBuildingUnit(String customerId, Map map,String userId) { + String key = RedisKeys.getTemporaryBuildingUnitInfoCacheKey(customerId, userId); + redisUtils.hMSet(key, map, RedisUtils.NOT_EXPIRE); + } + + /** + * @Description 获取临时楼栋单元缓存【单个】 + * @param customerId + * @param userId + * @param buildingIdAndUnitName + * @author zxc + * @date 2022/2/14 1:51 下午 + */ + public Object getTemporaryCacheBuildingUnit(String customerId,String userId,String buildingIdAndUnitName){ + String key = RedisKeys.getTemporaryBuildingUnitInfoCacheKey(customerId,userId); + return redisUtils.hGet(key, buildingIdAndUnitName); + } + /** + * @Description 删除临时楼栋单元缓存 + * @param customerId + * @param userId + * @author zxc + * @date 2022/2/14 1:51 下午 + */ + public void delTemporaryCacheBuildingUnit(String customerId,String userId){ + String key = RedisKeys.getTemporaryBuildingUnitInfoCacheKey(customerId,userId); + redisUtils.delete(key); + } } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml index 19291a2fc4..93ff429c4e 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml @@ -261,4 +261,26 @@ ) + + + + + + From be3c7dc3724b071207ee9e96947b40c5b3c93cdb Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Mon, 14 Feb 2022 14:59:27 +0800 Subject: [PATCH 24/87] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java | 6 ++++++ .../main/java/com/epmet/constant/CustomerGridConstant.java | 2 ++ 2 files changed, 8 insertions(+) diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java index 2cc7e8cc4e..ce310c480d 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java @@ -19,6 +19,8 @@ public class ImportHouseGeneralDTO implements Serializable { */ private String agencyName; private String agencyId; + private String pid; + private String pids; /** * 网格名、ID @@ -37,6 +39,10 @@ public class ImportHouseGeneralDTO implements Serializable { */ private String buildingName; private String buildingId; + private String type; + private Integer totalUnitNum; + private Integer totalFloorNum; + private Integer totalHouseNum; /** * 单元号、ID diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/CustomerGridConstant.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/CustomerGridConstant.java index 4374038f6f..5b8289ffa1 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/CustomerGridConstant.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/CustomerGridConstant.java @@ -16,4 +16,6 @@ public interface CustomerGridConstant { String DEPT = "dept"; String GRID = "grid"; + + String NEIGHBORHOOD = "neighborHood"; } From 1414888249b8c26293b4f70672f4197aee863011 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Mon, 14 Feb 2022 15:07:46 +0800 Subject: [PATCH 25/87] =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/dto/ImportHouseGeneralDTO.java | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java index ce310c480d..ea6fbb6b49 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java @@ -1,5 +1,6 @@ package com.epmet.dto; +import com.epmet.commons.tools.constant.NumConstant; import lombok.Data; import java.io.Serializable; @@ -19,6 +20,10 @@ public class ImportHouseGeneralDTO implements Serializable { */ private String agencyName; private String agencyId; + + /** + * agencyId的pid + */ private String pid; private String pids; @@ -39,9 +44,25 @@ public class ImportHouseGeneralDTO implements Serializable { */ private String buildingName; private String buildingId; + + /** + * 房屋类型 + */ private String type; - private Integer totalUnitNum; + + /** + * 单元数 + */ + private Integer totalUnitNum = NumConstant.ONE; + + /** + * 层数 + */ private Integer totalFloorNum; + + /** + * 户数 + */ private Integer totalHouseNum; /** From a5db5669c0da6eb7a24d663115d76cfe10e72fc9 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 14 Feb 2022 15:24:45 +0800 Subject: [PATCH 26/87] =?UTF-8?q?=E5=85=9A=E5=91=98=E9=A3=8E=E9=87=87?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=80=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../partymember/service/impl/IcPartymemberStyleServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java index 76f75c7e45..e16fdd1384 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java @@ -197,6 +197,7 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl list = baseDao.selectList(wrapper); PageInfo pageInfo = new PageInfo<>(list); List dtoList = ConvertUtils.sourceToTarget(list, IcPartymemberStyleDTO.class); From 26936e18b152482a675a25385f8e7d11f5cf900f Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Mon, 14 Feb 2022 15:49:15 +0800 Subject: [PATCH 27/87] =?UTF-8?q?=E7=BD=91=E6=A0=BC=E5=91=98=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E4=B8=8A=E6=8A=A5=E6=8E=A5=E5=8F=A3=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E7=9A=84=E6=95=B0=E6=8D=AEpids=E6=98=AF=E4=BB=8E=E4=B8=89?= =?UTF-8?q?=E4=B8=AA=E8=A1=97=E9=81=93=E5=BC=80=E5=A7=8B=E7=9A=84=EF=BC=8C?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E5=9C=A8=E5=89=8D=E8=BE=B9=E6=8B=BC=E4=B8=8A?= =?UTF-8?q?=E5=B9=B3=E9=98=B4=E5=8E=BF=E7=9A=84=E7=BB=84=E7=BB=87id?= =?UTF-8?q?=E6=89=8D=E5=8F=AF=E4=BB=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/commons/tools/constant/StrConstant.java | 2 ++ .../java/com/epmet/service/impl/StatsUserServiceImpl.java | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java index a18f34f72b..67f467f63c 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java @@ -95,6 +95,8 @@ public interface StrConstant { String SPECIAL_CUSTOMER = "150282ed25c14ff0785e7e06283b6283"; //平音客户 String PY_CUSTOMER = "6f203e30de1a65aab7e69c058826cd80"; + //平音客户跟组织Id + String PY_ROOT_AGENCY = "53613e1c5de6ed473467f0159a10b135"; /** * 单位积分,积分上限,积分说明,积分事件 diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsUserServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsUserServiceImpl.java index a3ccd6c5a1..0f3f9de0ce 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsUserServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsUserServiceImpl.java @@ -3,6 +3,7 @@ package com.epmet.service.impl; import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.utils.DateUtils; @@ -252,7 +253,8 @@ public class StatsUserServiceImpl implements StatsUserService { m.setSourceType("external"); m.setParentCustomerId(crm.getParentCustomerId()); m.setPid(pid.toString()); - m.setPids(pids.toString()); + //20220214 上报数据的pids是从街道开始,需要在前边拼接上平阴县的id才能保证后续的查询用like时可以筛选出数据 sun + m.setPids(StrConstant.PY_ROOT_AGENCY + ":" + pids.toString()); } else { log.warn(String.format("网格员数据分析上报,数据错误,根据agencyId未查询到组织信息,客户Id->%s,组织Id->%s", m.getCustomerId(), m.getAgencyId())); iterator.remove(); From d51f3f1fa829b3a86eb563ba2c88201c3542f451 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Mon, 14 Feb 2022 16:00:09 +0800 Subject: [PATCH 28/87] =?UTF-8?q?=E6=88=BF=E5=B1=8B=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=9A=82=E6=8F=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/constant/CustomerGridConstant.java | 1 + .../java/com/epmet/dao/IcBuildingDao.java | 8 ++ .../epmet/model/ImportHouseInfoListener.java | 124 +++++++++++++----- .../main/resources/mapper/IcBuildingDao.xml | 12 ++ 4 files changed, 109 insertions(+), 36 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/CustomerGridConstant.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/CustomerGridConstant.java index 5b8289ffa1..bfe1fbe93c 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/CustomerGridConstant.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/CustomerGridConstant.java @@ -18,4 +18,5 @@ public interface CustomerGridConstant { String GRID = "grid"; String NEIGHBORHOOD = "neighborHood"; + String BUILDING = "building"; } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java index 4a04c1ee71..9971ff2016 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java @@ -138,4 +138,12 @@ public interface IcBuildingDao extends BaseDao { */ List selectAllBuildingUnitByBuildingId(@Param("building")String building); + /** + * @Description 根据ID查询小区 + * @param id + * @author zxc + * @date 2022/2/14 3:16 下午 + */ + ImportHouseGeneralDTO selectNeighborHoodById(@Param("id")String id); + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java index 3d2aed1a32..f7a9ab5681 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java @@ -6,8 +6,11 @@ import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.redis.common.CustomerOrgRedis; +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.constant.CustomerAgencyConstant; +import com.epmet.constant.CustomerGridConstant; import com.epmet.dao.IcBuildingDao; import com.epmet.dto.ImportHouseGeneralDTO; import com.epmet.dto.form.ImportInfoFormDTO; @@ -40,6 +43,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener gridInfoDTOs = null; Map neighborHoodInfos = null; List neighborHoodInfoDTOs = null; + ImportHouseGeneralDTO neighborHoodGeneralDTO = null; Map buildingInfos = null; List buildingInfoDTOs = null; Map buildingUnitInfos = null; @@ -63,47 +67,62 @@ public class ImportHouseInfoListener extends AnalysisEventListener collect = needDisposeList.stream().collect(Collectors.toMap(n -> n.getBuildingId() + "_" + n.getBuildingUnitId() + "_" + n.getDoorName(), n -> StringUtils.isNotBlank(n.getHouseId()) ? n.getHouseId() : "")); - icHouseRedis.setTemporaryCacheHouse(formDTO.getCustomerId(), collect, formDTO.getUserId()); -// Map temporaryCacheHouses = icHouseRedis.getTemporaryCacheHouses(formDTO.getCustomerId(), formDTO.getUserId()); - // TODO 等待方法 - List result = new ArrayList<>(); - //把房屋ID不为空的行号加入nums,说明已存在 - result.forEach(r -> { - if (StringUtils.isNotBlank(r.getHouseId())){ - nums.add(r.getNum()); - } - }); - } - }else if (formDTO.getOrgType().equals("neighborHood")){ + if (formDTO.getOrgType().equals(CustomerGridConstant.BUILDING)){ + disposeBuildingHouse(dto); + }else if (formDTO.getOrgType().equals(CustomerGridConstant.NEIGHBORHOOD)){ disposeNeighborHoodHouse(dto); - }else if (formDTO.getOrgType().equals("grid")){ + }else if (formDTO.getOrgType().equals(CustomerGridConstant.GRID)){ disposeGridHouse(dto); - }else if (formDTO.getOrgType().equals("agency")){ + }else if (formDTO.getOrgType().equals(CustomerGridConstant.AGENCY)){ disposeAgencyHouse(dto); } } - public void disposeNeighborHoodHouse(ImportHouseGeneralDTO dto){ - neighborHoodName = null == neighborHoodName ? icBuildingDao.selectNeighborHoodNameById(formDTO.getOrgId()) : neighborHoodName; - //不是本小区的 - if (!dto.getNeighborHoodName().equals(neighborHoodName)){ + /** + * @Description 左侧树点击楼栋时调用 + * @param dto + * @author zxc + * @date 2022/2/14 3:23 下午 + */ + public void disposeBuildingHouse(ImportHouseGeneralDTO dto){ + buildingName = null == buildingName ? icBuildingDao.selectBuildingNameById(formDTO.getOrgId()) : buildingName; + // 排除不是本楼的 + if (!dto.getBuildingName().equals(buildingName)){ nums.add(num); }else { } } + /** + * @Description 左侧树点击小区时调用 + * @param dto + * @author zxc + * @date 2022/2/14 3:23 下午 + */ + public void disposeNeighborHoodHouse(ImportHouseGeneralDTO dto){ + neighborHoodGeneralDTO = null == neighborHoodGeneralDTO ? icBuildingDao.selectNeighborHoodById(formDTO.getOrgId()) : neighborHoodGeneralDTO; + //排除不是本小区的 + if (!dto.getNeighborHoodName().equals(neighborHoodGeneralDTO.getNeighborHoodName())){ + nums.add(num); + }else { + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(neighborHoodGeneralDTO.getGridId()); + if (null == gridInfo){ + throw new EpmetException("查询网格失败..."); + } + // 排除网格名不一样但小区名一样 + if (!gridInfo.getGridName().equals(dto.getGridName()) && neighborHoodGeneralDTO.getNeighborHoodName().equals(dto.getNeighborHoodName())){ + nums.add(num); + return; + } + dto.setNeighborHoodId(formDTO.getOrgId()); + dto.setGridId(neighborHoodGeneralDTO.getGridId()); + dto.setAgencyId(neighborHoodGeneralDTO.getAgencyId()); + // 填充各种ID + fillData(dto,CustomerGridConstant.NEIGHBORHOOD); + } + } + /** * @Description 左侧树点击网格时调用 * @param dto @@ -123,7 +142,14 @@ public class ImportHouseInfoListener extends AnalysisEventListener gridIds = new ArrayList<>(); + if (orgType.equals(CustomerGridConstant.GRID)){ + gridIds = Arrays.asList(formDTO.getOrgId()); + }else if (orgType.equals(CustomerGridConstant.AGENCY)){ + gridIds = gridInfoDTOs.stream().map(m -> m.getGridId()).collect(Collectors.toList()); + } + neighborHoodInfos = null == neighborHoodInfos ? getNeighborHoodInfos(gridIds) : neighborHoodInfos; + Object cacheNeighBorHood = icHouseRedis.getTemporaryCacheNeighBorHood(formDTO.getCustomerId(), formDTO.getUserId(), formDTO.getOrgId() + "_" + dto.getNeighborHoodName()); + // 赋值小区ID + dto.setNeighborHoodId(null == cacheNeighBorHood ? "" : cacheNeighBorHood.toString()); + } if (StringUtils.isNotBlank(dto.getNeighborHoodId())){ //小区ID不为空赋值楼栋ID buildingInfos = null == buildingInfos ? getBuildingInfos(dto.getNeighborHoodId()) : buildingInfos; @@ -239,6 +280,17 @@ public class ImportHouseInfoListener extends AnalysisEventListener + + + From 85eed0ca99019aac7053bab23785a9f76acd3b56 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Mon, 14 Feb 2022 16:11:26 +0800 Subject: [PATCH 29/87] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=B0=8F=E5=8C=BA?= =?UTF-8?q?=EF=BC=8C=E6=A5=BC=E6=A0=8B=EF=BC=8C=E5=8D=95=E5=85=83ID?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/service/IcBuildingService.java | 11 ++ .../epmet/service/IcBuildingUnitService.java | 10 ++ .../epmet/service/IcNeighborHoodService.java | 12 ++ .../service/impl/IcBuildingServiceImpl.java | 20 +++ .../impl/IcBuildingUnitServiceImpl.java | 20 +++ .../impl/IcNeighborHoodServiceImpl.java | 151 +++++++++++++++++- 6 files changed, 216 insertions(+), 8 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcBuildingService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcBuildingService.java index 5b5ff7d05d..b7279e59ad 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcBuildingService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcBuildingService.java @@ -102,4 +102,15 @@ public interface IcBuildingService extends BaseService { * @Date 2021/10/26 14:43 */ List getBuildingOptions(String neighborHoodId); + + /** + * 根据楼栋名获取楼栋信息 + * + * @Param neighborHoodId + * @Param buildingName + * @Return {@link IcBuildingDTO} + * @Author zhaoqifeng + * @Date 2022/2/14 15:19 + */ + IcBuildingDTO getBuildingInfo(String neighborHoodId, String buildingName); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcBuildingUnitService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcBuildingUnitService.java index 40045f2b75..0d315539e6 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcBuildingUnitService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcBuildingUnitService.java @@ -102,4 +102,14 @@ public interface IcBuildingUnitService extends BaseService * @Date 2021/10/26 14:49 */ List getUnitOptions(String buildingId); + + /** + * 根据单元名获取单元信息 + * @Param buildingId + * @Param unitName + * @Return {@link IcBuildingUnitDTO} + * @Author zhaoqifeng + * @Date 2022/2/14 15:42 + */ + IcBuildingUnitDTO getUnitInfo(String buildingId, String unitName); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java index fa4305de08..afadcdd449 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java @@ -22,6 +22,7 @@ import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.IcNeighborHoodDTO; +import com.epmet.dto.ImportHouseGeneralDTO; import com.epmet.dto.form.ImportInfoFormDTO; import com.epmet.entity.IcNeighborHoodEntity; import org.springframework.web.multipart.MultipartFile; @@ -125,4 +126,15 @@ public interface IcNeighborHoodService extends BaseService * @date 2022/2/12 11:11 上午 */ Result neighborhoodImport(ImportInfoFormDTO formDTO, MultipartFile file) throws IOException; + + /** + * 获取导入小区,楼栋,单元ID + * + * @Param formDTO + * @Param list + * @Return {@link List< ImportHouseGeneralDTO>} + * @Author zhaoqifeng + * @Date 2022/2/14 9:40 + */ + List getImportInfo(ImportInfoFormDTO formDTO, List list); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcBuildingServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcBuildingServiceImpl.java index ea85e2ce33..122e9755a0 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcBuildingServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcBuildingServiceImpl.java @@ -133,4 +133,24 @@ public class IcBuildingServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(IcBuildingEntity::getNeighborHoodId, neighborHoodId); + wrapper.eq(IcBuildingEntity::getBuildingName, buildingName); + IcBuildingEntity entity = baseDao.selectOne(wrapper); + return ConvertUtils.sourceToTarget(entity, IcBuildingDTO.class); + } + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcBuildingUnitServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcBuildingUnitServiceImpl.java index 4b8cb1f094..3b8409c0cd 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcBuildingUnitServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcBuildingUnitServiceImpl.java @@ -133,4 +133,24 @@ public class IcBuildingUnitServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(IcBuildingUnitEntity::getBuildingId, buildingId); + wrapper.eq(IcBuildingUnitEntity::getUnitNum, unitName); + IcBuildingUnitEntity entity = baseDao.selectOne(wrapper); + return ConvertUtils.sourceToTarget(entity, IcBuildingUnitDTO.class); + } + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java index 47b033f4ff..2fe79101fe 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java @@ -39,17 +39,12 @@ import com.epmet.constant.CustomerGridConstant; import com.epmet.dao.CustomerGridDao; import com.epmet.dao.IcNeighborHoodDao; import com.epmet.dao.IcPropertyManagementDao; -import com.epmet.dto.IcNeighborHoodDTO; -import com.epmet.dto.NeighborHoodAndManagementDTO; +import com.epmet.dto.*; import com.epmet.dto.form.ImportInfoFormDTO; import com.epmet.dto.result.InfoByNamesResultDTO; -import com.epmet.entity.IcNeighborHoodEntity; -import com.epmet.entity.IcNeighborHoodPropertyEntity; -import com.epmet.entity.IcPropertyManagementEntity; +import com.epmet.entity.*; import com.epmet.excel.IcNeighborHoodExcel; -import com.epmet.service.IcNeighborHoodPropertyService; -import com.epmet.service.IcNeighborHoodService; -import com.epmet.service.IcPropertyManagementService; +import com.epmet.service.*; import com.epmet.util.ExcelPoiUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -60,6 +55,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; +import javax.annotation.Resource; import java.io.IOException; import java.util.*; import java.util.stream.Collectors; @@ -82,6 +78,10 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl page(Map params) { @@ -406,4 +406,139 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl} + * @Author zhaoqifeng + * @Date 2022/2/14 9:40 + */ + @Override + public List getImportInfo(ImportInfoFormDTO formDTO, List list) { + list.forEach(item -> { + if (StringUtils.isEmpty(item.getNeighborHoodId())) { + //1.获取小区ID,判断小区是否存在,不存在则添加小区,存在则直接获取小区ID + String neighborHoodId = getNeighborHoodId(formDTO.getCustomerId(), item); + item.setNeighborHoodId(neighborHoodId); + //2.获取楼栋ID,判断楼栋是否存在,不存在则添加楼栋,存在则直接获取楼栋ID + if (StringUtils.isEmpty(item.getBuildingId())) { + String buildingId = getBuildingId(formDTO.getCustomerId(), item); + item.setBuildingId(buildingId); + } + //3.获取单元ID,判断单元是否存在,不存在则添加单元,存在则直接获取单元ID + if (null != item.getBuildingUnit()) { + String unitId = getUnitId(formDTO.getCustomerId(), item); + item.setBuildingUnitId(unitId); + } + } else if (StringUtils.isNotEmpty(item.getNeighborHoodId()) && StringUtils.isEmpty(item.getBuildingId())) { + //获取楼栋ID,判断楼栋是否存在,不存在则添加楼栋,存在则直接获取楼栋ID + String buildingId = getBuildingId(formDTO.getCustomerId(), item); + item.setBuildingId(buildingId); + //获取单元ID,判断单元是否存在,不存在则添加单元,存在则直接获取单元ID + if (null != item.getBuildingUnit()) { + String unitId = getUnitId(formDTO.getCustomerId(), item); + item.setBuildingUnitId(unitId); + } + } + }); + + return list; + } + + /** + * 根据小区名获取小区ID,如果没有,先新增小区 + * @Param gridId + * @Param name + * @Return {@link String} + * @Author zhaoqifeng + * @Date 2022/2/14 9:50 + */ + private String getNeighborHoodId(String customerId, ImportHouseGeneralDTO info) { + //根据网格ID和小区名获取小区信息 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(IcNeighborHoodEntity::getGridId, info.getGridId()); + wrapper.eq(IcNeighborHoodEntity::getNeighborHoodName, info.getNeighborHoodName()); + IcNeighborHoodEntity entity = baseDao.selectOne(wrapper); + if (null != entity) { + return entity.getId(); + } + entity = new IcNeighborHoodEntity(); + entity.setCustomerId(customerId); + entity.setAgencyId(info.getAgencyId()); + entity.setParentAgencyId(info.getPid()); + entity.setAgencyPids(info.getPids()); + entity.setGridId(info.getGridId()); + entity.setNeighborHoodName(info.getNeighborHoodName()); + baseDao.insert(entity); + return entity.getId(); + } + + /** + * 获取楼栋ID + * @Param customerId + * @Param info + * @Return {@link String} + * @Author zhaoqifeng + * @Date 2022/2/14 15:36 + */ + private String getBuildingId(String customerId, ImportHouseGeneralDTO info) { + //根据小区ID和楼栋名获取楼栋信息 + IcBuildingDTO building = icBuildingService.getBuildingInfo(info.getNeighborHoodId(), info.getBuildingName()); + if (null != building) { + return building.getId(); + } + IcBuildingEntity buildingEntity = new IcBuildingEntity(); + buildingEntity.setCustomerId(customerId); + buildingEntity.setNeighborHoodId(info.getNeighborHoodId()); + buildingEntity.setBuildingName(info.getBuildingName()); + buildingEntity.setType(null == info.getType()?NumConstant.ONE_STR:info.getType()); + buildingEntity.setTotalUnitNum(info.getTotalUnitNum()); + buildingEntity.setTotalFloorNum(info.getTotalFloorNum()); + buildingEntity.setTotalHouseNum(info.getTotalHouseNum()); + icBuildingService.insert(buildingEntity); + if (null != info.getTotalUnitNum() && info.getTotalUnitNum() > NumConstant.ZERO) { + //设置楼宇单元 + List unitList = new ArrayList<>(); + for (int i =0 ; i Date: Mon, 14 Feb 2022 16:35:00 +0800 Subject: [PATCH 30/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=201.=E5=B1=85?= =?UTF-8?q?=E6=B0=91=E4=BF=A1=E6=81=AF=E5=AF=BC=E5=85=A5=EF=BC=9A=E5=B0=86?= =?UTF-8?q?=E7=B1=BB=E5=88=AB=E5=8F=98=E6=9B=B4=E6=95=B0=E6=8D=AE=E6=94=BE?= =?UTF-8?q?=E5=88=B0redis=E4=B8=AD=EF=BC=8C=E5=87=8F=E5=B0=91=E5=86=85?= =?UTF-8?q?=E5=AD=98=E5=8D=A0=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/commons/tools/redis/RedisKeys.java | 33 ++++++ .../epmet/bean/ResiImportCategoryData.java | 13 +- .../ResiImportResiCategoryChangedCache.java | 7 +- ... => IcResiImportDynamicExcelListener.java} | 10 +- .../impl/IcResiUserImportServiceImpl.java | 111 +++++++++++++----- 5 files changed, 126 insertions(+), 48 deletions(-) rename epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/{DynamicEasyExcelListener.java => IcResiImportDynamicExcelListener.java} (91%) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java index dc3fb232bc..53c50c5c2e 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java @@ -640,4 +640,37 @@ public class RedisKeys { public static String getHouseInfoCacheKey(String houseId,String customerId){ return rootPrefix.concat("house:").concat(customerId).concat(":").concat(houseId); } + + /** + * 居民导入-缓存目录key + * @param importTag + * @return + */ + public static String icResiImportBaseKey(String importTag) { + return rootPrefix.concat("resi:").concat("import:").concat(importTag); + } + + /** + * 居民导入-数据分类的key + * add:新增居民 + * category:类别变更 + * transfer:调动 + * @param importTag + * @param type + * @return + */ + public static String icResiImportTypeKey(String importTag, String type) { + return icResiImportBaseKey(importTag).concat(":").concat(type); + } + + /** + * 居民导入-详细信息key + * @param importTag + * @param type + * @param resiId + * @return + */ + public static String icResiImportResiCategoryKey(String importTag, String type, String resiId) { + return icResiImportTypeKey(importTag, type).concat(":").concat(resiId); + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/ResiImportCategoryData.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/ResiImportCategoryData.java index 436be52b29..1526038d21 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/ResiImportCategoryData.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/ResiImportCategoryData.java @@ -14,6 +14,7 @@ import java.util.Map; @Data public class ResiImportCategoryData { + private String resiId; private String agencyId; private String gridId; private String villageId; @@ -30,7 +31,8 @@ public class ResiImportCategoryData { public ResiImportCategoryData() { } - public ResiImportCategoryData(String agencyId, String gridId, String villageId, String buildId, String unitId, String homeId, Map categories) { + public ResiImportCategoryData(String resiId, String agencyId, String gridId, String villageId, String buildId, String unitId, String homeId, Map categories) { + this.resiId = resiId; this.agencyId = agencyId; this.gridId = gridId; this.villageId = villageId; @@ -39,13 +41,4 @@ public class ResiImportCategoryData { this.homeId = homeId; this.categories = categories; } - - public ResiImportCategoryData(String agencyId, String gridId, String villageId, String buildId, String unitId, String homeId) { - this.agencyId = agencyId; - this.gridId = gridId; - this.villageId = villageId; - this.buildId = buildId; - this.unitId = unitId; - this.homeId = homeId; - } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/ResiImportResiCategoryChangedCache.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/ResiImportResiCategoryChangedCache.java index 6203c917a9..29470e875c 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/ResiImportResiCategoryChangedCache.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/ResiImportResiCategoryChangedCache.java @@ -11,11 +11,16 @@ import java.util.Map; @Data public class ResiImportResiCategoryChangedCache { + /** + * 导入的tag,用来标记唯一一次导入操作。 + */ + private String importTag; + /** * 新增居民 * Map> */ - private Map newResis = new HashMap<>(); +// private Map newResis = new HashMap<>(); /** * 调动的居民 diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/DynamicEasyExcelListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcResiImportDynamicExcelListener.java similarity index 91% rename from epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/DynamicEasyExcelListener.java rename to epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcResiImportDynamicExcelListener.java index bf65c3bbf2..427e70f0a3 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/DynamicEasyExcelListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcResiImportDynamicExcelListener.java @@ -17,7 +17,7 @@ import java.util.stream.Collectors; * 创建一个监听器 */ @Slf4j -public class DynamicEasyExcelListener extends AnalysisEventListener> { +public class IcResiImportDynamicExcelListener extends AnalysisEventListener> { /** * 一次性导入的条数 @@ -89,10 +89,10 @@ public class DynamicEasyExcelListener extends AnalysisEventListener dataList = new HashMap<>(); - public DynamicEasyExcelListener(IcResiUserImportServiceImpl icResiUserImportService, String customerId, - String currentUserId, String currUserAgencyId, - String currUserAgencyPids, Boolean isPrimary, String tableName, - List formItemList, Integer headRowNumber) { + public IcResiImportDynamicExcelListener(IcResiUserImportServiceImpl icResiUserImportService, String customerId, + String currentUserId, String currUserAgencyId, + String currUserAgencyPids, Boolean isPrimary, String tableName, + List formItemList, Integer headRowNumber) { this.customerId = customerId; this.icResiUserImportService = icResiUserImportService; diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java index d236c92004..23248b0c83 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java @@ -3,8 +3,10 @@ package com.epmet.service.impl; import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.annotation.Excel; import cn.afterturn.easypoi.excel.entity.ExportParams; +import cn.hutool.core.bean.BeanUtil; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcelFactory; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.epmet.bean.ResiImportCategoryData; import com.epmet.bean.ResiImportResiCategoryChangedCache; import com.epmet.bean.ResiImportChangedData; @@ -16,8 +18,11 @@ import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.feign.ResultDataResolver; +import com.epmet.commons.tools.redis.RedisKeys; +import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.security.user.LoginUserUtil; +import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.dao.IcResiUserDao; import com.epmet.dao.IcUserChangeDetailedDao; @@ -31,7 +36,7 @@ import com.epmet.entity.IcUserChangeDetailedEntity; import com.epmet.entity.IcUserChangeRecordEntity; import com.epmet.entity.IcUserTransferRecordEntity; import com.epmet.enums.IcResiUserTableEnum; -import com.epmet.excel.handler.DynamicEasyExcelListener; +import com.epmet.excel.handler.IcResiImportDynamicExcelListener; import com.epmet.feign.EpmetAdminOpenFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.GovOrgOpenFeignClient; @@ -118,6 +123,9 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res @Autowired private UserService userService; + @Autowired + private RedisUtils redisUtils; + /** * 字表中不需要的列 @@ -253,12 +261,12 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res } // 执行人员类别变更记录 - Map newResis = newlyOrChangedResi.get().getNewResis(); +// Map newResis = newlyOrChangedResi.get().getNewResis(); Map categoryChangedResis = newlyOrChangedResi.get().getCategoryChangedResis(); Map transferedResis = newlyOrChangedResi.get().getTransferedResis(); //保存调动或者变更记录 - saveNewResiCategoryRecord(newResis); + saveNewResiCategoryRecord(); saveResiCategoryChangedRecord(categoryChangedResis); saveTransferedResiRecord(transferedResis); @@ -268,6 +276,16 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res log.error("【导入IC居民附加信息】下载导入结果信息失败:{}", ExceptionUtils.getErrorStackTrace(e)); } } finally { + // 清空rediskey + try { + String importTag = newlyOrChangedResi.get().getImportTag(); + redisUtils.deleteByPattern(RedisKeys.icResiImportBaseKey(importTag).concat("*")); + } catch (Exception e) { + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【导入IC居民附加信息】清空redis 类别缓存出错:{}", errorMsg); + } + + // 清空线程变量 skipedRows.remove(); errorRows.remove(); newlyOrChangedResi.remove(); @@ -280,6 +298,10 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res * threadLocal初始化 */ private void initImportThreadLocal(String customerId) { + // 生成importTag,用于标记唯一一次导入操作,导入完成之后,用来删除redis里面临时的key + String operatorId = loginUserUtil.getLoginUserId(); + String importTag = operatorId + System.currentTimeMillis(); + // 跳过的,不导入的行 Map> skipedRowsMap = new LinkedHashMap<>(); for (IcResiUserTableEnum e : IcResiUserTableEnum.values()) { @@ -296,6 +318,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res // 居民类别信息 ResiImportResiCategoryChangedCache c = new ResiImportResiCategoryChangedCache(); + c.setImportTag(importTag); newlyOrChangedResi.set(c); List resiCategoryItems = getResultDataOrThrowsException(operCustomizeOpenFeignClient.listResiCategoryItems(customerId), @@ -323,7 +346,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res private void importIcResiBaseInfoFromExcel(List formItemList, String excelPathName, int sheetNo, int headRowNumber, String currUserAgencyId, String currUserAgencyPids, String currentUserId, String tableName, String customerId) { - DynamicEasyExcelListener readListener = new DynamicEasyExcelListener(this, customerId, currentUserId, currUserAgencyId, currUserAgencyPids, + IcResiImportDynamicExcelListener readListener = new IcResiImportDynamicExcelListener(this, customerId, currentUserId, currUserAgencyId, currUserAgencyPids, true, tableName, formItemList, headRowNumber); EasyExcel.read(new File(excelPathName)).registerReadListener(readListener).headRowNumber(headRowNumber).sheet(sheetNo).doRead(); } @@ -343,7 +366,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res private void importIcResiExtraInfoFromExcel(List formItemList, String excelPathName, int sheetNo, int headRowNumber, String currUserAgencyId, String currentUserId, String targetTableName, String customerId) { - DynamicEasyExcelListener readListener = new DynamicEasyExcelListener(this, customerId, currentUserId, currUserAgencyId, null, + IcResiImportDynamicExcelListener readListener = new IcResiImportDynamicExcelListener(this, customerId, currentUserId, currUserAgencyId, null, false, targetTableName, formItemList, headRowNumber); EasyExcelFactory.read(new File(excelPathName)).registerReadListener(readListener).headRowNumber(headRowNumber).sheet(sheetNo).doRead(); } @@ -415,8 +438,10 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res } } else { // 新增居民 + String resiId = IdWorker.getIdStr(); + columnAndValues.put("CREATED_BY", currentUserId); - columnAndValues.put("ID", UUID.randomUUID().toString().replace("-", "")); + columnAndValues.put("ID", resiId); icResiUserDao.add(tableName, columnAndValues); // 过滤出本居民含有哪些类别 @@ -425,14 +450,26 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res .filter((categoryColumnName) -> "1".equals(columnAndValues.get(categoryColumnName))) .collect(Collectors.toMap((k) -> k, (k) -> columnAndValues.get(k))); - newlyOrChangedResi.get().getNewResis().put(columnAndValues.get("ID"), - new ResiImportCategoryData(columnAndValues.get("AGENCY_ID"), - columnAndValues.get("GRID_ID"), - columnAndValues.get("VILLAGE_ID"), - columnAndValues.get("BUILD_ID"), - columnAndValues.get("UNIT_ID"), - columnAndValues.get("HOME_ID"), - resiCategories)); +// newlyOrChangedResi.get().getNewResis().put(resiId, +// new ResiImportCategoryData(columnAndValues.get("AGENCY_ID"), +// columnAndValues.get("GRID_ID"), +// columnAndValues.get("VILLAGE_ID"), +// columnAndValues.get("BUILD_ID"), +// columnAndValues.get("UNIT_ID"), +// columnAndValues.get("HOME_ID"), +// resiCategories)); + + ResiImportCategoryData categoryData = new ResiImportCategoryData(resiId, + columnAndValues.get("AGENCY_ID"), + columnAndValues.get("GRID_ID"), + columnAndValues.get("VILLAGE_ID"), + columnAndValues.get("BUILD_ID"), + columnAndValues.get("UNIT_ID"), + columnAndValues.get("HOME_ID"), + resiCategories); + + redisUtils.hMSet(RedisKeys.icResiImportResiCategoryKey(newlyOrChangedResi.get().getImportTag(), "add", resiId), BeanUtil.beanToMap(categoryData)); + } } catch (Exception e) { @@ -1040,6 +1077,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res } ResiImportCategoryData oldOne = new ResiImportCategoryData( + existingResiMap.get("ID"), existingResiMap.get("AGENCY_ID"), existingResiMap.get("GRID_ID"), existingResiMap.get("VILLAGE_ID"), @@ -1049,7 +1087,8 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res existingResiCategories); ResiImportCategoryData newOne = new ResiImportCategoryData( - existingResiMap.get("AGENCY_ID"), + newResiMap.get("ID"), + newResiMap.get("AGENCY_ID"), newResiMap.get("GRID_ID"), newResiMap.get("VILLAGE_ID"), newResiMap.get("BUILD_ID"), @@ -1100,6 +1139,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res } ResiImportCategoryData oldOne = new ResiImportCategoryData( + existingResiMap.get("ID"), existingResiMap.get("AGENCY_ID"), existingResiMap.get("GRID_ID"), existingResiMap.get("VILLAGE_ID"), @@ -1108,7 +1148,9 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res existingResiMap.get("HOME_ID"), oldCategories); - ResiImportCategoryData newOne = new ResiImportCategoryData(existingResiMap.get("AGENCY_ID"), + ResiImportCategoryData newOne = new ResiImportCategoryData( + newResiMap.get("ID"), + newResiMap.get("AGENCY_ID"), newResiMap.get("GRID_ID"), newResiMap.get("VILLAGE_ID"), newResiMap.get("BUILD_ID"), @@ -1127,14 +1169,19 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res private void saveSubTableInfoToCategoryChangedResiCache(String icResiId, String columnName, Map resiInfoMap) { ResiImportResiCategoryChangedCache cc = newlyOrChangedResi.get(); - Map newResis = cc.getNewResis(); +// Map newResis = cc.getNewResis(); Map categoryChangedResis = cc.getCategoryChangedResis(); Map transferedResis = cc.getTransferedResis(); - ResiImportCategoryData newResi = newResis.get(icResiId); - if (newResi != null) { +// ResiImportCategoryData newResi = newResis.get(icResiId); + + String userCateRedisKey = RedisKeys.icResiImportResiCategoryKey(newlyOrChangedResi.get().getImportTag(), "add", icResiId); + Map < String, Object > addUserMap = redisUtils.hGetAll(userCateRedisKey); + if (addUserMap != null) { //说明是新增居民 - newResi.getCategories().put(columnName, "1"); + ResiImportCategoryData newResiCateData = ConvertUtils.mapToEntity(addUserMap, ResiImportCategoryData.class); + newResiCateData.getCategories().put(columnName, "1"); + redisUtils.hMSet(userCateRedisKey, BeanUtil.beanToMap(newResiCateData)); return; } @@ -1286,35 +1333,35 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res /** * 保存新增居民类别记录 - * @param newResis */ - public void saveNewResiCategoryRecord(Map newResis) { + public void saveNewResiCategoryRecord() { Date now = new Date(); + Set newResiKeys = redisUtils.keys(RedisKeys.icResiImportTypeKey(newlyOrChangedResi.get().getImportTag(), "add").concat("*")); + CustomerStaffInfoCacheResult operator = CustomerStaffRedis.getStaffInfo(loginUserUtil.getLoginUserCustomerId(), loginUserUtil.getLoginUserId()); - for (Map.Entry resi : newResis.entrySet()) { - String resiId = resi.getKey(); - ResiImportCategoryData data = resi.getValue(); + for (String resiKey : newResiKeys) { + Map newResiInfoMap = redisUtils.hGetAll(resiKey); + ResiImportCategoryData newResiInfoObj = ConvertUtils.mapToEntity(newResiInfoMap, ResiImportCategoryData.class); - IcResiUserEntity resiInfo = icResiUserDao.selectById(resiId); + IcResiUserEntity resiInfo = icResiUserDao.selectById(newResiInfoObj.getResiId()); // 插入changeRecord - IcUserChangeRecordEntity changeRecord = fillChangeRecord(loginUserUtil.getLoginUserCustomerId(), resiId, resiInfo.getName(), null, + IcUserChangeRecordEntity changeRecord = fillChangeRecord(loginUserUtil.getLoginUserCustomerId(), newResiInfoObj.getResiId(), resiInfo.getName(), null, loginUserUtil.getLoginUserId(), operator.getRealName(), "-", "-", "add", "新增", "", now); icUserChangeRecordDao.insert(changeRecord); // 插入changeDetail - for (Map.Entry column : data.getCategories().entrySet()) { - IcUserChangeDetailedEntity changedetail = fillChangeDetail(loginUserUtil.getLoginUserCustomerId(), resiId, changeRecord.getId(), data.getAgencyId(), - data.getGridId(), data.getVillageId(), data.getBuildId(), data.getUnitId(), - data.getHomeId(), "add", "新增", column.getKey(), 1, resiInfo.getPids()); + for (Map.Entry column : newResiInfoObj.getCategories().entrySet()) { + IcUserChangeDetailedEntity changedetail = fillChangeDetail(loginUserUtil.getLoginUserCustomerId(), newResiInfoObj.getResiId(), changeRecord.getId(), newResiInfoObj.getAgencyId(), + newResiInfoObj.getGridId(), newResiInfoObj.getVillageId(), newResiInfoObj.getBuildId(), newResiInfoObj.getUnitId(), + newResiInfoObj.getHomeId(), "add", "新增", column.getKey(), 1, resiInfo.getPids()); icUserChangeDetailedDao.insert(changedetail); } } - } /** From a9c5cb4987d63ed040cd7985dfd357ee7d87bd98 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Mon, 14 Feb 2022 16:39:31 +0800 Subject: [PATCH 31/87] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=B0=8F=E5=8C=BA?= =?UTF-8?q?=EF=BC=8C=E6=A5=BC=E6=A0=8B=EF=BC=8C=E5=8D=95=E5=85=83ID?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java | 1 + .../main/resources/db/migration/V0.0.11__edit_neighbor_hood.sql | 2 ++ 2 files changed, 3 insertions(+) create mode 100644 epmet-module/gov-org/gov-org-server/src/main/resources/db/migration/V0.0.11__edit_neighbor_hood.sql diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java index 2fe79101fe..c1d2cc3e9e 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java @@ -496,6 +496,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl Date: Tue, 15 Feb 2022 09:21:45 +0800 Subject: [PATCH 32/87] =?UTF-8?q?=E6=88=BF=E5=B1=8B=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=9A=82=E6=8F=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/dto/ImportHouseGeneralDTO.java | 9 +- .../com/epmet/controller/HouseController.java | 8 +- .../java/com/epmet/dao/IcBuildingDao.java | 16 ++ .../java/com/epmet/model/HouseInfoModel.java | 2 +- .../epmet/model/ImportHouseInfoListener.java | 151 +++++++++++++++--- .../main/resources/mapper/IcBuildingDao.xml | 31 ++++ 6 files changed, 194 insertions(+), 23 deletions(-) diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java index ea6fbb6b49..6f9d3aba4e 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java @@ -89,7 +89,8 @@ public class ImportHouseGeneralDTO implements Serializable { /** * 是否出租 */ - private String rentFlag; + private String rentFlagString; + private Integer rentFlag; /** * 姓名 @@ -115,4 +116,10 @@ public class ImportHouseGeneralDTO implements Serializable { * 房屋ID */ private String houseId; + + private String houseName; + + private String customerId; + + private Boolean existStatus = false; } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java index ed586e0fdb..b8bc28cf74 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java @@ -43,6 +43,8 @@ import com.epmet.model.HouseInfoModel; import com.epmet.model.ImportHouseInfoListener; import com.epmet.redis.IcHouseRedis; import com.epmet.service.HouseService; +import com.epmet.service.IcHouseService; +import com.epmet.service.IcNeighborHoodService; import com.epmet.util.ExcelPoiUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -78,6 +80,10 @@ public class HouseController implements ResultDataResolver { private IcBuildingDao icBuildingDao; @Autowired private IcHouseRedis icHouseRedis; + @Autowired + private IcNeighborHoodService neighborHoodService; + @Autowired + private IcHouseService icHouseService; @PostMapping("houselist") @@ -262,7 +268,7 @@ public class HouseController implements ResultDataResolver { excelReader = EasyExcel.read(inputStream).build(); // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener ReadSheet readSheet = EasyExcel.readSheet(0).head(HouseInfoModel.class) - .registerReadListener(new ImportHouseInfoListener(formDTO,icBuildingDao,icHouseRedis)) + .registerReadListener(new ImportHouseInfoListener(formDTO,icBuildingDao,icHouseRedis,neighborHoodService,icHouseService)) .build(); excelReader.read(readSheet); } finally { diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java index 9971ff2016..4e3c885065 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java @@ -146,4 +146,20 @@ public interface IcBuildingDao extends BaseDao { */ ImportHouseGeneralDTO selectNeighborHoodById(@Param("id")String id); + /** + * @Description 根据ID查询楼栋 + * @param id + * @author zxc + * @date 2022/2/14 4:26 下午 + */ + ImportHouseGeneralDTO selectBuildingById(@Param("id")String id); + + /** + * @Description 查询已存在的房屋 + * @param ids + * @author zxc + * @date 2022/2/14 5:32 下午 + */ + List selectExistHouse(@Param("ids")List ids); + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModel.java index db6078ba53..9330a1a2d0 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModel.java @@ -38,7 +38,7 @@ public class HouseInfoModel { private String purpose; @ExcelProperty(value = "出租") - private String rentFlag; + private String rentFlagString; @ExcelProperty(value = "房主姓名") private String ownerName; diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java index f7a9ab5681..0c4281ed69 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java @@ -14,8 +14,17 @@ import com.epmet.constant.CustomerGridConstant; import com.epmet.dao.IcBuildingDao; import com.epmet.dto.ImportHouseGeneralDTO; import com.epmet.dto.form.ImportInfoFormDTO; +import com.epmet.entity.IcHouseEntity; +import com.epmet.enums.HousePurposeEnums; +import com.epmet.enums.HouseRentFlagEnums; +import com.epmet.enums.HouseTypeEnums; +import com.epmet.excel.IcNeighborHoodExcel; import com.epmet.redis.IcHouseRedis; +import com.epmet.service.HouseService; +import com.epmet.service.IcHouseService; +import com.epmet.service.IcNeighborHoodService; import org.apache.commons.lang3.StringUtils; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.util.*; @@ -34,8 +43,6 @@ public class ImportHouseInfoListener extends AnalysisEventListener needDisposeList = new ArrayList<>(); List needInsertList = new ArrayList<>(); - String buildingName = null; - String neighborHoodName = null; String gridName = null; String agencyName = null; @@ -46,17 +53,22 @@ public class ImportHouseInfoListener extends AnalysisEventListener buildingInfos = null; List buildingInfoDTOs = null; + ImportHouseGeneralDTO buildingGeneralDTO = null; Map buildingUnitInfos = null; List buildingUnitInfoDTOs = null; private ImportInfoFormDTO formDTO; private IcBuildingDao icBuildingDao; private IcHouseRedis icHouseRedis; + private IcNeighborHoodService neighborHoodService; + private IcHouseService icHouseService; - public ImportHouseInfoListener(ImportInfoFormDTO formDTO,IcBuildingDao icBuildingDao, IcHouseRedis icHouseRedis){ + public ImportHouseInfoListener(ImportInfoFormDTO formDTO,IcBuildingDao icBuildingDao, IcHouseRedis icHouseRedis,IcNeighborHoodService neighborHoodService, IcHouseService icHouseService){ this.formDTO = formDTO; this.icBuildingDao = icBuildingDao; this.icHouseRedis = icHouseRedis; + this.neighborHoodService = neighborHoodService; + this.icHouseService = icHouseService; } @Override @@ -67,6 +79,11 @@ public class ImportHouseInfoListener extends AnalysisEventListener importInfo = neighborHoodService.getImportInfo(formDTO, needDisposeList); + needInsertList.addAll(importInfo); + Map collect = needInsertList.stream().collect(Collectors.groupingBy(n -> n.getBuildingUnitId() + "_" + n.getDoorName(), Collectors.counting())); + collect.forEach((k,v) -> { + if (Integer.valueOf(v.toString()).compareTo(1) > 0){ + for (ImportHouseGeneralDTO r : needInsertList) { + if (k.equals(r.getBuildingUnitId()+"_"+r.getDoorName())){ + // 集合里重复的 + r.setExistStatus(true); + nums.add(r.getNum()); + } + } + } + }); + // 根据单元ID_doorName查询已存在的 + List ids = needInsertList.stream().map(m -> m.getBuildingUnitId() + "_" + m.getDoorName()).distinct().collect(Collectors.toList()); + List existHouses = icBuildingDao.selectExistHouse(ids); + existHouses.forEach(e -> { + for (ImportHouseGeneralDTO n : needInsertList) { + if ((n.getBuildingUnitId()+"_"+n.getDoorName()).equals(e)){ + // 库里存在的 + n.setExistStatus(true); + nums.add(n.getNum()); + } + } + }); + // 根据存在状态分组 + Map> groupByExistStatus = needInsertList.stream().collect(Collectors.groupingBy(ImportHouseGeneralDTO::getExistStatus)); + List importHouseGeneralDTOS = groupByExistStatus.get(false); + houseInsert(importHouseGeneralDTOS); + // 清除 + needDisposeList = new ArrayList<>(); + needInsertList = new ArrayList<>(); + gridName = null; + agencyName = null; + gridInfos = null; + gridInfoDTOs = null; + neighborHoodInfos = null; + neighborHoodInfoDTOs = null; + neighborHoodGeneralDTO = null; + buildingInfos = null; + buildingInfoDTOs = null; + buildingGeneralDTO = null; + buildingUnitInfos = null; + buildingUnitInfoDTOs = null; } /** @@ -85,12 +154,46 @@ public class ImportHouseInfoListener extends AnalysisEventListener houses){ + icHouseService.insertBatch(ConvertUtils.sourceToTarget(houses, IcHouseEntity.class)); } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml index d48b46b870..52a00a500d 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml @@ -295,4 +295,35 @@ AND ID = #{id} + + + + + + From 39b4f7c1ade2c2738d98428a6e0e7daf5221321a Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Tue, 15 Feb 2022 09:56:30 +0800 Subject: [PATCH 33/87] =?UTF-8?q?=E6=88=BF=E5=B1=8B=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/commons/tools/redis/RedisKeys.java | 5 +++ .../com/epmet/dto/result/ImportResultDTO.java | 31 +++++++++++++++++++ .../com/epmet/controller/HouseController.java | 15 ++++++++- .../epmet/model/ImportHouseInfoListener.java | 7 ++++- .../java/com/epmet/redis/IcHouseRedis.java | 16 ++++++++++ 5 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/ImportResultDTO.java diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java index 580a8d97e1..5944a88840 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java @@ -695,4 +695,9 @@ public class RedisKeys { public static String getTemporaryBuildingUnitInfoCacheKey(String customerId,String userId){ return rootPrefix.concat("temporary:").concat("temporaryBuildingUnit:").concat(customerId).concat(":").concat(userId); } + + public static String getTemporaryImportResultCacheKey(String customerId,String userId){ + return rootPrefix.concat("temporary:").concat("temporaryResult:").concat(customerId).concat(":").concat(userId); + } + } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/ImportResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/ImportResultDTO.java new file mode 100644 index 0000000000..ddaa2d5bff --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/ImportResultDTO.java @@ -0,0 +1,31 @@ +package com.epmet.dto.result; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * @Author zxc + * @DateTime 2022/2/15 9:25 上午 + * @DESC + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ImportResultDTO implements Serializable { + + private static final long serialVersionUID = -5817164530837181890L; + + /** + * 未导入的行号 + */ + private List nums; + + /** + * 总条数 + */ + private Integer num; +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java index b8bc28cf74..c0c54f8540 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java @@ -35,6 +35,7 @@ import com.epmet.dao.IcBuildingDao; import com.epmet.dto.form.*; import com.epmet.dto.result.HouseInfoDTO; import com.epmet.dto.result.IcNeighborHoodResultDTO; +import com.epmet.dto.result.ImportResultDTO; import com.epmet.dto.result.LoginUserDetailsResultDTO; import com.epmet.excel.IcHouseExcel; import com.epmet.feign.EpmetUserOpenFeignClient; @@ -276,7 +277,19 @@ public class HouseController implements ResultDataResolver { excelReader.finish(); } } - return new Result<>(); + ImportResultDTO dto = icHouseRedis.getImportResultDTO(formDTO.getCustomerId(), formDTO.getUserId()); + if (null == dto){ + return new Result<>(); + } + List nums = dto.getNums(); + Integer num = dto.getNum(); + String s = "共%s条数据,导入成功%s条。"; + if (nums.size() > NumConstant.ZERO){ + Collections.sort(nums); + s = s + "第"+nums.stream().map(String::valueOf).collect(Collectors.joining("、"))+"条导入失败"; + return new Result<>().error(9999,String.format(s,num,num - nums.size())); + } + return new Result<>().ok(String.format(s,num,num)); } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java index 0c4281ed69..baa2900486 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java @@ -14,6 +14,7 @@ import com.epmet.constant.CustomerGridConstant; import com.epmet.dao.IcBuildingDao; import com.epmet.dto.ImportHouseGeneralDTO; import com.epmet.dto.form.ImportInfoFormDTO; +import com.epmet.dto.result.ImportResultDTO; import com.epmet.entity.IcHouseEntity; import com.epmet.enums.HousePurposeEnums; import com.epmet.enums.HouseRentFlagEnums; @@ -399,6 +400,8 @@ public class ImportHouseInfoListener extends AnalysisEventListener houses){ - icHouseService.insertBatch(ConvertUtils.sourceToTarget(houses, IcHouseEntity.class)); + if (!CollectionUtils.isEmpty(houses)){ + icHouseService.insertBatch(ConvertUtils.sourceToTarget(houses, IcHouseEntity.class)); + } } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/IcHouseRedis.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/IcHouseRedis.java index 705566ea5e..6407a7a948 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/IcHouseRedis.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/IcHouseRedis.java @@ -25,6 +25,7 @@ import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.dao.IcHouseDao; import com.epmet.dto.ImportHouseGeneralDTO; import com.epmet.dto.result.HouseInfoDTO; +import com.epmet.dto.result.ImportResultDTO; import com.epmet.model.HouseInfoModel; import com.epmet.model.HouseInfoModelDTO; import org.springframework.beans.factory.annotation.Autowired; @@ -292,4 +293,19 @@ public class IcHouseRedis { redisUtils.delete(key); } + public void setImportResultDTO(String customerId, String userId, ImportResultDTO dto){ + String key = RedisKeys.getTemporaryImportResultCacheKey(customerId,userId); + Map result = BeanUtil.beanToMap(dto, false, true); + redisUtils.hMSet(key,result,RedisUtils.MINUTE_ONE_EXPIRE); + } + + public ImportResultDTO getImportResultDTO(String customerId, String userId){ + String key = RedisKeys.getTemporaryImportResultCacheKey(customerId,userId); + Map map = redisUtils.hGetAll(key); + if (CollectionUtils.isEmpty(map)){ + return null; + } + return ConvertUtils.mapToEntity(map,ImportResultDTO.class); + } + } \ No newline at end of file From e41cf5a5069a4db811e346d29217dbe58272a00d Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Tue, 15 Feb 2022 14:04:09 +0800 Subject: [PATCH 34/87] =?UTF-8?q?-=20=E4=BC=98=E5=8C=96=E5=B1=85=E6=B0=91?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=20-=20=E4=BC=98=E5=8C=96=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E5=88=87=E9=9D=A2=E6=89=93=E5=8D=B0=EF=BC=8C=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=AF=B9MultipartFile=E7=B1=BB=E5=9E=8B=E7=9A=84=E8=BF=87?= =?UTF-8?q?=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commons/tools/aspect/BaseRequestLogAspect.java | 2 ++ .../service/impl/IcResiUserImportServiceImpl.java | 10 +++++++++- .../epmet-user-server/src/main/resources/bootstrap.yml | 5 +++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/BaseRequestLogAspect.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/BaseRequestLogAspect.java index 055d174c2e..3321091b4f 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/BaseRequestLogAspect.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/BaseRequestLogAspect.java @@ -10,6 +10,7 @@ import org.aspectj.lang.ProceedingJoinPoint; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.dao.DuplicateKeyException; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; @@ -286,6 +287,7 @@ public abstract class BaseRequestLogAspect { if (object != null && !(object instanceof ServletRequest) && !(object instanceof ServletResponse) + && !(object instanceof MultipartFile) ) { try { // 尝试作为json解析 diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java index 23248b0c83..32314bff9b 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java @@ -265,6 +265,9 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res Map categoryChangedResis = newlyOrChangedResi.get().getCategoryChangedResis(); Map transferedResis = newlyOrChangedResi.get().getTransferedResis(); + log.info("类别变动居民数:{}", categoryChangedResis.size()); + log.info("调动居民数:{}", transferedResis.size()); + //保存调动或者变更记录 saveNewResiCategoryRecord(); saveResiCategoryChangedRecord(categoryChangedResis); @@ -469,7 +472,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res resiCategories); redisUtils.hMSet(RedisKeys.icResiImportResiCategoryKey(newlyOrChangedResi.get().getImportTag(), "add", resiId), BeanUtil.beanToMap(categoryData)); - + categoryData = null; } } catch (Exception e) { @@ -1182,6 +1185,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res ResiImportCategoryData newResiCateData = ConvertUtils.mapToEntity(addUserMap, ResiImportCategoryData.class); newResiCateData.getCategories().put(columnName, "1"); redisUtils.hMSet(userCateRedisKey, BeanUtil.beanToMap(newResiCateData)); + newResiCateData = null; return; } @@ -1360,7 +1364,11 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res newResiInfoObj.getHomeId(), "add", "新增", column.getKey(), 1, resiInfo.getPids()); icUserChangeDetailedDao.insert(changedetail); + changedetail = null; } + + changeRecord = null; + newResiInfoObj = null; } } diff --git a/epmet-user/epmet-user-server/src/main/resources/bootstrap.yml b/epmet-user/epmet-user-server/src/main/resources/bootstrap.yml index ac5d97de01..cce9a52831 100644 --- a/epmet-user/epmet-user-server/src/main/resources/bootstrap.yml +++ b/epmet-user/epmet-user-server/src/main/resources/bootstrap.yml @@ -79,6 +79,11 @@ spring: namespace: @nacos.config.namespace@ group: @nacos.config.group@ file-extension: yaml + servlet: + multipart: + max-file-size: 100MB + max-request-size: 100MB + management: endpoints: web: From 07b6b006034e227b365e9c5b9e6508b45860432c Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Tue, 15 Feb 2022 14:52:15 +0800 Subject: [PATCH 35/87] gailegeming --- ...eGeneralDTO.java => ImportGeneralDTO.java} | 12 ++++- .../java/com/epmet/dao/IcBuildingDao.java | 14 +++--- .../epmet/model/ImportHouseInfoListener.java | 48 +++++++++---------- .../java/com/epmet/redis/IcHouseRedis.java | 7 --- .../epmet/service/IcNeighborHoodService.java | 6 +-- .../impl/IcNeighborHoodServiceImpl.java | 10 ++-- .../main/resources/mapper/IcBuildingDao.xml | 12 ++--- 7 files changed, 54 insertions(+), 55 deletions(-) rename epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/{ImportHouseGeneralDTO.java => ImportGeneralDTO.java} (88%) diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportGeneralDTO.java similarity index 88% rename from epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java rename to epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportGeneralDTO.java index 6f9d3aba4e..2c2b3d8379 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportHouseGeneralDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportGeneralDTO.java @@ -11,7 +11,7 @@ import java.io.Serializable; * @DESC */ @Data -public class ImportHouseGeneralDTO implements Serializable { +public class ImportGeneralDTO implements Serializable { private static final long serialVersionUID = -345610717773879687L; @@ -122,4 +122,14 @@ public class ImportHouseGeneralDTO implements Serializable { private String customerId; private Boolean existStatus = false; + + /** + * 楼栋重复状态 + */ + private Boolean buildingExistStatus = false; + + /** + * 小区重复状态 + */ + private Boolean neighborHoodExistStatus = false; } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java index 4e3c885065..c5ed882ca1 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java @@ -19,7 +19,7 @@ package com.epmet.dao; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.dao.BaseDao; -import com.epmet.dto.ImportHouseGeneralDTO; +import com.epmet.dto.ImportGeneralDTO; import com.epmet.dto.result.BaseInfoFamilyBuildingResultDTO; import com.epmet.dto.result.BuildingResultDTO; import com.epmet.entity.CustomerAgencyEntity; @@ -112,7 +112,7 @@ public interface IcBuildingDao extends BaseDao { * @author zxc * @date 2022/2/14 9:48 上午 */ - List selectAllGridByOrgId(@Param("orgId")String orgId); + List selectAllGridByOrgId(@Param("orgId")String orgId); /** * @Description 查询网格下所有的小区 @@ -120,7 +120,7 @@ public interface IcBuildingDao extends BaseDao { * @author zxc * @date 2022/2/14 10:21 上午 */ - List selectAllNeighborHoodByGridIds(@Param("orgIds")List orgId); + List selectAllNeighborHoodByGridIds(@Param("orgIds")List orgId); /** * @Description 根据小区ID查询楼栋 @@ -128,7 +128,7 @@ public interface IcBuildingDao extends BaseDao { * @author zxc * @date 2022/2/14 1:25 下午 */ - List selectAllBuildingByNeighborHoodId(@Param("neighborHoodId")String neighborHoodId); + List selectAllBuildingByNeighborHoodId(@Param("neighborHoodId")String neighborHoodId); /** * @Description 根据楼栋ID查询楼栋单元 @@ -136,7 +136,7 @@ public interface IcBuildingDao extends BaseDao { * @author zxc * @date 2022/2/14 1:58 下午 */ - List selectAllBuildingUnitByBuildingId(@Param("building")String building); + List selectAllBuildingUnitByBuildingId(@Param("building")String building); /** * @Description 根据ID查询小区 @@ -144,7 +144,7 @@ public interface IcBuildingDao extends BaseDao { * @author zxc * @date 2022/2/14 3:16 下午 */ - ImportHouseGeneralDTO selectNeighborHoodById(@Param("id")String id); + ImportGeneralDTO selectNeighborHoodById(@Param("id")String id); /** * @Description 根据ID查询楼栋 @@ -152,7 +152,7 @@ public interface IcBuildingDao extends BaseDao { * @author zxc * @date 2022/2/14 4:26 下午 */ - ImportHouseGeneralDTO selectBuildingById(@Param("id")String id); + ImportGeneralDTO selectBuildingById(@Param("id")String id); /** * @Description 查询已存在的房屋 diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java index baa2900486..39d8820783 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java @@ -2,26 +2,22 @@ package com.epmet.model; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; -import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.redis.common.CustomerOrgRedis; 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.constant.CustomerAgencyConstant; import com.epmet.constant.CustomerGridConstant; import com.epmet.dao.IcBuildingDao; -import com.epmet.dto.ImportHouseGeneralDTO; +import com.epmet.dto.ImportGeneralDTO; import com.epmet.dto.form.ImportInfoFormDTO; import com.epmet.dto.result.ImportResultDTO; import com.epmet.entity.IcHouseEntity; import com.epmet.enums.HousePurposeEnums; import com.epmet.enums.HouseRentFlagEnums; import com.epmet.enums.HouseTypeEnums; -import com.epmet.excel.IcNeighborHoodExcel; import com.epmet.redis.IcHouseRedis; -import com.epmet.service.HouseService; import com.epmet.service.IcHouseService; import com.epmet.service.IcNeighborHoodService; import org.apache.commons.lang3.StringUtils; @@ -41,22 +37,22 @@ public class ImportHouseInfoListener extends AnalysisEventListener nums = new ArrayList<>(); Integer num = NumConstant.ZERO; - List needDisposeList = new ArrayList<>(); - List needInsertList = new ArrayList<>(); + List needDisposeList = new ArrayList<>(); + List needInsertList = new ArrayList<>(); String gridName = null; String agencyName = null; Map gridInfos = null; - List gridInfoDTOs = null; + List gridInfoDTOs = null; Map neighborHoodInfos = null; - List neighborHoodInfoDTOs = null; - ImportHouseGeneralDTO neighborHoodGeneralDTO = null; + List neighborHoodInfoDTOs = null; + ImportGeneralDTO neighborHoodGeneralDTO = null; Map buildingInfos = null; - List buildingInfoDTOs = null; - ImportHouseGeneralDTO buildingGeneralDTO = null; + List buildingInfoDTOs = null; + ImportGeneralDTO buildingGeneralDTO = null; Map buildingUnitInfos = null; - List buildingUnitInfoDTOs = null; + List buildingUnitInfoDTOs = null; private ImportInfoFormDTO formDTO; private IcBuildingDao icBuildingDao; @@ -78,7 +74,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener importInfo = neighborHoodService.getImportInfo(formDTO, needDisposeList); + List importInfo = neighborHoodService.getImportInfo(formDTO, needDisposeList); needInsertList.addAll(importInfo); Map collect = needInsertList.stream().collect(Collectors.groupingBy(n -> n.getBuildingUnitId() + "_" + n.getDoorName(), Collectors.counting())); collect.forEach((k,v) -> { if (Integer.valueOf(v.toString()).compareTo(1) > 0){ - for (ImportHouseGeneralDTO r : needInsertList) { + for (ImportGeneralDTO r : needInsertList) { if (k.equals(r.getBuildingUnitId()+"_"+r.getDoorName())){ // 集合里重复的 r.setExistStatus(true); @@ -119,7 +115,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener ids = needInsertList.stream().map(m -> m.getBuildingUnitId() + "_" + m.getDoorName()).distinct().collect(Collectors.toList()); List existHouses = icBuildingDao.selectExistHouse(ids); existHouses.forEach(e -> { - for (ImportHouseGeneralDTO n : needInsertList) { + for (ImportGeneralDTO n : needInsertList) { if ((n.getBuildingUnitId()+"_"+n.getDoorName()).equals(e)){ // 库里存在的 n.setExistStatus(true); @@ -128,9 +124,9 @@ public class ImportHouseInfoListener extends AnalysisEventListener> groupByExistStatus = needInsertList.stream().collect(Collectors.groupingBy(ImportHouseGeneralDTO::getExistStatus)); - List importHouseGeneralDTOS = groupByExistStatus.get(false); - houseInsert(importHouseGeneralDTOS); + Map> groupByExistStatus = needInsertList.stream().collect(Collectors.groupingBy(ImportGeneralDTO::getExistStatus)); + List importGeneralDTOS = groupByExistStatus.get(false); + houseInsert(importGeneralDTOS); // 清除 needDisposeList = new ArrayList<>(); needInsertList = new ArrayList<>(); @@ -154,7 +150,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener gridIds = new ArrayList<>(); if (orgType.equals(CustomerGridConstant.GRID)){ @@ -412,7 +408,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener houses){ + public void houseInsert(List houses){ if (!CollectionUtils.isEmpty(houses)){ icHouseService.insertBatch(ConvertUtils.sourceToTarget(houses, IcHouseEntity.class)); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/IcHouseRedis.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/IcHouseRedis.java index 6407a7a948..dd02bcfad5 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/IcHouseRedis.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/IcHouseRedis.java @@ -18,24 +18,17 @@ package com.epmet.redis; import cn.hutool.core.bean.BeanUtil; -import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.redis.RedisKeys; import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.dao.IcHouseDao; -import com.epmet.dto.ImportHouseGeneralDTO; import com.epmet.dto.result.HouseInfoDTO; import com.epmet.dto.result.ImportResultDTO; -import com.epmet.model.HouseInfoModel; -import com.epmet.model.HouseInfoModelDTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; import java.util.Map; /** diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java index afadcdd449..f990efb864 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java @@ -22,7 +22,7 @@ import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.IcNeighborHoodDTO; -import com.epmet.dto.ImportHouseGeneralDTO; +import com.epmet.dto.ImportGeneralDTO; import com.epmet.dto.form.ImportInfoFormDTO; import com.epmet.entity.IcNeighborHoodEntity; import org.springframework.web.multipart.MultipartFile; @@ -132,9 +132,9 @@ public interface IcNeighborHoodService extends BaseService * * @Param formDTO * @Param list - * @Return {@link List< ImportHouseGeneralDTO>} + * @Return {@link List< ImportGeneralDTO >} * @Author zhaoqifeng * @Date 2022/2/14 9:40 */ - List getImportInfo(ImportInfoFormDTO formDTO, List list); + List getImportInfo(ImportInfoFormDTO formDTO, List list); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java index c1d2cc3e9e..fdfe602d19 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java @@ -413,12 +413,12 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl} + * @Return {@link List< ImportGeneralDTO >} * @Author zhaoqifeng * @Date 2022/2/14 9:40 */ @Override - public List getImportInfo(ImportInfoFormDTO formDTO, List list) { + public List getImportInfo(ImportInfoFormDTO formDTO, List list) { list.forEach(item -> { if (StringUtils.isEmpty(item.getNeighborHoodId())) { //1.获取小区ID,判断小区是否存在,不存在则添加小区,存在则直接获取小区ID @@ -457,7 +457,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); wrapper.eq(IcNeighborHoodEntity::getGridId, info.getGridId()); @@ -485,7 +485,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl - SELECT ID AS gridId,GRID_NAME FROM customer_grid WHERE DEL_FLAG = '0' AND PID = #{orgId} - SELECT ID AS neighborHoodId, NEIGHBOR_HOOD_NAME, @@ -262,7 +262,7 @@ - SELECT ID AS buildingId, NEIGHBOR_HOOD_ID, @@ -273,7 +273,7 @@ - SELECT ID AS buildingUnitId, UNIT_NUM AS buildingUnit, @@ -284,7 +284,7 @@ - SELECT AGENCY_ID, GRID_ID, @@ -296,7 +296,7 @@ - SELECT b.ID AS buildingId, b.BUILDING_NAME, From 12248915d11058788153dea5220a5ad52ba3dcae Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Tue, 15 Feb 2022 14:56:41 +0800 Subject: [PATCH 36/87] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=B0=8F=E5=8C=BA?= =?UTF-8?q?=EF=BC=8C=E6=A5=BC=E6=A0=8B=EF=BC=8C=E5=8D=95=E5=85=83ID?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java index fdfe602d19..2a4147a2c3 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java @@ -464,6 +464,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl Date: Tue, 15 Feb 2022 14:10:55 +0800 Subject: [PATCH 37/87] =?UTF-8?q?emm=20=E5=90=88=E5=B9=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/controller/BuildingController.java | 2 +- .../model/ImportBuildingInfoListener.java | 316 ++++++++++++++++++ .../service/impl/BuildingServiceImpl.java | 42 ++- 3 files changed, 358 insertions(+), 2 deletions(-) create mode 100644 epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java index 628a3d5c62..2ac1605193 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java @@ -219,7 +219,7 @@ public class BuildingController { formDTO.setOrgType(orgType); formDTO.setOrgId(orgId); formDTO.setUserId(tokenDTO.getUserId()); - return new Result().ok(buildingService.buildingImportExcel(formDTO,file)); + return buildingService.buildingImportExcel(formDTO,file); } /** diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java new file mode 100644 index 0000000000..f2dd6dc335 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java @@ -0,0 +1,316 @@ + +package com.epmet.model; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.redis.common.CustomerOrgRedis; +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.constant.CustomerGridConstant; +import com.epmet.dao.IcBuildingDao; +import com.epmet.dto.ImportGeneralDTO; +import com.epmet.dto.form.ImportInfoFormDTO; +import com.epmet.dto.result.ImportResultDTO; +import com.epmet.enums.BuildingTypeEnums; +import com.epmet.redis.IcHouseRedis; +import com.epmet.service.IcNeighborHoodService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Author zxc + * @DateTime 2022/2/15 10:06 上午 + * @DESC + */ +public class ImportBuildingInfoListener extends AnalysisEventListener { + + List nums = new ArrayList<>(); + Integer num = NumConstant.ZERO; + + List needDisposeList = new ArrayList<>(); + List needInsertList = new ArrayList<>(); + + String gridName = null; + String agencyName = null; + + Map gridInfos = null; + List gridInfoDTOs = null; + Map neighborHoodInfos = null; + List neighborHoodInfoDTOs = null; + ImportGeneralDTO neighborHoodGeneralDTO = null; + Map buildingInfos = null; + List buildingInfoDTOs = null; + ImportGeneralDTO buildingGeneralDTO = null; + + private ImportInfoFormDTO formDTO; + private IcHouseRedis icHouseRedis; + private IcBuildingDao icBuildingDao; + private IcNeighborHoodService neighborHoodService; + + public ImportBuildingInfoListener(ImportInfoFormDTO formDTO, IcHouseRedis icHouseRedis,IcBuildingDao icBuildingDao,IcNeighborHoodService neighborHoodService){ + this.formDTO = formDTO; + this.icHouseRedis = icHouseRedis; + this.icBuildingDao = icBuildingDao; + this.neighborHoodService = neighborHoodService; + } + + @Override + public void invoke(BuildingInfoModel data, AnalysisContext context) { + if (null == data){ + return; + } + num = num + NumConstant.ONE; + ImportGeneralDTO dto = ConvertUtils.sourceToTarget(data, ImportGeneralDTO.class); + dto.setNum(num); + dto.setCustomerId(formDTO.getCustomerId()); + dto.setType(BuildingTypeEnums.getKeyByValue(dto.getType())); + if (formDTO.getOrgType().equals(CustomerGridConstant.NEIGHBORHOOD)){ + disposeNeighborHoodBuilding(dto); + }else if (formDTO.getOrgType().equals(CustomerGridConstant.GRID)){ + disposeGridBuilding(dto); + }else if (formDTO.getOrgType().equals(CustomerGridConstant.AGENCY)){ + disposeAgencyBuilding(dto); + } + // 数据筛选完毕,当num每满100条,处理一次 + if (num%NumConstant.ONE_HUNDRED == NumConstant.ZERO){ + finalDispose(); + } + } + + public void finalDispose(){ + Map groupByAllName = needDisposeList.stream().collect(Collectors.groupingBy( + n -> n.getAgencyName() + "_" + n.getGridName() + "_" + + n.getNeighborHoodName() + "_" + n.getBuildingName(), Collectors.counting())); + groupByAllName.forEach((k,v) -> { + if (Integer.valueOf(v.toString()).compareTo(1) > 0){ + for (ImportGeneralDTO r : needDisposeList) { + if (k.equals(r.getAgencyName() + "_" + r.getGridName() + "_" + + r.getNeighborHoodName() + "_" + r.getBuildingName())){ + // 集合里重复的 + r.setExistStatus(true); + nums.add(r.getNum()); + } + } + } + }); + Map> groupByStatus = needDisposeList.stream().collect(Collectors.groupingBy(ImportGeneralDTO::getExistStatus)); + List importGeneralDTOS = groupByStatus.get(false); + if (!CollectionUtils.isEmpty(importGeneralDTOS)){ + List importInfo = neighborHoodService.getImportInfo(formDTO, importGeneralDTOS); + Map> groupByBuildingExistStatus = importInfo.stream().collect(Collectors.groupingBy(ImportGeneralDTO::getBuildingExistStatus)); + List existList = groupByBuildingExistStatus.get(true); + if (!CollectionUtils.isEmpty(existList)){ + existList.forEach(e -> { + nums.add(e.getNum()); + }); + } + } + // 清除 + needDisposeList = new ArrayList<>(); + needInsertList = new ArrayList<>(); + gridName = null; + agencyName = null; + gridInfos = null; + gridInfoDTOs = null; + neighborHoodInfos = null; + neighborHoodInfoDTOs = null; + neighborHoodGeneralDTO = null; + buildingInfos = null; + buildingInfoDTOs = null; + buildingGeneralDTO = null; + } + + public void fillData(ImportGeneralDTO dto, String orgType){ + if (orgType.equals(CustomerGridConstant.GRID) || orgType.equals(CustomerGridConstant.AGENCY)){ + List gridIds = new ArrayList<>(); + if (orgType.equals(CustomerGridConstant.GRID)){ + gridIds = Arrays.asList(formDTO.getOrgId()); + }else if (orgType.equals(CustomerGridConstant.AGENCY)){ + gridIds = gridInfoDTOs.stream().map(m -> m.getGridId()).collect(Collectors.toList()); + } + neighborHoodInfos = null == neighborHoodInfos ? getNeighborHoodInfos(gridIds) : neighborHoodInfos; + Object cacheNeighBorHood = icHouseRedis.getTemporaryCacheNeighBorHood(formDTO.getCustomerId(), formDTO.getUserId(), formDTO.getOrgId() + "_" + dto.getNeighborHoodName()); + // 赋值小区ID + dto.setNeighborHoodId(null == cacheNeighBorHood ? "" : cacheNeighBorHood.toString()); + } + if (StringUtils.isNotBlank(dto.getNeighborHoodId())){ + //小区ID不为空赋值楼栋ID + buildingInfos = null == buildingInfos ? getBuildingInfos(dto.getNeighborHoodId()) : buildingInfos; + Object cacheBuilding = icHouseRedis.getTemporaryCacheBuilding(formDTO.getCustomerId(), formDTO.getUserId(), dto.getNeighborHoodId() + "_" + dto.getBuildingName()); + dto.setBuildingId(null == cacheBuilding ? "" : cacheBuilding.toString()); + if (StringUtils.isNotBlank(dto.getBuildingId())){ + // 说明数据库已存在此楼栋,不需添加 + nums.add(num); + }else { + needDisposeList.add(dto); + } + }else { + needDisposeList.add(dto); + } + } + + /** + * @Description 左侧树点击小区时调用 + * @param dto + * @author zxc + * @date 2022/2/15 10:41 上午 + */ + public void disposeNeighborHoodBuilding(ImportGeneralDTO dto){ + neighborHoodGeneralDTO = null == neighborHoodGeneralDTO ? icBuildingDao.selectNeighborHoodById(formDTO.getOrgId()) : neighborHoodGeneralDTO; + //排除不是本小区的 + if (!dto.getNeighborHoodName().equals(neighborHoodGeneralDTO.getNeighborHoodName())){ + nums.add(num); + }else { + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(neighborHoodGeneralDTO.getGridId()); + if (null == gridInfo){ + throw new EpmetException("查询网格失败..."); + } + // 1.排除网格名不一样但小区名一样 2.排除组织不一样,网格一样,小区一样 + if ((!gridInfo.getGridName().equals(dto.getGridName()) && neighborHoodGeneralDTO.getNeighborHoodName().equals(dto.getNeighborHoodName())) || + (!gridInfo.getAgencyName().equals(dto.getAgencyName()) && gridInfo.getGridName().equals(dto.getGridName()) && neighborHoodGeneralDTO.getNeighborHoodName().equals(dto.getNeighborHoodName()))){ + nums.add(num); + return; + } + dto.setNeighborHoodId(formDTO.getOrgId()); + dto.setGridId(neighborHoodGeneralDTO.getGridId()); + dto.setAgencyId(neighborHoodGeneralDTO.getAgencyId()); + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(dto.getAgencyId()); + if (null == agencyInfo){ + throw new EpmetException("查询组织信息失败..."); + } + dto.setPid(agencyInfo.getPid()); + dto.setPids(agencyInfo.getPids()); + // 填充各种ID + fillData(dto,CustomerGridConstant.NEIGHBORHOOD); + } + } + + /** + * @Description 左侧树点击网格时调用 + * @param dto + * @author zxc + * @date 2022/2/15 10:41 上午 + */ + public void disposeGridBuilding(ImportGeneralDTO dto){ + gridName = null == gridName ? icBuildingDao.selectGridNameById(formDTO.getOrgId()) : gridName; + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(formDTO.getOrgId()); + if (null == gridInfo){ + throw new EpmetException("查询网格失败..."); + } + //排除不是本网格的 gridName不一样排除,gridName一样但是agencyName不一样也得排除 + if (!dto.getGridName().equals(gridName) || (!dto.getAgencyName().equals(gridInfo.getAgencyName()) && dto.getGridName().equals(gridName))){ + nums.add(num); + }else { + // + dto.setGridId(formDTO.getOrgId()); + dto.setAgencyId(gridInfo.getPid()); + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(dto.getAgencyId()); + if (null == agencyInfo){ + throw new EpmetException("查询组织信息失败..."); + } + dto.setPid(agencyInfo.getPid()); + dto.setPids(agencyInfo.getPids()); + // 填充各种ID + fillData(dto, CustomerGridConstant.GRID); + } + } + + /** + * @Description 左侧树点击组织时调用 + * @param dto + * @author zxc + * @date 2022/2/15 10:41 上午 + */ + public void disposeAgencyBuilding(ImportGeneralDTO dto){ + agencyName = null == agencyName ? icBuildingDao.selectAgencyNameById(formDTO.getOrgId()) : agencyName; + //排除不是本组织的 + if (!dto.getAgencyName().equals(agencyName)){ + nums.add(num); + }else { + // 根据组织查询出所有网格,甩出不是本组织下的网格 + gridInfos = null == gridInfos ? getGridInfos(formDTO.getOrgId()) : gridInfos; + if (null == gridInfos){ + // 组织下确实不存在网格 + nums.add(num); + return; + } + // 根据网格名对比,没有找到的就把行号加入到未执行成功队列中 + Object cacheGridName = icHouseRedis.getTemporaryCacheGrid(formDTO.getCustomerId(), formDTO.getUserId(), dto.getGridName()); + if (null == cacheGridName){ + nums.add(num); + return; + } + dto.setGridId(cacheGridName.toString()); + dto.setAgencyId(formDTO.getOrgId()); + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(dto.getAgencyId()); + if (null == agencyInfo){ + throw new EpmetException("查询组织信息失败..."); + } + dto.setPid(agencyInfo.getPid()); + dto.setPids(agencyInfo.getPids()); + // 填充各种ID + fillData(dto,CustomerGridConstant.AGENCY); + } + } + + /** + * @Description 获取网格信息 + * @param orgId + * @author zxc + * @date 2022/2/14 9:57 上午 + */ + public Map getGridInfos(String orgId){ + gridInfoDTOs = icBuildingDao.selectAllGridByOrgId(orgId); + gridInfos = gridInfoDTOs.stream().collect(Collectors.toMap(n -> n.getGridName(), n -> n.getGridId())); + icHouseRedis.setTemporaryCacheGrid(formDTO.getCustomerId(), gridInfos, formDTO.getUserId()); + return gridInfos; + } + + /** + * @Description 获取网格下的小区 + * @param gridIds + * @author zxc + * @date 2022/2/14 10:16 上午 + */ + public Map getNeighborHoodInfos(List gridIds){ + neighborHoodInfoDTOs = icBuildingDao.selectAllNeighborHoodByGridIds(gridIds); + neighborHoodInfos = neighborHoodInfoDTOs.stream().collect(Collectors.toMap(n -> n.getGridId() + "_" + n.getNeighborHoodName(), n -> n.getNeighborHoodId())); + icHouseRedis.setTemporaryCacheNeighBorHood(formDTO.getCustomerId(), neighborHoodInfos, formDTO.getUserId()); + return neighborHoodInfos; + } + + /** + * @Description 获取小区下的楼栋 + * @param neighborHoodId + * @author zxc + * @date 2022/2/14 1:32 下午 + */ + public Map getBuildingInfos(String neighborHoodId){ + buildingInfoDTOs = icBuildingDao.selectAllBuildingByNeighborHoodId(neighborHoodId); + buildingInfos = buildingInfoDTOs.stream().collect(Collectors.toMap(n -> n.getNeighborHoodId() + "_" + n.getBuildingName(), n -> n.getBuildingId())); + icHouseRedis.setTemporaryCacheBuilding(formDTO.getCustomerId(), buildingInfos, formDTO.getUserId()); + return buildingInfos; + } + + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + finalDispose(); + // 删除缓存 + icHouseRedis.delTemporaryCacheGrids(formDTO.getCustomerId(), formDTO.getUserId()); + icHouseRedis.delTemporaryCacheNeighBorHood(formDTO.getCustomerId(), formDTO.getUserId()); + icHouseRedis.delTemporaryCacheBuilding(formDTO.getCustomerId(), formDTO.getUserId()); + icHouseRedis.delTemporaryCacheBuildingUnit(formDTO.getCustomerId(), formDTO.getUserId()); + icHouseRedis.delTemporaryCacheHouses(formDTO.getCustomerId(), formDTO.getUserId()); + // 放结果 + icHouseRedis.setImportResultDTO(formDTO.getCustomerId(), formDTO.getUserId(), new ImportResultDTO(nums,num)); + } +} \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java index 34b6723f34..9996cc9db7 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java @@ -31,6 +31,11 @@ import com.epmet.service.BuildingService; import com.epmet.service.IcBuildingService; import com.epmet.service.IcBuildingUnitService; import com.epmet.service.IcHouseService; +import com.epmet.model.BuildingInfoModel; +import com.epmet.model.HouseInfoModel; +import com.epmet.model.ImportBuildingInfoListener; +import com.epmet.redis.IcHouseRedis; +import com.epmet.service.*; import com.epmet.util.ExcelPoiUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -75,6 +80,10 @@ public class BuildingServiceImpl implements BuildingService { private CustomerStaffAgencyDao customerStaffAgencyDao; @Resource private IcBuildingUnitDao icBuildingUnitDao; + @Autowired + private IcHouseRedis icHouseRedis; + @Autowired + private IcNeighborHoodService neighborHoodService; @Override @Transactional(rollbackFor = Exception.class) @@ -384,7 +393,38 @@ public class BuildingServiceImpl implements BuildingService { */ @Override public Result buildingImportExcel(ImportInfoFormDTO formDTO, MultipartFile file) throws IOException { - return null; + ExcelReader excelReader = null; + try { + InputStream inputStream = null; + try { + inputStream = file.getInputStream(); + } catch (IOException e) { + return new Result().error("读取文件失败"); + } + excelReader = EasyExcel.read(inputStream).build(); + // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener + ReadSheet readSheet = EasyExcel.readSheet(0).head(BuildingInfoModel.class) + .registerReadListener(new ImportBuildingInfoListener(formDTO,icHouseRedis,icBuildingDao,neighborHoodService)) + .build(); + excelReader.read(readSheet); + } finally { + if (excelReader != null) { + excelReader.finish(); + } + } + ImportResultDTO dto = icHouseRedis.getImportResultDTO(formDTO.getCustomerId(), formDTO.getUserId()); + if (null == dto){ + return new Result<>(); + } + List nums = dto.getNums(); + Integer num = dto.getNum(); + String s = "共%s条数据,导入成功%s条。"; + if (nums.size() > NumConstant.ZERO){ + Collections.sort(nums); + s = s + "第"+nums.stream().map(String::valueOf).collect(Collectors.joining("、"))+"条导入失败"; + return new Result<>().error(9999,String.format(s,num,num - nums.size())); + } + return new Result<>().ok(String.format(s,num,num)); } private List searchAllBuilding(ListIcNeighborHoodFormDTO formDTO) { From f6db2496d974a799741c40f03356d05061fdced3 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Tue, 15 Feb 2022 14:38:10 +0800 Subject: [PATCH 38/87] =?UTF-8?q?=E6=9A=82=E6=8F=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/dto/ImportGeneralDTO.java | 15 +++ .../model/ImportNeighborHoodInfoListener.java | 93 +++++++++++++++++++ .../epmet/model/NeighborHoodInfoModel.java | 32 +++++++ .../impl/IcNeighborHoodServiceImpl.java | 50 ++++++++++ 4 files changed, 190 insertions(+) create mode 100644 epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java create mode 100644 epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/NeighborHoodInfoModel.java diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportGeneralDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportGeneralDTO.java index 2c2b3d8379..9039cda6ef 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportGeneralDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportGeneralDTO.java @@ -112,6 +112,21 @@ public class ImportGeneralDTO implements Serializable { */ private Integer num; + /** + * 关联物业 + */ + private String propertyName; + + /** + * 详细地址 + */ + private String address; + + /** + * 备注 + */ + private String remark; + /** * 房屋ID */ diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java new file mode 100644 index 0000000000..7d5a29af04 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java @@ -0,0 +1,93 @@ +package com.epmet.model; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.constant.CustomerGridConstant; +import com.epmet.dao.IcBuildingDao; +import com.epmet.dto.ImportGeneralDTO; +import com.epmet.dto.form.ImportInfoFormDTO; +import com.epmet.redis.IcHouseRedis; +import com.epmet.service.IcNeighborHoodService; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @Author zxc + * @DateTime 2022/2/15 2:16 下午 + * @DESC + */ +public class ImportNeighborHoodInfoListener extends AnalysisEventListener { + + List nums = new ArrayList<>(); + Integer num = NumConstant.ZERO; + + List needDisposeList = new ArrayList<>(); + List needInsertList = new ArrayList<>(); + + String gridName = null; + String agencyName = null; + + Map gridInfos = null; + List gridInfoDTOs = null; + Map neighborHoodInfos = null; + List neighborHoodInfoDTOs = null; + ImportGeneralDTO neighborHoodGeneralDTO = null; + + private ImportInfoFormDTO formDTO; + private IcHouseRedis icHouseRedis; + private IcBuildingDao icBuildingDao; + private IcNeighborHoodService neighborHoodService; + + public ImportNeighborHoodInfoListener(ImportInfoFormDTO formDTO, IcHouseRedis icHouseRedis,IcBuildingDao icBuildingDao,IcNeighborHoodService neighborHoodService){ + this.formDTO = formDTO; + this.icHouseRedis = icHouseRedis; + this.icBuildingDao = icBuildingDao; + this.neighborHoodService = neighborHoodService; + } + + + @Override + public void invoke(NeighborHoodInfoModel data, AnalysisContext context) { + if (null == data){ + return; + } + num = num + NumConstant.ONE; + ImportGeneralDTO dto = ConvertUtils.sourceToTarget(data, ImportGeneralDTO.class); + dto.setNum(num); + dto.setCustomerId(formDTO.getCustomerId()); + if (formDTO.getOrgType().equals(CustomerGridConstant.GRID)){ + disposeGridNeighborHood(dto); + }else if (formDTO.getOrgType().equals(CustomerGridConstant.AGENCY)){ + disposeAgencyNeighborHood(dto); + } + } + + /** + * @Description 左侧树点击网格时调用 + * @param dto + * @author zxc + * @date 2022/2/15 2:37 下午 + */ + public void disposeGridNeighborHood(ImportGeneralDTO dto){ + + } + + /** + * @Description 左侧树点击组织时调用 + * @param dto + * @author zxc + * @date 2022/2/15 2:37 下午 + */ + public void disposeAgencyNeighborHood(ImportGeneralDTO dto){ + + } + + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + + } +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/NeighborHoodInfoModel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/NeighborHoodInfoModel.java new file mode 100644 index 0000000000..8dbdbafccd --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/NeighborHoodInfoModel.java @@ -0,0 +1,32 @@ +package com.epmet.model; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +/** + * @Author zxc + * @DateTime 2022/2/15 2:15 下午 + * @DESC + */ +@Data +public class NeighborHoodInfoModel { + + @ExcelProperty(value = "所属组织") + private String agencyName; + + @ExcelProperty(value = "所属网格") + private String gridName; + + @ExcelProperty(value = "小区名称") + private String neighborHoodName; + + @ExcelProperty(value = "关联物业") + private String propertyName; + + @ExcelProperty(value = "详细地址") + private String address; + + @ExcelProperty(value = "备注") + private String remark; + +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java index 2a4147a2c3..728a66978e 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java @@ -18,6 +18,9 @@ package com.epmet.service.impl; import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelReader; +import com.alibaba.excel.read.metadata.ReadSheet; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -37,13 +40,20 @@ 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.IcBuildingDao; import com.epmet.dao.IcNeighborHoodDao; import com.epmet.dao.IcPropertyManagementDao; import com.epmet.dto.*; import com.epmet.dto.form.ImportInfoFormDTO; +import com.epmet.dto.result.ImportResultDTO; import com.epmet.dto.result.InfoByNamesResultDTO; import com.epmet.entity.*; import com.epmet.excel.IcNeighborHoodExcel; +import com.epmet.model.BuildingInfoModel; +import com.epmet.model.ImportBuildingInfoListener; +import com.epmet.model.ImportNeighborHoodInfoListener; +import com.epmet.model.NeighborHoodInfoModel; +import com.epmet.redis.IcHouseRedis; import com.epmet.service.*; import com.epmet.util.ExcelPoiUtils; import lombok.extern.slf4j.Slf4j; @@ -57,6 +67,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.io.IOException; +import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; @@ -82,6 +93,10 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl page(Map params) { @@ -373,6 +388,41 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl().error("读取文件失败"); + } + excelReader = EasyExcel.read(inputStream).build(); + // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener + ReadSheet readSheet = EasyExcel.readSheet(0).head(NeighborHoodInfoModel.class) + .registerReadListener(new ImportNeighborHoodInfoListener(formDTO,icHouseRedis,icBuildingDao,this)) + .build(); + excelReader.read(readSheet); + } finally { + if (excelReader != null) { + excelReader.finish(); + } + } + ImportResultDTO dto = icHouseRedis.getImportResultDTO(formDTO.getCustomerId(), formDTO.getUserId()); + if (null == dto){ + return new Result<>(); + } + List nums = dto.getNums(); + Integer num = dto.getNum(); + String s = "共%s条数据,导入成功%s条。"; + if (nums.size() > NumConstant.ZERO){ + Collections.sort(nums); + s = s + "第"+nums.stream().map(String::valueOf).collect(Collectors.joining("、"))+"条导入失败"; + return new Result<>().error(9999,String.format(s,num,num - nums.size())); + } + return new Result<>().ok(String.format(s,num,num)); + } + /** * @Description 小区插入,物业插入 * @param entities From 62531ac5b5d278900a4e4c9b59af5ea3ad155f4e Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Tue, 15 Feb 2022 15:32:47 +0800 Subject: [PATCH 39/87] build --- .../main/java/com/epmet/model/ImportBuildingInfoListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java index f2dd6dc335..69f53b8f91 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java @@ -56,7 +56,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener Date: Tue, 15 Feb 2022 10:29:42 +0800 Subject: [PATCH 40/87] =?UTF-8?q?dto=E6=94=B9=E6=94=B9=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Conflicts: # epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java # epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java --- .../com/epmet/model/BuildingInfoModel.java | 38 +++ .../com/epmet/model/HouseInfoModelDTO.java | 41 --- .../model/ImportBuildingInfoListener.java | 266 +----------------- .../service/impl/BuildingServiceImpl.java | 12 +- 4 files changed, 51 insertions(+), 306 deletions(-) create mode 100644 epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingInfoModel.java delete mode 100644 epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModelDTO.java diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingInfoModel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingInfoModel.java new file mode 100644 index 0000000000..e76c391324 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingInfoModel.java @@ -0,0 +1,38 @@ +package com.epmet.model; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +/** + * @Author zxc + * @DateTime 2022/2/15 10:07 上午 + * @DESC + */ +@Data +public class BuildingInfoModel { + + @ExcelProperty(value = "所属组织") + private String agencyName; + + @ExcelProperty(value = "所属网格") + private String gridName; + + @ExcelProperty(value = "小区名称") + private String neighborHoodName; + + @ExcelProperty(value = "楼栋名称") + private String buildingName; + + @ExcelProperty(value = "楼栋类型") + private String type; + + @ExcelProperty(value = "单元数") + private Integer totalUnitNum; + + @ExcelProperty(value = "层数") + private Integer totalFloorNum; + + @ExcelProperty(value = "户数") + private Integer totalHouseNum; + +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModelDTO.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModelDTO.java deleted file mode 100644 index 2193e9cf2d..0000000000 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModelDTO.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.epmet.model; - -import com.alibaba.excel.annotation.ExcelProperty; -import lombok.Data; -import org.hibernate.validator.constraints.Length; - -/** - * @Author zxc - * @DateTime 2022/2/13 1:26 下午 - * @DESC - */ -@Data -public class HouseInfoModelDTO { - - private String agencyName; - - private String gridName; - - private String neighborHoodName; - - private String buildingName; - - private Integer buildingUnit; - - private String doorName; - - private String houseType; - - private String purpose; - - private String rentFlag; - - private String ownerName; - - private String ownerPhone; - - private String ownerIdCard; - - private Integer num; - -} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java index 69f53b8f91..0866793cf6 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java @@ -1,30 +1,15 @@ - package com.epmet.model; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.epmet.commons.tools.constant.NumConstant; -import com.epmet.commons.tools.exception.EpmetException; -import com.epmet.commons.tools.redis.common.CustomerOrgRedis; -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.constant.CustomerGridConstant; -import com.epmet.dao.IcBuildingDao; import com.epmet.dto.ImportGeneralDTO; import com.epmet.dto.form.ImportInfoFormDTO; -import com.epmet.dto.result.ImportResultDTO; -import com.epmet.enums.BuildingTypeEnums; import com.epmet.redis.IcHouseRedis; -import com.epmet.service.IcNeighborHoodService; -import org.apache.commons.lang3.StringUtils; -import org.springframework.util.CollectionUtils; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; /** * @Author zxc @@ -53,264 +38,19 @@ public class ImportBuildingInfoListener extends AnalysisEventListener groupByAllName = needDisposeList.stream().collect(Collectors.groupingBy( - n -> n.getAgencyName() + "_" + n.getGridName() + "_" + - n.getNeighborHoodName() + "_" + n.getBuildingName(), Collectors.counting())); - groupByAllName.forEach((k,v) -> { - if (Integer.valueOf(v.toString()).compareTo(1) > 0){ - for (ImportGeneralDTO r : needDisposeList) { - if (k.equals(r.getAgencyName() + "_" + r.getGridName() + "_" + - r.getNeighborHoodName() + "_" + r.getBuildingName())){ - // 集合里重复的 - r.setExistStatus(true); - nums.add(r.getNum()); - } - } - } - }); - Map> groupByStatus = needDisposeList.stream().collect(Collectors.groupingBy(ImportGeneralDTO::getExistStatus)); - List importGeneralDTOS = groupByStatus.get(false); - if (!CollectionUtils.isEmpty(importGeneralDTOS)){ - List importInfo = neighborHoodService.getImportInfo(formDTO, importGeneralDTOS); - Map> groupByBuildingExistStatus = importInfo.stream().collect(Collectors.groupingBy(ImportGeneralDTO::getBuildingExistStatus)); - List existList = groupByBuildingExistStatus.get(true); - if (!CollectionUtils.isEmpty(existList)){ - existList.forEach(e -> { - nums.add(e.getNum()); - }); - } - } - // 清除 - needDisposeList = new ArrayList<>(); - needInsertList = new ArrayList<>(); - gridName = null; - agencyName = null; - gridInfos = null; - gridInfoDTOs = null; - neighborHoodInfos = null; - neighborHoodInfoDTOs = null; - neighborHoodGeneralDTO = null; - buildingInfos = null; - buildingInfoDTOs = null; - buildingGeneralDTO = null; - } - - public void fillData(ImportGeneralDTO dto, String orgType){ - if (orgType.equals(CustomerGridConstant.GRID) || orgType.equals(CustomerGridConstant.AGENCY)){ - List gridIds = new ArrayList<>(); - if (orgType.equals(CustomerGridConstant.GRID)){ - gridIds = Arrays.asList(formDTO.getOrgId()); - }else if (orgType.equals(CustomerGridConstant.AGENCY)){ - gridIds = gridInfoDTOs.stream().map(m -> m.getGridId()).collect(Collectors.toList()); - } - neighborHoodInfos = null == neighborHoodInfos ? getNeighborHoodInfos(gridIds) : neighborHoodInfos; - Object cacheNeighBorHood = icHouseRedis.getTemporaryCacheNeighBorHood(formDTO.getCustomerId(), formDTO.getUserId(), formDTO.getOrgId() + "_" + dto.getNeighborHoodName()); - // 赋值小区ID - dto.setNeighborHoodId(null == cacheNeighBorHood ? "" : cacheNeighBorHood.toString()); - } - if (StringUtils.isNotBlank(dto.getNeighborHoodId())){ - //小区ID不为空赋值楼栋ID - buildingInfos = null == buildingInfos ? getBuildingInfos(dto.getNeighborHoodId()) : buildingInfos; - Object cacheBuilding = icHouseRedis.getTemporaryCacheBuilding(formDTO.getCustomerId(), formDTO.getUserId(), dto.getNeighborHoodId() + "_" + dto.getBuildingName()); - dto.setBuildingId(null == cacheBuilding ? "" : cacheBuilding.toString()); - if (StringUtils.isNotBlank(dto.getBuildingId())){ - // 说明数据库已存在此楼栋,不需添加 - nums.add(num); - }else { - needDisposeList.add(dto); - } - }else { - needDisposeList.add(dto); - } - } - - /** - * @Description 左侧树点击小区时调用 - * @param dto - * @author zxc - * @date 2022/2/15 10:41 上午 - */ - public void disposeNeighborHoodBuilding(ImportGeneralDTO dto){ - neighborHoodGeneralDTO = null == neighborHoodGeneralDTO ? icBuildingDao.selectNeighborHoodById(formDTO.getOrgId()) : neighborHoodGeneralDTO; - //排除不是本小区的 - if (!dto.getNeighborHoodName().equals(neighborHoodGeneralDTO.getNeighborHoodName())){ - nums.add(num); - }else { - GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(neighborHoodGeneralDTO.getGridId()); - if (null == gridInfo){ - throw new EpmetException("查询网格失败..."); - } - // 1.排除网格名不一样但小区名一样 2.排除组织不一样,网格一样,小区一样 - if ((!gridInfo.getGridName().equals(dto.getGridName()) && neighborHoodGeneralDTO.getNeighborHoodName().equals(dto.getNeighborHoodName())) || - (!gridInfo.getAgencyName().equals(dto.getAgencyName()) && gridInfo.getGridName().equals(dto.getGridName()) && neighborHoodGeneralDTO.getNeighborHoodName().equals(dto.getNeighborHoodName()))){ - nums.add(num); - return; - } - dto.setNeighborHoodId(formDTO.getOrgId()); - dto.setGridId(neighborHoodGeneralDTO.getGridId()); - dto.setAgencyId(neighborHoodGeneralDTO.getAgencyId()); - AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(dto.getAgencyId()); - if (null == agencyInfo){ - throw new EpmetException("查询组织信息失败..."); - } - dto.setPid(agencyInfo.getPid()); - dto.setPids(agencyInfo.getPids()); - // 填充各种ID - fillData(dto,CustomerGridConstant.NEIGHBORHOOD); - } - } - - /** - * @Description 左侧树点击网格时调用 - * @param dto - * @author zxc - * @date 2022/2/15 10:41 上午 - */ - public void disposeGridBuilding(ImportGeneralDTO dto){ - gridName = null == gridName ? icBuildingDao.selectGridNameById(formDTO.getOrgId()) : gridName; - GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(formDTO.getOrgId()); - if (null == gridInfo){ - throw new EpmetException("查询网格失败..."); - } - //排除不是本网格的 gridName不一样排除,gridName一样但是agencyName不一样也得排除 - if (!dto.getGridName().equals(gridName) || (!dto.getAgencyName().equals(gridInfo.getAgencyName()) && dto.getGridName().equals(gridName))){ - nums.add(num); - }else { - // - dto.setGridId(formDTO.getOrgId()); - dto.setAgencyId(gridInfo.getPid()); - AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(dto.getAgencyId()); - if (null == agencyInfo){ - throw new EpmetException("查询组织信息失败..."); - } - dto.setPid(agencyInfo.getPid()); - dto.setPids(agencyInfo.getPids()); - // 填充各种ID - fillData(dto, CustomerGridConstant.GRID); - } - } - - /** - * @Description 左侧树点击组织时调用 - * @param dto - * @author zxc - * @date 2022/2/15 10:41 上午 - */ - public void disposeAgencyBuilding(ImportGeneralDTO dto){ - agencyName = null == agencyName ? icBuildingDao.selectAgencyNameById(formDTO.getOrgId()) : agencyName; - //排除不是本组织的 - if (!dto.getAgencyName().equals(agencyName)){ - nums.add(num); - }else { - // 根据组织查询出所有网格,甩出不是本组织下的网格 - gridInfos = null == gridInfos ? getGridInfos(formDTO.getOrgId()) : gridInfos; - if (null == gridInfos){ - // 组织下确实不存在网格 - nums.add(num); - return; - } - // 根据网格名对比,没有找到的就把行号加入到未执行成功队列中 - Object cacheGridName = icHouseRedis.getTemporaryCacheGrid(formDTO.getCustomerId(), formDTO.getUserId(), dto.getGridName()); - if (null == cacheGridName){ - nums.add(num); - return; - } - dto.setGridId(cacheGridName.toString()); - dto.setAgencyId(formDTO.getOrgId()); - AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(dto.getAgencyId()); - if (null == agencyInfo){ - throw new EpmetException("查询组织信息失败..."); - } - dto.setPid(agencyInfo.getPid()); - dto.setPids(agencyInfo.getPids()); - // 填充各种ID - fillData(dto,CustomerGridConstant.AGENCY); - } - } - - /** - * @Description 获取网格信息 - * @param orgId - * @author zxc - * @date 2022/2/14 9:57 上午 - */ - public Map getGridInfos(String orgId){ - gridInfoDTOs = icBuildingDao.selectAllGridByOrgId(orgId); - gridInfos = gridInfoDTOs.stream().collect(Collectors.toMap(n -> n.getGridName(), n -> n.getGridId())); - icHouseRedis.setTemporaryCacheGrid(formDTO.getCustomerId(), gridInfos, formDTO.getUserId()); - return gridInfos; - } - - /** - * @Description 获取网格下的小区 - * @param gridIds - * @author zxc - * @date 2022/2/14 10:16 上午 - */ - public Map getNeighborHoodInfos(List gridIds){ - neighborHoodInfoDTOs = icBuildingDao.selectAllNeighborHoodByGridIds(gridIds); - neighborHoodInfos = neighborHoodInfoDTOs.stream().collect(Collectors.toMap(n -> n.getGridId() + "_" + n.getNeighborHoodName(), n -> n.getNeighborHoodId())); - icHouseRedis.setTemporaryCacheNeighBorHood(formDTO.getCustomerId(), neighborHoodInfos, formDTO.getUserId()); - return neighborHoodInfos; - } - - /** - * @Description 获取小区下的楼栋 - * @param neighborHoodId - * @author zxc - * @date 2022/2/14 1:32 下午 - */ - public Map getBuildingInfos(String neighborHoodId){ - buildingInfoDTOs = icBuildingDao.selectAllBuildingByNeighborHoodId(neighborHoodId); - buildingInfos = buildingInfoDTOs.stream().collect(Collectors.toMap(n -> n.getNeighborHoodId() + "_" + n.getBuildingName(), n -> n.getBuildingId())); - icHouseRedis.setTemporaryCacheBuilding(formDTO.getCustomerId(), buildingInfos, formDTO.getUserId()); - return buildingInfos; } @Override public void doAfterAllAnalysed(AnalysisContext context) { - finalDispose(); - // 删除缓存 - icHouseRedis.delTemporaryCacheGrids(formDTO.getCustomerId(), formDTO.getUserId()); - icHouseRedis.delTemporaryCacheNeighBorHood(formDTO.getCustomerId(), formDTO.getUserId()); - icHouseRedis.delTemporaryCacheBuilding(formDTO.getCustomerId(), formDTO.getUserId()); - icHouseRedis.delTemporaryCacheBuildingUnit(formDTO.getCustomerId(), formDTO.getUserId()); - icHouseRedis.delTemporaryCacheHouses(formDTO.getCustomerId(), formDTO.getUserId()); - // 放结果 - icHouseRedis.setImportResultDTO(formDTO.getCustomerId(), formDTO.getUserId(), new ImportResultDTO(nums,num)); + } -} \ No newline at end of file +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java index 9996cc9db7..d81c28ad08 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java @@ -1,6 +1,9 @@ package com.epmet.service.impl; import cn.afterturn.easypoi.excel.entity.TemplateExportParams; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelReader; +import com.alibaba.excel.read.metadata.ReadSheet; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -24,9 +27,13 @@ import com.epmet.dto.form.ListIcNeighborHoodFormDTO; import com.epmet.dto.result.BuildingResultDTO; import com.epmet.dto.result.BuildingResultPagedDTO; import com.epmet.dto.result.IcNeighborHoodResultDTO; +import com.epmet.dto.result.ImportResultDTO; import com.epmet.entity.*; import com.epmet.enums.BuildingTypeEnums; import com.epmet.excel.IcBuildingExcel; +import com.epmet.model.HouseInfoModel; +import com.epmet.model.ImportBuildingInfoListener; +import com.epmet.redis.IcHouseRedis; import com.epmet.service.BuildingService; import com.epmet.service.IcBuildingService; import com.epmet.service.IcBuildingUnitService; @@ -48,6 +55,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.io.InputStream; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -403,8 +411,8 @@ public class BuildingServiceImpl implements BuildingService { } excelReader = EasyExcel.read(inputStream).build(); // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener - ReadSheet readSheet = EasyExcel.readSheet(0).head(BuildingInfoModel.class) - .registerReadListener(new ImportBuildingInfoListener(formDTO,icHouseRedis,icBuildingDao,neighborHoodService)) + ReadSheet readSheet = EasyExcel.readSheet(0).head(HouseInfoModel.class) + .registerReadListener(new ImportBuildingInfoListener(formDTO,icHouseRedis)) .build(); excelReader.read(readSheet); } finally { From 026af1d35378a3260752679739de94b51f9bd4ca Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Tue, 15 Feb 2022 14:10:55 +0800 Subject: [PATCH 41/87] =?UTF-8?q?=E6=A5=BC=E6=A0=8B=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/ImportBuildingInfoListener.java | 263 +++++++++++++++++- .../service/impl/BuildingServiceImpl.java | 11 +- 2 files changed, 265 insertions(+), 9 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java index 0866793cf6..b894c7fba2 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java @@ -3,13 +3,27 @@ package com.epmet.model; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.redis.common.CustomerOrgRedis; +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.constant.CustomerGridConstant; +import com.epmet.dao.IcBuildingDao; import com.epmet.dto.ImportGeneralDTO; import com.epmet.dto.form.ImportInfoFormDTO; +import com.epmet.dto.result.ImportResultDTO; +import com.epmet.enums.BuildingTypeEnums; import com.epmet.redis.IcHouseRedis; +import com.epmet.service.IcNeighborHoodService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.util.CollectionUtils; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * @Author zxc @@ -38,19 +52,264 @@ public class ImportBuildingInfoListener extends AnalysisEventListener groupByAllName = needDisposeList.stream().collect(Collectors.groupingBy( + n -> n.getAgencyName() + "_" + n.getGridName() + "_" + + n.getNeighborHoodName() + "_" + n.getBuildingName(), Collectors.counting())); + groupByAllName.forEach((k,v) -> { + if (Integer.valueOf(v.toString()).compareTo(1) > 0){ + for (ImportGeneralDTO r : needDisposeList) { + if (k.equals(r.getAgencyName() + "_" + r.getGridName() + "_" + + r.getNeighborHoodName() + "_" + r.getBuildingName())){ + // 集合里重复的 + r.setExistStatus(true); + nums.add(r.getNum()); + } + } + } + }); + Map> groupByStatus = needDisposeList.stream().collect(Collectors.groupingBy(ImportGeneralDTO::getExistStatus)); + List importGeneralDTOS = groupByStatus.get(false); + if (!CollectionUtils.isEmpty(importGeneralDTOS)){ + List importInfo = neighborHoodService.getImportInfo(formDTO, importGeneralDTOS); + Map> groupByBuildingExistStatus = importInfo.stream().collect(Collectors.groupingBy(ImportGeneralDTO::getBuildingExistStatus)); + List existList = groupByBuildingExistStatus.get(true); + if (!CollectionUtils.isEmpty(existList)){ + existList.forEach(e -> { + nums.add(e.getNum()); + }); + } + } + // 清除 + needDisposeList = new ArrayList<>(); + needInsertList = new ArrayList<>(); + gridName = null; + agencyName = null; + gridInfos = null; + gridInfoDTOs = null; + neighborHoodInfos = null; + neighborHoodInfoDTOs = null; + neighborHoodGeneralDTO = null; + buildingInfos = null; + buildingInfoDTOs = null; + buildingGeneralDTO = null; + } + + public void fillData(ImportGeneralDTO dto, String orgType){ + if (orgType.equals(CustomerGridConstant.GRID) || orgType.equals(CustomerGridConstant.AGENCY)){ + List gridIds = new ArrayList<>(); + if (orgType.equals(CustomerGridConstant.GRID)){ + gridIds = Arrays.asList(formDTO.getOrgId()); + }else if (orgType.equals(CustomerGridConstant.AGENCY)){ + gridIds = gridInfoDTOs.stream().map(m -> m.getGridId()).collect(Collectors.toList()); + } + neighborHoodInfos = null == neighborHoodInfos ? getNeighborHoodInfos(gridIds) : neighborHoodInfos; + Object cacheNeighBorHood = icHouseRedis.getTemporaryCacheNeighBorHood(formDTO.getCustomerId(), formDTO.getUserId(), formDTO.getOrgId() + "_" + dto.getNeighborHoodName()); + // 赋值小区ID + dto.setNeighborHoodId(null == cacheNeighBorHood ? "" : cacheNeighBorHood.toString()); + } + if (StringUtils.isNotBlank(dto.getNeighborHoodId())){ + //小区ID不为空赋值楼栋ID + buildingInfos = null == buildingInfos ? getBuildingInfos(dto.getNeighborHoodId()) : buildingInfos; + Object cacheBuilding = icHouseRedis.getTemporaryCacheBuilding(formDTO.getCustomerId(), formDTO.getUserId(), dto.getNeighborHoodId() + "_" + dto.getBuildingName()); + dto.setBuildingId(null == cacheBuilding ? "" : cacheBuilding.toString()); + if (StringUtils.isNotBlank(dto.getBuildingId())){ + // 说明数据库已存在此楼栋,不需添加 + nums.add(num); + }else { + needDisposeList.add(dto); + } + }else { + needDisposeList.add(dto); + } + } + + /** + * @Description 左侧树点击小区时调用 + * @param dto + * @author zxc + * @date 2022/2/15 10:41 上午 + */ + public void disposeNeighborHoodBuilding(ImportGeneralDTO dto){ + neighborHoodGeneralDTO = null == neighborHoodGeneralDTO ? icBuildingDao.selectNeighborHoodById(formDTO.getOrgId()) : neighborHoodGeneralDTO; + //排除不是本小区的 + if (!dto.getNeighborHoodName().equals(neighborHoodGeneralDTO.getNeighborHoodName())){ + nums.add(num); + }else { + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(neighborHoodGeneralDTO.getGridId()); + if (null == gridInfo){ + throw new EpmetException("查询网格失败..."); + } + // 1.排除网格名不一样但小区名一样 2.排除组织不一样,网格一样,小区一样 + if ((!gridInfo.getGridName().equals(dto.getGridName()) && neighborHoodGeneralDTO.getNeighborHoodName().equals(dto.getNeighborHoodName())) || + (!gridInfo.getAgencyName().equals(dto.getAgencyName()) && gridInfo.getGridName().equals(dto.getGridName()) && neighborHoodGeneralDTO.getNeighborHoodName().equals(dto.getNeighborHoodName()))){ + nums.add(num); + return; + } + dto.setNeighborHoodId(formDTO.getOrgId()); + dto.setGridId(neighborHoodGeneralDTO.getGridId()); + dto.setAgencyId(neighborHoodGeneralDTO.getAgencyId()); + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(dto.getAgencyId()); + if (null == agencyInfo){ + throw new EpmetException("查询组织信息失败..."); + } + dto.setPid(agencyInfo.getPid()); + dto.setPids(agencyInfo.getPids()); + // 填充各种ID + fillData(dto,CustomerGridConstant.NEIGHBORHOOD); + } + } + + /** + * @Description 左侧树点击网格时调用 + * @param dto + * @author zxc + * @date 2022/2/15 10:41 上午 + */ + public void disposeGridBuilding(ImportGeneralDTO dto){ + gridName = null == gridName ? icBuildingDao.selectGridNameById(formDTO.getOrgId()) : gridName; + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(formDTO.getOrgId()); + if (null == gridInfo){ + throw new EpmetException("查询网格失败..."); + } + //排除不是本网格的 gridName不一样排除,gridName一样但是agencyName不一样也得排除 + if (!dto.getGridName().equals(gridName) || (!dto.getAgencyName().equals(gridInfo.getAgencyName()) && dto.getGridName().equals(gridName))){ + nums.add(num); + }else { + // + dto.setGridId(formDTO.getOrgId()); + dto.setAgencyId(gridInfo.getPid()); + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(dto.getAgencyId()); + if (null == agencyInfo){ + throw new EpmetException("查询组织信息失败..."); + } + dto.setPid(agencyInfo.getPid()); + dto.setPids(agencyInfo.getPids()); + // 填充各种ID + fillData(dto, CustomerGridConstant.GRID); + } + } + + /** + * @Description 左侧树点击组织时调用 + * @param dto + * @author zxc + * @date 2022/2/15 10:41 上午 + */ + public void disposeAgencyBuilding(ImportGeneralDTO dto){ + agencyName = null == agencyName ? icBuildingDao.selectAgencyNameById(formDTO.getOrgId()) : agencyName; + //排除不是本组织的 + if (!dto.getAgencyName().equals(agencyName)){ + nums.add(num); + }else { + // 根据组织查询出所有网格,甩出不是本组织下的网格 + gridInfos = null == gridInfos ? getGridInfos(formDTO.getOrgId()) : gridInfos; + if (null == gridInfos){ + // 组织下确实不存在网格 + nums.add(num); + return; + } + // 根据网格名对比,没有找到的就把行号加入到未执行成功队列中 + Object cacheGridName = icHouseRedis.getTemporaryCacheGrid(formDTO.getCustomerId(), formDTO.getUserId(), dto.getGridName()); + if (null == cacheGridName){ + nums.add(num); + return; + } + dto.setGridId(cacheGridName.toString()); + dto.setAgencyId(formDTO.getOrgId()); + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(dto.getAgencyId()); + if (null == agencyInfo){ + throw new EpmetException("查询组织信息失败..."); + } + dto.setPid(agencyInfo.getPid()); + dto.setPids(agencyInfo.getPids()); + // 填充各种ID + fillData(dto,CustomerGridConstant.AGENCY); + } + } + + /** + * @Description 获取网格信息 + * @param orgId + * @author zxc + * @date 2022/2/14 9:57 上午 + */ + public Map getGridInfos(String orgId){ + gridInfoDTOs = icBuildingDao.selectAllGridByOrgId(orgId); + gridInfos = gridInfoDTOs.stream().collect(Collectors.toMap(n -> n.getGridName(), n -> n.getGridId())); + icHouseRedis.setTemporaryCacheGrid(formDTO.getCustomerId(), gridInfos, formDTO.getUserId()); + return gridInfos; + } + + /** + * @Description 获取网格下的小区 + * @param gridIds + * @author zxc + * @date 2022/2/14 10:16 上午 + */ + public Map getNeighborHoodInfos(List gridIds){ + neighborHoodInfoDTOs = icBuildingDao.selectAllNeighborHoodByGridIds(gridIds); + neighborHoodInfos = neighborHoodInfoDTOs.stream().collect(Collectors.toMap(n -> n.getGridId() + "_" + n.getNeighborHoodName(), n -> n.getNeighborHoodId())); + icHouseRedis.setTemporaryCacheNeighBorHood(formDTO.getCustomerId(), neighborHoodInfos, formDTO.getUserId()); + return neighborHoodInfos; + } + /** + * @Description 获取小区下的楼栋 + * @param neighborHoodId + * @author zxc + * @date 2022/2/14 1:32 下午 + */ + public Map getBuildingInfos(String neighborHoodId){ + buildingInfoDTOs = icBuildingDao.selectAllBuildingByNeighborHoodId(neighborHoodId); + buildingInfos = buildingInfoDTOs.stream().collect(Collectors.toMap(n -> n.getNeighborHoodId() + "_" + n.getBuildingName(), n -> n.getBuildingId())); + icHouseRedis.setTemporaryCacheBuilding(formDTO.getCustomerId(), buildingInfos, formDTO.getUserId()); + return buildingInfos; } @Override public void doAfterAllAnalysed(AnalysisContext context) { - + finalDispose(); + // 删除缓存 + icHouseRedis.delTemporaryCacheGrids(formDTO.getCustomerId(), formDTO.getUserId()); + icHouseRedis.delTemporaryCacheNeighBorHood(formDTO.getCustomerId(), formDTO.getUserId()); + icHouseRedis.delTemporaryCacheBuilding(formDTO.getCustomerId(), formDTO.getUserId()); + icHouseRedis.delTemporaryCacheBuildingUnit(formDTO.getCustomerId(), formDTO.getUserId()); + icHouseRedis.delTemporaryCacheHouses(formDTO.getCustomerId(), formDTO.getUserId()); + // 放结果 + icHouseRedis.setImportResultDTO(formDTO.getCustomerId(), formDTO.getUserId(), new ImportResultDTO(nums,num)); } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java index d81c28ad08..abe5503639 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java @@ -31,18 +31,15 @@ import com.epmet.dto.result.ImportResultDTO; import com.epmet.entity.*; import com.epmet.enums.BuildingTypeEnums; import com.epmet.excel.IcBuildingExcel; +import com.epmet.model.BuildingInfoModel; import com.epmet.model.HouseInfoModel; import com.epmet.model.ImportBuildingInfoListener; import com.epmet.redis.IcHouseRedis; +import com.epmet.service.*; import com.epmet.service.BuildingService; import com.epmet.service.IcBuildingService; import com.epmet.service.IcBuildingUnitService; import com.epmet.service.IcHouseService; -import com.epmet.model.BuildingInfoModel; -import com.epmet.model.HouseInfoModel; -import com.epmet.model.ImportBuildingInfoListener; -import com.epmet.redis.IcHouseRedis; -import com.epmet.service.*; import com.epmet.util.ExcelPoiUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -411,8 +408,8 @@ public class BuildingServiceImpl implements BuildingService { } excelReader = EasyExcel.read(inputStream).build(); // 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener - ReadSheet readSheet = EasyExcel.readSheet(0).head(HouseInfoModel.class) - .registerReadListener(new ImportBuildingInfoListener(formDTO,icHouseRedis)) + ReadSheet readSheet = EasyExcel.readSheet(0).head(BuildingInfoModel.class) + .registerReadListener(new ImportBuildingInfoListener(formDTO,icHouseRedis,icBuildingDao,neighborHoodService)) .build(); excelReader.read(readSheet); } finally { From 80b18cf605e05b536714e5024c9f1f8682854616 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 15 Feb 2022 16:15:23 +0800 Subject: [PATCH 42/87] =?UTF-8?q?=E7=BD=91=E6=A0=BC=E5=91=98=E4=BE=8B?= =?UTF-8?q?=E8=A1=8C=E5=B7=A5=E4=BD=9C=E6=8E=A5=E5=8F=A3=E5=88=9D=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../patrol/GridMemberRoutineWorkFormDTO.java | 47 ++++++++ .../result/RoutineWorkDetailResultDTO.java | 84 ++++++++++++++ .../dto/result/RoutineWorkListResultDTO.java | 63 +++++++++++ .../epmet/dto/result/StatsdataResultDTO.java | 35 ++++++ .../PatrolRoutineWorkController.java | 48 ++++++-- .../com/epmet/dao/PatrolRoutineWorkDao.java | 16 +++ .../dao/StatsStaffPatrolRecordDailyDao.java | 7 ++ .../service/PatrolRoutineWorkService.java | 22 +++- .../impl/PatrolRoutineWorkServiceImpl.java | 106 ++++++++++++++++-- .../resources/mapper/PatrolRoutineWorkDao.xml | 42 +++++++ .../mapper/StatsStaffPatrolRecordDailyDao.xml | 13 +++ 11 files changed, 463 insertions(+), 20 deletions(-) create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/patrol/GridMemberRoutineWorkFormDTO.java create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/RoutineWorkDetailResultDTO.java create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/RoutineWorkListResultDTO.java create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/StatsdataResultDTO.java diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/patrol/GridMemberRoutineWorkFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/patrol/GridMemberRoutineWorkFormDTO.java new file mode 100644 index 0000000000..d1c26b624b --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/patrol/GridMemberRoutineWorkFormDTO.java @@ -0,0 +1,47 @@ +package com.epmet.dto.form.patrol; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description 网格员例行工作 + * @Author sun + */ +@Data +public class GridMemberRoutineWorkFormDTO implements Serializable { + + private static final long serialVersionUID = -3522636529743412120L; + public interface RoutineWork extends CustomerClientShowGroup {} + public interface RoutineWorkDetail extends CustomerClientShowGroup {} + + /** + * 网格Id + */ + @NotBlank(message = "网格Id不能为空", groups = RoutineWork.class) + private String gridId; + + /** + * 例行工作Id + */ + @NotBlank(message = "例行工作Id不能为空", groups = RoutineWorkDetail.class) + private String routineWorkId; + + /** + * 当前页 + */ + private Integer pageNo = 1; + + /** + * 每页记录数 + */ + private Integer pageSize = 20; + + //token中客户Id + private String customerId; + //token中用户Id + private String staffId; + +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/RoutineWorkDetailResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/RoutineWorkDetailResultDTO.java new file mode 100644 index 0000000000..94335fda2b --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/RoutineWorkDetailResultDTO.java @@ -0,0 +1,84 @@ +package com.epmet.dto.result; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description 网格员例行工作详情 + * @Author sun + */ +@Data +public class RoutineWorkDetailResultDTO implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 例行工作Id + */ + private String routineWorkId; + /** + * 网格Id + */ + private String gridId; + /** + * 网格名称 + */ + private String gridName; + /** + * 网格员Id + */ + private String staffId; + /** + * 网格员姓名 + */ + private String staffName; + /** + * 提交日期 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date submitTime; + /** + * 事项类型名称,一类-二类 + */ + private String workTypeName; + /** + * 重点人员是否在当地 + */ + private String isKeyPeopleLocateName; + /** + * 重点人员现状 + */ + private String keyPeopleStatus; + /** + * 事项名称 + */ + private String title; + /** + * 是否异常 + */ + private String isNormalName; + /** + * 发生日期 + */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date happenTime; + /** + * 发生地点 + */ + private String address; + /** + * 事项简述 + */ + private String workContent; + + //例行工作一类编码 + @JsonIgnore + private String allPCode; + //例行工作二类编码 + @JsonIgnore + private String workTypeCode; + +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/RoutineWorkListResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/RoutineWorkListResultDTO.java new file mode 100644 index 0000000000..f37dedcfbb --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/RoutineWorkListResultDTO.java @@ -0,0 +1,63 @@ +package com.epmet.dto.result; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * @Description 网格员例行工作列表 + * @Author sun + */ +@Data +public class RoutineWorkListResultDTO implements Serializable { + private static final long serialVersionUID = 1L; + /** + * 总条数 + */ + private Integer total = 0; + + /** + * 集合对象 + */ + private List list; + + @Data + public static class RoutineWorkList { + /** + * 例行工作Id + */ + private String routineWorkId; + + /** + * 标题 + */ + private String title; + + /** + * 提交日期 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date submitTime; + + /** + * 工作类型[一类-二类名称] + */ + private String workTypeName; + + /** + * 是否异常 + */ + private String isNormalName; + //例行工作一类编码 + @JsonIgnore + private String allPCode; + //例行工作二类编码 + @JsonIgnore + private String workTypeCode; + } + +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/StatsdataResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/StatsdataResultDTO.java new file mode 100644 index 0000000000..307309f01c --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/StatsdataResultDTO.java @@ -0,0 +1,35 @@ +package com.epmet.dto.result; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description 网格员例行工作数据统计 + * @Author sun + */ +@Data +public class StatsdataResultDTO implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 巡查总次数 + */ + private Integer patrolTotal; + + /** + * 巡查时长(xx小时xx分钟) + */ + private String totalTime; + @JsonIgnore + private Integer totalNum; + + /** + * 例行工作总次数 + */ + private Integer routineWorkCount; + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/PatrolRoutineWorkController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/PatrolRoutineWorkController.java index 5297d84c2a..41f14362ee 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/PatrolRoutineWorkController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/PatrolRoutineWorkController.java @@ -1,21 +1,17 @@ package com.epmet.controller; -import com.alibaba.excel.EasyExcel; -import com.alibaba.excel.ExcelWriter; -import com.alibaba.excel.write.metadata.WriteSheet; +import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; -import com.epmet.commons.tools.utils.ExcelUtils; +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.dto.form.PatrolRoutineWorkFormDTO; import com.epmet.dto.form.PcWorkListFormDTO; +import com.epmet.dto.form.patrol.GridMemberRoutineWorkFormDTO; import com.epmet.dto.form.patrol.PatrolQueryFormDTO; -import com.epmet.dto.result.PatrolRoutineWorkResult; -import com.epmet.dto.result.PcWorkListResultDTO; -import com.epmet.excel.PcWorkListExport; +import com.epmet.dto.result.*; import com.epmet.service.PatrolRoutineWorkService; import com.github.pagehelper.Page; -import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -25,8 +21,6 @@ import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletResponse; import java.util.List; -import static io.netty.handler.codec.smtp.SmtpRequests.data; - /** * 例行工作 * @@ -85,4 +79,38 @@ public class PatrolRoutineWorkController { gridUserWorkService.pcWorkListExport(formDTO,response); } + /** + * @Author sun + * @Description 【例行工作】网格员巡查例行工作统计数据 + **/ + @PostMapping("statsdata") + public Result statsData(@LoginUser TokenDto tokenDto, @RequestBody GridMemberRoutineWorkFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, GridMemberRoutineWorkFormDTO.RoutineWork.class); + formDTO.setStaffId(tokenDto.getUserId()); + return new Result().ok(gridUserWorkService.statsData(formDTO)); + } + + /** + * @Author sun + * @Description 【例行工作】网格员例行工作列表 + **/ + @PostMapping("list") + public Result list(@LoginUser TokenDto tokenDto, @RequestBody GridMemberRoutineWorkFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, GridMemberRoutineWorkFormDTO.RoutineWork.class); + formDTO.setStaffId(tokenDto.getUserId()); + return new Result().ok(gridUserWorkService.list(formDTO)); + } + + /** + * @Author sun + * @Description 【例行工作】例行工作详情 + **/ + @PostMapping("detail") + public Result detail(@LoginUser TokenDto tokenDto, @RequestBody GridMemberRoutineWorkFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, GridMemberRoutineWorkFormDTO.RoutineWorkDetail.class); + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setStaffId(tokenDto.getUserId()); + return new Result().ok(gridUserWorkService.detail(formDTO)); + } + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/PatrolRoutineWorkDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/PatrolRoutineWorkDao.java index d728cc82e2..6f99cf404a 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/PatrolRoutineWorkDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/PatrolRoutineWorkDao.java @@ -22,8 +22,11 @@ import com.epmet.dto.form.PcWorkListFormDTO; import com.epmet.dto.form.patrol.PatrolQueryFormDTO; import com.epmet.dto.result.PatrolRoutineWorkResult; import com.epmet.dto.result.PcWorkListResultDTO; +import com.epmet.dto.result.RoutineWorkDetailResultDTO; +import com.epmet.dto.result.RoutineWorkListResultDTO; import com.epmet.entity.PatrolRoutineWorkEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -39,4 +42,17 @@ public interface PatrolRoutineWorkDao extends BaseDao { List selectList(PatrolQueryFormDTO formDTO); List pcWorkList(PcWorkListFormDTO formDTO); + + /** + * @Author sun + * @Description 【例行工作】网格员例行工作列表 + **/ + List staffRoutineWorkList(@Param("gridId") String gridId, @Param("staffId") String staffId); + + /** + * @Author sun + * @Description 【例行工作】例行工作详情 + **/ + RoutineWorkDetailResultDTO getDetail(@Param("routineWorkId") String routineWorkId); + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/StatsStaffPatrolRecordDailyDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/StatsStaffPatrolRecordDailyDao.java index 15b4b8c02d..d8eba9d0b0 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/StatsStaffPatrolRecordDailyDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/StatsStaffPatrolRecordDailyDao.java @@ -20,6 +20,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dto.result.PatrolYuShanResultDTO; import com.epmet.dto.result.SelectPatrolCountResultDTO; +import com.epmet.dto.result.StatsdataResultDTO; import com.epmet.entity.StatsStaffPatrolRecordDailyEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -81,5 +82,11 @@ public interface StatsStaffPatrolRecordDailyDao extends BaseDao patrolInfo(@Param("agencyId")String agencyId); + + /** + * @Author sun + * @Description 【例行工作】网格员巡查例行工作统计数据 + **/ + StatsdataResultDTO getStatsData(@Param("gridId") String gridId, @Param("staffId") String staffId); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/PatrolRoutineWorkService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/PatrolRoutineWorkService.java index 5af4a1300a..81653fea19 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/PatrolRoutineWorkService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/PatrolRoutineWorkService.java @@ -20,9 +20,9 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.dto.form.PatrolRoutineWorkFormDTO; import com.epmet.dto.form.PcWorkListFormDTO; +import com.epmet.dto.form.patrol.GridMemberRoutineWorkFormDTO; import com.epmet.dto.form.patrol.PatrolQueryFormDTO; -import com.epmet.dto.result.PatrolRoutineWorkResult; -import com.epmet.dto.result.PcWorkListResultDTO; +import com.epmet.dto.result.*; import com.epmet.entity.PatrolRoutineWorkEntity; import com.github.pagehelper.Page; @@ -58,4 +58,22 @@ public interface PatrolRoutineWorkService extends BaseService NumConstant.ZERO ? resultDTO.getTotalNum() / 60 : 0); + String patrolDuration = (minutes / 60 > 0 ? minutes / 60 + "小时" : "") + (minutes % 60 > 0 ? minutes % 60 + "分钟" : "0分钟"); + resultDTO.setTotalTime(patrolDuration); + + return resultDTO; + } + + /** + * @Author sun + * @Description 【例行工作】网格员例行工作列表 + **/ + @Override + public RoutineWorkListResultDTO list(GridMemberRoutineWorkFormDTO formDTO) { + RoutineWorkListResultDTO resultDTO = new RoutineWorkListResultDTO(); + //1.按条件查询网格员例行工作列表数据 + PageInfo result = + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.staffRoutineWorkList(formDTO.getGridId(), formDTO.getStaffId())); + if (org.springframework.util.CollectionUtils.isEmpty(result.getList())) { + return resultDTO; + } + + //2.查询分类编码字典数据 + Result> unitTypeMap = adminOpenFeignClient.dictMap(DictTypeEnum.PATROL_WORK_TYPE.getCode()); + if (!unitTypeMap.success() || MapUtils.isEmpty(unitTypeMap.getData())) { + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "获取例行工作类型字典表数据失败!"); + } + Map map = unitTypeMap.getData(); + + //3.封装数据并返回 + result.getList().forEach(re -> { + re.setWorkTypeName(map.get(re.getWorkTypeCode()) + "-" + map.get(re.getWorkTypeCode())); + }); + resultDTO.setTotal((int) result.getTotal()); + resultDTO.setList(result.getList()); + return resultDTO; + } + + /** + * @Author sun + * @Description 【例行工作】例行工作详情 + **/ + @Override + public RoutineWorkDetailResultDTO detail(GridMemberRoutineWorkFormDTO formDTO) { + //1.查询例行工作详情数据 + RoutineWorkDetailResultDTO resultDTO = baseDao.getDetail(formDTO.getRoutineWorkId()); + if (null == resultDTO) { + return new RoutineWorkDetailResultDTO(); + } + //2.获取工作人员缓存信息 + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getStaffId()); + if (null == staffInfo) { + throw new EpmetException(String.format("查询工作人员%s缓存信息失败...", formDTO.getStaffId())); + } + //3.获取网格缓存信息 + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(resultDTO.getGridId()); + if (null == gridInfo) { + throw new EpmetException(String.format("未查询到网格{%s}信息", resultDTO.getGridId())); + } + if (StringUtils.isEmpty(gridInfo.getAgencyName())) { + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(gridInfo.getPid()); + gridInfo.setAgencyName(agencyInfo.getOrganizationName()); + } + //4.获取例行工作类型字典表数据 + Result> unitTypeMap = adminOpenFeignClient.dictMap(DictTypeEnum.PATROL_WORK_TYPE.getCode()); + if (!unitTypeMap.success() || MapUtils.isEmpty(unitTypeMap.getData())) { + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "获取例行工作类型字典表数据失败!"); + } + //5.封装数据并返回 + resultDTO.setGridName(gridInfo.getAgencyName() + "-" + gridInfo.getGridName()); + resultDTO.setStaffName(staffInfo.getRealName()); + resultDTO.setWorkTypeName(unitTypeMap.getData().get(resultDTO.getAllPCode()) + "-" + unitTypeMap.getData().get(resultDTO.getWorkTypeCode())); + return resultDTO; + + } + } diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/PatrolRoutineWorkDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/PatrolRoutineWorkDao.xml index 78cf718131..5d155dbe82 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/PatrolRoutineWorkDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/PatrolRoutineWorkDao.xml @@ -86,5 +86,47 @@ SELECT WORK_TYPE_CODE AS workTypeCode FROM patrol_routine_work_type WHERE DEL_FLAG = 0 AND ROUTINE_WORK_ID = #{wid} + + + + diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/StatsStaffPatrolRecordDailyDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/StatsStaffPatrolRecordDailyDao.xml index f1ae028345..0b25e9caf1 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/StatsStaffPatrolRecordDailyDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/StatsStaffPatrolRecordDailyDao.xml @@ -65,4 +65,17 @@ GROUP BY GRID_ID,STAFF_ID + + \ No newline at end of file From dca33204873961d62c3a51489d42576b4d8e99da Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Tue, 15 Feb 2022 16:21:10 +0800 Subject: [PATCH 43/87] =?UTF-8?q?neighborHood=E5=8D=95=E8=AF=8D=E6=94=B9?= =?UTF-8?q?=E5=8A=A8=E5=8E=BB=E6=8E=89u?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/controller/IcNeighborHoodController.java | 2 +- .../main/java/com/epmet/service/impl/BuildingServiceImpl.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java index 806faa2240..a78ea28431 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java @@ -128,7 +128,7 @@ public class IcNeighborHoodController { formDTO.setOrgType(orgType); formDTO.setOrgId(orgId); formDTO.setUserId(tokenDTO.getUserId()); - return new Result().ok(icNeighborHoodService.neighborhoodImport(formDTO,file)); + return icNeighborHoodService.neighborhoodImport(formDTO,file); } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java index abe5503639..a518215b5c 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java @@ -192,7 +192,7 @@ public class BuildingServiceImpl implements BuildingService { buildingTreeLevelDTO.setId(item.getId()); buildingTreeLevelDTO.setPId(item.getGridId()); buildingTreeLevelDTO.setLabel(item.getNeighborHoodName()); - buildingTreeLevelDTO.setLevel("neighbourHood"); + buildingTreeLevelDTO.setLevel("neighborHood"); buildingTreeLevelDTO.setLongitude(item.getLongitude()); buildingTreeLevelDTO.setLatitude(item.getLatitude()); buildingTreeLevelDTO.setChildren(new ArrayList<>()); From 1a9cf7194a0211639d8fecf9eb3011f4f2a8075f Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Tue, 15 Feb 2022 16:46:17 +0800 Subject: [PATCH 44/87] =?UTF-8?q?=E5=8F=AF=E8=A7=86=E5=8C=96-=E5=85=9A?= =?UTF-8?q?=E5=91=98=E9=A3=8E=E9=87=87=E5=88=86=E9=A1=B5=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../partymember/IcPartymemberStyleDTO.java | 5 +++ .../form/StyleShowListFormDTO.java | 23 +++++++++++ .../IcPartymemberStyleController.java | 13 +++++++ .../dao/IcPartymemberStyleDao.java | 5 +++ .../entity/IcPartymemberStyleEntity.java | 5 +++ .../service/IcPartymemberStyleService.java | 7 ++++ .../impl/IcPartymemberStyleServiceImpl.java | 38 ++++++++++++++++++- .../db/migration/V0.0.3__style_gridpids.sql | 1 + .../partymember/IcPartymemberStyleDao.xml | 18 +++++++++ 9 files changed, 113 insertions(+), 2 deletions(-) create mode 100644 epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/StyleShowListFormDTO.java create mode 100644 epmet-module/resi-partymember/resi-partymember-server/src/main/resources/db/migration/V0.0.3__style_gridpids.sql diff --git a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/IcPartymemberStyleDTO.java b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/IcPartymemberStyleDTO.java index 7c9d5c314f..a2cda91a24 100644 --- a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/IcPartymemberStyleDTO.java +++ b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/IcPartymemberStyleDTO.java @@ -55,6 +55,11 @@ public class IcPartymemberStyleDTO implements Serializable { */ private String gridId; + /** + * 网格的所有上级 + */ + private String gridPids; + private String gridName; /** diff --git a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/StyleShowListFormDTO.java b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/StyleShowListFormDTO.java new file mode 100644 index 0000000000..20b188919a --- /dev/null +++ b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/form/StyleShowListFormDTO.java @@ -0,0 +1,23 @@ +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 StyleShowListFormDTO implements Serializable { + public interface AddUserInternalGroup { + } + + @NotBlank(message = "userId不能为空", groups = AddUserInternalGroup.class) + private String userId; + @NotBlank(message = "customerId不能为空", groups = AddUserInternalGroup.class) + private String customerId; + + @NotNull(message = "pageNo不能为空", groups = AddUserInternalGroup.class) + private Integer pageNo; + @NotNull(message = "pageSize不能为空", groups = AddUserInternalGroup.class) + private Integer pageSize; +} diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java index 796f5e1e0b..ee3a025d13 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartymemberStyleController.java @@ -31,6 +31,7 @@ import com.epmet.modules.partymember.excel.IcPartymemberStyleExcel; import com.epmet.modules.partymember.service.IcPartymemberStyleService; import com.epmet.resi.partymember.dto.partymember.IcPartymemberStyleDTO; import com.epmet.resi.partymember.dto.partymember.form.PartyMemberStyleFormDTO; +import com.epmet.resi.partymember.dto.partymember.form.StyleShowListFormDTO; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -119,4 +120,16 @@ public class IcPartymemberStyleController { return icPartymemberStyleService.importData(tokenDto, response, file); } + /** + * 数据分析-党员风采列表查询 + * @param tokenDto + * @return + */ + @PostMapping("showlist") + public Result> showList(@LoginUser TokenDto tokenDto, @RequestBody StyleShowListFormDTO formDTO){ + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setUserId(tokenDto.getUserId()); + ValidatorUtils.validateEntity(formDTO,StyleShowListFormDTO.AddUserInternalGroup.class); + return new Result>().ok(icPartymemberStyleService.showList(formDTO)); + } } \ No newline at end of file diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartymemberStyleDao.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartymemberStyleDao.java index 6566bb5722..cd78d48284 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartymemberStyleDao.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartymemberStyleDao.java @@ -19,9 +19,12 @@ package com.epmet.modules.partymember.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.modules.partymember.entity.IcPartymemberStyleEntity; +import com.epmet.resi.partymember.dto.partymember.IcPartymemberStyleDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * 党员风采 * @@ -32,4 +35,6 @@ import org.apache.ibatis.annotations.Param; public interface IcPartymemberStyleDao extends BaseDao { int clearCategry(@Param("categoryId") String categoryId, @Param("userId")String userId); + + List selectShowList(@Param("agencyId")String agencyId, @Param("customerId")String customerId); } \ No newline at end of file diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/entity/IcPartymemberStyleEntity.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/entity/IcPartymemberStyleEntity.java index 24402da193..fea632569a 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/entity/IcPartymemberStyleEntity.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/entity/IcPartymemberStyleEntity.java @@ -50,6 +50,11 @@ public class IcPartymemberStyleEntity extends BaseEpmetEntity { */ private String gridId; + /** + * 网格的所有上级 + */ + private String gridPids; + /** * 党员姓名 */ diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleService.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleService.java index fb4c6e1800..1baf248479 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleService.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartymemberStyleService.java @@ -24,6 +24,7 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.modules.partymember.entity.IcPartymemberStyleEntity; import com.epmet.resi.partymember.dto.partymember.IcPartymemberStyleDTO; import com.epmet.resi.partymember.dto.partymember.form.PartyMemberStyleFormDTO; +import com.epmet.resi.partymember.dto.partymember.form.StyleShowListFormDTO; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; @@ -109,4 +110,10 @@ public interface IcPartymemberStyleService extends BaseService showList(StyleShowListFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java index e16fdd1384..1c214acd60 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartymemberStyleServiceImpl.java @@ -49,6 +49,7 @@ import com.epmet.modules.partymember.service.IcPartymemberStyleImageService; import com.epmet.modules.partymember.service.IcPartymemberStyleService; import com.epmet.resi.partymember.dto.partymember.IcPartymemberStyleDTO; import com.epmet.resi.partymember.dto.partymember.form.PartyMemberStyleFormDTO; +import com.epmet.resi.partymember.dto.partymember.form.StyleShowListFormDTO; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; @@ -141,8 +142,11 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl showList(StyleShowListFormDTO formDTO) { + CustomerStaffInfoCacheResult staff = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId()); + if (null == staff || StringUtils.isBlank(staff.getAgencyId())) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "查询当前工作人员缓存信息失败", "查询用户信息异常"); + } + PageInfo pageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.selectShowList(staff.getAgencyId(), formDTO.getCustomerId())); + if (CollectionUtils.isNotEmpty(pageInfo.getList())) { + //赋值网格名称 + for (IcPartymemberStyleDTO dto : pageInfo.getList()) { + dto.setImageList(icPartymemberStyleImageService.getByStyleId(dto.getId())); + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(dto.getGridId()); + if (null != gridInfo) { + dto.setGridName(gridInfo.getGridName()); + } + } + } + return new PageData<>(pageInfo.getList(), pageInfo.getTotal()); + } + } diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/db/migration/V0.0.3__style_gridpids.sql b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/db/migration/V0.0.3__style_gridpids.sql new file mode 100644 index 0000000000..aa3c561c66 --- /dev/null +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/db/migration/V0.0.3__style_gridpids.sql @@ -0,0 +1 @@ +alter table ic_partymember_style add COLUMN GRID_PIDS VARCHAR(255) comment '网格的所有上级' after GRID_ID; diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartymemberStyleDao.xml b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartymemberStyleDao.xml index 2fd2b45dfc..e68586a288 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartymemberStyleDao.xml +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartymemberStyleDao.xml @@ -25,4 +25,22 @@ and CATEGORY_ID=#{categoryId} + \ No newline at end of file From b0caedf10b6965a407ab441fa8a92f0d13ec2007 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Tue, 15 Feb 2022 16:48:39 +0800 Subject: [PATCH 45/87] =?UTF-8?q?=E6=9A=82=E6=8F=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/model/ImportHouseInfoListener.java | 8 +- .../model/ImportNeighborHoodInfoListener.java | 100 +++++++++++++++++- 2 files changed, 104 insertions(+), 4 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java index 39d8820783..cc171c0c53 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java @@ -307,7 +307,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener m.getGridId()).collect(Collectors.toList()); } neighborHoodInfos = null == neighborHoodInfos ? getNeighborHoodInfos(gridIds) : neighborHoodInfos; - Object cacheNeighBorHood = icHouseRedis.getTemporaryCacheNeighBorHood(formDTO.getCustomerId(), formDTO.getUserId(), formDTO.getOrgId() + "_" + dto.getNeighborHoodName()); + Object cacheNeighBorHood = icHouseRedis.getTemporaryCacheNeighBorHood(formDTO.getCustomerId(), formDTO.getUserId(), dto.getGridId() + "_" + dto.getNeighborHoodName()); // 赋值小区ID dto.setNeighborHoodId(null == cacheNeighBorHood ? "" : cacheNeighBorHood.toString()); } @@ -382,8 +382,10 @@ public class ImportHouseInfoListener extends AnalysisEventListener getBuildingUnitInfos(String buildingId){ buildingUnitInfoDTOs = icBuildingDao.selectAllBuildingUnitByBuildingId(buildingId); - buildingUnitInfos = buildingInfoDTOs.stream().collect(Collectors.toMap(n -> n.getBuildingId() + "_" + n.getBuildingUnit(), n -> n.getBuildingUnitId())); - icHouseRedis.setTemporaryCacheBuildingUnit(formDTO.getCustomerId(), buildingUnitInfos, formDTO.getUserId()); + if (!CollectionUtils.isEmpty(buildingUnitInfoDTOs)){ + buildingUnitInfos = buildingUnitInfoDTOs.stream().collect(Collectors.toMap(n -> n.getBuildingId() + "_" + n.getBuildingUnit(), n -> n.getBuildingUnitId())); + icHouseRedis.setTemporaryCacheBuildingUnit(formDTO.getCustomerId(), buildingUnitInfos, formDTO.getUserId()); + } return buildingInfos; } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java index 7d5a29af04..f72502def1 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java @@ -3,6 +3,10 @@ package com.epmet.model; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.redis.common.CustomerOrgRedis; +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.constant.CustomerGridConstant; import com.epmet.dao.IcBuildingDao; @@ -10,10 +14,13 @@ import com.epmet.dto.ImportGeneralDTO; import com.epmet.dto.form.ImportInfoFormDTO; import com.epmet.redis.IcHouseRedis; import com.epmet.service.IcNeighborHoodService; +import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * @Author zxc @@ -73,7 +80,26 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener gridIds = new ArrayList<>(); + if (orgType.equals(CustomerGridConstant.GRID)){ + gridIds = Arrays.asList(formDTO.getOrgId()); + }else if (orgType.equals(CustomerGridConstant.AGENCY)){ + gridIds = gridInfoDTOs.stream().map(m -> m.getGridId()).collect(Collectors.toList()); + } + neighborHoodInfos = null == neighborHoodInfos ? getNeighborHoodInfos(gridIds) : neighborHoodInfos; + Object cacheNeighBorHood = icHouseRedis.getTemporaryCacheNeighBorHood(formDTO.getCustomerId(), formDTO.getUserId(), dto.getGridId() + "_" + dto.getNeighborHoodName()); + // 赋值小区ID + dto.setNeighborHoodId(null == cacheNeighBorHood ? "" : cacheNeighBorHood.toString()); + if (StringUtils.isNotBlank(dto.getNeighborHoodId())){ + // 小区已存在 + nums.add(dto.getNum()); + }else { + needDisposeList.add(dto); + } + } + /** + * @Description 获取网格信息 + * @param orgId + * @author zxc + * @date 2022/2/14 9:57 上午 + */ + public Map getGridInfos(String orgId){ + gridInfoDTOs = icBuildingDao.selectAllGridByOrgId(orgId); + gridInfos = gridInfoDTOs.stream().collect(Collectors.toMap(n -> n.getGridName(), n -> n.getGridId())); + icHouseRedis.setTemporaryCacheGrid(formDTO.getCustomerId(), gridInfos, formDTO.getUserId()); + return gridInfos; + } + + /** + * @Description 获取网格下的小区 + * @param gridIds + * @author zxc + * @date 2022/2/14 10:16 上午 + */ + public Map getNeighborHoodInfos(List gridIds){ + neighborHoodInfoDTOs = icBuildingDao.selectAllNeighborHoodByGridIds(gridIds); + neighborHoodInfos = neighborHoodInfoDTOs.stream().collect(Collectors.toMap(n -> n.getGridId() + "_" + n.getNeighborHoodName(), n -> n.getNeighborHoodId())); + icHouseRedis.setTemporaryCacheNeighBorHood(formDTO.getCustomerId(), neighborHoodInfos, formDTO.getUserId()); + return neighborHoodInfos; } @Override From f8c123bfb42e907e08935ed342f6754a5b74cb19 Mon Sep 17 00:00:00 2001 From: jianjun Date: Tue, 15 Feb 2022 17:42:52 +0800 Subject: [PATCH 46/87] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=A8=8B=E5=BA=8F=20?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=B1=85=E6=B0=91=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tools/config/ThreadDispatcherConfig.java | 39 ++++++++++++++++++ .../commons/tools/constant/Constant.java | 3 ++ .../java/com/epmet/GatewayApplication.java | 3 +- .../epmet/bean/ResiExportBaseInfoData.java | 27 +++++++++++++ .../controller/IcResiUserController.java | 7 +++- .../service/impl/IcResiUserServiceImpl.java | 40 +++++++++++-------- 6 files changed, 100 insertions(+), 19 deletions(-) create mode 100644 epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/ThreadDispatcherConfig.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/bean/ResiExportBaseInfoData.java diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/ThreadDispatcherConfig.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/ThreadDispatcherConfig.java new file mode 100644 index 0000000000..1b2d32c2cc --- /dev/null +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/config/ThreadDispatcherConfig.java @@ -0,0 +1,39 @@ +/** + * Copyright (c) 2018 人人开源 All rights reserved. + *

+ * https://www.renren.io + *

+ * 版权所有,侵权必究! + */ + +package com.epmet.commons.tools.config; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.filter.RequestContextFilter; +import org.springframework.web.servlet.DispatcherServlet; + +import javax.annotation.PostConstruct; + + +/** + * DESC:设置线程继承属性为true,便于子线程获取到父线程的request,两个都设置为了保险 + * + * @author Mark sunlightcs@gmail.com + * @since 1.0.0 + */ +@Configuration +public class ThreadDispatcherConfig { + + @Autowired + RequestContextFilter requestContextFilter; + @Autowired + DispatcherServlet dispatcherServlet; + + @PostConstruct + public void init() { + // 设置线程继承属性为true,便于子线程获取到父线程的request,两个都设置为了保险。 + requestContextFilter.setThreadContextInheritable(true); + dispatcherServlet.setThreadContextInheritable(true); + } +} diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/Constant.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/Constant.java index 400e3893e4..77875d5415 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/Constant.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/Constant.java @@ -171,4 +171,7 @@ public interface Constant { * 被禁用标识 * */ String DISABLE = "disable"; + + String OPITON_SOURCE_REMOTE = "remote"; + String OPITON_SOURCE_LOCAL = "local"; } diff --git a/epmet-gateway/src/main/java/com/epmet/GatewayApplication.java b/epmet-gateway/src/main/java/com/epmet/GatewayApplication.java index a1630c821e..064b59610e 100644 --- a/epmet-gateway/src/main/java/com/epmet/GatewayApplication.java +++ b/epmet-gateway/src/main/java/com/epmet/GatewayApplication.java @@ -10,6 +10,7 @@ package com.epmet; import com.epmet.commons.tools.aspect.ServletExceptionHandler; import com.epmet.commons.tools.config.RedissonConfig; +import com.epmet.commons.tools.config.ThreadDispatcherConfig; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @@ -27,7 +28,7 @@ import org.springframework.context.annotation.FilterType; @EnableDiscoveryClient @EnableFeignClients //@ServletComponentScan -@ComponentScan(basePackages = {"com.epmet.*"}, excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {RedissonConfig.class, ServletExceptionHandler.class})) +@ComponentScan(basePackages = {"com.epmet.*"}, excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {RedissonConfig.class, ThreadDispatcherConfig.class, ServletExceptionHandler.class})) public class GatewayApplication { public static void main(String[] args) { diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/ResiExportBaseInfoData.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/ResiExportBaseInfoData.java new file mode 100644 index 0000000000..5dc0d0b7c5 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/ResiExportBaseInfoData.java @@ -0,0 +1,27 @@ +package com.epmet.bean; + +import lombok.Data; + +import java.io.Serializable; + +/** + * desc:导出居民信息 基础信息 给其他sheet使用 + */ +@Data +public class ResiExportBaseInfoData implements Serializable { + private static final long serialVersionUID = 1L; + + private String GRID_ID; + private String VILLAGE_ID; + private String BUILD_ID; + private String UNIT_ID; + private String HOME_ID; + private String IS_BDHJ; + private String NAME; + private String MOBILE; + private String GENDER; + private String ID_CARD; + private String BIRTHDAY; + private String CONTACTS; + private String CONTACTS_MOBILE; +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index 1350ce159f..303d951526 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java @@ -24,6 +24,7 @@ import com.alibaba.excel.write.metadata.fill.FillWrapper; import com.epmet.commons.rocketmq.messages.IcResiUserAddMQMsg; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.constant.Constant; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; @@ -293,6 +294,7 @@ public class IcResiUserController { @RequestMapping(value = "/exportExcel") public void exportExcelByEasyExcel(@RequestHeader String customerId,@LoginUser TokenDto tokenDto, @RequestBody IcResiUserPageFormDTO pageFormDTO, HttpServletResponse response) throws Exception { //tokenDto.setUserId("9e37adcce6472152e6508a19d3683e02"); + long startM = System.currentTimeMillis(); CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(customerId, tokenDto.getUserId()); String staffOrgPath = null; if (StringUtils.isNotBlank(staffInfoCacheResult.getAgencyPIds()) && !NumConstant.ZERO_STR.equals(staffInfoCacheResult.getAgencyPIds())) { @@ -322,7 +324,7 @@ public class IcResiUserController { map.putIfAbsent(tableName,exportItem); String columnName = item.getColumnName().concat(item.getColumnNum() == NumConstant.ZERO ? StrConstant.EPMETY_STR : item.getColumnNum().toString()); exportItem.getItemMap().put(columnName,item); - if (item.getOptionSourceType().equals("remote")&&item.getOptionSourceValue().contains(StrConstant.QUESTION_MARK)){ + if (Constant.OPITON_SOURCE_REMOTE.equals(item.getOptionSourceType())&&item.getOptionSourceValue().contains(StrConstant.QUESTION_MARK)){ //多个参数 String[] paramArr = item.getOptionSourceValue().split(StrConstant.QUESTION_MARK_TRANSFER)[NumConstant.ONE].split(StrConstant.AND_MARK); Arrays.stream(paramArr).forEach(o->{ @@ -346,7 +348,7 @@ public class IcResiUserController { .collect(Collectors.toList()); List> resiResultList = null; - pageFormDTO.setPageSize(NumConstant.TEN_THOUSAND); + pageFormDTO.setPageSize(NumConstant.ONE_THOUSAND); for (IcResiUserTableEnum tableEnum : resiTableList) { String tableName = tableEnum.getTableName(); pageFormDTO.setPageNo(NumConstant.ONE); @@ -374,6 +376,7 @@ public class IcResiUserController { if (excelWriter != null){ excelWriter.finish(); } + log.info("exportExcelByEasyExcel resi info cost time:{}s",(System.currentTimeMillis()-startM)/NumConstant.ONE_THOUSAND); } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java index 64920cabdc..11a9fd3d4a 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java @@ -20,11 +20,9 @@ package com.epmet.service.impl; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.epmet.bean.ResiExportBaseInfoData; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; -import com.epmet.commons.tools.constant.FieldConstant; -import com.epmet.commons.tools.constant.NumConstant; -import com.epmet.commons.tools.constant.ServiceConstant; -import com.epmet.commons.tools.constant.StrConstant; +import com.epmet.commons.tools.constant.*; import com.epmet.commons.tools.dto.form.DictListFormDTO; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.dto.result.DictListResultDTO; @@ -69,6 +67,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -77,6 +76,8 @@ import java.math.RoundingMode; import java.sql.Date; import java.sql.Timestamp; import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.TimeUnit; import java.util.function.Function; import java.util.stream.Collectors; @@ -114,6 +115,8 @@ public class IcResiUserServiceImpl extends BaseServiceImpl getWrapper(Map params){ String id = (String)params.get(FieldConstant.ID_HUMP); @@ -881,7 +884,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl> mapListPage = PageHelper.startPage(pageFormDTO.getPageNo(), pageFormDTO.getPageSize(), pageFormDTO.getPageFlag()).doSelectPage(() -> { this.dynamicQuery(pageFormDTO.getCustomerId(), pageFormDTO.getFormCode(), baseTableName, pageFormDTO.getConditions(), currentStaffAgencyId, staffOrgPath); }); - mapListPage.getResult().stream().filter(Objects::nonNull).forEach(resiUser -> { + mapListPage.getResult().parallelStream().filter(Objects::nonNull).forEach(resiUser -> { String resiId = null; //获取用户Id if (IcResiUserConstant.IC_RESI_USER.equals(baseTableName)) { @@ -905,28 +908,33 @@ public class IcResiUserServiceImpl extends BaseServiceImpl originalConditionMap = new HashMap<>(); - for (FormItemResult e : formItemMap.getItemMap().values()) { + Map originalConditionMap = new ConcurrentHashMap<>(); + formItemMap.getItemMap().values().parallelStream().forEach(e->{ String columnName = getColumnName(e); Object temp = resiUser.get(columnName); String vauleStr = temp == null ? StrConstant.EPMETY_STR : temp.toString(); originalConditionMap.putIfAbsent(columnName,vauleStr); - if ("remote".equals(e.getOptionSourceType()) && StringUtils.isNotBlank(vauleStr)) { + if (Constant.OPITON_SOURCE_REMOTE.equals(e.getOptionSourceType()) && StringUtils.isNotBlank(vauleStr)) { putRemoteValue(formItemMap.getRemoteItemConditionMap().get(e.getItemId()), currentStaffAgencyId, resiUser,originalConditionMap, e, columnName, vauleStr); } else { putOptionValue(resiUser, e, columnName, vauleStr); } + }); - } - if (!IcResiUserConstant.IC_RESI_USER.equals(baseTableName)) { - Map o = redisUtils.hGetAll(RedisKeys.getExportResiBaseInfoKey(resiId)); - if (o != null){ - resiUser.putAll(o); + if (IcResiUserConstant.IC_RESI_USER.equals(baseTableName)) { + //把人放入redis缓存 便于后面的sheet使用基础信息 + ResiExportBaseInfoData infoData = ConvertUtils.mapToEntity(resiUser, ResiExportBaseInfoData.class); + redisTemplate.opsForValue().set(RedisKeys.getExportResiBaseInfoKey(resiId), infoData,RedisUtils.MINUTE_THIRTY_EXPIRE, TimeUnit.SECONDS); + } else { + ResiExportBaseInfoData temp = (ResiExportBaseInfoData) redisTemplate.opsForValue().get(RedisKeys.getExportResiBaseInfoKey(resiId)); + if (temp != null){ + try { + resiUser.putAll(ConvertUtils.entityToMap(temp)); + } catch (Exception e) { + log.error("entityToMap exception,temp:{}",temp); + } } - return; } - //把人放入redis缓存 便于后面的sheet使用基础信息 - redisUtils.hMSet(RedisKeys.getExportResiBaseInfoKey(resiId),resiUser,RedisUtils.MINUTE_THIRTY_EXPIRE); }); remoteOptionCacheMap.clear(); return mapListPage.getResult(); From 96b7ff3c83e5fc91e45d1eabacf84fdeb8449ef8 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Tue, 15 Feb 2022 17:50:14 +0800 Subject: [PATCH 47/87] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=B0=8F=E5=8C=BA?= =?UTF-8?q?=EF=BC=8C=E6=A5=BC=E6=A0=8B=EF=BC=8C=E5=8D=95=E5=85=83ID?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/service/impl/IcNeighborHoodServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java index 728a66978e..80e7774701 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java @@ -49,8 +49,6 @@ import com.epmet.dto.result.ImportResultDTO; import com.epmet.dto.result.InfoByNamesResultDTO; import com.epmet.entity.*; import com.epmet.excel.IcNeighborHoodExcel; -import com.epmet.model.BuildingInfoModel; -import com.epmet.model.ImportBuildingInfoListener; import com.epmet.model.ImportNeighborHoodInfoListener; import com.epmet.model.NeighborHoodInfoModel; import com.epmet.redis.IcHouseRedis; @@ -475,7 +473,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl Date: Wed, 16 Feb 2022 10:01:10 +0800 Subject: [PATCH 48/87] =?UTF-8?q?=E5=B0=8F=E5=8C=BA=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/ImportBuildingInfoListener.java | 5 +- .../epmet/model/ImportHouseInfoListener.java | 5 +- .../model/ImportNeighborHoodInfoListener.java | 96 ++++++++++++++++++- .../epmet/service/IcNeighborHoodService.java | 6 ++ .../impl/IcNeighborHoodServiceImpl.java | 20 +++- 5 files changed, 124 insertions(+), 8 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java index b894c7fba2..ba745a744e 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java @@ -86,6 +86,9 @@ public class ImportBuildingInfoListener extends AnalysisEventListener groupByAllName = needDisposeList.stream().collect(Collectors.groupingBy( n -> n.getAgencyName() + "_" + n.getGridName() + "_" + n.getNeighborHoodName() + "_" + n.getBuildingName(), Collectors.counting())); @@ -206,7 +209,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener importInfo = neighborHoodService.getImportInfo(formDTO, needDisposeList); needInsertList.addAll(importInfo); Map collect = needInsertList.stream().collect(Collectors.groupingBy(n -> n.getBuildingUnitId() + "_" + n.getDoorName(), Collectors.counting())); @@ -243,7 +246,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener groupByAllName = needDisposeList.stream().collect(Collectors.groupingBy( + n -> n.getAgencyName() + "_" + n.getGridName() + "_" + n.getNeighborHoodName(), Collectors.counting())); + groupByAllName.forEach((k,v) -> { + if (Integer.valueOf(v.toString()).compareTo(1) > 0){ + for (ImportGeneralDTO r : needDisposeList) { + if (k.equals(r.getAgencyName() + "_" + r.getGridName() + "_" + r.getNeighborHoodName())){ + // 集合里重复的 + r.setExistStatus(true); + nums.add(r.getNum()); + } + } + } + }); + Map> groupByStatus = needDisposeList.stream().collect(Collectors.groupingBy(ImportGeneralDTO::getExistStatus)); + List importGeneralDTOS = groupByStatus.get(false); + if (!CollectionUtils.isEmpty(importGeneralDTOS)){ + List importInfo = neighborHoodService.getImportInfo(formDTO, importGeneralDTOS); + Map> groupByBuildingExistStatus = importInfo.stream().collect(Collectors.groupingBy(ImportGeneralDTO::getNeighborHoodExistStatus)); + List existList = groupByBuildingExistStatus.get(true); + if (!CollectionUtils.isEmpty(existList)){ + existList.forEach(e -> { + nums.add(e.getNum()); + }); + } + List notExistList = groupByBuildingExistStatus.get(false); + if (!CollectionUtils.isEmpty(notExistList)){ + // 物业表插入 + List propertyNames = notExistList.stream().map(m -> m.getPropertyName()).distinct().collect(Collectors.toList()); + List disposePropertyNames = notExistList.stream().map(m -> m.getPropertyName()).distinct().collect(Collectors.toList()); + List existPropertyNames = propertyManagementDao.selectExistNames(propertyNames); + disposePropertyNames.removeAll(existPropertyNames); + List propertyManagementEntities = new ArrayList<>(); + if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(disposePropertyNames)){ + disposePropertyNames.forEach(name -> { + IcPropertyManagementEntity e = new IcPropertyManagementEntity(); + e.setName(name); + propertyManagementEntities.add(e); + }); + } + neighborHoodService.insertPropertyManagement(propertyManagementEntities); + + // 小区物业关系表插入 + List neighborHoodAndManagementDTOS = ConvertUtils.sourceToTarget(notExistList, NeighborHoodAndManagementDTO.class); + List propertyManagementInfos = propertyManagementDao.selectIdByName(propertyNames); + neighborHoodAndManagementDTOS.forEach(n -> propertyManagementInfos.stream().filter(p -> p.getName().equals(n.getPropertyName())) + .forEach(p -> { + n.setPropertyId(p.getId()); + n.setNeighborHoodId(n.getNeighborHoodId()); + })); + List icNeighborHoodPropertyEntities = ConvertUtils.sourceToTarget(neighborHoodAndManagementDTOS, IcNeighborHoodPropertyEntity.class); + neighborHoodService.neighborHoodPropertyInsert(icNeighborHoodPropertyEntities); + } + } + + // 清除 + needDisposeList = new ArrayList<>(); + needInsertList = new ArrayList<>(); + gridName = null; + agencyName = null; + gridInfos = null; + gridInfoDTOs = null; + neighborHoodInfos = null; + neighborHoodInfoDTOs = null; + neighborHoodGeneralDTO = null; } /** @@ -86,7 +168,7 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener * @Date 2022/2/14 9:40 */ List getImportInfo(ImportInfoFormDTO formDTO, List list); + + void insertPropertyManagement(List propertyManagementEntities); + + void neighborHoodPropertyInsert(List entities); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java index 80e7774701..0a1ecdca80 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java @@ -211,7 +211,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl importResult = ExcelPoiUtils.importExcelMore(file, 0, 1, IcNeighborHoodExcel.class); + /*ExcelImportResult importResult = ExcelPoiUtils.importExcelMore(file, 0, 1, IcNeighborHoodExcel.class); List failList = importResult.getFailList(); //存放错误数据行号 List numList = new ArrayList<>(); @@ -223,7 +223,8 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl result =importResult.getList(); - return disposeImportNeighborhood(formDTO,result); + return disposeImportNeighborhood(formDTO,result);*/ + return importNeighbor(formDTO,file); } /** @@ -398,7 +399,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl propertyManagementEntities){ + if (CollectionUtils.isEmpty(propertyManagementEntities)){ + return; + } + List> partition1 = ListUtils.partition(propertyManagementEntities, NumConstant.ONE_HUNDRED); + partition1.forEach(p -> { + propertyManagementService.insertBatch(p); + }); + } + /** * @Description 小区物业关系表插入 * @param entities * @author zxc * @date 2022/2/13 10:09 上午 */ + @Override @Transactional(rollbackFor = Exception.class) public void neighborHoodPropertyInsert(List entities){ List> partition = ListUtils.partition(entities, NumConstant.ONE_HUNDRED); From 55a44bfec63ca18efe97de18fdeac81b709d8c2d Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Wed, 16 Feb 2022 14:35:40 +0800 Subject: [PATCH 49/87] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=A7=AF=E5=88=86(=E5=8F=8C=E5=AE=9E=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=20=E7=BD=91=E6=A0=BC=E5=B7=A1=E6=9F=A5)-?= =?UTF-8?q?=E4=BB=85=E9=99=90=E6=A6=86=E5=B1=B1=E8=A1=97=E9=81=93=E7=9A=84?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E4=BA=BA=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../constant/SpecialCustomerOrgConstant.java | 31 ++++++++ .../dto/form/UpdateUserPointsFormDTO.java | 29 ++++++++ .../tools/enums/BehaviorTypeYuShanEnum.java | 43 ++++++++++++ .../commons/tools/enums/ExternalApiEnum.java | 35 ++++++++++ .../tools/enums/ExternalServerEnum.java | 55 +++++++++++++++ .../tools/utils/YuShanSysApiService.java | 70 +++++++++++++++++++ .../java/com/epmet/GovProjectApplication.java | 2 + .../service/impl/ProjectTraceServiceImpl.java | 11 +++ .../main/java/com/epmet/UserApplication.java | 2 + .../impl/PatrolRoutineWorkServiceImpl.java | 15 ++-- .../impl/StaffPatrolRecordServiceImpl.java | 30 +++++--- 11 files changed, 309 insertions(+), 14 deletions(-) create mode 100644 epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/SpecialCustomerOrgConstant.java create mode 100644 epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/UpdateUserPointsFormDTO.java create mode 100644 epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/BehaviorTypeYuShanEnum.java create mode 100644 epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/ExternalApiEnum.java create mode 100644 epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/ExternalServerEnum.java create mode 100644 epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YuShanSysApiService.java diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/SpecialCustomerOrgConstant.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/SpecialCustomerOrgConstant.java new file mode 100644 index 0000000000..05058b1211 --- /dev/null +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/SpecialCustomerOrgConstant.java @@ -0,0 +1,31 @@ +package com.epmet.commons.tools.constant; + + +/** + * 需要特殊处理的客户id + * + * @author Mark sunlightcs@gmail.com + * @since 1.0.0 + */ +public interface SpecialCustomerOrgConstant { + /** + * 榆山街道组织id + */ + String YUSHAN_AGENCY_ID_PROD="1258587398679126017"; + + /** + * 南宁社区-开发测试用的 + */ + String test="6e511da6816e53af4cda952365a26eb9"; + + // /** + // * 榆山生产客户id + // */ + // String YUSHAN_PROD_CUSTOMER_ID = "46c55cb862d6d5e6d05d2ab61a1cc07e"; + // + // /** + // * 榆山测试客户id + // */ + // String YUSHAN_TEST_CUSTOMER_ID = "a4bbf298d8e427844038cee466f022ef"; + +} diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/UpdateUserPointsFormDTO.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/UpdateUserPointsFormDTO.java new file mode 100644 index 0000000000..1eb3092d07 --- /dev/null +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/UpdateUserPointsFormDTO.java @@ -0,0 +1,29 @@ +package com.epmet.commons.tools.dto.form; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class UpdateUserPointsFormDTO implements Serializable { + + /** + * 行为类型: + * 双十信息更新-double_info_update + * 网格巡查-grid_patrol + * 网格上报事件-grid_report_event + * 网格工作上传-grid_work_upload + */ + private String behaviorType; + + /** + * 手机号 + */ + private String mobile; + + /** + * 工作端用户id + */ + private String staffId; + private String customerId; +} diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/BehaviorTypeYuShanEnum.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/BehaviorTypeYuShanEnum.java new file mode 100644 index 0000000000..8c5b1caf5b --- /dev/null +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/BehaviorTypeYuShanEnum.java @@ -0,0 +1,43 @@ +package com.epmet.commons.tools.enums; + + +/** + * 更新用户积分(双实信息更新 网格巡查) + * 行为类型枚举类 + */ +public enum BehaviorTypeYuShanEnum { + + DOUBLE_INFO_UPDATE("double_info_update", "双十信息更新"), + GRID_PATROL("grid_patrol", "网格巡查"), + GRID_REPORT_EVENT("grid_report_event", "网格上报事件"), + GRID_WORK_UPLOAD("grid_work_upload", "网格工作上传"), + ; + + private String code; + private String name; + + + BehaviorTypeYuShanEnum(String code, String name) { + this.code = code; + this.name = name; + } + + public static BehaviorTypeYuShanEnum getEnum(String code) { + BehaviorTypeYuShanEnum[] values = BehaviorTypeYuShanEnum.values(); + for (BehaviorTypeYuShanEnum value : values) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + + public String getCode() { + return code; + } + + public String getName() { + return name; + } +} diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/ExternalApiEnum.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/ExternalApiEnum.java new file mode 100644 index 0000000000..ed916dd6df --- /dev/null +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/ExternalApiEnum.java @@ -0,0 +1,35 @@ +package com.epmet.commons.tools.enums; + +/** + * 外部api + */ +public enum ExternalApiEnum { + + /** + * 榆山-测试服务器地址 + */ + UPDATE_USER_POINTS("/api/points/behavior/updateUserPoints","更新用户积分(双实信息更新 网格巡查)","http://yapi.elinkservice.cn/project/57/interface/api/7466"); + + private String apiPath; + private String desc; + private String descUrl; + + + ExternalApiEnum(String apiPath, String desc,String descUrl) { + this.apiPath = apiPath; + this.desc = desc; + this.descUrl=descUrl; + } + + public String getApiPath() { + return apiPath; + } + + public String getDesc() { + return desc; + } + + public String getDescUrl() { + return descUrl; + } +} diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/ExternalServerEnum.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/ExternalServerEnum.java new file mode 100644 index 0000000000..119a222e27 --- /dev/null +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/ExternalServerEnum.java @@ -0,0 +1,55 @@ +package com.epmet.commons.tools.enums; + +import com.epmet.commons.tools.constant.StrConstant; + + +/** + * 外部客户的服务器地址 + */ +public enum ExternalServerEnum { + DEV_TEST("45687aa479955f9d06204d415238f7cc", "https://epdc-api-test.elinkservice.cn/epdc-api"), + /** + * 榆山-测试服务器地址 + */ + YUSHAN_TEST("a4bbf298d8e427844038cee466f022ef", "https://epdc-api-test.elinkservice.cn/epdc-api"), + /** + * 榆山-生产服务器地址 + */ + YUSHAN_PROD("46c55cb862d6d5e6d05d2ab61a1cc07e", "https://epdc-yushan.elinkservice.cn/epdc-api"); + + + private String customerId; + private String url; + + + ExternalServerEnum(String customerId, String url) { + this.customerId = customerId; + this.url = url; + } + + public static String getUrl(String customerId) { + ExternalServerEnum[] array = values(); + for (ExternalServerEnum enumValue : array) { + if (enumValue.getCustomerId().equals(customerId)) { + return enumValue.getUrl(); + } + } + return StrConstant.EPMETY_STR; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } +} diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YuShanSysApiService.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YuShanSysApiService.java new file mode 100644 index 0000000000..0c13721c2e --- /dev/null +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YuShanSysApiService.java @@ -0,0 +1,70 @@ +package com.epmet.commons.tools.utils; + + +import com.alibaba.fastjson.JSON; +import com.epmet.commons.tools.constant.SpecialCustomerOrgConstant; +import com.epmet.commons.tools.dto.form.UpdateUserPointsFormDTO; +import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; +import com.epmet.commons.tools.enums.ExternalApiEnum; +import com.epmet.commons.tools.enums.ExternalServerEnum; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.RenException; +import com.epmet.commons.tools.redis.common.CustomerStaffRedis; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.List; + +/** + * e事通调用榆山api + * + * @author yinzuomei + * @date 2022-02-16 + **/ +@Service +@Slf4j +public class YuShanSysApiService { + + + /** + * 更新用户积分(双实信息更新 网格巡查) + * + * @return + */ + @Async + public void updateUserPoints(String customerId, List paramList) { + if (StringUtils.isBlank(customerId) || CollectionUtils.isEmpty(paramList)) { + throw new RenException("参数错误"); + } + String serverUrl = ExternalServerEnum.getUrl(customerId); + if (StringUtils.isBlank(serverUrl)) { + log.warn(String.format("当前客户:%s,未配置服务器地址", customerId)); + return; + } + String apiPath = serverUrl.concat(ExternalApiEnum.UPDATE_USER_POINTS.getApiPath()); + log.info(String.format("updateUserPoints 接口路径:%s", apiPath)); + for (UpdateUserPointsFormDTO formDTO : paramList) { + try { + CustomerStaffInfoCacheResult staff = CustomerStaffRedis.getStaffInfo(customerId, formDTO.getStaffId()); + //只有榆山街道的工作人员才调用 + if (null != staff && (staff.getAgencyId().equals(SpecialCustomerOrgConstant.YUSHAN_AGENCY_ID_PROD) || staff.getAgencyPIds().contains(SpecialCustomerOrgConstant.YUSHAN_AGENCY_ID_PROD))) { + formDTO.setMobile(staff.getMobile()); + Result res = HttpClientManager.getInstance().sendPostByJSON(apiPath, JSON.toJSONString(formDTO)); + Result result = JSON.parseObject(res.getData(), Result.class); + log.info(String.format("updateUserPoints 入参:%s", JSON.toJSONString(formDTO))); + if (!result.success()) { + log.warn("updateUserPoints failed:{}", JSON.toJSONString(result)); + } + } + } catch (Exception e) { + log.warn("updateUserPoints exception 入参:{}", JSON.toJSONString(formDTO)); + throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(), e.getMessage()); + } + } + } + + +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/GovProjectApplication.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/GovProjectApplication.java index 37c767c4b3..47fa0b89ac 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/GovProjectApplication.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/GovProjectApplication.java @@ -5,6 +5,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.scheduling.annotation.EnableAsync; /** * @@ -14,6 +15,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients; @SpringBootApplication @EnableDiscoveryClient @EnableFeignClients +@EnableAsync @ServletComponentScan public class GovProjectApplication { public static void main(String[] args) { diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java index 2a56eb3dfc..b637748a70 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java @@ -9,7 +9,9 @@ import com.epmet.commons.rocketmq.messages.ProjectChangedMQMsg; import com.epmet.commons.tools.constant.AppClientConstant; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; +import com.epmet.commons.tools.dto.form.UpdateUserPointsFormDTO; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; +import com.epmet.commons.tools.enums.BehaviorTypeYuShanEnum; import com.epmet.commons.tools.enums.OrgTypeEnum; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; @@ -107,6 +109,9 @@ public class ProjectTraceServiceImpl implements ProjectTraceS private ResiEventReportOrgDao resiEventReportOrgDao; @Autowired private BlockChainUploadService blockChainUploadService; + @Autowired + private YuShanSysApiService yuShanSysApiService; + @Override public List getPendProjectList(TokenDto tokenDto, ProjectListFromDTO fromDTO) { @@ -552,6 +557,12 @@ public class ProjectTraceServiceImpl implements ProjectTraceS String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e); log.error("【项目流转】上链失败,错误信息:{}", errorMsg); } + //项目立项如果是榆山街道的工作人员,需要调用【更新用户积分(双实信息更新 网格巡查)】/api/points/behavior/updateUserPoints + UpdateUserPointsFormDTO updateUserPointsFormDTO=new UpdateUserPointsFormDTO(); + updateUserPointsFormDTO.setCustomerId(projectEntity.getCustomerId()); + updateUserPointsFormDTO.setStaffId(projectEntity.getCreatedBy()); + updateUserPointsFormDTO.setBehaviorType(BehaviorTypeYuShanEnum.GRID_REPORT_EVENT.getCode()); + yuShanSysApiService.updateUserPoints(projectEntity.getCustomerId(),Arrays.asList(updateUserPointsFormDTO)); } /** diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/UserApplication.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/UserApplication.java index 106c49d028..caf839f79a 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/UserApplication.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/UserApplication.java @@ -13,6 +13,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.scheduling.annotation.EnableAsync; /** * 管理后台 @@ -24,6 +25,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients; @SpringBootApplication @EnableDiscoveryClient @EnableFeignClients +@EnableAsync @ServletComponentScan public class UserApplication { diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java index bc850e1d2c..05f4523396 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java @@ -25,7 +25,9 @@ import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.rocketmq.messages.BaseMQMsgDTO; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; +import com.epmet.commons.tools.dto.form.UpdateUserPointsFormDTO; import com.epmet.commons.tools.dto.result.DictTreeResultDTO; +import com.epmet.commons.tools.enums.BehaviorTypeYuShanEnum; import com.epmet.commons.tools.enums.DictTypeEnum; import com.epmet.commons.tools.enums.OrgTypeEnum; import com.epmet.commons.tools.exception.EpmetErrorCode; @@ -35,9 +37,9 @@ import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; import com.epmet.commons.tools.redis.common.bean.GridInfoCache; import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.YuShanSysApiService; import com.epmet.constant.SystemMessageType; import com.epmet.dao.PatrolRoutineWorkDao; import com.epmet.dto.CustomerGridDTO; @@ -68,13 +70,10 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.servlet.http.HttpServletResponse; -import java.beans.Encoder; import java.net.URLEncoder; import java.util.*; import java.util.stream.Collectors; -import static com.epmet.commons.tools.utils.DateUtils.DATE_PATTERN; - /** * 巡查例行工作 * @@ -94,6 +93,8 @@ public class PatrolRoutineWorkServiceImpl extends BaseServiceImplsendPatrolMsg(e, SystemMessageType.USER_PATROL_STOP)); + list.forEach(e-> { + sendPatrolMsg(e, SystemMessageType.USER_PATROL_STOP); + //网格员结束巡查,如果是榆山街道的工作人员,需要调用【更新用户积分(双实信息更新 网格巡查)】/api/points/behavior/updateUserPoints + UpdateUserPointsFormDTO updateUserPointsFormDTO=new UpdateUserPointsFormDTO(); + updateUserPointsFormDTO.setCustomerId(e.getCustomerId()); + updateUserPointsFormDTO.setStaffId(e.getStaffId()); + updateUserPointsFormDTO.setBehaviorType(BehaviorTypeYuShanEnum.GRID_PATROL.getCode()); + yuShanSysApiService.updateUserPoints(e.getCustomerId(),Arrays.asList(updateUserPointsFormDTO)); + }); } From 2596e5ae3c0199970bd6c3c44a918a781981ae1d Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Wed, 16 Feb 2022 16:14:00 +0800 Subject: [PATCH 50/87] =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/commons/tools/utils/YuShanSysApiService.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YuShanSysApiService.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YuShanSysApiService.java index 0c13721c2e..9779c6d990 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YuShanSysApiService.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YuShanSysApiService.java @@ -52,9 +52,11 @@ public class YuShanSysApiService { //只有榆山街道的工作人员才调用 if (null != staff && (staff.getAgencyId().equals(SpecialCustomerOrgConstant.YUSHAN_AGENCY_ID_PROD) || staff.getAgencyPIds().contains(SpecialCustomerOrgConstant.YUSHAN_AGENCY_ID_PROD))) { formDTO.setMobile(staff.getMobile()); + //测试用手机号 + // formDTO.setMobile("13205302682"); Result res = HttpClientManager.getInstance().sendPostByJSON(apiPath, JSON.toJSONString(formDTO)); Result result = JSON.parseObject(res.getData(), Result.class); - log.info(String.format("updateUserPoints 入参:%s", JSON.toJSONString(formDTO))); + log.info(String.format("updateUserPoints 入参:%s;返参:%s", JSON.toJSONString(formDTO),JSON.toJSONString(result))); if (!result.success()) { log.warn("updateUserPoints failed:{}", JSON.toJSONString(result)); } From 690aade8b80b8c7d92a534f612eadf6b5b816693 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Wed, 16 Feb 2022 16:31:01 +0800 Subject: [PATCH 51/87] =?UTF-8?q?=E5=B0=8F=E5=8C=BA=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/ImportNeighborHoodInfoListener.java | 44 ++++++++++--------- .../impl/IcNeighborHoodServiceImpl.java | 1 + 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java index 3455de558a..cbf1174e6b 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java @@ -118,28 +118,30 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener propertyNames = notExistList.stream().map(m -> m.getPropertyName()).distinct().collect(Collectors.toList()); List disposePropertyNames = notExistList.stream().map(m -> m.getPropertyName()).distinct().collect(Collectors.toList()); - List existPropertyNames = propertyManagementDao.selectExistNames(propertyNames); - disposePropertyNames.removeAll(existPropertyNames); - List propertyManagementEntities = new ArrayList<>(); - if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(disposePropertyNames)){ - disposePropertyNames.forEach(name -> { - IcPropertyManagementEntity e = new IcPropertyManagementEntity(); - e.setName(name); - propertyManagementEntities.add(e); - }); - } - neighborHoodService.insertPropertyManagement(propertyManagementEntities); + if (!CollectionUtils.isEmpty(propertyNames)){ + List existPropertyNames = propertyManagementDao.selectExistNames(propertyNames); + disposePropertyNames.removeAll(existPropertyNames); + List propertyManagementEntities = new ArrayList<>(); + if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(disposePropertyNames)){ + disposePropertyNames.forEach(name -> { + IcPropertyManagementEntity e = new IcPropertyManagementEntity(); + e.setName(name); + propertyManagementEntities.add(e); + }); + } + neighborHoodService.insertPropertyManagement(propertyManagementEntities); - // 小区物业关系表插入 - List neighborHoodAndManagementDTOS = ConvertUtils.sourceToTarget(notExistList, NeighborHoodAndManagementDTO.class); - List propertyManagementInfos = propertyManagementDao.selectIdByName(propertyNames); - neighborHoodAndManagementDTOS.forEach(n -> propertyManagementInfos.stream().filter(p -> p.getName().equals(n.getPropertyName())) - .forEach(p -> { - n.setPropertyId(p.getId()); - n.setNeighborHoodId(n.getNeighborHoodId()); - })); - List icNeighborHoodPropertyEntities = ConvertUtils.sourceToTarget(neighborHoodAndManagementDTOS, IcNeighborHoodPropertyEntity.class); - neighborHoodService.neighborHoodPropertyInsert(icNeighborHoodPropertyEntities); + // 小区物业关系表插入 + List neighborHoodAndManagementDTOS = ConvertUtils.sourceToTarget(notExistList, NeighborHoodAndManagementDTO.class); + List propertyManagementInfos = propertyManagementDao.selectIdByName(propertyNames); + neighborHoodAndManagementDTOS.forEach(n -> propertyManagementInfos.stream().filter(p -> p.getName().equals(n.getPropertyName())) + .forEach(p -> { + n.setPropertyId(p.getId()); + n.setNeighborHoodId(n.getNeighborHoodId()); + })); + List icNeighborHoodPropertyEntities = ConvertUtils.sourceToTarget(neighborHoodAndManagementDTOS, IcNeighborHoodPropertyEntity.class); + neighborHoodService.neighborHoodPropertyInsert(icNeighborHoodPropertyEntities); + } } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java index 0a1ecdca80..dddb2126e0 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java @@ -519,6 +519,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); From ec1eee8d70de340a3ccac417a7e890011d4a4f70 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Wed, 16 Feb 2022 17:43:40 +0800 Subject: [PATCH 52/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=20-=20?= =?UTF-8?q?=E5=B1=85=E6=B0=91=E5=AF=BC=E5=85=A5=EF=BC=9A=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E4=BB=BB=E5=8A=A1=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/constant/ImportTaskConstants.java | 26 ++++++++ .../controller/IcResiUserController.java | 30 ++++++++- .../java/com/epmet/dao/ImportTaskDao.java | 31 +++++++++ .../com/epmet/entity/ImportTaskEntity.java | 48 ++++++++++++++ .../service/IcResiUserImportService.java | 2 +- .../com/epmet/service/ImportTaskService.java | 35 +++++++++++ .../impl/IcResiUserImportServiceImpl.java | 63 ++++++++++++++----- .../service/impl/ImportTaskServiceImpl.java | 57 +++++++++++++++++ .../main/resources/mapper/ImportTaskDao.xml | 33 ++++++++++ 9 files changed, 304 insertions(+), 21 deletions(-) create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/constant/ImportTaskConstants.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/dao/ImportTaskDao.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/entity/ImportTaskEntity.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/service/ImportTaskService.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java create mode 100644 epmet-user/epmet-user-server/src/main/resources/mapper/ImportTaskDao.xml diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/constant/ImportTaskConstants.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/constant/ImportTaskConstants.java new file mode 100644 index 0000000000..685e80a39a --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/constant/ImportTaskConstants.java @@ -0,0 +1,26 @@ +package com.epmet.constant; + +/** + * 导入任务的业务类型常量 + */ +public interface ImportTaskConstants { + /** + * 居民 + */ + String BIZ_TYPE_RESI = "resi"; + + /** + * 处理状态:处理中 + */ + String PROCESS_STATUS_PROCESSING = "processing"; + + /** + * 处理状态:成功 + */ + String PROCESS_STATUS_FINISHED_SUCCESS = "finished_success"; + + /** + * 处理状态:完成,但未完全成功 + */ + String PROCESS_STATUS_FINISHED_FAIL = "finished_fail"; +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index 1350ce159f..7624198dfb 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java @@ -38,11 +38,13 @@ import com.epmet.commons.tools.redis.RedisKeys; import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.HttpClientManager; import com.epmet.commons.tools.utils.IpUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.constant.ImportTaskConstants; import com.epmet.constant.SystemMessageType; import com.epmet.dto.IcResiUserDTO; import com.epmet.dto.form.*; @@ -54,6 +56,7 @@ import com.epmet.feign.OperCustomizeOpenFeignClient; import com.epmet.feign.OssFeignClient; import com.epmet.service.IcResiUserImportService; import com.epmet.service.IcResiUserService; +import com.epmet.service.ImportTaskService; import jodd.io.FileUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; @@ -118,6 +121,11 @@ public class IcResiUserController { private RedisUtils redisUtils; @Autowired private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient; + @Autowired + private LoginUserUtil loginUserUtil; + @Autowired + private ImportTaskService importTaskService; + /** * 模板枚举 @@ -431,6 +439,18 @@ public class IcResiUserController { throw new RenException("文件类型不匹配"); } + String operatorId = loginUserUtil.getLoginUserId(); + String importTaskId; + + // 记录导入任务 + if (importTaskService.existsProcessingTask(operatorId, ImportTaskConstants.BIZ_TYPE_RESI)) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), + "已存在执行中的导入任务,请等待执行完成。", + "已存在执行中的导入任务,请等待执行完成。"); + } else { + importTaskId = importTaskService.createProcessTask(operatorId, ImportTaskConstants.BIZ_TYPE_RESI); + } + Path savePath = null; try { String fileName = UUID.randomUUID().toString().concat(".").concat(extension); @@ -438,10 +458,14 @@ public class IcResiUserController { IOUtils.copy(file.getInputStream(), new FileOutputStream(savePath.toString())); List formItemList = icResiUserService.listFormItems(customerId,IcFormCodeEnum.RESI_BASE_INFO.getCode()); - icResiUserImportService.importIcResiInfoFromExcel(formItemList, savePath.toString(), response); - } catch (IOException e) { - String errorMsg = ExceptionUtils.getErrorStackTrace(e); + + icResiUserImportService.importIcResiInfoFromExcel(importTaskId, formItemList, savePath.toString(), response); + } catch (Throwable e) { + String errorMsg = ExceptionUtils.getThrowableErrorStackTrace(e); log.error("【导入居民信息失败】导入失败:{}", errorMsg); + + // 要将导入任务状态设置为结束但不成功 + importTaskService.finish(importTaskId, ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL, operatorId, null, e.getMessage()); throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode()); } finally { try { diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/ImportTaskDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/ImportTaskDao.java new file mode 100644 index 0000000000..1306b7e3cd --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/ImportTaskDao.java @@ -0,0 +1,31 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.entity.ImportTaskEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-02-15 + */ +@Mapper +public interface ImportTaskDao extends BaseDao { + + /** + * 完成导入 + * @param taskId 任务id + * @param processStatus 处理状态 + * @param operatorId 操作者id + * @param resultDesc 结果文字描述 + * @param resultDescFile 结果描述文件 + * @return + */ + int finish(@Param("taskId") String taskId, + @Param("process_status") String processStatus, + @Param("operatorId") String operatorId, + @Param("resultDesc") String resultDesc, + @Param("resultDescFile") String resultDescFile); +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/ImportTaskEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/ImportTaskEntity.java new file mode 100644 index 0000000000..742c6cc93e --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/ImportTaskEntity.java @@ -0,0 +1,48 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; + +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-02-15 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("import_task") +public class ImportTaskEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 业务类型。resi:居民;楼栋:building;房屋:house。依次补充 + */ + private String bizType; + + /** + * 处理状态。processing:处理中;finished:完成; + */ + private String processStatus; + + /** + * 谁导入的 + */ + private String operatorId; + + /** + * 开始导入的时间 + */ + private Date startTime; + + private String resultDescFile; + + private String resultDesc; + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java index 7f3d0bdca0..35748c9ddc 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java @@ -12,5 +12,5 @@ import java.util.List; */ public interface IcResiUserImportService { - void importIcResiInfoFromExcel(List formItemList, String excelPathName, HttpServletResponse response); + void importIcResiInfoFromExcel(String importTaskId, List formItemList, String excelPathName, HttpServletResponse response); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/ImportTaskService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/ImportTaskService.java new file mode 100644 index 0000000000..65245abd98 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/ImportTaskService.java @@ -0,0 +1,35 @@ +package com.epmet.service; + + +/** + * + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-02-15 + */ +public interface ImportTaskService { + + /** + * 检查指定类型该用户是否存在处理中的导入任务 + * @param operatorId 操作者ID + * @param bizType 业务类型。resi:居民 + * @return + */ + boolean existsProcessingTask(String operatorId, String bizType); + + /** + * 创建处理任务 + * @param operatorId + * @param bizType + */ + String createProcessTask(String operatorId, String bizType); + + /** + * 结束导入 + * @param taskId 任务id + * @param processStatus 处理状态 + * @param resultDescFile 结果描述文件 + * @param resultDesc 结果描述文本 + */ + Boolean finish(String taskId, String processStatus, String operatorId, String resultDescFile, String resultDesc); +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java index 32314bff9b..4ff0a8abaa 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java @@ -24,6 +24,7 @@ import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; +import com.epmet.constant.ImportTaskConstants; import com.epmet.dao.IcResiUserDao; import com.epmet.dao.IcUserChangeDetailedDao; import com.epmet.dao.IcUserChangeRecordDao; @@ -72,7 +73,6 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res // 错误和跳过excel行暂存 public static final ThreadLocal>> errorRows = new ThreadLocal<>(); - public static final ThreadLocal>> skipedRows = new ThreadLocal<>(); /** * 导入的居民中,新增或者变动的居民 @@ -126,6 +126,9 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res @Autowired private RedisUtils redisUtils; + @Autowired + private ImportTaskService importTaskService; + /** * 字表中不需要的列 @@ -212,11 +215,13 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res /** * 导入居民信息 - * 导入主表和所有子表信息 - * @return + * @param importTaskId 导入任务id + * @param formItemList item列表 + * @param excelPathName excel缓存路径 + * @param response 响应对象 */ @Override - public void importIcResiInfoFromExcel(List formItemList, String excelPathName, HttpServletResponse response) { + public void importIcResiInfoFromExcel(String importTaskId, List formItemList, String excelPathName, HttpServletResponse response) { String loginUserId = loginUserUtil.getLoginUserId(); String loginUserApp = loginUserUtil.getLoginUserApp(); @@ -235,6 +240,8 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res CustomerAgencyDTO agencyInfo = getResultDataOrThrowsException(govOrgOpenFeignClient.getAgencyById(currUserAgencyId), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.SERVER_ERROR.getCode(), null, null); String customerId = agencyInfo.getCustomerId(); + boolean hasErrorRows = false; + try { initImportThreadLocal(customerId); @@ -273,11 +280,27 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res saveResiCategoryChangedRecord(categoryChangedResis); saveTransferedResiRecord(transferedResis); + hasErrorRows = hasErrorRows(); + try { - downLoadResults(response); + // todo 做了导入记录之后,这里就要判断,没有错误就不生成文件了 + downLoadResults(hasErrorRows, response); } catch (IOException e) { log.error("【导入IC居民附加信息】下载导入结果信息失败:{}", ExceptionUtils.getErrorStackTrace(e)); } + + // 更新上传记录 + if (hasErrorRows) { + importTaskService.finish(importTaskId, ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL, loginUserId, + null, null); + } else { + importTaskService.finish(importTaskId, ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS, loginUserId, + null, null); + } + + } catch (Exception e) { + // 抛出,让外层捕获处理,记录 + throw e; } finally { // 清空rediskey try { @@ -289,7 +312,6 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res } // 清空线程变量 - skipedRows.remove(); errorRows.remove(); newlyOrChangedResi.remove(); resiCategoryColumnNameAndLabel.remove(); @@ -297,6 +319,22 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res } } + /** + * 是否有错误行 + * @return + */ + private Boolean hasErrorRows() { + boolean hasError = false; + Map> tableAndErrorRows = errorRows.get(); + for (Map.Entry> entry:tableAndErrorRows.entrySet()) { + if (entry.getValue().size() != 0) { + hasError = true; + } + } + + return hasError; + } + /** * threadLocal初始化 */ @@ -310,7 +348,6 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res for (IcResiUserTableEnum e : IcResiUserTableEnum.values()) { skipedRowsMap.put(e.getTableName(), new LinkedList<>()); } - skipedRows.set(skipedRowsMap); // 错误信息 Map> errorRowsMap = new LinkedHashMap<>(); @@ -1000,19 +1037,11 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res * @param response * @throws IOException */ - public void downLoadResults(HttpServletResponse response) throws IOException { + public void downLoadResults(Boolean hasErrorRows, HttpServletResponse response) throws IOException { String fileName; // 判断是否有错误信息,以确定文件名 - boolean hasError = false; - Map> tableAndErrorRows = errorRows.get(); - for (Map.Entry> entry:tableAndErrorRows.entrySet()) { - if (entry.getValue().size() != 0) { - hasError = true; - } - } - - if (hasError) { + if (hasErrorRows) { fileName = "导入失败条目清单.xls"; } else { fileName = "导入成功.xls"; diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java new file mode 100644 index 0000000000..d80ee5d9a6 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java @@ -0,0 +1,57 @@ +package com.epmet.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.epmet.constant.ImportTaskConstants; +import com.epmet.dao.ImportTaskDao; +import com.epmet.entity.ImportTaskEntity; +import com.epmet.service.ImportTaskService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Date; + +/** + * + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-02-15 + */ +@Service +public class ImportTaskServiceImpl implements ImportTaskService { + + @Autowired + private ImportTaskDao importRecordDao; + + /** + * 该用户,该业务类型,是否有正在处理的导入任务 + * @param operatorId 操作者ID + * @param bizType 业务类型。resi:居民 + * @return + */ + @Override + public boolean existsProcessingTask(String operatorId, String bizType) { + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(ImportTaskEntity::getOperatorId, operatorId); + query.eq(ImportTaskEntity::getBizType, bizType); + query.eq(ImportTaskEntity::getProcessStatus, ImportTaskConstants.PROCESS_STATUS_PROCESSING); + + return importRecordDao.selectCount(query) > 0; + } + + @Override + public String createProcessTask(String operatorId, String bizType) { + ImportTaskEntity importRecord = new ImportTaskEntity(); + importRecord.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_PROCESSING); + importRecord.setOperatorId(operatorId); + importRecord.setBizType(bizType); + importRecord.setStartTime(new Date()); + + importRecordDao.insert(importRecord); + return importRecord.getId(); + } + + @Override + public Boolean finish(String taskId, String processStatus, String operatorId, String resultDescFile, String resultDesc) { + return importRecordDao.finish(taskId, processStatus, operatorId, resultDesc, resultDescFile) > 0; + } +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/ImportTaskDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/ImportTaskDao.xml new file mode 100644 index 0000000000..edc56fa5c7 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/ImportTaskDao.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + update import_task + set PROCESS_STATUS = #{process_status}, + RESULT_DESC = #{resultDesc}, + RESULT_DESC_FILE = #{resultDescFile}, + UPDATED_BY=#{operatorId}, + UPDATED_TIME=NOW() + where ID=#{taskId} + and PROCESS_STATUS = 'processing' + + \ No newline at end of file From cb3839b821bfd2d346b2540ae7cf32cf753516f5 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Wed, 16 Feb 2022 20:11:04 +0800 Subject: [PATCH 53/87] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=20-=20?= =?UTF-8?q?=E5=B1=85=E6=B0=91=E5=AF=BC=E5=85=A5=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/service/impl/IcResiUserImportServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java index 4ff0a8abaa..18cd3cd6ec 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java @@ -285,7 +285,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res try { // todo 做了导入记录之后,这里就要判断,没有错误就不生成文件了 downLoadResults(hasErrorRows, response); - } catch (IOException e) { + } catch (Exception e) { log.error("【导入IC居民附加信息】下载导入结果信息失败:{}", ExceptionUtils.getErrorStackTrace(e)); } From 70a02cdd0e158941c59c36a4471404991f9c8483 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Thu, 17 Feb 2022 09:52:04 +0800 Subject: [PATCH 54/87] =?UTF-8?q?bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/model/ImportHouseInfoListener.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java index 5231baa48f..d066dbaf80 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java @@ -97,11 +97,13 @@ public class ImportHouseInfoListener extends AnalysisEventListener importInfo = neighborHoodService.getImportInfo(formDTO, needDisposeList); + needInsertList.addAll(importInfo); + } + if (CollectionUtils.isEmpty(needInsertList)){ return; } - List importInfo = neighborHoodService.getImportInfo(formDTO, needDisposeList); - needInsertList.addAll(importInfo); Map collect = needInsertList.stream().collect(Collectors.groupingBy(n -> n.getBuildingUnitId() + "_" + n.getDoorName(), Collectors.counting())); collect.forEach((k,v) -> { if (Integer.valueOf(v.toString()).compareTo(1) > 0){ From cb69a2837095cfafb9d93357650548bb1ef6dd8f Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Thu, 17 Feb 2022 10:26:46 +0800 Subject: [PATCH 55/87] =?UTF-8?q?bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/model/ImportNeighborHoodInfoListener.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java index cbf1174e6b..25f5cb8f34 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java @@ -116,8 +116,8 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener notExistList = groupByBuildingExistStatus.get(false); if (!CollectionUtils.isEmpty(notExistList)){ // 物业表插入 - List propertyNames = notExistList.stream().map(m -> m.getPropertyName()).distinct().collect(Collectors.toList()); - List disposePropertyNames = notExistList.stream().map(m -> m.getPropertyName()).distinct().collect(Collectors.toList()); + List propertyNames = notExistList.stream().filter(n -> StringUtils.isNotBlank(n.getPropertyName())).map(m -> m.getPropertyName()).distinct().collect(Collectors.toList()); + List disposePropertyNames = notExistList.stream().filter(n -> StringUtils.isNotBlank(n.getPropertyName())).map(m -> m.getPropertyName()).distinct().collect(Collectors.toList()); if (!CollectionUtils.isEmpty(propertyNames)){ List existPropertyNames = propertyManagementDao.selectExistNames(propertyNames); disposePropertyNames.removeAll(existPropertyNames); From be77beb872d0e5f174c05303a6430698a69f0f67 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Thu, 17 Feb 2022 10:29:57 +0800 Subject: [PATCH 56/87] =?UTF-8?q?=E8=BF=90=E8=90=A5=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=88=97=E5=A4=B4=E6=97=A5=E6=9C=9F=E4=B8=8D?= =?UTF-8?q?=E5=AF=B9=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataaggre/service/datastats/impl/DataStatsServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java index 84dec4c630..26444631e8 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java @@ -1876,6 +1876,7 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve */ @Override public void CustomerDataManage(CustomerDataManageFormDTO formDTO, HttpServletResponse response) throws Exception { + String openTime = formDTO.getStartTime(); List result = operateExport(formDTO).getList(); if (!CollectionUtils.isEmpty(result)){ CustomerDataManageResultDTO.CustomerDataManage c = new CustomerDataManageResultDTO.CustomerDataManage(); @@ -1894,6 +1895,7 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve c.setPatrolDuration(getHm(c.getPatrolDurationInteger())); result.add(c); } + formDTO.setStartTime(openTime); String fileName = excelName(formDTO); ExcelUtils.exportExcelToTargetDisposeAll(response,fileName,result, CustomerDataManageExcel.class); } From 826c7cfa07442bd41f113e22c7f91e8342bc3049 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Thu, 17 Feb 2022 15:56:24 +0800 Subject: [PATCH 57/87] =?UTF-8?q?=E7=BC=93=E5=AD=98=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/epmet/redis/IcHouseRedis.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/IcHouseRedis.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/IcHouseRedis.java index dd02bcfad5..2329e467d6 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/IcHouseRedis.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/redis/IcHouseRedis.java @@ -94,7 +94,7 @@ public class IcHouseRedis { */ public void setTemporaryCacheHouse(String customerId, Map map,String userId){ String key = RedisKeys.getTemporaryHouseInfoCacheKey(customerId,userId); - redisUtils.hMSet(key,map,RedisUtils.NOT_EXPIRE); + redisUtils.hMSet(key,map); } /** @@ -131,7 +131,7 @@ public class IcHouseRedis { */ public void setTemporaryCacheGrid(String customerId, Map map,String userId) { String key = RedisKeys.getTemporaryGridInfoCacheKey(customerId, userId); - redisUtils.hMSet(key, map, RedisUtils.NOT_EXPIRE); + redisUtils.hMSet(key, map); } /** @@ -182,7 +182,7 @@ public class IcHouseRedis { */ public void setTemporaryCacheNeighBorHood(String customerId, Map map,String userId) { String key = RedisKeys.getTemporaryNeighborHoodInfoCacheKey(customerId, userId); - redisUtils.hMSet(key, map, RedisUtils.NOT_EXPIRE); + redisUtils.hMSet(key, map); } /** @@ -220,7 +220,7 @@ public class IcHouseRedis { */ public void setTemporaryCacheBuilding(String customerId, Map map,String userId) { String key = RedisKeys.getTemporaryBuildingInfoCacheKey(customerId, userId); - redisUtils.hMSet(key, map, RedisUtils.NOT_EXPIRE); + redisUtils.hMSet(key, map); } /** @@ -258,7 +258,7 @@ public class IcHouseRedis { */ public void setTemporaryCacheBuildingUnit(String customerId, Map map,String userId) { String key = RedisKeys.getTemporaryBuildingUnitInfoCacheKey(customerId, userId); - redisUtils.hMSet(key, map, RedisUtils.NOT_EXPIRE); + redisUtils.hMSet(key, map); } /** From fb1fffb680bbf69b648a855bb321dfcabbac4d27 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Thu, 17 Feb 2022 17:05:19 +0800 Subject: [PATCH 58/87] emm --- .../model/ImportBuildingInfoListener.java | 5 +++++ .../epmet/model/ImportHouseInfoListener.java | 20 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java index ba745a744e..e16fc83d3f 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java @@ -71,6 +71,11 @@ public class ImportBuildingInfoListener extends AnalysisEventListener Date: Thu, 17 Feb 2022 17:17:13 +0800 Subject: [PATCH 59/87] emm --- .../java/com/epmet/model/ImportBuildingInfoListener.java | 4 +++- .../java/com/epmet/model/ImportHouseInfoListener.java | 8 ++++++-- .../com/epmet/model/ImportNeighborHoodInfoListener.java | 4 +++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java index e16fc83d3f..768f41ad5b 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java @@ -103,8 +103,10 @@ public class ImportBuildingInfoListener extends AnalysisEventListener Date: Thu, 17 Feb 2022 17:53:52 +0800 Subject: [PATCH 60/87] emm --- .../model/ImportBuildingInfoListener.java | 2 +- .../epmet/model/ImportHouseInfoListener.java | 22 ++++++++++--------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java index 768f41ad5b..594b64e672 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java @@ -72,7 +72,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener Date: Thu, 17 Feb 2022 17:54:40 +0800 Subject: [PATCH 61/87] emm --- .../src/main/java/com/epmet/model/ImportHouseInfoListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java index a432741869..bcac2e5a4b 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java @@ -97,7 +97,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener Date: Thu, 17 Feb 2022 19:37:45 +0800 Subject: [PATCH 62/87] =?UTF-8?q?=E5=BC=84=E4=B8=AA=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E4=B8=8A=E5=8E=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extract/biz/impl/BizDataStatsServiceImpl.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java index 15d3ba8b06..b5d8645b1e 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java @@ -130,6 +130,7 @@ public class BizDataStatsServiceImpl implements BizDataStatsService { List insertList = buildInitPatrolStatsData(formDTO, allGridMembers); Map yesterdayStatsMap = insertList.stream().collect(Collectors.toMap(o -> o.getGridId() + o.getStaffId(), o -> o, (o1, o2) -> o1)); + log.info("reloadStaffPatrolStatsData 所有网格员数据{}",JSON.toJSONString(yesterdayStatsMap)); //获取昨日的巡查记录 List yesterdayPatrolList = userService.selectStaffPatrolListByDateId(formDTO.getCustomerId(), formDTO.getDateId()); @@ -138,7 +139,7 @@ public class BizDataStatsServiceImpl implements BizDataStatsService { //获取昨日的例行工作数据 List yesterdayWorkList = userService.selectRoutineWorkListByDateId(formDTO.getCustomerId(), formDTO.getDateId()); - + log.info("reloadStaffPatrolStatsData 例行工作数据数据{}",JSON.toJSONString(yesterdayWorkList)); //遍历网格员 设置其 巡查次数 巡查时常 上报项目数 yesterdayPatrolList.forEach(patrolRecord -> { String key = patrolRecord.getGrid().concat(patrolRecord.getStaffId()); @@ -172,7 +173,7 @@ public class BizDataStatsServiceImpl implements BizDataStatsService { String unqPatrolKey = getUnqPatrolKey(patrol.getGrid(), patrol.getStaffId()); StatsStaffPatrolRecordDailyDTO recordDailyDTO = yesterdayStatsMap.get(unqPatrolKey); if (recordDailyDTO == null) { - log.error("have project data but have any patrolRecordDaily,gridId:{},staffId:{}", patrol.getGrid(), patrol.getStaffId()); + log.error("reloadStaffPatrolStatsData have project data but have any patrolRecordDaily,gridId:{},staffId:{}", patrol.getGrid(), patrol.getStaffId()); return; } @@ -181,9 +182,13 @@ public class BizDataStatsServiceImpl implements BizDataStatsService { }); }); yesterdayWorkList.forEach(work->{ - String key = work.getGridId().concat(work.getUserId()); + String key = getUnqPatrolKey(work.getGridId(),work.getUserId()); + if ("a47337f6b67dd3ce5d45e32603029ad0".equals(work.getUserId())){ + log.info("reloadStaffPatrolStatsData 问题用户 例行工作数据{}",JSON.toJSONString(work)); + } StatsStaffPatrolRecordDailyDTO patrolRecordDailyDTO = yesterdayStatsMap.get(key); if (patrolRecordDailyDTO == null){ + log.warn("reloadStaffPatrolStatsData getRoutineWorkCount key{} not exist in gridMembers",key); return; } patrolRecordDailyDTO.setRoutineWorkCount(patrolRecordDailyDTO.getRoutineWorkCount() + NumConstant.ONE); From dcbb53dd6660da7a33119ac05f2380e0548270a9 Mon Sep 17 00:00:00 2001 From: jianjun Date: Thu, 17 Feb 2022 20:19:23 +0800 Subject: [PATCH 63/87] =?UTF-8?q?=E5=BC=84=E4=B8=AA=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E4=B8=8A=E5=8E=BB=20up?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extract/biz/impl/BizDataStatsServiceImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java index b5d8645b1e..af0a0201e3 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java @@ -183,20 +183,20 @@ public class BizDataStatsServiceImpl implements BizDataStatsService { }); yesterdayWorkList.forEach(work->{ String key = getUnqPatrolKey(work.getGridId(),work.getUserId()); - if ("a47337f6b67dd3ce5d45e32603029ad0".equals(work.getUserId())){ - log.info("reloadStaffPatrolStatsData 问题用户 例行工作数据{}",JSON.toJSONString(work)); - } StatsStaffPatrolRecordDailyDTO patrolRecordDailyDTO = yesterdayStatsMap.get(key); if (patrolRecordDailyDTO == null){ log.warn("reloadStaffPatrolStatsData getRoutineWorkCount key{} not exist in gridMembers",key); return; } patrolRecordDailyDTO.setRoutineWorkCount(patrolRecordDailyDTO.getRoutineWorkCount() + NumConstant.ONE); + if ("a47337f6b67dd3ce5d45e32603029ad0".equals(work.getUserId())){ + log.info("reloadStaffPatrolStatsData 问题用户 例行工作数据{},累加次数:{}",JSON.toJSONString(work),patrolRecordDailyDTO.getRoutineWorkCount()); + } }); Integer effectRow = statsStaffPatrolService.delAndInsertBatch(formDTO, insertList); - log.debug("initStaffPatrolStats insert rows:{}", effectRow); + log.info("initStaffPatrolStats insert rows:{}", JSON.toJSONString(insertList)); } /** From 77452add3880393578319388fb5683d49525bcae Mon Sep 17 00:00:00 2001 From: jianjun Date: Thu, 17 Feb 2022 20:52:24 +0800 Subject: [PATCH 64/87] =?UTF-8?q?=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml index 7e00ed10c8..15e2051ea3 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml @@ -62,6 +62,7 @@ ON DUPLICATE KEY UPDATE PATROL_TOTAL = values(PATROL_TOTAL), + ROUTINE_WORK_COUNT = values(ROUTINE_WORK_COUNT), TOTAL_TIME = values(TOTAL_TIME), UPDATED_BY = VALUES(UPDATED_BY) From e82142c941ffb18e26de408deebbb2844403c7e1 Mon Sep 17 00:00:00 2001 From: jianjun Date: Thu, 17 Feb 2022 20:54:49 +0800 Subject: [PATCH 65/87] =?UTF-8?q?=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml index 15e2051ea3..b71883b2b2 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml @@ -62,8 +62,10 @@ ON DUPLICATE KEY UPDATE PATROL_TOTAL = values(PATROL_TOTAL), - ROUTINE_WORK_COUNT = values(ROUTINE_WORK_COUNT), TOTAL_TIME = values(TOTAL_TIME), + LATEST_PATROL_STATUS = values(LATEST_PATROL_STATUS), + LATEST_PATROL_TIME = values(LATEST_PATROL_TIME), + ROUTINE_WORK_COUNT = values(ROUTINE_WORK_COUNT), UPDATED_BY = VALUES(UPDATED_BY) From a44341804864070aeeb0e44f3a87df02ca02dd85 Mon Sep 17 00:00:00 2001 From: jianjun Date: Thu, 17 Feb 2022 20:56:57 +0800 Subject: [PATCH 66/87] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=90=A7=20=E5=B0=91?= =?UTF-8?q?=E5=B9=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml index b71883b2b2..5d5fb0324e 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml @@ -65,6 +65,7 @@ TOTAL_TIME = values(TOTAL_TIME), LATEST_PATROL_STATUS = values(LATEST_PATROL_STATUS), LATEST_PATROL_TIME = values(LATEST_PATROL_TIME), + REPORT_PROJECT_COUNT = values(REPORT_PROJECT_COUNT), ROUTINE_WORK_COUNT = values(ROUTINE_WORK_COUNT), UPDATED_BY = VALUES(UPDATED_BY) From 73efe42f6bb92a16d88c6ff14fa368065d63e5ab Mon Sep 17 00:00:00 2001 From: jianjun Date: Thu, 17 Feb 2022 21:16:58 +0800 Subject: [PATCH 67/87] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=B8=8B=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dao/user/StatsStaffPatrolRecordDailyDao.java | 2 +- .../extract/biz/impl/BizDataStatsServiceImpl.java | 12 ++++-------- .../epmet/service/user/StatsStaffPatrolService.java | 2 +- .../user/impl/StatsStaffPatrolServiceImpl.java | 7 ++----- .../mapper/user/StatsStaffPatrolRecordDailyDao.xml | 2 +- 5 files changed, 9 insertions(+), 16 deletions(-) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/user/StatsStaffPatrolRecordDailyDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/user/StatsStaffPatrolRecordDailyDao.java index 42233f31d6..7c37db8f28 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/user/StatsStaffPatrolRecordDailyDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/user/StatsStaffPatrolRecordDailyDao.java @@ -43,7 +43,7 @@ public interface StatsStaffPatrolRecordDailyDao extends BaseDao insertList); + Integer insertBatchOrUpdate(@Param("list") List insertList); /** * desc: 删除内部数据 diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java index af0a0201e3..2c2c4409c2 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java @@ -130,7 +130,7 @@ public class BizDataStatsServiceImpl implements BizDataStatsService { List insertList = buildInitPatrolStatsData(formDTO, allGridMembers); Map yesterdayStatsMap = insertList.stream().collect(Collectors.toMap(o -> o.getGridId() + o.getStaffId(), o -> o, (o1, o2) -> o1)); - log.info("reloadStaffPatrolStatsData 所有网格员数据{}",JSON.toJSONString(yesterdayStatsMap)); + log.debug("reloadStaffPatrolStatsData 所有网格员数据{}",JSON.toJSONString(yesterdayStatsMap)); //获取昨日的巡查记录 List yesterdayPatrolList = userService.selectStaffPatrolListByDateId(formDTO.getCustomerId(), formDTO.getDateId()); @@ -139,7 +139,7 @@ public class BizDataStatsServiceImpl implements BizDataStatsService { //获取昨日的例行工作数据 List yesterdayWorkList = userService.selectRoutineWorkListByDateId(formDTO.getCustomerId(), formDTO.getDateId()); - log.info("reloadStaffPatrolStatsData 例行工作数据数据{}",JSON.toJSONString(yesterdayWorkList)); + log.debug("reloadStaffPatrolStatsData 例行工作数据数据{}",JSON.toJSONString(yesterdayWorkList)); //遍历网格员 设置其 巡查次数 巡查时常 上报项目数 yesterdayPatrolList.forEach(patrolRecord -> { String key = patrolRecord.getGrid().concat(patrolRecord.getStaffId()); @@ -189,13 +189,9 @@ public class BizDataStatsServiceImpl implements BizDataStatsService { return; } patrolRecordDailyDTO.setRoutineWorkCount(patrolRecordDailyDTO.getRoutineWorkCount() + NumConstant.ONE); - if ("a47337f6b67dd3ce5d45e32603029ad0".equals(work.getUserId())){ - log.info("reloadStaffPatrolStatsData 问题用户 例行工作数据{},累加次数:{}",JSON.toJSONString(work),patrolRecordDailyDTO.getRoutineWorkCount()); - } - }); - Integer effectRow = statsStaffPatrolService.delAndInsertBatch(formDTO, insertList); + Integer effectRow = statsStaffPatrolService.insertBatchOrUpdate(formDTO, insertList); log.info("initStaffPatrolStats insert rows:{}", JSON.toJSONString(insertList)); } @@ -223,7 +219,7 @@ public class BizDataStatsServiceImpl implements BizDataStatsService { private void initStaffPatrolTodayData(StaffPatrolStatsFormDTO formDTO, List allGridMembers) { log.info("initStaffPatrolTodayData param:{}", JSON.toJSONString(formDTO)); List insertList = buildInitPatrolStatsData(formDTO, allGridMembers); - Integer effectRow = statsStaffPatrolService.delAndInsertBatch(formDTO, insertList); + Integer effectRow = statsStaffPatrolService.insertBatchOrUpdate(formDTO, insertList); log.debug("initStaffPatrolStats insert rows:{}", effectRow); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/StatsStaffPatrolService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/StatsStaffPatrolService.java index 1f1f9cefff..7a50ff5546 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/StatsStaffPatrolService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/StatsStaffPatrolService.java @@ -10,7 +10,7 @@ import java.util.List; */ public interface StatsStaffPatrolService { - Integer delAndInsertBatch(StaffPatrolStatsFormDTO formDTO, List insertList); + Integer insertBatchOrUpdate(StaffPatrolStatsFormDTO formDTO, List insertList); List selectData(String customerId, String yesterdayStr); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/StatsStaffPatrolServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/StatsStaffPatrolServiceImpl.java index 97bc67ed86..32145d5c76 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/StatsStaffPatrolServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/StatsStaffPatrolServiceImpl.java @@ -1,6 +1,5 @@ package com.epmet.service.user.impl; -import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.epmet.commons.dynamic.datasource.annotation.DataSource; import com.epmet.commons.tools.utils.ConvertUtils; @@ -33,10 +32,8 @@ public class StatsStaffPatrolServiceImpl implements StatsStaffPatrolService { @Transactional(rollbackFor = Exception.class) @Override - public Integer delAndInsertBatch(StaffPatrolStatsFormDTO formDTO, List insertList) { - int delete = statsStaffPatrolRecordDailyDao.deleteInternal(formDTO); - log.debug("delAndInsertBatch delete:{},param:{}", delete, JSON.toJSONString(formDTO)); - return statsStaffPatrolRecordDailyDao.insertBatch(insertList); + public Integer insertBatchOrUpdate(StaffPatrolStatsFormDTO formDTO, List insertList) { + return statsStaffPatrolRecordDailyDao.insertBatchOrUpdate(insertList); } @Override diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml index 5d5fb0324e..ef4cb50b06 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml @@ -2,7 +2,7 @@ - + insert into stats_staff_patrol_record_daily ( ID, From 725b0ed4d3530c7bf8ea39c43fc83ad0c317e7c3 Mon Sep 17 00:00:00 2001 From: jianjun Date: Thu, 17 Feb 2022 21:32:51 +0800 Subject: [PATCH 68/87] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extract/biz/impl/BizDataStatsServiceImpl.java | 2 +- .../resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java index 2c2c4409c2..0b0d0d5f1c 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java @@ -192,7 +192,7 @@ public class BizDataStatsServiceImpl implements BizDataStatsService { }); Integer effectRow = statsStaffPatrolService.insertBatchOrUpdate(formDTO, insertList); - log.info("initStaffPatrolStats insert rows:{}", JSON.toJSONString(insertList)); + log.info("initStaffPatrolStats insert rows:{}", effectRow); } /** diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml index ef4cb50b06..ebf1914935 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml @@ -67,6 +67,7 @@ LATEST_PATROL_TIME = values(LATEST_PATROL_TIME), REPORT_PROJECT_COUNT = values(REPORT_PROJECT_COUNT), ROUTINE_WORK_COUNT = values(ROUTINE_WORK_COUNT), + UPDATED_TIME = now(), UPDATED_BY = VALUES(UPDATED_BY) From 2dc95d6b38be2bddcc8228d597dec263f3523ee5 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Fri, 18 Feb 2022 09:20:40 +0800 Subject: [PATCH 69/87] bug --- .../java/com/epmet/model/ImportBuildingInfoListener.java | 4 +--- .../main/java/com/epmet/model/ImportHouseInfoListener.java | 7 +++---- .../com/epmet/model/ImportNeighborHoodInfoListener.java | 4 +--- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java index 594b64e672..3abe78b418 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java @@ -103,9 +103,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener Date: Fri, 18 Feb 2022 09:25:23 +0800 Subject: [PATCH 70/87] =?UTF-8?q?=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/epmet/controller/HouseController.java | 2 +- .../main/java/com/epmet/service/impl/BuildingServiceImpl.java | 2 +- .../java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java index c0c54f8540..017da95fd9 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java @@ -289,7 +289,7 @@ public class HouseController implements ResultDataResolver { s = s + "第"+nums.stream().map(String::valueOf).collect(Collectors.joining("、"))+"条导入失败"; return new Result<>().error(9999,String.format(s,num,num - nums.size())); } - return new Result<>().ok(String.format(s,num,num)); + return new Result<>().error(9999,String.format(s,num,num)); } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java index a518215b5c..15daabf246 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java @@ -429,7 +429,7 @@ public class BuildingServiceImpl implements BuildingService { s = s + "第"+nums.stream().map(String::valueOf).collect(Collectors.joining("、"))+"条导入失败"; return new Result<>().error(9999,String.format(s,num,num - nums.size())); } - return new Result<>().ok(String.format(s,num,num)); + return new Result<>().error(9999,String.format(s,num,num)); } private List searchAllBuilding(ListIcNeighborHoodFormDTO formDTO) { diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java index dddb2126e0..99db449d72 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java @@ -419,7 +419,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl().error(9999,String.format(s,num,num - nums.size())); } - return new Result<>().ok(String.format(s,num,num)); + return new Result<>().error(9999,String.format(s,num,num)); } /** From f728fd9a1a71e46faf6d2229aeeee64e4e30fe04 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Fri, 18 Feb 2022 10:12:38 +0800 Subject: [PATCH 71/87] =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/dao/IcBuildingDao.java | 4 +-- .../model/ImportBuildingInfoListener.java | 8 +++--- .../epmet/model/ImportHouseInfoListener.java | 18 ++++++------- .../main/resources/mapper/IcBuildingDao.xml | 27 ++++++++++--------- 4 files changed, 30 insertions(+), 27 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java index c5ed882ca1..cc052eed19 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java @@ -128,7 +128,7 @@ public interface IcBuildingDao extends BaseDao { * @author zxc * @date 2022/2/14 1:25 下午 */ - List selectAllBuildingByNeighborHoodId(@Param("neighborHoodId")String neighborHoodId); + List selectAllBuildingByNeighborHoodId(@Param("orgId")String orgId); /** * @Description 根据楼栋ID查询楼栋单元 @@ -136,7 +136,7 @@ public interface IcBuildingDao extends BaseDao { * @author zxc * @date 2022/2/14 1:58 下午 */ - List selectAllBuildingUnitByBuildingId(@Param("building")String building); + List selectAllBuildingUnitByBuildingId(@Param("orgId")String orgId); /** * @Description 根据ID查询小区 diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java index 3abe78b418..808a69f810 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportBuildingInfoListener.java @@ -151,7 +151,7 @@ public class ImportBuildingInfoListener extends AnalysisEventListener getBuildingInfos(String neighborHoodId){ - buildingInfoDTOs = icBuildingDao.selectAllBuildingByNeighborHoodId(neighborHoodId); + public Map getBuildingInfos(String orgId){ + buildingInfoDTOs = icBuildingDao.selectAllBuildingByNeighborHoodId(orgId); buildingInfos = buildingInfoDTOs.stream().collect(Collectors.toMap(n -> n.getNeighborHoodId() + "_" + n.getBuildingName(), n -> n.getBuildingId())); icHouseRedis.setTemporaryCacheBuilding(formDTO.getCustomerId(), buildingInfos, formDTO.getUserId()); return buildingInfos; diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java index 6025b15a6f..e572980355 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java @@ -142,7 +142,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener ids = needInsertList.stream().map(m -> m.getBuildingUnitId() + "_" + m.getDoorName()).distinct().collect(Collectors.toList()); + List ids = needInsertList.stream().filter(n -> StringUtils.isNotBlank(n.getBuildingUnitId())).map(m -> m.getBuildingUnitId() + "_" + m.getDoorName()).distinct().collect(Collectors.toList()); List existHouses = icBuildingDao.selectExistHouse(ids); existHouses.forEach(e -> { for (ImportGeneralDTO n : needInsertList) { @@ -212,7 +212,7 @@ public class ImportHouseInfoListener extends AnalysisEventListener getBuildingInfos(String neighborHoodId){ - buildingInfoDTOs = icBuildingDao.selectAllBuildingByNeighborHoodId(neighborHoodId); + public Map getBuildingInfos(String orgId){ + buildingInfoDTOs = icBuildingDao.selectAllBuildingByNeighborHoodId(orgId); buildingInfos = buildingInfoDTOs.stream().collect(Collectors.toMap(n -> n.getNeighborHoodId() + "_" + n.getBuildingName(), n -> n.getBuildingId())); icHouseRedis.setTemporaryCacheBuilding(formDTO.getCustomerId(), buildingInfos, formDTO.getUserId()); return buildingInfos; } /** - * @Description 获取楼栋下的单元 - * @param buildingId + * @Description 获取组织下的单元 + * @param orgId * @author zxc * @date 2022/2/14 2:04 下午 */ - public Map getBuildingUnitInfos(String buildingId){ - buildingUnitInfoDTOs = icBuildingDao.selectAllBuildingUnitByBuildingId(buildingId); + public Map getBuildingUnitInfos(String orgId){ + buildingUnitInfoDTOs = icBuildingDao.selectAllBuildingUnitByBuildingId(orgId); if (!CollectionUtils.isEmpty(buildingUnitInfoDTOs)){ buildingUnitInfos = buildingUnitInfoDTOs.stream().collect(Collectors.toMap(n -> n.getBuildingId() + "_" + n.getBuildingUnit(), n -> n.getBuildingUnitId())); icHouseRedis.setTemporaryCacheBuildingUnit(formDTO.getCustomerId(), buildingUnitInfos, formDTO.getUserId()); diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml index 2611809ecb..ee64e59aca 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml @@ -264,23 +264,26 @@ From e4653e1d8f9fea4b8b64b7ce0f2031971cf8b9c3 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Fri, 18 Feb 2022 15:29:28 +0800 Subject: [PATCH 72/87] =?UTF-8?q?=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/service/impl/PatrolRoutineWorkServiceImpl.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java index e7e6035e5a..28504e16d4 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java @@ -74,10 +74,7 @@ import org.springframework.util.CollectionUtils; import javax.servlet.http.HttpServletResponse; import java.net.URLEncoder; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -168,7 +165,7 @@ public class PatrolRoutineWorkServiceImpl extends BaseServiceImpl Date: Fri, 18 Feb 2022 15:53:12 +0800 Subject: [PATCH 73/87] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=20-=20?= =?UTF-8?q?=E5=B1=85=E6=B0=91=E5=AF=BC=E5=85=A5=EF=BC=9A=E9=99=84=E5=8A=A0?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E8=A1=A8=E4=B8=AD=EF=BC=8C=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E4=B8=BA=E6=96=B0=E5=A2=9E=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=9A=84=E9=80=BB=E8=BE=91=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/service/impl/IcResiUserImportServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java index 18cd3cd6ec..0d3332d785 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java @@ -1209,7 +1209,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res String userCateRedisKey = RedisKeys.icResiImportResiCategoryKey(newlyOrChangedResi.get().getImportTag(), "add", icResiId); Map < String, Object > addUserMap = redisUtils.hGetAll(userCateRedisKey); - if (addUserMap != null) { + if (addUserMap != null && addUserMap.size() > 0) { //说明是新增居民 ResiImportCategoryData newResiCateData = ConvertUtils.mapToEntity(addUserMap, ResiImportCategoryData.class); newResiCateData.getCategories().put(columnName, "1"); From 9304fe287101550a6ec3d4d7a5bd72240f3dacf3 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Fri, 18 Feb 2022 19:45:10 +0800 Subject: [PATCH 74/87] =?UTF-8?q?/epmetuser/patrolroutinework/add=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/PatrolRoutineWorkServiceImpl.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java index 28504e16d4..89b8143bf8 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java @@ -159,13 +159,13 @@ public class PatrolRoutineWorkServiceImpl extends BaseServiceImpl Date: Mon, 21 Feb 2022 13:42:00 +0800 Subject: [PATCH 75/87] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=201.=E5=B1=85?= =?UTF-8?q?=E6=B0=91=E5=AF=BC=E5=85=A5=EF=BC=9Aoptions=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/IcResiUserImportServiceImpl.java | 73 ++++++++++++++----- .../service/impl/IcResiUserServiceImpl.java | 4 +- 2 files changed, 58 insertions(+), 19 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java index 0d3332d785..40b6d3b5bc 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java @@ -87,10 +87,12 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res /** * key: itemId * value: - * key: option的中文 - * value: options的英文key,也可能是数据id + * key: 当前item的super itemId + * value: superItem的子item列表 + * key: option的中文 + * value: options的英文key,也可能是数据id */ - Cache> itemIdAndOptionsCache = CacheBuilder.newBuilder().maximumSize(500).build(); + Cache>> itemIdAndOptionsCache = CacheBuilder.newBuilder().maximumSize(500).build(); @Autowired @@ -661,7 +663,9 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res for (Map.Entry itemIdAndColumnWrapper : itemIdAndColumnWrappers.entrySet()) { + String itemId = itemIdAndColumnWrapper.getKey(); ColumnWrapper columnWrapper = itemIdAndColumnWrapper.getValue(); + if ("input".equals(columnWrapper.getItemType()) || "textarea".equals(columnWrapper.getItemType()) || "datepicker".equals(columnWrapper.getItemType()) @@ -687,13 +691,37 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res columnWrapper.setColValue(colValue); } else { // remote类型。优先从缓存取 - Map optionsOfItem = itemIdAndOptionsCache.getIfPresent(itemIdAndColumnWrapper.getKey()); - if (optionsOfItem == null || optionsOfItem.size() == 0) { - optionsOfItem = listRemoteOptions(itemIdAndColumnWrappers, columnWrapper.getOptionSourceValue(), currUserAgencyId, "saveorupdate"); - itemIdAndOptionsCache.put(itemIdAndColumnWrapper.getKey(), optionsOfItem); + String fullUri = columnWrapper.getOptionSourceValue(); + String[] uriParts = splitOptionSourceUrl(fullUri); + String pureUri = uriParts[0]; + String superItemId = uriParts[1]; + String superColumValue; + + if (StringUtils.isNotBlank(superItemId)) { + superColumValue = itemIdAndColumnWrappers.get(superItemId).getColValue(); + } else { + superColumValue = "-"; + } + + Map> superOptions = itemIdAndOptionsCache.getIfPresent(itemId); + if (superOptions != null && superOptions.size() > 0) { + Map options = superOptions.get(superColumValue); + if (options == null || options.size() == 0) { + options = listRemoteOptions(pureUri, superItemId, itemIdAndColumnWrappers, currUserAgencyId, "saveorupdate"); + superOptions.put(superColumValue, options); + } + + String colValue = options.get(cellContent); + columnWrapper.setColValue(colValue); + } else { + Map options = listRemoteOptions(pureUri, superItemId, itemIdAndColumnWrappers, currUserAgencyId, "saveorupdate"); + superOptions = new HashMap<>(); + superOptions.put(superColumValue, options); + itemIdAndOptionsCache.put(itemId, superOptions); + + String colValue = options.get(cellContent); + columnWrapper.setColValue(colValue); } - String colValue = optionsOfItem.get(cellContent); - columnWrapper.setColValue(colValue); } } else if ("checkbox".equals(columnWrapper.getItemType())) { String checkBoxColValue = getCheckBoxColValue(columnWrapper, row, checkBoxOptionColumnIdxAndLabel); @@ -899,28 +927,37 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res } /** - * 远程获取options + * 分割sourceUrl为纯url和父itemId * @param fullUri - * @return + * @return [ pureUri, cascadeItemId(父itemId) ] */ - public Map listRemoteOptions(Map columnWrappers, String fullUri, String currUserAgencyId, String purpose) { + public String[] splitOptionSourceUrl(String fullUri) { String pureUri = null; String cascadeItemId = null; - ColumnWrapper cascadeItemColumnWrapper = null; if (fullUri.indexOf(StrConstant.QUESTION_MARK) != -1) { String[] uriParts = fullUri.split(StrConstant.QUESTION_MARK_TRANSFER); pureUri = uriParts[0]; cascadeItemId = uriParts[1]; - - // 根据uri上的id,找到关联的itemid,从而找到关联的item的值 - if (columnWrappers != null){ - cascadeItemColumnWrapper = columnWrappers.get(cascadeItemId); - } } else { pureUri = fullUri; } + return new String[] { pureUri, cascadeItemId }; + } + + /** + * 远程获取options + * @return + */ + public Map listRemoteOptions(String pureUri, String cascadeItemId, Map columnWrappers, String currUserAgencyId, String purpose) { + ColumnWrapper cascadeItemColumnWrapper = null; + + // 根据uri上的id,找到关联的itemid,从而找到关联的item的值 + if (columnWrappers != null && StringUtils.isNotBlank(cascadeItemId)){ + cascadeItemColumnWrapper = columnWrappers.get(cascadeItemId); + } + List options = null; switch (pureUri) { diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java index 5709333e9b..34aa78df40 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java @@ -962,7 +962,9 @@ public class IcResiUserServiceImpl extends BaseServiceImpl remoteOptions = icResiUserImportService.listRemoteOptions(columnWrappers, e.getOptionSourceValue(), currentStaffAgencyId, "query"); + String[] parts = icResiUserImportService.splitOptionSourceUrl(e.getOptionSourceValue()); + + Map remoteOptions = icResiUserImportService.listRemoteOptions(parts[0], parts[1], columnWrappers, currentStaffAgencyId, "query"); if (FormItemTypeEnum.CHECKBOX.getCode().equals(e.getItemType())) { remoteOptions.forEach((label, value) -> map.put(value, vauleStr.contains(value) ? "是" : "否")); } else if (FormItemTypeEnum.SELECT.getCode().equals(e.getItemType())) { From 6230c5dc49b5b10aafc4b433f8ce868aa87e7412 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Mon, 21 Feb 2022 14:49:42 +0800 Subject: [PATCH 76/87] =?UTF-8?q?=E5=BE=AE=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/service/impl/IcResiUserImportServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java index 40b6d3b5bc..348766de19 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java @@ -15,6 +15,7 @@ import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.feign.ResultDataResolver; @@ -516,7 +517,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res } catch (Exception e) { String errorMsg; - if (e instanceof RenException) { + if (e instanceof RenException | e instanceof EpmetException) { errorMsg = e.getMessage(); } else { errorMsg = "未知系统错误"; From 45775fc7d1f737747f846dadeb71baa782ad6e22 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Wed, 23 Feb 2022 15:12:45 +0800 Subject: [PATCH 77/87] =?UTF-8?q?=E4=BE=8B=E8=A1=8C=E5=B7=A5=E4=BD=9Cbugfi?= =?UTF-8?q?x?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/PatrolRoutineWorkServiceImpl.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java index bc850e1d2c..61c70601d6 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java @@ -35,7 +35,6 @@ import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; import com.epmet.commons.tools.redis.common.bean.GridInfoCache; import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.SystemMessageType; @@ -68,13 +67,13 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.servlet.http.HttpServletResponse; -import java.beans.Encoder; import java.net.URLEncoder; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.stream.Collectors; -import static com.epmet.commons.tools.utils.DateUtils.DATE_PATTERN; - /** * 巡查例行工作 * @@ -106,7 +105,7 @@ public class PatrolRoutineWorkServiceImpl extends BaseServiceImpl Date: Wed, 23 Feb 2022 15:18:28 +0800 Subject: [PATCH 78/87] =?UTF-8?q?=E4=BE=8B=E8=A1=8C=E5=B7=A5=E4=BD=9Cbugfi?= =?UTF-8?q?x1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java index ccf2ed67ca..df3d1c3418 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java @@ -74,10 +74,7 @@ import org.springframework.util.CollectionUtils; import javax.servlet.http.HttpServletResponse; import java.net.URLEncoder; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** From 0804b61d83cb7bcc13fac034b0e72b9459044342 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Wed, 23 Feb 2022 16:48:17 +0800 Subject: [PATCH 79/87] =?UTF-8?q?user=EF=BC=8Corg?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/service/impl/CustomerStaffGridServiceImpl.java | 5 +++-- .../java/com/epmet/service/impl/StaffRoleServiceImpl.java | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerStaffGridServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerStaffGridServiceImpl.java index 184a4b7acd..c744a1b0a2 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerStaffGridServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerStaffGridServiceImpl.java @@ -176,8 +176,9 @@ public class CustomerStaffGridServiceImpl extends BaseServiceImpl(); } - gridStaff.stream().forEach(g -> data.stream().filter(d -> g.getStaffId().equals(d.getStaffId()) && g.getGridId().equals(d.getGridId())).forEach(d -> g.setMobile(d.getMobile()))); - return gridStaff.stream().filter(g -> StringUtils.isNotBlank(g.getMobile())).collect(Collectors.toList()); + /*gridStaff.stream().forEach(g -> data.stream().filter(d -> g.getStaffId().equals(d.getStaffId()) && g.getGridId().equals(d.getGridId())).forEach(d -> g.setMobile(d.getMobile()))); + return gridStaff.stream().filter(g -> StringUtils.isNotBlank(g.getMobile())).collect(Collectors.toList());*/ + return data; } /** diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StaffRoleServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StaffRoleServiceImpl.java index c5f75b2222..6b69b9506b 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StaffRoleServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StaffRoleServiceImpl.java @@ -138,8 +138,8 @@ public class StaffRoleServiceImpl extends BaseServiceImpl(); } List userIds = forms.stream().map(m -> m.getStaffId()).distinct().collect(Collectors.toList()); - List result = baseDao.staffGridRoleByIds(userIds); - /*List result = baseDao.staffGridRole(forms);*/ +// List result = baseDao.staffGridRoleByIds(userIds); + List result = baseDao.staffGridRole(forms); if (CollectionUtils.isEmpty(result)){ return new ArrayList<>(); } From 1d58c4e52bfdc92558e3b44ac9178e404f172812 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Thu, 24 Feb 2022 11:17:07 +0800 Subject: [PATCH 80/87] =?UTF-8?q?=E6=A0=B9=E6=8D=AEstaffId=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E7=94=A8=E6=88=B7=E5=9F=BA=E6=9C=AC=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=BF=94=E5=9B=9E=E5=AE=A2=E6=88=B7=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/dto/result/BasicInfoResultDTO.java | 3 ++- .../service/impl/CustomerStaffServiceImpl.java | 14 +++++++++++++- .../src/main/resources/mapper/CustomerStaffDao.xml | 1 + 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/BasicInfoResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/BasicInfoResultDTO.java index 2877fc47ed..5fff4bc298 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/BasicInfoResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/BasicInfoResultDTO.java @@ -1,7 +1,6 @@ package com.epmet.dto.result; import lombok.Data; -import lombok.NoArgsConstructor; import java.io.Serializable; @@ -13,6 +12,8 @@ import java.io.Serializable; public class BasicInfoResultDTO implements Serializable { private static final long serialVersionUID = 8987281818368677411L; + private String customerId; + private String customerName; /** * 工作人员id */ diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/CustomerStaffServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/CustomerStaffServiceImpl.java index 418b9dfbc6..4bf02513b6 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/CustomerStaffServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/CustomerStaffServiceImpl.java @@ -765,7 +765,19 @@ public class CustomerStaffServiceImpl extends BaseServiceImpl customerResult = operCrmOpenFeignClient.getCustomerInfo(dto); + if (!customerResult.success()) { + throw new RenException(customerResult.getCode(), customerResult.getMsg()); + } + if (null != customerResult.getData()) { + result.setCustomerName(customerResult.getData().getCustomerName()); + } + + return result; } @Override diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/CustomerStaffDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/CustomerStaffDao.xml index f441f419af..1448824323 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/CustomerStaffDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/CustomerStaffDao.xml @@ -341,6 +341,7 @@ SELECT - CUSTOMER_ID, user_id AS "staffId", real_name AS "realName", mobile AS "mobile", From 7589b5a6b2d771bd42416fd8ce445bb058ce0edb Mon Sep 17 00:00:00 2001 From: jianjun Date: Thu, 24 Feb 2022 17:23:19 +0800 Subject: [PATCH 82/87] =?UTF-8?q?=E5=AF=BC=E8=88=AA=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/commons/tools/redis/RedisKeys.java | 3 +++ .../src/main/java/com/epmet/redis/GovMenuRedis.java | 11 ++++++++++- .../com/epmet/service/impl/GovMenuServiceImpl.java | 9 ++++++++- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java index fe03008b81..876cc61ccd 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java @@ -733,4 +733,7 @@ public class RedisKeys { return rootPrefix.concat("temporary:").concat("temporaryResult:").concat(customerId).concat(":").concat(userId); } + public static String getCustomerMenuList(String customerId, Integer type) { + return rootPrefix.concat("oper:access:nav:customerId:").concat(customerId)+type; + } } diff --git a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/redis/GovMenuRedis.java b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/redis/GovMenuRedis.java index 361d6c3014..8f6a61da6c 100644 --- a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/redis/GovMenuRedis.java +++ b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/redis/GovMenuRedis.java @@ -71,4 +71,13 @@ public class GovMenuRedis { return (Set)redisUtils.get(key); } -} \ No newline at end of file + public void setCustomerMenuList(String customerId, Integer type, List govMenuDTOS) { + String key = RedisKeys.getCustomerMenuList(customerId, type); + redisUtils.set(key,govMenuDTOS,RedisUtils.DEFAULT_EXPIRE); + } + + public List getCustomerMenuList(String customerId, Integer type) { + String key = RedisKeys.getCustomerMenuList(customerId, type); + return (List)redisUtils.get(key); + } +} diff --git a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/GovMenuServiceImpl.java b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/GovMenuServiceImpl.java index 4e4c142b55..8eb3bcf5e2 100644 --- a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/GovMenuServiceImpl.java +++ b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/GovMenuServiceImpl.java @@ -42,6 +42,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import java.util.*; @@ -208,9 +209,15 @@ public class GovMenuServiceImpl extends BaseServiceImpl getCustomerMenuList(String customerId, Integer type) { + List govMenuDTOS = govMenuRedis.getCustomerMenuList(customerId,type); + if (!CollectionUtils.isEmpty(govMenuDTOS)){ + return govMenuDTOS; + } List menuList = baseDao.getCustomerMenuList(customerId, type, HttpContextUtils.getLanguage()); List dtoList = ConvertUtils.sourceToTarget(menuList, GovMenuDTO.class); - return TreeUtils.buildTree(dtoList); + govMenuDTOS = TreeUtils.buildTree(dtoList); + govMenuRedis.setCustomerMenuList(customerId,type,govMenuDTOS); + return govMenuDTOS; } @Override From 5d9828085ccbf592f44f973282de0a5354421b4b Mon Sep 17 00:00:00 2001 From: jianjun Date: Fri, 25 Feb 2022 10:32:13 +0800 Subject: [PATCH 83/87] =?UTF-8?q?=E9=85=8D=E7=BD=AEpc=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E6=97=B6=20=E5=88=A0=E9=99=A4=E7=BC=93?= =?UTF-8?q?=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/commons/tools/redis/RedisKeys.java | 2 +- .../com/epmet/redis/GovCustomerMenuRedis.java | 57 ++++++++++++++++--- .../java/com/epmet/redis/GovMenuRedis.java | 10 ---- .../impl/GovCustomerMenuServiceImpl.java | 6 +- .../service/impl/GovMenuServiceImpl.java | 8 +-- 5 files changed, 59 insertions(+), 24 deletions(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java index 876cc61ccd..0798627046 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java @@ -734,6 +734,6 @@ public class RedisKeys { } public static String getCustomerMenuList(String customerId, Integer type) { - return rootPrefix.concat("oper:access:nav:customerId:").concat(customerId)+type; + return rootPrefix.concat("oper:access:nav:customerId:").concat(customerId).concat(":type:")+type; } } diff --git a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/redis/GovCustomerMenuRedis.java b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/redis/GovCustomerMenuRedis.java index 2333a6bd48..3cc19b8ae2 100644 --- a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/redis/GovCustomerMenuRedis.java +++ b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/redis/GovCustomerMenuRedis.java @@ -17,31 +17,72 @@ package com.epmet.redis; +import com.epmet.commons.tools.redis.RedisKeys; import com.epmet.commons.tools.redis.RedisUtils; +import com.epmet.dto.GovMenuDTO; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.util.List; + /** * 客户菜单配置表 * * @author generator generator@elink-cn.com * @since v1.0.0 2021-03-16 */ +@Slf4j @Component public class GovCustomerMenuRedis { @Autowired private RedisUtils redisUtils; - - public void delete(Object[] ids) { - + /** + * desc:保存客户菜单缓存 + * @param customerId + * @param type + * @see com.epmet.enums.MenuTypeEnum + */ + public void setCustomerMenuList(String customerId, Integer type, List govMenuDTOS) { + if (checkParam(customerId, type)) { + String key = RedisKeys.getCustomerMenuList(customerId, type); + redisUtils.set(key, govMenuDTOS, RedisUtils.DEFAULT_EXPIRE); + } + } + /** + * desc:获取客户菜单缓存 + * @param customerId + * @param type + * @see com.epmet.enums.MenuTypeEnum + */ + public List getCustomerMenuList(String customerId, Integer type) { + if (checkParam(customerId, type)) { + String key = RedisKeys.getCustomerMenuList(customerId, type); + return (List) redisUtils.get(key); + } + return null; } - public void set(){ + /** + * desc:删除客户菜单缓存 + * @param customerId + * @param type + * @see com.epmet.enums.MenuTypeEnum + */ + public void delCustomerMenu(String customerId, Integer type) { + if (checkParam(customerId, type)) { + String key = RedisKeys.getCustomerMenuList(customerId, type); + redisUtils.delete(key); + } } - public String get(String id){ - return null; + private boolean checkParam(String customerId, Integer type) { + if (StringUtils.isBlank(customerId) || type == null){ + log.warn("checkParam fail, param is null"); + return false; + } + return true; } - -} \ No newline at end of file +} diff --git a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/redis/GovMenuRedis.java b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/redis/GovMenuRedis.java index 8f6a61da6c..b96405de2e 100644 --- a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/redis/GovMenuRedis.java +++ b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/redis/GovMenuRedis.java @@ -70,14 +70,4 @@ public class GovMenuRedis { String key = RedisKeys.getUserPermissionsKey(userId, app, client); return (Set)redisUtils.get(key); } - - public void setCustomerMenuList(String customerId, Integer type, List govMenuDTOS) { - String key = RedisKeys.getCustomerMenuList(customerId, type); - redisUtils.set(key,govMenuDTOS,RedisUtils.DEFAULT_EXPIRE); - } - - public List getCustomerMenuList(String customerId, Integer type) { - String key = RedisKeys.getCustomerMenuList(customerId, type); - return (List)redisUtils.get(key); - } } diff --git a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/GovCustomerMenuServiceImpl.java b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/GovCustomerMenuServiceImpl.java index 8d7ef26acc..95e4f2f8d2 100644 --- a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/GovCustomerMenuServiceImpl.java +++ b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/GovCustomerMenuServiceImpl.java @@ -20,14 +20,15 @@ package com.epmet.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.dao.GovCustomerMenuDao; import com.epmet.dto.GovCustomerMenuDTO; import com.epmet.dto.form.MenuConfigFormDTO; import com.epmet.entity.GovCustomerMenuEntity; +import com.epmet.enums.MenuTypeEnum; import com.epmet.redis.GovCustomerMenuRedis; import com.epmet.service.GovCustomerMenuService; import org.apache.commons.lang3.StringUtils; @@ -105,6 +106,7 @@ public class GovCustomerMenuServiceImpl extends BaseServiceImpl govCustomerMenuRedis.delCustomerMenu(customerId, MenuTypeEnum.MENU.value())); } @Override diff --git a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/GovMenuServiceImpl.java b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/GovMenuServiceImpl.java index 8eb3bcf5e2..eb9467e926 100644 --- a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/GovMenuServiceImpl.java +++ b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/GovMenuServiceImpl.java @@ -33,7 +33,7 @@ import com.epmet.dao.GovMenuDao; import com.epmet.dto.GovMenuDTO; import com.epmet.entity.GovMenuEntity; import com.epmet.enums.MenuTypeEnum; -import com.epmet.feign.EpmetUserFeignClient; +import com.epmet.redis.GovCustomerMenuRedis; import com.epmet.redis.GovMenuRedis; import com.epmet.service.*; import org.apache.commons.lang3.StringUtils; @@ -58,7 +58,7 @@ public class GovMenuServiceImpl extends BaseServiceImpl getCustomerMenuList(String customerId, Integer type) { - List govMenuDTOS = govMenuRedis.getCustomerMenuList(customerId,type); + List govMenuDTOS = govCustomerMenuRedis.getCustomerMenuList(customerId,type); if (!CollectionUtils.isEmpty(govMenuDTOS)){ return govMenuDTOS; } List menuList = baseDao.getCustomerMenuList(customerId, type, HttpContextUtils.getLanguage()); List dtoList = ConvertUtils.sourceToTarget(menuList, GovMenuDTO.class); govMenuDTOS = TreeUtils.buildTree(dtoList); - govMenuRedis.setCustomerMenuList(customerId,type,govMenuDTOS); + govCustomerMenuRedis.setCustomerMenuList(customerId,type,govMenuDTOS); return govMenuDTOS; } From 321a7bcb43be195bad2eef71a7b61369b08bf1f6 Mon Sep 17 00:00:00 2001 From: jianjun Date: Fri, 25 Feb 2022 14:37:54 +0800 Subject: [PATCH 84/87] =?UTF-8?q?=E6=97=A5=E5=BF=97=E7=BA=A7=E5=88=AB?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/openapi/scan/interceptor/ScanApiAuthInterceptor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-openapi/epmet-openapi-scan/src/main/java/com/epmet/openapi/scan/interceptor/ScanApiAuthInterceptor.java b/epmet-openapi/epmet-openapi-scan/src/main/java/com/epmet/openapi/scan/interceptor/ScanApiAuthInterceptor.java index 6ce851a45e..868c6e0185 100644 --- a/epmet-openapi/epmet-openapi-scan/src/main/java/com/epmet/openapi/scan/interceptor/ScanApiAuthInterceptor.java +++ b/epmet-openapi/epmet-openapi-scan/src/main/java/com/epmet/openapi/scan/interceptor/ScanApiAuthInterceptor.java @@ -33,7 +33,7 @@ public class ScanApiAuthInterceptor implements HandlerInterceptor { String ip = IpUtils.getIpAddr(request); SetOperations setOperations = redisTemplate.opsForSet(); if (!setOperations.isMember(RedisKeys.getWhiteList(), ip)) { - log.warn("preHandle ip:{} is not in whitelist", ip); + log.error("preHandle ip:{} 不在白名单内", ip); String result = JSON.toJSONString(new Result<>().error(EpmetErrorCode.ERR401.getCode(), EpmetErrorCode.ERR401.getMsg())); responseJson(response, result); return false; From 9919509c6fb70966943c2253c07ccf2649430551 Mon Sep 17 00:00:00 2001 From: jianjun Date: Fri, 25 Feb 2022 15:23:00 +0800 Subject: [PATCH 85/87] =?UTF-8?q?=E6=8C=AA=E8=B5=B0=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/commons/tools/filter/LogMsgSendFilter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/filter/LogMsgSendFilter.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/filter/LogMsgSendFilter.java index d0ba1f61de..9f6be36819 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/filter/LogMsgSendFilter.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/filter/LogMsgSendFilter.java @@ -66,6 +66,7 @@ public class LogMsgSendFilter extends LevelFilter { } if (StringUtils.isNotBlank(activeEnv)) { + stringBuilder.append("告警环境:").append(activeEnv); stringBuilder.append("\n"); } @@ -112,7 +113,6 @@ public class LogMsgSendFilter extends LevelFilter { if (!flag) { logger.warn("msgSender.sendMsg fail,param:{}", stringBuilder.toString()); } - stringBuilder.append("告警环境:").append(activeEnv); } catch (Exception e) { logger.warn("decide exception", e); } From a6ca2de18f549edc1e04c41a54d654adfc04bcde Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Fri, 25 Feb 2022 17:28:36 +0800 Subject: [PATCH 86/87] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=BB=93=E6=A1=88?= =?UTF-8?q?=E6=97=B6=E5=8F=AA=E6=9B=B4=E6=96=B0=E9=A1=B9=E7=9B=AE=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E4=B8=8E=E8=80=97=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ProjectServiceImpl.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java index e6e70e2c73..6a591d9e8d 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java @@ -453,10 +453,12 @@ public class ProjectServiceImpl extends BaseServiceImpl Date: Fri, 25 Feb 2022 17:37:22 +0800 Subject: [PATCH 87/87] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=8F=98=E5=8A=A8=20up?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/mq/ProjectChangedCustomListener.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/mq/ProjectChangedCustomListener.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/mq/ProjectChangedCustomListener.java index c4c0138ad0..a096dc3307 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/mq/ProjectChangedCustomListener.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/mq/ProjectChangedCustomListener.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; import com.epmet.commons.rocketmq.constants.MQUserPropertys; import com.epmet.commons.rocketmq.messages.DisputeProcessMQMsg; import com.epmet.commons.rocketmq.messages.ProjectChangedMQMsg; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.distributedlock.DistributedLock; import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.RenException; @@ -111,12 +112,19 @@ public class ProjectChangedCustomListener implements MessageListenerConcurrently String customerId = msgObj.getCustomerId(); distributedLock = SpringContextUtils.getBean(DistributedLock.class); lock = distributedLock.getLock(String.format("lock:project_changed:%s:%s", customerId, msgObj.getProjectId()) - ,30L, 30L, TimeUnit.SECONDS); + ,60L, 60L, TimeUnit.SECONDS); if (StringUtils.isBlank(customerId)){ logger.error("consumer project_changed fail,msg:{}",customerId); return; } + //睡一秒 要不然那边执行不完 + try { + Thread.sleep(NumConstant.ONE_THOUSAND); + } catch (InterruptedException e) { + log.error("consumeMessage exception",e); + } + ExtractOriginFormDTO extractOriginFormDTO = new ExtractOriginFormDTO(); extractOriginFormDTO.setCustomerId(customerId);