diff --git a/epmet-admin/epmet-admin-server/deploy/docker-compose-prod.yml b/epmet-admin/epmet-admin-server/deploy/docker-compose-prod.yml index 0fb85349bf..550b4369e3 100644 --- a/epmet-admin/epmet-admin-server/deploy/docker-compose-prod.yml +++ b/epmet-admin/epmet-admin-server/deploy/docker-compose-prod.yml @@ -2,7 +2,7 @@ version: "3.7" services: epmet-admin-server: container_name: epmet-admin-server-prod - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-admin-server:0.3.28 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-admin-server:0.3.32 ports: - "8082:8082" network_mode: host # 使用现有网络 diff --git a/epmet-admin/epmet-admin-server/pom.xml b/epmet-admin/epmet-admin-server/pom.xml index 8c073dd8c3..c3b038a367 100644 --- a/epmet-admin/epmet-admin-server/pom.xml +++ b/epmet-admin/epmet-admin-server/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.28 + 0.3.32 com.epmet epmet-admin 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-auth/deploy/docker-compose-prod.yml b/epmet-auth/deploy/docker-compose-prod.yml index d327a24e3e..6b9592dfa9 100644 --- a/epmet-auth/deploy/docker-compose-prod.yml +++ b/epmet-auth/deploy/docker-compose-prod.yml @@ -2,7 +2,7 @@ version: "3.7" services: epmet-auth-server: container_name: epmet-auth-server-prod - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-auth:0.3.96 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-auth:0.3.98 ports: - "8081:8081" network_mode: host # 使用现有网络 diff --git a/epmet-auth/pom.xml b/epmet-auth/pom.xml index dbc60cf787..41b8b92296 100644 --- a/epmet-auth/pom.xml +++ b/epmet-auth/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.96 + 0.3.98 com.epmet epmet-cloud 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..7992a0049a 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,9 @@ public enum EpmetErrorCode { COMMUNITY_SELF_ORGANIZATION_LIST_REPART_ERROR(8530, "%s社区自组织名称已存在"), MATTER_NAME_EXISTS_APPOINTMENT_ERROR(8532, "存在重复预约事项"), + ERROR_DATE(8533, "不合理日期"), + + CHECK_PHONE_ERROR(8534, "号码不合法"), // 该错误不会提示给前端,只是后端传输错误信息用。 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/security/password/PasswordUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/security/password/PasswordUtils.java index 758a6d84ed..d7a685b2f2 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/security/password/PasswordUtils.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/security/password/PasswordUtils.java @@ -39,7 +39,7 @@ public class PasswordUtils { public static void main(String[] args) { - String str = "admin"; + String str = "wangqing"; String password = encode(str); System.out.println(password); 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-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/validator/PhoneValidatorUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/validator/PhoneValidatorUtils.java index d1a35124af..9f97a3f5c1 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/validator/PhoneValidatorUtils.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/validator/PhoneValidatorUtils.java @@ -12,6 +12,12 @@ import java.util.regex.Pattern; public class PhoneValidatorUtils { private static final String REGEX_MOBILE ="((\\+86|0086)?\\s*)((134[0-8]\\d{7})|(((13([0-3]|[5-9]))|(14[5-9])|15([0-3]|[5-9])|(16(2|[5-7]))|17([0-3]|[5-8])|18[0-9]|19([0-9]))\\d{8})|(14(0|1|4)0\\d{7})|(1740([0-5]|[6-9]|[10-12])\\d{7}))"; + /** + * 正则:固定电话号码,可带区号,然后至少6,8位数字 + */ + private static final String REGEX_TEL = "^(\\d{3,4}-)?\\d{6,8}$"; + private static final Pattern PATTERN_REGEX_TEL = Pattern.compile(REGEX_TEL); + /** * 判断是否是手机号 * @param tel 手机号 @@ -24,8 +30,19 @@ public class PhoneValidatorUtils { return Pattern.matches(REGEX_MOBILE, tel); } + /** + * 验证固定电话号码 + */ + public static boolean isTel( String str) { + return isMatch(PATTERN_REGEX_TEL, str); + } + + public static boolean isMatch(Pattern pattern, String str) { + return StringUtils.isNotEmpty(str) && pattern.matcher(str).matches(); + } + public static void main(String[] args) { - System.out.println(isMobile("19353198889")); + System.out.println(isTel("2887438")); } } diff --git a/epmet-gateway/deploy/docker-compose-prod.yml b/epmet-gateway/deploy/docker-compose-prod.yml index 789eaec898..4edd602d7a 100644 --- a/epmet-gateway/deploy/docker-compose-prod.yml +++ b/epmet-gateway/deploy/docker-compose-prod.yml @@ -2,7 +2,7 @@ version: "3.7" services: epmet-gateway-server: container_name: epmet-gateway-server-prod - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-gateway:0.3.69 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-gateway:0.3.71 ports: - "8080:8080" network_mode: host # 使用现有网络 diff --git a/epmet-gateway/pom.xml b/epmet-gateway/pom.xml index 1169c9ca84..abf223c749 100644 --- a/epmet-gateway/pom.xml +++ b/epmet-gateway/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.69 + 0.3.71 com.epmet epmet-cloud diff --git a/epmet-gateway/src/main/resources/bootstrap.yml b/epmet-gateway/src/main/resources/bootstrap.yml index 632d3a0ac4..35b4f1802b 100644 --- a/epmet-gateway/src/main/resources/bootstrap.yml +++ b/epmet-gateway/src/main/resources/bootstrap.yml @@ -496,6 +496,7 @@ epmet: - /gov/project/project/platformcallback - /oper/customize/customerstartpage/homestartpage - /epmet/point/mqCallback/** + - /tduck-api/** # 外部应用认证,使用AccessToken等头进行认证 externalOpenUrls: diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/WorkFactResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/WorkFactResultDTO.java index 9eebe98854..0a35355dd6 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/WorkFactResultDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/WorkFactResultDTO.java @@ -19,6 +19,7 @@ public class WorkFactResultDTO implements Serializable { private Integer closedProjectTotal = 0; private Integer patrolTotal = 0; private String patrolTotalTime = "0"; + private Integer routineWorkCount = 0; private String orgId; private String orgName; diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/PatrolDailySumResult.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/PatrolDailySumResult.java index c7fbe6b7ef..af0c502590 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/PatrolDailySumResult.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/PatrolDailySumResult.java @@ -18,4 +18,5 @@ public class PatrolDailySumResult implements Serializable { private String orgId; private Integer patrolTotal; private Integer totalTime; + private Integer routineWorkCount; } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/StaffPatrolRecordDailyResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/StaffPatrolRecordDailyResultDTO.java new file mode 100644 index 0000000000..be6f619fcc --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/StaffPatrolRecordDailyResultDTO.java @@ -0,0 +1,21 @@ +package com.epmet.dataaggre.dto.epmetuser.result; + +import lombok.Data; + +/** + * @ClassName StaffPatrolRecordDailyResultDTO + * @Description 工作人员巡查记录按日统计,查询结果 + * @Author wangxianzhang + * @Date 2022/1/4 4:08 下午 + */ +@Data +public class StaffPatrolRecordDailyResultDTO { + + private String staffId; + private String gridId; + + private int patrolTimes; + private int totalTime; + private int patrolRoutineWorkTimes; + +} 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-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/GridMemberDataAnalysisFromDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/GridMemberDataAnalysisFromDTO.java index 1803db4c96..a546b2d436 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/GridMemberDataAnalysisFromDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/GridMemberDataAnalysisFromDTO.java @@ -1,14 +1,18 @@ package com.epmet.dataaggre.dto.govorg.form; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotBlank; +import java.util.Date; import java.util.List; @Data public class GridMemberDataAnalysisFromDTO { public interface listGridMemberDatas {} + public interface listGridMemberDatas4PcWork {} private List gridIds; @@ -19,4 +23,18 @@ public class GridMemberDataAnalysisFromDTO { private String sort; private Integer pageNo = 1; private Integer pageSize = 10; + + @NotBlank(message = "请选择组织", groups = { listGridMemberDatas4PcWork.class }) + private String orgId; + + @NotBlank(message = "请选择组织类型", groups = { listGridMemberDatas4PcWork.class }) + private String orgType; + + @DateTimeFormat(pattern = "yyyyMMdd") + @JsonFormat(pattern = "yyyyMMdd") + private Date startTime; + + @DateTimeFormat(pattern = "yyyyMMdd") + @JsonFormat(pattern = "yyyyMMdd") + private Date endTime; } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/GridMemberDataAnalysisResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/GridMemberDataAnalysisResultDTO.java index b431cfafab..da6758c768 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/GridMemberDataAnalysisResultDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/GridMemberDataAnalysisResultDTO.java @@ -7,9 +7,12 @@ public class GridMemberDataAnalysisResultDTO { private String gridId; private String staffId; + private String mobile; private String staffName; private String orgName; + //private String gridName; + // 项目议题等 private Integer projectCount; private Integer issueToProjectCount; private Integer closedIssueCount; @@ -17,4 +20,9 @@ public class GridMemberDataAnalysisResultDTO { private Integer projectTransferCount; private Integer projectClosedCount; + // 巡查 + private int patrolTimes; + private String totalTime; + private int patrolRoutineWorkTimes; + } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/ResiEventReportOrgDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/ResiEventReportOrgDTO.java new file mode 100644 index 0000000000..2576c3df7e --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/ResiEventReportOrgDTO.java @@ -0,0 +1,112 @@ +/** + * 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.dataaggre.dto.govproject; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 事件相关组织表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-08-03 + */ +@Data +public class ResiEventReportOrgDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 客户ID + */ + private String customerId; + + /** + * 事件id + */ + private String resiEventId; + + /** + * 报给?: +网格:grid; +社区:community; +乡(镇、街道)级:street; +区县级: district; +市级: city; +省级:province。 + */ + private String orgType; + + /** + * 报给的组织或者网格id + */ + private String orgId; + + /** + * org_id的上级组织id,org_id是跟组织,此列为0 + */ + private String orgPid; + + /** + * org_id的所有上级组织id,org_id是跟组织,此列为0 + */ + private String orgPids; + + /** + * 含义:已读read,未读:un_read;组织下的工作人员从待处理=>处理中,点击查看详情前更新为已读; + */ + private String orgRead; + + /** + * (1)含义:1:展示红点;0:不展示;(2)注意:发布事件插入数据时为1,(3)何时更新?:人大代表回复or报事人回复or工作人员回复、立项、办结更新为1; + */ + private Boolean redDot; + + /** + * 删除标识:0.未删除 1.已删除 + */ + private String delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/AllProjectFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/AllProjectFormDTO.java index 7ddd901d11..7095169cb0 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/AllProjectFormDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/AllProjectFormDTO.java @@ -38,4 +38,8 @@ public class AllProjectFormDTO implements Serializable { private List gridIdList; private String agencyId; + + private List agencyIdList; + + private String customerId; } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/ProjectCategoryTotalFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/ProjectCategoryTotalFormDTO.java index 66d4e983b8..56d8f391e9 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/ProjectCategoryTotalFormDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/ProjectCategoryTotalFormDTO.java @@ -4,10 +4,8 @@ import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; import lombok.Data; import lombok.NoArgsConstructor; -import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; import java.io.Serializable; -import java.util.List; /** * @Description 赋能平台【项目分类分析】-接口入参 @@ -26,6 +24,13 @@ public class ProjectCategoryTotalFormDTO implements Serializable { private String customerId; + /** + * 一级分类 code长度 + */ + private Integer categoryOneLength; + + private String fullOrgIds; + public interface Project extends CustomerClientShowGroup { } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/CategoryProjectResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/CategoryProjectResultDTO.java index 0d5b2f2707..5386febe19 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/CategoryProjectResultDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/CategoryProjectResultDTO.java @@ -32,12 +32,14 @@ public class CategoryProjectResultDTO implements Serializable { private List categoryCodes = new ArrayList<>(); //一级分类名称集合 private List categoryNames = new ArrayList<>(); - //来源:议题issue 项目立项:agency 事件:resi_event【控制电机查看时里边三个按钮的显示】 + //网格Id + private String gridId; + //来源:议题issue 项目立项:agency 事件:resi_event【控制点击查看时里边三个按钮的显示】 private String origin; - //网格Id[上报给组织的事件、直接立项的项目此值为空] - private String gridId = ""; - //网格名[上报给组织的事件、直接立项的项目此值为空] - private String gridName = ""; + //来源Id + private String originId; + //所属组织名[来源楼院小组的项目所属组织显示来源的网格名,直接立项的显示立项的组织名,来源事件的显示上报给的网格或组织名] + private String orgName = ""; //状态:待处理 pending,已结案closed private String status; //标题 diff --git a/epmet-module/data-aggregator/data-aggregator-server/deploy/docker-compose-prod.yml b/epmet-module/data-aggregator/data-aggregator-server/deploy/docker-compose-prod.yml index 915df72317..9d22fdfb8c 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/deploy/docker-compose-prod.yml +++ b/epmet-module/data-aggregator/data-aggregator-server/deploy/docker-compose-prod.yml @@ -2,7 +2,7 @@ version: "3.7" services: data-aggregator-server: container_name: data-aggregator-server-prod - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/data-aggregator-server:0.3.78 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/data-aggregator-server:0.3.92 ports: - "8114:8114" network_mode: host # 使用现有网络 diff --git a/epmet-module/data-aggregator/data-aggregator-server/pom.xml b/epmet-module/data-aggregator/data-aggregator-server/pom.xml index 06f591c6c0..c66ced640a 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/pom.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/pom.xml @@ -2,7 +2,7 @@ - 0.3.78 + 0.3.92 data-aggregator com.epmet @@ -82,6 +82,34 @@ 2.0.0 compile + + cglib + cglib + 3.1 + + + com.alibaba + easyexcel + 3.0.3 + + + poi + org.apache.poi + + + poi-ooxml + org.apache.poi + + + poi-ooxml-schemas + org.apache.poi + + + + diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/beans/GridMemberDataAnalysisExcelExportBean.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/beans/GridMemberDataAnalysisExcelExportBean.java new file mode 100644 index 0000000000..f4cc0d57ad --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/beans/GridMemberDataAnalysisExcelExportBean.java @@ -0,0 +1,55 @@ +package com.epmet.dataaggre.beans; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; + +/** + * 网格员数据分析excel导出bean + */ +@Getter +@Setter +@EqualsAndHashCode +@ColumnWidth(20) +public class GridMemberDataAnalysisExcelExportBean { + @ExcelProperty(value = {"姓名"}) + private String staffName; + + @ExcelProperty(value = {"手机号"}) + private String mobile; + + @ExcelProperty(value = {"所属网格"}) + private String orgName; + + // 项目议题等 + @ExcelProperty(value = {"项目数"}) + private Integer projectCount; + + @ExcelProperty(value = {"议题转项目数"}) + private Integer issueToProjectCount; + + @ExcelProperty(value = {"议题关闭数"}) + private Integer closedIssueCount; + + @ExcelProperty(value = {"项目事件响应数"}) + private Integer projectResponseCount; + + @ExcelProperty(value = {"项目事件吹哨数"}) + private Integer projectTransferCount; + + @ExcelProperty(value = {"项目事件结案数"}) + private Integer projectClosedCount; + + // 巡查 + @ExcelProperty(value = {"巡查次数"}) + private int patrolTimes; + + @ExcelProperty(value = {"巡查时长"}) + private String totalTime; + + @ExcelProperty(value = {"例行工作次数"}) + private int patrolRoutineWorkTimes; +} \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java index 14500cc2ab..6011344b15 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java @@ -1,30 +1,47 @@ package com.epmet.dataaggre.controller; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.annotation.RequirePermission; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.enums.RequirePermissionEnum; import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.RenException; +import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.security.user.LoginUserUtil; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; -import com.epmet.dataaggre.dto.govorg.CustomerAgencyDTO; +import com.epmet.dataaggre.beans.GridMemberDataAnalysisExcelExportBean; import com.epmet.dataaggre.dto.govorg.CustomerGridDTO; import com.epmet.dataaggre.dto.govorg.form.*; import com.epmet.dataaggre.dto.govorg.result.*; import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity; -import com.epmet.dataaggre.entity.govorg.CustomerGridEntity; import com.epmet.dataaggre.enums.GridMemberDataAnalysisEnums; import com.epmet.dataaggre.service.AggreGridService; import com.epmet.dataaggre.service.govorg.GovOrgService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; -import java.util.List; +import javax.servlet.http.HttpServletResponse; +import java.io.FileInputStream; +import java.io.IOException; +import java.net.URLEncoder; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.*; +import java.util.concurrent.atomic.AtomicReference; /** * @Author zxc @@ -32,6 +49,7 @@ import java.util.List; */ @RestController @RequestMapping("org") +@Slf4j public class GovOrgController { @Autowired @@ -43,6 +61,24 @@ public class GovOrgController { @Autowired private AggreGridService aggreGridService; + /** + * 导出路径 + */ + private Path gridMemberStatsExcelExportDir; + + { + // 初始化目录 + String home = System.getProperty("user.home"); + Path importDir = Paths.get(home, "epmet_files", "grid_member_stats_excel_export"); + if (Files.notExists(importDir)) { + try { + Files.createDirectories(importDir); + } catch (IOException e) { + log.error("创建导出暂存目录失败"); + } + } + gridMemberStatsExcelExportDir = importDir; + } /** * @param tokenDTO @@ -201,4 +237,122 @@ public class GovOrgController { return new Result().ok(govOrgService.getGridInfo(gridId)); } + /** + * pc 工作端,网格员巡查统计 + * @param input + * @return + */ + @PostMapping("pcwork/gridmember-analysis") + public Result getGridMemberAnalysis4PcWork(@RequestBody GridMemberDataAnalysisFromDTO input) { + ValidatorUtils.validateEntity(input, GridMemberDataAnalysisFromDTO.listGridMemberDatas4PcWork.class); + + String orgId = input.getOrgId(); + Date startTime = input.getStartTime(); + Date endTime = input.getEndTime(); + Integer pageNo = input.getPageNo(); + Integer pageSize = input.getPageSize(); + String orgType = input.getOrgType(); + + PageData page = aggreGridService.getGridMemberDataAnalysis4PcWork(orgId, orgType, pageNo, pageSize, startTime, endTime, true); + return new Result().ok(page); + } + + /** + * pc 工作端,网格员巡查统计,导出excel + * @param input + * @return + */ + @PostMapping("pcwork/gridmember-analysis/export") + public void exportGridMemberAnalysis4PcWork(@RequestBody GridMemberDataAnalysisFromDTO input, HttpServletResponse response) { + ValidatorUtils.validateEntity(input, GridMemberDataAnalysisFromDTO.listGridMemberDatas4PcWork.class); + + String orgId = input.getOrgId(); + Date startTime = input.getStartTime(); + Date endTime = input.getEndTime(); + String orgType = input.getOrgType(); + + // 缓存路径 + String tempFileName = UUID.randomUUID().toString().concat(".xlsx"); + Path tempFilePath = gridMemberStatsExcelExportDir.resolve(tempFileName); + log.info("工作统计excel文件下载路径:{}", tempFilePath.toString()); + + ExcelWriter excelWriter = null; + + // 组织名称 + AtomicReference orgName = new AtomicReference<>(""); + + if ("grid".equals(orgType)) { + CustomerGridDTO gridInfo = govOrgService.getGridInfo(orgId); + Optional.ofNullable(gridInfo).ifPresent((g) -> orgName.set(g.getGridName())); + } else if ("agency".equals(orgType)) { + CustomerAgencyEntity agencyInfo = govOrgService.getAgencyInfo(orgId); + Optional.ofNullable(agencyInfo).ifPresent((a) -> orgName.set(a.getOrganizationName())); + } + + // sheet名 + String sheetName = getSheetName(orgName.get(), startTime, endTime); + + // 分页导出到缓存excel + try { + excelWriter = EasyExcel.write(tempFilePath.toString(), GridMemberDataAnalysisExcelExportBean.class).build(); + // 这里注意 如果同一个sheet只要创建一次 + WriteSheet writeSheet = EasyExcel.writerSheet(sheetName).build(); + + PageData page; + + int pageNo = NumConstant.ONE; + int pageSize = NumConstant.ONE_THOUSAND; + + do { + page = aggreGridService.getGridMemberDataAnalysis4PcWork(orgId, orgType, pageNo++, pageSize, startTime, endTime, false); + List pageList = page.getList(); + + List exportBeans = ConvertUtils.sourceToTarget(pageList, GridMemberDataAnalysisExcelExportBean.class); + + excelWriter.write(exportBeans, writeSheet); + + } while (page.getList().size() == pageSize); + + } catch (Exception e) { + e.printStackTrace(); + log.error("【PC工作端网格员数据统计导出】生成excel失败:{}", ExceptionUtils.getErrorStackTrace(e)); + } finally { + // 关闭流 + Optional.ofNullable(excelWriter).ifPresent((i) -> i.finish()); + } + + // 开始下载缓存excel到客户端,然后删除缓存文件 + try { + response.setHeader("Access-Control-Expose-Headers", "Content-Disposition"); + response.setHeader("Content-Type", "application/vnd.ms-excel"); + response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(sheetName.concat(".xlsx"), "UTF-8")); + + IOUtils.copy(new FileInputStream(tempFilePath.toString()), response.getOutputStream()); + } catch (Exception e) { + log.error(ExceptionUtils.getErrorStackTrace(e)); + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "【下载工作统计信息】下载失败"); + } finally { + try { + Files.delete(tempFilePath); + } catch (IOException e) { + log.error(ExceptionUtils.getErrorStackTrace(e)); + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "【下载工作统计信息】删除缓存文件失败"); + } + } + } + + private String getSheetName(String orgName, Date startTime, Date endTime) { + StringBuilder sb = new StringBuilder(orgName); + String s = orgName; + if (startTime == null && endTime != null) { + sb.append("截止").append(DateUtils.format(endTime, DateUtils.DATE_PATTERN)); + } else if (startTime != null && endTime != null) { + sb.append(DateUtils.format(startTime, DateUtils.DATE_PATTERN)) + .append("至") + .append(DateUtils.format(endTime, DateUtils.DATE_PATTERN)) + .append("区间新增值"); + } + sb.append("的工作统计"); + return sb.toString(); + } } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovProjectController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovProjectController.java index 422aa74f4c..675203df06 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovProjectController.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovProjectController.java @@ -90,13 +90,25 @@ public class GovProjectController { * @Description 赋能平台【项目分类分析】各分类项目数图表 * @author sun */ - @PostMapping("projectcategorylist") + @Deprecated //由v2替换 先测试 再说 后期就可以整条链路干掉了 + @PostMapping("projectcategorylistOld") public Result> projectCategoryList(@LoginUser TokenDto tokenDto, @RequestBody ProjectCategoryTotalFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO, ProjectCategoryTotalFormDTO.Project.class); formDTO.setCustomerId(tokenDto.getCustomerId()); return new Result>().ok(govProjectService.projectCategoryList(formDTO)); } + /** + * @Description 赋能平台【项目分类分析】各分类项目数图表 + * @author sun + */ + @PostMapping("projectcategorylist") + public Result> projectcategorylistV2(@LoginUser TokenDto tokenDto, @RequestBody ProjectCategoryTotalFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, ProjectCategoryTotalFormDTO.Project.class); + formDTO.setCustomerId(tokenDto.getCustomerId()); + return new Result>().ok(govProjectService.projectCategoryListV2(formDTO)); + } + /** * @Description 赋能平台【项目处理分析】分类下项目列表 * @author sun diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/FactGridMemberStatisticsDailyDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/FactGridMemberStatisticsDailyDao.java index a8ea0bcc94..b1e8284a74 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/FactGridMemberStatisticsDailyDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/FactGridMemberStatisticsDailyDao.java @@ -52,4 +52,26 @@ public interface FactGridMemberStatisticsDailyDao extends BaseDao listGridMemberDataStatsAccumulate(@Param("pids") String pids, + @Param("gridId") String gridId, + @Param("endDateID") String endDateID); + + /** + * 按照时间段查询网格员数据统计增量值 + * @param pids + * @param startDateID + * @param endDateID + * @return + */ + List listGridMemberDataStatsIncr(@Param("pids") String pids, + @Param("gridId") String gridId, + @Param("startDateID") String startDateID, + @Param("endDateID") String endDateID); } \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StatsStaffPatrolRecordDailyDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StatsStaffPatrolRecordDailyDao.java index 8be4c4c34e..49c101c018 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StatsStaffPatrolRecordDailyDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StatsStaffPatrolRecordDailyDao.java @@ -22,6 +22,7 @@ import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dataaggre.dto.datastats.form.CustomerDataManageFormDTO; import com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO; import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult; +import com.epmet.dataaggre.dto.epmetuser.result.StaffPatrolRecordDailyResultDTO; import com.epmet.dataaggre.entity.epmetuser.StatsStaffPatrolRecordDailyEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -51,4 +52,17 @@ public interface StatsStaffPatrolRecordDailyDao extends BaseDao patrolList(CustomerDataManageFormDTO formDTO); + + /** + * 工作人员巡查记录,按日统计,查询 + * @param userIds + * @param startDateID + * @param endDateID + * @return + */ + List listStaffPatrolRecordDailyAnalysis(@Param("gridPids") String gridPids, + @Param("gridId") String gridId, + @Param("userIds") List userIds, + @Param("startDateId") String startDateID, + @Param("endDateID") String endDateID); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govproject/ProjectDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govproject/ProjectDao.java index ee44c3cee8..43ea091ab5 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govproject/ProjectDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govproject/ProjectDao.java @@ -22,8 +22,10 @@ import com.epmet.dataaggre.dto.govissue.result.IssueListResultDTO; import com.epmet.dataaggre.dto.govproject.ProjectDTO; import com.epmet.dataaggre.dto.govproject.ProjectRelatedPersonnelDTO; import com.epmet.dataaggre.dto.govproject.ResiEventDTO; +import com.epmet.dataaggre.dto.govproject.ResiEventReportOrgDTO; import com.epmet.dataaggre.dto.govproject.form.AllProjectFormDTO; import com.epmet.dataaggre.dto.govproject.form.CategoryProjectFormDTO; +import com.epmet.dataaggre.dto.govproject.form.ProjectCategoryTotalFormDTO; import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO; import com.epmet.dataaggre.dto.govproject.result.*; import com.epmet.dataaggre.entity.govproject.ProjectEntity; @@ -115,4 +117,10 @@ public interface ProjectDao extends BaseDao { @Param("userIds") List userIds, @Param("origin") String origin); -} \ No newline at end of file + /** + * @Description 事件项目上报组织信息 + * @author sun + */ + List getEventOrgList(@Param("eventIds") List eventIds); + List getCategoryCount(ProjectCategoryTotalFormDTO formDTO); +} diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmetuser/StatsStaffPatrolRecordDailyEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmetuser/StatsStaffPatrolRecordDailyEntity.java index 1c52ad1336..a90d80924a 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmetuser/StatsStaffPatrolRecordDailyEntity.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmetuser/StatsStaffPatrolRecordDailyEntity.java @@ -122,4 +122,9 @@ public class StatsStaffPatrolRecordDailyEntity extends BaseEpmetEntity { */ private String latestPatrolStatus; + /** + * 例行工作次数 + */ + private Integer routineWorkCount; + } 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/AggreGridService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/AggreGridService.java index 3702bbb319..85a447a88c 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/AggreGridService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/AggreGridService.java @@ -1,7 +1,10 @@ package com.epmet.dataaggre.service; +import com.epmet.commons.tools.page.PageData; import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO; +import com.sun.org.apache.xpath.internal.operations.Bool; +import java.util.Date; import java.util.List; /** @@ -16,5 +19,29 @@ public interface AggreGridService { * @author wxz * @date 2021.07.05 11:17 */ - List getGridMemberDataAnalysis(List gridIds, String searchedStaffName, String currStaffId, String month, String sort, Integer pageNo, Integer pageSize); + List getGridMemberDataAnalysis(List gridIds, + String searchedStaffName, + String currStaffId, + String month, + String sort, + Integer pageNo, + Integer pageSize); + + /** + * 网格员巡查统计查询 pcwork端 + * @param orgId 组织id + * @param orgType 组织类型:agency,grid + * @param pageNo + * @param pageSize + * @param startTime + * @param endTime + * @return + */ + PageData getGridMemberDataAnalysis4PcWork(String orgId, + String orgType, + Integer pageNo, + Integer pageSize, + Date startTime, + Date endTime, + Boolean needCount); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java index de584839e2..3d21ac929d 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java @@ -13,6 +13,7 @@ import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO; import javax.servlet.http.HttpServletResponse; import java.text.ParseException; +import java.util.Date; import java.util.List; /** @@ -260,4 +261,22 @@ public interface DataStatsService { * @author sun */ List getProjectMonthIncr(ProjectTotalFormDTO formDTO); + + /** + * 查询网格员项目统计数据4 pcwork + * @param pids 组织PIDS + * @param pageNo + * @param pageSize + * @param startDateID 查询起始时间(匹配统计表的dateId列) + * @param endDateID 查询结束时间(匹配统计表的dateId列) + * @param needCount 是否需要查询Count,分页查询需要,导出excel不需要 + * @return + */ + List getGridMemberIssueProjectStats4PcWork(String pids, + String gridId, + Integer pageNo, + Integer pageSize, + String startDateID, + String endDateID, + Boolean needCount); } 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 ac426b81d7..a8fb5ee168 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 @@ -5,6 +5,7 @@ import com.epmet.commons.dynamic.datasource.annotation.DataSource; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.enums.OrgLevelEnum; import com.epmet.commons.tools.exception.RenException; +import com.epmet.commons.tools.feign.ResultDataResolver; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.ExcelUtils; @@ -23,9 +24,8 @@ import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerAgencyDTO; import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerGridDTO; import com.epmet.dataaggre.dto.evaluationindex.ScreenGovernRankDataDailyDTO; import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO; - import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO; - import com.epmet.dataaggre.dto.govproject.result.ProjectMonthIncrResultDTO; - import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO; +import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO; +import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO; import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO; import com.epmet.dataaggre.entity.datastats.DimAgencyEntity; import com.epmet.dataaggre.entity.datastats.FactAgencyGovernDailyEntity; @@ -33,6 +33,7 @@ import com.epmet.dataaggre.excel.CustomerDataManageExcel; import com.epmet.dataaggre.service.datastats.DataStatsService; import com.epmet.dataaggre.service.epmetuser.StatsStaffPatrolRecordDailyService; import com.epmet.dataaggre.service.evaluationindex.EvaluationIndexService; +import com.epmet.dataaggre.service.govorg.GovOrgService; import com.epmet.dataaggre.service.opercrm.CustomerRelation; import com.github.pagehelper.PageHelper; import lombok.extern.slf4j.Slf4j; @@ -59,7 +60,7 @@ import java.util.stream.Collectors; @Service @DataSource(DataSourceConstant.DATA_STATISTICAL) @Slf4j -public class DataStatsServiceImpl implements DataStatsService { +public class DataStatsServiceImpl implements DataStatsService, ResultDataResolver { @Autowired private DataStatsDao dataStatsDao; @Autowired @@ -71,7 +72,8 @@ public class DataStatsServiceImpl implements DataStatsService { private FactGridMemberStatisticsDailyDao factGridMemberStatisticsDailyDao; @Autowired private StatsStaffPatrolRecordDailyService statsStaffPatrolRecordDailyService; - + @Autowired + private GovOrgService govOrgService; /** * @Param formDTO @@ -1628,6 +1630,7 @@ public class DataStatsServiceImpl implements DataStatsService { private void setPatrolAttr(WorkFactResultDTO resultDTO, PatrolDailySumResult patrolRecordDTO) { if (patrolRecordDTO != null){ + resultDTO.setRoutineWorkCount(patrolRecordDTO.getRoutineWorkCount()); resultDTO.setPatrolTotal(patrolRecordDTO.getPatrolTotal()); Integer totalTime = patrolRecordDTO.getTotalTime(); if (totalTime != null || totalTime > 0){ @@ -2141,5 +2144,30 @@ public class DataStatsServiceImpl implements DataStatsService { return dataStatsDao.getProjectMonthIncr(formDTO); } - + @Override + public List getGridMemberIssueProjectStats4PcWork(String pids, + String gridId, + Integer pageNo, + Integer pageSize, + String startDateID, + String endDateID, + Boolean needCount) { + + //boolean isStartDateIdBlank = StringUtils.isBlank(startDateID); + //boolean isEndDateIdBlank = StringUtils.isBlank(endDateID); + // + //if (isStartDateIdBlank && !isEndDateIdBlank) { + // // 查询截止时间的累计值,直接查询表里的total即可 + // PageHelper.startPage(pageNo, pageSize, needCount); + // return factGridMemberStatisticsDailyDao.listGridMemberDataStatsAccumulate(pids, gridId, endDateID); + //} else if (!isStartDateIdBlank && !isEndDateIdBlank) { + // // 查询时间段内的增量,需要使用表中的增量列计算 + // return factGridMemberStatisticsDailyDao.listGridMemberDataStatsIncr(pids, gridId, startDateID, endDateID); + //} else { + // 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/EpmetUserService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java index 6979f5d8b4..a1509063c1 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java @@ -6,6 +6,7 @@ import com.epmet.dataaggre.dto.govorg.form.OrgStaffListFormDTO; import com.epmet.dataaggre.dto.govorg.form.StaffDetailV2FormDTO; import com.epmet.dataaggre.dto.govorg.result.GridStaffResultDTO; import com.epmet.dataaggre.dto.govproject.result.ProjectAnalysisResultDTO; +import com.epmet.dataaggre.entity.epmetuser.CustomerStaffEntity; import com.epmet.dto.IcResiUserDTO; import com.epmet.dto.UserBaseInfoDTO; @@ -167,4 +168,11 @@ public interface EpmetUserService { * @author sun */ List getHomeUserList(String homeId, String icUserId); + + /** + * 使用staffId批量查询staff信息 + * @param userIdsPart + * @return + */ + List listStaffsByIds(List userIdsPart); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/StatsStaffPatrolRecordDailyService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/StatsStaffPatrolRecordDailyService.java index 70afc1e944..4bd0b91d93 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/StatsStaffPatrolRecordDailyService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/StatsStaffPatrolRecordDailyService.java @@ -21,6 +21,7 @@ import com.epmet.commons.mybatis.service.BaseService; import com.epmet.dataaggre.dto.datastats.form.CustomerDataManageFormDTO; import com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO; import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult; +import com.epmet.dataaggre.dto.epmetuser.result.StaffPatrolRecordDailyResultDTO; import com.epmet.dataaggre.entity.epmetuser.StatsStaffPatrolRecordDailyEntity; import java.util.List; @@ -47,4 +48,14 @@ public interface StatsStaffPatrolRecordDailyService extends BaseService patrolList(CustomerDataManageFormDTO formDTO); + + /** + * 查询工作人员巡查记录按日统计 + * @param gridPids 记录所属的网格的pids + * @param userIds + * @param startDateID + * @param endDateID + * @return + */ + List listStaffPatrolRecordDailyAnalysis(String gridPids, String gridId, List userIds, String startDateID, String 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 c38bf062a9..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; @@ -735,5 +735,11 @@ public class EpmetUserServiceImpl implements EpmetUserService { return icResiUserDao.getHomeUserList(homeId, icUserId); } + @Override + public List listStaffsByIds(List userIds) { + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.in(CustomerStaffEntity::getUserId, userIds); + return customerStaffDao.selectList(query); + } } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/StatsStaffPatrolRecordDailyServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/StatsStaffPatrolRecordDailyServiceImpl.java index ccfe71e399..610bdcd81c 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/StatsStaffPatrolRecordDailyServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/StatsStaffPatrolRecordDailyServiceImpl.java @@ -7,6 +7,7 @@ import com.epmet.dataaggre.dao.epmetuser.StatsStaffPatrolRecordDailyDao; import com.epmet.dataaggre.dto.datastats.form.CustomerDataManageFormDTO; import com.epmet.dataaggre.dto.datastats.result.CustomerDataManageResultDTO; import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult; +import com.epmet.dataaggre.dto.epmetuser.result.StaffPatrolRecordDailyResultDTO; import com.epmet.dataaggre.entity.epmetuser.StatsStaffPatrolRecordDailyEntity; import com.epmet.dataaggre.service.epmetuser.StatsStaffPatrolRecordDailyService; import lombok.extern.slf4j.Slf4j; @@ -47,4 +48,8 @@ public class StatsStaffPatrolRecordDailyServiceImpl extends BaseServiceImpl listStaffPatrolRecordDailyAnalysis(String gridPids, String gridId, List userIds, String startDateID, String endDateID) { + return baseDao.listStaffPatrolRecordDailyAnalysis(gridPids, gridId, userIds, startDateID, endDateID); + } } 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/govproject/GovProjectService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/GovProjectService.java index d118a05746..fccf574544 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/GovProjectService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/GovProjectService.java @@ -75,6 +75,13 @@ public interface GovProjectService { */ List projectCategoryList(ProjectCategoryTotalFormDTO formDTO); + /** + * desc: 查询业务数据中一级分类项目数量 + * @param formDTO + * @return + */ + List projectCategoryListV2(ProjectCategoryTotalFormDTO formDTO); + /** * @Description 赋能平台【项目处理分析】分类下项目列表 * @author sun diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java index 071926bf1b..a9f42eedd3 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java @@ -2,13 +2,20 @@ package com.epmet.dataaggre.service.govproject.impl; import com.epmet.commons.dynamic.datasource.annotation.DataSource; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.StrConstant; +import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; +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.redis.common.CustomerOrgRedis; +import com.epmet.commons.tools.redis.common.CustomerStaffRedis; +import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; +import com.epmet.commons.tools.redis.common.bean.GridInfoCache; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.dataaggre.constant.DataSourceConstant; -import com.epmet.dataaggre.constant.ProjectConstant; import com.epmet.dataaggre.dao.govproject.ProjectDao; import com.epmet.dataaggre.dto.datastats.result.FactAgencyProjectMonthResultDTO; import com.epmet.dataaggre.dto.datastats.result.FactAgencyProjectResultDTO; @@ -19,6 +26,7 @@ import com.epmet.dataaggre.dto.govorg.result.GridsInfoListResultDTO; import com.epmet.dataaggre.dto.govproject.ProjectDTO; import com.epmet.dataaggre.dto.govproject.ProjectRelatedPersonnelDTO; import com.epmet.dataaggre.dto.govproject.ResiEventDTO; +import com.epmet.dataaggre.dto.govproject.ResiEventReportOrgDTO; import com.epmet.dataaggre.dto.govproject.form.*; import com.epmet.dataaggre.dto.govproject.result.*; import com.epmet.dataaggre.dto.resigroup.ResiTopicDTO; @@ -43,6 +51,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -167,61 +176,21 @@ public class GovProjectServiceImpl implements GovProjectService { @Override public AllProjectResultDTO allProjectList(TokenDto tokenDto, AllProjectFormDTO formDTO) { AllProjectResultDTO resultDTO = new AllProjectResultDTO(); - String agencyId = govOrgService.getAgencyIdByUserId(tokenDto.getUserId()); - int pageIndex = (formDTO.getPageNo() - NumConstant.ONE) * formDTO.getPageSize(); - - if (StringUtils.isEmpty(agencyId)) { - throw new RenException(String.format("获取工作人员组织信息失败,staffId->%s", tokenDto.getUserId())); + if (CollectionUtils.isEmpty(formDTO.getAgencyIdList()) && CollectionUtils.isEmpty(formDTO.getGridIdList())) { + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId()); + if (null == staffInfo) { + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "获取工作人员信息失败"); + } + List agencyList = new ArrayList<>(); + agencyList.add(staffInfo.getAgencyId()); + formDTO.setAgencyIdList(agencyList); } - formDTO.setAgencyId(agencyId); + formDTO.setCustomerId(tokenDto.getCustomerId()); + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); List projectList = projectDao.getAllProject(formDTO); + PageInfo pageInfo = new PageInfo<>(projectList); if (CollectionUtils.isNotEmpty(projectList)) { - resultDTO.setProjectCount(projectList.size()); - projectList.forEach(project -> { - //计算项目耗时 - Integer timeSpent; - if (ProjectConstant.PROJECT_STATUS_CLOSED.equals(project.getProjectStatus())) { - timeSpent = getTimeSpent(project.getProjectId(), project.getStartTime(), project.getEndTime()); - } else { - timeSpent = getTimeSpent(project.getProjectId(), project.getStartTime(), new Date()); - } - project.setTimeSpent(timeSpent); - //获取当前处理部门 - ProjectDTO projectDTO = new ProjectDTO(); - projectDTO.setId(project.getProjectId()); - List departmentList = projectDao.selectDepartmentNameList(projectDTO); - project.setCurrentDisposeDept(departmentList); - - }); - int pageSize = pageIndex + formDTO.getPageSize(); - if (pageSize > projectList.size()) { - pageSize = projectList.size(); - } - //排序(创建:create 更新:update 部门:department 耗时:date 次数:count) - switch (formDTO.getSortType()) { - case "create": - projectList = projectList.stream().sorted(Comparator.comparing(ProjectInfoDTO::getProjectTime).reversed()) - .collect(Collectors.toList()).subList(pageIndex, pageSize); - break; - case "update": - projectList = projectList.stream().sorted(Comparator.comparing(ProjectInfoDTO::getUpdateTime).reversed()) - .collect(Collectors.toList()).subList(pageIndex, pageSize); - break; - case "department": - projectList = projectList.stream().sorted(Comparator.comparing(ProjectInfoDTO::getDepartmentCount).reversed()) - .collect(Collectors.toList()).subList(pageIndex, pageSize); - break; - case "date": - projectList = projectList.stream().sorted(Comparator.comparing(ProjectInfoDTO::getTimeSpent).reversed()) - .collect(Collectors.toList()).subList(pageIndex, pageSize); - break; - case "count": - projectList = projectList.stream().sorted(Comparator.comparing(ProjectInfoDTO::getProcessCount).reversed()) - .collect(Collectors.toList()).subList(pageIndex, pageSize); - break; - default: - break; - } + resultDTO.setProjectCount((int) pageInfo.getTotal()); resultDTO.setProjectList(projectList); } else { resultDTO.setProjectCount(NumConstant.ZERO); @@ -394,6 +363,46 @@ public class GovProjectServiceImpl implements GovProjectService { return resultList; } + @Override + public List projectCategoryListV2(ProjectCategoryTotalFormDTO formDTO) { + //1.查询客户下一级分类信息 + List categoryList = govIssueService.categoryList(formDTO.getCustomerId(), "1", "enable"); + if (CollectionUtils.isEmpty(categoryList)){ + log.warn("projectCategoryListV2 项目分类字典表 一级分类配置不正确"); + return new ArrayList<>(); + } + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(formDTO.getAgencyId()); + if (agencyInfo == null){ + log.warn("projectCategoryListV2 组织信息获取失败"); + return new ArrayList<>(); + } + Map levelOneCategoryMap = categoryList.stream().collect(Collectors.toMap(IssueProjectCategoryDictDTO::getCategoryCode, Function.identity())); + + int length = categoryList.get(NumConstant.ZERO).getCategoryCode().length(); + formDTO.setCategoryOneLength(length); + formDTO.setFullOrgIds(formDTO.getAgencyId()); + if (StringUtils.isNotBlank(agencyInfo.getPids())){ + formDTO.setFullOrgIds(agencyInfo.getPids().concat(StrConstant.COLON).concat(formDTO.getAgencyId())); + } + + List categoryCount = projectDao.getCategoryCount(formDTO); + Iterator iterator = categoryCount.iterator(); + while (iterator.hasNext()){ + ProjectCategoryTotalResultDTO next = iterator.next(); + IssueProjectCategoryDictDTO dto = levelOneCategoryMap.get(next.getCategoryCode()); + if (dto == null){ + log.warn("projectCategoryListV2 项目分类code已删除,不返回,code:{}", next.getCategoryCode()); + iterator.remove(); + continue; + } + next.setCategoryName(dto.getCategoryName()); + next.setColor(dto.getColor()); + next.setAgencyId(formDTO.getAgencyId()); + } + + return categoryCount; + } + /** * @Description 赋能平台【项目处理分析】分类下项目列表 * @author sun @@ -420,23 +429,66 @@ public class GovProjectServiceImpl implements GovProjectService { List projectIds = result.getList().stream().map(CategoryProjectResultDTO.Project::getProjectId).collect(Collectors.toList()); List list = projectDao.getCategoryList(projectIds); - //4.查询网格信息【楼院小组类项目、上报事件且上报给网格的项目才存在网格Id】 - List gridIds = result.getList().stream().map(CategoryProjectResultDTO.Project::getGridId).collect(Collectors.toList()); - gridIds = gridIds.stream().distinct().collect(Collectors.toList()); - List gridList = govOrgService.gridListByIds(gridIds); + //4.查询来源事件的项目上报的组织信息 + List eventIds = result.getList().stream().filter(re -> "resi_event".equals(re.getOrigin())).map(m -> m.getOriginId()).collect(Collectors.toList()); + List eventOrgList = projectDao.getEventOrgList(eventIds); + Map eventMap = eventOrgList.stream().collect(Collectors.toMap(ResiEventReportOrgDTO::getResiEventId, Function.identity())); //5.查询来源议题、事件的项目居民端创建人userId List eventUser = projectDao.getEventList(projectIds); List topicUser = projectDao.getTopicUser(projectIds); //5.封装数据 + //组织或网格id->组织或网格名称 + Map map = new HashMap<>(); result.getList().forEach(re -> { - //项目涉及网格信息 - gridList.forEach(g -> { - if (StringUtils.isNotBlank(re.getGridId()) && re.getGridId().equals(g.getGridId())) { - re.setGridName(g.getName()); + //所属组织 + if ("issue".equals(re.getOrigin())) { + if (map.containsKey(re.getGridId())) { + re.setOrgName(map.get(re.getGridId())); + } else { + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(re.getGridId()); + if (gridInfo != null) { + re.setOrgName(gridInfo.getGridName()); + map.put(re.getGridId(), gridInfo.getGridName()); + } } - }); + } else if ("agency".equals(re.getOrigin())) { + if (map.containsKey(re.getAgencyId())) { + re.setOrgName(map.get(re.getAgencyId())); + } else { + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(re.getAgencyId()); + if (agencyInfo != null) { + re.setOrgName(agencyInfo.getOrganizationName()); + map.put(re.getAgencyId(), agencyInfo.getOrganizationName()); + } + + } + } else if ("resi_event".equals(re.getOrigin())) { + if (eventMap.containsKey(re.getOriginId())) { + if ("grid".equals(eventMap.get(re.getOriginId()).getOrgType())) { + if (map.containsKey(re.getGridId())) { + re.setOrgName(map.get(re.getGridId())); + } else { + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(re.getGridId()); + if (gridInfo != null) { + re.setOrgName(gridInfo.getGridName()); + map.put(re.getGridId(), gridInfo.getGridName()); + } + } + } else { + if (map.containsKey(re.getAgencyId())) { + re.setOrgName(map.get(re.getAgencyId())); + } else { + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(re.getAgencyId()); + if (agencyInfo != null) { + re.setOrgName(agencyInfo.getOrganizationName()); + map.put(re.getAgencyId(), agencyInfo.getOrganizationName()); + } + } + } + } + } //项目涉及分类信息【一个项目涉及多个一级分类】 //一级分类Id List caId = new ArrayList<>(); 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 d2fc60ad35..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 @@ -1,20 +1,32 @@ package com.epmet.dataaggre.service.impl; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.redis.common.CustomerOrgRedis; +import com.epmet.commons.tools.redis.common.bean.GridInfoCache; +import com.epmet.commons.tools.utils.DateUtils; +import com.epmet.dataaggre.dto.epmetuser.result.StaffPatrolRecordDailyResultDTO; import com.epmet.dataaggre.dto.govorg.CustomerGridDTO; import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO; +import com.epmet.dataaggre.entity.epmetuser.CustomerStaffEntity; +import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity; import com.epmet.dataaggre.service.AggreGridService; import com.epmet.dataaggre.service.datastats.DataStatsService; +import com.epmet.dataaggre.service.epmetuser.EpmetUserService; +import com.epmet.dataaggre.service.epmetuser.StatsStaffPatrolRecordDailyService; import com.epmet.dataaggre.service.govorg.GovOrgService; -import org.apache.commons.collections4.CollectionUtils; +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.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; +import java.util.*; +@Slf4j @Service public class AggreGridServiceImpl implements AggreGridService { @@ -24,6 +36,12 @@ public class AggreGridServiceImpl implements AggreGridService { @Autowired private DataStatsService dataStatsService; + @Autowired + private StatsStaffPatrolRecordDailyService statsStaffPatrolRecordDailyService; + + @Autowired + private EpmetUserService epmetUserService; + @Override public List getGridMemberDataAnalysis( List gridIds, @@ -48,4 +66,125 @@ public class AggreGridServiceImpl implements AggreGridService { return records; } + @Override + public PageData getGridMemberDataAnalysis4PcWork(String orgId, + String orgType, + Integer pageNo, + Integer pageSize, + Date startTime, + Date endTime, + Boolean needCount) { + + // 计算出开始dateId和结束endId + String startDateID = DateUtils.format(startTime, DateUtils.DATE_PATTERN_YYYYMMDD); + String endDateID = DateUtils.format(endTime, DateUtils.DATE_PATTERN_YYYYMMDD); + + // 根据orgType判断是使用agency的pids还是直接使用gridId作为条件 + String pids = null; + String gridId = null; + + if ("grid".equals(orgType)) { + gridId = orgId; + } else if ("agency".equals(orgType)) { + pids = getPidsByAgencyId(orgId); + } else { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "组织类型不支持"); + } + + // 一.查询网格员数据统计相关信息 + List datas = dataStatsService.getGridMemberIssueProjectStats4PcWork(pids, gridId, pageNo, pageSize, startDateID, endDateID, needCount); + long total = new PageInfo<>(datas).getTotal(); + + // 二.匹配用户巡查,例行工作数据 + int partSize = 100; + + // 将数据列表结构化 > + HashMap> structedData = new HashMap<>(); + + 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 + Map gridAndData = structedData.get(data.getStaffId()); + if (gridAndData == null) { + HashMap gat = new HashMap<>(); + gat.put(data.getGridId(), data); + structedData.put(data.getStaffId(), gat); + } else { + Map gat = structedData.get(data.getStaffId()); + gat.put(data.getGridId(), data); + } + } + + ArrayList userIds = new ArrayList<>(structedData.keySet()); + + // 分片 + List> userIdsParts = Lists.partition(userIds, partSize); + + for (List userIdsPart : userIdsParts) { + + // 批量查询出用户信息 + List staffInfos = epmetUserService.listStaffsByIds(userIdsPart); + //Map staffIdAndStaffInfo = staffInfos.stream().collect(Collectors.toMap((s) -> s.getUserId(), Function.identity())); + for (CustomerStaffEntity staffInfo : staffInfos) { + Map gridAndData = structedData.get(staffInfo.getUserId()); + if (gridAndData != null) { + gridAndData.forEach((k, v) -> v.setMobile(staffInfo.getMobile())); + } + } + + + // 批量查询出巡查信息 + List patrolDatas = statsStaffPatrolRecordDailyService.listStaffPatrolRecordDailyAnalysis(pids, gridId, userIdsPart, startDateID, endDateID); + for (StaffPatrolRecordDailyResultDTO d : patrolDatas) { + Map gridAndData = structedData.get(d.getStaffId()); + + if (gridAndData != null) { + GridMemberDataAnalysisResultDTO data = gridAndData.get(d.getGridId()); + if (data != null) { + data.setPatrolRoutineWorkTimes(d.getPatrolRoutineWorkTimes()); + data.setPatrolTimes(d.getPatrolTimes()); + data.setTotalTime(NumConstant.ZERO_STR); + int totalTime = d.getTotalTime(); + if (totalTime > NumConstant.ZERO){ + int minutes = totalTime / NumConstant.SIXTY; + if (minutes > NumConstant.ZERO){ + String totalTimeDesc = minutes / NumConstant.SIXTY + "小时"+ minutes % NumConstant.SIXTY + "分钟"; + data.setTotalTime(totalTimeDesc); + } + } + } + } + } + } + + return new PageData<>(datas, total); + } + + /** + * 使用agencyId,获取pids(agencyPids:agencyId) + * @param agencyId + * @return + */ + private String getPidsByAgencyId(String agencyId) { + CustomerAgencyEntity agencyInfo = govOrgService.getAgencyInfo(agencyId); + + if (agencyInfo == null) { + String errorMsg = "【网格员数据统计查询pcwork】查询组织信息返回为null"; + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), errorMsg, errorMsg); + } + + String pidsAndAgencyIdPath = agencyInfo.getPids().concat(":").concat(agencyId); + if (pidsAndAgencyIdPath.startsWith(":")) { + pidsAndAgencyIdPath = pidsAndAgencyIdPath.replaceFirst(":", ""); + } + + return pidsAndAgencyIdPath; + } } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/excel/data_template.xlsx b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/excel/data_template.xlsx index af7104be32..1e868d2c92 100644 Binary files a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/excel/data_template.xlsx and b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/excel/data_template.xlsx differ diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/FactGridMemberStatisticsDailyDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/FactGridMemberStatisticsDailyDao.xml index ffec0be996..4d3426a048 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/FactGridMemberStatisticsDailyDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/FactGridMemberStatisticsDailyDao.xml @@ -131,5 +131,71 @@ and member.DEL_FLAG = 0 + + + + \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml index e77b01af94..86aae4d681 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StatsStaffPatrolRecordDailyDao.xml @@ -6,7 +6,8 @@ SELECT #{orgId} orgId, sum(patrol_total) patrolTotal, - sum(TOTAL_TIME) totalTime + sum(TOTAL_TIME) totalTime, + sum(ROUTINE_WORK_COUNT) routineWorkCount FROM stats_staff_patrol_record_daily WHERE del_flag = '0' AND date_id =]]> #{startDateId} @@ -57,4 +58,33 @@ GROUP BY t.grid_id, t.staffId + + 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-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/ProjectDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/ProjectDao.xml index d2cc49d64a..599a5da471 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/ProjectDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/ProjectDao.xml @@ -4,38 +4,124 @@ - \ No newline at end of file + + + + 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-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/OrgRankDataShibeiResultDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/OrgRankDataShibeiResultDTO.java new file mode 100644 index 0000000000..c443f78fc5 --- /dev/null +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/OrgRankDataShibeiResultDTO.java @@ -0,0 +1,34 @@ +package com.epmet.evaluationindex.screen.dto.result; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @Description 市北数字社区-组织先进排行榜 查询结果dto + * @ClassName OrgRankDataResultDTO + * @Auth wangc + * @Date 2020-08-21 11:16 + */ +@Data +public class OrgRankDataShibeiResultDTO implements Serializable { + + private static final long serialVersionUID = -7874641768141936572L; + + private String orgId; + /** + * 名称 XXXX社区党委 + * */ + private String name; + + /** + * 党员数 + * */ + private BigDecimal score; + + /** + * 数据所属月份 + */ + private String monthId; +} diff --git a/epmet-module/data-report/data-report-server/deploy/docker-compose-prod.yml b/epmet-module/data-report/data-report-server/deploy/docker-compose-prod.yml index b883c42d9f..c20b81b36d 100644 --- a/epmet-module/data-report/data-report-server/deploy/docker-compose-prod.yml +++ b/epmet-module/data-report/data-report-server/deploy/docker-compose-prod.yml @@ -2,7 +2,7 @@ version: "3.7" services: data-report-server: container_name: data-report-server-prod - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/data-report-server:0.3.196 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/data-report-server:0.3.210 ports: - "8108:8108" network_mode: host # 使用现有网络 diff --git a/epmet-module/data-report/data-report-server/pom.xml b/epmet-module/data-report/data-report-server/pom.xml index 6651fb7c7a..170d4f0d63 100644 --- a/epmet-module/data-report/data-report-server/pom.xml +++ b/epmet-module/data-report/data-report-server/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - 0.3.196 + 0.3.210 data-report-server 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/controller/screen/IndexController.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/IndexController.java index 5824a1a9cc..1e4a67a0b9 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/IndexController.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/IndexController.java @@ -67,10 +67,6 @@ public class IndexController { //area_code升级,新增此参数 monthBarchartFormDTO.setCustomerId(customerId); ValidatorUtils.validateEntity(monthBarchartFormDTO, MonthBarchartFormDTO.MonthBarchart.class); - String monthId = monthBarchartFormDTO.getMonthId(); - if ("202212".equals(monthId)){ - monthBarchartFormDTO.setMonthId("202112"); - } return new Result().ok(indexService.monthBarchart(monthBarchartFormDTO)); } @@ -158,6 +154,19 @@ public class IndexController { return new Result>().ok(indexService.advancedBranchRank(formDTO)); } + /** + * @param formDTO + * @Description 数字社区:数据分析-动力网格 + * @author sun + */ + @PostMapping("advancedbranchrank-shibei") + Result> advancedBranchRankShibei(@RequestBody AdvancedBranchRankFormDTO formDTO, @LoginUser TokenDto loginUser){ + ValidatorUtils.validateEntity(formDTO, AdvancedBranchRankFormDTO.AddUserInternalGroup.class); + formDTO.setCustomerId(loginUser.getCustomerId()); + //formDTO.setCustomerId("45687aa479955f9d06204d415238f7cc"); + return new Result>().ok(indexService.advancedBranchRankShibei(formDTO)); + } + /** * @param formDTO * @author yinzuomei diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenOrgRankDataShibeiDao.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenOrgRankDataShibeiDao.java new file mode 100644 index 0000000000..b6df3da088 --- /dev/null +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenOrgRankDataShibeiDao.java @@ -0,0 +1,42 @@ +/** + * 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.datareport.dao.evaluationindex.screen; + +import com.epmet.evaluationindex.screen.dto.form.AdvancedBranchRankFormDTO; +import com.epmet.evaluationindex.screen.dto.result.OrgRankDataShibeiResultDTO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 党建引领-组织排行榜 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2020-08-18 + */ +@Mapper +public interface ScreenOrgRankDataShibeiDao { + + /** + * @return + * @Description 查询指定机关的所有直属网格月度数据 + * @author wangc + * @date 2020.08.21 13:58 + **/ + List selectGridRankList(AdvancedBranchRankFormDTO formDTO); +} 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 subAgencyIndexRankPy(SubAgencyIndexRankPyFormDTO formDTO); + + /** + * desc: 市北数字社区特供接口 网格排行 + * + * @param formDTO + * @return java.util.List + * @author LiuJanJun + * @date 2022/1/14 4:57 下午 + */ + List advancedBranchRankShibei(AdvancedBranchRankFormDTO formDTO); } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/GrassRootsGovernServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/GrassRootsGovernServiceImpl.java index 385671f129..b64a4e7490 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/GrassRootsGovernServiceImpl.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/GrassRootsGovernServiceImpl.java @@ -121,7 +121,9 @@ public class GrassRootsGovernServiceImpl implements GrassRootsGovernService { resultDTO.setImgUrl(StrConstant.EPMETY_STR); } } - if(null == result) return new ArrayList<>(); + 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..d362f50ef4 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 @@ -9,6 +9,7 @@ import com.epmet.commons.tools.utils.DateUtils; import com.epmet.constant.DataSourceConstant; import com.epmet.datareport.dao.evaluationindex.screen.ScreenIndexDataMonthlyDao; import com.epmet.datareport.dao.evaluationindex.screen.ScreenIndexDataYearlyDao; +import com.epmet.datareport.dao.evaluationindex.screen.ScreenOrgRankDataShibeiDao; import com.epmet.datareport.service.evaluationindex.screen.IndexService; import com.epmet.evaluationindex.screen.constant.ScreenConstant; import com.epmet.evaluationindex.screen.dto.form.*; @@ -43,6 +44,8 @@ public class IndexServiceImpl implements IndexService { @Autowired private ScreenIndexDataMonthlyDao screenIndexDataMonthlyDao; @Autowired + private ScreenOrgRankDataShibeiDao screenOrgRankDataShibeiDao; + @Autowired private PartyMemberLeadServiceImpl partyMemberLeadServiceImpl; @Autowired private com.epmet.datareport.utils.DateUtils dateUtils; @@ -171,7 +174,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))) { //控制当前循环重复进行 @@ -410,6 +415,23 @@ public class IndexServiceImpl implements IndexService { return list; } + /** + * @param formDTO + * @Description 先进排行-先进支部排行 + * @author sun + * @return + */ + @Override + @DataSource(value = DataSourceConstant.EVALUATION_INDEX, datasourceNameFromArg = true) + public List advancedBranchRankShibei(AdvancedBranchRankFormDTO formDTO) { + //根据当前所选组织,查询screen_index_data_monthly中类型为网格的按照总指数倒序,关联screen_org_rank_data表取其他数据 + //1.级联查询组织下所有网格的先进支部排行数据,按总指数降序 + if (StringUtils.isBlank(formDTO.getMonthId())) { + formDTO.setMonthId(DateUtils.getBeforeNMonth(1)); + } + return screenOrgRankDataShibeiDao.selectGridRankList(formDTO); + } + @Override @DataSource(value = DataSourceConstant.EVALUATION_INDEX, datasourceNameFromArg = true) public List getSubSingleIndexRank(SubSingleIndexRankFormDTO formDTO) { 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..72b254a180 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 @@ -397,6 +397,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-report/data-report-server/src/main/resources/mapper/screen/ScreenOrgRankDataShibeiDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenOrgRankDataShibeiDao.xml new file mode 100644 index 0000000000..762d9c5eb9 --- /dev/null +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenOrgRankDataShibeiDao.xml @@ -0,0 +1,29 @@ + + + + + + + + + + diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/form/ScreenCentralZoneDataFormDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/form/ScreenCentralZoneDataFormDTO.java index 5a5d0af839..21c1a0f414 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/form/ScreenCentralZoneDataFormDTO.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/form/ScreenCentralZoneDataFormDTO.java @@ -29,4 +29,14 @@ public class ScreenCentralZoneDataFormDTO implements Serializable { private String endDate; private String projectId; + + /** + * 首次的话 全量拉取 + */ + private Boolean isFirst; + + /** + * 时间间隔天数 14 就是查询14天内的数据 + */ + private String internalDay; } diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/StatsStaffPatrolRecordDailyDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/StatsStaffPatrolRecordDailyDTO.java index 64d3eb84e4..1867462ff6 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/StatsStaffPatrolRecordDailyDTO.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/StatsStaffPatrolRecordDailyDTO.java @@ -124,6 +124,11 @@ public class StatsStaffPatrolRecordDailyDTO implements Serializable { */ private String latestPatrolStatus; + /** + * 例行工作次数 + */ + private Integer routineWorkCount; + /** * 删除标识 0.未删除 1.已删除 */ diff --git a/epmet-module/data-statistical/data-statistical-server/deploy/docker-compose-prod.yml b/epmet-module/data-statistical/data-statistical-server/deploy/docker-compose-prod.yml index 3cd9ff7c01..a54a0348a6 100644 --- a/epmet-module/data-statistical/data-statistical-server/deploy/docker-compose-prod.yml +++ b/epmet-module/data-statistical/data-statistical-server/deploy/docker-compose-prod.yml @@ -2,17 +2,17 @@ version: "3.7" services: data-statistical-server: container_name: data-statistical-server-prod - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/data-statistical-server:0.3.300 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/data-statistical-server:0.3.345 ports: - "8108:8108" network_mode: host # 使用现有网络 volumes: - "/opt/epmet-cloud-logs/prod:/logs" environment: - RUN_INSTRUCT: "java -Xms256m -Xmx1524m -jar ./data-stats.jar" + RUN_INSTRUCT: "java -Xms256m -Xmx3000m -jar ./data-stats.jar" restart: "unless-stopped" deploy: resources: limits: cpus: '0.1' - memory: 1600M + memory: 3200M diff --git a/epmet-module/data-statistical/data-statistical-server/pom.xml b/epmet-module/data-statistical/data-statistical-server/pom.xml index ded855e3fe..6c21774ece 100644 --- a/epmet-module/data-statistical/data-statistical-server/pom.xml +++ b/epmet-module/data-statistical/data-statistical-server/pom.xml @@ -2,7 +2,7 @@ - 0.3.300 + 0.3.345 data-statistical com.epmet diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/ProjectConstant.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/ProjectConstant.java index ec417c1c60..1bb5176a49 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/ProjectConstant.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/ProjectConstant.java @@ -81,6 +81,7 @@ public interface ProjectConstant { * 项目来源于 工作端立项 */ String PROJECT_ORIGIN_AGENCY="agency"; + String PROJECT_ORIGIN_EVENT="resi_event"; /** * 自办 diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java index 5b6b444919..97453a2f06 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java @@ -1,5 +1,6 @@ package com.epmet.controller; +import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.epmet.commons.dynamic.datasource.annotation.DataSource; import com.epmet.commons.tools.constant.NumConstant; @@ -63,9 +64,6 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.*; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; @@ -896,7 +894,15 @@ public class DemoController { if (StringUtils.isNotBlank(param.getCustomerId())) { customerIds.add(param.getCustomerId()); } else { - customerIds = dimCustomerService.selectCustomerIdPage(1, 100); + int pageNo = NumConstant.ONE; + int pageSize = NumConstant.ONE_HUNDRED; + List customerIdList = null; + do { + customerIdList = dimCustomerService.selectCustomerIdPage(pageNo++, pageSize); + if (!CollectionUtils.isEmpty(customerIdList)){ + customerIds.addAll(customerIdList); + } + } while (!CollectionUtil.isEmpty(customerIdList) && customerIdList.size() == pageSize); } for (String customerId : customerIds) { dateIds.forEach(dateId -> { @@ -943,7 +949,15 @@ public class DemoController { if (StringUtils.isNotBlank(formDTO.getCustomerId())) { customerIds.add(formDTO.getCustomerId()); } else { - customerIds = dimCustomerService.selectCustomerIdPage(1, 100); + int pageNo = NumConstant.ONE; + int pageSize = NumConstant.ONE_HUNDRED; + List customerIdList = null; + do { + customerIdList = dimCustomerService.selectCustomerIdPage(pageNo++, pageSize); + if (!CollectionUtils.isEmpty(customerIdList)){ + customerIds.addAll(customerIdList); + } + } while (!CollectionUtil.isEmpty(customerIdList) && customerIdList.size() == pageSize); } for (String customerId : customerIds) { ExtractOriginFormDTO paramDTO = new ExtractOriginFormDTO(); @@ -983,11 +997,6 @@ public class DemoController { @Autowired private ScreenGrassrootsGovernDataAbsorptionService ndddYhjfService; - @PostMapping("diffOld") - public Result diff(@RequestBody ScreenCentralZoneDataFormDTO param){ - ndddYhjfService.difficultyDataHub(param); - return new Result(); - } @PostMapping("testDiffNew") public Result testDiff(@RequestBody ScreenCentralZoneDataFormDTO param){ return new Result().ok(ndddYhjfService.difficultyDataExtract(param)); diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/FactOriginExtractController.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/FactOriginExtractController.java index cf3ce5abf5..53bed86c3c 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/FactOriginExtractController.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/FactOriginExtractController.java @@ -1,5 +1,7 @@ package com.epmet.controller; +import cn.hutool.core.collection.CollectionUtil; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.Result; @@ -8,6 +10,7 @@ import com.epmet.dto.extract.form.ExtractOriginFormDTO; import com.epmet.service.evaluationindex.extract.todata.*; import com.epmet.service.stats.DimCustomerService; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; @@ -15,6 +18,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.ArrayList; import java.util.List; @@ -111,7 +115,16 @@ public class FactOriginExtractController { } } else { - List customerIds = dimCustomerService.selectCustomerIdPage(1, 100); + int pageNo = NumConstant.ONE; + int pageSize = NumConstant.ONE_HUNDRED; + List customerIds = new ArrayList(); + List customerIdList = null; + do { + customerIdList = dimCustomerService.selectCustomerIdPage(pageNo++, pageSize); + if (!CollectionUtils.isEmpty(customerIdList)){ + customerIds.addAll(customerIdList); + } + } while (!CollectionUtil.isEmpty(customerIdList) && customerIdList.size() == pageSize); customerIds.forEach(customerId -> { ExtractOriginFormDTO dto = new ExtractOriginFormDTO(); dto.setCustomerId(customerId); diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectMainDailyDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectMainDailyDao.java index dad541fcfb..7d1c6903ab 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectMainDailyDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectMainDailyDao.java @@ -26,10 +26,8 @@ import com.epmet.dto.indexcollect.result.CpcIndexCommonDTO; import com.epmet.dto.pingyin.result.*; import com.epmet.dto.screen.ScreenProjectDataDTO; import com.epmet.dto.screen.form.ProjectSourceMapFormDTO; -import com.epmet.entity.evaluationindex.extract.FactOriginProjectMainDailyEntity; -import com.epmet.entity.evaluationindex.extract.FactOriginProjectOrgPeriodDailyEntity; -import com.epmet.entity.evaluationindex.extract.GovernGridTotalCommonDTO; -import com.epmet.entity.evaluationindex.extract.GovernProjectInfoDTO; +import com.epmet.dto.screen.form.ScreenCentralZoneDataFormDTO; +import com.epmet.entity.evaluationindex.extract.*; import com.epmet.entity.evaluationindex.screen.ScreenDifficultyDataEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -403,13 +401,13 @@ public interface FactOriginProjectMainDailyDao extends BaseDao + * @param param + * @param param + * @return java.util.List * @author LiuJanJun * @date 2021/4/12 1:35 下午 */ - List getProjectForDiff(@Param("customerId") String customerId, @Param("dateId") String dateId); + List getProjectForDiff(@Param("param") ScreenCentralZoneDataFormDTO param, @Param("offset") int offset, @Param("pageSize") int pageSize); /** * desc: 获取难点堵点项目数据耗时 @@ -420,7 +418,7 @@ public interface FactOriginProjectMainDailyDao extends BaseDao getProjectPeriodForDiff(@Param("customerId") String customerId, @Param("dateId") String dateId); + List getProjectPeriodForDiff(@Param("customerId") String customerId, @Param("projectId") String projectId); List selectResponseCount(@Param("customerId") String customerId); @@ -551,4 +549,5 @@ public interface FactOriginProjectMainDailyDao extends BaseDao getMemberProjectCount(@Param("customerId") String customerId, @Param("dateId") String dateId); + } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenDifficultyDataDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenDifficultyDataDao.java index 3d90291cba..fb35330b9c 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenDifficultyDataDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenDifficultyDataDao.java @@ -19,7 +19,6 @@ package com.epmet.dao.evaluationindex.screen; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dto.screencoll.form.DifficultyDataDetailFormDTO; -import com.epmet.dto.screencoll.form.DifficultyDataFormDTO; import com.epmet.entity.evaluationindex.screen.ScreenDifficultyDataEntity; import com.epmet.entity.evaluationindex.screen.ScreenDifficultyImgDataEntity; import org.apache.ibatis.annotations.Mapper; @@ -56,7 +55,7 @@ public interface ScreenDifficultyDataDao extends BaseDao list, @Param("customerId")String customerId); - + /** * @Description 根据customerId查询是否有难点赌点的数据 * @param customerId @@ -92,12 +91,4 @@ public interface ScreenDifficultyDataDao extends BaseDao list); - /** - * @Description 根据客户Id查出全部的难点赌点的项目Id和网格Id,因为需要比对全部的信息然后删除因为删除网格而导致的垃圾数据 - * @param customerId - * @return java.util.List - * @author wangc - * @date 2020.11.17 09:33 - */ - List selectAllDifficultyByCustomerId(@Param("customerId")String customerId); } 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/dao/org/CustomerGridDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/org/CustomerGridDao.java index 1677dc8f76..fc651f6c37 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/org/CustomerGridDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/org/CustomerGridDao.java @@ -83,6 +83,13 @@ public interface CustomerGridDao extends BaseDao { **/ List selectListGridInfo(String customerId); + /** + * 查询网格id + * @param gridId + * @return + */ + GridInfoDTO selectGridInfo(String gridId); + /** * 查询工作人员网格关系 * @author zhaoqifeng diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/user/UserDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/user/UserDao.java index 584bfdf64c..547cc164b7 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/user/UserDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/user/UserDao.java @@ -3,6 +3,7 @@ package com.epmet.dao.user; import com.epmet.dto.extract.form.GridHeartedFormDTO; import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO; import com.epmet.dto.extract.result.UserPartyResultDTO; +import com.epmet.dto.result.PatrolRoutineWorkResult; import com.epmet.dto.screen.ScreenProjectDataDTO; import com.epmet.dto.stats.form.GmUploadEventFormDTO; import com.epmet.dto.user.form.StaffBaseInfoFormDTO; @@ -35,14 +36,14 @@ public interface UserDao { CommonTotalAndIncCountResultDTO selectResiTotalAndIncrByLevel(@Param("regOrPartiFlag") String regOrPartiFlag, @Param("gridIds") Set gridIds, @Param("targetDate") Date targetDate); /** - * @Description 查询注册用户的总量与增量【新方法】 + * @Description 查询注册用户的总量与增量【新方法】 * @Param regOrPartiFlag * @Param gridIds * @Param targetDate * @author zxc * @date 2021/7/27 10:20 上午 */ - List selectResiTotalAndIncrByGridIds(@Param("regOrPartiFlag") String regOrPartiFlag, @Param("gridIds") Set gridIds, @Param("targetDate") Date targetDate,@Param("startDate")Date startDate); + List selectResiTotalAndIncrByGridIds(@Param("regOrPartiFlag") String regOrPartiFlag, @Param("gridIds") Set gridIds, @Param("targetDate") Date targetDate, @Param("startDate") Date startDate); /** * @param @@ -54,13 +55,13 @@ public interface UserDao { CommonTotalAndIncCountResultDTO selectPartyTotalAndIncr(@Param("userIds") List userIds, @Param("incrUserIds") List incrUserIds, @Param("targetDate") Date targetDate); /** - * @Description 查询党员的总量与增量【新方法】 + * @Description 查询党员的总量与增量【新方法】 * @Param targetDate * @Param regOrPartiFlag * @author zxc * @date 2021/7/27 5:08 下午 */ - List selectPartyTotalAndIncrNew(@Param("targetDate") Date targetDate,@Param("regOrPartiFlag") String regOrPartiFlag,@Param("startDate") Date startDate); + List selectPartyTotalAndIncrNew(@Param("targetDate") Date targetDate, @Param("regOrPartiFlag") String regOrPartiFlag, @Param("startDate") Date startDate); /** * @param @@ -72,7 +73,7 @@ public interface UserDao { CommonTotalAndIncCountResultDTO selectWarmTotalAndIncr(@Param("userIds") List userIds, @Param("incrUserIds") List incrUserIds, @Param("gridIds") Set gridIds, @Param("targetDate") Date targetDate); /** - * @Description 查询热心居民的总量与增量【新方法】 + * @Description 查询热心居民的总量与增量【新方法】 * @Param userIds 总注册用户 * @Param incrUserIds 增长注册用户 * @Param gridIds 网格IDS @@ -81,7 +82,7 @@ public interface UserDao { * @date 2021/7/27 1:31 下午 */ List selectWarmTotalAndIncrByGrids(@Param("userIds") List userIds, @Param("incrDailyUserIds") List incrDailyUserIds, @Param("gridIds") Set gridIds, - @Param("targetDate") Date targetDate,@Param("startDate") Date startDate,@Param("incrMonthlyUserIds") List incrMonthlyUserIds); + @Param("targetDate") Date targetDate, @Param("startDate") Date startDate, @Param("incrMonthlyUserIds") List incrMonthlyUserIds); /** * @param @@ -102,7 +103,7 @@ public interface UserDao { List selectTotalUserIds(@Param("regOrPartiFlag") String regOrPartiFlag, @Param("gridIds") Set gridIds, @Param("targetDate") Date targetDate); /** - * @Description 查询指定网格范围下单位时间内新增的注册用户Id【新方法】 + * @Description 查询指定网格范围下单位时间内新增的注册用户Id【新方法】 * @Param regOrPartiFlag * @Param gridIds * @Param targetDate @@ -110,10 +111,10 @@ public interface UserDao { * @date 2021/7/27 10:41 上午 */ List selectIncrUserIdsByGrids(@Param("regOrPartiFlag") String regOrPartiFlag, @Param("gridIds") Set gridIds, @Param("targetDate") Date targetDate, - @Param("startDate")Date startDate); + @Param("startDate") Date startDate); /** - * @Description 查询指定网格范围下单位时间内全部的注册用户Id【新方法】 + * @Description 查询指定网格范围下单位时间内全部的注册用户Id【新方法】 * @Param regOrPartiFlag * @Param gridIds * @Param targetDate @@ -141,7 +142,7 @@ public interface UserDao { Integer selectResiIncrWithinTimeRange(@Param("regOrPartiFlag") String regOrPartiFlag, @Param("gridIds") Set gridIds, @Param("startDate") Date startDate, @Param("endDate") Date endDate); /** - * @Description 查询指定时间范围内注册/参与用户增量【新方法】 + * @Description 查询指定时间范围内注册/参与用户增量【新方法】 * @Param regOrPartiFlag * @Param gridIds * @Param startDate @@ -266,5 +267,7 @@ public interface UserDao { List getPatrolDetailList(MidPatrolFormDTO formDTO); List filterUserIds(@Param("userIds") List userIds, @Param("roleKey") String roleKey); + + List selectRoutineWorkListByDateId(@Param("customerId") String customerId, @Param("dateId") String dateId); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/FactOriginProjectMainAndPeriodDTO.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/FactOriginProjectMainAndPeriodDTO.java new file mode 100644 index 0000000000..191d6a93b7 --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/FactOriginProjectMainAndPeriodDTO.java @@ -0,0 +1,156 @@ +/** + * 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.evaluationindex.extract; + +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; + +import java.util.List; + +/** + * 项目主表_日统计 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2020-09-16 + */ +@Data +public class FactOriginProjectMainAndPeriodDTO extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 项目的发布日期yyyyMMdd + */ + private String dateId; + + /** + * 周ID + */ + private String weekId; + + /** + * 月份ID + */ + private String monthId; + + /** + * 季度ID + */ + private String quarterId; + + /** + * 年度ID + */ + private String yearId; + + /** + * 客户ID + */ + private String customerId; + + /** + * 转议题用户ID + */ + private String issueCreatorId; + + /** + * 转为项目的议题ID + */ + private String issueId; + + /** + * 转为议题的话题ID + */ + private String topicId; + + /** + * 网格ID + */ + private String gridId; + + /** + * 上级ID + */ + private String pid; + + /** + * 所有上级Id集合 (项目来源) + * */ + private String pids; + + /** + * 组织ID(网格所属组织ID) + */ + private String agencyId; + + /** + * 来源:议题issue + */ + private String origin; + + /** + * 来源ID + */ + private String originId; + + /** + * 状态 + */ + private String projectStatus; + + /** + * resolved unresolved + * */ + private String isResolved; + + /** + * 创建话题用户的ID + */ + private String topicCreatorId; + + /** + * 是否是党员 1:是 + */ + private String isParty; + + /** + * 是否超期 1:是 + */ + private String isOverdue; + + /** + * 是否满意 1:是 + */ + private Integer isSatisfied; + + /** + * 办结组织Ids(:隔开,有可能是社区id可能是网格id,无需区分级别,在统计时模糊查询) + */ + private String finishOrgIds; + + /** + * 项目创建人(议题转项目或立项人) + */ + private String projectCreator; + + /** + * 项目处理时间节点 + */ + private List periodList; + +} diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/project/ProjectEntity.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/project/ProjectEntity.java index 20a32c24a6..8244100898 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/project/ProjectEntity.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/project/ProjectEntity.java @@ -95,4 +95,7 @@ public class ProjectEntity extends BaseEpmetEntity { * */ private String locateDimension; + private Integer pageNo = 1; + private Integer pageSize = 20; + } 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/entity/user/StatsStaffPatrolRecordDailyEntity.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/user/StatsStaffPatrolRecordDailyEntity.java index 247d87f285..3340819a5b 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/user/StatsStaffPatrolRecordDailyEntity.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/user/StatsStaffPatrolRecordDailyEntity.java @@ -123,5 +123,10 @@ public class StatsStaffPatrolRecordDailyEntity extends BaseEpmetEntity { */ private String latestPatrolStatus; + /** + * 例行工作次数 + */ + private Integer routineWorkCount; + } 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/biz/impl/BizDataStatsServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java index fbeb7a391f..15d3ba8b06 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/biz/impl/BizDataStatsServiceImpl.java @@ -1,5 +1,6 @@ package com.epmet.service.evaluationindex.extract.biz.impl; +import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.utils.ConvertUtils; @@ -8,6 +9,7 @@ import com.epmet.constant.ProjectConstant; import com.epmet.dto.ProjectDTO; import com.epmet.dto.extract.form.BizDataFormDTO; import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO; +import com.epmet.dto.result.PatrolRoutineWorkResult; import com.epmet.dto.user.result.CustomerGridStaffDTO; import com.epmet.dto.user.result.CustomerStaffDTO; import com.epmet.dto.user.result.StaffPatrolRecordResult; @@ -72,8 +74,14 @@ public class BizDataStatsServiceImpl implements BizDataStatsService { } else { //查询全部客户 int pageNo = NumConstant.ONE; - int pageSize = NumConstant.ONE_HUNDRED; - customerIds = dimCustomerService.selectCustomerIdPage(pageNo, pageSize); + int pageSize = NumConstant.ONE_THOUSAND; + List customerIdList = null; + do { + customerIdList = dimCustomerService.selectCustomerIdPage(pageNo++, pageSize); + if (!CollectionUtils.isEmpty(customerIdList)) { + customerIds.addAll(customerIdList); + } + } while (!CollectionUtil.isEmpty(customerIdList) && customerIdList.size() == pageSize); if (org.springframework.util.CollectionUtils.isEmpty(customerIds)) { log.error("exeDailyAll 获取客户Id为空"); return; @@ -91,8 +99,8 @@ public class BizDataStatsServiceImpl implements BizDataStatsService { //校正参数里的前一天日期的数据 //获取所有网格员 List allGridMembers = getAllGridMembers(formDTO); - if (CollectionUtils.isEmpty(allGridMembers)){ - log.warn("executeStaffPatrolStats have any gridMembers,param:{}",JSON.toJSONString(formDTO)); + if (CollectionUtils.isEmpty(allGridMembers)) { + log.warn("executeStaffPatrolStats have any gridMembers,param:{}", JSON.toJSONString(formDTO)); return; } String yesterdayStr = getYesterdayString(formDTO); @@ -102,12 +110,12 @@ public class BizDataStatsServiceImpl implements BizDataStatsService { //初始化参数里日期的数据 如果当前时间在1分钟内 则初始化 String todayDateDimId = DimIdGenerator.getDateDimId(new Date()); - if (todayDateDimId.equals(formDTO.getDateId())){ + if (todayDateDimId.equals(formDTO.getDateId())) { //如果当前时间-1分钟还等于今天 则进行初始化操作 否则执行数据纠正 String dateDimId = DimIdGenerator.getDateDimId(new Date(System.currentTimeMillis() - 1 * 60 * 1000)); - if (!dateDimId.equals(todayDateDimId)){ + if (!dateDimId.equals(todayDateDimId)) { initStaffPatrolTodayData(formDTO, allGridMembers); - }else{ + } else { reloadStaffPatrolStatsData(formDTO, allGridMembers); } } @@ -115,7 +123,7 @@ public class BizDataStatsServiceImpl implements BizDataStatsService { } private void reloadStaffPatrolStatsData(StaffPatrolStatsFormDTO formDTO, List allGridMembers) { - log.info("reloadStaffPatrolStatsData param:{}",JSON.toJSONString(formDTO)); + log.info("reloadStaffPatrolStatsData param:{}", JSON.toJSONString(formDTO)); //获取昨日的巡查统计记录 //遍历网格员重新初始化数据 @@ -128,25 +136,29 @@ public class BizDataStatsServiceImpl implements BizDataStatsService { //获取昨日的立项项目数 List yesterdayProjectList = projectService.selectProjectListByDateId(formDTO.getCustomerId(), formDTO.getDateId(), ProjectConstant.PROJECT_ORIGIN_AGENCY); + //获取昨日的例行工作数据 + List yesterdayWorkList = userService.selectRoutineWorkListByDateId(formDTO.getCustomerId(), formDTO.getDateId()); + //遍历网格员 设置其 巡查次数 巡查时常 上报项目数 yesterdayPatrolList.forEach(patrolRecord -> { String key = patrolRecord.getGrid().concat(patrolRecord.getStaffId()); StatsStaffPatrolRecordDailyDTO patrolRecordDailyDTO = yesterdayStatsMap.get(key); - if (patrolRecordDailyDTO != null) { - long total = (patrolRecord.getPatrolEndTime().getTime() - patrolRecord.getPatrolStartTime().getTime()) / 1000; - if (patrolRecordDailyDTO.getTotalTime() == null) { - patrolRecordDailyDTO.setTotalTime(NumConstant.ZERO); - } - patrolRecordDailyDTO.setTotalTime(patrolRecordDailyDTO.getTotalTime() + (int) total); - if (patrolRecordDailyDTO.getPatrolTotal() == null) { - patrolRecordDailyDTO.setPatrolTotal(NumConstant.ZERO); - } - patrolRecordDailyDTO.setPatrolTotal(patrolRecordDailyDTO.getPatrolTotal() + NumConstant.ONE); - //如果巡查记录时间小于统计里的最新的时间 则更新 - if (patrolRecordDailyDTO.getLatestPatrolTime() == null || patrolRecordDailyDTO.getLatestPatrolTime().getTime() < patrolRecord.getPatrolStartTime().getTime()) { - patrolRecordDailyDTO.setLatestPatrolTime(patrolRecord.getPatrolStartTime()); - patrolRecordDailyDTO.setLatestPatrolStatus(patrolRecord.getStatus()); - } + if (patrolRecordDailyDTO == null) { + return; + } + long total = (patrolRecord.getPatrolEndTime().getTime() - patrolRecord.getPatrolStartTime().getTime()) / NumConstant.ONE_THOUSAND; + if (patrolRecordDailyDTO.getTotalTime() == null) { + patrolRecordDailyDTO.setTotalTime(NumConstant.ZERO); + } + patrolRecordDailyDTO.setTotalTime(patrolRecordDailyDTO.getTotalTime() + (int) total); + if (patrolRecordDailyDTO.getPatrolTotal() == null) { + patrolRecordDailyDTO.setPatrolTotal(NumConstant.ZERO); + } + patrolRecordDailyDTO.setPatrolTotal(patrolRecordDailyDTO.getPatrolTotal() + NumConstant.ONE); + //如果巡查记录时间小于统计里的最新的时间 则更新 + if (patrolRecordDailyDTO.getLatestPatrolTime() == null || patrolRecordDailyDTO.getLatestPatrolTime().getTime() < patrolRecord.getPatrolStartTime().getTime()) { + patrolRecordDailyDTO.setLatestPatrolTime(patrolRecord.getPatrolStartTime()); + patrolRecordDailyDTO.setLatestPatrolStatus(patrolRecord.getStatus()); } }); //填充项目数 @@ -164,10 +176,19 @@ public class BizDataStatsServiceImpl implements BizDataStatsService { return; } - recordDailyDTO.setReportProjectCount(recordDailyDTO.getReportProjectCount() + 1); + recordDailyDTO.setReportProjectCount(recordDailyDTO.getReportProjectCount() + NumConstant.ONE); } }); }); + yesterdayWorkList.forEach(work->{ + String key = work.getGridId().concat(work.getUserId()); + StatsStaffPatrolRecordDailyDTO patrolRecordDailyDTO = yesterdayStatsMap.get(key); + if (patrolRecordDailyDTO == null){ + return; + } + patrolRecordDailyDTO.setRoutineWorkCount(patrolRecordDailyDTO.getRoutineWorkCount() + NumConstant.ONE); + + }); Integer effectRow = statsStaffPatrolService.delAndInsertBatch(formDTO, insertList); log.debug("initStaffPatrolStats insert rows:{}", effectRow); @@ -195,7 +216,7 @@ public class BizDataStatsServiceImpl implements BizDataStatsService { } private void initStaffPatrolTodayData(StaffPatrolStatsFormDTO formDTO, List allGridMembers) { - log.info("initStaffPatrolTodayData param:{}",JSON.toJSONString(formDTO)); + log.info("initStaffPatrolTodayData param:{}", JSON.toJSONString(formDTO)); List insertList = buildInitPatrolStatsData(formDTO, allGridMembers); Integer effectRow = statsStaffPatrolService.delAndInsertBatch(formDTO, insertList); log.debug("initStaffPatrolStats insert rows:{}", effectRow); @@ -227,6 +248,7 @@ public class BizDataStatsServiceImpl implements BizDataStatsService { record.setPatrolTotal(NumConstant.ZERO); record.setLatestPatrolStatus("end"); record.setReportProjectCount(NumConstant.ZERO); + record.setRoutineWorkCount(NumConstant.ZERO); record.setSourceType("internal"); record.setSourceCustomerId(record.getCustomerId()); @@ -280,24 +302,24 @@ public class BizDataStatsServiceImpl implements BizDataStatsService { daysBetween = DateUtils.getDaysBetween(param.getStartDate(), param.getEndDate()); } List finalDaysBetween = daysBetween; - threadPool.submit(() -> { - if (!isRange) { - try { - //初始化form里的今天的数据 并纠正昨日的数据 + + if (!isRange) { + try { + //初始化form里的今天的数据 并纠正昨日的数据 + this.executeStaffPatrolStats(formDTO); + } catch (Exception e) { + log.error("【网格员巡查数据统计】发生异常,参数:" + JSON.toJSONString(formDTO), e); + } + } else { + try { + for (String dateDimId : finalDaysBetween) { + formDTO.setDateId(dateDimId); this.executeStaffPatrolStats(formDTO); - } catch (Exception e) { - log.error("【网格员巡查数据统计】发生异常,参数:" + JSON.toJSONString(formDTO), e); - } - } else { - try { - for (String dateDimId : finalDaysBetween) { - formDTO.setDateId(dateDimId); - this.executeStaffPatrolStats(formDTO); - } - } catch (Exception e) { - log.error("【网格员巡查数据统计】发生异常,参数:" + JSON.toJSONString(param), e); } + } catch (Exception e) { + log.error("【网格员巡查数据统计】发生异常,参数:" + JSON.toJSONString(param), e); } - }); + } + } } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexOriginExtractServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexOriginExtractServiceImpl.java index a30c0e3169..783b11feeb 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexOriginExtractServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexOriginExtractServiceImpl.java @@ -1,5 +1,6 @@ package com.epmet.service.evaluationindex.extract.dataToIndex.impl; +import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.constant.CustomerIdConstant; import com.epmet.commons.tools.constant.NumConstant; @@ -63,7 +64,13 @@ public class IndexOriginExtractServiceImpl implements IndexOriginExtractService } else { int pageNo = NumConstant.ONE; int pageSize = NumConstant.ONE_HUNDRED; - customerIds = dimCustomerService.selectCustomerIdPage(pageNo, pageSize); + List customerIdList = null; + do { + customerIdList = dimCustomerService.selectCustomerIdPage(pageNo++, pageSize); + if (!CollectionUtils.isEmpty(customerIdList)){ + customerIds.addAll(customerIdList); + } + } while (!CollectionUtil.isEmpty(customerIdList) && customerIdList.size() == pageSize); if (CollectionUtils.isEmpty(customerIds)) { log.error("indexOriginExtractAll 获取客户Id为空"); return; diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectMainDailyService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectMainDailyService.java index 515befcf9d..6e1268f727 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectMainDailyService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectMainDailyService.java @@ -27,10 +27,7 @@ import com.epmet.dto.pingyin.result.*; import com.epmet.dto.screen.ScreenProjectDataDTO; import com.epmet.dto.screen.form.ProjectSourceMapFormDTO; import com.epmet.dto.screen.form.ScreenCentralZoneDataFormDTO; -import com.epmet.entity.evaluationindex.extract.FactOriginProjectMainDailyEntity; -import com.epmet.entity.evaluationindex.extract.FactOriginProjectOrgPeriodDailyEntity; -import com.epmet.entity.evaluationindex.extract.GovernGridTotalCommonDTO; -import com.epmet.entity.evaluationindex.extract.GovernProjectInfoDTO; +import com.epmet.entity.evaluationindex.extract.*; import com.epmet.entity.evaluationindex.screen.ScreenDifficultyDataEntity; import java.util.List; @@ -377,11 +374,13 @@ public interface FactOriginProjectMainDailyService extends BaseService * @author LiuJanJun * @date 2021/4/12 11:07 上午 */ - List getProjectForDiff(ScreenCentralZoneDataFormDTO param); + List getProjectAndPeriodForDiff(ScreenCentralZoneDataFormDTO param, int offset, int pageSize); /** * desc: 根据项目数据 获取相关连的项目耗时 diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginExtractServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginExtractServiceImpl.java index 3dee411e2a..b650e906d3 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginExtractServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginExtractServiceImpl.java @@ -1,5 +1,6 @@ package com.epmet.service.evaluationindex.extract.todata.impl; +import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.utils.ConvertUtils; @@ -73,7 +74,13 @@ public class FactOriginExtractServiceImpl implements FactOriginExtractService { //查询全部客户 int pageNo = NumConstant.ONE; int pageSize = NumConstant.ONE_HUNDRED; - customerIds = dimCustomerService.selectCustomerIdPage(pageNo, pageSize); + List customerIdList = null; + do { + customerIdList = dimCustomerService.selectCustomerIdPage(pageNo++, pageSize); + if (!CollectionUtils.isEmpty(customerIdList)){ + customerIds.addAll(customerIdList); + } + } while (!CollectionUtil.isEmpty(customerIdList) && customerIdList.size() == pageSize); if (CollectionUtils.isEmpty(customerIds)) { log.error("extractAll 获取客户Id为空"); return; diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectMainDailyServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectMainDailyServiceImpl.java index 1f1fcfe88a..a307aaf171 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectMainDailyServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectMainDailyServiceImpl.java @@ -36,10 +36,7 @@ import com.epmet.dto.result.CostDayResultDTO; import com.epmet.dto.screen.ScreenProjectDataDTO; import com.epmet.dto.screen.form.ProjectSourceMapFormDTO; import com.epmet.dto.screen.form.ScreenCentralZoneDataFormDTO; -import com.epmet.entity.evaluationindex.extract.FactOriginProjectMainDailyEntity; -import com.epmet.entity.evaluationindex.extract.FactOriginProjectOrgPeriodDailyEntity; -import com.epmet.entity.evaluationindex.extract.GovernGridTotalCommonDTO; -import com.epmet.entity.evaluationindex.extract.GovernProjectInfoDTO; +import com.epmet.entity.evaluationindex.extract.*; import com.epmet.entity.evaluationindex.screen.ScreenDifficultyDataEntity; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.service.evaluationindex.extract.todata.FactOriginProjectMainDailyService; @@ -527,8 +524,8 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl getProjectForDiff(ScreenCentralZoneDataFormDTO param) { - return baseDao.getProjectForDiff(param.getCustomerId(),param.getDateId()); + public List getProjectAndPeriodForDiff(ScreenCentralZoneDataFormDTO param, int offset, int pageSize) { + return baseDao.getProjectForDiff(param,offset,pageSize); } @Override 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/ScreenGrassrootsGovernDataAbsorptionService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/ScreenGrassrootsGovernDataAbsorptionService.java index 817d714096..570756ad25 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/ScreenGrassrootsGovernDataAbsorptionService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/ScreenGrassrootsGovernDataAbsorptionService.java @@ -18,15 +18,6 @@ public interface ScreenGrassrootsGovernDataAbsorptionService { **/ void userScoreDataHub(ScreenCentralZoneDataFormDTO param); - /** - * @Description 难点赌点数据中转站 - * @param param - * @return - * @author wangc - * @date 2020.09.25 10:00 - **/ - void difficultyDataHub(ScreenCentralZoneDataFormDTO param); - /** * desc: 新的难点堵点抽取 * diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java index 0d3d541634..6d4e5c029f 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java @@ -1,5 +1,6 @@ package com.epmet.service.evaluationindex.extract.toscreen.impl; +import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.constant.CustomerIdConstant; import com.epmet.commons.tools.constant.NumConstant; @@ -107,7 +108,7 @@ public class ScreenExtractServiceImpl implements ScreenExtractService { customerIds.add(extractOriginFormDTO.getCustomerId()); } else { int pageNo = NumConstant.ONE; - int pageSize = NumConstant.ONE_HUNDRED; + int pageSize = NumConstant.ONE_THOUSAND; customerIds = dimCustomerService.selectCustomerIdPage(pageNo, pageSize); } if (!CollectionUtils.isEmpty(customerIds)) { @@ -141,7 +142,13 @@ public class ScreenExtractServiceImpl implements ScreenExtractService { } else { int pageNo = NumConstant.ONE; int pageSize = NumConstant.ONE_HUNDRED; - customerIds = dimCustomerService.selectCustomerIdPage(pageNo, pageSize); + List customerIdList = null; + do { + customerIdList = dimCustomerService.selectCustomerIdPage(pageNo++, pageSize); + if (!CollectionUtils.isEmpty(customerIdList)){ + customerIds.addAll(customerIdList); + } + } while (!CollectionUtil.isEmpty(customerIdList) && customerIdList.size() == pageSize); } if (!CollectionUtils.isEmpty(customerIds)) { customerIds.forEach(customerId -> { 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 7215caaa8d..6bacc7a64c 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 @@ -8,12 +8,10 @@ import com.epmet.constant.ProjectConstant; import com.epmet.dto.ProjectCategoryDTO; import com.epmet.dto.ProjectDTO; import com.epmet.dto.org.GridInfoDTO; -import com.epmet.dto.project.result.ProjectLatestOperationResultDTO; -import com.epmet.dto.screen.form.ProjectSourceMapFormDTO; import com.epmet.dto.screen.form.ScreenCentralZoneDataFormDTO; import com.epmet.dto.topic.TopicAttachmentDTO; import com.epmet.dto.topic.result.ResiTopicAndImgResultDTO; -import com.epmet.entity.evaluationindex.extract.FactOriginProjectMainDailyEntity; +import com.epmet.entity.evaluationindex.extract.FactOriginProjectMainAndPeriodDTO; import com.epmet.entity.evaluationindex.extract.FactOriginProjectOrgPeriodDailyEntity; import com.epmet.entity.evaluationindex.screen.ScreenDifficultyDataEntity; import com.epmet.entity.evaluationindex.screen.ScreenDifficultyImgDataEntity; @@ -126,9 +124,22 @@ 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{ + //如果网格删了或者组织删了,重新查询一下吧 + GridInfoDTO grid = customerGridService.queryGridInfoDTO(user.getGridId()); + user.setGridName(grid.getGridName()); + user.setOrgId(grid.getAgencyId()); + user.setOrgName(grid.getOrgName()); + //原始数据Pid使用英文:隔开,大屏数据要求按照英文,隔开 + user.setAllParentIds(grid.getPids().replaceAll(StrConstant.COLON, StrConstant.COMMA)); } Integer point = pointMap.get(user.getUserId()); BigDecimal score = scoreMap.get(user.getUserId()); @@ -142,187 +153,122 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr screenPartyUserRankDataService.dataClean(registeredUsers, param.getCustomerId()); } - /** - * @param param - * @return - * @Description 难点赌点数据中转站 - * @author wangc - * @date 2020.09.25 10:00 - **/ @Override - public void difficultyDataHub(ScreenCentralZoneDataFormDTO param) { - //查询数据 - List difficulties = factOriginProjectMainDailyService.getDifficultyBaseInfo(param.getCustomerId(), projectService.getOvertimeProjectByParameter(param.getCustomerId())); - if (CollectionUtils.isEmpty(difficulties)) { - return; - } - - //2.查询出客户下网格的相关信息 - List gridList = customerGridService.queryGridInfoList(param.getCustomerId()); - Map gridMap = gridList.stream().collect(Collectors.toMap(GridInfoDTO::getGridId, a -> a, (o, n) -> o)); - - //剔除垃圾数据(本次需要更新的数据集) - //for(Iterator iter = difficulties.iterator(); iter.hasNext();){ - // ScreenDifficultyDataEntity pointer = iter.next(); - // if(null == gridMap.get(pointer.getOrgId())){ - // iter.remove(); - // } - //} - difficulties.removeIf(diff -> null == gridMap.get(diff.getOrgId())); - - List projectIds = difficulties.stream().map(ScreenDifficultyDataEntity::getEventId).distinct().collect(Collectors.toList()); - //最近一次操作 - Map latestOperationMap = projectProcessService.getLatestOperation(projectIds, param.getCustomerId()); - //图片 - List projectSourceMap = difficulties.stream().map(diff -> { - ProjectSourceMapFormDTO map = new ProjectSourceMapFormDTO(); - map.setProjectId(diff.getEventId()); - map.setSourceId(diff.getEventImgUrl()); - return map; - }).collect(Collectors.toList()); - //factOriginProjectMainDailyService.getNewProject(param.getCustomerId(),projectIds); - - Map> imgMap = topicService.getTopicImgs(projectSourceMap); - - Map contentMap = topicService.getTopicContent(projectSourceMap); - - difficulties.forEach(diff -> { - - List figureList = CollectionUtils.isEmpty(imgMap) ? null : imgMap.get(diff.getEventId()); - diff.setEventImgUrl(CollectionUtils.isEmpty(figureList) ? "" : figureList.get(NumConstant.ZERO).getEventImgUrl()); - - - if (!CollectionUtils.isEmpty(contentMap)) { - diff.setEventContent(contentMap.get(diff.getEventId())); + public boolean difficultyDataExtract(ScreenCentralZoneDataFormDTO param) { + try { + //默认查询10天内的数据 + param.setInternalDay(DateUtils.getBeforeNDay(NumConstant.TEN)); + //获取agency维度 + List agencyList = dimAgencyService.getAgencyListByCustomerId(param.getCustomerId()); + Map agencyMap = agencyList.stream().collect(Collectors.toMap(DimAgencyEntity::getId, o -> o, (o1, o2) -> o1)); + //获取grid维度 + List gridList = customerGridService.queryGridInfoList(param.getCustomerId()); + Map gridMap = gridList.stream().collect(Collectors.toMap(GridInfoDTO::getGridId, o -> o, (o1, o2) -> o1)); + + //获取客户下所有项目分类 + List categoryList = issueProjectCategoryDictService.getAllByCId(param.getCustomerId()); + + //项目分类数据 todo 暂时查询所有 + List projectCategoryData = projectService.getProjectCategoryData(param.getCustomerId(), null); + //key projectId:categoryCode Set + Map> projectCategoryMap = projectCategoryData.stream() + .collect(Collectors.groupingBy(ProjectCategoryDTO::getProjectId, Collectors.mapping(ProjectCategoryDTO::getCategoryCode, Collectors.toSet()))); + + //获取业务库项目标题 + List bizProjectInfoList = projectService.getProjectInfo(param.getCustomerId(), null, null); + if (CollectionUtils.isEmpty(bizProjectInfoList)) { + log.warn("difficultyDataExtract customerId:{} have any project", param.getCustomerId()); + return false; } - if (!CollectionUtils.isEmpty(latestOperationMap)) { - ProjectLatestOperationResultDTO oper = latestOperationMap.get(diff.getEventId()); - if (null != oper) { - diff.setLatestOperateDesc(oper.getOperationName()); - diff.setEventTitle(oper.getTitle()); - diff.setEventCostTime(oper.getCostTime()); + Map bizProjectInfoMap = bizProjectInfoList.stream().collect(Collectors.toMap(ProjectDTO::getId, o -> o, (o1, o2) -> o1)); + + int pageNo = NumConstant.ONE; + int pageSize = NumConstant.ONE_THOUSAND; + List difficultyBaseList; + do { + //1.根据客户Id 获取所有项目数据 + int offset = (pageNo++ - NumConstant.ONE) * pageSize; + difficultyBaseList = factOriginProjectMainDailyService.getProjectAndPeriodForDiff(param, offset,pageSize); + if (CollectionUtils.isEmpty(difficultyBaseList)) { + log.warn("difficultyDataExtract customerId:{} have any project", param.getCustomerId()); + return false; } - } - diff.setDataEndTime(DateUtils.getBeforeNDay(NumConstant.ONE)); - }); - List imgList = new LinkedList<>(); - imgMap.values().forEach(imgList::addAll); - - //立案后会有 一个process 如果没有则说明是垃圾数据 如果有其他方式立项的项目则需要考虑下兼容 - difficulties.removeIf(diff -> StringUtils.isBlank(diff.getLatestOperateDesc())); + //2.获取项目的所有节点耗时数据 + List projectPeriodList = difficultyBaseList.stream() + .filter(o->o.getPeriodList() != null) + .flatMap(o->o.getPeriodList().stream()) + .collect(Collectors.toList()); + //处理部门数去重(只要流转到就算) + Map> orgCountMap = new HashMap<>(); + //被处理次数 + Map handleCountMap = new HashMap<>(); + Set valideProjectIdSet = fillAnyCountAndValidProject(param, projectPeriodList, orgCountMap, handleCountMap); + + List diffList = new ArrayList<>(); + List imgDataEntities = new ArrayList<>(); + for (FactOriginProjectMainAndPeriodDTO project : difficultyBaseList) { + if (agencyMap.get(project.getAgencyId()) == null || bizProjectInfoMap.get(project.getId()) == null) { + log.warn("未获取到相关的项目信息或者项目的所属组织信息,agencyId:{},projectId:{}",project.getAgencyId(),project.getId()); + continue; + } + //判断是否符合难点堵点条件 + if (!valideProjectIdSet.contains(project.getId())) { + continue; + } + ScreenDifficultyDataEntity diffEntity = buildBaseDiffEntity(project, agencyMap, gridMap, bizProjectInfoMap); + Set regCount = orgCountMap.get(project.getId()); + if (regCount != null) { + diffEntity.setEventReOrg(regCount.size()); + } else { + diffEntity.setEventReOrg(0); + } + Integer handleOrgCount = handleCountMap.get(project.getId()); + if (handleOrgCount != null) { + diffEntity.setEventHandledCount(handleOrgCount); + } else { + diffEntity.setEventHandledCount(0); + } - screenDifficultyDataService.dataClean(param.getCustomerId(), difficulties, imgList); - log.info("【大屏数据抽取-难点赌点执行完毕】 客户Id{} 难点赌点数据{}", param.getCustomerId(), JSON.toJSONString(difficulties)); - difficulties.removeIf( diff -> StringUtils.isBlank(diff.getLatestOperateDesc())); - imgList.forEach(item -> { - item.setCustomerId(param.getCustomerId()); - }); - screenDifficultyDataService.dataClean(param.getCustomerId(),difficulties,imgList); - log.info("【大屏数据抽取-难点赌点执行完毕】 客户Id{} 难点赌点数据{}",param.getCustomerId(),JSON.toJSONString(difficulties)); - } + diffEntity.setDataEndTime(StringUtils.isBlank(param.getDateId())?DateUtils.getBeforeNDay(NumConstant.ONE):param.getDateId()); + setCategoryInfo(diffEntity, project.getId(), categoryList, projectCategoryMap); + + + if (StringUtils.isNotBlank(project.getTopicId())) { + //获取图片及话题内容 + ResiTopicAndImgResultDTO topicInfo = topicService.getTopicAndImgs(project.getTopicId(), "image"); + if (topicInfo != null) { + List topicImgList = topicInfo.getTopicImgList(); + if (!CollectionUtils.isEmpty(topicImgList)){ + diffEntity.setEventImgUrl(topicImgList.get(NumConstant.ZERO).getAttachmentUrl()); + topicImgList.forEach(img -> { + ScreenDifficultyImgDataEntity imgData = new ScreenDifficultyImgDataEntity(); + imgData.setEventId(project.getId()); + imgData.setEventImgUrl(img.getAttachmentUrl()); + imgData.setSort(img.getSort()); + imgDataEntities.add(imgData); + imgData.setCustomerId(param.getCustomerId()); + }); + } + diffEntity.setEventContent(topicInfo.getTopicContent()); + + log.info("projectId:{} imgs:{}", project.getId(), imgDataEntities.stream().filter(o -> o.getEventId().equals(project.getId())).count()); + } - @Override - public boolean difficultyDataExtract(ScreenCentralZoneDataFormDTO param) { - //1.根据客户Id 获取所有项目数据 - List difficultyBaseList = factOriginProjectMainDailyService.getProjectForDiff(param); - if (CollectionUtils.isEmpty(difficultyBaseList)) { - log.warn("difficultyDataExtract customerId:{} have any project", param.getCustomerId()); - return false; - } - //获取业务库项目标题 - List bizProjectInfoList = projectService.getProjectInfo(param.getCustomerId(), null, null); - if (CollectionUtils.isEmpty(bizProjectInfoList)) { - log.warn("difficultyDataExtract customerId:{} have any project", param.getCustomerId()); - return false; - } - Map bizProjectInfoMap = bizProjectInfoList.stream().collect(Collectors.toMap(ProjectDTO::getId, o -> o, (o1, o2) -> o1)); - //获取agency维度 - List agencyList = dimAgencyService.getAgencyListByCustomerId(param.getCustomerId()); - Map agencyMap = agencyList.stream().collect(Collectors.toMap(DimAgencyEntity::getId, o -> o, (o1, o2) -> o1)); - //获取grid维度 - List gridList = customerGridService.queryGridInfoList(param.getCustomerId()); - Map gridMap = gridList.stream().collect(Collectors.toMap(GridInfoDTO::getGridId, o -> o, (o1, o2) -> o1)); - - //获取客户下所有项目分类 - List categoryList = issueProjectCategoryDictService.getAllByCId(param.getCustomerId()); - - //项目分类数据 todo 暂时查询所有 - List projectCategoryData = projectService.getProjectCategoryData(param.getCustomerId(), null); - //key projectId:categoryCode Set - Map> projectCategoryMap = projectCategoryData.stream() - .collect(Collectors.groupingBy(ProjectCategoryDTO::getProjectId, Collectors.mapping(ProjectCategoryDTO::getCategoryCode, Collectors.toSet()))); - - //2.获取项目的所有节点耗时数据 - List projectPeriodList = factOriginProjectMainDailyService.getProjectPeriod(param); - //处理部门数去重(只要流转到就算) - Map> orgCountMap = new HashMap<>(); - //被处理次数 - Map handleCountMap = new HashMap<>(); - Set valideProjectIdSet = fillAnyCountAndValidProject(param, projectPeriodList, orgCountMap, handleCountMap); - - List diffList = new ArrayList<>(); - List imgDataEntities = new ArrayList<>(); - for (FactOriginProjectMainDailyEntity project : difficultyBaseList) { - if (agencyMap.get(project.getAgencyId()) == null || bizProjectInfoMap.get(project.getId()) == null) { - log.warn("未获取到相关的项目信息或者项目的所属组织信息,agencyId:{},projectId:{}",project.getAgencyId(),project.getId()); - continue; - } - //判断是否符合难点堵点条件 - if (!valideProjectIdSet.contains(project.getId())) { - continue; - } - ScreenDifficultyDataEntity diffEntity = buildBaseDiffEntity(project, agencyMap, gridMap, bizProjectInfoMap); - Set regCount = orgCountMap.get(project.getId()); - if (regCount != null) { - diffEntity.setEventReOrg(regCount.size()); - } else { - diffEntity.setEventReOrg(0); - } - Integer handleOrgCount = handleCountMap.get(project.getId()); - if (handleOrgCount != null) { - diffEntity.setEventHandledCount(handleOrgCount); - } else { - diffEntity.setEventHandledCount(0); - } - - diffEntity.setDataEndTime(StringUtils.isBlank(param.getDateId())?DateUtils.getBeforeNDay(NumConstant.ONE):param.getDateId()); - setCategoryInfo(diffEntity, project.getId(), categoryList, projectCategoryMap); - - - if (StringUtils.isNotBlank(project.getTopicId())) { - //获取图片及话题内容 - ResiTopicAndImgResultDTO topicInfo = topicService.getTopicAndImgs(project.getTopicId(), "image"); - if (topicInfo != null) { - List topicImgList = topicInfo.getTopicImgList(); - if (!CollectionUtils.isEmpty(topicImgList)){ - diffEntity.setEventImgUrl(topicImgList.get(NumConstant.ZERO).getAttachmentUrl()); - topicImgList.forEach(img -> { - ScreenDifficultyImgDataEntity imgData = new ScreenDifficultyImgDataEntity(); - imgData.setEventId(project.getId()); - imgData.setEventImgUrl(img.getAttachmentUrl()); - imgData.setSort(img.getSort()); - imgDataEntities.add(imgData); - imgData.setCustomerId(param.getCustomerId()); - }); } - diffEntity.setEventContent(topicInfo.getTopicContent()); - - log.info("projectId:{} imgs:{}", project.getId(), imgDataEntities.stream().filter(o -> o.getEventId().equals(project.getId())).count()); + diffList.add(diffEntity); } - - } - diffList.add(diffEntity); + log.info("========:" + JSON.toJSONString(diffList)); + log.info("========:" + JSON.toJSONString(imgDataEntities)); + screenDifficultyDataService.dataClean(param.getCustomerId(),diffList,imgDataEntities); + log.info("difficultyDataExtract excute pageNo:{}",pageNo); + } while (!CollectionUtils.isEmpty(difficultyBaseList)&&difficultyBaseList.size()==pageSize); + + //3.获取项目的最后操作记录 + return true; + } finally { + log.info("【大屏数据抽取-难点赌点执行完毕】 客户Id{}", param.getCustomerId()); } - List collect = diffList.stream().filter(o -> o.getEventCostTime() < 5 * 24 * 60).collect(Collectors.toList()); - log.info("========:" + JSON.toJSONString(collect)); - log.info("========:" + JSON.toJSONString(diffList)); - log.info("========:" + JSON.toJSONString(imgDataEntities)); - - screenDifficultyDataService.dataClean(param.getCustomerId(),diffList,imgDataEntities); - log.info("【大屏数据抽取-难点赌点执行完毕】 客户Id{} 难点赌点数据{}", param.getCustomerId(), JSON.toJSONString(diffList)); - //3.获取项目的最后操作记录 - return true; } /** @@ -409,7 +355,7 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr * @param bizProjectInfoMap * @return */ - private ScreenDifficultyDataEntity buildBaseDiffEntity(FactOriginProjectMainDailyEntity project, Map agencyMap, + private ScreenDifficultyDataEntity buildBaseDiffEntity(FactOriginProjectMainAndPeriodDTO project, Map agencyMap, Map gridMap, Map bizProjectInfoMap) { ProjectDTO projectDTO = bizProjectInfoMap.get(project.getId()); ScreenDifficultyDataEntity diff = new ScreenDifficultyDataEntity(); 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/ScreenDifficultyDataService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenDifficultyDataService.java index 235dfe856a..99a01fd41c 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenDifficultyDataService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenDifficultyDataService.java @@ -34,7 +34,7 @@ public interface ScreenDifficultyDataService extends BaseService difficulties, List imgs); - - /** - * @Description 根据客户Id查出全部的难点赌点的项目Id和网格Id,因为需要比对全部的信息然后删除因为删除网格而导致的垃圾数据 - * @param customerId - * @return java.util.List - * @author wangc - * @date 2020.11.17 09:31 - */ - List getAllDifficultyByCustomerId(String customerId); -} \ No newline at end of file +} 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..da173709af 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 @@ -21,7 +21,6 @@ package com.epmet.service.evaluationindex.screen.impl; import com.epmet.commons.dynamic.datasource.annotation.DataSource; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.NumConstant; -import com.epmet.commons.tools.utils.DateUtils; import com.epmet.constant.DataSourceConstant; import com.epmet.dao.evaluationindex.screen.ScreenDifficultyDataDao; import com.epmet.entity.evaluationindex.screen.ScreenDifficultyDataEntity; @@ -47,37 +46,24 @@ 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; } @Override @Transactional(rollbackFor = Exception.class) public void dataClean(String customerId, List difficulties, List imgs) { - List orient = baseDao.selectAllDifficultyByCustomerId(customerId); - if(!CollectionUtils.isEmpty(orient)){ - baseDao.deleteBatchDifficultyImg(orient.stream().map(ScreenDifficultyDataEntity::getEventId).distinct().collect(Collectors.toList())); - } - baseDao.deleteBatchDifficulty(customerId,null); - + List projectId = difficulties.stream().map(ScreenDifficultyDataEntity::getEventId).distinct().collect(Collectors.toList()); + baseDao.deleteBatchDifficultyImg(projectId); + baseDao.deleteBatchDifficulty(customerId,projectId); if (!CollectionUtils.isEmpty(difficulties)) { baseDao.insertBatch(difficulties); } if (!CollectionUtils.isEmpty(imgs)) { baseDao.insertBatchImg(imgs); } - //baseDao.updateTime(customerId, DateUtils.getBeforeNDay(NumConstant.ONE)); } - /** - * @Description 根据客户Id查出全部的难点赌点的项目Id和网格Id,因为需要比对全部的信息然后删除因为删除网格而导致的垃圾数据 - * @param customerId - * @return java.util.List - * @author wangc - * @date 2020.11.17 09:31 - */ - @Override - public List 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/impl/StatsGroupServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsGroupServiceImpl.java index a6cc1d5c1d..e1ae6dc1e2 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsGroupServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsGroupServiceImpl.java @@ -1,5 +1,6 @@ package com.epmet.service.impl; +import cn.hutool.core.collection.CollectionUtil; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.constant.GroupConstant; @@ -22,6 +23,7 @@ import com.epmet.service.stats.*; import com.epmet.util.DimIdGenerator; import com.epmet.util.ModuleConstant; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.ListUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -88,10 +90,15 @@ public class StatsGroupServiceImpl implements StatsGroupService { DimIdGenerator.DimIdBean dimIdBean = this.getDimIdBean(formDTO); if (customerIds.size() != NumConstant.ZERO) { customerIds.forEach(customerId -> { + Boolean status = true; try { List gridsInfo = customerGridService.getCustomerGridIdList(customerId, dimIdBean.getDateId()); - List resultDTOS = groupDataService.groupGridDaily(customerId, dimIdBean, gridsInfo); - factGroupGridDailyService.statisticsGroupGridDaily(resultDTOS, customerId); + List> partition = ListUtils.partition(gridsInfo, NumConstant.ONE_HUNDRED); + for (List p : partition) { + List resultDTOS = groupDataService.groupGridDaily(customerId, dimIdBean, p); + factGroupGridDailyService.statisticsGroupGridDaily(resultDTOS, customerId,status); + status = false; + } } catch (Exception e) { log.error(String.format(GroupConstant.STATS_FAILED_GRID_DAILY, customerId, LocalDate.now(), e)); } @@ -115,7 +122,14 @@ public class StatsGroupServiceImpl implements StatsGroupService { if (StringUtils.isNotBlank(formDTO.getCustomerId())) { customerIds.add(formDTO.getCustomerId()); } else { - customerIds = dimCustomerService.selectCustomerIdPage(pageNo++, pageSize); + List customerIdList = null; + do { + customerIdList = dimCustomerService.selectCustomerIdPage(pageNo++, pageSize); + if (!CollectionUtils.isEmpty(customerIdList)){ + customerIds.addAll(customerIdList); + } + } while (!CollectionUtil.isEmpty(customerIdList) && customerIdList.size() == pageSize); + } do { if (customerIds.size() != NumConstant.ZERO) { @@ -161,7 +175,7 @@ public class StatsGroupServiceImpl implements StatsGroupService { } /** - * @param customerAgencyInfos + * @param agencyList * @param timeDim * @param customerId * @Description 网格小组 【机关-日】 数据统计处理 diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsProjectServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsProjectServiceImpl.java index 3b1d1c45c8..bacc003c5c 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsProjectServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsProjectServiceImpl.java @@ -1,5 +1,6 @@ package com.epmet.service.impl; +import cn.hutool.core.collection.CollectionUtil; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.constant.ProjectConstant; @@ -112,6 +113,8 @@ public class StatsProjectServiceImpl implements StatsProjectService { dimAgencyDTO.setCustomerId(customerId); List dimAgencyList = dimAgencyService.getDimAgencyList(dimAgencyDTO); + /* + //2022.1.12 客户数据量大 调整计算逻辑,一千条已查询,封装数据,将这部分业务数据查询拿到子方法分页查询处理 sun //3:根据客户Id查询项目业务表已结案数据(查询传入日期及之前的数据) ProjectEntity projectEntity = new ProjectEntity(); projectEntity.setCustomerId(customerId); @@ -133,13 +136,14 @@ public class StatsProjectServiceImpl implements StatsProjectService { //4-3.遍历删除项目节点表查询的无效数据 processList.removeIf(next -> map.containsKey(next.getProjectId())); } - //20210721 sun end + //20210721 sun end */ //5:机关层级日月统计 if (null != dimAgencyList && dimAgencyList.size() > NumConstant.ZERO) { //5.1:执行机关日数据统计 try { - agencyDateProjectStats(customerId, dimId, date, dimAgencyList, projectList, processList); + //agencyDateProjectStats(customerId, dimId, date, dimAgencyList, projectList, processList); + agencyDateProjectStats(customerId, dimId, date, dimAgencyList); } catch (Exception e) { log.error(String.format(ProjectConstant.STATS_FAILED_PREFIX, "agencyDateProjectStats", customerId, dimId.getDateId()), e); } @@ -159,7 +163,241 @@ public class StatsProjectServiceImpl implements StatsProjectService { * @Author sun * @Description 数据-项目-机关日统计 **/ - private String agencyDateProjectStats(String customerId, DimIdGenerator.DimIdBean dimId, Date date, List dimAgencyList, List projectList, List processList) { + private String agencyDateProjectStats(String customerId, DimIdGenerator.DimIdBean dimId, Date date, List dimAgencyList) { + //机关日统计数据【agencyId->FactAgencyProjectDailyEntity】 + Map mapList = new HashMap<>(); + //计算百分比使用,保留小数点后两位 + NumberFormat numberFormat = NumberFormat.getInstance(); + numberFormat.setMaximumFractionDigits(6); + //存放已结案项目Id,用于统计已结案中已解决、未解决数 + Map closeMap = new HashMap<>(); + //存放前一日已结案项目Id,用于统计日增量中已结案项目的已解决、未解决数量 + Map closeDateMap = new HashMap<>(); + + //20210721 sun 业务逻辑调整,网格删除,组织没有删除情况,相应的组织层级数据统计应舍弃以删除网格数据 start + //处理逻辑:查询已删除网格下项目Id,将已查询的项目、节点数据中的脏数据剔除【项目库有张表有网格Id,可以查出每个项目所属网格,但是关联该表后sql查询效率极低固舍弃此方案】 + //4-1.查询客户下已删除网格列表下存在的项目Id集合 + List list = customerGridService.getdelGridProjectIdList(customerId); + //20210721 sun end + + //一、先分页查询节点数据,封装每个组织的项目总数、已结案总数;日增量中项目总数、已结案总数 + ProjectEntity projectEntity = new ProjectEntity(); + projectEntity.setCustomerId(customerId); + projectEntity.setCreatedTime(date); + projectEntity.setStatus(ProjectConstant.CLOSED); + projectEntity.setPageSize(NumConstant.ONE_THOUSAND); + int pageNo = NumConstant.ONE; + int size = NumConstant.ZERO; + List processList = new ArrayList<>(); + do { + //1.一千条一循环查询节点数据,封装每个组织对应数据 + projectEntity.setPageNo(pageNo); + processList = projectProcessService.getProcessAgencyList(projectEntity); + size = processList.size(); + pageNo++; + //遍历删除项目节点表查询的无效数据 + if (list.size() > NumConstant.ZERO) { + Map map = list.stream().collect(Collectors.toMap(String::toString, v -> v, (c1, c2) -> c1)); + processList.removeIf(next -> map.containsKey(next.getProjectId())); + } + //2:遍历机关维度数据,统计每个机关各项指标数 + for (DimAgencyDTO agency : dimAgencyList) { + //2-1:存放当前机关及所有下级机关Id + Map map = new HashMap<>(); + map.put(agency.getId(), agency.getId()); + String subPids = ((null == agency.getPids() || "".equals(agency.getPids())) ? agency.getId() : agency.getPids() + ":" + agency.getId()); + dimAgencyList.forEach(sub -> { + if (sub.getPids().contains(subPids)) { + map.put(sub.getId(), sub.getId()); + } + }); + //机关下截止当前日期的项目总数、已结案总数、已结案已解决总数、已结案未解决总数 + AtomicInteger projectTotal = new AtomicInteger(0); + AtomicInteger closedTotal = new AtomicInteger(0); + //日增量中项目总数、已结案总数、已结案已解决总数、已结案未解决总数 + AtomicInteger projectIncr = new AtomicInteger(0); + AtomicInteger closedIncr = new AtomicInteger(0); + //2-2:遍历进展数据,统计截止当日的项目总量、处理中总量、已结案总量以及日增量中的项目总量、处理中总量、已结案总量 + processList.forEach(process -> { + //当前机关及下级 + if (map.containsKey(process.getAgencyId())) { + //进展表中是创建项目状态的数据总数即为客户该机关下项目总数 + if (ProjectConstant.CREATED.equals(process.getOperation())) { + projectTotal.addAndGet(1); + if (date.equals(process.getCreatedTime())) { + //日增量总数 + projectIncr.addAndGet(1); + } + } + if (ProjectConstant.CLOSE.equals(process.getOperation())) { + //截止当前日期的结案总数 + closedTotal.addAndGet(1); + closeMap.put(process.getProjectId(), process.getProjectId()); + if (date.equals(process.getCreatedTime())) { + //日增量已结案总数 + closedIncr.addAndGet(1); + closeDateMap.put(process.getProjectId(), process.getProjectId()); + } + } + } + }); + + //2-3:封装机关日数据对象 + FactAgencyProjectDailyEntity entity = new FactAgencyProjectDailyEntity(); + if (mapList.containsKey(agency.getId())) { + entity = mapList.get(agency.getId()); + entity.setProjectTotal(entity.getProjectTotal() + projectTotal.intValue()); + entity.setClosedTotal(entity.getClosedTotal() + closedTotal.intValue()); + entity.setPendingTotal(entity.getProjectTotal() - entity.getClosedTotal()); + if (projectTotal.intValue() > NumConstant.ZERO) { + entity.setPendingRatio(new BigDecimal(numberFormat.format((float) entity.getPendingTotal() / (float) entity.getProjectTotal()))); + entity.setClosedRatio(new BigDecimal(numberFormat.format((float) entity.getClosedTotal() / (float) entity.getProjectTotal()))); + } + entity.setProjectIncr(entity.getProjectIncr() + projectIncr.intValue()); + entity.setPendingIncr(entity.getPendingIncr() + projectIncr.intValue()); + entity.setClosedIncr(entity.getClosedIncr() + closedIncr.intValue()); + } else { + entity.setCustomerId(customerId); + entity.setAgencyId(agency.getId()); + entity.setParentId(agency.getPid()); + entity.setDateId(dimId.getDateId()); + entity.setWeekId(dimId.getWeekId()); + entity.setMonthId(dimId.getMonthId()); + entity.setQuarterId(dimId.getQuarterId()); + entity.setYearId(dimId.getYearId()); + entity.setProjectTotal(projectTotal.intValue()); + entity.setPendingTotal(projectTotal.intValue() - closedTotal.intValue()); + entity.setClosedTotal(closedTotal.intValue()); + if (projectTotal.intValue() > NumConstant.ZERO) { + entity.setPendingRatio(new BigDecimal(numberFormat.format((float) entity.getPendingTotal() / (float) entity.getProjectTotal()))); + entity.setClosedRatio(new BigDecimal(numberFormat.format((float) entity.getClosedTotal() / (float) entity.getProjectTotal()))); + } + entity.setProjectIncr(projectIncr.intValue()); + entity.setPendingIncr(projectIncr.intValue()); + entity.setClosedIncr(closedIncr.intValue()); + } + mapList.put(agency.getId(), entity); + } + } while (size == NumConstant.ONE_THOUSAND); + + //二、再分页查询项目表数据,封装每个组织的已结案已解决总数、已结案未解决总数;日增量中已结案已解决总数、已结案未解决总数 + int num = NumConstant.ONE; + List projectList = new ArrayList<>(); + do { + //3.一千条一循环查询项目数据,封装每个组织对应数据 + projectEntity.setPageNo(num); + projectList = projectService.getProjectAgencyList(projectEntity); + size = projectList.size(); + num++; + //遍历删除项目主表查询的无效数据 + if (list.size() > NumConstant.ZERO) { + Map map = list.stream().collect(Collectors.toMap(String::toString, v -> v, (c1, c2) -> c1)); + projectList.removeIf(next -> map.containsKey(next.getId())); + } + + //4.遍历机关维度数据,统计每个机关各项指标数 + for (DimAgencyDTO agency : dimAgencyList) { + //4-1:存放当前机关及所有下级机关Id + Map map = new HashMap<>(); + map.put(agency.getId(), agency.getId()); + String subPids = ((null == agency.getPids() || "".equals(agency.getPids())) ? agency.getId() : agency.getPids() + ":" + agency.getId()); + dimAgencyList.forEach(sub -> { + if (sub.getPids().contains(subPids)) { + map.put(sub.getId(), sub.getId()); + } + }); + //机关下截止当前日期的已结案已解决总数、已结案未解决总数 + AtomicInteger resolvedTotal = new AtomicInteger(0); + AtomicInteger unResolvedTotal = new AtomicInteger(0); + //日增量中项目已结案已解决总数、已结案未解决总数 + AtomicInteger resolvedIncr = new AtomicInteger(0); + AtomicInteger unResolvedIncr = new AtomicInteger(0); + //4-2:遍历项目业务数据,统计截止当日的已结案已解决总量、已结案未解决总量以及日增量中的已结案已解决总量、已结案未解决总量 + projectList.forEach(project -> { + //当前机关及下级 + if (map.containsKey(project.getAgencyId())) { + if (closeMap.containsKey(project.getId())) { + //已结案已解决 + if (ProjectConstant.RESOLVED.equals(project.getClosedStatus())) { + //截止当日的已结案已解决总量 + resolvedTotal.addAndGet(1); + if (closeDateMap.containsKey(project.getId())) { + //日增量中的已结案已解决总量 + resolvedIncr.addAndGet(1); + } + } + //已结案未解决 + if (ProjectConstant.UNRESOLVED.equals(project.getClosedStatus())) { + //截止当日的已结案未解决总量 + unResolvedTotal.addAndGet(1); + if (closeDateMap.containsKey(project.getId())) { + //日增量中的已结案未解决总量 + unResolvedIncr.addAndGet(1); + } + } + } + } + }); + + //4-3.封装机关日数据对象 + FactAgencyProjectDailyEntity entity = new FactAgencyProjectDailyEntity(); + if (mapList.containsKey(agency.getId())) { + entity = mapList.get(agency.getId()); + entity.setResolvedTotal(entity.getResolvedTotal() + resolvedTotal.intValue()); + entity.setUnresolvedTotal(entity.getUnresolvedTotal() + unResolvedTotal.intValue()); + if (entity.getClosedTotal() > NumConstant.ZERO) { + entity.setResolvedRatio(new BigDecimal(numberFormat.format((float) entity.getResolvedTotal() / (float) entity.getClosedTotal()))); + entity.setUnresolvedRatio(new BigDecimal(numberFormat.format((float) entity.getUnresolvedTotal() / (float) entity.getClosedTotal()))); + } + entity.setResolvedIncr(entity.getResolvedIncr() + resolvedIncr.intValue()); + entity.setUnresolvedIncr(entity.getUnresolvedIncr() + unResolvedIncr.intValue()); + + + } else { + entity.setCustomerId(customerId); + entity.setAgencyId(agency.getId()); + entity.setParentId(agency.getPid()); + entity.setDateId(dimId.getDateId()); + entity.setWeekId(dimId.getWeekId()); + entity.setMonthId(dimId.getMonthId()); + entity.setQuarterId(dimId.getQuarterId()); + entity.setYearId(dimId.getYearId()); + entity.setResolvedTotal(resolvedTotal.intValue()); + entity.setUnresolvedTotal(unResolvedTotal.intValue()); + if (entity.getClosedTotal() > NumConstant.ZERO) { + entity.setResolvedRatio(new BigDecimal(numberFormat.format((float) resolvedTotal.intValue() / (float) entity.getClosedTotal()))); + entity.setUnresolvedRatio(new BigDecimal(numberFormat.format((float) unResolvedTotal.intValue() / (float) entity.getClosedTotal()))); + } + entity.setResolvedIncr(resolvedIncr.intValue()); + entity.setUnresolvedIncr(unResolvedIncr.intValue()); + + } + mapList.put(agency.getId(), entity); + } + } while (size == NumConstant.ONE_THOUSAND); + + List projectDateEntityList = new ArrayList<>(mapList.values()); + //三、批量保存数据,先删后增 + if (null != projectDateEntityList && projectDateEntityList.size() > NumConstant.ZERO) { + //5:根据客户Id、日维度Id批量物理删除一下可能存在的历史数据 + FactAgencyProjectDailyEntity delEntity = new FactAgencyProjectDailyEntity(); + delEntity.setCustomerId(customerId); + delEntity.setDateId(dimId.getDateId()); + log.info("StatsProjectServiceImpl.agencyDateProjectStats-根据客户Id、日维度Id批量删除机关项目日统计表数据,对应客户Id:" + customerId + ",日维度Id:" + dimId.getDateId()); + factAgencyProjectDailyService.delDateProject(delEntity); + + //6:批量保存机关日统计数据 + log.info("StatsProjectServiceImpl.agencyDateProjectStats-批量新增机关项目日统计表数据,对应客户Id:" + customerId + ",日维度Id:" + dimId.getDateId()); + factAgencyProjectDailyService.insertBatch(projectDateEntityList); + } + + return null; + } + + /** + * 不考虑大数据量问题的方法【暂留】sun + */ + private String agencyDateProjectStats_old(String customerId, DimIdGenerator.DimIdBean dimId, Date date, List dimAgencyList, List projectList, List processList) { //批量机关日统计新增对象 List projectDateEntityList = new ArrayList<>(); //计算百分比使用,保留小数点后两位 diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/CustomerGridService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/CustomerGridService.java index d4aedd0ba2..5894fafa1b 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/CustomerGridService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/CustomerGridService.java @@ -57,6 +57,13 @@ public interface CustomerGridService extends BaseService { **/ List queryGridInfoList(String customerId); + /** + * 查询网格信息 + * @param gridId + * @return + */ + GridInfoDTO queryGridInfoDTO(String gridId); + /** * 查询工作人员网格关系 * @author zhaoqifeng diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/CustomerGridServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/CustomerGridServiceImpl.java index 956c5990bc..9abd714221 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/CustomerGridServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/CustomerGridServiceImpl.java @@ -76,6 +76,15 @@ public class CustomerGridServiceImpl extends BaseServiceImpl * @Description 查询客户项目处理进展表中是创建项目和结案两种进展的有效数据(创建日期截取yyyy-mm-dd格式字段值) **/ List getProcessList(ProjectEntity projectEntity); + List getProcessAgencyList(ProjectEntity projectEntity); /** * 根据客户查询项目处理进展 diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/ProjectService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/ProjectService.java index 87b377d39e..23367bfa06 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/ProjectService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/project/ProjectService.java @@ -47,6 +47,7 @@ public interface ProjectService extends BaseService { * @Description 根据客户Id查询客户项目业务表有效数据 **/ List getProjectList(ProjectEntity projectEntity); + List getProjectAgencyList(ProjectEntity projectEntity); /** * 已结案项目统计 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..97df52fdbe 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 @@ -34,6 +34,7 @@ import com.epmet.dto.screen.ScreenProjectProcessDTO; import com.epmet.entity.project.ProjectEntity; import com.epmet.entity.project.ProjectProcessEntity; import com.epmet.service.project.ProjectProcessService; +import com.github.pagehelper.PageHelper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -64,6 +65,11 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl getProcessList(ProjectEntity projectEntity) { return baseDao.selectProcessList(projectEntity); } + @Override + public List getProcessAgencyList(ProjectEntity projectEntity) { + PageHelper.startPage(projectEntity.getPageNo(), projectEntity.getPageSize()); + return baseDao.selectProcessList(projectEntity); + } @Override public List getProcessListByCustomer(String customerId, String date, String projectId) { @@ -139,9 +145,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 +171,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 +200,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..9b409ce75f 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 @@ -28,6 +28,7 @@ import com.epmet.dto.project.result.ProjectExceedParamsResultDTO; import com.epmet.entity.evaluationindex.extract.FactOriginProjectMainDailyEntity; import com.epmet.entity.project.ProjectEntity; import com.epmet.service.project.ProjectService; +import com.github.pagehelper.PageHelper; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -56,6 +57,11 @@ public class ProjectServiceImpl extends BaseServiceImpl getProjectList(ProjectEntity projectEntity) { return baseDao.selectProjectList(projectEntity); } + @Override + public List getProjectAgencyList(ProjectEntity projectEntity) { + PageHelper.startPage(projectEntity.getPageNo(), projectEntity.getPageSize()); + return baseDao.selectProjectList(projectEntity); + } @Override public List getAgencyClosedProjectTotal(String customerId, String date) { @@ -98,7 +104,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/FactGroupGridDailyService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/FactGroupGridDailyService.java index bcf2157ecd..732e5062eb 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/FactGroupGridDailyService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/FactGroupGridDailyService.java @@ -99,5 +99,5 @@ public interface FactGroupGridDailyService extends BaseService formDto,String customerId); + void statisticsGroupGridDaily(List formDto,String customerId,Boolean status); } \ No newline at end of file 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 formDto,String customerId) { + public void statisticsGroupGridDaily(List formDto,String customerId,Boolean status) { if (CollectionUtils.isEmpty(formDto)){ return; } String dateId = formDto.get(NumConstant.ZERO).getDateId(); - Integer delNum; - do { - delNum = baseDao.deleteInsertDateId(dateId,customerId); - }while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND); + // true 为当前客户第一回进入,需要删除历史数据 + if (status){ + Integer delNum; + do { + delNum = baseDao.deleteInsertDateId(dateId,customerId); + }while (delNum > NumConstant.ZERO && delNum == NumConstant.ONE_THOUSAND); + } List> partition = ListUtils.partition(formDto, NumConstant.ONE_HUNDRED); partition.forEach(p -> { baseDao.insertGroupGridDaily(p); diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/ScreenCentralZoneDataExtractServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/ScreenCentralZoneDataExtractServiceImpl.java index 1a13c7c5c4..b60d88c0f0 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/ScreenCentralZoneDataExtractServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/stats/impl/ScreenCentralZoneDataExtractServiceImpl.java @@ -77,7 +77,9 @@ public class ScreenCentralZoneDataExtractServiceImpl implements ScreenCentralZon if(DateUtils.getBeforeNDay(NumConstant.ONE).equals(dimId)){ result = factRegUserGridDailyDao.selectUserAndPartymemberByOrgLevel(ORG_LEVEL_AGENCY,customerId,DateUtils.getBeforeNDay(NumConstant.TWO)); } - if(null == result) result = new LinkedList<>(); + 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/service/user/UserService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/UserService.java index 1d0a500b0a..29e5e6d149 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/UserService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/UserService.java @@ -4,6 +4,7 @@ import com.epmet.dto.AgencySubTreeDto; import com.epmet.dto.extract.form.GridHeartedFormDTO; import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO; import com.epmet.dto.org.result.OrgStaffDTO; +import com.epmet.dto.result.PatrolRoutineWorkResult; import com.epmet.dto.screen.ScreenProjectDataDTO; import com.epmet.dto.stats.form.GmUploadEventFormDTO; import com.epmet.dto.stats.user.result.UserStatisticalData; @@ -146,6 +147,14 @@ public interface UserService { List getPatrolRecordList(MidPatrolFormDTO formDTO); List getPatrolDetailList(MidPatrolFormDTO formDTO); - + List filterUserIds(List userIds, String roleKey); + + /** + * desc:根据客户id和日期获取 例行工作数据 + * @param customerId + * @param dateId + * @return + */ + List selectRoutineWorkListByDateId(String customerId, String dateId); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/StatsStaffPatrolServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/StatsStaffPatrolServiceImpl.java index b07253b001..97bc67ed86 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/StatsStaffPatrolServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/StatsStaffPatrolServiceImpl.java @@ -13,6 +13,7 @@ import com.epmet.service.user.StatsStaffPatrolService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -30,6 +31,7 @@ public class StatsStaffPatrolServiceImpl implements StatsStaffPatrolService { @Autowired private StatsStaffPatrolRecordDailyDao statsStaffPatrolRecordDailyDao; + @Transactional(rollbackFor = Exception.class) @Override public Integer delAndInsertBatch(StaffPatrolStatsFormDTO formDTO, List insertList) { int delete = statsStaffPatrolRecordDailyDao.deleteInternal(formDTO); diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/UserServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/UserServiceImpl.java index a2d56125a6..f6c78dbfb0 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/UserServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/UserServiceImpl.java @@ -13,6 +13,7 @@ import com.epmet.dto.extract.form.GridHeartedFormDTO; import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO; import com.epmet.dto.extract.result.UserPartyResultDTO; import com.epmet.dto.org.result.OrgStaffDTO; +import com.epmet.dto.result.PatrolRoutineWorkResult; import com.epmet.dto.screen.ScreenProjectDataDTO; import com.epmet.dto.stats.form.GmUploadEventFormDTO; import com.epmet.dto.stats.user.*; @@ -1113,4 +1114,16 @@ public class UserServiceImpl implements UserService { public List filterUserIds(List userIds, String roleKey) { return userDao.filterUserIds(userIds, roleKey); } + + /** + * desc:根据客户id和日期获取 例行工作数据 + * + * @param customerId + * @param dateId + * @return + */ + @Override + public List selectRoutineWorkListByDateId(String customerId, String dateId) { + return userDao.selectRoutineWorkListByDateId(customerId, dateId); + } } 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/evaluationindex/extract/FactOriginProjectMainDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml index 60b6f10958..a6ba0e7a8b 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml @@ -3,32 +3,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - SELECT - id, date_id, customer_id, issue_id, topic_id, grid_id, pid, pids, agency_id, project_status, is_resolved, - topic_creator_id, is_party, is_overdue, finish_org_ids - FROM fact_origin_project_main_daily + m.id, m.date_id dateId, m.customer_id, m.issue_id, m.topic_id, m.grid_id, + m.pid, m.pids, m.agency_id, m.project_status, m.is_resolved, + m.topic_creator_id, m.is_party, m.is_overdue, m.finish_org_ids + + , IFNULL(b.DATE_ID, DATE_FORMAT( now(), '%Y%m%d' )) as updateDate + + FROM fact_origin_project_main_daily m + + LEFT JOIN fact_origin_project_log_daily b ON m.ID = b.PROJECT_ID AND b.ACTION_CODE = 'close' + WHERE - CUSTOMER_ID = #{customerId} - - AND DATE_ID = #{dateId,jdbcType=VARCHAR} + m.CUSTOMER_ID = #{param.customerId} + AND m.DEL_FLAG = '0' + + HAVING updateDate>= #{param.internalDay} + LIMIT #{offset} ,#{pageSize} @@ -1176,7 +1184,7 @@ FROM fact_origin_project_main_daily WHERE - (ORIGIN = 'agency' OR ORIGIN = 'resi_event') + ORIGIN = 'agency' AND CUSTOMER_ID = #{customerId} AND DATE_ID = #{dateId} @@ -1194,7 +1202,7 @@ FROM fact_origin_project_main_daily WHERE - (ORIGIN = 'agency' OR ORIGIN = 'resi_event') + ORIGIN = 'agency' AND CUSTOMER_ID = #{customerId} AND DATE_ID <= #{dateId} diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenDifficultyDataDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenDifficultyDataDao.xml index 9860bee6f3..8cae5260d0 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenDifficultyDataDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenDifficultyDataDao.xml @@ -221,14 +221,4 @@ - 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 4ebde89821..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 @@ -94,6 +94,25 @@ and cg.del_flag='0' AND cg.SYNC_FLAG = '1' + + + + SELECT - * + id, + customer_id, + agency_id, + closed_status FROM project WHERE diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactArticlePublishedAgencyDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactArticlePublishedAgencyDailyDao.xml index aeef594371..d90ecd3e51 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactArticlePublishedAgencyDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactArticlePublishedAgencyDailyDao.xml @@ -28,7 +28,7 @@ - \ No newline at end of file + diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactVolunteerServiceDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactVolunteerServiceDailyDao.xml index 59dfd96c12..be083bd93e 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactVolunteerServiceDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactVolunteerServiceDailyDao.xml @@ -14,6 +14,8 @@ + + diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml index 3f6cda5d85..7e00ed10c8 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/StatsStaffPatrolRecordDailyDao.xml @@ -23,6 +23,7 @@ REPORT_PROJECT_COUNT, LATEST_PATROL_TIME, LATEST_PATROL_STATUS, + ROUTINE_WORK_COUNT, DEL_FLAG, REVISION, CREATED_BY, @@ -50,6 +51,7 @@ #{item.reportProjectCount}, #{item.latestPatrolTime}, #{item.latestPatrolStatus}, + #{item.routineWorkCount}, '0', 0, 'APP_USER', diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/UserDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/UserDao.xml index fa8b19cd6b..6e8e25fefa 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/UserDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/UserDao.xml @@ -620,7 +620,7 @@ + diff --git a/epmet-module/epmet-common-service/common-service-server/deploy/docker-compose-prod.yml b/epmet-module/epmet-common-service/common-service-server/deploy/docker-compose-prod.yml index bdbb5be1ee..97adff5e39 100644 --- a/epmet-module/epmet-common-service/common-service-server/deploy/docker-compose-prod.yml +++ b/epmet-module/epmet-common-service/common-service-server/deploy/docker-compose-prod.yml @@ -2,7 +2,7 @@ version: "3.7" services: common-service-server: container_name: common-service-server-prod - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/common-service-server:0.3.41 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/common-service-server:0.3.42 ports: - "8103:8103" network_mode: host # 使用现有网络 diff --git a/epmet-module/epmet-common-service/common-service-server/pom.xml b/epmet-module/epmet-common-service/common-service-server/pom.xml index f3de138c12..2e22c32c01 100644 --- a/epmet-module/epmet-common-service/common-service-server/pom.xml +++ b/epmet-module/epmet-common-service/common-service-server/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.41 + 0.3.42 com.epmet epmet-common-service diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/AreaCodeServiceImpl.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/AreaCodeServiceImpl.java index 9a793cc0d2..0de5ddac2b 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/AreaCodeServiceImpl.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/AreaCodeServiceImpl.java @@ -25,6 +25,8 @@ import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; +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.utils.ConvertUtils; @@ -616,7 +618,7 @@ public class AreaCodeServiceImpl extends BaseServiceImpl list = childDao.selectByPCodeAndName(formDTO.getParentAreaCode().trim(), formDTO.getName().trim()); if (CollUtil.isNotEmpty(list)) { - throw new RenException("name已存在"); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "name已存在", "组织名称已存在"); } AreaCodeChildDTO areaCodeChildDTO = new AreaCodeChildDTO(); areaCodeChildDTO.setName(formDTO.getName().trim()); diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/WorkDayServiceImpl.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/WorkDayServiceImpl.java index 80241a5a2e..2db11324a7 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/WorkDayServiceImpl.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/WorkDayServiceImpl.java @@ -3,14 +3,13 @@ package com.epmet.service.impl; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.utils.DateUtils; -import com.epmet.commons.tools.utils.DateUtils; import com.epmet.constant.ProjectConstant; import com.epmet.dao.CalenderDao; import com.epmet.dto.form.CostDayFormDTO; import com.epmet.dto.form.TimestampIntervalFormDTO; import com.epmet.dto.form.WorkDayFormDTO; -import com.epmet.dto.result.CostDayResultDTO; import com.epmet.dto.form.WorkMinuteFormDTO; +import com.epmet.dto.result.CostDayResultDTO; import com.epmet.dto.result.WorkDayResultDTO; import com.epmet.entity.CalenderEntity; import com.epmet.service.WorkDayService; @@ -119,7 +118,9 @@ public class WorkDayServiceImpl implements WorkDayService { @Override public Map workMinutes(WorkMinuteFormDTO param) { List params = param.getTimeList(); - if(CollectionUtils.isEmpty(params)) return null; + if(CollectionUtils.isEmpty(params)) { + return null; + } Map result = new LinkedHashMap<>(); //默认非精准计算 if(StringUtils.isBlank(param.getIfPrecise()) || !StringUtils.equals(ProjectConstant.PRECISE_CALCULATION,param.getIfPrecise())){ @@ -192,7 +193,9 @@ public class WorkDayServiceImpl implements WorkDayService { private Integer calculateImpreciseDetentionMinutes(Date left, Date right){ if(null == left){ logger.error("计算工作日,传入的开始日期为空!");return null;} //给右区间赋值,默认当前时间 - if(null == right || right.compareTo(left) < NumConstant.ZERO) right = new Date(); + if(null == right || right.compareTo(left) < NumConstant.ZERO) { + right = new Date(); + } List list = calenderDao.selectByStartAndEnd(format.format(left),format.format(right)); if(!CollectionUtils.isEmpty(list)){ @@ -204,10 +207,14 @@ public class WorkDayServiceImpl implements WorkDayService { //集合中有两个元素以上,说明两个时间存在跨度 else{ int costMin = NumConstant.ZERO; - if(NumConstant.TWO == list.size()) return costMin; - for(int index = NumConstant.ZERO ; index < list.size() ; index++) - if(StringUtils.equals(ProjectConstant.DAY_TYPE_WORK,list.get(index).getType())) + if(NumConstant.TWO == list.size()) { + return costMin; + } + for(int index = NumConstant.ZERO ; index < list.size() ; index++) { + if(StringUtils.equals(ProjectConstant.DAY_TYPE_WORK,list.get(index).getType())) { costMin += NumConstant.TWENTY_FOUR * NumConstant.SIXTY; + } + } return costMin; } @@ -228,15 +235,17 @@ public class WorkDayServiceImpl implements WorkDayService { private Integer calculateDetentionMinutes(Date left ,Date right){ if(null == left){ logger.error("计算工作日,传入的开始日期为空!");return null;} //给右区间赋值,默认当前时间 - if(null == right || right.compareTo(left) < NumConstant.ZERO) right = new Date(); + if(null == right || right.compareTo(left) < NumConstant.ZERO) { + right = new Date(); + } List list = calenderDao.selectByStartAndEnd(format.format(left),format.format(right)); if(!CollectionUtils.isEmpty(list)){ //集合中只有一个元素,说明两个时间在同一天 if(list.size() == NumConstant.ONE){ - if(ProjectConstant.DAY_TYPE_WORK.equals(list.get(NumConstant.ZERO).getType())) + if(ProjectConstant.DAY_TYPE_WORK.equals(list.get(NumConstant.ZERO).getType())) { return (int)((right.getTime() - left.getTime())/NumConstant.ONE_THOUSAND/NumConstant.SIXTY); - else { + } else { logger.warn("计算工作日,传入的起始时间都在同一天且是在节假日,开始时间:{},结束时间:{},节日类型:{}(1工作日、2周末、3、节假日)",left,right); return NumConstant.ZERO; } @@ -261,12 +270,16 @@ public class WorkDayServiceImpl implements WorkDayService { LocalDateTime initialTime = LocalDateTime.ofInstant(right.toInstant(), ZoneId.systemDefault()) .withHour(NumConstant.ZERO).withMinute(NumConstant.ZERO).withSecond(NumConstant.ZERO).withNano(NumConstant.ZERO); //ChronoUnit日期枚举类,between方法计算两个时间对象之间的时间量 - costMin += ChronoUnit.SECONDS.between(localDateTime, initialTime)/NumConstant.SIXTY; + costMin += ChronoUnit.SECONDS.between(initialTime, localDateTime)/NumConstant.SIXTY; + } + if(NumConstant.TWO == list.size()) { + return costMin; } - if(NumConstant.TWO == list.size()) return costMin; - for(int index = NumConstant.ONE ; index < list.size() - NumConstant.ONE ; index++) - if(StringUtils.equals(ProjectConstant.DAY_TYPE_WORK,list.get(index).getType())) + for(int index = NumConstant.ONE ; index < list.size() - NumConstant.ONE ; index++) { + if(StringUtils.equals(ProjectConstant.DAY_TYPE_WORK,list.get(index).getType())) { costMin += NumConstant.TWENTY_FOUR * NumConstant.SIXTY; + } + } return costMin; } @@ -290,7 +303,9 @@ public class WorkDayServiceImpl implements WorkDayService { if(null == left){ logger.error("计算工作日,传入的开始日期为空!");return null;} if(null == start || null == end){start = "9:00:00"; end = "17:00:00";} //给右区间赋值,默认当前时间 - if(null == right || right.compareTo(left) < NumConstant.ZERO) right = new Date(); + if(null == right || right.compareTo(left) < NumConstant.ZERO) { + right = new Date(); + } //自定义起始时间 String standardStartDateStr = format.format(left).concat(" ").concat(start); //自定义截至时间 @@ -359,10 +374,14 @@ public class WorkDayServiceImpl implements WorkDayService { costMin += delta_T; } } - if(NumConstant.TWO == list.size()) return costMin; - for(int index = NumConstant.ONE ; index < list.size() - NumConstant.ONE ; index++) - if(StringUtils.equals(ProjectConstant.DAY_TYPE_WORK,list.get(index).getType())) + if(NumConstant.TWO == list.size()) { + return costMin; + } + for(int index = NumConstant.ONE ; index < list.size() - NumConstant.ONE ; index++) { + if(StringUtils.equals(ProjectConstant.DAY_TYPE_WORK,list.get(index).getType())) { costMin += delta_T * NumConstant.SIXTY; + } + } return costMin; } diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/CalenderDao.xml b/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/CalenderDao.xml index 13a7758445..ca6eea46a8 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/CalenderDao.xml +++ b/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/CalenderDao.xml @@ -60,6 +60,7 @@ DEL_FLAG = '0' AND QUERY_DATE BETWEEN #{begin} AND #{end} + order by query_date asc \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/ActInfoDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/ActInfoDTO.java index b747b77985..10180e0222 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/ActInfoDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/ActInfoDTO.java @@ -44,6 +44,27 @@ public class ActInfoDTO implements Serializable { */ private String customerId; + /** + * 活动类型爱心活动heart 联建活动party + */ + private String actType; + + /** + * 联建单位 + */ + private String unitId; + private String unitName; + /** + * 活动目标 + */ + private String target; + + /** + * 服务事项 + */ + private String serviceMatter; + private String serviceMatterName; + /** * 活动标题 */ diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPartyActivityDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPartyActivityDTO.java index a8c770f8e9..81edd97c20 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPartyActivityDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcPartyActivityDTO.java @@ -58,6 +58,11 @@ public class IcPartyActivityDTO implements Serializable { */ private String pids; + /** + * act_info表ID + */ + private String actId; + /** * 单位ID */ diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcUserDemandRecDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcUserDemandRecDTO.java index b070d80073..30b24a8498 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcUserDemandRecDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcUserDemandRecDTO.java @@ -145,6 +145,11 @@ public class IcUserDemandRecDTO implements Serializable { */ private Boolean evaluateFlag; + /** + * 奖励积分 + */ + private Integer awardPoint; + /** * 删除标识:0.未删除 1.已删除 */ @@ -175,4 +180,6 @@ public class IcUserDemandRecDTO implements Serializable { */ private Date updatedTime; + private String serverId; + private String serviceType; } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcUserDemandSatisfactionDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcUserDemandSatisfactionDTO.java index c28b702723..e1ec95519d 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcUserDemandSatisfactionDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcUserDemandSatisfactionDTO.java @@ -17,11 +17,11 @@ package com.epmet.dto; -import java.io.Serializable; -import java.util.Date; import lombok.Data; +import java.io.Serializable; import java.math.BigDecimal; +import java.util.Date; /** * 居民需求评价记录表 @@ -69,6 +69,11 @@ public class IcUserDemandSatisfactionDTO implements Serializable { */ private BigDecimal score; + /** + * 评价时,填写的完成情况 + */ + private String remark; + /** * 删除标识:0.未删除 1.已删除 */ diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcUserDemandServiceDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcUserDemandServiceDTO.java index e3196e2b02..956ee1065e 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcUserDemandServiceDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/IcUserDemandServiceDTO.java @@ -17,9 +17,10 @@ package com.epmet.dto; +import lombok.Data; + import java.io.Serializable; import java.util.Date; -import lombok.Data; /** @@ -58,6 +59,11 @@ public class IcUserDemandServiceDTO implements Serializable { */ private String serverId; + /** + * 服务方姓名 + */ + private String serverName; + /** * 实际服务开始时间 */ @@ -69,7 +75,7 @@ public class IcUserDemandServiceDTO implements Serializable { private Date serviceEndTime; /** - * 完成情况 + * 此列暂时没有用。完成情况在ic_user_demand_satisfaction.remark */ private String finishDesc; diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/LatestActInfoDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/LatestActInfoDTO.java index 0d0824fdfd..e73c466837 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/LatestActInfoDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/LatestActInfoDTO.java @@ -179,6 +179,26 @@ public class LatestActInfoDTO implements Serializable { */ private Boolean auditSwitch; + /** + * 活动类型爱心活动heart 联建活动party + */ + private String actType; + + /** + * 联建单位 + */ + private String unitId; + + /** + * 活动目标 + */ + private String target; + + /** + * 服务事项 + */ + private String serviceMatter; + /** * 乐观锁 */ diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/VolunteerInfoDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/VolunteerInfoDTO.java index b309d9a7d5..35d451f2a0 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/VolunteerInfoDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/VolunteerInfoDTO.java @@ -17,9 +17,10 @@ package com.epmet.dto; +import lombok.Data; + import java.io.Serializable; import java.util.Date; -import lombok.Data; /** @@ -97,4 +98,12 @@ public class VolunteerInfoDTO implements Serializable { * 志愿者注册,所在网格名称 */ private String gridName; + /** + * 网格所属的组织id + */ + private String pid; + /** + * 网格的所有上级 + */ + private String pids; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/AddSocietyOrgFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/AddSocietyOrgFormDTO.java index a1a12c71e6..1217c647c5 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/AddSocietyOrgFormDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/AddSocietyOrgFormDTO.java @@ -17,11 +17,13 @@ package com.epmet.dto.form; +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; import java.io.Serializable; import java.util.Date; @@ -73,11 +75,13 @@ public class AddSocietyOrgFormDTO implements Serializable { /** * 起始服务时间 */ + @NotNull(message = "起始服务时间不能为空", groups = { AddSocietyOrgFormDTO.Add.class }) @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private Date serviceStartTime; /** * 终止服务时间 */ + @NotNull(message = "终止服务时间不能为空", groups = { AddSocietyOrgFormDTO.Add.class }) @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private Date serviceEndTime; /** @@ -100,6 +104,6 @@ public class AddSocietyOrgFormDTO implements Serializable { //token中userId private String staffId; - public interface Add {} + public interface Add extends CustomerClientShowGroup {} } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/AutoEvaluateDemandFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/AutoEvaluateDemandFormDTO.java new file mode 100644 index 0000000000..2df4640227 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/AutoEvaluateDemandFormDTO.java @@ -0,0 +1,20 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import java.io.Serializable; + + +/** + * 自动评价参数 + */ +@Data +public class AutoEvaluateDemandFormDTO implements Serializable { + private String customerId; + private Integer exceedValue; + /** + * day + * minute + */ + private String type; +} diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/GetListSocietyOrgFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/GetListSocietyOrgFormDTO.java index c04a76dc77..9f0357a1d7 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/GetListSocietyOrgFormDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/GetListSocietyOrgFormDTO.java @@ -54,5 +54,7 @@ public class GetListSocietyOrgFormDTO implements Serializable { private String staffId; //token中userId所属组织的pid private String pids; + //token中userId所属组织Id + private String agencyId; } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/StaffCancelFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/CancelDemandFormDTO.java similarity index 67% rename from epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/StaffCancelFormDTO.java rename to epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/CancelDemandFormDTO.java index 09d920f55c..3240a74515 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/StaffCancelFormDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/CancelDemandFormDTO.java @@ -4,8 +4,11 @@ import lombok.Data; import javax.validation.constraints.NotBlank; +/** + * 取消需求入参dto + */ @Data -public class StaffCancelFormDTO { +public class CancelDemandFormDTO { public interface AddUserInternalGroup {} @NotBlank(message = "需求id不能为空",groups = AddUserInternalGroup.class) private String demandRecId; @@ -14,4 +17,12 @@ public class StaffCancelFormDTO { private String userId; @NotBlank(message = "customerId不能为空", groups = AddUserInternalGroup.class) private String customerId; + + /** + * staff:pc工作人员取消 + * resi:居民端用户主动需求 + * 代码里写死的UserDemandConstant.RESI/STAFF + */ + private String userType; } + diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/DemandAddFromDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/DemandAddFromDTO.java index f3a1c9ae0c..a9ae2fad05 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/DemandAddFromDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/DemandAddFromDTO.java @@ -10,6 +10,9 @@ import javax.validation.constraints.NotNull; import java.io.Serializable; import java.util.Date; +/** + * pc录入需求入参 + */ @Data public class DemandAddFromDTO implements Serializable { diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/DemandDetailFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/DemandDetailFormDTO.java index 25ec764f3f..8e24df4191 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/DemandDetailFormDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/DemandDetailFormDTO.java @@ -5,6 +5,10 @@ import lombok.Data; import javax.validation.constraints.NotBlank; import java.io.Serializable; +/** + * 需求大厅-需求详情入参 + * 我的需求-需求详情入参 + */ @Data public class DemandDetailFormDTO implements Serializable { private static final long serialVersionUID = 514538389753713095L; diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/EvaluateDemandFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/EvaluateDemandFormDTO.java new file mode 100644 index 0000000000..119061edee --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/EvaluateDemandFormDTO.java @@ -0,0 +1,47 @@ +package com.epmet.dto.form.demand; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 居民端-需求-服务评价入参 + */ +@Data +public class EvaluateDemandFormDTO implements Serializable { + public interface AddUserInternalGroup { + } + public interface ShowGroup extends CustomerClientShowGroup { + } + + + @NotBlank(message = "需求id不能为空", groups = AddUserInternalGroup.class) + private String demandRecId; + + @NotBlank(message = "服务id不能为空", groups = AddUserInternalGroup.class) + private String serviceId; + + @NotBlank(message = "完成结果不能为空", groups = ShowGroup.class) + private String finishResult; + + @Length(max = 1000,message = "最多输入1000字",groups = {ShowGroup.class}) + private String finishDesc; + + @NotNull(message = "得分不能为空", groups = ShowGroup.class) + private BigDecimal score; + + + + @NotBlank(message = "userId不能为空", groups = AddUserInternalGroup.class) + private String userId; + @NotBlank(message = "customerId不能为空", groups = AddUserInternalGroup.class) + private String customerId; + // 政府端:gov、居民端:resi、运营端:oper + @NotBlank(message = "app不能为空", groups = AddUserInternalGroup.class) + private String app; +} diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/FinishStaffFromDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/FinishStaffFromDTO.java index 06ca8a93fc..39f04f2e59 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/FinishStaffFromDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/FinishStaffFromDTO.java @@ -16,27 +16,31 @@ public class FinishStaffFromDTO implements Serializable { public interface AddUserInternalGroup { } - public interface AddUserShowGroup extends CustomerClientShowGroup { + public interface IcShowGroup extends CustomerClientShowGroup { + } + public interface ResiShowGroup extends CustomerClientShowGroup { } @NotBlank(message = "需求id不能为空", groups = AddUserInternalGroup.class) private String demandRecId; - @NotBlank(message = "服务id不能为空", groups = AddUserShowGroup.class) + @NotBlank(message = "服务id不能为空", groups = AddUserInternalGroup.class) private String serviceId; - @NotNull(message = "实际服务开始不能为空", groups = AddUserShowGroup.class) + @NotNull(message = "实际服务开始不能为空", groups = {IcShowGroup.class,ResiShowGroup.class}) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date serviceStartTime; - @NotNull(message = "实际服务结束不能为空", groups = AddUserShowGroup.class) + @NotNull(message = "实际服务结束不能为空", groups = {IcShowGroup.class,ResiShowGroup.class}) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date serviceEndTime; - @NotBlank(message = "完成结果不能为空", groups = AddUserShowGroup.class) + // @NotBlank(message = "完成结果不能为空", groups = IcShowGroup.class) private String finishResult; + + // @Length(max = 1000,message = "最多输入1000字",groups = {IcShowGroup.class}) private String finishDesc; - @NotNull(message = "得分不能为空", groups = AddUserShowGroup.class) + // @NotNull(message = "得分不能为空", groups = IcShowGroup.class) private BigDecimal score; @@ -45,4 +49,14 @@ public class FinishStaffFromDTO implements Serializable { private String userId; @NotBlank(message = "customerId不能为空", groups = AddUserInternalGroup.class) private String customerId; + /** + * pc完成情况:完成+评价 UserDemandConstant.FINISH_AND_EVALUATE + * 居民端完成:UserDemandConstant.FINISHED + */ + private String type; + /** + * pc完成情况:UserDemandConstant.STAFF + * 居民端完成:UserDemandConstant.RESI + */ + private String userType; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/ListHallFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/ListHallFormDTO.java new file mode 100644 index 0000000000..8ffcd0589d --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/ListHallFormDTO.java @@ -0,0 +1,34 @@ +package com.epmet.dto.form.demand; + + +import com.epmet.commons.tools.dto.form.PageFormDTO; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * * 居民端-需求大厅(未处理、处理中、已完成)入参 + */ +@Data +public class ListHallFormDTO extends PageFormDTO implements Serializable { + public interface AddUserInternalGroup {} + + /** + * 当前所在网格id + */ + @NotBlank(message = "gridId不能为空", groups = AddUserInternalGroup.class) + private String gridId; + + /** + * 未处理:unprocessed;处理中:processing;已完成:finished + */ + @NotBlank(message = "type不能为空,未处理:unprocessed;处理中:processing;已完成:finished", groups = AddUserInternalGroup.class) + private String type; + + // 以下入参从token中获取 + @NotBlank(message = "tokenDto获取userId不能为空", groups = AddUserInternalGroup.class) + private String currentUserId; + @NotBlank(message = "tokenDto获取customerId不能为空", groups = AddUserInternalGroup.class) + private String customerId; +} diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/PageListAnalysisFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/PageListAnalysisFormDTO.java index 464d1062a8..2eb55979b1 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/PageListAnalysisFormDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/PageListAnalysisFormDTO.java @@ -49,4 +49,8 @@ public class PageListAnalysisFormDTO implements Serializable { private Boolean pageFlag; + /** + * 数据分析-服务措施分析排除,已取消 + */ + private String excludeStatus; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/ReportDemandFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/ReportDemandFormDTO.java new file mode 100644 index 0000000000..267254bc3b --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/ReportDemandFormDTO.java @@ -0,0 +1,112 @@ +package com.epmet.dto.form.demand; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.Date; + + +/** + * 居民端-上报需求,或者修改需求 + */ +@Data +public class ReportDemandFormDTO implements Serializable { + private static final long serialVersionUID = -2931148629441558468L; + + public interface Add extends CustomerClientShowGroup { + } + + public interface AddInternalGroup { + } + + public interface Update extends CustomerClientShowGroup { + } + + public interface UpdateInternalGroup { + } + + @NotBlank(message = "需求id不能为空",groups = UpdateInternalGroup.class) + private String demandRecId; + + @NotBlank(message = "customerId不能为空", groups = {AddInternalGroup.class, UpdateInternalGroup.class}) + private String customerId; + + /** + * 网格id + */ + @NotBlank(message = "所属网格不能为空",groups = {AddInternalGroup.class}) + private String gridId; + + /** + * 需求内容1000字 + */ + @NotBlank(message = "需求内容不能为空", groups = {Add.class, Update.class}) + @Length(max = 1000, message = "需求内容至多输入1000字", groups = {Add.class, Update.class}) + private String content; + + /** + * 二级需求分类编码 + */ + @NotBlank(message = "需求类别不能为空",groups = Add.class) + private String categoryCode; + + /** + * 父级需求分类编码 + */ + @NotBlank(message = "父级分类不能为空",groups = Add.class) + private String parentCode; + + + /** + * 希望服务时间 + */ + @NotNull(message = "服务时间不能为空",groups = {Add.class, Update.class}) + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date wantServiceTime; + + /** + * 需求人:user.id或者ic_resi_user.id + */ + @NotBlank(message = "需求人不能为空",groups ={AddInternalGroup.class, UpdateInternalGroup.class}) + private String demandUserId; + + /** + * 需求人联系姓名 + */ + @NotBlank(message = "联系人不能为空",groups = {Add.class, Update.class}) + private String demandUserName; + + /** + * 需求人联系电话 + */ + @NotBlank(message = "联系电话不能为空",groups = {Add.class, Update.class}) + private String demandUserMobile; + + /** + * 服务地点,工作端指派默认居民居住房屋地址,居民端地图选择 + */ + @NotBlank(message = "服务地点不能为空",groups = {Add.class, Update.class}) + private String serviceLocation; + + /** + * 门牌号详细地址 + */ + @Length(max = 200, message = "门牌号至多输入200字", groups = {Add.class, Update.class}) + private String locationDetail; + + /** + * 经度,需求人是ic的居民时,取所住楼栋的中心点位 + */ + private String longitude; + + /** + * 纬度,需求人是ic的居民时,取所住楼栋的中心点位 + */ + private String latitude; + +} diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/ResiClientMyDemandFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/ResiClientMyDemandFormDTO.java new file mode 100644 index 0000000000..dad278f438 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/ResiClientMyDemandFormDTO.java @@ -0,0 +1,56 @@ +package com.epmet.dto.form.demand; + +import com.epmet.commons.tools.dto.form.PageFormDTO; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 居民端-我的需求列表入参 + */ +@Data +public class ResiClientMyDemandFormDTO extends PageFormDTO implements Serializable { + /*List userIds=new ArrayList<>(); + userIds.add(formDTO.getIcResiUserId()); + if(CollectionUtils.isNotEmpty(formDTO.getEpmetUserIdList())){ + userIds.addAll(formDTO.getEpmetUserIdList()); + } + formDTO.setUserIds(userIds); + //2、小程序内自己上报+赋能平台待录入的 + PageInfo pageInfo = PageHelper.startPage(formDTO.getPageNo(), + formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.selectUserDemand(formDTO)); + List list = pageInfo.getList(); + if (CollectionUtils.isNotEmpty(list)) { + // 1、状态字典 + Result> statusRes = adminOpenFeignClient.dictMap(DictTypeEnum.USER_DEMAND_STATUS.getCode()); + Map statusMap = statusRes.success() && MapUtils.isNotEmpty(statusRes.getData()) ? statusRes.getData() : new HashMap<>(); + //2、查询分类名称 + List categoryCodes = list.stream().map(IcResiUserReportDemandRes::getCategoryCode).collect(Collectors.toList()); + List dictList = demandDictService.listByCodes(formDTO.getCustomerId(), categoryCodes); + Map dictMap = dictList.stream().collect(Collectors.toMap(IcResiDemandDictEntity::getCategoryCode, IcResiDemandDictEntity::getCategoryName)); + + for (IcResiUserReportDemandRes resDto : list) { + resDto.setStatusName(statusMap.containsKey(resDto.getStatus()) ? statusMap.get(resDto.getStatus()) : StrConstant.EPMETY_STR); + if (null != dictMap && dictMap.containsKey(resDto.getCategoryCode())) { + resDto.setCategoryName(dictMap.get(resDto.getCategoryCode())); + } + resDto.setFirstCategoryName(demandDictService.getCategoryName(formDTO.getCustomerId(),resDto.getFirstCategoryCode())); + } + }*/ + public interface AddUserInternalGroup {} + @NotBlank(message = "gridId不能为空",groups = AddUserInternalGroup.class) + private String gridId; + + /** + * 待处理:unprocessed;处理中:processing;已完成:finished;已取消:canceled + */ + @NotBlank(message = "type不能为空,待处理:unprocessed;处理中:processing;已完成:finished;已取消:canceled",groups = AddUserInternalGroup.class) + private String type; + + @NotBlank(message = "userId不能为空",groups = AddUserInternalGroup.class) + private String userId; + + @NotBlank(message = "customerId不能为空",groups = AddUserInternalGroup.class) + private String customerId; +} diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/TakeOrderFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/TakeOrderFormDTO.java new file mode 100644 index 0000000000..9672d8b457 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/TakeOrderFormDTO.java @@ -0,0 +1,21 @@ +package com.epmet.dto.form.demand; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 需求大厅-我要接单 + */ +@Data +public class TakeOrderFormDTO implements Serializable { + private static final long serialVersionUID = -2030750128789890382L; + public interface AddUserInternalGroup { + } + @NotBlank(message = "demandRecId不能为空", groups = AddUserInternalGroup.class) + private String demandRecId; + + @NotBlank(message = "tokenDto获取userId不能为空", groups = AddUserInternalGroup.class) + private String userId; +} diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/UserDemandRelFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/UserDemandRelFormDTO.java new file mode 100644 index 0000000000..82182b2440 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/UserDemandRelFormDTO.java @@ -0,0 +1,23 @@ +package com.epmet.dto.form.demand; + + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 当前用户与需求消息的关系 + */ +@Data +public class UserDemandRelFormDTO implements Serializable { + private static final long serialVersionUID = 948510931204329428L; + + public interface AddInternalGroup { + } + @NotBlank(message = "需求id不能为空",groups = AddInternalGroup.class) + private String demandRecId; + + @NotBlank(message = "userId不能为空",groups = AddInternalGroup.class) + private String userId; +} diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ResiVolunteerAuthenticateFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ResiVolunteerAuthenticateFormDTO.java index 0a42ede194..877abcb74c 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ResiVolunteerAuthenticateFormDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ResiVolunteerAuthenticateFormDTO.java @@ -17,80 +17,67 @@ import java.io.Serializable; public class ResiVolunteerAuthenticateFormDTO implements Serializable { private static final long serialVersionUID = 1L; - - //>>>>>>>>>>>>>>>>>校验分组开始>>>>>>>>>>>>>>>>>>>>> - /** - * 添加用户操作的内部异常分组 - * 出现错误会提示给前端7000错误码,返回信息为:服务器开小差... - */ public interface AddUserInternalGroup {} - - /** - * 添加用户操作的用户可见异常分组 - * 该分组用于校验需要返回给前端错误信息提示的列,需要继承CustomerClientShowGroup - * 返回错误码为8999,提示信息为DTO中具体的列的校验注解message的内容 - */ public interface AddUserShowGroup extends CustomerClientShowGroup {} - // <<<<<<<<<<<<<<<<<<<校验分组结束<<<<<<<<<<<<<<<<<<<<<<<< - /** * 用户id */ + @NotBlank(message = "tokenDto中获取userId为空", groups = {AddUserInternalGroup.class }) private String userId; /** * 客户id */ - @NotBlank(message = "客户id不能为空", groups = {AddUserShowGroup.class }) + @NotBlank(message = "tokenDto中获取customerId为空", groups = {AddUserInternalGroup.class }) private String customerId; /** * 姓 */ - @NotBlank(message = "姓不能为空", groups = {AddUserInternalGroup.class, AddUserShowGroup.class }) + @NotBlank(message = "姓不能为空", groups = {AddUserShowGroup.class }) private String surname; /** * 名 */ - @NotBlank(message = "名不能为空", groups = {AddUserInternalGroup.class, AddUserShowGroup.class }) + @NotBlank(message = "名不能为空", groups = {AddUserShowGroup.class }) private String name; /** * 性别(1男2女0未知) */ - @NotBlank(message = "性别不能为空", groups = {AddUserInternalGroup.class, AddUserShowGroup.class }) + @NotBlank(message = "性别不能为空", groups = {AddUserShowGroup.class }) private String gender; /** * 手机号 */ - @NotBlank(message = "手机号不能为空", groups = {AddUserInternalGroup.class, AddUserShowGroup.class }) + @NotBlank(message = "手机号不能为空", groups = {AddUserShowGroup.class }) private String mobile; /** * 身份证号码 */ - @NotBlank(message = "身份证号码不能为空", groups = {AddUserInternalGroup.class, AddUserShowGroup.class }) + @NotBlank(message = "身份证号码不能为空", groups = {AddUserShowGroup.class }) private String idNum; /** * 街道 */ - @NotBlank(message = "街道不能为空", groups = {AddUserInternalGroup.class, AddUserShowGroup.class }) + @NotBlank(message = "居住地址:街道不能为空", groups = {AddUserShowGroup.class }) private String street; /** * 小区名 */ - @NotBlank(message = "小区名不能为空", groups = {AddUserInternalGroup.class, AddUserShowGroup.class }) + @NotBlank(message = "居住地址:小区名不能为空", groups = {AddUserShowGroup.class }) private String district; /** * 楼栋单元 */ - @NotBlank(message = "楼栋单元不能为空", groups = {AddUserInternalGroup.class, AddUserShowGroup.class }) + @NotBlank(message = "居住地址:楼栋单元不能为空", groups = {AddUserShowGroup.class }) private String buildingAddress; /** @@ -101,13 +88,13 @@ public class ResiVolunteerAuthenticateFormDTO implements Serializable { /** * 昵称 */ - @NotBlank(message = "昵称不能为空", groups = {AddUserInternalGroup.class, AddUserShowGroup.class }) + @NotBlank(message = "昵称不能为空", groups = {AddUserInternalGroup.class}) private String nickname; /** * 头像 */ - @NotBlank(message = "头像不能为空", groups = {AddUserInternalGroup.class, AddUserShowGroup.class }) + @NotBlank(message = "头像不能为空", groups = {AddUserInternalGroup.class}) private String avatarUrl; /** diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/VolunteerCommonFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/VolunteerCommonFormDTO.java index c8893697a8..4a9973d735 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/VolunteerCommonFormDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/VolunteerCommonFormDTO.java @@ -14,12 +14,16 @@ import javax.validation.constraints.NotNull; @Data public class VolunteerCommonFormDTO { - public interface VolunteerPage { - } - - @NotBlank(message = "客户ID不能为空", groups = {VolunteerPage.class}) + /** + * 客户ID + */ private String customerId; + /** + * 组织ID + */ + private String agencyId; + private Integer pageNo = 0; private Integer pageSize = 20; diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/ActIdFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/ActIdFormDTO.java index 632b567c11..4ba08831e9 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/ActIdFormDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/ActIdFormDTO.java @@ -21,4 +21,5 @@ public class ActIdFormDTO implements Serializable { */ @NotBlank(message = "活动id不能为空", groups = { ActIdFormDTO.AddUserInternalGroup.class }) private String actId; + private String customerId; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/ActPreviewFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/ActPreviewFormDTO.java index 57166c22f1..78bd1a6cd5 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/ActPreviewFormDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/ActPreviewFormDTO.java @@ -23,4 +23,5 @@ public class ActPreviewFormDTO implements Serializable { */ @NotBlank(message = "活动草稿id不能为空", groups = {UserInternalGroup.class}) private String actDraftId; + private String customerId; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/DraftActInfoFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/DraftActInfoFormDTO.java index 1d128594ff..f00ebe792f 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/DraftActInfoFormDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/DraftActInfoFormDTO.java @@ -161,4 +161,24 @@ public class DraftActInfoFormDTO implements Serializable { */ private String sponsorTel; + /** + * 活动类型爱心活动heart 联建活动party + */ + private String actType = "heart"; + + /** + * 联建单位 + */ + private String unitId; + + /** + * 活动目标 + */ + private String target; + + /** + * 服务事项 + */ + private String serviceMatter; + } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/PublishActInfoFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/PublishActInfoFormDTO.java index fae068b230..ef1f3c3e19 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/PublishActInfoFormDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/PublishActInfoFormDTO.java @@ -25,6 +25,8 @@ public class PublishActInfoFormDTO implements Serializable { public interface AddUserInternalGroup { } + public interface AddPartyActivityGroup { + } public interface AddUserShowGroup extends CustomerClientShowGroup { } @@ -189,4 +191,27 @@ public class PublishActInfoFormDTO implements Serializable { */ @NotBlank(message = "联系电话不能为空", groups = {AddUserShowGroup.class}) private String sponsorTel; + + /** + * 活动类型爱心活动heart 联建活动party + */ + private String actType = "heart"; + + /** + * 联建单位 + */ + @NotBlank(message = "联建单位不能为空", groups = {AddPartyActivityGroup.class}) + private String unitId; + + /** + * 活动目标 + */ + @NotBlank(message = "活动目标不能为空", groups = {AddPartyActivityGroup.class}) + private String target; + + /** + * 服务事项 + */ + @NotBlank(message = "服务事项不能为空", groups = {AddPartyActivityGroup.class}) + private String serviceMatter; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/RePublishFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/RePublishFormDTO.java index dfd1aeed99..b093e9dcba 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/RePublishFormDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/work/RePublishFormDTO.java @@ -24,6 +24,8 @@ public class RePublishFormDTO implements Serializable { private static final long serialVersionUID = -959956652123514886L; public interface AddUserInternalGroup { } + public interface AddPartyActivityGroup { + } public interface AddUserShowGroup extends CustomerClientShowGroup { } @@ -195,4 +197,27 @@ public class RePublishFormDTO implements Serializable { */ @NotBlank(message = "联系电话不能为空", groups = {AddUserShowGroup.class}) private String sponsorTel; + + /** + * 活动类型爱心活动heart 联建活动party + */ + private String actType = "heart"; + + /** + * 联建单位 + */ + @NotBlank(message = "联建单位不能为空", groups = {AddPartyActivityGroup.class}) + private String unitId; + + /** + * 活动目标 + */ + @NotBlank(message = "活动目标不能为空", groups = {AddPartyActivityGroup.class}) + private String target; + + /** + * 服务事项 + */ + @NotBlank(message = "服务事项不能为空", groups = {AddPartyActivityGroup.class}) + private String serviceMatter; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/DemandCategoryResDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/DemandCategoryResDTO.java new file mode 100644 index 0000000000..c03c898eb6 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/DemandCategoryResDTO.java @@ -0,0 +1,23 @@ +package com.epmet.dto.result.demand; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + + +/** + * 1、居民端-我有需求,分类列表发布餐(可用) + * 2、居民端-我有需求,最近预约返参 + */ +@Data +public class DemandCategoryResDTO implements Serializable { + private String categoryId; + private String categoryCode; + private String parentCode; + private String categoryName; + @JsonIgnore + private String customerId; + private List children; +} diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/DemandDataDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/DemandDataDTO.java index f5ca265feb..5153d91eed 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/DemandDataDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/DemandDataDTO.java @@ -5,6 +5,9 @@ import lombok.Data; import java.io.Serializable; import java.util.List; +/** + * 数据分析-个人档案-需求详情,研判分析的 分类,以及分类下的需求 + */ @Data public class DemandDataDTO implements Serializable { private String firstCategoryCode; diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/DemandDetailResDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/DemandDetailResDTO.java new file mode 100644 index 0000000000..cad6a2c4dd --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/DemandDetailResDTO.java @@ -0,0 +1,121 @@ +package com.epmet.dto.result.demand; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 需求大厅-需求详情 + * 我的需求-需求详情 todo + */ +@Data +public class DemandDetailResDTO implements Serializable { + + private String demandRecId; + @JsonIgnore + private String categoryCode; + @JsonIgnore + private String parentCode; + /** + * 二级分类名称 + */ + private String categoryName; + + /** + * 奖励积分 + */ + private Integer awardPoint; + + /** + * 需求内容 + */ + private String content; + + /** + * 服务要求-服务时间:yyyy-MM-dd HH:mm + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date wantServiceTime; + + /** + * 服务要求-联系人(需求人)名称 + */ + private String demandUserName; + + /** + * 服务要求-联系人(需求人)电话 + */ + private String demandUserMobile; + + /** + * 服务地点 + */ + private String serviceAddress; + + // 服务地点,工作端指派默认居民居住房屋地址,居民端地图选择 + private String serviceLocation; + // 门牌号详细地址 + private String locationDetail; + // 经度,需求人是ic的居民时,取所住楼栋的中心点位 + private String longitude; + // 纬度,需求人是ic的居民时,取所住楼栋的中心点位 + private String latitude; + + + + /** + * 实际服务开始时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date serviceStartTime; + + /** + * 实际服务结束时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date serviceEndTime; + + /** + * 得分可为半星 + */ + private BigDecimal score; + + /** + * 完成结果:已解决 resolved,未解决 unresolved + + */ + private String finishResult; + + /** + * 完成情况 + */ + private String finishDesc; + + /** + * 待处理:pending;已取消canceled;已派单:assigned;已接单:have_order;已完成:finished + */ + private String status; + + /** + * 1:已评价;0:未评价;评价后ic_user_satisfaction表有记录 + */ + private Boolean evaluateFlag; + + /** + * 服务记录主键 + */ + private String serviceId; + @JsonIgnore + private String serverId; + // 以下几个返参在我的需求详情中返回: + private String serviceType; + private String serviceUserName; + private String serviceUserMobile; + private String serviceUnitName; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date cancelTime; +} diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/DemandHallResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/DemandHallResultDTO.java new file mode 100644 index 0000000000..407767d6a2 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/DemandHallResultDTO.java @@ -0,0 +1,79 @@ +package com.epmet.dto.result.demand; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 居民端-需求大厅(未处理、处理中、已完成)返参DTO + * 返参DTO + */ +@Data +public class DemandHallResultDTO implements Serializable { + /** + * 需求id + */ + private String demandRecId; + + /** + * 分类编码 + */ + @JsonIgnore + private String categoryCode; + + /** + * 父级分类编码 + */ + @JsonIgnore + private String parentCode; + + /** + * 服务事项,实际就是需求分类二级分类名字 + */ + private String categoryName; + + /** + * 服务时间,yyyy-MM-dd HH:mm + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8") + private Date wantServiceTime; + + /** + * 服务地点 + */ + private String serviceAddress; + + /** + * 奖励积分 + */ + private Integer awardPoint; + + /** + * 需求人名字 + */ + private String demandUserName; + + /** + * 需求人联系电话 + */ + private String demandUserMobile; + + /** + * 得分可为半星 + */ + private BigDecimal score; + + /** + * 待处理:pending;已取消canceled;已派单:assigned;已接单:have_order;已完成:finished + */ + private String status; + + /** + * 1:已评价;0:未评价;评价后ic_user_satisfaction表有记录 + */ + private Boolean evaluateFlag; +} diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/DemandPageResDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/DemandPageResDTO.java index 5b2a12c529..4f39edf676 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/DemandPageResDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/DemandPageResDTO.java @@ -6,6 +6,9 @@ import java.io.Serializable; import java.math.BigDecimal; import java.util.List; +/** + * 需求分类:列表返参 + */ @Data public class DemandPageResDTO implements Serializable { private String customerId; diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/DemandRecResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/DemandRecResultDTO.java index e7b673d22f..c235915430 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/DemandRecResultDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/DemandRecResultDTO.java @@ -121,4 +121,22 @@ public class DemandRecResultDTO implements Serializable { private String icResiUserId; private String epmetUserId; + + /** + * 奖励积分 + */ + private Integer awardPoint; + + /** + * 服务地点 + */ + private String serviceAddress; + // 服务地点,工作端指派默认居民居住房屋地址,居民端地图选择 + private String serviceLocation; + // 门牌号详细地址 + private String locationDetail; + // 经度,需求人是ic的居民时,取所住楼栋的中心点位 + private String longitude; + // 纬度,需求人是ic的居民时,取所住楼栋的中心点位 + private String latitude; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/FinishResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/FinishResultDTO.java index 96d03b9c2d..6eae50568c 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/FinishResultDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/FinishResultDTO.java @@ -6,10 +6,34 @@ import java.io.Serializable; /** * 完成需求时,是否需要计算 区域化党建单位的满意度 - * */ @Data public class FinishResultDTO implements Serializable { - private Boolean sendCalStatisfaction; - private String partyUnitId; + /** + * 服务方id:可以值区域化党建单位id、也可以是社会组织、社区自组织id、爱心互助的志愿者用户id + */ + private String serverId; + /** + * 服务方类型:志愿者:volunteer;社会组织:social_org;社区自组织:community_org;区域党建单位:party_unit; + */ + private String serviceType; + /** + * 奖励积分:只有服务方是志愿者且积分大于0时,才发放积分 + */ + private Integer awardPoint; + + /** + * 1:已评价;0:未评价;评价后ic_user_satisfaction表有记录 + */ + private Boolean evaluateFlag; + /** + * 完成了XXX的需求 + */ + private String remark; + private String firstCategoryName; + private String categoryCode; + /** + * 完成结果:已解决 resolved,未解决 unresolved + */ + private String finishResult; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/IcResiUserReportDemandRes.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/IcResiUserReportDemandRes.java index 19757a671c..4dd722fb59 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/IcResiUserReportDemandRes.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/IcResiUserReportDemandRes.java @@ -7,6 +7,10 @@ import lombok.Data; import java.io.Serializable; import java.util.Date; +/** + * 数据分析-个人档案,居民需求列表table + * 数据分析-个人档案,需求详情,研判分析-需求列表 + */ @Data public class IcResiUserReportDemandRes implements Serializable { private static final long serialVersionUID = 7043350476644105434L; diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/OptionDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/OptionDTO.java index c0cfd3b48d..71f1a0edb0 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/OptionDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/OptionDTO.java @@ -9,4 +9,5 @@ public class OptionDTO implements Serializable { private static final long serialVersionUID = -6722370308097497466L; private String label; private String value; + private Integer awardPoint; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/ResiClientMyDemandResDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/ResiClientMyDemandResDTO.java new file mode 100644 index 0000000000..f606c04f5e --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/ResiClientMyDemandResDTO.java @@ -0,0 +1,74 @@ +package com.epmet.dto.result.demand; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 居民端-我的需求列表入参 + */ +@Data +public class ResiClientMyDemandResDTO implements Serializable { + private String demandRecId; + @JsonIgnore + private String categoryCode; + @JsonIgnore + private String parentCode; + /** + * 二级分类名称 + */ + private String categoryName; + + /** + * 服务要求-服务时间:yyyy-MM-dd HH:mm + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date wantServiceTime; + + /** + * 服务地点 + */ + private String serviceAddress; + /** + * 根据服务方类型找名字 + */ + //服务方类型:服务方类型:志愿者:volunteer;社会组织:social_org;社区自组织:community_org;区域党建单位:party_unit; + @JsonIgnore + private String serviceType; + @JsonIgnore + private String serverId; + + /** + * 服务方负责人姓名,如果是志愿者返回志愿者的姓名 + */ + private String serviceUserName; + /** + * 服务方负责人联系电话,如果是志愿者返回志愿者的注册手机号 + */ + private String serviceUserMobile; + /** + * 社会组织名 + * 社区自组织名 + * 区域党建单位名 + */ + private String serviceUnitName; + /** + * 1:已评价;0:未评价;评价后ic_user_satisfaction表有记录 + */ + private Boolean evaluateFlag; + /** + * 得分可为半星 + */ + private BigDecimal score; + /** + * 待处理:pending;已取消canceled;已派单:assigned;已接单:have_order;已完成:finished + */ + private String status; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date cancelTime; +} diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/TakeOrderResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/TakeOrderResultDTO.java new file mode 100644 index 0000000000..a16bc5c648 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/TakeOrderResultDTO.java @@ -0,0 +1,15 @@ +package com.epmet.dto.result.demand; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 需求大厅-我要接单 + */ +@Data +public class TakeOrderResultDTO implements Serializable { + private static final long serialVersionUID = -4390598017224563310L; + private Boolean isVolunteer; + private String serviceId; +} diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/UserDemandRelResDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/UserDemandRelResDTO.java new file mode 100644 index 0000000000..9c7808dd81 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/UserDemandRelResDTO.java @@ -0,0 +1,18 @@ +package com.epmet.dto.result.demand; + + +import lombok.AllArgsConstructor; +import lombok.Data; + +import java.io.Serializable; + +/** + * 当前用户与需求消息的关系 + */ +@AllArgsConstructor +@Data +public class UserDemandRelResDTO implements Serializable { + private static final long serialVersionUID = -9007483306143283653L; + // 需求发布人:publisher ;服务人:server + private String identity; +} diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiActDetailResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiActDetailResultDTO.java index 4ee734f45e..a232ebdf33 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiActDetailResultDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiActDetailResultDTO.java @@ -175,4 +175,25 @@ public class ResiActDetailResultDTO implements Serializable { * 取消活动的时间(yyyy-MM-dd HH:mm) */ private String cancelTime; + + /** + * 活动类型爱心活动heart 联建活动party + */ + private String actType; + + /** + * 联建单位 + */ + private String unitId; + private String unitName; + /** + * 活动目标 + */ + private String target; + + /** + * 服务事项 + */ + private String serviceMatter; + private String serviceMatterName; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiActInfoResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiActInfoResultDTO.java index c842cef5e4..01d783e0bd 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiActInfoResultDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiActInfoResultDTO.java @@ -87,4 +87,9 @@ public class ResiActInfoResultDTO implements Serializable { *用户报名状态(no_signed_up: 未报名,signed_up: 已报名) */ private String signupFlag; + + /** + * 活动类型 爱心活动heart 联建活动party + */ + private String actType; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiInProgressActResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiInProgressActResultDTO.java index b6905711fe..055e35663d 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiInProgressActResultDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiInProgressActResultDTO.java @@ -41,4 +41,9 @@ public class ResiInProgressActResultDTO implements Serializable { * 标题 */ private String title; + + /** + * 活动类型 爱心活动heart 联建活动party + */ + private String actType; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiLatestActResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiLatestActResultDTO.java index 1bf6b8124e..c0a4aadbf0 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiLatestActResultDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiLatestActResultDTO.java @@ -82,4 +82,9 @@ public class ResiLatestActResultDTO implements Serializable { * 活动状态:(报名中:signing_up;已报满:enough;截止报名: end_sign_up; 已开始: in_progress;) */ private String actCurrentState; + + /** + * 活动类型 爱心活动heart 联建活动party + */ + private String actType; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiLookBackActResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiLookBackActResultDTO.java index fc7d7d39e7..986bcb06c5 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiLookBackActResultDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiLookBackActResultDTO.java @@ -66,4 +66,9 @@ public class ResiLookBackActResultDTO implements Serializable { * 活动状态:(已结束:finished;) */ private String actCurrentState; + + /** + * 活动类型 爱心活动heart 联建活动party + */ + private String actType; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiMyActResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiMyActResultDTO.java index b477f6d513..5eb0d2b8a4 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiMyActResultDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ResiMyActResultDTO.java @@ -82,4 +82,9 @@ public class ResiMyActResultDTO implements Serializable { * 活动当前状态(审核中auditing,审核通过passed,审核不通过refused,已结束canceld) */ private String actCurrentState; + + /** + * 活动类型 爱心活动heart 联建活动party + */ + private String actType; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/ActPreviewResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/ActPreviewResultDTO.java index eb6f07693c..5e3df9d139 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/ActPreviewResultDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/ActPreviewResultDTO.java @@ -89,4 +89,25 @@ public class ActPreviewResultDTO implements Serializable { * 活动详情 */ private List actContent; + + /** + * 活动类型爱心活动heart 联建活动party + */ + private String actType; + + /** + * 联建单位 + */ + private String unitId; + private String unitName; + /** + * 活动目标 + */ + private String target; + + /** + * 服务事项 + */ + private String serviceMatter; + private String serviceMatterName; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/CanceledActDetailResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/CanceledActDetailResultDTO.java index 3a19c7d4d4..3da7fade52 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/CanceledActDetailResultDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/CanceledActDetailResultDTO.java @@ -147,4 +147,25 @@ public class CanceledActDetailResultDTO implements Serializable { * 活动签到打卡半径(单位:米) */ private Integer signInRadius; + + /** + * 活动类型爱心活动heart 联建活动party + */ + private String actType; + + /** + * 联建单位 + */ + private String unitId; + private String unitName; + /** + * 活动目标 + */ + private String target; + + /** + * 服务事项 + */ + private String serviceMatter; + private String serviceMatterName; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/CanceledActResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/CanceledActResultDTO.java index 17e21fc678..89b1374c03 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/CanceledActResultDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/CanceledActResultDTO.java @@ -57,4 +57,8 @@ public class CanceledActResultDTO implements Serializable { * 活动地点 */ private String actAddress; + /** + * 活动类型 爱心活动heart 联建活动party + */ + private String actType; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/FinishedActDetailResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/FinishedActDetailResultDTO.java index e96026f842..3e4bfbdc9a 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/FinishedActDetailResultDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/FinishedActDetailResultDTO.java @@ -136,4 +136,25 @@ public class FinishedActDetailResultDTO implements Serializable { * 活动签到打卡半径(单位:米) */ private Integer signInRadius; + + /** + * 活动类型爱心活动heart 联建活动party + */ + private String actType; + + /** + * 联建单位 + */ + private String unitId; + private String unitName; + /** + * 活动目标 + */ + private String target; + + /** + * 服务事项 + */ + private String serviceMatter; + private String serviceMatterName; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/FinishedActResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/FinishedActResultDTO.java index a908287e24..113d5dc46e 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/FinishedActResultDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/FinishedActResultDTO.java @@ -58,4 +58,9 @@ public class FinishedActResultDTO implements Serializable { * 活动地点 */ private String actAddress; + + /** + * 活动类型 爱心活动heart 联建活动party + */ + private String actType; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/InProgressActDetailResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/InProgressActDetailResultDTO.java index cd2518f840..8dc4ad2fb2 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/InProgressActDetailResultDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/InProgressActDetailResultDTO.java @@ -131,4 +131,25 @@ public class InProgressActDetailResultDTO implements Serializable { * 活动签到打卡半径(单位:米) */ private Integer signInRadius; + + /** + * 活动类型爱心活动heart 联建活动party + */ + private String actType; + + /** + * 联建单位 + */ + private String unitId; + private String unitName; + /** + * 活动目标 + */ + private String target; + + /** + * 服务事项 + */ + private String serviceMatter; + private String serviceMatterName; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/InProgressActResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/InProgressActResultDTO.java index 7f0d214f70..eae286055b 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/InProgressActResultDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/InProgressActResultDTO.java @@ -82,4 +82,9 @@ public class InProgressActResultDTO implements Serializable { * 活动地点 */ private String actAddress; + + /** + * 活动类型 爱心活动heart 联建活动party + */ + private String actType; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/LatestDraftActInfoResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/LatestDraftActInfoResultDTO.java index 7906c364d5..c4a250df92 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/LatestDraftActInfoResultDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/LatestDraftActInfoResultDTO.java @@ -166,4 +166,24 @@ public class LatestDraftActInfoResultDTO implements Serializable { * 活动内容- */ private List actContent; + + /** + * 活动类型爱心活动heart 联建活动party + */ + private String actType = "heart"; + + /** + * 联建单位 + */ + private String unitId; + + /** + * 活动目标 + */ + private String target; + + /** + * 服务事项 + */ + private String serviceMatter; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/ReEditActInfoResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/ReEditActInfoResultDTO.java index 80f668afae..a360fd53c3 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/ReEditActInfoResultDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/work/ReEditActInfoResultDTO.java @@ -148,4 +148,25 @@ public class ReEditActInfoResultDTO implements Serializable { * 活动详情 */ private List actContent; + + /** + * 活动类型爱心活动heart 联建活动party + */ + private String actType; + + /** + * 联建单位 + */ + private String unitId; + private String unitName; + /** + * 活动目标 + */ + private String target; + + /** + * 服务事项 + */ + private String serviceMatter; + private String serviceMatterName; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java index b75ac8e39b..ffce4482d0 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java @@ -4,6 +4,7 @@ import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.ActInfoDTO; import com.epmet.dto.VolunteerInfoDTO; +import com.epmet.dto.form.AutoEvaluateDemandFormDTO; import com.epmet.dto.form.CommonCustomerFormDTO; import com.epmet.dto.form.demand.UserDemandNameQueryFormDTO; import com.epmet.dto.form.resi.VolunteerCommonFormDTO; @@ -23,6 +24,7 @@ import java.util.List; * @date 2020/6/4 13:25 */ @FeignClient(name = ServiceConstant.EPMET_HEART_SERVER, fallbackFactory = EpmetHeartOpenFeignClientFallbackFactory.class) +//@FeignClient(name = ServiceConstant.EPMET_HEART_SERVER, fallbackFactory = EpmetHeartOpenFeignClientFallbackFactory.class, url = "http://localhost:8111") public interface EpmetHeartOpenFeignClient { /** @@ -67,6 +69,13 @@ public interface EpmetHeartOpenFeignClient { @PostMapping("/heart/resi/volunteer/page") Result> queryVolunteerPage(@RequestBody VolunteerCommonFormDTO input); + /** + * 服务方填写实际服务时间,并点击确认后。 7天内需求人未作出评价,默认完成情况为已完成,五星好评,为服务方发放积分 + * @return + */ + @PostMapping("/heart/residemand/autoevaluate") + Result autoEvaluateDemand(@RequestBody AutoEvaluateDemandFormDTO formDTO); + /** * 查询志愿者数量 * @param input diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/fallback/EpmetHeartOpenFeignClientFallback.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/fallback/EpmetHeartOpenFeignClientFallback.java index 5271fb57e0..db83d85a27 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/fallback/EpmetHeartOpenFeignClientFallback.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/fallback/EpmetHeartOpenFeignClientFallback.java @@ -5,6 +5,7 @@ import com.epmet.commons.tools.utils.ModuleUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.ActInfoDTO; import com.epmet.dto.VolunteerInfoDTO; +import com.epmet.dto.form.AutoEvaluateDemandFormDTO; import com.epmet.dto.form.CommonCustomerFormDTO; import com.epmet.dto.form.demand.UserDemandNameQueryFormDTO; import com.epmet.dto.form.resi.VolunteerCommonFormDTO; @@ -61,6 +62,16 @@ public class EpmetHeartOpenFeignClientFallback implements EpmetHeartOpenFeignCli return ModuleUtils.feignConError(ServiceConstant.EPMET_HEART_SERVER, "queryVolunteerPage", input); } + /** + * 服务方填写实际服务时间,并点击确认后。 7天内需求人未作出评价,默认完成情况为已完成,五星好评,为服务方发放积分 + * + * @return + */ + @Override + public Result autoEvaluateDemand(AutoEvaluateDemandFormDTO formDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_HEART_SERVER, "autoEvaluate",formDTO); + } + @Override public Result getVolunteerCount(VolunteerCommonFormDTO input) { return ModuleUtils.feignConError(ServiceConstant.EPMET_HEART_SERVER, "getVolunteerCount", input); diff --git a/epmet-module/epmet-heart/epmet-heart-server/deploy/docker-compose-prod.yml b/epmet-module/epmet-heart/epmet-heart-server/deploy/docker-compose-prod.yml index e2cec97f9c..d1ccbc081a 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/deploy/docker-compose-prod.yml +++ b/epmet-module/epmet-heart/epmet-heart-server/deploy/docker-compose-prod.yml @@ -2,7 +2,7 @@ version: "3.7" services: epmet-heart-server: container_name: epmet-heart-server-prod - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-heart-server:0.0.64 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-heart-server:0.0.72 ports: - "8111:8111" network_mode: host # 使用现有网络 diff --git a/epmet-module/epmet-heart/epmet-heart-server/pom.xml b/epmet-module/epmet-heart/epmet-heart-server/pom.xml index 034780d7d5..ba92a6d321 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/pom.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.0.64 + 0.0.72 com.epmet epmet-heart diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/constant/ActConstant.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/constant/ActConstant.java index c5387c8ce4..ce1d187bf2 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/constant/ActConstant.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/constant/ActConstant.java @@ -161,4 +161,17 @@ public interface ActConstant { String HANDLED="handled"; String RESET="reset"; + /** + * 活动类型-爱心互助 + */ + String HEART = "heart"; + /** + * 活动类型-联建活动 + */ + String PARTY = "party"; + + /** + * 服务事项code + */ + String SERVICE_MATTER_CODE = "1010"; } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/constant/UserDemandConstant.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/constant/UserDemandConstant.java index 85168b8a32..2f449f9201 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/constant/UserDemandConstant.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/constant/UserDemandConstant.java @@ -32,10 +32,10 @@ public interface UserDemandConstant { */ String STAFF="staff"; String RESI="resi"; - + String SYS="sys"; /** - * 创建需求:create;撤销需求:cancel;指派:assign;接单:take_order;完成:finish;; + * 创建需求:create;撤销需求:cancel;指派:assign;接单:take_order;完成:finish;;评价:evaluate * 更新需求:update */ String CREATE="create"; @@ -44,6 +44,7 @@ public interface UserDemandConstant { String ASSIGN="assign"; String TAKE_ORDER="take_order"; String FINISH="finish"; + String EVALUATE="evaluate"; // 服务方类型:志愿者:volunteer;社会组织:social_org;社区自组织:community_org;区域党建单位:party_unit; String VOLUNTEER="volunteer"; @@ -58,4 +59,28 @@ public interface UserDemandConstant { */ String PERSONAL_DATA="personal-data"; String DEMAND_ANALYSIS="demand-analysis"; + + /** + * pc完成情况:完成+评价 + */ + String FINISH_AND_EVALUATE="finish_and_evaluate"; + + String MESSAGE_TITILE="您有一条需求消息"; + String HAVE_SERVICE="您提出的需求将由%s为您解决,请查看"; + String FINISH_DEMAND_MESSAGE="您提出的需求已完成,请进行服务评价。"; + /** + * 您收到来自张三的评价,请查看。 + */ + String DEMAND_EVALUATED=" 您收到来自%s的评价,请查看。"; + String DEMAND_CANCELED=" %s的需求已取消,请查看。"; + + String DEMAND_PUBLISHER="publisher"; + String DEMAND_SERVER="server"; + + String GRANT_POINT_REMARK="完成了%s的需求:%s"; + + String DEFAULT_EVALUATE_REMARK="此用户没有填写内容,由系统默认评分"; + // 完成结果:已解决 resolved,未解决 unresolved + String RESOLVED="resolved"; + String UN_RESOLVED="unresolved"; } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java index d9019b6c5b..5dc6a27d04 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcCommunitySelfOrganizationController.java @@ -17,11 +17,16 @@ package com.epmet.controller; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; +import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; +import cn.hutool.poi.excel.ExcelUtil; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.AssertUtils; @@ -36,7 +41,9 @@ import com.epmet.dto.result.CommunitySelfOrganizationListResultDTO; import com.epmet.dto.result.demand.OptionDTO; import com.epmet.excel.ExportCommunitySelfOrganizationExcel; import com.epmet.excel.IcCommunitySelfOrganizationExcel; +import com.epmet.excel.ImportCommunitySelfOrganizationSon; import com.epmet.service.IcCommunitySelfOrganizationService; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.FilenameUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -113,7 +120,13 @@ public class IcCommunitySelfOrganizationController { @PostMapping("exportcommunityselforganization") public void exportCommunitySelfOrganization(HttpServletResponse response,@LoginUser TokenDto tokenDto,@RequestBody CommunitySelfOrganizationListFormDTO formDTO) throws Exception { CommunitySelfOrganizationListResultDTO resultDTO = icCommunitySelfOrganizationService.communitySelfOrganizationList(tokenDto, formDTO); - ExcelUtils.exportExcelToTarget(response, null, resultDTO.getList(), ExportCommunitySelfOrganizationExcel.class); + List r = ConvertUtils.sourceToTarget(resultDTO.getList(), ExportCommunitySelfOrganizationExcel.class); + r.forEach(c -> { + if (CollectionUtils.isNotEmpty(c.getOrganizationPersonnel())){ + c.setOrganizationPersonnel(ConvertUtils.sourceToTarget(c.getOrganizationPersonnel(), ImportCommunitySelfOrganizationSon.class)); + } + }); + ExcelUtils.exportExcelToTarget(response, null, r, ExportCommunitySelfOrganizationExcel.class); } /** diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyUnitController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyUnitController.java index 27f193b978..5aaf4863fb 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyUnitController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyUnitController.java @@ -17,7 +17,7 @@ package com.epmet.controller; -import com.epmet.commons.rocketmq.messages.CalPartyUnitSatisfactionFormDTO; +import com.epmet.commons.rocketmq.messages.ServerSatisfactionCalFormDTO; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.dto.result.OptionDataResultDTO; @@ -189,8 +189,8 @@ public class IcPartyUnitController { * @return */ @PostMapping("cal-partyunit-satisfation") - public Result calPartyUnitSatisfation(@RequestBody CalPartyUnitSatisfactionFormDTO formDTO){ - ValidatorUtils.validateEntity(formDTO,CalPartyUnitSatisfactionFormDTO.AddUserInternalGroup.class); + public Result calPartyUnitSatisfation(@RequestBody ServerSatisfactionCalFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO,ServerSatisfactionCalFormDTO.AddUserInternalGroup.class); icPartyUnitService.calPartyUnitSatisfation(formDTO); return new Result(); } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcResiDemandDictController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcResiDemandDictController.java index 565a7a8423..4bb3a8c969 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcResiDemandDictController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcResiDemandDictController.java @@ -27,6 +27,7 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.AssertUtils; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dto.form.demand.*; +import com.epmet.dto.result.demand.DemandCategoryResDTO; import com.epmet.dto.result.demand.DemandPageResDTO; import com.epmet.dto.result.demand.OptionDTO; import com.epmet.service.IcResiDemandDictService; @@ -172,8 +173,27 @@ public class IcResiDemandDictController { return new Result>().ok(icResiDemandDictService.querySubCodeList(formDTO)); } + /** + * 居民端,我有需求,分类列表 + * 查询可用的需求 + * + * @param tokenDto + * @return + */ + @PostMapping("category-list") + public Result> queryCategoryList(@LoginUser TokenDto tokenDto){ + return new Result>().ok(icResiDemandDictService.queryCategoryList(tokenDto.getCustomerId())); + } - + /** + * 居民端,我有需求,最近预约,显示最近预约过的五个需求,按照预约时间倒 + * @param tokenDto + * @return + */ + @PostMapping("latest-order") + public Result> queryLatestOrder(@LoginUser TokenDto tokenDto){ + return new Result>().ok(icResiDemandDictService.queryLatestOrder(tokenDto.getUserId(),tokenDto.getCustomerId())); + } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcUserDemandRecController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcUserDemandRecController.java index 01a928da76..0eb686a401 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcUserDemandRecController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcUserDemandRecController.java @@ -17,8 +17,12 @@ package com.epmet.controller; -import com.epmet.commons.rocketmq.messages.CalPartyUnitSatisfactionFormDTO; +import com.epmet.commons.rocketmq.messages.ServerSatisfactionCalFormDTO; import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.constant.MqConstant; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.dto.form.mq.eventmsg.BasePointEventMsg; +import com.epmet.commons.tools.enums.EventEnum; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ExcelUtils; @@ -29,10 +33,6 @@ import com.epmet.constant.UserDemandConstant; import com.epmet.dto.form.SystemMsgFormDTO; import com.epmet.dto.form.demand.*; import com.epmet.dto.result.demand.*; -import com.epmet.dto.result.demand.DemandRecResultDTO; -import com.epmet.dto.result.demand.FinishResultDTO; -import com.epmet.dto.result.demand.IcResiUserReportDemandRes; -import com.epmet.dto.result.demand.OptionDTO; import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.service.*; import lombok.extern.slf4j.Slf4j; @@ -44,6 +44,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; import java.util.List; @@ -85,7 +86,7 @@ public class IcUserDemandRecController { formDTO.setStaffId(tokenDto.getUserId()); ValidatorUtils.validateEntity(formDTO, ServiceQueryFormDTO.AddUserInternalGroup.class); if (UserDemandConstant.VOLUNTEER.equals(formDTO.getServiceType())) { - return new Result>().ok(volunteerInfoService.queryListVolunteer(tokenDto.getCustomerId(), formDTO.getServiceName())); + return new Result>().ok(volunteerInfoService.queryListVolunteer(tokenDto.getCustomerId(), formDTO.getStaffId(),formDTO.getServiceName())); } else if (UserDemandConstant.SOCIAL_ORG.equals(formDTO.getServiceType())) { ValidatorUtils.validateEntity(formDTO, ServiceQueryFormDTO.AddUserInternalGroup.class, ServiceQueryFormDTO.SocietyOrgInternalGroup.class); return new Result>().ok(societyOrgService.queryServiceList(formDTO)); @@ -150,10 +151,11 @@ public class IcUserDemandRecController { * @return */ @PostMapping("cancel") - public Result cancel(@LoginUser TokenDto tokenDto,@RequestBody StaffCancelFormDTO formDTO){ + public Result cancel(@LoginUser TokenDto tokenDto,@RequestBody CancelDemandFormDTO formDTO){ formDTO.setCustomerId(tokenDto.getCustomerId()); formDTO.setUserId(tokenDto.getUserId()); - ValidatorUtils.validateEntity(formDTO,StaffCancelFormDTO.AddUserInternalGroup.class); + formDTO.setUserType(UserDemandConstant.STAFF); + ValidatorUtils.validateEntity(formDTO,CancelDemandFormDTO.AddUserInternalGroup.class); icUserDemandRecService.cancel(formDTO); return new Result(); } @@ -187,16 +189,49 @@ public class IcUserDemandRecController { public Result finish(@LoginUser TokenDto tokenDto,@RequestBody FinishStaffFromDTO formDTO){ formDTO.setCustomerId(tokenDto.getCustomerId()); formDTO.setUserId(tokenDto.getUserId()); - ValidatorUtils.validateEntity(formDTO,FinishStaffFromDTO.AddUserShowGroup.class,FinishStaffFromDTO.AddUserInternalGroup.class); + formDTO.setType(UserDemandConstant.FINISH_AND_EVALUATE); + formDTO.setUserType(UserDemandConstant.STAFF); + ValidatorUtils.validateEntity(formDTO,FinishStaffFromDTO.IcShowGroup.class,FinishStaffFromDTO.AddUserInternalGroup.class); FinishResultDTO finishResultDTO=icUserDemandRecService.finish(formDTO); - if(finishResultDTO.getSendCalStatisfaction()){ - CalPartyUnitSatisfactionFormDTO mqMsg = new CalPartyUnitSatisfactionFormDTO(); - mqMsg.setCustomerId(formDTO.getCustomerId()); - mqMsg.setPartyUnitId(finishResultDTO.getPartyUnitId()); - SystemMsgFormDTO form = new SystemMsgFormDTO(); - form.setMessageType(SystemMessageType.CAL_PARTY_UNIT_SATISFACTION); - form.setContent(mqMsg); - epmetMessageOpenFeignClient.sendSystemMsgByMQ(form); + if(finishResultDTO.getEvaluateFlag()){ + //如果服务方是区域化党建单位,需要实时去计算他的群众满意度=服务过的需求的评价分数相加➗ 需求的总个数。 + if(UserDemandConstant.PARTY_UNIT.equals(finishResultDTO.getServiceType())){ + ServerSatisfactionCalFormDTO mqMsg = new ServerSatisfactionCalFormDTO(); + mqMsg.setCustomerId(formDTO.getCustomerId()); + mqMsg.setServerId(finishResultDTO.getServerId()); + mqMsg.setServiceType(finishResultDTO.getServiceType()); + SystemMsgFormDTO form = new SystemMsgFormDTO(); + form.setMessageType(SystemMessageType.CAL_PARTY_UNIT_SATISFACTION); + form.setContent(mqMsg); + epmetMessageOpenFeignClient.sendSystemMsgByMQ(form); + } else if (UserDemandConstant.VOLUNTEER.equals(finishResultDTO.getServiceType()) + && null != finishResultDTO.getAwardPoint() + && finishResultDTO.getAwardPoint() > NumConstant.ZERO + && UserDemandConstant.RESOLVED.equals(finishResultDTO.getFinishResult())) { + // 志愿者发放积分 + List actPointEventMsgList = new ArrayList<>(); + BasePointEventMsg actPointEventMsg = new BasePointEventMsg(); + actPointEventMsg.setCustomerId(formDTO.getCustomerId()); + actPointEventMsg.setSourceType(MqConstant.SOURCE_TYPE_DEMAND); + actPointEventMsg.setSourceId(formDTO.getDemandRecId()); + actPointEventMsg.setUserId(finishResultDTO.getServerId()); + actPointEventMsg.setActionFlag(MqConstant.PLUS); + actPointEventMsg.setIsCommon(false); + actPointEventMsg.setRemark(finishResultDTO.getRemark()); + actPointEventMsg.setEventTag(EventEnum.FINISH_USER_DEMAND.getEventTag()); + actPointEventMsg.setEventClass(EventEnum.FINISH_USER_DEMAND.getEventClass()); + actPointEventMsg.setEventName(finishResultDTO.getFirstCategoryName()); + actPointEventMsg.setObjectId(finishResultDTO.getCategoryCode()); + actPointEventMsg.setPoint(finishResultDTO.getAwardPoint()); + actPointEventMsgList.add(actPointEventMsg); + SystemMsgFormDTO sendMsgForm = new SystemMsgFormDTO(); + sendMsgForm.setContent(actPointEventMsgList); + sendMsgForm.setMessageType(SystemMessageType.FINISH_USER_DEMAND); + Result mqResult = epmetMessageOpenFeignClient.sendSystemMsgByMQ(sendMsgForm); + if (!mqResult.success()) { + log.error(String.format("demandRecId:%s,给志愿者发放积分失败", formDTO.getDemandRecId())); + } + } } return new Result(); } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiDemandController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiDemandController.java new file mode 100644 index 0000000000..b798d0fe0c --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiDemandController.java @@ -0,0 +1,270 @@ +package com.epmet.controller; + + +import com.epmet.commons.rocketmq.messages.ServerSatisfactionCalFormDTO; +import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.constant.AppClientConstant; +import com.epmet.commons.tools.constant.MqConstant; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.dto.form.PageFormDTO; +import com.epmet.commons.tools.dto.form.mq.eventmsg.BasePointEventMsg; +import com.epmet.commons.tools.enums.EventEnum; +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.constant.SystemMessageType; +import com.epmet.constant.UserDemandConstant; +import com.epmet.dto.form.AutoEvaluateDemandFormDTO; +import com.epmet.dto.form.SystemMsgFormDTO; +import com.epmet.dto.form.demand.*; +import com.epmet.dto.result.demand.*; +import com.epmet.feign.EpmetMessageOpenFeignClient; +import com.epmet.service.IcUserDemandRecService; +import com.epmet.service.IcUserDemandSatisfactionService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.List; + + +/** + * 居民端-需求相关API 写在这吧 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-11-19 + */ +@Slf4j +@RestController +@RequestMapping("residemand") +public class ResiDemandController { + @Autowired + private IcUserDemandRecService icUserDemandRecService; + @Autowired + private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient; + @Autowired + private IcUserDemandSatisfactionService demandSatisfactionService; + + /** + * 居民端-需求大厅(未处理、处理中、已完成) + * + * @param tokenDto + * @param formDTO + * @return + */ + @PostMapping("list-hall") + public Result> listHall(@LoginUser TokenDto tokenDto, @RequestBody ListHallFormDTO formDTO) { + formDTO.setCurrentUserId(tokenDto.getUserId()); + formDTO.setCustomerId(tokenDto.getCustomerId()); + ValidatorUtils.validateEntity(formDTO, PageFormDTO.AddUserInternalGroup.class, ListHallFormDTO.AddUserInternalGroup.class); + return new Result>().ok(icUserDemandRecService.listHall(formDTO)); + } + + /** + * 需求大厅-需求详情 + * + * @param tokenDto + * @param formDTO + * @return + */ + @PostMapping("detail-hall") + public Result queryDetailHall(@LoginUser TokenDto tokenDto, @RequestBody DemandDetailFormDTO formDTO) { + formDTO.setCustomerId(tokenDto.getCustomerId()); + ValidatorUtils.validateEntity(formDTO, DemandDetailFormDTO.AddUserInternalGroup.class); + return new Result().ok(icUserDemandRecService.queryDetailHall(formDTO)); + } + + /** + * 需求大厅-我要接单 + * + * @param tokenDto + * @return + */ + @NoRepeatSubmit + @PostMapping("takeorder") + public Result takeOrder(@LoginUser TokenDto tokenDto, @RequestBody TakeOrderFormDTO formDTO) { + formDTO.setUserId(tokenDto.getUserId()); + ValidatorUtils.validateEntity(formDTO, TakeOrderFormDTO.AddUserInternalGroup.class); + return new Result().ok(icUserDemandRecService.takeOrder(formDTO)); + } + + /** + * 需求大厅-完成需求 + * + * @param tokenDto + * @param formDTO + * @return + */ + @NoRepeatSubmit + @PostMapping("finish") + public Result finish(@LoginUser TokenDto tokenDto, @RequestBody FinishStaffFromDTO formDTO) { + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setUserId(tokenDto.getUserId()); + formDTO.setType(UserDemandConstant.FINISHED); + if (AppClientConstant.APP_GOV.equals(tokenDto.getApp())) { + formDTO.setUserType(UserDemandConstant.STAFF); + } else if (AppClientConstant.APP_RESI.equals(tokenDto.getApp())) { + formDTO.setUserType(UserDemandConstant.RESI); + } + ValidatorUtils.validateEntity(formDTO, FinishStaffFromDTO.ResiShowGroup.class, FinishStaffFromDTO.AddUserInternalGroup.class); + icUserDemandRecService.finish(formDTO); + return new Result(); + } + + /** + * 我的需求-服务评价 + * 已经完成的可以评价 + * + * @param tokenDto + * @param formDTO + * @return + */ + @NoRepeatSubmit + @PostMapping("evaluate") + public Result evaluate(@LoginUser TokenDto tokenDto, @RequestBody EvaluateDemandFormDTO formDTO) { + formDTO.setUserId(tokenDto.getUserId()); + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setApp(tokenDto.getApp()); + ValidatorUtils.validateEntity(formDTO, EvaluateDemandFormDTO.ShowGroup.class, EvaluateDemandFormDTO.AddUserInternalGroup.class); + FinishResultDTO finishResultDTO = icUserDemandRecService.evaluate(formDTO); + if(finishResultDTO.getEvaluateFlag()){ + //如果服务方是区域化党建单位,需要实时去计算他的群众满意度=服务过的需求的评价分数相加➗ 需求的总个数。 + if (UserDemandConstant.PARTY_UNIT.equals(finishResultDTO.getServiceType())) { + ServerSatisfactionCalFormDTO mqMsg = new ServerSatisfactionCalFormDTO(); + mqMsg.setCustomerId(formDTO.getCustomerId()); + mqMsg.setServerId(finishResultDTO.getServerId()); + mqMsg.setServiceType(finishResultDTO.getServiceType()); + SystemMsgFormDTO form = new SystemMsgFormDTO(); + form.setMessageType(SystemMessageType.CAL_PARTY_UNIT_SATISFACTION); + form.setContent(mqMsg); + epmetMessageOpenFeignClient.sendSystemMsgByMQ(form); + } else if (UserDemandConstant.VOLUNTEER.equals(finishResultDTO.getServiceType()) + && null != finishResultDTO.getAwardPoint() + && finishResultDTO.getAwardPoint() > NumConstant.ZERO + && UserDemandConstant.RESOLVED.equals(finishResultDTO.getFinishResult())) { + // 志愿者发放积分 + List actPointEventMsgList = new ArrayList<>(); + BasePointEventMsg actPointEventMsg = new BasePointEventMsg(); + actPointEventMsg.setCustomerId(formDTO.getCustomerId()); + actPointEventMsg.setSourceType(MqConstant.SOURCE_TYPE_DEMAND); + actPointEventMsg.setSourceId(formDTO.getDemandRecId()); + actPointEventMsg.setUserId(finishResultDTO.getServerId()); + actPointEventMsg.setActionFlag(MqConstant.PLUS); + actPointEventMsg.setIsCommon(false); + actPointEventMsg.setRemark(finishResultDTO.getRemark()); + actPointEventMsg.setEventTag(EventEnum.FINISH_USER_DEMAND.getEventTag()); + actPointEventMsg.setEventClass(EventEnum.FINISH_USER_DEMAND.getEventClass()); + actPointEventMsg.setEventName(finishResultDTO.getFirstCategoryName()); + actPointEventMsg.setObjectId(finishResultDTO.getCategoryCode()); + actPointEventMsg.setPoint(finishResultDTO.getAwardPoint()); + actPointEventMsgList.add(actPointEventMsg); + SystemMsgFormDTO sendMsgForm = new SystemMsgFormDTO(); + sendMsgForm.setContent(actPointEventMsgList); + sendMsgForm.setMessageType(SystemMessageType.FINISH_USER_DEMAND); + Result mqResult = epmetMessageOpenFeignClient.sendSystemMsgByMQ(sendMsgForm); + if (!mqResult.success()) { + log.error(String.format("需求评价完成:demandRecId:%s,给志愿者发放积分失败", formDTO.getDemandRecId())); + } + } + } + return new Result(); + } + + /** + * 我的需求-取消需求 + * 取消,未完成之前都可以取消,pc和居民端小程序内部通用 + * + * @param tokenDto + * @param formDTO + * @return + */ + @NoRepeatSubmit + @PostMapping("cancel") + public Result cancel(@LoginUser TokenDto tokenDto,@RequestBody CancelDemandFormDTO formDTO){ + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setUserId(tokenDto.getUserId()); + formDTO.setUserType(UserDemandConstant.RESI); + ValidatorUtils.validateEntity(formDTO,CancelDemandFormDTO.AddUserInternalGroup.class); + icUserDemandRecService.cancel(formDTO); + return new Result(); + } + + /** + * 居民端-我的需求(待处理,处理中,已完成,已取消) + * @param tokenDto + * @param formDTO + * @return + */ + @PostMapping("mydemand") + public Result> queryMyDemand(@LoginUser TokenDto tokenDto,@RequestBody ResiClientMyDemandFormDTO formDTO){ + formDTO.setUserId(tokenDto.getUserId()); + formDTO.setCustomerId(tokenDto.getCustomerId()); + ValidatorUtils.validateEntity(formDTO,PageFormDTO.AddUserInternalGroup.class,ResiClientMyDemandFormDTO.AddUserInternalGroup.class); + return new Result>().ok(icUserDemandRecService.queryMyDemandForResiClient(formDTO)); + } + /** + * 我的需求-需求详情(待处理,处理中,已完成,已取消) + * + * @param tokenDto + * @param formDTO + * @return + */ + @PostMapping("my-detail") + public Result queryMyDetail(@LoginUser TokenDto tokenDto, @RequestBody DemandDetailFormDTO formDTO) { + formDTO.setCustomerId(tokenDto.getCustomerId()); + ValidatorUtils.validateEntity(formDTO, DemandDetailFormDTO.AddUserInternalGroup.class); + return new Result().ok(icUserDemandRecService.queryMyDetail(formDTO)); + } + + /** + * 居民端-我的需求:提交需求,修改需求 + * @param tokenDto + * @param formDTO + * @return + */ + @NoRepeatSubmit + @PostMapping("submit") + public Result saveOrUpdateDemand(@LoginUser TokenDto tokenDto,@RequestBody ReportDemandFormDTO formDTO){ + //需求人默认是当前用户id + formDTO.setDemandUserId(tokenDto.getUserId()); + formDTO.setCustomerId(tokenDto.getCustomerId()); + if(StringUtils.isNotBlank(formDTO.getDemandRecId())){ + ValidatorUtils.validateEntity(formDTO,ReportDemandFormDTO.Update.class,ReportDemandFormDTO.UpdateInternalGroup.class); + }else{ + ValidatorUtils.validateEntity(formDTO,ReportDemandFormDTO.Add.class,ReportDemandFormDTO.AddInternalGroup.class); + } + return new Result().ok(icUserDemandRecService.saveOrUpdateDemand(formDTO)); + } + + /** + * 当前用户与需求消息的关系 + * 需求发布人:publisher ;服务人:server + * + * @param tokenDto + * @param formDTO + * @return + */ + @PostMapping("user-demand-rel") + public Result queryUserDemandRel(@LoginUser TokenDto tokenDto, @RequestBody UserDemandRelFormDTO formDTO) { + formDTO.setUserId(tokenDto.getUserId()); + ValidatorUtils.validateEntity(formDTO, UserDemandRelFormDTO.AddInternalGroup.class); + return new Result().ok(icUserDemandRecService.queryUserDemandRel(formDTO)); + } + + /** + * 服务方填写实际服务时间,并点击确认后。 7天内需求人未作出评价,默认完成情况为已完成,五星好评,为服务方发放积分 + * + * @return + */ + @PostMapping("autoevaluate") + public Result autoEvaluate(@RequestBody AutoEvaluateDemandFormDTO formDTO){ + demandSatisfactionService.evaluateDemandAuto(formDTO); + return new Result(); + } +} diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiVolunteerController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiVolunteerController.java index 6205fb524a..39da0690af 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiVolunteerController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiVolunteerController.java @@ -60,8 +60,11 @@ public class ResiVolunteerController { **/ @PostMapping("authenticate") public Result authenticate(@LoginUser TokenDto tokenDto, @RequestBody ResiVolunteerAuthenticateFormDTO formDTO) { - ValidatorUtils.validateEntity(formDTO, ResiVolunteerAuthenticateFormDTO.AddUserInternalGroup.class, ResiVolunteerAuthenticateFormDTO.AddUserShowGroup.class); - return volunteerInfoService.authenticate(tokenDto, formDTO); + formDTO.setUserId(tokenDto.getUserId()); + formDTO.setCustomerId(tokenDto.getCustomerId()); + ValidatorUtils.validateEntity(formDTO, ResiVolunteerAuthenticateFormDTO.AddUserShowGroup.class, ResiVolunteerAuthenticateFormDTO.AddUserInternalGroup.class); + volunteerInfoService.authenticate(formDTO); + return new Result(); } /** @@ -125,7 +128,7 @@ public class ResiVolunteerController { */ @PostMapping("listprofile") public Result> queryListVolunteer(@LoginUser TokenDto tokenDto,@RequestBody ServiceQueryFormDTO formDTO){ - return new Result>().ok(volunteerInfoService.queryListVolunteer(tokenDto.getCustomerId(),formDTO.getServiceName())); + return new Result>().ok(volunteerInfoService.queryListVolunteer(tokenDto.getCustomerId(),tokenDto.getUserId(),formDTO.getServiceName())); } /** @@ -135,13 +138,11 @@ public class ResiVolunteerController { */ @PostMapping("page") public Result> queryVolunteerPage(@RequestBody VolunteerCommonFormDTO input) { - - ValidatorUtils.validateEntity(input, VolunteerCommonFormDTO.VolunteerPage.class); - Integer pageNo = input.getPageNo(); Integer pageSize = input.getPageSize(); String customerId = input.getCustomerId(); - List l = volunteerInfoService.queryVolunteerPage(customerId, pageNo, pageSize); + String agencyId = input.getAgencyId(); + List l = volunteerInfoService.queryVolunteerPage(customerId, pageNo, pageSize, agencyId); return new Result>().ok(l); } @@ -152,10 +153,10 @@ public class ResiVolunteerController { */ @PostMapping("count") public Result getVolunteerCount(@RequestBody VolunteerCommonFormDTO input) { - ValidatorUtils.validateEntity(input, VolunteerCommonFormDTO.VolunteerPage.class); String customerId = input.getCustomerId(); + String agencyId = input.getAgencyId(); - Integer volunteerCount = volunteerInfoService.getVolunteerCount(customerId); + Integer volunteerCount = volunteerInfoService.getVolunteerCount(customerId, agencyId); return new Result().ok(volunteerCount); } } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/WorkActController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/WorkActController.java index fb0a64e4dc..1383924f57 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/WorkActController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/WorkActController.java @@ -1,7 +1,10 @@ package com.epmet.controller; +import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.constant.ActConstant; import com.epmet.dto.form.work.*; import com.epmet.dto.result.work.*; import com.epmet.service.WorkActService; @@ -69,6 +72,23 @@ public class WorkActController { return new Result().ok(workActService.publishAct(formDTO)); } + @PostMapping("publishV2") + public Result publishActV2(@RequestBody PublishActInfoFormDTO formDTO) { + if (ActConstant.HEART.equals(formDTO.getActType())) { + ValidatorUtils.validateEntity(formDTO, PublishActInfoFormDTO.AddUserShowGroup.class, PublishActInfoFormDTO.AddUserInternalGroup.class); + } else { + ValidatorUtils.validateEntity(formDTO, PublishActInfoFormDTO.AddUserShowGroup.class, + PublishActInfoFormDTO.AddUserInternalGroup.class, PublishActInfoFormDTO.AddPartyActivityGroup.class); + } + for (PublishActContentFormDTO actContentFormDTO : formDTO.getActContent()) { + ValidatorUtils.validateEntity(actContentFormDTO, + PublishActContentFormDTO.UserShowGroup.class, + PublishActContentFormDTO.UserInternalGroup.class + ); + } + return new Result().ok(workActService.publishActV2(formDTO)); + } + /** * @return com.epmet.commons.tools.utils.Result * @param formDTO @@ -130,9 +150,9 @@ public class WorkActController { * @Date 2020/7/26 18:00 **/ @PostMapping("canceleddetail") - public Result canceledDetail(@RequestBody ActIdFormDTO actIdFormDTO) { + public Result canceledDetail(@LoginUser TokenDto tokenDto, @RequestBody ActIdFormDTO actIdFormDTO) { ValidatorUtils.validateEntity(actIdFormDTO, ActIdFormDTO.AddUserInternalGroup.class); - return new Result().ok(workActService.canceledDetail(actIdFormDTO.getActId())); + return new Result().ok(workActService.canceledDetail(tokenDto.getCustomerId(), actIdFormDTO.getActId())); } /** @@ -158,8 +178,9 @@ public class WorkActController { * @Date 2020/7/26 21:01 **/ @PostMapping("finisheddetail") - public Result finishedDeatil(@RequestBody ActIdFormDTO formDTO) { + public Result finishedDeatil(@LoginUser TokenDto tokenDto, @RequestBody ActIdFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO, ActIdFormDTO.AddUserInternalGroup.class); + formDTO.setCustomerId(tokenDto.getCustomerId()); return new Result().ok(workActService.finishedDeatil(formDTO)); } @@ -171,9 +192,10 @@ public class WorkActController { * @Date 2020/7/26 21:33 **/ @PostMapping("inprogressdetail") - public Result inProgressDetail(@RequestBody ActIdFormDTO formDTO) { + public Result inProgressDetail(@LoginUser TokenDto tokenDto, @RequestBody ActIdFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO, ActIdFormDTO.AddUserInternalGroup.class); - return new Result().ok(workActService.inProgressDetail(formDTO.getActId())); + + return new Result().ok(workActService.inProgressDetail(tokenDto.getCustomerId(), formDTO.getActId())); } /** @@ -229,9 +251,9 @@ public class WorkActController { * @Date 2020/7/27 13:36 **/ @PostMapping("getactinfo") - public Result getActInfo(@RequestBody ActIdFormDTO formDTO){ + public Result getActInfo(@LoginUser TokenDto tokenDto, @RequestBody ActIdFormDTO formDTO){ ValidatorUtils.validateEntity(formDTO, ActIdFormDTO.AddUserInternalGroup.class); - return new Result().ok(workActService.getActInfo(formDTO.getActId())); + return new Result().ok(workActService.getActInfo(tokenDto.getCustomerId(), formDTO.getActId())); } /** @@ -253,5 +275,21 @@ public class WorkActController { return new Result().ok(workActService.rePublish(rePublishFormDTO)); } + @PostMapping("republishV2") + public Result rePublishV2(@RequestBody RePublishFormDTO rePublishFormDTO) { + if (ActConstant.HEART.equals(rePublishFormDTO.getActType())) { + ValidatorUtils.validateEntity(rePublishFormDTO, PublishActInfoFormDTO.AddUserShowGroup.class, PublishActInfoFormDTO.AddUserInternalGroup.class); + } else { + ValidatorUtils.validateEntity(rePublishFormDTO, RePublishFormDTO.AddUserShowGroup.class, RePublishFormDTO.AddUserInternalGroup.class); + } + for (PublishActContentFormDTO actContentFormDTO : rePublishFormDTO.getActContent()) { + ValidatorUtils.validateEntity(actContentFormDTO, + PublishActContentFormDTO.UserShowGroup.class, + PublishActContentFormDTO.UserInternalGroup.class + ); + } + return new Result().ok(workActService.rePublishV2(rePublishFormDTO)); + } + } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/WorkActDraftController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/WorkActDraftController.java index e960a2f926..9d018d7d81 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/WorkActDraftController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/WorkActDraftController.java @@ -1,5 +1,7 @@ package com.epmet.controller; +import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dto.form.work.*; @@ -82,8 +84,9 @@ public class WorkActDraftController { * @Date 2020/7/21 17:24 **/ @PostMapping("preview") - public Result previewActDetail(@RequestBody ActPreviewFormDTO formDTO){ + public Result previewActDetail(@LoginUser TokenDto tokenDto, @RequestBody ActPreviewFormDTO formDTO){ ValidatorUtils.validateEntity(formDTO,ActPreviewFormDTO.UserInternalGroup.class); + formDTO.setCustomerId(tokenDto.getCustomerId()); ActPreviewResultDTO resultDTO=workActDraftService.previewActDetail(formDTO); return new Result().ok(resultDTO); } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcResiDemandDictDao.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcResiDemandDictDao.java index 211ab20e8d..73ad65dcd6 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcResiDemandDictDao.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcResiDemandDictDao.java @@ -19,6 +19,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.commons.tools.dto.result.OptionResultDTO; +import com.epmet.dto.result.demand.DemandCategoryResDTO; import com.epmet.dto.result.demand.DemandPageResDTO; import com.epmet.dto.result.demand.OptionDTO; import com.epmet.entity.IcResiDemandDictEntity; @@ -66,4 +67,14 @@ public interface IcResiDemandDictDao extends BaseDao { List selectSecondCodes(@Param("customerId") String customerId, @Param("cateogryCodes") List categoryCodes); String selectNameByCode(@Param("customerId")String customerId, @Param("categoryCode") String categoryCode); + + IcResiDemandDictEntity selectByCode(@Param("customerId") String customerId, @Param("categoryCode") String categoryCode); + + /** + * 查询分类信息,限制未被禁用的 + * @param customerId + * @param categoryCodes + * @return + */ + List selectListByCodes(@Param("customerId") String customerId, @Param("categoryCodes") List categoryCodes); } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcUserDemandRecDao.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcUserDemandRecDao.java index 6c36e11618..27eaa8c689 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcUserDemandRecDao.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcUserDemandRecDao.java @@ -18,6 +18,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.IcUserDemandRecDTO; import com.epmet.dto.form.demand.IcResiUserDemandFromDTO; import com.epmet.dto.form.demand.PageListAnalysisFormDTO; import com.epmet.dto.form.demand.UserDemandPageFormDTO; @@ -85,5 +86,36 @@ public interface IcUserDemandRecDao extends BaseDao { @Param("startDateId") String startDateId, @Param("endDateId") String endDateId); - List selectGroupByPartyUnit(@Param("customerId") String customerId, @Param("partyUnitId") String partyUnitId); + List selectGroupByServer(@Param("customerId") String customerId, + @Param("serverId") String serverId, + @Param("serviceType") String serviceType); + + /** + * 居民端-需求大厅(未处理、处理中、已完成) + * 未处理:未指派、未接单;处理中:已指派、已接单给我的 ;已完成:我填写实际服务时间,并点击确认 + * + * @param gridId + * @param type 未处理:unprocessed;处理中:processing;已完成:finished + * @param currentUserId 当前用户自己提出的,不在这展示,在我的需求里面展示 + * @return + */ + List selectListDemandHall(@Param("gridId") String gridId, + @Param("type") String type, + @Param("currentUserId") String currentUserId); + /** + * 居民端-我的需求(待处理,处理中,已完成,已取消) + * + * @param gridId + * @param type 待处理:unprocessed;处理中:processing;已完成:finished;已取消:canceled + * @return demandUserId 需求人id + */ + List queryMyDemandForResiClient(@Param("gridId") String gridId, + @Param("type")String type, + @Param("demandUserId")String demandUserId); + + List selectNoEvaluate(@Param("customerId")String customerId, + @Param("exceedValue")Integer exceedValue, + @Param("type")String type); + + int evaluate(@Param("demandRecId")String demandRecId, @Param("finishResult")String finishResult); } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/ActInfoEntity.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/ActInfoEntity.java index e227b29ed5..191e639b24 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/ActInfoEntity.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/ActInfoEntity.java @@ -18,7 +18,6 @@ package com.epmet.entity; import com.baomidou.mybatisplus.annotation.TableName; - import com.epmet.commons.mybatis.entity.BaseEpmetEntity; import lombok.Data; import lombok.EqualsAndHashCode; @@ -217,4 +216,24 @@ public class ActInfoEntity extends BaseEpmetEntity { */ private Boolean summaryFlag; + /** + * 活动类型爱心活动heart 联建活动party + */ + private String actType; + + /** + * 联建单位 + */ + private String unitId; + + /** + * 活动目标 + */ + private String target; + + /** + * 服务事项 + */ + private String serviceMatter; + } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcPartyActivityEntity.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcPartyActivityEntity.java index 529bb4f34a..4919fdd133 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcPartyActivityEntity.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcPartyActivityEntity.java @@ -53,6 +53,11 @@ public class IcPartyActivityEntity extends BaseEpmetEntity { */ private String pids; + /** + * act_info表ID + */ + private String actId; + /** * 单位ID */ diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcResiDemandDictEntity.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcResiDemandDictEntity.java index 1b9a30b755..73ed4137d9 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcResiDemandDictEntity.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcResiDemandDictEntity.java @@ -79,4 +79,5 @@ public class IcResiDemandDictEntity extends BaseEpmetEntity { * 1可用,0不可用,11.17 */ private Boolean usableFlag; + } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcUserDemandOperateLogEntity.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcUserDemandOperateLogEntity.java index 9b6afa0aea..127bc1c9e3 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcUserDemandOperateLogEntity.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcUserDemandOperateLogEntity.java @@ -59,7 +59,7 @@ public class IcUserDemandOperateLogEntity extends BaseEpmetEntity { private String userId; /** - * 创建需求:create;撤销需求:cancel;指派:assign;接单:take_order;完成:finish; + * 创建需求:create;更新需求:update;撤销需求:cancel;指派:assign;接单:take_order;完成:finish;评价:evaluate */ private String actionCode; diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcUserDemandRecEntity.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcUserDemandRecEntity.java index 5979d780ed..0d54cd6184 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcUserDemandRecEntity.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcUserDemandRecEntity.java @@ -143,4 +143,32 @@ public class IcUserDemandRecEntity extends BaseEpmetEntity { */ private Boolean evaluateFlag; + /** + * 奖励积分 + */ + private Integer awardPoint; + + /** + * 服务地点,工作端指派默认居民居住房屋地址,居民端地图选择 + */ + private String serviceLocation; + + /** + * 门牌号详细地址 + */ + private String locationDetail; + + /** + * 经度,需求人是ic的居民时,取所住楼栋的中心点位 + */ + private String longitude; + + /** + * 纬度,需求人是ic的居民时,取所住楼栋的中心点位 + */ + private String latitude; + /** + * 需求人是ic的居民时,记录下住的房屋id + */ + private String demandUserHouseId; } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcUserDemandSatisfactionEntity.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcUserDemandSatisfactionEntity.java index bae8aaaff0..819fb8239d 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcUserDemandSatisfactionEntity.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcUserDemandSatisfactionEntity.java @@ -50,7 +50,7 @@ public class IcUserDemandSatisfactionEntity extends BaseEpmetEntity { private String demandRecId; /** - * 当前操作用户属于哪个端?工作端:staff;居民端:resi + * 当前操作用户属于哪个端?工作端:staff;居民端:resi;系统操作:sys */ private String userType; @@ -69,4 +69,8 @@ public class IcUserDemandSatisfactionEntity extends BaseEpmetEntity { */ private BigDecimal score; + /** + * 评价时,填写的完成情况 + */ + private String remark; } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcUserDemandServiceEntity.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcUserDemandServiceEntity.java index b2b95ec5d4..8091aff8fc 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcUserDemandServiceEntity.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcUserDemandServiceEntity.java @@ -58,6 +58,11 @@ public class IcUserDemandServiceEntity extends BaseEpmetEntity { */ private String serverId; + /** + * 服务方姓名 + */ + private String serverName; + /** * 实际服务开始时间 */ @@ -69,7 +74,7 @@ public class IcUserDemandServiceEntity extends BaseEpmetEntity { private Date serviceEndTime; /** - * 完成情况 + * 此列暂时没有用。完成情况在ic_user_demand_satisfaction.remark */ private String finishDesc; diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LatestActInfoEntity.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LatestActInfoEntity.java index 706cf0668b..491ed210f8 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LatestActInfoEntity.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/LatestActInfoEntity.java @@ -182,4 +182,24 @@ public class LatestActInfoEntity extends BaseEpmetEntity { * 数据库新增ACT_INFO_ID字段,act_info.id */ private String actInfoId; + + /** + * 活动类型爱心活动heart 联建活动party + */ + private String actType; + + /** + * 联建单位 + */ + private String unitId; + + /** + * 活动目标 + */ + private String target; + + /** + * 服务事项 + */ + private String serviceMatter; } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/VolunteerInfoEntity.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/VolunteerInfoEntity.java index fcce38bc75..0f12f0f710 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/VolunteerInfoEntity.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/VolunteerInfoEntity.java @@ -18,13 +18,10 @@ package com.epmet.entity; import com.baomidou.mybatisplus.annotation.TableName; - import com.epmet.commons.mybatis.entity.BaseEpmetEntity; import lombok.Data; import lombok.EqualsAndHashCode; -import java.util.Date; - /** * 志愿者信息 * @@ -67,4 +64,12 @@ public class VolunteerInfoEntity extends BaseEpmetEntity { * 志愿者注册,所在网格名称 */ private String gridName; + /** + * 网格所属的组织id + */ + private String pid; + /** + * 网格的所有上级 + */ + private String pids; } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/ExportCommunitySelfOrganizationExcel.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/ExportCommunitySelfOrganizationExcel.java index d8020a3345..1822610552 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/ExportCommunitySelfOrganizationExcel.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/ExportCommunitySelfOrganizationExcel.java @@ -1,31 +1,37 @@ package com.epmet.excel; -import cn.afterturn.easypoi.excel.annotation.CellStyler; import cn.afterturn.easypoi.excel.annotation.Excel; +import cn.afterturn.easypoi.excel.annotation.ExcelCollection; +import com.epmet.dto.IcCommunitySelfOrganizationPersonnelDTO; import lombok.Data; +import java.util.List; + @Data public class ExportCommunitySelfOrganizationExcel { - @Excel(name = "排序") - private Integer sort; +// @Excel(name = "排序") +// private Integer sort; - @Excel(name = "组织名称", width = 40) + @Excel(name = "组织名称", width = 40, needMerge = true) private String organizationName; - @Excel(name = "组织人数", width = 20) + @Excel(name = "组织人数", width = 20, needMerge = true) private Integer organizationPersonCount; - @Excel(name = "负责人姓名", width = 20) + @Excel(name = "负责人", width = 20, needMerge = true) private String principalName; - @Excel(name = "负责人电话", width = 20) + @Excel(name = "联系电话", width = 20, needMerge = true) private String principalPhone; - @Excel(name = "服务事项", width = 60) + @Excel(name = "服务事项", width = 60, needMerge = true) private String serviceItem; - @Excel(name = "社区自组织创建时间", width = 20) + @Excel(name = "创建时间", width = 20, needMerge = true) private String organizationCreatedTime; + @ExcelCollection(name = "组织成员") + private List organizationPersonnel; + } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/ImportCommunitySelfOrganizationSon.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/ImportCommunitySelfOrganizationSon.java index 7fb44af70e..89fb1fc458 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/ImportCommunitySelfOrganizationSon.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/ImportCommunitySelfOrganizationSon.java @@ -14,7 +14,7 @@ public class ImportCommunitySelfOrganizationSon { @Excel(name = "姓名") private String personName; - @Excel(name = "电话") + @Excel(name = "电话", width = 20) private String personPhone; } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/mq/RocketMQConsumerRegister.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/mq/RocketMQConsumerRegister.java index 3f599eefc0..2278c905e7 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/mq/RocketMQConsumerRegister.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/mq/RocketMQConsumerRegister.java @@ -4,7 +4,7 @@ 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.PartyUnitSatisfactionCalEventListener; +import com.epmet.mq.listener.ServerSatisfactionCalEventListener; import org.apache.rocketmq.common.protocol.heartbeat.MessageModel; import org.springframework.stereotype.Component; @@ -20,11 +20,11 @@ public class RocketMQConsumerRegister extends MQAbstractRegister { public void registerAllListeners(String env, MQConsumerProperties consumerProperties) { // 客户初始化监听器注册 register(consumerProperties, - ConsomerGroupConstants.CAL_PARTY_UNIT_SATISFACTION, + ConsomerGroupConstants.USER_DEMAND_FINISH_GROUP, MessageModel.CLUSTERING, - TopicConstants.CAL_PARTY_UNIT_SATISFACTION, + TopicConstants.USER_DEMAND, "*", - new PartyUnitSatisfactionCalEventListener()); + new ServerSatisfactionCalEventListener()); // ...其他监听器类似 } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/mq/listener/PartyUnitSatisfactionCalEventListener.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/mq/listener/ServerSatisfactionCalEventListener.java similarity index 77% rename from epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/mq/listener/PartyUnitSatisfactionCalEventListener.java rename to epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/mq/listener/ServerSatisfactionCalEventListener.java index b7c3abc938..606a3801c3 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/mq/listener/PartyUnitSatisfactionCalEventListener.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/mq/listener/ServerSatisfactionCalEventListener.java @@ -2,13 +2,14 @@ package com.epmet.mq.listener; import com.alibaba.fastjson.JSON; import com.epmet.commons.rocketmq.constants.MQUserPropertys; -import com.epmet.commons.rocketmq.messages.CalPartyUnitSatisfactionFormDTO; +import com.epmet.commons.rocketmq.messages.ServerSatisfactionCalFormDTO; import com.epmet.commons.tools.distributedlock.DistributedLock; 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.IcPartyUnitService; import org.apache.commons.lang.StringUtils; import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext; @@ -22,13 +23,7 @@ import org.slf4j.LoggerFactory; import java.util.List; import java.util.concurrent.TimeUnit; -/** - * @Description 计算区域化党建单位,群众满意度=分数相加➗ 需求的总个数。 - * @author wxz - * @date 2021.10.13 15:21:48 -*/ -public class PartyUnitSatisfactionCalEventListener implements MessageListenerConcurrently { - +public class ServerSatisfactionCalEventListener implements MessageListenerConcurrently { private Logger logger = LoggerFactory.getLogger(getClass()); private RedisUtils redisUtils; @@ -57,23 +52,28 @@ public class PartyUnitSatisfactionCalEventListener implements MessageListenerCon String tags = messageExt.getTags(); String pendingMsgLabel = messageExt.getUserProperty(MQUserPropertys.BLOCKED_MSG_LABEL); - logger.info("【计算区域化党建单位群众满意度事件监听器】-需求完成-收到消息内容:{},操作:{}", msg, tags); - CalPartyUnitSatisfactionFormDTO obj = JSON.parseObject(msg, CalPartyUnitSatisfactionFormDTO.class); + logger.info("【需求完成计算服务方群众满意度事件监听器】-需求完成-收到消息内容:{},操作:{}", msg, tags); + ServerSatisfactionCalFormDTO obj = JSON.parseObject(msg, ServerSatisfactionCalFormDTO.class); DistributedLock distributedLock = null; RLock lock = null; try { distributedLock = SpringContextUtils.getBean(DistributedLock.class); - lock = distributedLock.getLock(String.format("lock:ic_warn_stats:%s", obj.getCustomerId()), + lock = distributedLock.getLock(String.format("lock:user_demand:%s", obj.getCustomerId()), 30L, 30L, TimeUnit.SECONDS); - //待执行方法 - SpringContextUtils.getBean(IcPartyUnitService.class).calPartyUnitSatisfation(obj); + switch (tags) { + case SystemMessageType.CAL_PARTY_UNIT_SATISFACTION: + //区域化党建单位-计算群众满意度 + SpringContextUtils.getBean(IcPartyUnitService.class).calPartyUnitSatisfation(obj); + break; + //后面社会组织、社区自组织可能都会计算....先预备着 + } } catch (RenException e) { // 如果是我们手动抛出的异常,说明在业务可控范围内。目前不需要MQ重试 - logger.error("【计算区域化党建单位群众满意度事件监听器】-MQ失败:".concat(ExceptionUtils.getErrorStackTrace(e))); + logger.error("【需求完成计算服务方群众满意度事件监听器】-MQ失败:".concat(ExceptionUtils.getErrorStackTrace(e))); } catch (Exception e) { // 不是我们自己抛出的异常,可以让MQ重试 - logger.error("【计算区域化党建单位群众满意度监听器】-MQ失败:".concat(ExceptionUtils.getErrorStackTrace(e))); + logger.error("【需求完成计算服务方群众满意度监听器】-MQ失败:".concat(ExceptionUtils.getErrorStackTrace(e))); throw e; } finally { distributedLock.unLock(lock); @@ -83,7 +83,7 @@ public class PartyUnitSatisfactionCalEventListener implements MessageListenerCon try { removePendingMqMsgCache(pendingMsgLabel); } catch (Exception e) { - logger.error("【计算区域化党建单位群众满意度监听器】-删除mq阻塞消息缓存失败:{}", ExceptionUtils.getErrorStackTrace(e)); + logger.error("【需求完成计算服务方群众满意度监听器】-删除mq阻塞消息缓存失败:{}", ExceptionUtils.getErrorStackTrace(e)); } } } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcCommunitySelfOrganizationService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcCommunitySelfOrganizationService.java index 4445d2f82b..9f8c8f4682 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcCommunitySelfOrganizationService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcCommunitySelfOrganizationService.java @@ -158,4 +158,6 @@ public interface IcCommunitySelfOrganizationService extends BaseService queryListById(List communityOrgIds); } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPartyActivityService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPartyActivityService.java index c3931bbd0b..c36db9b2d6 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPartyActivityService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPartyActivityService.java @@ -117,4 +117,22 @@ public interface IcPartyActivityService extends BaseService getActivityList(TokenDto tokenDto, PartyActivityFormDTO formDTO); + + /** + * 根据爱心活动ID获取联建活动 + * @Param actId + * @Return {@link IcPartyActivityDTO} + * @Author zhaoqifeng + * @Date 2021/12/23 16:13 + */ + IcPartyActivityDTO getActivityByActId(String actId); + + /** + * 根据爱心活动ID删除联建活动 + * @Param actId + * @Return {@link IcPartyActivityDTO} + * @Author zhaoqifeng + * @Date 2021/12/23 16:13 + */ + void deleteByActId(String actId); } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPartyUnitService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPartyUnitService.java index b844a95bf6..22e69d652e 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPartyUnitService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcPartyUnitService.java @@ -18,8 +18,8 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.commons.rocketmq.messages.ServerSatisfactionCalFormDTO; import com.epmet.commons.tools.dto.result.OptionDataResultDTO; -import com.epmet.commons.rocketmq.messages.CalPartyUnitSatisfactionFormDTO; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; @@ -156,5 +156,7 @@ public interface IcPartyUnitService extends BaseService { * 计算区域化党建单位的群众满意度 * @param formDTO */ - void calPartyUnitSatisfation(CalPartyUnitSatisfactionFormDTO formDTO); + void calPartyUnitSatisfation(ServerSatisfactionCalFormDTO formDTO); + + List queryListById(List partyUnitIds); } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcResiDemandDictService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcResiDemandDictService.java index 12cbaf7dad..b3adf2301c 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcResiDemandDictService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcResiDemandDictService.java @@ -22,6 +22,7 @@ import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.form.demand.*; +import com.epmet.dto.result.demand.DemandCategoryResDTO; import com.epmet.dto.result.demand.DemandPageResDTO; import com.epmet.dto.result.demand.OptionDTO; import com.epmet.entity.IcResiDemandDictEntity; @@ -119,4 +120,30 @@ public interface IcResiDemandDictService extends BaseService queryCategoryList(String customerId); + + /** + * 居民端,我有需求,最近预约,显示最近预约过的五个需求,按照预约时间倒 + * @param userId + * @param customerId + * @return + */ + List queryLatestOrder(String userId, String customerId); } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcSocietyOrgService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcSocietyOrgService.java index f2646de029..747ff6f14b 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcSocietyOrgService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcSocietyOrgService.java @@ -18,6 +18,7 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.dto.IcSocietyOrgDTO; import com.epmet.dto.form.AddSocietyOrgFormDTO; import com.epmet.dto.form.EditSocietyOrgFormDTO; import com.epmet.dto.form.GetListSocietyOrgFormDTO; @@ -75,4 +76,7 @@ public interface IcSocietyOrgService extends BaseService { **/ List importExcel(String customerId, List list, String staffId, List numList) throws ParseException; + List queryListById(List socialOrgIds); + + IcSocietyOrgDTO get(String id); } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcUserDemandRecService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcUserDemandRecService.java index d17b6b3bfc..da3fd68cdf 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcUserDemandRecService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcUserDemandRecService.java @@ -21,16 +21,10 @@ import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; import com.epmet.dto.IcUserDemandRecDTO; import com.epmet.dto.form.demand.*; -import com.epmet.dto.result.demand.CategoryAnalysisResDTO; -import com.epmet.dto.result.demand.DemandRecResultDTO; -import com.epmet.dto.result.demand.DemandResearchAnalysisResultDTO; -import com.epmet.dto.result.demand.FinishResultDTO; -import com.epmet.dto.result.demand.IcResiUserReportDemandRes; -import com.epmet.dto.result.demand.ServiceStatDTO; +import com.epmet.dto.result.demand.*; import com.epmet.entity.IcUserDemandRecEntity; import java.util.List; -import java.util.Map; /** * 居民需求记录表 @@ -40,25 +34,6 @@ import java.util.Map; */ public interface IcUserDemandRecService extends BaseService { - /** - * 默认分页 - * - * @param params - * @return PageData - * @author generator - * @date 2021-11-19 - */ - PageData page(Map params); - - /** - * 默认查询 - * - * @param params - * @return java.util.List - * @author generator - * @date 2021-11-19 - */ - List list(Map params); /** * 单条查询 @@ -70,16 +45,6 @@ public interface IcUserDemandRecService extends BaseService pageList(UserDemandPageFormDTO formDTO); /** - * 未完成之前都可以取消 + * 未完成之前都可以取消,pc和居民端小程序内部通用 * * @param formDTO */ - void cancel(StaffCancelFormDTO formDTO); + void cancel(CancelDemandFormDTO formDTO); /** * 指派 @@ -176,8 +141,77 @@ public interface IcUserDemandRecService extends BaseService groupByServer(String customerId, String serverId,String serviceType); + + /** + * 居民端-需求大厅(未处理、处理中、已完成) + * @param formDTO + * @return + */ + List listHall(ListHallFormDTO formDTO); + + /** + * 需求大厅-需求详情 + * @param formDTO + * @return + */ + DemandDetailResDTO queryDetailHall(DemandDetailFormDTO formDTO); + + /** + * 需求大厅-我要接单 + * @param formDTO * @return */ - List groupByPartyUnit(String customerId, String partyUnitId); + TakeOrderResultDTO takeOrder(TakeOrderFormDTO formDTO); + + /** + * 居民端-我的需求-服务评价 + * + * @param formDTO + * @return + */ + FinishResultDTO evaluate(EvaluateDemandFormDTO formDTO); + + /** + * 居民端,我有需求,最近预约,显示最近预约过的五个需求,按照预约时间倒 + * 查询最近预约的5个编码 + * + * @param userId + * @return + */ + List getLatestRegCode(String userId); + + /** + * 居民端-我的需求(待处理,处理中,已完成,已取消) + * @param formDTO + * @return + */ + List queryMyDemandForResiClient(ResiClientMyDemandFormDTO formDTO); + + /** + * 我的需求-需求详情(待处理,处理中,已完成,已取消) + * @param formDTO + * @return + */ + DemandDetailResDTO queryMyDetail(DemandDetailFormDTO formDTO); + + /** + * 居民端-我的需求:提交需求,修改需求 + * @param formDTO + * @return + */ + DemandRecId saveOrUpdateDemand(ReportDemandFormDTO formDTO); + + /** + * 当前用户与需求消息的关系 需求发布人:publisher ;服务人:server + * + * @param formDTO + * @return + */ + UserDemandRelResDTO queryUserDemandRel(UserDemandRelFormDTO formDTO); + } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcUserDemandSatisfactionService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcUserDemandSatisfactionService.java new file mode 100644 index 0000000000..935064aa49 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcUserDemandSatisfactionService.java @@ -0,0 +1,14 @@ +package com.epmet.service; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.dto.form.AutoEvaluateDemandFormDTO; +import com.epmet.entity.IcUserDemandSatisfactionEntity; + +public interface IcUserDemandSatisfactionService extends BaseService { + /** + * + * @param formDTO + * @return + */ + void evaluateDemandAuto(AutoEvaluateDemandFormDTO formDTO); +} diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/VolunteerInfoService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/VolunteerInfoService.java index 4fa082f5e3..f9db916bbe 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/VolunteerInfoService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/VolunteerInfoService.java @@ -42,13 +42,12 @@ public interface VolunteerInfoService extends BaseService { /** * 志愿者认证 * - * @param tokenDto * @param formDTO * @return com.epmet.commons.tools.utils.Result * @Author zhangyong * @Date 10:09 2020-07-23 **/ - Result authenticate(TokenDto tokenDto, ResiVolunteerAuthenticateFormDTO formDTO); + void authenticate(ResiVolunteerAuthenticateFormDTO formDTO); /** * 志愿者认证界面,获取用户基础信息+志愿者信息 @@ -94,14 +93,22 @@ public interface VolunteerInfoService extends BaseService { * @param customerId * @return */ - List queryListVolunteer(String customerId,String userRealName); + List queryListVolunteer(String customerId,String staffId,String userRealName); - List queryVolunteerPage(String customerId, Integer pageNo, Integer pageSize); + /** + * @param customerId + * @param pageNo + * @param pageSize + * @param agencyId 组织ID,使用PIDS like,查询该组织"及下级"所有志愿者 + * @return + */ + List queryVolunteerPage(String customerId, Integer pageNo, Integer pageSize, String agencyId); /** * 查询志愿者数量 * @param customerId + * @param agencyId 组织ID,查询该组织"及下级"下所有的志愿者 * @return */ - Integer getVolunteerCount(String customerId); + Integer getVolunteerCount(String customerId, String agencyId); } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/WorkActService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/WorkActService.java index bc72cc7d67..d470f3571f 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/WorkActService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/WorkActService.java @@ -38,7 +38,7 @@ public interface WorkActService { * @Date 2020/7/21 18:33 **/ PublishActResultDTO publishAct(PublishActInfoFormDTO formDTO); - + PublishActResultDTO publishActV2(PublishActInfoFormDTO formDTO); /** * @return com.epmet.dto.result.work.InProgressActResultDTO * @param formDTO @@ -82,7 +82,7 @@ public interface WorkActService { * @description 已取消-活动详情 * @Date 2020/7/26 18:00 **/ - CanceledActDetailResultDTO canceledDetail(String actId); + CanceledActDetailResultDTO canceledDetail(String customerId, String actId); /** * @return void @@ -109,7 +109,7 @@ public interface WorkActService { * @description 进行中-活动详情 * @Date 2020/7/26 21:34 **/ - InProgressActDetailResultDTO inProgressDetail(String actId); + InProgressActDetailResultDTO inProgressDetail(String customerId, String actId); /** * @return void @@ -136,7 +136,7 @@ public interface WorkActService { * @description 重新编辑-获取活动详情 * @Date 2020/7/27 13:36 **/ - ReEditActInfoResultDTO getActInfo(String actId); + ReEditActInfoResultDTO getActInfo(String customerId, String actId); /** * @return com.epmet.dto.result.work.PublishActResultDTO @@ -146,6 +146,6 @@ public interface WorkActService { * @Date 2020/7/27 13:55 **/ PublishActResultDTO rePublish(RePublishFormDTO rePublishFormDTO); - + PublishActResultDTO rePublishV2(RePublishFormDTO rePublishFormDTO); void testGrantPoint(TestGrantFormDTO formDTO); } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActInfoServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActInfoServiceImpl.java index eb2cd42af7..983c4834a2 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActInfoServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActInfoServiceImpl.java @@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; @@ -33,12 +34,17 @@ import com.epmet.dao.ActInfoDao; import com.epmet.dao.ActUserRelationDao; import com.epmet.dao.HeartUserInfoDao; import com.epmet.dto.ActInfoDTO; +import com.epmet.dto.IcPartyUnitDTO; +import com.epmet.dto.form.demand.SubCodeFormDTO; import com.epmet.dto.form.resi.*; +import com.epmet.dto.result.demand.OptionDTO; import com.epmet.dto.result.resi.*; import com.epmet.entity.ActInfoEntity; import com.epmet.entity.ActUserRelationEntity; import com.epmet.service.ActInfoService; import com.epmet.service.ActUserRelationService; +import com.epmet.service.IcPartyUnitService; +import com.epmet.service.IcResiDemandDictService; import com.epmet.utils.CaculateDistance; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; @@ -47,7 +53,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.*; +import java.util.stream.Collectors; /** * 活动信息 @@ -68,6 +76,10 @@ public class ActInfoServiceImpl extends BaseServiceImpl page(Map params) { @@ -245,6 +257,20 @@ public class ActInfoServiceImpl extends BaseServiceImpl categoryMap = icResiDemandDictService.querySubCodeList(codeFormDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); + detailResultDTO.setServiceMatterName(categoryMap.get(detailResultDTO.getServiceMatter())); + } + if (StringUtils.isNotBlank(detailResultDTO.getUnitId())) { + //获取单位名称 + IcPartyUnitDTO unitDTO = icPartyUnitService.get(detailResultDTO.getUnitId()); + detailResultDTO.setUnitName(null != unitDTO ? unitDTO.getUnitName() : StrConstant.EPMETY_STR); + } return new Result().ok(detailResultDTO); } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActLiveRecServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActLiveRecServiceImpl.java index c745c98192..3c7d9a6647 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActLiveRecServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/ActLiveRecServiceImpl.java @@ -36,16 +36,19 @@ import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.ScanContentUtils; import com.epmet.commons.tools.utils.SendMqMsgUtils; +import com.epmet.constant.SystemMessageType; import com.epmet.dao.ActLivePicDao; import com.epmet.dao.ActLiveRecDao; import com.epmet.dto.ActInfoDTO; import com.epmet.dto.ActLivePicDTO; import com.epmet.dto.ActLiveRecDTO; +import com.epmet.dto.form.SystemMsgFormDTO; import com.epmet.dto.form.resi.ResiActInsertLiveFormDTO; import com.epmet.dto.result.UserBaseInfoResultDTO; import com.epmet.dto.result.resi.ResiActLiveRecResultDTO; import com.epmet.entity.ActLivePicEntity; import com.epmet.entity.ActLiveRecEntity; +import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.redis.ActLiveRecRedis; import com.epmet.service.ActInfoService; @@ -80,6 +83,9 @@ public class ActLiveRecServiceImpl extends BaseServiceImpl actPointEventMsgList=new ArrayList<>(); BasePointEventMsg actPointEventMsg=new BasePointEventMsg(); actPointEventMsg.setCustomerId(formDTO.getCustomerId()); @@ -242,8 +248,14 @@ public class ActLiveRecServiceImpl extends BaseServiceImpl l = new LambdaQueryWrapper<>(); l.eq(IcCommunitySelfOrganizationEntity::getOrganizationName,formDTO.getOrganizationName()) .eq(IcCommunitySelfOrganizationEntity::getCustomerId,customerId) @@ -163,6 +170,14 @@ public class IcCommunitySelfOrganizationServiceImpl extends BaseServiceImpl { + boolean m = PhoneValidatorUtils.isMobile(p.getPersonPhone()); + boolean t = PhoneValidatorUtils.isTel(p.getPersonPhone()); + if (!m && !t){ + throw new EpmetException(EpmetErrorCode.CHECK_PHONE_ERROR.getCode()); + } + }); List persons = ConvertUtils.sourceToTarget(formDTO.getOrganizationPersonnel(), IcCommunitySelfOrganizationPersonnelEntity.class); Map> groupPhone = persons.stream().collect(Collectors.groupingBy(IcCommunitySelfOrganizationPersonnelEntity::getPersonPhone)); List phones = new ArrayList<>(); @@ -199,6 +214,11 @@ public class IcCommunitySelfOrganizationServiceImpl extends BaseServiceImpl l = new LambdaQueryWrapper<>(); l.eq(IcCommunitySelfOrganizationEntity::getOrganizationName,formDTO.getOrganizationName()) .eq(IcCommunitySelfOrganizationEntity::getCustomerId,tokenDto.getCustomerId()) @@ -214,6 +234,13 @@ public class IcCommunitySelfOrganizationServiceImpl extends BaseServiceImpl { + boolean mobile = PhoneValidatorUtils.isMobile(p.getPersonPhone()); + boolean tel = PhoneValidatorUtils.isTel(p.getPersonPhone()); + if (!mobile && !tel){ + throw new EpmetException(EpmetErrorCode.CHECK_PHONE_ERROR.getCode()); + } + }); List persons = ConvertUtils.sourceToTarget(formDTO.getOrganizationPersonnel(), IcCommunitySelfOrganizationPersonnelEntity.class); Map> groupPhone = persons.stream().collect(Collectors.groupingBy(IcCommunitySelfOrganizationPersonnelEntity::getPersonPhone)); List phones = new ArrayList<>(); @@ -335,7 +362,16 @@ public class IcCommunitySelfOrganizationServiceImpl extends BaseServiceImpl testExcelImportResult = ExcelPoiUtils.importExcelMore(file, 0, 2, ImportCommunitySelfOrganization.class); List list = testExcelImportResult.getList(); + if (CollectionUtils.isNotEmpty(list)){ + // 号码校验 + list.forEach(p -> { + boolean m = PhoneValidatorUtils.isMobile(p.getPrincipalPhone()); + boolean t = PhoneValidatorUtils.isTel(p.getPrincipalPhone()); + if (!m && !t){ + throw new EpmetException(EpmetErrorCode.CHECK_PHONE_ERROR.getCode()); + } + }); String customerId = tokenDto.getCustomerId(); List existsNames = baseDao.selectOrgByOrgName(list.stream().map(ImportCommunitySelfOrganization::getOrganizationName).collect(Collectors.toList()), customerId); Map> groupByName = list.stream().collect(Collectors.groupingBy(ImportCommunitySelfOrganization::getOrganizationName)); @@ -372,6 +408,13 @@ public class IcCommunitySelfOrganizationServiceImpl extends BaseServiceImpl { + boolean m = PhoneValidatorUtils.isMobile(p.getPersonPhone()); + boolean t = PhoneValidatorUtils.isTel(p.getPersonPhone()); + if (!m && !t){ + throw new EpmetException(EpmetErrorCode.CHECK_PHONE_ERROR.getCode()); + } + }); List persons = ConvertUtils.sourceToTarget(l.getPersons(), IcCommunitySelfOrganizationPersonnelEntity.class); Map> groupByPhone = persons.stream().collect(Collectors.groupingBy(IcCommunitySelfOrganizationPersonnelEntity::getPersonPhone)); List phones = new ArrayList<>(); @@ -399,4 +442,12 @@ public class IcCommunitySelfOrganizationServiceImpl extends BaseServiceImpl queryListById(List communityOrgIds) { + if(CollectionUtils.isNotEmpty(communityOrgIds)){ + return baseDao.selectBatchIds(communityOrgIds); + } + return Collections.EMPTY_LIST; + } + } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyActivityServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyActivityServiceImpl.java index bfb076ac96..67391ef70c 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyActivityServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyActivityServiceImpl.java @@ -383,6 +383,40 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl(dtoList, pageInfo.getTotal()); } + /** + * 根据爱心活动ID获取联建活动 + * + * @param actId + * @Param actId + * @Return {@link IcPartyActivityDTO} + * @Author zhaoqifeng + * @Date 2021/12/23 16:13 + */ + @Override + public IcPartyActivityDTO getActivityByActId(String actId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(IcPartyActivityEntity::getActId, actId); + IcPartyActivityEntity entity = baseDao.selectOne(wrapper); + return ConvertUtils.sourceToTarget(entity, IcPartyActivityDTO.class); + } + + /** + * 根据爱心活动ID删除联建活动 + * + * @param actId + * @Param actId + * @Return {@link IcPartyActivityDTO} + * @Author zhaoqifeng + * @Date 2021/12/23 16:13 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteByActId(String actId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(IcPartyActivityEntity::getActId, actId); + baseDao.delete(wrapper); + } + /** * 近30天开始时间和结束时间 (精确到秒) * @Param formDTO diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java index 228887fb76..3850acd354 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyUnitServiceImpl.java @@ -22,7 +22,7 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; -import com.epmet.commons.rocketmq.messages.CalPartyUnitSatisfactionFormDTO; +import com.epmet.commons.rocketmq.messages.ServerSatisfactionCalFormDTO; import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; @@ -459,10 +459,11 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl list = icUserDemandRecService.groupByPartyUnit(formDTO.getCustomerId(), formDTO.getPartyUnitId()); + List list = icUserDemandRecService.groupByServer(formDTO.getCustomerId(), formDTO.getServerId(),formDTO.getServiceType()); for (ServiceStatDTO serviceStatDTO : list) { if (0 != serviceStatDTO.getDemandCount()) { BigDecimal result = serviceStatDTO.getTotalScore().divide(new BigDecimal(serviceStatDTO.getDemandCount()), 4, BigDecimal.ROUND_HALF_UP); @@ -471,6 +472,14 @@ public class IcPartyUnitServiceImpl extends BaseServiceImpl queryListById(List partyUnitIds) { + if(CollectionUtils.isNotEmpty(partyUnitIds)){ + return baseDao.selectBatchIds(partyUnitIds); + } + return Collections.EMPTY_LIST; + } + private String getServiceMatter(Map map, String matter) { List matters = Arrays.asList(matter.split(StrConstant.COLON)); List list = matters.stream().map(map::get).collect(Collectors.toList()); diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcResiDemandDictServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcResiDemandDictServiceImpl.java index 8dfd1599cf..0e352910c6 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcResiDemandDictServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcResiDemandDictServiceImpl.java @@ -17,6 +17,7 @@ package com.epmet.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.FieldConstant; @@ -24,27 +25,29 @@ import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.RenException; 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.IcResiDemandDictDao; import com.epmet.dto.form.demand.*; +import com.epmet.dto.result.demand.DemandCategoryResDTO; import com.epmet.dto.result.demand.DemandPageResDTO; import com.epmet.dto.result.demand.OptionDTO; import com.epmet.entity.IcResiDemandDictEntity; import com.epmet.service.IcResiDemandDictService; +import com.epmet.service.IcUserDemandRecService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 居民需求字典表 @@ -55,6 +58,8 @@ import java.util.Map; @Slf4j @Service public class IcResiDemandDictServiceImpl extends BaseServiceImpl implements IcResiDemandDictService { + @Autowired + private IcUserDemandRecService icUserDemandRecService; /** * 分页查询 @@ -78,7 +83,7 @@ public class IcResiDemandDictServiceImpl extends BaseServiceImpl NumConstant.ZERO) { // 名称唯一 - throw new RenException(EpmetErrorCode.DEMAND_NAME_EXITED.getCode(), EpmetErrorCode.DEMAND_NAME_EXITED.getMsg()); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), String.format("【%s】已存在", formDTO.getCategoryName()), "分类名称已存在"); } IcResiDemandDictEntity entity = new IcResiDemandDictEntity(); @@ -105,7 +110,7 @@ public class IcResiDemandDictServiceImpl extends BaseServiceImpl NumConstant.ZERO) { // 名称唯一 - throw new RenException(EpmetErrorCode.DEMAND_NAME_EXITED.getCode(), EpmetErrorCode.DEMAND_NAME_EXITED.getMsg()); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), String.format("【%s】已存在", formDTO.getCategoryName()), "分类名称已存在"); } IcResiDemandDictEntity entity = new IcResiDemandDictEntity(); @@ -158,7 +163,7 @@ public class IcResiDemandDictServiceImpl extends BaseServiceImpl NumConstant.ZERO) { // 名称唯一 - throw new RenException(EpmetErrorCode.DEMAND_NAME_EXITED.getCode(), EpmetErrorCode.DEMAND_NAME_EXITED.getMsg()); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), String.format("【%s】已存在", formDTO.getCategoryName()), "分类名称已存在"); } origin.setCategoryName(formDTO.getCategoryName()); if (NumConstant.TWO == origin.getLevel()) { @@ -258,5 +263,66 @@ public class IcResiDemandDictServiceImpl extends BaseServiceImpl queryCategoryList(String customerId) { + List list=new ArrayList<>(); + LambdaQueryWrapper wrapper=new LambdaQueryWrapper(); + wrapper.eq(IcResiDemandDictEntity::getCustomerId,customerId); + wrapper.eq(IcResiDemandDictEntity::getUsableFlag,true); + wrapper.eq(IcResiDemandDictEntity::getParentCode,NumConstant.ZERO_STR); + wrapper.orderByAsc(IcResiDemandDictEntity::getSort); + List first=baseDao.selectList(wrapper); + first.forEach(dto->{ + DemandCategoryResDTO resultDto= ConvertUtils.sourceToTarget(dto,DemandCategoryResDTO.class); + resultDto.setCategoryId(dto.getId()); + + LambdaQueryWrapper query=new LambdaQueryWrapper(); + query.eq(IcResiDemandDictEntity::getCustomerId,customerId); + query.eq(IcResiDemandDictEntity::getUsableFlag,true); + query.eq(IcResiDemandDictEntity::getParentCode,dto.getCategoryCode()); + query.orderByAsc(IcResiDemandDictEntity::getSort); + List sub=baseDao.selectList(query); + + List children=new ArrayList<>(); + sub.forEach(subDto->{ + DemandCategoryResDTO subDTO= ConvertUtils.sourceToTarget(subDto,DemandCategoryResDTO.class); + subDTO.setCategoryId(subDto.getId()); + children.add(subDTO); + }); + resultDto.setChildren(children); + list.add(resultDto); + }); + return list; + } + + /** + * 居民端,我有需求,最近预约,显示最近预约过的五个需求,按照预约时间倒 + * + * @param userId + * @param customerId + * @return + */ + @Override + public List queryLatestOrder(String userId, String customerId) { + List categoryCodes=icUserDemandRecService.getLatestRegCode(userId); + if(CollectionUtils.isNotEmpty(categoryCodes)){ + //限制未被禁用的 + return baseDao.selectListByCodes(customerId,categoryCodes); + } + return new ArrayList<>(); + } + } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcSocietyOrgServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcSocietyOrgServiceImpl.java index e9fc54a6f1..5d2a554c60 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcSocietyOrgServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcSocietyOrgServiceImpl.java @@ -117,7 +117,9 @@ public class IcSocietyOrgServiceImpl extends BaseServiceImpl result = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(), formDTO.getIsPage()).doSelectPageInfo(() -> baseDao.getList(formDTO)); @@ -268,4 +270,18 @@ public class IcSocietyOrgServiceImpl extends BaseServiceImpl queryListById(List socialOrgIds) { + if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(socialOrgIds)){ + return baseDao.selectBatchIds(socialOrgIds); + } + return Collections.EMPTY_LIST; + } + + @Override + public IcSocietyOrgDTO get(String id) { + IcSocietyOrgEntity entity=baseDao.selectById(id); + return ConvertUtils.sourceToTarget(entity,IcSocietyOrgDTO.class); + } + } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java index dfab2f5bb7..34f7f2070f 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java @@ -19,9 +19,8 @@ package com.epmet.service.impl; 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.FieldConstant; +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.result.CustomerStaffInfoCacheResult; @@ -31,28 +30,30 @@ 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.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.ConvertUtils; import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.ScanContentUtils; +import com.epmet.constant.ReadFlagConstant; import com.epmet.constant.UserDemandConstant; +import com.epmet.constant.UserMessageTypeConstant; import com.epmet.dao.IcUserDemandOperateLogDao; import com.epmet.dao.IcUserDemandRecDao; import com.epmet.dao.IcUserDemandSatisfactionDao; import com.epmet.dao.IcUserDemandServiceDao; -import com.epmet.dto.CustomerAgencyDTO; -import com.epmet.dto.CustomerGridDTO; -import com.epmet.dto.IcUserDemandRecDTO; -import com.epmet.dto.form.CustomerGridFormDTO; -import com.epmet.dto.form.FindIcUserFormDTO; -import com.epmet.dto.form.ResiUserFormDTO; +import com.epmet.dto.*; +import com.epmet.dto.form.*; import com.epmet.dto.form.demand.*; import com.epmet.dto.result.*; import com.epmet.dto.result.demand.*; import com.epmet.entity.*; import com.epmet.feign.EpmetAdminOpenFeignClient; +import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.GovOrgOpenFeignClient; -import com.epmet.service.IcResiDemandDictService; -import com.epmet.service.IcUserDemandRecService; +import com.epmet.service.*; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; @@ -60,6 +61,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -90,62 +92,44 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl page(Map params) { - IPage page = baseDao.selectPage( - getPage(params, FieldConstant.CREATED_TIME, false), - getWrapper(params) - ); - return getPageData(page, IcUserDemandRecDTO.class); - } - - @Override - public List list(Map params) { - List entityList = baseDao.selectList(getWrapper(params)); - - return ConvertUtils.sourceToTarget(entityList, IcUserDemandRecDTO.class); - } - - private QueryWrapper getWrapper(Map params){ - String id = (String)params.get(FieldConstant.ID_HUMP); - - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); - - return wrapper; - } - @Override public IcUserDemandRecDTO get(String id) { IcUserDemandRecEntity entity = baseDao.selectById(id); return ConvertUtils.sourceToTarget(entity, IcUserDemandRecDTO.class); } - @Override - @Transactional(rollbackFor = Exception.class) - public void save(IcUserDemandRecDTO dto) { - IcUserDemandRecEntity entity = ConvertUtils.sourceToTarget(dto, IcUserDemandRecEntity.class); - insert(entity); - } - @Override @Transactional(rollbackFor = Exception.class) public DemandRecId update(DemandAddFromDTO dto) { IcUserDemandRecEntity origin = baseDao.selectById(dto.getDemandRecId()); if (null == origin) { - throw new RenException(EpmetErrorCode.DEMAND_NOT_EXITS.getCode(), EpmetErrorCode.DEMAND_NOT_EXITS.getMsg()); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "需求不存在", EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getMsg()); } if(!UserDemandConstant.PENDING.equals(origin.getStatus())){ //待处理的才可以修改需求 - throw new RenException(EpmetErrorCode.DEMAND_CAN_NOT_UPDATE.getCode(),EpmetErrorCode.DEMAND_CAN_NOT_UPDATE.getMsg()); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), String.format("需求当前状态为【%s】,不允许重新编辑", origin.getStatus()), "需求已处理,不允许重新编辑"); } CustomerGridFormDTO customerGridFormDTO=new CustomerGridFormDTO(); customerGridFormDTO.setGridId(dto.getGridId()); Result gridInfoRes=govOrgOpenFeignClient.getGridBaseInfoByGridId(customerGridFormDTO); if(!gridInfoRes.success()||null==gridInfoRes.getData()){ - throw new RenException("查询网格信息失败"); + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(),"查询网格信息失败"); } IcUserDemandRecEntity updateEntity=ConvertUtils.sourceToTarget(dto,IcUserDemandRecEntity.class); updateEntity.setAgencyId(gridInfoRes.getData().getPid()); @@ -154,6 +138,32 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl demandUserRes=epmetUserOpenFeignClient.getIcResiUserDTO(dto.getDemandUserId()); + if(!demandUserRes.success()||null==demandUserRes.getData()){ + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "查询需求人信息异常"); + } + updateEntity.setDemandUserHouseId(demandUserRes.getData().getHomeId()); + // 查询需求人的居住地址 + Set houseIds=new HashSet<>(); + houseIds.add(updateEntity.getDemandUserHouseId()); + Result> houseInfoRes=govOrgOpenFeignClient.queryListHouseInfo(houseIds); + if(!houseInfoRes.success()||CollectionUtils.isEmpty(houseInfoRes.getData())){ + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "查询需求人房屋地址信息异常"+JSON.toJSONString(houseInfoRes)); + } + HouseInfoDTO houseInfoDTO=houseInfoRes.getData().get(NumConstant.ZERO); + updateEntity.setServiceLocation(houseInfoDTO.getNeighborAddress(). + concat(houseInfoDTO.getNeighborHoodName()) + .concat(houseInfoDTO.getBuildingName()) + .concat(houseInfoDTO.getUnitName()) + .concat(houseInfoDTO.getDoorName())); + updateEntity.setLongitude(houseInfoDTO.getBuildingLongitude()); + updateEntity.setLatitude(houseInfoDTO.getBuildingLatitude()); baseDao.updateById(updateEntity); IcUserDemandOperateLogEntity logEntity=new IcUserDemandOperateLogEntity(); @@ -189,7 +199,7 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl gridInfoRes=govOrgOpenFeignClient.getGridBaseInfoByGridId(customerGridFormDTO); if(!gridInfoRes.success()||null==gridInfoRes.getData()){ - throw new RenException("查询网格信息失败"); + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(),"查询网格信息失败"); } IcUserDemandRecEntity insertEntity=ConvertUtils.sourceToTarget(fromDTO,IcUserDemandRecEntity.class); insertEntity.setAgencyId(gridInfoRes.getData().getPid()); @@ -197,6 +207,30 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl demandUserRes=epmetUserOpenFeignClient.getIcResiUserDTO(fromDTO.getDemandUserId()); + if(!demandUserRes.success()||null==demandUserRes.getData()){ + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "查询需求人信息异常"+ JSON.toJSONString(demandUserRes)); + } + insertEntity.setDemandUserHouseId(demandUserRes.getData().getHomeId()); + // 查询需求人的居住地址 + Set houseIds=new HashSet<>(); + houseIds.add(insertEntity.getDemandUserHouseId()); + Result> houseInfoRes=govOrgOpenFeignClient.queryListHouseInfo(houseIds); + if(!houseInfoRes.success()||CollectionUtils.isEmpty(houseInfoRes.getData())){ + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "查询需求人房屋地址信息异常"+JSON.toJSONString(houseInfoRes)); + } + HouseInfoDTO houseInfoDTO=houseInfoRes.getData().get(NumConstant.ZERO); + insertEntity.setServiceLocation(houseInfoDTO.getNeighborAddress(). + concat(houseInfoDTO.getNeighborHoodName())); + insertEntity.setLocationDetail(houseInfoDTO.getBuildingName().concat(StrConstant.HYPHEN).concat(houseInfoDTO.getUnitName()).concat(StrConstant.HYPHEN).concat(houseInfoDTO.getDoorName())); + insertEntity.setLongitude(houseInfoDTO.getBuildingLongitude()); + insertEntity.setLatitude(houseInfoDTO.getBuildingLatitude()); baseDao.insert(insertEntity); IcUserDemandOperateLogEntity logEntity=new IcUserDemandOperateLogEntity(); logEntity.setCustomerId(fromDTO.getCustomerId()); @@ -215,7 +249,7 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl pageList(UserDemandPageFormDTO formDTO) { CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getCurrentStaffId()); if (null == staffInfo) { - throw new RenException("工作人员所属组织信息查询异常"); + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(),"工作人员所属组织信息查询异常"); } if (StringUtils.isBlank(staffInfo.getAgencyPIds())|| NumConstant.ZERO_STR.equals(staffInfo.getAgencyPIds())) { //当前用户属于根组织下的人 @@ -241,11 +275,11 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl userInfoMap=new HashMap<>(); - Set userIdList=list.stream().filter(item->item.getServiceType().equals(UserDemandConstant.VOLUNTEER)).map(DemandRecResultDTO::getServerId).collect(Collectors.toSet()); + Set userIdList=list.stream().filter(item->null!=item.getServiceType()&&item.getServiceType().equals(UserDemandConstant.VOLUNTEER)).map(DemandRecResultDTO::getServerId).collect(Collectors.toSet()); if(CollectionUtils.isNotEmpty(userIdList)){ Result> userInfoRes = epmetUserOpenFeignClient.queryUserBaseInfo(new ArrayList<>(userIdList)); if(!userInfoRes.success()||CollectionUtils.isEmpty(userInfoRes.getData())){ - throw new RenException("查询志愿者信息异常"); + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(),"查询志愿者信息异常"); } userInfoMap=userInfoRes.getData().stream().collect(Collectors.toMap(UserBaseInfoResultDTO::getUserId, UserBaseInfoResultDTO::getRealName)); } @@ -274,76 +308,31 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl(list, pageInfo.getTotal()); } /** - * 未完成之前都可以取消 + * 未完成之前都可以取消,pc和居民端小程序内部通用 * * @param formDTO */ @Transactional(rollbackFor = Exception.class) @Override - public void cancel(StaffCancelFormDTO formDTO) { + public void cancel(CancelDemandFormDTO formDTO) { IcUserDemandRecEntity entity = baseDao.selectById(formDTO.getDemandRecId()); if (null == entity) { - throw new RenException(EpmetErrorCode.DEMAND_NOT_EXITS.getCode(), EpmetErrorCode.DEMAND_NOT_EXITS.getMsg()); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "需求不存在", EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getMsg()); } - if (UserDemandConstant.FINISH.equals(entity.getStatus())) { + if (UserDemandConstant.FINISH.equals(entity.getStatus()) || UserDemandConstant.CANCELED.equals(entity.getStatus())) { //需求已完成,不可取消 - throw new RenException(EpmetErrorCode.DEMAND_CAN_NOT_CANCEL.getCode(),EpmetErrorCode.DEMAND_CAN_NOT_CANCEL.getMsg()); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), String.format("需求当前状态为【%s】,不可取消需求", entity.getStatus()), "当前状态,不可取消"); } //1、修改主表 //置为取消状态、设置取消时间 @@ -351,14 +340,12 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl> userInfoRes = epmetUserOpenFeignClient.queryUserBaseInfo(Arrays.asList(serverId)); + if (!userInfoRes.success() || CollectionUtils.isEmpty(userInfoRes.getData())) { + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "查询志愿者信息异常","志愿者信息查询异常"); + } + serviceName=userInfoRes.getData().get(NumConstant.ZERO).getRealName(); + break; + default: + log.warn("serviceType 错误"); + break; + } + return serviceName; } /** @@ -414,62 +448,95 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl 100 ? entity.getContent().substring(0, 99) : entity.getContent(); + finishResultDTO.setRemark(String.format(UserDemandConstant.GRANT_POINT_REMARK,entity.getDemandUserName(),content)); + finishResultDTO.setFinishResult(StringUtils.isNotBlank(formDTO.getFinishResult())?formDTO.getFinishResult():UserDemandConstant.UN_RESOLVED); } - //1、修改主表 - entity.setStatus(UserDemandConstant.FINISHED); - entity.setFinishResult(formDTO.getFinishResult()); - entity.setEvaluateFlag(true); baseDao.updateById(entity); - //2、插入操作日志 - IcUserDemandOperateLogEntity logEntity = new IcUserDemandOperateLogEntity(); - logEntity.setCustomerId(formDTO.getCustomerId()); - logEntity.setDemandRecId(formDTO.getDemandRecId()); - logEntity.setUserType(UserDemandConstant.STAFF); - logEntity.setUserId(formDTO.getUserId()); - logEntity.setActionCode(UserDemandConstant.FINISH); - logEntity.setOperateTime(new Date()); - operateLogDao.insert(logEntity); + // 5、如果是居民端用户提出的需求,发消息:您提出的需求已完成,请进行服务评价。 + sendDemandUserFinished(entity); + return finishResultDTO; + } - //3、更新服务记录 - IcUserDemandServiceEntity serviceEntity=demandServiceDao.selectById(formDTO.getServiceId()); - if(null==serviceEntity){ - throw new RenException(EpmetErrorCode.DEMAND_SERVICE_NOT_EXITS.getCode(), EpmetErrorCode.DEMAND_SERVICE_NOT_EXITS.getMsg()); - } - serviceEntity.setServiceStartTime(formDTO.getServiceStartTime()); - serviceEntity.setServiceEndTime(formDTO.getServiceEndTime()); - serviceEntity.setFinishDesc(formDTO.getFinishDesc()); - demandServiceDao.updateById(serviceEntity); - - //4、插入评价 - IcUserDemandSatisfactionEntity satisfactionEntity=new IcUserDemandSatisfactionEntity(); - satisfactionEntity.setCustomerId(formDTO.getCustomerId()); - satisfactionEntity.setDemandRecId(formDTO.getDemandRecId()); - satisfactionEntity.setUserType(UserDemandConstant.STAFF); - satisfactionEntity.setUserId(formDTO.getUserId()); - satisfactionEntity.setEvaluateTime(logEntity.getOperateTime()); - satisfactionEntity.setScore(formDTO.getScore()); - demandSatisfactionDao.insert(satisfactionEntity); - FinishResultDTO finishResultDTO=new FinishResultDTO(); - finishResultDTO.setPartyUnitId(serviceEntity.getServerId()); - finishResultDTO.setSendCalStatisfaction(false); - //5、如果服务方区域化党建单位,需求重新计算当前这个单位的满意度。 - //如果服务方是区域化党建单位,需要实时去计算他的群众满意度=服务过的需求的评价分数相加➗ 需求的总个数。 - if(UserDemandConstant.PARTY_UNIT.equals(serviceEntity.getServiceType())){ - finishResultDTO.setSendCalStatisfaction(true); + /** + * 校验需求是否可以点击完成 + * + * @param demandRecId + * @return + */ + private IcUserDemandRecEntity checkFinishPreCondition(String demandRecId) { + IcUserDemandRecEntity entity=baseDao.selectById(demandRecId); + if (null == entity) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "需求不存在", EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getMsg()); } - return finishResultDTO; + /*if(UserDemandConstant.FINISHED.equals(entity.getStatus()) ){ + //已经完成 + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "服务已完成,不可重复提交", "服务已完成,不可重复提交"); + } + if (!UserDemandConstant.ASSIGNED.equals(entity.getStatus()) && !UserDemandConstant.HAVE_ORDER.equals(entity.getStatus())) { + //已指派、已抢单的才可以完成 + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), String.format("需求当前状态为【%s】,不可点击服务完成",entity.getStatus()), "当前状态,不能确认服务完成"); + }*/ + return entity; } /** @@ -600,7 +667,7 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl resiRes = epmetUserOpenFeignClient.findEpmetUser(resiUserFormDTO); if (!resiRes.success()) { - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "查询小程序用户异常"); + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "查询小程序用户异常"); } if (null != resiRes.getData() && CollectionUtils.isNotEmpty(resiRes.getData().getEpmetUserIdList())) { formDTO.setEpmetUserIdList(resiRes.getData().getEpmetUserIdList()); @@ -616,7 +683,7 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl userRes = epmetUserOpenFeignClient.findFamilyMem(formDTO.getIcResiUserId()); if (!userRes.success() || null == userRes.getData()) { - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取居民信息接口异常"); + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "获取居民信息接口异常"); } houseMemResDTO=ConvertUtils.sourceToTarget(userRes.getData(),HouseMemResDTO.class); } @@ -684,7 +751,7 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl epmetUserFamilyDTOResult=epmetUserOpenFeignClient.findIcUser(findIcUserFormDTO); if (!epmetUserFamilyDTOResult.success() || null == epmetUserFamilyDTOResult.getData()) { - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "根据小程序用户id,获取ic居民信息接口异常"); + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "根据小程序用户id,获取ic居民信息接口异常"); } houseMemResDTO=ConvertUtils.sourceToTarget(epmetUserFamilyDTOResult.getData(),HouseMemResDTO.class); formDTO.setEpmetUserIdList(epmetUserFamilyDTOResult.getData().getEpmetUserIdList()); @@ -700,11 +767,12 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl pageListAnalysis(PageListAnalysisFormDTO formDTO) { + formDTO.setExcludeStatus(UserDemandConstant.CANCELED); if("agency".equals(formDTO.getOrgType())){ //找到当前组织的所有上级,再拼接上自己 Result customerAgencyDTOResult=govOrgOpenFeignClient.getAgencyById(formDTO.getOrgId()); if(!customerAgencyDTOResult.success()||null==customerAgencyDTOResult.getData()){ - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取组织信息异常govOrgOpenFeignClient.getAgencyById"); + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "获取组织信息异常govOrgOpenFeignClient.getAgencyById"); } if(NumConstant.ZERO_STR.equals(customerAgencyDTOResult.getData().getPid())){ //当前传入的组织id=客户的根组织 @@ -738,25 +806,15 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl userInfoMap=new HashMap<>(); - Set userIdList=list.stream().filter(item->item.getServiceType().equals(UserDemandConstant.VOLUNTEER)).map(DemandRecResultDTO::getServerId).collect(Collectors.toSet()); + Set userIdList=list.stream().filter(item->null!=item.getServiceType()&&item.getServiceType().equals(UserDemandConstant.VOLUNTEER)).map(DemandRecResultDTO::getServerId).collect(Collectors.toSet()); if(CollectionUtils.isNotEmpty(userIdList)){ Result> userInfoRes = epmetUserOpenFeignClient.queryUserBaseInfo(new ArrayList<>(userIdList)); if(!userInfoRes.success()||CollectionUtils.isEmpty(userInfoRes.getData())){ - throw new RenException("查询志愿者信息异常"); + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(),"查询志愿者信息异常"); } userInfoMap=userInfoRes.getData().stream().collect(Collectors.toMap(UserBaseInfoResultDTO::getUserId, UserBaseInfoResultDTO::getRealName)); } - //查询字典表 - Result> reportTypeRes=adminOpenFeignClient.dictMap(DictTypeEnum.USER_DEMAND_REPORT_TYPE.getCode()); - Map reportTypeMap=reportTypeRes.success()&& MapUtils.isNotEmpty(reportTypeRes.getData())?reportTypeRes.getData():new HashMap<>(); - - Result> statusRes=adminOpenFeignClient.dictMap(DictTypeEnum.USER_DEMAND_STATUS.getCode()); - Map statusMap=statusRes.success()&& MapUtils.isNotEmpty(statusRes.getData())?statusRes.getData():new HashMap<>(); - - Result> serviceTypeRes=adminOpenFeignClient.dictMap(DictTypeEnum.USER_DEMAND_SERVICE_TYPE.getCode()); - Map serviceTypeMap=serviceTypeRes.success()&& MapUtils.isNotEmpty(serviceTypeRes.getData())?serviceTypeRes.getData():new HashMap<>(); - for(DemandRecResultDTO res:list){ if (null != gridInfoMap && gridInfoMap.containsKey(res.getGridId())) { res.setGridName(gridInfoMap.get(res.getGridId()).getGridName()); @@ -770,11 +828,27 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl> serviceTypeRes=adminOpenFeignClient.dictMap(DictTypeEnum.USER_DEMAND_SERVICE_TYPE.getCode()); if(!serviceTypeRes.success()||MapUtils.isEmpty(serviceTypeRes.getData())){ - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"查询服务方类型异常,请检查是否已经配置字典信息"); + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(),"查询服务方类型异常,请检查是否已经配置字典信息"); } List legend=new ArrayList<>(); serviceTypeRes.getData().forEach((code,name)->{ @@ -816,7 +890,7 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl customerAgencyDTOResult=govOrgOpenFeignClient.getAgencyById(formDTO.getOrgId()); if(!customerAgencyDTOResult.success()||null==customerAgencyDTOResult.getData()){ - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取组织信息异常govOrgOpenFeignClient.getAgencyById"); + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "获取组织信息异常govOrgOpenFeignClient.getAgencyById"); } if(NumConstant.ZERO_STR.equals(customerAgencyDTOResult.getData().getPid())){ //当前传入的组织id=客户的根组织 @@ -900,16 +974,636 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl groupByPartyUnit(String customerId, String partyUnitId) { - if(StringUtils.isBlank(customerId)&&StringUtils.isBlank(partyUnitId)){ + public List groupByServer(String customerId, String serverId,String serviceType) { + if(StringUtils.isBlank(customerId)&&StringUtils.isBlank(serverId)){ return new ArrayList<>(); } - return baseDao.selectGroupByPartyUnit(customerId,partyUnitId); + return baseDao.selectGroupByServer(customerId,serverId,serviceType); + } + + + /** + * 居民端-需求大厅(未处理、处理中、已完成) + * 未处理:未指派、未接单;处理中:已指派、已接单给我的 ;已完成:我填写实际服务时间,并点击确认 + * @param formDTO + * @return + */ + @Override + public List listHall(ListHallFormDTO formDTO) { + PageInfo result = PageHelper.startPage(formDTO.getPageNo(), + formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.selectListDemandHall(formDTO.getGridId(), + formDTO.getType(),formDTO.getCurrentUserId())); + result.getList().forEach(resultDTO->{ + //设置分类名称 + IcResiDemandDictEntity demandDictEntity=demandDictService.getByCode(formDTO.getCustomerId(),resultDTO.getCategoryCode()); + if(null!=demandDictEntity){ + resultDTO.setCategoryName(demandDictEntity.getCategoryName()); + } + }); + return result.getList(); + } + + /** + * 需求大厅-需求详情 + * + * @param formDTO + * @return + */ + @Override + public DemandDetailResDTO queryDetailHall(DemandDetailFormDTO formDTO) { + DemandRecResultDTO demandRecResultDTO = baseDao.selectDemandRecDetail(formDTO.getCustomerId(), formDTO.getDemandRecId()); + if (null != demandRecResultDTO) { + DemandDetailResDTO result = ConvertUtils.sourceToTarget(demandRecResultDTO, DemandDetailResDTO.class); + //设置分类名称 + IcResiDemandDictEntity demandDictEntity = demandDictService.getByCode(formDTO.getCustomerId(), result.getCategoryCode()); + if (null != demandDictEntity) { + result.setCategoryName(demandDictEntity.getCategoryName()); + } + return result; + } + return null; + } + + /** + * 需求大厅-我要接单 + * 未处理列表中,不包含自己提出的需求,不会存在自己提的需求,自己接单 + * + * @param formDTO + * @return + */ + @Transactional(rollbackFor = Exception.class) + @Override + public TakeOrderResultDTO takeOrder(TakeOrderFormDTO formDTO) { + IcUserDemandRecEntity entity = baseDao.selectById(formDTO.getDemandRecId()); + if (null == entity) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "需求不存在", EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getMsg()); + } + if (!UserDemandConstant.PENDING.equals(entity.getStatus())) { + //待处理的才可以抢单 + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), String.format("需求当前状态为【%s】,不可接单",entity.getStatus()), "当前状态不可接单"); + } + TakeOrderResultDTO takeOrderResultDTO=new TakeOrderResultDTO(); + //只有志愿者才可以接单 + VolunteerInfoDTO volunteerInfoDTO=volunteerInfoService.queryUserVolunteerInfo(formDTO.getUserId()); + if(null==volunteerInfoDTO){ + takeOrderResultDTO.setIsVolunteer(false); + return takeOrderResultDTO; + } + takeOrderResultDTO.setIsVolunteer(true); + //1、修改主表 + //置为已接单 + entity.setStatus(UserDemandConstant.HAVE_ORDER); + baseDao.updateById(entity); + //2、插入操作日志 + IcUserDemandOperateLogEntity logEntity = new IcUserDemandOperateLogEntity(); + logEntity.setCustomerId(entity.getCustomerId()); + logEntity.setDemandRecId(formDTO.getDemandRecId()); + logEntity.setUserType(UserDemandConstant.RESI); + logEntity.setUserId(formDTO.getUserId()); + logEntity.setActionCode(UserDemandConstant.TAKE_ORDER); + logEntity.setOperateTime(new Date()); + operateLogDao.insert(logEntity); + //3、插入或更新服务记录 + IcUserDemandServiceEntity origin=demandServiceDao.selectByRecId(formDTO.getDemandRecId()); + String serviceName=queryServiceName(formDTO.getUserId(),UserDemandConstant.VOLUNTEER); + if (StringUtils.isBlank(serviceName)) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "服务方名称获取异常", "服务方名称异常"); + } + String serviceId=""; + if (null == origin) { + IcUserDemandServiceEntity serviceEntity=new IcUserDemandServiceEntity(); + serviceEntity.setCustomerId(entity.getCustomerId()); + serviceEntity.setDemandRecId(entity.getId()); + serviceEntity.setServiceType(UserDemandConstant.VOLUNTEER); + serviceEntity.setServerId(formDTO.getUserId()); + serviceEntity.setServerName(serviceName); + demandServiceDao.insert(serviceEntity); + serviceId=serviceEntity.getId(); + }else{ + origin.setServiceType(UserDemandConstant.VOLUNTEER); + origin.setServerId(formDTO.getUserId()); + origin.setUpdatedBy(formDTO.getUserId()); + origin.setServerName(serviceName); + demandServiceDao.updateById(origin); + serviceId=origin.getId(); + } + this.sendDemandUserHaveVolunnteerService(entity,formDTO.getUserId()); + takeOrderResultDTO.setServiceId(serviceId); + return takeOrderResultDTO; + } + + /** + * 居民端-我的需求-服务评价 + * + * @param formDTO + * @return + */ + @Transactional(rollbackFor = Exception.class) + @Override + public FinishResultDTO evaluate(EvaluateDemandFormDTO formDTO) { + IcUserDemandRecEntity entity = baseDao.selectById(formDTO.getDemandRecId()); + if (null == entity) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "需求不存在", EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getMsg()); + } + if (!UserDemandConstant.FINISHED.equals(entity.getStatus())) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "服务未完成,不可评价", "服务未完成,不可评价"); + } + //用户输入的完成情况,走内容审核 + if(StringUtils.isNotBlank(formDTO.getFinishDesc())){ + textScan(formDTO.getFinishDesc()); + } + //当前操作用户是工作端用户还是居民端用户 + String userType = ""; + if (AppClientConstant.APP_GOV.equals(formDTO.getApp())) { + userType = UserDemandConstant.STAFF; + } else if (AppClientConstant.APP_RESI.equals(formDTO.getApp())) { + userType = UserDemandConstant.RESI; + } + // 1、插入评价得分记录 + IcUserDemandSatisfactionEntity satisfactionEntity = ConvertUtils.sourceToTarget(formDTO, IcUserDemandSatisfactionEntity.class); + satisfactionEntity.setEvaluateTime(new Date()); + satisfactionEntity.setUserType(userType); + satisfactionEntity.setRemark(formDTO.getFinishDesc()); + demandSatisfactionDao.insert(satisfactionEntity); + + // 2、插入评价操作日志 + IcUserDemandOperateLogEntity evaluateEntity = ConvertUtils.sourceToTarget(formDTO, IcUserDemandOperateLogEntity.class); + evaluateEntity.setActionCode(UserDemandConstant.EVALUATE); + evaluateEntity.setOperateTime(satisfactionEntity.getEvaluateTime()); + evaluateEntity.setUserType(userType); + operateLogDao.insert(evaluateEntity); + + // 3、更新主表已评价标识,是否解决标识。 + entity.setEvaluateFlag(true); + entity.setFinishResult(formDTO.getFinishResult()); + baseDao.updateById(entity); + + //4、返回服务方,志愿者发放积分,区域化党建单位,计算群众满意度 + IcUserDemandServiceEntity serviceEntity = demandServiceDao.selectById(formDTO.getServiceId()); + FinishResultDTO finishResultDTO = new FinishResultDTO(); + finishResultDTO.setServerId(serviceEntity.getServerId()); + finishResultDTO.setServiceType(serviceEntity.getServiceType()); + finishResultDTO.setAwardPoint(entity.getAwardPoint()); + finishResultDTO.setEvaluateFlag(entity.getEvaluateFlag()); + if(StringUtils.isBlank(entity.getParentCode())||NumConstant.ZERO_STR.equals(entity.getParentCode())){ + finishResultDTO.setFirstCategoryName(demandDictService.getCategoryName(entity.getCustomerId(),entity.getCategoryCode())); + }else{ + finishResultDTO.setFirstCategoryName(demandDictService.getCategoryName(entity.getCustomerId(),entity.getParentCode())); + } + String content = entity.getContent().length() > 100 ? entity.getContent().substring(0, 99) : entity.getContent(); + finishResultDTO.setRemark(String.format(UserDemandConstant.GRANT_POINT_REMARK,entity.getDemandUserName(),content)); + finishResultDTO.setCategoryCode(entity.getCategoryCode()); + finishResultDTO.setFinishResult(formDTO.getFinishResult()); + //5、我的需求-评价:如果服务方是志愿者,通知它: 您收到来自XXX(需求人姓名)的评价,请查看。 + sendVolunnterEvaluated(entity); + return finishResultDTO; + } + + /** + * 居民端,我有需求,最近预约,显示最近预约过的五个需求,按照预约时间倒 + * 查询最近预约的5个编码 + * + * @param userId + * @return + */ + @Override + public List getLatestRegCode(String userId) { + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq("DEMAND_USER_ID",userId); + queryWrapper.orderByDesc("WANT_SERVICE_TIME"); + queryWrapper.last("limit 5"); + queryWrapper.select("DISTINCT CATEGORY_CODE"); + return baseDao.selectObjs(queryWrapper).stream().map(o->o.toString()).collect(Collectors.toList()); + } + + /** + * 居民端-我的需求(待处理,处理中,已完成,已取消) + * 待处理:unprocessed;处理中:processing;已完成:finished;已取消:canceled + * + * @param formDTO + * @return + */ + @Override + public List queryMyDemandForResiClient(ResiClientMyDemandFormDTO formDTO) { + PageInfo result = PageHelper.startPage(formDTO.getPageNo(), + formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.queryMyDemandForResiClient(formDTO.getGridId(), + formDTO.getType(), formDTO.getUserId())); + List list=result.getList(); + if (CollectionUtils.isNotEmpty(list)) { + //1、服务方(社会组织、社区自组织、区域化党建单位)单位名称,负责人姓名,负责人手机号 + List partyUnitIds = result.getList().stream().filter(l -> null != l.getServiceType() && l.getServiceType().equals(UserDemandConstant.PARTY_UNIT)).map(ResiClientMyDemandResDTO::getServerId).collect(Collectors.toList()); + Map partyUnitMap =getPartyUnitMap(partyUnitIds); + + List socialOrgIds = result.getList().stream().filter(l -> null != l.getServiceType() && l.getServiceType().equals(UserDemandConstant.SOCIAL_ORG)).map(ResiClientMyDemandResDTO::getServerId).collect(Collectors.toList()); + Map socialOrgMap=getSocialOrgMap(socialOrgIds); + + List communityOrgIds = result.getList().stream().filter(l -> null != l.getServiceType() && l.getServiceType().equals(UserDemandConstant.COMMUNITY_ORG)).map(ResiClientMyDemandResDTO::getServerId).collect(Collectors.toList()); + Map communityOrgMap=getCommunityOrgMap(communityOrgIds); + + //2、志愿者姓名、手机号 + Set userIdList=list.stream().filter(item->null!=item.getServiceType()&&item.getServiceType().equals(UserDemandConstant.VOLUNTEER)).map(ResiClientMyDemandResDTO::getServerId).collect(Collectors.toSet()); + Map userInfoMap=getVolunteerMap(userIdList); + + for (ResiClientMyDemandResDTO resDto : list) { + //3、查询分类名称 + IcResiDemandDictEntity demandDict = demandDictService.getByCode(formDTO.getCustomerId(), resDto.getCategoryCode()); + resDto.setCategoryName(null != demandDict ? demandDict.getCategoryName() : StrConstant.EPMETY_STR); + if(StringUtils.isNotBlank(resDto.getServiceType())){ + switch (resDto.getServiceType()) + { + case UserDemandConstant.PARTY_UNIT: + resDto.setServiceUnitName(partyUnitMap.get(resDto.getServerId()).getUnitName()); + resDto.setServiceUserName(partyUnitMap.get(resDto.getServerId()).getContact()); + resDto.setServiceUserMobile(partyUnitMap.get(resDto.getServerId()).getContactMobile()); + break; + case UserDemandConstant.SOCIAL_ORG: + resDto.setServiceUnitName(socialOrgMap.get(resDto.getServerId()).getSocietyName()); + resDto.setServiceUserName(socialOrgMap.get(resDto.getServerId()).getPersonInCharge()); + resDto.setServiceUserMobile(socialOrgMap.get(resDto.getServerId()).getMobile()); + break; + case UserDemandConstant.COMMUNITY_ORG: + resDto.setServiceUnitName(communityOrgMap.get(resDto.getServerId()).getOrganizationName()); + resDto.setServiceUserName(communityOrgMap.get(resDto.getServerId()).getPrincipalName()); + resDto.setServiceUserMobile(communityOrgMap.get(resDto.getServerId()).getPrincipalPhone()); + break; + case UserDemandConstant.VOLUNTEER: + resDto.setServiceUnitName(StrConstant.EPMETY_STR); + resDto.setServiceUserName(userInfoMap.get(resDto.getServerId()).getRealName()); + resDto.setServiceUserMobile(userInfoMap.get(resDto.getServerId()).getMobile()); + break; + default: + log.warn("serviceType 错误"); + break; + } + } + } + } + return list; + } + + + /** + * 获取党建单位基本信息 + * @param partyUnitIds + * @return + */ + private Map getPartyUnitMap(List partyUnitIds) { + List partyUnitList=partyUnitService.queryListById(partyUnitIds); + Map partyUnitMap = partyUnitList.stream().collect(Collectors.toMap(IcPartyUnitEntity::getId, o -> o, (o1, o2) -> o1)); + return partyUnitMap; + } + + /** + * 获取社会组织基本信息 + * @param socialOrgIds + * @return + */ + private Map getSocialOrgMap(List socialOrgIds) { + List socialOrgList=societyOrgService.queryListById(socialOrgIds); + Map socialOrgMap = socialOrgList.stream().collect(Collectors.toMap(IcSocietyOrgEntity::getId, o -> o, (o1, o2) -> o1)); + return socialOrgMap; + } + + /** + * 获取社区自组织基本信息 + * @param communityOrgIds + * @return + */ + private Map getCommunityOrgMap(List communityOrgIds) { + List communityOrgList=communitySelfOrganizationService.queryListById(communityOrgIds); + Map communityOrgMap = communityOrgList.stream().collect(Collectors.toMap(IcCommunitySelfOrganizationEntity::getId, o -> o, (o1, o2) -> o1)); + return communityOrgMap; } + /** + * 获取志愿者基本信息 + * @param userIdList + * @return + */ + private Map getVolunteerMap(Set userIdList) { + Map userInfoMap=new HashMap<>(); + if(CollectionUtils.isNotEmpty(userIdList)){ + Result> userInfoRes = epmetUserOpenFeignClient.queryUserBaseInfo(new ArrayList<>(userIdList)); + if(!userInfoRes.success()||CollectionUtils.isEmpty(userInfoRes.getData())){ + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(),"查询志愿者信息异常"); + } + userInfoMap=userInfoRes.getData().stream().collect(Collectors.toMap(UserBaseInfoResultDTO::getUserId, o -> o, (o1, o2) -> o1)); + } + return userInfoMap; + } + + /** + * 我的需求-需求详情(待处理,处理中,已完成,已取消) + * + * @param formDTO + * @return + */ + @Override + public DemandDetailResDTO queryMyDetail(DemandDetailFormDTO formDTO) { + DemandRecResultDTO demandRecResultDTO = baseDao.selectDemandRecDetail(formDTO.getCustomerId(), formDTO.getDemandRecId()); + if (null != demandRecResultDTO) { + DemandDetailResDTO resDto = ConvertUtils.sourceToTarget(demandRecResultDTO, DemandDetailResDTO.class); + //1、设置分类名称 + IcResiDemandDictEntity demandDictEntity = demandDictService.getByCode(formDTO.getCustomerId(), resDto.getCategoryCode()); + if (null != demandDictEntity) { + resDto.setCategoryName(demandDictEntity.getCategoryName()); + } + //2、志愿者(姓名、手机号 + //3、区域化党建单位、社会组织、社区自组织 设置负责人和手机 + if(StringUtils.isNotBlank(resDto.getServiceType())){ + switch (resDto.getServiceType()) { + case UserDemandConstant.PARTY_UNIT: + Map partyUnitMap = getPartyUnitMap(Arrays.asList(resDto.getServerId())); + resDto.setServiceUnitName(partyUnitMap.get(resDto.getServerId()).getUnitName()); + resDto.setServiceUserName(partyUnitMap.get(resDto.getServerId()).getContact()); + resDto.setServiceUserMobile(partyUnitMap.get(resDto.getServerId()).getContactMobile()); + break; + case UserDemandConstant.SOCIAL_ORG: + Map socialOrgMap = getSocialOrgMap(Arrays.asList(resDto.getServerId())); + resDto.setServiceUnitName(socialOrgMap.get(resDto.getServerId()).getSocietyName()); + resDto.setServiceUserName(socialOrgMap.get(resDto.getServerId()).getPersonInCharge()); + resDto.setServiceUserMobile(socialOrgMap.get(resDto.getServerId()).getMobile()); + break; + case UserDemandConstant.COMMUNITY_ORG: + Map communityOrgMap = getCommunityOrgMap(Arrays.asList(resDto.getServerId())); + resDto.setServiceUnitName(communityOrgMap.get(resDto.getServerId()).getOrganizationName()); + resDto.setServiceUserName(communityOrgMap.get(resDto.getServerId()).getPrincipalName()); + resDto.setServiceUserMobile(communityOrgMap.get(resDto.getServerId()).getPrincipalPhone()); + break; + case UserDemandConstant.VOLUNTEER: + Map userInfoMap = getVolunteerMap(new HashSet<>(Arrays.asList(resDto.getServerId()))); + resDto.setServiceUnitName(StrConstant.EPMETY_STR); + resDto.setServiceUserName(userInfoMap.get(resDto.getServerId()).getRealName()); + resDto.setServiceUserMobile(userInfoMap.get(resDto.getServerId()).getMobile()); + break; + default: + log.warn("serviceType 错误"); + break; + } + } + return resDto; + } + return null; + } + + /** + * 居民端-我的需求:提交需求,修改需求 + * + * @param formDTO + * @return + */ + @Override + public DemandRecId saveOrUpdateDemand(ReportDemandFormDTO formDTO) { + //需求内容走内容审核 + textScan(formDTO.getContent()); + Date now = new Date(); + DemandRecId resultDto = new DemandRecId(); + resultDto.setDemandRecId(formDTO.getDemandRecId()); + if (StringUtils.isNotBlank(formDTO.getDemandRecId())) { + //修改需求 + IcUserDemandRecEntity origin = baseDao.selectById(formDTO.getDemandRecId()); + if (null == origin) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "需求不存在", EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getMsg()); + } + if (!UserDemandConstant.PENDING.equals(origin.getStatus())) { + //待处理的才可以修改需求 + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), String.format("需求当前状态为【%s】,不允许重新编辑", origin.getStatus()), "需求已处理,不允许重新编辑"); + } + origin.setContent(formDTO.getContent()); + origin.setWantServiceTime(formDTO.getWantServiceTime()); + origin.setDemandUserName(formDTO.getDemandUserName()); + origin.setDemandUserMobile(formDTO.getDemandUserMobile()); + origin.setServiceLocation(formDTO.getServiceLocation()); + origin.setLatitude(formDTO.getLatitude()); + origin.setLongitude(formDTO.getLongitude()); + origin.setLocationDetail(formDTO.getLocationDetail()); + baseDao.updateById(origin); + } else { + CustomerGridFormDTO customerGridFormDTO = new CustomerGridFormDTO(); + customerGridFormDTO.setGridId(formDTO.getGridId()); + Result gridInfoRes = govOrgOpenFeignClient.getGridBaseInfoByGridId(customerGridFormDTO); + if (!gridInfoRes.success() || null == gridInfoRes.getData()) { + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "查询网格信息失败"); + } + IcUserDemandRecEntity insertEntity = ConvertUtils.sourceToTarget(formDTO, IcUserDemandRecEntity.class); + insertEntity.setAgencyId(gridInfoRes.getData().getPid()); + insertEntity.setGridPids(gridInfoRes.getData().getPids()); + insertEntity.setDemandUserType(UserDemandConstant.MINI_RESI); + insertEntity.setStatus(UserDemandConstant.PENDING); + insertEntity.setEvaluateFlag(false); + //设置上报人消息 + insertEntity.setReportType(UserDemandConstant.SELF_HELP_REPORT); + insertEntity.setReportTime(now); + insertEntity.setReportUserId(formDTO.getDemandUserId()); + insertEntity.setReportUserMobile(formDTO.getDemandUserMobile()); + insertEntity.setReportUserName(formDTO.getDemandUserName()); + //记录发放积分 + IcResiDemandDictEntity icResiDemandDictEntity = demandDictService.getByCode(formDTO.getCustomerId(), formDTO.getCategoryCode()); + if (null != icResiDemandDictEntity) { + insertEntity.setAwardPoint(icResiDemandDictEntity.getAwardPoint()); + } + baseDao.insert(insertEntity); + resultDto.setDemandRecId(insertEntity.getId()); + } + //插入操作日志 + IcUserDemandOperateLogEntity logEntity = new IcUserDemandOperateLogEntity(); + logEntity.setCustomerId(formDTO.getCustomerId()); + logEntity.setDemandRecId(resultDto.getDemandRecId()); + logEntity.setUserType(UserDemandConstant.RESI); + logEntity.setUserId(formDTO.getDemandUserId()); + logEntity.setActionCode(StringUtils.isNotBlank(formDTO.getDemandRecId()) ? UserDemandConstant.UPDATE : UserDemandConstant.CREATE); + logEntity.setOperateTime(now); + operateLogDao.insert(logEntity); + + return resultDto; + } + + /** + * 需求内容,服务评价-完成情况走内容审核 + * @param content + */ + private void textScan(String content) { + TextScanParamDTO textScanParamDTO = new TextScanParamDTO(); + TextTaskDTO taskDTO = new TextTaskDTO(); + taskDTO.setContent(content); + taskDTO.setDataId(UUID.randomUUID().toString().replace("-", "")); + textScanParamDTO.getTasks().add(taskDTO); + Result textSyncScanResult = ScanContentUtils.textSyncScan(scanApiUrl.concat(textSyncScanMethod), textScanParamDTO); + if (!textSyncScanResult.success()) { + throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode()); + } else { + if (!textSyncScanResult.getData().isAllPass()) { + throw new RenException(EpmetErrorCode.TEXT_SCAN_FAILED.getCode(), EpmetErrorCode.TEXT_SCAN_FAILED.getMsg()); + } + } + } + + /** + * 我的需求被抢单->您提出的需求将由青岛亿联科技有限公司为您解决,请查看。 + */ + private void sendDemandUserHaveVolunnteerService(IcUserDemandRecEntity entity, String volunteerUserId) { + // 如果需求人是小程序里的用户,需要通知需求人: + // 您提出的需求将由青岛亿联科技有限公司为您解决,请查看。 + // 您提出的需求将由张三为您解决,请查看。 + if (UserDemandConstant.MINI_RESI.equals(entity.getDemandUserType())) { + UserResiInfoListFormDTO formDTO = new UserResiInfoListFormDTO(); + formDTO.setUserIdList(Arrays.asList(volunteerUserId)); + Result> userRes = epmetUserOpenFeignClient.getUserResiInfoList(formDTO); + if (userRes.success() && CollectionUtils.isNotEmpty(userRes.getData())) { + String volunteerName=userRes.getData().get(NumConstant.ZERO).getRealName(); + UserMessageFormDTO userMessage = new UserMessageFormDTO(); + userMessage.setApp(AppClientConstant.APP_RESI); + userMessage.setCustomerId(entity.getCustomerId()); + userMessage.setGridId(entity.getGridId()); + String messageContent = String.format(UserDemandConstant.HAVE_SERVICE, volunteerName); + userMessage.setMessageContent(messageContent); + userMessage.setReadFlag(ReadFlagConstant.UN_READ); + userMessage.setTitle(UserDemandConstant.MESSAGE_TITILE); + userMessage.setMessageType(UserMessageTypeConstant.DEMAND); + userMessage.setTargetId(entity.getId()); + //通知需求提出人 + userMessage.setUserId(entity.getDemandUserId()); + messageOpenFeignClient.saveUserMessage(userMessage); + } + } + } + + /** + * 您提出的需求将由青岛亿联科技有限公司为您解决,请查看。 + */ + private void sendDemandUserHaveOrgService(IcUserDemandRecEntity entity, String serverId, String serviceType) { + // 如果需求人是小程序里的用户,需要通知需求人: + // 您提出的需求将由青岛亿联科技有限公司为您解决,请查看。 + String serviceName = ""; + if (UserDemandConstant.PARTY_UNIT.equals(serviceType)) { + IcPartyUnitDTO data = partyUnitService.get(serverId); + serviceName = null != data ? data.getUnitName() : StrConstant.EPMETY_STR; + } else if (UserDemandConstant.SOCIAL_ORG.equals(serviceType)) { + Map map = getSocialOrgMap(Arrays.asList(serverId)); + serviceName = MapUtils.isNotEmpty(map) ? map.get(serverId).getSocietyName() : StrConstant.EPMETY_STR; + } else if (UserDemandConstant.COMMUNITY_ORG.equals(serviceType)) { + Map communityOrgMap = getCommunityOrgMap(Arrays.asList(serverId)); + serviceName = MapUtils.isNotEmpty(communityOrgMap) ? communityOrgMap.get(serverId).getOrganizationName() : StrConstant.EPMETY_STR; + }else if(UserDemandConstant.VOLUNTEER.equals(serviceType)){ + //如果指派给了志愿者-》您提出的需求将由XX为您解决,请查看 + UserResiInfoListFormDTO userResiInfoListFormDTO=new UserResiInfoListFormDTO(); + userResiInfoListFormDTO.setUserIdList(Arrays.asList(serverId)); + Result> userRes = epmetUserOpenFeignClient.getUserResiInfoList(userResiInfoListFormDTO); + if(userRes.success()){ + serviceName=userRes.getData().get(NumConstant.ZERO).getRealName(); + } + } + if (StringUtils.isNotBlank(serviceName)) { + UserMessageFormDTO userMessage = new UserMessageFormDTO(); + userMessage.setApp(AppClientConstant.APP_RESI); + userMessage.setCustomerId(entity.getCustomerId()); + userMessage.setGridId(entity.getGridId()); + String messageContent = String.format(UserDemandConstant.HAVE_SERVICE, serviceName); + userMessage.setMessageContent(messageContent); + userMessage.setReadFlag(ReadFlagConstant.UN_READ); + userMessage.setTitle(UserDemandConstant.MESSAGE_TITILE); + userMessage.setMessageType(UserMessageTypeConstant.DEMAND); + userMessage.setTargetId(entity.getId()); + //通知需求提出人 + userMessage.setUserId(entity.getDemandUserId()); + messageOpenFeignClient.saveUserMessage(userMessage); + } + } + + /** + * 我的需求服务完成->您提出的需求已完成,请进行服务评价。 + */ + private void sendDemandUserFinished(IcUserDemandRecEntity entity) { + if (UserDemandConstant.MINI_RESI.equals(entity.getDemandUserType())) { + UserMessageFormDTO userMessage = new UserMessageFormDTO(); + userMessage.setApp(AppClientConstant.APP_RESI); + userMessage.setCustomerId(entity.getCustomerId()); + userMessage.setGridId(entity.getGridId()); + String messageContent = UserDemandConstant.FINISH_DEMAND_MESSAGE; + userMessage.setMessageContent(messageContent); + userMessage.setReadFlag(ReadFlagConstant.UN_READ); + userMessage.setTitle(UserDemandConstant.MESSAGE_TITILE); + userMessage.setMessageType(UserMessageTypeConstant.DEMAND); + userMessage.setTargetId(entity.getId()); + //通知需求提出人 + userMessage.setUserId(entity.getDemandUserId()); + messageOpenFeignClient.saveUserMessage(userMessage); + } + } + + /** + * 我的需求-评价:如果服务方是志愿者,通知TA: 您收到来自张三的评价,请查看。 + */ + private void sendVolunnterEvaluated(IcUserDemandRecEntity entity) { + IcUserDemandServiceEntity serviceEntity = demandServiceDao.selectByRecId(entity.getId()); + if (null != serviceEntity && UserDemandConstant.VOLUNTEER.equals(serviceEntity.getServiceType())) { + UserMessageFormDTO userMessage = new UserMessageFormDTO(); + userMessage.setApp(AppClientConstant.APP_RESI); + userMessage.setCustomerId(entity.getCustomerId()); + userMessage.setGridId(entity.getGridId()); + String messageContent = String.format(UserDemandConstant.DEMAND_EVALUATED, entity.getDemandUserName()); + userMessage.setMessageContent(messageContent); + userMessage.setReadFlag(ReadFlagConstant.UN_READ); + userMessage.setTitle(UserDemandConstant.MESSAGE_TITILE); + userMessage.setMessageType(UserMessageTypeConstant.DEMAND); + userMessage.setTargetId(entity.getId()); + //通知志愿者 + userMessage.setUserId(serviceEntity.getServerId()); + messageOpenFeignClient.saveUserMessage(userMessage); + } + } + + /** + * 我的需求-取消需求(未完成的都可以取消),如果需求已经被小程序里的志愿者接单通知它->XXX的需求已取消,请查看。 + * pc指派给志愿者的,如果取消了也要通知 + * @param entity + */ + private void sendVolunnterCanceled(IcUserDemandRecEntity entity) { + IcUserDemandServiceEntity serviceEntity = demandServiceDao.selectByRecId(entity.getId()); + if (null != serviceEntity && UserDemandConstant.VOLUNTEER.equals(serviceEntity.getServiceType())) { + UserMessageFormDTO userMessage = new UserMessageFormDTO(); + userMessage.setApp(AppClientConstant.APP_RESI); + userMessage.setCustomerId(entity.getCustomerId()); + userMessage.setGridId(entity.getGridId()); + String messageContent = String.format(UserDemandConstant.DEMAND_CANCELED, entity.getDemandUserName()); + userMessage.setMessageContent(messageContent); + userMessage.setReadFlag(ReadFlagConstant.UN_READ); + userMessage.setTitle(UserDemandConstant.MESSAGE_TITILE); + userMessage.setMessageType(UserMessageTypeConstant.DEMAND); + userMessage.setTargetId(entity.getId()); + //通知志愿者 + userMessage.setUserId(serviceEntity.getServerId()); + messageOpenFeignClient.saveUserMessage(userMessage); + } + } + + /** + * 当前用户与需求消息的关系 需求发布人:publisher ;服务人:server + * + * @param formDTO + * @return + */ + @Override + public UserDemandRelResDTO queryUserDemandRel(UserDemandRelFormDTO formDTO) { + UserDemandRelResDTO res = new UserDemandRelResDTO(""); + IcUserDemandRecEntity origin = baseDao.selectById(formDTO.getDemandRecId()); + if (null != origin && formDTO.getUserId().equals(origin.getDemandUserId())) { + res.setIdentity(UserDemandConstant.DEMAND_PUBLISHER); + return res; + } + IcUserDemandServiceEntity serviceEntity = demandServiceDao.selectByRecId(formDTO.getDemandRecId()); + if (null != serviceEntity && formDTO.getUserId().equals(serviceEntity.getServerId())) { + res.setIdentity(UserDemandConstant.DEMAND_SERVER); + } + return res; + } + + } + diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandSatisfactionServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandSatisfactionServiceImpl.java new file mode 100644 index 0000000000..c8b87ed69e --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandSatisfactionServiceImpl.java @@ -0,0 +1,144 @@ +package com.epmet.service.impl; + +import com.alibaba.fastjson.JSON; +import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.rocketmq.messages.ServerSatisfactionCalFormDTO; +import com.epmet.commons.tools.constant.Constant; +import com.epmet.commons.tools.constant.MqConstant; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.dto.form.mq.eventmsg.BasePointEventMsg; +import com.epmet.commons.tools.enums.EventEnum; +import com.epmet.commons.tools.utils.Result; +import com.epmet.constant.SystemMessageType; +import com.epmet.constant.UserDemandConstant; +import com.epmet.dao.IcUserDemandOperateLogDao; +import com.epmet.dao.IcUserDemandRecDao; +import com.epmet.dao.IcUserDemandSatisfactionDao; +import com.epmet.dao.IcUserDemandServiceDao; +import com.epmet.dto.IcUserDemandRecDTO; +import com.epmet.dto.form.AutoEvaluateDemandFormDTO; +import com.epmet.dto.form.SystemMsgFormDTO; +import com.epmet.entity.IcUserDemandOperateLogEntity; +import com.epmet.entity.IcUserDemandSatisfactionEntity; +import com.epmet.entity.IcUserDemandServiceEntity; +import com.epmet.feign.EpmetMessageOpenFeignClient; +import com.epmet.service.IcPartyUnitService; +import com.epmet.service.IcResiDemandDictService; +import com.epmet.service.IcUserDemandSatisfactionService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +@Slf4j +@Service +public class IcUserDemandSatisfactionServiceImpl extends BaseServiceImpl implements IcUserDemandSatisfactionService { + + @Autowired + private IcUserDemandRecDao icUserDemandRecDao; + @Autowired + private IcUserDemandOperateLogDao operateLogDao; + @Autowired + private IcUserDemandServiceDao demandServiceDao; + @Autowired + private IcResiDemandDictService demandDictService; + @Autowired + private IcPartyUnitService icPartyUnitService; + @Autowired + private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient; + + + /** + * + * @param formDTO + * @return + */ + @Transactional(rollbackFor = Exception.class) + @Override + public void evaluateDemandAuto(AutoEvaluateDemandFormDTO formDTO) { + if (null == formDTO.getExceedValue()) { + formDTO.setExceedValue(NumConstant.SEVEN); + formDTO.setType("day"); + } + // 查询完成后,超过7天未评价的记录 + List list=icUserDemandRecDao.selectNoEvaluate(formDTO.getCustomerId(),formDTO.getExceedValue(),formDTO.getType()); + if(CollectionUtils.isEmpty(list)){ + return; + } + Date nowDate=new Date(); + for(IcUserDemandRecDTO demand:list){ + + //4、返回服务方,志愿者发放积分,区域化党建单位,计算群众满意度 + IcUserDemandServiceEntity serviceEntity = demandServiceDao.selectByRecId(demand.getId()); + if(null==serviceEntity){ + continue; + } + if(UserDemandConstant.PARTY_UNIT.equals(serviceEntity.getServiceType())){ + ServerSatisfactionCalFormDTO satisfactionCalFormDTO=new ServerSatisfactionCalFormDTO(); + satisfactionCalFormDTO.setCustomerId(demand.getCustomerId()); + satisfactionCalFormDTO.setServiceType(serviceEntity.getServiceType()); + satisfactionCalFormDTO.setServerId(serviceEntity.getServerId()); + icPartyUnitService.calPartyUnitSatisfation(satisfactionCalFormDTO); + } else if (UserDemandConstant.VOLUNTEER.equals(serviceEntity.getServiceType()) && null != demand.getAwardPoint() && demand.getAwardPoint() > NumConstant.ZERO) { + List actPointEventMsgList = new ArrayList<>(); + BasePointEventMsg actPointEventMsg = new BasePointEventMsg(); + actPointEventMsg.setCustomerId(demand.getCustomerId()); + actPointEventMsg.setSourceType(MqConstant.SOURCE_TYPE_DEMAND); + actPointEventMsg.setSourceId(demand.getId()); + actPointEventMsg.setUserId(serviceEntity.getServerId()); + actPointEventMsg.setActionFlag(MqConstant.PLUS); + actPointEventMsg.setIsCommon(false); + String content = demand.getContent().length() > 100 ? demand.getContent().substring(0, 99) : demand.getContent(); + actPointEventMsg.setRemark(String.format(UserDemandConstant.GRANT_POINT_REMARK,demand.getDemandUserName(),content)); + actPointEventMsg.setEventTag(EventEnum.FINISH_USER_DEMAND.getEventTag()); + actPointEventMsg.setEventClass(EventEnum.FINISH_USER_DEMAND.getEventClass()); + if(StringUtils.isBlank(demand.getParentCode())||NumConstant.ZERO_STR.equals(demand.getParentCode())){ + actPointEventMsg.setEventName(demandDictService.getCategoryName(demand.getCustomerId(),demand.getCategoryCode())); + }else{ + actPointEventMsg.setEventName(demandDictService.getCategoryName(demand.getCustomerId(),demand.getParentCode())); + } + actPointEventMsg.setObjectId(demand.getCategoryCode()); + actPointEventMsg.setPoint(demand.getAwardPoint()); + actPointEventMsgList.add(actPointEventMsg); + SystemMsgFormDTO sendMsgForm = new SystemMsgFormDTO(); + sendMsgForm.setContent(actPointEventMsgList); + sendMsgForm.setMessageType(SystemMessageType.FINISH_USER_DEMAND); + Result mqResult = epmetMessageOpenFeignClient.sendSystemMsgByMQ(sendMsgForm); + if (!mqResult.success()) { + log.warn(String.format("需求自动评价志愿者发放积分失败:demandRecId:%s,消息体:%s", demand.getId(), JSON.toJSONString(sendMsgForm))); + continue; + } + } + + // 1、插入评价得分记录 + IcUserDemandSatisfactionEntity satisfactionEntity = new IcUserDemandSatisfactionEntity(); + satisfactionEntity.setCustomerId(demand.getCustomerId()); + satisfactionEntity.setDemandRecId(demand.getId()); + satisfactionEntity.setEvaluateTime(nowDate); + satisfactionEntity.setUserType(UserDemandConstant.SYS); + satisfactionEntity.setUserId(Constant.APP_USER_FLAG); + satisfactionEntity.setScore(new BigDecimal(NumConstant.FIVE_STR)); + satisfactionEntity.setRemark(UserDemandConstant.DEFAULT_EVALUATE_REMARK); + baseDao.insert(satisfactionEntity); + + // 2、插入评价操作日志 + IcUserDemandOperateLogEntity evaluateEntity = new IcUserDemandOperateLogEntity(); + evaluateEntity.setCustomerId(demand.getCustomerId()); + evaluateEntity.setDemandRecId(demand.getId()); + evaluateEntity.setUserType(UserDemandConstant.SYS); + evaluateEntity.setUserId(Constant.APP_USER_FLAG); + evaluateEntity.setActionCode(UserDemandConstant.EVALUATE); + evaluateEntity.setOperateTime(nowDate); + operateLogDao.insert(evaluateEntity); + + // 3、更新主表已评价标识,是否解决标识。 + icUserDemandRecDao.evaluate(demand.getId(),UserDemandConstant.RESOLVED); + } + } +} diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/VolunteerInfoServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/VolunteerInfoServiceImpl.java index 9d1e7a9240..71417dbb2e 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/VolunteerInfoServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/VolunteerInfoServiceImpl.java @@ -22,23 +22,28 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.MqConstant; import com.epmet.commons.tools.constant.NumConstant; -import com.epmet.commons.tools.dto.form.mq.MqBaseMsgDTO; +import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.dto.form.mq.eventmsg.BasePointEventMsg; -import com.epmet.commons.tools.enums.EventEnum; +import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; 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.feign.ResultDataResolver; import com.epmet.commons.tools.redis.RedisKeys; import com.epmet.commons.tools.redis.RedisUtils; +import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; -import com.epmet.commons.tools.utils.SendMqMsgUtils; import com.epmet.constant.SmsTemplateConstant; +import com.epmet.constant.SystemMessageType; import com.epmet.dao.VolunteerInfoDao; +import com.epmet.dto.CustomerAgencyDTO; +import com.epmet.dto.CustomerGridDTO; import com.epmet.dto.HeartUserInfoDTO; import com.epmet.dto.VolunteerInfoDTO; -import com.epmet.dto.form.CommonCustomerFormDTO; -import com.epmet.dto.form.SendVerificationCodeFormDTO; +import com.epmet.dto.form.*; import com.epmet.dto.form.resi.ResiSendSmsCodeFormDTO; import com.epmet.dto.form.resi.ResiVolunteerAuthenticateFormDTO; import com.epmet.dto.result.ResiUserBaseInfoResultDTO; @@ -50,6 +55,7 @@ import com.epmet.dto.result.resi.ResiVolunteerInfoResultDTO; import com.epmet.entity.VolunteerInfoEntity; import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient; +import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.service.HeartUserInfoService; import com.epmet.service.VolunteerInfoService; import com.github.pagehelper.PageHelper; @@ -61,9 +67,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -74,7 +78,7 @@ import java.util.stream.Collectors; * @since v1.0.0 2020-07-19 */ @Service -public class VolunteerInfoServiceImpl extends BaseServiceImpl implements VolunteerInfoService { +public class VolunteerInfoServiceImpl extends BaseServiceImpl implements VolunteerInfoService, ResultDataResolver { private Logger logger = LogManager.getLogger(VolunteerInfoServiceImpl.class); private static final String SEND_SMS_CODE_ERROR = "发送短信验证码异常,手机号[%s],code[%s],msg[%s]"; @@ -89,8 +93,11 @@ public class VolunteerInfoServiceImpl extends BaseServiceImpl 8000) { + throw new RenException(regResi.getCode(), regResi.getMsg()); + } + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), regResi.getMsg()); + } + // 3、检查是否是志愿者 + VolunteerInfoDTO originVolunteer = baseDao.selectVolunteerInfoByUserId(formDTO.getUserId()); + if (null != originVolunteer) { + //能修改的只有这两个属性,像是网格id,网格名称,pid,pids不允许修改,第一次注册成功后不可修改 + originVolunteer.setVolunteerIntroduce(formDTO.getVolunteerIntroduce()); + originVolunteer.setVolunteerSignature(formDTO.getVolunteerSignature()); + baseDao.updateById(ConvertUtils.sourceToTarget(originVolunteer, VolunteerInfoEntity.class)); + } else { + //2.1不是志愿者:插入志愿者信息表 + VolunteerInfoEntity insertVolunteer = ConvertUtils.sourceToTarget(formDTO, VolunteerInfoEntity.class); + // 赋值gridName,pid,pids + CustomerGridFormDTO customerGridFormDTO = new CustomerGridFormDTO(); + customerGridFormDTO.setGridId(formDTO.getGridId()); + Result gridInfoRes = govOrgOpenFeignClient.getGridBaseInfoByGridId(customerGridFormDTO); + if (!gridInfoRes.success() || null == gridInfoRes.getData()) { + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "查询网格信息失败"); + } + insertVolunteer.setGridName(gridInfoRes.getData().getGridName()); + insertVolunteer.setPid(gridInfoRes.getData().getPid()); + insertVolunteer.setPids(gridInfoRes.getData().getPids()); + baseDao.insert(insertVolunteer); + + // 2.2 更新用户信息表的 是否是志愿者标识 + HeartUserInfoDTO userInfoDTO = new HeartUserInfoDTO(); + userInfoDTO.setUserId(formDTO.getUserId()); + userInfoDTO.setVolunteerFlag(true); + heartUserInfoService.updateHeartUserInfoByUserId(userInfoDTO); + + // 2.3发送消息 由积分系统消费消息(需要使用规则) + this.grantActPoints(formDTO); + } } private void grantActPoints(ResiVolunteerAuthenticateFormDTO formDTO){ - MqBaseMsgDTO mqBaseMsgDTO=new MqBaseMsgDTO(); + //MqBaseMsgDTO mqBaseMsgDTO=new MqBaseMsgDTO(); //mq的事件类型 - mqBaseMsgDTO.setEventClass(EventEnum.REGISTER_VOLUNTEER.getEventClass()); + //mqBaseMsgDTO.setEventClass(EventEnum.REGISTER_VOLUNTEER.getEventClass()); //事件code - mqBaseMsgDTO.setEventTag(EventEnum.REGISTER_VOLUNTEER.getEventTag()); + //mqBaseMsgDTO.setEventTag(EventEnum.REGISTER_VOLUNTEER.getEventTag()); List actPointEventMsgList=new ArrayList<>(); BasePointEventMsg actPointEventMsg=new BasePointEventMsg(); actPointEventMsg.setCustomerId(formDTO.getCustomerId()); @@ -143,8 +205,14 @@ public class VolunteerInfoServiceImpl extends BaseServiceImpl NumConstant.ZERO){ - // 获取志愿者信息 - VolunteerInfoDTO dto = baseDao.selectVolunteerInfoByUserId(tokenDto.getUserId()); + // 获取志愿者信息 + // Integer volunteerFlag = baseDao.queryVolunteerFlagByUserId(tokenDto.getUserId()); + VolunteerInfoDTO dto = baseDao.selectVolunteerInfoByUserId(tokenDto.getUserId()); + if (null!=dto){ resultDTO.setVolunteerIntroduce(dto.getVolunteerIntroduce() == null ? "" : dto.getVolunteerIntroduce()); resultDTO.setVolunteerSignature(dto.getVolunteerSignature() == null ? "" : dto.getVolunteerSignature()); // 遗留数据处理,如果表中数据为空,一律返回null,前端重新获取 网格信息 resultDTO.setGridId( "".equals(dto.getGridId()) ? null : dto.getGridId()); - resultDTO.setGridName( "".equals(dto.getGridName()) ? null : dto.getGridName()); + resultDTO.setGridName( "".equals(dto.getGridName()) ? null : dto.getGridName()); } } else { logger.error("获取用户基本信息失败"); @@ -231,14 +299,38 @@ public class VolunteerInfoServiceImpl extends BaseServiceImpl queryListVolunteer(String customerId, String userRealName) { + public List queryListVolunteer(String customerId, String staffId,String userRealName) { + CustomerStaffInfoCacheResult staffInfo= CustomerStaffRedis.getStaffInfo(customerId,staffId); + if (null == staffInfo) { + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "查询工作人员信息异常"); + } + // 如果是根级组织的工作人员,agencyPids="";正常是以英文冒号隔开 + String pids=""; + if(StringUtils.isBlank(staffInfo.getAgencyPIds())||NumConstant.ZERO_STR.equals(staffInfo.getAgencyPIds())){ + pids=staffInfo.getAgencyId(); + }else{ + pids=staffInfo.getAgencyPIds().concat(StrConstant.COLON).concat(staffInfo.getAgencyId()); + } + LambdaQueryWrapper query=new LambdaQueryWrapper<>(); + query.eq(VolunteerInfoEntity::getCustomerId,customerId); + query.likeRight(VolunteerInfoEntity::getPids,pids); + query.select(VolunteerInfoEntity::getUserId); + query.orderByAsc(VolunteerInfoEntity::getCreatedTime); + Set userIds = baseDao.selectObjs(query).stream().map(o->o.toString()).collect(Collectors.toSet()); List resultList = new ArrayList<>(); - List userIds = baseDao.selectVolunteerIds(customerId); if (CollectionUtils.isEmpty(userIds)) { return resultList; } - Result> userInfoRes = epmetUserOpenFeignClient.queryUserBaseInfo(userIds); + Result> userInfoRes = epmetUserOpenFeignClient.queryUserBaseInfo(new ArrayList<>(userIds)); if (userInfoRes.success() && CollectionUtils.isNotEmpty(userInfoRes.getData())) { Map userMap = userInfoRes.getData().stream().collect(Collectors.toMap(UserBaseInfoResultDTO::getUserId, Function.identity())); for (String userId : userIds) { @@ -263,9 +355,12 @@ public class VolunteerInfoServiceImpl extends BaseServiceImpl queryVolunteerPage(String customerId, Integer pageNo, Integer pageSize) { + public List queryVolunteerPage(String customerId, Integer pageNo, Integer pageSize, String agencyId) { LambdaQueryWrapper query = new LambdaQueryWrapper<>(); - query.eq(VolunteerInfoEntity::getCustomerId, customerId); + Optional.ofNullable(customerId).ifPresent(cid -> query.eq(VolunteerInfoEntity::getCustomerId, cid)); + Optional.ofNullable(agencyId).ifPresent(aid -> { + query.likeRight(VolunteerInfoEntity::getPids, getPidsByAgencyId(aid)); + }); PageHelper.startPage(pageNo, pageSize); List volunteerInfoEntities = baseDao.selectList(query); @@ -275,14 +370,48 @@ public class VolunteerInfoServiceImpl extends BaseServiceImpl query = new LambdaQueryWrapper<>(); - query.eq(VolunteerInfoEntity::getCustomerId, customerId); + + Optional.ofNullable(customerId).ifPresent((cId) -> { + query.eq(VolunteerInfoEntity::getCustomerId, cId); + }); + + Optional.ofNullable(agencyId).ifPresent((aid) -> { + query.likeRight(VolunteerInfoEntity::getPids, getPidsByAgencyId(aid)); + }); + return baseDao.selectCount(query); } + + /** + * 使用agencyId,获取pids(agencyPids:agencyId) + * @param agencyId + * @return + */ + private String getPidsByAgencyId(String agencyId) { + // 需要查询agency的pids:id,通过这个字符串去匹配志愿者的Pids字段来查询 + 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 pidsAndAgencyIdPath = agencyInfo.getPids().concat(":").concat(agencyId); + if (pidsAndAgencyIdPath.startsWith(":")) { + pidsAndAgencyIdPath = pidsAndAgencyIdPath.replaceFirst(":", ""); + } + + return pidsAndAgencyIdPath; + } } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActDraftServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActDraftServiceImpl.java index 930d220fc7..6e2a67aa17 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActDraftServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActDraftServiceImpl.java @@ -3,15 +3,16 @@ package com.epmet.service.impl; import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.utils.DateUtils; +import com.epmet.dto.IcPartyUnitDTO; import com.epmet.dto.LatestActContentDTO; import com.epmet.dto.LatestActInfoDTO; +import com.epmet.dto.form.demand.SubCodeFormDTO; import com.epmet.dto.form.work.ActPreviewFormDTO; import com.epmet.dto.form.work.DraftActContentFormDTO; import com.epmet.dto.form.work.DraftActInfoFormDTO; +import com.epmet.dto.result.demand.OptionDTO; import com.epmet.dto.result.work.*; -import com.epmet.service.LatestActContentService; -import com.epmet.service.LatestActInfoService; -import com.epmet.service.WorkActDraftService; +import com.epmet.service.*; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -19,9 +20,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * 工作端活动草稿 @@ -38,6 +42,15 @@ public class WorkActDraftServiceImpl implements WorkActDraftService { private LatestActInfoService latestActInfoService; @Autowired private LatestActContentService latestActContentService; + @Resource + private IcResiDemandDictService icResiDemandDictService; + @Resource + private IcPartyUnitService icPartyUnitService; + + /** + * 服务事项code + */ + private static final String SERVICE_MATTER_CODE = "1010"; /** * @return com.epmet.dto.form.work.PublishActInitResultDTO @@ -126,6 +139,20 @@ public class WorkActDraftServiceImpl implements WorkActDraftService { if (null != actContent && actContent.size() > 0) { actPreviewResultDTO.setActContent(actContent); } + + if (StringUtils.isNotBlank(actPreviewResultDTO.getServiceMatter())) { + //获取服务事项 + SubCodeFormDTO codeFormDTO = new SubCodeFormDTO(); + codeFormDTO.setCustomerId(formDTO.getCustomerId()); + codeFormDTO.setParentCategoryCode(SERVICE_MATTER_CODE); + Map categoryMap = icResiDemandDictService.querySubCodeList(codeFormDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); + actPreviewResultDTO.setServiceMatterName(categoryMap.get(actPreviewResultDTO.getServiceMatter())); + } + if (StringUtils.isNotBlank(actPreviewResultDTO.getUnitId())) { + //获取单位名称 + IcPartyUnitDTO unitDTO = icPartyUnitService.get(actPreviewResultDTO.getUnitId()); + actPreviewResultDTO.setUnitName(unitDTO.getUnitName()); + } } return actPreviewResultDTO; } @@ -258,6 +285,12 @@ public class WorkActDraftServiceImpl implements WorkActDraftService { latestActInfoDTO.setVolunteerLimit(formDTO.getVolunteerLimit()); //审核开关:1报名人员需要人工审核0不需要 latestActInfoDTO.setAuditSwitch(formDTO.getAuditSwitch()); + + latestActInfoDTO.setActType(formDTO.getActType()); + latestActInfoDTO.setUnitId(formDTO.getUnitId()); + latestActInfoDTO.setTarget(formDTO.getTarget()); + latestActInfoDTO.setServiceMatter(formDTO.getServiceMatter()); + return latestActInfoDTO; } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActServiceImpl.java index b552ee29bc..e113d72019 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkActServiceImpl.java @@ -6,9 +6,7 @@ import com.epmet.commons.tools.constant.AppClientConstant; import com.epmet.commons.tools.constant.MqConstant; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; -import com.epmet.commons.tools.dto.form.mq.MqBaseMsgDTO; import com.epmet.commons.tools.dto.form.mq.eventmsg.BasePointEventMsg; -import com.epmet.commons.tools.enums.EventEnum; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.scan.param.ImgScanParamDTO; @@ -17,17 +15,20 @@ 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.security.user.LoginUserUtil; -import com.epmet.commons.tools.utils.*; -import com.epmet.constant.ActConstant; -import com.epmet.constant.ActMessageConstant; -import com.epmet.constant.ReadFlagConstant; -import com.epmet.constant.UserMessageTypeConstant; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.DateUtils; +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.ScanContentUtils; +import com.epmet.constant.*; import com.epmet.dao.*; import com.epmet.dto.*; +import com.epmet.dto.form.SystemMsgFormDTO; import com.epmet.dto.form.UserMessageFormDTO; import com.epmet.dto.form.WxSubscribeMessageFormDTO; +import com.epmet.dto.form.demand.SubCodeFormDTO; import com.epmet.dto.form.work.*; import com.epmet.dto.result.ActSponsorResultDTO; +import com.epmet.dto.result.demand.OptionDTO; import com.epmet.dto.result.work.*; import com.epmet.entity.*; import com.epmet.feign.EpmetMessageOpenFeignClient; @@ -41,12 +42,10 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.UUID; +import javax.annotation.Resource; +import java.util.*; +import java.util.concurrent.atomic.AtomicReference; +import java.util.stream.Collectors; /** * 描述一下 @@ -56,7 +55,7 @@ import java.util.UUID; */ @Service public class WorkActServiceImpl implements WorkActService { - private Logger logger = LogManager.getLogger(WorkActServiceImpl.class); + private final Logger logger = LogManager.getLogger(WorkActServiceImpl.class); @Value("${openapi.scan.server.url}") private String scanApiUrl; @Value("${openapi.scan.method.textSyncScan}") @@ -97,9 +96,16 @@ public class WorkActServiceImpl implements WorkActService { private UserKindnessTimeLogDao userKindnessTimeLogDao; @Autowired private LatestActInfoDao latestActInfoDao; + @Resource + private IcPartyActivityService icPartyActivityService; + @Resource + private IcResiDemandDictService icResiDemandDictService; + @Resource + private IcPartyUnitService icPartyUnitService; + + /** - * @return void * @author yinzuomei * @description 发布活动-删除历史活动草稿 * @Date 2020/7/20 18:15 @@ -184,9 +190,55 @@ public class WorkActServiceImpl implements WorkActService { return publishActResultDTO; } + @Override + @Transactional(rollbackFor = Exception.class) + public PublishActResultDTO publishActV2(PublishActInfoFormDTO formDTO) { + //构造属性保存活动属性,活动内容 + ActInfoEntity actInfoEntity=this.constructActInfo(formDTO); + //校验参数 + + //校验 活动报名截止时间应该大于当前时间 + if (actInfoEntity.getSignUpEndTime().before(DateUtils.minStrToSecondDate(DateUtils.format(new Date(), DateUtils.DATE_TIME_PATTERN_END_WITH_MINUTE)))){ + throw new RenException(EpmetErrorCode.ACT_SIGN_UP_END_TIME_EARLIER_NOW_EERROR.getCode(),EpmetErrorCode.ACT_SIGN_UP_END_TIME_EARLIER_NOW_EERROR.getMsg()); + } + this.checkPublishFormDTO(actInfoEntity); + PublishActResultDTO publishActResultDTO=new PublishActResultDTO(); + //内容审核(活动标题、招募要求、活动内容图文) + this.auditAct(formDTO); + logger.info("发布活动,审核成功"); + + actInfoDao.insert(actInfoEntity); + //如果用户之前点击了预览,需要去更新草稿表里的act_info_id,记录草稿和活动的关系 + if(StringUtils.isNotBlank(formDTO.getActDraftId())){ + logger.info("更新latest_act_info表的act_info_id字段"); + latestActInfoDao.updateActInfoId(formDTO.getActDraftId(),actInfoEntity.getId()); + } + List actContentEntityList=this.constructActContent(formDTO.getActContent(),actInfoEntity.getId()); + for(ActContentEntity actContentEntity:actContentEntityList){ + actContentDao.insert(actContentEntity); + } + //插入一条操作日志 + ActOperationRecEntity actOperationRecEntity=new ActOperationRecEntity(); + actOperationRecEntity.setActId(actInfoEntity.getId()); + actOperationRecEntity.setType(ActConstant.ACT_OPER_TYPE_PUBLISH); + actOperationRecEntity.setNoticeUser(false); + actOperationRecEntity.setRemark(StrConstant.EPMETY_STR); + actOperationRecDao.insert(actOperationRecEntity); + + //删除所有的草稿 + this.deleteDraft(); + publishActResultDTO.setActId(actInfoEntity.getId()); + + //添加信息到ic_party_activity + if (ActConstant.PARTY.equals(formDTO.getActType())) { + IcPartyActivityEntity activity = getPartyActivityEntity(formDTO, actInfoEntity); + icPartyActivityService.insert(activity); + } + + return publishActResultDTO; + } /** - * @return void * @param actInfoEntity * @author yinzuomei * @description 第一次发布 @@ -209,23 +261,6 @@ public class WorkActServiceImpl implements WorkActService { } } - public static void main(String[] args) { - SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - - try { - Date yesterDate=format.parse("2020-07-26 13:00:00"); - Date today=format.parse("2020-07-27 13:00:00"); - Date tommorrow=format.parse("2020-07-28 13:00:00"); - Date today1=format.parse("2020-07-27 13:00:00"); - System.out.println(yesterDate.compareTo(today)); - System.out.println(tommorrow.compareTo(today)); - System.out.println(today.compareTo(today1)); - } catch (ParseException e) { - e.printStackTrace(); - } - - } - /** * @return void * @param formDTO @@ -720,7 +755,10 @@ public class WorkActServiceImpl implements WorkActService { if (wxmpMsg.success()) { logger.info("给审核通过的用户推送微信订阅消息成功"); } + } + //取消活动,删除ic_party_activity对应的活动 + icPartyActivityService.deleteByActId(formDTO.getActId()); } @@ -732,7 +770,7 @@ public class WorkActServiceImpl implements WorkActService { * @Date 2020/7/26 18:00 **/ @Override - public CanceledActDetailResultDTO canceledDetail(String actId) { + public CanceledActDetailResultDTO canceledDetail(String customerId, String actId) { CanceledActDetailResultDTO canceledActDetailResultDTO=actInfoDao.selectCanceledActInfo(actId); if(null!=canceledActDetailResultDTO){ canceledActDetailResultDTO.setActContent(actContentDao.selectByActId(actId)); @@ -741,6 +779,20 @@ public class WorkActServiceImpl implements WorkActService { }else{ canceledActDetailResultDTO.setIsMyPublish(false); } + + if (StringUtils.isNotBlank(canceledActDetailResultDTO.getServiceMatter())) { + //获取服务事项 + SubCodeFormDTO codeFormDTO = new SubCodeFormDTO(); + codeFormDTO.setCustomerId(customerId); + codeFormDTO.setParentCategoryCode(ActConstant.SERVICE_MATTER_CODE); + Map categoryMap = icResiDemandDictService.querySubCodeList(codeFormDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); + canceledActDetailResultDTO.setServiceMatterName(categoryMap.get(canceledActDetailResultDTO.getServiceMatter())); + } + if (StringUtils.isNotBlank(canceledActDetailResultDTO.getUnitId())) { + //获取单位名称 + IcPartyUnitDTO unitDTO = icPartyUnitService.get(canceledActDetailResultDTO.getUnitId()); + canceledActDetailResultDTO.setUnitName(unitDTO.getUnitName()); + } } return canceledActDetailResultDTO; } @@ -785,6 +837,20 @@ public class WorkActServiceImpl implements WorkActService { }else{ resultDTO.setIsMyPublish(false); } + + if (StringUtils.isNotBlank(resultDTO.getServiceMatter())) { + //获取服务事项 + SubCodeFormDTO codeFormDTO = new SubCodeFormDTO(); + codeFormDTO.setCustomerId(formDTO.getCustomerId()); + codeFormDTO.setParentCategoryCode(ActConstant.SERVICE_MATTER_CODE); + Map categoryMap = icResiDemandDictService.querySubCodeList(codeFormDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); + resultDTO.setServiceMatterName(categoryMap.get(resultDTO.getServiceMatter())); + } + if (StringUtils.isNotBlank(resultDTO.getUnitId())) { + //获取单位名称 + IcPartyUnitDTO unitDTO = icPartyUnitService.get(resultDTO.getUnitId()); + resultDTO.setUnitName(unitDTO.getUnitName()); + } } return resultDTO; } @@ -797,7 +863,7 @@ public class WorkActServiceImpl implements WorkActService { * @Date 2020/7/26 21:34 **/ @Override - public InProgressActDetailResultDTO inProgressDetail(String actId) { + public InProgressActDetailResultDTO inProgressDetail(String customerId, String actId) { InProgressActDetailResultDTO resultDTO = actInfoDao.selectInProgressDetail(actId); if (null != resultDTO) { Date nowDate=new Date(); @@ -853,6 +919,19 @@ public class WorkActServiceImpl implements WorkActService { }else{ resultDTO.setIsMyPublish(false); } + if (StringUtils.isNotBlank(resultDTO.getServiceMatter())) { + //获取服务事项 + SubCodeFormDTO codeFormDTO = new SubCodeFormDTO(); + codeFormDTO.setCustomerId(customerId); + codeFormDTO.setParentCategoryCode(ActConstant.SERVICE_MATTER_CODE); + Map categoryMap = icResiDemandDictService.querySubCodeList(codeFormDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); + resultDTO.setServiceMatterName(categoryMap.get(resultDTO.getServiceMatter())); + } + if (StringUtils.isNotBlank(resultDTO.getUnitId())) { + //获取单位名称 + IcPartyUnitDTO unitDTO = icPartyUnitService.get(resultDTO.getUnitId()); + resultDTO.setUnitName(unitDTO.getUnitName()); + } } return resultDTO; } @@ -917,11 +996,11 @@ public class WorkActServiceImpl implements WorkActService { String opAgencyId=userResult.getData().getId(); //备注 String remark=String.format(ActMessageConstant.ACT_POINTS_EVENT_REMARK,actInfoDTO.getTitle()); - MqBaseMsgDTO mqBaseMsgDTO=new MqBaseMsgDTO(); + //MqBaseMsgDTO mqBaseMsgDTO=new MqBaseMsgDTO(); //mq的事件类型 - mqBaseMsgDTO.setEventClass(EventEnum.ACTIVE_SEND_POINT.getEventClass()); + //mqBaseMsgDTO.setEventClass(EventEnum.ACTIVE_SEND_POINT.getEventClass()); //事件code - mqBaseMsgDTO.setEventTag(EventEnum.ACTIVE_SEND_POINT.getEventTag()); + //mqBaseMsgDTO.setEventTag(EventEnum.ACTIVE_SEND_POINT.getEventTag()); List basePointEventMsgArrayList=new ArrayList<>(); for(ActUserRelationEntity actUserRelationEntity:actUserRelationEntityList){ BasePointEventMsg basePointEventMsg=new BasePointEventMsg(); @@ -937,15 +1016,22 @@ public class WorkActServiceImpl implements WorkActService { basePointEventMsg.setOperatorId(loginUserUtil.getLoginUserId()); basePointEventMsgArrayList.add(basePointEventMsg); } - mqBaseMsgDTO.setMsg(JSON.toJSONString(basePointEventMsgArrayList)); - Result result=SendMqMsgUtils.sendMsg(mqBaseMsgDTO); + //mqBaseMsgDTO.setMsg(JSON.toJSONString(basePointEventMsgArrayList)); + //Result result=SendMqMsgUtils.sendMsg(mqBaseMsgDTO); + + SystemMsgFormDTO systemMsgFormDTO = new SystemMsgFormDTO(); + systemMsgFormDTO.setMessageType(SystemMessageType.ACTIVE_SEND_POINT); + systemMsgFormDTO.setContent(basePointEventMsgArrayList); + + Result result = epmetMessageOpenFeignClient.sendSystemMsgByMQ(systemMsgFormDTO); + ActGrantPointLogEntity actGrantPointLogEntity=new ActGrantPointLogEntity(); actGrantPointLogEntity.setActId(actInfoDTO.getId()); actGrantPointLogEntity.setCustomerId(actInfoDTO.getCustomerId()); actGrantPointLogEntity.setOperatorId(loginUserUtil.getLoginUserId()); actGrantPointLogEntity.setRemark(remark); actGrantPointLogEntity.setReward(actInfoDTO.getReward()); - actGrantPointLogEntity.setSendMsg(JSON.toJSONString(mqBaseMsgDTO)); + actGrantPointLogEntity.setSendMsg(JSON.toJSONString(systemMsgFormDTO)); actGrantPointLogEntity.setResponseMsg(JSON.toJSONString(result)); actGrantPointLogDao.insert(actGrantPointLogEntity); if(!result.success()){ @@ -958,11 +1044,11 @@ public class WorkActServiceImpl implements WorkActService { //查询当前用户所属组织信息 Result userResult = govOrgOpenFeignClient.getAgencyByStaff(loginUserUtil.getLoginUserId()); String opAgencyId = userResult.getData().getId(); - MqBaseMsgDTO mqBaseMsgDTO = new MqBaseMsgDTO(); + //MqBaseMsgDTO mqBaseMsgDTO = new MqBaseMsgDTO(); //mq的事件类型 - mqBaseMsgDTO.setEventClass(EventEnum.ACTIVE_SEND_POINT.getEventClass()); + //mqBaseMsgDTO.setEventClass(EventEnum.ACTIVE_SEND_POINT.getEventClass()); //事件code - mqBaseMsgDTO.setEventTag(EventEnum.ACTIVE_SEND_POINT.getEventTag()); + //mqBaseMsgDTO.setEventTag(EventEnum.ACTIVE_SEND_POINT.getEventTag()); List basePointEventMsgArrayList = new ArrayList<>(); BasePointEventMsg basePointEventMsg = new BasePointEventMsg(); basePointEventMsg.setOpAgencyId(opAgencyId); @@ -976,9 +1062,16 @@ public class WorkActServiceImpl implements WorkActService { basePointEventMsg.setSourceId(formDTO.getSourceId()); basePointEventMsg.setOperatorId(loginUserUtil.getLoginUserId()); basePointEventMsgArrayList.add(basePointEventMsg); - mqBaseMsgDTO.setMsg(JSON.toJSONString(basePointEventMsgArrayList)); - logger.info("发送消息入参:"+JSON.toJSON(mqBaseMsgDTO)); - Result result = SendMqMsgUtils.sendMsg(mqBaseMsgDTO); + //mqBaseMsgDTO.setMsg(JSON.toJSONString(basePointEventMsgArrayList)); + //logger.info("发送消息入参:"+JSON.toJSON(mqBaseMsgDTO)); + //Result result = SendMqMsgUtils.sendMsg(mqBaseMsgDTO); + + SystemMsgFormDTO msgForm = new SystemMsgFormDTO(); + msgForm.setMessageType(SystemMessageType.ACTIVE_SEND_POINT); + msgForm.setContent(basePointEventMsgArrayList); + + Result result = epmetMessageOpenFeignClient.sendSystemMsgByMQ(msgForm); + logger.info("发送消息返参:"+JSON.toJSON(result)); ActGrantPointLogEntity actGrantPointLogEntity=new ActGrantPointLogEntity(); actGrantPointLogEntity.setActId(formDTO.getSourceId()); @@ -986,7 +1079,7 @@ public class WorkActServiceImpl implements WorkActService { actGrantPointLogEntity.setOperatorId(loginUserUtil.getLoginUserId()); actGrantPointLogEntity.setRemark(formDTO.getRemark()); actGrantPointLogEntity.setReward(formDTO.getReward()); - actGrantPointLogEntity.setSendMsg(JSON.toJSONString(mqBaseMsgDTO)); + actGrantPointLogEntity.setSendMsg(JSON.toJSONString(msgForm)); actGrantPointLogEntity.setResponseMsg(JSON.toJSONString(result)); actGrantPointLogDao.insert(actGrantPointLogEntity); if (!result.success()) { @@ -1084,6 +1177,15 @@ public class WorkActServiceImpl implements WorkActService { //拒绝发放积分总人数 actStatisticalDTO.setDenyRewardUserNum(actUserRelationDao.selectCountByReward(actId,ActConstant.ACT_USER_STATUS_DENY)); actStatisticalService.save(actStatisticalDTO); + + //保存服务人数 + IcPartyActivityDTO dto = icPartyActivityService.getActivityByActId(actId); + if (null != dto) { + IcPartyActivityEntity actInfoEntity = new IcPartyActivityEntity(); + actInfoEntity.setId(dto.getId()); + actInfoEntity.setPeopleCount(actStatisticalDTO.getSignedInUserNum()); + icPartyActivityService.updateById(actInfoEntity); + } } /** @@ -1177,6 +1279,15 @@ public class WorkActServiceImpl implements WorkActService { //更新act_info表的SUMMARY_FLAG=true actInfoDTO.setSummaryFlag(true); actInfoService.update(actInfoDTO); + + //保存活动结果 + IcPartyActivityDTO dto = icPartyActivityService.getActivityByActId(formDTO.getActId()); + if (null != dto) { + IcPartyActivityEntity actInfoEntity = new IcPartyActivityEntity(); + actInfoEntity.setId(dto.getId()); + actInfoEntity.setResult(getContent(formDTO.getActSummary())); + icPartyActivityService.updateById(actInfoEntity); + } } /** @@ -1187,7 +1298,7 @@ public class WorkActServiceImpl implements WorkActService { * @Date 2020/7/27 13:36 **/ @Override - public ReEditActInfoResultDTO getActInfo(String actId) { + public ReEditActInfoResultDTO getActInfo(String customerId, String actId) { ActInfoDTO actInfoDTO=actInfoService.get(actId); if(null==actInfoDTO){ logger.error("act_info is null"); @@ -1203,6 +1314,21 @@ public class WorkActServiceImpl implements WorkActService { resultDTO.setActId(actId); List actContent=actContentDao.selectByActId(actId); resultDTO.setActContent(actContent); + + if (StringUtils.isNotBlank(resultDTO.getServiceMatter())) { + //获取服务事项 + SubCodeFormDTO codeFormDTO = new SubCodeFormDTO(); + codeFormDTO.setCustomerId(customerId); + codeFormDTO.setParentCategoryCode(ActConstant.SERVICE_MATTER_CODE); + Map categoryMap = icResiDemandDictService.querySubCodeList(codeFormDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); + resultDTO.setServiceMatterName(categoryMap.get(resultDTO.getServiceMatter())); + } + if (StringUtils.isNotBlank(resultDTO.getUnitId())) { + //获取单位名称 + IcPartyUnitDTO unitDTO = icPartyUnitService.get(resultDTO.getUnitId()); + resultDTO.setUnitName(unitDTO.getUnitName()); + } + return resultDTO; } @@ -1264,5 +1390,108 @@ public class WorkActServiceImpl implements WorkActService { return publishActResultDTO; } + @Override + @Transactional(rollbackFor = Exception.class) + public PublishActResultDTO rePublishV2(RePublishFormDTO rePublishFormDTO) { + ActInfoDTO originalActInfo=actInfoService.get(rePublishFormDTO.getActId()); + if(null==originalActInfo){ + logger.error("act_info is null"); + throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode()); + } + if(!originalActInfo.getCreatedBy().equals(loginUserUtil.getLoginUserId())){ + throw new RenException(EpmetErrorCode.REQUIRE_PERMISSION.getCode()); + } + if(!ActConstant.ACT_STATUS_PUBLISHED.equals(originalActInfo.getActStatus())){ + throw new RenException("只有进行中的活动才可以编辑"); + } + //构造属性保存活动属性,活动内容 + ActInfoEntity newActInfoEntity=this.constructRePublishActInfo(rePublishFormDTO); + //校验参数 + this.checkPublishFormDTO(newActInfoEntity); + PublishActResultDTO publishActResultDTO=new PublishActResultDTO(); + //内容审核(活动标题、招募要求、活动内容图文) + this.auditRePublishAct(rePublishFormDTO); + logger.info("重新发布活动,审核成功"); + newActInfoEntity.setId(rePublishFormDTO.getActId()); + actInfoDao.updateById(newActInfoEntity); + //删除原来的 + actContentDao.updateDelFlagByActId(rePublishFormDTO.getActId()); + //插入编辑后的活动详情 + List actContentEntityList=this.constructActContent(rePublishFormDTO.getActContent(),rePublishFormDTO.getActId()); + for(ActContentEntity actContentEntity:actContentEntityList){ + actContentDao.insert(actContentEntity); + } + //插入一条操作日志 + ActOperationRecEntity actOperationRecEntity=new ActOperationRecEntity(); + actOperationRecEntity.setActId(rePublishFormDTO.getActId()); + actOperationRecEntity.setType(ActConstant.ACT_OPER_TYPE_UPDATE); + actOperationRecEntity.setNoticeUser(rePublishFormDTO.getNoticePassedPeople()); + actOperationRecEntity.setRemark(StrConstant.EPMETY_STR); + actOperationRecDao.insert(actOperationRecEntity); + + //删除所有的草稿 + this.deleteDraft(); + publishActResultDTO.setActId(rePublishFormDTO.getActId()); + //发送消息通知-暂时不做了,前端默认串的是不通知 + //如果用户在重新发布之前点击了预览,需要去更新草稿表里的act_info_id,记录草稿和活动的关系 + if(StringUtils.isNotBlank(rePublishFormDTO.getActDraftId())){ + latestActInfoDao.updateActInfoId(rePublishFormDTO.getActDraftId(),newActInfoEntity.getId()); + } + + //添加信息到ic_party_activity + if (ActConstant.PARTY.equals(rePublishFormDTO.getActType())) { + IcPartyActivityDTO activityDTO = icPartyActivityService.getActivityByActId(newActInfoEntity.getId()); + if (null != activityDTO) { + IcPartyActivityEntity activity = getPartyActivityEntity(ConvertUtils.sourceToTarget(rePublishFormDTO, PublishActInfoFormDTO.class), newActInfoEntity); + activity.setId(activityDTO.getId()); + icPartyActivityService.updateById(activity); + } + } + + return publishActResultDTO; + } + + /** + * 构建联建活动对象 + * @Param formDTO + * @Return {@link IcPartyActivityEntity} + * @Author zhaoqifeng + * @Date 2021/12/23 14:32 + */ + private IcPartyActivityEntity getPartyActivityEntity(PublishActInfoFormDTO formDTO, ActInfoEntity actInfoEntity) { + IcPartyActivityEntity entity = new IcPartyActivityEntity(); + entity.setCustomerId(actInfoEntity.getCustomerId()); + entity.setAgencyId(actInfoEntity.getSponsorId()); + Result result=govOrgOpenFeignClient.getAgencyById(formDTO.getSponsorId()); + if(result.success()&&null!=result.getData()){ + entity.setPids(result.getData().getPids()); + }else{ + logger.warn("根据agencyId查询组织信息失败,agencyId={}",formDTO.getSponsorId()); + } + entity.setActId(actInfoEntity.getId()); + entity.setUnitId(actInfoEntity.getUnitId()); + entity.setServiceMatter(actInfoEntity.getServiceMatter()); + entity.setTitle(actInfoEntity.getTitle()); + entity.setTarget(actInfoEntity.getTarget()); + entity.setContent(getContent(formDTO.getActContent())); + entity.setPeopleCount(NumConstant.ZERO); + entity.setActivityTime(actInfoEntity.getActStartTime()); + entity.setAddress(actInfoEntity.getActAddress()); + entity.setLongitude(actInfoEntity.getActLongitude().toPlainString()); + entity.setLatitude(actInfoEntity.getActLatitude().toPlainString()); + return entity; + } + + private String getContent(List actContent) { + AtomicReference content = new AtomicReference<>(""); + actContent.forEach(i -> { + if(ActConstant.ACT_CONTENT_TYPE_TEXT.equals(i.getContentType())) { + content.set(content.get().concat("

").concat(i.getContent()).concat("

")); + } else { + content.set(content.get().concat("

").concat("").concat("

")); + } + }); + return content.get(); + } } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/bootstrap.yml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/bootstrap.yml index 11e6aea570..aa43055c8e 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/bootstrap.yml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/bootstrap.yml @@ -63,7 +63,7 @@ spring: password: @datasource.druid.password@ baseline-on-migrate: true baseline-version: 0 - + validate-on-migrate: false management: endpoints: web: diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.4__awardpoint_volunteerpid.sql b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.4__awardpoint_volunteerpid.sql new file mode 100644 index 0000000000..6849125e20 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.4__awardpoint_volunteerpid.sql @@ -0,0 +1,8 @@ +alter table ic_user_demand_rec add COLUMN AWARD_POINT int(11) not null default '0' comment '奖励积分', +add COLUMN SERVICE_LOCATION VARCHAR(255) NOT NULL DEFAULT '' COMMENT '服务地点,工作端指派默认居民居住房屋地址,居民端地图选择', +add COLUMN LOCATION_DETAIL VARCHAR(255) DEFAULT'' COMMENT '门牌号详细地址', +add COLUMN LONGITUDE VARCHAR(64) DEFAULT'' COMMENT '经度,需求人是ic的居民时,取所住楼栋的中心点位', +add COLUMN LATITUDE VARCHAR(64) DEFAULT'' COMMENT '纬度,需求人是ic的居民时,取所住楼栋的中心点位', +add COLUMN DEMAND_USER_HOUSE_ID VARCHAR(64) DEFAULT'' COMMENT '需求人是ic的居民时,记录下住的房屋id'; +-- alter table volunteer_info add COLUMN PID VARCHAR(64) comment '网格所属的组织id' after GRID_ID; +-- alter table volunteer_info add COLUMN PIDS VARCHAR(255) comment '网格的所有上级' after PID; \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.5__activity.sql b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.5__activity.sql new file mode 100644 index 0000000000..fd9732bc6e --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.5__activity.sql @@ -0,0 +1,9 @@ +ALTER TABLE `epmet_heart`.`act_info` + ADD COLUMN `ACT_TYPE` varchar(10) NULL COMMENT '活动类型 爱心活动heart 联建活动party' AFTER `CUSTOMER_ID`, + ADD COLUMN `UNIT_ID` varchar(64) NULL COMMENT '联建单位ID' AFTER `ACT_TYPE`, + ADD COLUMN `SERVICE_MATTER` varchar(64) NULL COMMENT '服务事项' AFTER `UNIT_ID`, + ADD COLUMN `TARGET` varchar(100) NULL COMMENT '活动目标' AFTER `TITLE`; + + +ALTER TABLE `epmet_heart`.`ic_party_activity` + ADD COLUMN `ACT_ID` varchar(64) NULL COMMENT 'act_info表ID' AFTER `PIDS`; \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.6__activity.sql b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.6__activity.sql new file mode 100644 index 0000000000..283aaaf5c2 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.6__activity.sql @@ -0,0 +1,5 @@ +ALTER TABLE `epmet_heart`.`latest_act_info` + ADD COLUMN `ACT_TYPE` varchar(10) NULL COMMENT '活动类型 爱心活动heart 联建活动party' AFTER `CUSTOMER_ID`, + ADD COLUMN `UNIT_ID` varchar(64) NULL COMMENT '联建单位ID' AFTER `ACT_TYPE`, + ADD COLUMN `SERVICE_MATTER` varchar(64) NULL COMMENT '服务事项' AFTER `UNIT_ID`, + ADD COLUMN `TARGET` varchar(100) NULL COMMENT '活动目标' AFTER `TITLE`; \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.7__service_name.sql b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.7__service_name.sql new file mode 100644 index 0000000000..0fda5abfb7 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/db/migration/V0.0.7__service_name.sql @@ -0,0 +1 @@ +alter table ic_user_demand_service add COLUMN SERVER_NAME varchar(64) comment '服务方名称' after SERVER_ID; \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/ActInfoDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/ActInfoDao.xml index 4ce15b04c7..6aa5b1b477 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/ActInfoDao.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/ActInfoDao.xml @@ -63,7 +63,8 @@ i.ACT_QUOTA actQuota, IFNULL(c.signupNum, 0) signupNum, -- 已报名人数 'signing_up' AS actCurrentState, -- 活动状态:报名中,未报满 - IF(u.USER_ID = #{userId},'signed_up','no_signed_up') as signupFlag + IF(u.USER_ID = #{userId},'signed_up','no_signed_up') as signupFlag, + i.ACT_TYPE as actType FROM act_info i LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND U.DEL_FLAG = '0' AND u.`STATUS` != 'refused' AND u.`STATUS` != 'canceled' AND u.USER_ID = #{userId} LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' AND re.`STATUS` != 'refused' AND re.`STATUS` != 'canceled' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID @@ -89,7 +90,8 @@ i.ACT_QUOTA actQuota, IFNULL(c.signupNum, 0) signupNum, -- 已报名人数 'enough' AS actCurrentState, -- 活动状态:报名中,已报满 - IF(u.USER_ID = #{userId},'signed_up','no_signed_up') as signupFlag + IF(u.USER_ID = #{userId},'signed_up','no_signed_up') as signupFlag, + i.ACT_TYPE as actType FROM act_info i LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND U.DEL_FLAG = '0' AND u.`STATUS` != 'refused' AND u.`STATUS` != 'canceled' AND u.USER_ID = #{userId} LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' AND re.`STATUS` != 'refused' AND re.`STATUS` != 'canceled' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID @@ -116,7 +118,8 @@ i.ACT_QUOTA actQuota, IFNULL(c.signupNum, 0) signupNum, -- 已报名人数 'end_sign_up' AS actCurrentState, -- 活动状态:未开始 - IF(u.USER_ID = #{userId},'signed_up','no_signed_up') as signupFlag + IF(u.USER_ID = #{userId},'signed_up','no_signed_up') as signupFlag, + i.ACT_TYPE as actType FROM act_info i LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND U.DEL_FLAG = '0' AND u.`STATUS` != 'refused' AND u.`STATUS` != 'canceled' AND u.USER_ID = #{userId} LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' AND re.`STATUS` != 'refused' AND re.`STATUS` != 'canceled' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID @@ -142,7 +145,8 @@ i.ACT_QUOTA actQuota, IFNULL(c.signupNum, 0) signupNum, -- 已报名人数 'in_progress' AS actCurrentState, -- 活动状态:进行中 - IF(u.USER_ID = #{userId},'signed_up','no_signed_up') as signupFlag + IF(u.USER_ID = #{userId},'signed_up','no_signed_up') as signupFlag, + i.ACT_TYPE as actType FROM act_info i LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND U.DEL_FLAG = '0' AND u.`STATUS` != 'refused' AND u.`STATUS` != 'canceled' AND u.USER_ID = #{userId} LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' AND re.`STATUS` != 'refused' AND re.`STATUS` != 'canceled' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID @@ -173,7 +177,8 @@ when i.ACT_STATUS = 'canceled' then 'canceled' end as actCurrentState, -- 活动状态:已结束、已取消 - IF(u.USER_ID = #{userId},'signed_up','no_signed_up') as signupFlag + IF(u.USER_ID = #{userId},'signed_up','no_signed_up') as signupFlag, + i.ACT_TYPE as actType FROM act_info i LEFT JOIN act_user_relation u ON i.ID = u.ACT_ID AND U.DEL_FLAG = '0' AND u.`STATUS` != 'refused' AND u.`STATUS` != 'canceled' AND u.USER_ID = #{userId} LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' AND re.`STATUS` != 'refused' AND re.`STATUS` != 'canceled' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID @@ -197,7 +202,8 @@ i.ACT_QUOTA_CATEGORY actQuotaCategory, -- 活动名额类型(true:固定名额(1) false: 不限制名额(0)) i.ACT_QUOTA actQuota, IFNULL(c.signupNum, 0) signupNum, -- 已报名人数 - 'auditing' AS actCurrentState -- 活动状态 + 'auditing' AS actCurrentState, -- 活动状态 + i.act_type as actType FROM act_user_relation u LEFT JOIN act_info i ON i.ID = u.ACT_ID LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' AND re.`STATUS` != 'refused' AND re.`STATUS` != 'canceled' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID WHERE i.DEL_FLAG = '0' @@ -222,7 +228,8 @@ i.ACT_QUOTA_CATEGORY actQuotaCategory, -- 活动名额类型(true:固定名额(1) false: 不限制名额(0)) i.ACT_QUOTA actQuota, IFNULL(c.signupNum, 0) signupNum, -- 已报名人数 - 'passed' AS actCurrentState -- 活动状态 + 'passed' AS actCurrentState, -- 活动状态 + i.act_type as actType FROM act_user_relation u LEFT JOIN act_info i ON i.ID = u.ACT_ID LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' AND re.`STATUS` != 'refused' AND re.`STATUS` != 'canceled' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID WHERE i.DEL_FLAG = '0' @@ -247,7 +254,8 @@ i.ACT_QUOTA_CATEGORY actQuotaCategory, -- 活动名额类型(true:固定名额(1) false: 不限制名额(0)) i.ACT_QUOTA actQuota, IFNULL(c.signupNum, 0) signupNum, -- 已报名人数 - 'refused' AS actCurrentState -- 活动状态 + 'refused' AS actCurrentState, -- 活动状态 + i.act_type as actType FROM act_user_relation u LEFT JOIN act_info i ON i.ID = u.ACT_ID LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' AND re.`STATUS` != 'refused' AND re.`STATUS` != 'canceled' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID WHERE i.DEL_FLAG = '0' @@ -272,7 +280,8 @@ i.ACT_QUOTA_CATEGORY actQuotaCategory, -- 活动名额类型(true:固定名额(1) false: 不限制名额(0)) i.ACT_QUOTA actQuota, IFNULL(c.signupNum, 0) signupNum, -- 已报名人数 - 'canceld' AS actCurrentState -- 活动状态 + 'canceld' AS actCurrentState, -- 活动状态 + i.act_type as actType FROM act_user_relation u LEFT JOIN act_info i ON i.ID = u.ACT_ID LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' AND re.`STATUS` != 'refused' AND re.`STATUS` != 'canceled' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID WHERE i.DEL_FLAG = '0' @@ -309,7 +318,8 @@ then 'end_sign_up' when NOW() then 'in_progress' - end as actCurrentState + end as actCurrentState, + i.act_type as actType FROM act_info i LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' AND re.`STATUS` != 'refused' AND re.`STATUS` != 'canceled' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID WHERE i.DEL_FLAG = '0' @@ -329,7 +339,8 @@ '您报名的活动即将开始' ELSE '活动进行中' - END title + END title, + i.act_type as actType FROM act_info i LEFT JOIN act_user_relation r ON i.ID = r.ACT_ID WHERE i.DEL_FLAG = '0' AND r.DEL_FLAG = '0' @@ -349,7 +360,8 @@ a.actStartTime, a.actEndTime, a.actAddress, - a.actCurrentState + a.actCurrentState, + a.actType FROM( SELECT i.ID actId, @@ -360,7 +372,8 @@ DATE_FORMAT(i.ACT_END_TIME,'%Y-%m-%d %H:%i') actEndTime, i.ACT_ADDRESS actAddress, 'finished' actCurrentState, - i.CREATED_TIME + i.CREATED_TIME, + i.ACT_TYPE as actType FROM act_info i LEFT JOIN act_live_rec r ON r.ACT_ID = i.ID AND r.DEL_FLAG = '0' WHERE i.DEL_FLAG = '0' @@ -432,7 +445,11 @@ IF(aur.SIGN_IN_FLAG = 'signed_in', true , false ) as isSignUp, -- 是否已签到(true已签到,false未签到) i.ACT_STATUS actStatus, i.CANCEL_REASON cancelReason, - DATE_FORMAT(i.CANCEL_TIME,'%Y-%m-%d %H:%i') cancelTime + DATE_FORMAT(i.CANCEL_TIME,'%Y-%m-%d %H:%i') cancelTime, + i.UNIT_ID AS unitId, + i.SERVICE_MATTER AS serviceMatter, + i.TARGET AS target, + i.act_type as actType FROM act_info i LEFT JOIN (SELECT count(1) signupNum, re.ACT_ID from act_user_relation re WHERE re.DEL_FLAG = '0' AND re.`STATUS` != 'refused' AND re.`STATUS` != 'canceled' GROUP BY re.ACT_ID) c ON c.ACT_ID = i.ID @@ -516,7 +533,8 @@ ) AS signedUp, ai.SIGN_UP_END_TIME as signUpEndTime, ai.SIGN_UP_START_TIME as signUpStartTime, - ai.ACT_ADDRESS as actAddress + ai.ACT_ADDRESS as actAddress, + ai.act_type as actType FROM act_info ai WHERE @@ -537,7 +555,8 @@ ai.ACT_END_TIME AS actEndTime, ai.CANCEL_TIME AS cancelTime, ai.CANCEL_REASON AS cancelReason, - ai.ACT_ADDRESS as actAddress + ai.ACT_ADDRESS as actAddress, + ai.act_type as actType FROM act_info ai WHERE @@ -559,7 +578,8 @@ ai.ACT_END_TIME AS actEndTime, ai.ACTUAL_START_TIME as actualStartTime, ai.ACTUAL_END_TIME as actualEndTime, - ai.ACT_ADDRESS as actAddress + ai.ACT_ADDRESS as actAddress, + ai.act_type as actType FROM act_info ai WHERE @@ -645,7 +665,11 @@ ai.SIGN_IN_START_TIME as signInStartTime, ai.SIGN_IN_END_TIME as signInEndTime, ai.SIGN_IN_ADDRESS as signInAddress, - ai.SIGN_IN_RADIUS as signInRadius + ai.SIGN_IN_RADIUS as signInRadius, + ai.ACT_TYPE, + ai.UNIT_ID, + ai.SERVICE_MATTER, + ai.TARGET FROM act_info ai WHERE @@ -678,7 +702,11 @@ ai.SIGN_IN_START_TIME as signInStartTime, ai.SIGN_IN_END_TIME as signInEndTime, ai.SIGN_IN_ADDRESS as signInAddress, - ai.SIGN_IN_RADIUS as signInRadius + ai.SIGN_IN_RADIUS as signInRadius, + ai.ACT_TYPE, + ai.UNIT_ID, + ai.SERVICE_MATTER, + ai.TARGET FROM act_info ai WHERE @@ -717,7 +745,11 @@ ai.SIGN_IN_START_TIME as signInStartTime, ai.SIGN_IN_END_TIME as signInEndTime, ai.SIGN_IN_ADDRESS as signInAddress, - ai.SIGN_IN_RADIUS as signInRadius + ai.SIGN_IN_RADIUS as signInRadius, + ai.ACT_TYPE, + ai.UNIT_ID, + ai.SERVICE_MATTER, + ai.TARGET FROM act_info ai WHERE diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcCommunitySelfOrganizationDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcCommunitySelfOrganizationDao.xml index aff4bf4c67..fc1a118ced 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcCommunitySelfOrganizationDao.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcCommunitySelfOrganizationDao.xml @@ -46,7 +46,7 @@ SELECT so.ORGANIZATION_NAME AS organizationName, so.ORGANIZATION_PERSON_COUNT AS organizationPersonCount, - DATE_FORMAT(so.ORGANIZATION_CREATED_TIME,'%Y-%m-%d') AS organizationCreatedTime, + IFNULL(DATE_FORMAT(so.ORGANIZATION_CREATED_TIME,'%Y-%m-%d'),DATE_FORMAT(so.CREATED_TIME,'%Y-%m-%d')) AS organizationCreatedTime, so.PRINCIPAL_NAME AS principalName, so.PRINCIPAL_PHONE AS principalPhone, so.SERVICE_ITEM AS serviceItem, diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcResiDemandDictDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcResiDemandDictDao.xml index d9d79ecaec..36aa408316 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcResiDemandDictDao.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcResiDemandDictDao.xml @@ -91,7 +91,8 @@ + + + + + + \ 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/deploy/docker-compose-prod.yml b/epmet-module/epmet-job/epmet-job-server/deploy/docker-compose-prod.yml index 13962e8e3a..b1813f2660 100644 --- a/epmet-module/epmet-job/epmet-job-server/deploy/docker-compose-prod.yml +++ b/epmet-module/epmet-job/epmet-job-server/deploy/docker-compose-prod.yml @@ -2,7 +2,7 @@ version: "3.7" services: epmet-job-server: container_name: epmet-job-server-prod - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-job-server:0.3.43 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-job-server:0.3.47 ports: - "8084:8084" network_mode: host # 使用现有网络 diff --git a/epmet-module/epmet-job/epmet-job-server/pom.xml b/epmet-module/epmet-job/epmet-job-server/pom.xml index a2632d820f..f772b6134b 100644 --- a/epmet-module/epmet-job/epmet-job-server/pom.xml +++ b/epmet-module/epmet-job/epmet-job-server/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.43 + 0.3.47 com.epmet epmet-job @@ -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/service/ProjectSendMessageService.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/ProjectSendMessageService.java index e005ed2543..6b8372cb76 100644 --- a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/ProjectSendMessageService.java +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/ProjectSendMessageService.java @@ -1,7 +1,6 @@ package com.epmet.service; import com.epmet.commons.tools.utils.Result; -import com.epmet.dto.ProjectDTO; import com.epmet.dto.extract.form.ExtractOriginFormDTO; /** @@ -18,4 +17,13 @@ public interface ProjectSendMessageService { * @return com.epmet.commons.tools.utils.Result */ Result projectSendMessage(ExtractOriginFormDTO formDTO); + + /** + * 项目耗时 + * @Param formDTO + * @Return {@link Result} + * @Author zhaoqifeng + * @Date 2022/1/12 14:04 + */ + Result projectWorkMinutes(ExtractOriginFormDTO formDTO); } diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/ProjectSendMessageServiceImpl.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/ProjectSendMessageServiceImpl.java index 78418a8173..1e74d82d1f 100644 --- a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/ProjectSendMessageServiceImpl.java +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/ProjectSendMessageServiceImpl.java @@ -32,4 +32,22 @@ public class ProjectSendMessageServiceImpl implements ProjectSendMessageService projectDTO.setCustomerId(formDTO.getCustomerId()); return govProjectOpenFeignClient.sendMessageJob(projectDTO); } + + /** + * 项目耗时 + * + * @param formDTO + * @Param formDTO + * @Return {@link Result} + * @Author zhaoqifeng + * @Date 2022/1/12 14:04 + */ + @Override + public Result projectWorkMinutes(ExtractOriginFormDTO formDTO) { + ProjectDTO projectDTO = new ProjectDTO(); + projectDTO.setCustomerId(formDTO.getCustomerId()); + projectDTO.setId(formDTO.getObjectId()); + projectDTO.setStatus("pending"); + return govProjectOpenFeignClient.projectWorkMinutesJob(projectDTO); + } } 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/ProjectWorkMinutesTask.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ProjectWorkMinutesTask.java new file mode 100644 index 0000000000..f5c230a648 --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ProjectWorkMinutesTask.java @@ -0,0 +1,43 @@ +package com.epmet.task; + +import com.alibaba.fastjson.JSON; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.extract.form.ExtractOriginFormDTO; +import com.epmet.service.ProjectSendMessageService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @Description + * @Author zhaoqifeng + * @Date 2022/1/12 14:01 + */ +@Component("projectWorkMinutesTask") +@Slf4j +public class ProjectWorkMinutesTask implements ITask{ + @Autowired + private ProjectSendMessageService projectSendMessageService; + + /** + * 执行定时任务接口 + * + * @param params 参数,多参数使用JSON数据 + */ + @Override + public void run(String params) { + log.info("ProjectWorkMinutesTask定时任务正在执行,参数为:{}", params); + ExtractOriginFormDTO formDTO = new ExtractOriginFormDTO(); + if (StringUtils.isNotBlank(params)) { + formDTO = JSON.parseObject(params, ExtractOriginFormDTO.class); + } + Result result = projectSendMessageService.projectWorkMinutes(formDTO); + if (result.success()) { + log.info("ProjectSendMessageTask定时任务执行成功"); + } else { + log.error("ProjectSendMessageTask定时任务执行失败:" + result.getMsg()); + } + } + +} 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/deploy/docker-compose-prod.yml b/epmet-module/epmet-message/epmet-message-server/deploy/docker-compose-prod.yml index b2d13dc34c..01efd03422 100644 --- a/epmet-module/epmet-message/epmet-message-server/deploy/docker-compose-prod.yml +++ b/epmet-module/epmet-message/epmet-message-server/deploy/docker-compose-prod.yml @@ -2,7 +2,7 @@ version: "3.7" services: epmet-message-server: container_name: epmet-message-server-prod - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-message-server:0.3.53 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-message-server:0.3.57 ports: - "8085:8085" network_mode: host # 使用现有网络 diff --git a/epmet-module/epmet-message/epmet-message-server/pom.xml b/epmet-module/epmet-message/epmet-message-server/pom.xml index 622c443eb5..fe91db7f6b 100644 --- a/epmet-module/epmet-message/epmet-message-server/pom.xml +++ b/epmet-module/epmet-message/epmet-message-server/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.53 + 0.3.57 com.epmet epmet-message 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-oss/epmet-oss-server/deploy/docker-compose-prod.yml b/epmet-module/epmet-oss/epmet-oss-server/deploy/docker-compose-prod.yml index 88849c5796..2ae17d5c59 100644 --- a/epmet-module/epmet-oss/epmet-oss-server/deploy/docker-compose-prod.yml +++ b/epmet-module/epmet-oss/epmet-oss-server/deploy/docker-compose-prod.yml @@ -3,7 +3,7 @@ services: epmet-oss-server: container_name: epmet-oss-server-prod # image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-test/epmet-oss-server:0.3.2 - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-oss-server:0.3.38 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-oss-server:0.3.40 ports: - "8083:8083" network_mode: host # 使用现有网络 diff --git a/epmet-module/epmet-oss/epmet-oss-server/pom.xml b/epmet-module/epmet-oss/epmet-oss-server/pom.xml index 5883128ed8..e27a7d8103 100644 --- a/epmet-module/epmet-oss/epmet-oss-server/pom.xml +++ b/epmet-module/epmet-oss/epmet-oss-server/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.38 + 0.3.40 com.epmet epmet-oss diff --git a/epmet-module/epmet-point/epmet-point-server/deploy/docker-compose-prod.yml b/epmet-module/epmet-point/epmet-point-server/deploy/docker-compose-prod.yml index 7203606525..d4ea51ca74 100644 --- a/epmet-module/epmet-point/epmet-point-server/deploy/docker-compose-prod.yml +++ b/epmet-module/epmet-point/epmet-point-server/deploy/docker-compose-prod.yml @@ -2,7 +2,7 @@ version: "3.7" services: epmet-point-server: container_name: epmet-point-server-prod - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-point-server:0.0.60 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-point-server:0.0.63 ports: - "8112:8112" network_mode: host # 使用现有网络 diff --git a/epmet-module/epmet-point/epmet-point-server/pom.xml b/epmet-module/epmet-point/epmet-point-server/pom.xml index 89c84eb878..8aea483cfd 100644 --- a/epmet-module/epmet-point/epmet-point-server/pom.xml +++ b/epmet-module/epmet-point/epmet-point-server/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.0.60 + 0.0.63 epmet-point com.epmet @@ -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 4.0.0 - 0.0.179 + 0.0.183 com.epmet diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueProjectCategoryDictDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueProjectCategoryDictDTO.java index 83920372a1..b89917e0d7 100644 --- a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueProjectCategoryDictDTO.java +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueProjectCategoryDictDTO.java @@ -17,9 +17,10 @@ package com.epmet.dto; +import lombok.Data; + import java.io.Serializable; import java.util.Date; -import lombok.Data; /** @@ -67,7 +68,7 @@ public class IssueProjectCategoryDictDTO implements Serializable { * 分类名称 */ private String categoryName; - + private String parentCategoryName; /** * 分类类别1,2,3,4.... */ diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/CommonIssueListFormDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/CommonIssueListFormDTO.java index 925551f55c..bebad0de3d 100644 --- a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/CommonIssueListFormDTO.java +++ b/epmet-module/gov-issue/gov-issue-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/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/DailyStatisticalVoteJobResultDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/DailyStatisticalVoteJobResultDTO.java index 7bb45f5a4e..581f97575e 100644 --- a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/DailyStatisticalVoteJobResultDTO.java +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/DailyStatisticalVoteJobResultDTO.java @@ -17,6 +17,7 @@ public class DailyStatisticalVoteJobResultDTO implements Serializable { private static final long serialVersionUID = 5266996778036448163L; private String issueId; + private String customerId; /** * 统计日期 diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueCategoryTagResultDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueCategoryTagResultDTO.java index bfd9eec5f4..ef22a0961d 100644 --- a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueCategoryTagResultDTO.java +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueCategoryTagResultDTO.java @@ -31,8 +31,12 @@ public class IssueCategoryTagResultDTO implements Serializable { //equals计算时忽略isDisable属性 @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; + } IssueCategoryTagResultDTO that = (IssueCategoryTagResultDTO) o; return Objects.equals(id, that.id) && Objects.equals(name, that.name); diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java index 8a0233b46f..5ebed6c49e 100644 --- a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java @@ -4,9 +4,6 @@ import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; -import com.epmet.dto.IssueApplicationDTO; -import com.epmet.dto.IssueDTO; -import com.epmet.dto.IssueSuggestionDTO; import com.epmet.dto.*; import com.epmet.dto.form.*; import com.epmet.dto.result.*; @@ -25,10 +22,7 @@ import com.epmet.resi.mine.dto.from.MyShiftIssueTopicsFormDTO; import com.epmet.resi.mine.dto.result.MyShiftIssueTopicsResultDTO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.MediaType; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; @@ -372,4 +366,14 @@ public interface GovIssueOpenFeignClient { **/ @PostMapping(value = "/gov/issue/issueprojectcategorydict/getcategorylist") Result> getCategoryList(@RequestBody IssueProjectCategoryDictListFormDTO formDTO); + + /** + * 获取项目分类名 + * @Param customerId + * @Return {@link Result< Map< String, String>>} + * @Author zhaoqifeng + * @Date 2022/1/5 10:16 + */ + @PostMapping("/gov/issue/issueprojectcategorydict/categoryMap/{customerId}") + Result> getCategoryMap(@PathVariable("customerId") String customerId); } diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java index 5e59dc20fe..ae87c2cd6b 100644 --- a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java @@ -305,4 +305,18 @@ public class GovIssueOpenFeignClientFallBack implements GovIssueOpenFeignClient public Result> getCategoryList(IssueProjectCategoryDictListFormDTO formDTO) { return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "getCategoryList", formDTO); } + + /** + * 获取项目分类名 + * + * @param customerId + * @Param customerId + * @Return {@link Result< Map< String, String>>} + * @Author zhaoqifeng + * @Date 2022/1/5 10:16 + */ + @Override + public Result> getCategoryMap(String customerId) { + return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "getCategoryMap", customerId); + } } diff --git a/epmet-module/gov-issue/gov-issue-server/deploy/docker-compose-prod.yml b/epmet-module/gov-issue/gov-issue-server/deploy/docker-compose-prod.yml index fd568a02f5..8105b3917f 100644 --- a/epmet-module/gov-issue/gov-issue-server/deploy/docker-compose-prod.yml +++ b/epmet-module/gov-issue/gov-issue-server/deploy/docker-compose-prod.yml @@ -2,7 +2,7 @@ version: "3.7" services: gov-issue-server: container_name: gov-issue-server-prod - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/gov-issue-server:0.3.90 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/gov-issue-server:0.3.100 ports: - "8101:8101" network_mode: host # 使用现有网络 diff --git a/epmet-module/gov-issue/gov-issue-server/pom.xml b/epmet-module/gov-issue/gov-issue-server/pom.xml index e1f0aa429e..c09284177c 100644 --- a/epmet-module/gov-issue/gov-issue-server/pom.xml +++ b/epmet-module/gov-issue/gov-issue-server/pom.xml @@ -2,7 +2,7 @@ - 0.3.90 + 0.3.100 gov-issue com.epmet diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueProjectCategoryDictController.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueProjectCategoryDictController.java index f77f9ce9d9..51b04c93f3 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueProjectCategoryDictController.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueProjectCategoryDictController.java @@ -33,7 +33,6 @@ import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.IssueProjectCategoryDictDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; -import com.epmet.entity.IssueProjectCategoryDictEntity; import com.epmet.excel.IssueProjectCategoryDictExcel; import com.epmet.project.dto.CustomerCategoryDTO; import com.epmet.project.dto.result.ProjectCategoryDictResultDTO; @@ -288,5 +287,17 @@ public class IssueProjectCategoryDictController { return new Result>().ok(issueProjectCategoryDictService.selectCategoryOneLevelListByCustomerId(tokenDto.getCustomerId())); } + /** + * 获取项目分类名 + * @Param customerId + * @Return {@link Result< Map< String, String>>} + * @Author zhaoqifeng + * @Date 2022/1/5 10:16 + */ + @PostMapping("categoryMap/{customerId}") + public Result> getCategoryMap(@PathVariable("customerId") String customerId) { + return new Result>().ok(issueProjectCategoryDictService.getCategoryMap(customerId)); + } + } diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectCategoryDictDao.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectCategoryDictDao.java index 50a93b4bef..4259265dac 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectCategoryDictDao.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectCategoryDictDao.java @@ -192,4 +192,13 @@ public interface IssueProjectCategoryDictDao extends BaseDao selectCategoryOneLevelListByCustomerId(@Param("customerId")String customerId); + /** + * @Description 获取客户下分类 + * @Param customerId + * @Return {@link List< IssueProjectCategoryDictDTO>} + * @Author zhaoqifeng + * @Date 2022/1/5 10:45 + */ + List getCategoryByCustomer(@Param("customerId") String customerId); + } diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteDetailDao.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteDetailDao.java index a83bba6689..f79dfc1fc0 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteDetailDao.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteDetailDao.java @@ -140,7 +140,7 @@ public interface IssueVoteDetailDao extends BaseDao { * @author zxc * @date 2021/12/29 2:02 下午 */ - List statisticVote(@Param("customerId")String customerId,@Param("dateId")String dateId); + List statisticVote(@Param("customerId")String customerId,@Param("dateId")String dateId,@Param("status")Boolean status); /** * @Description 根据议题ID查询折线图一天的数据 diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/redis/IssueProjectTagDictRedis.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/redis/IssueProjectTagDictRedis.java index 17f236e2d9..fa99ca5fc5 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/redis/IssueProjectTagDictRedis.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/redis/IssueProjectTagDictRedis.java @@ -122,7 +122,9 @@ public class IssueProjectTagDictRedis { Map> 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/IssueProjectCategoryDictService.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueProjectCategoryDictService.java index 292e6449d8..204fba3743 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueProjectCategoryDictService.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueProjectCategoryDictService.java @@ -25,7 +25,6 @@ import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.entity.IssueProjectCategoryDictEntity; import com.epmet.project.dto.result.ProjectCategoryDictResultDTO; -import org.springframework.web.bind.annotation.RequestBody; import java.util.List; import java.util.Map; @@ -230,4 +229,6 @@ public interface IssueProjectCategoryDictService extends BaseService selectCategoryOneLevelListByCustomerId(String customerId); + Map getCategoryMap(String customerId); + } diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectCategoryDictServiceImpl.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectCategoryDictServiceImpl.java index 28a7192afb..08adcb5860 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectCategoryDictServiceImpl.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectCategoryDictServiceImpl.java @@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; @@ -507,6 +508,20 @@ public class IssueProjectCategoryDictServiceImpl extends BaseServiceImpl getCategoryMap(String customerId) { + List list = baseDao.getCategoryByCustomer(customerId); + if (CollectionUtils.isEmpty(list)) { + return Collections.emptyMap(); + } + list.forEach(item -> { + if(StringUtils.isNotBlank(item.getParentCategoryName())) { + item.setCategoryName(item.getParentCategoryName().concat(StrConstant.HYPHEN).concat(item.getCategoryName())); + } + }); + return list.stream().collect(Collectors.toMap(IssueProjectCategoryDictDTO::getCategoryCode, IssueProjectCategoryDictDTO::getCategoryName)); + } + /** * @Description 项目分类处理 * @Param list 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 daysBetween = DateUtils.getDaysBetween(form.getStartDate(), form.getEndDate()); customerIds.forEach(customerId -> { daysBetween.forEach(dateId -> { - statisticVote(customerId,dateId); + statisticVote(customerId,yyyyMMddToLine(dateId)); }); }); }else { if (StringUtils.isBlank(form.getDateId())){ - form.setDateId(LocalDate.now().minusDays(NumConstant.ONE).toString().replace("-", "")); + form.setDateId(LocalDate.now().minusDays(NumConstant.ONE).toString()); } customerIds.forEach(customerId -> { statisticVote(customerId, form.getDateId()); @@ -352,6 +353,14 @@ public class IssueVoteStatisticalDailyServiceImpl extends BaseServiceImpl dayAdd = issueVoteDetailDao.statisticVote(customerId, dateId); + List dayAdd = issueVoteDetailDao.statisticVote(customerId, dateId, true); if (CollectionUtils.isNotEmpty(dayAdd)){ //累计 - List allDayAdd = issueVoteDetailDao.statisticVote(customerId, null); + List allDayAdd = issueVoteDetailDao.statisticVote(customerId, dateId, false); dayAdd.forEach(d -> allDayAdd.stream().filter(a -> a.getIssueId().equals(d.getIssueId())).forEach(a -> { d.setOppositionCount(a.getOppositionCount()); d.setSupportCount(a.getSupportCount()); d.setTotalCount(a.getTotalCount()); })); List needInsert = ConvertUtils.sourceToTarget(dayAdd, IssueVoteStatisticalDailyEntity.class); - Integer delNum; - do { - delNum = baseDao.delHistoryData(customerId, dateId); - } while (delNum != null && delNum > NumConstant.ZERO); - List> partition = ListUtils.partition(needInsert, NumConstant.ONE_HUNDRED); - partition.forEach(p -> { - baseDao.insertBatch(p); - }); + delAndInsert(needInsert,customerId,dateId); } } + @Transactional(rollbackFor = Exception.class) + public void delAndInsert(List needInsert,String customerId,String dateId){ + Integer delNum; + do { + delNum = baseDao.delHistoryData(customerId, dateId); + } while (delNum > NumConstant.ZERO); + List> partition = ListUtils.partition(needInsert, NumConstant.ONE_HUNDRED); + partition.forEach(p -> { + baseDao.insertBatch(p); + }); + } + } \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueVoteStatisticalServiceImpl.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueVoteStatisticalServiceImpl.java index f5cd7251c9..f8afd7bbf7 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueVoteStatisticalServiceImpl.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueVoteStatisticalServiceImpl.java @@ -524,7 +524,9 @@ public class IssueVoteStatisticalServiceImpl extends BaseServiceImpl @@ -239,8 +237,6 @@ AND RESOLVE_TYPE = 'resolved' ORDER BY created_time DESC - LIMIT #{pageNo}, - #{pageSize} - SELECT ID, PID, @@ -292,4 +292,20 @@ WHERE customer_id = #{customerId} AND id = #{id} AND DEL_FLAG = '0' + + diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteDetailDao.xml b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteDetailDao.xml index def42fc563..4138ee635c 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteDetailDao.xml +++ b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteDetailDao.xml @@ -186,15 +186,16 @@ diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteStatisticalDailyDao.xml b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteStatisticalDailyDao.xml index bcbe6a5a4d..0340a7ea14 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteStatisticalDailyDao.xml +++ b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteStatisticalDailyDao.xml @@ -147,7 +147,7 @@ votable_count, - + customer_id, created_by, @@ -180,7 +180,7 @@ #{item.votableCount}, - + #{item.customerId}, #{item.createdBy}, diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/CustomerAgencyDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/CustomerAgencyDTO.java index e7072c3cdb..c19414c55c 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/CustomerAgencyDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/CustomerAgencyDTO.java @@ -157,4 +157,26 @@ public class CustomerAgencyDTO implements Serializable { * 中心位置纬度 */ private String latitude; + + /** + * 组织编码 + */ + private String code; + + /** + * 负责人姓名 + */ + private String contacts; + + /** + * 联系电话 + */ + private String mobile; + + + //内部接口使用 + /** + * open:当前客户新增组织需要选择areaCode;closed: 无需选择区域编码 + */ + private String areaCodeSwitch; } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/CustomerDepartmentDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/CustomerDepartmentDTO.java index 3c97da56b3..9381a609d0 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/CustomerDepartmentDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/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/gov-org/gov-org-client/src/main/java/com/epmet/dto/CustomerGridDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/CustomerGridDTO.java index d58682f00a..a3600b2e0e 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/CustomerGridDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/CustomerGridDTO.java @@ -126,4 +126,24 @@ public class CustomerGridDTO implements Serializable { * 所有上级组织名 */ private String allParentName; + + /** + * 网格编码 + */ + private String code; + + /** + * 组织编码 + */ + private String gridType; + + /** + * 负责人姓名 + */ + private String contacts; + + /** + * 联系电话 + */ + private String mobile; } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcPartyServiceCenterMatterDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcPartyServiceCenterMatterDTO.java index 42b028df98..c946c13431 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcPartyServiceCenterMatterDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcPartyServiceCenterMatterDTO.java @@ -98,4 +98,9 @@ public class IcPartyServiceCenterMatterDTO implements Serializable { */ private String customerId; + /** + * 封面图 + */ + private String matterImg; + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/MatterListDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/MatterListDTO.java index 95c545f656..d3497bacd1 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/MatterListDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/MatterListDTO.java @@ -38,10 +38,13 @@ public class MatterListDTO implements Serializable { private String appointmentType; + private String matterImg; + public MatterListDTO() { this.sort = NumConstant.ZERO; this.matterName = ""; this.matterId = ""; this.allowTime = ""; + this.matterImg = ""; } } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/TimeDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/TimeDTO.java index 00b01c30fe..f80b084980 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/TimeDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/TimeDTO.java @@ -18,5 +18,7 @@ public class TimeDTO implements Serializable { private Boolean isAppointment = true; + private Boolean isMiss = false; + private String time; } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddAgencyV2FormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddAgencyV2FormDTO.java index 21867756d5..50ee7a010c 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddAgencyV2FormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddAgencyV2FormDTO.java @@ -87,4 +87,16 @@ public class AddAgencyV2FormDTO implements Serializable { //区域编码名称 @NotBlank(message = "", groups = AreaCodeGroup.class) private String areaName; + /** + * 组织编码[手动输入的] + */ + private String code; + /** + * 负责人 + */ + private String contacts; + /** + * 联系电话 + */ + private String mobile; } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddDepartmentFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddDepartmentFormDTO.java index 5a582535c6..911efdcb12 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddDepartmentFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddDepartmentFormDTO.java @@ -54,5 +54,18 @@ public class AddDepartmentFormDTO implements Serializable { @Length(max=250,message = "部门职责不能超过250个字") private String departmentDuty; + /** + * 组织编码 + */ + private String code; + /** + * 负责人 + */ + private String contacts; + /** + * 联系电话 + */ + private String mobile; + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddGridFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddGridFormDTO.java index a9473e218e..965f8b5fc6 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddGridFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddGridFormDTO.java @@ -34,5 +34,21 @@ public class AddGridFormDTO implements Serializable { * 管辖区域 */ private String manageDistrict; + /** + * 网格编码[手动输入的] + */ + private String code; + /** + * 网格类型【字典表sys_dict_data,key:grid_type】 + */ + private String gridType; + /** + * 负责人 + */ + private String contacts; + /** + * 联系电话 + */ + private String mobile; } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AllMattersFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AllMattersFormDTO.java new file mode 100644 index 0000000000..6d454b4c98 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AllMattersFormDTO.java @@ -0,0 +1,22 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/12/20 1:50 下午 + * @DESC + */ +@Data +public class AllMattersFormDTO implements Serializable { + + private static final long serialVersionUID = 5292223887794821327L; + + public interface AllMattersForm{} + + @NotBlank(message = "gridId不能为空",groups = AllMattersForm.class) + private String gridId; +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AppointmentFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AppointmentFormDTO.java index a1caadfd14..208f43672e 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AppointmentFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AppointmentFormDTO.java @@ -51,4 +51,14 @@ public class AppointmentFormDTO implements Serializable { * 备注 */ private String remark; + + /** + * 组织ID + */ + private String orgId; + + /** + * 组织类型,grid:网格,agency:组织 + */ + private String orgType; } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AppointmentMiniFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AppointmentMiniFormDTO.java new file mode 100644 index 0000000000..cfaf9da56a --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AppointmentMiniFormDTO.java @@ -0,0 +1,64 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/11/22 2:00 下午 + * @DESC + */ +@Data +public class AppointmentMiniFormDTO implements Serializable { + + private static final long serialVersionUID = -7113952715343314153L; + + public interface AppointmentMiniForm{} + + /** + * 事项ID + */ + @NotBlank(message = "matterId不能为空",groups = AppointmentMiniForm.class) + private String matterId; + + /** + * 预约日期 + */ + @NotBlank(message = "appointmentDate不能为空",groups = AppointmentMiniForm.class) + private String appointmentDate; + + /** + * 预约编号 + */ + @NotBlank(message = "timeId不能为空",groups = AppointmentMiniForm.class) + private String timeId; + + /** + * 预约人 + */ + private String appointmentName; + + /** + * 预约电话 + */ + private String appointmentPhone; + + /** + * 备注 + */ + private String remark; + + /** + * 组织ID + */ + @NotBlank(message = "orgId不能为空",groups = AppointmentMiniForm.class) + private String orgId; + + /** + * 组织类型,grid:网格,agency:组织 + */ + @NotBlank(message = "orgType不能为空",groups = AppointmentMiniForm.class) + private String orgType; +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AppointmentRecordMiniFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AppointmentRecordMiniFormDTO.java new file mode 100644 index 0000000000..b3a14cf11b --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AppointmentRecordMiniFormDTO.java @@ -0,0 +1,22 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/12/24 10:38 上午 + * @DESC + */ +@Data +public class AppointmentRecordMiniFormDTO implements Serializable { + + private static final long serialVersionUID = -2963684994195809536L; + + public interface AppointmentRecordMiniForm{} + + @NotBlank(message = "gridId不能为空",groups = AppointmentRecordMiniForm.class) + private String gridId; +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CustomerAreaCodeFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CustomerAreaCodeFormDTO.java new file mode 100644 index 0000000000..fe678d0a84 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CustomerAreaCodeFormDTO.java @@ -0,0 +1,47 @@ +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; + +/** + * 运营端-客户管理,修改客户信息,调用gov-org服务,修改组织区划开关,修改根组织areaCode入参。 + */ +@Data +public class CustomerAreaCodeFormDTO implements Serializable { + + public interface ShowGroup extends CustomerClientShowGroup {} + public interface AddUserInternalGroup { + } + + public interface OpenAreaCodeSwitchGroup extends CustomerClientShowGroup {} + /** + * 客户ID + */ + @NotBlank(message = "customerId不能为空",groups = AddUserInternalGroup.class) + private String customerId; + + /** + * open:当前客户新增组织需要选择areaCode;closed: 无需选择区域编码 + */ + @NotBlank(message = "组织区划开关不能为空,开启:open;关闭:closed",groups = ShowGroup.class) + private String areaCodeSwitch; + + @NotBlank(message = "根组织不能为空",groups = AddUserInternalGroup.class) + private String rootAgencyId; + + @NotBlank(message = "rootAgencyAreaCode不能为空",groups = OpenAreaCodeSwitchGroup.class) + private String rootAgencyAreaCode; + + @NotBlank(message = "rootAgencyParentCode不能为空",groups = OpenAreaCodeSwitchGroup.class) + private String rootAgencyParentCode; + + /** + * token获取userId + */ + @NotBlank(message = "当前操作用户id不能为空",groups = AddUserInternalGroup.class) + private String userId; +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditAgencyFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditAgencyFormDTO.java index f279164095..7b3ff97ed8 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditAgencyFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditAgencyFormDTO.java @@ -59,4 +59,34 @@ public class EditAgencyFormDTO implements Serializable { @NotBlank(message = "tokenDto获取userId为空", groups = AddUserInternalGroup.class) private String userId; + /** + * 组织编码[手动输入的] + */ + private String code; + /** + * 负责人 + */ + private String contacts; + /** + * 联系电话 + */ + private String mobile; + + /** + * open: 选择地区编码必填;closed: 无需选择地区编码;0409新增返参 + */ + @NotBlank(message = "areaCodeSwitch不能为空", groups = AddUserInternalGroup.class) + private String areaCodeSwitch; + + /** + * 组织区划代码 + */ + private String areaCode; + /** + * 父级组织编码 + */ + private String parentAreaCode; + + @NotBlank(message = "组织级别不能为空;社区级:community,乡(镇、街道)级:street,区县级: district,市级: city省级:province", groups = AddAgencyV2FormDTO.AddUserInternalGroup.class) + private String level; } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditDepartmentFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditDepartmentFormDTO.java index 5d59b289f0..2f40bfa6e1 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditDepartmentFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditDepartmentFormDTO.java @@ -56,4 +56,17 @@ public class EditDepartmentFormDTO implements Serializable { @Length(max=250,message = "部门职责不能超过250个字") private String departmentDuty; + /** + * 组织编码[手动输入的] + */ + private String code; + /** + * 负责人 + */ + private String contacts; + /** + * 联系电话 + */ + private String mobile; + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditGridFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditGridFormDTO.java index ff48cd1972..1c42608fd8 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditGridFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EditGridFormDTO.java @@ -42,5 +42,21 @@ public class EditGridFormDTO implements Serializable { //客户Id private String customerId; + /** + * 网格编码[手动输入的] + */ + private String code; + /** + * 网格类型【字典表sys_dict_data,key:grid_type】 + */ + private String gridType; + /** + * 负责人 + */ + private String contacts; + /** + * 联系电话 + */ + private String mobile; } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/OrgMobileFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/OrgMobileFormDTO.java new file mode 100644 index 0000000000..72e91bf810 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/OrgMobileFormDTO.java @@ -0,0 +1,26 @@ +package com.epmet.dto.form; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; + +/** + * @author sun + * @Description 查询网格所属组织电话 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class OrgMobileFormDTO { + + /** + * 网格Id + */ + @NotBlank(message = "网格Id不能为空", groups = OrgMobile.class) + private String gridId; + + public interface OrgMobile{} + +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/PartyServiceCenterDetailFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/PartyServiceCenterDetailFormDTO.java new file mode 100644 index 0000000000..b7ec31560e --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/PartyServiceCenterDetailFormDTO.java @@ -0,0 +1,22 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/12/28 5:05 下午 + * @DESC + */ +@Data +public class PartyServiceCenterDetailFormDTO implements Serializable { + + private static final long serialVersionUID = 8849427528238500433L; + + public interface PartyServiceCenterDetailForm{} + + @NotBlank(message = "partyServiceCenterId不能为空",groups = PartyServiceCenterDetailForm.class) + private String partyServiceCenterId; +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyListResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyListResultDTO.java index b1261e2761..52f09a0a48 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyListResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyListResultDTO.java @@ -45,7 +45,19 @@ public class AgencyListResultDTO implements Serializable { /** * 总人数 */ - private Integer totalUser; - - + private Integer totalUser = 0; + /** + * 编码 + */ + private String code = ""; + /** + * 负责人 + */ + private String contacts = ""; + /** + * 联系电话 + */ + private String mobile = ""; + private String areaCode; + private String parentAreaCode; } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencysResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencysResultDTO.java index 933bdbb492..cace2a4c84 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencysResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencysResultDTO.java @@ -106,4 +106,16 @@ public class AgencysResultDTO implements Serializable { * 当前agencyId所属的客户id */ private String customerId; + /** + * 组织编码[手动输入的] + */ + private String code; + /** + * 负责人 + */ + private String contacts; + /** + * 联系电话 + */ + private String mobile; } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AllMattersResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AllMattersResultDTO.java new file mode 100644 index 0000000000..f229cc1d37 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AllMattersResultDTO.java @@ -0,0 +1,65 @@ +package com.epmet.dto.result; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/12/20 1:51 下午 + * @DESC + */ +@Data +public class AllMattersResultDTO implements Serializable { + + private static final long serialVersionUID = -2859875516671396422L; + + /** + * 可预约事项名字 + */ + private String matterName; + + /** + * 可预约时间 + */ + private String allowTime; + + /** + * 可预约事项ID + */ + private String matterId; + + /** + * 事项封面图 + */ + private String matterImg; + + private String address; + + private String workPhone; + + private String centerName; + + @JsonIgnore + private String startTime; + + @JsonIgnore + private String endTime; + + /** + * 预约类型,每天:everyDay,工作日:workDay,周末:weekend + */ + private String appointmentType; + + public AllMattersResultDTO() { + this.matterName = ""; + this.allowTime = ""; + this.matterId = ""; + this.matterImg = ""; + this.address = ""; + this.workPhone = ""; + this.centerName = ""; + this.appointmentType=""; + } +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AppointmentRecordResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AppointmentRecordResultDTO.java index 84813a4f47..f7189534a4 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AppointmentRecordResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AppointmentRecordResultDTO.java @@ -40,15 +40,45 @@ public class AppointmentRecordResultDTO implements Serializable { */ private String remark; + /** + * 事项图片 + */ + private String matterImg; + + /** + * 是否能取消预约 true:能,false:不能 + */ + private Boolean isCancel; + + /** + * 记录ID + */ private String recordId; + /** + * 可预约事项所属中心名字 + */ + private String centerName; + + /** + * 可预约事项所属中心地址 + */ + private String address; + /** * 预约时间 */ private List appointmentTime; + /** + * 预约日期 + */ + private String appointmentDate; + @JsonIgnore private String timeId; + @JsonIgnore + private String matterId; public AppointmentRecordResultDTO() { this.sort = NumConstant.ZERO; @@ -58,5 +88,8 @@ public class AppointmentRecordResultDTO implements Serializable { this.remark = ""; this.appointmentTime = new ArrayList<>(); this.recordId = ""; + this.appointmentDate = ""; + this.isCancel = true; + this.matterImg = ""; } } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AppointmentTimeResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AppointmentTimeResultDTO.java index b37e4e913a..017d37afae 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AppointmentTimeResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AppointmentTimeResultDTO.java @@ -27,8 +27,11 @@ public class AppointmentTimeResultDTO implements Serializable { */ private List timeDetail; + private List dateList; + public AppointmentTimeResultDTO() { this.appointmentType = ""; this.timeDetail = new ArrayList<>(); + this.dateList = new ArrayList<>(); } } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/DepartmentDetailResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/DepartmentDetailResultDTO.java index 11271d8009..2cec409cf9 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/DepartmentDetailResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/DepartmentDetailResultDTO.java @@ -60,4 +60,17 @@ public class DepartmentDetailResultDTO implements Serializable { private String areaCode; + /** + * 组织编码[手动输入的] + */ + private String code = ""; + /** + * 负责人 + */ + private String contacts = ""; + /** + * 联系电话 + */ + private String mobile = ""; + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/DepartmentListResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/DepartmentListResultDTO.java index 3d7a87ec9d..9b2cf82cc3 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/DepartmentListResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/DepartmentListResultDTO.java @@ -45,5 +45,18 @@ public class DepartmentListResultDTO implements Serializable { /** * 部门下总人数 */ - private Integer totalUser; + private Integer totalUser = 0; + /** + * 编码 + */ + private String code = ""; + /** + * 负责人 + */ + private String contacts = ""; + /** + * 联系电话 + */ + private String mobile = ""; + private String areaCode; } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GridBaseInfoResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GridBaseInfoResultDTO.java index df2bc63f60..62a52464dc 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GridBaseInfoResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GridBaseInfoResultDTO.java @@ -29,4 +29,25 @@ public class GridBaseInfoResultDTO implements Serializable { * 网格人数 * */ private Integer totalUser; + /** + * 编码 + */ + private String code = ""; + /** + * 网格类型 字典表value值 + */ + private String gridType = ""; + /** + * 网格类型 字典表label值 + */ + private String gridTypeName = ""; + /** + * 负责人 + */ + private String contacts = ""; + /** + * 联系电话 + */ + private String mobile = ""; + private String areaCode; } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GridDetailResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GridDetailResultDTO.java index f822ea7773..f9a2726a1a 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GridDetailResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GridDetailResultDTO.java @@ -65,4 +65,25 @@ public class GridDetailResultDTO implements Serializable { */ private List staffGridList; + /** + * 网格编码 + */ + private String code = ""; + /** + * 网格类型 字典表value值 + */ + private String gridType = ""; + /** + * 网格类型 字典表label值 + */ + private String gridTypeName = ""; + /** + * 负责人 + */ + private String contacts = ""; + /** + * 联系电话 + */ + private String mobile = ""; + } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseInfoDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseInfoDTO.java index 5077e99a33..853558739b 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseInfoDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseInfoDTO.java @@ -17,7 +17,10 @@ public class HouseInfoDTO implements Serializable { */ private String homeId; - + /** + * 小区详细地址 + */ + private String neighborAddress; /** * 小区id */ @@ -59,4 +62,13 @@ public class HouseInfoDTO implements Serializable { private String houseType; private String houseName; + + /** + * 楼的经度 + */ + private String buildingLongitude; + /** + * 楼的纬度 + */ + private String buildingLatitude; } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/OrgMobileResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/OrgMobileResultDTO.java new file mode 100644 index 0000000000..a27a28f18e --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/OrgMobileResultDTO.java @@ -0,0 +1,25 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author sun + * @Description 查询网格所属组织电话 + */ +@Data +public class OrgMobileResultDTO implements Serializable { + /** + * 机关组织Id + */ + private String agencyId = ""; + /** + * 机关组织名称 + */ + private String agencyName = ""; + /** + * 组织联系电话 + */ + private String mobile = ""; +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/ParentListResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/ParentListResultDTO.java index b9222196f9..ffa9e12e3e 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/ParentListResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/ParentListResultDTO.java @@ -51,4 +51,16 @@ public class ParentListResultDTO implements Serializable { * 增加此返回值,为了调试用 */ private String areaCode; + /** + * 组织编码[手动输入的] + */ + private String code; + /** + * 负责人 + */ + private String contacts; + /** + * 联系电话 + */ + private String mobile; } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java index f997cad3c5..9bd7bfb642 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java @@ -20,7 +20,7 @@ import java.util.Set; * @author yinzuomei@elink-cn.com * @date 2020/6/4 13:37 */ -//@FeignClient(name = ServiceConstant.GOV_ORG_SERVER, fallbackFactory = GovOrgOpenFeignClientFallbackFactory.class, url = "localhost:8092") +// @FeignClient(name = ServiceConstant.GOV_ORG_SERVER, fallbackFactory = GovOrgOpenFeignClientFallbackFactory.class, url = "localhost:8092") @FeignClient(name = ServiceConstant.GOV_ORG_SERVER, fallbackFactory = GovOrgOpenFeignClientFallbackFactory.class) public interface GovOrgOpenFeignClient { @@ -306,6 +306,15 @@ public interface GovOrgOpenFeignClient { @PostMapping("/gov/org/customergrid/getgridlistbygridids") Result> getGridListByGridIds(List gridIdList); + /** + * @Description 查询网格名 不限制是否同步条件 SYNC_FLAG + * @param gridIdList + * @author zxc + * @date 2022/1/12 9:37 上午 + */ + @PostMapping("/gov/org/customergrid/getallgridlistbygridids") + Result> getAllGridListByGridIds(List gridIdList); + /** * @Description 根据网格Id查询用户数据 * @param customerGridFormDTO @@ -558,4 +567,13 @@ public interface GovOrgOpenFeignClient { */ @GetMapping("/gov/org/icneighborhood/{id}") Result getIcNeighbordhoodById(@PathVariable("id") String id); + + + /** + * 运营端-客户管理,修改客户信息,调用gov-org服务,修改组织区划开关,修改根组织areaCode入参。 + * @param formDTO + * @return + */ + @PostMapping("/gov/org/customeragency/configcustomerareacode") + Result configCustomerAreaCode(@RequestBody CustomerAreaCodeFormDTO formDTO); } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java index 95cdf04f81..c3ddd39202 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java @@ -177,6 +177,11 @@ public class GovOrgOpenFeignClientFallback implements GovOrgOpenFeignClient { return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getGridListByGridIds", gridIdList); } + @Override + public Result> getAllGridListByGridIds(List gridIdList) { + return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getAllGridListByGridIds", gridIdList); + } + @Override public Result getCustomerGridByGridId(CustomerGridFormDTO customerGridFormDTO) { return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getCustomerGridByGridId", customerGridFormDTO); @@ -353,4 +358,15 @@ public class GovOrgOpenFeignClientFallback implements GovOrgOpenFeignClient { public Result getIcNeighbordhoodById(String id) { return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getIcNeighbordhoodById", id); } + + /** + * 运营端-客户管理,修改客户信息,调用gov-org服务,修改组织区划开关,修改根组织areaCode入参。 + * + * @param areaCodeFormDTO + * @return + */ + @Override + public Result configCustomerAreaCode(CustomerAreaCodeFormDTO formDTO) { + return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "configCustomerAreaCode", formDTO); + } } diff --git a/epmet-module/gov-org/gov-org-server/deploy/docker-compose-prod.yml b/epmet-module/gov-org/gov-org-server/deploy/docker-compose-prod.yml index 256ac7b0e6..25ea20b467 100644 --- a/epmet-module/gov-org/gov-org-server/deploy/docker-compose-prod.yml +++ b/epmet-module/gov-org/gov-org-server/deploy/docker-compose-prod.yml @@ -2,7 +2,7 @@ version: "3.7" services: gov-org-server: container_name: gov-org-server-prod - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/gov-org-server:0.3.132 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/gov-org-server:0.3.156 ports: - "8092:8092" network_mode: host # 使用现有网络 diff --git a/epmet-module/gov-org/gov-org-server/pom.xml b/epmet-module/gov-org/gov-org-server/pom.xml index 0177e4b4cd..9bd6cedb44 100644 --- a/epmet-module/gov-org/gov-org-server/pom.xml +++ b/epmet-module/gov-org/gov-org-server/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.132 + 0.3.156 com.epmet gov-org diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/PartyServiceCenterConstant.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/PartyServiceCenterConstant.java index ced0df2da5..50f6baed7e 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/PartyServiceCenterConstant.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/constant/PartyServiceCenterConstant.java @@ -8,8 +8,13 @@ package com.epmet.constant; public interface PartyServiceCenterConstant { String ORG_TYPE_AGENCY = "agency"; + String ORG_TYPE_GRID = "grid"; String APPOINTMENT_STATUS_APPOINTING = "appointing"; String APPOINTMENT_STATUS_CANCEL = "cancel"; + String APPOINTMENT_TYPE_EVERY_DAY = "everyDay"; + String APPOINTMENT_TYPE_WORK_DAY = "workDay"; + String APPOINTMENT_TYPE_WEEKEND = "weekend"; + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerAgencyController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerAgencyController.java index 64660eec85..d826060c2d 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerAgencyController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerAgencyController.java @@ -28,6 +28,7 @@ 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.constant.CustomerAgencyConstant; import com.epmet.dto.CustomerAgencyDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; @@ -370,4 +371,28 @@ public class CustomerAgencyController { return new Result().ok(customerAgencyService.getOrgTreeData(tokenDTO.getUserId())); } + /** + * @Description 【事件】社区服务热线 + * @author sun + **/ + @PostMapping("orgmobile") + Result orgMobile(@RequestBody OrgMobileFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, OrgMobileFormDTO.OrgMobile.class); + return new Result().ok(customerAgencyService.orgMobile(formDTO.getGridId())); + } + + /** + * 运营端-客户管理,修改客户信息,调用gov-org服务,修改组织区划开关,修改根组织areaCode入参。 + * @param formDTO + * @return + */ + @PostMapping("configcustomerareacode") + Result configCustomerAreaCode(@RequestBody CustomerAreaCodeFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, CustomerAreaCodeFormDTO.AddUserInternalGroup.class, CustomerAreaCodeFormDTO.ShowGroup.class); + if (CustomerAgencyConstant.AREA_CODE_SWITCH_OPEN.equals(formDTO.getAreaCodeSwitch())) { + ValidatorUtils.validateEntity(formDTO, CustomerAreaCodeFormDTO.OpenAreaCodeSwitchGroup.class); + } + customerAgencyService.configCustomerAreaCode(formDTO); + return new Result(); + } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerGridController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerGridController.java index 8422de2c41..8843d646c5 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerGridController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerGridController.java @@ -183,6 +183,17 @@ public class CustomerGridController { return customerGridService.getGridListByGridIds(gridIdList); } + /** + * @Description 查询网格名 不限制是否同步条件 SYNC_FLAG + * @param gridIdList + * @author zxc + * @date 2022/1/12 9:37 上午 + */ + @PostMapping("getallgridlistbygridids") + public Result> getAllGridListByGridIds(@RequestBody List gridIdList) { + return new Result>().ok(customerGridService.getAllGridListByGridIds(gridIdList)); + } + /** * @Description 获取所属网格 * @param formDTO diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/GridController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/GridController.java index 7f38a198cf..f7c4d8ec10 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/GridController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/GridController.java @@ -55,12 +55,14 @@ public class GridController { Result resultDTOResult = customerGridService.addGrid(tokenDto,addGridFormDTO); //2021-10-18 推送mq,数据同步到中介库 start - OrgOrStaffMQMsg mq = new OrgOrStaffMQMsg(); - mq.setCustomerId(tokenDto.getCustomerId()); - mq.setOrgId(resultDTOResult.getData().getGridId()); - mq.setOrgType("grid"); - mq.setType("grid_create"); - SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendOrgStaffMqMsg(mq); + if (resultDTOResult.success()) { + OrgOrStaffMQMsg mq = new OrgOrStaffMQMsg(); + mq.setCustomerId(tokenDto.getCustomerId()); + mq.setOrgId(resultDTOResult.getData().getGridId()); + mq.setOrgType("grid"); + mq.setType("grid_create"); + SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendOrgStaffMqMsg(mq); + } //2021-10-18 end return resultDTOResult; @@ -77,12 +79,14 @@ public class GridController { Result result = customerGridService.editGrid(tokenDto,editGridFormDTO); //2021-10-18 推送mq,数据同步到中介库 start - OrgOrStaffMQMsg mq = new OrgOrStaffMQMsg(); - mq.setCustomerId(tokenDto.getCustomerId()); - mq.setOrgId(editGridFormDTO.getGridId()); - mq.setOrgType("grid"); - mq.setType("grid_change"); - SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendOrgStaffMqMsg(mq); + if (result.success()) { + OrgOrStaffMQMsg mq = new OrgOrStaffMQMsg(); + mq.setCustomerId(tokenDto.getCustomerId()); + mq.setOrgId(editGridFormDTO.getGridId()); + mq.setOrgType("grid"); + mq.setType("grid_change"); + SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendOrgStaffMqMsg(mq); + } //2021-10-18 end return result; diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcPartyServiceCenterController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcPartyServiceCenterController.java index a948681219..a2f71aa778 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcPartyServiceCenterController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcPartyServiceCenterController.java @@ -30,6 +30,7 @@ import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.dto.IcPartyServiceCenterDTO; import com.epmet.dto.form.*; +import com.epmet.dto.result.AllMattersResultDTO; import com.epmet.dto.result.AppointmentRecordResultDTO; import com.epmet.dto.result.AppointmentTimeResultDTO; import com.epmet.dto.result.PartyServiceCenterListResultDTO; @@ -154,6 +155,13 @@ public class IcPartyServiceCenterController { return new Result(); } + @PostMapping("appointmentmini") + public Result appointmentMini(@RequestBody AppointmentMiniFormDTO formDTO, @LoginUser TokenDto tokenDto){ + ValidatorUtils.validateEntity(formDTO, AppointmentMiniFormDTO.AppointmentMiniForm.class); + icPartyServiceCenterService.appointmentMini(formDTO,tokenDto); + return new Result(); + } + /** * @Description 党群服务中心列表 * @param formDTO @@ -204,4 +212,40 @@ public class IcPartyServiceCenterController { return new Result(); } + /** + * @Description 网格所属组织下所有可预约事项 + * @param formDTO + * @author zxc + * @date 2021/12/20 3:17 下午 + */ + @PostMapping("getallmatters") + public Result> getAllMatters(@RequestBody AllMattersFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO, AllMattersFormDTO.AllMattersForm.class); + return new Result>().ok(icPartyServiceCenterService.getAllMatters(formDTO)); + } + + /** + * @Description 小程序端预约记录 + * @param formDTO + * @author zxc + * @date 2021/12/24 10:18 上午 + */ + @PostMapping("appointmentrecordmini") + public Result> appointmentRecordMini(@RequestBody AppointmentRecordMiniFormDTO formDTO,@LoginUser TokenDto tokenDto){ + ValidatorUtils.validateEntity(formDTO,AppointmentRecordMiniFormDTO.AppointmentRecordMiniForm.class); + return new Result>().ok(icPartyServiceCenterService.appointmentRecordMini(formDTO,tokenDto)); + } + + /** + * @Description 党群服务中心详情 + * @param formDTO + * @author zxc + * @date 2021/12/28 5:13 下午 + */ + @PostMapping("partyservicecenterdetail") + public Result partyServiceCenterDetail(@RequestBody PartyServiceCenterDetailFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO, PartyServiceCenterDetailFormDTO.PartyServiceCenterDetailForm.class); + return new Result().ok(icPartyServiceCenterService.partyServiceCenterDetail(formDTO)); + } + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java index 341052d48a..fafb2d474d 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java @@ -299,5 +299,12 @@ public interface CustomerAgencyDao extends BaseDao { * @return */ ExtStaffPermissionResultDTO selectAgencyAndGridById(@Param("agencyId") String agencyId); + /** + * @Description 【事件】社区服务热线 + * @author sun + **/ + OrgMobileResultDTO getAgencyMobile(@Param("gridId") String gridId); + + int updateSubAgencyAreaCodeById(@Param("customerId")String customerId, @Param("agencyId")String agencyId, @Param("operateUserId") String operateUserId); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerDepartmentDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerDepartmentDao.java index eedb383a94..4d3d2668e8 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerDepartmentDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerDepartmentDao.java @@ -101,4 +101,8 @@ public interface CustomerDepartmentDao extends BaseDao * @Date 2020/12/15 10:05 **/ int delDeptById(@Param("deptId")String deptId,@Param("operateUserId") String operateUserId); + + int updateSubDeptAreaCode(@Param("customerId") String customerId, + @Param("areaCode")String areaCode, + @Param("operateUserId") String operateUserId); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerGridDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerGridDao.java index eca348b6f2..3b5e8c794a 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerGridDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerGridDao.java @@ -155,6 +155,14 @@ public interface CustomerGridDao extends BaseDao { */ List selectGridByIds(@Param("gridIdList") List gridIdList); + /** + * @Description 查询网格名 不限制是否同步条件 SYNC_FLAG + * @param gridIdList + * @author zxc + * @date 2022/1/12 9:42 上午 + */ + List selectAllGridByIds(@Param("gridIdList") List gridIdList); + /** * @param formDTO * @Description 获取所属网格 @@ -345,4 +353,15 @@ public interface CustomerGridDao extends BaseDao { List selectByPid(@Param("pid") String pid); List getGridOptionForQuery(String gridPids); + + /** + * @Author sun + * @Description 网格组织信息 + **/ + CustomerGridDTO gridAgencyByGrid(@Param("gridId") String gridId); + + int updateSubGridAreaCode(@Param("customerId") String customerId, + @Param("agencyId")String agencyId, + @Param("operateUserId") String operateUserId); + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcMatterAppointmentRecordDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcMatterAppointmentRecordDao.java index 0b118216bb..d501c97389 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcMatterAppointmentRecordDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcMatterAppointmentRecordDao.java @@ -44,6 +44,15 @@ public interface IcMatterAppointmentRecordDao extends BaseDao appointmentRecord(@Param("matterId")String matterId,@Param("date")String date); + /** + * @Description 小程序端预约列表 + * @param orgId + * @param userId + * @author zxc + * @date 2021/12/24 10:25 上午 + */ + List appointmentRecordMini(@Param("orgId")String orgId,@Param("userId")String userId); + /** * @Description 查询事项是不是存在预约记录 * @param matterIds diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcPartyServiceCenterDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcPartyServiceCenterDao.java index b85d2086f0..065dc62906 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcPartyServiceCenterDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcPartyServiceCenterDao.java @@ -18,6 +18,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.result.AllMattersResultDTO; import com.epmet.dto.result.PartyServiceCenterListResultDTO; import com.epmet.entity.IcPartyServiceCenterEntity; import org.apache.ibatis.annotations.Mapper; @@ -42,4 +43,22 @@ public interface IcPartyServiceCenterDao extends BaseDao partyServiceCenterList(@Param("orgId")String orgId); + /** + * @Description 查询党群服务中心详情 + * @param centerId + * @author zxc + * @date 2021/12/28 5:15 下午 + */ + PartyServiceCenterListResultDTO partyServiceCenterDetail(@Param("centerId")String centerId); + + /** + * @Description 获取网格所属组织下所有的可预约事项 + * @param orgId + * @author zxc + * @date 2021/12/21 1:59 下午 + */ + List getAllMatters(@Param("orgId")String orgId); + + List getAllMattersByOrgId(@Param("matterIds")List matterIds); + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CustomerAgencyEntity.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CustomerAgencyEntity.java index ff51b54c01..cde41fbecc 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CustomerAgencyEntity.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CustomerAgencyEntity.java @@ -123,4 +123,19 @@ public class CustomerAgencyEntity extends BaseEpmetEntity { * 中心位置纬度 */ private String latitude; + + /** + * 组织编码 + */ + private String code; + + /** + * 负责人姓名 + */ + private String contacts; + + /** + * 联系电话 + */ + private String mobile; } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CustomerDepartmentEntity.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CustomerDepartmentEntity.java index cb54609d3f..bfce4de96f 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CustomerDepartmentEntity.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/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/gov-org/gov-org-server/src/main/java/com/epmet/entity/CustomerGridEntity.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CustomerGridEntity.java index 75674491f7..49fe1b4bdb 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CustomerGridEntity.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CustomerGridEntity.java @@ -84,4 +84,24 @@ public class CustomerGridEntity extends BaseEpmetEntity { * 坐标 */ private String coordinates; + + /** + * 网格编码 + */ + private String code; + + /** + * 组织编码 + */ + private String gridType; + + /** + * 负责人姓名 + */ + private String contacts; + + /** + * 联系电话 + */ + private String mobile; } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcPartyServiceCenterMatterEntity.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcPartyServiceCenterMatterEntity.java index fd9f55fe13..75ab20add9 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcPartyServiceCenterMatterEntity.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcPartyServiceCenterMatterEntity.java @@ -68,4 +68,9 @@ public class IcPartyServiceCenterMatterEntity extends BaseEpmetEntity { */ private String customerId; + /** + * 封面图 + */ + private String matterImg; + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java index 4cacf505ef..3e7406594e 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java @@ -263,4 +263,17 @@ public interface CustomerAgencyService extends BaseService * @return */ AgencyTreeResultDTO getOrgTreeData(String staffId); + + /** + * @Description 【事件】社区服务热线 + * @author sun + **/ + OrgMobileResultDTO orgMobile(String gridId); + + /** + * 运营端-客户管理,修改客户信息,调用gov-org服务,修改组织区划开关,修改根组织areaCode入参。 + * @param formDTO + * @return + */ + void configCustomerAreaCode(CustomerAreaCodeFormDTO formDTO); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerGridService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerGridService.java index 2b2624ac54..1bc418d8fd 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerGridService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerGridService.java @@ -221,6 +221,14 @@ public interface CustomerGridService extends BaseService { */ Result> getGridListByGridIds(List gridIdList); + /** + * @Description 查询网格名 不限制是否同步条件 SYNC_FLAG + * @param gridIdList + * @author zxc + * @date 2022/1/12 9:37 上午 + */ + List getAllGridListByGridIds(List gridIdList); + /** * @Description 获取所属网格 * @param formDTO diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcPartyServiceCenterService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcPartyServiceCenterService.java index 9bbfcaf44e..c8ef99388e 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcPartyServiceCenterService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcPartyServiceCenterService.java @@ -22,6 +22,7 @@ import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.dto.IcPartyServiceCenterDTO; import com.epmet.dto.form.*; +import com.epmet.dto.result.AllMattersResultDTO; import com.epmet.dto.result.AppointmentRecordResultDTO; import com.epmet.dto.result.AppointmentTimeResultDTO; import com.epmet.dto.result.PartyServiceCenterListResultDTO; @@ -132,6 +133,7 @@ public interface IcPartyServiceCenterService extends BaseService getAllMatters(AllMattersFormDTO formDTO); + + /** + * @Description 小程序端预约记录 + * @param tokenDto + * @author zxc + * @date 2021/12/24 10:18 上午 + */ + List appointmentRecordMini(AppointmentRecordMiniFormDTO formDTO,TokenDto tokenDto); + + /** + * @Description 党群服务中心详情 + * @param formDTO + * @author zxc + * @date 2021/12/28 5:13 下午 + */ + PartyServiceCenterListResultDTO partyServiceCenterDetail(PartyServiceCenterDetailFormDTO formDTO); + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java index 9b5981318e..535d411b79 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java @@ -19,10 +19,12 @@ package com.epmet.service.impl; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; 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.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.security.dto.TokenDto; @@ -33,6 +35,7 @@ import com.epmet.constant.CustomerAgencyConstant; import com.epmet.constant.OrgInfoConstant; import com.epmet.constant.RoleKeyConstants; import com.epmet.dao.CustomerAgencyDao; +import com.epmet.dao.CustomerDepartmentDao; import com.epmet.dao.CustomerGridDao; import com.epmet.dao.IcBuildingDao; import com.epmet.dto.CustomerAgencyDTO; @@ -40,6 +43,7 @@ import com.epmet.dto.GovStaffRoleDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.entity.CustomerAgencyEntity; +import com.epmet.entity.CustomerDepartmentEntity; import com.epmet.entity.CustomerGridEntity; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.feign.EpmetMessageOpenFeignClient; @@ -60,6 +64,7 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.Date; import java.util.List; /** @@ -93,7 +98,8 @@ public class AgencyServiceImpl implements AgencyService { private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient; @Autowired private IcBuildingDao icBuildingDao; - + @Autowired + private CustomerDepartmentDao customerDepartmentDao; /** * @param formDTO @@ -149,6 +155,33 @@ public class AgencyServiceImpl implements AgencyService { //当前客户下,同级组织中,组织名称不允许重复 customerAgencyService.checkAgencyName(formDTO.getAgencyName(),originalEntity.getCustomerId(),originalEntity.getId(),originalEntity.getPid()); originalEntity.setOrganizationName(formDTO.getAgencyName()); + originalEntity.setCode(formDTO.getCode()); + originalEntity.setContacts(formDTO.getContacts()); + originalEntity.setMobile(formDTO.getMobile()); + + //当前客户开启了area_code_switch参数:open: 选择地区编码必填;closed: 无需选择地区编码 + if (CustomerAgencyConstant.AREA_CODE_SWITCH_OPEN.equals(formDTO.getAreaCodeSwitch())) { + CustomerAgencyEntity parent = customerAgencyDao.selectById(originalEntity.getPid()); + if (null != parent) { + //开关开启后,areaCode必填 + String originalAreaCode = originalEntity.getAreaCode(); + checkEditAgencyFormDTO(formDTO, originalEntity); + // 1、之前当前组织没有编码,本次修改设置了编码 + // 2、之前已经有编码,本次修改为了其他编码 + if (StringUtils.isNotBlank(formDTO.getAreaCode()) && !formDTO.getAreaCode().equals(originalAreaCode)) { + String newAreaCode = getAgencyNewAreaCode(formDTO, parent); + originalEntity.setAreaCode(newAreaCode); + originalEntity.setParentAreaCode(parent.getAreaCode()); + formDTO.setAreaCode(newAreaCode); + } + //什么时候要全部置为空呢?原来没有现在有 || 原来与现在不一致 + if ((StringUtils.isBlank(originalAreaCode) && StringUtils.isNotBlank(formDTO.getAreaCode())) + || (!formDTO.getAreaCode().equals(originalAreaCode))) { + updateSubOrg(originalEntity.getCustomerId(), formDTO, originalAreaCode); + } + } + } + //1:更新当前组织信息 if (customerAgencyDao.updateById(originalEntity) < NumConstant.ONE) { log.error(CustomerAgencyConstant.UPDATE_EXCEPTION); @@ -193,6 +226,107 @@ public class AgencyServiceImpl implements AgencyService { return result; } + /** + * 所有下家组织、网格、部门的area_code,parent_area_code置为空 + * 直属组织parent_area_code、直属网格+直属部门的area_code更新为最新值 + * @param customerId + * @param formDTO + * @param originalAreaCode + */ + private void updateSubOrg(String customerId, EditAgencyFormDTO formDTO,String originalAreaCode) { + //如果原来这个组织有area_code再去更新,没有其实应该按照pids去更新。 + customerAgencyDao.updateSubAgencyAreaCodeById(customerId, formDTO.getAgencyId(), formDTO.getUserId()); + //网格的 + customerGridDao.updateSubGridAreaCode(customerId, formDTO.getAgencyId(), formDTO.getUserId()); + //部门的 + customerDepartmentDao.updateSubDeptAreaCode(customerId, originalAreaCode, formDTO.getUserId()); + + //1、更新直属网格的areaCode + LambdaUpdateWrapper updateGridWrapper = new LambdaUpdateWrapper<>(); + updateGridWrapper.eq(CustomerGridEntity::getPid,formDTO.getAgencyId()) + .set(CustomerGridEntity::getAreaCode, formDTO.getAreaCode()) + .set(CustomerGridEntity::getUpdatedBy,formDTO.getUserId()) + .set(CustomerGridEntity::getUpdatedTime,new Date()); + int subGridRows=customerGridDao.update(null,updateGridWrapper); + log.info(String.format("更新了%s个直属网格的area_code",subGridRows)); + + // 2、更新直属部门的area_code + LambdaUpdateWrapper updateDeptWrapper = new LambdaUpdateWrapper<>(); + updateDeptWrapper.eq(CustomerDepartmentEntity::getAgencyId,formDTO.getAgencyId()) + .set(CustomerDepartmentEntity::getAreaCode, formDTO.getAreaCode()) + .set(CustomerDepartmentEntity::getUpdatedBy,formDTO.getUserId()) + .set(CustomerDepartmentEntity::getUpdatedTime,new Date()); + int gridRows=customerDepartmentDao.update(null,updateDeptWrapper); + log.info(String.format("更新了%s个直属部门的area_code",gridRows)); + + // 3、更新下级组织的parent_area_code + LambdaUpdateWrapper updateAgencyWrapper = new LambdaUpdateWrapper<>(); + updateAgencyWrapper.eq(CustomerAgencyEntity::getPid,formDTO.getAgencyId()) + .set(CustomerAgencyEntity::getParentAreaCode, formDTO.getAreaCode()) + .set(CustomerAgencyEntity::getUpdatedBy,formDTO.getUserId()) + .set(CustomerAgencyEntity::getUpdatedTime,new Date()); + Integer rows = customerAgencyDao.update(null, updateAgencyWrapper); + log.info(String.format("更新了%s个下级组织的parent_area_code",rows)); + } + + /** + * + * @param formDTO 编辑组织入参 + * @param parent 当前编辑组织的上级组织 + * @return 返回组织区划编码 + */ + private String getAgencyNewAreaCode(EditAgencyFormDTO formDTO, CustomerAgencyEntity parent) { + String newAreaCode=""; + if (!"other".equals(formDTO.getAreaCode())) { + //校验除了当前组织外,areaCode是否被使用过 + List agencyIds = customerAgencyDao.selectAgencyIdsByAreaCode(formDTO.getAreaCode(), formDTO.getAgencyId()); + if (CollectionUtils.isNotEmpty(agencyIds)) { + //已经被占用,提示 + throw new RenException(EpmetErrorCode.AREA_CODE_ALREADY_EXISTS.getCode(), EpmetErrorCode.AREA_CODE_ALREADY_EXISTS.getMsg()); + } + newAreaCode=formDTO.getAreaCode(); + } else { + //如果选择的是other,需要自定义一个编码 + AddAreaCodeFormDTO addAreaCodeFormDTO = new AddAreaCodeFormDTO(); + addAreaCodeFormDTO.setCurrentAreaLevel(formDTO.getLevel()); + addAreaCodeFormDTO.setParentAreaCode(parent.getAreaCode()); + addAreaCodeFormDTO.setName(formDTO.getAgencyName()); + Result addAreaCodeResult = epmetCommonServiceOpenFeignClient.addAreaCode(addAreaCodeFormDTO); + if (!addAreaCodeResult.success() || StringUtils.isBlank(addAreaCodeResult.getData())) { + if (addAreaCodeResult.getCode() > 8000) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "自定义area_code异常" + addAreaCodeResult.getInternalMsg(), addAreaCodeResult.getMsg()); + } else { + throw new RenException("自定义area_code异常" + addAreaCodeResult.getInternalMsg()); + } + } + newAreaCode=addAreaCodeResult.getData(); + } + return newAreaCode; + } + + /** + * 如果当前客户开启了areaCode,校验参数逼单 + * @param formDTO + */ + private void checkEditAgencyFormDTO(EditAgencyFormDTO formDTO,CustomerAgencyEntity originalEntity) { + //根组织不允许修改 + if (StringUtils.isNotBlank(originalEntity.getPid()) && !NumConstant.ZERO_STR.equals(originalEntity.getPid())) { + if (StringUtils.isBlank(formDTO.getAreaCode())) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "area_code_switch is open areaCode不能为空", "组织区划不能为空"); + } + if (StringUtils.isBlank(formDTO.getParentAreaCode())) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "area_code_switch is open parentAreaCode不能为空", "请先设置上级组织的组织区划"); + } + //如果当前组织已经使用了自定义编码,不允许在选择其他。 + if (StringUtils.isNotBlank(originalEntity.getAreaCode()) + && originalEntity.getAreaCode().contains("UD") + && StringUtils.isNotBlank(formDTO.getAreaCode()) + && "other".equals(formDTO.getAreaCode())) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "自定义编码不允许修改", "自定义组织区划代码不允许修改"); + } + } + } + /** * @param formDTO * @return @@ -252,27 +386,9 @@ public class AgencyServiceImpl implements AgencyService { agencysResultDTO = ConvertUtils.sourceToTarget(entity, AgencysResultDTO.class); agencysResultDTO.setAgencyId(entity.getId()); agencysResultDTO.setAgencyName(entity.getOrganizationName()); - //2021.5.26 sun 添加当前组织对应客户的根组织级别返参 start - if (null != entity) { - if (null == entity.getPids() || "".equals(entity.getPids())) { - agencysResultDTO.setRootlevel(entity.getLevel()); - } else { - String id = Arrays.asList(entity.getPids().split(":")).get(0); - CustomerAgencyEntity rootEntity = customerAgencyDao.selectById(id); - if (null != rootEntity) { - agencysResultDTO.setRootlevel(rootEntity.getLevel()); - } - } - } - //2021.5.26 sun 添加当前组织对应客户的根组织级别返参 end - //2:查询本机关的所有上级机关,按自上而下层级顺序 - if (null == entity.getPids()) { - agencysResultDTO.setParentList(parentList); - return new Result().ok(agencysResultDTO); - } - List listStr = Arrays.asList(entity.getPids().split(":")); - parentList = customerAgencyDao.selectPAgencyById(listStr); - agencysResultDTO.setParentList(parentList); + agencysResultDTO.setCode(entity.getCode()); + agencysResultDTO.setContacts(entity.getContacts()); + agencysResultDTO.setMobile(entity.getMobile()); agencysResultDTO.setAreaCodeSwitch(customerOrgParameterService.getAreaCodeSwitch(entity.getCustomerId())); agencysResultDTO.setAreaName(StrConstant.EPMETY_STR); agencysResultDTO.setAreaCode(StringUtils.isNotBlank(entity.getAreaCode())?entity.getAreaCode():StrConstant.EPMETY_STR); @@ -280,31 +396,48 @@ public class AgencyServiceImpl implements AgencyService { if (null != entity && StringUtils.isNotBlank(entity.getAreaCode())) { switch (entity.getLevel()) { case CustomerAgencyConstant.PROVINCE_LEVEL: - agencysResultDTO.setAreaName(null == entity.getProvince() ? StrConstant.EPMETY_STR : entity.getProvince()); + agencysResultDTO.setAreaName(StringUtils.isNotBlank(entity.getProvince()) ? entity.getProvince():entity.getOrganizationName()); break; case CustomerAgencyConstant.CITY_LEVEL: - agencysResultDTO.setAreaName(null == entity.getCity() ? StrConstant.EPMETY_STR : entity.getCity()); + agencysResultDTO.setAreaName(StringUtils.isNotBlank(entity.getCity()) ? entity.getCity():entity.getOrganizationName()); break; case CustomerAgencyConstant.DISTRICT: - agencysResultDTO.setAreaName(null == entity.getDistrict() ? StrConstant.EPMETY_STR : entity.getDistrict()); + agencysResultDTO.setAreaName(StringUtils.isNotBlank(entity.getDistrict()) ? entity.getDistrict():entity.getOrganizationName()); break; case CustomerAgencyConstant.STREET_LEVEL: - agencysResultDTO.setAreaName(null == entity.getStreet() ? StrConstant.EPMETY_STR : entity.getStreet()); + agencysResultDTO.setAreaName(StringUtils.isNotBlank(entity.getStreet()) ? entity.getStreet():entity.getOrganizationName()); break; case CustomerAgencyConstant.COMMUNITY_LEVEL: - agencysResultDTO.setAreaName(null == entity.getCommunity() ? StrConstant.EPMETY_STR : entity.getCommunity()); + agencysResultDTO.setAreaName(StringUtils.isNotBlank(entity.getCommunity()) ? entity.getCommunity():entity.getOrganizationName()); break; default: agencysResultDTO.setAreaName(StrConstant.EPMETY_STR); } } + //2021.5.26 sun 添加当前组织对应客户的根组织级别返参 start + if (null != entity) { + if (null == entity.getPids() || "".equals(entity.getPids())) { + agencysResultDTO.setRootlevel(entity.getLevel()); + } else { + String id = Arrays.asList(entity.getPids().split(":")).get(0); + CustomerAgencyEntity rootEntity = customerAgencyDao.selectById(id); + if (null != rootEntity) { + agencysResultDTO.setRootlevel(rootEntity.getLevel()); + } + } + } + //2021.5.26 sun 添加当前组织对应客户的根组织级别返参 end + //2:查询本机关的所有上级机关,按自上而下层级顺序 + if (StringUtils.isBlank(entity.getPids())) { + agencysResultDTO.setParentList(parentList); + return new Result().ok(agencysResultDTO); + } + List listStr = Arrays.asList(entity.getPids().split(":")); + parentList = customerAgencyDao.selectPAgencyById(listStr); + agencysResultDTO.setParentList(parentList); return new Result().ok(agencysResultDTO); } - public static void main(String[] args) { - String m="1234"; - System.out.println(m.equals("1234") ? "yes" : "no"); - } /** * @param formDTO * @return @@ -365,7 +498,11 @@ public class AgencyServiceImpl implements AgencyService { @Override public CustomerAgencyDTO getCustomerRootAgency(String customerId) { - return customerAgencyDao.getCustomerRootAgency(customerId); + CustomerAgencyDTO root=customerAgencyDao.getCustomerRootAgency(customerId); + if (null != root) { + root.setAreaCodeSwitch(customerOrgParameterService.getAreaCodeSwitch(customerId)); + } + return root; } @Override @@ -484,7 +621,11 @@ public class AgencyServiceImpl implements AgencyService { addAreaCodeFormDTO.setName(formDTO.getAgencyName()); Result addAreaCodeResult = epmetCommonServiceOpenFeignClient.addAreaCode(addAreaCodeFormDTO); if (!addAreaCodeResult.success() || StringUtils.isBlank(addAreaCodeResult.getData())) { - throw new RenException("自定义area_code异常" + addAreaCodeResult.getInternalMsg()); + if (addAreaCodeResult.getCode() > 8000) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "自定义area_code异常" + addAreaCodeResult.getInternalMsg(), addAreaCodeResult.getMsg()); + } else { + throw new RenException("自定义area_code异常" + addAreaCodeResult.getInternalMsg()); + } } insertEntity.setAreaCode(addAreaCodeResult.getData()); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java index a6972b1dcc..0cb99364a8 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java @@ -18,11 +18,14 @@ package com.epmet.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.StrConstant; 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.redis.RedisKeys; @@ -36,13 +39,17 @@ import com.epmet.dto.*; import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.entity.CustomerAgencyEntity; +import com.epmet.entity.CustomerDepartmentEntity; import com.epmet.entity.CustomerGridEntity; +import com.epmet.entity.CustomerOrgParameterEntity; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.feign.EpmetUserFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.OperCrmFeignClient; import com.epmet.redis.CustomerAgencyRedis; import com.epmet.service.CustomerAgencyService; import com.epmet.util.ModuleConstant; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -62,6 +69,7 @@ import java.util.stream.Collectors; * @author generator generator@elink-cn.com * @since v1.0.0 2020-04-20 */ +@Slf4j @Service public class CustomerAgencyServiceImpl extends BaseServiceImpl implements CustomerAgencyService { @@ -86,6 +94,11 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl page(Map params) { @@ -944,10 +957,12 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl 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++) { @@ -967,8 +982,9 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl void checkFieldAndSetDefault(T origin) { - if (origin == null) + if (origin == null) { return; + } Field[] fields = origin.getClass().getDeclaredFields(); for (int i = 0; i < fields.length; i++) { try { @@ -1207,4 +1223,150 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl getStaffOrgListByStaffId(String staffId) { return baseDao.getStaffOrgListByStaffId(staffId); } + + /** + * @Description 【事件】社区服务热线 + * @author sun + **/ + @Override + public OrgMobileResultDTO orgMobile(String gridId) { + return baseDao.getAgencyMobile(gridId); + } + + /** + * 运营端-客户管理,修改客户信息,调用gov-org服务,修改组织区划开关,修改根组织areaCode入参。 + * + * @param formDTO + * @return + */ + @Transactional(rollbackFor = Exception.class) + @Override + public void configCustomerAreaCode(CustomerAreaCodeFormDTO formDTO) { + //1、设置开关 + CustomerOrgParameterEntity switchEntity = customerOrgParameterDao.selectByCustomerId(formDTO.getCustomerId(), CustomerAgencyConstant.AREA_CODE_SWITCH); + if (null != switchEntity) { + switchEntity.setParameterValue(formDTO.getAreaCodeSwitch()); + customerOrgParameterDao.updateById(switchEntity); + } else { + CustomerOrgParameterEntity insert=new CustomerOrgParameterEntity(); + insert.setCustomerId(formDTO.getCustomerId()); + insert.setParameterKey(CustomerAgencyConstant.AREA_CODE_SWITCH); + insert.setParameterValue(formDTO.getAreaCodeSwitch()); + insert.setParameterName("是否开启区域编码"); + insert.setDescription("open:当前客户新增组织需要选择areaCode;closed: 无需选择区域编码"); + customerOrgParameterDao.insert(insert); + } + if(CustomerAgencyConstant.AREA_CODE_SWITCH_OPEN.equals(formDTO.getAreaCodeSwitch())){ + //开关开启,并且修改了组织区划才会调用 + CustomerAgencyEntity root=baseDao.selectById(formDTO.getRootAgencyId()); + String originalAreaCode=root.getAreaCode(); + //areaCode做了修改 + if(!formDTO.getRootAgencyAreaCode().equals(originalAreaCode)){ + log.warn("组织区划开关打开, 并且当前传入的areaCode与之前的不一致,所以要进行update操作"); + String newAreaCode=getAgencyNewAreaCode(root.getId(),root.getOrganizationName(),root.getLevel(),formDTO.getRootAgencyAreaCode(),formDTO.getRootAgencyParentCode()); + + //1、更新根组织的area_code、 + root.setAreaCode(newAreaCode); + root.setParentAreaCode(formDTO.getRootAgencyParentCode()); + baseDao.updateById(root); + + //2、直属下级的parent_areaCode赋值、areaCode(置空) + LambdaUpdateWrapper updateAgencyWrapper = new LambdaUpdateWrapper<>(); + updateAgencyWrapper.eq(CustomerAgencyEntity::getPid,root.getId()) + .set(CustomerAgencyEntity::getParentAreaCode,newAreaCode) + .set(CustomerAgencyEntity::getAreaCode, StrConstant.EPMETY_STR) + .set(CustomerAgencyEntity::getUpdatedBy,formDTO.getUserId()) + .set(CustomerAgencyEntity::getUpdatedTime,new Date()); + Integer rows = baseDao.update(null, updateAgencyWrapper); + log.info(String.format("更新了%s个下级组织的parent_area_code",rows)); + + // 3、直属网格 + LambdaUpdateWrapper updateGridWrapper = new LambdaUpdateWrapper<>(); + updateGridWrapper.eq(CustomerGridEntity::getPid,root.getId()) + .set(CustomerGridEntity::getAreaCode, newAreaCode) + .set(CustomerGridEntity::getUpdatedBy,formDTO.getUserId()) + .set(CustomerGridEntity::getUpdatedTime,new Date()); + int subGridRows=customerGridDao.update(null,updateGridWrapper); + log.info(String.format("更新了%s个直属网格的area_code",subGridRows)); + + // 4、直属部门 + LambdaUpdateWrapper updateDeptWrapper = new LambdaUpdateWrapper<>(); + updateDeptWrapper.eq(CustomerDepartmentEntity::getAgencyId,root.getId()) + .set(CustomerDepartmentEntity::getAreaCode, newAreaCode) + .set(CustomerDepartmentEntity::getUpdatedBy,formDTO.getUserId()) + .set(CustomerDepartmentEntity::getUpdatedTime,new Date()); + int gridRows=customerDepartmentDao.update(null,updateDeptWrapper); + log.info(String.format("更新了%s个直属部门的area_code",gridRows)); + + //5、非直属下级组织,统一置为空 + LambdaUpdateWrapper agencyWrapper = new LambdaUpdateWrapper<>(); + agencyWrapper.ne(CustomerAgencyEntity::getPid,root.getId()) + .like(CustomerAgencyEntity::getPids,root.getId()) + .set(CustomerAgencyEntity::getParentAreaCode,StrConstant.EPMETY_STR) + .set(CustomerAgencyEntity::getAreaCode, StrConstant.EPMETY_STR) + .set(CustomerAgencyEntity::getUpdatedBy,formDTO.getUserId()) + .set(CustomerAgencyEntity::getUpdatedTime,new Date()); + baseDao.update(null, agencyWrapper); + + //6、非直属网格 + LambdaUpdateWrapper gridWrapper = new LambdaUpdateWrapper<>(); + gridWrapper.ne(CustomerGridEntity::getPid,root.getId()) + .like(CustomerGridEntity::getPids,root.getId()) + .set(CustomerGridEntity::getAreaCode, StrConstant.EPMETY_STR) + .set(CustomerGridEntity::getUpdatedBy,formDTO.getUserId()) + .set(CustomerGridEntity::getUpdatedTime,new Date()); + customerGridDao.update(null,gridWrapper); + + //7、非直属部门的 + LambdaUpdateWrapper deptWrapper = new LambdaUpdateWrapper<>(); + deptWrapper.ne(CustomerDepartmentEntity::getAgencyId,root.getId()) + .like(CustomerDepartmentEntity::getAreaCode,originalAreaCode) + .set(CustomerDepartmentEntity::getAreaCode, StrConstant.EPMETY_STR) + .set(CustomerDepartmentEntity::getUpdatedBy,formDTO.getUserId()) + .set(CustomerDepartmentEntity::getUpdatedTime,new Date()); + customerDepartmentDao.update(null,deptWrapper); + + } + + } + } + + /** + * + * @param agencyId + * @param agencyName + * @param level 社区级:community,乡(镇、街道)级:street,区县级: district,市级: city省级:province + * @param areaCode + * @param parentArenCode + * @return 返回组织区划编码 + */ + + private String getAgencyNewAreaCode(String agencyId, String agencyName, String level,String areaCode, String parentArenCode) { + String newAreaCode=""; + if (!"other".equals(areaCode)) { + //校验除了当前组织外,areaCode是否被使用过 + List agencyIds = baseDao.selectAgencyIdsByAreaCode(areaCode, agencyId); + if (CollectionUtils.isNotEmpty(agencyIds)) { + //已经被占用,提示 + throw new RenException(EpmetErrorCode.AREA_CODE_ALREADY_EXISTS.getCode(), EpmetErrorCode.AREA_CODE_ALREADY_EXISTS.getMsg()); + } + newAreaCode=areaCode; + } else { + //如果选择的是other,需要自定义一个编码 + AddAreaCodeFormDTO addAreaCodeFormDTO = new AddAreaCodeFormDTO(); + addAreaCodeFormDTO.setCurrentAreaLevel(level); + addAreaCodeFormDTO.setParentAreaCode(parentArenCode); + addAreaCodeFormDTO.setName(agencyName); + Result addAreaCodeResult = epmetCommonServiceOpenFeignClient.addAreaCode(addAreaCodeFormDTO); + if (!addAreaCodeResult.success() || StringUtils.isBlank(addAreaCodeResult.getData())) { + if (addAreaCodeResult.getCode() > 8000) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "自定义area_code异常" + addAreaCodeResult.getInternalMsg(), addAreaCodeResult.getMsg()); + } else { + throw new RenException("自定义area_code异常" + addAreaCodeResult.getInternalMsg()); + } + } + newAreaCode=addAreaCodeResult.getData(); + } + return newAreaCode; + } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java index 5c48305577..115a784406 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java @@ -26,6 +26,7 @@ import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.dto.result.OptionResultDTO; +import com.epmet.commons.tools.enums.DictTypeEnum; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; @@ -43,6 +44,7 @@ import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.entity.CustomerAgencyEntity; import com.epmet.entity.CustomerGridEntity; +import com.epmet.feign.EpmetAdminOpenFeignClient; import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.feign.EpmetUserFeignClient; import com.epmet.feign.OperCrmOpenFeignClient; @@ -51,6 +53,7 @@ import com.epmet.service.CustomerGridService; import com.epmet.util.ModuleConstant; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -87,6 +90,8 @@ public class CustomerGridServiceImpl extends BaseServiceImpl page(Map params) { @@ -216,6 +221,12 @@ public class CustomerGridServiceImpl extends BaseServiceImpl> staffGridList = epmetUserFeignClient.getStaffGridList(customerStaffGridDTOS); griddetail.setStaffGridList(staffGridList.getData()); + //查询网格类型字典表数据 + Result> statusRes = adminOpenFeignClient.dictMap(DictTypeEnum.GRID_TYPE.getCode()); + Map statusMap = statusRes.success() && MapUtils.isNotEmpty(statusRes.getData()) ? statusRes.getData() : new HashMap<>(); + if (StringUtils.isNotBlank(griddetail.getGridType())) { + griddetail.setGridTypeName(statusMap.get(griddetail.getGridType())); + } return new Result().ok(griddetail); } @@ -258,6 +269,10 @@ public class CustomerGridServiceImpl extends BaseServiceImpl> getAllGridsByAgency(CommonAgencyIdFormDTO agencyFormDTO) { - return new Result>().ok(baseDao.selectGridListByAgencyId(agencyFormDTO.getAgencyId(),null)); + //1.查询组织下网格列表数据 + List list = baseDao.selectGridListByAgencyId(agencyFormDTO.getAgencyId(),null); + if (org.springframework.util.CollectionUtils.isEmpty(list)) { + return new Result>(); + } + + //2.查询网格类型字典表数据 + Result> statusRes = adminOpenFeignClient.dictMap(DictTypeEnum.GRID_TYPE.getCode()); + Map statusMap = statusRes.success() && MapUtils.isNotEmpty(statusRes.getData()) ? statusRes.getData() : new HashMap<>(); + + //3.封装数据并返回 + list.forEach(l->{ + if (StringUtils.isNotBlank(l.getGridType())) { + l.setGridTypeName(statusMap.get(l.getGridType())); + } + }); + return new Result>().ok(list); } /** @@ -602,6 +637,25 @@ public class CustomerGridServiceImpl extends BaseServiceImpl getAllGridListByGridIds(List gridIdList) { + if (CollectionUtils.isEmpty(gridIdList)) { + logger.warn("根据网格Id集合获取网格列表信息-传入的网格Id集合为空数组!"); + return new ArrayList<>(); + } + List list = baseDao.selectAllGridByIds(gridIdList); + if (CollectionUtils.isNotEmpty(list)){ + return list; + } + return new ArrayList<>(); + } + /** * @Description 获取所属网格 * @param formDTO @@ -735,15 +789,18 @@ public class CustomerGridServiceImpl extends BaseServiceImpl page(Map params) { @@ -271,6 +275,20 @@ public class IcPartyServiceCenterServiceImpl extends BaseServiceImpl dateList = getDateList(entity.getAppointmentType()); + Boolean s = false; + for (String d : dateList) { + if (d.equals(formDTO.getAppointmentDate())){ + s = true; + } + } + if (!s){ + throw new EpmetException(EpmetErrorCode.ERROR_DATE.getCode()); + } String customerId = tokenDto.getCustomerId(); LambdaQueryWrapper l = new LambdaQueryWrapper<>(); l.eq(IcMatterAppointmentRecordEntity::getMatterId,formDTO.getMatterId()) @@ -302,14 +320,86 @@ public class IcPartyServiceCenterServiceImpl extends BaseServiceImpl dateList = getDateList(entity.getAppointmentType()); + Boolean s = false; + for (String d : dateList) { + if (d.equals(formDTO.getAppointmentDate())){ + s = true; + } + } + if (!s){ + throw new EpmetException(EpmetErrorCode.ERROR_DATE.getCode()); + } + String customerId = tokenDto.getCustomerId(); + LambdaQueryWrapper l = new LambdaQueryWrapper<>(); + l.eq(IcMatterAppointmentRecordEntity::getMatterId,formDTO.getMatterId()) + .eq(IcMatterAppointmentRecordEntity::getAppointmentDate,formDTO.getAppointmentDate()) + .eq(IcMatterAppointmentRecordEntity::getStatus,PartyServiceCenterConstant.APPOINTMENT_STATUS_APPOINTING) + .eq(BaseEpmetEntity::getDelFlag,NumConstant.ZERO); + List records = matterAppointmentRecordDao.selectList(l); + Result userInfoResult = userOpenFeignClient.selectUserBaseInfo(tokenDto); + if (!userInfoResult.success()){ + throw new EpmetException("查询用户信息失败..."); + } + formDTO.setAppointmentName(userInfoResult.getData().getRealName()); + formDTO.setAppointmentPhone(userInfoResult.getData().getMobile()); + if (CollectionUtils.isNotEmpty(records)){ + List timeIds = new ArrayList<>(); + records.forEach(r -> { + timeIds.addAll(Arrays.asList(r.getTimeId().split(","))); + }); + List formTimeId = Arrays.asList(formDTO.getTimeId().split(",")); + int before = timeIds.size() + formTimeId.size(); + List endTimeId = new ArrayList<>(); + endTimeId.addAll(timeIds);endTimeId.addAll(formTimeId); + List collect = endTimeId.stream().distinct().collect(Collectors.toList()); + if (collect.size() < before){ + throw new RenException(EpmetErrorCode.APPOINTMENT_TIME_ERROR.getCode()); + } + } + IcMatterAppointmentRecordEntity e = ConvertUtils.sourceToTarget(formDTO, IcMatterAppointmentRecordEntity.class); + e.setCustomerId(customerId); + e.setOrgId(formDTO.getOrgId()); + e.setOrgType(formDTO.getOrgType()); + if (e.getOrgType().equals(PartyServiceCenterConstant.ORG_TYPE_GRID)){ + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(e.getOrgId()); + if (null == gridInfo){ + throw new EpmetException(String.format("查询组织信息失败%s",e.getOrgId())); + } + e.setPid(gridInfo.getPid()); + e.setPids(gridInfo.getPids()); + }else { + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(e.getOrgId()); + if (null == agencyInfo){ + throw new EpmetException(String.format("查询组织信息失败%s",e.getOrgId())); + } + e.setPid(agencyInfo.getPid()); + e.setPids(agencyInfo.getPids()); + } + e.setStatus(PartyServiceCenterConstant.APPOINTMENT_STATUS_APPOINTING); + matterAppointmentRecordDao.insert(e); + } + /** * @Description 党群服务中心列表 * @param formDTO @@ -326,6 +416,13 @@ public class IcPartyServiceCenterServiceImpl extends BaseServiceImpl result = baseDao.partyServiceCenterList(formDTO.getOrgId()); if (CollectionUtils.isNotEmpty(result)){ result.forEach(r -> { @@ -354,6 +451,7 @@ public class IcPartyServiceCenterServiceImpl extends BaseServiceImpl l = new LambdaQueryWrapper<>(); l.eq(IcMatterAppointmentRecordEntity::getMatterId,formDTO.getMatterId()) .eq(IcMatterAppointmentRecordEntity::getAppointmentDate,formDTO.getDate()) @@ -369,12 +467,34 @@ public class IcPartyServiceCenterServiceImpl extends BaseServiceImpl { + String[] split = r.getTimeId().split(","); + for (String s : split) { + if (s.equals(t.getTimeId())) { + t.setIsMiss(true); + break; + } + } + }); + } } } if (LocalDate.now().isAfter(LocalDate.parse(formDTO.getDate()))){ - timeList.forEach(t -> { - t.setIsAppointment(false); - }); + if (CollectionUtils.isNotEmpty(records)) { + records.forEach(r -> { + String[] split = r.getTimeId().split(","); + for (String s : split) { + for (TimeDTO t : timeList) { + if (s.equals(t.getTimeId())) { + t.setIsAppointment(false); + t.setIsMiss(true); + break; + } + } + } + }); + } result.setTimeDetail(timeList); return result; } @@ -385,6 +505,7 @@ public class IcPartyServiceCenterServiceImpl extends BaseServiceImpl getDateList(String type) { + List result = new ArrayList<>(); + if (type.equals(PartyServiceCenterConstant.APPOINTMENT_TYPE_EVERY_DAY)){ + result = DateUtils.getEveryDayList(new Date(),NumConstant.SEVEN); + }else if (type.equals(PartyServiceCenterConstant.APPOINTMENT_TYPE_WORK_DAY)){ + result = DateUtils.getWorkDayList(new Date(),NumConstant.SEVEN); + }else { + result = DateUtils.getWeekendDayList(new Date(),NumConstant.SEVEN); + } + return result; + } + /** * @Description 【党群服务中心】预约记录 * @param formDTO @@ -419,6 +552,10 @@ public class IcPartyServiceCenterServiceImpl extends BaseServiceImpl list = Arrays.asList(r.getTimeId().split(",")); list.forEach(l -> timeList.stream().filter( t -> l.equals(t.getTimeId())).forEach(t -> time.add(t.getTime()))); r.setAppointmentTime(time); + String endTime = time.get(time.size() - NumConstant.ONE).substring(6, 11); + if (LocalDateTime.now().isAfter(LocalDateTime.parse(r.getAppointmentDate() + "T" + endTime))){ + r.setIsCancel(false); + } }); return result; } @@ -435,6 +572,69 @@ public class IcPartyServiceCenterServiceImpl extends BaseServiceImpl getAllMatters(AllMattersFormDTO formDTO) { + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(formDTO.getGridId()); + if (null == gridInfo){ + throw new EpmetException(String.format("未查询到网格{%s}信息",formDTO.getGridId())); + } + List allMatters = baseDao.getAllMatters(gridInfo.getPid()); + if (CollectionUtils.isNotEmpty(allMatters)){ + return allMatters; + } + return new ArrayList<>(); + } + + /** + * @Description 小程序端预约记录 + * @param tokenDto + * @author zxc + * @date 2021/12/24 10:18 上午 + */ + @Override + public List appointmentRecordMini(AppointmentRecordMiniFormDTO formDTO,TokenDto tokenDto) { + List result = matterAppointmentRecordDao.appointmentRecordMini(formDTO.getGridId(), tokenDto.getUserId()); + if (CollectionUtils.isEmpty(result)){ + return new ArrayList<>(); + } + List allMatters = baseDao.getAllMattersByOrgId(result.stream().map(m -> m.getMatterId()).collect(Collectors.toList())); + allMatters.forEach(matter -> { + List timeList = getTimeList(matter.getStartTime(), matter.getEndTime(), NumConstant.THIRTY); + AtomicReference sort = new AtomicReference<>(NumConstant.ONE); + result.forEach(r -> { + if (r.getMatterId().equals(matter.getMatterId())){ + r.setSort(sort.getAndSet(sort.get() + NumConstant.ONE)); + List time = new ArrayList<>(); + List list = Arrays.asList(r.getTimeId().split(",")); + list.forEach(l -> timeList.stream().filter( t -> l.equals(t.getTimeId())).forEach(t -> time.add(t.getTime()))); + r.setAppointmentTime(time); + String endTime = time.get(time.size() - NumConstant.ONE).substring(6, 11); + if (LocalDateTime.now().isAfter(LocalDateTime.parse(r.getAppointmentDate() + "T" + endTime))){ + r.setIsCancel(false); + } + } + }); + }); + return result; + } + + /** + * @Description 党群服务中心详情 + * @param formDTO + * @author zxc + * @date 2021/12/28 5:13 下午 + */ + @Override + public PartyServiceCenterListResultDTO partyServiceCenterDetail(PartyServiceCenterDetailFormDTO formDTO) { + return baseDao.partyServiceCenterDetail(formDTO.getPartyServiceCenterId()); + } + public List getTimeList(String start,String end,Integer interval){ List result = new ArrayList<>(); List intervalTimeList = getIntervalTimeList(start, end, interval); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcPlacePatrolReviewRecordServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcPlacePatrolReviewRecordServiceImpl.java index 8019f867c7..a67d4980b8 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcPlacePatrolReviewRecordServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcPlacePatrolReviewRecordServiceImpl.java @@ -17,32 +17,25 @@ package com.epmet.service.impl; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.NumConstant; -import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; -import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.exception.RenException; -import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.utils.Result; import com.epmet.dao.IcPlacePatrolReviewRecordDao; import com.epmet.dao.IcPlacePatrolTeamStaffDao; import com.epmet.dto.IcPlacePatrolTeamStaffDTO; -import com.epmet.dto.form.*; -import com.epmet.dto.result.GetListPlacePatrolRecordResultDTO; +import com.epmet.dto.form.AddPlacePatrolReviewRecordFormDTO; +import com.epmet.dto.form.EditPlacePatrolReviewRecordFormDTO; +import com.epmet.dto.form.GetListPlacePatrolReviewRecordFormDTO; import com.epmet.dto.result.GetListPlacePatrolReviewRecordResultDTO; -import com.epmet.dto.result.PlacePatrolRecordDetailResultDTO; import com.epmet.dto.result.PlacePatrolReviewRecordDetailResultDTO; import com.epmet.entity.IcPlacePatrolRecordEntity; import com.epmet.entity.IcPlacePatrolReviewRecordEntity; -import com.epmet.entity.IcPlacePatrolTeamEntity; -import com.epmet.entity.IcPlacePatrolTeamStaffEntity; -import com.epmet.feign.EpmetAdminOpenFeignClient; import com.epmet.service.IcPlacePatrolRecordService; import com.epmet.service.IcPlacePatrolReviewRecordService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -50,7 +43,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; -import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/db/migration/V0.0.10__add_matter_img.sql b/epmet-module/gov-org/gov-org-server/src/main/resources/db/migration/V0.0.10__add_matter_img.sql new file mode 100644 index 0000000000..9834d6ee2b --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/db/migration/V0.0.10__add_matter_img.sql @@ -0,0 +1 @@ +alter table ic_party_service_center_matter add COLUMN MATTER_IMG VARCHAR(256) NOT NULL comment '封面图' AFTER END_TIME; \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/db/migration/V0.0.9__alter_org.sql b/epmet-module/gov-org/gov-org-server/src/main/resources/db/migration/V0.0.9__alter_org.sql new file mode 100644 index 0000000000..4b7eaaa505 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/db/migration/V0.0.9__alter_org.sql @@ -0,0 +1,14 @@ + +ALTER TABLE `customer_agency` +ADD COLUMN `CONTACTS` varchar(64) NULL COMMENT '负责人' AFTER `PARENT_AREA_CODE`, +ADD COLUMN `MOBILE` varchar(32) NULL COMMENT '联系电话' AFTER `CONTACTS`; + +ALTER TABLE `customer_department` +ADD COLUMN `CODE` varchar(64) NULL COMMENT '编码' AFTER `UPDATED_TIME`, +ADD COLUMN `CONTACTS` varchar(64) NULL COMMENT '负责人' AFTER `CODE`, +ADD COLUMN `MOBILE` varchar(32) NULL COMMENT '联系电话' AFTER `CONTACTS`; + +ALTER TABLE `customer_grid` +ADD COLUMN `GRID_TYPE` varchar(64) NULL COMMENT '网格类型【字典表sys_dict_data,key:grid_type】' AFTER `PIDS`, +ADD COLUMN `CONTACTS` varchar(64) NULL COMMENT '负责人' AFTER `GRID_TYPE`, +ADD COLUMN `MOBILE` varchar(32) NULL COMMENT '联系电话' AFTER `CONTACTS`; \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/logback-spring.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/logback-spring.xml index 24d44d88f9..c768b78ed0 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/logback-spring.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/logback-spring.xml @@ -139,7 +139,7 @@ - + diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml index d0718ee160..2cd7210dc5 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml @@ -82,7 +82,12 @@ + + + + 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..3e1e4f50c2 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,11 @@ 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', + IFNULL(AREA_CODE,'')AS areaCode FROM customer_department WHERE del_flag = '0' AND agency_id = #{agencyId} @@ -84,4 +88,14 @@ 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}, '%' ) + + \ 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..ca2e81e89b 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,14 @@ + + + + + + + + update customer_grid + SET AREA_CODE = '', + UPDATED_BY=#{operateUserId}, + UPDATED_TIME = NOW() + where customer_id=#{customerId} + AND pids LIKE concat('%',#{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/ApprovaledListFromDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ApprovaledListFromDTO.java new file mode 100644 index 0000000000..652dd2533f --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ApprovaledListFromDTO.java @@ -0,0 +1,28 @@ +package com.epmet.dto.form; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description + * @Author zhaoqifeng + * @Date 2022/1/4 14:49 + */ +@NoArgsConstructor +@Data +public class ApprovaledListFromDTO implements Serializable { + + private static final long serialVersionUID = 5700160700676332579L; + private String customerId; + @NotBlank(message = "组织id不能为空") + private String orgId; + private String orgType; + private String startTime; + private String endTime; + private String staffId; + private Integer pageSize = 1; + private Integer pageNo = 20; +} 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/ApprovaledListResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ApprovaledListResultDTO.java new file mode 100644 index 0000000000..97f2efd601 --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ApprovaledListResultDTO.java @@ -0,0 +1,28 @@ +package com.epmet.dto.result; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @Description + * @Author zhaoqifeng + * @Date 2022/1/4 14:58 + */ +@NoArgsConstructor +@Data +public class ApprovaledListResultDTO implements Serializable { + + private static final long serialVersionUID = 5118030421632653558L; + private String projectId; + private String title; + private String projectCategory; + private String locateAddress; + private String happenTime; + private String staffId; + private String staffName; + private String gridId; + private String gridName; + private String createdTime; +} 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..9f58bbb306 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,22 @@ public interface GovProjectOpenFeignClient { */ @PostMapping("gov/project/resievent/queryResiEventManageRedDot/{agencyId}") Result queryResiEventManageRedDot(@PathVariable("agencyId") String agencyId); + + /** + * 计算项目耗时 + * + * @Param dto + * @Return {@link Result} + * @Author zhaoqifeng + * @Date 2022/1/12 13:56 + */ + @PostMapping("gov/project/project/project-work-minutes-job") + Result projectWorkMinutesJob(@RequestBody ProjectDTO dto); + + /** + * @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..58da1494d8 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 @@ -9,7 +9,6 @@ import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.feign.GovProjectOpenFeignClient; import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO; -import org.springframework.stereotype.Component; import java.util.List; @@ -132,4 +131,27 @@ public class GovProjectOpenFeignClientFallback implements GovProjectOpenFeignCli public Result queryResiEventManageRedDot(String agencyId) { return ModuleUtils.feignConError(ServiceConstant.GOV_PROJECT_SERVER, "queryResiEventManageRedDot", agencyId); } + + /** + * 计算项目耗时 + * + * @param dto + * @Param dto + * @Return {@link Result} + * @Author zhaoqifeng + * @Date 2022/1/12 13:56 + */ + @Override + public Result projectWorkMinutesJob(ProjectDTO dto) { + return ModuleUtils.feignConError(ServiceConstant.GOV_PROJECT_SERVER, "projectWorkMinutesJob", dto); + } + + /** + * @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/deploy/docker-compose-prod.yml b/epmet-module/gov-project/gov-project-server/deploy/docker-compose-prod.yml index e7d2bcac22..fb855657d2 100644 --- a/epmet-module/gov-project/gov-project-server/deploy/docker-compose-prod.yml +++ b/epmet-module/gov-project/gov-project-server/deploy/docker-compose-prod.yml @@ -2,7 +2,7 @@ version: "3.7" services: gov-project-server: container_name: gov-project-server-prod - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/gov-project-server:0.3.83 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/gov-project-server:0.3.96 ports: - "8102:8102" network_mode: host # 使用现有网络 diff --git a/epmet-module/gov-project/gov-project-server/pom.xml b/epmet-module/gov-project/gov-project-server/pom.xml index c04583b7d5..69e7500932 100644 --- a/epmet-module/gov-project/gov-project-server/pom.xml +++ b/epmet-module/gov-project/gov-project-server/pom.xml @@ -2,7 +2,7 @@ - 0.3.83 + 0.3.96 gov-project com.epmet @@ -65,6 +65,25 @@ 4.3 compile + + com.alibaba + easyexcel + 3.0.3 + + + poi + org.apache.poi + + + poi-ooxml + org.apache.poi + + + poi-ooxml-schemas + org.apache.poi + + + io.github.openfeign 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/ProjectController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java index 070fc8bba0..077b06e22d 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java @@ -312,4 +312,17 @@ public class ProjectController { ValidatorUtils.validateEntity(formDTO,TopicResearchAnalysisFormDTO.AddUserInternalGroup.class); return new Result().ok(projectService.topicResearchAnalysis(formDTO)); } + + /** + * @Description 计算项目耗时 + * @Param dto + * @Return {@link Result} + * @Author zhaoqifeng + * @Date 2022/1/11 17:52 + */ + @PostMapping("project-work-minutes-job") + public Result projectWorkMinutesJob(@RequestBody ProjectDTO dto) { + projectService.projectWorkMinutesJob(dto); + return new Result(); + } } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTraceController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTraceController.java index f40e6c3de8..66074acfa2 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTraceController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTraceController.java @@ -3,6 +3,7 @@ package com.epmet.controller; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.annotation.RequirePermission; import com.epmet.commons.tools.enums.RequirePermissionEnum; +import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; @@ -18,6 +19,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -380,5 +382,37 @@ public class ProjectTraceController { ValidatorUtils.validateEntity(formDTO,EventToProjectFormDTO.ApprovalCategory.class,EventToProjectFormDTO.AddUserInternalGroup.class); return new Result().ok(projectTraceService.eventToProject(formDTO)); } + + /** + * 【网格员工作统计】项目列表 + * + * @Param formDTO + * @Return {@link Result< PageData< ApprovaledListResultDTO>>} + * @Author zhaoqifeng + * @Date 2022/1/4 15:32 + */ + @PostMapping("pcwork/approvaled-list") + public Result> approvaledList(@LoginUser TokenDto tokenDto, @RequestBody ApprovaledListFromDTO formDTO) { + ValidatorUtils.validateEntity(formDTO); + formDTO.setCustomerId(tokenDto.getCustomerId()); + PageData result = projectTraceService.approvaledList(formDTO); + return new Result>().ok(result); + } + + /** + * 【网格员工作统计】项目列表 导出 + * + * @Param tokenDto + * @Param formDTO + * @Return + * @Author zhaoqifeng + * @Date 2022/1/5 14:58 + */ + @PostMapping("pcwork/approvaled-list/export") + public void approvaledListExport(HttpServletResponse response, @LoginUser TokenDto tokenDto, @RequestBody ApprovaledListFromDTO formDTO) { + ValidatorUtils.validateEntity(formDTO); + formDTO.setCustomerId(tokenDto.getCustomerId()); + projectTraceService.approvaledListExport(response, formDTO); + } } 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 0f91019b54..b5a3e5107e 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); /** * 无需解决列表 @@ -267,4 +261,26 @@ public interface ProjectDao extends BaseDao { */ List selectProjectCountByOrg(List orgIds,@Param("startDate")String startDate,@Param("endDate")String endDate); + /** + * 网格员立项 + * @Param agencyId + * @Param staffId + * @Param startTime + * @Param endTime + * @Return {@link List< ApprovaledListResultDTO>} + * @Author zhaoqifeng + * @Date 2022/1/4 16:45 + */ + List getGridMemberProjectList(@Param("agencyId") String agencyId, @Param("staffId") String staffId, @Param("startTime") String startTime, @Param("endTime") String endTime); + + /** + * 获取项目列表,用来计算项目耗时 + * @Param customerId + * @Param projectId + * @Param status + * @Return {@link List< ProjectEntity>} + * @Author zhaoqifeng + * @Date 2022/1/12 17:05 + */ + List getProjectListForWorkMinutes(@Param("customerId")String customerId, @Param("projectId")String projectId, @Param("status")String status); } \ No newline at end of file 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/ProjectEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectEntity.java index cbdd5c31e7..64ea885f2c 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectEntity.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectEntity.java @@ -18,13 +18,10 @@ package com.epmet.entity; import com.baomidou.mybatisplus.annotation.TableName; - import com.epmet.commons.mybatis.entity.BaseEpmetEntity; import lombok.Data; import lombok.EqualsAndHashCode; -import java.util.Date; - /** * 项目表 * @@ -98,4 +95,9 @@ public class ProjectEntity extends BaseEpmetEntity { * */ private String locateDimension; + /** + * 项目耗时(分钟) + * */ + private Integer workMinutes; + } 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/excel/ApprovaledListExcel.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/excel/ApprovaledListExcel.java new file mode 100644 index 0000000000..3e4022712a --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/excel/ApprovaledListExcel.java @@ -0,0 +1,31 @@ +package com.epmet.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; + +/** + * @Description + * @Author zhaoqifeng + * @Date 2022/1/5 15:00 + */ +@Getter +@Setter +@EqualsAndHashCode +@ColumnWidth(20) +public class ApprovaledListExcel { + @ExcelProperty("项目事件标题") + private String title; + @ExcelProperty("项目事件类别") + private String projectCategory; + @ExcelProperty("发生地点") + private String locateAddress; + @ExcelProperty("发生日期") + private String happenTime; + @ExcelProperty("网格员") + private String staffName; + @ExcelProperty("提交日期") + private String createdTime; +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectCategoryService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectCategoryService.java index 4d66d39dd0..9ae8a7fdee 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectCategoryService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectCategoryService.java @@ -28,6 +28,7 @@ import com.epmet.entity.ProjectCategoryEntity; import java.util.List; import java.util.Map; +import java.util.Set; /** * 项目所属分类表 @@ -126,4 +127,13 @@ public interface ProjectCategoryService extends BaseService getProjectCategoryService(String projectId); + + /** + * @Description 获取项目分类列表 + * @Param projectIds + * @Return {@link Map< String, Set< String>>} + * @Author zhaoqifeng + * @Date 2022/1/5 9:50 + */ + Map> getProjectCategoryMap(List projectIds); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java index dff8e9d30e..4757113bc7 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java @@ -357,4 +357,23 @@ public interface ProjectService extends BaseService { * @return */ TopicResearchAnalysisResDTO topicResearchAnalysis(TopicResearchAnalysisFormDTO formDTO); + + /** + * 计算项目耗时定时任务 1小时一次 + * @Param dto + * @Return + * @Author zhaoqifeng + * @Date 2022/1/11 17:05 + */ + void projectWorkMinutesJob(ProjectDTO dto); + + /** + * 【网格员工作统计】项目列表 + * + * @Param formDTO + * @Return {@link PageData< ApprovaledListResultDTO>} + * @Author zhaoqifeng + * @Date 2022/1/4 16:27 + */ + PageData approvaledList(ApprovaledListFromDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectTraceService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectTraceService.java index 620f9577fc..133711aea9 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectTraceService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectTraceService.java @@ -1,9 +1,11 @@ package com.epmet.service; +import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.dto.form.*; import com.epmet.dto.result.*; +import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -183,4 +185,24 @@ public interface ProjectTraceService { * @date 2021/8/5 15:38 */ EventToProjectResultDTO eventToProject(EventToProjectFormDTO formDTO); + + /** + * 【网格员工作统计】项目列表 + * + * @Param formDTO + * @Return {@link PageData< ApprovaledListResultDTO>} + * @Author zhaoqifeng + * @Date 2022/1/4 15:33 + */ + PageData approvaledList(ApprovaledListFromDTO formDTO); + + /** + * 【网格员工作统计】项目列表导出 + * + * @Param formDTO + * @Return {@link PageData< ApprovaledListResultDTO>} + * @Author zhaoqifeng + * @Date 2022/1/4 15:33 + */ + void approvaledListExport(HttpServletResponse response, ApprovaledListFromDTO formDTO); } 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/ProjectCategoryServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectCategoryServiceImpl.java index ac0a279fb9..91d609d8e2 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectCategoryServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectCategoryServiceImpl.java @@ -17,6 +17,7 @@ package com.epmet.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; @@ -39,15 +40,14 @@ import com.epmet.entity.ProjectEntity; import com.epmet.feign.GovIssueOpenFeignClient; import com.epmet.redis.ProjectCategoryRedis; import com.epmet.service.ProjectCategoryService; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; /** * 项目所属分类表 @@ -225,4 +225,23 @@ public class ProjectCategoryServiceImpl extends BaseServiceImpl>} + * @Author zhaoqifeng + * @Date 2022/1/5 9:50 + */ + @Override + public Map> getProjectCategoryMap(List projectIds) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(ProjectCategoryEntity::getProjectId, projectIds); + List list = baseDao.selectList(wrapper); + if (CollectionUtils.isEmpty(list)) { + return Collections.emptyMap(); + } + return list.stream().collect(Collectors.groupingBy(ProjectCategoryEntity::getProjectId, Collectors.mapping(ProjectCategoryEntity::getCategoryCode, Collectors.toSet()))); + } + } \ 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 7c72732c7c..e6e70e2c73 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 @@ -448,8 +448,14 @@ 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 +2845,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()); } /** @@ -3045,6 +3060,75 @@ public class ProjectServiceImpl extends BaseServiceImpl list; + + int pageNo = NumConstant.ZERO; + int PageSize = NumConstant.ONE_HUNDRED; + do { + pageNo = pageNo + NumConstant.ONE; + PageHelper.startPage(pageNo, PageSize); + //获取项目列表 + list = baseDao.getProjectListForWorkMinutes(dto.getCustomerId(), dto.getId(), dto.getStatus());; + if (CollectionUtils.isNotEmpty(list)) { + //提取项目ID,创建时间,更新时间 + List intervalList = list.stream().map(item -> { + TimestampIntervalFormDTO formDTO = new TimestampIntervalFormDTO(); + formDTO.setId(item.getId()); + formDTO.setLeft(item.getCreatedTime()); + if (ProjectConstant.PENDING.equals(item.getStatus())) { + formDTO.setRight(new Date()); + } else { + formDTO.setRight(item.getUpdatedTime()); + } + return formDTO; + }).collect(Collectors.toList()); + //批量计算项目耗时 + Map map = batchCalculateDelta_T(ProjectConstant.PRECISE_CALCULATION, + ProjectConstant.CALCULATION_TYPE_DEFAULT, intervalList); + list.forEach(item -> { + item.setWorkMinutes(map.get(item.getId())); + }); + updateBatchById(list); + } + } while(CollectionUtils.isNotEmpty(list)); + } + + /** + * 【网格员工作统计】项目列表 + * + * @param formDTO + * @Param formDTO + * @Return {@link PageData< ApprovaledListResultDTO>} + * @Author zhaoqifeng + * @Date 2022/1/4 16:27 + */ + @Override + public PageData approvaledList(ApprovaledListFromDTO formDTO) { + if (StringUtils.isNotBlank(formDTO.getStaffId())) { + CustomerStaffInfoCacheResult staff = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getStaffId()); + if (null == staff) { + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "获取工作人员信息失败"); + } + formDTO.setOrgId(staff.getAgencyId()); + } + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); + List list = baseDao.getGridMemberProjectList(formDTO.getOrgId(), formDTO.getStaffId(), + formDTO.getStartTime(), formDTO.getEndTime()); + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal()); + } + /** * @Description 区间项目分类数量处理 * 查询的是时间段内的分类项目数,查询的时间 是传入一个日期,拼上时间,在进行比较大小 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 1150ecc9f5..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 @@ -1,23 +1,28 @@ package com.epmet.service.impl; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.epmet.commons.rocketmq.messages.ProjectChangedMQMsg; import com.epmet.commons.tools.constant.AppClientConstant; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.StrConstant; +import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.enums.OrgTypeEnum; import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.RenException; +import com.epmet.commons.tools.page.PageData; +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.security.dto.TokenDto; import com.epmet.commons.tools.security.user.LoginUserUtil; -import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.utils.IpUtils; -import com.epmet.commons.tools.utils.Result; -import com.epmet.commons.tools.utils.ScanContentUtils; +import com.epmet.commons.tools.utils.*; import com.epmet.constant.*; import com.epmet.dao.ProjectOrgRelationDao; import com.epmet.dao.ProjectProcessAttachmentDao; @@ -29,22 +34,25 @@ import com.epmet.dto.ProjectStaffDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.entity.*; +import com.epmet.excel.ApprovaledListExcel; import com.epmet.feign.*; import com.epmet.send.SendMqMsgUtil; import com.epmet.service.*; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.CollectionUtils; -import org.springframework.util.StringUtils; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.net.URLEncoder; import java.util.*; import java.util.stream.Collectors; @@ -879,9 +887,119 @@ public class ProjectTraceServiceImpl implements ProjectTraceS log.error("【项目流转】上链失败,错误信息:{}", errorMsg); } + //2021.12.21 给报事人推送站内信 sun start + sendMsg(resiEventEntity); + //2021.12.21 给报事人推送站内信 sun end + return resultDTO; } + /** + * 【网格员工作统计】项目列表 + * + * @param formDTO + * @Param formDTO + * @Return {@link PageData < ApprovaledListResultDTO>} + * @Author zhaoqifeng + * @Date 2022/1/4 15:33 + */ + @Override + public PageData approvaledList(ApprovaledListFromDTO formDTO) { + //获取项目列表 + PageData result = projectService.approvaledList(formDTO); + //获取项目分类 + Result> categoryMapResult = govIssueOpenFeignClient.getCategoryMap(formDTO.getCustomerId()); + if (!categoryMapResult.success()) { + throw new EpmetException(categoryMapResult.getCode(),categoryMapResult.getMsg()); + } + Map categoryMap = categoryMapResult.getData(); + if(CollectionUtils.isNotEmpty(result.getList())) { + List projectIds = result.getList().stream().map(ApprovaledListResultDTO::getProjectId).collect(Collectors.toList()); + Map> projectCategory = projectCategoryService.getProjectCategoryMap(projectIds); + result.getList().forEach(item -> { + //工作人员姓名 + CustomerStaffInfoCacheResult staff = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), item.getStaffId()); + if (null == staff) { + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "获取工作人员信息失败"); + } + item.setStaffName(staff.getRealName()); + //项目分类 + Set categoryList = projectCategory.get(item.getProjectId()); + if (null != categoryList) { + List categoryNames = new ArrayList<>(); + categoryList.forEach(category -> { + if (StringUtils.isNotBlank(categoryMap.get(category))) { + categoryNames.add(categoryMap.get(category)); + } + } ); + item.setProjectCategory(StringUtils.join(categoryNames.toArray(), StrConstant.SEMICOLON)); + } + }); + + } + return result; + } + + /** + * 【网格员工作统计】项目列表导出 + * + * @param formDTO + * @Param formDTO + * @Return {@link PageData< ApprovaledListResultDTO>} + * @Author zhaoqifeng + * @Date 2022/1/4 15:33 + */ + @Override + public void approvaledListExport(HttpServletResponse response, ApprovaledListFromDTO formDTO) { + formDTO.setPageNo(NumConstant.ONE); + formDTO.setPageSize(NumConstant.ONE_THOUSAND); + ExcelWriter excelWriter = null; + + CustomerStaffInfoCacheResult staff = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getStaffId()); + if (null == staff) { + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "获取工作人员信息失败"); + } + + String sheetName = getSheetName(staff.getRealName(), formDTO.getStartTime(), formDTO.getEndTime()); + try { + String name = URLEncoder.encode(sheetName, "UTF-8"); + response.setCharacterEncoding("UTF-8"); + response.setHeader("Content-disposition", "attachment;"); + + excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(name, response), ApprovaledListExcel.class).build(); + WriteSheet writeSheet = EasyExcel.writerSheet(sheetName).build(); + Integer num; + //一千条一循环分批写入 + do { + List list = approvaledList(formDTO).getList(); + List data = ConvertUtils.sourceToTarget(list, ApprovaledListExcel.class); + excelWriter.write(data, writeSheet); + num = data.size(); + formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE); + } while (num > NumConstant.ZERO && num.compareTo(formDTO.getPageSize()) == NumConstant.ZERO); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (excelWriter != null) { + excelWriter.finish(); + } + } + } + + private String getSheetName(String staffName, String startTime, String endTime) { + StringBuilder sb = new StringBuilder(staffName); + String s = staffName; + if (StringUtils.isBlank(startTime) && StringUtils.isNotBlank(endTime)) { + sb.append("截止").append(endTime); + } else if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { + sb.append(startTime) + .append("至") + .append(endTime); + } + sb.append("的上报事件(直接立项)记录"); + return sb.toString(); + } + private List queryStaffListRes(List staffList,String currentUserId) { List staffIdList = staffList.stream().map(TickStaffFormDTO::getStaffId).collect(Collectors.toList()); staffIdList.add(currentUserId); @@ -1011,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/db/migration/V0.0.19__project_work_minutes.sql b/epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.19__project_work_minutes.sql new file mode 100644 index 0000000000..7556265c2a --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.19__project_work_minutes.sql @@ -0,0 +1,2 @@ +ALTER TABLE `project` + ADD COLUMN `WORK_MINUTES` integer(11) NULL DEFAULT 0 COMMENT '项目耗时(分钟)' AFTER `LOCATE_DIMENSION`; \ No newline at end of file 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 a43a05d0b8..0ce0ccba89 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} + + \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ResiEventDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ResiEventDao.xml index d88575dbab..fb5d8b7d8f 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ResiEventDao.xml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ResiEventDao.xml @@ -10,46 +10,51 @@ - - + + + + SELECT - IFNULL(DATE_FORMAT(re.CREATED_TIME,'%Y-%m-%d %H:%i'),'') AS eventTime, + IFNULL(DATE_FORMAT(re.CREATED_TIME,'%Y-%m-%d %H:%i:%s'),'') AS eventTime, IFNULL(re.EVENT_CONTENT,'') AS eventContent, IFNULL(re.ADDRESS,'') AS eventAddress, (CASE WHEN re.`STATUS` = 'processing' THEN FALSE WHEN re.`STATUS` = 'closed_case' THEN TRUE ELSE FALSE END) AS isClosed, @@ -141,8 +156,12 @@ (CASE WHEN re.READ_FLAG = 1 THEN FALSE ELSE TRUE END) AS isRollback, (CASE WHEN re.SHIFT_PROJECT = 1 THEN TRUE ELSE FALSE END) AS isProject, IFNULL(re.project_id,'') AS projectId, - ea.ATTACHMENT_URL AS eventImg, + ea.id AS resiEventAttachmentId, + ea.ATTACHMENT_URL AS url, + ea.ATTACHMENT_TYPE AS type, + ea.duration AS duration, IF(ISNULL(em.USER_SHOW_NAME),NULL,concat('人大代表-',em.USER_SHOW_NAME)) AS person, + em.user_id as personUserId, re.GRID_ID AS gridId, re.CREATED_BY AS eventUserId, ro.ORG_ID AS orgId @@ -179,18 +198,25 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + \ 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/open-data-worker/open-data-worker-server/deploy/docker-compose-prod.yml b/epmet-module/open-data-worker/open-data-worker-server/deploy/docker-compose-prod.yml index 75981232fc..bc90323bc3 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/deploy/docker-compose-prod.yml +++ b/epmet-module/open-data-worker/open-data-worker-server/deploy/docker-compose-prod.yml @@ -2,7 +2,7 @@ version: "3.7" services: gov-voice-server: container_name: open-data-worker-server-prod - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/open-data-worker-server:0.3.13 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/open-data-worker-server:0.3.22 ports: - "8117:8117" network_mode: host # 使用现有网络 diff --git a/epmet-module/open-data-worker/open-data-worker-server/pom.xml b/epmet-module/open-data-worker/open-data-worker-server/pom.xml index 79a89eac66..802f37d762 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/pom.xml +++ b/epmet-module/open-data-worker/open-data-worker-server/pom.xml @@ -2,7 +2,7 @@ - 0.3.13 + 0.3.22 open-data-worker com.epmet diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataProjectChangeEventListener.java b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataProjectChangeEventListener.java index d3b65b6942..6c5f127cb9 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataProjectChangeEventListener.java +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataProjectChangeEventListener.java @@ -3,7 +3,6 @@ package com.epmet.opendata.mq.listener; import com.alibaba.fastjson.JSON; import com.epmet.commons.rocketmq.constants.MQUserPropertys; import com.epmet.commons.rocketmq.messages.DisputeProcessMQMsg; -import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.distributedlock.DistributedLock; import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.RenException; @@ -73,10 +72,6 @@ public class OpenDataProjectChangeEventListener implements MessageListenerConcur logger.info("【开放数据事件监听器】-项目信息变更-收到消息内容:{}, 操作:{}, pendingMsgLabel:{}", msg, tags, pendingMsgLabel); DisputeProcessMQMsg obj = JSON.parseObject(msg, DisputeProcessMQMsg.class); - //只推送平阴数据 - if (!StrConstant.PY_CUSTOMER.equals(obj.getCustomerId())) { - return; - } EventInfoFormDTO formDTO = ConvertUtils.sourceToTarget(obj, EventInfoFormDTO.class); RLock lock = null; diff --git a/epmet-module/oper-crm/oper-crm-client/src/main/java/com/epmet/dto/form/UpdateCustomerFormDTO.java b/epmet-module/oper-crm/oper-crm-client/src/main/java/com/epmet/dto/form/UpdateCustomerFormDTO.java index 6186d67bfb..b2f2cb20c8 100644 --- a/epmet-module/oper-crm/oper-crm-client/src/main/java/com/epmet/dto/form/UpdateCustomerFormDTO.java +++ b/epmet-module/oper-crm/oper-crm-client/src/main/java/com/epmet/dto/form/UpdateCustomerFormDTO.java @@ -1,8 +1,11 @@ package com.epmet.dto.form; +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; import lombok.Data; import lombok.NoArgsConstructor; +import org.hibernate.validator.constraints.Length; +import javax.validation.constraints.NotBlank; import java.io.Serializable; /** @@ -15,17 +18,26 @@ import java.io.Serializable; public class UpdateCustomerFormDTO implements Serializable { private static final long serialVersionUID = 1296290251616658023L; + + public interface ShowGroup extends CustomerClientShowGroup {} + public interface AddUserInternalGroup { + } + public interface OpenAreaCodeSwitchGroup extends CustomerClientShowGroup {} /** * 客户ID */ + @NotBlank(message = "customerId不能为空",groups = AddUserInternalGroup.class) private String customerId; /** * 客户名 */ + @NotBlank(message = "客户名称不能为空",groups = ShowGroup.class) + @Length(max = 20, message = "客户名称最多输入20个字", groups = ShowGroup.class) private String customerName; /** * logo */ + @NotBlank(message = "logo不能为空",groups = ShowGroup.class) private String logo; // /** // * 根管理员姓名 @@ -35,4 +47,23 @@ public class UpdateCustomerFormDTO implements Serializable { // * 根管理员电话 // */ // private String rootManagePhone; + + //修改客户信息,可设置组织区划开关,修改根组织组织区划,故新增以下参数 + @NotBlank(message = "tokenDto获取userId不能为空",groups = AddUserInternalGroup.class) + private String userId; + + @NotBlank(message = "根组织不能为空",groups = AddUserInternalGroup.class) + private String rootAgencyId; + + /** + * open:当前客户新增组织需要选择areaCode;closed: 无需选择区域编码 + */ + @NotBlank(message = "组织区划开关不能为空,开启:open;关闭:closed",groups = ShowGroup.class) + private String areaCodeSwitch; + + @NotBlank(message = "rootAgencyAreaCode不能为空",groups = OpenAreaCodeSwitchGroup.class) + private String rootAgencyAreaCode; + + @NotBlank(message = "rootAgencyParentCode不能为空",groups = OpenAreaCodeSwitchGroup.class) + private String rootAgencyParentCode; } diff --git a/epmet-module/oper-crm/oper-crm-client/src/main/java/com/epmet/dto/result/CustomerListResultDTO.java b/epmet-module/oper-crm/oper-crm-client/src/main/java/com/epmet/dto/result/CustomerListResultDTO.java index e55e97197a..486648ce32 100644 --- a/epmet-module/oper-crm/oper-crm-client/src/main/java/com/epmet/dto/result/CustomerListResultDTO.java +++ b/epmet-module/oper-crm/oper-crm-client/src/main/java/com/epmet/dto/result/CustomerListResultDTO.java @@ -63,4 +63,17 @@ public class CustomerListResultDTO implements Serializable { * 区县 */ private String county; + + /** + * 需求:修改客户信息时,可以社区组织区划开关,可修改根组织的areaCode + * 故新增以下参数 + */ + private String rootAgencyId; + private String rootAgencyAreaCode; + private String rootAgencyParentCode; + private String rootAgencyLevel; + /** + * open:当前客户新增组织需要选择areaCode;closed: 无需选择区域编码 + */ + private String areaCodeSwitch; } diff --git a/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/controller/CustomerController.java b/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/controller/CustomerController.java index ab4987388f..907ffbc967 100644 --- a/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/controller/CustomerController.java +++ b/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/controller/CustomerController.java @@ -314,7 +314,14 @@ public class CustomerController { * @return com.epmet.commons.tools.utils.Result */ @PostMapping("updatecustomer") - public Result updateCustomer(@RequestBody UpdateCustomerFormDTO formDTO) { + public Result updateCustomer(@LoginUser TokenDto tokenDto,@RequestBody UpdateCustomerFormDTO formDTO) { + formDTO.setUserId(tokenDto.getUserId()); + //确定好需求,再放开 + /*ValidatorUtils.validateEntity(formDTO,UpdateCustomerFormDTO.ShowGroup.class,UpdateCustomerFormDTO.AddUserInternalGroup.class); + //如果开启了组织区划开关,根组织的组织区划变态男 + if("open".equals(formDTO.getAreaCodeSwitch())){ + ValidatorUtils.validateEntity(formDTO,UpdateCustomerFormDTO.OpenAreaCodeSwitchGroup.class); + }*/ customerService.updateCustomer(formDTO); return new Result(); } diff --git a/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/feign/GovOrgFeignClient.java b/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/feign/GovOrgFeignClient.java index b35a29c1d5..ddd811450f 100644 --- a/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/feign/GovOrgFeignClient.java +++ b/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/feign/GovOrgFeignClient.java @@ -1,10 +1,6 @@ package com.epmet.feign; -import com.epmet.commons.tools.annotation.LoginUser; -import com.epmet.commons.tools.annotation.RequirePermission; import com.epmet.commons.tools.constant.ServiceConstant; -import com.epmet.commons.tools.enums.RequirePermissionEnum; -import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.CustomerAgencyDTO; import com.epmet.dto.form.AddAgencyFormDTO; @@ -12,7 +8,6 @@ import com.epmet.dto.form.AddRootAgencyFormDTO; import com.epmet.dto.form.StaffSubmitFromDTO; import com.epmet.dto.result.AddAgencyResultDTO; import com.epmet.feign.fallback.GovOrgFeignClientFallBack; -import oracle.jdbc.proxy.annotation.Post; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; 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/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerServiceImpl.java b/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerServiceImpl.java index 39fb19c3d8..856a72c96d 100644 --- a/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerServiceImpl.java +++ b/epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerServiceImpl.java @@ -19,6 +19,7 @@ package com.epmet.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; @@ -26,16 +27,13 @@ import com.epmet.commons.rocketmq.messages.InitCustomerMQMsg; import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.NumConstant; 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.utils.ConvertUtils; import com.epmet.commons.tools.utils.HttpClientManager; import com.epmet.commons.tools.utils.Result; -import com.epmet.constant.ModuleConstant; -import com.epmet.constant.RoleKeyConstants; -import com.epmet.constant.ThirdConstant; -import com.epmet.constant.SystemMessageType; -import com.epmet.constant.UserWorkType; +import com.epmet.constant.*; import com.epmet.dao.CustomerDao; import com.epmet.dto.*; import com.epmet.dto.form.*; @@ -84,8 +82,6 @@ public class CustomerServiceImpl extends BaseServiceImpl queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(CustomerEntity::getCustomerName, formDTO.getCustomerName()); + queryWrapper.ne(CustomerEntity::getId, formDTO.getCustomerId()); + Integer roleOperationCount = baseDao.selectCount(queryWrapper); + if (null != roleOperationCount && roleOperationCount > NumConstant.ZERO) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "客户名称已存在:" + formDTO.getCustomerName(), "客户名称已存在"); + } + + //2、设置组织区划开关、根组织的组织区划 调用gov-org服务 + //确定好需求再放开 + /*CustomerAreaCodeFormDTO areaCodeFormDTO = ConvertUtils.sourceToTarget(formDTO, CustomerAreaCodeFormDTO.class); + Result govOrgresult = govOrgOpenFeignClient.configCustomerAreaCode(areaCodeFormDTO); + if (!govOrgresult.success()) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "gov-org服务异常:" + govOrgresult.getInternalMsg(), "设置组织区划接口返回异常:" + govOrgresult.getMsg()); + }*/ + + //3、修改客户名称 CustomerEntity entity = new CustomerEntity(); entity.setId(formDTO.getCustomerId()); - if (StringUtils.isNotBlank(formDTO.getCustomerName())){ + if (StringUtils.isNotBlank(formDTO.getCustomerName())) { entity.setCustomerName(formDTO.getCustomerName()); } - if (StringUtils.isNotBlank(formDTO.getLogo())){ + if (StringUtils.isNotBlank(formDTO.getLogo())) { entity.setLogo(formDTO.getLogo()); } entity.setLogo(formDTO.getLogo()); diff --git a/epmet-module/oper-customize/oper-customize-server/deploy/docker-compose-prod.yml b/epmet-module/oper-customize/oper-customize-server/deploy/docker-compose-prod.yml index 5ccd050436..88f8deb3ed 100644 --- a/epmet-module/oper-customize/oper-customize-server/deploy/docker-compose-prod.yml +++ b/epmet-module/oper-customize/oper-customize-server/deploy/docker-compose-prod.yml @@ -2,7 +2,7 @@ version: "3.7" services: oper-customize-server: container_name: oper-customize-server-prod - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/oper-customize-server:0.3.64 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/oper-customize-server:0.3.66 ports: - "8089:8089" network_mode: host # 使用现有网络 diff --git a/epmet-module/oper-customize/oper-customize-server/pom.xml b/epmet-module/oper-customize/oper-customize-server/pom.xml index 295631391f..d1e566e165 100644 --- a/epmet-module/oper-customize/oper-customize-server/pom.xml +++ b/epmet-module/oper-customize/oper-customize-server/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.70 + 0.3.66 com.epmet oper-customize 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/deploy/docker-compose-prod.yml b/epmet-module/resi-group/resi-group-server/deploy/docker-compose-prod.yml index 90296e3d83..354d8b1daa 100644 --- a/epmet-module/resi-group/resi-group-server/deploy/docker-compose-prod.yml +++ b/epmet-module/resi-group/resi-group-server/deploy/docker-compose-prod.yml @@ -2,7 +2,7 @@ version: "3.7" services: resi-group-server: container_name: resi-group-server-prod - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/resi-group-server:0.3.127 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/resi-group-server:0.3.130 ports: - "8095:8095" network_mode: host # 使用现有网络 diff --git a/epmet-module/resi-group/resi-group-server/pom.xml b/epmet-module/resi-group/resi-group-server/pom.xml index c12490d510..1a1462c00b 100644 --- a/epmet-module/resi-group/resi-group-server/pom.xml +++ b/epmet-module/resi-group/resi-group-server/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.127 + 0.3.130 com.epmet resi-group 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 4.0.0 - 0.3.33 + 0.3.34 com.epmet resi-guide diff --git a/epmet-module/resi-guide/resi-guide-server/src/main/java/com/epmet/controller/StrangerResiGuideController.java b/epmet-module/resi-guide/resi-guide-server/src/main/java/com/epmet/controller/StrangerResiGuideController.java index a19e255130..d2e021b4d0 100644 --- a/epmet-module/resi-guide/resi-guide-server/src/main/java/com/epmet/controller/StrangerResiGuideController.java +++ b/epmet-module/resi-guide/resi-guide-server/src/main/java/com/epmet/controller/StrangerResiGuideController.java @@ -91,7 +91,9 @@ public class StrangerResiGuideController { @PostMapping("sso/publiclocationgridlist") Result> 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/deploy/docker-compose-prod.yml b/epmet-module/resi-hall/resi-hall-server/deploy/docker-compose-prod.yml index 6203abc44d..6ae227458d 100644 --- a/epmet-module/resi-hall/resi-hall-server/deploy/docker-compose-prod.yml +++ b/epmet-module/resi-hall/resi-hall-server/deploy/docker-compose-prod.yml @@ -2,7 +2,7 @@ version: "3.7" services: resi-hall-server: container_name: resi-hall-server-prod - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/resi-hall-server:0.3.34 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/resi-hall-server:0.3.36 ports: - "8100:8100" network_mode: host # 使用现有网络 diff --git a/epmet-module/resi-hall/resi-hall-server/pom.xml b/epmet-module/resi-hall/resi-hall-server/pom.xml index fda6c3856d..e1d8cb9996 100644 --- a/epmet-module/resi-hall/resi-hall-server/pom.xml +++ b/epmet-module/resi-hall/resi-hall-server/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.3.34 + 0.3.36 resi-hall com.epmet 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-mine/resi-mine-server/deploy/docker-compose-prod.yml b/epmet-module/resi-mine/resi-mine-server/deploy/docker-compose-prod.yml index 09cdf0cd4c..98ef0ddad1 100644 --- a/epmet-module/resi-mine/resi-mine-server/deploy/docker-compose-prod.yml +++ b/epmet-module/resi-mine/resi-mine-server/deploy/docker-compose-prod.yml @@ -2,7 +2,7 @@ version: "3.7" services: resi-mine-server: container_name: resi-mine-server-prod - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/resi-mine-server:0.3.53 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/resi-mine-server:0.3.54 ports: - "8094:8094" network_mode: host # 使用现有网络 diff --git a/epmet-module/resi-mine/resi-mine-server/pom.xml b/epmet-module/resi-mine/resi-mine-server/pom.xml index 7fc7613eb4..ef177cadf2 100644 --- a/epmet-module/resi-mine/resi-mine-server/pom.xml +++ b/epmet-module/resi-mine/resi-mine-server/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.53 + 0.3.54 com.epmet resi-mine diff --git a/epmet-module/resi-partymember/resi-partymember-server/deploy/docker-compose-prod.yml b/epmet-module/resi-partymember/resi-partymember-server/deploy/docker-compose-prod.yml index d5272f463c..253215b123 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/deploy/docker-compose-prod.yml +++ b/epmet-module/resi-partymember/resi-partymember-server/deploy/docker-compose-prod.yml @@ -2,7 +2,7 @@ version: "3.7" services: resi-partymember-server: container_name: resi-partymember-server-prod - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/resi-partymember-server:0.3.82 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/resi-partymember-server:0.3.83 ports: - "8096:8096" network_mode: host # 使用现有网络 diff --git a/epmet-module/resi-partymember/resi-partymember-server/pom.xml b/epmet-module/resi-partymember/resi-partymember-server/pom.xml index 43e3789602..4c7c11b2fd 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/pom.xml +++ b/epmet-module/resi-partymember/resi-partymember-server/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.82 + 0.3.83 com.epmet resi-partymember 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-scan/deploy/docker-compose-prod.yml b/epmet-openapi/epmet-openapi-scan/deploy/docker-compose-prod.yml index 02fcb1cecc..3254a018e6 100644 --- a/epmet-openapi/epmet-openapi-scan/deploy/docker-compose-prod.yml +++ b/epmet-openapi/epmet-openapi-scan/deploy/docker-compose-prod.yml @@ -2,7 +2,7 @@ version: "3.7" services: epmet-openapi-scan: container_name: epmet-openapi-scan-prod - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-openapi-scan:0.3.31 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-openapi-scan:0.3.32 ports: - "8107:8107" network_mode: host # 不会创建新的网络 diff --git a/epmet-openapi/epmet-openapi-scan/pom.xml b/epmet-openapi/epmet-openapi-scan/pom.xml index 0356318585..289dd8a2f9 100644 --- a/epmet-openapi/epmet-openapi-scan/pom.xml +++ b/epmet-openapi/epmet-openapi-scan/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.3.31 + 0.3.32 epmet-openapi-scan jar 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/PcWorkListFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PcWorkListFormDTO.java new file mode 100644 index 0000000000..ebccb2c9d3 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PcWorkListFormDTO.java @@ -0,0 +1,45 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2022/1/4 2:00 下午 + * @DESC + */ +@Data +public class PcWorkListFormDTO implements Serializable { + + private static final long serialVersionUID = -3522636529743412120L; + + public interface PcWorkListForm{} + +// @NotBlank(message = "staffId不能为空",groups = PcWorkListForm.class) + private String staffId; + + @NotBlank(message = "endTime不能为空",groups = PcWorkListForm.class) + private String endTime; + + private String startTime; + + @NotBlank(message = "orgId不能为空",groups = PcWorkListForm.class) + private String orgId; + + @NotBlank(message = "orgType不能为空",groups = PcWorkListForm.class) + private String orgType; + + @NotNull(message = "pageSize不能为空",groups = PcWorkListForm.class) + private Integer pageSize; + + @NotNull(message = "pageNo不能为空",groups = PcWorkListForm.class) + private Integer pageNo; + + /** + * 是否分页,默认分页 + */ + private Boolean isPage = true; +} 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/form/patrol/PcworkRecordListFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/patrol/PcworkRecordListFormDTO.java new file mode 100644 index 0000000000..6c628edfec --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/patrol/PcworkRecordListFormDTO.java @@ -0,0 +1,53 @@ +package com.epmet.dto.form.patrol; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description 【网格员工作统计】巡查记录列表 + * @Author sun + */ +@Data +public class PcworkRecordListFormDTO implements Serializable { + private static final long serialVersionUID = 9156247659994638103L; + + /** + * 组织或网格Id + */ + @NotBlank(message = "组织Id不能为空", groups = Staff.class) + private String orgId; + /** + * 组织agency 网格grid + */ + @NotBlank(message = "组织类型不能为空", groups = Staff.class) + private String orgType; + /** + * 工作人员Id + */ + private String staffId; + /** + * 开始时间【yyyymmdd】 + */ + private String startTime; + /** + * 结束时间【yyyymmdd】 + */ + @NotBlank(message = "结束时间不能为空",groups = Staff.class) + private String endTime; + /** + * 页码 + * */ + @Min(1) + private Integer pageNo; + /** + * 每页多少条 + * */ + private Integer pageSize = 20; + private Boolean isPage = true; + public interface Staff extends CustomerClientShowGroup {} + +} 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/PatrolRoutineWorkResult.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PatrolRoutineWorkResult.java index 5db6d41b24..d0040279cb 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PatrolRoutineWorkResult.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PatrolRoutineWorkResult.java @@ -25,6 +25,8 @@ public class PatrolRoutineWorkResult implements Serializable { private String title; + private String userId; + /** * 一级工作类型 code */ diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PcWorkListResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PcWorkListResultDTO.java new file mode 100644 index 0000000000..0225f9ff7b --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PcWorkListResultDTO.java @@ -0,0 +1,109 @@ +package com.epmet.dto.result; + +import com.epmet.commons.tools.constant.NumConstant; +import lombok.Data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +/** + * @Author zxc + * @DateTime 2022/1/4 2:06 下午 + * @DESC + */ +@Data +public class PcWorkListResultDTO implements Serializable { + + private static final long serialVersionUID = -2072009617522409407L; + + private Integer total; + + private List list; + + public PcWorkListResultDTO() { + this.total = NumConstant.ZERO; + this.list = new ArrayList<>(); + } + + @Data + public static class PcWorkListResult{ + + /** + * 事项名称 + */ + private String title; + + /** + * 事项类型码 + */ + private List workTypeCode; + + /** + * 事项类型名称 + */ + private String workTypeName; + + /** + * 有无异常 + */ + private String isNormal; + + private String workTypeNames; + + /** + * 发生地点 + */ + private String happenAddress; + + /** + * 发生时间 返回返回格式化字符串,yyyy-MM-dd + */ + private String happenTime; + + /** + * 人员ID + */ + private String staffId; + + /** + * 人员姓名 + */ + private String staffName; + + /** + * 网格id + */ + private String gridId; + + /** + * 网格名字 + */ + private String gridName; + + /** + * 提交日期 返回返回格式化字符串,yyyy-MM-dd HH:mm:ss + */ + private String createdTime; + + /** + * 工作内容 + */ + private String workContent; + + public PcWorkListResult() { + this.title = ""; + this.workTypeCode = new ArrayList<>(); + this.workTypeName = ""; + this.isNormal = ""; + this.happenAddress = ""; + this.happenTime = ""; + this.staffId = ""; + this.staffName = ""; + this.gridId = ""; + this.gridName = ""; + this.createdTime = ""; + this.workContent = ""; + } + } +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PcworkRecordListResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PcworkRecordListResultDTO.java new file mode 100644 index 0000000000..88a9661478 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PcworkRecordListResultDTO.java @@ -0,0 +1,50 @@ +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.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Description 【网格员工作统计】巡查记录列表 + * @Author sun + */ +@Data +public class PcworkRecordListResultDTO implements Serializable { + + private static final long serialVersionUID = -1L; + + List list = new ArrayList<>(); + private Integer total; + + @Data + public static class StaffPatrol { + //人员ID + private String staffId; + //人员名称 + private String staffName; + //网格ID + private String gridId; + //网格名称 + private String gridName; + //状态(英文key) + private String status; + //状态(中文) + private String statusName; + //巡查开始时间 返回返回格式化字符串,yyyy-MM-dd HH:mm:ss + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date patrolStartTime; + //巡查结束时间 返回返回格式化字符串,yyyy-MM-dd HH:mm:ss + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date patrolEndTime; + //巡查时长 xx小时xx分钟 + private String totalTime; + @JsonIgnore + private Integer totalTimeNum; + } + +} 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/deploy/docker-compose-prod.yml b/epmet-user/epmet-user-server/deploy/docker-compose-prod.yml index b252971a80..9eae5a851f 100644 --- a/epmet-user/epmet-user-server/deploy/docker-compose-prod.yml +++ b/epmet-user/epmet-user-server/deploy/docker-compose-prod.yml @@ -2,7 +2,7 @@ version: "3.7" services: epmet-user-server: container_name: epmet-user-server-prod - image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-user-server:0.3.197 + image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/epmet-user-server:0.3.218 ports: - "8087:8087" network_mode: host # 不会创建新的网络 diff --git a/epmet-user/epmet-user-server/pom.xml b/epmet-user/epmet-user-server/pom.xml index 3bc3afa499..8d021ca7a8 100644 --- a/epmet-user/epmet-user-server/pom.xml +++ b/epmet-user/epmet-user-server/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.197 + 0.3.218 com.epmet epmet-user 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/PatrolRoutineWorkController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/PatrolRoutineWorkController.java index edcfe9e34f..5297d84c2a 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/PatrolRoutineWorkController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/PatrolRoutineWorkController.java @@ -1,21 +1,32 @@ package com.epmet.controller; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dto.form.PatrolRoutineWorkFormDTO; +import com.epmet.dto.form.PcWorkListFormDTO; import com.epmet.dto.form.patrol.PatrolQueryFormDTO; import com.epmet.dto.result.PatrolRoutineWorkResult; +import com.epmet.dto.result.PcWorkListResultDTO; +import com.epmet.excel.PcWorkListExport; import com.epmet.service.PatrolRoutineWorkService; import com.github.pagehelper.Page; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.servlet.http.HttpServletResponse; import java.util.List; +import static io.netty.handler.codec.smtp.SmtpRequests.data; + /** * 例行工作 * @@ -56,4 +67,22 @@ public class PatrolRoutineWorkController { return new Result().ok(true); } + /** + * @Description 【网格员工作统计】例行工作列表 + * @param formDTO + * @author zxc + * @date 2022/1/4 2:18 下午 + */ + @PostMapping("pcwork/list") + public Result pcWorkList(@RequestBody PcWorkListFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO, PcWorkListFormDTO.PcWorkListForm.class); + return new Result().ok(gridUserWorkService.pcWorkList(formDTO)); + } + + @PostMapping("pcwork/list/export") + public void pcWorkListExport(@RequestBody PcWorkListFormDTO formDTO, HttpServletResponse response) throws Exception { + ValidatorUtils.validateEntity(formDTO, PcWorkListFormDTO.PcWorkListForm.class); + gridUserWorkService.pcWorkListExport(formDTO,response); + } + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StaffPatrolController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StaffPatrolController.java index dbd32146fa..e8f37f0a2e 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StaffPatrolController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StaffPatrolController.java @@ -1,22 +1,37 @@ package com.epmet.controller; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.builder.ExcelWriterSheetBuilder; +import com.alibaba.excel.write.metadata.WriteSheet; +import com.alibaba.excel.write.metadata.fill.FillWrapper; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.annotation.RequirePermission; import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.enums.RequirePermissionEnum; import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dto.form.*; +import com.epmet.dto.form.patrol.PcworkRecordListFormDTO; import com.epmet.dto.result.*; +import com.epmet.excel.StaffPatrolRecordExcel; import com.epmet.service.StaffPatrolDetailService; import com.epmet.service.StaffPatrolRecordService; +import com.epmet.util.TestFileUtil; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; import java.util.List; /** @@ -155,4 +170,26 @@ public class StaffPatrolController { return new Result>().ok(staffPatrolRecordService.patrolTrack(formDTO)); } + /** + * @Author sun + * @Description 【网格员工作统计】巡查记录列表 + **/ + @NoRepeatSubmit + @PostMapping("pcwork/record-list") + public Result pcworkRecordList(@RequestBody PcworkRecordListFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, PcworkRecordListFormDTO.Staff.class); + return new Result().ok(staffPatrolRecordService.pcworkRecordList(formDTO)); + } + + /** + * @Author sun + * @Description 【网格员工作统计】巡查记录列表导出 + **/ + @NoRepeatSubmit + @PostMapping("pcwork/record-list/export") + public void pcworkRecordListExport(HttpServletResponse response, @RequestBody PcworkRecordListFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, PcworkRecordListFormDTO.Staff.class); + staffPatrolRecordService.pcworkRecordListExport(response, formDTO); + } + } 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/PatrolRoutineWorkDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/PatrolRoutineWorkDao.java index 9380056b67..d728cc82e2 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/PatrolRoutineWorkDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/PatrolRoutineWorkDao.java @@ -18,8 +18,10 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.form.PcWorkListFormDTO; import com.epmet.dto.form.patrol.PatrolQueryFormDTO; import com.epmet.dto.result.PatrolRoutineWorkResult; +import com.epmet.dto.result.PcWorkListResultDTO; import com.epmet.entity.PatrolRoutineWorkEntity; import org.apache.ibatis.annotations.Mapper; @@ -35,4 +37,6 @@ import java.util.List; public interface PatrolRoutineWorkDao extends BaseDao { List selectList(PatrolQueryFormDTO formDTO); + + List pcWorkList(PcWorkListFormDTO formDTO); } 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/StaffPatrolRecordDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/StaffPatrolRecordDao.java index 7ab70be6bf..ac82f07584 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/StaffPatrolRecordDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/StaffPatrolRecordDao.java @@ -19,7 +19,9 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dto.form.RecordListFormDTO; +import com.epmet.dto.form.patrol.PcworkRecordListFormDTO; import com.epmet.dto.result.GridManagerUserListResultDTO; +import com.epmet.dto.result.PcworkRecordListResultDTO; import com.epmet.dto.result.RecordListResultDTO; import com.epmet.entity.StaffPatrolRecordEntity; import org.apache.ibatis.annotations.Mapper; @@ -62,4 +64,9 @@ public interface StaffPatrolRecordDao extends BaseDao { */ List recordList(RecordListFormDTO formDTO); + /** + * @Author sun + * @Description 【网格员工作统计】巡查记录列表 + **/ + List pcworkRecordList(PcworkRecordListFormDTO formDTO); } \ 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/entity/StatsStaffPatrolRecordDailyEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/StatsStaffPatrolRecordDailyEntity.java index 4f1a18347d..6a2ee8ab04 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/StatsStaffPatrolRecordDailyEntity.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/StatsStaffPatrolRecordDailyEntity.java @@ -123,5 +123,10 @@ public class StatsStaffPatrolRecordDailyEntity extends BaseEpmetEntity { */ private String latestPatrolStatus; + /** + * 例行工作次数 + */ + private Integer routineWorkCount; + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/PcWorkListExport.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/PcWorkListExport.java new file mode 100644 index 0000000000..e553e205e5 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/PcWorkListExport.java @@ -0,0 +1,71 @@ +package com.epmet.excel; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +/** + * @Author zxc + * @DateTime 2022/1/5 10:00 上午 + * @DESC + */ +@Getter +@Setter +@EqualsAndHashCode +public class PcWorkListExport { + + @ExcelProperty("事项名称") + @ColumnWidth(20) + private String title; + + @ExcelProperty("事项类型码") + @ColumnWidth(20) + @ExcelIgnore + private String workTypeCode; + + @ExcelProperty("事项类型名称") + @ColumnWidth(40) + private String workTypeName; + + @ExcelProperty("有无异常") + private String isNormal; + + @ExcelProperty("发生地点") + @ColumnWidth(20) + private String happenAddress; + + @ExcelProperty("发生时间") + @ColumnWidth(20) + private String happenTime; + + @ExcelProperty("人员ID") + @ExcelIgnore + private String staffId; + + @ExcelProperty("人员姓名") + @ColumnWidth(20) + private String staffName; + + @ExcelProperty("网格ID") + @ExcelIgnore + private String gridId; + + @ExcelProperty("网格名字") + @ColumnWidth(20) + private String gridName; + + @ExcelProperty("提交日期") + @ColumnWidth(30) + private String createdTime; + + @ExcelProperty("工作内容") + @ColumnWidth(60) + private String workContent; +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/StaffPatrolRecordExcel.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/StaffPatrolRecordExcel.java new file mode 100644 index 0000000000..1542e379be --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/StaffPatrolRecordExcel.java @@ -0,0 +1,83 @@ +/** + * 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.excel; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +/** + * @Description 【网格员工作统计】巡查记录列表导出 + * @Author sun + */ +@Getter +@Setter +@EqualsAndHashCode +public class StaffPatrolRecordExcel { + + @ExcelProperty("人员ID") + @ExcelIgnore + private String staffId; + + @ExcelProperty("人员名称") + @ColumnWidth(15) + private String staffName; + + @ExcelProperty("网格ID") + @ExcelIgnore + private String gridId; + + @ExcelProperty("网格名称") + @ColumnWidth(20) + private String gridName; + + @ExcelProperty("状态(英文key)") + @ExcelIgnore + private String status; + + @ExcelProperty("状态") + @ColumnWidth(18) + private String statusName; + + @DateTimeFormat("yyyy年MM月dd日") + @ExcelProperty("巡查开始时间") + @ColumnWidth(20) + private Date patrolStartTime; + + @DateTimeFormat("yyyy年MM月dd日") + @ExcelProperty("巡查结束时间") + @ColumnWidth(20) + private Date patrolEndTime; + + @ExcelProperty("巡查时长") + @ColumnWidth(20) + private String totalTime; + + @ExcelIgnore + private Integer totalTimeNum;; + + + + +} \ No newline at end of file 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/PatrolRoutineWorkService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/PatrolRoutineWorkService.java index 8ece1a46c9..5af4a1300a 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/PatrolRoutineWorkService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/PatrolRoutineWorkService.java @@ -19,11 +19,16 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.dto.form.PatrolRoutineWorkFormDTO; +import com.epmet.dto.form.PcWorkListFormDTO; import com.epmet.dto.form.patrol.PatrolQueryFormDTO; import com.epmet.dto.result.PatrolRoutineWorkResult; +import com.epmet.dto.result.PcWorkListResultDTO; import com.epmet.entity.PatrolRoutineWorkEntity; import com.github.pagehelper.Page; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** * 巡查例行工作 * @@ -44,4 +49,13 @@ public interface PatrolRoutineWorkService extends BaseService listPage(PatrolQueryFormDTO formDTO); + + /** + * @Description 【网格员工作统计】例行工作列表 + * @param formDTO + * @author zxc + * @date 2022/1/4 2:18 下午 + */ + PcWorkListResultDTO pcWorkList(PcWorkListFormDTO formDTO); + void pcWorkListExport(PcWorkListFormDTO formDTO, HttpServletResponse response) throws Exception; } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/StaffPatrolRecordService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/StaffPatrolRecordService.java index 4b54f84c97..c5819aa58b 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/StaffPatrolRecordService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/StaffPatrolRecordService.java @@ -20,14 +20,11 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.dto.form.*; -import com.epmet.dto.result.PatrolUploadResultDTO; -import com.epmet.dto.result.StaffPatrolInitResultDTO; -import com.epmet.dto.result.StartPatrolResultDTO; -import com.epmet.dto.result.PatrolTrackResultDTO; -import com.epmet.dto.result.RecordListResultDTO; -import com.epmet.dto.result.UserNameAndLLResultDTO; +import com.epmet.dto.form.patrol.PcworkRecordListFormDTO; +import com.epmet.dto.result.*; import com.epmet.entity.StaffPatrolRecordEntity; +import javax.servlet.http.HttpServletResponse; import java.util.List; @@ -115,4 +112,12 @@ public interface StaffPatrolRecordService extends BaseService patrolTrack(PatrolTrackFormDTO formDTO); + /** + * @Author sun + * @Description 【网格员工作统计】巡查记录列表 + **/ + PcworkRecordListResultDTO pcworkRecordList(PcworkRecordListFormDTO formDTO); + + + void pcworkRecordListExport(HttpServletResponse response, PcworkRecordListFormDTO formDTO); } 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..70f34f2849 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 baseDao.selectList(formDTO)); } + /** + * @Description 【网格员工作统计】例行工作列表 + * @param formDTO + * @author zxc + * @date 2022/1/4 2:18 下午 + */ + @Override + public PcWorkListResultDTO pcWorkList(PcWorkListFormDTO formDTO) { + PcWorkListResultDTO result = new PcWorkListResultDTO(); + List list; + if (formDTO.getIsPage()){ + PageInfo listPageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.pcWorkList(formDTO)); + result.setTotal(Integer.valueOf(String.valueOf(listPageInfo.getTotal()))); + list = listPageInfo.getList(); + }else { + list = baseDao.pcWorkList(formDTO); + result.setTotal(list.size()); + } + if (CollectionUtils.isEmpty(list)){ + return result; + } + Result> workTypeResult = adminOpenFeignClient.dictTree(DictTypeEnum.PATROL_WORK_TYPE.getCode()); + if (!workTypeResult.success()){ + throw new EpmetException("查询例行工作分类失败..."); + } + List gridIds = list.stream().map(m -> m.getGridId()).distinct().collect(Collectors.toList()); + Result> gridNamesResult = govOrgOpenFeignClient.getAllGridListByGridIds(gridIds); + if (!gridNamesResult.success()){ + throw new EpmetException("查询网格名字失败..."); + } + list.forEach(l -> { + l.setWorkTypeName(disposeWorkTypeCode(workTypeResult.getData(),l.getWorkTypeCode()).stream().collect(Collectors.joining(","))); + gridNamesResult.getData().stream().filter(g -> l.getGridId().equals(g.getGridId())).forEach(g -> l.setGridName(g.getGridName())); + }); + result.setList(list); + return result; + } + + @Override + public void pcWorkListExport(PcWorkListFormDTO formDTO, HttpServletResponse response) throws Exception { + String name = getFileName(formDTO); + ExcelWriter excelWriter = null; + try { + response.setHeader("Access-Control-Expose-Headers", "Content-Disposition"); + response.setHeader("Content-Type", "application/vnd.ms-excel"); + response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(name, "UTF-8")); + excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(name,response),PcWorkListExport.class).build(); + // 如果同一个sheet只要创建一次 + WriteSheet writeSheet = EasyExcel.writerSheet(name).build(); + Integer pageNo = NumConstant.ONE; + Integer pageSize = 1000; + Integer num = NumConstant.ZERO; + do { + formDTO.setPageNo(pageNo); + formDTO.setPageSize(pageSize); + List dtos = pcWorkList(formDTO).getList(); + List data = ConvertUtils.sourceToTarget(dtos, PcWorkListExport.class); + num = data.size(); + excelWriter.write(data, writeSheet); + pageNo++; + }while (num > NumConstant.ZERO && num.compareTo(pageSize) == NumConstant.ZERO); + } finally { + if (excelWriter != null) { + excelWriter.finish(); + } + } + } + + public String getFileName(PcWorkListFormDTO formDTO){ + StringBuilder name = new StringBuilder(); + if (formDTO.getOrgType().equals(OrgTypeEnum.GRID.getCode())){ + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(formDTO.getOrgId()); + if (null == gridInfo){ + throw new EpmetException("查询网格信息失败..."); + } + name.append(gridInfo.getGridName()); + }else { + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(formDTO.getOrgId()); + if (null == agencyInfo){ + throw new EpmetException("查询组织信息失败..."); + } + name.append(agencyInfo.getOrganizationName()); + } + name.append(" 例行工作 "); + if (StringUtils.isNotBlank(formDTO.getStartTime())){ + name.append(getDate(formDTO.getStartTime())) + .append("至").append(getDate(formDTO.getEndTime())).append("区间增长值"); + }else { + name.append("截止至"); + name.append(getDate(formDTO.getEndTime())); + name.append("累计值"); + } + name.append(".xlsx"); + return name.toString(); + }; + + public static String getDate(String dateId){ + StringBuilder sb = new StringBuilder(); + sb.append(dateId.substring(0,4)).append(StrConstant.HYPHEN); + sb.append(dateId.substring(4,6)).append(StrConstant.HYPHEN); + sb.append(dateId.substring(6,8)); + + return sb.toString(); + } + + /** + * @Description 处理 workTypeName + * @param workTypeList + * @param code + * @author zxc + * @date 2022/1/5 9:27 上午 + */ + public List disposeWorkTypeCode(List workTypeList,List code){ + if (CollectionUtils.isEmpty(code)){ + return new ArrayList<>(); + } + List result = new ArrayList<>(); + code.forEach(c -> { + workTypeList.forEach(w1 -> { + w1.getChildren().forEach(w2 -> { + if (c.equals(w2.getId())){ + result.add(w1.getName() + StrConstant.HYPHEN + w2.getName()); + } + }); + }); + }); + return result; + } + /** * desc:递归遍历树形结构 构建pids 根节点pids 为空字符串 * @@ -190,7 +336,7 @@ public class PatrolRoutineWorkServiceImpl extends BaseServiceImpl dtos = JSON.parseArray(str, DictTreeResultDTO.class); Map result = new HashMap<>(); @@ -199,6 +345,6 @@ public class PatrolRoutineWorkServiceImpl extends BaseServiceImpl(); } + + /** + * @Author sun + * @Description 【网格员工作统计】巡查记录列表 + **/ + @Override + public PcworkRecordListResultDTO pcworkRecordList(PcworkRecordListFormDTO formDTO) { + PcworkRecordListResultDTO resultDTO = new PcworkRecordListResultDTO(); + //1.按条件查询网格员巡查数据 + PageInfo result = + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(), formDTO.getIsPage()).doSelectPageInfo(() -> staffPatrolRecordDao.pcworkRecordList(formDTO)); + if (org.springframework.util.CollectionUtils.isEmpty(result.getList())) { + return resultDTO; + } + + //2.查询网格信息并赋值 + Map map = new HashMap<>(); + for (PcworkRecordListResultDTO.StaffPatrol r : result.getList()) { + //秒变小时分钟 + Integer minutes = r.getTotalTimeNum() / 60; + String patrolDuration = (minutes / 60 > 0 ? minutes / 60 + "小时" : "") + (minutes % 60 > 0 ? minutes % 60 + "分钟" : "0分钟"); + r.setTotalTime(patrolDuration); + + if (map.containsKey(r.getGridId())) { + r.setGridName(map.get(r.getGridId()).getGridName()); + continue; + } + String redisKey = RedisKeys.getGridInfoKey(r.getGridId()); + Map gridCache = redisUtils.hGetAll(redisKey); + if (gridCache != null && gridCache.size() > 0) { + // 直接取缓存中的 + CustomerGridDTO dto = BeanUtil.mapToBean(gridCache, CustomerGridDTO.class, true); + r.setGridName(dto.getGridName()); + map.put(r.getGridId(), dto); + } else { + CustomerGridFormDTO form = new CustomerGridFormDTO(); + form.setGridId(r.getGridId()); + Result resultGrid = govOrgOpenFeignClient.getGridBaseInfoByGridId(form); + if (!resultGrid.success()) { + throw new RenException("调用org服务获取网格基础信息失败......"); + } + r.setGridName(resultGrid.getData().getGridName()); + map.put(r.getGridId(), resultGrid.getData()); + } + } + //3.封装数据并返回 + resultDTO.setTotal((int)result.getTotal()); + resultDTO.setList(result.getList()); + return resultDTO; + } + + /** + * @Author sun + * @Description 【网格员工作统计】巡查记录列表导出 + **/ + @Override + public void pcworkRecordListExport(HttpServletResponse response, PcworkRecordListFormDTO formDTO) { + formDTO.setPageNo(NumConstant.ONE); + formDTO.setPageSize(NumConstant.ONE_THOUSAND); + ExcelWriter excelWriter = null; + try { + excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel("网格员巡查记录.xlsx", response)).build(); + WriteSheet writeSheet = EasyExcel.writerSheet(excelSheetName(formDTO)).build(); + writeSheet.setClazz(StaffPatrolRecordExcel.class); + int num = NumConstant.ZERO; + //一千条查一次,循环分批写入 + do { + PcworkRecordListResultDTO dto = pcworkRecordList(formDTO); + List data = ConvertUtils.sourceToTarget(dto.getList(), StaffPatrolRecordExcel.class); + /*WriteSheet writeSheet = EasyExcel.writerSheet(formDTO.getPageNo(), "sheet" + formDTO.getPageNo()).build(); + writeSheet.setClazz(StaffPatrolRecordExcel.class);*/ + excelWriter.write(data, writeSheet); + num = data.size(); + formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE); + } while (num == formDTO.getPageSize()); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (excelWriter != null) { + excelWriter.finish(); + } + } + } + + private String excelSheetName(PcworkRecordListFormDTO formDTO){ + StringBuilder name = new StringBuilder(); + if (formDTO.getOrgType().equals(OrgTypeEnum.GRID.getCode())){ + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(formDTO.getOrgId()); + if (null == gridInfo){ + throw new EpmetException("查询网格信息失败..."); + } + name.append(gridInfo.getGridName()); + }else { + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(formDTO.getOrgId()); + if (null == agencyInfo){ + throw new EpmetException("查询组织信息失败..."); + } + name.append(agencyInfo.getOrganizationName()); + } + name.append("巡查记录"); + SimpleDateFormat format1 = new SimpleDateFormat("yyyyMMdd"); + SimpleDateFormat format2 = new SimpleDateFormat("yyyy年MM月dd日"); + try{ + if (StringUtils.isNotBlank(formDTO.getStartTime())){ + name.append(format2.format(format1.parse(formDTO.getStartTime()))).append("-").append(format2.format(format1.parse(formDTO.getEndTime()))).append("区间增长值"); + }else { + name.append(format2.format(format1.parse(formDTO.getEndTime()))).append("累计值"); + } + } catch (Exception e) { + e.printStackTrace(); + } + return name.toString(); + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java index 8612e5f374..8854f92192 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java @@ -350,7 +350,9 @@ public class UserBadgeServiceImpl implements UserBadgeService { if(null == resiResult){ UserBaseInfoResultDTO userInfo = userBaseInfoRedis.getUserInfo(tokenDto.getUserId(),certificationDetailFormDTO.getCustomerId()); resiResult = ConvertUtils.sourceToTarget(userInfo,CertificationDetailResultDTO.class); - if(null != resiResult) resiResult.setIdcard(userInfo.getIdNum()); + if(null != resiResult) { + resiResult.setIdcard(userInfo.getIdNum()); + } } return resiResult; } @@ -430,7 +432,9 @@ public class UserBadgeServiceImpl implements UserBadgeService { @Override public Map> 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/db/migration/V0.0.22__user_routine_count.sql b/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.22__user_routine_count.sql new file mode 100644 index 0000000000..94bec2bc2b --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.22__user_routine_count.sql @@ -0,0 +1,2 @@ +ALTER TABLE `epmet_user`.`stats_staff_patrol_record_daily` + ADD COLUMN `ROUTINE_WORK_COUNT` int(11) NULL DEFAULT 0 COMMENT '例行工作次数 来自例行工作表' AFTER `LATEST_PATROL_STATUS`; 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/PatrolRoutineWorkDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/PatrolRoutineWorkDao.xml index d4445f2182..78cf718131 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/PatrolRoutineWorkDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/PatrolRoutineWorkDao.xml @@ -38,5 +38,53 @@ AND m.DEL_FLAG = '0' + + + + + + + + + + + + + + + + + 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/StaffPatrolRecordDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/StaffPatrolRecordDao.xml index 2ae77add42..43196d50a0 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/StaffPatrolRecordDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/StaffPatrolRecordDao.xml @@ -75,4 +75,37 @@ GROUP BY recordId + + \ No newline at end of file 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 @@