diff --git a/epmet-admin/epmet-admin-server/src/main/resources/db/migration/V0.0.9__add_data_type.sql b/epmet-admin/epmet-admin-server/src/main/resources/db/migration/V0.0.9__add_data_type.sql new file mode 100644 index 0000000000..d4aebf1828 --- /dev/null +++ b/epmet-admin/epmet-admin-server/src/main/resources/db/migration/V0.0.9__add_data_type.sql @@ -0,0 +1,10 @@ +INSERT INTO `epmet_admin`.`sys_dict_type` (`id`, `dict_type`, `dict_name`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1000000000000000012', 'grid_type', '网格类型', '', 12, 0, 0, '', '2021-12-23 18:23:27', '', '2021-12-23 18:23:27'); + +INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1000000000000000300', 1000000000000000012, '党政机关', '0', '0', '', 0, 0, 0, '', '2021-12-23 18:39:18', '', '2021-12-23 18:39:18'); +INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1000000000000000301', 1000000000000000012, '企业', '1', '0', '', 0, 0, 0, '', '2021-12-23 18:39:18', '', '2021-12-23 18:39:18'); +INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1000000000000000302', 1000000000000000012, '园区', '2', '0', '', 4, 0, 0, '', '2021-12-23 18:39:18', '', '2021-12-23 18:39:18'); +INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1000000000000000303', 1000000000000000012, '商圈', '3', '0', '', 4, 0, 0, '', '2021-12-23 18:39:18', '', '2021-12-23 18:39:18'); +INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1000000000000000304', 1000000000000000012, '市场', '4', '0', '', 4, 0, 0, '', '2021-12-23 18:39:18', '', '2021-12-23 18:39:18'); +INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1000000000000000305', 1000000000000000012, '景区', '5', '0', '', 4, 0, 0, '', '2021-12-23 18:39:18', '', '2021-12-23 18:39:18'); +INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1000000000000000306', 1000000000000000012, '医院', '6', '0', '', 4, 0, 0, '', '2021-12-23 18:39:18', '', '2021-12-23 18:39:18'); +INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1000000000000000307', 1000000000000000012, '学校', '7', '0', '', 4, 0, 0, '', '2021-12-23 18:39:18', '', '2021-12-23 18:39:18'); diff --git a/epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/handler/FieldMetaObjectHandler.java b/epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/handler/FieldMetaObjectHandler.java index e4dde4f2fa..3c0b35ff4d 100644 --- a/epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/handler/FieldMetaObjectHandler.java +++ b/epmet-commons/epmet-commons-mybatis/src/main/java/com/epmet/commons/mybatis/handler/FieldMetaObjectHandler.java @@ -147,10 +147,12 @@ public class FieldMetaObjectHandler implements MetaObjectHandler { updatedTime = metaObject.getValue(FieldConstant.UPDATED_TIME_HUMP); } if (updatedTime == null) { - if(metaObject.hasGetter(FieldConstant.CREATED_TIME_HUMP)) + if(metaObject.hasGetter(FieldConstant.CREATED_TIME_HUMP)) { updatedTime = metaObject.getValue(FieldConstant.CREATED_TIME_HUMP); - if(updatedTime == null) + } + if(updatedTime == null) { updatedTime = new Date(); + } } return updatedTime; } @@ -163,11 +165,13 @@ public class FieldMetaObjectHandler implements MetaObjectHandler { } if (value == null) { - if(metaObject.hasGetter(FieldConstant.CREATED_BY_HUMP)) + if(metaObject.hasGetter(FieldConstant.CREATED_BY_HUMP)) { value = metaObject.getValue(FieldConstant.CREATED_BY_HUMP); + } - if(null == value) + if(null == value) { value = Optional.ofNullable(loginUserUtil.getLoginUserId()).orElse(Constant.APP_USER_FLAG); + } } return value; diff --git a/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java b/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java index 400eca1d51..9bbd564ea2 100644 --- a/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java +++ b/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java @@ -41,10 +41,24 @@ public interface ConsomerGroupConstants { */ String PROJECT_OPERATION_LOG_GROUP = "project_operation_log_group"; /** - * 积分操作消费组 + * 积分操作日志消费组 */ String POINT_OPERATION_LOG_GROUP = "point_operation_log_group"; + /** + * 爱心互助积分操作消费组 + */ + String EPMET_HEART_POINT_OPERATION_GROUP = "epmet_heart_point_operation_group"; + /** + * 楼院小组积分操作消费组 + */ + String RESI_GROUP_POINT_OPERATION_GROUP = "resi_group_point_operation_group"; + + /** + * 社区服务(原居民需求)积分操作消费组 + */ + String COMMUNITY_SERVICE_POINT_OPERATION_GROUP = "community_service_point_operation_group"; + /** * 开放的对接数据(中间库) 组织变更事件监听器分组 */ @@ -73,5 +87,5 @@ public interface ConsomerGroupConstants { /** * 需求完成,如果服务方是区域化党建单位,重新计算这个单位的满意度 */ - String CAL_PARTY_UNIT_SATISFACTION = "cal_party_unit_satisfaction"; + String USER_DEMAND_FINISH_GROUP = "user_demand_finish_group"; } diff --git a/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java b/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java index e11400fef3..f4c2d45e89 100644 --- a/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java +++ b/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java @@ -55,7 +55,23 @@ public interface TopicConstants { String IC_RESI_USER = "ic_resi_user"; /** - * 需求完成,如果服务方是区域化党建单位,重新计算这个单位的满意度 + * 需求完成 + * 1、如果服务方是区域化党建单位,重新计算这个单位的满意度 */ - String CAL_PARTY_UNIT_SATISFACTION = "cal_party_unit_satisfaction"; + String USER_DEMAND = "user_demand"; + + /** + * 爱心互助 + */ + String EPMET_HEART = "epmet_heart"; + + /** + * 楼院小组 + */ + String RESI_GROUP = "resi_group"; + + /** + * 社区服务,原居民需求 + */ + String COMMUNITY_SERVICE="community_service"; } diff --git a/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/CalPartyUnitSatisfactionFormDTO.java b/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/CalPartyUnitSatisfactionFormDTO.java deleted file mode 100644 index bfaf63703a..0000000000 --- a/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/CalPartyUnitSatisfactionFormDTO.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.epmet.commons.rocketmq.messages; - - -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import java.io.Serializable; - -/** - * 需求完成,如果服务方是区域化党建单位,重新计算这个单位的满意度,或者直接计算整个客户 - */ -@Data -public class CalPartyUnitSatisfactionFormDTO implements Serializable { - public interface AddUserInternalGroup { - } - @NotBlank(message = "客户id不能为空",groups = AddUserInternalGroup.class) - private String customerId; - private String partyUnitId; -} diff --git a/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/ServerSatisfactionCalFormDTO.java b/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/ServerSatisfactionCalFormDTO.java new file mode 100644 index 0000000000..998d1523cb --- /dev/null +++ b/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/ServerSatisfactionCalFormDTO.java @@ -0,0 +1,28 @@ +package com.epmet.commons.rocketmq.messages; + + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 需求完成,如果服务方是区域化党建单位,重新计算这个单位的满意度,或者直接计算整个客户 + */ +@Data +public class ServerSatisfactionCalFormDTO implements Serializable { + public interface AddUserInternalGroup { + } + @NotBlank(message = "客户id不能为空",groups = AddUserInternalGroup.class) + private String customerId; + /** + * 服务方id:可以值区域化党建单位id + * 后面也可以是社会组织、社区自组织id... + */ + private String serverId; + /** + * 服务方类型:志愿者:volunteer;社会组织:social_org;社区自组织:community_org;区域党建单位:party_unit; + */ + @NotBlank(message = "serviceType不能为空",groups = AddUserInternalGroup.class) + private String serviceType; +} diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/MqConstant.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/MqConstant.java index 8ccaba98b4..8d458c4a60 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/MqConstant.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/MqConstant.java @@ -17,4 +17,6 @@ public interface MqConstant { * 减分标识 minus */ String MINUS="minus"; + + String SOURCE_TYPE_DEMAND="demand"; } diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/eventmsg/BasePointEventMsg.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/eventmsg/BasePointEventMsg.java index 9235fe77a7..ff2849d331 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/eventmsg/BasePointEventMsg.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/eventmsg/BasePointEventMsg.java @@ -92,4 +92,6 @@ public class BasePointEventMsg implements Serializable { private String eventTag; private String eventClass; + private String objectId; + private String eventName; } diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/DictTypeEnum.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/DictTypeEnum.java index 39f80d7910..7afc85aab1 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/DictTypeEnum.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/DictTypeEnum.java @@ -21,6 +21,7 @@ public enum DictTypeEnum { USER_DEMAND_SERVICE_TYPE("user_demand_service_type","居民需求服务方类型",10), AGE_GROUP("age_group", "年龄范围", 11), PATROL_WORK_TYPE("patrol_work_type", "例行工作分类", 13), + GRID_TYPE("grid_type", "网格类型", 12), ; private final String code; diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/EventEnum.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/EventEnum.java index 44d229ec3b..3cccd74d7a 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/EventEnum.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/EventEnum.java @@ -18,6 +18,7 @@ public enum EventEnum { SHIFT_TOPIC_TO_ISSUE("shift_topic_to_issue","resi_group","转话题为议题(将自建小组中话题转为议题)"), TOPIC_SHIFTED_TO_PROJECT("topic_to_project","resi_group","话题被转为项目"), LEADER_RESOLVE_TOPIC("leader_resolve_topic","resi_group","组长解决组内话题"), + FINISH_USER_DEMAND("finish_user_demand","community_service","服务完成"), ; private String eventClass; diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java index 0f70c9ecbd..0b6f4d9e72 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java @@ -85,14 +85,6 @@ public enum EpmetErrorCode { BUILDING_NAME_EXITED(8215,"楼栋名称已存在"), DOOR_NAME_EXITED(8216,"门牌号已存在"), NEIGHBOOR_NAME_EXITED(8217,"小区名称已存在"), - DEMAND_NAME_EXITED(8218, "分类名称已存在"), - DEMAND_CAN_NOT_CANCEL(8219, "需求已完成,不可取消"), - DEMAND_CAN_NOT_ASSIGN(8220, "当前状态,不可指派"), - DEMAND_CAN_NOT_FINISH(8221, "当前状态,不能评价"), - DEMAND_FINISHED(8222,"需求已完成"), - DEMAND_CAN_NOT_UPDATE(8223,"当前状态,不可更新需求"), - DEMAND_NOT_EXITS(8224,"需求不存在"), - DEMAND_SERVICE_NOT_EXITS(8225,"服务记录不存在"), REQUIRE_PERMISSION(8301, "您没有足够的操作权限"), THIRD_PLAT_REQUEST_ERROR(8302, "请求第三方平台错误"), @@ -121,6 +113,7 @@ public enum EpmetErrorCode { CAN_NOT_REPLY_RESI_EVENT_SELF(8606,"当前事件待处理,不可回复"), RESI_EVENT_CAN_NOT_CLOSE_CASE(8607,"事件尚未处理,请处理完成后进行办结"), RESI_EVENT_SHIFT_PROJECT(8608,"事件已立项,请勿重复操作"), + RESI_EVENT_SUBMIT(8616,"事件内容和语音不能同时为空"), PLEASE_CHOOSE_RECEIVER(8609,"请选择接收人"), REPLY_INFO_CONTENT_NOT_NULL(8610,"回复内容不能为空"), @@ -164,6 +157,7 @@ public enum EpmetErrorCode { COMMUNITY_SELF_ORGANIZATION_LIST_REPART_ERROR(8530, "%s社区自组织名称已存在"), MATTER_NAME_EXISTS_APPOINTMENT_ERROR(8532, "存在重复预约事项"), + ERROR_DATE(8533, "不合理日期"), // 该错误不会提示给前端,只是后端传输错误信息用。 ACCESS_SQL_FILTER_MISSION_ARGS(8701, "缺少生成权限过滤SQL所需参数"), diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java index 1de1fce475..32cba063c5 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java @@ -193,7 +193,9 @@ public class RedisUtils { public List lrange(String key,long start,long end,Class clazz){ List content = redisTemplate.opsForList().range(key,start,end); - if(CollectionUtils.isEmpty(content)) return null; + if(CollectionUtils.isEmpty(content)) { + return null; + } return content.stream().map( o -> { try { T target = clazz.newInstance(); @@ -314,7 +316,9 @@ public class RedisUtils { **/ public Map hincrby(String key,String field,Long delta){ Map existed = hGetAll(key); - if(null == existed || existed.size() < NumConstant.ONE) return null; + if(null == existed || existed.size() < NumConstant.ONE) { + return null; + } //hincrby redisTemplate.opsForHash().increment(key,field,delta); @@ -367,7 +371,9 @@ public class RedisUtils { public Set zReverseRange(String key, long start, long end, Class clazz) { Set objects = redisTemplate.opsForZSet().reverseRange(key, start, end); - if(CollectionUtils.isEmpty(objects)) return null; + if(CollectionUtils.isEmpty(objects)) { + return null; + } return objects.stream().map(o->{ try { T target = clazz.newInstance(); diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerOrgRedis.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerOrgRedis.java index 9cf82c29d6..449a90116a 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerOrgRedis.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerOrgRedis.java @@ -59,7 +59,8 @@ public class CustomerOrgRedis { throw new RenException("查询网格信息失败..."); } if (null == gridInfoResult.getData()){ - throw new RenException("没有此网格信息..."); + //throw new RenException("没有此网格信息..."); + return null; } Map map = BeanUtil.beanToMap(gridInfoResult.getData(), false, true); customerOrgRedis.redisUtils.hMSet(key, map); diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java index db6abec6aa..f956423f3a 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java @@ -945,4 +945,127 @@ public class DateUtils { return result; } + /** + * @Description 获取工作日时间【没有排除节假日】 + * @param startDate + * @param num + * @author zxc + * @date 2022/1/7 10:51 上午 + */ + public static Date getWorkDay(Date startDate, int num) { + Date tomorrow = null; + int delay = 1; + while (delay <= num) { + tomorrow = getTomorrow(startDate); + if (!isWeekend(tomorrow)) { + delay++; + } + startDate = tomorrow; + } + return startDate; + } + + /** + * @Description 根据开始时间计算出 当前日期后n个工作日【没有排除节假日】包括今天 + * @param startDate + * @param num + * @author zxc + * @date 2022/1/7 10:20 上午 + */ + public static List getWorkDayList(Date startDate, int num) { + List result = new ArrayList<>(); + Calendar rightNow = Calendar.getInstance(); + rightNow.setTime(startDate); + rightNow.add(Calendar.DATE,-1); + startDate = rightNow.getTime(); + Date tomorrow; + Integer tag = 1; + while (tag <= num){ + tomorrow = getTomorrow(startDate); + // 返回工作日 + if (!isWeekend(tomorrow)) { + result.add(new SimpleDateFormat(DATE_PATTERN).format(tomorrow)); + tag++; + } + startDate = tomorrow; + } + return result; + } + + /** + * @Description 根据开始时间计算出 当前日期后n个周末【没有排除节假日】包括今天 + * @param startDate + * @param num + * @author zxc + * @date 2022/1/7 10:20 上午 + */ + public static List getWeekendDayList(Date startDate, int num) { + List result = new ArrayList<>(); + Calendar rightNow = Calendar.getInstance(); + rightNow.setTime(startDate); + rightNow.add(Calendar.DATE,-1); + startDate = rightNow.getTime(); + Date tomorrow; + Integer tag = 1; + while (tag <= num){ + tomorrow = getTomorrow(startDate); + // 返回周末 + if (isWeekend(tomorrow)) { + result.add(new SimpleDateFormat(DATE_PATTERN).format(tomorrow)); + tag++; + } + startDate = tomorrow; + } + return result; + } + + /** + * @Description 根据开始时间计算出 当前日期后n天【没有排除节假日】包括今天 + * @param startDate + * @param num + * @author zxc + * @date 2022/1/7 10:20 上午 + */ + public static List getEveryDayList(Date startDate, int num) { + List result = new ArrayList<>(); + Calendar rightNow = Calendar.getInstance(); + rightNow.setTime(startDate); + rightNow.add(Calendar.DATE,-1); + startDate = rightNow.getTime(); + Date tomorrow; + Integer tag = 1; + while (tag <= num){ + tomorrow = getTomorrow(startDate); + result.add(new SimpleDateFormat(DATE_PATTERN).format(tomorrow)); + tag++; + startDate = tomorrow; + } + return result; + } + + /** + * @Description 判断日期字符串是否为周末 + * @param date eg:yyyy-MM-dd + * @author zxc + * @date 2022/1/7 10:50 上午 + */ + private static boolean isWeekend(Date date) { + Calendar cal = Calendar.getInstance(); + cal.setTime(date); + return cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY; + } + + /** + * @Description 获取tomorrow的日期 + * @param startDate + * @author zxc + * @date 2022/1/7 10:50 上午 + */ + private static Date getTomorrow(Date startDate) { + Calendar cal = Calendar.getInstance(); + cal.setTime(startDate); + cal.add(Calendar.DAY_OF_MONTH, +1); + return cal.getTime(); + } + } diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java index eeac282cd8..048745cfb6 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java @@ -200,8 +200,9 @@ public class HttpClientManager { httppost.addHeader(HEADER_CONTENT_TYPE, HEADER_APPLICATION_JSON); if (null != headerMap) { headerMap.forEach((k, v) -> { - if (v != null) + if (v != null) { httppost.addHeader(k, v.toString()); + } }); } if (StringUtils.isNotEmpty(jsonStrParam)) { diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/IpUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/IpUtils.java index b53ed5e4ea..495565e33c 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/IpUtils.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/IpUtils.java @@ -141,8 +141,9 @@ public class IpUtils { } private static boolean isValidAddress(InetAddress address) { - if (address == null || address.isLoopbackAddress()) - return false; + if (address == null || address.isLoopbackAddress()) { + return false; + } String name = address.getHostAddress(); return (name != null && !ANYHOST.equals(name) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/Md5Util.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/Md5Util.java index 9f4426d728..0d22d230a0 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/Md5Util.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/Md5Util.java @@ -55,16 +55,18 @@ public class Md5Util { private static String byteArrayToHexString(byte[] b) { StringBuffer resultSb = new StringBuffer(); - for (int i = 0; i < b.length; i++) - resultSb.append(byteToHexString(b[i])); + for (int i = 0; i < b.length; i++) { + resultSb.append(byteToHexString(b[i])); + } return resultSb.toString(); } private static String byteToHexString(byte b) { int n = b; - if (n < 0) - n += 256; + if (n < 0) { + n += 256; + } int d1 = n / 16; int d2 = n % 16; return hexDigits[d1] + "" + hexDigits[d2]; @@ -75,12 +77,13 @@ public class Md5Util { try { resultString = origin; MessageDigest md = MessageDigest.getInstance("MD5"); - if (charsetname == null || "".equals(charsetname)) - resultString = byteArrayToHexString(md.digest(resultString - .getBytes())); - else - resultString = byteArrayToHexString(md.digest(resultString - .getBytes(charsetname))); + if (charsetname == null || "".equals(charsetname)) { + resultString = byteArrayToHexString(md.digest(resultString + .getBytes())); + } else { + resultString = byteArrayToHexString(md.digest(resultString + .getBytes(charsetname))); + } } catch (Exception e) { log.error("MD5Encode is error,msg={0}", e); } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/CustomerAgencyDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/CustomerAgencyDTO.java index 7c343c5ccc..70c25c839c 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/CustomerAgencyDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/CustomerAgencyDTO.java @@ -157,4 +157,19 @@ public class CustomerAgencyDTO implements Serializable { * 中心位置纬度 */ private String latitude; + + /** + * 组织编码 + */ + private String code; + + /** + * 负责人姓名 + */ + private String contacts; + + /** + * 联系电话 + */ + private String mobile; } \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/CustomerDepartmentDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/CustomerDepartmentDTO.java index ca02fda8bf..096e24acad 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/CustomerDepartmentDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/CustomerDepartmentDTO.java @@ -94,4 +94,19 @@ public class CustomerDepartmentDTO implements Serializable { */ private Date updatedTime; + /** + * 组织编码 + */ + private String code; + + /** + * 负责人姓名 + */ + private String contacts; + + /** + * 联系电话 + */ + private String mobile; + } \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/CustomerGridDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/CustomerGridDTO.java index fcb6d13250..cacdf2e849 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/CustomerGridDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/CustomerGridDTO.java @@ -133,4 +133,24 @@ public class CustomerGridDTO implements Serializable { * 组织-网格 */ private String gridNamePath; + + /** + * 网格编码 + */ + private String code; + + /** + * 组织编码 + */ + private String gridType; + + /** + * 负责人姓名 + */ + private String contacts; + + /** + * 联系电话 + */ + private String mobile; } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govorg/CustomerAgencyEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govorg/CustomerAgencyEntity.java index 6c6420ffc8..171e01198f 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govorg/CustomerAgencyEntity.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govorg/CustomerAgencyEntity.java @@ -108,4 +108,19 @@ public class CustomerAgencyEntity extends BaseEpmetEntity { * 社区 */ private String community; + + /** + * 组织编码 + */ + private String code; + + /** + * 负责人姓名 + */ + private String contacts; + + /** + * 联系电话 + */ + private String mobile; } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govorg/CustomerDepartmentEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govorg/CustomerDepartmentEntity.java index 74d4ceddc9..dc9e882e05 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govorg/CustomerDepartmentEntity.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govorg/CustomerDepartmentEntity.java @@ -64,4 +64,19 @@ public class CustomerDepartmentEntity extends BaseEpmetEntity { * 部门所属的行政地区编码:实际就是所属组织的地区编码 */ private String areaCode; + + /** + * 组织编码 + */ + private String code; + + /** + * 负责人姓名 + */ + private String contacts; + + /** + * 联系电话 + */ + private String mobile; } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govorg/CustomerGridEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govorg/CustomerGridEntity.java index 60e35afefa..c58ce50893 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govorg/CustomerGridEntity.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govorg/CustomerGridEntity.java @@ -79,4 +79,24 @@ public class CustomerGridEntity extends BaseEpmetEntity { * 所有上级组织ID */ private String pids; + + /** + * 网格编码 + */ + private String code; + + /** + * 组织编码 + */ + private String gridType; + + /** + * 负责人姓名 + */ + private String contacts; + + /** + * 联系电话 + */ + private String mobile; } 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 5055a01925..201f8a39b6 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 @@ -2172,6 +2172,7 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve // throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "【pcwork查询网格员数据统计列表】传入时间条件有误"); //} + PageHelper.startPage(pageNo, pageSize, needCount); return factGridMemberStatisticsDailyDao.listGridMemberDataStatsIncr(pids, gridId, startDateID, endDateID); } } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java index 815b196c51..7f9809a052 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java @@ -342,7 +342,7 @@ public class EpmetUserServiceImpl implements EpmetUserService { re.setTotalTime(totalTime == "" ? "0分钟" : totalTime); //re.setTotalTime(re.getTimeNum() < 1 ? BigDecimal.ZERO + "h" : new BigDecimal(numberFormat.format((float) re.getTimeNum() / (float) 3600)) + "h"); //re.setTotalTime(re.getTimeNum() / 60 + "分钟"); - list.stream().filter(l -> re.getGridId().equals(l.getId())).forEach(s -> re.setGridName(s.getGridName())); + //list.stream().filter(l -> re.getGridId().equals(l.getId())).forEach(s -> re.setGridName(s.getGridName())); }); return resultList; diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java index 79dafa6741..23866c207c 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java @@ -20,7 +20,6 @@ import com.epmet.dataaggre.dto.govorg.form.SubOrgFormDTO; import com.epmet.dataaggre.dto.govorg.result.*; import com.epmet.dataaggre.dto.resigroup.result.OrgInfoCommonDTO; import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity; -import com.epmet.dataaggre.entity.govorg.CustomerGridEntity; import com.epmet.dataaggre.service.commonservice.AreaCodeService; import com.epmet.dataaggre.service.epmetuser.EpmetUserService; import com.epmet.dataaggre.service.govorg.GovOrgService; @@ -151,13 +150,14 @@ public class GovOrgServiceImpl implements GovOrgService { List allList = areaCodeService.queryNextLevelAreaCodeList(formDTO); if (CollectionUtils.isNotEmpty(allList)) { //内部客户: 已经被使用过的areaCode - List usedAreaCodeList1 = customerAgencyDao.selectUsedAreaCodeList(formDTO.getAreaCode()); + // 组织编辑可以修改区域编码,所以不排除了,注释掉 + // List usedAreaCodeList1 = customerAgencyDao.selectUsedAreaCodeList(formDTO.getAreaCode()); //外部子客户: List usedAreaCodeList2 = customerRelation.selectUsedAreaCodeList(formDTO.getAreaCode()); List list=new ArrayList<>(); - if(CollectionUtils.isNotEmpty(usedAreaCodeList1)){ + /*if(CollectionUtils.isNotEmpty(usedAreaCodeList1)){ list.addAll(usedAreaCodeList1); - } + }*/ if(CollectionUtils.isNotEmpty(usedAreaCodeList2)){ list.addAll(usedAreaCodeList2); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/AggreGridServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/AggreGridServiceImpl.java index 89d865ae98..972d686151 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/AggreGridServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/AggreGridServiceImpl.java @@ -19,11 +19,14 @@ import com.epmet.dataaggre.service.epmetuser.StatsStaffPatrolRecordDailyService; import com.epmet.dataaggre.service.govorg.GovOrgService; import com.github.pagehelper.PageInfo; import com.google.common.collect.Lists; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import sun.rmi.runtime.Log; import java.util.*; +@Slf4j @Service public class AggreGridServiceImpl implements AggreGridService { @@ -101,6 +104,10 @@ public class AggreGridServiceImpl implements AggreGridService { for (GridMemberDataAnalysisResultDTO data : datas) { // 填充gridName GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(data.getGridId()); + if (gridInfo == null) { + log.warn("未找到网格信息:{}", data.getGridId()); + continue; + } Optional.ofNullable(gridInfo).ifPresent((d) -> data.setOrgName(d.getGridName())); // 生成结构化map diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerStaffAgencyDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerStaffAgencyDao.xml index ee8caafc3e..d2c47a0922 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerStaffAgencyDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerStaffAgencyDao.xml @@ -27,25 +27,12 @@ ca.level, ca.area_code, ca.parent_area_code, - ( CASE WHEN ca.longitude is null THEN - ( SELECT longitude FROM customer_agency - WHERE del_flag = '0' AND customer_id = (SELECT customer_id FROM customer_agency WHERE id = ca.id) - ORDER BY pid ASC LIMIT 1 - ) - ELSE ca.longitude - END - ) longitude, - ( CASE WHEN ca.latitude is null THEN - ( SELECT latitude FROM customer_agency - WHERE del_flag = '0' AND customer_id = (SELECT customer_id FROM customer_agency WHERE id = ca.id) - ORDER BY pid ASC LIMIT 1 - ) - ELSE ca.latitude - END - ) latitude + IFNULL(ca.longitude, cc.longitude) longitude, + IFNULL(ca.latitude, cc.latitude) latitude FROM customer_staff_agency csa INNER JOIN customer_agency ca ON csa.agency_id = ca.id + INNER JOIN customer_agency cc ON cc.pid = '0' AND ca.customer_id = cc.customer_id WHERE csa.del_flag = '0' AND ca.del_flag = '0' diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/form/heart/VolunteerDemandServiceFormDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/form/heart/VolunteerDemandServiceFormDTO.java new file mode 100644 index 0000000000..4a661bebb4 --- /dev/null +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/form/heart/VolunteerDemandServiceFormDTO.java @@ -0,0 +1,19 @@ +package com.epmet.dto.form.heart; + +import lombok.Data; + +/** + * @Description + * @Author wangxianzhang + * @Date 2021/12/22 3:12 下午 + * @Version 1.0 + */ +@Data +public class VolunteerDemandServiceFormDTO { + + /** + * 组织ID + */ + private String agencyId; + +} diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/heart/DataReportHeartDemandController.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/heart/DataReportHeartDemandController.java index 86eabe2b3c..d1de1db852 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/heart/DataReportHeartDemandController.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/heart/DataReportHeartDemandController.java @@ -3,10 +3,13 @@ package com.epmet.datareport.controller.heart; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.datareport.service.heart.DemandService; +import com.epmet.dto.form.heart.VolunteerDemandServiceFormDTO; import com.epmet.dto.result.heart.VolunteerDemandServiceStatsResultDTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -29,9 +32,14 @@ public class DataReportHeartDemandController { * @return */ @PostMapping("volunteer/service") - public Result getVolunteerServiceStats(@LoginUser TokenDto loginUser) { + public Result getVolunteerServiceStats(@LoginUser TokenDto loginUser, @RequestBody VolunteerDemandServiceFormDTO input) { + + ValidatorUtils.validateEntity(input); + + String agencyId = input.getAgencyId(); String customerId = loginUser.getCustomerId(); - VolunteerDemandServiceStatsResultDTO r = demandService.getVolunteerServiceStats(customerId); + + VolunteerDemandServiceStatsResultDTO r = demandService.getVolunteerServiceStats(customerId, agencyId); return new Result().ok(r); } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/fact/FactVolunteerServiceDailyDao.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/fact/FactVolunteerServiceDailyDao.java index fd4d28afb0..6589571c66 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/fact/FactVolunteerServiceDailyDao.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/fact/FactVolunteerServiceDailyDao.java @@ -36,8 +36,9 @@ public interface FactVolunteerServiceDailyDao extends BaseDao(); + if(null == result) { + return new ArrayList<>(); + } return result; } @@ -404,7 +406,9 @@ public class GrassRootsGovernServiceImpl implements GrassRootsGovernService { private String convertPercentStr(BigDecimal percent,Integer digits){ - if(null == percent) percent = BigDecimal.ZERO; + if(null == percent) { + percent = BigDecimal.ZERO; + } String percentStr = percent.setScale(digits, BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString(); return percentStr.concat(ModuleConstant.SYMBOL_PERCENT); } @@ -418,7 +422,9 @@ public class GrassRootsGovernServiceImpl implements GrassRootsGovernService { */ private ScreenCustomerAgencyDTO agencyInfo(String agencyId){ ScreenCustomerAgencyDTO agencyInfo = agencyDao.selectByAgencyId(agencyId); - if(null == agencyInfo) throw new RenException("获取Agency信息失败"); + if(null == agencyInfo) { + throw new RenException("获取Agency信息失败"); + } return agencyInfo; } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/GrassrootsPartyDevServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/GrassrootsPartyDevServiceImpl.java index 3173e1269e..cc99586d88 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/GrassrootsPartyDevServiceImpl.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/GrassrootsPartyDevServiceImpl.java @@ -249,7 +249,9 @@ public class GrassrootsPartyDevServiceImpl implements GrassrootsPartyDevService if(StringUtils.isBlank(param.getMonthId())){ param.setMonthId(dateUtils.getCurrentMonthId()); } - if(NumConstant.ZERO == param.getTopNum()) param.setTopNum(NumConstant.MAX); + if(NumConstant.ZERO == param.getTopNum()) { + param.setTopNum(NumConstant.MAX); + } PageHelper.startPage(NumConstant.ONE,param.getTopNum()); List orderList = screenPartyBranchDataDao.selectBranchDataByTypeOrder(param.getAgencyId(),param.getCategory(),param.getMonthId(),param.getBottomMonthId()); @@ -278,7 +280,9 @@ public class GrassrootsPartyDevServiceImpl implements GrassrootsPartyDevService private String convertPercentStr(BigDecimal percent){ - if (null == percent || BigDecimal.ZERO.equals(percent)) return "0.00%"; + if (null == percent || BigDecimal.ZERO.equals(percent)) { + return "0.00%"; + } String percentStr = percent.setScale(NumConstant.TWO, BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString(); return percentStr.concat(ModuleConstant.SYMBOL_PERCENT); } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/IndexServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/IndexServiceImpl.java index 948b543080..b69407cc04 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/IndexServiceImpl.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/IndexServiceImpl.java @@ -171,7 +171,9 @@ public class IndexServiceImpl implements IndexService { //针对X轴,数据集合不全则进行数据填充 a:for(int i = NumConstant.ZERO; i < _ymList.size(); i++){ //这里的collect必须是有序且升序的 - if(cursor >= collect.size()) break a; + if(cursor >= collect.size()) { + break a; + } //如果存在过期数据,即从数据库中查询出超出横坐标左边界的月份值 if(Integer.parseInt(collect.get(cursor).getMonthId()) < Integer.parseInt(_ymList.get(NumConstant.ZERO))) { //控制当前循环重复进行 diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/PartyMemberLeadServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/PartyMemberLeadServiceImpl.java index a5ce203e96..5fcb834b5f 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/PartyMemberLeadServiceImpl.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/PartyMemberLeadServiceImpl.java @@ -276,7 +276,9 @@ public class PartyMemberLeadServiceImpl implements PartyMemberLeadService { PageHelper.startPage(NumConstant.ONE,param.getTopNum()); gridData = screenOrgRankDataDao.selectGridDataMonthlyAreaCode(monthId,param.getAreaCode()); } - if(null == gridData || gridData.isEmpty()) return result; + if(null == gridData || gridData.isEmpty()) { + return result; + } int num=1; for(OrgRankDataResultDTO data:gridData){ AdvanceBranchRankResultDTO o = ConvertUtils.sourceToTarget(data,AdvanceBranchRankResultDTO.class); @@ -297,7 +299,9 @@ public class PartyMemberLeadServiceImpl implements PartyMemberLeadService { PageHelper.startPage(NumConstant.ONE,param.getTopNum()); gridData = screenOrgRankDataDao.selectGridDataMonthly(param.getAgencyId(),monthId); } - if(null == gridData || gridData.isEmpty()) return result; + if(null == gridData || gridData.isEmpty()) { + return result; + } int num=1; for(OrgRankDataResultDTO data:gridData){ AdvanceBranchRankResultDTO o = ConvertUtils.sourceToTarget(data,AdvanceBranchRankResultDTO.class); @@ -323,7 +327,9 @@ public class PartyMemberLeadServiceImpl implements PartyMemberLeadService { @DataSource(value = DataSourceConstant.EVALUATION_INDEX,datasourceNameFromArg = true) @Override public List advancedPartymemberRank(AgencyAndNumFormDTO param) { - if(null == param.getTopNum()) param.setTopNum(NumConstant.TEN); + if(null == param.getTopNum()) { + param.setTopNum(NumConstant.TEN); + } PageHelper.startPage(NumConstant.ONE,param.getTopNum()); List result=new ArrayList<>(); if(StringUtils.isNotBlank(param.getAreaCode())){ @@ -332,13 +338,17 @@ public class PartyMemberLeadServiceImpl implements PartyMemberLeadService { }else{ result=screenPartyUserRankDataDao.selectPartymemberPointOrder(param.getAgencyId()); } - if(null == result) return new ArrayList<>(); + if(null == result) { + return new ArrayList<>(); + } return result; } private String convertPercentStr(BigDecimal percent){ - if (null == percent || BigDecimal.ZERO.equals(percent)) return "0.0%"; + if (null == percent || BigDecimal.ZERO.equals(percent)) { + return "0.0%"; + } String percentStr = percent.setScale(NumConstant.ONE, BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString(); return percentStr.concat(ModuleConstant.SYMBOL_PERCENT); } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/ScreenProjectServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/ScreenProjectServiceImpl.java index a40da16683..c665eed455 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/ScreenProjectServiceImpl.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/ScreenProjectServiceImpl.java @@ -42,6 +42,7 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import sun.jvm.hotspot.memory.ContiguousSpace; import java.math.BigDecimal; import java.util.ArrayList; @@ -397,6 +398,10 @@ public class ScreenProjectServiceImpl implements ScreenProjectService { l.setGridName(agencyInfo.getOrganizationName()); }else { GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(l.getOrgId()); + if (gridInfo == null) { + log.warn("未找到网格信息:{}", l.getOrgId()); + return; + } l.setGridName(gridInfo.getGridNamePath()); } }); diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/heart/DemandService.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/heart/DemandService.java index ccbbb319a1..cae8e5bf94 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/heart/DemandService.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/heart/DemandService.java @@ -9,5 +9,5 @@ import com.epmet.dto.result.heart.VolunteerDemandServiceStatsResultDTO; * @Version 1.0 */ public interface DemandService { - VolunteerDemandServiceStatsResultDTO getVolunteerServiceStats(String customerId); + VolunteerDemandServiceStatsResultDTO getVolunteerServiceStats(String customerId, String agencyId); } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/heart/impl/DemandServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/heart/impl/DemandServiceImpl.java index 79ba0274ea..7a2e2f5ec3 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/heart/impl/DemandServiceImpl.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/heart/impl/DemandServiceImpl.java @@ -1,12 +1,14 @@ package com.epmet.datareport.service.heart.impl; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.epmet.commons.dynamic.datasource.annotation.DataSource; -import com.epmet.constant.DataSourceConstant; +import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.feign.ResultDataResolver; import com.epmet.datareport.dao.fact.FactVolunteerServiceDailyDao; -import com.epmet.datareport.entity.heart.FactVolunteerServiceDailyEntity; import com.epmet.datareport.service.heart.DemandService; +import com.epmet.dto.CustomerAgencyDTO; import com.epmet.dto.result.heart.VolunteerDemandServiceStatsResultDTO; +import com.epmet.feign.GovOrgOpenFeignClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -17,13 +19,41 @@ import org.springframework.stereotype.Service; * @Version 1.0 */ @Service -public class DemandServiceImpl implements DemandService { +public class DemandServiceImpl implements DemandService, ResultDataResolver { @Autowired private FactVolunteerServiceDailyDao factVolunteerServiceDailyDao; + @Autowired + private GovOrgOpenFeignClient govOrgOpenFeignClient; + @Override - public VolunteerDemandServiceStatsResultDTO getVolunteerServiceStats(String customerId) { - return factVolunteerServiceDailyDao.getLatestVolunteerDemandServiceStats(customerId); + public VolunteerDemandServiceStatsResultDTO getVolunteerServiceStats(String customerId, String agencyId) { + + String errorMsg = "【查询志愿者需求服务信息】查询选中组织信息失败"; + CustomerAgencyDTO agencyInfo = getResultDataOrThrowsException(govOrgOpenFeignClient.getAgencyById(agencyId), + ServiceConstant.GOV_ORG_SERVER, + EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), + errorMsg, errorMsg); + + if (agencyInfo == null) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg); + } + + String agencyIdPath = agencyInfo.getPids().concat(":").concat(agencyId); + agencyIdPath = agencyIdPath.startsWith(":") ? agencyIdPath.replaceFirst(":", "") : agencyIdPath; + VolunteerDemandServiceStatsResultDTO r = factVolunteerServiceDailyDao.getLatestVolunteerDemandServiceStats(customerId, agencyIdPath); + if (r == null) { + r = new VolunteerDemandServiceStatsResultDTO(); + r.setCustomerId(customerId); + r.setDateId(null); + r.setPartyServiceTotal(0); + r.setServiceTotal(0); + r.setResiServiceTotal(0); + r.setVolunteerTotal(0); + r.setPartyTotal(0); + r.setResiTotal(0); + } + return r; } } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/project/impl/ProjectServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/project/impl/ProjectServiceImpl.java index 55e0d3c7c0..69248da197 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/project/impl/ProjectServiceImpl.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/project/impl/ProjectServiceImpl.java @@ -337,7 +337,9 @@ public class ProjectServiceImpl implements ProjectService { } } - if (null == resultList) return new ArrayList<>(); + if (null == resultList) { + return new ArrayList<>(); + } return resultList; } @@ -360,7 +362,9 @@ public class ProjectServiceImpl implements ProjectService { result.get(i).setImgUrlList(imgUrlList); } - if (null == result) return new ArrayList<>(); + if (null == result) { + return new ArrayList<>(); + } return result; } diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/fact/FactVolunteerServiceDailyDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/fact/FactVolunteerServiceDailyDao.xml index fbe645deb3..67e940e2a9 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/fact/FactVolunteerServiceDailyDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/fact/FactVolunteerServiceDailyDao.xml @@ -24,12 +24,21 @@ diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/heart/IcUserDemandServiceDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/heart/IcUserDemandServiceDao.java index 165ae6b91c..02fc225940 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/heart/IcUserDemandServiceDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/heart/IcUserDemandServiceDao.java @@ -40,5 +40,5 @@ public interface IcUserDemandServiceDao extends BaseDao listDemandServeTimes(@Param("customerId") String customerId, @Param("endTime") Date endTime, @Param("serviceType") String serviceType); + List listDemandServeTimes(@Param("customerId") String customerId, @Param("gridId") String gridId, @Param("endTime") Date endTime, @Param("serviceType") String serviceType); } \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/stats/FactVolunteerServiceDailyEntity.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/stats/FactVolunteerServiceDailyEntity.java index f2b473bfe9..82687aeba0 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/stats/FactVolunteerServiceDailyEntity.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/stats/FactVolunteerServiceDailyEntity.java @@ -43,6 +43,11 @@ public class FactVolunteerServiceDailyEntity extends BaseEpmetEntity { */ private String customerId; + /** + * 网格ID + */ + private String gridId; + /** * yyyyMMdd */ @@ -82,5 +87,9 @@ public class FactVolunteerServiceDailyEntity extends BaseEpmetEntity { * 居民服务总次数 */ private Integer resiServiceTotal; + + private String pid; + + private String pids; } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/model/ParseIndexExcelResult.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/model/ParseIndexExcelResult.java index 17b4fa0634..0c21d759ba 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/model/ParseIndexExcelResult.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/model/ParseIndexExcelResult.java @@ -39,8 +39,12 @@ public class ParseIndexExcelResult implements Serializable { @Override public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } ParseIndexExcelResult that = (ParseIndexExcelResult) o; return indexCode.equals(that.indexCode) && indexName.equals(that.indexName) && diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/GroupExtractServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/GroupExtractServiceImpl.java index 209588d464..c834b74437 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/GroupExtractServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/GroupExtractServiceImpl.java @@ -98,7 +98,9 @@ public class GroupExtractServiceImpl implements GroupExtractService { for(Iterator iter = originGroupData.iterator(); iter.hasNext();){ FactOriginGroupMainDailyDTO pointer = iter.next(); - if(null == gridMap.get(pointer.getGridId()))iter.remove(); + if(null == gridMap.get(pointer.getGridId())) { + iter.remove(); + } } //记录全量中的垃圾数 diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/ProjectExtractServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/ProjectExtractServiceImpl.java index 73507e7c54..164387d70b 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/ProjectExtractServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/ProjectExtractServiceImpl.java @@ -513,7 +513,9 @@ public class ProjectExtractServiceImpl implements ProjectExtractService { public void projectProcessCostTimeDataCompensation() { List customers = dimCustomerService.getAllCustomerId(); - if(CollectionUtils.isEmpty(customers)) return ; + if(CollectionUtils.isEmpty(customers)) { + return ; + } customers.forEach(local -> { // projectProcessService.getProjectPeriod(true, local,null); }); diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenGrassrootsGovernDataAbsorptionServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenGrassrootsGovernDataAbsorptionServiceImpl.java index 34368a57b8..ada550886f 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenGrassrootsGovernDataAbsorptionServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenGrassrootsGovernDataAbsorptionServiceImpl.java @@ -126,7 +126,12 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr if (null != gridInfo) { user.setGridName(gridInfo.getGridName()); user.setOrgId(gridInfo.getAgencyId()); - user.setOrgName(gridInfo.getOrgName()); + if(StringUtils.isNotBlank(gridInfo.getOrgName())){ + user.setOrgName(gridInfo.getOrgName()); + }else{ + GridInfoDTO gridInfoDTO = customerGridService.queryGridInfoDTO(user.getGridId()); + user.setOrgName(gridInfoDTO.getOrgName()); + } //原始数据Pid使用英文:隔开,大屏数据要求按照英文,隔开 user.setAllParentIds(gridInfo.getPids().replaceAll(StrConstant.COLON, StrConstant.COMMA)); }else{ diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/IndexCalculateServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/IndexCalculateServiceImpl.java index 3fd804ec7a..d1e449b4a0 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/IndexCalculateServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/IndexCalculateServiceImpl.java @@ -218,7 +218,9 @@ public class IndexCalculateServiceImpl implements IndexCalculateService { return false; } customerIds = externalCustomerIds.getData(); - }else customerIds.add(formDTO.getCustomerId()); + }else { + customerIds.add(formDTO.getCustomerId()); + } List monthIds = new ArrayList<>(); if (StringUtils.isNotEmpty(formDTO.getStartMonth()) && StringUtils.isNotEmpty(formDTO.getEndMonth())){ monthIds = DateUtils.getMonthBetween(formDTO.getStartMonth(),formDTO.getEndMonth()); @@ -227,7 +229,9 @@ public class IndexCalculateServiceImpl implements IndexCalculateService { if (StringUtils.isEmpty(formDTO.getMonthId())){ // 默认上月 monthIds.add(DimIdGenerator.getMonthDimId(DateUtils.addDateMonths(new Date(), -1))); - }else monthIds.add(formDTO.getMonthId()); + }else { + monthIds.add(formDTO.getMonthId()); + } } List finalMonthIds = monthIds; customerIds.forEach(customerId -> { diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenDifficultyDataServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenDifficultyDataServiceImpl.java index f263b332fc..f8f1d50d8b 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenDifficultyDataServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenDifficultyDataServiceImpl.java @@ -47,7 +47,9 @@ public class ScreenDifficultyDataServiceImpl extends BaseServiceImpl selectExistedInfo(String customerId) { - if (baseDao.selectCountByCustomerId(customerId) > NumConstant.ZERO) return baseDao.selectClosedProjectId(customerId); + if (baseDao.selectCountByCustomerId(customerId) > NumConstant.ZERO) { + return baseDao.selectClosedProjectId(customerId); + } return null; } @@ -80,4 +82,4 @@ public class ScreenDifficultyDataServiceImpl extends BaseServiceImpl getAllDifficultyByCustomerId(String customerId) { return baseDao.selectAllDifficultyByCustomerId(customerId); } -} \ No newline at end of file +} diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/heart/HeartDemandService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/heart/HeartDemandService.java index baaa29c97b..981fd1fc2f 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/heart/HeartDemandService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/heart/HeartDemandService.java @@ -11,5 +11,5 @@ import java.util.List; *@Date 2021/12/8 */ public interface HeartDemandService { - List listDemandServeTimesPage(String customerId, Date endTime, int serviceCountPageNo, int serviceCountPageSize); + List listDemandServeTimesPage(String customerId, String gridId, Date endTime, int serviceCountPageNo, int serviceCountPageSize); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/heart/impl/HeartDemandServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/heart/impl/HeartDemandServiceImpl.java index c33f426ad5..8969b61d31 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/heart/impl/HeartDemandServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/heart/impl/HeartDemandServiceImpl.java @@ -29,11 +29,11 @@ public class HeartDemandServiceImpl implements HeartDemandService { private IcUserDemandServiceDao demandServiceDao; @Override - public List listDemandServeTimesPage(String customerId, Date endTime, int serviceCountPageNo, int serviceCountPageSize) { + public List listDemandServeTimesPage(String customerId, String gridId, Date endTime, int serviceCountPageNo, int serviceCountPageSize) { return PageHelper.startPage(serviceCountPageNo, serviceCountPageSize).doSelectPage(new ISelect() { @Override public void doSelect() { - demandServiceDao.listDemandServeTimes(customerId, endTime, "volunteer"); + demandServiceDao.listDemandServeTimes(customerId, gridId, endTime, "volunteer"); } }); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DemandServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DemandServiceImpl.java index 66cbf1058d..036718bf0f 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DemandServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DemandServiceImpl.java @@ -1,11 +1,16 @@ package com.epmet.service.impl; import com.epmet.commons.tools.constant.EpmetRoleKeyConstant; +import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.feign.ResultDataResolver; import com.epmet.commons.tools.utils.DateUtils; +import com.epmet.dto.CustomerGridDTO; +import com.epmet.dto.form.CustomerGridFormDTO; import com.epmet.dto.heart.result.DemandServiceCountResultDTO; -import com.epmet.entity.crm.CustomerEntity; import com.epmet.entity.heart.VolunteerInfoEntity; import com.epmet.entity.stats.FactVolunteerServiceDailyEntity; +import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.service.DemandService; import com.epmet.service.crm.CustomerService; import com.epmet.service.heart.HeartDemandService; @@ -27,7 +32,7 @@ import java.util.stream.Collectors; * @Version 1.0 */ @Service -public class DemandServiceImpl implements DemandService { +public class DemandServiceImpl implements DemandService, ResultDataResolver { @Autowired private HeartDemandService heartDemandService; @@ -37,12 +42,15 @@ public class DemandServiceImpl implements DemandService { @Autowired private UserService userService; - + @Autowired private DemandStatsService demandStatsService; - + @Autowired private CustomerService customerService; + + @Autowired + private GovOrgOpenFeignClient govOrgOpenFeignClient; @Override public void statsVolunteerDemandServicesDaily(String customerId) { @@ -50,7 +58,7 @@ public class DemandServiceImpl implements DemandService { Date now = new Date(); Date today = DateUtils.integrate(now, "yyyy-MM-dd"); Date yestoday = DateUtils.addDateDays(today, -1); - + if (StringUtils.isNotBlank(customerId)) { // 只计算单个客户 clearOldDatas(Arrays.asList(customerId), yestoday); @@ -67,7 +75,8 @@ public class DemandServiceImpl implements DemandService { /** * 清理旧数据 - * @param targetDate 要清理哪天的数据 + * + * @param targetDate 要清理哪天的数据 * @param customerIds 要清理哪些客户的 */ private void clearOldDatas(List customerIds, Date targetDate) { @@ -80,12 +89,44 @@ public class DemandServiceImpl implements DemandService { /** * 统计单个客户的志愿者服务情况 + * * @param customerId 客户ID - * @param endTime 统计截止时间(> gridIdAndVolunteers = new HashMap<>(); + + heartVolunteerService.listVolunteers(customerId, endTime).forEach(v -> { + String volunteerGridId = v.getGridId(); + if (StringUtils.isNotBlank(volunteerGridId)) { + if (!gridIdAndVolunteers.containsKey(volunteerGridId)) { + gridIdAndVolunteers.put(volunteerGridId, new ArrayList<>()); + } + + gridIdAndVolunteers.get(volunteerGridId).add(v); + } + }); + + // 2.按网格分别统计,且持久化 + for (Map.Entry> entry : gridIdAndVolunteers.entrySet()) { + statsVolunteerDemandServicesDaily4Grid(customerId, entry.getKey(), endTime, entry.getValue(), belongTime); + } + } + + /** + * 按日统计网格需求服务数据 + * @param customerId + * @param gridId + * @param endTime 统计截止时间 + * @param volunteers 志愿者volunteerInfo列表 + * @param belongTime 该次统计要归属到哪一天,即createTime + * @return 统计结果entity,以备他用 + */ + private FactVolunteerServiceDailyEntity statsVolunteerDemandServicesDaily4Grid(String customerId, String gridId, Date endTime, List volunteers, Date belongTime) { // 1.志愿者分流为党员志愿者&普通居民志愿者 - Integer volunteerTotalCount = 0; + Integer volunteerTotalCount = volunteers.size(); // 党员志愿者数量 Integer partymemberVolunteerCount = 0; // 居民志愿者数量 @@ -94,15 +135,13 @@ public class DemandServiceImpl implements DemandService { // 党员志愿者用户id列表 List partymemberVolunteerUserIds = new ArrayList<>(16); - List volunteers = heartVolunteerService.listVolunteers(customerId, endTime); - - volunteerTotalCount = volunteers.size(); + //--------------------------------【以上是结果数据变量】------------------------------------------ // 分片开始下标 int shardingStartIndex = 0; // 分片大小(条数) int shardingSize = 100; - + // 分片去确定党员身份,防止in条件过大 while (true) { int realShardingSize = Math.min(shardingSize, volunteerTotalCount - shardingStartIndex); @@ -141,7 +180,7 @@ public class DemandServiceImpl implements DemandService { while (true) { // 取出每一个服务者的服务次数 - List damendServeTimes = heartDemandService.listDemandServeTimesPage(customerId, endTime, serviceCountPageNo, serviceCountPageSize); + List damendServeTimes = heartDemandService.listDemandServeTimesPage(customerId, gridId, endTime, serviceCountPageNo, serviceCountPageSize); for (DemandServiceCountResultDTO damendServiceTimes : damendServeTimes) { String serverId = damendServiceTimes.getServerId(); @@ -158,11 +197,12 @@ public class DemandServiceImpl implements DemandService { } totalDemandServeTimes = partymemberDemandServeTimes + resiDemandServeTimes; - - // 3.持久化 + + // 3.组装entity数据返回,待存储 FactVolunteerServiceDailyEntity insert = new FactVolunteerServiceDailyEntity(); insert.setDateId(DimIdGenerator.getDateDimId(belongTime)); insert.setCustomerId(customerId); + insert.setGridId(gridId); insert.setMonthId(DimIdGenerator.getMonthDimId(belongTime)); insert.setPartyServiceTotal(partymemberDemandServeTimes); insert.setServiceTotal(totalDemandServeTimes); @@ -171,6 +211,19 @@ public class DemandServiceImpl implements DemandService { insert.setResiTotal(resiVolunteerCount); insert.setVolunteerTotal(volunteerTotalCount); + CustomerGridFormDTO gridForm = new CustomerGridFormDTO(); + gridForm.setGridId(gridId); + String errorMsg = "【志愿者服务按日统计】查询网格基本信息失败"; + CustomerGridDTO gridInfo = getResultDataOrThrowsException(govOrgOpenFeignClient.getGridBaseInfoByGridId(gridForm), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg); + + Optional.ofNullable(gridInfo).ifPresent(gi -> { + insert.setPid(gi.getPid()); + insert.setPids(gi.getPids()); + }); + + // 持久化 demandStatsService.addVolunteerServiceDaily(insert); + + return insert; } } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectProcessServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectProcessServiceImpl.java index 6844c930e9..9f1861df0f 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectProcessServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectProcessServiceImpl.java @@ -139,9 +139,13 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl list,String dateId,String customerId) { - if(CollectionUtils.isEmpty(list)) return; + if(CollectionUtils.isEmpty(list)) { + return; + } List closedInfo = baseDao.selectClosedProjectOnAppointedDay(customerId, dateId); - if(CollectionUtils.isEmpty(closedInfo)) return; + if(CollectionUtils.isEmpty(closedInfo)) { + return; + } list = list.stream().flatMap(target -> closedInfo.stream().filter(closedCase -> StringUtils.equals(closedCase.getProjectId(),target.getProjectId())).map( merge -> { @@ -161,9 +165,13 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl list) { - if(CollectionUtils.isEmpty(list)) return; + if(CollectionUtils.isEmpty(list)) { + return; + } List closedInfo = baseDao.selectClosedProjectByProjectIds(list.stream().map(ScreenProjectDataDTO::getProjectId).distinct().collect(Collectors.toList())); - if(CollectionUtils.isEmpty(closedInfo)) return; + if(CollectionUtils.isEmpty(closedInfo)) { + return; + } list = list.stream().flatMap(target -> closedInfo.stream().filter(closedCase -> StringUtils.equals(closedCase.getProjectId(),target.getProjectId())).map( merge -> { @@ -186,7 +194,9 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl buildNewScreenProjectProcessData(String customerId, String dateId, boolean ifRanged, String projectId) { List processes = baseDao.selectProjectProcessAndDirection(customerId, ifRanged ? null : dateId, dateId, projectId); - if(CollectionUtils.isEmpty(processes)) return null; + if(CollectionUtils.isEmpty(processes)) { + return null; + } return processes.stream().map(target -> { List points = target.getPoints(); if(!CollectionUtils.isEmpty(points)){ diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectServiceImpl.java index a9664b82e7..ecdcda2e71 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/impl/ProjectServiceImpl.java @@ -98,7 +98,9 @@ public class ProjectServiceImpl extends BaseServiceImpl> getProjectCategory(List projectIds) { - if(CollectionUtils.isEmpty(projectIds)) return null; + if(CollectionUtils.isEmpty(projectIds)) { + return null; + } List categories = baseDao.selectProjectCategory(projectIds); - if(CollectionUtils.isEmpty(categories)) return null; + if(CollectionUtils.isEmpty(categories)) { + return null; + } Map> map = new HashMap<>(); Map> projectMap = categories.stream().collect(Collectors.groupingBy(ProjectCategoryDTO::getProjectId)); projectMap.forEach((k,v) -> { diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/DimTopicStatusServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/DimTopicStatusServiceImpl.java index 07c82cb9ce..13a15d27f4 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/DimTopicStatusServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/DimTopicStatusServiceImpl.java @@ -66,7 +66,9 @@ public class DimTopicStatusServiceImpl extends BaseServiceImpl getWrapper(Map params){ String id = (String)params.get(FieldConstant.ID_HUMP); String delFlag = (String)params.get(FieldConstant.DEL_FLAG_HUMP); - if(StringUtils.isBlank(delFlag)) delFlag = NumConstant.ZERO_STR; + if(StringUtils.isBlank(delFlag)) { + delFlag = NumConstant.ZERO_STR; + } QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); @@ -101,4 +103,4 @@ public class DimTopicStatusServiceImpl extends BaseServiceImpl(); + if(null == result) { + result = new LinkedList<>(); + } } // 网格级别 List gridUserResult = diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/topic/impl/TopicStatisticalServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/topic/impl/TopicStatisticalServiceImpl.java index e70e4f7afe..d5c63b599c 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/topic/impl/TopicStatisticalServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/topic/impl/TopicStatisticalServiceImpl.java @@ -52,7 +52,9 @@ public class TopicStatisticalServiceImpl implements TopicStatisticalService { @Override @Transactional(rollbackFor = Exception.class) public void insertUniquely(TopicStatisticalData data) { - if(null == data) return; + if(null == data) { + return; + } if(StringUtils.isBlank(data.getDateId()) || StringUtils.isBlank(data.getMonthId())){ logger.warn("缺失重要参数:dateId或monthId"); diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/impl/TopicServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/impl/TopicServiceImpl.java index 4aa8d924a6..cae99da457 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/impl/TopicServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/impl/TopicServiceImpl.java @@ -149,9 +149,13 @@ public class TopicServiceImpl implements TopicService { */ @Override public Map> getTopicImgs(List list) { - if(CollectionUtils.isEmpty(list)) return Collections.EMPTY_MAP; + if(CollectionUtils.isEmpty(list)) { + return Collections.EMPTY_MAP; + } List imgs = topicDao.selectTopicImgs(list); - if(CollectionUtils.isEmpty(imgs)) return Collections.EMPTY_MAP; + if(CollectionUtils.isEmpty(imgs)) { + return Collections.EMPTY_MAP; + } //key -> topicId | value -> projectId Map projectTopicMap = list.stream().collect(Collectors.toMap(ProjectSourceMapFormDTO :: getSourceId,ProjectSourceMapFormDTO :: getProjectId,(o,n)->n)); //key -> topicId @@ -179,9 +183,13 @@ public class TopicServiceImpl implements TopicService { */ @Override public Map getTopicContent(List list) { - if(CollectionUtils.isEmpty(list)) return Collections.EMPTY_MAP; + if(CollectionUtils.isEmpty(list)) { + return Collections.EMPTY_MAP; + } List contents = topicDao.selectTopicContent(list); - if(CollectionUtils.isEmpty(contents)) return Collections.EMPTY_MAP; + if(CollectionUtils.isEmpty(contents)) { + return Collections.EMPTY_MAP; + } Map topicContentMap = contents.stream().collect(Collectors.toMap(TopicContentResultDTO :: getTopicId,TopicContentResultDTO::getContent)); //key -> topicId | value -> projectId Map projectTopicMap = list.stream().collect(Collectors.toMap(ProjectSourceMapFormDTO :: getSourceId,ProjectSourceMapFormDTO :: getProjectId,(o,n)->n)); @@ -227,7 +235,9 @@ public class TopicServiceImpl implements TopicService { @Override public List buildNewScreenProjectImgData(List list) { List imgs = topicDao.initNewScreenProjectImgData(list.get(NumConstant.ZERO).getCustomerId(), list); - if(CollectionUtils.isEmpty(imgs)) return null; + if(CollectionUtils.isEmpty(imgs)) { + return null; + } return imgs.stream().flatMap(img -> list.stream().filter(project -> StringUtils.equals(img.getTopicId(),project.getTopicId())).map( match -> { ScreenProjectImgDataDTO matchedImg diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/ScoreCalculator.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/ScoreCalculator.java index 01906d5bae..5abf6a910e 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/ScoreCalculator.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/ScoreCalculator.java @@ -168,7 +168,9 @@ public abstract class ScoreCalculator { */ protected BigDecimal calcuteCoefficient(BigDecimal min, BigDecimal max) { BigDecimal fenmu = max.subtract(min); - if (fenmu.compareTo(BigDecimal.ZERO)==0)return new BigDecimal(0); + if (fenmu.compareTo(BigDecimal.ZERO)==0) { + return new BigDecimal(0); + } BigDecimal fenzi = maxScore.subtract(minScore); BigDecimal divide = fenzi.divide(fenmu, MathContext.DECIMAL32); return divide; diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.27__volunteer_service_daily_add_gridid.sql b/epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.27__volunteer_service_daily_add_gridid.sql new file mode 100644 index 0000000000..de4af15c6f --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.27__volunteer_service_daily_add_gridid.sql @@ -0,0 +1,14 @@ +-- 发布前执行 +alter table fact_volunteer_service_daily add column GRID_ID varchar(64) not null comment '网格ID' after CUSTOMER_ID; +alter table fact_volunteer_service_daily add column PID varchar(64) default '' comment 'pid网格父级ID' after RESI_SERVICE_TOTAL; +alter table fact_volunteer_service_daily add column PIDS varchar(255) default '' comment 'pid网格父级ID路径,包含PID' after PID; + +-- 发布后执行 + +delete from fact_volunteer_service_daily; + +alter table fact_volunteer_service_daily drop key uni_vsd; + +alter table fact_volunteer_service_daily + add constraint uni_vsd + unique (GRID_ID, DATE_ID, DEL_FLAG); diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/heart/IcUserDemandServiceDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/heart/IcUserDemandServiceDao.xml index ddebabef66..ab73afd872 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/heart/IcUserDemandServiceDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/heart/IcUserDemandServiceDao.xml @@ -24,11 +24,13 @@ select service.SERVER_ID, SERVICE_TYPE, count(1) as SERVE_TIMES from ic_user_demand_rec damend inner join ic_user_demand_service service on (damend.ID = service.DEMAND_REC_ID and service.DEL_FLAG = 0) + inner join volunteer_info v on (service.SERVER_ID = v.USER_ID and v.DEL_FLAG = 0) where damend.DEL_FLAG = 0 and damend.STATUS = 'finished' and damend.CUSTOMER_ID = #{customerId} and service.SERVICE_END_TIME #{endTime} and service.SERVICE_TYPE = #{serviceType} + and v.GRID_ID = #{gridId} group by service.SERVER_ID, SERVICE_TYPE \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/CustomerGridDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/CustomerGridDao.xml index d1865cf106..053c6004b0 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/CustomerGridDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/CustomerGridDao.xml @@ -110,8 +110,7 @@ LEFT JOIN customer_agency ca ON (cg.PID = CA.ID) WHERE - CG.CUSTOMER_ID =#{customerId} - and cg.id = #{gridId} + cg.id = #{gridId} SELECT m.CATEGORY_NAME as label, - m.CATEGORY_CODE as `value` + m.CATEGORY_CODE as `value`, + m.AWARD_POINT as awardPoint FROM ic_resi_demand_dict m WHERE @@ -247,4 +248,36 @@ AND m.CUSTOMER_ID = #{customerId} AND m.CATEGORY_CODE = #{categoryCode} + + + + + + \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcSocietyOrgDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcSocietyOrgDao.xml index 56daf5dc2b..74031c3426 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcSocietyOrgDao.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcSocietyOrgDao.xml @@ -24,8 +24,11 @@ AND customer_id = #{customerId} - + + + AND agency_id = #{agencyId} AND society_name LIKE CONCAT('%', #{societyName}, '%') diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml index 11d3190a6c..4bb193f075 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml @@ -68,7 +68,7 @@ ) as serviceName, s.SERVICE_START_TIME as serviceStartTime, s.SERVICE_END_TIME as serviceEndTime, - IFNULL(s.FINISH_DESC,'') as finishDesc, + IFNULL(sa.remark,'') as finishDesc, '' AS serviceShowName, s.id as serviceId, ( @@ -192,7 +192,7 @@ ) as serviceName, s.SERVICE_START_TIME as serviceStartTime, s.SERVICE_END_TIME as serviceEndTime, - IFNULL(s.FINISH_DESC,'') as finishDesc, + IFNULL(sa.remark,'') as finishDesc, '' AS serviceShowName, s.id as serviceId, left(r.CATEGORY_CODE,4) as firstCategoryCode, @@ -205,7 +205,20 @@ CASE WHEN R.DEMAND_USER_TYPE='mini_resi' THEN R.DEMAND_USER_ID ELSE '' END - ) as epmetUserId + ) as epmetUserId, + r.AWARD_POINT as awardPoint, + ( + case when r.status ='pending' then r.SERVICE_LOCATION + when r.status ='assigned' then concat( r.SERVICE_LOCATION, r.LOCATION_DETAIL ) + when r.status ='have_order' then concat( r.SERVICE_LOCATION, r.LOCATION_DETAIL ) + when r.status ='finished' then concat( r.SERVICE_LOCATION, r.LOCATION_DETAIL ) + else '' + end + ) AS serviceAddress, + r.SERVICE_LOCATION, + r.LOCATION_DETAIL, + r.LONGITUDE, + r.LATITUDE FROM ic_user_demand_rec r left JOIN ic_user_demand_service s ON ( r.id = s.DEMAND_REC_ID AND s.DEL_FLAG = '0' ) @@ -227,10 +240,27 @@ r.PARENT_CODE as parentCode, r.CONTENT, r.REPORT_TYPE as reportType, + ( + case when r.REPORT_TYPE='community' then '社区帮办' + when r.REPORT_TYPE='building_caption' then '楼长帮办' + when r.REPORT_TYPE='party' then '党员帮办' + when r.REPORT_TYPE='self_help' then '自身上报' + else '' + end + )as reportTypeName, r.REPORT_TIME as reportTime, r.REPORT_USER_NAME as reportUserName, r.REPORT_USER_MOBILE as reportUserMobile, r.`STATUS` as status, + ( + case when r.`STATUS`='pending' then '待处理' + when r.`STATUS`='canceled' then '已取消' + when r.`STATUS`='assigned' then '已派单' + when r.`STATUS`='have_order' then '已接单' + when r.`STATUS`='finished' then '已完成' + else '' + end + )as statusName, r.DEMAND_USER_ID as demandUserId, r.DEMAND_USER_NAME as demandUserName, r.DEMAND_USER_MOBILE as demandUserMobile, @@ -251,7 +281,7 @@ ) as serviceName, s.SERVICE_START_TIME as serviceStartTime, s.SERVICE_END_TIME as serviceEndTime, - IFNULL(s.FINISH_DESC,'') as finishDesc, + IFNULL(sa.remark,'') as finishDesc, '' AS serviceShowName, s.id as serviceId, ( @@ -292,6 +322,9 @@ AND DATE_FORMAT(r.REPORT_TIME,'%Y-%m-%d') #{endDateId} + + and r.STATUS !=#{excludeStatus} + order by r.WANT_SERVICE_TIME desc,r.REPORT_TIME asc @@ -391,7 +424,8 @@ - SELECT S.SERVER_ID AS serverId, SUM( M.SCORE ) AS totalScore, @@ -405,10 +439,130 @@ AND r.DEL_FLAG = '0' AND m.CUSTOMER_ID = #{customerId} AND r.`STATUS` = 'finished' - and s.SERVICE_TYPE ='party_unit' - - and s.server_id=#{partyUnitId} + and s.SERVICE_TYPE=#{serviceType} + + and s.server_id=#{serverId} group by s.SERVER_ID + + + + + + + + + + + + + + update ic_user_demand_rec + set EVALUATE_FLAG='1', + FINISH_RESULT=#{finishResult}, + UPDATED_TIME=NOW() + where id=#{demandRecId} + \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActInfoDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActInfoDao.xml index f0904b26a4..67f4cb64a7 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActInfoDao.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/LatestActInfoDao.xml @@ -113,7 +113,11 @@ lai.REQUIREMENT AS requirement, lai.SPONSOR_NAME AS sponsorName, lai.SPONSOR_CONTACTS AS sponsorContacts, - lai.SPONSOR_TEL AS sponsorTel + lai.SPONSOR_TEL AS sponsorTel, + lai.ACT_TYPE, + lai.UNIT_ID, + lai.SERVICE_MATTER, + lai.TARGET FROM latest_act_info lai WHERE diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/VolunteerInfoDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/VolunteerInfoDao.xml index 4dc80881f2..11d2fde8c4 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/VolunteerInfoDao.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/VolunteerInfoDao.xml @@ -17,6 +17,8 @@ + + SELECT - CUSTOMER_ID customerId, - VOLUNTEER_INTRODUCE volunteerIntroduce, - VOLUNTEER_SIGNATURE volunteerSignature, - GRID_ID gridId, - GRID_NAME gridName, - USER_ID as userId + * FROM volunteer_info WHERE DEL_FLAG = '0' AND USER_ID = #{userId} diff --git a/epmet-module/epmet-job/epmet-job-server/pom.xml b/epmet-module/epmet-job/epmet-job-server/pom.xml index a2632d820f..e3d12204ad 100644 --- a/epmet-module/epmet-job/epmet-job-server/pom.xml +++ b/epmet-module/epmet-job/epmet-job-server/pom.xml @@ -90,6 +90,12 @@ 2.0.0 compile + + com.epmet + epmet-heart-client + 2.0.0 + compile + com.epmet gov-issue-client diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/AutoEvaluateDemandTask.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/AutoEvaluateDemandTask.java new file mode 100644 index 0000000000..23d5d34787 --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/AutoEvaluateDemandTask.java @@ -0,0 +1,31 @@ +package com.epmet.task; + + +import com.alibaba.fastjson.JSON; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.form.AutoEvaluateDemandFormDTO; +import com.epmet.feign.EpmetHeartOpenFeignClient; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @author yinzuomei + * @dscription 每天晚上23:50执行,需求已完成,未评分的自动评分=》发放积分,计算满意度 + */ +@Slf4j +@Component("autoEvaluateDemandTask") +public class AutoEvaluateDemandTask implements ITask { + @Autowired + private EpmetHeartOpenFeignClient heartOpenFeignClient; + + @Override + public void run(String params) { + AutoEvaluateDemandFormDTO formDTO = new AutoEvaluateDemandFormDTO(); + if (StringUtils.isNotBlank(params)) { + formDTO = JSON.parseObject(params, AutoEvaluateDemandFormDTO.class); + } + Result result = heartOpenFeignClient.autoEvaluateDemand(formDTO); + } +} diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ResiEventAutoAuditTask.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ResiEventAutoAuditTask.java new file mode 100644 index 0000000000..1e56204d0f --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ResiEventAutoAuditTask.java @@ -0,0 +1,30 @@ +package com.epmet.task; + +import com.epmet.commons.tools.utils.Result; +import com.epmet.feign.GovProjectOpenFeignClient; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @author sun + * @dscription 事件语音附件自动审核任务,没两分钟执行一次 + */ +@Slf4j +@Component("resiEventAutoAuditTask") +public class ResiEventAutoAuditTask implements ITask { + + @Autowired + private GovProjectOpenFeignClient govProjectOpenFeignClient; + + @Override + public void run(String params) { + log.info("ResiEventAutoAuditTask定时任务正在执行,参数为:{}", params); + Result result = govProjectOpenFeignClient.autoAudit(); + if (result.success()) { + log.info("ResiEventAutoAuditTask定时任务执行成功"); + } else { + log.error("ResiEventAutoAuditTask定时任务执行失败:" + result.getMsg()); + } + } +} diff --git a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/SystemMessageType.java b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/SystemMessageType.java index 60230d3a10..ca857bf0f5 100644 --- a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/SystemMessageType.java +++ b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/SystemMessageType.java @@ -110,4 +110,54 @@ public interface SystemMessageType { */ String CAL_PARTY_UNIT_SATISFACTION = "cal_party_unit_satisfaction"; + /** + * 活动发放积分 + */ + String ACTIVE_SEND_POINT = "active_send_point"; + /** + * 认证志愿者 + */ + String REGISTER_VOLUNTEER = "register_volunteer"; + /** + * 添加活动实况 + */ + String ACTIVE_INSERT_LIVE = "active_insert_live"; + /** + * 拉新用户入组 + */ + String INVITE_NEW_INTO_GROUP = "invite_new_into_group"; + /** + * 邀请已注册的用户入组 + */ + String INVITE_RESI_INTO_GROUP = "invite_resi_into_group"; + /** + * 发布话题 + */ + String PUBLISH_ONE_TOPIC = "publish_one_topic"; + /** + * 话题被转为议题(小组中发布的话题被组长转为议题) + */ + String TOPIC_TO_ISSUE = "topic_to_issue"; + /** + * 对小组内话题进行15字以上评论 + */ + String PARTICIPATE_ONE_TOPIC = "participate_one_topic"; + /** + * 转话题为议题(将自建小组中话题转为议题) + */ + String SHIFT_TOPIC_TO_ISSUE = "shift_topic_to_issue"; + /** + * 话题被转为项目 + */ + String TOPIC_TO_PROJECT = "topic_to_project"; + /** + * 组长解决组内话题 + */ + String LEADER_RESOLVE_TOPIC = "leader_resolve_topic"; + + /** + * 完成用户需求,需求人提交评价 + */ + String FINISH_USER_DEMAND="finish_user_demand"; + } diff --git a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/UserMessageTypeConstant.java b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/UserMessageTypeConstant.java index adcea05711..c4f703049c 100644 --- a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/UserMessageTypeConstant.java +++ b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/UserMessageTypeConstant.java @@ -191,4 +191,16 @@ public interface UserMessageTypeConstant { * user_badge_certificate_record.id */ String BADGE_AUTH_APPLY="badge_auth_apply"; + + /** + * 事件回复、立项、办结操作 + * rsi_event.id + */ + String EVENT ="event"; + + /** + * 需求接单、指派、确认服务时间操作 + * ic_user_demand_rec.id + */ + String DEMAND="demand"; } diff --git a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/SystemMsgFormDTO.java b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/SystemMsgFormDTO.java index c0fb1400e9..24dbd8694f 100644 --- a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/SystemMsgFormDTO.java +++ b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/SystemMsgFormDTO.java @@ -19,6 +19,6 @@ public class SystemMsgFormDTO { @NotNull(message = "消息内容不能为空", groups = { SendMsgByMQ.class }) private Object content; - @NotNull(message = "pendingMsgLabel不能为空", groups = { AckMsgByMQ.class }) - private String pendingMsgLabel; + //@NotNull(message = "pendingMsgLabel不能为空", groups = { AckMsgByMQ.class }) + //private String pendingMsgLabel; } diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/UserMessageController.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/UserMessageController.java index a176b3f2ca..61bfa0166a 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/UserMessageController.java +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/UserMessageController.java @@ -18,7 +18,9 @@ package com.epmet.controller; import com.baomidou.mybatisplus.extension.api.R; +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.ExcelUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.AssertUtils; @@ -162,4 +164,15 @@ public class UserMessageController { List list = userMessageService.queryStaffMessage(formDTO); return new Result>().ok(list); } + + /** + * @Author sun + * @Description 【消息】删除已读消息列表 + **/ + @PostMapping("delreadmsg") + public Result delReadMsg(@LoginUser TokenDto tokenDto) { + userMessageService.delReadMsg(tokenDto.getUserId()); + return new Result(); + } + } diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/UserMessageDao.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/UserMessageDao.java index bc89c54224..9a5bb0d739 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/UserMessageDao.java +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/UserMessageDao.java @@ -62,4 +62,10 @@ public interface UserMessageDao extends BaseDao { * @Date 2020/5/17 16:47 **/ List queryStaffMessage(StaffMessageFormDTO formDTO); + + /** + * @Author sun + * @Description 【消息】删除已读消息列表 + **/ + int delReadMsg(@Param("userId") String userId); } \ No newline at end of file diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/UserMessageService.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/UserMessageService.java index cdc41470c8..ce8417175c 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/UserMessageService.java +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/UserMessageService.java @@ -142,4 +142,10 @@ public interface UserMessageService extends BaseService { StaffUnReadMsgResultDTO queryUnReadMsg(StaffMessageCommonFormDTO formDTO); List queryStaffMessage(StaffMessageFormDTO formDTO); + + /** + * @Author sun + * @Description 【消息】删除已读消息列表 + **/ + void delReadMsg(String userId); } \ No newline at end of file diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/SystemMessageServiceImpl.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/SystemMessageServiceImpl.java index a5c07f9ea1..77fe52d141 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/SystemMessageServiceImpl.java +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/SystemMessageServiceImpl.java @@ -209,7 +209,26 @@ public class SystemMessageServiceImpl implements SystemMessageService { topic = TopicConstants.IC_RESI_USER; break; case SystemMessageType.CAL_PARTY_UNIT_SATISFACTION: - topic=TopicConstants.CAL_PARTY_UNIT_SATISFACTION; + topic=TopicConstants.USER_DEMAND; + break; + case SystemMessageType.INVITE_NEW_INTO_GROUP: + case SystemMessageType.INVITE_RESI_INTO_GROUP: + case SystemMessageType.PUBLISH_ONE_TOPIC: + case SystemMessageType.PARTICIPATE_ONE_TOPIC: + case SystemMessageType.TOPIC_TO_ISSUE: + case SystemMessageType.SHIFT_TOPIC_TO_ISSUE: + case SystemMessageType.TOPIC_TO_PROJECT: + case SystemMessageType.LEADER_RESOLVE_TOPIC: + topic = TopicConstants.RESI_GROUP; + break; + case SystemMessageType.ACTIVE_SEND_POINT: + case SystemMessageType.REGISTER_VOLUNTEER: + case SystemMessageType.ACTIVE_INSERT_LIVE: + topic = TopicConstants.EPMET_HEART; + break; + //社区服务相关积分 + case SystemMessageType.FINISH_USER_DEMAND: + topic=TopicConstants.COMMUNITY_SERVICE; break; default: logger.error("getTopicByMsgType msgType:{} is not support for any topic", msgType); diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/UserMessageServiceImpl.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/UserMessageServiceImpl.java index eb0e559e74..0bdec194d4 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/UserMessageServiceImpl.java +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/UserMessageServiceImpl.java @@ -209,4 +209,14 @@ public class UserMessageServiceImpl extends BaseServiceImpl list = baseDao.queryStaffMessage(formDTO); return list; } + + /** + * @Author sun + * @Description 【消息】删除已读消息列表 + **/ + @Override + public void delReadMsg(String userId) { + baseDao.delReadMsg(userId); + } + } \ No newline at end of file diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/UserMessageDao.xml b/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/UserMessageDao.xml index 7aca569542..2b80a6cc56 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/UserMessageDao.xml +++ b/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/UserMessageDao.xml @@ -81,4 +81,15 @@ ORDER BY CREATED_TIME DESC LIMIT #{pageNo}, #{pageSize} + + + UPDATE user_message + SET del_flag = '1', + updated_by = #{userId}, + updated_time = NOW() + WHERE + read_flag = 'read' + AND user_id = #{userId} + + \ No newline at end of file diff --git a/epmet-module/epmet-point/epmet-point-server/pom.xml b/epmet-module/epmet-point/epmet-point-server/pom.xml index 89c84eb878..c0224fd49d 100644 --- a/epmet-module/epmet-point/epmet-point-server/pom.xml +++ b/epmet-module/epmet-point/epmet-point-server/pom.xml @@ -167,6 +167,10 @@ https://oapi.dingtalk.com/robot/send?access_token=e894e5690f9d6a527722974c71548ff6c0fe29bd956589a09e21b16442a35ed4 SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd + + + true + 192.168.1.140:9876;192.168.1.141:9876 @@ -210,6 +214,10 @@ https://oapi.dingtalk.com/robot/send?access_token=e894e5690f9d6a527722974c71548ff6c0fe29bd956589a09e21b16442a35ed4 SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd + + + true + 192.168.1.140:9876;192.168.1.141:9876 @@ -253,6 +261,10 @@ https://oapi.dingtalk.com/robot/send?access_token=e894e5690f9d6a527722974c71548ff6c0fe29bd956589a09e21b16442a35ed4 SECfcc020bdc83bb17a2c00f39977b1fbc409ef4188c7beaea11c5caa90eeaf87fd + + + true + 192.168.10.161:9876 @@ -296,6 +308,10 @@ https://oapi.dingtalk.com/robot/send?access_token=a5f66c3374b1642fe2142dbf56d5997e280172d4e8f2b546c9423a68c82ece6c SEC95f4f40b533ad379ea6a6d1af6dd37029383cfe1b7cd96dfac2678be2c1c3ed1 + + + true + 192.168.11.187:9876;192.168.11.184:9876 diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/PointRuleEntity.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/PointRuleEntity.java index 7191215345..4e766098f0 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/PointRuleEntity.java +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/PointRuleEntity.java @@ -119,9 +119,15 @@ public class PointRuleEntity extends BaseEpmetEntity { @Override public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - if (!super.equals(o)) return false; + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + if (!super.equals(o)) { + return false; + } PointRuleEntity entity = (PointRuleEntity) o; return Objects.equals(customerId, entity.customerId) && Objects.equals(ruleName, entity.ruleName) && diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/mq/RocketMQConsumerRegister.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/mq/RocketMQConsumerRegister.java new file mode 100644 index 0000000000..500f4bb632 --- /dev/null +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/mq/RocketMQConsumerRegister.java @@ -0,0 +1,28 @@ +package com.epmet.mq; + +import com.epmet.commons.rocketmq.constants.ConsomerGroupConstants; +import com.epmet.commons.rocketmq.constants.TopicConstants; +import com.epmet.commons.rocketmq.register.MQAbstractRegister; +import com.epmet.commons.rocketmq.register.MQConsumerProperties; +import com.epmet.mq.listener.PointListener; +import com.epmet.service.UserPointActionLogService; +import org.apache.rocketmq.common.protocol.heartbeat.MessageModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class RocketMQConsumerRegister extends MQAbstractRegister { + + @Autowired + private UserPointActionLogService userPointActionLogService; + + @Override + public void registerAllListeners(String env, MQConsumerProperties consumerProperties) { + // 客户初始化监听器注册 + register(consumerProperties, ConsomerGroupConstants.RESI_GROUP_POINT_OPERATION_GROUP, MessageModel.CLUSTERING, TopicConstants.RESI_GROUP, "*", new PointListener(userPointActionLogService)); + register(consumerProperties, ConsomerGroupConstants.EPMET_HEART_POINT_OPERATION_GROUP, MessageModel.CLUSTERING, TopicConstants.EPMET_HEART, "*", new PointListener(userPointActionLogService)); + register(consumerProperties, ConsomerGroupConstants.COMMUNITY_SERVICE_POINT_OPERATION_GROUP, MessageModel.CLUSTERING, TopicConstants.COMMUNITY_SERVICE, "*", new PointListener(userPointActionLogService)); + + // ...其他监听器类似 + } +} \ No newline at end of file diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/mq/listener/PointListener.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/mq/listener/PointListener.java new file mode 100644 index 0000000000..63b4c44e2b --- /dev/null +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/mq/listener/PointListener.java @@ -0,0 +1,243 @@ +package com.epmet.mq.listener; + +import com.alibaba.fastjson.JSON; +import com.epmet.commons.rocketmq.constants.MQUserPropertys; +import com.epmet.commons.tools.distributedlock.DistributedLock; +import com.epmet.commons.tools.dto.form.mq.eventmsg.BasePointEventMsg; +import com.epmet.commons.tools.enums.EventEnum; +import com.epmet.commons.tools.exception.ExceptionUtils; +import com.epmet.commons.tools.exception.RenException; +import com.epmet.commons.tools.redis.RedisKeys; +import com.epmet.commons.tools.redis.RedisUtils; +import com.epmet.commons.tools.utils.SpringContextUtils; +import com.epmet.constant.SystemMessageType; +import com.epmet.service.UserPointActionLogService; +import dto.form.SendPointFormDTO; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext; +import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus; +import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently; +import org.apache.rocketmq.common.message.MessageExt; +import org.redisson.api.RLock; + +import java.util.List; +import java.util.concurrent.TimeUnit; + +/** + * @author wxz + * @Description 登录操作日志监听器 + + * @return + * @date 2021.06.07 16:12 + */ +@Slf4j +public class PointListener implements MessageListenerConcurrently { + + private RedisUtils redisUtils; + + private UserPointActionLogService userPointActionLogService; + + public PointListener(UserPointActionLogService userPointActionLogService) { + this.userPointActionLogService = userPointActionLogService; + } + + @Override + public ConsumeConcurrentlyStatus consumeMessage(List msgs, ConsumeConcurrentlyContext context) { + + if (redisUtils == null) { + redisUtils = SpringContextUtils.getBean(RedisUtils.class); + } + + try { + msgs.forEach(msg -> consumeMessage(msg)); + } catch (Exception e) { + log.error(ExceptionUtils.getErrorStackTrace(e)); + return ConsumeConcurrentlyStatus.RECONSUME_LATER; + } + return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; + } + + private void consumeMessage(MessageExt messageExt) { + String tags = messageExt.getTags(); + String msg = new String(messageExt.getBody()); + String pendingMsgLabel = messageExt.getUserProperty(MQUserPropertys.BLOCKED_MSG_LABEL); + log.info("【积分操作监听器】-收到消息内容:{}", msg); + + DistributedLock distributedLock = null; + RLock lock = null; + try { + distributedLock = SpringContextUtils.getBean(DistributedLock.class); + lock = distributedLock.getLock("lock:point_operation", 30L, 30L, TimeUnit.SECONDS); + + switch (tags) { + case SystemMessageType.PARTICIPATE_ONE_TOPIC: + resiGroupPointOpe(msg); + break; + case SystemMessageType.ACTIVE_SEND_POINT: + // 爱心活动积分发放 + activeSendPoint(msg); + break; + case SystemMessageType.ACTIVE_INSERT_LIVE: + // 添加活动实况 + activeInsertLive(msg); + break; + case SystemMessageType.REGISTER_VOLUNTEER: + // 注册志愿者 + registerVolunteer(msg); + break; + case SystemMessageType.TOPIC_TO_ISSUE: + // 话题被组长转为议题 + topicToIssue(msg); + break; + case SystemMessageType.TOPIC_TO_PROJECT: + // 话题转为项目 + topicToProject(msg); + break; + case SystemMessageType.INVITE_RESI_INTO_GROUP: + inviteResiIntoGroup(msg); + break; + case SystemMessageType.INVITE_NEW_INTO_GROUP: + inviteNewIntoGroup(msg); + break; + case SystemMessageType.SHIFT_TOPIC_TO_ISSUE: + shiftTopicToIssue(msg); + break; + case SystemMessageType.PUBLISH_ONE_TOPIC: + publicOneTopic(msg); + break; + case SystemMessageType.LEADER_RESOLVE_TOPIC: + leaderResolveTopic(msg); + break; + case SystemMessageType.FINISH_USER_DEMAND: + //给需求服务方(志愿者)发放积分 + grantServerPoint(msg); + break; + } + + } catch (RenException e) { + // 如果是我们手动抛出的异常,说明在业务可控范围内。目前不需要MQ重试 + log.error("【积分操作监听器】消费消息失败:".concat(ExceptionUtils.getErrorStackTrace(e))); + } catch (Exception e) { + // 不是我们自己抛出的异常,可以让MQ重试 + log.error("【积分操作监听器】消费消息失败:".concat(ExceptionUtils.getErrorStackTrace(e))); + throw e; + } finally { + distributedLock.unLock(lock); + } + + if (StringUtils.isNotBlank(pendingMsgLabel)) { + try { + removePendingMqMsgCache(pendingMsgLabel); + } catch (Exception e) { + log.error("【登录操作事件监听器】-删除mq阻塞消息缓存失败:{}", ExceptionUtils.getErrorStackTrace(e)); + } + } + } + + private void leaderResolveTopic(String msg) { + List formList = JSON.parseArray(msg, BasePointEventMsg.class); + + formList.forEach(obj -> { + userPointActionLogService.grantPointByEvent(obj.getEventTag(),obj); + }); + } + + private void publicOneTopic(String msg) { + List formList = JSON.parseArray(msg, BasePointEventMsg.class); + + formList.forEach(obj -> { + userPointActionLogService.grantPointByEvent(obj.getEventTag(),obj); + }); + } + + private void shiftTopicToIssue(String msg) { + List formList = JSON.parseArray(msg, BasePointEventMsg.class); + + formList.forEach(obj -> { + userPointActionLogService.grantPointByEvent(obj.getEventTag(),obj); + }); + } + + private void inviteNewIntoGroup(String msg) { + List formList = JSON.parseArray(msg, BasePointEventMsg.class); + + formList.forEach(obj -> { + userPointActionLogService.grantPointByEvent(obj.getEventTag(),obj); + }); + } + + private void inviteResiIntoGroup(String msg) { + List formList = JSON.parseArray(msg, BasePointEventMsg.class); + + formList.forEach(obj -> { + userPointActionLogService.grantPointByEvent(obj.getEventTag(),obj); + }); + } + + private void topicToProject(String msg) { + List formList = JSON.parseArray(msg, BasePointEventMsg.class); + + formList.forEach(obj -> { + userPointActionLogService.grantPointByEvent(obj.getEventTag(),obj); + }); + } + + private void topicToIssue(String msg) { + List formList = JSON.parseArray(msg, BasePointEventMsg.class); + + formList.forEach(obj -> { + userPointActionLogService.grantPointByEvent(obj.getEventTag(), obj); + }); + } + + private void registerVolunteer(String msg) { + List formList = JSON.parseArray(msg, BasePointEventMsg.class); + formList.forEach(obj -> { + userPointActionLogService.grantPointByEvent(EventEnum.REGISTER_VOLUNTEER.getEventTag(),obj); + }); + } + + private void activeInsertLive(String msg) { + List formList = JSON.parseArray(msg, BasePointEventMsg.class); + formList.forEach(obj -> { + userPointActionLogService.grantPointByEvent(EventEnum.ACTIVE_INSERT_LIVE.getEventTag(), obj); + }); + } + + private void activeSendPoint(String msg) { + List formDTO = JSON.parseArray(msg, SendPointFormDTO.class); + userPointActionLogService.grantPoint(formDTO); + } + + private void resiGroupPointOpe(String msg) { + List formList = JSON.parseArray(msg, BasePointEventMsg.class); + + formList.forEach(obj -> { + userPointActionLogService.grantPointByEvent(obj.getEventTag(),obj); + }); + } + + /** + * 需求完成,给志愿者发放积分 + * @param msg + */ + private void grantServerPoint(String msg) { + List formDTO = JSON.parseArray(msg, BasePointEventMsg.class); + userPointActionLogService.grantServerPoint(formDTO); + } + + /** + * @description + * + * @param pendingMsgLabel + * @return + * @author wxz + * @date 2021.10.14 16:32:32 + */ + private void removePendingMqMsgCache(String pendingMsgLabel) { + String key = RedisKeys.blockedMqMsgKey(pendingMsgLabel); + redisUtils.delete(key); + //logger.info("【登录操作事件监听器】删除pendingMsgLabel成功:{}", pendingMsgLabel); + } +} diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/UserPointActionLogService.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/UserPointActionLogService.java index b156816c80..360edcb9cb 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/UserPointActionLogService.java +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/UserPointActionLogService.java @@ -119,6 +119,12 @@ public interface UserPointActionLogService extends BaseService grantPointParam); + /** + * 需求完成-志愿者发放积分 + * @param grantPointParam + */ + void grantServerPoint(List grantPointParam); + /** * @Description 通过事件推送进行积分加减 * @param event diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/PointAdjustmentLogServiceImpl.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/PointAdjustmentLogServiceImpl.java index e5aad18cef..5002214030 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/PointAdjustmentLogServiceImpl.java +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/PointAdjustmentLogServiceImpl.java @@ -59,7 +59,7 @@ import java.util.List; import java.util.Map; /** - * + * * * @author generator generator@elink-cn.com * @since v1.0.0 2020-07-27 @@ -177,7 +177,9 @@ public class PointAdjustmentLogServiceImpl extends BaseServiceImpl baseDao.selectPageResiPoin(formDTO)); return new PageData<>(pageInfo.getList(), pageInfo.getTotal()); } + + /** + * 需求完成,给志愿者发放积分 + * @param list + */ + @Override + public void grantServerPoint(List list){ + if (CollectionUtils.isEmpty(list)){ + return; + } + list.forEach(grantPoint->{ + if (null != grantPoint.getPoint()) { + //1.新增用户积分行为记录 + UserPointActionLogEntity action = new UserPointActionLogEntity(); + action.setCustomerId(grantPoint.getCustomerId()); + action.setBizType("community_service"); + action.setPoint(grantPoint.getPoint()); + //完成了XXX的需求 + action.setEventStatement(grantPoint.getRemark()); + //需求分类表中一级分类的名称 + action.setEventId(EventEnum.FINISH_USER_DEMAND.getEventTag()); + action.setActionFlag(grantPoint.getActionFlag()); + action.setUserId(grantPoint.getUserId()); + action.setCreatedBy(grantPoint.getOperatorId()); + action.setUpdatedBy(grantPoint.getOperatorId()); + action.setSourceType(grantPoint.getSourceType()); + action.setSourceId(grantPoint.getSourceId()); + // 需求所属分类编码,对应objectId + action.setObjectId(grantPoint.getObjectId()); + //需求所属分类-一级分类名称 + action.setEventName(grantPoint.getEventName()); + baseDao.insert(action); + //2.新增/修改用户积分日统计 + DimIdGenerator.DimIdBean dimVal = DimIdGenerator.getDimIdBean(new Date()); + UserPointStatisticalDailyEntity statistical = ConvertUtils.sourceToTarget(dimVal, UserPointStatisticalDailyEntity.class); + statistical.setPointChange(grantPoint.getPoint()); + statistical.setActionFlag(grantPoint.getActionFlag()); + statistical.setCustomerId(grantPoint.getCustomerId()); + statistical.setUserId(grantPoint.getUserId()); + statistical.setCreatedBy(grantPoint.getOperatorId()); + statistical.setUpdatedBy(grantPoint.getOperatorId()); + userPointStatisticalDailyService.insertOrUpdate(statistical); + //3.新增/修改用户积分日统计 + UserPointTotalEntity point = new UserPointTotalEntity(); + point.setCustomerId(grantPoint.getCustomerId()); + point.setUserId(grantPoint.getUserId()); + point.setTotalPoint(grantPoint.getPoint()); + point.setUsablePoint(grantPoint.getPoint()); + point.setUsedPoint(NumConstant.ZERO); + point.setCreatedBy(grantPoint.getOperatorId()); + point.setUpdatedBy(grantPoint.getOperatorId()); + userPointTotalService.insertOrUpdate(point); + } + }); + } } \ No newline at end of file diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/UserPointTotalServiceImpl.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/UserPointTotalServiceImpl.java index 7ba7c79b4e..66f83715c8 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/UserPointTotalServiceImpl.java +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/UserPointTotalServiceImpl.java @@ -63,8 +63,12 @@ public class UserPointTotalServiceImpl extends BaseServiceImpl> customizedHeatMap = new HashMap<>(); customizedTuples.forEach(tuple -> { List queue = customizedHeatMap.get(tuple.getScore()); - if((CollectionUtils.isEmpty(queue))) queue = new LinkedList<>(); + if((CollectionUtils.isEmpty(queue))) { + queue = new LinkedList<>(); + } queue.add(parseObject(tuple.getValue(), IssueCategoryTagResultDTO.class)); customizedHeatMap.put(tuple.getScore(),queue); }); @@ -137,8 +139,9 @@ public class IssueProjectTagDictRedis { //默认、自定义标签,只要有一个是空就触发补偿 //不信任缓存数据 if(!CollectionUtils.isEmpty(result) && !CollectionUtils.isEmpty(result.get(ModuleConstants.DEFAULT_TAG_CATEGORY_NAME)) - && !CollectionUtils.isEmpty(result.get(ModuleConstants.CUSTOMIZED_TAG_CATEGORY_NAME))) + && !CollectionUtils.isEmpty(result.get(ModuleConstants.CUSTOMIZED_TAG_CATEGORY_NAME))) { return result; + } @@ -183,11 +186,13 @@ public class IssueProjectTagDictRedis { IssueProjectCategoryDictEntity otherCategory = categoryDictDao.selectSingleByCustomerIdAndCategoryNameAndCategoryType(customerId, ModuleConstants.CATEGORY_NAME_OTHERS, null); boolean ifOtherOnly = null != otherCategory && (!CollectionUtils.isEmpty(category) && category.size() == NumConstant.ONE && category.contains(otherCategory.getId())); Set keys; - if (CollectionUtils.isEmpty(category) || ifOtherOnly) + if (CollectionUtils.isEmpty(category) || ifOtherOnly) { keys = redisUtils.keys(GovIssueRedisKeys.getGovernmentTagKey(customerId, null)); - else keys = category.stream().map(key -> { - return GovIssueRedisKeys.getGovernmentTagKey(customerId, key); - }).collect(Collectors.toSet()); + } else { + keys = category.stream().map(key -> { + return GovIssueRedisKeys.getGovernmentTagKey(customerId, key); + }).collect(Collectors.toSet()); + } //如果keys集合为空,说明缓存中没有当前客户的标签排行信息,直接进行补偿 if (!CollectionUtils.isEmpty(keys)){ keys.remove(GovIssueRedisKeys.getGovernmentTagKey(customerId,ModuleConstants.CUSTOMIZED_TAG_CATEGORY_NAME)); @@ -211,7 +216,9 @@ public class IssueProjectTagDictRedis { tupleSet.forEach(tuple -> { Double heatScore = tuple.getScore(); List queue = heatMap.get(heatScore); - if (CollectionUtils.isEmpty(queue)) queue = new LinkedList<>(); + if (CollectionUtils.isEmpty(queue)) { + queue = new LinkedList<>(); + } queue.add(parseObject(tuple.getValue(), IssueCategoryTagResultDTO.class)); heatMap.put(heatScore, queue); }); @@ -228,7 +235,9 @@ public class IssueProjectTagDictRedis { Map> customizedHeatMap = new HashMap<>(); customizedTuples.forEach(tuple -> { List queue = customizedHeatMap.get(tuple.getValue()); - if((CollectionUtils.isEmpty(queue))) queue = new LinkedList<>(); + if((CollectionUtils.isEmpty(queue))) { + queue = new LinkedList<>(); + } queue.add(parseObject(tuple.getValue(), IssueCategoryTagResultDTO.class)); customizedHeatMap.put((Double) tuple.getValue(),queue); }); @@ -323,7 +332,9 @@ public class IssueProjectTagDictRedis { String redisKey = GovIssueRedisKeys.getGovernmentTagKey(customerId, k); v.forEach(tag -> { List unit = scoreMap.get(tag.getIssueUseCount()); - if (CollectionUtils.isEmpty(unit)) unit = new LinkedList<>(); + if (CollectionUtils.isEmpty(unit)) { + unit = new LinkedList<>(); + } IssueCategoryTagResultDTO object = ConvertUtils.sourceToTarget(tag, IssueCategoryTagResultDTO.class); object.setName(tag.getTagName()); unit.add(object); @@ -423,7 +434,9 @@ public class IssueProjectTagDictRedis { * @date 2021.03.20 01:04 */ public void batchIncrScore(Map>> param){ - if(CollectionUtils.isEmpty(param)) return; + if(CollectionUtils.isEmpty(param)) { + return; + } redisTemplate.executePipelined((RedisCallback) connection -> { param.forEach((operation,map) -> { if(!CollectionUtils.isEmpty(map)){ @@ -452,7 +465,9 @@ public class IssueProjectTagDictRedis { * @date 2021.03.22 16:20 */ public void updateTagAvailabilityBySecondCategoryIds(String customerId,ListsecondCategoryIds,String availableFlag){ - if(CollectionUtils.isEmpty(secondCategoryIds)) return; + if(CollectionUtils.isEmpty(secondCategoryIds)) { + return; + } secondCategoryIds.forEach(cid -> { String key = GovIssueRedisKeys.getGovernmentTagKey(customerId, cid); @@ -463,7 +478,9 @@ public class IssueProjectTagDictRedis { Map> heatMap = new HashMap<>(); tagTuples.forEach(tuple -> { Set queue = heatMap.get(tuple.getValue()); - if((CollectionUtils.isEmpty(queue))) queue = new HashSet<>(); + if((CollectionUtils.isEmpty(queue))) { + queue = new HashSet<>(); + } IssueCategoryTagResultDTO ele = parseObject(tuple.getValue(), IssueCategoryTagResultDTO.class); ele.setIsDisable(availableFlag); queue.add(ele); diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/redis/IssueVoteDetailRedis.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/redis/IssueVoteDetailRedis.java index 580b6a0f76..6330942024 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/redis/IssueVoteDetailRedis.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/redis/IssueVoteDetailRedis.java @@ -88,7 +88,9 @@ public class IssueVoteDetailRedis { } public void deleteBatch(List issueIds){ - if(CollectionUtils.isEmpty(issueIds)) return ; + if(CollectionUtils.isEmpty(issueIds)) { + return ; + } Set keys = issueIds.stream().map(id -> { return IssueConstant.REDIS_KEY + id; }).collect(Collectors.toSet()); @@ -293,4 +295,4 @@ public class IssueVoteDetailRedis { } -} \ No newline at end of file +} diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectTagDictServiceImpl.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectTagDictServiceImpl.java index cf5af822da..cbc5d8822c 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectTagDictServiceImpl.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectTagDictServiceImpl.java @@ -185,7 +185,9 @@ public class IssueProjectTagDictServiceImpl extends BaseServiceImpl imp int issueAffectedRow = baseDao.insertOne(issueDTO); if(issueAffectedRow == NumConstant.ONE && (StringUtils.isNotBlank(issueDTO.getId()) || StringUtils.isNotBlank(issueDTO.getIssueId()))){ - if(StringUtils.isNotBlank(issueDTO.getIssueId())) issueDTO.setId(issueDTO.getIssueId()); + if(StringUtils.isNotBlank(issueDTO.getIssueId())) { + issueDTO.setId(issueDTO.getIssueId()); + } //2.新增议题流程 IssueProcessDTO issueProcessDTO = new IssueProcessDTO(); @@ -322,7 +324,9 @@ public class IssueServiceImpl extends BaseServiceImpl imp voteInitCache.setShouldVoteCount(issueShiftedFromTopicFormDTO.getVotableCount()); issueVoteDetailRedis.set(voteInitCache); - if(StringUtils.isNotBlank(issueShiftedFromTopicFormDTO.getIssueId())) issueDTO.setId(issueShiftedFromTopicFormDTO.getIssueId()); + if(StringUtils.isNotBlank(issueShiftedFromTopicFormDTO.getIssueId())) { + issueDTO.setId(issueShiftedFromTopicFormDTO.getIssueId()); + } return issueDTO.getId(); } logger.warn(String.format( @@ -393,9 +397,11 @@ public class IssueServiceImpl extends BaseServiceImpl imp applicationList.sort(Comparator.comparing(IssueApplicationDTO::getUpdatedTime, Collections.reverseOrder())); logger.error("com.epmet.service.impl.IssueServiceImpl.topicShiftedToIssueV2,查出多条转移提提交记录,话题Id:{}", param.getTopicId()); } - if(!isStaffAudition) - if(StringUtils.equals(ModuleConstants.ISSUE_APPLICATION_STATUS_UNDER_AUDITING,applicationList.iterator().next().getApplyStatus())) - ifRepeat = true; + if(!isStaffAudition) { + if(StringUtils.equals(ModuleConstants.ISSUE_APPLICATION_STATUS_UNDER_AUDITING,applicationList.iterator().next().getApplyStatus())) { + ifRepeat = true; + } + } applyIds.addAll(applicationList.stream().map(IssueApplicationDTO::getId).collect(Collectors.toList())); } if(!ifRepeat) { @@ -442,14 +448,17 @@ public class IssueServiceImpl extends BaseServiceImpl imp }); } - if(CollectionUtils.isNotEmpty(applyIds)) - result.setIssueApplicationId(applyIds.iterator().next()); + if(CollectionUtils.isNotEmpty(applyIds)) { + result.setIssueApplicationId(applyIds.iterator().next()); + } //只有当审核开关关闭 或 工作端人员审核通过时才生成议题 if(!ifOpen || StringUtils.equals(ModuleConstants.AUDITION_TYPE_APPROVAL,defaultStatusUnderAuditing)){ ValidatorUtils.validateEntity(param, IssueShiftedFromTopicFormDTO.IssueGenerationGroup.class); - if(isStaffAudition) param.setUserId(param.getIssueAuthorId()); + if(isStaffAudition) { + param.setUserId(param.getIssueAuthorId()); + } result.setIssueId(issueShiftedToTopic(param)); if(StringUtils.equals(ModuleConstants.AUDITION_TYPE_AUTO_PASSED,defaultStatusUnderAuditing)){ applicationList.forEach(apply -> { @@ -498,7 +507,9 @@ public class IssueServiceImpl extends BaseServiceImpl imp Date unifiedDate = new Date(); IssueApplicationDTO application = applicationService.get(param.getIssueApplicationId()); - if(null == application) throw new RenException("没有相应的议题申请信息"); + if(null == application) { + throw new RenException("没有相应的议题申请信息"); + } IssueApplicationDTO app2update = new IssueApplicationDTO(); //app2update.setId(param.getIssueApplicationId()); @@ -543,7 +554,9 @@ public class IssueServiceImpl extends BaseServiceImpl imp app2update.setIssueId(issueResult.getIssueId()); } - }else throw new RenException(topicInfo.getInternalMsg()); + }else { + throw new RenException(topicInfo.getInternalMsg()); + } //发送站内信 @@ -588,9 +601,7 @@ public class IssueServiceImpl extends BaseServiceImpl imp **/ @Override public List votingList(CommonIssueListFormDTO issueListForm) { - issueListForm.setPageNo(null == issueListForm.getPageNo() ? NumConstant.ZERO : - (issueListForm.getPageNo() - NumConstant.ONE)*issueListForm.getPageSize() - ); + PageHelper.startPage(issueListForm.getPageNo(), issueListForm.getPageSize(), issueListForm.getIsPage()); return baseDao.selectVotingList(issueListForm); } @@ -603,9 +614,7 @@ public class IssueServiceImpl extends BaseServiceImpl imp **/ @Override public List closedList(CommonIssueListFormDTO issueListForm) { - issueListForm.setPageNo(null == issueListForm.getPageNo() ? NumConstant.ZERO : - (issueListForm.getPageNo() - NumConstant.ONE)*issueListForm.getPageSize() - ); + PageHelper.startPage(issueListForm.getPageNo(), issueListForm.getPageSize(), issueListForm.getIsPage()); return baseDao.selectClosedList(issueListForm); } @@ -1566,15 +1575,17 @@ public class IssueServiceImpl extends BaseServiceImpl imp } if (CollectionUtils.isNotEmpty(resultList)) { resultList = resultList.stream().sorted(Comparator.comparing(UnResolvedResultDTO::getClosedTime).reversed()).collect(Collectors.toList()); - int fromIndex = (fromDTO.getPageNo() - NumConstant.ONE) * fromDTO.getPageSize(); - int toIndex = fromDTO.getPageNo() * fromDTO.getPageSize(); - if (fromIndex >= resultList.size()) { - return new ArrayList<>(); - } - if (toIndex > resultList.size()) { - toIndex = resultList.size(); + if (fromDTO.getIsPage()) { + int fromIndex = (fromDTO.getPageNo() - NumConstant.ONE) * fromDTO.getPageSize(); + int toIndex = fromDTO.getPageNo() * fromDTO.getPageSize(); + if (fromIndex >= resultList.size()) { + return new ArrayList<>(); + } + if (toIndex > resultList.size()) { + toIndex = resultList.size(); + } + resultList = resultList.subList(fromIndex, toIndex); } - resultList = resultList.subList(fromIndex, toIndex); } return resultList; } diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueShareLinkVisitRecordServiceImpl.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueShareLinkVisitRecordServiceImpl.java index cbefa389e9..be578eb2aa 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueShareLinkVisitRecordServiceImpl.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueShareLinkVisitRecordServiceImpl.java @@ -38,7 +38,7 @@ import java.util.List; import java.util.Map; /** - * 议题分享链接访问记录表 + * 议题分享链接访问记录表 * * @author generator generator@elink-cn.com * @since v1.0.0 2020-12-18 @@ -108,7 +108,9 @@ public class IssueShareLinkVisitRecordServiceImpl extends BaseServiceImpl @@ -239,8 +237,6 @@ AND RESOLVE_TYPE = 'resolved' ORDER BY created_time DESC - LIMIT #{pageNo}, - #{pageSize} SELECT id, - organization_name AS 'name' + organization_name AS 'name', + level AS 'level', + area_code AS 'areaCode', + code 'code', + contacts 'contacts', + mobile 'mobile' FROM customer_agency WHERE del_flag = '0' AND id IN @@ -123,7 +128,10 @@ SELECT id AS 'agencyId', organization_name AS 'agencyName', - total_user AS 'totalUser' + total_user AS 'totalUser', + IFNULL(code,'')AS 'code', + IFNULL(contacts,'')AS 'contacts', + IFNULL(mobile,'')AS 'mobile' FROM customer_agency WHERE del_flag = '0' AND pid = #{pId} @@ -182,23 +190,10 @@ ca.organization_name AS "agencyName", ca.pids AS "pids", ca.level level, - ( CASE WHEN ca.longitude is null THEN - ( SELECT longitude FROM customer_agency - WHERE del_flag = '0' AND customer_id = (SELECT customer_id FROM customer_agency WHERE id = ca.id) - ORDER BY pid ASC LIMIT 1 - ) - ELSE ca.longitude - END - ) longitude, - ( CASE WHEN ca.latitude is null THEN - ( SELECT latitude FROM customer_agency - WHERE del_flag = '0' AND customer_id = (SELECT customer_id FROM customer_agency WHERE id = ca.id) - ORDER BY pid ASC LIMIT 1 - ) - ELSE ca.latitude - END - ) latitude + IFNULL(ca.longitude, cc.longitude) longitude, + IFNULL(ca.latitude, cc.latitude) latitude FROM customer_agency ca + INNER JOIN customer_agency cc ON cc.pid = '0' AND ca.customer_id = cc.customer_id WHERE ca.del_flag = '0' AND ca.pids = #{subAgencyPids} ORDER BY ca.created_time DESC @@ -722,4 +717,41 @@ AND PID = #{orgId} + + + + UPDATE customer_agency + SET AREA_CODE = '', + PARENT_AREA_CODE = '', + UPDATED_BY=#{operateUserId}, + UPDATED_TIME = NOW() + WHERE + DEL_FLAG = '0' + AND CUSTOMER_ID = #{customerId} + AND PARENT_AREA_CODE LIKE concat( #{originalParentAreaCode}, '%' ) + + + + UPDATE customer_agency + SET AREA_CODE = '', + PARENT_AREA_CODE = '', + UPDATED_BY=#{operateUserId}, + UPDATED_TIME = NOW() + WHERE + DEL_FLAG = '0' + AND CUSTOMER_ID = #{customerId} + AND pids LIKE concat('%',#{agencyId}, '%' ) + diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerDepartmentDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerDepartmentDao.xml index fbfbe06478..1fe7e9f906 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerDepartmentDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerDepartmentDao.xml @@ -23,7 +23,10 @@ SELECT id AS 'departmentId', department_name AS 'departmentName', - total_user AS 'totalUser' + total_user AS 'totalUser', + IFNULL(code,'')AS 'code', + IFNULL(contacts,'')AS 'contacts', + IFNULL(mobile,'')AS 'mobile' FROM customer_department WHERE del_flag = '0' AND agency_id = #{agencyId} @@ -84,4 +87,21 @@ UPDATED_TIME=NOW() where id=#{deptId} + + + update customer_department + SET AREA_CODE = '', + UPDATED_BY=#{operateUserId}, + UPDATED_TIME = NOW() + where customer_id=#{customerId} + AND AREA_CODE LIKE concat(#{areaCode}, '%' ) + + + + update customer_department + SET AREA_CODE = #{areaCode}, + UPDATED_TIME = NOW() + where del_flag='0' + and agency_id=#{agencyId} + \ 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 0ddf90f008..ef2845201c 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 @@ -189,7 +189,11 @@ manage_district AS manageDistrict, total_user AS totalUser, pid AS agencyId, - pids AS pids + pids AS pids, + `code` AS 'code', + grid_type AS 'gridType', + contacts AS 'contacts', + mobile AS 'mobile' FROM customer_grid WHERE @@ -233,6 +237,10 @@ set grid_name = #{gridName}, manage_district = #{manageDistrict}, + code = #{code}, + grid_type = #{gridType}, + contacts = #{contacts}, + mobile = #{mobile}, updated_by = #{updatedBy}, UPDATED_TIME=NOW() where @@ -277,9 +285,13 @@ + + + + + update customer_grid + SET AREA_CODE = '', + UPDATED_BY=#{operateUserId}, + UPDATED_TIME = NOW() + where customer_id=#{customerId} + AND pids LIKE concat('%',#{agencyId}, '%' ) + + + + update customer_grid + SET AREA_CODE = #{areaCode}, + UPDATED_TIME = NOW() + where del_flag='0' + and pid=#{agencyId} + diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml index 37d56c5ec4..f997a5cf3a 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml @@ -234,15 +234,18 @@ @@ -45,4 +49,28 @@ GROUP BY matterId + + + \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcPartyServiceCenterDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcPartyServiceCenterDao.xml index b241afaf64..f159698f7f 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcPartyServiceCenterDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcPartyServiceCenterDao.xml @@ -14,16 +14,25 @@ - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/ResiEventScanTaskDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/ResiEventScanTaskDTO.java new file mode 100644 index 0000000000..303159fbdf --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/ResiEventScanTaskDTO.java @@ -0,0 +1,100 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +/** + * 事件附件安全校验任务表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-12-22 + */ +@Data +public class ResiEventScanTaskDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 唯一标识 + */ + private String id; + + /** + * 客户ID + */ + private String customerId; + + /** + * 事件Id,关联resi_event的id + */ + private String resiEventId; + + /** + * 事件附件表主键,对应dataId + */ + private String resiEventAttachmentId; + + /** + * 阿里云审核任务Id + */ + private String taskId; + + /** + * 审核状态【auditing: 审核中; +auto_passed: 自动通过; +review:结果不确定,需要人工审核; +block: 结果违规;】 + */ + private String status; + + /** + * 附件类型(视频 - video、 语音 - voice 文件 - doc) + */ + private String attachmentType; + + /** + * 删除标识:0.未删除 1.已删除 + */ + private String delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ReplyFormDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ReplyFormDTO.java index a6729ff46f..c3b94741cb 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ReplyFormDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ReplyFormDTO.java @@ -31,4 +31,6 @@ public class ReplyFormDTO implements Serializable { */ @NotBlank(message = "userId不能为空",groups = AddUserInternalGroup.class) private String userId; + + private String customerId; } diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ResiEventFormDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ResiEventFormDTO.java index b0d1f4ff99..e297f4f153 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ResiEventFormDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ResiEventFormDTO.java @@ -34,7 +34,7 @@ public class ResiEventFormDTO implements Serializable { /** * 事件内容,最多1000 */ - @Length(min = 1, max = 1000, message = "请填写内容,最多输入1000字", groups = AddUserShowGroup.class) + @Length(max = 1000, message = "请填写内容,最多输入1000字", groups = AddUserShowGroup.class) private String eventContent; /** @@ -54,9 +54,9 @@ public class ResiEventFormDTO implements Serializable { private String address; /** - * 附件列表 + * 图片附件列表 */ - private List attachmentList; + private List attachmentList; /** * @的人 */ @@ -82,4 +82,9 @@ public class ResiEventFormDTO implements Serializable { */ @NotBlank(message = "customerId不能为空",groups = AddUserInternalGroup.class) private String customerId; + + /** + * 语音附件列表 + */ + private List voiceList; } diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ResiEventLsitFormDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ResiEventLsitFormDTO.java new file mode 100644 index 0000000000..8c9e190bb1 --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ResiEventLsitFormDTO.java @@ -0,0 +1,41 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Author sun + * @Description 【事件】(未处理、处理中、已办结)地图、列表 + **/ +@Data +public class ResiEventLsitFormDTO implements Serializable { + /** + * 网格Id + */ + @NotBlank(message = "网格Id不能为空",groups = Event.class) + private String gridId; + /** + * 未处理:un_read;处理中:processing;已办结:closed_case + */ + @NotBlank(message = "statusCondition不能为空",groups = Event.class) + private String statusCondition; + /** + * 请求页码 + * */ + @Min(1) + private int pageNo = 1; + /** + * 每页多少条数据 + * */ + private int pageSize = 20; + /** + * 是否分页(是:true 否:false) + * */ + private Boolean isPage = true; + + public interface Event {} + +} diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ShiftProjectListFromDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ShiftProjectListFromDTO.java index d7e4cd1801..48d71f28d5 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ShiftProjectListFromDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ShiftProjectListFromDTO.java @@ -25,4 +25,6 @@ public class ShiftProjectListFromDTO implements Serializable { * 每页记录数 */ private Integer pageSize; + + private Boolean isPage = true; } diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/EventDetailResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/EventDetailResultDTO.java index 0b6bb8ccb2..67e1843931 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/EventDetailResultDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/EventDetailResultDTO.java @@ -1,5 +1,6 @@ package com.epmet.dto.result; +import com.epmet.commons.tools.dto.form.FileCommonDTO; import com.epmet.dto.EventProjectInfoDTO; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; @@ -65,6 +66,10 @@ public class EventDetailResultDTO implements Serializable { * 报事提到的人 */ private List eventPerson; + /** + * 报事提到的人,用户id + */ + private List eventPersonIds; /** * 被提到的组织 @@ -76,7 +81,20 @@ public class EventDetailResultDTO implements Serializable { */ private String eventPeopleName; + /** + * 语音附件url集合 + */ + private List voiceList; + /** + * 事件附件 + */ @JsonIgnore + private List attachmentList; + + // @JsonIgnore + /** + * 报事人id: resi_event.CREATED_BY + */ private String eventUserId; /** @@ -93,6 +111,11 @@ public class EventDetailResultDTO implements Serializable { //@JsonIgnore private Boolean isProject; + /** + * userIdentity : 报事人:report-user;被@的人:mention-user; 其他用户:other + */ + private String userIdentity; + public EventDetailResultDTO() { this.eventTime = ""; this.eventContent = ""; @@ -105,4 +128,22 @@ public class EventDetailResultDTO implements Serializable { this.eventPerson = new ArrayList<>(); this.projectInfo = new EventProjectInfoDTO(); } + + @Data + public static class Attachment { + /** + * url + */ + private String url; + + /** + * 附件类型 + */ + private String type; + + /** + * 附件类型 + */ + private Integer duration; + } } diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/EventListResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/EventListResultDTO.java index 23ecd11982..47fc45c7c6 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/EventListResultDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/EventListResultDTO.java @@ -1,5 +1,6 @@ package com.epmet.dto.result; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import java.io.Serializable; @@ -45,4 +46,27 @@ public class EventListResultDTO implements Serializable { */ private List eventImgs; + /** + * 语音附件url集合 + */ + private List voiceList; + /** + * 事件附件 + */ + @JsonIgnore + private List attachmentList; + + @Data + public static class Attachment { + /** + * url + */ + private String url; + + /** + * 附件类型 + */ + private String type; + } + } diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/NewEventsResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/NewEventsResultDTO.java index 8035108f6a..68e0ba99ca 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/NewEventsResultDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/NewEventsResultDTO.java @@ -1,5 +1,6 @@ package com.epmet.dto.result; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import java.io.Serializable; @@ -31,4 +32,25 @@ public class NewEventsResultDTO implements Serializable { private List eventImgs; private String eventId; + /** + * 语音附件url集合 + */ + private List voiceList; + /** + * 事件附件 + */ + @JsonIgnore + private List attachmentList; + + @Data + public static class Attachment { + /** + * url + */ + private String url; + /** + * 附件类型 + */ + private String type; + } } diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/PendingResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/PendingResultDTO.java index 7fe06f2dce..ed9f0d8d16 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/PendingResultDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/PendingResultDTO.java @@ -28,4 +28,6 @@ public class PendingResultDTO implements Serializable { private String sourceId; @JsonIgnore private String projectId; + private String longitude; + private String latitude; } diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ResiEventListResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ResiEventListResultDTO.java new file mode 100644 index 0000000000..3fa8432bab --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ResiEventListResultDTO.java @@ -0,0 +1,85 @@ +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; + +/** + * @Author sun + * @Description 【事件】(未处理、处理中、已办结)地图、列表 + **/ +@Data +public class ResiEventListResultDTO implements Serializable { + private static final long serialVersionUID = -7372245830000262134L; + + /** + * 事件id + */ + private String resiEventId; + /** + * 事件内容 + */ + private String eventContent; + /** + * 图片列表,可为空 + */ + private List imgList; + /** + * true展示;false不展示 + */ + private Boolean redDot; + /** + * 处理中:processing;已办结:closed_case + */ + private String status; + /** + * true:已转项目;false:未立项 + */ + private Boolean shiftProject; + /** + * 列表显示时间用此列:yyyy-MM-dd HH:mm:ss;处理中:上报事件时间,处理中:最新一次处理事件;已办结:办结时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + private Date showTime; + /** + * true:显示回复;false:不显示回复按钮 + */ + private String replyButtonFlag; + /** + * 事件是否被阅读过;1已读;针对报事人待处理列表 + */ + private Boolean readFlag; + /** + * 语音附件url集合 + */ + private List voiceList; + /** + * 经度 + */ + private String longitude; + /** + * 纬度 + */ + private String latitude; + /** + * 事件附件 + */ + @JsonIgnore + private List attachmentList; + + @Data + public static class Attachment { + /** + * url + */ + private String url; + /** + * 附件类型 + */ + private String type; + } +} diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ResolvedResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ResolvedResultDTO.java index 644a4d33cd..14187406e3 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ResolvedResultDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ResolvedResultDTO.java @@ -50,4 +50,7 @@ public class ResolvedResultDTO implements Serializable { * 话题内容 */ private String topicContent; + private String longitude; + private String latitude; + } diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/UnResolvedResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/UnResolvedResultDTO.java index f803df9fc6..53f183c389 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/UnResolvedResultDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/UnResolvedResultDTO.java @@ -50,4 +50,6 @@ public class UnResolvedResultDTO implements Serializable { * 话题内容 */ private String topicContent; + private String longitude; + private String latitude; } diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/UserMentionResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/UserMentionResultDTO.java index 48bb9583ba..0abae1961f 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/UserMentionResultDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/UserMentionResultDTO.java @@ -1,6 +1,7 @@ package com.epmet.dto.result; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import java.io.Serializable; @@ -58,4 +59,27 @@ public class UserMentionResultDTO implements Serializable { */ private String replyButtonFlag; + /** + * 语音附件url集合 + */ + private List voiceList; + + /** + * 事件附件 + */ + @JsonIgnore + private List attachmentList; + + @Data + public static class Attachment { + /** + * url + */ + private String url; + /** + * 附件类型 + */ + private String type; + } + } diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/GovProjectOpenFeignClient.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/GovProjectOpenFeignClient.java index 7824ba71ee..9eaca9c495 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/GovProjectOpenFeignClient.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/GovProjectOpenFeignClient.java @@ -134,4 +134,11 @@ public interface GovProjectOpenFeignClient { */ @PostMapping("gov/project/resievent/queryResiEventManageRedDot/{agencyId}") Result queryResiEventManageRedDot(@PathVariable("agencyId") String agencyId); + + /** + * @Author sun + * @Description 定时任务调用-事件语音附件自动审核 + **/ + @PostMapping("gov/project/resievent/autoAudit") + Result autoAudit(); } diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/fallback/GovProjectOpenFeignClientFallback.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/fallback/GovProjectOpenFeignClientFallback.java index 41f41664c1..04aed95fa5 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/fallback/GovProjectOpenFeignClientFallback.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/fallback/GovProjectOpenFeignClientFallback.java @@ -132,4 +132,13 @@ public class GovProjectOpenFeignClientFallback implements GovProjectOpenFeignCli public Result queryResiEventManageRedDot(String agencyId) { return ModuleUtils.feignConError(ServiceConstant.GOV_PROJECT_SERVER, "queryResiEventManageRedDot", agencyId); } + + /** + * @Author sun + * @Description 定时任务调用-事件语音附件自动审核 + **/ + @Override + public Result autoAudit() { + return ModuleUtils.feignConError(ServiceConstant.GOV_PROJECT_SERVER, "autoAudit"); + } } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/EventConstant.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/EventConstant.java index 7daf809615..38eb0e0923 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/EventConstant.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/EventConstant.java @@ -49,4 +49,31 @@ public interface EventConstant { */ String TYPE_GOV = "gov"; String TYPE_RESI = "resi"; + + /** + * 附件文件类型 + * 图片 - image、文档 - doc、语音 - voice、视频 - video + */ + String FILE_IMAGE = "image"; + String FILE_DOC = "doc"; + String FILE_VOICE = "voice"; + String FILE_VIDEO = "video"; + + String AUDITING = "auditing"; + String AUTO_PASSED = "auto_passed"; + String REVIEW = "review"; + String BLOCK = "block"; + String REJECTED = "rejected"; + String APPROVED = "approved"; + String SUBMIT = "submit"; + String IMAGE = "image"; + String VIDEO = "video"; + String VOICE = "voice"; + String DOC = "doc"; + + + // 报事人:report_user;被@的人:mention_user; 其他用户:other + // String REPORT_USER="report_user"; + String MENTION_USER="mention_user"; + String OTHER="other"; } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/UserMessageConstant.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/UserMessageConstant.java index 9a1323f55f..8d40c4ebe9 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/UserMessageConstant.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/UserMessageConstant.java @@ -57,4 +57,24 @@ public interface UserMessageConstant { */ String STAY_REMINDER_MSG_3 = "滞留项目:%n%s"; + /** + * 事件消息标题 + */ + String EVENT_TITILE = "您有一条事件消息!"; + + /** + * 事件被@的人或上报给网格或组织的回复 + */ + String REPLY_EVENT = "%s对您上报的事件进行了回复,请查看。"; + + /** + * 事件被立项 + */ + String PROJECT_EVENT = "%s将您上报的事件转为项目,请查看。"; + + /** + * 事件被办结 + */ + String RCLOSE_PROJECT_EVENT = "%s将您上报的事件状态调整为已办结,请查看。"; + } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ResiEventController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ResiEventController.java index 70706d8461..503e0f2bfe 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ResiEventController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ResiEventController.java @@ -258,4 +258,25 @@ public class ResiEventController { ValidatorUtils.validateEntity(formDTO,ResiEventResearchAnalysisFormDTO.AddUserInternalGroup.class); return new Result().ok(resiEventService.queryResiEventResearchAnalysis(formDTO)); } + + /** + * @Author sun + * @Description 定时任务调用-事件语音附件自动审核 + **/ + @PostMapping("autoAudit") + public Result autoAudit() { + resiEventService.autoAudit(); + return new Result(); + } + + /** + * @Author sun + * @Description 【事件】(未处理、处理中、已办结)地图、列表 + **/ + @PostMapping("resieventlist") + public Result> resiEventList(@RequestBody ResiEventLsitFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, ResiEventLsitFormDTO.Event.class); + return new Result>().ok(resiEventService.resiEventList(formDTO)); + } + } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ResiEventReplyController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ResiEventReplyController.java index 002621c98f..fd1c4983c7 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ResiEventReplyController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ResiEventReplyController.java @@ -74,6 +74,7 @@ public class ResiEventReplyController { @PostMapping("govReply") public Result govReply(@LoginUser TokenDto tokenDto,@RequestBody ReplyFormDTO replyFormDTO){ replyFormDTO.setUserId(tokenDto.getUserId()); + replyFormDTO.setCustomerId(tokenDto.getCustomerId()); ValidatorUtils.validateEntity(replyFormDTO,ReplyFormDTO.AddUserShowGroup.class,ReplyFormDTO.AddUserInternalGroup.class); resiEventReplyService.govReply(replyFormDTO); return new Result(); diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ResiEventScanTaskController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ResiEventScanTaskController.java new file mode 100644 index 0000000000..bf86dad1de --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ResiEventScanTaskController.java @@ -0,0 +1,40 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.controller; + +import com.epmet.service.ResiEventScanTaskService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + + +/** + * 事件附件安全校验任务表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-12-22 + */ +@RestController +@RequestMapping("resieventscantask") +public class ResiEventScanTaskController { + + @Autowired + private ResiEventScanTaskService resiEventScanTaskService; + + +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java index 673acf371e..3006a8b4f6 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java @@ -180,24 +180,18 @@ public interface ProjectDao extends BaseDao { * @author zhaoqifeng * @date 2021/7/27 10:28 * @param gridId - * @param pageNo - * @param pageSize * @return java.util.List */ - List selectPendingListByGrid(@Param("gridId")String gridId, @Param("pageNo") Integer pageNo, - @Param("pageSize") Integer pageSize); + List selectPendingListByGrid(@Param("gridId")String gridId); /** * 获取党建声音已结案列表 * @author zhaoqifeng * @date 2021/7/27 10:28 * @param gridId - * @param pageNo - * @param pageSize * @return java.util.List */ - List selectResolvedListByGrid(@Param("gridId")String gridId, @Param("pageNo") Integer pageNo, - @Param("pageSize") Integer pageSize); + List selectResolvedListByGrid(@Param("gridId")String gridId); /** * 无需解决列表 diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ResiEventDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ResiEventDao.java index a39c72aa76..cf06138591 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ResiEventDao.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ResiEventDao.java @@ -95,4 +95,10 @@ public interface ResiEventDao extends BaseDao { * @return */ List selectUserReported(PageUserReportEventFormDTO formDTO); + + /** + * @Author sun + * @Description 查询网格下各种状态事件列表 + **/ + List resiEventList(@Param("gridId") String gridId, @Param("statusCondition")String statusCondition); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ResiEventReportOrgDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ResiEventReportOrgDao.java index 0668eb78f7..ddddb65c63 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ResiEventReportOrgDao.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ResiEventReportOrgDao.java @@ -64,4 +64,6 @@ public interface ResiEventReportOrgDao extends BaseDao Integer selectUnReadCount(String agencyId); Integer selectRedCount(String agencyId); + + ResiEventReportOrgEntity getByEventId(@Param("resiEventId") String resiEventId); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ResiEventScanTaskDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ResiEventScanTaskDao.java new file mode 100644 index 0000000000..fa2479ba11 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ResiEventScanTaskDao.java @@ -0,0 +1,33 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.entity.ResiEventScanTaskEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 事件附件安全校验任务表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-12-22 + */ +@Mapper +public interface ResiEventScanTaskDao extends BaseDao { + +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ResiEventAttachmentEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ResiEventAttachmentEntity.java index 255c7c465c..658922b493 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ResiEventAttachmentEntity.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ResiEventAttachmentEntity.java @@ -73,4 +73,25 @@ public class ResiEventAttachmentEntity extends BaseEpmetEntity { */ private Integer sort; + /** + * 附件状态(审核中:auditing; + auto_passed: 自动通过; + review:结果不确定,需要人工审核; + block: 结果违规; + rejected:人工审核驳回; + approved:人工审核通过) + 现在图片是同步审核的,所以图片只有auto_passed一种状态 + */ + private String status; + + /** + * 审核失败原因 + */ + private String reason; + + /** + * 语音或视频时长,秒 + * */ + private Integer duration; + } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ResiEventEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ResiEventEntity.java index f00dab5a06..ee261096ad 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ResiEventEntity.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ResiEventEntity.java @@ -143,4 +143,20 @@ public class ResiEventEntity extends BaseEpmetEntity { */ private String closeRemark; + /** + * 事件审核状态[涉及附件审核需要加的状态] + * (审核中:auditing; + * auto_passed: 自动通过; + * review:结果不确定,需要人工审核; + * block: 结果违规; + * rejected:人工审核驳回; + * approved:人工审核通过) + */ + private String auditStatus; + + /** + * 审核理由 + */ + private String auditReason; + } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ResiEventScanTaskEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ResiEventScanTaskEntity.java new file mode 100644 index 0000000000..360174e83d --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ResiEventScanTaskEntity.java @@ -0,0 +1,71 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.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 2021-12-22 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("resi_event_scan_task") +public class ResiEventScanTaskEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户ID + */ + private String customerId; + + /** + * 事件Id,关联resi_event的id + */ + private String resiEventId; + + /** + * 事件附件表主键,对应dataId + */ + private String resiEventAttachmentId; + + /** + * 阿里云审核任务Id + */ + private String taskId; + + /** + * 审核状态【auditing: 审核中; +auto_passed: 自动通过; +review:结果不确定,需要人工审核; +block: 结果违规;】 + */ + private String status; + + /** + * 附件类型(视频 - video、 语音 - voice 文件 - doc) + */ + private String attachmentType; + +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ResiEventScanTaskService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ResiEventScanTaskService.java new file mode 100644 index 0000000000..ec29a6beaf --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ResiEventScanTaskService.java @@ -0,0 +1,38 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.service; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.entity.ResiEventScanTaskEntity; + +import java.util.List; + +/** + * 事件附件安全校验任务表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-12-22 + */ +public interface ResiEventScanTaskService extends BaseService { + + /** + * @Author sun + * @Description 获取事件附件待审核列表 + **/ + List getScanTaskList(String draftId, String auditing); +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ResiEventService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ResiEventService.java index c6e52d4cc3..b3b0321144 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ResiEventService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ResiEventService.java @@ -155,4 +155,16 @@ public interface ResiEventService extends BaseService { * @return */ ResiEventResearchAnalysisResDTO queryResiEventResearchAnalysis(ResiEventResearchAnalysisFormDTO formDTO); + + /** + * @Author sun + * @Description 定时任务调用-事件语音附件自动审核 + **/ + void autoAudit(); + + /** + * @Author sun + * @Description 【事件】(未处理、处理中、已办结)地图、列表 + **/ + List resiEventList(ResiEventLsitFormDTO formDTO); } \ No newline at end of file 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 38e428873c..90a11635e7 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 @@ -2810,14 +2810,16 @@ public class ProjectServiceImpl extends BaseServiceImpl getPendingList(ShiftProjectListFromDTO fromDTO) { - int pageIndex = (fromDTO.getPageNo() - NumConstant.ONE) * fromDTO.getPageSize(); - List list = baseDao.selectPendingListByGrid(fromDTO.getGridId(), pageIndex, fromDTO.getPageSize()); - list.forEach(item -> { - ProjectDTO dto = new ProjectDTO(); - dto.setId(item.getProjectId()); - item.setCurrentHandleDepartMent(baseDao.selectDepartmentNameList(dto)); - }); - return list; + PageInfo result = + PageHelper.startPage(fromDTO.getPageNo(), fromDTO.getPageSize(), fromDTO.getIsPage()).doSelectPageInfo(() -> baseDao.selectPendingListByGrid(fromDTO.getGridId())); + if (CollectionUtils.isNotEmpty(result.getList())) { + result.getList().forEach(item -> { + ProjectDTO dto = new ProjectDTO(); + dto.setId(item.getProjectId()); + item.setCurrentHandleDepartMent(baseDao.selectDepartmentNameList(dto)); + }); + } + return result.getList(); } /** @@ -2830,8 +2832,8 @@ public class ProjectServiceImpl extends BaseServiceImpl getResolvedListByGrid(ShiftProjectListFromDTO fromDTO) { - int pageIndex = (fromDTO.getPageNo() - NumConstant.ONE) * fromDTO.getPageSize(); - return baseDao.selectResolvedListByGrid(fromDTO.getGridId(), pageIndex, fromDTO.getPageSize()); + PageHelper.startPage(fromDTO.getPageNo(), fromDTO.getPageSize(), fromDTO.getIsPage()); + return baseDao.selectResolvedListByGrid(fromDTO.getGridId()); } /** diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTagsServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTagsServiceImpl.java index 87edc5e00b..41bba0364a 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTagsServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTagsServiceImpl.java @@ -128,7 +128,9 @@ public class ProjectTagsServiceImpl extends BaseServiceImpl orientHooks = baseDao.selectProjectTagList(param.getProjectId()); //新增 List newHooks = param.getTagList(); - if(!CollectionUtils.isEmpty(orientHooks)) baseDao.deleteProjectTags(param.getProjectId()); + if(!CollectionUtils.isEmpty(orientHooks)) { + baseDao.deleteProjectTags(param.getProjectId()); + } if(!CollectionUtils.isEmpty(newHooks)){ baseDao.insertBatch(newHooks.stream().map(o->{ ProjectTagsEntity hook = ConvertUtils.sourceToTarget(param,ProjectTagsEntity.class);hook.setTagId(o.getId());hook.setTagName(o.getName());hook.setCreatedBy(param.getStaffId());return hook; @@ -139,16 +141,24 @@ public class ProjectTagsServiceImpl extends BaseServiceImpl newIds = CollectionUtils.isEmpty(newHooks) ? null : newHooks.stream().map(ProjectCategoryTagResultDTO::getId).collect(Collectors.toList()); TagDifferentSetFormDTO differentSet = ConvertUtils.sourceToTarget(param,TagDifferentSetFormDTO.class); differentSet.setUserId(param.getStaffId()); - if(null == orientIds && null == newIds) return ; - if(null != orientIds && null == newIds) differentSet.setMinus(orientIds); - if(null == orientIds && null != newIds) differentSet.setPlus(newIds); + if(null == orientIds && null == newIds) { + return ; + } + if(null != orientIds && null == newIds) { + differentSet.setMinus(orientIds); + } + if(null == orientIds && null != newIds) { + differentSet.setPlus(newIds); + } if(null != orientIds && null != newIds){ List replaceNews = new LinkedList<>(newIds); differentSet.setPlus(newIds.removeAll(orientIds) ? newIds : null); differentSet.setMinus(orientIds.removeAll(replaceNews) ? orientIds : null); } Result result = issueClient.updateCitations(differentSet); - if(!result.success()) throw new RenException(result.getInternalMsg()); + if(!result.success()) { + throw new RenException(result.getInternalMsg()); + } } -} \ No newline at end of file +} 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 5a2495eb3f..2a56eb3dfc 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 @@ -887,6 +887,10 @@ public class ProjectTraceServiceImpl implements ProjectTraceS log.error("【项目流转】上链失败,错误信息:{}", errorMsg); } + //2021.12.21 给报事人推送站内信 sun start + sendMsg(resiEventEntity); + //2021.12.21 给报事人推送站内信 sun end + return resultDTO; } @@ -1125,4 +1129,44 @@ public class ProjectTraceServiceImpl implements ProjectTraceS logger.info("事件立项,推送微信订阅消息"); return epmetMessageOpenFeignClient.sendWxSubscribeMessage(msgList); } + + /** + * @author sun + * 事件立项-给报事人推送站内信 + */ + private void sendMsg(ResiEventEntity resiEventEntity){ + //查询事件上报给网格还是组织信息 + ResiEventReportOrgEntity reportOrg = resiEventReportOrgDao.getByEventId(resiEventEntity.getId()); + String name = ""; + if ("grid".equals(reportOrg.getOrgType())) { + Result gridInfoRes = govOrgOpenFeignClient.queryGridInfo(reportOrg.getOrgId()); + if (!gridInfoRes.success() || null == gridInfoRes.getData()) { + throw new RenException("网格信息查询异常"); + } + name = gridInfoRes.getData().getGridName(); + } else { + AgencyInfoFormDTO dto = new AgencyInfoFormDTO(); + dto.setOrgId(reportOrg.getOrgId()); + dto.setOrgType(reportOrg.getOrgType()); + Result agencyResult = govOrgOpenFeignClient.agencyInfo(dto); + if (!agencyResult.success() || null == agencyResult.getData()) { + throw new RenException("组织信息查询异常"); + } + name = agencyResult.getData().getAgencyName(); + } + UserMessageFormDTO userMessage = new UserMessageFormDTO(); + userMessage.setApp(AppClientConstant.APP_RESI); + userMessage.setCustomerId(resiEventEntity.getCustomerId()); + userMessage.setGridId(resiEventEntity.getGridId()); + String messageContent = String.format(UserMessageConstant.PROJECT_EVENT, name); + userMessage.setMessageContent(messageContent); + userMessage.setReadFlag(ReadFlagConstant.UN_READ); + userMessage.setTitle(UserMessageConstant.EVENT_TITILE); + userMessage.setMessageType(UserMessageTypeConstant.EVENT); + userMessage.setTargetId(resiEventEntity.getId()); + //通知事件上报人 + userMessage.setUserId(resiEventEntity.getReportUserId()); + epmetMessageOpenFeignClient.saveUserMessage(userMessage); + } + } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ResiEventReplyServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ResiEventReplyServiceImpl.java index 0cc50a69b2..7a0b19a9fc 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ResiEventReplyServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ResiEventReplyServiceImpl.java @@ -18,24 +18,28 @@ package com.epmet.service.impl; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.AppClientConstant; +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.exception.RenException; +import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.scan.param.TextScanParamDTO; import com.epmet.commons.tools.scan.param.TextTaskDTO; import com.epmet.commons.tools.scan.result.SyncScanResult; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.ScanContentUtils; -import com.epmet.constant.EventConstant; -import com.epmet.constant.ResiEventAction; +import com.epmet.constant.*; import com.epmet.dao.*; import com.epmet.dto.CustomerAgencyDTO; import com.epmet.dto.form.ReplyFormDTO; import com.epmet.dto.form.ReplyListFormDTO; +import com.epmet.dto.form.UserMessageFormDTO; +import com.epmet.dto.result.GridInfoResultDTO; import com.epmet.dto.result.ReplyListResultDTO; import com.epmet.dto.result.UserBaseInfoResultDTO; -import com.epmet.entity.ResiEventEntity; -import com.epmet.entity.ResiEventOperationLogEntity; -import com.epmet.entity.ResiEventReplyEntity; +import com.epmet.entity.*; +import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.service.ResiEventReplyService; @@ -71,6 +75,8 @@ public class ResiEventReplyServiceImpl extends BaseServiceImpl gridInfoRes = govOrgOpenFeignClient.queryGridInfo(reportOrgEntity.getOrgId()); + if (!gridInfoRes.success() || null == gridInfoRes.getData()) { + throw new RenException("网格信息查询异常"); + } + name = gridInfoRes.getData().getGridName(); + } + UserMessageFormDTO userMessage = new UserMessageFormDTO(); + userMessage.setApp(AppClientConstant.APP_RESI); + userMessage.setCustomerId(replyFormDTO.getCustomerId()); + userMessage.setGridId(eventEntity.getGridId()); + String messageContent = String.format(UserMessageConstant.REPLY_EVENT, name); + userMessage.setMessageContent(messageContent); + userMessage.setReadFlag(ReadFlagConstant.UN_READ); + userMessage.setTitle(UserMessageConstant.EVENT_TITILE); + userMessage.setMessageType(UserMessageTypeConstant.EVENT); + userMessage.setTargetId(eventEntity.getId()); + //通知事件上报人 + userMessage.setUserId(eventEntity.getReportUserId()); + epmetMessageOpenFeignClient.saveUserMessage(userMessage); + //2021.12.21 给报事人推送站内信 sun end } private ResiEventEntity queryResiEntity(String resiEventId) { @@ -254,6 +286,25 @@ public class ResiEventReplyServiceImpl extends BaseServiceImpl + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.dao.ResiEventScanTaskDao; +import com.epmet.entity.ResiEventScanTaskEntity; +import com.epmet.service.ResiEventScanTaskService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 事件附件安全校验任务表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-12-22 + */ +@Service +public class ResiEventScanTaskServiceImpl extends BaseServiceImpl implements ResiEventScanTaskService { + + /** + * @Author sun + * @Description 获取事件附件待审核列表 + **/ + @Override + public List getScanTaskList(String draftId, String status) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(draftId), "RESI_EVENT_ID", draftId); + wrapper.eq(StringUtils.isNotBlank(status),"STATUS", status); + List entityList = baseDao.selectList(wrapper); + return entityList; + + } + +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ResiEventServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ResiEventServiceImpl.java index a64b74ee99..3c5b66a824 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ResiEventServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ResiEventServiceImpl.java @@ -19,6 +19,7 @@ package com.epmet.service.impl; import com.alibaba.fastjson.JSON; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +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.FileCommonDTO; @@ -26,17 +27,16 @@ import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; -import com.epmet.commons.tools.scan.param.ImgScanParamDTO; -import com.epmet.commons.tools.scan.param.ImgTaskDTO; -import com.epmet.commons.tools.scan.param.TextScanParamDTO; -import com.epmet.commons.tools.scan.param.TextTaskDTO; +import com.epmet.commons.tools.scan.param.*; +import com.epmet.commons.tools.scan.result.AsyncScanResult; +import com.epmet.commons.tools.scan.result.AsyncScanTaskDTO; import com.epmet.commons.tools.scan.result.SyncScanResult; +import com.epmet.commons.tools.scan.result.VoiceResultDTO; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.ScanContentUtils; -import com.epmet.constant.EventConstant; -import com.epmet.constant.ResiEventAction; +import com.epmet.constant.*; import com.epmet.dao.*; import com.epmet.dto.EventProjectInfoDTO; import com.epmet.dto.IssueProjectCategoryDictDTO; @@ -44,10 +44,13 @@ import com.epmet.dto.ProjectCategoryDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.entity.*; +import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.GovIssueOpenFeignClient; import com.epmet.feign.GovOrgOpenFeignClient; +import com.epmet.resi.group.constant.TopicConstant; import com.epmet.service.ProjectCategoryService; +import com.epmet.service.ResiEventScanTaskService; import com.epmet.service.ResiEventService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -60,6 +63,8 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; /** * 居民报事表 @@ -76,6 +81,10 @@ public class ResiEventServiceImpl extends BaseServiceImpl result = baseDao.eventUnDisposedList(formDTO.getOrgId(), formDTO.getEventType()); if (!CollectionUtils.isEmpty(result)){ + //附件按类型分组【图片、语音】 + result.forEach(re->{ + List eventImgs = new ArrayList<>(); + List voiceList = new ArrayList<>(); + re.getAttachmentList().forEach(file->{ + if ("image".equals(file.getType())) { + eventImgs.add(file.getUrl()); + } else if ("voice".equals(file.getType())) { + voiceList.add(file.getUrl()); + } + }); + re.setEventImgs(eventImgs); + re.setVoiceList(voiceList); + }); return result; } return new ArrayList<>(); @@ -130,17 +157,21 @@ public class ResiEventServiceImpl extends BaseServiceImpl eventImgs = new ArrayList<>(); + List voiceList = new ArrayList<>(); + dto.getAttachmentList().forEach(file->{ + if("image".equals(file.getType())){ + eventImgs.add(file.getUrl()); + }else if("voice".equals(file.getType())){ + FileCommonDTO fl = new FileCommonDTO(); + fl.setUrl(file.getUrl()); + fl.setDuration(file.getDuration()); + voiceList.add(fl); + } + }); + dto.setEventImgs(eventImgs); + dto.setVoiceList(voiceList); + // 已转项目 if (dto.getIsProject()){ // 查询项目信息 @@ -248,6 +305,14 @@ public class ResiEventServiceImpl extends BaseServiceImpl attachmentEntityList=getAttList(formDTO.getCustomerId(),resiEventEntity.getId(),formDTO.getAttachmentList()); attachmentEntityList.forEach(attachmentEntity->{ resiEventAttachmentDao.insert(attachmentEntity); }); + //5-2.插入语音附件 + if(!org.apache.commons.collections4.CollectionUtils.isEmpty(formDTO.getVoiceList())) { + //语音附件处理【创建阿里安全审核任务】 + //5-2-1.语音附件存入表中 + List voiceDTOList = new ArrayList<>(); + int sort = 1;//原本下标从0开始 图片的用了1就保持一致从1开始 + for (FileCommonDTO file : formDTO.getVoiceList()) { + ResiEventAttachmentEntity entity = new ResiEventAttachmentEntity(); + entity.setCustomerId(formDTO.getCustomerId()); + entity.setResiEventId(resiEventEntity.getId()); + entity.setAttachmentName(file.getName()); + entity.setAttachmentFormat(file.getFormat()); + entity.setAttachmentType("voice"); + entity.setAttachmentUrl(file.getUrl()); + entity.setSort(sort); + entity.setStatus(TopicConstant.AUDITING); + entity.setDuration(file.getDuration()); + sort++; + resiEventAttachmentDao.insert(entity); + + VoiceTaskDTO task = new VoiceTaskDTO(); + task.setDataId(entity.getId()); + task.setUrl(file.getUrl()); + voiceDTOList.add(task); + } + //5-2-2.语音创建审核任务【定时任务会处理待审核语音后修改数据库数据】 + VoiceScanParamDTO voiceScanParamDTO = new VoiceScanParamDTO(); + voiceScanParamDTO.setTasks(voiceDTOList); + voiceScanParamDTO.setOpenCallBack(false); + Result voiceScanResult = ScanContentUtils.voiceAsyncScan(scanApiUrl.concat(voiceAsyncScanMethod), voiceScanParamDTO); + if (!voiceScanResult.success() || !voiceScanResult.getData().isAllSuccess()) { + throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode()); + } else { + List taskList = voiceScanResult.getData().getSuccessTasks(); + //提交记录存入task表 + List scanTaskEntityList = taskList.stream().map(item -> { + ResiEventScanTaskEntity taskEntity = new ResiEventScanTaskEntity(); + taskEntity.setCustomerId(formDTO.getCustomerId()); + taskEntity.setResiEventId(resiEventEntity.getId()); + taskEntity.setResiEventAttachmentId(item.getDataId()); + taskEntity.setTaskId(item.getTaskId()); + taskEntity.setStatus(TopicConstant.AUDITING); + taskEntity.setAttachmentType(TopicConstant.VOICE); + return taskEntity; + }).collect(Collectors.toList()); + resiEventScanTaskService.insertBatch(scanTaskEntityList); + } + } //6、插入组织表 List orgEntityList=getOrgList(formDTO.getCustomerId(),resiEventEntity.getId(),formDTO.getOrgList()); orgEntityList.forEach(orgEntity->{ @@ -359,6 +477,7 @@ public class ResiEventServiceImpl extends BaseServiceImpl resiEventMentionDao.selectMentionList(formDTO.getUserId(), formDTO.getReadFlag())); result.getList().forEach(dto->{ + //附件按类型分组【图片、语音】 + List imgList = new ArrayList<>(); + List voiceList = new ArrayList<>(); + dto.getAttachmentList().forEach(file -> { + if ("image".equals(file.getType())) { + imgList.add(file.getUrl()); + } else if ("voice".equals(file.getType())) { + voiceList.add(file.getUrl()); + } + }); + dto.setImgList(imgList); + dto.setVoiceList(voiceList); + if(dto.getShiftProject()||dto.getStatus().equals(EventConstant.EVENT_STATUS_CLOSED_CASE)){ // 立项和办结了不能回复哈。 dto.setReplyButtonFlag("false"); @@ -560,6 +692,21 @@ public class ResiEventServiceImpl extends BaseServiceImpl orgIds = listResult.getData(); if (!CollectionUtils.isEmpty(orgIds)){ List result = baseDao.newEvents(orgIds); + //附件按类型分组【图片、语音】 + result.forEach(re->{ + List eventImgs = new ArrayList<>(); + List voiceList = new ArrayList<>(); + re.getAttachmentList().forEach(file->{ + if ("image".equals(file.getType())) { + eventImgs.add(file.getUrl()); + } else if ("voice".equals(file.getType())) { + voiceList.add(file.getUrl()); + } + }); + re.setEventImgs(eventImgs); + re.setVoiceList(voiceList); + }); + return result; } return new ArrayList<>(); @@ -606,6 +753,41 @@ public class ResiEventServiceImpl extends BaseServiceImpl gridInfoRes = govOrgOpenFeignClient.queryGridInfo(reportOrgEntity.getOrgId()); + if (!gridInfoRes.success() || null == gridInfoRes.getData()) { + throw new RenException("网格信息查询异常"); + } + name = gridInfoRes.getData().getGridName(); + } else { + AgencyInfoFormDTO dto = new AgencyInfoFormDTO(); + dto.setOrgId(reportOrgEntity.getOrgId()); + dto.setOrgType(reportOrgEntity.getOrgType()); + Result agencyResult = govOrgOpenFeignClient.agencyInfo(dto); + if (!agencyResult.success() || null == agencyResult.getData()) { + throw new RenException("组织信息查询异常"); + } + name = agencyResult.getData().getAgencyName(); + } + UserMessageFormDTO userMessage = new UserMessageFormDTO(); + userMessage.setApp(AppClientConstant.APP_RESI); + userMessage.setCustomerId(resiEventEntity.getCustomerId()); + userMessage.setGridId(resiEventEntity.getGridId()); + String messageContent = String.format(UserMessageConstant.RCLOSE_PROJECT_EVENT, name); + userMessage.setMessageContent(messageContent); + userMessage.setReadFlag(ReadFlagConstant.UN_READ); + userMessage.setTitle(UserMessageConstant.EVENT_TITILE); + userMessage.setMessageType(UserMessageTypeConstant.EVENT); + userMessage.setTargetId(resiEventEntity.getId()); + //通知事件上报人 + userMessage.setUserId(resiEventEntity.getReportUserId()); + epmetMessageOpenFeignClient.saveUserMessage(userMessage); + //2021.12.21 给报事人推送站内信 sun end } /** @@ -767,5 +949,149 @@ public class ResiEventServiceImpl extends BaseServiceImpl taskList = resiEventScanTaskService.getScanTaskList(null, TopicConstant.AUDITING); + if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(taskList)) { + Map map = taskList.stream().collect(Collectors.toMap(ResiEventScanTaskEntity::getTaskId, Function.identity())); + List taskIds = taskList.stream().map(ResiEventScanTaskEntity::getTaskId).collect(Collectors.toList()); + List draftIds = taskList.stream().map(ResiEventScanTaskEntity::getResiEventId).collect(Collectors.toList()); + Result> voiceResults = ScanContentUtils.voiceResults(scanApiUrl.concat(voiceResultsMethod), taskIds); + if (!voiceResults.success()) { + return; + } + List list = voiceResults.getData(); + for (VoiceResultDTO item : list) { + ResiEventScanTaskEntity taskEntity = map.get(item.getTaskId()); + if (EventConstant.REVIEW.equals(item.getSuggestion())) { + //结果不确定 + ResiEventAttachmentEntity entity = new ResiEventAttachmentEntity(); + entity.setId(taskEntity.getResiEventAttachmentId()); + entity.setStatus(EventConstant.REVIEW); + entity.setReason(item.getLabelDesc()); + resiEventAttachmentDao.updateById(entity); + + taskEntity.setStatus(EventConstant.REVIEW); + resiEventScanTaskService.updateById(taskEntity); + + } else if (EventConstant.BLOCK.equals(item.getSuggestion())) { + //结果违规 + ResiEventAttachmentEntity entity = new ResiEventAttachmentEntity(); + entity.setId(taskEntity.getResiEventAttachmentId()); + entity.setStatus(EventConstant.BLOCK); + entity.setReason(item.getLabelDesc()); + resiEventAttachmentDao.updateById(entity); + + taskEntity.setStatus(EventConstant.BLOCK); + resiEventScanTaskService.updateById(taskEntity); + } else { + //审核通过 + ResiEventAttachmentEntity entity = new ResiEventAttachmentEntity(); + entity.setId(taskEntity.getResiEventAttachmentId()); + entity.setStatus(EventConstant.AUTO_PASSED); + entity.setReason(item.getLabelDesc()); + resiEventAttachmentDao.updateById(entity); + + taskEntity.setStatus(EventConstant.AUTO_PASSED); + resiEventScanTaskService.updateById(taskEntity); + } + } + + //判断事件对应的所有需要审核的附件是否全部审核完成 + draftIds.forEach(draftId -> { + List tasks = resiEventScanTaskService.getScanTaskList(draftId, null); + String status = EventConstant.AUTO_PASSED; + for (ResiEventScanTaskEntity task : tasks) { + if (EventConstant.AUDITING.equals(task.getStatus())) { + status = EventConstant.AUDITING; + break; + } else if (EventConstant.BLOCK.equals(task.getStatus())) { + status = EventConstant.BLOCK; + } else if (EventConstant.REVIEW.equals(task.getStatus())) { + if (!EventConstant.BLOCK.equals(status)) { + status = EventConstant.REVIEW; + } + } else { + if (!EventConstant.BLOCK.equals(status) && !EventConstant.REVIEW.equals(status)) { + status = EventConstant.AUTO_PASSED; + } + } + } + + if (EventConstant.BLOCK.equals(status)) { + //草稿状态更新为block + ResiEventEntity draftEntity = new ResiEventEntity(); + draftEntity.setId(draftId); + draftEntity.setAuditStatus(EventConstant.BLOCK); + draftEntity.setAuditReason("语音存在违规内容"); + baseDao.updateById(draftEntity); + + } else if (EventConstant.REVIEW.equals(status)) { + //草稿状态更新为review + ResiEventEntity draftEntity = new ResiEventEntity(); + draftEntity.setId(draftId); + draftEntity.setAuditStatus(EventConstant.REVIEW); + draftEntity.setAuditReason("需要人工审核"); + baseDao.updateById(draftEntity); + + } else if (EventConstant.AUTO_PASSED.equals(status)) { + //草稿状态更新为auto_passed + ResiEventEntity draftEntity = new ResiEventEntity(); + draftEntity.setId(draftId); + draftEntity.setAuditStatus(EventConstant.AUTO_PASSED); + baseDao.updateById(draftEntity); + } + }); + } + + } + + /** + * @Author sun + * @Description 【事件】(未处理、处理中、已办结)地图、列表 + * 未处理: 发了没有人看过的时间 + * 处理中: 有人看,正在处理中的 + * 已办结:有人看,已经办结了的 + **/ + @Override + public List resiEventList(ResiEventLsitFormDTO formDTO) { + PageInfo result = PageHelper.startPage(formDTO.getPageNo(), + formDTO.getPageSize(), formDTO.getIsPage()).doSelectPageInfo(() -> baseDao.resiEventList(formDTO.getGridId(), formDTO.getStatusCondition())); + result.getList().forEach(resultDTO -> { + //附件按类型分组【图片、语音】 + List imgList = new ArrayList<>(); + List voiceList = new ArrayList<>(); + resultDTO.getAttachmentList().forEach(file -> { + if ("image".equals(file.getType())) { + imgList.add(file.getUrl()); + } else if ("voice".equals(file.getType())) { + voiceList.add(file.getUrl()); + } + }); + resultDTO.setImgList(imgList); + resultDTO.setVoiceList(voiceList); + + if (EventConstant.EVENT_STATUS_CLOSED_CASE.equals(resultDTO.getStatus()) || resultDTO.getShiftProject()) { + // 已办结的、立项的不显示回复按钮 + resultDTO.setReplyButtonFlag("false"); + } else { + // 处理中的事件 + if (resultDTO.getReadFlag()) { + // 被别人看过了就显示回复 + resultDTO.setReplyButtonFlag("true"); + } else { + //别人没看过 + resultDTO.setReplyButtonFlag("false"); + } + } + }); + return result.getList(); + } } diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/bootstrap.yml b/epmet-module/gov-project/gov-project-server/src/main/resources/bootstrap.yml index 2800f5ad1c..7821e73e53 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/bootstrap.yml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/bootstrap.yml @@ -122,6 +122,8 @@ openapi: method: imgSyncScan: /imgSyncScan textSyncScan: /textSyncScan + voiceAsyncScan: /voiceAsyncScan + voiceResults: /voiceResults #pageHelper分页插件 pagehelper: diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.17__event_scan.sql b/epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.17__event_scan.sql new file mode 100644 index 0000000000..78eed0497e --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.17__event_scan.sql @@ -0,0 +1,26 @@ + +ALTER TABLE `resi_event` +ADD COLUMN `AUDIT_STATUS` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'auto_passed' COMMENT '事件审核状态[涉及附件审核需要加的状态](审核中:auditing; \r\nauto_passed: 自动通过;\r\nreview:结果不确定,需要人工审核;\r\nblock: 结果违规;\r\nrejected:人工审核驳回;\r\napproved:人工审核通过)' AFTER `UPDATED_TIME`, +ADD COLUMN `AUDIT_REASON` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '审核理由' AFTER `AUDIT_STATUS`; + +CREATE TABLE `resi_event_scan_task` ( + `ID` varchar(64) NOT NULL COMMENT '唯一标识', + `CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户ID', + `RESI_EVENT_ID` varchar(64) NOT NULL COMMENT '事件Id,关联resi_event的id', + `RESI_EVENT_ATTACHMENT_ID` varchar(64) NOT NULL COMMENT '事件附件表主键,对应dataId', + `TASK_ID` varchar(64) NOT NULL COMMENT '阿里云审核任务Id', + `STATUS` varchar(32) NOT NULL COMMENT '审核状态【auditing: 审核中;\r\nauto_passed: 自动通过;\r\nreview:结果不确定,需要人工审核;\r\nblock: 结果违规;】', + `ATTACHMENT_TYPE` varchar(64) NOT NULL COMMENT '附件类型(视频 - video、 语音 - voice 文件 - doc)', + `DEL_FLAG` char(1) NOT NULL COMMENT '删除标识:0.未删除 1.已删除', + `REVISION` int(11) NOT NULL COMMENT '乐观锁', + `CREATED_BY` varchar(64) NOT NULL COMMENT '操作人,API审核结果,存储为SCAN_USER或者APP_USER', + `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 `resi_event_attachment` +ADD COLUMN `STATUS` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'auto_passed' COMMENT '附件状态(审核中:auditing; \r\nauto_passed: 自动通过;\r\nreview:结果不确定,需要人工审核;\r\nblock: 结果违规;\r\nrejected:人工审核驳回;\r\napproved:人工审核通过)\r\n现在图片是同步审核的,所以图片只有auto_passed一种状态' AFTER `UPDATED_TIME`, +ADD COLUMN `REASON` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '失败原因' AFTER `STATUS`; + diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.18__alter.sql b/epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.18__alter.sql new file mode 100644 index 0000000000..f9edb65bb3 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.18__alter.sql @@ -0,0 +1,3 @@ +ALTER TABLE `resi_event_attachment` +ADD COLUMN `DURATION` int(11) NULL DEFAULT NULL COMMENT '语音或视频时长,秒' AFTER `REASON`; + diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml index dd1d3cc4bd..60c2050f24 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml @@ -333,7 +333,6 @@ AND a.`STATUS` = 'pending' AND a.ORIGIN = 'issue' ORDER BY a.CREATED_TIME DESC - LIMIT #{pageNo}, #{pageSize} - SELECT rea.ATTACHMENT_URL AS img,t.* FROM - (SELECT - re.EVENT_CONTENT AS eventContent, - - IFNULL(DATE_FORMAT(re.CREATED_TIME,'%Y-%m-%d %H:%i'),'') AS eventTime, - - - IFNULL(DATE_FORMAT(re.LATEST_OPERATED_TIME,'%Y-%m-%d %H:%i'),'') AS eventTime, - - - IFNULL(DATE_FORMAT(re.CLOSE_CASE_TIME,'%Y-%m-%d %H:%i'),'') AS eventTime, - - re.ID AS eventId, - (CASE WHEN re.SHIFT_PROJECT = 1 THEN TRUE ELSE FALSE END) AS isProject, - (CASE WHEN ro.RED_DOT = 1 THEN TRUE ELSE FALSE END) AS redDot - FROM resi_event_report_org ro - INNER JOIN resi_event re ON (ro.RESI_EVENT_ID = re.ID AND re.DEL_FLAG = '0') - AND ro.DEL_FLAG = '0' - and ro.ORG_ID = #{orgId} - - AND ro.ORG_READ = 'un_read' - - - AND ro.ORG_READ = 'read' - AND re.`STATUS` = 'processing' - - - AND ro.ORG_READ = 'read' - AND re.`STATUS` = 'closed_case' - + SELECT + rea.id AS resiEventAttachmentId, + rea.ATTACHMENT_URL AS url, + rea.ATTACHMENT_TYPE AS type, + t.* + FROM + ( + SELECT + re.EVENT_CONTENT AS eventContent, + + IFNULL(DATE_FORMAT(re.CREATED_TIME,'%Y-%m-%d %H:%i'),'') AS eventTime, + + + IFNULL(DATE_FORMAT(re.LATEST_OPERATED_TIME,'%Y-%m-%d %H:%i'),'') AS eventTime, + + + IFNULL(DATE_FORMAT(re.CLOSE_CASE_TIME,'%Y-%m-%d %H:%i'),'') AS eventTime, + + re.ID AS eventId, + (CASE WHEN re.SHIFT_PROJECT = 1 THEN TRUE ELSE FALSE END) AS isProject, + (CASE WHEN ro.RED_DOT = 1 THEN TRUE ELSE FALSE END) AS redDot + FROM resi_event_report_org ro + INNER JOIN resi_event re ON (ro.RESI_EVENT_ID = re.ID AND re.DEL_FLAG = '0' AND re.audit_status = 'auto_passed') + AND ro.DEL_FLAG = '0' + AND ro.ORG_ID = #{orgId} + + AND ro.ORG_READ = 'un_read' + + + AND ro.ORG_READ = 'read' + AND re.`STATUS` = 'processing' + + + AND ro.ORG_READ = 'read' + AND re.`STATUS` = 'closed_case' + )t - LEFT JOIN resi_event_attachment rea - ON (rea.RESI_EVENT_ID = t.eventId - and rea.DEL_FLAG = '0' - AND rea.ATTACHMENT_TYPE = 'image') + LEFT JOIN resi_event_attachment rea ON (rea.resi_event_id = t.eventId AND rea.del_flag = '0' AND rea.attachment_type = 'image') ORDER BY t.eventTime,rea.sort asc @@ -98,6 +103,7 @@ and rea.ATTACHMENT_TYPE='image') where re.DEL_FLAG='0' and re.RECALL_FLAG='0' + AND re.audit_status = 'auto_passed' and re.REPORT_USER_ID=#{userId} and re.READ_FLAG='0' @@ -121,19 +127,28 @@ - + + + + + + + + + SELECT IFNULL(re.EVENT_CONTENT,'') AS eventContent, DATE_FORMAT(re.CREATED_TIME,'%Y-%m-%d %H:%i') AS eventTime, - ea.ATTACHMENT_URL AS img, + ea.id AS resiEventAttachmentId, + ea.attachment_url AS url, + ea.attachment_type AS type, re.id as eventId FROM resi_event_report_org ro - LEFT JOIN resi_event re ON (re.ID = ro.RESI_EVENT_ID AND re.DEL_FLAG = '0') + LEFT JOIN resi_event re ON (re.ID = ro.RESI_EVENT_ID AND re.DEL_FLAG = '0' AND re.audit_status = 'auto_passed') LEFT JOIN resi_event_attachment ea ON (ea.RESI_EVENT_ID = ro.RESI_EVENT_ID AND ea.DEL_FLAG = '0' AND ea.ATTACHMENT_TYPE = 'image' AND ea.SORT IN (3,1,2)) WHERE ro.DEL_FLAG = '0' @@ -217,4 +243,60 @@ re.REPORT_USER_ID = #{epmetUserId} + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ResiEventMentionDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ResiEventMentionDao.xml index b7c65d32be..f979dbfe96 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ResiEventMentionDao.xml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ResiEventMentionDao.xml @@ -10,11 +10,16 @@ - + + + + + + + \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ResiEventScanTaskDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ResiEventScanTaskDao.xml new file mode 100644 index 0000000000..ae523c9093 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ResiEventScanTaskDao.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerParameterServiceImpl.java b/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerParameterServiceImpl.java index f00c91d57e..fc7cd29f80 100644 --- a/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerParameterServiceImpl.java +++ b/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerParameterServiceImpl.java @@ -66,7 +66,9 @@ public class CustomerParameterServiceImpl implements CustomerParameterService { @Override @Transactional(rollbackFor = Exception.class) public void updateParamInfo(List formDTOS) { - if (CollectionUtils.isEmpty(formDTOS))return; + if (CollectionUtils.isEmpty(formDTOS)) { + return; + } parameterDao.updateParamInfo(formDTOS); } diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicDetailResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicDetailResultDTO.java index 4cb680301b..67202ed3f6 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicDetailResultDTO.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ResiTopicDetailResultDTO.java @@ -65,6 +65,7 @@ public class ResiTopicDetailResultDTO implements Serializable { */ private List topicVoices; - + private String longitude; + private String latitude; } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/redis/ResiGroupRedis.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/redis/ResiGroupRedis.java index 5cb1b48027..40f64fe6fa 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/redis/ResiGroupRedis.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/redis/ResiGroupRedis.java @@ -78,8 +78,8 @@ public class ResiGroupRedis { } /** * @Description 新增/更新群组缓存信息 - * @Param - * @return + * @Param + * @return * @Author wangc * @Date 2020.04.13 09:58 **/ @@ -275,7 +275,9 @@ public class ResiGroupRedis { */ public String getFullName(String userId){ String fieldValue = (String)redisUtils.hGet(RedisKeys.getResiUserKey(userId),"realName"); - if(StringUtils.isNotBlank(fieldValue)) return fieldValue; + if(StringUtils.isNotBlank(fieldValue)) { + return fieldValue; + } List userParam = new LinkedList<>(); userParam.add(userId); Result> userCacheResult = epmetUserOpenFeignClient.queryUserBaseInfo(userParam); if(userCacheResult.success() && !CollectionUtils.isEmpty(userCacheResult.getData())){ @@ -283,4 +285,4 @@ public class ResiGroupRedis { } return null; } -} \ No newline at end of file +} diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/invitation/service/impl/GroupInvitationServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/invitation/service/impl/GroupInvitationServiceImpl.java index 28a58d0a12..f6a7cd87d1 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/invitation/service/impl/GroupInvitationServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/invitation/service/impl/GroupInvitationServiceImpl.java @@ -430,15 +430,21 @@ public class GroupInvitationServiceImpl extends BaseServiceImpl page(Map params) { @@ -352,10 +358,13 @@ public class GroupMemeberOperationServiceImpl extends BaseServiceImpl pointEventMsgList = new ArrayList<>(); BasePointEventMsg pointEventMsg = new BasePointEventMsg(); pointEventMsg.setCustomerId(resiGroupDTO.getCustomerId()); @@ -368,8 +377,8 @@ public class GroupMemeberOperationServiceImpl extends BaseServiceImpl pointEventMsgList = new ArrayList<>(); BasePointEventMsg pointEventMsg = new BasePointEventMsg(); pointEventMsg.setCustomerId(groupCache.getCustomerId()); @@ -689,7 +693,7 @@ public class ResiGroupMemberServiceImpl extends BaseServiceImpl userParam = new LinkedList<>(); @@ -707,8 +711,15 @@ public class ResiGroupMemberServiceImpl extends BaseServiceImpl NumConstant.FIFTEEN){ + String eventClass = EventEnum.PARTICIPATE_ONE_TOPIC.getEventClass(); + String eventTag = EventEnum.PARTICIPATE_ONE_TOPIC.getEventTag(); + //mq的事件类型 - MqBaseMsgDTO mqBaseMsgDTO = new MqBaseMsgDTO(); - mqBaseMsgDTO.setEventClass(EventEnum.PARTICIPATE_ONE_TOPIC.getEventClass()); + //MqBaseMsgDTO mqBaseMsgDTO = new MqBaseMsgDTO(); + //mqBaseMsgDTO.setEventClass(EventEnum.PARTICIPATE_ONE_TOPIC.getEventClass()); //事件code - mqBaseMsgDTO.setEventTag(EventEnum.PARTICIPATE_ONE_TOPIC.getEventTag()); + //mqBaseMsgDTO.setEventTag(EventEnum.PARTICIPATE_ONE_TOPIC.getEventTag()); List pointEventMsgList = new ArrayList<>(); BasePointEventMsg pointEventMsg = new BasePointEventMsg(); String customerId = resiTopicdDao.selectCustomerIdByTopicId(resiCommentFormDTO.getTopicId()); @@ -297,8 +304,8 @@ public class ResiTopicCommentServiceImpl extends BaseServiceImpl pointEventMsgList = new ArrayList<>(); BasePointEventMsg pointEventMsg = new BasePointEventMsg(); ResiGroupInfoRedisDTO resiGroupInfoRedisDTO = resiGroupRedis.get(resiTopicPublishFormDTO.getGroupId()); @@ -449,13 +455,19 @@ public class ResiTopicServiceImpl extends BaseServiceImpl pointEventMsgList = new ArrayList<>(); BasePointEventMsg pointEventMsg = new BasePointEventMsg(); @@ -840,8 +852,15 @@ public class ResiTopicServiceImpl extends BaseServiceImpl result = SendMqMsgUtils.sendMsg(mqBaseMsgDTO); + + SystemMsgFormDTO msgFormDTO = new SystemMsgFormDTO(); + msgFormDTO.setContent(pointEventMsgList); + msgFormDTO.setMessageType(SystemMessageType.LEADER_RESOLVE_TOPIC); + Result result = epmetMessageOpenFeignClient.sendSystemMsgByMQ(msgFormDTO); + + if (!result.success()) { log.error("组长解决话题事件发送失败,参数:{}", JSON.toJSONString(closeFormDTO)); } } @@ -1931,15 +1950,22 @@ public class ResiTopicServiceImpl extends BaseServiceImpl { - MqBaseMsgDTO msgDTO = new MqBaseMsgDTO(); - msgDTO.setEventClass("resi_group"); + //MqBaseMsgDTO msgDTO = new MqBaseMsgDTO(); + //msgDTO.setEventClass("resi_group"); //事件code 因为楼院小组的事件回调统一入口,外层的EventTag不能够判断具体的事件 //因为可能会一次发送多个事件集合,需要对集合里的对象逐个判断 - msgDTO.setEventTag(EventEnum.SHIFT_TOPIC_TO_ISSUE.getEventTag()); + //msgDTO.setEventTag(EventEnum.SHIFT_TOPIC_TO_ISSUE.getEventTag()); List msgList = new ArrayList<>(); msgList.add(item); - msgDTO.setMsg(JSON.toJSONString(msgList)); - if(!SendMqMsgUtils.sendMsg(msgDTO).success()){ + //msgDTO.setMsg(JSON.toJSONString(msgList)); + + SystemMsgFormDTO msgForm = new SystemMsgFormDTO(); + msgForm.setMessageType(SystemMessageType.SHIFT_TOPIC_TO_ISSUE); + msgForm.setContent(msgList); + Result sendMsgResult = epmetMessageOpenFeignClient.sendSystemMsgByMQ(msgForm); + + //Result sendMsgResult = SendMqMsgUtils.sendMsg(msgDTO); + if(!sendMsgResult.success()){ log.error("话题转议题事件发送失败,参数:{}",JSON.toJSONString(topicTurnIssueFromDTO)); } }); @@ -2104,15 +2130,22 @@ public class ResiTopicServiceImpl extends BaseServiceImpl { - MqBaseMsgDTO msgDTO = new MqBaseMsgDTO(); - msgDTO.setEventClass("resi_group"); + //MqBaseMsgDTO msgDTO = new MqBaseMsgDTO(); + //msgDTO.setEventClass("resi_group"); //事件code 因为楼院小组的事件回调统一入口,外层的EventTag不能够判断具体的事件 //因为可能会一次发送多个事件集合,需要对集合里的对象逐个判断 - msgDTO.setEventTag(EventEnum.SHIFT_TOPIC_TO_ISSUE.getEventTag()); + //msgDTO.setEventTag(EventEnum.SHIFT_TOPIC_TO_ISSUE.getEventTag()); List msgList = new ArrayList<>(); msgList.add(item); - msgDTO.setMsg(JSON.toJSONString(msgList)); - if(!SendMqMsgUtils.sendMsg(msgDTO).success()){ + //msgDTO.setMsg(JSON.toJSONString(msgList)); + + SystemMsgFormDTO sendMsgForm = new SystemMsgFormDTO(); + sendMsgForm.setContent(msgList); + sendMsgForm.setMessageType(SystemMessageType.SHIFT_TOPIC_TO_ISSUE); + Result sendMsgResult = epmetMessageOpenFeignClient.sendSystemMsgByMQ(sendMsgForm); + + //Result sendMsgResult = SendMqMsgUtils.sendMsg(msgDTO); + if(!sendMsgResult.success()){ log.error("话题转议题事件发送失败,参数:{}",JSON.toJSONString(param)); } }); @@ -2462,10 +2495,10 @@ public class ResiTopicServiceImpl extends BaseServiceImpl pointEventMsgList = new ArrayList<>(); //话题被转为项目 话题作者 @@ -2493,8 +2526,16 @@ public class ResiTopicServiceImpl extends BaseServiceImpl content.length() ? "\"" : "…\"") ).append("被转为项目").toString()); pointEventMsgList.add(pointEventMsg); - mqBaseMsgDTO.setMsg(JSON.toJSONString(pointEventMsgList)); - if(!SendMqMsgUtils.sendMsg(mqBaseMsgDTO).success()){ + //mqBaseMsgDTO.setMsg(JSON.toJSONString(pointEventMsgList)); + + //Result sendMsgResult = SendMqMsgUtils.sendMsg(mqBaseMsgDTO); + + SystemMsgFormDTO sendMsgForm = new SystemMsgFormDTO(); + sendMsgForm.setContent(pointEventMsgList); + sendMsgForm.setMessageType(SystemMessageType.TOPIC_TO_PROJECT); + Result sendMsgResult = epmetMessageOpenFeignClient.sendSystemMsgByMQ(sendMsgForm); + + if(!sendMsgResult.success()){ log.error("话题转议题事件发送失败,参数:{}",JSON.toJSONString(param)); } } @@ -2850,6 +2891,8 @@ public class ResiTopicServiceImpl extends BaseServiceImpl actPointEventMsgList=new ArrayList<>(); BasePointEventMsg actPointEventMsg=new BasePointEventMsg(); actPointEventMsg.setCustomerId(customerId); @@ -1026,8 +1028,14 @@ public class TopicDraftServiceImpl extends BaseServiceImpl issueShareLinkInfo = issueClient.shareLinkInfo(param.getId()); @@ -234,7 +236,9 @@ public class TopicShareLinkRecordServiceImpl extends BaseServiceImpl groups = resiGroupMemberDao.getGroupIdByUserIdAndGridId(groupEntity.getGridId(), userId, NumConstant.ONE_STR); if(!CollectionUtils.isEmpty(groups)){ relation.setInAnyGroup(true); diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicShareLinkVisitRecordServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicShareLinkVisitRecordServiceImpl.java index 949cfd6bab..85164a7a13 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicShareLinkVisitRecordServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicShareLinkVisitRecordServiceImpl.java @@ -97,7 +97,9 @@ public class TopicShareLinkVisitRecordServiceImpl extends BaseServiceImpl> locationGridList(@LoginUser TokenDto dto,@RequestBody CustomerGridListFormDTO customerGridListFormDTO){ ValidatorUtils.validateEntity(customerGridListFormDTO); - if(null == dto || StringUtils.isEmpty(dto.getCustomerId())) throw new ValidateException("无法获取客户Id"); + if(null == dto || StringUtils.isEmpty(dto.getCustomerId())) { + throw new ValidateException("无法获取客户Id"); + } return strangerAccessRecordService.listCustomerGridH5(customerGridListFormDTO,dto.getCustomerId()); } diff --git a/epmet-module/resi-hall/resi-hall-client/src/main/java/com/epmet/dto/form/CommonIssueListFormDTO.java b/epmet-module/resi-hall/resi-hall-client/src/main/java/com/epmet/dto/form/CommonIssueListFormDTO.java index 925551f55c..bebad0de3d 100644 --- a/epmet-module/resi-hall/resi-hall-client/src/main/java/com/epmet/dto/form/CommonIssueListFormDTO.java +++ b/epmet-module/resi-hall/resi-hall-client/src/main/java/com/epmet/dto/form/CommonIssueListFormDTO.java @@ -32,4 +32,6 @@ public class CommonIssueListFormDTO implements Serializable { * 每页多少条 * */ private Integer pageSize = 20; + + private Boolean isPage = true; } diff --git a/epmet-module/resi-hall/resi-hall-client/src/main/java/com/epmet/dto/result/ClosedIssueListResultDTO.java b/epmet-module/resi-hall/resi-hall-client/src/main/java/com/epmet/dto/result/ClosedIssueListResultDTO.java index 8fe3e10d51..da7574183f 100644 --- a/epmet-module/resi-hall/resi-hall-client/src/main/java/com/epmet/dto/result/ClosedIssueListResultDTO.java +++ b/epmet-module/resi-hall/resi-hall-client/src/main/java/com/epmet/dto/result/ClosedIssueListResultDTO.java @@ -54,4 +54,6 @@ public class ClosedIssueListResultDTO implements Serializable { * */ private String topicContent; + private String longitude; + private String latitude; } diff --git a/epmet-module/resi-hall/resi-hall-client/src/main/java/com/epmet/dto/result/VotingIssueListResultDTO.java b/epmet-module/resi-hall/resi-hall-client/src/main/java/com/epmet/dto/result/VotingIssueListResultDTO.java index d6ccbee1d1..3b9bee2505 100644 --- a/epmet-module/resi-hall/resi-hall-client/src/main/java/com/epmet/dto/result/VotingIssueListResultDTO.java +++ b/epmet-module/resi-hall/resi-hall-client/src/main/java/com/epmet/dto/result/VotingIssueListResultDTO.java @@ -54,4 +54,7 @@ public class VotingIssueListResultDTO implements Serializable { * 话题内容 */ private String topicContent; + + private String longitude; + private String latitude; } diff --git a/epmet-module/resi-hall/resi-hall-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java b/epmet-module/resi-hall/resi-hall-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java index 97ea4918b7..edc3a74476 100644 --- a/epmet-module/resi-hall/resi-hall-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java +++ b/epmet-module/resi-hall/resi-hall-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java @@ -363,11 +363,11 @@ public class IssueServiceImpl implements IssueService { } else { List topicDetails = topicDetailsResult.getData(); HashMap rtm = convertTopicDetailList2Map(topicDetails); - resultList.stream().forEach(vi -> { + resultList.forEach(vi -> { ResiTopicDetailResultDTO rr = rtm.get(vi.getSourceId()); vi.setTopicImgs(rr == null ? null : rr.getTopicImgs()); vi.setTopicVoices(rr == null ? null : rr.getTopicImgs()); - vi.setTopicContent(rr.getTopicContent()); + vi.setTopicContent(rr == null ? "" : rr.getTopicContent()); }); } @@ -421,11 +421,13 @@ public class IssueServiceImpl implements IssueService { } else { List topicDetails = topicDetailsResult.getData(); HashMap rtm = convertTopicDetailList2Map(topicDetails); - votingIssueList.stream().forEach(vi -> { + votingIssueList.forEach(vi -> { ResiTopicDetailResultDTO rr = rtm.get(vi.getSourceId()); vi.setTopicImgs(rr == null ? null : rr.getTopicImgs()); vi.setTopicVoices(rr == null ? null : rr.getTopicImgs()); - vi.setTopicContent(rr.getTopicContent()); + vi.setTopicContent(rr == null ? "" : rr.getTopicContent()); + vi.setLongitude(rr == null ? "" : rr.getLongitude()); + vi.setLatitude(rr == null ? "" : rr.getLatitude()); }); } } @@ -459,11 +461,13 @@ public class IssueServiceImpl implements IssueService { } else { List topicDetails = topicDetailsResult.getData(); HashMap rtm = convertTopicDetailList2Map(topicDetails); - issueList.stream().forEach(vi -> { + issueList.forEach(vi -> { ResiTopicDetailResultDTO rr = rtm.get(vi.getSourceId()); vi.setTopicImgs(rr == null ? null : rr.getTopicImgs()); vi.setTopicVoices(rr == null ? null : rr.getTopicImgs()); - vi.setTopicContent(rr.getTopicContent()); + vi.setTopicContent(rr == null ? "" :rr.getTopicContent()); + vi.setLongitude(rr == null ? "" : rr.getLongitude()); + vi.setLatitude(rr == null ? "" : rr.getLatitude()); }); } } @@ -500,6 +504,8 @@ public class IssueServiceImpl implements IssueService { vi.setTopicImgs(rr == null ? new ArrayList<>() : rr.getTopicImgs()); vi.setTopicVoices(rr == null ? new ArrayList<>() : rr.getTopicImgs()); vi.setTopicContent(rr == null ? "" : rr.getTopicContent()); + vi.setLongitude(rr == null ? "" : rr.getLongitude()); + vi.setLatitude(rr == null ? "" : rr.getLatitude()); }); } @@ -535,6 +541,8 @@ public class IssueServiceImpl implements IssueService { vi.setTopicImgs(rr == null ? new ArrayList<>() : rr.getTopicImgs()); vi.setTopicVoices(rr == null ? new ArrayList<>() : rr.getTopicImgs()); vi.setTopicContent(rr == null ? "" : rr.getTopicContent()); + vi.setLongitude(rr == null ? "" : rr.getLongitude()); + vi.setLatitude(rr == null ? "" : rr.getLatitude()); }); } @@ -570,6 +578,8 @@ public class IssueServiceImpl implements IssueService { vi.setTopicImgs(rr == null ? new ArrayList<>() : rr.getTopicImgs()); vi.setTopicVoices(rr == null ? new ArrayList<>() : rr.getTopicImgs()); vi.setTopicContent(rr == null ? "" : rr.getTopicContent()); + vi.setLongitude(rr == null ? "" : rr.getLongitude()); + vi.setLatitude(rr == null ? "" : rr.getLatitude()); }); } 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 f67b2fd1cf..f02233a520 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 @@ -100,6 +100,10 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl { if (StringUtils.isNotBlank(item.getGridId())) { GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(item.getGridId()); + if(gridInfo == null) { + log.warn("未找到网格信息:{}", item.getGridId()); + return; + } item.setGridName(gridInfo.getGridName()); } }); @@ -191,6 +195,10 @@ public class IcPartymemberStyleServiceImpl extends BaseServiceImpl { if (StringUtils.isNotBlank(item.getGridId())) { GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(item.getGridId()); + if (gridInfo == null) { + log.warn("未找到网格信息:{}", item.getGridId()); + return; + } item.setGridName(gridInfo.getGridName()); } }); diff --git a/epmet-openapi/epmet-openapi-sdk/src/main/java/com/epmet/openapi/sdk/encrypt/Md5Util.java b/epmet-openapi/epmet-openapi-sdk/src/main/java/com/epmet/openapi/sdk/encrypt/Md5Util.java index a003736c74..25fb36e167 100644 --- a/epmet-openapi/epmet-openapi-sdk/src/main/java/com/epmet/openapi/sdk/encrypt/Md5Util.java +++ b/epmet-openapi/epmet-openapi-sdk/src/main/java/com/epmet/openapi/sdk/encrypt/Md5Util.java @@ -43,16 +43,18 @@ public class Md5Util { private static String byteArrayToHexString(byte[] b) { StringBuffer resultSb = new StringBuffer(); - for (int i = 0; i < b.length; i++) - resultSb.append(byteToHexString(b[i])); + for (int i = 0; i < b.length; i++) { + resultSb.append(byteToHexString(b[i])); + } return resultSb.toString(); } private static String byteToHexString(byte b) { int n = b; - if (n < 0) - n += 256; + if (n < 0) { + n += 256; + } int d1 = n / 16; int d2 = n % 16; return hexDigits[d1] + "" + hexDigits[d2]; @@ -62,12 +64,13 @@ public class Md5Util { String resultString = null; resultString = origin; MessageDigest md = MessageDigest.getInstance("MD5"); - if (charsetname == null || "".equals(charsetname)) - resultString = byteArrayToHexString(md.digest(resultString - .getBytes())); - else - resultString = byteArrayToHexString(md.digest(resultString - .getBytes(charsetname))); + if (charsetname == null || "".equals(charsetname)) { + resultString = byteArrayToHexString(md.digest(resultString + .getBytes())); + } else { + resultString = byteArrayToHexString(md.digest(resultString + .getBytes(charsetname))); + } return resultString; } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/GridMobileListFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/GridMobileListFormDTO.java new file mode 100644 index 0000000000..6c2e34a3a9 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/GridMobileListFormDTO.java @@ -0,0 +1,24 @@ +package com.epmet.dto.form; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; + +/** + * @description: 【事件】网格员服务电话 + * @author: sun + */ +@NoArgsConstructor +@Data +public class GridMobileListFormDTO { + + /** + * 网格Id + */ + @NotBlank(message = "网格Id不能为空", groups = Gridobile.class) + private String gridId; + + public interface Gridobile{} + +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ResiVolunteerAuthenticateFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ResiVolunteerAuthenticateFormDTO.java deleted file mode 100644 index 13789fa4cf..0000000000 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ResiVolunteerAuthenticateFormDTO.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.epmet.dto.form; - -import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import java.io.Serializable; - -/** - * 志愿者认证 入参 - * - * @Auther: zhangyong - * @Date: 2020-07-23 09:57 - */ - -@Data -public class ResiVolunteerAuthenticateFormDTO implements Serializable { - - private static final long serialVersionUID = 1L; - - - /** - * 添加用户操作的内部异常分组 - * 出现错误会提示给前端7000错误码,返回信息为:服务器开小差... - */ - - - /** - * 添加用户操作的用户可见异常分组 - * 该分组用于校验需要返回给前端错误信息提示的列,需要继承CustomerClientShowGroup - * 返回错误码为8999,提示信息为DTO中具体的列的校验注解message的内容 - */ - - - - /** - * 用户id - */ - private String userId; - - /** - * 客户id - */ - @NotBlank(message = "客户id不能为空") - private String customerId; - - /** - * 姓 - */ - @NotBlank(message = "姓不能为空") - private String surname; - - /** - * 名 - */ - @NotBlank(message = "名不能为空") - private String name; - - /** - * 性别(1男2女0未知) - */ - @NotBlank(message = "性别不能为空") - private String gender; - - /** - * 手机号 - */ - @NotBlank(message = "手机号不能为空") - private String mobile; - - /** - * 身份证号码 - */ - @NotBlank(message = "身份证号码不能为空") - private String idNum; - - /** - * 街道 - */ - @NotBlank(message = "街道不能为空") - private String street; - - /** - * 小区名 - */ - @NotBlank(message = "小区名不能为空") - private String district; - - /** - * 楼栋单元 - */ - @NotBlank(message = "楼栋单元不能为空") - private String buildingAddress; - - /** - * 志愿者自我介绍 - */ - private String volunteerIntroduce; - - /** - * 昵称 - */ - @NotBlank(message = "昵称不能为空") - private String nickname; - - /** - * 头像 - */ - @NotBlank(message = "头像不能为空") - private String avatarUrl; - - /** - * 志愿者签名 - */ - private String volunteerSignature; -} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserBadgeUnitFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserBadgeUnitFormDTO.java index 124b94b3bd..81b9e7fbfc 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserBadgeUnitFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserBadgeUnitFormDTO.java @@ -34,8 +34,12 @@ public class UserBadgeUnitFormDTO implements Serializable { @Override public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } UserBadgeUnitFormDTO that = (UserBadgeUnitFormDTO) o; return badgeId.equals(that.badgeId) && badgeIcon.equals(that.badgeIcon) && diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/VolunteerCommonFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/VolunteerCommonFormDTO.java index a2c8dff5a1..1cea3c46c4 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/VolunteerCommonFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/VolunteerCommonFormDTO.java @@ -23,4 +23,7 @@ public class VolunteerCommonFormDTO { @NotBlank(message = "客户ID不能为空", groups = {GetVolunteerDistribution.class}) private String customerId; + @NotBlank(message = "组织ID不能为空", groups = {GetVolunteerDistribution.class}) + private String agencyId; + } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/VolunteerRegResiFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/VolunteerRegResiFormDTO.java new file mode 100644 index 0000000000..fc373397da --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/VolunteerRegResiFormDTO.java @@ -0,0 +1,103 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 认证志愿者时保存/修改用户基础信息+自动注册居民 + * + * @Auther: zhangyong + * @Date: 2020-07-23 09:57 + */ + +@Data +public class VolunteerRegResiFormDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + public interface AddUserInternalGroup {} + public interface AddUserShowGroup extends CustomerClientShowGroup {} + + /** + * 用户id + */ + @NotBlank(message = "tokenDto中获取userId为空", groups = {AddUserInternalGroup.class }) + private String userId; + + /** + * 客户id + */ + @NotBlank(message = "tokenDto中获取customerId为空", groups = {AddUserInternalGroup.class }) + private String customerId; + + /** + * 姓 + */ + @NotBlank(message = "姓不能为空", groups = {AddUserShowGroup.class }) + private String surname; + + /** + * 名 + */ + @NotBlank(message = "名不能为空", groups = {AddUserShowGroup.class }) + private String name; + + /** + * 性别(1男2女0未知) + */ + @NotBlank(message = "性别不能为空", groups = {AddUserShowGroup.class }) + private String gender; + + /** + * 手机号 + */ + @NotBlank(message = "手机号不能为空", groups = {AddUserShowGroup.class }) + private String mobile; + + /** + * 身份证号码 + */ + @NotBlank(message = "身份证号码不能为空", groups = {AddUserShowGroup.class }) + private String idNum; + + /** + * 街道 + */ + @NotBlank(message = "居住地址:街道不能为空", groups = {AddUserShowGroup.class }) + private String street; + + /** + * 小区名 + */ + @NotBlank(message = "居住地址:小区名不能为空", groups = {AddUserShowGroup.class }) + private String district; + + /** + * 楼栋单元 + */ + @NotBlank(message = "居住地址:楼栋单元不能为空", groups = {AddUserShowGroup.class }) + private String buildingAddress; + + /** + * 昵称 + */ + @NotBlank(message = "昵称不能为空", groups = {AddUserInternalGroup.class}) + private String nickname; + + /** + * 头像 + */ + @NotBlank(message = "头像不能为空", groups = {AddUserInternalGroup.class}) + private String avatarUrl; + + /** + * 志愿者注册,所在网格ID + */ + @NotBlank(message = "网格ID不能为空", groups = {AddUserShowGroup.class }) + private String gridId; + private String pid; + private String pids; +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/GridMobileListResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/GridMobileListResultDTO.java new file mode 100644 index 0000000000..080f4709b8 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/GridMobileListResultDTO.java @@ -0,0 +1,66 @@ +package com.epmet.dto.result; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.util.List; + +/** + * @description: 【事件】网格员服务电话 + * @author: sun + */ +@Data +public class GridMobileListResultDTO { + /** + * 网格Id + */ + private String gridId; + + /** + * 工作人员Id + */ + private String staffId; + + /** + * 人员名称 + */ + private String staffName; + + /** + * 性别 + */ + private String gender; + + /** + * 工作人员头像 + */ + private String staffHeadPhoto; + + /** + * 工作人员头像 + */ + private String mobile; + + /** + * 人员角色列表 + */ + private List roleList; + + @Data + public static class Role { + /** + * 工作人员Id + */ + @JsonIgnore + private String staffId; + /** + * 角色Id + */ + private String roleId; + + /** + * 角色名称 + */ + private String roleName; + } +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserInfoOnEnterGridResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserInfoOnEnterGridResultDTO.java index 3561cb4060..e8bff9cd33 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserInfoOnEnterGridResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserInfoOnEnterGridResultDTO.java @@ -30,6 +30,16 @@ public class UserInfoOnEnterGridResultDTO implements Serializable{ * */ private String currentGridId; + /** + * 网格经度【没值则去客户跟组织的值】 + */ + private String longitude; + + /** + * 网格纬度【没值则去客户跟组织的值】 + */ + private String latitude; + /** * 当前网格名称 * */ diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserResiInfoResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserResiInfoResultDTO.java index c5482e05ba..a4be7e8745 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserResiInfoResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserResiInfoResultDTO.java @@ -58,4 +58,5 @@ public class UserResiInfoResultDTO implements Serializable { private String headPhoto; private String nickName; + private String realName; } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java index 45e8ee383e..9c57423628 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java @@ -24,7 +24,7 @@ import java.util.Set; * @author yinzuomei@elink-cn.com * @date 2020/6/4 13:09 */ -//@FeignClient(name = ServiceConstant.EPMET_USER_SERVER, fallbackFactory = EpmetUserOpenFeignClientFallbackFactory.class, url = "localhost:8087") +// @FeignClient(name = ServiceConstant.EPMET_USER_SERVER, fallbackFactory = EpmetUserOpenFeignClientFallbackFactory.class, url = "localhost:8087") @FeignClient(name = ServiceConstant.EPMET_USER_SERVER, fallbackFactory = EpmetUserOpenFeignClientFallbackFactory.class) public interface EpmetUserOpenFeignClient { @@ -242,14 +242,14 @@ public interface EpmetUserOpenFeignClient { Result selectUserBaseInfo(@RequestBody TokenDto tokenDTO); /** - * @Description 认证志愿者时保存/修改用户基础信息 + * @Description 认证志愿者时保存/修改用户基础信息+自动注册居民 * @param param * @return * @author wangc * @date 2020.07.31 09:38 **/ - @PostMapping("/epmetuser/userbaseinfo/volunteerbaseinfo") - Result volunteerBaseInfo(@RequestBody ResiVolunteerAuthenticateFormDTO param); + @PostMapping("/epmetuser/userbaseinfo/volunteerautoregresi") + Result volunteerAutoRegResi(@RequestBody VolunteerRegResiFormDTO param); /** * @return @@ -690,4 +690,22 @@ public interface EpmetUserOpenFeignClient { */ @PostMapping(value = "/epmetuser/patrolroutinework/selectList") Result> getPatrolRoutineWorkList(@RequestBody PatrolQueryFormDTO patrolQueryFormDTO); + + /** + * 获取ic_resi_user + * @param icResiUserId + * @return + */ + @PostMapping(value = "/epmetuser/icresiuser/geticresiuser/{icResiUserId}") + Result getIcResiUserDTO(@PathVariable("icResiUserId") String icResiUserId); + + /** + * @Description 查询居民注册关系 + * @param userId + * @author zxc + * @date 2021/12/30 3:12 下午 + */ + @PostMapping("/epmetuser/userbaseinfo/resirelationinfo") + Result resiRelationInfo(@RequestParam("userId")String userId); + } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java index df25d4f4a9..b434b30806 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java @@ -175,8 +175,8 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien } @Override - public Result volunteerBaseInfo(ResiVolunteerAuthenticateFormDTO param) { - return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "volunteerBaseInfo", param); + public Result volunteerAutoRegResi(VolunteerRegResiFormDTO param) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "volunteerAutoRegResi", param); } @Override @@ -512,4 +512,14 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien public Result> getPatrolRoutineWorkList(PatrolQueryFormDTO patrolQueryFormDTO) { return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getPatrolRoutineWorkList", patrolQueryFormDTO); } + + @Override + public Result getIcResiUserDTO(String icResiUserId) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getIcResiUserDTO", icResiUserId); + } + + @Override + public Result resiRelationInfo(String userId) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "resiRelationInfo", userId); + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/CustomerStaffController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/CustomerStaffController.java index 4be5398b9e..274cb8ed87 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/CustomerStaffController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/CustomerStaffController.java @@ -218,12 +218,14 @@ public class CustomerStaffController { Result result = customerStaffService.addStaff(fromDTO); //2021-10-18 推送mq,数据同步到中介库 start - OrgOrStaffMQMsg mq = new OrgOrStaffMQMsg(); - mq.setCustomerId(fromDTO.getCustomerId()); - mq.setOrgId(result.getData().getUserId()); - mq.setOrgType("staff"); - mq.setType("staff_create"); - SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendOrgStaffMqMsg(mq); + if (result.success()) { + OrgOrStaffMQMsg mq = new OrgOrStaffMQMsg(); + mq.setCustomerId(fromDTO.getCustomerId()); + mq.setOrgId(result.getData().getUserId()); + mq.setOrgType("staff"); + mq.setType("staff_create"); + SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendOrgStaffMqMsg(mq); + } //2021-10-18 end return result; @@ -240,12 +242,14 @@ public class CustomerStaffController { Result result = customerStaffService.editStaff(fromDTO); //2021-10-18 推送mq,数据同步到中介库 start - OrgOrStaffMQMsg mq = new OrgOrStaffMQMsg(); - mq.setCustomerId(fromDTO.getCustomerId()); - mq.setOrgId(fromDTO.getStaffId()); - mq.setOrgType("staff"); - mq.setType("staff_change"); - SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendOrgStaffMqMsg(mq); + if (result.success()) { + OrgOrStaffMQMsg mq = new OrgOrStaffMQMsg(); + mq.setCustomerId(fromDTO.getCustomerId()); + mq.setOrgId(fromDTO.getStaffId()); + mq.setOrgType("staff"); + mq.setType("staff_change"); + SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendOrgStaffMqMsg(mq); + } //2021-10-18 end return result; @@ -479,5 +483,15 @@ public class CustomerStaffController { return new Result>().ok(customerStaffService.getByRealNames(formDTO)); } + /** + * @Author sun + * @Description 【事件】网格员服务电话 + **/ + @PostMapping(value = "gridmobilelist") + public Result> gridMobileList(@LoginUser TokenDto tokenDto, @RequestBody GridMobileListFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, GridMobileListFormDTO.Gridobile.class); + return new Result>().ok(customerStaffService.gridMobileList(formDTO.getGridId(), tokenDto.getUserId())); + } + } 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 e170e5a63d..395a5d40b9 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 @@ -627,4 +627,17 @@ public class IcResiUserController { IcResiUserBriefDTO r = icResiUserService.getResiBrief(resiUserId, customerId); return new Result().ok(r); } + + /** + * 获取ic_resi_user + * @param icResiUserId + * @return + */ + @PostMapping("geticresiuser/{icResiUserId}") + public Result getIcResiUserDTO(@PathVariable("icResiUserId") String icResiUserId){ + if(StringUtils.isNotBlank(icResiUserId)){ + return new Result().ok(icResiUserService.get(icResiUserId)); + } + return new Result<>(); + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserBaseInfoController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserBaseInfoController.java index d8d9d969f3..adc98f7a08 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserBaseInfoController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserBaseInfoController.java @@ -27,10 +27,11 @@ 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.RegisterRelationDTO; import com.epmet.dto.UserBaseInfoDTO; import com.epmet.dto.form.CommonUserIdFormDTO; import com.epmet.dto.form.IssueInitiatorFormDTO; -import com.epmet.dto.form.ResiVolunteerAuthenticateFormDTO; +import com.epmet.dto.form.VolunteerRegResiFormDTO; import com.epmet.dto.result.CustomerUserDetailResultDTO; import com.epmet.dto.result.ExtUserInfoResultDTO; import com.epmet.dto.result.ResiUserBaseInfoResultDTO; @@ -166,16 +167,16 @@ public class UserBaseInfoController { } /** - * @Description 认证志愿者时保存/修改用户基础信息 + * @Description 认证志愿者时保存/修改用户基础信息+自动注册居民 * @param param * @return * @author wangc * @date 2020.07.31 09:38 **/ - @PostMapping("volunteerbaseinfo") - public Result volunteerBaseInfo(@RequestBody ResiVolunteerAuthenticateFormDTO param){ - userBaseInfoService.saveUserBaseInfoWhenAuthVolunteer(param); - return new Result(); + @PostMapping("volunteerautoregresi") + public Result volunteerAutoRegResi(@RequestBody VolunteerRegResiFormDTO param){ + ValidatorUtils.validateEntity(param,VolunteerRegResiFormDTO.AddUserShowGroup.class,VolunteerRegResiFormDTO.AddUserInternalGroup.class); + return userBaseInfoService.volunteerAutoRegResi(param); } /** @@ -203,5 +204,16 @@ public class UserBaseInfoController { ValidatorUtils.validateEntity(param, CommonUserIdFormDTO.CommonUserIdGroup.class); return new Result().ok(userBaseInfoService.extUserInfo(param)); } + + /** + * @Description 查询居民注册关系 + * @param userId + * @author zxc + * @date 2021/12/30 3:12 下午 + */ + @PostMapping("resirelationinfo") + public Result resiRelationInfo(@RequestParam("userId")String userId){ + return new Result().ok(userBaseInfoService.resiRelationInfo(userId)); + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/VolunteerController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/VolunteerController.java index aedfe54e49..51e5020b31 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/VolunteerController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/VolunteerController.java @@ -40,8 +40,9 @@ public class VolunteerController { ValidatorUtils.validateEntity(input, VolunteerCommonFormDTO.GetVolunteerDistribution.class); String customerId = input.getCustomerId(); + String agencyId = input.getAgencyId(); - VolunteerDistributionResultDTO r = volunteerService.getVolunteerDistributionAndLegends(customerId); + VolunteerDistributionResultDTO r = volunteerService.getVolunteerDistributionAndLegends(customerId, agencyId); return new Result().ok(r); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/CustomerStaffDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/CustomerStaffDao.java index d0ce82f757..f877b1e50b 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/CustomerStaffDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/CustomerStaffDao.java @@ -127,7 +127,7 @@ public interface CustomerStaffDao extends BaseDao { * @Author sun * @Description 根据staffId集合查询工作人员基础信息 **/ - List selectStaffByIds(@Param("staffIdList") List staffIdList); + List selectStaffByIds(@Param("staffIdList") List staffIdList); /** * @param staffId @@ -221,4 +221,10 @@ public interface CustomerStaffDao extends BaseDao { * @Description 根据工作人员姓名批量查询基础信息数据 **/ List getByRealNames(GetByRealNamesFormDTO formDTO); + + /** + * @Author sun + * @Description 工作人员基本信息 + **/ + List gridStaffMobileList(List staffIdList); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/RegisterRelationDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/RegisterRelationDao.java index 160e1a4afc..480c8b52fa 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/RegisterRelationDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/RegisterRelationDao.java @@ -18,6 +18,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.RegisterRelationDTO; import com.epmet.entity.RegisterRelationEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -55,4 +56,12 @@ public interface RegisterRelationDao extends BaseDao { * @date 2021/3/16 下午3:05 */ String selectRegisterGridIdByUserId(@Param("userId")String userId); + + /** + * @Description 居民注册关系 + * @param userId + * @author zxc + * @date 2021/12/30 3:14 下午 + */ + RegisterRelationDTO resiRelationInfo(@Param("userId")String userId); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/StaffRoleDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/StaffRoleDao.java index 876634717b..31e6591d92 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/StaffRoleDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/StaffRoleDao.java @@ -163,4 +163,10 @@ public interface StaffRoleDao extends BaseDao { * @date 2021/8/19 11:16 上午 */ Set selectRoleStaffIds(@Param("customerId") String customerId,@Param("roleIds") Set roleIds); + + /** + * @Author sun + * @Description 【事件】网格员服务电话 + **/ + List staffRoleList(@Param("staffIds") List staffIds); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserBadgeRedis.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserBadgeRedis.java index 0ffa41aaa0..ba05ebd830 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserBadgeRedis.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserBadgeRedis.java @@ -110,10 +110,14 @@ public class UserBadgeRedis { public List obtainUserBadge2List(String userId,String customerId) { List cache = redisUtils.lrange(RedisKeys.getResiUserBadgeKey(customerId, userId), NumConstant.ZERO, NumConstant.ONE_NEG, UserBadgeUnitFormDTO.class); - if(!CollectionUtils.isEmpty(cache)) return cache; + if(!CollectionUtils.isEmpty(cache)) { + return cache; + } //补偿 cache = badgeService.getUserSortedBadge(userId,customerId); - if(CollectionUtils.isEmpty(cache)) return cache; + if(CollectionUtils.isEmpty(cache)) { + return cache; + } final List sortedBadges = cache; redisTemplate.executePipelined((RedisCallback>) connection ->{ sortedBadges.forEach(badge -> { @@ -135,7 +139,9 @@ public class UserBadgeRedis { * @date 2020.11.10 15:00 */ public Map> batchObtainUserBadge(String customerId,List userIds){ - if(CollectionUtils.isEmpty(userIds)) return Collections.EMPTY_MAP; + if(CollectionUtils.isEmpty(userIds)) { + return Collections.EMPTY_MAP; + } Map> result = new HashMap<>(); //存放缓存为空的 List cacheBlank = new LinkedList<>(); @@ -177,7 +183,9 @@ public class UserBadgeRedis { * @date 2020.11.05 13:37 */ public long pushOrRemoveUserBadge4List(String userId, String badgeId, String customerId) { - if(StringUtils.isNotBlank(userId)) return illumeOrExtinguishStronglyConsistent(userId,customerId); + if(StringUtils.isNotBlank(userId)) { + return illumeOrExtinguishStronglyConsistent(userId,customerId); + } List orient = redisUtils.lrange(RedisKeys.getResiUserBadgeKey(customerId, userId), NumConstant.ZERO, NumConstant.ONE_NEG, UserBadgeUnitFormDTO.class); UserBadgeUnitFormDTO unit = null; @@ -203,8 +211,11 @@ public class UserBadgeRedis { if (null == unit) { Optional poolOpt = badgePool.stream().filter(badge -> StringUtils.equals(badge.getBadgeId(), badgeId)).findFirst(); - if (poolOpt.isPresent()) unit = ConvertUtils.sourceToTarget(poolOpt.get(), UserBadgeUnitFormDTO.class); - else return NumConstant.ZERO; + if (poolOpt.isPresent()) { + unit = ConvertUtils.sourceToTarget(poolOpt.get(), UserBadgeUnitFormDTO.class); + } else { + return NumConstant.ZERO; + } } redisUtils.leftPush(RedisKeys.getResiUserBadgeKey(customerId, userId), unit, -1); return NumConstant.ONE; @@ -241,7 +252,9 @@ public class UserBadgeRedis { */ public void batchClearUserBadgeCache(String customerId){ Set key = redisUtils.keys(RedisKeys.getResiUserBadgeKey(customerId, null)); - if(CollectionUtils.isEmpty(key)) return; + if(CollectionUtils.isEmpty(key)) { + return; + } final Set keys = key; redisTemplate.executePipelined((RedisCallback) connection ->{ keys.forEach( ser -> {connection.del(redisTemplate.getKeySerializer().serialize(ser));}); diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserBaseInfoRedis.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserBaseInfoRedis.java index aaee53101c..435b99f213 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserBaseInfoRedis.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/redis/UserBaseInfoRedis.java @@ -79,7 +79,9 @@ public class UserBaseInfoRedis { * @date 2020.07.23 14:43 **/ public void set(UserBaseInfoResultDTO baseInfo){ - if(StringUtils.isBlank(baseInfo.getUserId())) return; + if(StringUtils.isBlank(baseInfo.getUserId())) { + return; + } String key = RedisKeys.getResiUserKey(baseInfo.getUserId()); //bean to map Map map = BeanUtil.beanToMap(baseInfo, false, true); @@ -289,7 +291,9 @@ public class UserBaseInfoRedis { * @date 2020.07.30 14:07 **/ public void updateUserCache(UserBaseInfoEntity entity){ - if(null == entity || StringUtils.isBlank(entity.getUserId())) return; + if(null == entity || StringUtils.isBlank(entity.getUserId())) { + return; + } UserBaseInfoResultDTO currentCache = ConvertUtils.sourceToTarget(entity,UserBaseInfoResultDTO.class); @@ -314,7 +318,9 @@ public class UserBaseInfoRedis { && StringUtils.isNotBlank(gridResult.getData().getBelongsGridName())) { String gridFullName = gridResult.getData().getBelongsGridName(); currentCache.setRegisteredGridName(gridFullName); - if (StringUtils.isBlank(currentCache.getGender())) currentCache.setGender(NumConstant.ZERO_STR); + if (StringUtils.isBlank(currentCache.getGender())) { + currentCache.setGender(NumConstant.ZERO_STR); + } if (StringUtils.isNotBlank(currentCache.getNickname())) { StringBuffer buffer = new StringBuffer(gridFullName.split(ModuleConstant.DASH)[NumConstant.ONE]).append(ModuleConstant.DASH).append(currentCache.getSurname()); switch (currentCache.getGender()) { @@ -370,10 +376,12 @@ public class UserBaseInfoRedis { } public void mergeObject(T origin, T destination) { - if (origin == null || destination == null) + if (origin == null || destination == null) { return; - if (!origin.getClass().equals(destination.getClass())) + } + if (!origin.getClass().equals(destination.getClass())) { return; + } Field[] fields = origin.getClass().getDeclaredFields(); for (int i = 0; i < fields.length; i++) { diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/CustomerStaffService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/CustomerStaffService.java index 08916bfcc8..e986aa8f07 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/CustomerStaffService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/CustomerStaffService.java @@ -341,4 +341,10 @@ public interface CustomerStaffService extends BaseService { * @Description 根据工作人员姓名批量查询基础信息数据 **/ List getByRealNames(GetByRealNamesFormDTO formDTO); + + /** + * @Author sun + * @Description 【事件】网格员服务电话 + **/ + List gridMobileList(String gridId, String userId); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java index 787c54bdc3..16d2aaf0d9 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java @@ -192,4 +192,11 @@ public interface IcResiUserService extends BaseService { PageData getPartyMemberEducationList(PartyMemberListFormDTO formDTO); IcResiUserBriefDTO getResiBrief(String resiUserId, String customerId); + + /** + * 获取居民主表记录 + * @param icResiUserId + * @return + */ + IcResiUserDTO get(String icResiUserId); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBaseInfoService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBaseInfoService.java index b5ca38d3ed..01bac74fc2 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBaseInfoService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBaseInfoService.java @@ -20,9 +20,10 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.RegisterRelationDTO; import com.epmet.dto.UserBaseInfoDTO; import com.epmet.dto.form.CommonUserIdFormDTO; -import com.epmet.dto.form.ResiVolunteerAuthenticateFormDTO; +import com.epmet.dto.form.VolunteerRegResiFormDTO; import com.epmet.dto.result.CustomerUserDetailResultDTO; import com.epmet.dto.result.ExtUserInfoResultDTO; import com.epmet.dto.result.ResiUserBaseInfoResultDTO; @@ -164,13 +165,13 @@ public interface UserBaseInfoService extends BaseService { Result selecUserBaseInfoByUserId(String userId); /** - * @Description 认证志愿者时保存/修改用户基础信息 + * @Description 认证志愿者时保存/修改用户基础信息+自动注册居民 * @param param * @return * @author wangc * @date 2020.07.31 09:38 **/ - void saveUserBaseInfoWhenAuthVolunteer(ResiVolunteerAuthenticateFormDTO param); + Result volunteerAutoRegResi(VolunteerRegResiFormDTO param); /** * @Description 清除用户缓存信息 @@ -194,4 +195,12 @@ public interface UserBaseInfoService extends BaseService { @Deprecated Integer checkIdNum(String idNum, String customerId, String excludeUserId); + + /** + * @Description 查询居民注册关系 + * @param userId + * @author zxc + * @date 2021/12/30 3:12 下午 + */ + RegisterRelationDTO resiRelationInfo(String userId); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserResiInfoService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserResiInfoService.java index 30b73bd794..1334034ebd 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserResiInfoService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserResiInfoService.java @@ -115,6 +115,14 @@ public interface UserResiInfoService extends BaseService { */ Result submit(UserResiInfoDTO userResiInfoDTO); + /** + * 自动认证居民:志愿者注册,自动认证居民 + * + * @param userResiInfoDTO + * @return + */ + Result autoRegResi(UserResiInfoDTO userResiInfoDTO); + /** * 居民端-居民注册根据手机号获取验证码 * diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/VolunteerService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/VolunteerService.java index cd87cf7dd5..cab57d3c00 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/VolunteerService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/VolunteerService.java @@ -10,6 +10,6 @@ import com.epmet.dto.result.VolunteerDistributionResultDTO; */ public interface VolunteerService { - VolunteerDistributionResultDTO getVolunteerDistributionAndLegends(String customerId); + VolunteerDistributionResultDTO getVolunteerDistributionAndLegends(String customerId, String agencyId); } 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 e97ba4e662..418b9dfbc6 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 @@ -799,4 +799,49 @@ public class CustomerStaffServiceImpl extends BaseServiceImpl gridMobileList(String gridId, String userId) { + List resultList = new ArrayList<>(); + //1.查询网格下工作人员列表 + CommonGridIdFormDTO dto = new CommonGridIdFormDTO(); + dto.setGridId(gridId); + dto.setUserId(userId); + Result> gridStaffs = govOrgOpenFeignClient.getGridStaffs(dto); + if (!gridStaffs.success()) { + throw new RenException("获取网格下工作人员列表失败!"); + } + if (gridStaffs.getData().size() < NumConstant.ONE) { + return resultList; + } + + //2.查询工作人员中拥有网格长网格员角色的人员列表 + List staffRoleList = staffRoleDao.staffRoleList(gridStaffs.getData()); + + //3.查询工作人员基础信息 + List staffIdList = staffRoleList.stream().map(GridMobileListResultDTO.Role::getStaffId).collect(Collectors.toList()); + staffIdList = staffIdList.stream().distinct().collect(Collectors.toList()); + List list = baseDao.selectStaffByIds(staffIdList); + + //4.封装数据并返回 + resultList = ConvertUtils.sourceToTarget(list, GridMobileListResultDTO.class); + List roleList = null; + for (GridMobileListResultDTO re : resultList) { + roleList = new ArrayList<>(); + for (GridMobileListResultDTO.Role r : staffRoleList) { + if (re.getStaffId().equals(r.getStaffId())) { + GridMobileListResultDTO.Role role = ConvertUtils.sourceToTarget(r, GridMobileListResultDTO.Role.class); + roleList.add(role); + } + } + re.setGridId(gridId); + re.setRoleList(roleList); + } + + return resultList; + } + } 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 62af9502bb..bc787d1d67 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 @@ -937,6 +937,12 @@ public class IcResiUserServiceImpl extends BaseServiceImpl> getBatchUserSortedBadge(String customerId, List userIds) { List badges = userBadgeDao.selectBatchUserSortedBadge(customerId, userIds); - if (CollectionUtils.isEmpty(badges)) return Collections.EMPTY_MAP; + if (CollectionUtils.isEmpty(badges)) { + return Collections.EMPTY_MAP; + } return badges.stream().collect(Collectors.groupingBy(UserBadgeInfoResultDTO::getUserId)); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBaseInfoServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBaseInfoServiceImpl.java index 5dd7677665..898a7735d2 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBaseInfoServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBaseInfoServiceImpl.java @@ -21,6 +21,7 @@ import com.alibaba.fastjson.JSON; 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.AppClientConstant; import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; @@ -29,12 +30,13 @@ import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.dao.*; +import com.epmet.dto.RegisterRelationDTO; import com.epmet.dto.UserBaseInfoDTO; import com.epmet.dto.UserResiInfoDTO; import com.epmet.dto.UserWechatDTO; import com.epmet.dto.form.CommonUserIdFormDTO; -import com.epmet.dto.form.ResiVolunteerAuthenticateFormDTO; import com.epmet.dto.form.UserRoleFormDTO; +import com.epmet.dto.form.VolunteerRegResiFormDTO; import com.epmet.dto.result.*; import com.epmet.entity.UserBaseInfoEntity; import com.epmet.entity.UserWechatEntity; @@ -44,6 +46,7 @@ import com.epmet.resi.partymember.dto.partymember.PartymemberInfoDTO; import com.epmet.resi.partymember.feign.ResiPartyMemberOpenFeignClient; import com.epmet.service.RegisterRelationService; import com.epmet.service.UserBaseInfoService; +import com.epmet.service.UserResiInfoService; import com.epmet.util.ModuleConstant; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; @@ -82,6 +85,10 @@ public class UserBaseInfoServiceImpl extends BaseServiceImpl page(Map params) { @@ -345,26 +352,55 @@ public class UserBaseInfoServiceImpl extends BaseServiceImpl ids) { - if(null == ids || ids.isEmpty()) return; + if(null == ids || ids.isEmpty()) { + return; + } userBaseInfoRedis.clearUserCache(ids); } @@ -455,4 +493,15 @@ public class UserBaseInfoServiceImpl extends BaseServiceImpl implem UserBaseInfoEntity baseInfo = new UserBaseInfoEntity(); //UserBaseInfoResultDTO cache = userBaseInfoRedis.get(wxUserInfoFormDTO.getUserId()); - UserResiInfoDTO resiInfo = userResiInfoDao.selectByUserId(wxUserInfoFormDTO.getUserId()); + // 以下这段注释于21.12.22,只更新微信相关信息就可以 + /* UserResiInfoDTO resiInfo = userResiInfoDao.selectByUserId(wxUserInfoFormDTO.getUserId()); if(null != resiInfo && StringUtils.isNotBlank((resiInfo.getId()))) { baseInfo.setSurname(resiInfo.getSurname()); baseInfo.setName(resiInfo.getName()); @@ -152,7 +153,7 @@ public class UserServiceImpl extends BaseServiceImpl implem baseInfo.setDistrict(resiInfo.getDistrict()); baseInfo.setBuildingAddress(resiInfo.getBuildingAddress()); baseInfo.setMobile(resiInfo.getRegMobile()); - } + }*/ @@ -203,7 +204,9 @@ public class UserServiceImpl extends BaseServiceImpl implem if(gridResult.success() && null != gridResult.getData() && null != gridResult.getData().getGridName()){ result.setRegisterGridName(gridResult.getData().getGridName()); }else { - if (StringUtils.isNotBlank(gridResult.getMsg())) log.warn(gridResult.getMsg()); + if (StringUtils.isNotBlank(gridResult.getMsg())) { + log.warn(gridResult.getMsg()); + } } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/VolunteerServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/VolunteerServiceImpl.java index 238b70cc41..a25f7d2ad7 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/VolunteerServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/VolunteerServiceImpl.java @@ -60,10 +60,10 @@ public class VolunteerServiceImpl implements VolunteerService, ResultDataResolve * @return */ @Override - public VolunteerDistributionResultDTO getVolunteerDistributionAndLegends(String customerId) { + public VolunteerDistributionResultDTO getVolunteerDistributionAndLegends(String customerId, String agencyId) { // 1.查询分布 - VolunteerDistributionResultDTO volunteerDistribution = getVolunteerDistribution(customerId); + VolunteerDistributionResultDTO volunteerDistribution = getVolunteerDistribution(customerId, agencyId); // 2.补充图例 IcFormOptionsQueryFormDTO optionsForm = new IcFormOptionsQueryFormDTO(); @@ -95,7 +95,7 @@ public class VolunteerServiceImpl implements VolunteerService, ResultDataResolve * @param customerId * @return */ - public VolunteerDistributionResultDTO getVolunteerDistribution(String customerId) { + public VolunteerDistributionResultDTO getVolunteerDistribution(String customerId, String agencyId) { VolunteerDistributionResultDTO r = new VolunteerDistributionResultDTO(); // 1.==========分页查询出所有志愿者列表========== @@ -103,12 +103,13 @@ public class VolunteerServiceImpl implements VolunteerService, ResultDataResolve String vcErrorMsg = "【志愿者分布】查询志愿者总数出错"; VolunteerCommonFormDTO volunteerCountForm = new VolunteerCommonFormDTO(); volunteerCountForm.setCustomerId(customerId); + volunteerCountForm.setAgencyId(agencyId); Integer volunteerCount = getResultDataOrThrowsException(epmetHeartOpenFeignClient.getVolunteerCount(volunteerCountForm), ServiceConstant.EPMET_HEART_SERVER, EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), vcErrorMsg, vcErrorMsg); - + if (volunteerCount == null || volunteerCount == 0) { // 没得志愿者,直接返回 return r; @@ -125,12 +126,12 @@ public class VolunteerServiceImpl implements VolunteerService, ResultDataResolve // 分页查询志愿者的epmet user id List>> volsPageFutures = new ArrayList<>(); - + for (int pageNo = 1 ; pageNo <= pageCount ; pageNo ++) { - + int pageNoTemp = pageNo; CompletableFuture> future = CompletableFuture.supplyAsync(() -> { - return listVolunteersByPage(customerId, pageNoTemp, pageSize) + return listVolunteersByPage(customerId, agencyId, pageNoTemp, pageSize) .stream() .map(v -> v.getUserId()) .collect(Collectors.toSet()); @@ -149,17 +150,17 @@ public class VolunteerServiceImpl implements VolunteerService, ResultDataResolve log.error("【志愿者分布】异步获取志愿者userId列表失败:{}", ExceptionUtils.getErrorStackTrace(e)); } } - + log.info("【志愿者分布】查询到志愿者userId公{}个", volunteerEpmetUserIds.size()); - + // 2.==========异步填充ic居民信息========== List>> volResiInfoFutures = new ArrayList<>(); - + // 将所有的userId按100固定分割成多个部分,循环用每个部分去查询,然后填充 List> volunteerEpmetUserIdParts = Lists.partition(volunteerEpmetUserIds, 100); for (List volunteerEpmetUserIdPart : volunteerEpmetUserIdParts) { - + log.info("【志愿者分布】查询ic居民信息,切割后,本组的userId个数:{}", volunteerEpmetUserIdPart.size()); CompletableFuture> future = CompletableFuture.supplyAsync(() -> { @@ -222,7 +223,7 @@ public class VolunteerServiceImpl implements VolunteerService, ResultDataResolve }); } - + return icResiInfos; } @@ -233,9 +234,10 @@ public class VolunteerServiceImpl implements VolunteerService, ResultDataResolve * @param pageSize * @return */ - private List listVolunteersByPage(String customerId, Integer pageNo, Integer pageSize) { + private List listVolunteersByPage(String customerId, String agencyId, Integer pageNo, Integer pageSize) { VolunteerCommonFormDTO volunteerForm = new VolunteerCommonFormDTO(); volunteerForm.setCustomerId(customerId); + volunteerForm.setAgencyId(agencyId); volunteerForm.setPageNo(pageNo); volunteerForm.setPageSize(pageSize); @@ -246,4 +248,5 @@ public class VolunteerServiceImpl implements VolunteerService, ResultDataResolve errorMsg, errorMsg); } + } 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 37c1b545c0..f441f419af 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 @@ -451,5 +451,6 @@ #{name} + diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/RegisterRelationDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/RegisterRelationDao.xml index f6e9b17e34..74c1691615 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/RegisterRelationDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/RegisterRelationDao.xml @@ -82,5 +82,10 @@ SELECT GRID_ID FROM register_relation WHERE DEL_FLAG = 0 and USER_ID = #{userId} + + + diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/StaffRoleDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/StaffRoleDao.xml index 05ce74c660..edb8b4e4a4 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/StaffRoleDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/StaffRoleDao.xml @@ -253,4 +253,23 @@ + + + diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/UserResiInfoDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/UserResiInfoDao.xml index 93cb1fc7a4..102f9611ac 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/UserResiInfoDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/UserResiInfoDao.xml @@ -106,6 +106,7 @@ uri.DEL_FLAG = '0' AND uri.REG_MOBILE = #{regMobile,jdbcType=VARCHAR} AND uc.CUSTOMER_ID = #{customerId,jdbcType=VARCHAR} + AND uri.CUSTOMER_ID = #{customerId,jdbcType=VARCHAR} AND uc.IS_REGISTER = 1 @@ -113,7 +114,7 @@