diff --git a/epmet-admin/epmet-admin-client/src/main/java/com/epmet/feign/EpmetAdminOpenFeignClient.java b/epmet-admin/epmet-admin-client/src/main/java/com/epmet/feign/EpmetAdminOpenFeignClient.java index 59eb1e1e40..3999b45089 100644 --- a/epmet-admin/epmet-admin-client/src/main/java/com/epmet/feign/EpmetAdminOpenFeignClient.java +++ b/epmet-admin/epmet-admin-client/src/main/java/com/epmet/feign/EpmetAdminOpenFeignClient.java @@ -105,4 +105,13 @@ public interface EpmetAdminOpenFeignClient { @PostMapping("/sys/dict/data/dictDataList/{dictType}") Result> dictDataList(@PathVariable("dictType") String dictType); + + /** + * 字典下拉框 + * 根据dictType查询字典 + * @param dictType + * @return + */ + @PostMapping("/sys/dict/data/dictOption/{dictType}") + public Result> getDictOption(@PathVariable("dictType")String dictType); } diff --git a/epmet-admin/epmet-admin-client/src/main/java/com/epmet/feign/fallback/EpmetAdminOpenFeignClientFallback.java b/epmet-admin/epmet-admin-client/src/main/java/com/epmet/feign/fallback/EpmetAdminOpenFeignClientFallback.java index 98e7e7f0f0..0184d2a100 100644 --- a/epmet-admin/epmet-admin-client/src/main/java/com/epmet/feign/fallback/EpmetAdminOpenFeignClientFallback.java +++ b/epmet-admin/epmet-admin-client/src/main/java/com/epmet/feign/fallback/EpmetAdminOpenFeignClientFallback.java @@ -65,4 +65,16 @@ public class EpmetAdminOpenFeignClientFallback implements EpmetAdminOpenFeignCli public Result> dictDataList(String dictType) { return ModuleUtils.feignConError(ServiceConstant.EPMET_ADMIN_SERVER, "dictDataList", dictType); } + + /** + * 字典下拉框 + * 根据dictType查询字典 + * + * @param dictType + * @return + */ + @Override + public Result> getDictOption(String dictType) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_ADMIN_SERVER, "getDictOption", dictType); + } } diff --git a/epmet-admin/epmet-admin-server/src/main/java/com/epmet/controller/SysDictDataController.java b/epmet-admin/epmet-admin-server/src/main/java/com/epmet/controller/SysDictDataController.java index ce18026bf8..1a51f32c0e 100644 --- a/epmet-admin/epmet-admin-server/src/main/java/com/epmet/controller/SysDictDataController.java +++ b/epmet-admin/epmet-admin-server/src/main/java/com/epmet/controller/SysDictDataController.java @@ -20,6 +20,7 @@ import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.SysDictDataDTO; import com.epmet.service.SysDictDataService; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -118,6 +119,18 @@ public class SysDictDataController { return new Result>().ok(sysDictDataService.getNationOption()); } + /** + * 字典下拉框接口 + * @param dictType + * @return + */ + @PostMapping("dictOption/{dictType}") + public Result> getDictOption(@PathVariable("dictType")String dictType) { + if(StringUtils.isBlank(dictType)){ + return new Result<>(); + } + return new Result>().ok(sysDictDataService.getDictOption(dictType)); + } /** * @Description 人员关系 * @Param diff --git a/epmet-admin/epmet-admin-server/src/main/java/com/epmet/service/SysDictDataService.java b/epmet-admin/epmet-admin-server/src/main/java/com/epmet/service/SysDictDataService.java index 6277ab6d2f..52de66b46d 100644 --- a/epmet-admin/epmet-admin-server/src/main/java/com/epmet/service/SysDictDataService.java +++ b/epmet-admin/epmet-admin-server/src/main/java/com/epmet/service/SysDictDataService.java @@ -92,4 +92,6 @@ public interface SysDictDataService extends BaseService { List dictListTree(String dictType); List getDictDataList(String dictType); + + List getDictOption(String dictType); } diff --git a/epmet-admin/epmet-admin-server/src/main/java/com/epmet/service/impl/SysDictDataServiceImpl.java b/epmet-admin/epmet-admin-server/src/main/java/com/epmet/service/impl/SysDictDataServiceImpl.java index a7b6bff903..8df3d7c5cf 100644 --- a/epmet-admin/epmet-admin-server/src/main/java/com/epmet/service/impl/SysDictDataServiceImpl.java +++ b/epmet-admin/epmet-admin-server/src/main/java/com/epmet/service/impl/SysDictDataServiceImpl.java @@ -19,16 +19,18 @@ import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.TreeUtils; import com.epmet.dao.SysDictDataDao; +import com.epmet.dao.SysDictTypeDao; import com.epmet.dto.SysDictDataDTO; import com.epmet.entity.SysDictDataEntity; +import com.epmet.entity.SysDictTypeEntity; import com.epmet.service.SysDictDataService; +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.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -38,6 +40,9 @@ import java.util.stream.Collectors; */ @Service public class SysDictDataServiceImpl extends BaseServiceImpl implements SysDictDataService { + @Autowired + private SysDictTypeDao sysDictTypeDao; + @Override public PageData page(Map params) { @@ -216,6 +221,9 @@ public class SysDictDataServiceImpl extends BaseServiceImpl dictMap(String dictType) { List resultDTOList = baseDao.selectDictList(dictType); + if(CollectionUtils.isEmpty(resultDTOList)){ + return new HashMap<>(); + } return resultDTOList.stream().collect(Collectors.toMap(DictListResultDTO::getValue, DictListResultDTO::getLabel)); } @@ -230,4 +238,28 @@ public class SysDictDataServiceImpl extends BaseServiceImpl getDictOption(String dictType) { + LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper<>(); + queryWrapper.eq(SysDictTypeEntity::getDictType,dictType); + SysDictTypeEntity sysDictTypeEntity=sysDictTypeDao.selectOne(queryWrapper); + if(null==sysDictTypeEntity){ + return new ArrayList<>(); + } + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SysDictDataEntity::getDictTypeId,sysDictTypeEntity.getId() ); + wrapper.orderByAsc(SysDictDataEntity::getSort); + List list = baseDao.selectList(wrapper); + return list.stream().map(item -> { + OptionResultDTO dto = new OptionResultDTO(); + dto.setValue(item.getDictValue()); + dto.setLabel(item.getDictLabel()); + return dto; + }).collect(Collectors.toList()); + } } 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 c4f43a03b2..b4a31a96d1 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 @@ -36,6 +36,11 @@ public interface ConsomerGroupConstants { */ String AUTH_OPERATION_LOG_GROUP = "auth_operation_log_group"; + /** + * 数字社区web端工作人员登录 + */ + String STAFF_LOGIN_LOG_GROUP = "staff_login_log_group"; + /** * 项目操作日志消费组 */ 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 99338ee9c6..4c8ad024c6 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 @@ -34,7 +34,11 @@ public enum DictTypeEnum { TRAFFIC_TYPE("traffic_type", "交通方式", 36), SOJOURN_HISTORY("sojourn_history", "7天内旅居史情况", 37), TRIP_DATA_TYPE("trip_data_type", "行程记录类型", 39), - LINGSHAN_OFFICE_HALL_SERVICE_RECORD("lingshan_office_hall_service_record","灵山-办事大厅业务类型",40), + YT_KEY_POINT_USER_TYPE("yt_key_point_user_type","重点人群",40), + YT_POPULATION_TYPE("yt_population_type","人口类型",41), + YT_POLITICS_STATUS("yt_politics_status","政治面貌",42), + YT_ID_CARD_TYPE("yt_id_card_type","证件类型",43), + LINGSHAN_OFFICE_HALL_SERVICE_RECORD("lingshan_office_hall_service_record","灵山-办事大厅业务类型",44), ; private final String code; diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java index d03143dd81..8d0a5cccc8 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java @@ -200,7 +200,9 @@ public enum RequirePermissionEnum { * 事件管理-工作端小程序列表、详情接口权限 */ IC_EVENT_LIST("ic_event_list","基层治理:事件管理:列表","基层治理-事件管理-列表"), - IC_EVENT_DETAIL("ic_event_detail","基层治理:事件管理:详情","基层治理-事件管理-详情"); + IC_EVENT_DETAIL("ic_event_detail","基层治理:事件管理:详情","基层治理-事件管理-详情"), + + WORK_LINGSHAN_AGENT_SERVICE("work_lingshan_agent_service", "代办服务", "代办服务"); private String key; private String name; 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 6d11f67930..7710c324a9 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 @@ -95,10 +95,10 @@ public class CustomerOrgRedis { } Result agencyInfoResult = customerOrgRedis.commonAggFeignClient.getAgencyInfo(agencyId); if (!agencyInfoResult.success()){ - throw new RenException("查询组织信息失败..."); + throw new RenException("查询行政组织信息失败,组织ID:" + agencyInfoResult); } if (null == agencyInfoResult.getData()){ - throw new RenException("没有此组织信息..."); + throw new RenException("没有此行政组织信息, 组织ID:" + agencyInfoResult); } Map map = BeanUtil.beanToMap(agencyInfoResult.getData(), false, true); customerOrgRedis.redisUtils.hMSet(key, map); diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/CustomerStaffInfoCache.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/CustomerStaffInfoCache.java index 012d38321a..a80ba6e727 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/CustomerStaffInfoCache.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/CustomerStaffInfoCache.java @@ -39,6 +39,11 @@ public class CustomerStaffInfoCache implements Serializable { */ private String agencyName; + /** + * 组织级别 + */ + private String level; + /** * 2级组织名称 根据添加的来源返回(xx组织-组织/网格/部门) */ diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YtHsResUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YtHsResUtils.java index 6e968d3af8..e33179fb84 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YtHsResUtils.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YtHsResUtils.java @@ -172,6 +172,67 @@ public class YtHsResUtils { return new YtDataSyncResDTO(); } + /** + * desc:死亡数据同步 + * + * @return + */ + public static YtDataSyncResDTO hunYin(String cardNo, String userName) { + try { + tryAcquire("hunYin"); +// 1)appkey秘钥 +// 2)name姓名 必填 +// 3)idcard身份证号 必填 +// 4)start开始默认0 +// 5)limit每页记录数 + Map param = new HashMap<>(); + param.put(APP_KEY, "FH8dEJXl0WaZ8r2ZgHlNdEnoz"); + param.put("cert_num_man", cardNo); + param.put("name_man", userName); + param.put("start", 0); + param.put("limit", 1); + + log.info("hunYin api param:{}", param); + + Result result = HttpClientManager.getInstance().sendGet(SERVER_URL + "gjmzb_hydjxxhygr_sdsjzx1", param); +// String mockData = "{\"code\":\"200\",\"msg\":\"请求成功\",\"data\":{\"code\":200,\"data\":{\"result\":{\"result\":\"IA:结婚\"},\"code\":\"0\",\"status\":\"success\"},\"message\":\"\"},\"total\":0}"; +// Result result = new Result().ok(mockData); + log.info("hunYin api result:{}", JSON.toJSONString(result)); + if (!result.success()) { + return new YtDataSyncResDTO(); + } + String data = result.getData(); + JSONObject jsonObject = JSON.parseObject(data); + //他们的结果是成功的 + if (jsonObject != null && StrConstant.HTTP_STATUS_OK.equals(jsonObject.getString(StrConstant.HTTP_RESP_CODE))) { + //第一层 + JSONObject firstData = JSON.parseObject(jsonObject.getString("data")); + + //第二层 data + if (firstData != null && StrConstant.HTTP_STATUS_OK.equals(firstData.getString(StrConstant.HTTP_RESP_CODE))) { + //第一层 + JSONObject secondData = JSON.parseObject(firstData.getString("data")); + if (secondData != null && secondData.getString("result") != null ) { + //第二层 data + JSONObject thirdData = JSON.parseObject(secondData.getString("result")); + Object fourthData = ""; + if (thirdData != null && thirdData.getString("result") != null){ + fourthData = thirdData.getString("result"); + } + return new YtDataSyncResDTO(200, "", fourthData.toString()); + } + } else { + log.warn("hunYin 调用蓝图接口成功但是蓝图的结果中 省平台失败"); + } + } else { + log.warn("hunYin 调用蓝图接口败"); + } + } catch (Exception e) { + log.error(String.format("烟台hunYin结果查询异常cardNo:%s", cardNo), e); + } + return new YtDataSyncResDTO(); + } + /** * desc:残疾数据同步 * diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/CustomerStaffDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/CustomerStaffDTO.java index 29c416a0a7..fb4752add1 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/CustomerStaffDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/CustomerStaffDTO.java @@ -134,8 +134,40 @@ public class CustomerStaffDTO implements Serializable { */ private String password; - private String idCard; + /** + * 烟台用:当前登录用户 + */ + private String currentUserId; + + /** + * 烟台需求:党组织职务 + */ + private String partyPosition; + + /** + * 烟台需求:村居委员职务 + */ + private String viliagePosition; + + /** + * 烟台需求:工作职责 + */ + private String duty; + + /** + * 烟台需求:备注 + */ + private String remark; + /** + * 文化程度 + */ private String culture; + /** + * 身份证 + */ + private String idCard; + + private Date birthday; } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/LingShanLianHuResiUserFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/LingShanLianHuResiUserFormDTO.java new file mode 100644 index 0000000000..4ce99a8f04 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/LingShanLianHuResiUserFormDTO.java @@ -0,0 +1,15 @@ +package com.epmet.dataaggre.dto.epmetuser.form; + +import com.epmet.commons.tools.dto.form.PageFormDTO; +import lombok.Data; + +/** + * @Description + * @Author yzm + * @Date 2023/5/19 9:23 + */ +@Data +public class LingShanLianHuResiUserFormDTO extends PageFormDTO { + private String partyCenterHouseId; +} + diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/IcResiUserResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/IcResiUserResultDTO.java new file mode 100644 index 0000000000..98f4d8889d --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/IcResiUserResultDTO.java @@ -0,0 +1,17 @@ +package com.epmet.dataaggre.dto.epmetuser.result; + +import lombok.Data; + +/** + * @Description + * @Author yzm + * @Date 2023/5/19 9:52 + */ +@Data +public class IcResiUserResultDTO { + private String icResiUserId; + private String name; + private String mobile; + private String homeId; +} + diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/LingShanLianHuResiUserResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/LingShanLianHuResiUserResultDTO.java new file mode 100644 index 0000000000..90a516b53d --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/LingShanLianHuResiUserResultDTO.java @@ -0,0 +1,36 @@ +package com.epmet.dataaggre.dto.epmetuser.result; + +import lombok.Data; + +/** + * @Description 灵山大屏-党员中共新户联户群众列表 + * @Author yzm + * @Date 2023/5/19 9:10 + */ +@Data +public class LingShanLianHuResiUserResultDTO extends IcResiUserResultDTO{ + /** + * 与入参一致 + * 党员中心户房屋id, + */ + private String partyCenterHouseId; + /** + * 房主姓名 + */ + private String partyCenterHouseOwnerName; + // 关联的房屋信息 + private String neighborHoodId; + private String neighborHoodName; + private String buildingId; + private String buildingName; + private String buildingUnitId; + private String unitName; + private String doorName; + private String houseId; + + // // 每个房屋里住的居民 + // private List resiList; + + +} + diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/StaffDetailV2FormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/StaffDetailV2FormDTO.java index 8a29563dd2..1b5de3d487 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/StaffDetailV2FormDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/StaffDetailV2FormDTO.java @@ -49,13 +49,45 @@ public class StaffDetailV2FormDTO implements Serializable { private List szsqRoles; private String customerId; - private String idCard; + /** + * 烟台用:当前登录用户 + */ + private String currentUserId; + + /** + * 烟台需求:党组织职务 + */ + private String partyPosition; + + /** + * 烟台需求:村居委员职务 + */ + private String viliagePosition; + + /** + * 烟台需求:工作职责 + */ + private String duty; + + /** + * 烟台需求:备注 + */ + private String remark; @JsonFormat(pattern = "yyyy-MM-dd") private Date birthday; /** * 文化程度 */ private String culture; + /** + * 身份证 + */ + private String idCard; + + /** + * 居住地址 + */ + private String address; /** * 文化程度,中文 */ 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 263a862971..5a1a3e3a7c 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 @@ -5,6 +5,7 @@ import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.annotation.MaskResponse; import com.epmet.commons.tools.annotation.RequirePermission; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.constant.NumConstant; @@ -24,6 +25,8 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dataaggre.beans.GridMemberDataAnalysisExcelExportBean; +import com.epmet.dataaggre.dto.epmetuser.form.LingShanLianHuResiUserFormDTO; +import com.epmet.dataaggre.dto.epmetuser.result.LingShanLianHuResiUserResultDTO; import com.epmet.dataaggre.dto.epmetuser.result.StaffSelectResDTO; import com.epmet.dataaggre.dto.govorg.CustomerAgencyDTO; import com.epmet.dataaggre.dto.govorg.CustomerGridDTO; @@ -567,4 +570,16 @@ public class GovOrgController { } } + + /** + * 灵山大屏:根据房屋id,查询联户里的居民信息列表 + * + * @param formDTO + * @return + */ + @MaskResponse(fieldNames = {"mobile"}, fieldsMaskType = {MaskResponse.MASK_TYPE_MOBILE}) + @PostMapping("lianHuResi") + public Result> lianHuResi(@RequestBody LingShanLianHuResiUserFormDTO formDTO) { + return new Result>().ok(govOrgService.lianHuResi(formDTO.getPageNo(), formDTO.getPageSize(), formDTO.getPartyCenterHouseId())); + } } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/IcHouseDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/IcHouseDao.java index 568e74e5cb..8350e4c753 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/IcHouseDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/IcHouseDao.java @@ -2,6 +2,7 @@ package com.epmet.dataaggre.dao.govorg; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dataaggre.dto.epmetuser.form.ResisByPolicyRulesFormDTO; +import com.epmet.dataaggre.dto.epmetuser.result.LingShanLianHuResiUserResultDTO; import com.epmet.dataaggre.entity.govorg.IcHouseEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -36,4 +37,11 @@ public interface IcHouseDao extends BaseDao { @Param("houseId") String houseId, @Param("houseRule") List houseRule, @Param("statRule") List statRule); + + /** + * 灵山项目:查询房屋关联的联户房屋 + * @param partyCenterHouseId + * @return + */ + List selectListLianHuHouse(@Param("partyCenterHouseId") String partyCenterHouseId); } 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 ec87a71781..c178cf0da8 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 @@ -11,7 +11,6 @@ import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO; import com.epmet.dataaggre.dto.govorg.form.OrgStaffListFormDTO; import com.epmet.dataaggre.dto.govorg.form.OrgStatisticsFormDTO; import com.epmet.dataaggre.dto.govorg.form.StaffDetailV2FormDTO; -import com.epmet.dataaggre.dto.govorg.result.CoverageAnalisisDataListResultDTO; import com.epmet.dataaggre.dto.govorg.result.GridDateIdResultDTO; import com.epmet.dataaggre.dto.govorg.result.GridStaffResultDTO; import com.epmet.dataaggre.dto.govorg.result.MemberProjectInfoResultDTO; @@ -269,4 +268,11 @@ public interface EpmetUserService { Integer pageNo, Integer pageSize); Integer staffQtyInGridsOfRole(String roleKeyAgent, Set staffIds); + + /** + * 根据房屋id,查询居民信息 + * @param houseIds + * @return + */ + PageData listIcResiUserByHouseId(Integer pageNo,Integer pageSize,List houseIds); } 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 9e04d840db..561b05302f 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 @@ -730,6 +730,14 @@ public class EpmetUserServiceImpl implements EpmetUserService, ResultDataResolve formDTO.setPageNo(pageIndex); //1.分页查询排好序的工作人员Id列表【原本1/2步可以用一个sql,但涉及2需要按1的顺序排序,sql复杂且效率低,所以拆开】 LinkedList staffIds = customerStaffDao.selectOrderRole(formDTO); + if (staffIds!=null && formDTO.getStaffIds()!=null){ + formDTO.getStaffIds().forEach( + staffId->{ + if (!staffIds.contains(staffId)){ + staffIds.add(staffId); + } + }); + } //2.批量查询工作人员信息,按传入顺序排序 if(CollectionUtils.isEmpty(staffIds)){ return new ArrayList<>(); @@ -1187,4 +1195,34 @@ public class EpmetUserServiceImpl implements EpmetUserService, ResultDataResolve return customerStaffDao.countStaffQtyByStaffIdsAndRole(staffIds, role.getId()); } + + /** + * 根据房屋id,查询居民信息 + * + * @param pageNo + * @param pageSize + * @param houseIds + * @return + */ + @Override + public PageData listIcResiUserByHouseId(Integer pageNo,Integer pageSize,List houseIds) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(IcResiUserEntity::getHomeId, houseIds) + .eq(IcResiUserEntity::getStatus,NumConstant.ZERO_STR); + PageHelper.startPage(pageNo, pageSize); + List list = icResiUserDao.selectList(queryWrapper); + PageInfo pageInfo = new PageInfo<>(list); + + List resultList = new ArrayList<>(); + for (IcResiUserEntity entity : list) { + IcResiUserResultDTO resultDTO = new IcResiUserResultDTO(); + resultDTO.setIcResiUserId(entity.getId()); + resultDTO.setName(entity.getName()); + resultDTO.setMobile(entity.getMobile()); + resultDTO.setHomeId(entity.getHomeId()); + resultList.add(resultDTO); + } + pageInfo.setList(resultList); + return new PageData<>(resultList, pageInfo.getTotal(),pageSize); + } } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java index d8ffe1e59b..c9fbed85c9 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java @@ -5,6 +5,7 @@ import com.epmet.commons.tools.redis.common.bean.BuildingInfoCache; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.dataaggre.beans.LingShanAgentServiceStaffAndGrid; import com.epmet.dataaggre.dto.epmetuser.form.ResisByPolicyRulesFormDTO; +import com.epmet.dataaggre.dto.epmetuser.result.LingShanLianHuResiUserResultDTO; import com.epmet.dataaggre.dto.epmetuser.result.StaffSelectResDTO; import com.epmet.dataaggre.dto.evaluationindex.ScreenAgencyOrGridListDTO; import com.epmet.dataaggre.dto.govorg.CustomerAgencyDTO; @@ -309,4 +310,13 @@ public interface GovOrgService { Set getStaffIdsInGrid(String gridId); List listBelongGridsByStaffId(String staffId); + + /** + * 灵山大屏:根据房屋id,查询联户里的居民信息列表 + * @param pageNo + * @param pageSize + * @param partyCenterHouseId + * @return + */ + PageData lianHuResi(Integer pageNo, Integer pageSize, String partyCenterHouseId); } 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 68a8b8dac3..d71e6e04ce 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 @@ -37,10 +37,7 @@ import com.epmet.dataaggre.constant.DataSourceConstant; import com.epmet.dataaggre.constant.OrgConstant; import com.epmet.dataaggre.dao.govorg.*; import com.epmet.dataaggre.dto.epmetuser.form.ResisByPolicyRulesFormDTO; -import com.epmet.dataaggre.dto.epmetuser.result.CustomerStaffResultDTO; -import com.epmet.dataaggre.dto.epmetuser.result.ListStaffResultDTO; -import com.epmet.dataaggre.dto.epmetuser.result.StaffRoleListResultDTO; -import com.epmet.dataaggre.dto.epmetuser.result.StaffSelectResDTO; +import com.epmet.dataaggre.dto.epmetuser.result.*; import com.epmet.dataaggre.dto.evaluationindex.ScreenAgencyOrGridListDTO; import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerAgencyDTO; import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerGridDTO; @@ -51,6 +48,7 @@ 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.entity.govorg.CustomerStaffGridEntity; +import com.epmet.dataaggre.entity.govorg.IcHouseEntity; import com.epmet.dataaggre.excel.GridLivelyDetailExcel; import com.epmet.dataaggre.excel.GridLivelyExcel; import com.epmet.dataaggre.service.commonservice.AreaCodeService; @@ -1572,4 +1570,48 @@ public class GovOrgServiceImpl implements GovOrgService { q2.in(CustomerGridEntity::getId, staffAndGrids.stream().map(CustomerStaffGridEntity::getGridId).collect(Collectors.toList())); return customerGridDao.selectList(q2); } + + + /** + * 灵山大屏:根据房屋id,查询联户里的居民信息列表 + * + * @param pageNo + * @param pageSize + * @param partyCenterHouseId + * @return + */ + public PageData lianHuResi(Integer pageNo, Integer pageSize, String partyCenterHouseId) { + IcHouseEntity partyHouseInfo=houseDao.selectById(partyCenterHouseId); + List houseList = houseDao.selectListLianHuHouse(partyCenterHouseId); + if (CollectionUtils.isEmpty(houseList)) { + return new PageData<>(); + } + List houseIds = houseList.stream().map(o -> o.getHouseId()).collect(Collectors.toList()); + // 先查询关联的房屋id + PageData resiPage = epmetUserService.listIcResiUserByHouseId(pageNo, pageSize, houseIds); + if (CollectionUtils.isEmpty(resiPage.getList())) { + return new PageData<>(); + } + Map lianHouseMap=houseList.stream().collect(Collectors.toMap(LingShanLianHuResiUserResultDTO :: getHouseId, v -> v, (v1, v2) -> v1)); + List resList=new ArrayList(); + resiPage.getList().forEach(dto->{ + LingShanLianHuResiUserResultDTO resultDTO=ConvertUtils.sourceToTarget(dto,LingShanLianHuResiUserResultDTO.class); + + LingShanLianHuResiUserResultDTO houseInfo = lianHouseMap.get(dto.getHomeId()); + resultDTO.setPartyCenterHouseId(houseInfo.getPartyCenterHouseId()); + resultDTO.setNeighborHoodId(houseInfo.getNeighborHoodId()); + resultDTO.setNeighborHoodName(houseInfo.getNeighborHoodName()); + resultDTO.setBuildingId(houseInfo.getBuildingId()); + resultDTO.setBuildingName(houseInfo.getBuildingName()); + resultDTO.setBuildingUnitId(houseInfo.getBuildingUnitId()); + resultDTO.setUnitName(houseInfo.getUnitName()); + resultDTO.setDoorName(houseInfo.getDoorName()); + resultDTO.setHouseId(houseInfo.getHouseId()); + resultDTO.setPartyCenterHouseId(partyHouseInfo.getOwnerName()); + resList.add(resultDTO); + }); + return new PageData<>(resList, resiPage.getTotal(),pageSize); + } + + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/IcHouseDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/IcHouseDao.xml index c679f9a5ce..fea9a017be 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/IcHouseDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/IcHouseDao.xml @@ -38,4 +38,29 @@ + + diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java index 204845c1fb..f35891c2a5 100644 --- a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/constants/ImportTaskConstants.java @@ -83,4 +83,19 @@ public interface ImportTaskConstants { * 未做核酸比对 */ String IC_NAT_COMPARE_RECORD="ic_nat_compare_record"; + + /** + * 物业表:ic_property_management + */ + String IC_PROPERTY_MANAGEMENT="ic_property_management"; + + /** + * 楼长单元长 + */ + String COMMUNITY_BUILDING_MANAGER="community_building_manager"; + + /** + * 客户 + */ + String BIZ_TYPE_CUSTOMER_STAFF="customer_staff"; } 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 1217ea6875..e84928739d 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 @@ -110,17 +110,30 @@ public class IcPartyActivityDTO implements Serializable { private String content; /** - * 服务人数 + * 服务人数;烟台:服务人数是活动限制名额,如果是0代表不限制 */ private Integer peopleCount; /** - * 活动时间 + * 活动时间;烟台:此列作为活动开始时间 */ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern="yyyy-MM-dd HH:mm") + @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date activityTime; + /** + * 烟台:此列作为活动结束时间;必填; + */ + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date activityEndTime; + + /** + * 烟台:活动封面;必填 + */ + private String coverUrl; + + /** * 活动地址 */ diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/PartyActivityFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/PartyActivityFormDTO.java index 76f6d485db..76fef2c33b 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/PartyActivityFormDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/PartyActivityFormDTO.java @@ -18,8 +18,16 @@ import java.util.Date; @Data public class PartyActivityFormDTO extends PageFormDTO implements Serializable { private static final long serialVersionUID = -2510068555703677L; - @NotBlank(message = "组织Id不能为空" ) + + public interface ResiDingQueryInternalGroup { + } + + + @NotBlank(message = "组织Id不能为空",groups = {ResiDingQueryInternalGroup.class}) private String agencyId; + + @NotBlank(message = "gridId不能为空",groups = {ResiDingQueryInternalGroup.class}) + private String gridId; private String unitId; private String title; @@ -31,4 +39,10 @@ public class PartyActivityFormDTO extends PageFormDTO implements Serializable { // private Integer pageNo; // private Integer pageSize; private String customerId; + + /** + * 居民端钉钉,传userId + */ + @NotBlank(message = "userId不能为空",groups = {ResiDingQueryInternalGroup.class}) + private String userId; } diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/PartyActivitySignUpRecordFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/PartyActivitySignUpRecordFormDTO.java new file mode 100644 index 0000000000..bb4dcc834f --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/PartyActivitySignUpRecordFormDTO.java @@ -0,0 +1,22 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.dto.form.PageFormDTO; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description 人员名单 + * @Author yzm + * @Date 2023/3/29 13:42 + */ +@Data +public class PartyActivitySignUpRecordFormDTO extends PageFormDTO implements Serializable { + /** + * 联建活动ID + */ + @NotBlank(message = "activityId不能为空", groups = AddUserInternalGroup.class) + private String activityId; +} + diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/SignUpParyActFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/SignUpParyActFormDTO.java new file mode 100644 index 0000000000..88a97b5cbb --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/SignUpParyActFormDTO.java @@ -0,0 +1,25 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.validator.group.QueryGroup; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Description + * @Author yzm + * @Date 2023/3/29 15:27 + */ +@Data +public class SignUpParyActFormDTO { + /** + * + */ + @NotBlank(message = "userId不能为空", groups = QueryGroup.class) + private String userId; + @NotBlank(message = "activityId不能为空", groups = QueryGroup.class) + private String activityId; + @NotBlank(message = "gridId不能为空", groups = QueryGroup.class) + private String gridId; +} + diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/PartyActivityResDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/PartyActivityResDTO.java new file mode 100644 index 0000000000..bb10867388 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/PartyActivityResDTO.java @@ -0,0 +1,46 @@ +package com.epmet.dto.result; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @Description 居民端钉钉,查看联建活动详情 + * @Author yzm + * @Date 2023/3/29 15:59 + */ +@Data +public class PartyActivityResDTO { + private String activityId; + private String agencyName; + private String agencyId; + private List unitNameList; + private List serviceMatterNameList; + private String title; + private String target; + private String content; + private Integer peopleCount; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date activityTime; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date activityEndTime; + private String coverUrl; + private String address; + private String result; + /** + * 报名记录id + */ + private String signUpId; + /** + * 已报名总人数 + */ + private Integer signUpCount; + /** + * 是否报名:true:已报名;false:未报名 + */ + private Boolean signUpFlag; + +} + diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/PartyActivitySignUpRecordResDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/PartyActivitySignUpRecordResDTO.java new file mode 100644 index 0000000000..6151e149dc --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/PartyActivitySignUpRecordResDTO.java @@ -0,0 +1,61 @@ +package com.epmet.dto.result; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +/** + * 联建活动报名记录表(烟台需求) + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-03-29 + */ +@Data +public class PartyActivitySignUpRecordResDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private String id; + + /** + * 客户id + */ + private String customerId; + + /** + * 联建活动ID + */ + private String activityId; + + /** + * 居民端用户id + */ + private String userId; + + /** + * 姓名 + */ + private String userName; + private String mobile; + /** + * 报名时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date signUpTime; + + /** + * 用户报名时所在的网格 + */ + private String gridId; + /** + * 网格名称:XXX社区-xxx网格 + */ + private String gridName; + +} \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyActivityController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyActivityController.java index e26bfa68cc..0ed2488b12 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyActivityController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcPartyActivityController.java @@ -24,6 +24,7 @@ import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.dto.form.PageFormDTO; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.ExceptionUtils; @@ -35,11 +36,16 @@ import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; 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.QueryGroup; import com.epmet.constants.ImportTaskConstants; import com.epmet.dto.IcPartyActivityDTO; import com.epmet.dto.form.ImportTaskCommonFormDTO; import com.epmet.dto.form.PartyActivityFormDTO; +import com.epmet.dto.form.PartyActivitySignUpRecordFormDTO; +import com.epmet.dto.form.SignUpParyActFormDTO; import com.epmet.dto.result.ImportTaskCommonResultDTO; +import com.epmet.dto.result.PartyActivityResDTO; +import com.epmet.dto.result.PartyActivitySignUpRecordResDTO; import com.epmet.dto.result.demand.OptionDTO; import com.epmet.excel.IcPartyActivityExcel; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; @@ -47,6 +53,7 @@ import com.epmet.service.IcPartyActivityService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; import org.springframework.web.bind.annotation.*; @@ -60,9 +67,7 @@ import java.io.IOException; import java.io.InputStream; import java.net.URLEncoder; import java.nio.file.Path; -import java.util.Date; -import java.util.List; -import java.util.UUID; +import java.util.*; /** @@ -253,5 +258,79 @@ public class IcPartyActivityController implements ResultDataResolver { } } + /** + * 人员名单 + * + * @param formDTO + * @return + */ + @PostMapping("querySignUpRecord") + public Result> querySignUpRecord(@RequestBody PartyActivitySignUpRecordFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, PageFormDTO.AddUserShowGroup.class,PageFormDTO.AddUserInternalGroup.class); + return new Result>().ok(icPartyActivityService.querySignUpRecord(formDTO.getActivityId(),formDTO.getPageNo(),formDTO.getPageSize())); + } + + /** + * 居民端钉钉,报名联建活动 + * + * @param formDTO + * @return + */ + @PostMapping("signUp") + public Result signUp(@RequestBody SignUpParyActFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, QueryGroup.class); + String signUpId = icPartyActivityService.signUp(formDTO.getActivityId(), formDTO.getUserId(), formDTO.getGridId()); + Map resultMap = new HashMap<>(); + resultMap.put("signUpId", signUpId); + return new Result().ok(resultMap); + } + + /** + * 居民端钉钉,查看联建活动详情 + * + * @param tokenDto + * @param activityId + * @return + */ + @PostMapping("act-detail-resi/{activityId}") + public Result queryActDetailForResi(@LoginUser TokenDto tokenDto, @PathVariable("activityId") String activityId) { + if (StringUtils.isBlank(activityId)) { + return new Result(); + } + return new Result().ok(icPartyActivityService.queryActDetailForResi(tokenDto.getCustomerId(),tokenDto.getUserId(),activityId)); + } + + /** + * 居民端钉钉,分页查询联建活动 + * + * @param formDTO + * @return + */ + @PostMapping("page-all-act") + public Result> pageAllAct(@RequestBody PartyActivityFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, PartyActivityFormDTO.ResiDingQueryInternalGroup.class); + return new Result>().ok( + icPartyActivityService.pageAllAct(formDTO.getPageNo(), + formDTO.getPageSize(), + formDTO.getGridId(), + formDTO.getAgencyId(), + formDTO.getUserId())); + } + + /** + * 居民端钉钉,已报名列表 + * @param formDTO + * @return + */ + @PostMapping("applied-act") + public Result> appliedAct(@RequestBody PartyActivityFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO, PartyActivityFormDTO.ResiDingQueryInternalGroup.class); + return new Result>().ok( + icPartyActivityService.appliedAct(formDTO.getPageNo(), + formDTO.getPageSize(), + formDTO.getGridId(), + formDTO.getAgencyId(), + formDTO.getUserId())); + } } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcActivityUnitRelationDao.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcActivityUnitRelationDao.java index be27ce119b..9fb70cfb2b 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcActivityUnitRelationDao.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcActivityUnitRelationDao.java @@ -5,6 +5,8 @@ import com.epmet.entity.IcActivityUnitRelationEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * 联建活动与单位关联表 * @@ -22,4 +24,11 @@ public interface IcActivityUnitRelationDao extends BaseDao selectActivityUntiNames(String activityId); } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcPartyActivityDao.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcPartyActivityDao.java index c8fba2ffed..23e764e4ec 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcPartyActivityDao.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcPartyActivityDao.java @@ -20,8 +20,10 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dto.form.PartyActivityFormDTO; import com.epmet.dto.result.ActivityStatisticsDTO; +import com.epmet.dto.result.PartyActivityResDTO; import com.epmet.entity.IcPartyActivityEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -54,4 +56,29 @@ public interface IcPartyActivityDao extends BaseDao { List getActivityList(PartyActivityFormDTO formDTO); + + /** + * + * @param gridId 当前用户所在网格id + * @param agencyId 当前用户所在网格所属组织id + * @param userId 居民端用户id,校验当前用户是否报名 + * @return 居民端钉钉-分页查询全部联建活动 + */ + List pageAllAct(@Param("customerId")String customerId, + @Param("gridId") String gridId, + @Param("agencyId")String agencyId, + @Param("userId")String userId); + + /** + * 居民端钉钉,已报名列表 + * @param customerId + * @param gridId + * @param agencyId + * @param userId + * @return + */ + List selectAppliedAct(@Param("customerId")String customerId, + @Param("gridId") String gridId, + @Param("agencyId")String agencyId, + @Param("userId")String userId); } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcPartyActivitySignUpRecordDao.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcPartyActivitySignUpRecordDao.java new file mode 100644 index 0000000000..a28ec3565a --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcPartyActivitySignUpRecordDao.java @@ -0,0 +1,24 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.result.PartyActivitySignUpRecordResDTO; +import com.epmet.entity.IcPartyActivitySignUpRecordEntity; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 联建活动报名记录表(烟台需求) + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-03-29 + */ +@Mapper +public interface IcPartyActivitySignUpRecordDao extends BaseDao { + /** + * 人员名单 + * @param activityId + * @return + */ + List querySignUpRecord(String activityId); +} \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcServiceItemDictDao.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcServiceItemDictDao.java index c01c80b4d4..7a0ef4f766 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcServiceItemDictDao.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcServiceItemDictDao.java @@ -39,4 +39,13 @@ public interface IcServiceItemDictDao extends BaseDao { IcServiceItemDictEntity selectMax(String customerId); String selectName(@Param("customerId") String customerId, @Param("categoryCode") String categoryCode); + + /** + * 查询联建活动的服务事项名称 + * @param activityId + * @param customerId + * @return + */ + List selectActivityServiceItemName(@Param("activityId") String activityId, + @Param("customerId") String customerId); } \ No newline at end of file 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 28a588f6f4..630e95732d 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 @@ -83,14 +83,24 @@ public class IcPartyActivityEntity extends BaseEpmetEntity { private String content; /** - * 服务人数 + * 服务人数;烟台:服务人数是活动限制名额,如果是0代表不限制 */ private Integer peopleCount; /** - * 活动时间 + * 活动时间;烟台:此列作为活动开始时间 */ private Date activityTime; + /** + * 烟台:此列作为活动结束时间;必填; + */ + private Date activityEndTime; + + /** + * 烟台:活动封面;必填 + */ + private String coverUrl; + /** * 活动地址 diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcPartyActivitySignUpRecordEntity.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcPartyActivitySignUpRecordEntity.java new file mode 100644 index 0000000000..4917b0adf6 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/IcPartyActivitySignUpRecordEntity.java @@ -0,0 +1,54 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; + +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 联建活动报名记录表(烟台需求) + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-03-29 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("ic_party_activity_sign_up_record") +public class IcPartyActivitySignUpRecordEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户id + */ + private String customerId; + + /** + * 联建活动ID + */ + private String activityId; + + /** + * 居民端用户id + */ + private String userId; + + /** + * 姓名 + */ + private String userName; + private String mobile; + /** + * 报名时间 + */ + private Date signUpTime; + + /** + * 用户报名时所在的网格 + */ + private String gridId; + private String gridName; +} diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyActivityExcel.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyActivityExcel.java index 4b52917350..e7bdcaf3b8 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyActivityExcel.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyActivityExcel.java @@ -49,9 +49,20 @@ public class IcPartyActivityExcel { private Integer peopleCount; @ColumnWidth(20) - @ExcelProperty(value = "活动时间") + @ExcelProperty(value = "活动开始时间") @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date activityTime; + + + /** + * 烟台:此列作为活动结束时间;必填; + */ + @ColumnWidth(20) + @ExcelProperty(value = "活动结束时间") + @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date activityEndTime; + + /** * actId不为空小程序 * 为空管理平台 diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyActivityImportExcel.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyActivityImportExcel.java index 6998d20078..346993a2d0 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyActivityImportExcel.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/IcPartyActivityImportExcel.java @@ -51,11 +51,20 @@ public class IcPartyActivityImportExcel extends ExcelVerifyInfo { @ExcelProperty(value = "服务人数*") private Integer peopleCount; - @NotNull(message = "活动时间不能为空") - @ExcelProperty("活动时间*") + @NotNull(message = "活动开始时间不能为空") + @ExcelProperty("活动开始时间*") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date activityTime; + /** + * 烟台:此列作为活动结束时间;必填; + */ + @NotNull(message = "活动结束时间不能为空") + @ExcelProperty("活动结束时间*") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date activityEndTime; + + @NotBlank(message = "详细地址") @Length(max = 250, message = "详细地址最多输入250字") @ExcelProperty(value = "详细地址*") diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcActivityUnitRelationService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcActivityUnitRelationService.java index 3d109db98b..fdc06e08bc 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcActivityUnitRelationService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcActivityUnitRelationService.java @@ -22,6 +22,13 @@ public interface IcActivityUnitRelationService extends BaseService getUnitList(String activityId); + /** + * 获取联建活动关联的联建单位名称 + * @param activityId + * @return + */ + List getActivityUntiNames(String activityId); + /** * 物理删除删除活动所属单位 * 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 22c559aace..41f597fb07 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 @@ -22,6 +22,8 @@ import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.dto.IcPartyActivityDTO; import com.epmet.dto.form.PartyActivityFormDTO; +import com.epmet.dto.result.PartyActivityResDTO; +import com.epmet.dto.result.PartyActivitySignUpRecordResDTO; import com.epmet.dto.result.demand.OptionDTO; import com.epmet.entity.IcPartyActivityEntity; @@ -127,4 +129,54 @@ public interface IcPartyActivityService extends BaseService querySignUpRecord(String activityId,Integer pageNo,Integer pageSize); + + /** + * 居民端钉钉,报名联建活动 + * @param activityId + * @param userId + * @param gridId + */ + String signUp(String activityId, String userId, String gridId); + + /** + * 居民端钉钉,查看联建活动详情 + * @param customerId + * @param userId + * @param activityId + * @return + */ + PartyActivityResDTO queryActDetailForResi(String customerId, String userId, String activityId); + + /** + * 居民端钉钉-分页查询全部联建活动 + * + * @param pageNo + * @param pageSize + * @param gridId + * @param userId + * @return + */ + PageData pageAllAct(Integer pageNo, Integer pageSize, String gridId, String agencyId,String userId); + + /** + * 居民端钉钉,已报名列表 + * @param pageNo + * @param pageSize + * @param gridId + * @param agencyId + * @param userId + * @return + */ + PageData appliedAct(Integer pageNo, + Integer pageSize, + String gridId, + String agencyId, + String userId); } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcServiceItemDictService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcServiceItemDictService.java index 92a6dc4ef6..9178b98d03 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcServiceItemDictService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcServiceItemDictService.java @@ -83,4 +83,12 @@ public interface IcServiceItemDictService extends BaseService queryDictOption(String type, String customerId); + + /** + * 查询联建活动的,服务事项名称列表 + * @param activityId + * @param customerId + * @return + */ + List getByActivityId(String activityId, String customerId); } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcActivityUnitRelationServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcActivityUnitRelationServiceImpl.java index d7bedf1d0b..a52e4dd0bf 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcActivityUnitRelationServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcActivityUnitRelationServiceImpl.java @@ -43,6 +43,17 @@ public class IcActivityUnitRelationServiceImpl extends BaseServiceImpl getActivityUntiNames(String activityId) { + return baseDao.selectActivityUntiNames(activityId); + } + /** * 删除活动所属单位 * 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 180877f027..70996fe308 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyActivityServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcPartyActivityServiceImpl.java @@ -24,28 +24,33 @@ import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; 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.ExceptionUtils; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.redis.common.CustomerOrgRedis; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; +import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; import com.epmet.commons.tools.redis.common.bean.GridInfoCache; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.*; import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.IcPartyActivityDao; +import com.epmet.dao.IcPartyActivitySignUpRecordDao; import com.epmet.dto.IcPartyActivityDTO; import com.epmet.dto.IcPartyUnitDTO; import com.epmet.dto.form.ImportTaskCommonFormDTO; import com.epmet.dto.form.PartyActivityFormDTO; -import com.epmet.dto.result.ActivityStatisticsDTO; -import com.epmet.dto.result.UploadImgResultDTO; +import com.epmet.dto.result.*; import com.epmet.dto.result.demand.OptionDTO; import com.epmet.entity.IcActivityServiceRelationEntity; import com.epmet.entity.IcActivityUnitRelationEntity; import com.epmet.entity.IcPartyActivityEntity; +import com.epmet.entity.IcPartyActivitySignUpRecordEntity; import com.epmet.excel.IcPartyActivityImportExcel; import com.epmet.excel.handler.IcPartyActivityImportListener; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; +import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.OssFeignClient; import com.epmet.service.*; import com.github.pagehelper.PageHelper; @@ -57,6 +62,7 @@ import org.apache.commons.fileupload.FileItemFactory; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.lang3.StringUtils; import org.apache.http.entity.ContentType; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -83,8 +89,8 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl serviceMatterid = Arrays.asList(dto.getServiceMatter().split(StrConstant.COMMA)); List serviceMatterNameList=new ArrayList<>(); for(String id:serviceMatterid){ - String categoryName=icServiceItemDictService.getCategoryName(dto.getCustomerId(),id); + String categoryName=SpringContextUtils.getBean(IcServiceItemDictService.class).getCategoryName(dto.getCustomerId(),id); if(StringUtils.isNotBlank(categoryName)){ serviceMatterNameList.add(categoryName); } @@ -156,7 +166,7 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl(dtoList, pageInfo.getTotal()); + return new PageData<>(dtoList, pageInfo.getTotal(),formDTO.getPageSize()); } @Override @@ -201,7 +211,7 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl serviceItemList = icServiceItemDictService.queryDictList(entity.getCustomerId()); + List serviceItemList = SpringContextUtils.getBean(IcServiceItemDictService.class).queryDictList(entity.getCustomerId()); Map categoryMap = serviceItemList.stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); List services = icActivityServiceRelationService.getServiceList(id); List serviceNames = services.stream().map(categoryMap::get).collect(Collectors.toList()); @@ -335,7 +345,7 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl option = icPartyUnitService.options(unitDTO).stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); //获取服务事项字典 - List serviceItemList = icServiceItemDictService.queryDictList(tokenDto.getCustomerId()); + List serviceItemList = SpringContextUtils.getBean(IcServiceItemDictService.class).queryDictList(tokenDto.getCustomerId()); Map categoryMap = serviceItemList.stream().collect(Collectors.toMap(OptionDTO::getValue, OptionDTO::getLabel)); //数据组装 dtoList.forEach(dto -> { @@ -509,4 +519,164 @@ public class IcPartyActivityServiceImpl extends BaseServiceImpl querySignUpRecord(String activityId, Integer pageNo, Integer pageSize) { + PageHelper.startPage(pageNo, pageSize); + List list = partyActivitySignUpRecordDao.querySignUpRecord(activityId); + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal(), pageSize); + } + + /** + * 居民端钉钉,报名联建活动 + * + * @param activityId + * @param userId + * @param gridId + */ + @Override + public String signUp(String activityId, String userId, String gridId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(IcPartyActivitySignUpRecordEntity::getActivityId, activityId) + .eq(IcPartyActivitySignUpRecordEntity::getUserId, userId) + .select(IcPartyActivitySignUpRecordEntity::getId); + IcPartyActivitySignUpRecordEntity entity = partyActivitySignUpRecordDao.selectOne(queryWrapper); + if (null != entity) { + return entity.getId(); + } + // 查询网格名称 + GridInfoCache gridInfoCache = CustomerOrgRedis.getGridInfo(gridId); + if (null == gridInfoCache) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "网格信息查询异常gridId:" + gridId, "网格信息查询异常"); + } + // 查询用户姓名和手机号 + List userIdList=new ArrayList<>(); + userIdList.add(userId); + Result> userRes = epmetUserOpenFeignClient.queryUserBaseInfo(userIdList); + if (!userRes.success() || CollectionUtils.isEmpty(userRes.getData())) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "网格信息查询异常gridId:" + gridId, "查询用户信息异常"); + } + UserBaseInfoResultDTO userBaseInfoResultDTO=userRes.getData().get(NumConstant.ZERO); + IcPartyActivitySignUpRecordEntity insert = new IcPartyActivitySignUpRecordEntity(); + insert.setActivityId(activityId); + insert.setCustomerId(EpmetRequestHolder.getLoginUserCustomerId()); + insert.setGridId(gridId); + insert.setGridName(gridInfoCache.getGridNamePath()); + insert.setUserId(userId); + insert.setUserName(userBaseInfoResultDTO.getRealName()); + insert.setMobile(userBaseInfoResultDTO.getMobile()); + insert.setSignUpTime(new Date()); + partyActivitySignUpRecordDao.insert(insert); + return insert.getId(); + } + + + /** + * 居民端钉钉,查看联建活动详情 + * + * @param customerId + * @param userId + * @param activityId + * @return + */ + @Override + public PartyActivityResDTO queryActDetailForResi(String customerId, String userId, String activityId) { + IcPartyActivityEntity activityEntity = baseDao.selectById(activityId); + if (null == activityEntity) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "联建活动不存在,activityId:" + activityId, "联建活动不存在"); + } + PartyActivityResDTO resDTO = ConvertUtils.sourceToTarget(activityEntity, PartyActivityResDTO.class); + resDTO.setSignUpFlag(false); + resDTO.setActivityId(activityId); + + // 当前用户是否报名 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(IcPartyActivitySignUpRecordEntity::getActivityId, activityId) + .eq(IcPartyActivitySignUpRecordEntity::getUserId, userId) + .select(IcPartyActivitySignUpRecordEntity::getId); + IcPartyActivitySignUpRecordEntity signUpRecordEntity = partyActivitySignUpRecordDao.selectOne(queryWrapper); + if (null != signUpRecordEntity) { + resDTO.setSignUpId(signUpRecordEntity.getId()); + resDTO.setSignUpFlag(true); + } + // 主办方:组织名称 + AgencyInfoCache agencyInfoCache = CustomerOrgRedis.getAgencyInfo(resDTO.getAgencyId()); + if (null != agencyInfoCache) { + resDTO.setAgencyName(agencyInfoCache.getOrganizationName()); + } + // 联建单位: + resDTO.setUnitNameList(icActivityUnitRelationService.getActivityUntiNames(activityId)); + // 服务事项 + resDTO.setServiceMatterNameList(SpringContextUtils.getBean(IcServiceItemDictService.class).getByActivityId(activityId,activityEntity.getCustomerId())); + // 报名总人数 + LambdaQueryWrapper countWrapper = new LambdaQueryWrapper<>(); + countWrapper.eq(IcPartyActivitySignUpRecordEntity::getActivityId, activityId); + resDTO.setSignUpCount(partyActivitySignUpRecordDao.selectCount(countWrapper)); + return resDTO; + } + + + /** + * 居民端钉钉-分页查询全部联建活动 + * + * @param pageNo + * @param pageSize + * @param gridId + * @param userId + * @return + */ + @Override + public PageData pageAllAct(Integer pageNo, Integer pageSize, String gridId,String agencyId, String userId) { + PageHelper.startPage(pageNo,pageSize); + List list=baseDao.pageAllAct(EpmetRequestHolder.getLoginUserCustomerId(),gridId,agencyId,userId); + list.forEach(resDTO->{ + // 主办方:组织名称 + AgencyInfoCache agencyInfoCache = CustomerOrgRedis.getAgencyInfo(resDTO.getAgencyId()); + if (null != agencyInfoCache) { + resDTO.setAgencyName(agencyInfoCache.getOrganizationName()); + } + // 联建单位: + resDTO.setUnitNameList(icActivityUnitRelationService.getActivityUntiNames(resDTO.getActivityId())); + // 服务事项 + resDTO.setServiceMatterNameList(SpringContextUtils.getBean(IcServiceItemDictService.class).getByActivityId(resDTO.getActivityId(),EpmetRequestHolder.getLoginUserCustomerId())); + }); + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal(),pageSize); + } + + /** + * 居民端钉钉,已报名列表 + * + * @param pageNo + * @param pageSize + * @param gridId + * @param agencyId + * @param userId + * @return + */ + @Override + public PageData appliedAct(Integer pageNo, Integer pageSize, String gridId, String agencyId, String userId) { + PageHelper.startPage(pageNo, pageSize); + List list = baseDao.selectAppliedAct(EpmetRequestHolder.getLoginUserCustomerId(), gridId, agencyId, userId); + list.forEach(resDTO -> { + // 主办方:组织名称 + AgencyInfoCache agencyInfoCache = CustomerOrgRedis.getAgencyInfo(resDTO.getAgencyId()); + if (null != agencyInfoCache) { + resDTO.setAgencyName(agencyInfoCache.getOrganizationName()); + } + // 联建单位: + resDTO.setUnitNameList(icActivityUnitRelationService.getActivityUntiNames(resDTO.getActivityId())); + // 服务事项 + resDTO.setServiceMatterNameList(SpringContextUtils.getBean(IcServiceItemDictService.class).getByActivityId(resDTO.getActivityId(), EpmetRequestHolder.getLoginUserCustomerId())); + }); + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal(), pageSize); + } } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcServiceItemDictServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcServiceItemDictServiceImpl.java index 1e7b7f0271..a8516d398a 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcServiceItemDictServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcServiceItemDictServiceImpl.java @@ -226,5 +226,15 @@ public class IcServiceItemDictServiceImpl extends BaseServiceImpl getByActivityId(String activityId, String customerId) { + return baseDao.selectActivityServiceItemName(activityId,customerId); + } } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcActivityUnitRelationDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcActivityUnitRelationDao.xml index f8947c98e4..e25faa3e66 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcActivityUnitRelationDao.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcActivityUnitRelationDao.xml @@ -22,5 +22,14 @@ DELETE FROM ic_activity_unit_relation WHERE ACTIVITY_ID = #{activityId} + + \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcPartyActivityDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcPartyActivityDao.xml index 3a59b3c1d0..0d96fac179 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcPartyActivityDao.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcPartyActivityDao.xml @@ -63,7 +63,9 @@ a.LATITUDE, a.RESULT, a.AGENCY_ID, - a.CUSTOMER_ID + a.CUSTOMER_ID, + a.COVER_URL, + a.ACTIVITY_END_TIME FROM ic_party_activity a left join ic_activity_unit_relation ur @@ -89,8 +91,11 @@ AND sr.SERVICE_MATTER = #{serviceMatter} - - AND a.ACTIVITY_TIME BETWEEN #{startTime} AND #{endTime} + + AND a.ACTIVITY_TIME >= #{startTime} + + + AND a.ACTIVITY_TIME <= #{endTime} GROUP BY a.id ORDER BY a.ACTIVITY_TIME DESC @@ -159,4 +164,83 @@ + + + + + + + \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcPartyActivitySignUpRecordDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcPartyActivitySignUpRecordDao.xml new file mode 100644 index 0000000000..c28b63da6c --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcPartyActivitySignUpRecordDao.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcServiceItemDictDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcServiceItemDictDao.xml index 4582741dbb..8359370be2 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcServiceItemDictDao.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcServiceItemDictDao.xml @@ -41,4 +41,19 @@ d.CUSTOMER_ID = #{customerId} AND d.CATEGORY_CODE = #{categoryCode} + + + \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/templates/icpartyactivity_import_tem.xlsx b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/templates/icpartyactivity_import_tem.xlsx index 143cdaa637..a17cefb941 100644 Binary files a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/templates/icpartyactivity_import_tem.xlsx and b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/templates/icpartyactivity_import_tem.xlsx differ diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ResiDeadTask.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ResiDeadTask.java new file mode 100644 index 0000000000..04a8ca81da --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ResiDeadTask.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.form.DataSyncTaskParam; +import com.epmet.feign.EpmetUserOpenFeignClient; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @Description:死亡 + * @Return + * @Author: lichao + * @Date: 2023/5/19 13:47 + */ +@Slf4j +@Component("resiDeadTask") +public class ResiDeadTask implements ITask { + + @Autowired + private EpmetUserOpenFeignClient userOpenFeignClient; + + @Override + public void run(String params) { + DataSyncTaskParam formDTO = new DataSyncTaskParam(); + if (StringUtils.isNotBlank(params)) { + formDTO = JSON.parseObject(params, DataSyncTaskParam.class); + } + formDTO.setCustomerId(""); + + // 死亡 + Result maritalInfoScanTask = userOpenFeignClient.deathInfoScanTask(formDTO); + if (maritalInfoScanTask.success()) { + log.info("resiDeadTask定时任务执行成功"); + } else { + log.error("resiDeadTask定时任务执行失败:" + maritalInfoScanTask.getMsg()); + } + + } +} diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ResiMaritalTask.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ResiMaritalTask.java new file mode 100644 index 0000000000..e642cd7599 --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/ResiMaritalTask.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.form.DataSyncTaskParam; +import com.epmet.feign.EpmetUserOpenFeignClient; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @Description:婚姻状况 + * @Return + * @Author: lichao + * @Date: 2023/5/19 13:47 + */ +@Slf4j +@Component("resiMaritalTask") +public class ResiMaritalTask implements ITask { + + @Autowired + private EpmetUserOpenFeignClient userOpenFeignClient; + + @Override + public void run(String params) { + DataSyncTaskParam formDTO = new DataSyncTaskParam(); + if (StringUtils.isNotBlank(params)) { + formDTO = JSON.parseObject(params, DataSyncTaskParam.class); + } + formDTO.setCustomerId(""); + + // 婚姻 + Result maritalInfoScanTask = userOpenFeignClient.maritalInfoScanTask(formDTO); + if (maritalInfoScanTask.success()) { + log.info("resiMaritalTask定时任务执行成功"); + } else { + log.error("resiMaritalTask定时任务执行失败:" + maritalInfoScanTask.getMsg()); + } + + } +} diff --git a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/OrganizationMessageFormDTO.java b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/OrganizationMessageFormDTO.java new file mode 100644 index 0000000000..cc42aa46ba --- /dev/null +++ b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/OrganizationMessageFormDTO.java @@ -0,0 +1,52 @@ +package com.epmet.dto; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import java.io.Serializable; +import java.util.List; + + +/** + * 组织发布消息(烟台) + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-05-04 + */ +@Data +public class OrganizationMessageFormDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + public interface AddShowGroup extends CustomerClientShowGroup { + } + /** + * 发布渠道:0:专属app + */ + @NotBlank(message = "发布渠道不能为空", groups = {AddShowGroup.class}) + private String publishDitch; + + /** + * 消息内容;最多输入500 + */ + @NotBlank(message = "内容不能为空", groups = {AddShowGroup.class}) + @Length(max = 500, message = "内容输入500字", groups = {AddShowGroup.class}) + private String content; + + @Valid + @NotEmpty(message = "发布范围不能为空", groups = {AddShowGroup.class}) + private List rangeList; + + /** + * 客户Id + */ + private String customerId; + /** + * 发布人staffId + */ + private String publishStaffId; +} \ No newline at end of file diff --git a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/OrganizationMessagePublishRangeDTO.java b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/OrganizationMessagePublishRangeDTO.java new file mode 100644 index 0000000000..2b51910c48 --- /dev/null +++ b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/OrganizationMessagePublishRangeDTO.java @@ -0,0 +1,63 @@ +package com.epmet.dto; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + + +/** + * 消息发布范围(烟台) + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-05-04 + */ +@Data +public class OrganizationMessagePublishRangeDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private String id; + + /** + * 客户Id + */ + private String customerId; + + /** + * 消息id:organization_message.id + */ + private String messageId; + + /** + * 组织或者网格id + */ + @NotBlank(message = "orgId不能为空",groups = {OrganizationMessageFormDTO.AddShowGroup.class}) + private String orgId; + + /** + * 组织:agency;网格:grid + */ + @NotBlank(message = "orgType不能为空",groups = {OrganizationMessageFormDTO.AddShowGroup.class}) + private String orgType; + + /** + * org_id的父级 + */ + private String pid; + + /** + * org_id的全路径,包含org_id + */ + private String orgIdPath; + + /** + * 组织名称或者网格名称;如果是网格名称,存储的是XXX社区-XX网格 + */ + private String orgName; + + +} \ No newline at end of file diff --git a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/OrganizationMessagePageFormDTO.java b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/OrganizationMessagePageFormDTO.java new file mode 100644 index 0000000000..1e5b23d884 --- /dev/null +++ b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/OrganizationMessagePageFormDTO.java @@ -0,0 +1,30 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.dto.form.PageFormDTO; +import lombok.Data; + +/** + * @Description 烟台消息管理,列表查询入参 + * @Author yzm + * @Date 2023/5/4 16:05 + */ +@Data +public class OrganizationMessagePageFormDTO extends PageFormDTO { + /** + * 发布渠道:0:专属app + */ + private String publishDitch; + /** + * 发布范围,组织id或者网格id + */ + private String orgId; + /** + * yyyy-MM-dd + */ + private String startDate; + /** + * yyyy-MM-dd + */ + private String endDate; +} + diff --git a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/result/OrganizationMessageResultDTO.java b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/result/OrganizationMessageResultDTO.java new file mode 100644 index 0000000000..94b89ded76 --- /dev/null +++ b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/result/OrganizationMessageResultDTO.java @@ -0,0 +1,84 @@ +package com.epmet.dto.result; + +import com.epmet.dto.OrganizationMessagePublishRangeDTO; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @Description 烟台消息管理,列表查询 + * @Author yzm + * @Date 2023/5/4 16:06 + */ +@Data +public class OrganizationMessageResultDTO { + /** + * 消息id + */ + private String messageId; + + /** + * 发布渠道:0:专属app + */ + private String publishDitch; + + /** + * 消息内容;最多输入500 + */ + private String content; + /** + * 发布范围 + */ + private String publishRangeName; + + /** + * 发布时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date publishTime; + + /** + * 发布人staffId + */ + private String publishStaffId; + + /** + * 发布人姓名 + */ + private String publishStaffName; + + /** + * 发布人所属组织id + */ + private String publishOrgId; + + /** + * org_id_path + */ + private String publishOrgIdPath; + + /** + * 发布人所属组织名称 + */ + private String publishOrgName; + + /** + * 发送结果 + */ + private String sendMsgRes; + /** + * 共发送出多少条消息 + */ + private Integer totalReceiver; + + /** + * 发送完成时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date finishSendTime; + + private List rangeList; +} + diff --git a/epmet-module/epmet-message/epmet-message-server/pom.xml b/epmet-module/epmet-message/epmet-message-server/pom.xml index 816fa7abad..713f78b85f 100644 --- a/epmet-module/epmet-message/epmet-message-server/pom.xml +++ b/epmet-module/epmet-message/epmet-message-server/pom.xml @@ -101,11 +101,6 @@ flyway-core - - com.epmet - epmet-user-client - 2.0.0 - com.epmet epmet-third-client diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/OrganizationMessageController.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/OrganizationMessageController.java new file mode 100644 index 0000000000..fac7d6d6d2 --- /dev/null +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/OrganizationMessageController.java @@ -0,0 +1,76 @@ +package com.epmet.controller; + +import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dto.OrganizationMessageFormDTO; +import com.epmet.dto.form.OrganizationMessagePageFormDTO; +import com.epmet.dto.result.OrganizationMessageResultDTO; +import com.epmet.service.OrganizationMessageService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + + +/** + * 组织发布消息(烟台) + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-05-04 + */ +@RestController +@RequestMapping("organization/message") +public class OrganizationMessageController { + + @Autowired + private OrganizationMessageService organizationMessageService; + + /** + * 列表查询 + * + * @param formDTO + * @return + */ + @PostMapping("list") + public Result> pageList(@RequestBody OrganizationMessagePageFormDTO formDTO) { + return new Result>().ok(organizationMessageService.pageList(formDTO.getPageNo(), formDTO.getPageSize(), + formDTO.getPublishDitch(), + formDTO.getOrgId(), + formDTO.getStartDate(), + formDTO.getEndDate())); + } + + /** + * 查询消息详情 + * + * @param messageId + * @return + */ + @PostMapping("detail/{messageId}") + public Result getDetail(@PathVariable("messageId") String messageId) { + if (StringUtils.isBlank(messageId)) { + return new Result<>(); + } + return new Result().ok(organizationMessageService.getDetail(messageId)); + } + + /** + * 发布消息 + * + * @param formDTO + * @return 返回消息id + */ + @PostMapping("publish") + public Result publish(@LoginUser TokenDto tokenDto, @RequestBody OrganizationMessageFormDTO formDTO) { + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setPublishStaffId(tokenDto.getUserId()); + ValidatorUtils.validateEntity(formDTO, OrganizationMessageFormDTO.AddShowGroup.class); + String messageId=organizationMessageService.publish(formDTO); + // 发送消息 发布范围下有哪些网格,网格下所有的注册居民,每人发送一条消息 + organizationMessageService.sendUserMsg(messageId,formDTO.getContent(),formDTO.getPublishStaffId(),formDTO.getRangeList(),formDTO.getCustomerId()); + return new Result().ok(messageId); + } + +} diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/OrganizationMessageDao.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/OrganizationMessageDao.java new file mode 100644 index 0000000000..f13e230f0c --- /dev/null +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/OrganizationMessageDao.java @@ -0,0 +1,36 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.result.OrganizationMessageResultDTO; +import com.epmet.entity.OrganizationMessageEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 组织发布消息(烟台) + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-05-04 + */ +@Mapper +public interface OrganizationMessageDao extends BaseDao { + + /** + * + * @param staffOrgIdPath 工作人员所属组织的orgIdPath + * @param publishDitch 发布渠道;0:专属app + * @param orgId 发布范围,组织id或者网格id + * @param startDate yyyy-MM-dd + * @param endDate yyyy-MM-dd + * @return + */ + List pageList(@Param("customerId")String customerId, + @Param("staffOrgIdPath") String staffOrgIdPath, + @Param("publishDitch")String publishDitch, + @Param("orgId")String orgId, + @Param("startDate")String startDate, + @Param("endDate")String endDate, + @Param("messageId")String messageId); +} \ No newline at end of file diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/OrganizationMessagePublishRangeDao.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/OrganizationMessagePublishRangeDao.java new file mode 100644 index 0000000000..94a9a65100 --- /dev/null +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/OrganizationMessagePublishRangeDao.java @@ -0,0 +1,16 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.entity.OrganizationMessagePublishRangeEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 消息发布范围(烟台) + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-05-04 + */ +@Mapper +public interface OrganizationMessagePublishRangeDao extends BaseDao { + +} \ No newline at end of file diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/entity/OrganizationMessageEntity.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/entity/OrganizationMessageEntity.java new file mode 100644 index 0000000000..15c07c0851 --- /dev/null +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/entity/OrganizationMessageEntity.java @@ -0,0 +1,82 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; + +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 组织发布消息(烟台) + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-05-04 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("organization_message") +public class OrganizationMessageEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户Id + */ + private String customerId; + + /** + * 发布渠道:0:专属app + */ + private String publishDitch; + + /** + * 消息内容;最多输入500 + */ + private String content; + + /** + * 发布人staffId + */ + private String publishStaffId; + + /** + * 发布人姓名 + */ + private String publishStaffName; + + /** + * 发布人所属组织id + */ + private String publishOrgId; + + /** + * org_id_path + */ + private String publishOrgIdPath; + + /** + * 发布人所属组织名称 + */ + private String publishOrgName; + + /** + * 发布时间 + */ + private Date publishTime; + /** + * 发送结果 + * sending发送中;failed失败;success成功 + */ + private String sendMsgRes; + /** + * 共发送出多少条消息 + */ + private Integer totalReceiver; + + /** + * 发送完成时间 + */ + private Date finishSendTime; +} diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/entity/OrganizationMessagePublishRangeEntity.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/entity/OrganizationMessagePublishRangeEntity.java new file mode 100644 index 0000000000..5080cfe16f --- /dev/null +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/entity/OrganizationMessagePublishRangeEntity.java @@ -0,0 +1,56 @@ +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 2023-05-04 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("organization_message_publish_range") +public class OrganizationMessagePublishRangeEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户Id + */ + private String customerId; + + /** + * 消息id:organization_message.id + */ + private String messageId; + + /** + * 组织或者网格id + */ + private String orgId; + + /** + * 组织:agency;网格:grid + */ + private String orgType; + + /** + * org_id的父级 + */ + private String pid; + + /** + * org_id的全路径,包含org_id + */ + private String orgIdPath; + + /** + * 组织名称或者网格名称;如果是网格名称,存储的是XXX社区-XX网格 + */ + private String orgName; + +} diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/OrganizationMessageService.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/OrganizationMessageService.java new file mode 100644 index 0000000000..8932b557b4 --- /dev/null +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/OrganizationMessageService.java @@ -0,0 +1,47 @@ +package com.epmet.service; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.commons.tools.page.PageData; +import com.epmet.dto.OrganizationMessageFormDTO; +import com.epmet.dto.OrganizationMessagePublishRangeDTO; +import com.epmet.dto.result.OrganizationMessageResultDTO; +import com.epmet.entity.OrganizationMessageEntity; + +import java.util.List; + +/** + * 组织发布消息(烟台) + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-05-04 + */ +public interface OrganizationMessageService extends BaseService { + + /** + * 分页列表 + * @param pageNo + * @param pageSize + * @param publishDitch 发布渠道;0:专属app + * @param orgId 发布范围,组织id或者网格id + * @param startDate yyyy-MM-dd + * @param endDate yyyy-MM-dd + * @return + */ + PageData pageList(Integer pageNo, Integer pageSize, String publishDitch, String orgId, String startDate, String endDate); + + /** + * 查询详情 + * @param messageId + * @return + */ + OrganizationMessageResultDTO getDetail(String messageId); + + /** + * 发布消息 + * @param formDTO + * @return 返回消息id + */ + String publish(OrganizationMessageFormDTO formDTO); + + void sendUserMsg(String messageId, String content, String publishStaffId, List rangeList, String customerId); +} \ No newline at end of file diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/OrganizationMessageServiceImpl.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/OrganizationMessageServiceImpl.java new file mode 100644 index 0000000000..65580da84c --- /dev/null +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/OrganizationMessageServiceImpl.java @@ -0,0 +1,219 @@ +package com.epmet.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.AppClientConstant; +import com.epmet.commons.tools.constant.Constant; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.StrConstant; +import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; +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.page.PageData; +import com.epmet.commons.tools.redis.common.CustomerOrgRedis; +import com.epmet.commons.tools.redis.common.CustomerStaffRedis; +import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; +import com.epmet.commons.tools.redis.common.bean.GridInfoCache; +import com.epmet.commons.tools.utils.*; +import com.epmet.dao.OrganizationMessageDao; +import com.epmet.dao.OrganizationMessagePublishRangeDao; +import com.epmet.dao.UserMessageDao; +import com.epmet.dto.OrganizationMessageFormDTO; +import com.epmet.dto.OrganizationMessagePublishRangeDTO; +import com.epmet.dto.RegisterRelationDTO; +import com.epmet.dto.form.RegisterRelationPageFormDTO; +import com.epmet.dto.result.OrganizationMessageResultDTO; +import com.epmet.entity.OrganizationMessageEntity; +import com.epmet.entity.OrganizationMessagePublishRangeEntity; +import com.epmet.entity.UserMessageEntity; +import com.epmet.feign.EpmetUserOpenFeignClient; +import com.epmet.service.OrganizationMessageService; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +/** + * 组织发布消息(烟台) + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-05-04 + */ +@Slf4j +@Service +public class OrganizationMessageServiceImpl extends BaseServiceImpl implements OrganizationMessageService { + @Autowired + private OrganizationMessagePublishRangeDao organizationMessagePublishRangeDao; + @Autowired + private UserMessageDao userMessageDao; + @Autowired + private EpmetUserOpenFeignClient epmetUserOpenFeignClient; + + + /** + * 分页列表 + * + * @param pageNo + * @param pageSize + * @param publishDitch 发布渠道;0:专属app + * @param orgId 发布范围,组织id或者网格id + * @param startDate yyyy-MM-dd + * @param endDate yyyy-MM-dd + * @return + */ + @Override + public PageData pageList(Integer pageNo, Integer pageSize, String publishDitch, String orgId, String startDate, String endDate) { + CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(EpmetRequestHolder.getLoginUserCustomerId(), EpmetRequestHolder.getLoginUserId()); + if (null == staffInfoCacheResult) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "customerId:" + EpmetRequestHolder.getLoginUserCustomerId() + "staffId:" + EpmetRequestHolder.getLoginUserId(), "获取工作人员信息异常"); + } + String staffOrgIdPath = PidUtils.convertPid2OrgIdPath(staffInfoCacheResult.getAgencyId(), staffInfoCacheResult.getAgencyPIds()); + PageHelper.startPage(pageNo, pageSize); + List list = baseDao.pageList(EpmetRequestHolder.getLoginUserCustomerId(),staffOrgIdPath, publishDitch, orgId, startDate, endDate,null); + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal(),pageSize); + } + + /** + * 查询详情 + * + * @param messageId + * @return + */ + @Override + public OrganizationMessageResultDTO getDetail(String messageId) { + List list = baseDao.pageList(EpmetRequestHolder.getLoginUserCustomerId(),null, null, null, null, null,messageId); + if(CollectionUtils.isNotEmpty(list)){ + OrganizationMessageResultDTO resultDTO=list.get(NumConstant.ZERO); + LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper<>(); + queryWrapper.eq(OrganizationMessagePublishRangeEntity::getMessageId,messageId) + .orderByAsc(OrganizationMessagePublishRangeEntity::getCreatedTime); + List rangeList=organizationMessagePublishRangeDao.selectList(queryWrapper); + resultDTO.setRangeList(ConvertUtils.sourceToTarget(rangeList,OrganizationMessagePublishRangeDTO.class)); + return resultDTO; + } + return null; + } + + /** + * 发布消息 + * + * @param formDTO + * @return 返回消息id + */ + @Transactional(rollbackFor = Exception.class) + @Override + public String publish(OrganizationMessageFormDTO formDTO) { + OrganizationMessageEntity messageEntity = ConvertUtils.sourceToTarget(formDTO, OrganizationMessageEntity.class); + CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getPublishStaffId()); + messageEntity.setPublishStaffName(staffInfoCacheResult.getRealName()); + messageEntity.setPublishOrgId(staffInfoCacheResult.getAgencyId()); + messageEntity.setPublishOrgIdPath(PidUtils.convertPid2OrgIdPath(staffInfoCacheResult.getAgencyId(), staffInfoCacheResult.getAgencyPIds())); + messageEntity.setPublishOrgName(staffInfoCacheResult.getAgencyName()); + messageEntity.setPublishTime(new Date()); + messageEntity.setSendMsgRes("sending"); + baseDao.insert(messageEntity); + for (OrganizationMessagePublishRangeDTO dto : formDTO.getRangeList()) { + OrganizationMessagePublishRangeEntity rangeEntity = new OrganizationMessagePublishRangeEntity(); + rangeEntity.setCustomerId(messageEntity.getCustomerId()); + rangeEntity.setMessageId(messageEntity.getId()); + rangeEntity.setOrgId(dto.getOrgId()); + rangeEntity.setOrgType(dto.getOrgType()); + if (OrgTypeEnum.GRID.getCode().equals(dto.getOrgType())) { + GridInfoCache gridInfoCache = CustomerOrgRedis.getGridInfo(dto.getOrgId()); + rangeEntity.setPid(gridInfoCache.getPid()); + rangeEntity.setOrgIdPath(PidUtils.convertPid2OrgIdPath(dto.getOrgId(), gridInfoCache.getPids())); + rangeEntity.setOrgName(gridInfoCache.getGridNamePath()); + } else { + //if (OrgTypeEnum.AGENCY.getCode().equals(dto.getOrgType())) + AgencyInfoCache agencyInfoCache = CustomerOrgRedis.getAgencyInfo(dto.getOrgId()); + rangeEntity.setPid(agencyInfoCache.getPid()); + rangeEntity.setOrgIdPath(PidUtils.convertPid2OrgIdPath(dto.getOrgId(), agencyInfoCache.getPids())); + rangeEntity.setOrgName(agencyInfoCache.getOrganizationName()); + } + dto.setPid(rangeEntity.getPid()); + dto.setOrgIdPath(rangeEntity.getOrgIdPath()); + organizationMessagePublishRangeDao.insert(rangeEntity); + } + String messageId = messageEntity.getId(); + return messageId; + } + + + @Async + @Override + public void sendUserMsg(String messageId, String content, String publishStaffId,List rangeList, String customerId) { + String result = "success"; + int totalMsg = NumConstant.ZERO; + try { + for (OrganizationMessagePublishRangeDTO rangeDto : rangeList) { + RegisterRelationPageFormDTO pageFormDTO=new RegisterRelationPageFormDTO(); + pageFormDTO.setCustomerId(customerId); + pageFormDTO.setFirstRegister(NumConstant.ONE_STR); + pageFormDTO.setPageNo(NumConstant.ONE); + pageFormDTO.setPageSize(NumConstant.TWO); + // pageFormDTO.setPageSize(NumConstant.ONE_THOUSAND); + if (OrgTypeEnum.GRID.getCode().equals(rangeDto.getOrgType())) { + // 查询该网格下的注册居民 + pageFormDTO.setGridId(rangeDto.getOrgId()); + } else { + // 查询该组织下的注册居民 + pageFormDTO.setAgencyIdPath(rangeDto.getOrgIdPath()); + } + List list=null; + do { + Result> regRes = epmetUserOpenFeignClient.pageQueryRegisterUser(pageFormDTO); + list = regRes.getData().getList(); + for (RegisterRelationDTO regUser : list) { + LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper(); + queryWrapper.eq(UserMessageEntity::getCustomerId,customerId) + .eq(UserMessageEntity::getTargetId,messageId) + .eq(UserMessageEntity::getUserId,regUser.getUserId()); + UserMessageEntity origin=userMessageDao.selectOne(queryWrapper); + if(null==origin){ + UserMessageEntity userMessageEntity = new UserMessageEntity(); + userMessageEntity.setCustomerId(customerId); + userMessageEntity.setGridId(regUser.getGridId()); + userMessageEntity.setUserId(regUser.getUserId()); + userMessageEntity.setApp(AppClientConstant.APP_RESI); + userMessageEntity.setTitle("您有一条社区消息!"); + userMessageEntity.setMessageContent(content); + userMessageEntity.setReadFlag(Constant.UNREAD); + userMessageEntity.setReferer(StrConstant.EPMETY_STR); + userMessageEntity.setMessageType("organization_message"); + userMessageEntity.setTargetId(messageId); + userMessageEntity.setCreatedBy(publishStaffId); + userMessageEntity.setUpdatedBy(publishStaffId); + userMessageDao.insert(userMessageEntity); + totalMsg += 1; + } + } + pageFormDTO.setPageNo(pageFormDTO.getPageNo() + NumConstant.ONE); + } while (CollectionUtils.isNotEmpty(list) && list.size() == pageFormDTO.getPageSize()); + } + } catch (Exception e) { + log.error(String.format("messageId:%s,发送消息异常:%s", messageId, ExceptionUtils.getErrorStackTrace(e))); + result = "failed"; + } finally { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(OrganizationMessageEntity::getId, messageId) + .set(OrganizationMessageEntity::getSendMsgRes, result) + .set(OrganizationMessageEntity::getTotalReceiver, totalMsg) + .set(OrganizationMessageEntity::getFinishSendTime,new Date()) + .set(OrganizationMessageEntity::getUpdatedTime,new Date()); + baseDao.update(null, updateWrapper); + } + } + + +} \ No newline at end of file diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/OrganizationMessageDao.xml b/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/OrganizationMessageDao.xml new file mode 100644 index 0000000000..4c7b8d1140 --- /dev/null +++ b/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/OrganizationMessageDao.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/OrganizationMessagePublishRangeDao.xml b/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/OrganizationMessagePublishRangeDao.xml new file mode 100644 index 0000000000..18e02ac73f --- /dev/null +++ b/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/OrganizationMessagePublishRangeDao.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/ThirdAppManageDTO.java b/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/ThirdAppManageDTO.java new file mode 100644 index 0000000000..782e21231f --- /dev/null +++ b/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/ThirdAppManageDTO.java @@ -0,0 +1,112 @@ +package com.epmet.dto; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.Date; + + +/** + * 烟台第三方应用管理 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-02-03 + */ +@Data +public class ThirdAppManageDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * id + */ + private String id; + + /** + * 客户ID + */ + private String customerId; + + /** + * 应用名称 + */ + @NotBlank(message = "应用名称不能为空") + private String name; + + /** + * 应用链接 + */ + @NotBlank(message = "应用链接不能为空") + private String link; + + /** + * 账号 + */ + @NotBlank(message = "测试账号不能为空") + private String account; + + /** + * 密码 + */ + @NotBlank(message = "测试密码不能为空") + private String password; + + /** + * 应用介绍 + */ + private String remark; + + /** + * 第三方公司名 + */ + private String companyName; + + /** + * 联系人 + */ + @NotBlank(message = "联系人不能为空") + private String contacts; + + /** + * 联系电话 + */ + @NotBlank(message = "联系电话不能为空") + private String mobile; + + /** + * 状态【0:未审核;1:审核不通过;2:审核通过;3:已发布】 + */ + private String status; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 删除标识 0:未删除 1:删除 + */ + private Integer delFlag; + + /** + * 创建者 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新者 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/form/ThirdAppManageFormDTO.java b/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/form/ThirdAppManageFormDTO.java new file mode 100644 index 0000000000..6b9398b62e --- /dev/null +++ b/epmet-module/gov-access/gov-access-client/src/main/java/com/epmet/dto/form/ThirdAppManageFormDTO.java @@ -0,0 +1,50 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.dto.form.PageFormDTO; +import lombok.Data; + +import java.io.Serializable; + + +/** + * 烟台第三方应用管理 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-02-03 + */ +@Data +public class ThirdAppManageFormDTO extends PageFormDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * id + */ + private String id; + + + /** + * 应用名称 + */ + private String name; + + /** + * 第三方公司名 + */ + private String companyName; + + /** + * 联系人 + */ + private String contacts; + + /** + * 联系电话 + */ + private String mobile; + + /** + * 状态【0:未审核;1:审核不通过;2:审核通过;3:已发布】 + */ + private String status; +} \ No newline at end of file diff --git a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/controller/ThirdAppManageController.java b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/controller/ThirdAppManageController.java new file mode 100644 index 0000000000..2c5b143236 --- /dev/null +++ b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/controller/ThirdAppManageController.java @@ -0,0 +1,83 @@ +package com.epmet.controller; + +import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.commons.tools.validator.group.AddGroup; +import com.epmet.commons.tools.validator.group.DefaultGroup; +import com.epmet.commons.tools.validator.group.UpdateGroup; +import com.epmet.dto.ThirdAppManageDTO; +import com.epmet.dto.form.ThirdAppManageFormDTO; +import com.epmet.service.ThirdAppManageService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + + +/** + * 烟台第三方应用管理 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-02-03 + */ +@RestController +@RequestMapping("thirdAppManage") +public class ThirdAppManageController { + + @Autowired + private ThirdAppManageService thirdAppManageService; + + @PostMapping("page") + public Result> page(@RequestBody ThirdAppManageFormDTO formDTO){ + PageData page = thirdAppManageService.page(formDTO); + return new Result>().ok(page); + } + + @PostMapping("detail/{id}") + public Result get(@PathVariable("id") String id){ + ThirdAppManageDTO data = thirdAppManageService.get(id); + return new Result().ok(data); + } + + @NoRepeatSubmit + @PostMapping("save") + public Result save(@RequestBody ThirdAppManageDTO dto){ + //效验数据 + ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); + thirdAppManageService.save(dto); + return new Result(); + } + + /** + * 审核 + * + * @Param dto + * @Return {@link Result} + * @Author zhaoqifeng + * @Date 2023/2/3 14:18 + */ + @NoRepeatSubmit + @PostMapping("audit") + public Result audit(@RequestBody ThirdAppManageDTO dto){ + //效验数据 + thirdAppManageService.audit(dto); + return new Result(); + } + + /** + * 发布 + * + * @Param dto + * @Return {@link Result} + * @Author zhaoqifeng + * @Date 2023/2/3 14:18 + */ + @NoRepeatSubmit + @PostMapping("release") + public Result release(@RequestBody ThirdAppManageDTO dto){ + //效验数据 + thirdAppManageService.release(dto); + return new Result(); + } + +} diff --git a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/dao/ThirdAppManageDao.java b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/dao/ThirdAppManageDao.java new file mode 100644 index 0000000000..e930e21767 --- /dev/null +++ b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/dao/ThirdAppManageDao.java @@ -0,0 +1,16 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.entity.ThirdAppManageEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 烟台第三方应用管理 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-02-03 + */ +@Mapper +public interface ThirdAppManageDao extends BaseDao { + +} \ No newline at end of file diff --git a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/entity/ThirdAppManageEntity.java b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/entity/ThirdAppManageEntity.java new file mode 100644 index 0000000000..a44b474fc4 --- /dev/null +++ b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/entity/ThirdAppManageEntity.java @@ -0,0 +1,71 @@ +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 2023-02-03 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("third_app_manage") +public class ThirdAppManageEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户ID + */ + private String customerId; + + /** + * 应用名称 + */ + private String name; + + /** + * 应用链接 + */ + private String link; + + /** + * 账号 + */ + private String account; + + /** + * 密码 + */ + private String password; + + /** + * 应用介绍 + */ + private String remark; + + /** + * 第三方公司名 + */ + private String companyName; + + /** + * 联系人 + */ + private String contacts; + + /** + * 联系电话 + */ + private String mobile; + + /** + * 状态【0:未审核;1:审核不通过;2:审核通过;3:已发布】 + */ + private String status; + +} diff --git a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/ThirdAppManageService.java b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/ThirdAppManageService.java new file mode 100644 index 0000000000..fbc7216cb8 --- /dev/null +++ b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/ThirdAppManageService.java @@ -0,0 +1,66 @@ +package com.epmet.service; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.commons.tools.page.PageData; +import com.epmet.dto.ThirdAppManageDTO; +import com.epmet.dto.form.ThirdAppManageFormDTO; +import com.epmet.entity.ThirdAppManageEntity; + +/** + * 烟台第三方应用管理 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-02-03 + */ +public interface ThirdAppManageService extends BaseService { + + /** + * 默认分页 + * + * @param formDTO + * @return PageData + * @author generator + * @date 2023-02-03 + */ + PageData page(ThirdAppManageFormDTO formDTO); + + /** + * 单条查询 + * + * @param id + * @return ThirdAppManageDTO + * @author generator + * @date 2023-02-03 + */ + ThirdAppManageDTO get(String id); + + /** + * 默认保存 + * + * @param dto + * @return void + * @author generator + * @date 2023-02-03 + */ + void save(ThirdAppManageDTO dto); + + /** + * 审核 + * + * @Param dto + * @Return + * @Author zhaoqifeng + * @Date 2023/2/3 14:19 + */ + void audit(ThirdAppManageDTO dto); + + /** + * 发布 + * + * @Param dto + * @Return + * @Author zhaoqifeng + * @Date 2023/2/3 14:19 + */ + void release(ThirdAppManageDTO dto); +} \ No newline at end of file diff --git a/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/ThirdAppManageServiceImpl.java b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/ThirdAppManageServiceImpl.java new file mode 100644 index 0000000000..db9affc717 --- /dev/null +++ b/epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/ThirdAppManageServiceImpl.java @@ -0,0 +1,112 @@ +package com.epmet.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.dao.ThirdAppManageDao; +import com.epmet.dto.ThirdAppManageDTO; +import com.epmet.dto.form.ThirdAppManageFormDTO; +import com.epmet.entity.ThirdAppManageEntity; +import com.epmet.service.ThirdAppManageService; +import com.github.pagehelper.PageInfo; +import com.github.pagehelper.page.PageMethod; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 烟台第三方应用管理 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-02-03 + */ +@Service +public class ThirdAppManageServiceImpl extends BaseServiceImpl implements ThirdAppManageService { + + @Override + public PageData page(ThirdAppManageFormDTO formDTO) { + PageMethod.startPage(formDTO.getPageNo(), formDTO.getPageSize()); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.like(StringUtils.isNotBlank(formDTO.getName()), ThirdAppManageEntity::getName, formDTO.getName()); + wrapper.like(StringUtils.isNotBlank(formDTO.getCompanyName()), ThirdAppManageEntity::getCompanyName, formDTO.getCompanyName()); + wrapper.like(StringUtils.isNotBlank(formDTO.getContacts()), ThirdAppManageEntity::getContacts, formDTO.getContacts()); + wrapper.like(StringUtils.isNotBlank(formDTO.getMobile()), ThirdAppManageEntity::getMobile, formDTO.getMobile()); + wrapper.eq(StringUtils.isNotBlank(formDTO.getStatus()), ThirdAppManageEntity::getStatus, formDTO.getStatus()); + wrapper.orderByDesc(ThirdAppManageEntity::getCreatedTime); + List list = baseDao.selectList(wrapper); + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(ConvertUtils.sourceToTarget(list, ThirdAppManageDTO.class), pageInfo.getTotal()); + } + + @Override + public ThirdAppManageDTO get(String id) { + ThirdAppManageEntity entity = baseDao.selectById(id); + return ConvertUtils.sourceToTarget(entity, ThirdAppManageDTO.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void save(ThirdAppManageDTO dto) { + ThirdAppManageEntity entity = ConvertUtils.sourceToTarget(dto, ThirdAppManageEntity.class); + insert(entity); + } + + /** + * 审核 + * + * @param dto + * @Param dto + * @Return + * @Author zhaoqifeng + * @Date 2023/2/3 14:19 + */ + @Override + public void audit(ThirdAppManageDTO dto) { + ThirdAppManageEntity info = baseDao.selectById(dto.getId()); + if (!NumConstant.ZERO_STR.equals(info.getStatus())) { + String errorMsg = "应用已审核"; + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg); + } + + ThirdAppManageEntity entity = new ThirdAppManageEntity(); + entity.setId(dto.getId()); + entity.setStatus(dto.getStatus()); + baseDao.updateById(entity); + } + + /** + * 发布 + * + * @param dto + * @Param dto + * @Return + * @Author zhaoqifeng + * @Date 2023/2/3 14:19 + */ + @Override + public void release(ThirdAppManageDTO dto) { + ThirdAppManageEntity info = baseDao.selectById(dto.getId()); + if (NumConstant.ZERO_STR.equals(info.getStatus())) { + String errorMsg = "应用未审核,请先审核"; + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg); + } else if (NumConstant.ONE_STR.equals(info.getStatus())) { + String errorMsg = "应用审核不通过,不能发布"; + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg); + } else if (NumConstant.THREE_STR.equals(info.getStatus())) { + String errorMsg = "应用已发布"; + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg); + } + + ThirdAppManageEntity entity = new ThirdAppManageEntity(); + entity.setId(dto.getId()); + entity.setStatus(NumConstant.THREE_STR); + baseDao.updateById(entity); + } + +} \ No newline at end of file diff --git a/epmet-module/gov-access/gov-access-server/src/main/resources/db/migration/V0.0.10__third_app.sql b/epmet-module/gov-access/gov-access-server/src/main/resources/db/migration/V0.0.10__third_app.sql new file mode 100644 index 0000000000..563fcf3815 --- /dev/null +++ b/epmet-module/gov-access/gov-access-server/src/main/resources/db/migration/V0.0.10__third_app.sql @@ -0,0 +1,20 @@ +CREATE TABLE `third_app_manage` ( + `ID` varchar(64) NOT NULL COMMENT 'id', + `CUSTOMER_ID` varchar(64) DEFAULT NULL COMMENT '客户ID', + `NAME` varchar(64) NOT NULL COMMENT '应用名称', + `LINK` varchar(128) NOT NULL COMMENT '应用链接', + `ACCOUNT` varchar(64) NOT NULL COMMENT '账号', + `PASSWORD` varchar(64) NOT NULL COMMENT '密码', + `REMARK` text COMMENT '应用介绍', + `COMPANY_NAME` varchar(64) DEFAULT '0' COMMENT '第三方公司名', + `CONTACTS` varchar(64) NOT NULL COMMENT '联系人', + `MOBILE` varchar(32) NOT NULL COMMENT '联系电话', + `STATUS` varchar(1) DEFAULT '0' COMMENT '状态【0:未审核;1:审核不通过;2:审核通过;3:已发布】', + `REVISION` int(11) DEFAULT NULL COMMENT '乐观锁', + `DEL_FLAG` tinyint(1) unsigned DEFAULT NULL COMMENT '删除标识 0:未删除 1:删除', + `CREATED_BY` varchar(32) DEFAULT NULL COMMENT '创建者', + `CREATED_TIME` datetime DEFAULT NULL COMMENT '创建时间', + `UPDATED_BY` varchar(32) DEFAULT NULL COMMENT '更新者', + `UPDATED_TIME` datetime DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='烟台第三方应用管理'; \ No newline at end of file diff --git a/epmet-module/gov-access/gov-access-server/src/main/resources/mapper/ThirdAppManageDao.xml b/epmet-module/gov-access/gov-access-server/src/main/resources/mapper/ThirdAppManageDao.xml new file mode 100644 index 0000000000..afbc2b77fa --- /dev/null +++ b/epmet-module/gov-access/gov-access-server/src/main/resources/mapper/ThirdAppManageDao.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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 9184969e62..a01181abda 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 @@ -160,4 +160,6 @@ public class CustomerGridDTO implements Serializable { * 网格排序 */ private Integer sort; + + private String description; } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcBuildingDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcBuildingDTO.java index 52567226eb..cf28e52ddf 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcBuildingDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcBuildingDTO.java @@ -49,6 +49,10 @@ public class IcBuildingDTO implements Serializable { * 小区id */ private String neighborHoodId; + /** + * 灵山项目添加 + */ + private String neighborHoodName; /** * 片区id,neighbor_hood_part.id,可为空。 @@ -96,6 +100,16 @@ public class IcBuildingDTO implements Serializable { */ private String buildingLeaderMobile; + /** + * 烟台需求:楼长身份证号 + */ + private String buildingLeaderIdCard; + + /** + * 烟台需求:类型:0楼长;1单元长 + */ + private String buildingLeaderType; + /** * 中心点位:经度 */ @@ -156,4 +170,5 @@ public class IcBuildingDTO implements Serializable { */ private Integer realPerson; + } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcHouseDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcHouseDTO.java index 31111bbe87..d13716a4b8 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcHouseDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcHouseDTO.java @@ -171,6 +171,15 @@ public class IcHouseDTO implements Serializable { */ private String showOwnerIdCard; + /** + * 所在楼层 + */ + private String floor; + /** + * 面积 + */ + private String area; + private String longitude; private String latitude; /** diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcNeighborHoodDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcNeighborHoodDTO.java index 8e39699670..66c41f6342 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcNeighborHoodDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcNeighborHoodDTO.java @@ -165,4 +165,20 @@ public class IcNeighborHoodDTO implements Serializable { */ private String buildingName; + /** + * 烟台需求:自然村/小区 + */ + private String viliageType; + /** + * 烟台需求:面积 + */ + private String area; + /** + * 烟台需求:开放类型 + */ + private String openType; + /** + * 烟台需求:建筑年代 + */ + private String buildYear; } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcPropertyManagementDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcPropertyManagementDTO.java index a276e36387..18de590a92 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcPropertyManagementDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcPropertyManagementDTO.java @@ -17,10 +17,14 @@ package com.epmet.dto; +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; import lombok.Data; import java.io.Serializable; import java.util.Date; +import java.util.List; /** @@ -37,48 +41,85 @@ public class IcPropertyManagementDTO implements Serializable { /** * 物业id */ + @ExcelIgnore private String id; /** * 物业名称 */ + @ExcelProperty(value = "物业名称") + @ColumnWidth(30) private String name; /** * 客户id */ + @ExcelIgnore private String customerId; + /** + * 烟台需求:物业联系人姓名 + */ + @ExcelProperty(value = "物业联系人") + @ColumnWidth(30) + private String contactName; + + /** + * 烟台需求:物业联系人电话 + */ + @ExcelProperty(value = "联系电话") + @ColumnWidth(30) + private String contactMobile; + + /** + * 关联的小区数量 + */ + @ExcelIgnore + private Integer totalNeighborHood; + + /** + * 导出时候用 + * 该物业关联的小区 + */ + @ExcelProperty(value = "关联小区") + @ColumnWidth(60) + private String neighborHoodNames; + + @ExcelIgnore + List neighborHoodList; + /** * 删除标识 0未删除、1已删除 */ + @ExcelIgnore private String delFlag; /** * 乐观锁 */ + @ExcelIgnore private Integer revision; /** * 创建人 */ + @ExcelIgnore private String createdBy; /** * 创建时间 */ + @ExcelIgnore private Date createdTime; /** * 更新人 */ + @ExcelIgnore private String updatedBy; /** * 更新时间 */ + @ExcelIgnore private Date updatedTime; - /** - * 关联的小区数量 - */ - private Integer totalNeighborHood; } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportGeneralDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportGeneralDTO.java index df0f6b0530..d617ad39dd 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportGeneralDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportGeneralDTO.java @@ -1,5 +1,6 @@ package com.epmet.dto; +import com.alibaba.excel.annotation.ExcelProperty; import com.epmet.commons.tools.constant.NumConstant; import lombok.Data; @@ -183,4 +184,48 @@ public class ImportGeneralDTO implements Serializable { */ private Boolean buildingUpdateStatus = false; private Boolean neighborHoodUpdateStatus = false; + + /** + * 烟台需求:自然村/小区 + */ + private String viliageType; + + /** + * 烟台需求:自然村/小区 + */ + private String viliageTypeName; + /** + * 烟台需求:面积 + */ + private String area; + /** + * 烟台需求:开放类型 + */ + private String openType; + + /** + * 烟台需求:开放类型 + */ + private String openTypeName; + /** + * 烟台需求:建筑年代 + */ + private String buildYear; + + /** + * 所在楼层 + */ + private String floor; + + private String buildingLeaderIdCard; + + private String buildingLeaderType; + + private String buildingLeaderTypeNum; + + + private String propertyUserName; + + private String propertyUserMobile; + } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddAgencyFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddAgencyFormDTO.java index ec7668c075..cf86d445ba 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddAgencyFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddAgencyFormDTO.java @@ -102,4 +102,6 @@ public class AddAgencyFormDTO implements Serializable { * 中心点位位置 */ private String centerAddress; + + private String description; } 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 0cbb5c1ab5..b494b6db0f 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 @@ -118,4 +118,38 @@ public class AddAgencyV2FormDTO implements Serializable { * 中心点位位置 */ private String centerAddress; + + private String description; + + /** + * 社区简介 + */ + @Length(max = 500,message ="最多输入500字",groups =DefaultUserShowGroup.class ) + private String remark; + + /** + * 村居/社区书记姓名 + */ + private String secretaryName; + /** + * 村居/社区书记电话 + */ + private String secretaryMobile; + /** + * 值班电话 + */ + private String dutyMobile; + /** + * 统一社会信用代码 + */ + private String unifiedSocialCreditCode; + /** + * 统一社会信用代码证书(图片附件) + */ + private String unifiedSocialCreditCodeCertificate; + + /** + * 详细地址 + */ + private String fullAddress; } 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 786980aa47..fb2a7b01d5 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 @@ -77,5 +77,6 @@ public class AddDepartmentFormDTO implements Serializable { */ private String deptType; + private String description; } \ 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 9eab6ce157..a01ea0ad50 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 @@ -69,4 +69,6 @@ public class AddGridFormDTO implements Serializable { * 中心点位位置 */ private String centerAddress; + + private String description; } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddRootAgencyFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddRootAgencyFormDTO.java index d4fffc6ef3..babe66204e 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddRootAgencyFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddRootAgencyFormDTO.java @@ -87,4 +87,5 @@ public class AddRootAgencyFormDTO implements Serializable { @Length(max=30,message = "区县级机关名称不能超过30个字", groups = AddRootAgencyGroup.class) private String district; + private String description; } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddStaffV2FromDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddStaffV2FromDTO.java index 413e9af58a..4250c5ca61 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddStaffV2FromDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/AddStaffV2FromDTO.java @@ -80,9 +80,36 @@ public class AddStaffV2FromDTO implements Serializable { private String currentUserId; /** - * 文化程度。0小学及文盲,1初中,2高中,3大专,4本科,5硕士,6博士,7中专 + * 烟台需求:党组织职务 */ - private String culture; + private String partyPosition; + /** + * 烟台需求:村居委员职务 + */ + private String viliagePosition; + + /** + * 烟台需求:工作职责 + */ + private String duty; + + /** + * 烟台需求:备注 + */ + private String remark; + /** + * 文化程度 + */ + private String culture; + /** + * 身份证 + */ private String idCard; + + /** + * 居住地址 + */ + private String address; + } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CommunityCountCensusFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CommunityCountCensusFormDTO.java new file mode 100644 index 0000000000..d9e7f7d4e4 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CommunityCountCensusFormDTO.java @@ -0,0 +1,32 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.Date; + +/** + * @ClassName AgencyCountCensus$ + * @Description + * @Date 2023/4/6 16:46 + * @Author lichao + **/ +@Data +public class CommunityCountCensusFormDTO implements Serializable { + + + + private static final long serialVersionUID = 4360690752084258055L; + + @NotBlank(message = "组织Id不能为空") + private String agencyId; + + private Date timeStart; + + private Date timeEnd; + + private Integer pageNum; + + private Integer pageSize; +} 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 57e535ad25..a55a45278e 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 @@ -110,4 +110,38 @@ public class EditAgencyFormDTO implements Serializable { private String centerAddress; private String customerId; + + @Length(max = 500,message = "最多输入500字",groups =DefaultUserShowGroup.class ) + private String remark; + + /** + * 村居/社区书记姓名 + */ + private String secretaryName; + /** + * 村居/社区书记电话 + */ + private String secretaryMobile; + /** + * 值班电话 + */ + private String dutyMobile; + /** + * 统一社会信用代码 + */ + private String unifiedSocialCreditCode; + /** + * 统一社会信用代码证书(图片附件) + */ + private String unifiedSocialCreditCodeCertificate; + + /** + * 详细地址 + */ + private String fullAddress; + + /** + * 简介 + */ + private String description; } \ 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 2f40bfa6e1..54590e5360 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 @@ -69,4 +69,6 @@ public class EditDepartmentFormDTO implements Serializable { */ private String mobile; + private String description; + } \ 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 0159e3d4b0..8f208a924c 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 @@ -83,4 +83,6 @@ public class EditGridFormDTO implements Serializable { * 网格排序 */ private Integer sort; + + private String description; } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EnterprisePageFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EnterprisePageFormDTO.java index 15bf7a402a..623af190db 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EnterprisePageFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/EnterprisePageFormDTO.java @@ -10,6 +10,19 @@ import java.io.Serializable; */ @Data public class EnterprisePageFormDTO implements Serializable { + + /** + * 组织id或者网格id + * 04.10添加次入参,原型地址:https://modao.cc/app/DUshpXWirii6amoDQsb8OP#screen=slfbvzaghxlqxhe + */ + private String orgId; + /** + * 组织:agency + * 网格:grid + * 04.10添加次入参,原型地址:https://modao.cc/app/DUshpXWirii6amoDQsb8OP#screen=slfbvzaghxlqxhe + */ + private String orgType; + /** * 场所区域 */ diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/GroupRentHouseFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/GroupRentHouseFormDTO.java new file mode 100644 index 0000000000..97c8832968 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/GroupRentHouseFormDTO.java @@ -0,0 +1,48 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.dto.form.PageFormDTO; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description + * @Author yzm + * @Date 2023/3/2 17:35 + */ +@Data +public class GroupRentHouseFormDTO extends PageFormDTO implements Serializable { + private static final long serialVersionUID = -953729855530434972L; + /** + * 组织ID + */ + private String orgId; + private String orgType; + + /** + * 房主姓名 + */ + private String ownerName; + /** + * 房主电话 + */ + private String ownerPhone; + + /** + * 房屋用途 + */ + private String purpose; + + /** + * 备注 + */ + private String remark; + + + /** + * tokenDto获取 + */ + private String customerId; + private String staffId; +} + diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/HouseCountPictureFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/HouseCountPictureFormDTO.java new file mode 100644 index 0000000000..451c5c6790 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/HouseCountPictureFormDTO.java @@ -0,0 +1,34 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description 根据小区,楼宇,单元名称校验是否存在 + * @Author wgf + * @Date 2022/8/24 9:03 + */ +@Data +public class HouseCountPictureFormDTO implements Serializable { + private static final long serialVersionUID = 2636608477324780974L; + + private String orgIdPath; + + private String orgId; + + private String orgType; + + private Date timeStart; + + private Date timeEnd; + + private String purpose; + + private Integer rentFlag; + + private Integer pageSize; + + private Integer pageNo; +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcBulidingAddFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcBulidingAddFormDTO.java index cafecc1f1b..d4c2af991b 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcBulidingAddFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcBulidingAddFormDTO.java @@ -150,5 +150,9 @@ public class IcBulidingAddFormDTO implements Serializable { */ private Integer realPerson; + private String buildingLeaderType; + + private String buildingLeaderIdCard; + } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcHouseAddFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcHouseAddFormDTO.java index 46057d6fae..2e7f229f59 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcHouseAddFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcHouseAddFormDTO.java @@ -112,6 +112,14 @@ public class IcHouseAddFormDTO implements Serializable { * 房屋可编辑编码 */ private String coding; + /** + * 所在楼层 + */ + private String floor; + /** + * 面积 + */ + private String area; private String longitude; private String latitude; diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcNeighborHoodAddFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcNeighborHoodAddFormDTO.java index 854462c6e1..f975c75048 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcNeighborHoodAddFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcNeighborHoodAddFormDTO.java @@ -113,6 +113,21 @@ public class IcNeighborHoodAddFormDTO extends PageFormDTO { * 实有楼栋数 */ private Integer realBuilding; - + /** + * 烟台需求:自然村/小区 + */ + private String viliageType; + /** + * 烟台需求:面积 + */ + private String area; + /** + * 烟台需求:开放类型 + */ + private String openType; + /** + * 烟台需求:建筑年代 + */ + private String buildYear; } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcPropertyManagementFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcPropertyManagementFormDTO.java index bbc2cd7152..0b3f3ea9b4 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcPropertyManagementFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcPropertyManagementFormDTO.java @@ -17,17 +17,18 @@ package com.epmet.dto.form; +import com.epmet.commons.tools.dto.form.PageFormDTO; 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.util.List; @Data -public class IcPropertyManagementFormDTO implements Serializable { +public class IcPropertyManagementFormDTO extends PageFormDTO implements Serializable { private static final long serialVersionUID = 1L; @@ -40,8 +41,8 @@ public class IcPropertyManagementFormDTO implements Serializable { public interface UpdateShowGroup extends CustomerClientShowGroup { } - public interface PageGroup extends CustomerClientShowGroup { - } + // public interface PageGroup extends CustomerClientShowGroup { + // } @NotBlank(message = "物业id不能为空", groups = {DeleteGroup.class, UpdateShowGroup.class}) private String id; @@ -52,11 +53,24 @@ public class IcPropertyManagementFormDTO implements Serializable { @Length(max = 50, message = "物业名称不能超过50个字", groups = {AddShowGroup.class}) private String name; - private String customerId; + /** + * 烟台需求:物业联系人姓名 + */ + @Length(max = 30, message = "物业联系人不能超过30个字", groups = {AddShowGroup.class, UpdateShowGroup.class}) + private String contactName; + + /** + * 烟台需求:物业联系人电话 + */ + @Length(max = 30, message = "联系电话不能超过30个字",groups = {AddShowGroup.class, UpdateShowGroup.class}) + private String contactMobile; + + /** + * 管理小区id + */ + private List neighborHoodIdList; + - @NotNull(message = "pageNo不能为空", groups = PageGroup.class) - private Integer pageNo; - @NotNull(message = "pageSize不能为空", groups = PageGroup.class) - private Integer pageSize; + private String customerId; } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/StaffSubmitFromDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/StaffSubmitFromDTO.java index ded840ad19..51eb2f3230 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/StaffSubmitFromDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/StaffSubmitFromDTO.java @@ -76,8 +76,34 @@ public class StaffSubmitFromDTO implements Serializable { */ private String deptType; + /** + * 烟台需求:党组织职务 + */ + private String partyPosition; + + /** + * 烟台需求:村居委员职务 + */ + private String viliagePosition; + + /** + * 烟台需求:工作职责 + */ + private String duty; + + /** + * 烟台需求:备注 + */ + private String remark; + /** + * 身份证 + */ private String idCard; + /** + * 居住地址 + */ + private String address; /** * 文化程度。0小学及文盲,1初中,2高中,3大专,4本科,5硕士,6博士,7中专 */ diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/lingshan/ScreenPartyCenterHouseDistributionFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/lingshan/ScreenPartyCenterHouseDistributionFormDTO.java new file mode 100644 index 0000000000..0417a5540e --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/lingshan/ScreenPartyCenterHouseDistributionFormDTO.java @@ -0,0 +1,23 @@ +package com.epmet.dto.form.lingshan; + +import com.epmet.commons.tools.validator.group.QueryGroup; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Description 灵山大屏,根据网格id,查询党员中心户房屋坐标 + * @Author yzm + * @Date 2023/5/18 10:14 + */ +@Data +public class ScreenPartyCenterHouseDistributionFormDTO { + /** + * 网格必填 + */ + @NotBlank(message = "gridId不能为空",groups = QueryGroup.class) + private String gridId; + private String neighborHoodId; + private String buildingId; +} + diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/ChooseGridFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/ChooseGridFormDTO.java new file mode 100644 index 0000000000..29e4de2b75 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/ChooseGridFormDTO.java @@ -0,0 +1,33 @@ +package com.epmet.dto.form.yt; + +import com.epmet.commons.tools.dto.form.PageFormDTO; +import lombok.Data; + +/** + * @Description + * @Author yzm + * @Date 2023/4/19 14:13 + */ +@Data +public class ChooseGridFormDTO extends PageFormDTO { + /** + * 客户id + */ + private String customerId; + + /** + * 组织id + */ + private String agencyId; + + /** + * 网格id + */ + private String gridId; + + /** + * 楼栋名 + */ + private String buildingName; +} + diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/CommunityBuildingManagerPageFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/CommunityBuildingManagerPageFormDTO.java new file mode 100644 index 0000000000..f4fd8bbbda --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/CommunityBuildingManagerPageFormDTO.java @@ -0,0 +1,80 @@ +package com.epmet.dto.form.yt; + +import com.epmet.commons.tools.dto.form.PageFormDTO; +import lombok.Data; + +/** + * @Description + * @Author yzm + * @Date 2023/5/6 13:53 + */ +@Data +public class CommunityBuildingManagerPageFormDTO extends PageFormDTO { + // start + private String customerId; + private String staffId; + /** + * 工作人员所属组织的org_id_path + * 列表数据应查询本组织及下级 + * 网格的全路径,包含网格id + */ + private String orgIdPath; + // end + + + /** + * 姓名 + */ + private String name; + + /** + * 联系电话 + */ + private String phone; + + /** + * 身份证号 + */ + private String idCard; + + /** + * 类型:0楼长;1单元长 + */ + private String type; + + /** + * 所属区县id;取名字关联customer_agency + */ + private String districtId; + + /** + * 所属街道id;取名字关联customer_agency + */ + private String streetId; + + /** + * 所属社区id;取名字关联customer_agency + */ + private String communityId; + + /** + * 所属网格id;取名字关联customer_grid + */ + private String gridId; + + /** + * 所属小区id + */ + private String viliageId; + + /** + * 所属楼栋id + */ + private String buildingId; + + /** + * 所属单元id; 单元长时必填此列 + */ + private String unitId; +} + diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/CommunityLoginFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/CommunityLoginFormDTO.java new file mode 100644 index 0000000000..6ca6168fa4 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/CommunityLoginFormDTO.java @@ -0,0 +1,54 @@ +package com.epmet.dto.form.yt; + +import com.epmet.commons.tools.dto.form.PageFormDTO; +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotBlank; +import java.util.Date; + +/** + * @Description 下级社区账号登录次数排名入参 + * @Author yzm + * @Date 2023/4/6 14:18 + */ +@Data +public class CommunityLoginFormDTO extends PageFormDTO { + public interface StreetTotalShowGroup extends CustomerClientShowGroup { + } + + + /** + * 所选择的组织id + */ + @NotBlank(message = "请选择区县",groups = StreetTotalShowGroup.class) + private String orgId; + + /** + * 组织类型 + */ + private String level; + + /** + * 开始日期:yyyy-MM-dd + */ + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date startDate; + + /** + * 截止日期:yyyy-MM-dd + */ + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date endDate; + + /** + * exclude_zero:不展示登录次数为0的社区 + * all:全部展示 + */ + private String dataRange; +} + diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/CountActivityFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/CountActivityFormDTO.java new file mode 100644 index 0000000000..a1ef997fc0 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/CountActivityFormDTO.java @@ -0,0 +1,42 @@ +package com.epmet.dto.form.yt; + +import com.epmet.commons.tools.dto.form.PageFormDTO; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * @Description 下级社区账号登录次数排名入参 + * @Author yzm + * @Date 2023/4/6 14:18 + */ +@Data +public class CountActivityFormDTO extends PageFormDTO { + /** + * 所选择的组织id + */ + private String orgId; + + /** + * 是否活跃 1 活跃 0 不活跃 + */ + private String isActivity; + + + /** + * 开始日期:yyyy-MM-dd + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date startDate; + + /** + * 截止日期:yyyy-MM-dd + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date endDate; +} + diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/EnterpriseCountPlaceTypeFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/EnterpriseCountPlaceTypeFormDTO.java new file mode 100644 index 0000000000..be4e1aac78 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/EnterpriseCountPlaceTypeFormDTO.java @@ -0,0 +1,15 @@ +package com.epmet.dto.form.yt; + +import lombok.Data; + +/** + * @Description 九小场所分析 + * @Author yzm + * @Date 2023/4/7 16:47 + */ +@Data +public class EnterpriseCountPlaceTypeFormDTO { + private String orgId; + private String orgType; +} + diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/LoginLogCountByLevelFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/LoginLogCountByLevelFormDTO.java new file mode 100644 index 0000000000..c115f530c9 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/yt/LoginLogCountByLevelFormDTO.java @@ -0,0 +1,41 @@ +package com.epmet.dto.form.yt; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * @Description 账号登录情况,查询市级账号/区县级账号/镇街级账号/社区级账号登录次数,入参dto + * @Author yzm + * @Date 2023/4/6 10:09 + */ +@Data +public class LoginLogCountByLevelFormDTO { + /** + * 所选择的组织id + */ + private String orgId; + + /** + * 组织类型 + */ + private String level; + + /** + * 开始日期:yyyy-MM-dd + */ + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date startDate; + + /** + * 截止日期:yyyy-MM-dd + */ + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date endDate; + +} + diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyCountCensusResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyCountCensusResultDTO.java new file mode 100644 index 0000000000..4599d00793 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyCountCensusResultDTO.java @@ -0,0 +1,20 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @ClassName AgencyCountCensus$ + * @Description + * @Date 2023/4/6 16:46 + * @Author lichao + **/ +@Data +public class AgencyCountCensusResultDTO implements Serializable { + + private static final long serialVersionUID = 4360690752084258055L; + + private String level; + private Integer count; +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyResultDTO.java index a7aec4fa28..c40b7448d6 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyResultDTO.java @@ -47,5 +47,8 @@ public class AgencyResultDTO implements Serializable { private String longitude; //维度【没值则取跟客户的值】 private String latitude; - + /** + * agencyId的全路径,包含自身 + */ + private String orgIdPath; } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencySubResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencySubResultDTO.java index 08bd0683b1..1461c66fa1 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencySubResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencySubResultDTO.java @@ -61,4 +61,8 @@ public class AgencySubResultDTO implements Serializable { * 组织维度【没值取根组织的值】 */ private String latitude = ""; + /** + * agencyId的全路径,包含自身 + */ + private String orgIdPath; } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyTreeResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyTreeResultDTO.java index 4d48b54960..ab12b7bac2 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyTreeResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/AgencyTreeResultDTO.java @@ -35,6 +35,10 @@ public class AgencyTreeResultDTO implements Serializable { * orgId-orgLevel */ private String orgLevel; + /** + * agencyId的全路径,包含自身 + */ + private String orgIdPath; /** * 下级机关组织 */ 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 99028d23bb..a36a60d87a 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 @@ -133,4 +133,36 @@ public class AgencysResultDTO implements Serializable { * 中心点位位置 */ private String centerAddress; + + private String remark; + + private String coordinates; + + /** + * 村居/社区书记姓名 + */ + private String secretaryName; + /** + * 村居/社区书记电话 + */ + private String secretaryMobile; + /** + * 值班电话 + */ + private String dutyMobile; + /** + * 统一社会信用代码 + */ + private String unifiedSocialCreditCode; + /** + * 统一社会信用代码证书(图片附件) + */ + private String unifiedSocialCreditCodeCertificate; + + /** + * 详细地址 + */ + private String fullAddress; + + private String description; } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommunityBuildingManagerDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommunityBuildingManagerDTO.java new file mode 100644 index 0000000000..8022d3334c --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommunityBuildingManagerDTO.java @@ -0,0 +1,115 @@ +package com.epmet.dto.result; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + + +/** + * 楼长单元长信息表(烟台) + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-05-06 + */ +@Data +public class CommunityBuildingManagerDTO implements Serializable { + + private static final long serialVersionUID = -2526419541953300212L; + public interface AddShowGroup extends CustomerClientShowGroup { + } + + public interface UpdateShowGroup extends CustomerClientShowGroup { + } + /** + * 主键(烟台需求) + */ + @NotBlank(message ="id不能为空" ,groups = {UpdateShowGroup.class}) + private String id; + + /** + * 客户Id customer.id + */ + private String customerId; + + /** + * 姓名 + */ + @Length(max = 50,message = "姓名最多输入50字",groups = {AddShowGroup.class,UpdateShowGroup.class}) + @NotBlank(message ="姓名不能为空" ,groups = {AddShowGroup.class,UpdateShowGroup.class}) + private String name; + + /** + * 联系电话 + */ + @Length(max = 50,message = "联系电话最多输入50字",groups = {AddShowGroup.class,UpdateShowGroup.class}) + @NotBlank(message ="联系电话不能为空" ,groups = {AddShowGroup.class,UpdateShowGroup.class}) + private String phone; + + /** + * 身份证号 + */ + @Length(max = 50,message = "身份证号最多输入50字",groups = {AddShowGroup.class,UpdateShowGroup.class}) + @NotBlank(message ="身份证号不能为空" ,groups = {AddShowGroup.class,UpdateShowGroup.class}) + private String idCard; + + /** + * 类型:0楼长;1单元长 + */ + @NotBlank(message ="类型不能为空" ,groups = {AddShowGroup.class,UpdateShowGroup.class}) + private String type; + private String typeName; + + /** + * 所属区县id;取名字关联customer_agency + */ + @NotBlank(message ="所属区县不能为空" ,groups = {AddShowGroup.class,UpdateShowGroup.class}) + private String districtId; + + /** + * 所属街道id;取名字关联customer_agency + */ + @NotBlank(message ="所属街道不能为空" ,groups = {AddShowGroup.class,UpdateShowGroup.class}) + private String streetId; + + /** + * 所属社区id;取名字关联customer_agency + */ + @NotBlank(message ="所属社区不能为空" ,groups = {AddShowGroup.class,UpdateShowGroup.class}) + private String communityId; + + /** + * 所属网格id;取名字关联customer_grid + */ + @NotBlank(message ="所属网格不能为空" ,groups = {AddShowGroup.class,UpdateShowGroup.class}) + private String gridId; + private String gridName; + + /** + * 网格的全路径,包含网格id + */ + private String orgIdPath; + + /** + * 所属小区id + */ + @NotBlank(message ="所属小区不能为空" ,groups = {AddShowGroup.class,UpdateShowGroup.class}) + private String viliageId; + private String viliageName; + + /** + * 所属楼栋id + */ + @NotBlank(message ="楼栋不能为空" ,groups = {AddShowGroup.class,UpdateShowGroup.class}) + private String buildingId; + private String buildingName; + + /** + * 所属单元id + */ + private String unitId; + private String unitName; + +} \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommunityCountCensusResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommunityCountCensusResultDTO.java new file mode 100644 index 0000000000..5788007304 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommunityCountCensusResultDTO.java @@ -0,0 +1,23 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @ClassName AgencyCountCensus$ + * @Description + * @Date 2023/4/6 16:46 + * @Author lichao + **/ +@Data +public class CommunityCountCensusResultDTO implements Serializable { + + private static final long serialVersionUID = 4360690752084258055L; + + private String agencyId; + + private String agencyName; + + private Integer count; +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommunityListByAgencyIdResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommunityListByAgencyIdResultDTO.java new file mode 100644 index 0000000000..f256fbe316 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/CommunityListByAgencyIdResultDTO.java @@ -0,0 +1,33 @@ +package com.epmet.dto.result; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description: + * @Author: lichao + * @Date: 2023/4/7 16:43 + */ +@Data +public class CommunityListByAgencyIdResultDTO implements Serializable { + private static final long serialVersionUID = -1677303397440121269L; + + private String id; + + private String pids; + + private String name; + + private String streeName; + +// private String streeId; + + private String districtName; + +// private String districtId; + + private Date createTime; +} 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 c04e965569..08a5da31f8 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 @@ -80,4 +80,6 @@ public class DepartmentDetailResultDTO implements Serializable { */ private String deptType = ""; + private String description; + } \ No newline at end of file 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 22d4951210..0ca45b176f 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 @@ -96,4 +96,7 @@ public class GridDetailResultDTO implements Serializable { */ private Integer gridSort = 0; + private String coordinates; + + private String description; } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GroupRentHouseResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GroupRentHouseResultDTO.java new file mode 100644 index 0000000000..febcd6e4fc --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/GroupRentHouseResultDTO.java @@ -0,0 +1,77 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description 群租房列表 + * @Author yzm + * @Date 2023/3/3 9:27 + */ +@Data +public class GroupRentHouseResultDTO implements Serializable { + private static final long serialVersionUID = 3671964765109154117L; + private String houseId; + + /** + * 所属组织 + */ + private String agencyName; + private String agencyId; + /** + * 所属网格 + */ + private String gridName; + private String gridId; + + /** + * 所属小区 + */ + private String neighborHoodName; + /** + * 所属楼栋 + */ + private String buildingName; + + private String houseName; + /** + * 房屋类型 + */ + private String houseType; + private String houseTypeKey; + /** + * 房屋用途 + */ + private String purpose; + private String purposeKey; + + /** + * 房屋状态:房屋状态:1:出租 0:自住 2:闲置 3:未售出 + */ + private String rentFlag; + + /** + * 房主姓名 + */ + private String ownerName; + /** + * 房主电话 + */ + private String ownerPhone; + /** + * 房主身份证 + */ + private String ownerIdCard; + + /** + * 备注 + */ + private String remark; + + /** + * 排序 + */ + private Double sort; +} + diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseCountPictureListResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseCountPictureListResultDTO.java new file mode 100644 index 0000000000..e90cd207a7 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseCountPictureListResultDTO.java @@ -0,0 +1,23 @@ +package com.epmet.dto.result; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * @Description: + * @Author: lichao + * @Date: 2023/4/11 15:05 + */ +@NoArgsConstructor +@Data +public class HouseCountPictureListResultDTO implements Serializable { + + private static final long serialVersionUID = 2063032844842070847L; + + private String type; + + private Integer count; +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseCountPictureResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseCountPictureResultDTO.java new file mode 100644 index 0000000000..998776fffb --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseCountPictureResultDTO.java @@ -0,0 +1,24 @@ +package com.epmet.dto.result; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * @Description: + * @Author: lichao + * @Date: 2023/4/11 15:05 + */ +@NoArgsConstructor +@Data +public class HouseCountPictureResultDTO implements Serializable { + + private static final long serialVersionUID = 2063032844842070847L; + + private Integer total; + + private List list; + +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HousePictureListResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HousePictureListResultDTO.java new file mode 100644 index 0000000000..b511488220 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HousePictureListResultDTO.java @@ -0,0 +1,37 @@ +package com.epmet.dto.result; + + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @Description: + * @Author: lichao + * @Date: 2023/4/11 14:41 + */ +@NoArgsConstructor +@Data +public class HousePictureListResultDTO implements Serializable { + + private static final long serialVersionUID = 2063032844842070847L; + + private String houseId; + + private String districtName; + + private String streetName; + + private String communityName; + + private String gridName; + + private String houseName; + + private String purposeName; + + private String rentFlagName; + + private String orgIdPath; +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcBulidingDetailDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcBulidingDetailDTO.java index 10e8e09477..590be5782d 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcBulidingDetailDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcBulidingDetailDTO.java @@ -121,4 +121,16 @@ public class IcBulidingDetailDTO implements Serializable { */ private Integer realPerson; + /** + * 烟台需求:楼长身份证号 + */ + private String buildingLeaderIdCard; + + /** + * 烟台需求:类型:0楼长;1单元长 + */ + private String buildingLeaderType; + + private String buildingLeaderTypeName; + } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcHouseListResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcHouseListResultDTO.java index 459fb1bcca..7a8c80ef07 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcHouseListResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcHouseListResultDTO.java @@ -89,6 +89,11 @@ public class IcHouseListResultDTO implements Serializable { */ private String houseCode; + private String area; + + private String floor; + + /** * 灵山项目:是否党员中心户:1是;0不是 */ diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcNeighborHoodDetailDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcNeighborHoodDetailDTO.java index 2ed20afbfa..11bcd918c8 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcNeighborHoodDetailDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcNeighborHoodDetailDTO.java @@ -107,5 +107,24 @@ public class IcNeighborHoodDetailDTO { * 二维码地址 */ private String qrcodeUrl; + + private String viliageTypeName; + + private String area; + + private String openTypeName; + + private String buildYear; + + /** + * 烟台需求:自然村/小区 + */ + private String viliageType; + + /** + * 烟台需求:开放类型 + */ + private String openType; + } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcNeighborHoodResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcNeighborHoodResultDTO.java index d775552bbf..112ace5fbf 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcNeighborHoodResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcNeighborHoodResultDTO.java @@ -28,4 +28,12 @@ public class IcNeighborHoodResultDTO extends PageFormDTO { private String propertyId; private String agencyName; private String longitude; + + private String viliageTypeName; + + private String area; + + private String openTypeName; + + private String buildYear; } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/StaffInitResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/StaffInitResultDTO.java index fb53b15ab3..1419313f6f 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/StaffInitResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/StaffInitResultDTO.java @@ -58,8 +58,34 @@ public class StaffInitResultDTO implements Serializable { */ private String agencyName; + + /** + * 烟台需求:党组织职务 + */ + private String partyPosition; + + /** + * 烟台需求:村居委员职务 + */ + private String viliagePosition; + + /** + * 烟台需求:工作职责 + */ + private String duty; + + /** + * 烟台需求:备注 + */ + private String remark; + /** + * 文化程度 + */ private String culture; + private String address; + + private String cultureDisplay; @JsonFormat(pattern = "yyyy-MM-dd") private Date birthday; diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/lingshan/HouseDetailResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/lingshan/HouseDetailResultDTO.java new file mode 100644 index 0000000000..cb48b95e46 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/lingshan/HouseDetailResultDTO.java @@ -0,0 +1,18 @@ +package com.epmet.dto.result.lingshan; + +import com.epmet.dto.IcHouseDTO; +import lombok.Data; + +/** + * @Description + * @Author yzm + * @Date 2023/5/18 14:05 + */ +@Data +public class HouseDetailResultDTO extends IcHouseDTO { + /** + * 如果是党员中心户,关联的联户数 + */ + private Integer totalLianHu; +} + diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/lingshan/LingshanPartyCenterHouseLianhuDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/lingshan/LingshanPartyCenterHouseLianhuDTO.java index 0a7df6be25..c5db519f45 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/lingshan/LingshanPartyCenterHouseLianhuDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/lingshan/LingshanPartyCenterHouseLianhuDTO.java @@ -70,6 +70,7 @@ public class LingshanPartyCenterHouseLianhuDTO implements Serializable { * 联户:联户房屋id */ private String houseId; - + private String longitude; + private String latitude; } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/AccountActivityInfo.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/AccountActivityInfo.java new file mode 100644 index 0000000000..b63ed0c20f --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/AccountActivityInfo.java @@ -0,0 +1,44 @@ +package com.epmet.dto.result.yt; + +import lombok.Data; + +import java.io.Serializable; + + +/** + * @author: qushutong + * @Date: 2023/4/6 13:33 + * @Description: 账户活跃情况 + */ +@Data +public class AccountActivityInfo implements Serializable { + private static final long serialVersionUID = -918630886413844674L; + + /** + * 组织名称 + */ + private String agencyName = ""; + + /** + * 登陆次数 + */ + private String loginCount = ""; + + /** + * 活跃账号数 + */ + private String accountActivityCount = ""; + + + /** + * 总账号数 + */ + private String accountCount = ""; + + /** + * 组织id + */ + private String agencyId = ""; + + +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/ActivityTatalInfo.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/ActivityTatalInfo.java new file mode 100644 index 0000000000..a92b42661d --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/ActivityTatalInfo.java @@ -0,0 +1,30 @@ +package com.epmet.dto.result.yt; + +import lombok.Data; + +import java.io.Serializable; + + +/** + * @author: qushutong + * @Date: 2023/4/6 13:33 + * @Description: 账户活跃总数 + */ +@Data +public class ActivityTatalInfo implements Serializable { + private static final long serialVersionUID = -918630886413844674L; + + + /** + * 不活跃账号总数 + */ + private String inactivityCount = ""; + + /** + * 活跃账号总数 + */ + private String activityCount = ""; + + + +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/CommunityBuildingManagerResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/CommunityBuildingManagerResultDTO.java new file mode 100644 index 0000000000..791c4d80da --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/CommunityBuildingManagerResultDTO.java @@ -0,0 +1,137 @@ +package com.epmet.dto.result.yt; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; + +import java.io.Serializable; + + +/** + * 楼长单元长信息表(烟台) + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-05-06 + */ +@Data +public class CommunityBuildingManagerResultDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键(烟台需求) + */ + @ExcelIgnore + private String id; + + /** + * 客户Id customer.id + */ + @ExcelIgnore + private String customerId; + + /** + * 姓名 + */ + @ExcelProperty(value = "姓名") + @ColumnWidth(20) + private String name; + + /** + * 联系电话 + */ + @ExcelProperty(value = "联系电话") + @ColumnWidth(25) + private String phone; + + /** + * 身份证号 + */ + @ExcelProperty(value = "身份证号") + @ColumnWidth(30) + private String idCard; + + /** + * 类型:0楼长;1单元长 + */ + @ExcelIgnore + private String type; + + @ExcelProperty(value = "类型") + @ColumnWidth(20) + private String typeName; + + /** + * 所属区县id;取名字关联customer_agency + */ + @ExcelIgnore + private String districtId; + @ExcelProperty(value = "所属区市") + @ColumnWidth(30) + private String districtName; + /** + * 所属街道id;取名字关联customer_agency + */ + @ExcelIgnore + private String streetId; + @ExcelProperty(value = "所属镇街") + @ColumnWidth(30) + private String streetName; + + /** + * 所属社区id;取名字关联customer_agency + */ + @ExcelIgnore + private String communityId; + @ExcelProperty(value = "所属社区") + @ColumnWidth(30) + private String communityName; + + /** + * 所属网格id;取名字关联customer_grid + */ + @ExcelIgnore + private String gridId; + @ExcelProperty(value = "所属网格") + @ColumnWidth(30) + private String gridName; + + /** + * 网格的全路径,包含网格id + */ + @ExcelIgnore + private String orgIdPath; + + /** + * 所属小区id + */ + @ExcelIgnore + private String viliageId; + @ExcelProperty(value = "所属小区") + @ColumnWidth(30) + private String viliageName; + + /** + * 所属楼栋id + */ + @ExcelIgnore + private String buildingId; + @ExcelProperty(value = "楼栋") + @ColumnWidth(20) + private String buildingName; + + /** + * 所属单元id; 单元长时必填此列 + */ + @ExcelIgnore + private String unitId; + /** + * 所属单元id; 单元长时必填此列 + */ + @ExcelProperty(value = "单元") + @ColumnWidth(20) + private String unitName; + + +} \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/CommunityLoginResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/CommunityLoginResultDTO.java new file mode 100644 index 0000000000..a8c1e4fb76 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/CommunityLoginResultDTO.java @@ -0,0 +1,50 @@ +package com.epmet.dto.result.yt; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; + +/** + * @Description 下级社区账号登录次数排名 + * @Author yzm + * @Date 2023/4/6 14:15 + */ +@Data +public class CommunityLoginResultDTO { + /** + * 组织id + */ + @ExcelIgnore + private String agencyId; + /** + * 组织名称 + */ + @ColumnWidth(20) + @ExcelProperty(value = "社区名称") + private String agencyName; + /** + * 组织级别(社区级:community, 乡(镇、街道)级:street, 区县级: district, 市级: city 省级:province) + */ + @ExcelIgnore + private String agencyLevel; + /** + * 所属街道名称; + */ + @ColumnWidth(20) + @ExcelProperty(value = "所属街道") + private String streetName; + /** + * 所属区县名称; + */ + @ColumnWidth(20) + @ExcelProperty(value = "所属区县") + private String districtName; + /** + * 登录次数 + */ + @ColumnWidth(20) + @ExcelProperty(value = "登录次数") + private Integer count; +} + diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/EnterpriseCountPlaceTypeDetailDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/EnterpriseCountPlaceTypeDetailDTO.java new file mode 100644 index 0000000000..f92834a43b --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/EnterpriseCountPlaceTypeDetailDTO.java @@ -0,0 +1,24 @@ +package com.epmet.dto.result.yt; + +import com.epmet.commons.tools.constant.NumConstant; +import lombok.Data; + +/** + * @Description 九小场所分析 + * @Author yzm + * @Date 2023/4/7 16:48 + */ +@Data +public class EnterpriseCountPlaceTypeDetailDTO { + private String placeType; + private String placeTypeName; + private Integer total; + + + public EnterpriseCountPlaceTypeDetailDTO() { + this.total = NumConstant.ZERO; + } + + +} + diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/EnterpriseCountPlaceTypeResDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/EnterpriseCountPlaceTypeResDTO.java new file mode 100644 index 0000000000..865a2f481a --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/EnterpriseCountPlaceTypeResDTO.java @@ -0,0 +1,17 @@ +package com.epmet.dto.result.yt; + +import lombok.Data; + +import java.util.List; + +/** + * @Description 九小场所分析 + * @Author yzm + * @Date 2023/4/7 16:47 + */ +@Data +public class EnterpriseCountPlaceTypeResDTO { + private Integer total; + private List list; +} + diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/LoginLogCountByLevelResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/LoginLogCountByLevelResultDTO.java new file mode 100644 index 0000000000..b1a4c33c42 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/yt/LoginLogCountByLevelResultDTO.java @@ -0,0 +1,29 @@ +package com.epmet.dto.result.yt; + +import lombok.Data; + +/** + * @Description 账号登录情况,查询市级账号/区县级账号/镇街级账号/社区级账号登录次数,返参dto + * @Author yzm + * @Date 2023/4/6 10:13 + */ +@Data +public class LoginLogCountByLevelResultDTO { + /** + * 市级账号登录总次数;-1时不展示 + */ + private Integer cityCount; + /** + * 区县级账号登录总次数;-1时不展示 + */ + private Integer districtCount; + /** + * 镇街级账号登录总次数;-1时不展示 + */ + private Integer streetCount; + /** + * 社区级账号登录总次数;-1时不展示 + */ + private Integer communityCount; +} + 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 3f76336879..c1979f218e 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 @@ -22,7 +22,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 { @@ -759,6 +759,14 @@ public interface GovOrgOpenFeignClient { @PostMapping("/gov/org/enterprise/sendEnterprisePatrolRemindMessage") Result sendEnterprisePatrolRemindMessage(); + /** + * 获取当前客户下所有的社区组织,只返回id,orgIdPath,agencyName + * @param customerId + * @return + */ + @PostMapping("/gov/org/agency/getAllCommunity/{customerId}") + Result> getAllCommunity(@PathVariable(value = "customerId") String customerId); + /** * @Description: 灵山:根据行政组织id,查询组织下的党群服务中心/站的列表 * @param orgId: 组织id 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 5d8c8ebf4b..488ace2a2b 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 @@ -475,6 +475,16 @@ public class GovOrgOpenFeignClientFallback implements GovOrgOpenFeignClient { return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "gridStaffList", dto); } + /** + * 获取当前客户下所有的社区组织,只返回id,orgIdPath,agencyName + * + * @param customerId + * @return + */ + @Override + public Result> getAllCommunity(String customerId) { + return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getAllCommunity", customerId); + } @Override public Result> partyServiceCenterQtyStats(String orgId, String orgType) { return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "partyServiceCenterQtyStats", orgId, orgType); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java index 1218dc9381..09007cde56 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java @@ -623,4 +623,17 @@ public class AgencyController { String orgType = input.getOrgType(); return new Result().ok(agencyService.usingCommunityStats(orgId, orgType)); } + + /** + * @param customerId + * @return 获取当前客户下所有的社区组织,只返回id,orgIdPath,agencyName + */ + @PostMapping("getAllCommunity/{customerId}") + public Result> getAllCommunity(@PathVariable(value = "customerId") String customerId) { + if (StringUtils.isBlank(customerId)) { + return new Result<>(); + } + return new Result>().ok(agencyService.getAllCommunity(customerId)); + } + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java index 971015a298..ac166eaec3 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/BuildingController.java @@ -31,7 +31,9 @@ import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.IcBuildingUnitDao; import com.epmet.dto.BuildingTreeLevelDTO; +import com.epmet.dto.IcBuildingDTO; import com.epmet.dto.form.*; +import com.epmet.dto.form.lingshan.ScreenPartyCenterHouseDistributionFormDTO; import com.epmet.dto.result.BuildingResultDTO; import com.epmet.dto.result.BuildingResultPagedDTO; import com.epmet.dto.result.IcBuildingListResultDTO; @@ -283,5 +285,15 @@ public class BuildingController { } - + /** + * 灵山大屏:查询楼栋坐标 + * + * @param tokenDto + * @param formDTO + * @return + */ + @PostMapping("building-distribution") + public Result> buildingDistribution(@LoginUser TokenDto tokenDto, @RequestBody ScreenPartyCenterHouseDistributionFormDTO formDTO) { + return new Result>().ok(buildingService.buildingDistribution(tokenDto.getCustomerId(), formDTO.getGridId(), formDTO.getNeighborHoodId())); + } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CommunityBuildingManagerController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CommunityBuildingManagerController.java new file mode 100644 index 0000000000..379af23a48 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CommunityBuildingManagerController.java @@ -0,0 +1,275 @@ +package com.epmet.controller; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; +import com.alibaba.fastjson.JSON; +import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.constant.NumConstant; +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.exception.ExceptionUtils; +import com.epmet.commons.tools.feign.ResultDataResolver; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.DateUtils; +import com.epmet.commons.tools.utils.ExcelUtils; +import com.epmet.commons.tools.utils.FileUtils; +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.constants.ImportTaskConstants; +import com.epmet.dto.form.yt.CommunityBuildingManagerPageFormDTO; +import com.epmet.dto.result.CommunityBuildingManagerDTO; +import com.epmet.dto.result.ImportTaskCommonResultDTO; +import com.epmet.dto.result.yt.CommunityBuildingManagerResultDTO; +import com.epmet.service.CommunityBuildingManagerService; +import com.epmet.utils.ImportTaskUtils; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; +import org.apache.poi.ss.usermodel.IndexedColors; +import org.apache.poi.ss.usermodel.VerticalAlignment; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.PrintWriter; +import java.net.URLEncoder; +import java.nio.file.Path; +import java.util.Date; +import java.util.List; +import java.util.UUID; + + +/** + * 楼长单元长信息表(烟台) + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-05-06 + */ +@Slf4j +@RestController +@RequestMapping("communityBuildingManager") +public class CommunityBuildingManagerController implements ResultDataResolver { + + @Autowired + private CommunityBuildingManagerService communityBuildingManagerService; + + /** + * 列表分页查询 + * @param formDTO + * @return + */ + @RequestMapping("page") + public Result> page(@LoginUser TokenDto tokenDto, @RequestBody CommunityBuildingManagerPageFormDTO formDTO){ + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setStaffId(tokenDto.getUserId()); + PageData page = communityBuildingManagerService.page(formDTO); + return new Result>().ok(page); + } + + /** + * 查看详情 + * @param id + * @return + */ + @RequestMapping(value = "detail/{id}",method = {RequestMethod.POST}) + public Result get(@PathVariable("id") String id){ + CommunityBuildingManagerResultDTO data = communityBuildingManagerService.get(id); + return new Result().ok(data); + } + + /** + * 新增楼长/单元长 + * 同步到具体的楼栋 + * @param dto + * @return + */ + @NoRepeatSubmit + @PostMapping("save") + public Result save(@LoginUser TokenDto tokenDto,@RequestBody CommunityBuildingManagerDTO dto){ + dto.setCustomerId(tokenDto.getCustomerId()); + ValidatorUtils.validateEntity(dto, CommunityBuildingManagerDTO.AddShowGroup.class); + /* //类型:0楼长;1单元长 + if("1".equals(dto.getType())&& StringUtils.isBlank(dto.getUnitId())){ + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"单元长必须选择所属单元","单元长必须选择所属单元"); + }*/ + communityBuildingManagerService.save(dto); + return new Result(); + } + + /** + * 编辑楼长/单元长 + * 同步到具体的楼栋 + * @param dto + * @return + */ + @NoRepeatSubmit + @PostMapping("update") + public Result update(@RequestBody CommunityBuildingManagerDTO dto){ + ValidatorUtils.validateEntity(dto, CommunityBuildingManagerDTO.UpdateShowGroup.class); + /* //类型:0楼长;1单元长 + if("1".equals(dto.getType())&& StringUtils.isBlank(dto.getUnitId())){ + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"单元长必须选择所属单元","单元长必须选择所属单元"); + }*/ + communityBuildingManagerService.update(dto); + return new Result(); + } + + /** + * 批量删除楼长/单元长 + * 同时清空楼栋表里的信息 + * @param ids + * @return + */ + @PostMapping("delete") + public Result delete(@RequestBody List ids){ + if(!CollectionUtils.isEmpty(ids)){ + communityBuildingManagerService.delete(ids); + } + return new Result(); + } + + /** + * 楼长单元长-下载导入模板 + * @param response + * @throws IOException + */ + @RequestMapping(value = "download-tem", method = {RequestMethod.GET, RequestMethod.POST}) + public void downloadTemplate(HttpServletResponse response) throws IOException { + response.setCharacterEncoding("UTF-8"); + response.addHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition"); + //response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.ms-excel"); + response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("楼长单元长导入模版", "UTF-8") + ".xlsx"); + + InputStream is = this.getClass().getClassLoader().getResourceAsStream("excel/yantai/community_building_manager_import_temp.xlsx"); + try { + ServletOutputStream os = response.getOutputStream(); + IOUtils.copy(is, os); + } finally { + if (is != null) { + is.close(); + } + } + } + + /** + * 楼长单元长-列表导出 + * + * @param tokenDto + * @param formDTO + * @param response + * @return + * @throws IOException + */ + @PostMapping("export") + public void exportCommunityBuildingManager(@LoginUser TokenDto tokenDto, @RequestBody CommunityBuildingManagerPageFormDTO formDTO, HttpServletResponse response) throws IOException { + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setStaffId(tokenDto.getUserId()); + ExcelWriter excelWriter = null; + formDTO.setPageNo(NumConstant.ONE); + formDTO.setPageSize(NumConstant.TEN_THOUSAND); + try { + String fileName = "楼长单元长列表导出" + DateUtils.format(new Date()) + ".xlsx"; + WriteCellStyle headWriteCellStyle = new WriteCellStyle(); + headWriteCellStyle.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex()); + WriteCellStyle contentWriteCellStyle = new WriteCellStyle(); + contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER); + HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle); + FreezeAndFilter writeHandler = new FreezeAndFilter(); + excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), CommunityBuildingManagerResultDTO.class) + .registerWriteHandler(horizontalCellStyleStrategy) + .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) + .registerWriteHandler(writeHandler).build(); + WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build(); + PageData data = null; + do { + data = communityBuildingManagerService.page(formDTO); + formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE); + excelWriter.write(data.getList(), writeSheet); + } while (org.apache.commons.collections4.CollectionUtils.isNotEmpty(data.getList()) && data.getList().size() == formDTO.getPageSize()); + } catch (EpmetException e) { + response.reset(); + response.setCharacterEncoding("UTF-8"); + response.setHeader("content-type", "application/json; charset=UTF-8"); + PrintWriter printWriter = response.getWriter(); + Result result = new Result<>().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), e.getMsg()); + printWriter.write(JSON.toJSONString(result)); + printWriter.close(); + } catch (Exception e) { + log.error("楼长单元长导出异常export exception", e); + } finally { + if (excelWriter != null) { + excelWriter.finish(); + } + } + } + + /** + * 导入excel + * + * @return + */ + @PostMapping("import") + public Result importExcel(@LoginUser TokenDto tokenDto,@RequestPart("file") MultipartFile file) { + // 只有社区级账号可以导入 + communityBuildingManagerService.checkImportPermission(tokenDto.getCustomerId(),tokenDto.getUserId()); + + // 1.暂存文件 + String originalFilename = file.getOriginalFilename(); + String extName = originalFilename.substring(originalFilename.lastIndexOf(".")); + + Path fileSavePath; + try { + Path importPath = FileUtils.getAndCreateDirUnderEpmetFilesDir(ImportTaskConstants.COMMUNITY_BUILDING_MANAGER, "import"); + fileSavePath = importPath.resolve(UUID.randomUUID().toString().concat(extName)); + } catch (IOException e) { + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【楼长单元长导入】创建临时存储文件失败:{}", errorMsg); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "文件上传失败", "文件上传失败"); + } + + InputStream is = null; + FileOutputStream os = null; + + try { + is = file.getInputStream(); + os = new FileOutputStream(fileSavePath.toString()); + IOUtils.copy(is, os); + } catch (Exception e) { + log.error(ImportTaskConstants.COMMUNITY_BUILDING_MANAGER + "表 importExcel exception", e); + } finally { + org.apache.poi.util.IOUtils.closeQuietly(is); + org.apache.poi.util.IOUtils.closeQuietly(os); + } + + // 2.生成导入任务记录 + ImportTaskCommonResultDTO rstData = getResultDataOrThrowsException( + ImportTaskUtils.createImportTask(originalFilename, ImportTaskConstants.COMMUNITY_BUILDING_MANAGER), + ServiceConstant.EPMET_COMMON_SERVICE, + EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), + "楼长单元长导入excel错误", + "楼长单元长导入excel错误"); + + // 3.执行导入 + communityBuildingManagerService.execAsyncExcelImport(fileSavePath, rstData.getTaskId()); + return new Result(); + } + + + + +} 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 b7b13fd2ec..ff89c33b4e 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 @@ -19,6 +19,9 @@ package com.epmet.controller; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.constant.AppClientConstant; +import com.epmet.commons.tools.enums.OrgLevelEnum; +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.security.dto.TokenDto; @@ -41,6 +44,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -251,6 +255,17 @@ public class CustomerAgencyController { return new Result().ok(customerAgencyService.staffInAgencyList(tokenDTO.getUserId())); } + /** + * @param tokenDTO + * @return + * @Author sun + * @Description 工作端-查询当前人员所属组织及所有下级组织(到区县级) + **/ + @PostMapping("staffinAgencyLevelList") + public Result staffinAgencyLevelList(@LoginUser TokenDto tokenDTO) { + return new Result().ok(customerAgencyService.staffinAgencyLevelList(tokenDTO.getUserId())); + } + /** * @Description 对外接口,根据customerId返回Element UI中Tree结构的agency列表 * @param map @@ -528,5 +543,90 @@ public class CustomerAgencyController { return customerAgencyService.getCurrentUserCommunityInfo(tokenDTO); } + /** + * @Description: 返回下级数量统计 + * @param dto: + * @Return com.epmet.commons.tools.utils.Result> + * @Author: lichao + * @Date: 2023/4/7 14:48 + */ + @PostMapping("getAgencyCountList") + public Result> getAgencyCountList(@RequestBody CommunityCountCensusFormDTO dto){ + return new Result>().ok(customerAgencyService.getAgencyCountList(dto)); + } + + /** + * @Description: 获取下级组织数量统计 + * @param dto: + * @Return com.epmet.commons.tools.utils.Result> + * @Author: lichao + * @Date: 2023/4/7 15:08 + */ + @PostMapping("getCommunityCountList") + public Result> getCommunityCountList(@RequestBody CommunityCountCensusFormDTO dto){ + return new Result>().ok(customerAgencyService.getCommunityCountList(dto)); + } + + /** + * @Description: 根据agencyId获取下级社区列表 + * @param dto: + * @Return com.epmet.commons.tools.utils.Result> + * @Author: lichao + * @Date: 2023/4/7 16:49 + */ + @PostMapping("getCommunityList") + public Result> getCommunityList(@RequestBody CommunityCountCensusFormDTO dto){ + return new Result>().ok(customerAgencyService.getCommunityList(dto)); + } + + /** + * 返回区县列表 + * @param tokenDto + * @return + */ + @PostMapping("districtList") + public Result> districtList(@LoginUser TokenDto tokenDto){ + Map params=new HashMap<>(); + params.put("CUSTOMER_ID",tokenDto.getCustomerId()); + params.put("LEVEL",OrgLevelEnum.DISTRICT.getCode()); + params.put("PID",null); + return new Result>().ok(customerAgencyService.list(params)); + } + + /** + * 返回街道列表,必传区县 + * @param tokenDto + * @param districtId + * @return + */ + @PostMapping("streetList/{districtId}") + public Result> streetList(@LoginUser TokenDto tokenDto,@PathVariable("districtId")String districtId){ + if(StringUtils.isBlank(districtId)){ + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"districtId为空","请先选择区县"); + } + Map params=new HashMap<>(); + params.put("CUSTOMER_ID",tokenDto.getCustomerId()); + params.put("LEVEL",OrgLevelEnum.STREET.getCode()); + params.put("PID",districtId); + return new Result>().ok(customerAgencyService.list(params)); + } + + /** + * 返回社区列表,街道必传 + * @param tokenDto + * @param streetId + * @return + */ + @PostMapping("communityList/{streetId}") + public Result> communityList(@LoginUser TokenDto tokenDto,@PathVariable("streetId")String streetId){ + if(StringUtils.isBlank(streetId)){ + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"streetId为空","请先选择街道"); + } + Map params=new HashMap<>(); + params.put("CUSTOMER_ID",tokenDto.getCustomerId()); + params.put("LEVEL",OrgLevelEnum.COMMUNITY.getCode()); + params.put("PID",streetId); + return new Result>().ok(customerAgencyService.list(params)); + } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/DepartmentController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/DepartmentController.java index da70a814b7..c3c22a644e 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/DepartmentController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/DepartmentController.java @@ -2,32 +2,60 @@ package com.epmet.controller; 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.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.exception.ExceptionUtils; +import com.epmet.commons.tools.feign.ResultDataResolver; import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.EpmetRequestHolder; +import com.epmet.commons.tools.utils.FileUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.constants.ImportTaskConstants; +import com.epmet.dto.CustomerAgencyDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; +import com.epmet.service.CustomerAgencyService; import com.epmet.service.CustomerStaffAgencyService; import com.epmet.service.DepartmentService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.URLEncoder; +import java.nio.file.Path; import java.util.List; +import java.util.UUID; /** * 部门 * * @author sun */ +@Slf4j @RestController @RequestMapping("department") -public class DepartmentController { +public class DepartmentController implements ResultDataResolver { @Autowired private DepartmentService departmentService; @Autowired private CustomerStaffAgencyService customerStaffAgencyService; + @Autowired + private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient; + @Autowired + private CustomerAgencyService customerAgencyService; /** * 添加部门人员 @@ -198,6 +226,88 @@ public class DepartmentController { return new Result().ok(departmentService.notSyncDept(formDTO)); } + /** + * 部门导入模板,来源于烟台需求 + * @param response + * @throws IOException + */ + @RequestMapping(value = "yantai/download-tem", method = {RequestMethod.GET, RequestMethod.POST}) + public void downloadTemplate(HttpServletResponse response) throws IOException { + response.setCharacterEncoding("UTF-8"); + response.addHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition"); + //response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.ms-excel"); + response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("部门导入模版", "UTF-8") + ".xlsx"); + + InputStream is = this.getClass().getClassLoader().getResourceAsStream("excel/yantai/yantai_dept_import_tem.xlsx"); + try { + ServletOutputStream os = response.getOutputStream(); + IOUtils.copy(is, os); + } finally { + if (is != null) { + is.close(); + } + } + } + + /** + * 部门导入,来源于烟台需求 + * @param agencyId + * @param file + * @return + */ + @PostMapping("yantai/import") + public Result importExcel(@RequestParam(value = "agencyId",required = true)String agencyId, @RequestPart("file") MultipartFile file) { + CustomerAgencyDTO customerAgencyDTO=customerAgencyService.get(agencyId); + if (null == customerAgencyDTO) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "组织不存在,agencyId" + agencyId, "只有组织才可以导入部门"); + } + + // 1.暂存文件 + String originalFilename = file.getOriginalFilename(); + String extName = originalFilename.substring(originalFilename.lastIndexOf(".")); + + Path fileSavePath; + try { + Path importPath = FileUtils.getAndCreateDirUnderEpmetFilesDir("customer_dept", "import"); + fileSavePath = importPath.resolve(UUID.randomUUID().toString().concat(extName)); + } catch (IOException e) { + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【部门导入】创建临时存储文件失败:{}", errorMsg); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "文件上传失败", "文件上传失败"); + } + + InputStream is = null; + FileOutputStream os = null; + + try { + is = file.getInputStream(); + os = new FileOutputStream(fileSavePath.toString()); + IOUtils.copy(is, os); + } catch (Exception e) { + log.error("method exception", e); + } finally { + org.apache.poi.util.IOUtils.closeQuietly(is); + org.apache.poi.util.IOUtils.closeQuietly(os); + } + + // 2.生成导入任务记录 + ImportTaskCommonFormDTO importTaskForm = new ImportTaskCommonFormDTO(); + importTaskForm.setOperatorId(EpmetRequestHolder.getLoginUserId()); + importTaskForm.setBizType(ImportTaskConstants.BIZ_TYPE_IC_ENTERPRISE); + importTaskForm.setOriginFileName(originalFilename); + + ImportTaskCommonResultDTO rstData = getResultDataOrThrowsException(commonServiceOpenFeignClient.createImportTask(importTaskForm), + ServiceConstant.EPMET_COMMON_SERVICE, + EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), + "excel导入部门错误", + "部门导入失败"); + // 3.执行导入 + departmentService.execAsyncExcelImport(fileSavePath, rstData.getTaskId(),agencyId,originalFilename); + return new Result(); + } + + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java index 53738a3d4c..09e4793318 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java @@ -48,10 +48,14 @@ import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.IcHouseDao; +import com.epmet.dto.IcHouseDTO; import com.epmet.dto.form.*; +import com.epmet.dto.form.lingshan.PartyCenterHousePageFormDTO; +import com.epmet.dto.form.lingshan.ScreenPartyCenterHouseDistributionFormDTO; import com.epmet.dto.result.*; +import com.epmet.dto.result.lingshan.HouseDetailResultDTO; +import com.epmet.dto.result.lingshan.PartyCenterHouseResultDTO; import com.epmet.entity.CustomerOrgParameterEntity; -import com.epmet.feign.EpmetAdminOpenFeignClient; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient; @@ -100,9 +104,6 @@ public class HouseController implements ResultDataResolver { @Autowired private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient; - @Autowired - private EpmetAdminOpenFeignClient epmetAdminOpenFeignClient; - @Autowired private IcHouseDao icHouseDao; @Autowired @@ -691,4 +692,53 @@ public class HouseController implements ResultDataResolver { return new Result>().ok(r); } + /** + * 群租房列表来源于烟台需求 + * @param tokenDto + * @param formDTO + * @return + */ + @PostMapping("group-rent-house-list") + @MaskResponse(fieldNames = {"ownerIdCard", "ownerPhone"}, + fieldsMaskType = {MaskResponse.MASK_TYPE_ID_CARD, MaskResponse.MASK_TYPE_MOBILE}) + public Result> groupRentHouseList(@LoginUser TokenDto tokenDto, @RequestBody GroupRentHouseFormDTO formDTO) { + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setStaffId(tokenDto.getUserId()); + return new Result>().ok(houseService.groupRentHouseList(formDTO)); + } + + + + /** + * 灵山大屏:查询房屋坐标点位 + * 支持根据网格\小区\楼栋id查询 + */ + @PostMapping("house-distribution") + public Result> houseDistribution(@LoginUser TokenDto tokenDto, @RequestBody ScreenPartyCenterHouseDistributionFormDTO formDTO) { + return new Result>().ok(houseService.houseDistribution(tokenDto.getCustomerId(), formDTO.getGridId(), formDTO.getNeighborHoodId(), formDTO.getBuildingId())); + } + + /** + * 灵山大屏:点击房屋,显示房屋详情 + * @param houseId + * @return + */ + @MaskResponse(fieldNames = {"showOwnerIdCard", "showOwnerPhone"}, fieldsMaskType = {MaskResponse.MASK_TYPE_ID_CARD, MaskResponse.MASK_TYPE_MOBILE}) + @PostMapping("houseDetail/{houseId}") + public Result queryHouseDetail(@PathVariable("houseId")String houseId){ + return new Result().ok(houseService.queryHouseDetail(houseId)); + } + + /** + * 灵山项目:根据楼栋id返回房屋列表,分页,且返回党员中心户标志, 联户群众数 + * + * @param formDTO + * @return + */ + @MaskResponse(fieldNames = {"showOwnerPhone", "showOwnerIdCard"}, fieldsMaskType = {MaskResponse.MASK_TYPE_MOBILE, MaskResponse.MASK_TYPE_ID_CARD}) + @PostMapping("lingshanScreen/houseList") + public Result> queryHouseListForLingShanScreen(@RequestBody PartyCenterHousePageFormDTO formDTO) { + return new Result>().ok(houseService.queryHouseListForLingShanScreen(formDTO.getPageNo(), formDTO.getPageSize(), formDTO.getBuildingId())); + } + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcEnterpriseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcEnterpriseController.java index 7d9afd1a83..2df8e63140 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcEnterpriseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcEnterpriseController.java @@ -22,14 +22,15 @@ import com.epmet.commons.tools.utils.*; import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.constants.ImportTaskConstants; -import com.epmet.dto.IcEnterpriseChangeRecordDTO; import com.epmet.dto.form.EnterpriseFormDTO; import com.epmet.dto.form.EnterprisePageFormDTO; import com.epmet.dto.form.EnterprisePatrolFormDTO; import com.epmet.dto.form.ImportTaskCommonFormDTO; +import com.epmet.dto.form.yt.EnterpriseCountPlaceTypeFormDTO; import com.epmet.dto.result.EnterpriseDetailDTO; import com.epmet.dto.result.EnterprisePatrolResultDTO; import com.epmet.dto.result.ImportTaskCommonResultDTO; +import com.epmet.dto.result.yt.EnterpriseCountPlaceTypeResDTO; import com.epmet.excel.EnterpriseExportExcelDTO; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.service.IcEnterpriseService; @@ -69,6 +70,7 @@ public class IcEnterpriseController implements ResultDataResolver { private IcEnterpriseService icEnterpriseService; @Autowired private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient; + /** * 企事业单位巡查】新增/编辑 * @@ -145,7 +147,7 @@ public class IcEnterpriseController implements ResultDataResolver { formDTO.setPageNo(NumConstant.ONE); formDTO.setPageSize(NumConstant.TEN_THOUSAND); try { - String fileName = "企事业单位" + DateUtils.format(new Date()) + ".xlsx"; + String fileName = "九小场所" + DateUtils.format(new Date()) + ".xlsx"; // 头的策略 WriteCellStyle headWriteCellStyle = new WriteCellStyle(); // 背景设置为红色 @@ -176,7 +178,7 @@ public class IcEnterpriseController implements ResultDataResolver { printWriter.write(JSON.toJSONString(result)); printWriter.close(); } catch (Exception e) { - log.error("企事业单位导出异常export exception", e); + log.error("九小场所巡查导出异常export exception", e); } finally { if (excelWriter != null) { excelWriter.finish(); @@ -221,7 +223,7 @@ public class IcEnterpriseController implements ResultDataResolver { response.addHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition"); //response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.ms-excel"); response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); - response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("企事业单位导入模板", "UTF-8") + ".xlsx"); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("九小场所巡查导入模版", "UTF-8") + ".xlsx"); InputStream is = this.getClass().getClassLoader().getResourceAsStream("excel/enterprise_patrol_import_tem.xlsx"); try { @@ -359,4 +361,17 @@ public class IcEnterpriseController implements ResultDataResolver { icEnterpriseService.qrCodeExport(formDTO,response); } + /** + * 九小场所分析:返回各个场所类型的数量 + * + * @param formDTO + * @return + */ + @PostMapping("count-type") + public Result countType(@RequestBody EnterpriseCountPlaceTypeFormDTO formDTO) { + return new Result().ok(icEnterpriseService.countType(formDTO.getOrgId(), formDTO.getOrgType())); + } + + + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java index ae3393cf17..1928b776d1 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java @@ -17,28 +17,57 @@ package com.epmet.controller; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; +import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.annotation.MaskResponse; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.dto.form.PageFormDTO; import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.page.PageData; +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.security.dto.TokenDto; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.DateUtils; +import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dto.IcHouseDTO; import com.epmet.dto.form.CheckHouseInfoFormDTO; +import com.epmet.dto.form.HouseCountPictureFormDTO; import com.epmet.dto.form.HouseFormDTO; import com.epmet.dto.form.lingshan.PartyCenterHousePageFormDTO; import com.epmet.dto.result.HouseAgencyInfoResultDTO; import com.epmet.dto.result.HouseInfoDTO; import com.epmet.dto.result.HouseListResultDTO; import com.epmet.dto.result.HousesNameResultDTO; +import com.epmet.dto.result.lingshan.PartyCenterHouseBindLianHuFormDTO; +import com.epmet.dto.result.lingshan.PartyCenterHouseResultDTO; +import com.epmet.dto.result.*; +import com.epmet.excel.EnterpriseExportExcelDTO; +import com.epmet.excel.HousePictureListExcelDTO; import com.epmet.dto.result.lingshan.*; import com.epmet.service.IcHouseService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.poi.ss.usermodel.IndexedColors; +import org.apache.poi.ss.usermodel.VerticalAlignment; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.Date; import java.util.List; import java.util.Map; @@ -49,6 +78,7 @@ import java.util.Map; * @author generator generator@elink-cn.com * @since v1.0.0 2021-10-25 */ +@Slf4j @RestController @RequestMapping("ichouse") public class IcHouseController { @@ -165,6 +195,87 @@ public class IcHouseController { return icHouseService.checkHomeInfo(formDTO); } + /** + * @Description: 房屋画像-用途统计 + * @param dto: + * @Return com.epmet.commons.tools.utils.Result + * @Author: lichao + * @Date: 2023/4/11 15:08 + */ + @PostMapping("getHousePurposeCount") + public Result getHousePurposeCount(@RequestBody HouseCountPictureFormDTO dto){ + return new Result().ok(icHouseService.getHousePurposeCount(dto)); + } + + + /** + * @Description: 房屋画像-状态统计 + * @param dto: + * @Return com.epmet.commons.tools.utils.Result + * @Author: lichao + * @Date: 2023/4/11 15:07 + */ + @PostMapping("getHouseStatusCount") + public Result getHouseStatusCount(@RequestBody HouseCountPictureFormDTO dto){ + return new Result().ok(icHouseService.getHouseStatusCount(dto)); + } + + /** + * @Description: 房屋画像-列表 + * @param dto: + * @Return com.epmet.commons.tools.utils.Result> + * @Author: lichao + * @Date: 2023/4/11 16:20 + */ + @PostMapping("getHousePictureList") + public Result> getHousePictureList(@RequestBody HouseCountPictureFormDTO dto){ + return new Result>().ok(icHouseService.getHousePictureList(dto)); + } + + @PostMapping("export") + public void export(@RequestBody HouseCountPictureFormDTO formDTO, HttpServletResponse response) throws IOException { + ExcelWriter excelWriter = null; + formDTO.setPageNo(NumConstant.ONE); + formDTO.setPageSize(NumConstant.TEN_THOUSAND); + try { + String fileName = "房屋列表" + DateUtils.format(new Date()) + ".xlsx"; + // 头的策略 + WriteCellStyle headWriteCellStyle = new WriteCellStyle(); + // 背景设置为红色 + headWriteCellStyle.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex()); + WriteCellStyle contentWriteCellStyle = new WriteCellStyle(); + contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER); + HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle); + FreezeAndFilter writeHandler = new FreezeAndFilter(); + excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), HousePictureListExcelDTO.class) + .registerWriteHandler(horizontalCellStyleStrategy) + .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) + .registerWriteHandler(writeHandler).build(); + WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build(); + PageData data = null; + List list = null; + do { + data = icHouseService.getHousePictureList(formDTO); + list = ConvertUtils.sourceToTarget(data.getList(), HousePictureListExcelDTO.class); + formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE); + excelWriter.write(list, writeSheet); + } while (CollectionUtils.isNotEmpty(list) && list.size() == formDTO.getPageSize()); + } catch (EpmetException e) { + response.reset(); + response.setCharacterEncoding("UTF-8"); + response.setHeader("content-type", "application/json; charset=UTF-8"); + PrintWriter printWriter = response.getWriter(); + Result result = new Result<>().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), e.getMsg()); + printWriter.write(JSON.toJSONString(result)); + printWriter.close(); + } catch (Exception e) { + log.error("房屋列表导出异常export exception", e); + } finally { + if (excelWriter != null) { + excelWriter.finish(); + } + } + } /** * 灵山项目-联户绑定 * 该接口返回:党员中心户房屋列表;默认登录用户查询本组织及下级 diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java index 43b2d4bd60..2e39b1f211 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java @@ -40,6 +40,7 @@ import com.epmet.dto.form.IcNeighborHoodAddFormDTO; import com.epmet.dto.form.ImportInfoFormDTO; import com.epmet.dto.form.ImportTaskCommonFormDTO; import com.epmet.dto.form.NeighborHoodOptionFormDTO; +import com.epmet.dto.form.yt.ChooseGridFormDTO; import com.epmet.dto.result.BuildingResultDTO; import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; @@ -173,6 +174,21 @@ public class IcNeighborHoodController { return new Result>().ok(list); } + /** + * 入参:gridId、agencyId + * 返回当前组织及下级下的所有小区 + * @param tokenDto + * @param formDTO + * @return + */ + @PostMapping("neighborhood-options-yantai") + public Result> queryNeighborHoodOptionsYanTai(@LoginUser TokenDto tokenDto, @RequestBody NeighborHoodOptionFormDTO formDTO) { + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setStaffId(tokenDto.getUserId()); + List list=icNeighborHoodService.queryNeighborHoodOptionsYanTai(formDTO); + return new Result>().ok(list); + } + /** * 获取用户组织下小区列表 * @@ -183,8 +199,10 @@ public class IcNeighborHoodController { * @date 2022/8/19 15:56 */ @PostMapping("neighborhoodlist") - public Result> getNeighborhoodList(@LoginUser TokenDto tokenDto, @RequestBody IcNeighborHoodDTO dto) { - return new Result>().ok(icNeighborHoodService.getNeighborhoodList(tokenDto, dto)); + public Result> getNeighborhoodList(@LoginUser TokenDto tokenDto, @RequestBody ChooseGridFormDTO dto) { + ValidatorUtils.validateEntity(dto, ChooseGridFormDTO.AddUserInternalGroup.class); + dto.setCustomerId(tokenDto.getCustomerId()); + return new Result>().ok(icNeighborHoodService.getNeighborhoodList(dto)); } /** diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/PropertyManagementController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/PropertyManagementController.java index ba24389143..c6bfacb04e 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/PropertyManagementController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/PropertyManagementController.java @@ -17,24 +17,55 @@ package com.epmet.controller; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; +import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.constant.NumConstant; +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.exception.ExceptionUtils; +import com.epmet.commons.tools.feign.ResultDataResolver; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.DateUtils; +import com.epmet.commons.tools.utils.ExcelUtils; +import com.epmet.commons.tools.utils.FileUtils; import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dto.IcPropertyManagementDTO; import com.epmet.dto.form.IcPropertyManagementFormDTO; import com.epmet.dto.result.IcPropertyManagementResultDTO; +import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.service.PropertyManagementService; +import com.epmet.utils.ImportTaskUtils; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.usermodel.IndexedColors; +import org.apache.poi.ss.usermodel.VerticalAlignment; 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 org.springframework.http.HttpHeaders; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.PrintWriter; +import java.net.URLEncoder; +import java.nio.file.Path; +import java.util.*; /** @@ -43,19 +74,21 @@ import java.util.Map; * @author generator generator@elink-cn.com * @since v1.0.0 2021-10-25 */ +@Slf4j @RestController @RequestMapping("propertymanagement") -public class PropertyManagementController { +public class PropertyManagementController implements ResultDataResolver { @Autowired private PropertyManagementService propertyManagementService; + /** - * 分页查询物业列表 + * 物业管理-分页查询物业列表 */ @PostMapping("page") public Result> page(@RequestBody IcPropertyManagementFormDTO formDTO){ - ValidatorUtils.validateEntity(formDTO,IcPropertyManagementFormDTO.PageGroup.class); - return new Result>().ok(propertyManagementService.page(formDTO.getPageNo(),formDTO.getPageSize(),formDTO.getName())); + return new Result>().ok(propertyManagementService.page(formDTO.getPageNo(),formDTO.getPageSize(),formDTO.getName(), + formDTO.getContactName(),formDTO.getContactMobile())); } /** @@ -68,7 +101,7 @@ public class PropertyManagementController { } /** - * 新增物业 + * 物业管理-新增物业 * 新增小区页面,添加小区也调用此接口 * @param tokenDTO * @param formDTO @@ -84,6 +117,11 @@ public class PropertyManagementController { return new Result().ok(map); } + /** + * 物业管理-修改 + * @param formDTO + * @return + */ @PostMapping("update") public Result update(@RequestBody IcPropertyManagementFormDTO formDTO){ //效验数据 @@ -92,12 +130,178 @@ public class PropertyManagementController { return new Result(); } + /** + * 物业管理-删除 + * @param formDTO + * @return + */ @PostMapping("delete") public Result delete(@RequestBody IcPropertyManagementFormDTO formDTO){ //效验数据 ValidatorUtils.validateEntity(formDTO, IcPropertyManagementFormDTO.DeleteGroup.class); - propertyManagementService.delete(formDTO); + propertyManagementService.delete(formDTO.getId()); + return new Result(); + } + + /** + * 物业管理-批量删除 + * + * @param ids + * @return 返回失败的id列表 + */ + @PostMapping("delete-batch") + public Result> deleteBatch(@RequestBody List ids) { + if (CollectionUtils.isNotEmpty(ids)) { + List failedIdList = propertyManagementService.deleteBatch(ids); + if(CollectionUtils.isEmpty(failedIdList)){ + return new Result<>(); + } + Result result = new Result>().ok(failedIdList); + result.setMsg("部门物业删除失败"); + result.setCode(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode()); + return result; + } + return new Result(); + } + + /** + * 物业管理-下载导入模板 + * @param response + * @throws IOException + */ + @RequestMapping(value = "download-tem", method = {RequestMethod.GET, RequestMethod.POST}) + public void downloadTemplate(HttpServletResponse response) throws IOException { + response.setCharacterEncoding("UTF-8"); + response.addHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition"); + //response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.ms-excel"); + response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("物业管理导入模版", "UTF-8") + ".xlsx"); + + InputStream is = this.getClass().getClassLoader().getResourceAsStream("excel/yantai/ic_property_management_temp.xlsx"); + try { + ServletOutputStream os = response.getOutputStream(); + IOUtils.copy(is, os); + } finally { + if (is != null) { + is.close(); + } + } + } + + + /** + * 物业管理-列表导出 + * + * @param tokenDto + * @param formDTO + * @param response + * @return + * @throws IOException + */ + @PostMapping("export") + public void exportIcPropertyManagement(@LoginUser TokenDto tokenDto, @RequestBody IcPropertyManagementFormDTO formDTO, HttpServletResponse response) throws IOException { + formDTO.setCustomerId(tokenDto.getCustomerId()); + ExcelWriter excelWriter = null; + formDTO.setPageNo(NumConstant.ONE); + formDTO.setPageSize(NumConstant.TEN_THOUSAND); + try { + String fileName = "物业管理" + DateUtils.format(new Date()) + ".xlsx"; + WriteCellStyle headWriteCellStyle = new WriteCellStyle(); + headWriteCellStyle.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex()); + WriteCellStyle contentWriteCellStyle = new WriteCellStyle(); + contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER); + HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle); + FreezeAndFilter writeHandler = new FreezeAndFilter(); + excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), IcPropertyManagementDTO.class) + .registerWriteHandler(horizontalCellStyleStrategy) + .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) + .registerWriteHandler(writeHandler).build(); + WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build(); + PageData data = null; + do { + data = propertyManagementService.page(formDTO.getPageNo(), formDTO.getPageSize(), formDTO.getName(), formDTO.getContactName(), formDTO.getContactMobile()); + formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE); + excelWriter.write(data.getList(), writeSheet); + } while (CollectionUtils.isNotEmpty(data.getList()) && data.getList().size() == formDTO.getPageSize()); + } catch (EpmetException e) { + response.reset(); + response.setCharacterEncoding("UTF-8"); + response.setHeader("content-type", "application/json; charset=UTF-8"); + PrintWriter printWriter = response.getWriter(); + Result result = new Result<>().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), e.getMsg()); + printWriter.write(JSON.toJSONString(result)); + printWriter.close(); + } catch (Exception e) { + log.error("物业管理导出异常export exception", e); + } finally { + if (excelWriter != null) { + excelWriter.finish(); + } + } + } + + /** + * 获取物业详情 + * + * @param id + * @return + */ + @PostMapping("detail/{id}") + public Result getDetail(@PathVariable("id") String id) { + if (StringUtils.isBlank(id)) { + return new Result<>(); + } + return new Result().ok(propertyManagementService.getDetail(id)); + } + + /** + * 导入excel + * + * @return + */ + @PostMapping("import") + public Result importExcel(@RequestPart("file") MultipartFile file) { + // 1.暂存文件 + String originalFilename = file.getOriginalFilename(); + String extName = originalFilename.substring(originalFilename.lastIndexOf(".")); + + Path fileSavePath; + try { + Path importPath = FileUtils.getAndCreateDirUnderEpmetFilesDir(ImportTaskConstants.IC_PROPERTY_MANAGEMENT, "import"); + fileSavePath = importPath.resolve(UUID.randomUUID().toString().concat(extName)); + } catch (IOException e) { + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【物业管理导入】创建临时存储文件失败:{}", errorMsg); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "文件上传失败", "文件上传失败"); + } + + InputStream is = null; + FileOutputStream os = null; + + try { + is = file.getInputStream(); + os = new FileOutputStream(fileSavePath.toString()); + IOUtils.copy(is, os); + } catch (Exception e) { + log.error(ImportTaskConstants.IC_PROPERTY_MANAGEMENT + "表 importExcel exception", e); + } finally { + org.apache.poi.util.IOUtils.closeQuietly(is); + org.apache.poi.util.IOUtils.closeQuietly(os); + } + + // 2.生成导入任务记录 + ImportTaskCommonResultDTO rstData = getResultDataOrThrowsException( + ImportTaskUtils.createImportTask(originalFilename, ImportTaskConstants.IC_PROPERTY_MANAGEMENT), + ServiceConstant.EPMET_COMMON_SERVICE, + EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), + "物业管理导入excel错误", + "物业管理导入excel错误"); + + // 3.执行导入 + propertyManagementService.execAsyncExcelImport(fileSavePath, rstData.getTaskId()); return new Result(); } + + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/StaffController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/StaffController.java index bcc8e2f55e..1495e595a0 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/StaffController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/StaffController.java @@ -5,31 +5,54 @@ package com.epmet.controller; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.annotation.RequirePermission; import com.epmet.commons.tools.constant.AppClientConstant; +import com.epmet.commons.tools.constant.ServiceConstant; 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.feign.ResultDataResolver; import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.EpmetRequestHolder; +import com.epmet.commons.tools.utils.FileUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dto.form.*; import com.epmet.dto.result.*; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; +import com.epmet.remote.EpmetUserRemoteService; import com.epmet.service.StaffService; +import com.epmet.utils.ImportTaskUtils; +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.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.URLEncoder; +import java.nio.file.Path; import java.util.List; +import java.util.UUID; /** * 组织结构-工作人员 * @author zhaoqifeng * @date 2020/4/23 17:59 */ +@Slf4j @RestController @RequestMapping("staff") -public class StaffController { +public class StaffController implements ResultDataResolver { @Autowired private StaffService staffService; + @Autowired + private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient; /** * 组织首页-工作人员列表 * @param fromDTO @@ -225,6 +248,54 @@ public class StaffController { return staffService.addStaffV2(fromDTO); } + @PostMapping("staffimport") + public Result buildingImportExcel(@RequestParam("file") MultipartFile file,@RequestParam("orgType") String orgType,@RequestParam("orgId") String orgId){ + + String userId = EpmetRequestHolder.getHeader(AppClientConstant.USER_ID); + + // 1.暂存文件 + String originalFilename = file.getOriginalFilename(); + String extName = originalFilename.substring(originalFilename.lastIndexOf(".")); + + Path fileSavePath; + try { + Path importPath = FileUtils.getAndCreateDirUnderEpmetFilesDir("staff", "import"); + fileSavePath = importPath.resolve(UUID.randomUUID().toString().concat(extName)); + } catch (IOException e) { + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【核酸检测导入】创建临时存储文件失败:{}", errorMsg); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "文件上传失败", "文件上传失败"); + } + + InputStream is = null; + FileOutputStream os = null; + + try { + is = file.getInputStream(); + os = new FileOutputStream(fileSavePath.toString()); + IOUtils.copy(is, os); + } catch (Exception e) { + log.error("method exception", e); + } finally { + org.apache.poi.util.IOUtils.closeQuietly(is); + org.apache.poi.util.IOUtils.closeQuietly(os); + } + + // 2.生成导入任务记录 + ImportTaskCommonResultDTO rstData = getResultDataOrThrowsException( + ImportTaskUtils.createImportTask(originalFilename, ImportTaskConstants.BIZ_TYPE_CUSTOMER_STAFF), + ServiceConstant.EPMET_COMMON_SERVICE, + EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), + "excel导入客户信息错误", + "导入客户信息失败"); + + // 3.执行导入 + staffService.execAsyncExcelImport(fileSavePath, rstData.getTaskId(),orgType,orgId); + + return new Result(); + + } + /** * 【通讯录】人员添加-平阴 * @author zhy @@ -251,4 +322,34 @@ public class StaffController { return new Result>().ok(staffService.staffOrgList(tokenDto)); } + /** + * 下载工作人员导入excel模板 + * + * @return + */ + @PostMapping("import/download-template") + public void downloadIcResiDownloadTemplate(HttpServletResponse response) { + InputStream is = null; + ServletOutputStream os = null; + try { + os = response.getOutputStream(); + + is = this.getClass().getClassLoader().getResourceAsStream("excel/customer_staff_import_template.xlsx"); + + response.setHeader("Access-Control-Expose-Headers", "Content-Disposition"); + response.setHeader("content-Type", "application/vnd.ms-excel"); + response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode("工作人员导入模板.xlsx", "UTF-8")); + + IOUtils.copy(is, os); + } catch (Exception e) { + String errorStackTrace = ExceptionUtils.getErrorStackTrace(e); + log.error("下载工作人员导入模板失败:{}", errorStackTrace); + + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "下载工作人员导入模板失败"); + } finally { + org.apache.poi.util.IOUtils.closeQuietly(is); + org.apache.poi.util.IOUtils.closeQuietly(os); + } + } + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/StaffLoginLogController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/StaffLoginLogController.java new file mode 100644 index 0000000000..e79c65cd41 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/StaffLoginLogController.java @@ -0,0 +1,221 @@ +package com.epmet.controller; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; +import com.alibaba.fastjson.JSON; +import com.alibaba.nacos.client.naming.utils.CollectionUtils; +import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; +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.DateUtils; +import com.epmet.commons.tools.utils.ExcelUtils; +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dto.form.yt.CommunityLoginFormDTO; +import com.epmet.dto.form.yt.CountActivityFormDTO; +import com.epmet.dto.form.yt.LoginLogCountByLevelFormDTO; +import com.epmet.dto.result.yt.ActivityTatalInfo; +import com.epmet.dto.result.yt.CommunityLoginResultDTO; +import com.epmet.dto.result.yt.LoginLogCountByLevelResultDTO; +import com.epmet.excel.yt.AccountActivityExcel; +import com.epmet.excel.yt.AccountInactivityExcel; +import com.epmet.service.StaffLoginLogService; +import lombok.extern.slf4j.Slf4j; +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 com.epmet.dto.result.yt.AccountActivityInfo; + +import javax.servlet.http.HttpServletResponse; +import java.io.PrintWriter; +import java.util.Date; +import java.util.List; + + +/** + * 工作人员登录日志表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-04 + */ +@Slf4j +@RestController +@RequestMapping("staffLoginLog") +public class StaffLoginLogController { + + @Autowired + private StaffLoginLogService staffLoginLogService; + + + /** + * 返回市级账号登录总次数、区县级账号登录总次数、镇街级账号登录总次数、社区级账号登录总次数 + * + * @param formDTO + * @return + */ + @PostMapping("count-level") + public Result countLevel(@RequestBody LoginLogCountByLevelFormDTO formDTO) { + return new Result().ok(staffLoginLogService.countLevel(formDTO.getOrgId(), formDTO.getLevel(), formDTO.getStartDate(), formDTO.getEndDate())); + } + + /** + * 下级社区账号登录次数排名 + * + * @return + */ + @PostMapping("community-count") + public Result> communityCount(@RequestBody CommunityLoginFormDTO formDTO) { + return new Result>().ok(staffLoginLogService.pageCommunityCount(formDTO)); + } + + /** + * 下级社区账号登录次数排名 + * + * @return + */ + @PostMapping("community-count-export") + public void communityCount(HttpServletResponse response, @RequestBody CommunityLoginFormDTO formDTO) throws Exception { + ExcelWriter excelWriter = null; + formDTO.setPageNo(NumConstant.ONE); + formDTO.setPageSize(NumConstant.TEN_THOUSAND); + try { + String fileName = "社区级账号登录情况" + DateUtils.format(new Date()) + ".xlsx"; + excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), CommunityLoginResultDTO.class).build(); + WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build(); + PageData data = null; + List list = null; + do { + // 默认查询本组织及下级 + data = staffLoginLogService.pageCommunityCount(formDTO); + list = ConvertUtils.sourceToTarget(data.getList(), CommunityLoginResultDTO.class); + formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE); + excelWriter.write(list, writeSheet); + } while (org.apache.commons.collections4.CollectionUtils.isNotEmpty(list) && list.size() == formDTO.getPageSize()); + } catch (EpmetException e) { + response.reset(); + response.setCharacterEncoding("UTF-8"); + response.setHeader("content-type", "application/json; charset=UTF-8"); + PrintWriter printWriter = response.getWriter(); + Result result = new Result<>().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), e.getMsg()); + printWriter.write(JSON.toJSONString(result)); + printWriter.close(); + } catch (Exception e) { + log.error("社区级账号登录情况export exception", e); + } finally { + if (excelWriter != null) { + excelWriter.finish(); + } + } + } + + /** + * 柱状图:下级组织账号登录次数汇总 + * + * @param formDTO + * @return + */ + @PostMapping("sub-count") + public Result> querySubCount(@RequestBody LoginLogCountByLevelFormDTO formDTO) { + return new Result>().ok(staffLoginLogService.querySubCount(formDTO.getOrgId(), formDTO.getLevel(), formDTO.getStartDate(), formDTO.getEndDate())); + } + + /** + * 查看区县 + * + * @param formDTO + * @return + */ + @PostMapping("district-count") + public Result> districtCount(@RequestBody CommunityLoginFormDTO formDTO) { + return new Result>().ok(staffLoginLogService.pageDistrictCount(formDTO.getOrgId(), + formDTO.getLevel(), formDTO.getStartDate(), + formDTO.getEndDate(), formDTO.getIsPage(), + formDTO.getPageNo(), formDTO.getPageSize())); + } + + /** + * 查看街镇 + * + * @param formDTO + * @return + */ + @PostMapping("street-count") + public Result> streetCount(@RequestBody CommunityLoginFormDTO formDTO) { + return new Result>().ok(staffLoginLogService.streetCount(formDTO.getOrgId(), + formDTO.getStartDate(), + formDTO.getEndDate(), formDTO.getIsPage(), + formDTO.getPageNo(), formDTO.getPageSize())); + } + + /** + * 柱状图点击区县,查看街道,调用此接口 + * 计算的是街道的工作人员+街道下所有社区的人 的总次数 + * @param formDTO + * @return + */ + @PostMapping("streetTotal") + public Result> streetTotal(@RequestBody CommunityLoginFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO,CommunityLoginFormDTO.StreetTotalShowGroup.class); + return new Result>().ok(staffLoginLogService.streetTotal(formDTO.getOrgId(), + formDTO.getStartDate(), + formDTO.getEndDate(), + formDTO.getPageNo(), formDTO.getPageSize())); + } + + /*** + * 获取当前agencyid下 下级组织活跃情况 + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + * @author qushutong + * @date 2023/4/6 13:41 + */ + @PostMapping("getAccountActivityInfo") + public Result> getAccountActivityInfo(@RequestBody CountActivityFormDTO formDTO) { + return new Result>().ok(staffLoginLogService.getAccountActivityInfo(formDTO)); + } + + /*** + * 获取活跃度总数 + * @param formDTO + * @return com.epmet.commons.tools.utils.Result> + * @author qushutong + * @date 2023/4/6 17:35 + */ + @PostMapping("getActivityTotal") + public Result getActivityTotal(@RequestBody CountActivityFormDTO formDTO) { + return new Result().ok(staffLoginLogService.getActivityTotal(formDTO)); + } + + + /*** + * 导出活跃 + * @param response + * @param tokenDto + * @param formDTO + * @return void + * @author qushutong + * @date 2023/4/6 18:04 + */ + @PostMapping("accountActivityInfo-export") + public void analysisExport(HttpServletResponse response, @LoginUser TokenDto tokenDto, @RequestBody CountActivityFormDTO formDTO) throws Exception { + formDTO.setIsPage(false); + PageData res = staffLoginLogService.getAccountActivityInfo(formDTO); + if (!CollectionUtils.isEmpty(res.getList())) { + if("1".equals(formDTO.getIsActivity())){ + ExcelUtils.exportExcelToTarget(response, "社区活跃数据", res.getList(), AccountActivityExcel.class); + }else { + ExcelUtils.exportExcelToTarget(response, "社区不活跃数据", res.getList(), AccountInactivityExcel.class); + } + + } + } + +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CommunityBuildingManagerDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CommunityBuildingManagerDao.java new file mode 100644 index 0000000000..e6c19b0d26 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CommunityBuildingManagerDao.java @@ -0,0 +1,50 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.result.yt.CommunityBuildingManagerResultDTO; +import com.epmet.entity.CommunityBuildingManagerEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 楼长单元长信息表(烟台) + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-05-06 + */ +@Mapper +public interface CommunityBuildingManagerDao extends BaseDao { + /** + * 楼长单元长分页列表查询 + * @param customerId + * @param orgIdPath + * @param name + * @param phone + * @param idCard + * @param type + * @param districtId + * @param streetId + * @param communityId + * @param gridId + * @param viliageId + * @param buildingId + * @param unitId + * @return + */ + List pageList(@Param("customerId") String customerId, + @Param("orgIdPath")String orgIdPath, + @Param("name")String name, + @Param("phone")String phone, + @Param("idCard")String idCard, + @Param("type")String type, + @Param("districtId")String districtId, + @Param("streetId")String streetId, + @Param("communityId")String communityId, + @Param("gridId")String gridId, + @Param("viliageId")String viliageId, + @Param("buildingId")String buildingId, + @Param("unitId")String unitId, + @Param("id")String id); +} \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java index 7e98f598f8..b17ddb6de6 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 @@ -108,6 +108,8 @@ public interface CustomerAgencyDao extends BaseDao { **/ List selectSubAgencyList(@Param("subAgencyPids") String subAgencyPids); + List selectSubAgencyLevelList(@Param("subAgencyPids") String subAgencyPids); + /** * 查询客户根级组织 * @@ -195,6 +197,8 @@ public interface CustomerAgencyDao extends BaseDao { **/ AgencyResultDTO selectAgencyByStaffId(@Param("staffId") String staffId); +// AgencyResultDTO selectAgencyByLevelStaffId(@Param("staffId") String staffId); + /** * @param customerId * @param pid @@ -422,5 +426,24 @@ public interface CustomerAgencyDao extends BaseDao { * @return */ Integer selectTotalNext(String agencyId); + + /** + * 获取当前客户下所有的社区组织,只返回id,orgIdPath,agencyName + * @param customerId + * @return + */ + List getAllCommunity(String customerId); + + List agencyCount(@Param("pids") String pids,@Param("timeStart")Date timeStart,@Param("timeEnd")Date timeEnd); + + Integer communityCount(@Param("pids") String pids); + + Integer agencyGridCount(@Param("pids") String pids,@Param("timeStart")Date timeStart,@Param("timeEnd")Date timeEnd); + + Integer agencyStaffCount(@Param("pids") String pids,@Param("timeStart")Date timeStart,@Param("timeEnd")Date timeEnd); + + Integer getCommunityCount(@Param("pids")String pids,@Param("timeStart")Date timeStart,@Param("timeEnd")Date timeEnd); + + List getCommunityByPidList (@Param("pids")String pids,@Param("timeStart")Date timeStart,@Param("timeEnd")Date timeEnd); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java index 2275021a67..4d026bf754 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcBuildingDao.java @@ -19,7 +19,7 @@ package com.epmet.dao; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.dao.BaseDao; -import com.epmet.dto.IcNeighborHoodDTO; +import com.epmet.dto.IcBuildingDTO; import com.epmet.dto.ImportGeneralDTO; import com.epmet.dto.form.CheckHouseInfoFormDTO; import com.epmet.dto.form.IcBuildingListFormDTO; @@ -246,7 +246,10 @@ public interface IcBuildingDao extends BaseDao { * @author zhy * @date 2022/8/19 17:32 */ - List listBuildingInfo(IcNeighborHoodDTO dto); + List listBuildingInfo(@Param("customerId") String customerId, + @Param("agencyId") String agencyId, + @Param("gridId") String gridId, + @Param("buildingName") String buildingName); /** @@ -276,5 +279,16 @@ public interface IcBuildingDao extends BaseDao { * @return */ List selectHouseTree(@Param("unitId") String unitId); + + /** + * 查询楼栋列表:后续可以追加条件 + * @param customerId 必填! + * @param gridId + * @param neighborHoodId + * @return + */ + List selectListByMap(@Param("customerId") String customerId, + @Param("gridId") String gridId, + @Param("neighborHoodId") String neighborHoodId); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcEnterpriseDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcEnterpriseDao.java index 40bdde151e..95d7119471 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcEnterpriseDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcEnterpriseDao.java @@ -3,6 +3,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dto.form.EnterprisePageFormDTO; import com.epmet.dto.result.EnterpriseDetailDTO; +import com.epmet.dto.result.yt.EnterpriseCountPlaceTypeDetailDTO; import com.epmet.entity.IcEnterpriseEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -32,4 +33,14 @@ public interface IcEnterpriseDao extends BaseDao { List selectList(EnterprisePageFormDTO formDTO); List selectForUniqueName(@Param("gridId") String gridId, @Param("placeOrgName") String placeOrgName, @Param("enterpriseId") String enterpriseId); + + /** + * 按场所类型 + * @param orgId + * @param orgType + * @return + */ + List selectCountByPlaceType(@Param("customerId")String customerId, + @Param("orgId") String orgId, + @Param("orgType") String orgType); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcHouseDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcHouseDao.java index f4212b5487..db3149a73a 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcHouseDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcHouseDao.java @@ -1,11 +1,9 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.IcHouseDTO; import com.epmet.dto.ImportGeneralDTO; -import com.epmet.dto.form.CheckHouseInfoFormDTO; -import com.epmet.dto.form.GetHouseInfoToCollectFormDTO; -import com.epmet.dto.form.HouseChartFormDTO; -import com.epmet.dto.form.IcHouseListFormDTO; +import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.dto.result.lingshan.PartyCenterHouseResultDTO; import com.epmet.entity.CustomerOrgParameterEntity; @@ -14,6 +12,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.math.BigDecimal; +import java.util.Date; import java.util.List; import java.util.Set; @@ -231,4 +230,31 @@ public interface IcHouseDao extends BaseDao { @Param("buildingName") String buildingName, @Param("buildingId") String buildingId, @Param("partyCenterHouseFlag") String partyCenterHouseFlag); + + /** + * 群租房列表 + * 群租房:出租状态并超过5人(≥5) + * @param formDTO + * @return + */ + List selectGroupRentHouseList(GroupRentHouseFormDTO formDTO); + + List getHousePurposeCount(@Param("orgId") String orgId,@Param("orgType") String orgType, @Param("timeStart")Date timeStart,@Param("timeEnd")Date timeEnd); + + List getHouseStatusCount(@Param("orgId") String orgId,@Param("orgType") String orgType, @Param("timeStart")Date timeStart,@Param("timeEnd")Date timeEnd); + + List getHousePictureList(@Param("orgId") String orgId,@Param("orgType") String orgType, @Param("timeStart")Date timeStart,@Param("timeEnd")Date timeEnd,@Param("purpose") String purpose,@Param("rentFlag") Integer rentFlag); + + /** + * 查询房屋列表:后续可以追加条件 + * @param customerId 必填! + * @param gridId + * @param neighborHoodId + * @param buildingId + * @return + */ + List selectListByMap(@Param("customerId") String customerId, + @Param("gridId") String gridId, + @Param("neighborHoodId") String neighborHoodId, + @Param("buildingId") String buildingId); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodDao.java index 2fd4f25eee..b97fdf0f03 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodDao.java @@ -224,4 +224,17 @@ public interface IcNeighborHoodDao extends BaseDao { IcNeighborHoodEntity getNeighborHoodInfoByName(CheckHouseInfoFormDTO formDTO); List queryNeighborHoodOptions(NeighborHoodOptionFormDTO formDTO); + + /** + * label: xxx网格-xxx小区 + * @param customerId + * @param agencyId + * @param gridId + * @param neighborHoodName + * @return + */ + List queryNeighborHoodOptionsYanTai(@Param("customerId") String customerId, + @Param("agencyId") String agencyId, + @Param("gridId") String gridId, + @Param("neighborHoodName") String neighborHoodName); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodPropertyDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodPropertyDao.java index 79a71a11b8..55b50486de 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodPropertyDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodPropertyDao.java @@ -18,8 +18,12 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.IcNeighborHoodDTO; import com.epmet.entity.IcNeighborHoodPropertyEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 小区物业关系表 @@ -29,5 +33,11 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface IcNeighborHoodPropertyDao extends BaseDao { - + /** + * 查询物业下的小区名称 + * @param propertyId 物业id + * @param agencyId 组织id + * @return 当前物业在 当前组织及下级范围内,管理的小区数量 + */ + List getNeighborHoodList(@Param("propertyId") String propertyId, @Param("agencyId") String agencyId); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcPropertyManagementDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcPropertyManagementDao.java index 915b2f6d7d..1f2c910c1d 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcPropertyManagementDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcPropertyManagementDao.java @@ -59,5 +59,9 @@ public interface IcPropertyManagementDao extends BaseDao selectPropertyNameList(String neighborhoodId); - List queryList(@Param("customerId") String customerId,@Param("name")String name); + List queryList(@Param("customerId") String customerId, + @Param("name")String name, + @Param("contactName") String contactName, + @Param("contactMobile") String contactMobile, + @Param("agencyId")String agencyId); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/LingshanPartyCenterHouseLianhuDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/LingshanPartyCenterHouseLianhuDao.java index 7b712e100c..8788e1d6cb 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/LingshanPartyCenterHouseLianhuDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/LingshanPartyCenterHouseLianhuDao.java @@ -1,9 +1,12 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.result.lingshan.LingshanPartyCenterHouseLianhuDTO; import com.epmet.entity.LingshanPartyCenterHouseLianhuEntity; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 灵山_党员中心户联户 * @@ -15,5 +18,17 @@ public interface LingshanPartyCenterHouseLianhuDao extends BaseDao selectLianHuHouse(String partyCenterHouseId); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/StaffLoginLogDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/StaffLoginLogDao.java new file mode 100644 index 0000000000..98879a4204 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/StaffLoginLogDao.java @@ -0,0 +1,86 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.form.yt.CountActivityFormDTO; +import com.epmet.dto.result.yt.ActivityTatalInfo; +import com.epmet.dto.result.yt.CommunityLoginResultDTO; +import com.epmet.dto.result.yt.AccountActivityInfo; +import com.epmet.entity.StaffLoginLogEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +/** + * 工作人员登录日志表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-04 + */ +@Mapper +public interface StaffLoginLogDao extends BaseDao { + + /** + * 各社区登录总次数 + * + * @param orgId + * @param startDate + * @param endDate + * @param dataRange exclude_zero:不展示登录次数为0的社区 all:全部展示 + * @return + */ + List pageCommunityCount(@Param("orgId") String orgId, + @Param("startDate") Date startDate, + @Param("endDate") Date endDate, + @Param("dataRange")String dataRange); + + List selectCommunityCount(@Param("orgId") String orgId, + @Param("startDate") Date startDate, + @Param("endDate") Date endDate); + /** + * 柱状图:下级组织账号登录次数汇总 + * + * @param orgId + * @param startDate + * @param endDate + * @return + */ + List querySubCount(@Param("orgId") String orgId, + @Param("startDate") Date startDate, + @Param("endDate") Date endDate); + + /** + * 各区县登录总次数 + * + * @param orgId + * @param startDate + * @param endDate + * @return + */ + List pageDistrictCount(@Param("orgId") String orgId, + @Param("startDate") Date startDate, + @Param("endDate") Date endDate); + + List pageStreetCount(@Param("orgId") String orgId, + @Param("startDate") Date startDate, + @Param("endDate") Date endDate); + + /*** + * 获取登陆情况 + * @param formDTO + * @return com.epmet.dto.result.yt.AccountActivityInfo + * @author qushutong + * @date 2023/4/6 13:47 + */ + List selectListActivityInfo(CountActivityFormDTO formDTO); + + + ActivityTatalInfo selectOneActivityTotal(CountActivityFormDTO formDTO); + + Integer selectLoginTotalByPath(@Param("orgIdPath") String orgIdPath, + @Param("startDate") Date startDate, + @Param("endDate") Date endDate); + + List selectStreetTotal(@Param("orgId") String orgId, @Param("startDate") Date startDate, @Param("endDate") Date endDate); +} \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CommunityBuildingManagerEntity.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CommunityBuildingManagerEntity.java new file mode 100644 index 0000000000..1c769d2926 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/CommunityBuildingManagerEntity.java @@ -0,0 +1,89 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +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 2023-05-06 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("community_building_manager") +public class CommunityBuildingManagerEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户Id customer.id + */ + @TableField(fill = FieldFill.INSERT) + private String customerId; + + /** + * 姓名 + */ + private String name; + + /** + * 联系电话 + */ + private String phone; + + /** + * 身份证号 + */ + private String idCard; + + /** + * 类型:0楼长;1单元长 + */ + private String type; + + /** + * 所属区县id;取名字关联customer_agency + */ + private String districtId; + + /** + * 所属街道id;取名字关联customer_agency + */ + private String streetId; + + /** + * 所属社区id;取名字关联customer_agency + */ + private String communityId; + + /** + * 所属网格id;取名字关联customer_grid + */ + private String gridId; + + /** + * 网格的全路径,包含网格id + */ + private String orgIdPath; + + /** + * 所属小区id + */ + private String viliageId; + + /** + * 所属楼栋id + */ + private String buildingId; + + /** + * 所属单元id + */ + private String unitId; + +} 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 fda8070609..a28c5f0166 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 @@ -143,4 +143,39 @@ public class CustomerAgencyEntity extends BaseEpmetEntity { * 联系电话 */ private String mobile; + + /** + * 备注 + */ + private String remark; + + + /** + * 村居/社区书记姓名 + */ + private String secretaryName; + /** + * 村居/社区书记电话 + */ + private String secretaryMobile; + /** + * 值班电话 + */ + private String dutyMobile; + /** + * 统一社会信用代码 + */ + private String unifiedSocialCreditCode; + /** + * 统一社会信用代码证书(图片附件) + */ + private String unifiedSocialCreditCodeCertificate; + + /** + * 详细地址 + */ + private String fullAddress; + + + private String description; } 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 e6a3dbf55f..e51f51ee1a 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 @@ -87,4 +87,5 @@ public class CustomerDepartmentEntity extends BaseEpmetEntity { */ private String deptType; + private String description; } 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 70f73c89da..555a877b04 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 @@ -114,4 +114,6 @@ public class CustomerGridEntity extends BaseEpmetEntity { * 弃用:1;正常使用:0 */ private Integer abandonFlag; + + private String description; } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcBuildingEntity.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcBuildingEntity.java index 801267e2dd..4921e1f878 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcBuildingEntity.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcBuildingEntity.java @@ -92,6 +92,16 @@ public class IcBuildingEntity extends BaseEpmetEntity { */ private String buildingLeaderMobile; + /** + * 烟台需求:楼长身份证号 + */ + private String buildingLeaderIdCard; + + /** + * 烟台需求:类型:0楼长;1单元长 + */ + private String buildingLeaderType; + /** * 中心点位:经度 */ @@ -122,4 +132,6 @@ public class IcBuildingEntity extends BaseEpmetEntity { */ private Integer realPerson; + + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcHouseEntity.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcHouseEntity.java index 4ee85491ae..2b6ce66028 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcHouseEntity.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcHouseEntity.java @@ -136,6 +136,14 @@ public class IcHouseEntity extends BaseEpmetEntity { * 房屋可编辑编码 */ private String coding; + /** + * 所在楼层 + */ + private String floor; + /** + * 面积 + */ + private String area; private String longitude; private String latitude; diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcNeighborHoodEntity.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcNeighborHoodEntity.java index 26e278fd16..2d67d4259b 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcNeighborHoodEntity.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcNeighborHoodEntity.java @@ -121,4 +121,21 @@ public class IcNeighborHoodEntity extends BaseEpmetEntity { * 二维码地址 */ private String qrcodeUrl; + + /** + * 烟台需求:自然村/小区 + */ + private String viliageType; + /** + * 烟台需求:面积 + */ + private String area; + /** + * 烟台需求:开放类型 + */ + private String openType; + /** + * 烟台需求:建筑年代 + */ + private String buildYear; } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcPropertyManagementEntity.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcPropertyManagementEntity.java index 239fce61cc..81a75f86ec 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcPropertyManagementEntity.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcPropertyManagementEntity.java @@ -17,6 +17,8 @@ package com.epmet.entity; +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.epmet.commons.mybatis.entity.BaseEpmetEntity; import lombok.Data; @@ -39,5 +41,15 @@ public class IcPropertyManagementEntity extends BaseEpmetEntity { * 物业名称 */ private String name; + @TableField(fill = FieldFill.INSERT) private String customerId; + /** + * 烟台需求:物业联系人姓名 + */ + private String contactName; + + /** + * 烟台需求:物业联系人电话 + */ + private String contactMobile; } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/StaffLoginLogEntity.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/StaffLoginLogEntity.java new file mode 100644 index 0000000000..35926c1c78 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/StaffLoginLogEntity.java @@ -0,0 +1,73 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; + +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 工作人员登录日志表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-04 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("staff_login_log") +public class StaffLoginLogEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户ID + */ + private String customerId; + + /** + * 工作端用户id + */ + private String staffId; + + /** + * 工作人员姓名 + */ + private String staffName; + + /** + * 工作人员手机号 + */ + private String mobile; + + /** + * 工作人员所属组织id;组织名称在customer_agency + */ + private String agencyId; + + /** + * 组织级别(社区级:community, +乡(镇、街道)级:street, +区县级: district, +市级: city +省级:province) + */ + private String agencyLevel; + + /** + * agency_id的直属上级;如果是根组织的用户登录,pid=0或者pid='' + */ + private String pid; + + /** + * AGENCY_ID全路径,包含agency_id自身 + */ + private String orgIdPath; + + /** + * 登录时间 + */ + private Date loginTime; + +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/CustomerStaffImportExcelData.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/CustomerStaffImportExcelData.java new file mode 100644 index 0000000000..c667472284 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/CustomerStaffImportExcelData.java @@ -0,0 +1,75 @@ +package com.epmet.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import java.util.Date; + +/** + * 核酸检测信息导入excel数据 + */ +@Data +public class CustomerStaffImportExcelData { + + @NotBlank(message = "姓名为必填项") + @ExcelProperty("姓名※") + private String name; + + @NotBlank(message = "手机号为必填项") + @ExcelProperty("联系电话※") + @Length(max = 15, message = "手机号长度不正确,应小于15位") + private String mobile; + + @NotBlank(message = "身份证号为必填项") + @ExcelProperty("身份证号※") + @Length(max = 18, message = "证身份证号长度不正确,应小于18位") + private String idCard; + + @ExcelProperty("村居委员职务") + private String viliagePosition; + + @ExcelProperty("党组织职务") + private String partyPosition; + + @NotBlank(message = "居住地址为必填项") + @ExcelProperty("居住地址※") + private String address; + + @NotBlank(message = "文化程度为必填项") + @ExcelProperty("文化程度※") + private String cultureName; + + @NotBlank(message = "性别为必填项") + @ExcelProperty("性别※") + private String genderName; + + @NotBlank(message = "专兼职为必填项") + @ExcelProperty("专兼职※") + private String workTypeName; + + @NotBlank(message = "工作职责为必填项") + @ExcelProperty("工作职责※") + private String duty; + + @ExcelProperty("备注") + private String remark; + + @Data + public static class RowRemarkMessage { + + @ColumnWidth(60) + @ExcelProperty("姓名") + private String name; + + @ColumnWidth(60) + @ExcelProperty("联系电话") + private String mobile; + + @ColumnWidth(60) + @ExcelProperty("错误信息") + private String errorInfo; + } +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/HousePictureListExcelDTO.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/HousePictureListExcelDTO.java new file mode 100644 index 0000000000..b6cc195a81 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/HousePictureListExcelDTO.java @@ -0,0 +1,50 @@ +package com.epmet.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 java.util.Date; + +/** + * 企事业单位导出excel + */ +@Data +public class HousePictureListExcelDTO { + + + @ExcelIgnore + private String houseId; + + @ExcelProperty(value = "区县") + @ColumnWidth(25) + private String districtName; + + @ExcelProperty(value = "镇街") + @ColumnWidth(25) + private String streetName; + + @ExcelProperty(value = "社区") + @ColumnWidth(25) + private String communityName; + + @ExcelProperty(value = "网格") + @ColumnWidth(25) + private String gridName; + + @ExcelProperty(value = "房屋名称") + @ColumnWidth(25) + private String houseName; + + @ExcelProperty(value = "房屋用途") + @ColumnWidth(25) + private String purposeName; + + @ExcelProperty(value = "房屋状态") + @ColumnWidth(25) + private String rentFlagName; + @ExcelIgnore + private String orgIdPath; + +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcBuildingExcel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcBuildingExcel.java index dbd7f8239b..baf1cdb4a6 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcBuildingExcel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcBuildingExcel.java @@ -130,4 +130,10 @@ public class IcBuildingExcel extends ExcelVerifyInfo implements Serializable { @Excel(name = "楼长电话") private String buildingLeaderMobile; + + @Excel(name = "楼长身份证号") + private String buildingLeaderIdCard; + +/* @Excel(name = "楼长类型") + private String buildingLeaderType;*/ } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcNeighborHoodExcel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcNeighborHoodExcel.java index e9306fa5d7..0406b33490 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcNeighborHoodExcel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcNeighborHoodExcel.java @@ -18,6 +18,7 @@ package com.epmet.excel; import cn.afterturn.easypoi.excel.annotation.Excel; +import com.alibaba.excel.annotation.ExcelProperty; import com.epmet.util.ExcelVerifyInfo; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; @@ -108,9 +109,27 @@ public class IcNeighborHoodExcel extends ExcelVerifyInfo implements Serializable @Length(max=50,message = "不能超过50个字") private String neighborHoodName; + @Excel(name = "小区/自然村类型") + private String viliageTypeName; + + @Excel(name = "面积") + private String area; + + @Excel(name = "开放类型") + private String openTypeName; + + @Excel(name = "建筑年代") + private String buildYear; + @Excel(name = "关联物业") private String propertyName; + @Excel(name = "物业联系人") + private String propertyUserName; + + @Excel(name = "联系电话") + private String propertyUserMobile; + @Excel(name = "详细地址") @NotBlank(message = "不能为空") private String address; diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/CommunityBuildingManagerImportListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/CommunityBuildingManagerImportListener.java new file mode 100644 index 0000000000..d496c0b2cb --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/CommunityBuildingManagerImportListener.java @@ -0,0 +1,120 @@ +package com.epmet.excel.handler; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.read.listener.ReadListener; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.exception.ExceptionUtils; +import com.epmet.commons.tools.exception.ValidateException; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.ObjectUtil; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dto.result.CommunityBuildingManagerDTO; +import com.epmet.excel.yt.CommunityBuildingManagerImportExcelData; +import com.epmet.service.impl.CommunityBuildingManagerServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @Description + * @Author yzm + * @Date 2023/5/9 16:26 + */ +@Slf4j +public class CommunityBuildingManagerImportListener implements ReadListener { + + // 最大条数阈值 + public static final int MAX_THRESHOLD = 200; + private Map gridMap; + private String customerId; + private String staffId; + private String agencyId; + private String districtId; + private String streetId; + private String rediPrex; + private CommunityBuildingManagerServiceImpl communityBuildingManagerService; + // 错误项列表 + private List errorRows = new ArrayList<>(); + // 要插入的数据 + private List excelDataList = new ArrayList<>(); + + public CommunityBuildingManagerImportListener(Map gridMap,String customerId, String staffId, String agencyId, String districtId, String streetId, String rediPrex, CommunityBuildingManagerServiceImpl communityBuildingManagerService) { + this.gridMap=gridMap; + this.customerId = customerId; + this.staffId = staffId; + this.agencyId=agencyId; + this.districtId=districtId; + this.streetId=streetId; + this.rediPrex=rediPrex; + this.communityBuildingManagerService = communityBuildingManagerService; + } + + + @Override + public void invoke(CommunityBuildingManagerImportExcelData data, AnalysisContext analysisContext) { + try { + // log.warn("有数据吗?"+JSON.toJSONString(data)); + // 不能为空先校验数据 + ValidatorUtils.validateEntity(data); + // 去除空格 + ObjectUtil.objectToTrim(data); + + CommunityBuildingManagerDTO communityBuildingManagerDTO = ConvertUtils.sourceToTarget(data, CommunityBuildingManagerDTO.class); + communityBuildingManagerDTO.setCustomerId(customerId); + communityBuildingManagerDTO.setCommunityId(agencyId); + communityBuildingManagerDTO.setType("单元长".equals(data.getTypeName()) ? NumConstant.ONE_STR : NumConstant.ZERO_STR); + excelDataList.add(communityBuildingManagerDTO); + if (excelDataList.size() == MAX_THRESHOLD) { + execPersist(); + } + } catch (Exception e) { + String errorMsg = null; + if (e instanceof ValidateException) { + errorMsg = ((ValidateException) e).getMsg(); + } else if (e instanceof EpmetException) { + errorMsg = ((EpmetException) e).getMsg(); + } else { + errorMsg = "未知错误"; + log.error("【楼长单元长ic_property_management导入】出错:{}", ExceptionUtils.getErrorStackTrace(e)); + } + CommunityBuildingManagerImportExcelData.ErrorRow errorRow = ConvertUtils.sourceToTarget(data, CommunityBuildingManagerImportExcelData.ErrorRow.class); + errorRow.setErrorInfo(errorMsg); + errorRows.add(errorRow); + } + } + + @Override + public void doAfterAllAnalysed(AnalysisContext analysisContext) { + // 最后几条达不到阈值,这里必须再调用一次 + execPersist(); + } + + /** + * 执行持久化 + */ + private void execPersist() { + try { + if (CollectionUtils.isNotEmpty(excelDataList)) { + communityBuildingManagerService.handleImportExcelData(gridMap,customerId,staffId,agencyId, districtId, streetId,rediPrex,excelDataList,this); + } + } finally { + excelDataList.clear(); + } + } + + /** + * 获取错误行 + * + * @return + */ + public List getErrorRows() { + return errorRows; + } + + +} + diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/CustomerStaffImportListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/CustomerStaffImportListener.java new file mode 100644 index 0000000000..7a8406eb8f --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/CustomerStaffImportListener.java @@ -0,0 +1,202 @@ +package com.epmet.excel.handler; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.read.listener.ReadListener; +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.ValidateException; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dto.form.AddStaffV2FromDTO; +import com.epmet.excel.CustomerStaffImportExcelData; +import com.epmet.service.impl.StaffServiceImpl; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * 核酸检测excel导入监听器 + */ +@Data +@Slf4j +public class CustomerStaffImportListener implements ReadListener { + + /** + * 最大条数阈值 + */ + public static final int MAX_THRESHOLD = 200; + + private String currentUserId; + + private String currentCustomerId; + + private String currentOrgType; + + private String currentOrgId; + + private CustomerStaffImportExcelData dataB; + + + /** + * 数据 + */ + private List datas = new ArrayList<>(); + + /** + * 错误项列表 + */ + private List errorRows = new ArrayList<>(); + /** + * 其他被标记出来的列表列表 + */ + private List otherRows = new ArrayList<>(); + + private StaffServiceImpl staffService; + + public CustomerStaffImportListener(String currentUserId, String currentCustomerId, String currentOrgType,String currentOrgId,StaffServiceImpl staffService) { + this.currentUserId = currentUserId; + this.currentCustomerId = currentCustomerId; + this.staffService = staffService; + this.currentOrgType = currentOrgType; + this.currentOrgId = currentOrgId; + } + + @Override + public void invoke(CustomerStaffImportExcelData data, AnalysisContext context) { + + try { + + dataB = data; + // 先校验数据 + ValidatorUtils.validateEntity(data); + + AddStaffV2FromDTO fromDTO = ConvertUtils.sourceToTarget(data, AddStaffV2FromDTO.class); + + fromDTO.setCustomerId(currentCustomerId); + //因为添加的是工作人员,这里写死吧! + fromDTO.setApp("gov"); + fromDTO.setClient("wxmp"); + //当前登录用户 + fromDTO.setCurrentUserId(currentUserId); + fromDTO.setOrgId(currentOrgId); + fromDTO.setOrgType(currentOrgType); + + if (StringUtils.isNotBlank(data.getWorkTypeName())){ + if (data.getWorkTypeName().equals("专职")){ + fromDTO.setWorkType("fulltime"); + } + if (data.getWorkTypeName().equals("兼职")){ + fromDTO.setWorkType("parttime"); + } + } + + if (StringUtils.isNotBlank(data.getGenderName())){ + if (data.getGenderName().equals("男")){ + fromDTO.setGender(1); + } + if (data.getGenderName().equals("女")){ + fromDTO.setGender(2); + } + if (data.getGenderName().equals("未知")){ + fromDTO.setGender(0); + } + } + //0小学及文盲,1初中,2高中,3大专,4本科,5硕士,6博士,7中专 + if (StringUtils.isNotBlank(data.getCultureName())){ + if (data.getCultureName().equals("小学及文盲")){ + fromDTO.setCulture("0"); + } + if (data.getCultureName().equals("初中")){ + fromDTO.setCulture("1"); + } + if (data.getCultureName().equals("高中")){ + fromDTO.setCulture("2"); + } + if (data.getCultureName().equals("大专")){ + fromDTO.setCulture("3"); + } + if (data.getCultureName().equals("本科")){ + fromDTO.setCulture("4"); + } + if (data.getCultureName().equals("硕士")){ + fromDTO.setCulture("5"); + } + if (data.getCultureName().equals("博士")){ + fromDTO.setCulture("6"); + } + } + + + datas.add(fromDTO); + + if (datas.size() == MAX_THRESHOLD) { + execPersist(); + } + } catch (Exception e) { + String errorMsg = null; + if (e instanceof ValidateException) { + errorMsg = ((ValidateException) e).getMsg(); + } else { + log.error("【客户信息导入】出错:{}", e.getStackTrace()); + errorMsg = ((EpmetException)e).getInternalMsg(); + log.error("【客户信息导入】出错:{}", ExceptionUtils.getErrorStackTrace(e)); + } + + CustomerStaffImportExcelData.RowRemarkMessage errorRow = new CustomerStaffImportExcelData.RowRemarkMessage(); + errorRow.setErrorInfo(errorMsg); + errorRow.setName(data.getName()); + errorRow.setMobile(data.getMobile()); + errorRows.add(errorRow); + } + } + + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + // 最后几条达不到阈值,这里必须再调用一次 + try { + execPersist(); + }catch (Exception e) { + String errorMsg = null; + if (e instanceof ValidateException) { + errorMsg = ((ValidateException) e).getMsg(); + } else { + log.error("【客户信息导入】出错:{}", e.getStackTrace()); + errorMsg = ((EpmetException)e).getInternalMsg(); + log.error("【客户信息导入】出错:{}", ExceptionUtils.getErrorStackTrace(e)); + } + + CustomerStaffImportExcelData.RowRemarkMessage errorRow = new CustomerStaffImportExcelData.RowRemarkMessage(); + errorRow.setErrorInfo(errorMsg); + errorRow.setName(dataB.getName()); + errorRow.setMobile(dataB.getMobile()); + errorRows.add(errorRow); + } + + } + + /** + * 执行持久化 + */ + private void execPersist() { + try { + if (datas != null && datas.size() > 0) { +// icNatService.batchPersist(datas, this); + staffService.exportAdd(datas,this); + } + }finally { + datas.clear(); + } + } + + /** + * 获取错误行 + * @return + */ + public List getErrorRows() { + return errorRows; + } +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/DeptExcelImportListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/DeptExcelImportListener.java new file mode 100644 index 0000000000..5419175bff --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/DeptExcelImportListener.java @@ -0,0 +1,112 @@ +package com.epmet.excel.handler; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.read.listener.ReadListener; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.StrConstant; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.exception.ExceptionUtils; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.entity.CustomerAgencyEntity; +import com.epmet.entity.CustomerDepartmentEntity; +import com.epmet.excel.yt.DeptImportExcelDTO; +import com.epmet.service.CustomerDepartmentService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description + * @Author yzm + * @Date 2023/4/26 16:11 + */ +@Slf4j +public class DeptExcelImportListener implements ReadListener { + //最大条数阈值 + public static final int MAX_THRESHOLD = 200; + private String customerId; + private String staffId; + private CustomerAgencyEntity agencyEntity; + /** + * 当前操作用户 + */ + //要插入的数据 + private List insertDatas = new ArrayList<>(); + //错误项列表 + private List errorRows = new ArrayList<>(); + private CustomerDepartmentService departmentService; + public DeptExcelImportListener(String loginUserCustomerId, String loginUserId, CustomerAgencyEntity agencyEntity, CustomerDepartmentService departmentService) { + this.customerId = loginUserCustomerId; + this.staffId = loginUserId; + this.agencyEntity = agencyEntity; + this.departmentService = departmentService; + } + + @Override + public void invoke(DeptImportExcelDTO data, AnalysisContext analysisContext) { + try { + ValidatorUtils.validateEntity(data); + //当前组织下,是否存在该部门 + departmentService.checkUnqiueName(agencyEntity.getId(),data.getDepartmentName(),null); + CustomerDepartmentEntity entity = ConvertUtils.sourceToTarget(data, CustomerDepartmentEntity.class); + entity.setCustomerId(customerId); + entity.setAgencyId(agencyEntity.getId()); + entity.setCreatedBy(staffId); + entity.setUpdatedBy(staffId); + entity.setTotalUser(NumConstant.ZERO); + entity.setAreaCode(StringUtils.isNotBlank(agencyEntity.getAreaCode())?agencyEntity.getAreaCode(): StrConstant.EPMETY_STR); + entity.setDepartmentDuty(StrConstant.EPMETY_STR); + entity.setDeptType("duty"); + insertDatas.add(entity); + if (insertDatas.size() == MAX_THRESHOLD) { + execPersist(); + } + } catch (Exception e) { + String errorMsg = null; + if(e instanceof EpmetException){ + errorMsg=((EpmetException) e).getMsg(); + }else { + errorMsg = "未知错误"; + log.error("【部门导入】出错:{}", ExceptionUtils.getErrorStackTrace(e)); + } + DeptImportExcelDTO.ErrorRow errorRow = ConvertUtils.sourceToTarget(data,DeptImportExcelDTO.ErrorRow.class); + errorRow.setErrorInfo(errorMsg); + errorRows.add(errorRow); + } + } + + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + // 最后几条达不到阈值,这里必须再调用一次 + execPersist(); + } + + /** + * 执行持久化 + */ + private void execPersist() { + try { + if (CollectionUtils.isNotEmpty(insertDatas)) { + departmentService.insertBatch(insertDatas); + } + + } finally { + insertDatas.clear(); + } + } + + /** + * 获取错误行 + * + * @return + */ + public List getErrorRows() { + return errorRows; + } + +} + diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/IcPropertyManagementImportListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/IcPropertyManagementImportListener.java new file mode 100644 index 0000000000..096f586ee1 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/handler/IcPropertyManagementImportListener.java @@ -0,0 +1,120 @@ +package com.epmet.excel.handler; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.read.listener.ReadListener; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.exception.ExceptionUtils; +import com.epmet.commons.tools.exception.ValidateException; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.ObjectUtil; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.entity.IcPropertyManagementEntity; +import com.epmet.excel.yt.IcPropertyManagementImportExcelData; +import com.epmet.service.impl.IcPropertyManagementServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description + * @Author yzm + * @Date 2023/5/8 14:23 + */ +@Slf4j +public class IcPropertyManagementImportListener implements ReadListener { + + // 最大条数阈值 + public static final int MAX_THRESHOLD = 200; + private String currentCustomerId; + private IcPropertyManagementServiceImpl propertyManagementService; + // 错误项列表 + private List errorRows = new ArrayList<>(); + // 要插入的数据 + private List insertDatas = new ArrayList<>(); + private List updateDatas = new ArrayList<>(); + + public IcPropertyManagementImportListener(String customerId, IcPropertyManagementServiceImpl propertyManagementService) { + this.currentCustomerId = customerId; + this.propertyManagementService = propertyManagementService; + } + + @Override + public void invoke(IcPropertyManagementImportExcelData data, AnalysisContext analysisContext) { + try { + // log.warn("有数据吗?"+JSON.toJSONString(data)); + // 不能为空先校验数据 + ValidatorUtils.validateEntity(data); + // 去除空格 + ObjectUtil.objectToTrim(data); + //物业名称唯一 + IcPropertyManagementEntity origin=propertyManagementService.getByName(currentCustomerId, data.getName()); + + IcPropertyManagementEntity propertyManagementEntity = ConvertUtils.sourceToTarget(data, IcPropertyManagementEntity.class); + propertyManagementEntity.setCustomerId(currentCustomerId); + if (null != origin) { + origin.setContactMobile(data.getContactMobile()); + origin.setContactName(data.getContactName()); + updateDatas.add(origin); + } else { + insertDatas.add(propertyManagementEntity); + } + + if (insertDatas.size() == MAX_THRESHOLD) { + execPersist(); + } + if (updateDatas.size() == MAX_THRESHOLD) { + execPersist(); + } + } catch (Exception e) { + String errorMsg = null; + if (e instanceof ValidateException) { + errorMsg = ((ValidateException) e).getMsg(); + } else if (e instanceof EpmetException) { + errorMsg = ((EpmetException) e).getInternalMsg(); + } else { + errorMsg = "未知错误"; + log.error("【物业管理表ic_property_management导入】出错:{}", ExceptionUtils.getErrorStackTrace(e)); + } + IcPropertyManagementImportExcelData.ErrorRow errorRow = ConvertUtils.sourceToTarget(data, IcPropertyManagementImportExcelData.ErrorRow.class); + errorRow.setErrorInfo(errorMsg); + errorRows.add(errorRow); + } + + } + + @Override + public void doAfterAllAnalysed(AnalysisContext analysisContext) { + // 最后几条达不到阈值,这里必须再调用一次 + execPersist(); + } + + /** + * 执行持久化 + */ + private void execPersist() { + try { + if (CollectionUtils.isNotEmpty(insertDatas)) { + propertyManagementService.insertBatch(insertDatas); + } + + if (CollectionUtils.isNotEmpty(updateDatas)) { + propertyManagementService.updateBatchById(updateDatas); + } + } finally { + insertDatas.clear(); + updateDatas.clear(); + } + } + + /** + * 获取错误行 + * + * @return + */ + public List getErrorRows() { + return errorRows; + } +} + diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/AccountActivityExcel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/AccountActivityExcel.java new file mode 100644 index 0000000000..4c7d6bd6f5 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/AccountActivityExcel.java @@ -0,0 +1,45 @@ +package com.epmet.excel.yt; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.Data; + +import java.io.Serializable; + + +/** + * @author: qushutong + * @Date: 2023/4/6 13:33 + * @Description: 账户活跃情况 + */ +@Data +public class AccountActivityExcel implements Serializable { + private static final long serialVersionUID = -918630886413844674L; + + /** + * 组织名称 + */ + @Excel(name = "组织名称") + private String agencyName = ""; + + /** + * 登陆次数 + */ + @Excel(name = "登陆次数") + private String loginCount = ""; + + /** + * 活跃账号数 + */ + @Excel(name = "活跃账号数") + private String accountActivityCount = ""; + + + /** + * 总账号数 + */ + @Excel(name = "总账号数") + private String accountCount = ""; + + + +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/AccountInactivityExcel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/AccountInactivityExcel.java new file mode 100644 index 0000000000..6635ab63c9 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/AccountInactivityExcel.java @@ -0,0 +1,28 @@ +package com.epmet.excel.yt; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.Data; + +import java.io.Serializable; + + +/** + * @author: qushutong + * @Date: 2023/4/6 13:33 + * @Description: 账户不活跃情况 + */ +@Data +public class AccountInactivityExcel implements Serializable { + private static final long serialVersionUID = -918630886413844674L; + + /** + * 组织名称 + */ + @Excel(name = "组织名称") + private String agencyName = ""; + + + + + +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/CommunityBuildingManagerImportExcelData.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/CommunityBuildingManagerImportExcelData.java new file mode 100644 index 0000000000..469532c38f --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/CommunityBuildingManagerImportExcelData.java @@ -0,0 +1,116 @@ +package com.epmet.excel.yt; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; + +/** + * @Description + * @Author yzm + * @Date 2023/5/9 16:13 + */ +@Data +public class CommunityBuildingManagerImportExcelData { + + /** + * 姓名 + */ + @ExcelProperty(value = "*姓名") + @Length(max = 50, message = "姓名最多输入50字") + @NotBlank(message = "姓名不能为空") + private String name; + + /** + * 联系电话 + */ + @ExcelProperty(value = "*联系电话") + @Length(max = 50, message = "联系电话最多输入50字") + @NotBlank(message = "联系电话不能为空") + private String phone; + + /** + * 身份证号 + */ + @ExcelProperty(value = "*身份证号") + @Length(max = 50, message = "身份证号最多输入50字") + @NotBlank(message = "身份证号不能为空") + private String idCard; + + /** + * 类型:0楼长;1单元长 + */ + @ExcelProperty(value = "*类型") + @NotBlank(message = "类型不能为空") + private String typeName; + + @ExcelProperty(value = "*所属网格") + @NotBlank(message = "所属网格不能为空") + private String gridName; + + @ExcelProperty(value = "*所属小区") + @NotBlank(message = "所属小区不能为空") + private String viliageName; + + @ExcelProperty(value = "*楼栋") + @NotBlank(message = "楼栋不能为空") + private String buildingName; + + @ExcelProperty(value = "单元") + private String unitName; + + @Data + public static class ErrorRow { + /** + * 姓名 + */ + @ExcelProperty(value = "*姓名") + @ColumnWidth(20) + private String name; + + /** + * 联系电话 + */ + @ExcelProperty(value = "*联系电话") + @ColumnWidth(20) + private String phone; + + /** + * 身份证号 + */ + @ExcelProperty(value = "*身份证号") + @ColumnWidth(25) + private String idCard; + + /** + * 类型:0楼长;1单元长 + */ + @ExcelProperty(value = "*类型") + @ColumnWidth(15) + private String typeName; + + @ExcelProperty(value = "*所属网格") + @ColumnWidth(30) + private String gridName; + + @ExcelProperty(value = "*所属小区") + @ColumnWidth(30) + private String viliageName; + + @ExcelProperty(value = "*楼栋") + @ColumnWidth(20) + private String buildingName; + + @ExcelProperty(value = "单元") + @ColumnWidth(20) + private String unitName; + + @ColumnWidth(60) + @ExcelProperty("错误信息") + private String errorInfo; + } + +} + diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/DeptImportExcelDTO.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/DeptImportExcelDTO.java new file mode 100644 index 0000000000..302fe9afd7 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/DeptImportExcelDTO.java @@ -0,0 +1,72 @@ +package com.epmet.excel.yt; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; + +/** + * @Description + * @Author yzm + * @Date 2023/4/26 15:59 + */ +@Data +public class DeptImportExcelDTO { + /** + * 部门名称 + */ + @NotBlank(message = "部门名称不能为空") + @Length(max = 50, message = "部门名称不能超过50个字") + @ExcelProperty(value = "*部门名称") + private String departmentName; + + /** + * 组织编码 + */ + @ExcelProperty(value = "组织编码") + private String code; + /** + * 负责人 + */ + @ExcelProperty(value = "联系人") + private String contacts; + /** + * 联系电话 + */ + @ExcelProperty(value = "联系电话") + private String mobile; + + @Data + public static class ErrorRow { + @ColumnWidth(50) + @ExcelProperty(value = "*部门名称") + private String departmentName; + + /** + * 组织编码 + */ + @ColumnWidth(20) + @ExcelProperty(value = "组织编码") + private String code; + /** + * 负责人 + */ + @ColumnWidth(20) + @ExcelProperty(value = "联系人") + private String contacts; + + /** + * 联系电话 + */ + @ColumnWidth(20) + @ExcelProperty(value = "联系电话") + private String mobile; + + @ColumnWidth(50) + @ExcelProperty("错误信息") + private String errorInfo; + } +} + diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/IcPropertyManagementImportExcelData.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/IcPropertyManagementImportExcelData.java new file mode 100644 index 0000000000..7a318bbad7 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/yt/IcPropertyManagementImportExcelData.java @@ -0,0 +1,61 @@ +package com.epmet.excel.yt; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Description + * @Author yzm + * @Date 2023/5/8 14:24 + */ +@Data +public class IcPropertyManagementImportExcelData { + /** + * 物业名称 + */ + @NotBlank(message = "物业名称必填") + @ExcelProperty(value = "*物业名称") + private String name; + + /** + * 烟台需求:物业联系人姓名 + */ + @ExcelProperty(value = "物业联系人") + private String contactName; + + /** + * 烟台需求:物业联系人电话 + */ + @ExcelProperty(value = "联系电话") + private String contactMobile; + + @Data + public static class ErrorRow { + /** + * 物业名称 + */ + @ExcelProperty(value = "*物业名称") + private String name; + + /** + * 烟台需求:物业联系人姓名 + */ + @ExcelProperty(value = "物业联系人") + private String contactName; + + /** + * 烟台需求:物业联系人电话 + */ + @ExcelProperty(value = "联系电话") + private String contactMobile; + + + @ColumnWidth(60) + @ExcelProperty("错误信息") + private String errorInfo; + } +} + diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingInfoModel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingInfoModel.java index 2339587a1f..3a72a3f253 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingInfoModel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingInfoModel.java @@ -44,6 +44,9 @@ public class BuildingInfoModel { @ExcelProperty(value = "楼长电话") private String buildingLeaderMobile; + @ExcelProperty(value = "楼长身份证号") + private String buildingLeaderIdCard; + @ExcelProperty(value = "排序") private BigDecimal sort; diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModel.java index 0e5edb21f3..c78e46633f 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/HouseInfoModel.java @@ -37,6 +37,12 @@ public class HouseInfoModel { @ExcelProperty(value = "房屋类型") private String houseType; + @ExcelProperty(value = "所在楼层") + private String floor; + + @ExcelProperty(value = "面积(平方米)") + private String area; + @ExcelProperty(value = "房屋用途") private String purpose; diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java index 5bacafb1fe..f4fe33adb2 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportNeighborHoodInfoListener.java @@ -185,6 +185,13 @@ public class ImportNeighborHoodInfoListener extends AnalysisEventListener { IcPropertyManagementEntity e = new IcPropertyManagementEntity(); e.setName(name); + for (ImportGeneralDTO importGeneralDTO : notExistList) { + if (importGeneralDTO.getPropertyName().equals(name)){ + e.setContactMobile(importGeneralDTO.getPropertyUserMobile()); + e.setContactName(importGeneralDTO.getPropertyUserName()); + break; + } + } propertyManagementEntities.add(e); }); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/NeighborHoodInfoModel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/NeighborHoodInfoModel.java index 63260ee190..374f367a2e 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/NeighborHoodInfoModel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/NeighborHoodInfoModel.java @@ -21,9 +21,27 @@ public class NeighborHoodInfoModel { @ExcelProperty(value = "小区名称") private String neighborHoodName; + @ExcelProperty(value = "小区/自然村类型") + private String viliageTypeName; + + @ExcelProperty(value = "面积") + private String area; + + @ExcelProperty(value = "开放类型") + private String openTypeName; + + @ExcelProperty(value = "建筑年代") + private String buildYear; + @ExcelProperty(value = "关联物业") private String propertyName; + @ExcelProperty(value = "物业联系人") + private String propertyUserName; + + @ExcelProperty(value = "联系电话") + private String propertyUserMobile; + @ExcelProperty(value = "详细地址") private String address; diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/mq/RocketMQConsumerRegister.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/mq/RocketMQConsumerRegister.java index 86f257d9aa..f05f5e0098 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/mq/RocketMQConsumerRegister.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/mq/RocketMQConsumerRegister.java @@ -5,6 +5,7 @@ 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.InitCustomerOrgRolesListener; +import com.epmet.mq.listener.StaffLoginLogListener; import org.apache.rocketmq.common.protocol.heartbeat.MessageModel; import org.springframework.stereotype.Component; @@ -32,5 +33,10 @@ public class RocketMQConsumerRegister extends MQAbstractRegister { new InitCustomerOrgRolesListener()); // ...其他监听器类似 + register(consumerProperties, + ConsomerGroupConstants.STAFF_LOGIN_LOG_GROUP, + MessageModel.CLUSTERING, + TopicConstants.AUTH, "login", + new StaffLoginLogListener()); } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/mq/listener/StaffLoginLogListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/mq/listener/StaffLoginLogListener.java new file mode 100644 index 0000000000..6f850bf554 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/mq/listener/StaffLoginLogListener.java @@ -0,0 +1,110 @@ +package com.epmet.mq.listener; + +import com.alibaba.fastjson.JSON; +import com.epmet.commons.rocketmq.constants.MQUserPropertys; +import com.epmet.commons.rocketmq.messages.LoginMQMsg; +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.service.StaffLoginLogService; +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 org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; +import java.util.concurrent.TimeUnit; + +/** + * @author wxz + * @Description 登录操作日志监听器 + + * @return + * @date 2021.06.07 16:12 + */ +public class StaffLoginLogListener implements MessageListenerConcurrently { + + private Logger logger = LoggerFactory.getLogger(getClass()); + + private RedisUtils redisUtils; + + @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) { + logger.error(ExceptionUtils.getErrorStackTrace(e)); + return ConsumeConcurrentlyStatus.RECONSUME_LATER; + } + return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; + } + + private void consumeMessage(MessageExt messageExt) { + String tags = messageExt.getTags(); + // msg示例: + // { + // "userId": "5198ef9e3644c4f49457d2b551a1432e", + // "appId": "数字社区登录", + // "loginTime": "2023-04-04 14:05:37", + // "ip": "219.146.91.110", + // "fromApp": "gov", + // "fromClient": "web" + // } + String msg = new String(messageExt.getBody()); + String pendingMsgLabel = messageExt.getUserProperty(MQUserPropertys.BLOCKED_MSG_LABEL); + logger.info("工作人员登录操作日志监听器-收到消息内容:{}", msg); + LoginMQMsg msgObj = JSON.parseObject(msg, LoginMQMsg.class); + + DistributedLock distributedLock = null; + RLock lock = null; + try { + distributedLock = SpringContextUtils.getBean(DistributedLock.class); + lock = distributedLock.getLock(String.format("lock:staff_login_log:%s:%s", tags, msgObj.getUserId()), + 30L, 30L, TimeUnit.SECONDS); + SpringContextUtils.getBean(StaffLoginLogService.class).saveLog(msgObj.getUserId(),msgObj.getLoginTime()); + } catch (RenException e) { + // 如果是我们手动抛出的异常,说明在业务可控范围内。目前不需要MQ重试 + logger.error("【RocketMQ】工作人员登录添加操作日志失败:".concat(ExceptionUtils.getErrorStackTrace(e))); + } catch (Exception e) { + // 不是我们自己抛出的异常,可以让MQ重试 + logger.error("【RocketMQ】工作人员登录添加操作日志失败:".concat(ExceptionUtils.getErrorStackTrace(e))); + throw e; + } finally { + distributedLock.unLock(lock); + } + + if (StringUtils.isNotBlank(pendingMsgLabel)) { + try { + removePendingMqMsgCache(pendingMsgLabel); + } catch (Exception e) { + logger.error("【工作人员登录操作事件监听器】-删除mq阻塞消息缓存失败:{}", ExceptionUtils.getErrorStackTrace(e)); + } + } + } + + /** + * @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/gov-org/gov-org-server/src/main/java/com/epmet/service/AgencyService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/AgencyService.java index 126a4ac975..9237f186c8 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/AgencyService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/AgencyService.java @@ -203,4 +203,11 @@ public interface AgencyService { * @return */ UsingCommunityStatsResultDTO usingCommunityStats(String orgId, String orgType); + + /** + * 获取当前客户下所有的社区组织,只返回id,orgIdPath,agencyName + * @param customerId + * @return + */ + List getAllCommunity(String customerId); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/BuildingService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/BuildingService.java index 27e1c4c1ee..d1da0c1ae8 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/BuildingService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/BuildingService.java @@ -20,6 +20,7 @@ package com.epmet.service; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.BuildingTreeLevelDTO; +import com.epmet.dto.IcBuildingDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.BuildingResultDTO; import com.epmet.dto.result.BuildingResultPagedDTO; @@ -96,4 +97,13 @@ public interface BuildingService { */ Result buildingImportExcel(ImportInfoFormDTO formDTO, InputStream inputStream, Result importTask) throws IOException; + /** + * 灵山大屏:查询楼栋坐标 + * + * @param customerId + * @param gridId + * @param neighborHoodId + * @return + */ + List buildingDistribution(String customerId, String gridId, String neighborHoodId); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CommunityBuildingManagerService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CommunityBuildingManagerService.java new file mode 100644 index 0000000000..1e90100266 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CommunityBuildingManagerService.java @@ -0,0 +1,77 @@ +package com.epmet.service; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.commons.tools.page.PageData; +import com.epmet.dto.form.yt.CommunityBuildingManagerPageFormDTO; +import com.epmet.dto.result.CommunityBuildingManagerDTO; +import com.epmet.dto.result.yt.CommunityBuildingManagerResultDTO; +import com.epmet.entity.CommunityBuildingManagerEntity; + +import java.nio.file.Path; +import java.util.List; + +/** + * 楼长单元长信息表(烟台) + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-05-06 + */ +public interface CommunityBuildingManagerService extends BaseService { + + /** + * 默认分页 + * + * @param formDTO + * @return PageData + * @author generator + * @date 2023-05-06 + */ + PageData page(CommunityBuildingManagerPageFormDTO formDTO); + + /** + * 查看详情 + * + * @param id + * @return CommunityBuildingManagerResultDTO + * @author generator + * @date 2023-05-06 + */ + CommunityBuildingManagerResultDTO get(String id); + + /** + * 新增楼长/单元长 + * 同步到具体的楼栋表 + * + * @param dto + * @return + */ + void save(CommunityBuildingManagerDTO dto); + + /** + * 编辑楼长/单元长 + * 同步到具体的楼栋 + * + * @param dto + * @return + */ + void update(CommunityBuildingManagerDTO dto); + + /** + * 批量删除楼长/单元长 + * 同时清空楼栋表里的信息 + * + * @param ids + * @return + */ + void delete(List ids); + + void execAsyncExcelImport(Path fileSavePath, String taskId); + + /** + * 楼长单元长功能,只能社区级工作人员导入 + * + * @param customerId + * @param userId + */ + void checkImportPermission(String customerId, String userId); +} \ No newline at end of file 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 bf2f7b855e..a5887e6c21 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 @@ -215,6 +215,9 @@ public interface CustomerAgencyService extends BaseService **/ StaffInAgencyListResultDTO staffInAgencyList(String staffId); + StaffInAgencyListResultDTO staffinAgencyLevelList(String staffId); + + /** * @Description 运营端-返回element ui - tree 结构agency列表 * @param customerId @@ -355,5 +358,38 @@ public interface CustomerAgencyService extends BaseService **/ Result> getCurrentUserCommunityInfo(TokenDto tokenDTO); + /** + * 返回组织的orgIdPath:包含自身 + * + * @param orgId + * @return + */ + String getOrgIdPath(String orgId); + + /** + * 返回下级数量 + * @param dto + * @return + */ + List getAgencyCountList(CommunityCountCensusFormDTO dto); + + /** + * @Description: 获取下级组织的社区数量 + * @param dto: + * @Return java.util.List + * @Author: lichao + * @Date: 2023/4/7 15:09 + */ + List getCommunityCountList(CommunityCountCensusFormDTO dto); + + /** + * @Description: 根据agencyId获取下级社区列表 + * @param dto: + * @Return java.util.List + * @Author: lichao + * @Date: 2023/4/7 16:49 + */ + PageData getCommunityList(CommunityCountCensusFormDTO dto); + CustomerAgencyDTO getByAgencyName(String customerId,String agencyName); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerDepartmentService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerDepartmentService.java index bcb0267e38..0cdcf1373d 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerDepartmentService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerDepartmentService.java @@ -102,4 +102,6 @@ public interface CustomerDepartmentService extends BaseService houseStatisListDetail(HouseChartFormDTO formDTO); PageData usingCommunityUserHouseStats(String orgId, String orgType, Integer pageNo, Integer pageSize); + + /** + * 群租房列表来源于烟台需求 + * @param formDTO + * @return + */ + PageData groupRentHouseList(GroupRentHouseFormDTO formDTO); + + /** + * 灵山大屏:查询房屋坐标点位 + * + * @param gridId + * @param neighborHoodId + * @param buildingId + * @return + */ + List houseDistribution(String customerId, String gridId, String neighborHoodId, String buildingId); + + + /** + * 灵山大屏:点击房屋,显示房屋详情 + * @param houseId + * @return + */ + HouseDetailResultDTO queryHouseDetail(String houseId); + + /** + * 灵山项目:根据楼栋id返回房屋列表,分页,且返回党员中心户标志, 联户群众数 + * @param buildingId + * @return + */ + PageData queryHouseListForLingShanScreen(Integer pageNo, Integer pageSize, String buildingId); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcBuildingService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcBuildingService.java index cde64d4da0..29453d73f3 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcBuildingService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcBuildingService.java @@ -133,4 +133,21 @@ public interface IcBuildingService extends BaseService { * @return com.epmet.commons.tools.utils.Result */ Result getBuildingDetail(String buildingId); + + /** + * 更新ic_building的楼长信息那4列:building_leader_name、building_leader_mobile、building_leader_id_card、building_leader_type + * @param updateList + */ + void updateBuildingLeader(List updateList); + + /** + * 灵山大屏:查询楼栋坐标 + * + * @param customerId + * @param gridId + * @param neighborHoodId + * @return + */ + List buildingDistribution(String customerId, String gridId, String neighborHoodId); + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcEnterpriseService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcEnterpriseService.java index e141e008e3..5868cb805b 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcEnterpriseService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcEnterpriseService.java @@ -2,19 +2,17 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; -import com.epmet.dto.IcEnterpriseChangeRecordDTO; import com.epmet.dto.form.EnterpriseFormDTO; import com.epmet.dto.form.EnterprisePageFormDTO; import com.epmet.dto.form.EnterprisePatrolFormDTO; import com.epmet.dto.result.EnterpriseDetailDTO; import com.epmet.dto.result.EnterprisePatrolResultDTO; +import com.epmet.dto.result.yt.EnterpriseCountPlaceTypeResDTO; import com.epmet.entity.IcEnterpriseEntity; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.UnsupportedEncodingException; import java.nio.file.Path; -import java.util.List; import java.util.Map; /** @@ -103,4 +101,12 @@ public interface IcEnterpriseService extends BaseService { */ void qrCodeExport(EnterprisePageFormDTO formDTO, HttpServletResponse response) throws IOException; + /** + * 九小场所分析:返回各个场所类型的数量 + * + * @param orgId + * @param orgType + * @return + */ + EnterpriseCountPlaceTypeResDTO countType(String orgId, String orgType); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java index cec8ca1349..997c23aae3 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java @@ -8,16 +8,19 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.dto.IcHouseDTO; import com.epmet.dto.ImportGeneralDTO; import com.epmet.dto.form.CheckHouseInfoFormDTO; +import com.epmet.dto.form.HouseCountPictureFormDTO; import com.epmet.dto.form.HouseFormDTO; import com.epmet.dto.form.lingshan.PartyCenterHousePageFormDTO; -import com.epmet.dto.result.HouseAgencyInfoResultDTO; -import com.epmet.dto.result.HouseInfoDTO; -import com.epmet.dto.result.HouseListResultDTO; -import com.epmet.dto.result.HousesNameResultDTO; +import com.epmet.dto.result.*; import com.epmet.dto.result.lingshan.HouseTreeDTO; import com.epmet.dto.result.lingshan.LingshanPartyCenterHouseLianhuDTO; import com.epmet.dto.result.lingshan.PartyCenterHouseBindLianHuDetailDTO; import com.epmet.dto.result.lingshan.PartyCenterHouseResultDTO; +import com.epmet.dto.result.HouseAgencyInfoResultDTO; +import com.epmet.dto.result.HouseInfoDTO; +import com.epmet.dto.result.HouseListResultDTO; +import com.epmet.dto.result.HousesNameResultDTO; +import com.epmet.dto.result.lingshan.*; import com.epmet.entity.IcHouseEntity; import java.util.List; @@ -153,6 +156,11 @@ public interface IcHouseService extends BaseService { */ PageData queryPartyCenterHouseList(PartyCenterHousePageFormDTO formDTO); + HouseCountPictureResultDTO getHousePurposeCount(HouseCountPictureFormDTO dto); + + HouseCountPictureResultDTO getHouseStatusCount(HouseCountPictureFormDTO dto); + + PageData getHousePictureList(HouseCountPictureFormDTO dto); /** * 灵山项目-党员中心户,绑定联户 * @param partyCenterHouseId @@ -183,4 +191,6 @@ public interface IcHouseService extends BaseService { * @param partyCenterHouseFlag */ void updatePartyCenterHouse(String houseId, String partyCenterHouseFlag); + + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java index 5ffb6a19e8..5313886414 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java @@ -20,7 +20,6 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.page.PageData; -import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.IcNeighborHoodDTO; import com.epmet.dto.ImportGeneralDTO; @@ -28,6 +27,7 @@ import com.epmet.dto.NeighborHoodAndManagementDTO; import com.epmet.dto.form.IcNeighborHoodAddFormDTO; import com.epmet.dto.form.ImportInfoFormDTO; import com.epmet.dto.form.NeighborHoodOptionFormDTO; +import com.epmet.dto.form.yt.ChooseGridFormDTO; import com.epmet.dto.result.BuildingResultDTO; import com.epmet.dto.result.IcNeighborHoodDetailDTO; import com.epmet.dto.result.ImportTaskCommonResultDTO; @@ -123,13 +123,12 @@ public interface IcNeighborHoodService extends BaseService /** * 获取用户组织下小区列表 * - * @param tokenDto * @param dto * @return java.util.List * @author zhy * @date 2022/8/19 15:57 */ - List getNeighborhoodList(TokenDto tokenDto, IcNeighborHoodDTO dto); + List getNeighborhoodList(ChooseGridFormDTO dto); /** * @Description 通过ID查询小区信息 @@ -204,4 +203,11 @@ public interface IcNeighborHoodService extends BaseService * @return */ List queryNeighborHoodOptions(NeighborHoodOptionFormDTO formDTO); + + /** + * 小区下拉框,小区名:xxx网格-xxx小区 + * @param formDTO + * @return + */ + List queryNeighborHoodOptionsYanTai(NeighborHoodOptionFormDTO formDTO); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcPropertyManagementService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcPropertyManagementService.java index bc808af034..83ea49e041 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcPropertyManagementService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcPropertyManagementService.java @@ -92,4 +92,13 @@ public interface IcPropertyManagementService extends BaseService page(Integer pageNo, Integer pageSize, String name); + /** + * 物业管理-列表查询 + * @param pageNo + * @param pageSize + * @param name 物业名称 + * @param contactName 物业联系人 + * @param contactMobile 联系电话 + * @return + */ + PageData page(Integer pageNo, + Integer pageSize, + String name, + String contactName, + String contactMobile); + + /** + * 查看物业详情 + * @param id + * @return + */ + IcPropertyManagementDTO getDetail(String id); + + /** + * + * @param fileSavePath + * @param taskId + */ + void execAsyncExcelImport(Path fileSavePath, String taskId); + + /** + * 物业管理批量删除 + * + * @param ids + * @return 返回失败的id列表 + */ + List deleteBatch(List ids); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/StaffLoginLogService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/StaffLoginLogService.java new file mode 100644 index 0000000000..ed1a49aa6e --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/StaffLoginLogService.java @@ -0,0 +1,103 @@ +package com.epmet.service; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.commons.tools.page.PageData; +import com.epmet.dto.form.yt.CommunityLoginFormDTO; +import com.epmet.dto.form.yt.CountActivityFormDTO; +import com.epmet.dto.result.yt.ActivityTatalInfo; +import com.epmet.dto.result.yt.CommunityLoginResultDTO; +import com.epmet.dto.result.yt.LoginLogCountByLevelResultDTO; +import com.epmet.dto.result.yt.AccountActivityInfo; +import com.epmet.entity.StaffLoginLogEntity; + +import java.util.Date; + +/** + * 工作人员登录日志表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-04 + */ +public interface StaffLoginLogService extends BaseService { + /** + * 登录,插入记录 + * + * @param staffId + * @param loginTime + */ + void saveLog(String staffId, Date loginTime); + + /** + * 返回市级账号登录总次数、区县级账号登录总次数、镇街级账号登录总次数、社区级账号登录总次数 + * + * @param orgId 为空时,默认当前登录用户所属组织id + * @param level + * @param startDate yyyy-MM-dd + * @param endDate yyyy-MM-dd + * @return + */ + LoginLogCountByLevelResultDTO countLevel(String orgId, String level, Date startDate, Date endDate); + + /** + * 下级社区账号登录次数排名 + * + * @param formDTO + * @return + */ + PageData pageCommunityCount(CommunityLoginFormDTO formDTO); + + /** + * 柱状图:下级组织账号登录次数汇总 + * + * @param orgId + * @param level + * @param startDate + * @param endDate + * @return + */ + PageData querySubCount(String orgId, String level, Date startDate, Date endDate); + + /** + * 查看区县 + * + * @param orgId + * @param level + * @param startDate + * @param endDate + * @param isPage + * @param pageNo + * @param pageSize + * @return + */ + PageData pageDistrictCount(String orgId, String level, Date startDate, Date endDate, Boolean isPage, Integer pageNo, Integer pageSize); + + /** + * 查看街镇 + * + * @param orgId + * @param startDate + * @param endDate + * @param isPage + * @param pageNo + * @param pageSize + * @return + */ + PageData streetCount(String orgId, Date startDate, Date endDate, Boolean isPage, Integer pageNo, Integer pageSize); + + /** + * 柱状图点击区县,查看街道,调用此接口 + * 计算的是街道的工作人员+街道下所有社区的人 的总次数 + * @return + */ + PageData streetTotal(String orgId, Date startDate, Date endDate, Integer pageNo, Integer pageSize); + /*** + * 获取登陆情况 + * @param formDTO + * @return com.epmet.dto.result.yt.AccountActivityInfo + * @author qushutong + * @date 2023/4/6 13:47 + */ + PageData getAccountActivityInfo(CountActivityFormDTO formDTO); + + ActivityTatalInfo getActivityTotal(CountActivityFormDTO formDTO); +} \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/StaffService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/StaffService.java index 5a4a989166..6bbb42094e 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/StaffService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/StaffService.java @@ -4,7 +4,9 @@ import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.form.*; import com.epmet.dto.result.*; +import org.springframework.web.bind.annotation.RequestParam; +import java.nio.file.Path; import java.util.List; /** @@ -154,4 +156,6 @@ public interface StaffService { * @Date 2021/9/8 16:57 */ List staffOrgList(TokenDto tokenDto); + + void execAsyncExcelImport(Path fileSavePath, String taskId,String orgType, String orgId); } 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 9b7ee4e3ba..19eb47111c 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 @@ -125,6 +125,7 @@ public class AgencyServiceImpl implements AgencyService { CustomerAgencyEntity entity = ConvertUtils.sourceToTarget(formDTO, CustomerAgencyEntity.class); entity.setOrganizationName(formDTO.getAgencyName()); entity.setTotalUser(NumConstant.ZERO); + entity.setDescription(formDTO.getDescription()); //1:查询上级机关信息 CustomerAgencyEntity parentEntity = customerAgencyDao.selectById(formDTO.getParentAgencyId()); if (null == parentEntity) { @@ -167,6 +168,14 @@ public class AgencyServiceImpl implements AgencyService { originalEntity.setCode(formDTO.getCode()); originalEntity.setContacts(formDTO.getContacts()); originalEntity.setMobile(formDTO.getMobile()); + originalEntity.setRemark(formDTO.getRemark()); + originalEntity.setSecretaryName(formDTO.getSecretaryName()); + originalEntity.setSecretaryMobile(formDTO.getSecretaryMobile()); + originalEntity.setDutyMobile(formDTO.getDutyMobile()); + originalEntity.setUnifiedSocialCreditCode(formDTO.getUnifiedSocialCreditCode()); + originalEntity.setUnifiedSocialCreditCodeCertificate(formDTO.getUnifiedSocialCreditCodeCertificate()); + originalEntity.setFullAddress(formDTO.getFullAddress()); + originalEntity.setDescription(formDTO.getDescription()); //利用mybatis 拦截器填充值 originalEntity.setUpdatedTime(null); originalEntity.setUpdatedBy(null); @@ -592,6 +601,7 @@ public class AgencyServiceImpl implements AgencyService { entity.setPid("0"); entity.setTotalUser(0); entity.setCustomerId(form.getCustomerId()); + entity.setDescription(form.getDescription()); customerAgencyDao.insert(entity); return entity.getId(); @@ -982,6 +992,7 @@ public class AgencyServiceImpl implements AgencyService { insertEntity.setOrganizationName(formDTO.getAgencyName()); insertEntity.setTotalUser(NumConstant.ZERO); insertEntity.setPid(parent.getId()); + insertEntity.setDescription(formDTO.getDescription()); insertEntity.setCustomerId(parent.getCustomerId()); insertEntity.setParentAreaCode(parent.getAreaCode()); if (StringUtils.isBlank(parent.getPid()) || NumConstant.ZERO_STR.equals(parent.getPid())) { @@ -1162,12 +1173,15 @@ public class AgencyServiceImpl implements AgencyService { calendar.set(Calendar.MILLISECOND, 0); Date endTime = calendar.getTime(); - AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(orgId); +/* AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(orgId); agencyOrgIdPath = getOrgIdPath(agencyInfo.getPids(), agencyInfo.getId()); - List currentUsingCommunityList = customerAgencyDao.getUsingCommunityList(customerId, orgId, agencyOrgIdPath, null); + List currentUsingCommunityList = customerAgencyDao.getUsingCommunityList(customerId, orgId, agencyOrgIdPath, null);*/ // List preferUsingCommunityList = customerAgencyDao.getUsingCommunityList(customerId, orgId, agencyOrgIdPath, endTime); // return new UsingCommunityStatsResultDTO(currentUsingCommunityList.size(), currentUsingCommunityList.size() - preferUsingCommunityList.size()); - return new UsingCommunityStatsResultDTO(currentUsingCommunityList.size(), 0); + CustomerAgencyEntity customerAgency = customerAgencyDao.selectById(orgId); + String pids = PidUtils.convertPid2OrgIdPath(customerAgency.getId(),customerAgency.getPids()); + + return new UsingCommunityStatsResultDTO(customerAgencyDao.communityCount(pids), 0); } else if ("grid".equals(orgType)) { // 网格下不会有该数据,给个0 return new UsingCommunityStatsResultDTO(0, 0); @@ -1183,4 +1197,15 @@ public class AgencyServiceImpl implements AgencyService { return orgPids.concat(":").concat(orgId); } + + /** + * 获取当前客户下所有的社区组织,只返回id,orgIdPath,agencyName + * + * @param customerId + * @return + */ + @Override + public List getAllCommunity(String customerId) { + return customerAgencyDao.getAllCommunity(customerId); + } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java index 5f16fb2c62..89bf5f04e5 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java @@ -92,6 +92,8 @@ public class BuildingServiceImpl implements BuildingService { private IcOrganizationCodeInfoDao icOrganizationCodeInfoDao; @Autowired private IcOrganizationCodeInfoServiceImpl icOrganizationCodeInfoServiceImpl; + @Autowired + private CommunityBuildingManagerDao communityBuildingManagerDao; @Override @@ -103,8 +105,8 @@ public class BuildingServiceImpl implements BuildingService { if (null != count && count > 0) { throw new RenException(EpmetErrorCode.BUILDING_NAME_EXITED.getCode(), EpmetErrorCode.BUILDING_NAME_EXITED.getMsg()); } - IcNeighborHoodEntity neighborHood = icNeighborHoodDao.selectById(formDTO.getNeighborHoodId()); - count = icBuildingDao.checkBuildNameV2(formDTO.getAgencyId(), neighborHood.getNeighborHoodName(), formDTO.getBuildingName(), null); + IcNeighborHoodEntity neighborHood1 = icNeighborHoodDao.selectById(formDTO.getNeighborHoodId()); + count = icBuildingDao.checkBuildNameV2(formDTO.getAgencyId(), neighborHood1.getNeighborHoodName(), formDTO.getBuildingName(), null); if (null != count && count > 0) { throw new EpmetException(EpmetErrorCode.BUILDING_NAME_EXITED_IN_GRID.getCode()); } @@ -119,8 +121,60 @@ public class BuildingServiceImpl implements BuildingService { IcBuildingDTO icBuildingDTO = ConvertUtils.sourceToTarget(formDTO, IcBuildingDTO.class); icBuildingDTO.setCustomerId(customerId); IcBuildingEntity entity = ConvertUtils.sourceToTarget(icBuildingDTO, IcBuildingEntity.class); + entity.setBuildingLeaderType("0"); icBuildingDao.insert(entity); + + LambdaQueryWrapper manager = new LambdaQueryWrapper().eq(CommunityBuildingManagerEntity::getBuildingId,entity.getId()); + CommunityBuildingManagerEntity communityBuildingManagerEntity = communityBuildingManagerDao.selectOne(manager); + + + if (StringUtils.isNotBlank(entity.getBuildingLeaderType())&& + StringUtils.isNotBlank(entity.getBuildingLeaderIdCard())&& + StringUtils.isNotBlank(entity.getBuildingLeaderMobile())&& + StringUtils.isNotBlank(entity.getBuildingLeaderName())){ + + if (communityBuildingManagerEntity!=null){ + communityBuildingManagerEntity.setIdCard(entity.getBuildingLeaderIdCard()); + communityBuildingManagerEntity.setPhone(entity.getBuildingLeaderMobile()); + communityBuildingManagerEntity.setType(entity.getBuildingLeaderType()); + communityBuildingManagerEntity.setName(entity.getBuildingLeaderName()); + communityBuildingManagerDao.updateById(communityBuildingManagerEntity); + }else{ + communityBuildingManagerEntity= new CommunityBuildingManagerEntity(); + communityBuildingManagerEntity.setIdCard(entity.getBuildingLeaderIdCard()); + communityBuildingManagerEntity.setPhone(entity.getBuildingLeaderMobile()); + communityBuildingManagerEntity.setType(entity.getBuildingLeaderType()); + communityBuildingManagerEntity.setName(entity.getBuildingLeaderName()); + communityBuildingManagerEntity.setBuildingId(entity.getId()); + communityBuildingManagerEntity.setViliageId(entity.getNeighborHoodId()); + IcNeighborHoodEntity neighborHood = icNeighborHoodDao.selectById(entity.getNeighborHoodId()); + communityBuildingManagerEntity.setGridId(neighborHood.getGridId()); + communityBuildingManagerEntity.setOrgIdPath(neighborHood.getAgencyPids()+":"+neighborHood.getAgencyId()+":"+neighborHood.getGridId()); + + List agencyIds = new ArrayList<>(Arrays.asList(neighborHood.getAgencyPids().split(":"))); + agencyIds.add(neighborHood.getAgencyId()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper().in(CustomerAgencyEntity::getId,agencyIds); + List customerAgencyEntities = customerAgencyDao.selectList(queryWrapper); + for (CustomerAgencyEntity customerAgencyEntity : customerAgencyEntities) { + if (customerAgencyEntity.getLevel().equals("community")){ + communityBuildingManagerEntity.setCommunityId(customerAgencyEntity.getId()); + } + if (customerAgencyEntity.getLevel().equals("street")){ + communityBuildingManagerEntity.setStreetId(customerAgencyEntity.getId()); + } + if (customerAgencyEntity.getLevel().equals("district")){ + communityBuildingManagerEntity.setDistrictId(customerAgencyEntity.getId()); + } + } + communityBuildingManagerDao.insert(communityBuildingManagerEntity); + } + }else{ + if (communityBuildingManagerEntity!=null){ + communityBuildingManagerDao.deleteById(communityBuildingManagerEntity); + } + } + //设置楼宇单元 Integer totalUnitNum = formDTO.getTotalUnitNum(); List unitList = new ArrayList<>(); @@ -657,8 +711,8 @@ public class BuildingServiceImpl implements BuildingService { if (null != count && count > 0) { throw new RenException(EpmetErrorCode.BUILDING_NAME_EXITED.getCode(), EpmetErrorCode.BUILDING_NAME_EXITED.getMsg()); } - IcNeighborHoodEntity neighborHood = icNeighborHoodDao.selectById(formDTO.getNeighborHoodId()); - count = icBuildingDao.checkBuildNameV2(formDTO.getAgencyId(), neighborHood.getNeighborHoodName(), formDTO.getBuildingName(), formDTO.getBuildingId()); + IcNeighborHoodEntity neighborHood1 = icNeighborHoodDao.selectById(formDTO.getNeighborHoodId()); + count = icBuildingDao.checkBuildNameV2(formDTO.getAgencyId(), neighborHood1.getNeighborHoodName(), formDTO.getBuildingName(), formDTO.getBuildingId()); if (null != count && count > 0) { throw new EpmetException(EpmetErrorCode.BUILDING_NAME_EXITED_IN_GRID.getCode()); } @@ -682,8 +736,60 @@ public class BuildingServiceImpl implements BuildingService { IcBuildingDTO icBuildingDTO = ConvertUtils.sourceToTarget(formDTO, IcBuildingDTO.class); icBuildingDTO.setId(formDTO.getBuildingId()); icBuildingDTO.setCustomerId(customerId); + icBuildingDTO.setBuildingLeaderType("0"); icBuildingService.update(icBuildingDTO); + + LambdaQueryWrapper manager = new LambdaQueryWrapper().eq(CommunityBuildingManagerEntity::getBuildingId,icBuildingDTO.getId()); + CommunityBuildingManagerEntity communityBuildingManagerEntity = communityBuildingManagerDao.selectOne(manager); + + + if (StringUtils.isNotBlank(icBuildingDTO.getBuildingLeaderType())&& + StringUtils.isNotBlank(icBuildingDTO.getBuildingLeaderIdCard())&& + StringUtils.isNotBlank(icBuildingDTO.getBuildingLeaderMobile())&& + StringUtils.isNotBlank(icBuildingDTO.getBuildingLeaderName())){ + + if (communityBuildingManagerEntity!=null){ + communityBuildingManagerEntity.setIdCard(icBuildingDTO.getBuildingLeaderIdCard()); + communityBuildingManagerEntity.setPhone(icBuildingDTO.getBuildingLeaderMobile()); + communityBuildingManagerEntity.setType(icBuildingDTO.getBuildingLeaderType()); + communityBuildingManagerEntity.setName(icBuildingDTO.getBuildingLeaderName()); + communityBuildingManagerDao.updateById(communityBuildingManagerEntity); + }else{ + communityBuildingManagerEntity= new CommunityBuildingManagerEntity(); + communityBuildingManagerEntity.setIdCard(icBuildingDTO.getBuildingLeaderIdCard()); + communityBuildingManagerEntity.setPhone(icBuildingDTO.getBuildingLeaderMobile()); + communityBuildingManagerEntity.setType(icBuildingDTO.getBuildingLeaderType()); + communityBuildingManagerEntity.setName(icBuildingDTO.getBuildingLeaderName()); + communityBuildingManagerEntity.setBuildingId(icBuildingDTO.getId()); + communityBuildingManagerEntity.setViliageId(icBuildingDTO.getNeighborHoodId()); + IcNeighborHoodEntity neighborHood = icNeighborHoodDao.selectById(icBuildingDTO.getNeighborHoodId()); + communityBuildingManagerEntity.setGridId(neighborHood.getGridId()); + communityBuildingManagerEntity.setOrgIdPath(neighborHood.getAgencyPids()+":"+neighborHood.getAgencyId()+":"+neighborHood.getGridId()); + + List agencyIds = new ArrayList<>(Arrays.asList(neighborHood.getAgencyPids().split(":"))); + agencyIds.add(neighborHood.getAgencyId()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper().in(CustomerAgencyEntity::getId,agencyIds); + List customerAgencyEntities = customerAgencyDao.selectList(queryWrapper); + for (CustomerAgencyEntity customerAgencyEntity : customerAgencyEntities) { + if (customerAgencyEntity.getLevel().equals("community")){ + communityBuildingManagerEntity.setCommunityId(customerAgencyEntity.getId()); + } + if (customerAgencyEntity.getLevel().equals("street")){ + communityBuildingManagerEntity.setStreetId(customerAgencyEntity.getId()); + } + if (customerAgencyEntity.getLevel().equals("district")){ + communityBuildingManagerEntity.setDistrictId(customerAgencyEntity.getId()); + } + } + communityBuildingManagerDao.insert(communityBuildingManagerEntity); + } + }else{ + if (communityBuildingManagerEntity!=null){ + communityBuildingManagerDao.deleteById(communityBuildingManagerEntity); + } + } + // 更新房屋名称 icHouseDao.houseUpdateHouseName(formDTO.getBuildingId()); //更新楼宇单元 @@ -763,4 +869,21 @@ public class BuildingServiceImpl implements BuildingService { } + + /** + * 灵山大屏:查询楼栋坐标 + * + * @param customerId + * @param gridId + * @param neighborHoodId + * @return + */ + @Override + public List buildingDistribution(String customerId, String gridId, String neighborHoodId) { + //随便加点注释 + List list=icBuildingDao.selectListByMap(customerId,gridId,neighborHoodId); + return ConvertUtils.sourceToTarget(list,IcBuildingDTO.class); + } + + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CommunityBuildingManagerServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CommunityBuildingManagerServiceImpl.java new file mode 100644 index 0000000000..3a26479c71 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CommunityBuildingManagerServiceImpl.java @@ -0,0 +1,547 @@ +package com.epmet.service.impl; + +import com.alibaba.excel.EasyExcel; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +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.dto.result.OptionResultDTO; +import com.epmet.commons.tools.enums.OrgLevelEnum; +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.page.PageData; +import com.epmet.commons.tools.redis.RedisUtils; +import com.epmet.commons.tools.redis.common.CustomerOrgRedis; +import com.epmet.commons.tools.redis.common.CustomerStaffRedis; +import com.epmet.commons.tools.utils.*; +import com.epmet.constants.ImportTaskConstants; +import com.epmet.dao.CommunityBuildingManagerDao; +import com.epmet.dao.IcBuildingDao; +import com.epmet.dto.CustomerAgencyDTO; +import com.epmet.dto.CustomerGridDTO; +import com.epmet.dto.IcBuildingDTO; +import com.epmet.dto.form.ImportTaskCommonFormDTO; +import com.epmet.dto.form.NeighborHoodOptionFormDTO; +import com.epmet.dto.form.yt.CommunityBuildingManagerPageFormDTO; +import com.epmet.dto.result.CommunityBuildingManagerDTO; +import com.epmet.dto.result.UploadImgResultDTO; +import com.epmet.dto.result.yt.CommunityBuildingManagerResultDTO; +import com.epmet.entity.CommunityBuildingManagerEntity; +import com.epmet.entity.IcBuildingEntity; +import com.epmet.excel.handler.CommunityBuildingManagerImportListener; +import com.epmet.excel.yt.CommunityBuildingManagerImportExcelData; +import com.epmet.excel.yt.IcPropertyManagementImportExcelData; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; +import com.epmet.feign.OssFeignClient; +import com.epmet.service.*; +import com.epmet.utils.ImportTaskUtils; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.disk.DiskFileItemFactory; +import org.apache.commons.lang3.StringUtils; +import org.apache.http.entity.ContentType; +import org.apache.poi.util.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import org.springframework.web.multipart.commons.CommonsMultipartFile; + +import java.io.IOException; +import java.io.OutputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 楼长单元长信息表(烟台) + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-05-06 + */ +@Slf4j +@Service +public class CommunityBuildingManagerServiceImpl extends BaseServiceImpl implements CommunityBuildingManagerService { + @Autowired + private IcBuildingDao icBuildingDao; + @Autowired + private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient; + @Autowired + private OssFeignClient ossFeignClient; + @Autowired + private CustomerGridService customerGridService; + @Autowired + private RedisUtils redisUtils; + + /** + * 列表分页查询 + * + * @param formDTO + * @return + */ + @Override + public PageData page(CommunityBuildingManagerPageFormDTO formDTO) { + // 默认查询本组织及下级 + CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getStaffId()); + if (null == staffInfoCacheResult) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "查询工作人员信息异常staffId:" + formDTO.getStaffId(), "查询工作人员信息异常"); + } + formDTO.setOrgIdPath(PidUtils.convertPid2OrgIdPath(staffInfoCacheResult.getAgencyId(), staffInfoCacheResult.getAgencyPIds())); + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); + List resList = baseDao.pageList(formDTO.getCustomerId(), + formDTO.getOrgIdPath(), + formDTO.getName(), + formDTO.getPhone(), + formDTO.getIdCard(), + formDTO.getType(), + formDTO.getDistrictId(), + formDTO.getStreetId(), + formDTO.getCommunityId(), + formDTO.getGridId(), + formDTO.getViliageId(), + formDTO.getBuildingId(), + formDTO.getUnitId(), null); + PageInfo pageInfo = new PageInfo<>(resList); + return new PageData<>(resList, pageInfo.getTotal(), formDTO.getPageSize()); + } + + /** + * 查看详情 + * + * @param id + * @return + */ + @Override + public CommunityBuildingManagerResultDTO get(String id) { + List resList = baseDao.pageList(EpmetRequestHolder.getLoginUserCustomerId(), + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, id); + if (CollectionUtils.isEmpty(resList)) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "community_building_manager表记录不存在:id:" + id, "记录不存在"); + } + return resList.get(NumConstant.ZERO); + } + + /** + * 新增楼长/单元长 + * 同步到具体的楼栋表 + * + * @param addFormDto + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void save(CommunityBuildingManagerDTO addFormDto) { + // 唯一性判断,类型+楼栋id或者类型+单元id唯一 + checkUnqiue(addFormDto.getType(), addFormDto.getBuildingId(), addFormDto.getUnitId(), null); + CommunityBuildingManagerEntity entity = ConvertUtils.sourceToTarget(addFormDto, CommunityBuildingManagerEntity.class); + CustomerGridDTO gridDTO = SpringContextUtils.getBean(CustomerGridService.class).get(addFormDto.getGridId()); + entity.setOrgIdPath(PidUtils.convertPid2OrgIdPath(gridDTO.getId(), gridDTO.getPids())); + insert(entity); + // 同步更新至ic_building + LambdaUpdateWrapper buildingUpdate = new LambdaUpdateWrapper<>(); + buildingUpdate.eq(IcBuildingEntity::getId, entity.getBuildingId()) + .set(IcBuildingEntity::getBuildingLeaderName, entity.getName()) + .set(IcBuildingEntity::getBuildingLeaderMobile, entity.getPhone()) + .set(IcBuildingEntity::getBuildingLeaderIdCard, entity.getIdCard()) + .set(IcBuildingEntity::getBuildingLeaderType, entity.getType()) + .set(IcBuildingEntity::getUpdatedBy, EpmetRequestHolder.getLoginUserId()) + .set(IcBuildingEntity::getUpdatedTime, new Date()); + icBuildingDao.update(null, buildingUpdate); + } + + private void checkUnqiue(String type, String buildingId, String unitId, String id) { + // 1号楼只允许有一个楼长 + // 1号楼只允许有一个单元长 + LambdaQueryWrapper countQuery = new LambdaQueryWrapper<>(); + countQuery.eq(CommunityBuildingManagerEntity::getType, type) + .eq(CommunityBuildingManagerEntity::getBuildingId, buildingId) + .eq(StringUtils.isNotBlank(unitId), CommunityBuildingManagerEntity::getUnitId, unitId) + .ne(StringUtils.isNotBlank(id), CommunityBuildingManagerEntity::getId, id); + if (baseDao.selectCount(countQuery) > NumConstant.ZERO) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "所选楼栋(单元)已存在楼长(单元长)", "所选楼栋(单元)已存在楼长(单元长)"); + } + } + + /** + * 编辑楼长/单元长 + * 同步到具体的楼栋 + * + * @param updateFormDto + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void update(CommunityBuildingManagerDTO updateFormDto) { + checkUnqiue(updateFormDto.getType(), updateFormDto.getBuildingId(), updateFormDto.getUnitId(), updateFormDto.getId()); + CommunityBuildingManagerEntity entity = ConvertUtils.sourceToTarget(updateFormDto, CommunityBuildingManagerEntity.class); + CustomerGridDTO gridDTO = SpringContextUtils.getBean(CustomerGridService.class).get(updateFormDto.getGridId()); + entity.setOrgIdPath(PidUtils.convertPid2OrgIdPath(gridDTO.getId(), gridDTO.getPids())); + updateById(entity); + // 同步更新至ic_building + LambdaUpdateWrapper buildingUpdate = new LambdaUpdateWrapper<>(); + buildingUpdate.eq(IcBuildingEntity::getId, updateFormDto.getBuildingId()) + .set(IcBuildingEntity::getBuildingLeaderName, updateFormDto.getName()) + .set(IcBuildingEntity::getBuildingLeaderMobile, updateFormDto.getPhone()) + .set(IcBuildingEntity::getBuildingLeaderIdCard, updateFormDto.getIdCard()) + .set(IcBuildingEntity::getBuildingLeaderType, updateFormDto.getType()) + .set(IcBuildingEntity::getUpdatedBy, EpmetRequestHolder.getLoginUserId()) + .set(IcBuildingEntity::getUpdatedTime, new Date()); + icBuildingDao.update(null, buildingUpdate); + } + + /** + * 批量删除楼长/单元长 + * 同时清空楼栋表里的信息 + * + * @param ids + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(List ids) { + Date now = new Date(); + ids.forEach(id -> { + CommunityBuildingManagerEntity origin = baseDao.selectById(id); + if (null != origin) { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(CommunityBuildingManagerEntity::getId, id) + .set(CommunityBuildingManagerEntity::getDelFlag, NumConstant.ONE_STR) + .set(CommunityBuildingManagerEntity::getUpdatedBy, EpmetRequestHolder.getLoginUserId()) + .set(CommunityBuildingManagerEntity::getUpdatedTime, now); + baseDao.update(null, updateWrapper); + if (StringUtils.isNotBlank(origin.getBuildingId())) { + // 清空楼栋表的楼长4列信息 + LambdaUpdateWrapper buildingUpdate = new LambdaUpdateWrapper<>(); + buildingUpdate.eq(IcBuildingEntity::getId, origin.getBuildingId()) + .set(IcBuildingEntity::getBuildingLeaderName, StrConstant.EPMETY_STR) + .set(IcBuildingEntity::getBuildingLeaderMobile, StrConstant.EPMETY_STR) + .set(IcBuildingEntity::getBuildingLeaderIdCard, StrConstant.EPMETY_STR) + .set(IcBuildingEntity::getBuildingLeaderType, StrConstant.EPMETY_STR) + .set(IcBuildingEntity::getUpdatedBy, EpmetRequestHolder.getLoginUserId()) + .set(IcBuildingEntity::getUpdatedTime, now); + icBuildingDao.update(null, buildingUpdate); + } + } + }); + } + + @Override + public void checkImportPermission(String customerId, String userId) { + CustomerStaffInfoCacheResult result = CustomerStaffRedis.getStaffInfo(customerId, userId); + CustomerAgencyDTO agencyDTO = SpringContextUtils.getBean(CustomerAgencyService.class).get(result.getAgencyId()); + if (!OrgLevelEnum.COMMUNITY.getCode().equals(agencyDTO.getLevel())) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "楼长单元长导入功能只有社区账号才可以正常导入", "请使用社区级账号导入excel"); + } + } + + /** + * 执行Excel导入 + * + * @param filePath + * @param importTaskId + */ + @Async + @Override + public void execAsyncExcelImport(Path filePath, String importTaskId) { + String staffId = EpmetRequestHolder.getLoginUserId(); + String customerId = EpmetRequestHolder.getLoginUserCustomerId(); + // 当前登录用户缓存信息 + CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(customerId, staffId); + // 当前登录用户所属组织信息 + CustomerAgencyDTO community = SpringContextUtils.getBean(CustomerAgencyService.class).get(staffInfoCacheResult.getAgencyId()); + String streetId = community.getPid(); + // 社区上级街道信息 + CustomerAgencyDTO street = SpringContextUtils.getBean(CustomerAgencyService.class).get(streetId); + String districtId = street.getPid(); + + //查询当前社区下的网格列表 + List gridList=customerGridService.getGridOption(staffInfoCacheResult.getAgencyId(), "addorupdate"); + Map gridMap = gridList.stream().collect(Collectors.toMap(OptionResultDTO::getLabel, OptionResultDTO::getValue)); + String uuid = IdWorker.getIdStr(); + String redisKey = "community_building_manager_import".concat(StrConstant.COLON).concat(uuid); + + try { + CommunityBuildingManagerImportListener listener = new CommunityBuildingManagerImportListener(gridMap,customerId,staffId,staffInfoCacheResult.getAgencyId(),districtId,streetId,redisKey, + SpringContextUtils.getBean(CommunityBuildingManagerServiceImpl.class)); + + EasyExcel.read(filePath.toFile(), CommunityBuildingManagerImportExcelData.class, listener).headRowNumber(1).sheet(0).doRead(); + + String errorDesFileUrl = null; + + List errorRows = listener.getErrorRows(); + + boolean failed = errorRows.size() > 0; + + // 合并到一起写入 + // errorRows.addAll(otherRows); + + // 生成并上传描述文件 + OutputStream os = null; + FileItem fileItem = null; + if (errorRows.size() > 0) { + try { + // 文件生成 + Path errorDescDir = FileUtils.getAndCreateDirUnderEpmetFilesDir(ImportTaskConstants.COMMUNITY_BUILDING_MANAGER, "import", "error_des"); + String fileName = UUID.randomUUID().toString().concat(".xlsx"); + + fileItem = new DiskFileItemFactory(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD, errorDescDir.toFile()) + .createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), false, fileName); + os = fileItem.getOutputStream(); + + EasyExcel.write(os, IcPropertyManagementImportExcelData.ErrorRow.class).sheet("信息列表").doWrite(errorRows); + // 文件上传oss + Result errorDesFileUploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem)); + if (errorDesFileUploadResult.success()) { + errorDesFileUrl = errorDesFileUploadResult.getData().getUrl(); + } + + } finally { + IOUtils.closeQuietly(os); + if (!fileItem.isInMemory()) { + try { + fileItem.delete(); + } catch (Exception e) { + log.error("【楼长单元长表community_building_manager】删除错误描述临时文件失败:{}", ExceptionUtils.getErrorStackTrace(e)); + } + } + } + } + + Result result = ImportTaskUtils.finishImportTask( + importTaskId, + failed ? ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL : ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS, + errorDesFileUrl, + ""); + + if (!result.success()) { + log.error("【楼长单元长表community_building_manager】finishImportTask失败"); + } + } catch (Exception e) { + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【楼长单元长表community_building_manager】出错:{}", errorMsg); + + ImportTaskCommonFormDTO importFinishTaskForm = new ImportTaskCommonFormDTO(); + importFinishTaskForm.setTaskId(importTaskId); + importFinishTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); + importFinishTaskForm.setOperatorId(staffId); + importFinishTaskForm.setResultDesc("物业管理表导入失败:系统异常,请查看系统日志"); + + Result result = commonServiceOpenFeignClient.finishImportTask(importFinishTaskForm); + if (!result.success()) { + log.error("【楼长单元长表community_building_manager】导入记录状态修改为'完成'失败"); + } + } finally { + // 删除临时文件 + if (Files.exists(filePath)) { + try { + Files.delete(filePath); + } catch (IOException e) { + e.printStackTrace(); + } + } + //删除小区缓存、楼栋缓存、单元缓存 + redisUtils.deleteByPrex(redisKey+"*"); + } + + + } + + /** + * @param customerId + * @param staffId + * @param agencyId + * @param rediPrex + * @param excelDataList + * @param listener + */ + public void handleImportExcelData(Map gridMap, + String customerId, + String staffId, + String agencyId, + String districtId, + String streetId, + String rediPrex, + List excelDataList, + CommunityBuildingManagerImportListener listener) { + List insertList = new ArrayList<>(); + List updateList = new ArrayList<>(); + List buildingUpdateList=new ArrayList<>(); + for (CommunityBuildingManagerDTO dto : excelDataList) { + try { + CommunityBuildingManagerEntity entity = ConvertUtils.sourceToTarget(dto, CommunityBuildingManagerEntity.class); + entity.setDistrictId(districtId); + entity.setStreetId(streetId); + + // 所属网格 + if (MapUtils.isEmpty(gridMap) || !gridMap.containsKey(dto.getGridName()) || StringUtils.isBlank(gridMap.get(dto.getGridName()))) { + CommunityBuildingManagerImportExcelData.ErrorRow errorRow = ConvertUtils.sourceToTarget(dto, CommunityBuildingManagerImportExcelData.ErrorRow.class); + errorRow.setErrorInfo("网格不存在"); + listener.getErrorRows().add(errorRow); + continue; + } + String gridId = gridMap.get(dto.getGridName()); + entity.setGridId(gridId); + entity.setOrgIdPath(CustomerOrgRedis.getOrgIdPath(gridId, OrgTypeEnum.GRID.getCode())); + + // 查询当前网格下的小区 + // 所属小区 + Map viliageMap =queryViliageList(customerId,staffId,agencyId,gridId,rediPrex); + if (MapUtils.isEmpty(viliageMap) || !viliageMap.containsKey(dto.getViliageName()) || StringUtils.isBlank(viliageMap.get(dto.getViliageName()))) { + CommunityBuildingManagerImportExcelData.ErrorRow errorRow = ConvertUtils.sourceToTarget(dto, CommunityBuildingManagerImportExcelData.ErrorRow.class); + errorRow.setErrorInfo("小区不存在"); + listener.getErrorRows().add(errorRow); + continue; + } + String viliageId = viliageMap.get(dto.getViliageName()); + entity.setViliageId(viliageId); + + + // 查询当前小区下的楼栋 + // 所属楼栋 + // List buildingList=queryBuildingList(viliageId,rediPrex); + // Map buildingMap = buildingList.stream().collect(Collectors.toMap(OptionResultDTO::getLabel, OptionResultDTO::getValue)); + Map buildingMap =queryBuildingList(viliageId,rediPrex);; + if (MapUtils.isEmpty(buildingMap) || !buildingMap.containsKey(dto.getBuildingName()) || StringUtils.isBlank(buildingMap.get(dto.getBuildingName()))) { + CommunityBuildingManagerImportExcelData.ErrorRow errorRow = ConvertUtils.sourceToTarget(dto, CommunityBuildingManagerImportExcelData.ErrorRow.class); + errorRow.setErrorInfo("楼栋不存在"); + listener.getErrorRows().add(errorRow); + continue; + } + String buildingId = buildingMap.get(dto.getBuildingName()); + entity.setBuildingId(buildingId); + + // 所属单元 + String unitId = ""; + if (StringUtils.isNotBlank(dto.getUnitName())) { + // 查询楼栋下的单元列表 + // List unitList=queryUnitList(buildingId,rediPrex); + // Map unitMap = unitList.stream().collect(Collectors.toMap(OptionResultDTO::getLabel, OptionResultDTO::getValue)); + Map unitMap = queryUnitList(buildingId, rediPrex); + if (MapUtils.isEmpty(unitMap) || !unitMap.containsKey(dto.getUnitName()) || StringUtils.isBlank(unitMap.get(dto.getUnitName()))) { + CommunityBuildingManagerImportExcelData.ErrorRow errorRow = ConvertUtils.sourceToTarget(dto, CommunityBuildingManagerImportExcelData.ErrorRow.class); + errorRow.setErrorInfo("单元不存在"); + listener.getErrorRows().add(errorRow); + continue; + } + unitId = unitMap.get(dto.getUnitName()); + } + entity.setUnitId(unitId); + + LambdaQueryWrapper countQuery = new LambdaQueryWrapper<>(); + countQuery.eq(CommunityBuildingManagerEntity::getType, entity.getType()) + .eq(CommunityBuildingManagerEntity::getBuildingId, buildingId) + .eq(StringUtils.isNotBlank(unitId), CommunityBuildingManagerEntity::getUnitId, unitId) + .ne(StringUtils.isNotBlank(entity.getId()),CommunityBuildingManagerEntity::getId, entity.getId()); + CommunityBuildingManagerEntity origin = baseDao.selectOne(countQuery); + if (null == origin) { + insertList.add(entity); + } else { + entity.setId(origin.getId()); + updateList.add(entity); + } + // 同步更新至ic_building + IcBuildingDTO icBuildingDTO = new IcBuildingDTO(); + icBuildingDTO.setId(entity.getBuildingId()); + icBuildingDTO.setBuildingLeaderMobile(entity.getPhone()); + icBuildingDTO.setBuildingLeaderIdCard(entity.getIdCard()); + icBuildingDTO.setBuildingLeaderType(entity.getType()); + icBuildingDTO.setBuildingLeaderName(entity.getName()); + icBuildingDTO.setUpdatedBy(staffId); + icBuildingDTO.setUpdatedTime(new Date()); + buildingUpdateList.add(icBuildingDTO); + + } catch (Exception e) { + CommunityBuildingManagerImportExcelData.ErrorRow errorRow = ConvertUtils.sourceToTarget(dto, CommunityBuildingManagerImportExcelData.ErrorRow.class); + errorRow.setErrorInfo("数据处理异常"); + listener.getErrorRows().add(errorRow); + } + } + // 同步到ic_building + if(!CollectionUtils.isEmpty(insertList)){ + this.insertBatch(insertList); + } + if(!CollectionUtils.isEmpty(updateList)){ + this.updateBatchById(updateList); + } + if(!CollectionUtils.isEmpty(buildingUpdateList)){ + SpringContextUtils.getBean(IcBuildingService.class).updateBuildingLeader(buildingUpdateList); + } + } + + + private Map queryViliageList(String customerId, String staffId, String agencyId, String gridId, String rediPrex) { + String redisKey = rediPrex.concat(StrConstant.COLON).concat("viliage_list").concat(StrConstant.COLON).concat(gridId); + Map viliageMap = redisUtils.hGetAll(redisKey); + if (MapUtils.isEmpty(viliageMap)) { + NeighborHoodOptionFormDTO neighborHoodOptionFormDTO = new NeighborHoodOptionFormDTO(); + neighborHoodOptionFormDTO.setCustomerId(customerId); + neighborHoodOptionFormDTO.setStaffId(staffId); + neighborHoodOptionFormDTO.setAgencyId(agencyId); + neighborHoodOptionFormDTO.setGridId(gridId); + List resultList = SpringContextUtils.getBean(IcNeighborHoodService.class).queryNeighborHoodOptions(neighborHoodOptionFormDTO); + viliageMap = resultList.stream().collect(Collectors.toMap(OptionResultDTO::getLabel, OptionResultDTO::getValue)); + // 有效时间1小时 + redisUtils.hMSet(redisKey, viliageMap, RedisUtils.HOUR_ONE_EXPIRE); + } + Map resultMap = new HashMap<>(); + viliageMap.forEach((k, v) -> + resultMap.put(k, (String) v) + ); + return resultMap; + } + + private Map queryBuildingList(String viliageId, String rediPrex) { + String redisKey = rediPrex.concat(StrConstant.COLON).concat("building_List").concat(StrConstant.COLON).concat(viliageId); + Map buildingMap = redisUtils.hGetAll(redisKey); + if (MapUtils.isEmpty(buildingMap)) { + List resultList = SpringContextUtils.getBean(IcBuildingService.class).getBuildingOptions(viliageId); + buildingMap = resultList.stream().collect(Collectors.toMap(OptionResultDTO::getLabel, OptionResultDTO::getValue)); + // 有效时间1小时 + redisUtils.hMSet(redisKey, buildingMap, RedisUtils.HOUR_ONE_EXPIRE); + } + Map resultMap = new HashMap<>(); + buildingMap.forEach((k, v) -> + resultMap.put(k, (String) v) + ); + return resultMap; + } + + private Map queryUnitList(String buildingId, String rediPrex) { + String redisKey = rediPrex.concat(StrConstant.COLON).concat("unit_List").concat(StrConstant.COLON).concat(buildingId); + Map unitMap = redisUtils.hGetAll(redisKey); + if (MapUtils.isEmpty(unitMap)) { + List resultList = SpringContextUtils.getBean(IcBuildingUnitService.class).getUnitOptions(buildingId); + unitMap = resultList.stream().collect(Collectors.toMap(OptionResultDTO::getLabel, OptionResultDTO::getValue)); + // 有效时间1小时 + redisUtils.hMSet(redisKey, unitMap, RedisUtils.HOUR_ONE_EXPIRE); + } + Map resultMap = new HashMap<>(); + unitMap.forEach((k, v) -> + resultMap.put(k, (String) v) + ); + return resultMap; + } + + +} \ No newline at end of file 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 c0bae678b1..ac7d94d823 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,7 +18,6 @@ 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.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; @@ -38,6 +37,7 @@ import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.PidUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.CustomerAgencyConstant; import com.epmet.constant.CustomerGridConstant; @@ -57,6 +57,8 @@ import com.epmet.feign.OperCrmFeignClient; import com.epmet.redis.CustomerAgencyRedis; import com.epmet.service.CustomerAgencyService; import com.epmet.util.ModuleConstant; +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; @@ -132,12 +134,16 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl getWrapper(Map params) { - String id = (String) params.get(FieldConstant.ID_HUMP); - - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); - + private LambdaQueryWrapper getWrapper(Map map) { + String id = map.containsKey(FieldConstant.ID_HUMP) ? (String) map.get(FieldConstant.ID_HUMP) : null; + String customerId = map.containsKey("CUSTOMER_ID") ? (String) map.get("CUSTOMER_ID") : null; + String level = map.containsKey("LEVEL") ? (String) map.get("LEVEL") : null; + String pid = map.containsKey("PID") ? (String) map.get("PID") : null; + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(id), CustomerAgencyEntity::getId, id) + .eq(StringUtils.isNotBlank(customerId), CustomerAgencyEntity::getCustomerId, customerId) + .eq(StringUtils.isNotBlank(level), CustomerAgencyEntity::getLevel, level) + .eq(StringUtils.isNotBlank(pid), CustomerAgencyEntity::getPid, pid); return wrapper; } @@ -682,6 +688,17 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl getDepartmentLevelList(String subAgencyPids) { + List subAgencyList = baseDao.selectSubAgencyLevelList(subAgencyPids); + if (subAgencyList.size() > NumConstant.ZERO) { + for (AgencySubResultDTO sub : subAgencyList) { + List subAgency = getDepartmentLevelList(sub.getPids() + ":" + sub.getAgencyId()); + sub.setSubAgencyList(subAgency); + } + } + return subAgencyList; + } + /** * @param staffId * @return @@ -1053,6 +1070,24 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl%s", staffId)); + throw new RenException(CustomerAgencyConstant.SELECT_STAFF_AGENCY_EXCEPTION); + } + resultDTO.setAgencyList(agencyList); + + //2.递归查询所有下级组织信息 + List subAgencyList = getDepartmentLevelList(("".equals(agencyList.getPids()) ? "" : agencyList.getPids() + ":") + agencyList.getAgencyId()); + resultDTO.setSubAgencyList(subAgencyList); + + return resultDTO; + } + /** * @param customerId * @return com.epmet.dto.result.AgencyElementTreeResultDTO @@ -1215,6 +1250,7 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl agencyList, List gridList) { @@ -1629,6 +1665,145 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl>().ok(list); } + /** + * 返回组织的orgIdPath:包含自身 + * + * @param orgId + * @return + */ + @Override + public String getOrgIdPath(String orgId) { + CustomerAgencyEntity customerAgencyEntity = baseDao.selectById(orgId); + if (null == customerAgencyEntity) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode()); + } + if (StringUtils.isBlank(customerAgencyEntity.getPid()) || NumConstant.ZERO_STR.equals(customerAgencyEntity.getPid())) { + return orgId; + } + return customerAgencyEntity.getPids().concat(StrConstant.COLON).concat(orgId); + } + + /** + * @Description: + * @param dto: + * @Return java.util.List + * @Author: lichao + * @Date: 2023/4/7 14:17 + */ + @Override + public List getAgencyCountList(CommunityCountCensusFormDTO dto) { + + List agencyCountCensusResultDTOS = new ArrayList<>(); + + CustomerAgencyEntity customerAgency = baseDao.selectById(dto.getAgencyId()); + if (customerAgency != null){ + + Map type = new HashMap<>(); + String pids = PidUtils.convertPid2OrgIdPath(customerAgency.getId(),customerAgency.getPids()); + + agencyCountCensusResultDTOS = baseDao.agencyCount(pids,dto.getTimeStart(),dto.getTimeEnd()); + agencyCountCensusResultDTOS.forEach( + agencyCountCensusResultDTO ->{ + type.put(agencyCountCensusResultDTO.getLevel(),agencyCountCensusResultDTO.getLevel()); + } + ); + AgencyCountCensusResultDTO agencyCountCensusResultDTOGrid = new AgencyCountCensusResultDTO(); + agencyCountCensusResultDTOGrid.setLevel("grid"); + agencyCountCensusResultDTOGrid.setCount(baseDao.agencyGridCount(pids,dto.getTimeStart(),dto.getTimeEnd())); + agencyCountCensusResultDTOS.add(agencyCountCensusResultDTOGrid); + + AgencyCountCensusResultDTO agencyCountCensusResultDTOStaff = new AgencyCountCensusResultDTO(); + agencyCountCensusResultDTOStaff.setLevel("staff"); + agencyCountCensusResultDTOStaff.setCount(baseDao.agencyStaffCount(pids,dto.getTimeStart(),dto.getTimeEnd())); + agencyCountCensusResultDTOS.add(agencyCountCensusResultDTOStaff); + + if (type.get("community") == null){ + AgencyCountCensusResultDTO agencyCountCensusResultDTOcom = new AgencyCountCensusResultDTO(); + agencyCountCensusResultDTOcom.setLevel("community"); + agencyCountCensusResultDTOcom.setCount(0); + agencyCountCensusResultDTOS.add(agencyCountCensusResultDTOcom); + } + if (type.get("street") == null){ + AgencyCountCensusResultDTO agencyCountCensusResultDTOstree = new AgencyCountCensusResultDTO(); + agencyCountCensusResultDTOstree.setLevel("street"); + agencyCountCensusResultDTOstree.setCount(0); + agencyCountCensusResultDTOS.add(agencyCountCensusResultDTOstree); + } + }else{ + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"获取用户组织信息异常","获取用户组织信息异常"); + } + + + return agencyCountCensusResultDTOS; + } + + @Override + public List getCommunityCountList(CommunityCountCensusFormDTO dto) { + + List resultDTOS = new ArrayList<>(); + + CustomerAgencyEntity customerAgency = baseDao.selectById(dto.getAgencyId()); + if (customerAgency!=null){ + String pids = PidUtils.convertPid2OrgIdPath(customerAgency.getId(),customerAgency.getPids()); + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper().eq(CustomerAgencyEntity::getPids,pids); + List agencyEntityList = baseDao.selectList(queryWrapper); + agencyEntityList.forEach( + entity->{ + CommunityCountCensusResultDTO communityCountCensusResultDTO = new CommunityCountCensusResultDTO(); + communityCountCensusResultDTO.setAgencyId(entity.getId()); + communityCountCensusResultDTO.setAgencyName(entity.getOrganizationName()); + String agencyPids = PidUtils.convertPid2OrgIdPath(entity.getId(),entity.getPids()); + communityCountCensusResultDTO.setCount(baseDao.getCommunityCount(agencyPids,dto.getTimeStart(),dto.getTimeEnd())); + resultDTOS.add(communityCountCensusResultDTO); + } + ); + + }else { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"获取用户组织信息异常","获取用户组织信息异常"); + } + + return resultDTOS; + } + + @Override + public PageData getCommunityList(CommunityCountCensusFormDTO dto) { + + CustomerAgencyEntity customerAgency = baseDao.selectById(dto.getAgencyId()); + if (customerAgency!=null){ + + String pids = PidUtils.convertPid2OrgIdPath(customerAgency.getId(),customerAgency.getPids()); + + PageHelper.startPage(dto.getPageNum(), dto.getPageSize()); + List entityList = baseDao.getCommunityByPidList(pids,dto.getTimeStart(),dto.getTimeEnd()); + + entityList.forEach( + entity->{ + String[] pidArray = entity.getPids().split(":"); + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper().in(CustomerAgencyEntity::getId,pidArray); + List customerAgencyEntities = baseDao.selectList(queryWrapper); + for (CustomerAgencyEntity customerAgencyEntity : customerAgencyEntities) { + if (customerAgencyEntity.getLevel().equals("district")){ + entity.setDistrictName(customerAgencyEntity.getOrganizationName()); + } + if (customerAgencyEntity.getLevel().equals("street")){ + entity.setStreeName(customerAgencyEntity.getOrganizationName()); + } + } + } + ); + + PageInfo pageInfo = new PageInfo<>(entityList); + return new PageData<>(entityList, pageInfo.getTotal(),dto.getPageSize()); + + + }else { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"获取用户组织信息异常","获取用户组织信息异常"); + } + + } + @Override public CustomerAgencyDTO getByAgencyName(String customerId,String agencyName) { LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper<>(); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerDepartmentServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerDepartmentServiceImpl.java index 63acec3171..9a95149a5f 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerDepartmentServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerDepartmentServiceImpl.java @@ -17,11 +17,14 @@ 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; 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.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.dao.CustomerDepartmentDao; @@ -118,6 +121,15 @@ public class CustomerDepartmentServiceImpl extends BaseServiceImpl countQuery=new LambdaQueryWrapper<>(); + countQuery.eq(CustomerDepartmentEntity::getAgencyId,agencyId) + .eq(CustomerDepartmentEntity::getDepartmentName,departmentName) + .ne(StringUtils.isNotBlank(deptId),CustomerDepartmentEntity::getId,deptId); + if(baseDao.selectCount(countQuery)>0){ + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"部门名称已存在","部门名称已存在"); + } + } } 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 e165811212..25aa910c2c 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 @@ -301,6 +301,7 @@ public class CustomerGridServiceImpl extends BaseServiceImpl addDepartment(AddDepartmentFormDTO formDTO) { + //同一组织下部门名称唯一 + SpringContextUtils.getBean(CustomerDepartmentService.class).checkUnqiueName(formDTO.getAgencyId(),formDTO.getDepartmentName(),null); Result result = new Result(); AddDepartmentResultDTO addDepartmentResultDTO = new AddDepartmentResultDTO(); CustomerDepartmentEntity entity = ConvertUtils.sourceToTarget(formDTO, CustomerDepartmentEntity.class); @@ -135,6 +153,9 @@ public class DepartmentServiceImpl implements DepartmentService { @Override @Transactional(rollbackFor = Exception.class) public Result editDepartment(EditDepartmentFormDTO formDTO) { + CustomerDepartmentEntity origin=customerDepartmentDao.selectById(formDTO.getDepartmentId()); + //同一组织下部门名称唯一 + SpringContextUtils.getBean(CustomerDepartmentService.class).checkUnqiueName(origin.getAgencyId(),formDTO.getDepartmentName(),formDTO.getDepartmentId()); Result result = new Result(); CustomerDepartmentEntity entity = ConvertUtils.sourceToTarget(formDTO, CustomerDepartmentEntity.class); entity.setId(formDTO.getDepartmentId()); @@ -551,5 +572,83 @@ public class DepartmentServiceImpl implements DepartmentService { return resultDTO; } + @Async + @Override + public void execAsyncExcelImport(Path filePath, String importTaskId,String agencyId,String originalFilename) { + CustomerAgencyEntity agencyEntity = customerAgencyDao.selectById(agencyId); + try { + DeptExcelImportListener listener = new DeptExcelImportListener(EpmetRequestHolder.getLoginUserCustomerId(), + EpmetRequestHolder.getLoginUserId(), + agencyEntity, + SpringContextUtils.getBean(CustomerDepartmentService.class)); + EasyExcel.read(filePath.toFile(), DeptImportExcelDTO.class, listener).headRowNumber(1).sheet(0).doRead(); + + Path errorDescFile = null; + String errorDesFileUrl = null; + List errorRows = listener.getErrorRows(); + + boolean failed = errorRows.size() > 0; + if (failed) { + // 生成并上传错误文件 + try { + // 文件生成 + Path errorDescDir = FileUtils.getAndCreateDirUnderEpmetFilesDir("customer_dept", "import", "error_des"); + String fileName = originalFilename.concat(DateUtils.format(new Date(),DateUtils.DATE_TIME_NO_SPLIT)).concat(".xlsx"); + errorDescFile = errorDescDir.resolve(fileName); + + FileItemFactory factory = new DiskFileItemFactory(16, errorDescDir.toFile()); + FileItem fileItem = factory.createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), true, fileName); + OutputStream os = fileItem.getOutputStream(); + + EasyExcel.write(os, DeptImportExcelDTO.ErrorRow.class).sheet("导入失败列表").doWrite(errorRows); + + // 文件上传oss + Result errorDesFileUploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem)); + if (errorDesFileUploadResult.success()) { + errorDesFileUrl = errorDesFileUploadResult.getData().getUrl(); + } + } finally { + if (Files.exists(errorDescFile)) { + Files.delete(errorDescFile); + } + } + } + + ImportTaskCommonFormDTO importFinishTaskForm = new ImportTaskCommonFormDTO(); + importFinishTaskForm.setTaskId(importTaskId); + importFinishTaskForm.setProcessStatus(failed ? ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL : ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS); + importFinishTaskForm.setOperatorId(EpmetRequestHolder.getLoginUserId()); + importFinishTaskForm.setResultDesc(""); + importFinishTaskForm.setResultDescFilePath(errorDesFileUrl); + + Result result = commonServiceOpenFeignClient.finishImportTask(importFinishTaskForm); + if (!result.success()) { + log.error("【部门导入】finishImportTask失败"); + } + } catch (Exception e) { + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【部门导入】出错:{}", errorMsg); + + ImportTaskCommonFormDTO importFinishTaskForm = new ImportTaskCommonFormDTO(); + importFinishTaskForm.setTaskId(importTaskId); + importFinishTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); + importFinishTaskForm.setOperatorId(EpmetRequestHolder.getLoginUserId()); + importFinishTaskForm.setResultDesc("导入失败"); + Result result = commonServiceOpenFeignClient.finishImportTask(importFinishTaskForm); + if (!result.success()) { + log.error("【部门导入】导入记录状态修改为'完成'失败"); + } + } finally { + // 删除临时文件 + if (Files.exists(filePath)) { + try { + Files.delete(filePath); + } catch (IOException e) { + log.error("method exception", e); + } + } + } + } + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java index a642150cf9..c558ea4d6b 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java @@ -36,6 +36,8 @@ import com.epmet.dao.*; import com.epmet.dto.*; import com.epmet.dto.form.*; import com.epmet.dto.result.*; +import com.epmet.dto.result.lingshan.HouseDetailResultDTO; +import com.epmet.dto.result.lingshan.PartyCenterHouseResultDTO; import com.epmet.entity.*; import com.epmet.enums.*; import com.epmet.feign.*; @@ -132,7 +134,8 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { @Autowired private DataReportOpenFeignClient dataReportOpenFeignClient; - + @Autowired + private LingshanPartyCenterHouseLianhuDao partyCenterHouseLianhuDao; /** * 房屋管理-新增房屋 * @@ -245,6 +248,8 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { icHouseDTO.setHouseTypeName(HouseTypeEnums.getTypeValue(formDTO.getHouseType())); icHouseDTO.setPurposeName(HousePurposeEnums.getTypeValue(formDTO.getPurpose())); icHouseDTO.setRentName(HouseRentFlagEnums.getTypeValue(formDTO.getRentFlag())); + icHouseDTO.setFloor(formDTO.getFloor()); + icHouseDTO.setArea(formDTO.getArea()); //设置 icHouseDTO.setHouseName(getHouseName(formDTO)); icHouseDTO.setFullName(icHouseService.getFullName(formDTO.getNeighborHoodId(), formDTO.getBuildingId(), formDTO.getBuildingUnitId(), formDTO.getDoorName())); @@ -1525,4 +1530,87 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { agencyNamePathList.add(agencyInfo.getOrganizationName()); return String.join("-", agencyNamePathList); } + + + /** + * 群租房列表来源于烟台需求 + * + * @param formDTO + * @return + */ + @Override + public PageData groupRentHouseList(GroupRentHouseFormDTO formDTO) { + if(StringUtils.isBlank(formDTO.getOrgId())){ + //默认查询当前组织及下级 + formDTO.setOrgType("agency"); + CustomerStaffInfoCacheResult staffInfoCacheResult=CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(),formDTO.getStaffId()); + formDTO.setOrgId(staffInfoCacheResult.getAgencyId()); + } + //群租房:出租状态并超过5人(≥5) + PageHelper.startPage(formDTO.getPageNo(),formDTO.getPageSize()); + List list=icHouseDao.selectGroupRentHouseList(formDTO); + list.forEach(item -> { + item.setHouseType(HouseTypeEnums.getTypeValue(item.getHouseTypeKey())); + item.setPurpose(HousePurposeEnums.getTypeValue(item.getPurposeKey())); + }); + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal()); + } + + + /** + * 灵山大屏:查询房屋坐标点位 + * + * @param gridId + * @param neighborHoodId + * @param buildingId + * @return + */ + @Override + public List houseDistribution(String customerId,String gridId, String neighborHoodId, String buildingId) { + List list=icHouseDao.selectListByMap(customerId,gridId,neighborHoodId,buildingId); + return ConvertUtils.sourceToTarget(list,IcHouseDTO.class); + } + + /** + * 灵山大屏:点击房屋,显示房屋详情 + * @param houseId + * @return + */ + @Override + public HouseDetailResultDTO queryHouseDetail(String houseId) { + IcHouseDTO data = icHouseService.get(houseId); + HouseDetailResultDTO resultDTO = ConvertUtils.sourceToTarget(data, HouseDetailResultDTO.class); + if (null != resultDTO) { + LambdaQueryWrapper countQuery = new LambdaQueryWrapper<>(); + countQuery.eq(LingshanPartyCenterHouseLianhuEntity::getPartyCenterHouseId, houseId); + resultDTO.setTotalLianHu(partyCenterHouseLianhuDao.selectCount(countQuery)); + } + return resultDTO; + } + + /** + * 灵山项目:根据楼栋id返回房屋列表,分页,且返回党员中心户标志, 联户群众数 + * + * @param pageNo + * @param pageSize + * @param buildingId + * @return + */ + @Override + public PageData queryHouseListForLingShanScreen(Integer pageNo, Integer pageSize, String buildingId) { + PageHelper.startPage(pageNo, pageSize); + List list = icHouseDao.selectListPartyCenterHouse(null, + null, + null, + null, + buildingId, + null); + list.forEach(item -> { + item.setHouseTypeName(HouseTypeEnums.getTypeValue(item.getHouseType())); + item.setPurposeName(HousePurposeEnums.getTypeValue(item.getPurpose())); + }); + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal(), pageSize); + } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcBuildingServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcBuildingServiceImpl.java index 577e77c787..8106d144e3 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcBuildingServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcBuildingServiceImpl.java @@ -19,6 +19,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.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; @@ -173,4 +174,37 @@ public class IcBuildingServiceImpl extends BaseServiceImpl().ok(baseDao.getBuildingDetail(buildingId)); } + /** + * 更新ic_building的楼长信息那4列:building_leader_name、building_leader_mobile、building_leader_id_card、building_leader_type + * + * @param updateList + */ + @Override + public void updateBuildingLeader(List updateList) { + updateList.forEach(dto -> { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(IcBuildingEntity::getId, dto.getId()) + .set(IcBuildingEntity::getBuildingLeaderName, dto.getBuildingLeaderName()) + .set(IcBuildingEntity::getBuildingLeaderMobile, dto.getBuildingLeaderMobile()) + .set(IcBuildingEntity::getBuildingLeaderIdCard, dto.getBuildingLeaderIdCard()) + .set(IcBuildingEntity::getBuildingLeaderType, dto.getBuildingLeaderType()) + .set(IcBuildingEntity::getUpdatedBy, dto.getUpdatedBy()) + .set(null != dto.getUpdatedTime(), IcBuildingEntity::getUpdatedTime, dto.getUpdatedTime()); + baseDao.update(null, updateWrapper); + }); + } + /** + * 灵山大屏:查询楼栋坐标 + * + * @param customerId + * @param gridId + * @param neighborHoodId + * @return + */ + @Override + public List buildingDistribution(String customerId, String gridId, String neighborHoodId) { + List list=baseDao.selectListByMap(customerId,gridId,neighborHoodId); + return ConvertUtils.sourceToTarget(list,IcBuildingDTO.class); + } + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcEnterpriseServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcEnterpriseServiceImpl.java index 48cd614b50..399c2df6b0 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcEnterpriseServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcEnterpriseServiceImpl.java @@ -30,10 +30,11 @@ import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.*; import com.epmet.dto.form.*; import com.epmet.dto.result.*; +import com.epmet.dto.result.yt.EnterpriseCountPlaceTypeDetailDTO; +import com.epmet.dto.result.yt.EnterpriseCountPlaceTypeResDTO; import com.epmet.entity.*; import com.epmet.excel.EnterpriseImportExcelDTO; import com.epmet.excel.handler.IcEnterpriseExcelImportListener; -import com.epmet.feign.EpmetAdminOpenFeignClient; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.feign.OssFeignClient; @@ -86,8 +87,6 @@ public class IcEnterpriseServiceImpl extends BaseServiceImpl dictList = SpringContextUtils.getBean(CoverageService.class).dictMap(EpmetRequestHolder.getLoginUserCustomerId(), CoveragePlaceTypeEnum.ENTERPRISE_PATROL.getCode()); + if (CollectionUtils.isEmpty(dictList)) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "场所类型字典为空", "场所类型字典为空"); + } + // + List placeTypeCountList = baseDao.selectCountByPlaceType(EpmetRequestHolder.getLoginUserCustomerId(),orgId, orgType); + Map map = CollectionUtils.isEmpty(placeTypeCountList) ? new HashMap<>() : placeTypeCountList.stream().collect(Collectors.toMap(EnterpriseCountPlaceTypeDetailDTO::getPlaceType, o -> o));; + List list = new ArrayList<>(); + int total = 0; + for (IcCoverageCategoryDictListResultDTO placeType : dictList) { + EnterpriseCountPlaceTypeDetailDTO detailDTO = new EnterpriseCountPlaceTypeDetailDTO(); + detailDTO.setPlaceType(placeType.getValue()); + detailDTO.setPlaceTypeName(placeType.getLabel()); + detailDTO.setTotal(NumConstant.ZERO); + if (map.containsKey(placeType.getValue())) { + detailDTO.setTotal(map.get(placeType.getValue()).getTotal()); + } + list.add(detailDTO); + total += detailDTO.getTotal(); + } + EnterpriseCountPlaceTypeResDTO resDTO = new EnterpriseCountPlaceTypeResDTO(); + resDTO.setList(list); + resDTO.setTotal(total); + + return resDTO; + } + + + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java index 8a782c376a..f9e09c123f 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java @@ -19,17 +19,22 @@ import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.PidUtils; import com.epmet.commons.tools.utils.Result; +import com.epmet.dao.*; +import com.epmet.dto.IcHouseDTO; +import com.epmet.dto.IcResiCategoryStatsConfigDTO; +import com.epmet.dto.IcResiUserDTO; +import com.epmet.dto.ImportGeneralDTO; import com.epmet.commons.tools.utils.SpringContextUtils; import com.epmet.dao.*; import com.epmet.dto.*; import com.epmet.dto.form.CheckHouseInfoFormDTO; +import com.epmet.dto.form.HouseCountPictureFormDTO; import com.epmet.dto.form.HouseFormDTO; import com.epmet.dto.form.lingshan.PartyCenterHousePageFormDTO; +import com.epmet.dto.region.LogOperationResultDTO; import com.epmet.dto.result.*; -import com.epmet.dto.result.lingshan.HouseTreeDTO; -import com.epmet.dto.result.lingshan.LingshanPartyCenterHouseLianhuDTO; -import com.epmet.dto.result.lingshan.PartyCenterHouseBindLianHuDetailDTO; -import com.epmet.dto.result.lingshan.PartyCenterHouseResultDTO; +import com.epmet.dto.result.lingshan.*; +import com.epmet.entity.*; import com.epmet.entity.*; import com.epmet.enums.HousePurposeEnums; import com.epmet.enums.HouseRentFlagEnums; @@ -38,6 +43,7 @@ import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.OperCustomizeOpenFeignClient; import com.epmet.redis.IcHouseRedis; +import com.epmet.service.CustomerAgencyService; import com.epmet.service.CustomerGridService; import com.epmet.service.HouseService; import com.epmet.service.IcHouseService; @@ -46,6 +52,7 @@ import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.hssf.record.PageBreakRecord; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -80,6 +87,10 @@ public class IcHouseServiceImpl extends BaseServiceImpl().ok(checkHomeInfoResultInfo); } + @Override + public HouseCountPictureResultDTO getHousePurposeCount(HouseCountPictureFormDTO dto) { + + HouseCountPictureResultDTO resultDTO = new HouseCountPictureResultDTO(); + + Map type = new HashMap<>(); + + resultDTO.setTotal(0); + + if (dto.getOrgType().equals("community") || dto.getOrgType().equals("street") ||dto.getOrgType().equals("district") ||dto.getOrgType().equals("city")){ + dto.setOrgType("agency"); + } + + List list = baseDao.getHousePurposeCount(dto.getOrgId(),dto.getOrgType(),dto.getTimeStart(),dto.getTimeEnd()); + + list.forEach( + result->{ + resultDTO.setTotal(resultDTO.getTotal()+result.getCount()); + type.put(result.getType(),result.getType()); + } + ); + HouseCountPictureListResultDTO houseCountPictureListResultDTO = new HouseCountPictureListResultDTO(); + if (type.get("1") == null){ + houseCountPictureListResultDTO = new HouseCountPictureListResultDTO(); + houseCountPictureListResultDTO.setType("1"); + houseCountPictureListResultDTO.setCount(0); + list.add(houseCountPictureListResultDTO); + } + if (type.get("2") == null){ + houseCountPictureListResultDTO = new HouseCountPictureListResultDTO(); + houseCountPictureListResultDTO.setType("2"); + houseCountPictureListResultDTO.setCount(0); + list.add(houseCountPictureListResultDTO); + } + if (type.get("3") == null){ + houseCountPictureListResultDTO = new HouseCountPictureListResultDTO(); + houseCountPictureListResultDTO.setType("3"); + houseCountPictureListResultDTO.setCount(0); + list.add(houseCountPictureListResultDTO); + } + if (type.get("4") == null){ + houseCountPictureListResultDTO = new HouseCountPictureListResultDTO(); + houseCountPictureListResultDTO.setType("4"); + houseCountPictureListResultDTO.setCount(0); + list.add(houseCountPictureListResultDTO); + } + if (type.get("5") == null){ + houseCountPictureListResultDTO = new HouseCountPictureListResultDTO(); + houseCountPictureListResultDTO.setType("5"); + houseCountPictureListResultDTO.setCount(0); + list.add(houseCountPictureListResultDTO); + } + if (type.get("6") == null){ + houseCountPictureListResultDTO = new HouseCountPictureListResultDTO(); + houseCountPictureListResultDTO.setType("6"); + houseCountPictureListResultDTO.setCount(0); + list.add(houseCountPictureListResultDTO); + } + if (type.get("7") == null){ + houseCountPictureListResultDTO = new HouseCountPictureListResultDTO(); + houseCountPictureListResultDTO.setType("7"); + houseCountPictureListResultDTO.setCount(0); + list.add(houseCountPictureListResultDTO); + } + resultDTO.setList(list); + return resultDTO; + } + + @Override + public HouseCountPictureResultDTO getHouseStatusCount(HouseCountPictureFormDTO dto) { + + HouseCountPictureResultDTO resultDTO = new HouseCountPictureResultDTO(); + + Map type = new HashMap<>(); + + resultDTO.setTotal(0); + + if (dto.getOrgType().equals("community") || dto.getOrgType().equals("street") ||dto.getOrgType().equals("district") ||dto.getOrgType().equals("city")){ + dto.setOrgType("agency"); + } + + List list =baseDao.getHouseStatusCount(dto.getOrgId(),dto.getOrgType(),dto.getTimeStart(),dto.getTimeEnd()); + + list.forEach( + result->{ + type.put(result.getType(),result.getType()); + resultDTO.setTotal(resultDTO.getTotal()+result.getCount()); + } + + ); + + HouseCountPictureListResultDTO houseCountPictureListResultDTO = new HouseCountPictureListResultDTO(); + if (type.get("1") == null){ + houseCountPictureListResultDTO = new HouseCountPictureListResultDTO(); + houseCountPictureListResultDTO.setType("1"); + houseCountPictureListResultDTO.setCount(0); + list.add(houseCountPictureListResultDTO); + } + if (type.get("2") == null){ + houseCountPictureListResultDTO = new HouseCountPictureListResultDTO(); + houseCountPictureListResultDTO.setType("2"); + houseCountPictureListResultDTO.setCount(0); + list.add(houseCountPictureListResultDTO); + } + if (type.get("3") == null){ + houseCountPictureListResultDTO = new HouseCountPictureListResultDTO(); + houseCountPictureListResultDTO.setType("3"); + houseCountPictureListResultDTO.setCount(0); + list.add(houseCountPictureListResultDTO); + } + if (type.get("0") == null){ + houseCountPictureListResultDTO = new HouseCountPictureListResultDTO(); + houseCountPictureListResultDTO.setType("0"); + houseCountPictureListResultDTO.setCount(0); + list.add(houseCountPictureListResultDTO); + } + resultDTO.setList(list); + + return resultDTO; + } + + @Override + public PageData getHousePictureList(HouseCountPictureFormDTO dto) { + // 列表/导出查询 + PageHelper.startPage(dto.getPageNo(), dto.getPageSize()); + + if (dto.getOrgType().equals("community") || dto.getOrgType().equals("street") ||dto.getOrgType().equals("district") ||dto.getOrgType().equals("city")){ + dto.setOrgType("agency"); + } + + List list = baseDao.getHousePictureList(dto.getOrgId(),dto.getOrgType(),dto.getTimeStart(),dto.getTimeEnd(),dto.getPurpose(),dto.getRentFlag()); + + list.forEach(entity->{ + String[] agencyIds = entity.getOrgIdPath().split(":"); + LambdaQueryWrapper queryWrapperAgency = new LambdaQueryWrapper().in(CustomerAgencyEntity::getId,agencyIds); + List customerAgencyEntities = customerAgencyDao.selectList(queryWrapperAgency); + customerAgencyEntities.forEach(agency->{ + if (agency.getLevel().equals("district")){ + entity.setDistrictName(agency.getOrganizationName()); + }else if (agency.getLevel().equals("street")){ + entity.setStreetName(agency.getOrganizationName()); + }else if (agency.getLevel().equals("community")){ + entity.setCommunityName(agency.getOrganizationName()); + } + }); + }); + + PageInfo pageInfo = new PageInfo<>(list); + + return new PageData<>(list,pageInfo.getTotal()); + } + /** * 灵山项目-联户绑定 @@ -505,10 +668,8 @@ public class IcHouseServiceImpl extends BaseServiceImpl(); } - LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper<>(); - queryWrapper.eq(LingshanPartyCenterHouseLianhuEntity::getPartyCenterHouseId,partyCenterHouseId); - List list=partyCenterHouseLianhuDao.selectList(queryWrapper); - return ConvertUtils.sourceToTarget(list,LingshanPartyCenterHouseLianhuDTO.class); + List resultList=partyCenterHouseLianhuDao.selectLianHuHouse(partyCenterHouseId); + return resultList; } /** @@ -564,4 +725,5 @@ public class IcHouseServiceImpl extends BaseServiceImpl page(Map params) { @@ -223,8 +229,7 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl getNeighborhoodList(TokenDto tokenDto, IcNeighborHoodDTO dto) { - dto.setCustomerId(tokenDto.getCustomerId()); + public List getNeighborhoodList(ChooseGridFormDTO dto) { // if (StringUtils.isBlank(dto.getAgencyId()) && StringUtils.isEmpty(dto.getGridId())) { // log.info("agencyId与gridId都为空时,默认查询当前工作人员所属组织下的小区"); // CustomerStaffInfoCacheResult result= CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId()); @@ -234,7 +239,9 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl list = icBuildingDao.listBuildingInfo(dto.getCustomerId(), dto.getAgencyId(), dto.getGridId(), dto.getBuildingName()); + return list; } /** @@ -622,8 +629,18 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl manager = new LambdaQueryWrapper().eq(CommunityBuildingManagerEntity::getBuildingId,info.getBuildingId()); + CommunityBuildingManagerEntity communityBuildingManagerEntity = communityBuildingManagerDao.selectOne(manager); + + + if (StringUtils.isNotBlank(info.getBuildingLeaderTypeNum())&& + StringUtils.isNotBlank(info.getBuildingLeaderIdCard())&& + StringUtils.isNotBlank(info.getBuildingLeaderMobile())&& + StringUtils.isNotBlank(info.getBuildingLeaderName())){ + + if (communityBuildingManagerEntity!=null){ + communityBuildingManagerEntity.setIdCard(info.getBuildingLeaderIdCard()); + communityBuildingManagerEntity.setPhone(info.getBuildingLeaderMobile()); + communityBuildingManagerEntity.setType(info.getBuildingLeaderTypeNum()); + communityBuildingManagerEntity.setName(info.getBuildingLeaderName()); + communityBuildingManagerDao.updateById(communityBuildingManagerEntity); + }else{ + communityBuildingManagerEntity= new CommunityBuildingManagerEntity(); + communityBuildingManagerEntity.setIdCard(info.getBuildingLeaderIdCard()); + communityBuildingManagerEntity.setPhone(info.getBuildingLeaderMobile()); + communityBuildingManagerEntity.setType(info.getBuildingLeaderTypeNum()); + communityBuildingManagerEntity.setName(info.getBuildingLeaderName()); + communityBuildingManagerEntity.setBuildingId(building.getId()); + IcBuildingEntity buildingEntity = icBuildingDao.selectById(building.getId()); + if (buildingEntity.getNeighborHoodId()!=null){ + communityBuildingManagerEntity.setViliageId(buildingEntity.getNeighborHoodId()); + IcNeighborHoodEntity neighborHood = neighborHoodDao.selectById(buildingEntity.getNeighborHoodId()); + communityBuildingManagerEntity.setGridId(neighborHood.getGridId()); + communityBuildingManagerEntity.setOrgIdPath(neighborHood.getAgencyPids()+":"+neighborHood.getAgencyId()+":"+neighborHood.getGridId()); + + List agencyIds = new ArrayList<>(Arrays.asList(neighborHood.getAgencyPids().split(":"))); + agencyIds.add(neighborHood.getAgencyId()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper().in(CustomerAgencyEntity::getId,agencyIds); + List customerAgencyEntities = customerAgencyDao.selectList(queryWrapper); + for (CustomerAgencyEntity customerAgencyEntity : customerAgencyEntities) { + if (customerAgencyEntity.getLevel().equals("community")){ + communityBuildingManagerEntity.setCommunityId(customerAgencyEntity.getId()); + } + if (customerAgencyEntity.getLevel().equals("street")){ + communityBuildingManagerEntity.setStreetId(customerAgencyEntity.getId()); + } + if (customerAgencyEntity.getLevel().equals("district")){ + communityBuildingManagerEntity.setDistrictId(customerAgencyEntity.getId()); + } + } + } + communityBuildingManagerDao.insert(communityBuildingManagerEntity); + + } + + }else{ + if (communityBuildingManagerEntity!=null){ + communityBuildingManagerDao.deleteById(communityBuildingManagerEntity); + } + } + } return building.getId(); } @@ -679,6 +751,42 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl agencyIds = new ArrayList<>(Arrays.asList(neighborHood.getAgencyPids().split(":"))); + agencyIds.add(neighborHood.getAgencyId()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper().in(CustomerAgencyEntity::getId,agencyIds); + List customerAgencyEntities = customerAgencyDao.selectList(queryWrapper); + for (CustomerAgencyEntity customerAgencyEntity : customerAgencyEntities) { + if (customerAgencyEntity.getLevel().equals("community")){ + communityBuildingManagerEntity.setCommunityId(customerAgencyEntity.getId()); + } + if (customerAgencyEntity.getLevel().equals("street")){ + communityBuildingManagerEntity.setStreetId(customerAgencyEntity.getId()); + } + if (customerAgencyEntity.getLevel().equals("district")){ + communityBuildingManagerEntity.setDistrictId(customerAgencyEntity.getId()); + } + } + communityBuildingManagerDao.insert(communityBuildingManagerEntity); + } + + if (null != info.getTotalUnitNum() && info.getTotalUnitNum() > NumConstant.ZERO) { //设置楼宇单元 List unitList = new ArrayList<>(); @@ -794,6 +902,27 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl needUpdateList) { + + needUpdateList.forEach( + needUpdate->{ + if (StringUtils.isNotBlank(needUpdate.getViliageTypeName())){ + if (needUpdate.getViliageTypeName().equals("自然村")){ + needUpdate.setViliageType("2"); + } + if (needUpdate.getViliageTypeName().equals("住宅小区")){ + needUpdate.setViliageType("1"); + } + } + if (StringUtils.isNotBlank(needUpdate.getOpenTypeName())){ + if (needUpdate.getOpenTypeName().equals("封闭式")){ + needUpdate.setOpenType("1"); + } + if (needUpdate.getOpenTypeName().equals("开放式")){ + needUpdate.setOpenType("2"); + } + } + }); + if (CollectionUtils.isNotEmpty(needUpdateList)){ baseDao.updateNeighborHood(needUpdateList); } @@ -834,6 +963,23 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl().ok(result); } @@ -855,9 +1001,20 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl queryNeighborHoodOptionsYanTai(NeighborHoodOptionFormDTO formDTO) { + if (StringUtils.isBlank(formDTO.getGridId()) && StringUtils.isBlank(formDTO.getAgencyId())) { + // 默认查询当前工作人员所属组织及下级的 + CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getStaffId()); + formDTO.setAgencyId(staffInfoCacheResult.getAgencyId()); + } + List list = baseDao.queryNeighborHoodOptionsYanTai(formDTO.getCustomerId(),formDTO.getAgencyId(),formDTO.getGridId(),formDTO.getNeighborHoodName()); + return list; + } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcPropertyManagementServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcPropertyManagementServiceImpl.java index 4296911e8d..421f59838f 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcPropertyManagementServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcPropertyManagementServiceImpl.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; @@ -97,4 +98,10 @@ public class IcPropertyManagementServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(IcPropertyManagementEntity::getCustomerId,customerId).eq(IcPropertyManagementEntity::getName,name); + return baseDao.selectOne(wrapper); + } } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/PropertyManagementServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/PropertyManagementServiceImpl.java index 41d2f7bfbc..558383ed73 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/PropertyManagementServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/PropertyManagementServiceImpl.java @@ -1,37 +1,75 @@ package com.epmet.service.impl; +import com.alibaba.excel.EasyExcel; 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.ExceptionUtils; import com.epmet.commons.tools.page.PageData; -import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.utils.EpmetRequestHolder; +import com.epmet.commons.tools.redis.common.CustomerStaffRedis; +import com.epmet.commons.tools.utils.*; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.IcNeighborHoodPropertyDao; import com.epmet.dao.IcPropertyManagementDao; +import com.epmet.dto.IcNeighborHoodDTO; import com.epmet.dto.IcPropertyManagementDTO; import com.epmet.dto.form.IcPropertyManagementFormDTO; +import com.epmet.dto.form.ImportTaskCommonFormDTO; import com.epmet.dto.result.IcPropertyManagementResultDTO; +import com.epmet.dto.result.UploadImgResultDTO; import com.epmet.entity.IcNeighborHoodPropertyEntity; import com.epmet.entity.IcPropertyManagementEntity; +import com.epmet.excel.handler.IcPropertyManagementImportListener; +import com.epmet.excel.yt.IcPropertyManagementImportExcelData; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; +import com.epmet.feign.OssFeignClient; import com.epmet.service.PropertyManagementService; +import com.epmet.utils.ImportTaskUtils; 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.fileupload.FileItem; +import org.apache.commons.fileupload.disk.DiskFileItemFactory; +import org.apache.commons.lang3.StringUtils; +import org.apache.http.entity.ContentType; +import org.apache.poi.util.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.commons.CommonsMultipartFile; import javax.annotation.Resource; +import java.io.IOException; +import java.io.OutputStream; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.UUID; +import java.util.stream.Collectors; @Slf4j @Service public class PropertyManagementServiceImpl implements PropertyManagementService { + /** + * 物业表 + */ @Resource private IcPropertyManagementDao icPropertyManagementDao; @Resource private IcNeighborHoodPropertyDao icNeighborHoodPropertyDao; + @Autowired + private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient; + @Autowired + private OssFeignClient ossFeignClient; /** * 查询当前客户下的物业 @@ -55,55 +93,289 @@ public class PropertyManagementServiceImpl implements PropertyManagementService /** * 新增物业 * 名称客户下唯一 + * * @param formDTO * @return */ @Override @Transactional(rollbackFor = Exception.class) public String add(IcPropertyManagementFormDTO formDTO) { - //物业名字平台内唯一 - //如果输入的物业名字已经存在,直接返回物业id + // 物业名字平台内唯一 + // 如果输入的物业名字已经存在,直接返回物业id formDTO.setName(formDTO.getName().trim()); - IcPropertyManagementEntity entity = icPropertyManagementDao.selectByName(formDTO.getCustomerId(),formDTO.getName(),null); + IcPropertyManagementEntity entity = icPropertyManagementDao.selectByName(formDTO.getCustomerId(), formDTO.getName(), null); if (null != entity) { - return entity.getId(); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "物业名称已存在", "物业名称已存在"); } IcPropertyManagementEntity icPropertyManagementEntity = ConvertUtils.sourceToTarget(formDTO, IcPropertyManagementEntity.class); icPropertyManagementDao.insert(icPropertyManagementEntity); + if (CollectionUtils.isNotEmpty(formDTO.getNeighborHoodIdList())) { + formDTO.getNeighborHoodIdList().forEach(neighborHoodId -> { + // 插入小区物业关系表 + IcNeighborHoodPropertyEntity neighborHoodPropertyEntity = new IcNeighborHoodPropertyEntity(); + neighborHoodPropertyEntity.setPropertyId(icPropertyManagementEntity.getId()); + neighborHoodPropertyEntity.setNeighborHoodId(neighborHoodId); + icNeighborHoodPropertyDao.insert(neighborHoodPropertyEntity); + }); + } return icPropertyManagementEntity.getId(); } + /** + * 物业管理-修改 + * + * @param formDTO + */ @Override @Transactional(rollbackFor = Exception.class) public void update(IcPropertyManagementFormDTO formDTO) { - IcPropertyManagementEntity entity = icPropertyManagementDao.selectByName(EpmetRequestHolder.getLoginUserCustomerId(),formDTO.getName(),formDTO.getId()); + IcPropertyManagementEntity entity = icPropertyManagementDao.selectByName(EpmetRequestHolder.getLoginUserCustomerId(), formDTO.getName(), formDTO.getId()); if (null != entity) { - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"物业名称已存在","物业名称已存在"); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "物业名称已存在", "物业名称已存在"); + } + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(IcPropertyManagementEntity::getId, formDTO.getId()) + .set(IcPropertyManagementEntity::getName, formDTO.getName()) + .set(IcPropertyManagementEntity::getContactName, formDTO.getContactName()) + .set(IcPropertyManagementEntity::getContactMobile, formDTO.getContactMobile()) + .set(IcPropertyManagementEntity::getUpdatedTime, new Date()) + .set(IcPropertyManagementEntity::getUpdatedBy, EpmetRequestHolder.getLoginUserId()); + icPropertyManagementDao.update(null, updateWrapper); + CustomerStaffInfoCacheResult staffInfoCacheResult= CustomerStaffRedis.getStaffInfo(EpmetRequestHolder.getLoginUserCustomerId(),EpmetRequestHolder.getLoginUserId()); + + // 查询当前物业,在本组织及下级范围内,管理的小区 + List originNeighborHoodList = icNeighborHoodPropertyDao.getNeighborHoodList(formDTO.getId(), staffInfoCacheResult.getAgencyId()); + // 原来存在关联的小区,现在取消勾选了,需要删除物业小区关系表 + originNeighborHoodList.forEach(origin -> { + // 举例:原来管理A小区,现在取消勾选 + if (!formDTO.getNeighborHoodIdList().contains(origin.getId())) { + LambdaUpdateWrapper updateWrapper1 = new LambdaUpdateWrapper<>(); + updateWrapper1.eq(IcNeighborHoodPropertyEntity::getPropertyId, formDTO.getId()) + .eq(IcNeighborHoodPropertyEntity::getNeighborHoodId, origin.getId()) + .set(IcNeighborHoodPropertyEntity::getDelFlag, NumConstant.ONE_STR) + .set(IcNeighborHoodPropertyEntity::getUpdatedTime, new Date()) + .set(IcNeighborHoodPropertyEntity::getUpdatedBy, EpmetRequestHolder.getLoginUserId()); + icNeighborHoodPropertyDao.update(null, updateWrapper1); + } + }); + if (CollectionUtils.isNotEmpty(formDTO.getNeighborHoodIdList())) { + formDTO.getNeighborHoodIdList().forEach(neighborHoodId -> { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(IcNeighborHoodPropertyEntity::getPropertyId, formDTO.getId()) + .eq(IcNeighborHoodPropertyEntity::getNeighborHoodId, neighborHoodId); + if (icNeighborHoodPropertyDao.selectCount(queryWrapper) < NumConstant.ONE) { + // 插入小区物业关系表 + IcNeighborHoodPropertyEntity neighborHoodPropertyEntity = new IcNeighborHoodPropertyEntity(); + neighborHoodPropertyEntity.setPropertyId(formDTO.getId()); + neighborHoodPropertyEntity.setNeighborHoodId(neighborHoodId); + icNeighborHoodPropertyDao.insert(neighborHoodPropertyEntity); + } + //原本已经存在小区和物业的关系,不用再插入 + }); } - IcPropertyManagementEntity icPropertyManagementEntity = ConvertUtils.sourceToTarget(formDTO, IcPropertyManagementEntity.class); - icPropertyManagementDao.updateById(icPropertyManagementEntity); } /** * 单个删除 - * @param formDTO + * + * @param id */ @Override @Transactional(rollbackFor = Exception.class) - public void delete(IcPropertyManagementFormDTO formDTO) { - LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper<>(); - queryWrapper.eq(IcNeighborHoodPropertyEntity::getPropertyId,formDTO.getId()); - if (icNeighborHoodPropertyDao.selectCount(queryWrapper) > 0) { - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"物业存在与小区关联,无法删除","已与小区关联,无法删除"); + public void delete(String id) { + Date now = new Date(); + // 删除物业与小区关联关系表 + LambdaUpdateWrapper updateWrapper1 = new LambdaUpdateWrapper<>(); + updateWrapper1.eq(IcNeighborHoodPropertyEntity::getPropertyId, id) + .set(IcNeighborHoodPropertyEntity::getDelFlag, NumConstant.ONE_STR) + .set(IcNeighborHoodPropertyEntity::getUpdatedTime, now) + .set(IcNeighborHoodPropertyEntity::getUpdatedBy, EpmetRequestHolder.getLoginUserId()); + icNeighborHoodPropertyDao.update(null, updateWrapper1); + // 删除物业表 + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(IcPropertyManagementEntity::getId, id) + .set(IcPropertyManagementEntity::getDelFlag, NumConstant.ONE_STR) + .set(IcPropertyManagementEntity::getUpdatedTime, now) + .set(IcPropertyManagementEntity::getUpdatedBy, EpmetRequestHolder.getLoginUserId()); + icPropertyManagementDao.update(null, updateWrapper); + } + + + /** + * 物业管理批量删除 + * + * @param ids + * @return 返回失败的id列表 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public List deleteBatch(List ids) { + if (CollectionUtils.isEmpty(ids)) { + return new ArrayList<>(); } - icPropertyManagementDao.deleteById(formDTO.getId()); + List failedIdList = new ArrayList<>(); + for (String id : ids) { + Boolean res =true; + try{ + //调用单挑删除方法 + delete(id); + }catch(EpmetException e){ + res=false; + } + if (!res) { + failedIdList.add(id); + } + } + return failedIdList; } + + /** + * 物业管理-列表查询 + * + * @param pageNo + * @param pageSize + * @param name 物业名称 + * @param contactName 物业联系人 + * @param contactMobile 联系电话 + * @return + */ @Override - public PageData page(Integer pageNo, Integer pageSize, String name) { - PageHelper.startPage(pageNo,pageSize); - List list=icPropertyManagementDao.queryList(EpmetRequestHolder.getLoginUserCustomerId(),name); + public PageData page(Integer pageNo, Integer pageSize, String name, String contactName, String contactMobile) { + CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(EpmetRequestHolder.getLoginUserCustomerId(), EpmetRequestHolder.getLoginUserId()); + PageHelper.startPage(pageNo, pageSize); + List list = icPropertyManagementDao.queryList(EpmetRequestHolder.getLoginUserCustomerId(), name, contactName, contactMobile, staffInfoCacheResult.getAgencyId()); PageInfo pageInfo = new PageInfo<>(list); - return new PageData<>(list, pageInfo.getTotal()); + // 导出时需要导出关联的小区名称 + pageInfo.getList().forEach(result -> { + List neighborHoodList = icNeighborHoodPropertyDao.getNeighborHoodList(result.getId(), staffInfoCacheResult.getAgencyId()); + List neighborHoodNames = neighborHoodList.stream() + .map(IcNeighborHoodDTO::getNeighborHoodName) + .distinct().collect(Collectors.toList()); + result.setNeighborHoodNames(CollectionUtils.isNotEmpty(neighborHoodList) ? StringUtils.join(neighborHoodNames, StrConstant.COMMA_ZH) : StrConstant.EPMETY_STR); + result.setNeighborHoodList(neighborHoodList); + result.setTotalNeighborHood(CollectionUtils.isNotEmpty(neighborHoodList)?neighborHoodList.size():NumConstant.ZERO); + }); + return new PageData<>(list, pageInfo.getTotal(), pageSize); } + + /** + * 查看物业详情 + * + * @param id + * @return + */ + @Override + public IcPropertyManagementDTO getDetail(String id) { + CustomerStaffInfoCacheResult staffInfoCacheResult= CustomerStaffRedis.getStaffInfo(EpmetRequestHolder.getLoginUserCustomerId(),EpmetRequestHolder.getLoginUserId()); + IcPropertyManagementEntity icPropertyManagementEntity = icPropertyManagementDao.selectById(id); + if (null == icPropertyManagementEntity) { + return null; + } + IcPropertyManagementDTO resultDto = ConvertUtils.sourceToTarget(icPropertyManagementEntity, IcPropertyManagementDTO.class); + List neighborHoodList = icNeighborHoodPropertyDao.getNeighborHoodList(id,staffInfoCacheResult.getAgencyId()); + List neighborHoodNames = neighborHoodList.stream() + .map(IcNeighborHoodDTO::getNeighborHoodName) + .distinct().collect(Collectors.toList()); + resultDto.setNeighborHoodNames(CollectionUtils.isNotEmpty(neighborHoodList) ? StringUtils.join(neighborHoodNames, StrConstant.COMMA_ZH) : StrConstant.EPMETY_STR); + resultDto.setNeighborHoodList(neighborHoodList); + resultDto.setTotalNeighborHood(CollectionUtils.isNotEmpty(neighborHoodList)?neighborHoodList.size():NumConstant.ZERO); + return resultDto; + } + + /** + * 执行Excel导入 + * + * @param filePath + * @param importTaskId + */ + @Async + @Override + public void execAsyncExcelImport(Path filePath, String importTaskId) { + String userId = null; + try { + userId = EpmetRequestHolder.getLoginUserId(); + String customerId = EpmetRequestHolder.getLoginUserCustomerId(); + + IcPropertyManagementImportListener listener = new IcPropertyManagementImportListener(customerId, SpringContextUtils.getBean(IcPropertyManagementServiceImpl.class)); + + EasyExcel.read(filePath.toFile(), IcPropertyManagementImportExcelData.class, listener).headRowNumber(1).sheet(0).doRead(); + + String errorDesFileUrl = null; + + List errorRows = listener.getErrorRows(); + + boolean failed = errorRows.size() > 0; + + // 合并到一起写入 + // errorRows.addAll(otherRows); + + // 生成并上传描述文件 + OutputStream os = null; + FileItem fileItem = null; + if (errorRows.size() > 0) { + try { + // 文件生成 + Path errorDescDir = FileUtils.getAndCreateDirUnderEpmetFilesDir(ImportTaskConstants.IC_PROPERTY_MANAGEMENT, "import", "error_des"); + String fileName = UUID.randomUUID().toString().concat(".xlsx"); + + fileItem = new DiskFileItemFactory(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD, errorDescDir.toFile()) + .createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), false, fileName); + os = fileItem.getOutputStream(); + + EasyExcel.write(os, IcPropertyManagementImportExcelData.ErrorRow.class).sheet("信息列表").doWrite(errorRows); + // 文件上传oss + Result errorDesFileUploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem)); + if (errorDesFileUploadResult.success()) { + errorDesFileUrl = errorDesFileUploadResult.getData().getUrl(); + } + + } finally { + IOUtils.closeQuietly(os); + if (!fileItem.isInMemory()) { + try { + fileItem.delete(); + } catch (Exception e) { + log.error("【物业管理表ic_property_management】删除错误描述临时文件失败:{}", ExceptionUtils.getErrorStackTrace(e)); + } + } + } + } + + Result result = ImportTaskUtils.finishImportTask( + importTaskId, + failed ? ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL : ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS, + errorDesFileUrl, + ""); + + if (!result.success()) { + log.error("【物业管理表ic_property_management】finishImportTask失败"); + } + } catch (Exception e) { + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【物业管理表ic_property_management】出错:{}", errorMsg); + + ImportTaskCommonFormDTO importFinishTaskForm = new ImportTaskCommonFormDTO(); + importFinishTaskForm.setTaskId(importTaskId); + importFinishTaskForm.setProcessStatus(ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL); + importFinishTaskForm.setOperatorId(userId); + importFinishTaskForm.setResultDesc("物业管理表导入失败:系统异常,请查看系统日志"); + + Result result = commonServiceOpenFeignClient.finishImportTask(importFinishTaskForm); + if (!result.success()) { + log.error("【物业管理表ic_property_management】导入记录状态修改为'完成'失败"); + } + } finally { + // 删除临时文件 + if (Files.exists(filePath)) { + try { + Files.delete(filePath); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffLoginLogServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffLoginLogServiceImpl.java new file mode 100644 index 0000000000..cd56d4dac1 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffLoginLogServiceImpl.java @@ -0,0 +1,355 @@ +package com.epmet.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.Constant; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.StrConstant; +import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.redis.common.CustomerStaffRedis; +import com.epmet.commons.tools.utils.EpmetRequestHolder; +import com.epmet.commons.tools.utils.PidUtils; +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.SpringContextUtils; +import com.epmet.dao.CustomerAgencyDao; +import com.epmet.dao.StaffLoginLogDao; +import com.epmet.dto.CustomerAgencyDTO; +import com.epmet.dto.CustomerStaffDTO; +import com.epmet.dto.form.yt.CommunityLoginFormDTO; +import com.epmet.dto.form.yt.CountActivityFormDTO; +import com.epmet.dto.result.yt.AccountActivityInfo; +import com.epmet.dto.result.yt.ActivityTatalInfo; +import com.epmet.dto.result.yt.CommunityLoginResultDTO; +import com.epmet.dto.result.yt.LoginLogCountByLevelResultDTO; +import com.epmet.entity.CustomerAgencyEntity; +import com.epmet.entity.StaffLoginLogEntity; +import com.epmet.feign.EpmetUserOpenFeignClient; +import com.epmet.service.CustomerAgencyService; +import com.epmet.service.StaffLoginLogService; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 工作人员登录日志表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-04 + */ +@Service +public class StaffLoginLogServiceImpl extends BaseServiceImpl implements StaffLoginLogService { + @Autowired + private EpmetUserOpenFeignClient userOpenFeignClient; + @Autowired + private CustomerAgencyDao customerAgencyDao; + + + /** + * 登录,插入记录 + * + * @param staffId + * @param loginTime + */ + @Transactional(rollbackFor = Exception.class) + @Override + public void saveLog(String staffId, Date loginTime) { + CustomerStaffDTO form = new CustomerStaffDTO(); + form.setUserId(staffId); + Result result = userOpenFeignClient.getCustomerStaffInfoByUserId(form); + if (!result.success() || null == result.getData()) { + return; + } + CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(result.getData().getCustomerId(), staffId); + + StaffLoginLogEntity logEntity = new StaffLoginLogEntity(); + logEntity.setCustomerId(result.getData().getCustomerId()); + logEntity.setStaffId(staffId); + logEntity.setStaffName(staffInfoCacheResult.getRealName()); + logEntity.setMobile(staffInfoCacheResult.getMobile()); + logEntity.setAgencyId(staffInfoCacheResult.getAgencyId()); + CustomerAgencyDTO customerAgencyDTO = SpringContextUtils.getBean(CustomerAgencyService.class).get(staffInfoCacheResult.getAgencyId()); + logEntity.setAgencyLevel(customerAgencyDTO.getLevel()); + logEntity.setPid(customerAgencyDTO.getPid()); + if (StringUtils.isBlank(customerAgencyDTO.getPid()) || NumConstant.ZERO_STR.equals(customerAgencyDTO.getPid())) { + logEntity.setOrgIdPath(customerAgencyDTO.getId()); + } else { + logEntity.setOrgIdPath(customerAgencyDTO.getPids().concat(StrConstant.COLON).concat(customerAgencyDTO.getId())); + } + logEntity.setLoginTime(loginTime); + baseDao.insert(logEntity); + } + + + /** + * 返回市级账号登录总次数、区县级账号登录总次数、镇街级账号登录总次数、社区级账号登录总次数 + * + * @param orgId 为空时,默认当前登录用户所属组织id + * @param level :组织级别(社区级:community, 乡(镇、街道)级:street,区县级: district,市级: city;省级:province) + * @param startDate yyyy-MM-dd + * @param endDate yyyy-MM-dd + * @return + */ + @Override + public LoginLogCountByLevelResultDTO countLevel(String orgId, String level, Date startDate, Date endDate) { + if (StringUtils.isBlank(orgId)) { + CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(EpmetRequestHolder.getLoginUserCustomerId(), EpmetRequestHolder.getLoginUserId()); + orgId = staffInfoCacheResult.getAgencyId(); + level = staffInfoCacheResult.getLevel(); + } + String orgIdPath = SpringContextUtils.getBean(CustomerAgencyService.class).getOrgIdPath(orgId); + LoginLogCountByLevelResultDTO resultDTO = new LoginLogCountByLevelResultDTO(); + if (Constant.CITY.equals(level)) { + //市级账号登录 + LambdaQueryWrapper cityWrapper = new LambdaQueryWrapper<>(); + cityWrapper.eq(StaffLoginLogEntity::getAgencyId, orgId) + .between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate); + resultDTO.setCityCount(baseDao.selectCount(cityWrapper)); + + // 市下面区县账号 + LambdaQueryWrapper districtWrapper = new LambdaQueryWrapper<>(); + districtWrapper.eq(StaffLoginLogEntity::getPid, orgId) + .eq(StaffLoginLogEntity::getAgencyLevel, Constant.DISTRICT) + .between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate); + resultDTO.setDistrictCount(baseDao.selectCount(districtWrapper)); + + // 市级下面所有街道 + LambdaQueryWrapper streetWrapper = new LambdaQueryWrapper<>(); + streetWrapper.like(StaffLoginLogEntity::getOrgIdPath, orgIdPath) + .eq(StaffLoginLogEntity::getAgencyLevel, Constant.STREET) + .between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate); + resultDTO.setStreetCount(baseDao.selectCount(streetWrapper)); + + // 市级下面所有社区 + LambdaQueryWrapper communityWrapper = new LambdaQueryWrapper<>(); + communityWrapper.like(StaffLoginLogEntity::getOrgIdPath, orgIdPath) + .eq(StaffLoginLogEntity::getAgencyLevel, Constant.COMMUNITY) + .between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate); + resultDTO.setCommunityCount(baseDao.selectCount(communityWrapper)); + + } else if (Constant.DISTRICT.equals(level)) { + resultDTO.setCityCount(NumConstant.ONE_NEG); + + //只展示本区县的登录情况 + LambdaQueryWrapper districtWrapper = new LambdaQueryWrapper<>(); + districtWrapper.eq(StaffLoginLogEntity::getAgencyId, orgId) + .between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate); + resultDTO.setDistrictCount(baseDao.selectCount(districtWrapper)); + + // 区县下所有的街道 + LambdaQueryWrapper streetWrapper = new LambdaQueryWrapper<>(); + streetWrapper.like(StaffLoginLogEntity::getOrgIdPath, orgIdPath) + .eq(StaffLoginLogEntity::getAgencyLevel, Constant.STREET) + .between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate); + resultDTO.setStreetCount(baseDao.selectCount(streetWrapper)); + + // 去线下所有社区 + LambdaQueryWrapper communityWrapper = new LambdaQueryWrapper<>(); + communityWrapper.like(StaffLoginLogEntity::getOrgIdPath, orgIdPath) + .eq(StaffLoginLogEntity::getAgencyLevel, Constant.COMMUNITY) + .between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate); + resultDTO.setCommunityCount(baseDao.selectCount(communityWrapper)); + + } else if (Constant.STREET.equals(level)) { + resultDTO.setCityCount(NumConstant.ONE_NEG); + resultDTO.setDistrictCount(NumConstant.ONE_NEG); + + // 只展示本街道的登录情况 + LambdaQueryWrapper streetWrapper = new LambdaQueryWrapper<>(); + streetWrapper.eq(StaffLoginLogEntity::getAgencyId, orgId) + .between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate); + resultDTO.setStreetCount(baseDao.selectCount(streetWrapper)); + + + // 街道下所有社区 + LambdaQueryWrapper communityWrapper = new LambdaQueryWrapper<>(); + communityWrapper.like(StaffLoginLogEntity::getOrgIdPath, orgIdPath) + .eq(StaffLoginLogEntity::getAgencyLevel, Constant.COMMUNITY) + .between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate); + resultDTO.setCommunityCount(baseDao.selectCount(communityWrapper)); + + } else if (Constant.COMMUNITY.equals(level)) { + resultDTO.setCityCount(NumConstant.ONE_NEG); + resultDTO.setDistrictCount(NumConstant.ONE_NEG); + resultDTO.setStreetCount(NumConstant.ONE_NEG); + + // 只展示本社区的登录情况 + LambdaQueryWrapper communityWrapper = new LambdaQueryWrapper<>(); + communityWrapper.eq(StaffLoginLogEntity::getAgencyId, orgId) + .between(null != startDate && null != endDate, StaffLoginLogEntity::getLoginTime, startDate, endDate); + resultDTO.setCommunityCount(baseDao.selectCount(communityWrapper)); + } + return resultDTO; + } + + @Override + public PageData getAccountActivityInfo(CountActivityFormDTO formDTO) { + if (formDTO.getIsPage()) { + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); + List accountActivityInfos = baseDao.selectListActivityInfo(formDTO); + PageInfo pageInfo = new PageInfo<>(accountActivityInfos); + return new PageData<>(accountActivityInfos, pageInfo.getTotal(),formDTO.getPageSize()); + } + List accountActivityInfos = baseDao.selectListActivityInfo(formDTO); + int total = CollectionUtils.isEmpty(accountActivityInfos) ? NumConstant.ZERO : accountActivityInfos.size(); + return new PageData<>(accountActivityInfos, total); + } + + @Override + public ActivityTatalInfo getActivityTotal(CountActivityFormDTO formDTO) { + return baseDao.selectOneActivityTotal(formDTO); + } + + /** + * 下级社区账号登录次数排名 + * + * @param formDTO + * @return + */ + @Override + public PageData pageCommunityCount(CommunityLoginFormDTO formDTO) { + if (StringUtils.isBlank(formDTO.getOrgId())) { + CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(EpmetRequestHolder.getLoginUserCustomerId(), EpmetRequestHolder.getLoginUserId()); + formDTO.setOrgId(staffInfoCacheResult.getAgencyId()); + // formDTO.setLevel(staffInfoCacheResult.getLevel()); + } + if (formDTO.getIsPage()) { + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); + List list = baseDao.pageCommunityCount(formDTO.getOrgId(), formDTO.getStartDate(), formDTO.getEndDate(),formDTO.getDataRange()); + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal(), formDTO.getPageSize()); + } + // 不分页 + List list = baseDao.pageCommunityCount(formDTO.getOrgId(), formDTO.getStartDate(), formDTO.getEndDate(),formDTO.getDataRange()); + int total = CollectionUtils.isEmpty(list) ? NumConstant.ZERO : list.size(); + return new PageData<>(list, total, total); + } + + + /** + * 柱状图:下级组织账号登录次数汇总 + * + * @param orgId + * @param level + * @param startDate + * @param endDate + * @return + */ + @Override + public PageData querySubCount(String orgId, String level, Date startDate, Date endDate) { + if (StringUtils.isBlank(orgId)) { + CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(EpmetRequestHolder.getLoginUserCustomerId(), EpmetRequestHolder.getLoginUserId()); + orgId = staffInfoCacheResult.getAgencyId(); + level=staffInfoCacheResult.getLevel(); + } + if(Constant.COMMUNITY.equals(level)){ + //如果是社区,返回自己 + List list = baseDao.selectCommunityCount(orgId, startDate, endDate); + int total = CollectionUtils.isEmpty(list) ? NumConstant.ZERO : list.size(); + return new PageData(list, total, total); + } + //先查询出下级组织 + LambdaQueryWrapper agencyWrapper=new LambdaQueryWrapper<>(); + agencyWrapper.eq(CustomerAgencyEntity::getPid,orgId).orderByAsc(CustomerAgencyEntity::getCreatedTime); + List subAgencyList=customerAgencyDao.selectList(agencyWrapper); + List list=new ArrayList<>(); + //横坐标展示所有组织 + for(CustomerAgencyEntity agencyEntity:subAgencyList){ + CommunityLoginResultDTO resultDTO=new CommunityLoginResultDTO(); + resultDTO.setAgencyId(agencyEntity.getId()); + resultDTO.setAgencyName(agencyEntity.getOrganizationName()); + resultDTO.setAgencyLevel(agencyEntity.getLevel()); + String orgIdPath=PidUtils.convertPid2OrgIdPath(agencyEntity.getId(),agencyEntity.getPids()); + //查询本组织及下级登录次数!!!!!!!! + resultDTO.setCount(baseDao.selectLoginTotalByPath(orgIdPath,startDate,endDate)); + list.add(resultDTO); + } + // List list = baseDao.querySubCount(orgId, startDate, endDate); + int total = CollectionUtils.isEmpty(list) ? NumConstant.ZERO : list.size(); + return new PageData(list, total, total); + } + + + /** + * 查看区县 + * + * @param orgId + * @param level + * @param startDate + * @param endDate + * @param isPage + * @param pageNo + * @param pageSize + * @return 返回agencyId,agencyName,count + */ + @Override + public PageData pageDistrictCount(String orgId, String level, Date startDate, Date endDate, Boolean isPage, Integer pageNo, Integer pageSize) { + if (StringUtils.isBlank(orgId)) { + CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(EpmetRequestHolder.getLoginUserCustomerId(), EpmetRequestHolder.getLoginUserId()); + orgId = staffInfoCacheResult.getAgencyId(); + } + if (isPage) { + PageHelper.startPage(pageNo, pageSize); + List list = baseDao.pageDistrictCount(orgId, startDate, endDate); + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal(), pageSize); + } + // 不分页 + List list = baseDao.pageDistrictCount(orgId, startDate, endDate); + int total = CollectionUtils.isEmpty(list) ? NumConstant.ZERO : list.size(); + return new PageData<>(list, total, total); + } + + /** + * 查看街镇 + * + * @param orgId + * @param startDate + * @param endDate + * @param isPage + * @param pageNo + * @param pageSize + * @return + */ + @Override + public PageData streetCount(String orgId, Date startDate, Date endDate, Boolean isPage, Integer pageNo, Integer pageSize) { + if (StringUtils.isBlank(orgId)) { + CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(EpmetRequestHolder.getLoginUserCustomerId(), EpmetRequestHolder.getLoginUserId()); + orgId = staffInfoCacheResult.getAgencyId(); + } + if (isPage) { + PageHelper.startPage(pageNo, pageSize); + List list = baseDao.pageStreetCount(orgId, startDate, endDate); + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal(), pageSize); + } + // 不分页 + List list = baseDao.pageStreetCount(orgId, startDate, endDate); + int total = CollectionUtils.isEmpty(list) ? NumConstant.ZERO : list.size(); + return new PageData<>(list, total, total); + } + + /** + * 柱状图点击区县,查看街道,调用此接口 + * 计算的是街道的工作人员+街道下所有社区的人 的总次数 + * @return + */ + @Override + public PageData streetTotal(String orgId, Date startDate, Date endDate,Integer pageNo, Integer pageSize){ + PageHelper.startPage(pageNo, pageSize); + // todo + List list = baseDao.selectStreetTotal(orgId, startDate, endDate); + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal(), pageSize); + } + + +} \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffServiceImpl.java index a81f868ac5..8c74a45df3 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffServiceImpl.java @@ -1,18 +1,21 @@ package com.epmet.service.impl; +import com.alibaba.excel.EasyExcel; +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.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.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.*; import com.epmet.constant.OrgInfoConstant; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.CustomerStaffAgencyDao; import com.epmet.dao.StaffOrgRelationDao; import com.epmet.dto.*; @@ -20,17 +23,31 @@ import com.epmet.dto.form.*; import com.epmet.dto.form.yantai.YtSyncStaffIdFormDTO; import com.epmet.dto.result.*; import com.epmet.entity.*; +import com.epmet.excel.CustomerStaffImportExcelData; +import com.epmet.excel.handler.CustomerStaffImportListener; import com.epmet.feign.*; +import com.epmet.remote.EpmetUserRemoteService; import com.epmet.service.*; +import com.epmet.utils.ImportTaskUtils; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.lang3.StringUtils; +import org.apache.http.entity.ContentType; +import org.apache.poi.util.IOUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.commons.CommonsMultipartFile; import javax.annotation.Resource; +import java.io.IOException; +import java.io.OutputStream; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -41,6 +58,7 @@ import java.util.stream.Collectors; * @dscription * @date 2020/4/23 18:05 */ +@Slf4j @Service public class StaffServiceImpl implements StaffService { private static final Logger logger = LoggerFactory.getLogger(StaffServiceImpl.class); @@ -80,6 +98,10 @@ public class StaffServiceImpl implements StaffService { private GovAccessFeignClient govAccessFeignClient; @Autowired private EpmetThirdOpenFeignClient epmetThirdOpenFeignClient; + @Autowired + private EpmetUserRemoteService userRemoteService; + @Autowired + private OssFeignClient ossFeignClient; @Override public Result getStaffInfoForHome(StaffsInAgencyFromDTO fromDTO) { @@ -745,5 +767,180 @@ public class StaffServiceImpl implements StaffService { return list; } + @Override + public void execAsyncExcelImport(Path filePath, String importTaskId,String orgType, String orgId) { + + try { + + CustomerStaffImportListener listener = new CustomerStaffImportListener(userRemoteService.getLoginUserDetails().getUserId(), userRemoteService.getLoginUserDetails().getCustomerId(), orgType,orgId,this); + + EasyExcel.read(filePath.toFile(), CustomerStaffImportExcelData.class, listener).headRowNumber(1).sheet(0).doRead(); + + String errorDesFileUrl = null; + + List errorRows = listener.getErrorRows(); + List otherRows = listener.getOtherRows(); + + boolean failed = errorRows.size() > 0; + + // 合并到一起写入 + errorRows.addAll(otherRows); + + // 生成并上传描述文件 + OutputStream os = null; + FileItem fileItem = null; + if (errorRows.size() > 0) { + try { + // 文件生成 + Path errorDescDir = FileUtils.getAndCreateDirUnderEpmetFilesDir("staff", "import", "error_des"); + String timeMillis = String.valueOf(System.currentTimeMillis()); + String fileName = "staff_import_error_".concat(timeMillis).concat(".xlsx"); + + fileItem = new DiskFileItemFactory(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD, errorDescDir.toFile()) + .createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), false, fileName); + + os = fileItem.getOutputStream(); + + EasyExcel.write(os, CustomerStaffImportExcelData.RowRemarkMessage.class).sheet("信息列表").doWrite(errorRows); + // 文件上传oss + Result errorDesFileUploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem)); + if (errorDesFileUploadResult.success()) { + errorDesFileUrl = errorDesFileUploadResult.getData().getUrl(); + } + } finally { + IOUtils.closeQuietly(os); + try { + fileItem.delete(); + } catch (Exception e){ + log.error("【客户信息导入】删除临时描述文件失败:{}", ExceptionUtils.getErrorStackTrace(e)); + } + } + } + + // 完成导入 + Result result = ImportTaskUtils.finishImportTask(importTaskId, + failed ? ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL : ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS, + errorDesFileUrl, + ""); + + if (!result.success()) { + log.error("【客户信息导入】导入记录状态修改为'finished_success'失败"); + } + } catch (Exception e) { + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + log.error("【客户信息导入】出错:{}", errorMsg); + + Result result = ImportTaskUtils.finishImportTask(importTaskId, ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL, null, "导入失败"); + + if (!result.success()) { + log.error("【客户信息导入】导入记录状态修改为'finished_fail'失败"); + } + } finally { + // 删除临时文件 + if (Files.exists(filePath)) { + try { + Files.delete(filePath); + } catch (IOException e) { + log.error("method exception", e); + } + } + } + } + + /** + * 批量持久化 + * @param addStaffV2FromDTOList + */ + public void exportAdd(List addStaffV2FromDTOList, CustomerStaffImportListener listener) { + + addStaffV2FromDTOList.forEach(fromDTO -> { + + //1.根据新增人员类型判断查询机关信息 + OrgResultDTO orgDTO = customerAgencyDao.selectAgencyDetail(fromDTO.getOrgId(), fromDTO.getOrgType()); + if (null == orgDTO) { + logger.warn(String.format("工作人员新增,根据新增人员组织类型未查询到相关组织信息,orgId->%s,orgType->%s", fromDTO.getOrgId(), fromDTO.getOrgType())); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"根据新增人员组织类型未查询到相关组织信息","组织不存在"); + } + + //2.调用user服务,新增用户信息 + StaffSubmitFromDTO submitDTO = ConvertUtils.sourceToTarget(fromDTO, StaffSubmitFromDTO.class); + submitDTO.setAgencyId(orgDTO.getAgencyId()); + Result result = epmetUserFeignClient.addStaff(submitDTO); + if (!result.success()) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),result.getInternalMsg(),result.getMsg()); + } + + //3.人员机关表总人数加一、关系表新增关系数据 + //人员机关关系表 + CustomerStaffAgencyEntity customerStaffAgencyEntity = new CustomerStaffAgencyEntity(); + customerStaffAgencyEntity.setCustomerId(fromDTO.getCustomerId()); + customerStaffAgencyEntity.setUserId(result.getData().getUserId()); + customerStaffAgencyEntity.setAgencyId(orgDTO.getAgencyId()); + customerStaffAgencyService.insert(customerStaffAgencyEntity); + //机关总人数加一 + CustomerAgencyEntity agencyEntity = new CustomerAgencyEntity(); + agencyEntity.setId(orgDTO.getAgencyId()); + agencyEntity.setTotalUser(orgDTO.getTotalUser() + 1); + customerAgencyService.updateById(agencyEntity); + + //4.部门、网格主表、关系表修改、新增数据 + if ("dept".equals(fromDTO.getOrgType())) { + CustomerStaffDepartmentEntity dept = new CustomerStaffDepartmentEntity(); + dept.setCustomerId(fromDTO.getCustomerId()); + dept.setUserId(result.getData().getUserId()); + dept.setDepartmentId(fromDTO.getOrgId()); + customerStaffDepartmentService.insert(dept); + CustomerDepartmentEntity departmentEntity = new CustomerDepartmentEntity(); + departmentEntity.setId(fromDTO.getOrgId()); + departmentEntity.setTotalUser(orgDTO.getDeptTotalUser() + 1); + customerDepartmentService.updateById(departmentEntity); + } + if ("grid".equals(fromDTO.getOrgType())) { + CustomerStaffGridEntity grid = new CustomerStaffGridEntity(); + grid.setCustomerId(fromDTO.getCustomerId()); + grid.setUserId(result.getData().getUserId()); + grid.setGridId(fromDTO.getOrgId()); + customerStaffGridService.insert(grid); + CustomerGridEntity gridEntity = new CustomerGridEntity(); + gridEntity.setId(fromDTO.getOrgId()); + gridEntity.setTotalUser(orgDTO.getGridTotalUser() + 1); + customerGridService.updateById(gridEntity); + } + + //5.工作人员注册组织关系表新增数据 + StaffOrgRelationEntity staffOrgRelationEntity = new StaffOrgRelationEntity(); + staffOrgRelationEntity.setCustomerId(fromDTO.getCustomerId()); + if("agency".equals(fromDTO.getOrgType())){ + staffOrgRelationEntity.setPids(("".equals(orgDTO.getPids()) ? "" : orgDTO.getPids())); + }else { + staffOrgRelationEntity.setPids(("".equals(orgDTO.getPids()) ? "" : orgDTO.getPids() + ":") + orgDTO.getAgencyId()); + } + staffOrgRelationEntity.setStaffId(result.getData().getUserId()); + staffOrgRelationEntity.setOrgId(fromDTO.getOrgId()); + staffOrgRelationEntity.setOrgType(fromDTO.getOrgType()); + staffOrgRelationService.insert(staffOrgRelationEntity); + + if (CollectionUtils.isNotEmpty(fromDTO.getNewRoles())){ + Result roleUserAccess = govAccessFeignClient.roleUser(new RoleUserFormDTO(fromDTO.getNewRoles(), customerStaffAgencyEntity.getUserId(),fromDTO.getCustomerId())); + if (!roleUserAccess.success()){ + throw new EpmetException("save data to gov-role-user failure"); + } + } + //如果是烟台的需要更新 根据手机号+姓名 更新data_sync_user_data置为已创建、记录staffId + // 开发环境默认:45687aa479955f9d06204d415238f7cc + // 测试环境:0c41b272ee9ee95ac6f184ad548a30eb + // 烟台: 1535072605621841922 + if ("1535072605621841922".equals(fromDTO.getCustomerId()) + || "45687aa479955f9d06204d415238f7cc".equals(fromDTO.getCustomerId()) + || "0c41b272ee9ee95ac6f184ad548a30eb".equals(fromDTO.getCustomerId())) { + YtSyncStaffIdFormDTO ytSyncStaffIdFormDTO = ConvertUtils.sourceToTarget(fromDTO,YtSyncStaffIdFormDTO.class); + ytSyncStaffIdFormDTO.setStaffId(result.getData().getUserId()); + ytSyncStaffIdFormDTO.setOperUserId(fromDTO.getCurrentUserId()); + epmetThirdOpenFeignClient.dataSyncUpdateStaff(ytSyncStaffIdFormDTO); + } + + }); + } + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/db/migration/V0.0.49__alter_agency.sql b/epmet-module/gov-org/gov-org-server/src/main/resources/db/migration/V0.0.49__alter_agency.sql new file mode 100644 index 0000000000..bcfc36cf16 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/db/migration/V0.0.49__alter_agency.sql @@ -0,0 +1,2 @@ +ALTER TABLE `epmet_gov_org`.`customer_agency` + ADD COLUMN `REMARK` varchar(512) NULL COMMENT '备注说明' AFTER `REVISION`; \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_export.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_export.xlsx index 5a178ed9bb..ba32c961d1 100644 Binary files a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_export.xlsx and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_export.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_export_0510.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_export_0510.xlsx new file mode 100644 index 0000000000..5a178ed9bb Binary files /dev/null and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_export_0510.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_template.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_template.xlsx index 0be5175435..3fdf17e19a 100644 Binary files a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_template.xlsx and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_template.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_template_0510.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_template_0510.xlsx new file mode 100644 index 0000000000..0be5175435 Binary files /dev/null and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_template_0510.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/customer_staff_import_template.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/customer_staff_import_template.xlsx new file mode 100644 index 0000000000..4b9b2f1fce Binary files /dev/null and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/customer_staff_import_template.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_export_for_easyexcel.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_export_for_easyexcel.xlsx index 359b68f0bd..865c8415bb 100644 Binary files a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_export_for_easyexcel.xlsx and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_export_for_easyexcel.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_export_for_easyexcel_0510.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_export_for_easyexcel_0510.xlsx new file mode 100644 index 0000000000..359b68f0bd Binary files /dev/null and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_export_for_easyexcel_0510.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_template.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_template.xlsx index c722017f31..5aca0af7a6 100644 Binary files a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_template.xlsx and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_template.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_template_0510.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_template_0510.xlsx new file mode 100644 index 0000000000..c722017f31 Binary files /dev/null and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_template_0510.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_export.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_export.xlsx index 2a1b3237d9..91a9637774 100644 Binary files a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_export.xlsx and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_export.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_export_0510.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_export_0510.xlsx new file mode 100644 index 0000000000..2a1b3237d9 Binary files /dev/null and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_export_0510.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_template.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_template.xlsx index 36297ea510..ca0705dea6 100644 Binary files a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_template.xlsx and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_template.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_template_0510.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_template_0510.xlsx new file mode 100644 index 0000000000..36297ea510 Binary files /dev/null and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/neighbor_template_0510.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/yantai/community_building_manager_import_temp.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/yantai/community_building_manager_import_temp.xlsx new file mode 100644 index 0000000000..e8ceae9aa1 Binary files /dev/null and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/yantai/community_building_manager_import_temp.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/yantai/ic_property_management_temp.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/yantai/ic_property_management_temp.xlsx new file mode 100644 index 0000000000..c219d94ab5 Binary files /dev/null and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/yantai/ic_property_management_temp.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/yantai/yantai_dept_import_tem.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/yantai/yantai_dept_import_tem.xlsx new file mode 100644 index 0000000000..4bc5ef807b Binary files /dev/null and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/yantai/yantai_dept_import_tem.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CommunityBuildingManagerDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CommunityBuildingManagerDao.xml new file mode 100644 index 0000000000..23b0f682e9 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CommunityBuildingManagerDao.xml @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file 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 37964a6e2c..8005814843 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 @@ -198,7 +198,11 @@ ca.pids AS "pids", ca.level level, IFNULL(ca.longitude, cc.longitude) longitude, - IFNULL(ca.latitude, cc.latitude) latitude + IFNULL(ca.latitude, cc.latitude) latitude, + ( + case when ca.pid is null or ca.pid='0' or ca.pid='' then ca.id + else concat(ca.pids,':',ca.id) + end)as orgIdPath FROM customer_agency ca INNER JOIN customer_agency cc ON cc.pid = '0' AND ca.customer_id = cc.customer_id WHERE ca.del_flag = '0' @@ -206,6 +210,26 @@ ORDER BY ca.created_time DESC + + + + select level as level,count(*) as count + from customer_agency + where DEL_FLAG = 0 + and PIDS like concat(#{pids},'%') + + and UPDATED_TIME >= #{timeStart} + + + and UPDATED_TIME <= #{timeEnd} + + group by level + + + + + + + + - + + + - - - - + (SELECT ca.ID as id, ca.ORGANIZATION_NAME as label, - ca.LONGITUDE as longitude, - ca.LATITUDE as latitude, - ca.`LEVEL` as level, - ca.PID as pId, - 'agency' AS orgType + ca.LONGITUDE as longitude, + ca.LATITUDE as latitude, + ca.`LEVEL` as level, + ca.PID as pId, + 'agency' AS orgType + FROM customer_agency ca + WHERE ca.PID = #{agencyId} + AND ca.DEL_FLAG = '0' + ORDER BY CAST(ca.organization_name AS SIGNED), CONVERT(ca.organization_name using gbk)) + union all + (SELECT cg.id, + cg.GRID_NAME AS label, + cg.LONGITUDE, + cg.LATITUDE, + 'grid' AS LEVEL, + cg.PID, + 'grid' AS orgType + FROM customer_grid cg + WHERE cg.DEL_FLAG = '0' + AND cg.PID = #{agencyId} + ORDER BY cg.sort, CAST(cg.GRID_NAME AS SIGNED), CONVERT(cg.GRID_NAME using gbk)) + + + + + + - - + + select count(1) + from customer_agency agency + where agency.DEL_FLAG = 0 + and agency.LEVEL = 'community' + and agency.PIDS like concat(#{pids},'%') + + and agency.UPDATED_TIME >= #{timeStart} + + + and agency.UPDATED_TIME <= #{timeEnd} + - - + + SELECT + ID,ORGANIZATION_NAME as name,CREATED_TIME as createTime,PIDS as pids + FROM customer_agency + WHERE DEL_FLAG = '0' + AND `LEVEL` = 'community' + AND PIDS LIKE CONCAT(#{pids},'%') + + and CREATED_TIME >= #{timeStart} + + + and CREATED_TIME <= #{timeEnd} + 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 9febecf227..d23f2ba606 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 @@ -197,7 +197,10 @@ grid_type AS 'gridType', contacts AS 'contacts', mobile AS 'mobile', - sort AS gridSort + sort AS gridSort, + COORDINATES AS coordinates + sort AS gridSort, + description as description FROM customer_grid WHERE @@ -260,6 +263,9 @@ sort = #{sort}, + + description = #{description}, + UPDATED_TIME=NOW() where id = #{id} diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml index 2224b68099..777ee3e9dd 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml @@ -54,6 +54,12 @@ BUILDING_LEADER_MOBILE = #{buildingLeaderMobile}, + + BUILDING_LEADER_ID_CARD = #{buildingLeaderIdCard}, + + + BUILDING_LEADER_TYPE = #{buildingLeaderTypeNum}, + SORT = #{sort}, @@ -149,7 +155,9 @@ c.ORGANIZATION_NAME as agencyName, d.GRID_NAME as gridName, a.BUILDING_LEADER_NAME AS buildingLeaderName, - a.BUILDING_LEADER_MOBILE AS buildingLeaderMobile + a.BUILDING_LEADER_MOBILE AS buildingLeaderMobile, + a.BUILDING_LEADER_ID_CARD AS buildingLeaderIdCard, + if(a.BUILDING_LEADER_TYPE = 0,'楼长',if(a.BUILDING_LEADER_TYPE = 1,'单元长','')) AS buildingLeaderType from ic_building a LEFT JOIN ic_neighbor_hood b on a.NEIGHBOR_HOOD_ID = b.ID and b.DEL_FLAG='0' @@ -453,6 +461,9 @@ + SELECT + ib.*, + h.NEIGHBOR_HOOD_NAME as neighborHoodName + FROM + ic_building ib + LEFT JOIN ic_neighbor_hood h ON ( ib.NEIGHBOR_HOOD_ID = h.ID ) + WHERE + ib.DEL_FLAG = '0' + AND ib.CUSTOMER_ID = #{customerId} + + AND h.GRID_ID = #{gridId} + + + AND ib.NEIGHBOR_HOOD_ID = #{neighborHoodId} + + diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcEnterpriseDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcEnterpriseDao.xml index 2b14cedbbb..52945262d5 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcEnterpriseDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcEnterpriseDao.xml @@ -66,10 +66,30 @@ LEFT JOIN ic_enterprise_patrol_record r ON ( ie.id = r.ENTERPRISE_ID AND r.DEL_FLAG = '0' ) WHERE ie.DEL_FLAG = '0' - AND ( - ie.AGENCY_ID = #{staffAgencyId} - OR ie.AGENCY_PIDS LIKE concat( '%', #{staffAgencyId}, '%' ) - ) + + + AND ie.GRID_ID = #{orgId} + + + + + AND (ie.AGENCY_ID = #{orgId} or ie.AGENCY_PIDS like concat('%',#{orgId},'%')) + + + AND ( + ie.AGENCY_ID = #{staffAgencyId} + OR ie.AGENCY_PIDS LIKE concat( '%', #{staffAgencyId}, '%' ) + ) + + + + + AND ( + ie.AGENCY_ID = #{staffAgencyId} + OR ie.AGENCY_PIDS LIKE concat( '%', #{staffAgencyId}, '%' ) + ) + + AND ie.GRID_ID = #{gridId} @@ -108,4 +128,24 @@ and ie.id != #{enterpriseId} + + + \ No newline at end of file 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 7ffaff80a2..f1e8576bb6 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 @@ -62,6 +62,16 @@ when id = #{h.houseId} then #{h.ownerIdCard} + + + when id = #{h.houseId} then #{h.floor} + + + + + when id = #{h.houseId} then #{h.area} + + when id = #{h.houseId} then #{h.sort} @@ -104,6 +114,8 @@ a.OWNER_PHONE as ownerPhone, a.OWNER_ID_CARD as ownerIdCard, a.HOUSE_CODE, + a.FLOOR as floor, + a.AREA as area, a.ID as houseId, c.ID as neighborHoodId, @@ -701,6 +713,212 @@ CONVERT(d.UNIT_NAME USING gbk), CAST(a.DOOR_NAME AS SIGNED), CONVERT(a.DOOR_NAME using gbk) + + + + + + @@ -751,6 +969,9 @@ ih.DEL_FLAG = '0' AND b.DEL_FLAG = '0' AND h.DEL_FLAG = '0' + + and ih.customer_id=#{customerId} + AND ih.PARTY_CENTER_HOUSE_FLAG='1' @@ -770,4 +991,33 @@ order by ca.CREATED_TIME asc,cg.CREATED_TIME asc,h.CREATED_TIME asc + + + diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodDao.xml index 326940bdd9..574d29a6ae 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodDao.xml @@ -39,6 +39,26 @@ when id = #{l.neighborHoodId} then #{l.remark} + + + when id = #{l.neighborHoodId} then #{l.area} + + + + + when id = #{l.neighborHoodId} then #{l.buildYear} + + + + + when id = #{l.neighborHoodId} then #{l.viliageType} + + + + + when id = #{l.neighborHoodId} then #{l.openType} + + UPDATED_TIME = NOW() WHERE DEL_FLAG = '0' @@ -130,7 +150,11 @@ d.PROPERTY_ID as propertyId , a.LOCATION as location, a.LONGITUDE as longitude, - a.LATITUDE as latitude + a.LATITUDE as latitude, + a.AREA as area, + a.BUILD_YEAR as buildYear, + if(a.VILIAGE_TYPE = 1,'住宅小区',if(a.VILIAGE_TYPE = 2,'自然村','')) as viliageTypeName, + if(a.OPEN_TYPE = 1,'封闭式',if(a.OPEN_TYPE = 2,'开放式','')) as openTypeName from ic_neighbor_hood a left join customer_agency b on a.AGENCY_ID = b.ID and b.DEL_FLAG='0' @@ -165,10 +189,16 @@ + + diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodPropertyDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodPropertyDao.xml index 749861cc9a..9e5f9b0bf9 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodPropertyDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodPropertyDao.xml @@ -15,5 +15,19 @@ - + + \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcPropertyManagementDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcPropertyManagementDao.xml index 045514482f..64c35920e1 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcPropertyManagementDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcPropertyManagementDao.xml @@ -71,15 +71,33 @@ \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/LingshanPartyCenterHouseLianhuDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/LingshanPartyCenterHouseLianhuDao.xml index 285b47922e..1c3072c4bc 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/LingshanPartyCenterHouseLianhuDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/LingshanPartyCenterHouseLianhuDao.xml @@ -34,4 +34,19 @@ where DEL_FLAG='0' and HOUSE_ID = #{houseId} + + \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/StaffLoginLogDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/StaffLoginLogDao.xml new file mode 100644 index 0000000000..0a1bb6fdbe --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/StaffLoginLogDao.xml @@ -0,0 +1,267 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/IcEventDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/IcEventDTO.java index 3be3954934..cb8e5a0a2e 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/IcEventDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/IcEventDTO.java @@ -20,107 +20,107 @@ public class IcEventDTO implements Serializable { /** * 主键,事件id */ - private String id; + private String id; /** * 客户ID */ - private String customerId; + private String customerId; /** * 事件所属的网格Id */ - private String gridId; + private String gridId; /** * 网格的所属组织 */ - private String agencyId; + private String agencyId; /** * 网格的所有组织Id */ - private String gridPids; + private String gridPids; /** * 报事的人【居民端/pc端居民Id】可为空 */ - private String reportUserId; + private String reportUserId; /** * 报事人姓名 */ - private String name; + private String name; /** * 手机号 */ - private String mobile; + private String mobile; /** * 身份证号 */ - private String idCard; + private String idCard; /** * 反映渠道【字典表】 */ - private String sourceType; + private String sourceType; /** * 发生时间 */ - private Date happenTime; + private Date happenTime; /** * 事件内容 */ - private String eventContent; + private String eventContent; /** * 纬度 */ - private String latitude; + private String latitude; /** * 经度 */ - private String longitude; + private String longitude; /** * 地址 */ - private String address; + private String address; /** * 处理中:processing;已办结:closed_case */ - private String status; + private String status; /** * 办结时间 */ - private Date closeCaseTime; + private Date closeCaseTime; /** * 0:已回复 1:已转项目 2:已转需求3:转议题 */ - private String operationType; + private String operationType; /** * 项目、需求ID、议题id */ - private String operationId; + private String operationId; /** * 事件是否被阅读过;1已读;针对报事人待处理列表 */ - private Integer readFlag; + private Integer readFlag; /** - * 报事人的红点:展示1;不展示:0;人大代表回复,工作人员回复/立项/转需求/办结更新为1; + * 报事人的红点:展示1;不展示:0;人大代表回复,工作人员回复/立项/转需求/办结更新为1; */ - private Integer redDot; + private Integer redDot; /** * 工作端的红点:展示1;不展示:0;【居民报事、回复更新为1】 @@ -130,81 +130,81 @@ public class IcEventDTO implements Serializable { /** * 最近一次操作时间(回复、立项、转需求、办结更新此列) */ - private Date latestOperatedTime; + private Date latestOperatedTime; /** * 是否解决:已解决 resolved,未解决 un_solved */ - private String resolveStatus; + private String resolveStatus; /** * 结案说明 */ - private String closeRemark; + private String closeRemark; /** * 评论人 */ - private String commentUserId; + private String commentUserId; /** * 评论内容 */ - private String satisfaction; + private String satisfaction; /** * 评论时间 */ - private Date commentTime; + private Date commentTime; /** - * 事件审核状态[涉及附件审核需要加的状态](审核中:auditing; -auto_passed: 自动通过; -review:结果不确定,需要人工审核; -block: 结果违规; -rejected:人工审核驳回; -approved:人工审核通过) + * 事件审核状态[涉及附件审核需要加的状态](审核中:auditing; + * auto_passed: 自动通过; + * review:结果不确定,需要人工审核; + * block: 结果违规; + * rejected:人工审核驳回; + * approved:人工审核通过) */ - private String auditStatus; + private String auditStatus; /** * 审核理由 */ - private String auditReason; + private String auditReason; /** * 是否标记难点堵点 0:否 1:是 */ - private String difficultPoint; + private String difficultPoint; /** * 删除标识:0.未删除 1.已删除 */ - private String delFlag; + private String delFlag; /** * 乐观锁 */ - private Integer revision; + private Integer revision; /** * 创建人 */ - private String createdBy; + private String createdBy; /** * 创建时间 */ - private Date createdTime; + private Date createdTime; /** * 更新人 */ - private String updatedBy; + private String updatedBy; /** * 更新时间 */ - private Date updatedTime; + 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/IcEventAddEditFormDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/IcEventAddEditFormDTO.java index c630f4940a..8d24ac8419 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/IcEventAddEditFormDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/IcEventAddEditFormDTO.java @@ -51,6 +51,11 @@ public class IcEventAddEditFormDTO implements Serializable { */ @NotBlank(message = "反映渠道不能为空", groups = {AddGroup.class}) private String sourceType; + + /** + * 事件类型:1、红灯事件 2、黄灯事件 3、蓝灯事件 + */ + private String eventType; /** * 发生时间 */ diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/IcEventReplyFormDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/IcEventReplyFormDTO.java index 05e42de873..763ae800fd 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/IcEventReplyFormDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/IcEventReplyFormDTO.java @@ -21,6 +21,11 @@ public class IcEventReplyFormDTO implements Serializable { public interface Process extends CustomerClientShowGroup { } + + /** + * 回复ID + */ + private String id; /** * 事件ID */ diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/EventAnalysisResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/EventAnalysisResultDTO.java index 80f8b2f938..5c2c4bff61 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/EventAnalysisResultDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/EventAnalysisResultDTO.java @@ -3,7 +3,6 @@ package com.epmet.dto.result; import lombok.Data; import java.io.Serializable; -import java.util.Map; /** * @author yan Lu @@ -25,11 +24,47 @@ public class EventAnalysisResultDTO implements Serializable { /** * 网格化平台数量 */ - private Integer wangGeHua; + + /** + * 0、上报 1、阅收 3、完结 4、审核 5、事件评价 6、结案归档 + */ + + /** + * 待处理 + */ + private Integer daiChuLi; + /** + * 待处理占比 + */ + private Double daiChuLiRate; + + /** + * 处理中 + */ + private Integer chuLiZhong; /** - * 分类统计数量 + * 处理中占比 */ - private Map categoryCount; + private Double chuLiZhongRate; + + /** + * 已结案数量 + */ + private Integer yiJieAn; + + /** + * 已结案占比 + */ + private Double yiJieAnRate; + + /** + * 归档数量 + */ + private Integer guiDang; + /** + * 归档占比 + */ + private Double guiDangRate; } diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/EventRateResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/EventRateResultDTO.java index a931447009..1e2f9c24da 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/EventRateResultDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/EventRateResultDTO.java @@ -3,6 +3,7 @@ package com.epmet.dto.result; import lombok.Data; import java.io.Serializable; +import java.util.List; /** * @author yan Lu @@ -24,26 +25,38 @@ public class EventRateResultDTO implements Serializable { * 红灯数量 */ private Integer hongDeng; - /** - * 红灯占比 - */ - private Double hongDengRate; + /** * 黄灯数量 */ private Integer huangDeng; - /** - * 黄灯占比 - */ - private Double huangDengRate; + /** * 蓝灯数量 */ private Integer lanDeng; + /** - * 蓝灯占比 + * 分类统计数量 */ - private Double lanDengRate; - + private List category; + + @Data + public static class Category { + /** + * 分类编码 + */ + private String code; + + /** + * 分类名称 + */ + private String name; + + /** + * 分类数量 + */ + private Integer value; + } } diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/GridOrVillageEventRateResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/GridOrVillageEventRateResultDTO.java new file mode 100644 index 0000000000..755af9fff5 --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/GridOrVillageEventRateResultDTO.java @@ -0,0 +1,34 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author yan Lu + * @description 各新村或网格事件处理数量和办结率 + * @create 2023/5/19 09:16 + */ + +@Data +public class GridOrVillageEventRateResultDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 网格名称或者社区(新村)名称 + */ + private String agencyName; + + private String orgId; + + /** + * 完结事件数量 + */ + private Integer total; + + /** + * 事件完结率 + */ + private Double rate; +} diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/IcEventListResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/IcEventListResultDTO.java index 349db1d45c..bb23c45258 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/IcEventListResultDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/IcEventListResultDTO.java @@ -77,6 +77,10 @@ public class IcEventListResultDTO implements Serializable { * 上报渠道[字典表] */ private String sourceType; + /** + * 事件类型: 1、红灯事件 2、黄灯事件 3、蓝灯事件 + */ + private String eventType; /** * 发生时间 */ diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/IcEventResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/IcEventResultDTO.java index 24f8e387d0..b22d8a944b 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/IcEventResultDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/IcEventResultDTO.java @@ -7,8 +7,13 @@ public class IcEventResultDTO { private String eventId; private String eventContent; private String gridId; - private String gridName; private String sourceType; + private String eventType; + private String manageStatus; + private String categoryCode; + private String latitude; + private String longitude; + private String gridName; private String sourceTypeName; private String processStatus; private String processStatusName; @@ -17,4 +22,5 @@ public class IcEventResultDTO { private String mobile; private String address; private String happenTime; + } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/IcEventController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/IcEventController.java index 60e5b7b12c..a5d3d0f3b3 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/IcEventController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/IcEventController.java @@ -62,6 +62,7 @@ public class IcEventController { /** * 事件管理-列表 + * * @param tokenDto * @param formDTO * @return @@ -72,6 +73,7 @@ public class IcEventController { formDTO.setStaffId(tokenDto.getUserId()); return new Result>().ok(icEventService.list(formDTO)); } + /** * @Author sun * @Description 工作端小程序-事件管理-列表 @@ -84,28 +86,29 @@ public class IcEventController { return new Result>().ok(icEventService.list(formDTO)); } - @RequestMapping(value = "{id}",method = {RequestMethod.POST,RequestMethod.GET}) - public Result get(@PathVariable("id") String id){ + @RequestMapping(value = "{id}", method = {RequestMethod.POST, RequestMethod.GET}) + public Result get(@PathVariable("id") String id) { IcEventDTO data = icEventService.get(id); return new Result().ok(data); } /** * 事件管理-新增 + * * @param tokenDto * @param formDTO * @return */ @NoRepeatSubmit @PostMapping("add") - public Result save(@LoginUser TokenDto tokenDto, @RequestBody IcEventAddEditFormDTO formDTO){ + public Result save(@LoginUser TokenDto tokenDto, @RequestBody IcEventAddEditFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO, AddGroup.class, DefaultGroup.class); formDTO.setCustomerId(tokenDto.getCustomerId()); formDTO.setUserId(tokenDto.getUserId()); formDTO.setApp(tokenDto.getApp()); formDTO.setClient(tokenDto.getClient()); - if("3".equals(formDTO.getOperationType())){ - ValidatorUtils.validateEntity(formDTO.getIssueInfo(),IcEventToIssueFormDTO.AddEventAndShiftIssue.class); + if ("3".equals(formDTO.getOperationType())) { + ValidatorUtils.validateEntity(formDTO.getIssueInfo(), IcEventToIssueFormDTO.AddEventAndShiftIssue.class); } icEventService.save(formDTO); return new Result(); @@ -113,7 +116,7 @@ public class IcEventController { @NoRepeatSubmit @PostMapping("update") - public Result update(@RequestBody IcEventDTO dto){ + public Result update(@RequestBody IcEventDTO dto) { //效验数据 ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); icEventService.update(dto); @@ -121,7 +124,7 @@ public class IcEventController { } @PostMapping("delete") - public Result delete(@RequestBody String[] ids){ + public Result delete(@RequestBody String[] ids) { //效验数据 AssertUtils.isArrayEmpty(ids, "id"); icEventService.delete(ids); @@ -130,6 +133,7 @@ public class IcEventController { /** * 事件处理分析-处理状态比例查询 + * * @param formDTO * @return */ @@ -148,6 +152,7 @@ public class IcEventController { /** * 事件处理分析-事件列表 + * * @param input * @return */ @@ -169,6 +174,7 @@ public class IcEventController { /** * 时间处理分析-阅读增量查询 + * * @param input * @return */ @@ -190,6 +196,7 @@ public class IcEventController { /** * 研判分析查询 + * * @param eventId * @return */ @@ -201,6 +208,7 @@ public class IcEventController { /** * 组织下,分类下的事件列表 + * * @param input * @return */ @@ -212,16 +220,17 @@ public class IcEventController { String orgType = input.getOrgType(); Integer pageNo = input.getPageNo(); Integer pageSize = input.getPageSize(); - PageData page = icEventService.getSameCategoryEvents(orgId, orgType, categroyPid, pageNo, pageSize); + PageData page = icEventService.getSameCategoryEvents(orgId, orgType, categroyPid, pageNo, pageSize); return new Result>().ok(page); } + /** * @Author sun * @Description 事件管理-回复 **/ @NoRepeatSubmit @PostMapping("reply") - public Result reply(@LoginUser TokenDto tokenDto, @RequestBody IcEventReplyFormDTO formDTO){ + public Result reply(@LoginUser TokenDto tokenDto, @RequestBody IcEventReplyFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO, UpdateGroup.class, DefaultGroup.class); formDTO.setCustomerId(tokenDto.getCustomerId()); formDTO.setUserId(tokenDto.getUserId()); @@ -235,12 +244,12 @@ public class IcEventController { **/ @NoRepeatSubmit @PostMapping("icEventToProject") - public Result icEventToProject(@LoginUser TokenDto tokenDto, @RequestBody IcEventToProjectFormDTO formDTO){ + public Result icEventToProject(@LoginUser TokenDto tokenDto, @RequestBody IcEventToProjectFormDTO formDTO) { formDTO.setCustomerId(tokenDto.getCustomerId()); formDTO.setUserId(tokenDto.getUserId()); formDTO.setApp(tokenDto.getApp()); formDTO.setClient(tokenDto.getClient()); - ValidatorUtils.validateEntity(formDTO,IcEventToProjectFormDTO.ApprovalCategory.class,IcEventToProjectFormDTO.AddUserInternalGroup.class); + ValidatorUtils.validateEntity(formDTO, IcEventToProjectFormDTO.ApprovalCategory.class, IcEventToProjectFormDTO.AddUserInternalGroup.class); icEventService.icEventToProject(formDTO); return new Result(); } @@ -250,7 +259,7 @@ public class IcEventController { * @Description 事件管理-转需求 **/ @PostMapping("icEventToDemand") - public Result icEventToDemand(@LoginUser TokenDto tokenDto, @RequestBody IcDemandFormDTO formDTO){ + public Result icEventToDemand(@LoginUser TokenDto tokenDto, @RequestBody IcDemandFormDTO formDTO) { formDTO.setCustomerId(tokenDto.getCustomerId()); formDTO.setDemandUserId(tokenDto.getUserId()); ValidatorUtils.validateEntity(formDTO, IcDemandFormDTO.AddUserShowGroup.class, IcDemandFormDTO.AddUserInternalGroup.class); @@ -260,6 +269,7 @@ public class IcEventController { /** * 事件转议题 + * * @param tokenDto * @param formDTO * @return @@ -283,7 +293,7 @@ public class IcEventController { public Result> categoryAnalysisTotal(@LoginUser TokenDto tokenDto, @RequestBody IcEventCategoryAnalysisFormDTO formDTO) { formDTO.setCustomerId(tokenDto.getCustomerId()); formDTO.setStaffId(tokenDto.getUserId()); - ValidatorUtils.validateEntity(formDTO,IcEventCategoryAnalysisFormDTO.TotalPie.class); + ValidatorUtils.validateEntity(formDTO, IcEventCategoryAnalysisFormDTO.TotalPie.class); List list = icEventService.categoryAnalysisTotal(formDTO); return new Result>().ok(list); } @@ -305,7 +315,7 @@ public class IcEventController { * @Author sun * @Description 事件管理-详情 **/ - @MaskResponse(fieldNames = { "idCard"}, fieldsMaskType = {MaskResponse.MASK_TYPE_ID_CARD }) + @MaskResponse(fieldNames = {"idCard"}, fieldsMaskType = {MaskResponse.MASK_TYPE_ID_CARD}) @PostMapping("detail") public Result detail(@LoginUser TokenDto tokenDto, @RequestBody IcEventListFormDTO formDTO) { formDTO.setCustomerId(tokenDto.getCustomerId()); @@ -313,6 +323,7 @@ public class IcEventController { ValidatorUtils.validateEntity(formDTO, IcEventListFormDTO.Detail.class); return new Result().ok(icEventService.detail(formDTO)); } + /** * @Author sun * @Description 工作端小程序-事件管理-详情 @@ -328,6 +339,7 @@ public class IcEventController { /** * 事件分类分析- 饼图2,直属下级 事件数量 + * * @param tokenDto * @param formDTO * @return @@ -353,19 +365,20 @@ public class IcEventController { /** * Desc: 定时任务自动评价 + * * @param formDTO * @author zxc * @date 2022/5/18 16:35 */ @PostMapping("auto-evaluation") - public Result autoEvaluation(@RequestBody AutoEvaluationFormDTO formDTO){ + public Result autoEvaluation(@RequestBody AutoEvaluationFormDTO formDTO) { icEventService.autoEvaluation(formDTO); return new Result(); } /** * @Author sun - * @Description 需求完成/项目结案时 修改事件数据 + * @Description 需求完成/项目结案时 修改事件数据 * 议题关闭时,如果议题来源于事件,也会调用此方法 **/ @PostMapping("closeprojectordemand") @@ -376,6 +389,7 @@ public class IcEventController { /** * Desc: 新增【随手拍、讲】 + * * @param tokenDto * @param formDTO * @author zxc @@ -383,7 +397,7 @@ public class IcEventController { */ @NoRepeatSubmit @PostMapping("add-event-resi") - public Result addEventFromResi(@LoginUser TokenDto tokenDto,@RequestBody AddEventFromResiFormDTO formDTO){ + public Result addEventFromResi(@LoginUser TokenDto tokenDto, @RequestBody AddEventFromResiFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO, AddEventFromResiFormDTO.AddEventFromResiForm.class); formDTO.setCustomerId(tokenDto.getCustomerId()); formDTO.setUserId(tokenDto.getUserId()); @@ -394,6 +408,7 @@ public class IcEventController { /** * 居民端小程序我上报的事件-列表+详情 * yapi: http://yapi.elinkservice.cn/project/102/interface/api/7781 + * * @param tokenDto * @param formDTO * @return @@ -408,6 +423,7 @@ public class IcEventController { /** * 居民端我上报的事件, 消息列表跳转详情 + * * @param tokenDto * @param formDTO * @return @@ -423,20 +439,22 @@ public class IcEventController { /** * 居民端小程序我上报的事件详情页面-回复列表 * http://yapi.elinkservice.cn/project/102/interface/api/7783 + * * @param formDTO * @return */ @PostMapping("reply-list") - public Result> replyList(@LoginUser TokenDto tokenDto,@RequestBody MyReportIcEvFormDTO formDTO) { + public Result> replyList(@LoginUser TokenDto tokenDto, @RequestBody MyReportIcEvFormDTO formDTO) { formDTO.setUserId(tokenDto.getUserId()); ValidatorUtils.validateEntity(formDTO, MyReportIcEvFormDTO.ReplyListGroup.class); - return new Result>().ok(icEventReplyService.replyList(formDTO.getIcEventId(),formDTO.getUserId())); + return new Result>().ok(icEventReplyService.replyList(formDTO.getIcEventId(), formDTO.getUserId())); } /** * 居民端小程序我上报的事件-处理中 * 点击事件进入详情页时调用此接口,消除红点 * yapi:http://yapi.elinkservice.cn/project/102/interface/api/7790 + * * @param tokenDto * @param formDTO * @return @@ -452,23 +470,24 @@ public class IcEventController { /** * 居民端我上报的事件-回复 * http://yapi.elinkservice.cn/project/102/interface/api/7789 + * * @param tokenDto * @param formDTO * @return */ @NoRepeatSubmit @PostMapping("resi-reply") - public Result resiReply(@LoginUser TokenDto tokenDto, @RequestBody ResiReplyIcEventFormDTO formDTO){ + public Result resiReply(@LoginUser TokenDto tokenDto, @RequestBody ResiReplyIcEventFormDTO formDTO) { formDTO.setCustomerId(tokenDto.getCustomerId()); formDTO.setUserId(tokenDto.getUserId()); - ValidatorUtils.validateEntity(formDTO, ResiReplyIcEventFormDTO.AddUserShowGroup.class,ResiReplyIcEventFormDTO.AddUserInternalGroup.class); + ValidatorUtils.validateEntity(formDTO, ResiReplyIcEventFormDTO.AddUserShowGroup.class, ResiReplyIcEventFormDTO.AddUserInternalGroup.class); icEventService.resiReply(formDTO); return new Result(); } /** * @Author sun - * @Description 数字平台-事件导出 + * @Description 数字平台-事件导出 **/ @NoRepeatSubmit @PostMapping("export") @@ -487,8 +506,8 @@ public class IcEventController { List list = null; do { data = icEventService.list(formDTO); - data.getList().forEach(d->{ - if(!org.springframework.util.CollectionUtils.isEmpty(d.getImageList())){ + data.getList().forEach(d -> { + if (!org.springframework.util.CollectionUtils.isEmpty(d.getImageList())) { d.setImageUrl(d.getImageList().get(NumConstant.ZERO)); } }); @@ -501,7 +520,7 @@ public class IcEventController { response.setCharacterEncoding("UTF-8"); response.setHeader("content-type", "application/json; charset=UTF-8"); PrintWriter printWriter = response.getWriter(); - Result result = new Result<>().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),e.getMsg()); + Result result = new Result<>().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), e.getMsg()); printWriter.write(JSON.toJSONString(result)); printWriter.close(); } catch (Exception e) { @@ -515,7 +534,7 @@ public class IcEventController { /** * @Author sun - * @Description 工作端事件红点消除 + * @Description 工作端事件红点消除 **/ @PostMapping("govRedDot") public Result govRedDot(@RequestBody IcEventListFormDTO formDTO) { @@ -526,7 +545,7 @@ public class IcEventController { /** * @Author sun - * @Description 标记事件为难点堵点 + * @Description 标记事件为难点堵点 **/ @PostMapping("difficultpointevent") public Result difficultPointEvent(@RequestBody IcEventListFormDTO formDTO) { @@ -537,6 +556,7 @@ public class IcEventController { /** * 数据分析-个人档案-上报事件列表,根据epmetUserIdList查询 * 模仿gov/project/resieventreply/pageuserreported接口重新查询新表接口 + * * @author sun */ @PostMapping("icevent-pageuserreported") @@ -560,23 +580,87 @@ public class IcEventController { } /** - * @description 获取事件数量和占比率 - * @param * @param null - * @return Result - * @throws - * @author yan Lu - * @date 2023/5/17 14:49 - */ + * @param * @param null + * @return Result + * @throws + * @description 获取事件数量和占比 + * @author yan Lu + * @date 2023/5/17 14:49 + */ @GetMapping("getEventRate") public Result getEventRate(@RequestParam("orgId") String orgId, - @RequestParam("orgType") String orgType){ - return new Result().ok(icEventService.getEventRate(orgId,orgType)); + @RequestParam("orgType") String orgType) { + return new Result().ok(icEventService.getEventRate(orgId, orgType)); } + /** + * @param + * @return Result + * @throws + * @description 按事件分类统计 + * @author yan Lu + * @date 2023/5/18 17:53 + */ @GetMapping("getEventAnalysis") public Result getEventAnalysis(@RequestParam("orgId") String orgId, - @RequestParam("orgType") String orgType){ - return new Result().ok(icEventService.getEventAnalysis(orgId,orgType)); + @RequestParam("orgType") String orgType, + @RequestParam("eventType") String eventType) { + return new Result().ok(icEventService.getEventAnalysis(orgId, orgType, eventType)); } + /** + * @param + * @throws + * @description 根据组织ID获取事件办理统计情况 + * @author yan Lu + * @date 2023/5/19 09:28 + */ + @GetMapping("getEventRateByAgencyId") + public Result> getEventRateByAgencyId(@RequestParam("agencyId") String agencyId) { + return new Result>().ok(icEventService.getEventRateByAgencyId(agencyId)); + } + + + @PostMapping("updateReply") + public Result updateReply(@RequestBody IcEventReplyFormDTO formDTO) { + icEventReplyService.updateByReplyId(formDTO); + return new Result(); + } + + /** + * 根据事件来源类型或者响应级别获取事件列表 + * + * @param orgId + * @param orgType + * @param sourceType 事件来源 + * @param eventType 响应几杯 + * @return + */ + @GetMapping("getListBySourceTypeOrEventType") + public Result> getListBySourceTypeOrEventType(@RequestParam("orgId") String orgId, + @RequestParam("orgType") String orgType, + @RequestParam("sourceType") String sourceType, + @RequestParam("eventType") String eventType + ) { + return new Result>().ok(icEventService.getListBySourceTypeOrEventType(orgId, orgType, sourceType, eventType)); + + } + + /** + * 根据事件理状态查询列表 + * + * @param orgId + * @param orgType + * @param status + * @return + */ + @GetMapping("getEventListByManageStatus") + public Result> getEventListByTypeOrStatus(@RequestParam("orgId") String orgId, + @RequestParam("orgType") String orgType, + @RequestParam("sourceType") String sourceType, + @RequestParam("status") String status) { + return new Result>().ok(icEventService.getListByStatus(orgId, orgType, sourceType, status)); + } + + } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/IcEventDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/IcEventDao.java index 9622cb94e0..40e6b3c65a 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/IcEventDao.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/IcEventDao.java @@ -148,12 +148,72 @@ public interface IcEventDao extends BaseDao { List selectUserReported(PageUserReportEventFormDTO formDTO); - EventRateResultDTO getEventRate(@Param("orgIdPath") String orgIdPath); + /** + * 按响应级别统计数量 + * + * @param orgIdPath + * @return + */ + EventRateResultDTO getEventCount(@Param("orgIdPath") String orgIdPath); + + /** + * 获取事件处理进度占比 + * + * @param orgIdPath + * @param eventType + * @return + */ + EventRateResultDTO getEventRate(@Param("orgIdPath") String orgIdPath, @Param("eventType") String eventType); - EventAnalysisResultDTO getEventAnalysis(@Param("orgIdPath") String orgPath); + /** + * 分类统计事件来源数量 + * + * @param orgPath + * @param eventType + * @return + */ + EventAnalysisResultDTO getEventAnalysis(@Param("orgIdPath") String orgPath, @Param("eventType") String eventType); + /** + * 根据事件类型,统计各类型的数量 + * + * @param orgPath + * @return + */ @MapKey("code") - List> getAnalysis(@Param("orgIdPath") String orgPath); + List> getAnalysis(@Param("orgIdPath") String orgPath); + /** + * 根据ID查询事件 + * + * @param icEventId + * @return + */ IcEventEntity selectByEventId(String icEventId); + + /** + * 根据事件来源获取数量 + * + * @param orgPath 1、即诉即办 2、直通联办 3、网格化平台 + * @return + */ + EventAnalysisResultDTO getEventBySourceTypeCount(@Param("orgIdPath") String orgPath); + + /** + * 根据 事件来源获取 完成进度占比 + * 待响应 没有任何回复数据或者只有上报数据 + * 处理中 只要包含一条阅收数据即为处理中 + * 已结案 只要包含一条完结数据即为已结案 + * 已归档 只要包含一条归档数据即为已归档 + * manageType: 0、上报 1、阅收 3、完结 4、审核 5、事件评价 6、结案归档 + */ + Integer getEventByReplyTypeCount(@Param("orgIdPath") String orgPath, + @Param("sourceType") String sourceType, + @Param("manageType") String manageType); + + List getListByStatus(@Param("orgIdPath") String orgPath, @Param("sourceType") String sourceType, @Param("status") String status); + + List getListBySourceTypeOrEventType(@Param("orgIdPath") String orgPath, @Param("sourceType") String sourceType, @Param("eventType") String eventType); + + List getEventRateByGridIds(@Param("orgIds") List orgIds); } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/IcEventEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/IcEventEntity.java index c20ab1ec25..3cb9cd00b9 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/IcEventEntity.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/IcEventEntity.java @@ -71,6 +71,11 @@ public class IcEventEntity extends BaseEpmetEntity { */ private String sourceType; + /** + * 事件类型:1、红灯事件 2、黄灯事件 3、蓝灯事件 + */ + private String eventType; + /** * 发生时间 */ diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/IcEventReplyService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/IcEventReplyService.java index c2b3da8830..68717af40f 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/IcEventReplyService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/IcEventReplyService.java @@ -3,6 +3,7 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; import com.epmet.dto.IcEventReplyDTO; +import com.epmet.dto.form.IcEventReplyFormDTO; import com.epmet.dto.result.IcEventProcessListResultDTO; import com.epmet.entity.IcEventReplyEntity; @@ -87,4 +88,10 @@ public interface IcEventReplyService extends BaseService { * @return */ List replyList(String icEventId,String userId); -} \ No newline at end of file + + /** + * 更新事件回复 + * @param formDTO + */ + void updateByReplyId(IcEventReplyFormDTO formDTO); +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/IcEventService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/IcEventService.java index 4e1e19e580..5b484e85d1 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/IcEventService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/IcEventService.java @@ -266,5 +266,23 @@ public interface IcEventService extends BaseService { * @param orgType * @return */ - EventAnalysisResultDTO getEventAnalysis(String orgId, String orgType); + EventAnalysisResultDTO getEventAnalysis(String orgId, String orgType, String eventType); + + /** + * 根据组织ID获取下一级组织事件不完结率和完结数量 + * + * @return + */ + + List getEventRateByAgencyId(String agencyId); + + /** + * 根据事件处理状态查询列表 + * @param sourceType 事件来源 + * @param status 事件处理状态 + * @return + */ + List getListByStatus(String orgId, String orgType, String sourceType, String status); + + List getListBySourceTypeOrEventType(String orgId, String orgType, String sourceType, String eventType); } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/IcEventReplyServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/IcEventReplyServiceImpl.java index c3fe7d9106..f5eeca63e5 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/IcEventReplyServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/IcEventReplyServiceImpl.java @@ -8,6 +8,7 @@ import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.dao.IcEventReplyDao; import com.epmet.dto.IcEventReplyDTO; +import com.epmet.dto.form.IcEventReplyFormDTO; import com.epmet.dto.result.IcEventProcessListResultDTO; import com.epmet.entity.IcEventReplyEntity; import com.epmet.service.IcEventReplyService; @@ -46,8 +47,8 @@ public class IcEventReplyServiceImpl extends BaseServiceImpl getWrapper(Map params){ - String id = (String)params.get(FieldConstant.ID_HUMP); + 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); @@ -99,4 +100,17 @@ public class IcEventReplyServiceImpl extends BaseServiceImpl> dataMap = baseDao.getAnalysis(getOrgPath(orgId, orgType));//按分类获取数量 + Map temp = new HashMap<>(); + if (null != dataMap && dataMap.size() > 0) { + for (Map map : dataMap) { + temp.put(String.valueOf(map.get("code")), Integer.valueOf(String.valueOf(map.get("total")))); + } + } + Result> categoryMap = govIssueOpenFeignClient.getCategoryMap(EpmetRequestHolder.getLoginUserCustomerId()); + if (null != categoryMap && categoryMap.getData().size() > 0) { + Map map = categoryMap.getData(); + List categoryList = new ArrayList<>(); + map.keySet().forEach(key -> { + EventRateResultDTO.Category category = new EventRateResultDTO.Category(); + if (null != temp.get(key)) { + category.setCode(key); + category.setName(map.get(key)); + category.setValue(Integer.valueOf(temp.get(key))); + } else { + category.setCode(key); + category.setName(map.get(key)); + category.setValue(0); + } + categoryList.add(category); + }); + erDto.setCategory(categoryList); + } + return erDto; } @Override - public EventAnalysisResultDTO getEventAnalysis(String orgId, String orgType) { - EventAnalysisResultDTO dto = baseDao.getEventAnalysis(getOrgPath(orgId,orgType)); - Result> categoryMap = govIssueOpenFeignClient.getCategoryMap(EpmetRequestHolder.getLoginUserCustomerId()); - if (null != categoryMap && categoryMap.getData().size() > 0) { - List> dataMap = baseDao.getAnalysis(getOrgPath(orgId,orgType)); - if (null != dataMap && dataMap.size() > 0) { - Map merged = new HashMap<>(); - dataMap.forEach(merged::putAll); - dto.setCategoryCount(merged); + public EventAnalysisResultDTO getEventAnalysis(String orgId, String orgType, String eventType) { + String orgPath = getOrgPath(orgId, orgType); + EventAnalysisResultDTO dto = baseDao.getEventBySourceTypeCount(orgPath);//根据事件来源获取事件数量 + Integer total; + if (StringUtils.isEmpty(eventType)) { + total = dto.getJiSuJiBan() + dto.getZhiTongLianBan() + dto.getWangGeHua(); + } else { + total = eventType.equals("0") ? dto.getJiSuJiBan() : eventType.equals("1") ? + dto.getZhiTongLianBan() : dto.getWangGeHua(); + } + return biuldData(dto, orgPath, eventType, total); + } + + private EventAnalysisResultDTO biuldData(EventAnalysisResultDTO dto, String orgPath, String eventType, Integer total) { + /** + * eventType: 0 即诉即办 1 直通联办 2 网格化平台 + * 待响应 没有任何回复数据或者只有上报数据(可能包含多条) + * 处理中 只要包含一条阅收数据即为处理中(可能包含多条) + * 已结案 只要包含一条完结数据即为已结案(应该只有一条) + * 已归档 只要包含一条归档数据即为已归档(应该只有一条) + * 0、上报 1、阅收 3、完结 6、结案归档 + */ + for (int i = 0; i < 5; i++) { + Integer temp; + if (i == 0) { + temp = baseDao.getEventByReplyTypeCount(orgPath, eventType, String.valueOf(i)); + dto.setDaiChuLi(temp); + dto.setDaiChuLiRate(new BigDecimal((double) temp / total).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()); + } + if (i == 1) { + temp = baseDao.getEventByReplyTypeCount(orgPath, eventType, String.valueOf(i)); + dto.setChuLiZhong(temp); + dto.setChuLiZhongRate(new BigDecimal((double) temp / total).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()); + } + if (i == 2) { + i = i + 1; + temp = baseDao.getEventByReplyTypeCount(orgPath, eventType, String.valueOf(i)); + dto.setYiJieAn(temp); + dto.setYiJieAnRate(new BigDecimal((double) temp / total).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()); + } + if (i == 4) { + i = i + 2; + temp = baseDao.getEventByReplyTypeCount(orgPath, eventType, String.valueOf(i)); + dto.setGuiDang(temp); + dto.setGuiDangRate(new BigDecimal((double) temp / total).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()); } } return dto; } + @Override + public List getEventRateByAgencyId(String agencyId) { + List dtoList = new ArrayList<>(); + if (StringUtils.isNotEmpty(agencyId)) { + List orgs = getSubOrgs(agencyId); + if (null != orgs && orgs.size() > 0) { + Map namesMap = new HashMap<>(); + for (IcEventAnalysisOrgResDTO org : orgs) { + namesMap.put(org.getOrgId(), org.getOrgName()); + } + List ids = orgs.stream().map(IcEventAnalysisOrgResDTO::getOrgId).collect(Collectors.toList()); + List resultList = baseDao.getEventRateByGridIds(ids); + if(null != resultList && resultList.size()> 0){ + for (GridOrVillageEventRateResultDTO dto : resultList) { + if (null != dto) { + dto.setAgencyName(namesMap.get(dto.getOrgId())); + dto.setRate(dto.getRate() == null ? 0 : dto.getRate()); + dtoList.add(dto); + } else { + dto.setAgencyName(namesMap.get(dto.getOrgId())); + dto.setRate(0.00); + dto.setTotal(0); + dtoList.add(dto); + } + } + }else { + namesMap.keySet().forEach(key->{ + GridOrVillageEventRateResultDTO dto = new GridOrVillageEventRateResultDTO(); + dto.setOrgId(key); + dto.setAgencyName(namesMap.get(key)); + dto.setRate(0.00); + dto.setTotal(0); + dtoList.add(dto); + }); + } + + } + } + return dtoList; + } + + @Override + public List getListByStatus(String orgId, String orgType, String sourceType, String status) { + return baseDao.getListByStatus(getOrgPath(orgId, orgType), sourceType, status); + } + + @Override + public List getListBySourceTypeOrEventType(String orgId, String orgType, String sourceType, String eventType) { + return baseDao.getListBySourceTypeOrEventType(getOrgPath(orgId, orgType), sourceType, eventType); + } + + /** + * @deprecationg 获取orgPath + */ private String getOrgPath(String orgId, String orgType) { if (OrgInfoConstant.AGENCY.equals(orgType)) { // 行政组织 AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(orgId); @@ -1953,4 +2071,27 @@ public class IcEventServiceImpl extends BaseServiceImpl getSubOrgs(String agencyId) { + List orgList = new ArrayList<>(); + Result> orgs = govOrgOpenFeignClient.subOrgList(agencyId); + if (!orgs.success() || CollectionUtils.isEmpty(orgs.getData())) { + return orgList; + } + for (SubOrgResDTO org : orgs.getData()) { + IcEventAnalysisOrgResDTO resultDto = ConvertUtils.sourceToTarget(org, IcEventAnalysisOrgResDTO.class); + if ("agency".equals(org.getOrgType())) { + resultDto.setOrgName(org.getOrgName()); + resultDto.setOrgType(org.getOrgType()); + resultDto.setOrgId(org.getOrgId()); + orgList.add(resultDto); + } + } + return orgList; + } + } diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/IcEventDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/IcEventDao.xml index 36e6d7c8e9..ab3f0b13df 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/IcEventDao.xml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/IcEventDao.xml @@ -106,6 +106,7 @@ + @@ -161,6 +162,7 @@ ie.mobile, ie.id_card, ie.source_type, + ie.event_type, ie.happen_time, ie.event_content, ie.latitude, @@ -440,54 +442,75 @@ ORDER BY re.created_time desc + + + + + select e.* from ic_event e where e.id = #{icEventId} + + e.ID AS eventId, + e.GRID_ID AS gridId, + e.SOURCE_TYPE AS sourceType, + e.EVENT_TYPE AS eventType, + e.LATITUDE, + e.LONGITUDE, + e.EVENT_CONTENT AS eventContent, + r.MANAGE_STATUS AS manageStatus, + c.CATEGORY_CODE AS categoryCode + + + + + + + diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/TagCustomerDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/TagCustomerDTO.java index 0e7f1a5e20..15e4d22232 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/TagCustomerDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/TagCustomerDTO.java @@ -17,10 +17,15 @@ package com.epmet.dto; +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; import java.io.Serializable; import java.util.Date; +import java.util.List; /** @@ -34,9 +39,12 @@ public class TagCustomerDTO implements Serializable { private static final long serialVersionUID = 1L; + public interface ChangeShowFlagGroup extends CustomerClientShowGroup { + } /** * 主键ID */ + @NotBlank(message = "id不能为空",groups = ChangeShowFlagGroup.class) private String id; /** @@ -48,40 +56,60 @@ public class TagCustomerDTO implements Serializable { * 标签名称 */ private String tagName; + /** + * 标签颜色 + */ + private String tagColor; /** * 使用计数 */ private Integer useCount; + /** + * 1:展示;0:隐藏;0302因烟台需求增加此列默认1 + */ + @NotNull(message = "showFlag不能为空",groups = ChangeShowFlagGroup.class) + private Integer showFlag; + /** * 删除标识 0.未删除 1.已删除 */ + @JsonIgnore private Integer delFlag; /** * 乐观锁 */ + @JsonIgnore private Integer revision; /** * 创建人 */ + @JsonIgnore private String createdBy; /** * 创建时间 */ + @JsonIgnore private Date createdTime; /** * 更新人 */ + @JsonIgnore private String updatedBy; /** * 更新时间 */ + @JsonIgnore private Date updatedTime; + /** + * 应用范围 + */ + private List agencyList; } diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/TagScopeDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/TagScopeDTO.java new file mode 100644 index 0000000000..bda0ab9c9b --- /dev/null +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/TagScopeDTO.java @@ -0,0 +1,43 @@ +package com.epmet.dto; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description + * @Author yzm + * @Date 2023/3/2 13:52 + */ +@Data +public class TagScopeDTO implements Serializable { + public interface AddUserShowGroup extends CustomerClientShowGroup { + } + /** + * 标签ID + */ + private String tagId; + + /** + * 应用范围,这里只能是社区id + */ + @NotBlank(message = "agencyId不能为空",groups = AddUserShowGroup.class) + private String agencyId; + /** + * agency_id全路径,包含自身 + */ + @NotBlank(message = "orgIdPath不能为空",groups = AddUserShowGroup.class) + private String orgIdPath; + + /** + * agencyId的直属上级 + */ + private String pid; + /** + * 社区名称 + */ + private String agencyName; +} + diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/CommonArticleListFormDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/CommonArticleListFormDTO.java index 6be60b5d1e..c7addb73e8 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/CommonArticleListFormDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/CommonArticleListFormDTO.java @@ -26,12 +26,12 @@ public class CommonArticleListFormDTO implements Serializable { * 烟台需求:周边疫情 就业服务 警民互动 物业通知 党务公开 居务公开 财务公开 以上标签在实时动态里写死吧 * */ - public interface YanTaiShowGroup extends CustomerClientShowGroup { + public interface YanTaiDingShowGroup extends CustomerClientShowGroup { } /** * 网格Id * */ - @NotBlank(message = "网格Id不能为空" , groups = {ArticleBannerInternalGroup.class,YanTaiShowGroup.class}) + @NotBlank(message = "网格Id不能为空" , groups = {ArticleBannerInternalGroup.class,YanTaiDingShowGroup.class}) private String gridId; /** @@ -42,7 +42,7 @@ public class CommonArticleListFormDTO implements Serializable { /** * 标签名称(高级配置里的参数) * */ - @NotBlank(message = "标签名称不能为空",groups = YanTaiShowGroup.class) + @NotBlank(message = "标签名称不能为空",groups = YanTaiDingShowGroup.class) private String tagName; /** * 排除的标签名称(高级配置里的参数) @@ -53,8 +53,10 @@ public class CommonArticleListFormDTO implements Serializable { */ private Integer isTop; - @NotNull(message = "pageNo不能为空", groups = YanTaiShowGroup.class) + @NotNull(message = "pageNo不能为空", groups = YanTaiDingShowGroup.class) private Integer pageNo; - @NotNull(message = "pageSize不能为空", groups = YanTaiShowGroup.class) + @NotNull(message = "pageSize不能为空", groups = YanTaiDingShowGroup.class) private Integer pageSize; + @NotBlank(message = "tagId不能为空",groups = YanTaiDingShowGroup.class) + private String tagId; } diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/TagCustomerFormDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/TagCustomerFormDTO.java new file mode 100644 index 0000000000..d27d57e3f4 --- /dev/null +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/TagCustomerFormDTO.java @@ -0,0 +1,56 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import com.epmet.dto.TagScopeDTO; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.List; + +/** + * @Description + * @Author yzm + * @Date 2023/3/2 12:47 + */ +@Data +public class TagCustomerFormDTO implements Serializable { + private static final long serialVersionUID = -5631868409077026783L; + + public interface AddUserInternalGroup { + } + + public interface AddUserShowGroup extends CustomerClientShowGroup { + } + + public interface UpdateUserInternalGroup { + } + + public interface UpdateUserShowGroup extends CustomerClientShowGroup { + } + + + /** + * 主键ID + */ + @NotBlank(message = "id不能为空", groups = {UpdateUserInternalGroup.class}) + private String id; + + /** + * 标签名称 + */ + @Length(max = 30, message = "标签名称最多输入30字", groups = {AddUserShowGroup.class, UpdateUserShowGroup.class}) + @NotBlank(message = "标签名称不能为空", groups = {AddUserShowGroup.class, UpdateUserShowGroup.class}) + private String tagName; + + /** + * 应用范围,只能选社区 + */ + private List agencyList; + /** + * 客户ID + */ + private String customerId; +} + diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/TagCustomerPageFormDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/TagCustomerPageFormDTO.java new file mode 100644 index 0000000000..04ee2370eb --- /dev/null +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/TagCustomerPageFormDTO.java @@ -0,0 +1,44 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @Description pc标签管理-分页查询入参 + * @Author yzm + * @Date 2023/3/2 11:34 + */ +@Data +public class TagCustomerPageFormDTO implements Serializable { + private static final long serialVersionUID = -2311491158902019019L; + + public interface PageUserInternalGroup { + } + + public interface PageUserShowGroup extends CustomerClientShowGroup { + } + + + /** + * 客户ID + */ + @NotBlank(message = "customerId不能为空", groups = PageUserInternalGroup.class) + private String customerId; + + /** + * 标签名称 + */ + private String tagName; + + + @NotNull(message = "页码不能为空", groups = PageUserInternalGroup.class) + private Integer pageNo; + + @NotNull(message = "每页数量不能为空", groups = PageUserInternalGroup.class) + private Integer pageSize; +} + diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java index a984a8a42a..77ef7f4361 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java @@ -338,11 +338,12 @@ public class ArticleController { */ @PostMapping("article-list-ytding") public Result> pageArticleListByTagName(@RequestBody CommonArticleListFormDTO formDTO) { - ValidatorUtils.validateEntity(formDTO, CommonArticleListFormDTO.YanTaiShowGroup.class); + ValidatorUtils.validateEntity(formDTO, CommonArticleListFormDTO.YanTaiDingShowGroup.class); return new Result>().ok(articleService.pageArticleListByTagName(formDTO.getPageNo(), formDTO.getPageSize(), formDTO.getGridId(), - formDTO.getTagName())); + formDTO.getTagName(), + formDTO.getTagId())); } diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/TagController.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/TagController.java index bd2603685b..42b845210c 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/TagController.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/TagController.java @@ -1,21 +1,21 @@ package com.epmet.controller; import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; -import com.epmet.dto.form.CorrelationTagListFormDTO; -import com.epmet.dto.form.InitTagFormDTO; -import com.epmet.dto.form.ResiTagListFormDTO; -import com.epmet.dto.form.TagCascadeListFormDTO; +import com.epmet.dto.TagCustomerDTO; +import com.epmet.dto.TagScopeDTO; +import com.epmet.dto.form.*; import com.epmet.dto.result.CorrelationTagListResultDTO; import com.epmet.dto.result.TagInfoResultDTO; +import com.epmet.service.TagCustomerService; import com.epmet.service.TagService; +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; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -25,11 +25,14 @@ public class TagController { @Autowired private TagService tagService; + @Autowired + private TagCustomerService tagCustomerService; /** * @Description 已发布列表页的标签——政府端 * @param tokenDto * @author zxc + * 补充:pc党建声音查询条件、新增弹框中的标签下拉框也调用的此接口 */ @PostMapping("taglist") // @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PARTY_VOICE_PUBLISHED_LIST) @@ -81,4 +84,96 @@ public class TagController { return new Result().ok(tagService.initTag(formDto)); } + /** + * pc标签管理-分页查询 + * @param formDTO + * @return + */ + @PostMapping("page-list") + public Result> pageList(@LoginUser TokenDto tokenDto,@RequestBody TagCustomerPageFormDTO formDTO){ + formDTO.setCustomerId(tokenDto.getCustomerId()); + ValidatorUtils.validateEntity(formDTO,TagCustomerPageFormDTO.PageUserInternalGroup.class,TagCustomerPageFormDTO.PageUserShowGroup.class); + return new Result>().ok(tagCustomerService.page(formDTO)); + } + + /** + * 新增标签 + * @param tokenDto + * @param formDTO + * @return + */ + @PostMapping("save") + public Result save(@LoginUser TokenDto tokenDto,@RequestBody TagCustomerFormDTO formDTO){ + formDTO.setCustomerId(tokenDto.getCustomerId()); + if(CollectionUtils.isNotEmpty(formDTO.getAgencyList())){ + ValidatorUtils.validateEntity(formDTO.getAgencyList(), TagScopeDTO.AddUserShowGroup.class); + } + ValidatorUtils.validateEntity(formDTO,TagCustomerFormDTO.AddUserShowGroup.class,TagCustomerFormDTO.AddUserInternalGroup.class); + tagCustomerService.save(formDTO); + return new Result(); + } + + /** + * 修改标签 + * @param tokenDto + * @param formDTO + * @return + */ + @PostMapping("update") + public Result update(@LoginUser TokenDto tokenDto,@RequestBody TagCustomerFormDTO formDTO){ + formDTO.setCustomerId(tokenDto.getCustomerId()); + if(CollectionUtils.isNotEmpty(formDTO.getAgencyList())){ + ValidatorUtils.validateEntity(formDTO.getAgencyList(), TagScopeDTO.AddUserShowGroup.class); + } + ValidatorUtils.validateEntity(formDTO,TagCustomerFormDTO.UpdateUserShowGroup.class,TagCustomerFormDTO.UpdateUserInternalGroup.class); + tagCustomerService.update(formDTO); + return new Result(); + } + + /** + * 隐藏、显示 + * @param tagCustomerDTO + * @return + */ + @PostMapping("change-show-flag") + public Result changeShowFlag(@RequestBody TagCustomerDTO tagCustomerDTO){ + tagCustomerService.changeShowFlag(tagCustomerDTO.getId(),tagCustomerDTO.getShowFlag()); + return new Result(); + } + + /** + * 初始化标签应用范围, + * 每个标签,和当前客户下所有社区关联 + * @param tokenDto + * @return + */ + @PostMapping("initTagScope") + public Result initTagScope(@LoginUser TokenDto tokenDto){ + tagCustomerService.initTagScope(tokenDto.getCustomerId()); + return new Result(); + } + + /** + * 钉钉实时动态,获取网格所属社区下, 的标签列表 只返回tagId,tagName + * @param gridId + * @return + */ + @PostMapping("getAgencyTag/{gridId}") + public Result> getAgencyTag(@PathVariable("gridId")String gridId){ + if(StringUtils.isBlank(gridId)){ + return new Result<>(); + } + return new Result>().ok(tagCustomerService.getAgencyTag(gridId)); + } + + /** + * 工作端获取登录用户所属组织下的标签列表 + * + * @param tokenDto + * @return + */ + @PostMapping("queryAgencyTag") + public Result> queryAgencyTag(@LoginUser TokenDto tokenDto) { + return new Result>().ok(tagCustomerService.queryAgencyTag(tokenDto.getCustomerId(),tokenDto.getUserId())); + } } diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticleDao.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticleDao.java index 53524c9bb7..c974947186 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticleDao.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticleDao.java @@ -178,5 +178,6 @@ public interface ArticleDao extends BaseDao { List pageArticleListByTagName(@Param("gridId")String gridId, @Param("tagName")String tagName, @Param("customerId")String customerId, - @Param("agencyId")String agencyId); + @Param("agencyId")String agencyId, + @Param("tagId")String tagId); } diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/TagCustomerDao.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/TagCustomerDao.java index 595f2a9a18..fcc0e268a7 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/TagCustomerDao.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/TagCustomerDao.java @@ -18,6 +18,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.TagCustomerDTO; import com.epmet.dto.form.InitTagsFormDTO; import com.epmet.dto.form.UpdateTagFormDTO; import com.epmet.entity.TagCustomerEntity; @@ -55,4 +56,18 @@ public interface TagCustomerDao extends BaseDao { * @return */ List selectInitData(@Param("customerIdList") List customerIdList); + + /** + * pc标签管理-分页查询 + * @param customerId + * @param tagName + * @return + */ + List pageList(@Param("customerId") String customerId, @Param("tagName")String tagName); + + /** + * 钉钉实时动态,获取网格所属社区下, 的标签列表 + * 只返回tagId,tagName + */ + List getAgencyTag(@Param("agencyId")String agencyId,@Param("customerId") String customerId); } diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/TagScopeDao.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/TagScopeDao.java new file mode 100644 index 0000000000..411801f4b5 --- /dev/null +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/TagScopeDao.java @@ -0,0 +1,23 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.TagScopeDTO; +import com.epmet.entity.TagScopeEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 标签应用范围表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-03-02 + */ +@Mapper +public interface TagScopeDao extends BaseDao { + + int deleteByTagId(@Param("tagId") String tagId, @Param("customerId") String customerId); + + List selectScope(String tagId); +} \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/TagCustomerEntity.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/TagCustomerEntity.java index 7a2a54d7ae..e86fbb2231 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/TagCustomerEntity.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/TagCustomerEntity.java @@ -55,4 +55,8 @@ public class TagCustomerEntity extends BaseEpmetEntity { */ private Integer useCount; + /** + * 1:展示;0:隐藏;0302因烟台需求增加此列默认1 + */ + private Integer showFlag; } diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/TagScopeEntity.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/TagScopeEntity.java new file mode 100644 index 0000000000..309d677c3b --- /dev/null +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/TagScopeEntity.java @@ -0,0 +1,48 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 标签应用范围表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-03-02 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("tag_scope") +public class TagScopeEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户ID(0302因烟台需求增加此表) + */ + private String customerId; + + /** + * 标签ID + */ + private String tagId; + + /** + * 应用范围,这里只能是社区id + */ + private String agencyId; + + /** + * agency_id全路径,包含自身 + */ + private String orgIdPath; + /** + * agencyId的直属上级 + */ + private String pid; + /** + * 社区名称 + */ + private String agencyName; +} diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java index d9374b1263..499ed51ab9 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java @@ -291,5 +291,6 @@ public interface ArticleService extends BaseService { PageData pageArticleListByTagName(Integer pageNo, Integer pageSize, String gridId, - String tagName); + String tagName, + String tagId); } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/TagCustomerService.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/TagCustomerService.java index 3ecb3c49c1..9bf4022967 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/TagCustomerService.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/TagCustomerService.java @@ -20,11 +20,13 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; import com.epmet.dto.TagCustomerDTO; +import com.epmet.dto.form.TagCustomerFormDTO; +import com.epmet.dto.form.TagCustomerPageFormDTO; +import com.epmet.dto.result.TagInfoResultDTO; import com.epmet.dto.result.UpdateTagUseCountsResultDTO; import com.epmet.entity.TagCustomerEntity; import java.util.List; -import java.util.Map; /** * 客户标签表 @@ -35,24 +37,14 @@ import java.util.Map; public interface TagCustomerService extends BaseService { /** - * 默认分页 + * pc标签管理-分页查询 * - * @param params + * @param formDTO * @return PageData * @author generator * @date 2020-06-02 */ - PageData page(Map params); - - /** - * 默认查询 - * - * @param params - * @return java.util.List - * @author generator - * @date 2020-06-02 - */ - List list(Map params); + PageData page(TagCustomerPageFormDTO formDTO); /** * 单条查询 @@ -65,24 +57,24 @@ public interface TagCustomerService extends BaseService { TagCustomerDTO get(String id); /** - * 默认保存 + * 新增标签 * * @param dto * @return void * @author generator * @date 2020-06-02 */ - void save(TagCustomerDTO dto); + void save(TagCustomerFormDTO dto); /** - * 默认更新 + * 修改标签 * * @param dto * @return void * @author generator * @date 2020-06-02 */ - void update(TagCustomerDTO dto); + void update(TagCustomerFormDTO dto); /** * 批量删除 @@ -100,4 +92,34 @@ public interface TagCustomerService extends BaseService { * @author zxc */ UpdateTagUseCountsResultDTO checkTagInfo(String tagName,String customerId,String userId); + + /** + * 隐藏、显示 + * @param id + * @param showFlag + */ + void changeShowFlag(String id, Integer showFlag); + + /** + * 初始化标签应用范围, + * 每个标签,和当前客户下所有社区关联 + * @param tokenDto + * @return + */ + void initTagScope(String customerId); + + /** + * 钉钉实时动态,获取网格所属社区下, 的标签列表 + * 只返回tagId,tagName + * @param gridId + * @return + */ + List getAgencyTag(String gridId); + + /** + * 工作端获取登录用户所属组织下的标签列表 + * @param staffId + * @return + */ + List queryAgencyTag(String customerId,String staffId); } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java index fbdb18f5ed..11745f8162 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java @@ -2110,13 +2110,14 @@ public class ArticleServiceImpl extends BaseServiceImpl pageArticleListByTagName(Integer pageNo, Integer pageSize, String gridId, String tagName) { + public PageData pageArticleListByTagName(Integer pageNo, Integer pageSize, String gridId, String tagName,String tagId) { PageHelper.startPage(pageNo, pageSize); List list = baseDao.pageArticleListByTagName( gridId, tagName, EpmetRequestHolder.getLoginUserCustomerId(), - null); + null, + tagId); PageInfo pageInfo = new PageInfo<>(list); return new PageData<>(list, pageInfo.getTotal()); } diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/TagCustomerServiceImpl.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/TagCustomerServiceImpl.java index b5c69d76c1..380ac1c679 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/TagCustomerServiceImpl.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/TagCustomerServiceImpl.java @@ -17,26 +17,50 @@ package com.epmet.service.impl; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; -import com.epmet.commons.tools.constant.FieldConstant; +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.page.PageData; +import com.epmet.commons.tools.redis.common.CustomerOrgRedis; +import com.epmet.commons.tools.redis.common.CustomerStaffRedis; +import com.epmet.commons.tools.redis.common.bean.GridInfoCache; import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.EpmetRequestHolder; +import com.epmet.commons.tools.utils.Result; import com.epmet.dao.TagCustomerDao; +import com.epmet.dao.TagScopeDao; import com.epmet.dto.TagCustomerDTO; +import com.epmet.dto.form.TagCustomerFormDTO; +import com.epmet.dto.form.TagCustomerPageFormDTO; import com.epmet.dto.form.UpdateTagFormDTO; +import com.epmet.dto.result.AgencyResultDTO; +import com.epmet.dto.result.TagInfoResultDTO; import com.epmet.dto.result.UpdateTagUseCountsResultDTO; import com.epmet.entity.TagCustomerEntity; +import com.epmet.entity.TagScopeEntity; +import com.epmet.feign.GovOrgOpenFeignClient; +import com.epmet.redis.TagRedis; import com.epmet.service.TagCustomerService; import com.epmet.utils.TagColorUtils; +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.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Date; import java.util.List; -import java.util.Map; /** * 客户标签表 @@ -44,32 +68,27 @@ import java.util.Map; * @author generator generator@elink-cn.com * @since v1.0.0 2020-06-02 */ +@Slf4j @Service public class TagCustomerServiceImpl extends BaseServiceImpl implements TagCustomerService { + @Autowired + private TagScopeDao tagScopeDao; + @Autowired + private GovOrgOpenFeignClient govOrgOpenFeignClient; + @Autowired + private TagRedis tagRedis; + /** + * pc标签管理-分页查询 + * @param formDTO + * @return + */ @Override - public PageData page(Map params) { - IPage page = baseDao.selectPage( - getPage(params, FieldConstant.CREATED_TIME, false), - getWrapper(params) - ); - return getPageData(page, TagCustomerDTO.class); - } - - @Override - public List list(Map params) { - List entityList = baseDao.selectList(getWrapper(params)); - - return ConvertUtils.sourceToTarget(entityList, TagCustomerDTO.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; + public PageData page(TagCustomerPageFormDTO formDTO) { + PageHelper.startPage(formDTO.getPageNo(),formDTO.getPageSize()); + List list=baseDao.pageList(formDTO.getCustomerId(),formDTO.getTagName()); + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal()); } @Override @@ -78,18 +97,73 @@ public class TagCustomerServiceImpl extends BaseServiceImpl queryWrapper=new LambdaQueryWrapper<>(); + queryWrapper.eq(TagCustomerEntity::getCustomerId,dto.getCustomerId()) + .eq(TagCustomerEntity::getTagName,dto.getTagName()); + if(baseDao.selectCount(queryWrapper)>0){ + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"标签名称已存在","标签名称已存在"); + } TagCustomerEntity entity = ConvertUtils.sourceToTarget(dto, TagCustomerEntity.class); + entity.setTagColor(StrConstant.EPMETY_STR); + entity.setUseCount(NumConstant.ZERO); + entity.setShowFlag(NumConstant.ONE); insert(entity); + if(CollectionUtils.isNotEmpty(dto.getAgencyList())){ + dto.getAgencyList().forEach(tagScopeDTO->{ + TagScopeEntity tagScopeEntity=new TagScopeEntity(); + tagScopeEntity.setCustomerId(entity.getCustomerId()); + tagScopeEntity.setTagId(entity.getId()); + tagScopeEntity.setAgencyId(tagScopeDTO.getAgencyId()); + tagScopeEntity.setOrgIdPath(tagScopeDTO.getOrgIdPath()); + tagScopeEntity.setAgencyName(tagScopeDTO.getAgencyName()); + tagScopeEntity.setPid(tagScopeDTO.getPid()); + tagScopeDao.insert(tagScopeEntity); + }); + } + //删除redis缓存 + tagRedis.clearCustomerTag(dto.getCustomerId()); } + /** + * pc标签管理-修改 + * @param dto + */ @Override @Transactional(rollbackFor = Exception.class) - public void update(TagCustomerDTO dto) { + public void update(TagCustomerFormDTO dto) { + // 标签名称是否存在 + LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper<>(); + queryWrapper.eq(TagCustomerEntity::getCustomerId,dto.getCustomerId()) + .eq(TagCustomerEntity::getTagName,dto.getTagName()) + .ne(TagCustomerEntity::getId,dto.getId()); + if(baseDao.selectCount(queryWrapper)>0){ + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"标签名称已存在","标签名称已存在"); + } TagCustomerEntity entity = ConvertUtils.sourceToTarget(dto, TagCustomerEntity.class); updateById(entity); + //删除应用范围 + tagScopeDao.deleteByTagId(entity.getId(),entity.getCustomerId()); + if(CollectionUtils.isNotEmpty(dto.getAgencyList())){ + dto.getAgencyList().forEach(tagScopeDTO->{ + TagScopeEntity tagScopeEntity=new TagScopeEntity(); + tagScopeEntity.setCustomerId(entity.getCustomerId()); + tagScopeEntity.setTagId(entity.getId()); + tagScopeEntity.setAgencyId(tagScopeDTO.getAgencyId()); + tagScopeEntity.setOrgIdPath(tagScopeDTO.getOrgIdPath()); + tagScopeEntity.setAgencyName(tagScopeDTO.getAgencyName()); + tagScopeEntity.setPid(tagScopeDTO.getPid()); + tagScopeDao.insert(tagScopeEntity); + }); + } + tagRedis.clearCustomerTag(dto.getCustomerId()); } @Override @@ -126,4 +200,102 @@ public class TagCustomerServiceImpl extends BaseServiceImpl tagCustomerUpdateWrapper = new LambdaUpdateWrapper<>(); + tagCustomerUpdateWrapper.eq(TagCustomerEntity::getId, id) + .set(TagCustomerEntity::getUpdatedBy, EpmetRequestHolder.getLoginUserId()) + .set(TagCustomerEntity::getUpdatedTime, new Date()) + .set(TagCustomerEntity::getShowFlag,showFlag); + baseDao.update(null,tagCustomerUpdateWrapper); + tagRedis.clearCustomerTag(EpmetRequestHolder.getLoginUserCustomerId()); + } + + /** + * 初始化标签应用范围, + * 每个标签,和当前客户下所有社区关联 + * + * @param customerId@return + */ + @Async + @Override + public void initTagScope(String customerId) { + if (StringUtils.isBlank(customerId)) { + return; + } + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + queryWrapper.eq(TagCustomerEntity::getCustomerId, customerId); + List tagList = baseDao.selectList(queryWrapper); + if (CollectionUtils.isEmpty(tagList)) { + return; + } + int tagTotal = tagList.size(); + // 获取当前客户下所有的社区组织 + Result> communityRes = govOrgOpenFeignClient.getAllCommunity(customerId); + if (communityRes.success() && CollectionUtils.isNotEmpty(communityRes.getData())) { + int communityTotal = communityRes.getData().size(); + int num = 0; + for (TagCustomerEntity tag : tagList) { + tagScopeDao.deleteByTagId(tag.getId(),tag.getCustomerId()); + for (AgencyResultDTO agencyResultDTO : communityRes.getData()) { + TagScopeEntity tagScopeEntity = new TagScopeEntity(); + tagScopeEntity.setCustomerId(tag.getCustomerId()); + tagScopeEntity.setTagId(tag.getId()); + tagScopeEntity.setAgencyId(agencyResultDTO.getAgencyId()); + tagScopeEntity.setOrgIdPath(agencyResultDTO.getOrgIdPath()); + tagScopeEntity.setAgencyName(agencyResultDTO.getAgencyName()); + tagScopeEntity.setPid(agencyResultDTO.getPid()); + tagScopeDao.insert(tagScopeEntity); + num++; + } + } + log.error(String.format("customerId:%s,已经将%s个标签应用给%s个社区,tag_scope产生%s条记录", customerId, tagTotal, communityTotal, num)); + } + + } + + + /** + * 钉钉实时动态,获取网格所属社区下, 的标签列表 + * 只返回tagId,tagName + * + * @param gridId + * @return + */ + @Override + public List getAgencyTag(String gridId) { + GridInfoCache gridInfoCache= CustomerOrgRedis.getGridInfo(gridId); + if(null==gridInfoCache){ + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"查询网格信息异常gridId:"+gridId,"查询网格信息异常"); + } + List list=baseDao.getAgencyTag(gridInfoCache.getPid(),gridInfoCache.getCustomerId()); + return list; + } + + /** + * 工作端获取登录用户所属组织下的标签列表 + * + * @param staffId + * @return + */ + @Override + public List queryAgencyTag(String customerId,String staffId) { + CustomerStaffInfoCacheResult staffInfoCacheResult= CustomerStaffRedis.getStaffInfo(customerId,staffId); + List list=baseDao.getAgencyTag(staffInfoCacheResult.getAgencyId(),customerId); + List resultDTOList=new ArrayList<>(); + list.forEach(tagCustomerDTO->{ + TagInfoResultDTO resultDTO=new TagInfoResultDTO(); + resultDTO.setTagId(tagCustomerDTO.getId()); + resultDTO.setTagColor(tagCustomerDTO.getTagColor()); + resultDTO.setTagName(tagCustomerDTO.getTagName()); + resultDTOList.add(resultDTO); + }); + return resultDTOList; + } } diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/TagServiceImpl.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/TagServiceImpl.java index cbfba74bb5..b85a637634 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/TagServiceImpl.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/TagServiceImpl.java @@ -57,6 +57,7 @@ public class TagServiceImpl implements TagService { * @Description 已发布列表页的标签——政府端 * @param tokenDto * @author zxc + * 补充:pc党建声音查询条件、新增弹框中的标签下拉框也调用的此接口 */ @Override @Transactional(rollbackFor = Exception.class) @@ -64,6 +65,7 @@ public class TagServiceImpl implements TagService { String customerId = tokenDto.getCustomerId(); List resultDtos = tagRedis.zRevRange(customerId); if (resultDtos.size() == NumConstant.ZERO){ + //初始化标签 resultDtos = this.initTags(customerId); } return resultDtos; diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml index b33d17a98a..29a1818ad6 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml +++ b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml @@ -564,6 +564,9 @@ AND art.org_id_path like concat('%',#{agencyId},'%') + + AND t.tag_id =#{tagId} + ORDER BY art.PUBLISH_DATE DESC, art.CREATED_TIME DESC diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/TagCustomerDao.xml b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/TagCustomerDao.xml index ea0aff95c3..1697ee494a 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/TagCustomerDao.xml +++ b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/TagCustomerDao.xml @@ -56,4 +56,41 @@ ORDER BY CUSTOMER_ID + + + + + + + + + + + + + + diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/TagScopeDao.xml b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/TagScopeDao.xml new file mode 100644 index 0000000000..a298dc5db0 --- /dev/null +++ b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/TagScopeDao.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + delete from tag_scope + where TAG_ID=#{tagId} + and CUSTOMER_ID=#{customerId} + + + + \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/TopicConstant.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/TopicConstant.java index 457e794443..1ba2bee6fe 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/TopicConstant.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/TopicConstant.java @@ -120,4 +120,16 @@ public interface TopicConstant { String RESOLVED = "resolved"; String MEMBER = "member"; + /** + * 反对 + */ + String OPPOSITION = "opposition"; + /** + * 赞成 + */ + String SUPPORT = "support"; + /** + * 无 + */ + String NONE = "none"; } diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/YtTopicAttachmentDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/YtTopicAttachmentDTO.java new file mode 100644 index 0000000000..dddb6d1c4c --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/YtTopicAttachmentDTO.java @@ -0,0 +1,95 @@ +package com.epmet.resi.group.dto.topic; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +/** + * 烟台话题附件表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-01-30 + */ +@Data +public class YtTopicAttachmentDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private String id; + + /** + * 客户ID + */ + private String customerId; + + /** + * 话题Id,关联resi_topic的id + */ + private String topicId; + + /** + * 附件名(uuid随机生成) + */ + private String attachmentName; + + /** + * 文件格式(JPG、PNG、PDF、JPEG、BMP、MP4、WMA、M4A、MP3、DOC、DOCX、XLS) + */ + private String attachmentFormat; + + /** + * 附件类型((图片 - image、 视频 - video、 语音 - voice、 文档 - doc)) + */ + private String attachmentType; + + /** + * 附件地址 + */ + private String attachmentUrl; + + /** + * 排序字段 + */ + private Integer sort; + + /** + * 语音或视频时长,秒 + */ + private Integer duration; + + /** + * 删除标记 0:未删除,1:已删除 + */ + private String delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/YtTopicCommentAttachmentDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/YtTopicCommentAttachmentDTO.java new file mode 100644 index 0000000000..ff5b669689 --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/YtTopicCommentAttachmentDTO.java @@ -0,0 +1,109 @@ +package com.epmet.resi.group.dto.topic; + +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + + +/** + * 烟台话题评论附件表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-01-30 + */ +@Data +public class YtTopicCommentAttachmentDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private String id; + + /** + * 客户ID + */ + private String customerId; + + /** + * 话题Id + */ + private String topicId; + + /** + * 评论Id + */ + private String topicCommentId; + + /** + * 文件名 + */ + private String fileName; + + /** + * 附件名(uuid随机生成) + */ + private String attachmentName; + + /** + * 文件大小,单位b + */ + private Integer attachmentSize; + + /** + * 文件格式(JPG、PNG、PDF、JPEG、BMP、MP4、WMA、M4A、MP3、DOC、DOCX、XLS) + */ + private String attachmentFormat; + + /** + * 附件类型((图片 - image、 视频 - video、 语音 - voice、 文档 - doc)) + */ + private String attachmentType; + + /** + * 附件地址 + */ + private String attachmentUrl; + + /** + * 排序字段 + */ + private Integer sort; + + /** + * 语音或视频时长,秒 + */ + private Integer duration; + + /** + * 删除标记 0:未删除,1:已删除 + */ + private String delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/YtTopicCommentDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/YtTopicCommentDTO.java new file mode 100644 index 0000000000..b397d26fef --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/YtTopicCommentDTO.java @@ -0,0 +1,74 @@ +package com.epmet.resi.group.dto.topic; + +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + + +/** + * 烟台话题评论表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-01-30 + */ +@Data +public class YtTopicCommentDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private String id; + + /** + * 客户ID + */ + private String customerId; + + /** + * 话题Id,来自resi_topic + */ + private String topicId; + + /** + * + */ + private String commentContent; + + /** + * 评论状态:讨论中:discussing;已屏蔽 :hidden + */ + private String status; + + /** + * 删除标记 0:未删除,1:已删除 + */ + private String delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人,评论人Id,来自user + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/YtTopicDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/YtTopicDTO.java new file mode 100644 index 0000000000..8e4fa3add3 --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/YtTopicDTO.java @@ -0,0 +1,125 @@ +package com.epmet.resi.group.dto.topic; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +/** + * 烟台话题信息表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-01-30 + */ +@Data +public class YtTopicDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private String id; + + /** + * 客户ID + */ + private String customerId; + + /** + * 网格ID + */ + private String gridId; + + /** + * + */ + private String topicContent; + + /** + * 话题状态(讨论中 - discussing、 已屏蔽 - hidden、 已关闭 - closed) + */ + private String status; + + /** + * 关闭状态:已解决 resolved,未解决 unresolved + */ + private String closedStatus; + + /** + * 省 + */ + private String province; + + /** + * 市 + */ + private String city; + + /** + * 区 + */ + private String area; + + /** + * 地址 + */ + private String address; + + /** + * 经度 + */ + private String longitude; + + /** + * 维度 + */ + private String latitude; + + /** + * 定位地址 + */ + private String locateAddress; + + /** + * 定位经度 + */ + private String locateLongitude; + + /** + * 定位维度 + */ + private String locateLatitude; + + /** + * 删除标记 0:未删除,1:已删除 + */ + private String delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人,发布人Id来源于user + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/YtTopicVoteDetailDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/YtTopicVoteDetailDTO.java new file mode 100644 index 0000000000..bf8d7c10b1 --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/YtTopicVoteDetailDTO.java @@ -0,0 +1,70 @@ +package com.epmet.resi.group.dto.topic; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +/** + * 话题表决记录表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-01-30 + */ +@Data +public class YtTopicVoteDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + private String id; + + /** + * 客户ID + */ + private String customerId; + + /** + * 话题ID + */ + private String topicId; + + /** + * 态度 - opposition(反对)support(赞成) + */ + private String attitude; + + /** + * 删除标识 0未删除、1已删除 + */ + private String delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/CreateYtTopicFormDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/CreateYtTopicFormDTO.java new file mode 100644 index 0000000000..de00da7503 --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/CreateYtTopicFormDTO.java @@ -0,0 +1,100 @@ +package com.epmet.resi.group.dto.topic.form; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.List; + +/** + * @Author zhaoqifeng + * @Date 2023/1/30 16:17 + */ +@Data +public class CreateYtTopicFormDTO implements Serializable { + private static final long serialVersionUID = 1L; + public interface AddUserInternalGroup { + } + + public interface AddUserShowGroup extends CustomerClientShowGroup { + } + + @NotBlank(message = "customerId不能为空",groups =AddUserInternalGroup.class ) + private String customerId; + + @NotBlank(message ="网格不能为空",groups =AddUserShowGroup.class ) + private String gridId; + + @Length(max=3000,message ="话题内容最多输入3000字",groups =AddUserShowGroup.class ) + private String topicContent; + + /** + * 经度 + * */ + private String longitude; + + /** + * 纬度 + * */ + private String latitude; + + /** + * 地址 + * */ + @NotBlank(message = "地址信息不能为空") + private String address; + + /** + * 经度 + * */ + private String locateLongitude; + + /** + * 纬度 + * */ + private String locateLatitude; + + /** + * 地址 + * */ + private String locateAddress; + + /** + * 省份 + * */ + private String province; + + /** + * 城市 + * */ + private String city; + + /** + * 地区 + * */ + private String area; + + /** + * 图片附件 + */ + private List imageList; + // /** + // * 文件附件 + // */ + // private List docList; + /** + * 语音附件 + */ + private List voiceList; + // /** + // * 视频附件 + // */ + // private List videoList; + /** + * tokenDto.getUserId + */ + @NotBlank(message = "userId不能为空",groups =AddUserInternalGroup.class ) + private String userId; +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/YtTopicCommentFormDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/YtTopicCommentFormDTO.java new file mode 100644 index 0000000000..e047e12eae --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/YtTopicCommentFormDTO.java @@ -0,0 +1,31 @@ +package com.epmet.resi.group.dto.topic.form; + +import com.epmet.resi.group.dto.notice.form.NoticeFileDTO; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.List; + +/** + * @Description + * @ClassName ResiPublishCommentFormDTO + * @Author wangc + * @date 2020.03.31 17:32 + */ +@Data +public class YtTopicCommentFormDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @NotBlank(message = "话题Id不能为空") + private String topicId; + + //@NotBlank(message = "评论内容不能为空") + private String commentContent; + + /** + * 图片附件集合 + */ + private List imageList; +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/YtTopicDetailFormDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/YtTopicDetailFormDTO.java new file mode 100644 index 0000000000..61b03690ba --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/YtTopicDetailFormDTO.java @@ -0,0 +1,36 @@ +package com.epmet.resi.group.dto.topic.form; + +import com.epmet.commons.tools.dto.form.PageFormDTO; +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description + * @ClassName ResiTopicDetailFormDTO + * @Author wangc + * @date 2020.04.07 09:07 + */ +@Data +public class YtTopicDetailFormDTO extends PageFormDTO implements Serializable { + + private static final long serialVersionUID = 1L; + public interface AddUserInternalGroup { + } + + public interface AddUserShowGroup extends CustomerClientShowGroup { + } + /** + * 话题Id + * */ + @NotBlank(message = "话题Id不能为空",groups = AddUserShowGroup.class) + private String topicId; + + /** + * tokenDto.getUserId + */ + @NotBlank(message = "userId不能为空",groups = AddUserInternalGroup.class ) + private String userId; +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/YtTopicPageFormDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/YtTopicPageFormDTO.java new file mode 100644 index 0000000000..b0649e5cc8 --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/YtTopicPageFormDTO.java @@ -0,0 +1,61 @@ +package com.epmet.resi.group.dto.topic.form; + +import com.epmet.commons.tools.dto.form.PageFormDTO; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @author Administrator + */ +@Data +public class YtTopicPageFormDTO extends PageFormDTO implements Serializable{ + + private static final long serialVersionUID = 1L; + /** + * 组织Id + * */ + private String agencyId; + + /** + * 网格Id,source是居民端时必填 + * */ + @NotBlank(message = "网格Id不能为空") + private String gridId; + + /** + * 搜索时可以带状态的查询,也可以不带 + * */ + private String status; + + /** + * 用户Id + * */ + private String userId; + + /** + * 请求来源0 居民端,1 PC端 + * */ + private String source; + + /** + * 话题内容 + * */ + private String topicContent; + + /** + * 话题发表人 + * */ + private String userName; + + /** + * 发布时间 + * */ + private String startDate; + + /** + * 发布时间 + * */ + private String endDate; +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/YtTopicVoteFormDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/YtTopicVoteFormDTO.java new file mode 100644 index 0000000000..153467c7a2 --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/YtTopicVoteFormDTO.java @@ -0,0 +1,28 @@ +package com.epmet.resi.group.dto.topic.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description + * @ClassName ResiPublishCommentFormDTO + * @Author wangc + * @date 2020.03.31 17:32 + */ +@Data +public class YtTopicVoteFormDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @NotBlank(message = "话题Id不能为空") + private String topicId; + + /** + * 态度opposition(反对)support(赞成) + */ + @NotBlank(message = "投票结果不能为空") + private String attitude; + +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/YtTopicCommentResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/YtTopicCommentResultDTO.java new file mode 100644 index 0000000000..cf18c2d385 --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/YtTopicCommentResultDTO.java @@ -0,0 +1,65 @@ +package com.epmet.resi.group.dto.topic.result; + +import com.alibaba.fastjson.annotation.JSONField; +import com.epmet.resi.group.dto.group.result.CommentFileDTO; +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 + * @ClassName ResiCommentResultDTO + * @Author wangc + * @date 2020.04.01 17:07 + */ +@Data +public class YtTopicCommentResultDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 评论Id + * */ + private String commentId; + + /** + * 评论内容 + * */ + private String commentContent; + + /** + * 评论者头像 + * */ + private String commentUserHeadPhoto; + + /** + * 评论者姓名 + * */ + private String commentUserName; + + /** + * 用户Id 评论者Id + * */ + @JsonIgnore + private String userId; + + /** + * 评论时间 yyyy-MM-dd HH:mm + * */ + @JSONField(format="yyyy-MM-dd HH:mm") + private Date commentTime; + + /** + * 评论状态 + * */ + private String commentStatus; + + /** + * 图片附件集合 + */ + private List imageList = new ArrayList<>(); +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/YtTopicDetailResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/YtTopicDetailResultDTO.java new file mode 100644 index 0000000000..d5e4675af0 --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/YtTopicDetailResultDTO.java @@ -0,0 +1,86 @@ +package com.epmet.resi.group.dto.topic.result; + +import com.epmet.resi.group.dto.topic.form.FileDTO; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author Administrator + */ +@Data +public class YtTopicDetailResultDTO implements Serializable { + private static final long serialVersionUID = -6790536784979922200L; + + /** + * 话题Id + * */ + private String topicId; + + + /** + * 发布人名称 + * */ + private String releaseUserName; + + /** + * 发布人头像 + * */ + private String releaseUserHeadPhoto; + + /** + * 发布时间 yyyy-MM-dd HH:mm + * */ + private String releaseTime; + + /** + * 发布地址 + * */ + private String releaseAddress; + + /** + * 经度 + */ + private String longitude; + + /** + * 维度 + */ + private String latitude; + + /** + * 话题内容 + * */ + private String topicContent; + + /** + * 话题状态 + * */ + private String topicStatus; + + /** + * 图片访问地址 + * */ + private List topicImages; + + /** + * 话题语音详情 + * */ + private List topicVoices; + + /** + * 本人投票状态opposition(反对)support(赞成) none(未投票) + * */ + private String voteStatus; + /** + * 投票支持数 + * */ + private String supportCount; + /** + * 投票反对数 + * */ + private String oppositionCount; + private String userName; + private String gridName; +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/YtTopicInfoResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/YtTopicInfoResultDTO.java new file mode 100644 index 0000000000..a1ede2ebc7 --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/YtTopicInfoResultDTO.java @@ -0,0 +1,75 @@ +package com.epmet.resi.group.dto.topic.result; + +import com.alibaba.fastjson.annotation.JSONField; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + + +/** + * @author Administrator + */ +@Data +public class YtTopicInfoResultDTO implements Serializable { + private static final long serialVersionUID = -7029232911456325417L; + + /** + * 话题Id + * */ + private String topicId; + + /** + * 用户Id 话题发布人 + * */ + private String userId; + + /** + * 发布人名称 + * */ + private String releaseUserName; + private String userName; + + /** + * 网格ID + */ + private String gridId; + + /** + * 网格名 + */ + private String gridName; + + /** + * 发布人头像 + * */ + private String releaseUserHeadPhoto; + + /** + * 发布时间 yyyy-MM-dd HH:mm + * */ + @JSONField(format="yyyy-MM-dd HH:mm") + private Date releaseTime; + + /** + * 话题内容 + * */ + private String topicContent; + + /** + * 话题状态 讨论中 已关闭 + * */ + private String status; + + /** + * 是否本人 me other + * */ + private String releaseUserFlag; + + /** + * 第一张图片 + * */ + private List imageList; + +} diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/YtTopicController.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/YtTopicController.java new file mode 100644 index 0000000000..d7ac74fd3b --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/YtTopicController.java @@ -0,0 +1,142 @@ +package com.epmet.modules.topic.controller; + +import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.annotation.MaskResponse; +import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.modules.topic.service.YtTopicService; +import com.epmet.resi.group.dto.comment.result.ResiCommentResultDTO; +import com.epmet.resi.group.dto.topic.form.*; +import com.epmet.resi.group.dto.topic.result.YtTopicCommentResultDTO; +import com.epmet.resi.group.dto.topic.result.YtTopicDetailResultDTO; +import com.epmet.resi.group.dto.topic.result.YtTopicInfoResultDTO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + + +/** + * 烟台话题信息表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-01-30 + */ +@RestController +@RequestMapping("ytTopic") +public class YtTopicController { + + @Autowired + private YtTopicService ytTopicService; + + /** + * 发布话题 + * + * @Param tokenDto + * @Param formDTO + * @Return {@link Result} + * @Author zhaoqifeng + * @Date 2023/1/30 16:32 + */ + @PostMapping("createTopic") + @NoRepeatSubmit + public Result createTopic(@LoginUser TokenDto tokenDto, @RequestBody CreateYtTopicFormDTO formDTO) { + formDTO.setUserId(tokenDto.getUserId()); + formDTO.setCustomerId(tokenDto.getCustomerId()); + ValidatorUtils.validateEntity(formDTO,CreateYtTopicFormDTO.AddUserShowGroup.class,CreateYtTopicFormDTO.AddUserInternalGroup.class); + ytTopicService.createTopic(formDTO); + return new Result(); + } + + /** + * 话题详情 + * + * @Param tokenDto + * @Param topicDetailFormDTO + * @Return {@link Result< YtTopicDetailResultDTO>} + * @Author zhaoqifeng + * @Date 2023/1/30 16:39 + */ + @PostMapping("topicDetail") + public Result getTopicDetail(@LoginUser TokenDto tokenDto, @RequestBody YtTopicDetailFormDTO topicDetailFormDTO) { + topicDetailFormDTO.setUserId(tokenDto.getUserId()); + ValidatorUtils.validateEntity(topicDetailFormDTO,YtTopicDetailFormDTO.AddUserShowGroup.class,YtTopicDetailFormDTO.AddUserInternalGroup.class); + return new Result().ok(ytTopicService.getTopicDetail(topicDetailFormDTO)); + } + + /** + * 话题列表 + * + * @Param tokenDto + * @Param topicPageFormDTO + * @Return {@link Result< PageData< YtTopicInfoResultDTO>>} + * @Author zhaoqifeng + * @Date 2023/1/30 16:55 + */ + @PostMapping("topicList") + @MaskResponse(fieldNames = "userName", fieldsMaskType = {MaskResponse.MASK_TYPE_CHINESE_NAME}) + public Result> getTopicList(@LoginUser TokenDto tokenDto, @RequestBody YtTopicPageFormDTO topicPageFormDTO) { + topicPageFormDTO.setUserId(tokenDto.getUserId()); + if (NumConstant.ZERO_STR.equals(topicPageFormDTO.getSource())) { + ValidatorUtils.validateEntity(topicPageFormDTO); + } + return new Result>().ok(ytTopicService.getTopicList(tokenDto, topicPageFormDTO)); + } + + /** + * 话题详情评论列表 + * + * @Param tokenDto + * @Param queryCommentFormDTO + * @Return {@link Result>} + * @Author zhaoqifeng + * @Date 2023/1/30 16:57 + */ + @PostMapping("topicCommentList") + public Result> getTopiCommentList(@LoginUser TokenDto tokenDto, @RequestBody YtTopicDetailFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO); + return new Result>().ok(ytTopicService.getTopicCommentList(tokenDto, formDTO)); + } + + /** + * 评论话题 + * + * @Param tokenDto + * @Param formDTO + * @Return {@link Result} + * @Author zhaoqifeng + * @Date 2023/1/30 17:06 + */ + @PostMapping("topicComment") + @NoRepeatSubmit + public Result topiComment(@LoginUser TokenDto tokenDto, @RequestBody YtTopicCommentFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO); + ytTopicService.topicComment(tokenDto, formDTO); + return new Result(); + } + + /** + * 话题投票 + * + * @Param tokenDto + * @Param formDTO + * @Return {@link Result} + * @Author zhaoqifeng + * @Date 2023/1/30 17:08 + */ + @PostMapping("topicVote") + @NoRepeatSubmit + public Result topicVote(@LoginUser TokenDto tokenDto, @RequestBody YtTopicVoteFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO); + ytTopicService.topicVote(tokenDto, formDTO); + return new Result(); + } + +} diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/YtTopicAttachmentDao.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/YtTopicAttachmentDao.java new file mode 100644 index 0000000000..332f1ce641 --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/YtTopicAttachmentDao.java @@ -0,0 +1,16 @@ +package com.epmet.modules.topic.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.modules.topic.entity.YtTopicAttachmentEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 烟台话题附件表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-01-30 + */ +@Mapper +public interface YtTopicAttachmentDao extends BaseDao { + +} \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/YtTopicCommentAttachmentDao.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/YtTopicCommentAttachmentDao.java new file mode 100644 index 0000000000..25ba6fe8a0 --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/YtTopicCommentAttachmentDao.java @@ -0,0 +1,16 @@ +package com.epmet.modules.topic.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.modules.topic.entity.YtTopicCommentAttachmentEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 烟台话题评论附件表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-01-30 + */ +@Mapper +public interface YtTopicCommentAttachmentDao extends BaseDao { + +} \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/YtTopicCommentDao.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/YtTopicCommentDao.java new file mode 100644 index 0000000000..2167e676cf --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/YtTopicCommentDao.java @@ -0,0 +1,29 @@ +package com.epmet.modules.topic.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.modules.topic.entity.YtTopicCommentEntity; +import com.epmet.resi.group.dto.topic.form.YtTopicDetailFormDTO; +import com.epmet.resi.group.dto.topic.result.YtTopicCommentResultDTO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 烟台话题评论表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-01-30 + */ +@Mapper +public interface YtTopicCommentDao extends BaseDao { + + /** + * 获取评论列表 + * + * @Param formDTO + * @Return {@link List} + * @Author zhaoqifeng + * @Date 2023/1/31 14:11 + */ + List selectCommentList(YtTopicDetailFormDTO formDTO); +} \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/YtTopicDao.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/YtTopicDao.java new file mode 100644 index 0000000000..42cf49bcd1 --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/YtTopicDao.java @@ -0,0 +1,28 @@ +package com.epmet.modules.topic.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.modules.topic.entity.YtTopicEntity; +import com.epmet.resi.group.dto.topic.form.YtTopicPageFormDTO; +import com.epmet.resi.group.dto.topic.result.YtTopicInfoResultDTO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 烟台话题信息表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-01-30 + */ +@Mapper +public interface YtTopicDao extends BaseDao { + /** + * 话题列表 + * + * @Param topicPageFormDTO + * @Return {@link List} + * @Author zhaoqifeng + * @Date 2023/1/31 13:52 + */ + List selectTopicList(YtTopicPageFormDTO topicPageFormDTO); +} \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/YtTopicVoteDetailDao.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/YtTopicVoteDetailDao.java new file mode 100644 index 0000000000..c947aef1fc --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/YtTopicVoteDetailDao.java @@ -0,0 +1,16 @@ +package com.epmet.modules.topic.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.modules.topic.entity.YtTopicVoteDetailEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 话题表决记录表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-01-30 + */ +@Mapper +public interface YtTopicVoteDetailDao extends BaseDao { + +} \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/entity/YtTopicAttachmentEntity.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/entity/YtTopicAttachmentEntity.java new file mode 100644 index 0000000000..b7da282f42 --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/entity/YtTopicAttachmentEntity.java @@ -0,0 +1,61 @@ +package com.epmet.modules.topic.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 2023-01-30 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("yt_topic_attachment") +public class YtTopicAttachmentEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户ID + */ + private String customerId; + + /** + * 话题Id,关联resi_topic的id + */ + private String topicId; + + /** + * 附件名(uuid随机生成) + */ + private String attachmentName; + + /** + * 文件格式(JPG、PNG、PDF、JPEG、BMP、MP4、WMA、M4A、MP3、DOC、DOCX、XLS) + */ + private String attachmentFormat; + + /** + * 附件类型((图片 - image、 视频 - video、 语音 - voice、 文档 - doc)) + */ + private String attachmentType; + + /** + * 附件地址 + */ + private String attachmentUrl; + + /** + * 排序字段 + */ + private Integer sort; + + /** + * 语音或视频时长,秒 + */ + private Integer duration; + +} diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/entity/YtTopicCommentAttachmentEntity.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/entity/YtTopicCommentAttachmentEntity.java new file mode 100644 index 0000000000..687b276579 --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/entity/YtTopicCommentAttachmentEntity.java @@ -0,0 +1,79 @@ +package com.epmet.modules.topic.entity; + +import com.baomidou.mybatisplus.annotation.TableName; + +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 烟台话题评论附件表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-01-30 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("yt_topic_comment_attachment") +public class YtTopicCommentAttachmentEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户ID + */ + private String customerId; + + /** + * 话题Id + */ + private String topicId; + + /** + * 评论Id + */ + private String topicCommentId; + + /** + * 文件名 + */ + private String fileName; + + /** + * 附件名(uuid随机生成) + */ + private String attachmentName; + + /** + * 文件大小,单位b + */ + private Integer attachmentSize; + + /** + * 文件格式(JPG、PNG、PDF、JPEG、BMP、MP4、WMA、M4A、MP3、DOC、DOCX、XLS) + */ + private String attachmentFormat; + + /** + * 附件类型((图片 - image、 视频 - video、 语音 - voice、 文档 - doc)) + */ + private String attachmentType; + + /** + * 附件地址 + */ + private String attachmentUrl; + + /** + * 排序字段 + */ + private Integer sort; + + /** + * 语音或视频时长,秒 + */ + private Integer duration; + +} diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/entity/YtTopicCommentEntity.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/entity/YtTopicCommentEntity.java new file mode 100644 index 0000000000..52a60634d2 --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/entity/YtTopicCommentEntity.java @@ -0,0 +1,41 @@ +package com.epmet.modules.topic.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 2023-01-30 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("yt_topic_comment") +public class YtTopicCommentEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户ID + */ + private String customerId; + + /** + * 话题Id,来自resi_topic + */ + private String topicId; + + /** + * + */ + private String commentContent; + + /** + * 评论状态:讨论中:discussing;已屏蔽 :hidden + */ + private String status; + +} diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/entity/YtTopicEntity.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/entity/YtTopicEntity.java new file mode 100644 index 0000000000..df7773368d --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/entity/YtTopicEntity.java @@ -0,0 +1,101 @@ +package com.epmet.modules.topic.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 2023-01-30 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("yt_topic") +public class YtTopicEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户ID + */ + private String customerId; + + /** + * 网格ID + */ + private String gridId; + + /** + * 网格所有上级组织ID + */ + private String pids; + + /** + * + */ + private String topicContent; + + /** + * 话题状态(讨论中 - discussing、 已屏蔽 - hidden、 已关闭 - closed) + */ + private String status; + + /** + * 关闭状态:已解决 resolved,未解决 unresolved + */ + private String closedStatus; + + /** + * 省 + */ + private String province; + + /** + * 市 + */ + private String city; + + /** + * 区 + */ + private String area; + + /** + * 地址 + */ + private String address; + + /** + * 经度 + */ + private String longitude; + + /** + * 维度 + */ + private String latitude; + + /** + * 定位地址 + */ + private String locateAddress; + + /** + * 定位经度 + */ + private String locateLongitude; + + /** + * 定位维度 + */ + private String locateLatitude; + + /** + * 话题发表人姓名 + */ + private String userName; + +} diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/entity/YtTopicVoteDetailEntity.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/entity/YtTopicVoteDetailEntity.java new file mode 100644 index 0000000000..837b34641a --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/entity/YtTopicVoteDetailEntity.java @@ -0,0 +1,36 @@ +package com.epmet.modules.topic.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 2023-01-30 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("yt_topic_vote_detail") +public class YtTopicVoteDetailEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户ID + */ + private String customerId; + + /** + * 话题ID + */ + private String topicId; + + /** + * 态度 - opposition(反对)support(赞成) + */ + private String attitude; + +} diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/YtTopicService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/YtTopicService.java new file mode 100644 index 0000000000..23741a8a09 --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/YtTopicService.java @@ -0,0 +1,85 @@ +package com.epmet.modules.topic.service; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.modules.topic.entity.YtTopicEntity; +import com.epmet.resi.group.dto.topic.form.*; +import com.epmet.resi.group.dto.topic.result.YtTopicCommentResultDTO; +import com.epmet.resi.group.dto.topic.result.YtTopicDetailResultDTO; +import com.epmet.resi.group.dto.topic.result.YtTopicInfoResultDTO; + +/** + * 烟台话题信息表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-01-30 + */ +public interface YtTopicService extends BaseService { + + /** + * 发布话题 + * + * @Param tokenDto + * @Param formDTO + * @Return + * @Author zhaoqifeng + * @Date 2023/1/30 16:18 + */ + void createTopic(CreateYtTopicFormDTO formDTO); + + /** + * 话题详情 + * + * @Param tokenDto + * @Param formDTO + * @Return {@link YtTopicDetailResultDTO} + * @Author zhaoqifeng + * @Date 2023/1/30 16:39 + */ + YtTopicDetailResultDTO getTopicDetail(YtTopicDetailFormDTO formDTO); + + /** + * 话题列表 + * + * @Param tokenDto + * @Param topicPageFormDTO + * @Return {@link PageData} + * @Author zhaoqifeng + * @Date 2023/1/30 16:56 + */ + PageData getTopicList(TokenDto tokenDto, YtTopicPageFormDTO topicPageFormDTO); + + /** + * 话题详情评论列表 + * + * @Param tokenDto + * @Param formDTO + * @Return {@link PageData} + * @Author zhaoqifeng + * @Date 2023/1/30 17:02 + */ + PageData getTopicCommentList(TokenDto tokenDto, YtTopicDetailFormDTO formDTO); + + /** + * 评论话题 + * + * @Param tokenDto + * @Param formDTO + * @Return + * @Author zhaoqifeng + * @Date 2023/1/30 17:05 + */ + void topicComment(TokenDto tokenDto, YtTopicCommentFormDTO formDTO); + + /** + * 话题投票 + * + * @Param tokenDto + * @Param formDTO + * @Return + * @Author zhaoqifeng + * @Date 2023/1/30 17:08 + */ + void topicVote(TokenDto tokenDto, YtTopicVoteFormDTO formDTO); +} \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/YtTopicServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/YtTopicServiceImpl.java new file mode 100644 index 0000000000..acbb9d0c62 --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/YtTopicServiceImpl.java @@ -0,0 +1,384 @@ +package com.epmet.modules.topic.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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.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.CustomerResiUserRedis; +import com.epmet.commons.tools.redis.common.CustomerStaffRedis; +import com.epmet.commons.tools.redis.common.bean.GridInfoCache; +import com.epmet.commons.tools.redis.common.bean.ResiUserInfoCache; +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.modules.topic.dao.*; +import com.epmet.modules.topic.entity.*; +import com.epmet.modules.topic.service.YtTopicService; +import com.epmet.modules.utils.ModuleConstant; +import com.epmet.resi.group.constant.TopicConstant; +import com.epmet.resi.group.dto.group.result.CommentFileDTO; +import com.epmet.resi.group.dto.topic.form.*; +import com.epmet.resi.group.dto.topic.result.YtTopicCommentResultDTO; +import com.epmet.resi.group.dto.topic.result.YtTopicDetailResultDTO; +import com.epmet.resi.group.dto.topic.result.YtTopicInfoResultDTO; +import com.github.pagehelper.PageInfo; +import com.github.pagehelper.page.PageMethod; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; + +/** + * 烟台话题信息表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-01-30 + */ +@Slf4j +@Service +public class YtTopicServiceImpl extends BaseServiceImpl implements YtTopicService { + + @Resource + private YtTopicAttachmentDao ytTopicAttachmentDao; + @Resource + private YtTopicCommentDao ytTopicCommentDao; + @Resource + private YtTopicCommentAttachmentDao ytTopicCommentAttachmentDao; + @Resource + private YtTopicVoteDetailDao ytTopicVoteDetailDao; + + /** + * 发布话题 + * + * @Param tokenDto + * @Param formDTO + * @Return + * @Author zhaoqifeng + * @Date 2023/1/30 16:18 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void createTopic(CreateYtTopicFormDTO formDTO) { + if(StringUtils.isBlank(formDTO.getTopicContent()) && CollectionUtils.isEmpty(formDTO.getVoiceList())) { + //话题内容和语音不能同时为空 + log.error(ModuleConstant.TOPIC_CONTENT_AND_VOICE_IS_NULL); + throw new EpmetException(ModuleConstant.TOPIC_CONTENT_AND_VOICE_IS_NULL); + } + //1.保存话题 + YtTopicEntity topic = ConvertUtils.sourceToTarget(formDTO, YtTopicEntity.class); + //如果只有语音,则话题内容为语音话题 + if (CollectionUtils.isNotEmpty(formDTO.getVoiceList()) && StringUtils.isBlank(formDTO.getTopicContent())) { + topic.setTopicContent("语音话题"); + } + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(formDTO.getGridId()); + if (null == gridInfo) { + String msg = "获取网格信息失败"; + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), msg, msg); + } + ResiUserInfoCache userInfo = CustomerResiUserRedis.getUserBaseInfo(formDTO.getUserId()); + if (null == userInfo) { + String msg = "获取用户信息失败"; + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), msg, msg); + } + topic.setCustomerId(formDTO.getCustomerId()); + topic.setStatus(TopicConstant.PUBLISHMENT); + topic.setPids(gridInfo.getPids()); + topic.setUserName(userInfo.getRealName()); + baseDao.insert(topic); + + //保存图片附件 + if(CollectionUtils.isNotEmpty(formDTO.getImageList())){ + int sort = 0; + for(String url : formDTO.getImageList()){ + YtTopicAttachmentEntity attachment = new YtTopicAttachmentEntity(); + attachment.setCustomerId(formDTO.getCustomerId()); + attachment.setAttachmentUrl(url); + attachment.setTopicId(topic.getId()); + attachment.setAttachmentFormat(url.substring(url.lastIndexOf(".") + NumConstant.ONE).toLowerCase()); + attachment.setSort(sort++); + attachment.setAttachmentType(TopicConstant.IMAGE); + ytTopicAttachmentDao.insert(attachment); + } + } + + //保存语音附件 + if(CollectionUtils.isNotEmpty(formDTO.getVoiceList())){ + int sort = 0; + for(FileDTO file : formDTO.getVoiceList()){ + YtTopicAttachmentEntity attachment = new YtTopicAttachmentEntity(); + attachment.setCustomerId(formDTO.getCustomerId()); + attachment.setAttachmentUrl(file.getUrl()); + attachment.setTopicId(topic.getId()); + attachment.setCreatedBy(formDTO.getUserId()); + attachment.setAttachmentFormat(file.getUrl().substring(file.getUrl().lastIndexOf(".") + NumConstant.ONE).toLowerCase()); + attachment.setSort(sort++); + attachment.setAttachmentType(TopicConstant.VOICE); + attachment.setDuration(file.getDuration()); + ytTopicAttachmentDao.insert(attachment); + } + } + + + + } + + /** + * 话题详情 + * + * @Param formDTO + * @Return {@link YtTopicDetailResultDTO} + * @Author zhaoqifeng + * @Date 2023/1/30 16:39 + */ + @Override + public YtTopicDetailResultDTO getTopicDetail(YtTopicDetailFormDTO formDTO) { + //1.查询话题信息 + YtTopicEntity entity = baseDao.selectById(formDTO.getTopicId()); + if(null == entity){ + log.error(ModuleConstant.NO_SUCH_TOPIC); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), ModuleConstant.NO_SUCH_TOPIC, ModuleConstant.NO_SUCH_TOPIC); + } + YtTopicDetailResultDTO result = ConvertUtils.sourceToTarget(entity, YtTopicDetailResultDTO.class); + result.setTopicId(formDTO.getTopicId()); + result.setTopicStatus(entity.getStatus()); + result.setReleaseTime(DateUtils.format(entity.getCreatedTime(), DateUtils.DATE_TIME_PATTERN_END_WITH_MINUTE)); + result.setReleaseAddress(entity.getAddress()); + + //2.查询话题图片附件 + LambdaQueryWrapper imgWrapper = new LambdaQueryWrapper<>(); + imgWrapper.eq(YtTopicAttachmentEntity::getTopicId, formDTO.getTopicId()); + imgWrapper.eq(YtTopicAttachmentEntity::getAttachmentType, TopicConstant.IMAGE); + imgWrapper.orderByAsc(YtTopicAttachmentEntity::getSort); + List imgList = ytTopicAttachmentDao.selectList(imgWrapper); + if (CollectionUtils.isNotEmpty(imgList)) { + List imageUrls = imgList.stream().map(YtTopicAttachmentEntity::getAttachmentUrl).collect(Collectors.toList()); + result.setTopicImages(imageUrls); + } + + //3.查询话题音频附件 + LambdaQueryWrapper voiceWrapper = new LambdaQueryWrapper<>(); + voiceWrapper.eq(YtTopicAttachmentEntity::getTopicId, formDTO.getTopicId()); + voiceWrapper.eq(YtTopicAttachmentEntity::getAttachmentType, TopicConstant.VOICE); + voiceWrapper.orderByAsc(YtTopicAttachmentEntity::getSort); + List voiceList = ytTopicAttachmentDao.selectList(voiceWrapper); + if (CollectionUtils.isNotEmpty(voiceList)) { + List voiceUrls = voiceList.stream().map(item ->{ + FileDTO fileDTO = new FileDTO(); + fileDTO.setUrl(item.getAttachmentUrl()); + fileDTO.setDuration(item.getDuration()); + return fileDTO; + }).collect(Collectors.toList()); + result.setTopicVoices(voiceUrls); + } + + + //4.获取发布人信息 + ResiUserInfoCache userInfo = CustomerResiUserRedis.getUserBaseInfo(entity.getCreatedBy()); + if (null == userInfo) { + String msg = "获取发布人信息失败"; + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), msg, msg); + } + result.setReleaseUserName(userInfo.getShowName()); + result.setReleaseUserHeadPhoto(userInfo.getHeadImgUrl()); + //5.获取投票信息 + result.setOppositionCount(NumConstant.ZERO_STR); + result.setSupportCount(NumConstant.ZERO_STR); + LambdaQueryWrapper voteWrapper = new LambdaQueryWrapper<>(); + voteWrapper.eq(YtTopicVoteDetailEntity::getTopicId, formDTO.getTopicId()); + List voteList = ytTopicVoteDetailDao.selectList(voteWrapper); + if (CollectionUtils.isNotEmpty(voteList)) { + Map voteMap = voteList.stream().collect(Collectors.groupingBy(YtTopicVoteDetailEntity::getAttitude, Collectors.counting())); + if (voteMap.containsKey(TopicConstant.OPPOSITION)) { + result.setOppositionCount(String.valueOf(voteMap.get(TopicConstant.OPPOSITION))); + } + if (voteMap.containsKey(TopicConstant.SUPPORT)) { + result.setSupportCount(String.valueOf(voteMap.get(TopicConstant.SUPPORT))); + } + } + voteWrapper.eq(YtTopicVoteDetailEntity::getCreatedBy, formDTO.getUserId()); + voteList = ytTopicVoteDetailDao.selectList(voteWrapper); + if (CollectionUtils.isNotEmpty(voteList)) { + result.setVoteStatus(voteList.get(NumConstant.ZERO).getAttitude()); + } else { + result.setVoteStatus(TopicConstant.NONE); + } + + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(entity.getGridId()); + if (null != gridInfo) { + result.setGridName(gridInfo.getGridNamePath()); + } + + return result; + } + + /** + * 话题列表 + * + * @Param tokenDto + * @Param topicPageFormDTO + * @Return {@link PageData} + * @Author zhaoqifeng + * @Date 2023/1/30 16:56 + */ + @Override + public PageData getTopicList(TokenDto tokenDto, YtTopicPageFormDTO topicPageFormDTO) { + if (NumConstant.ONE_STR.equals(topicPageFormDTO.getSource())) { + if (StringUtils.isBlank(topicPageFormDTO.getGridId())) { + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId()); + if (null == staffInfo) { + String msg = "获取工作人员信息失败"; + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), msg, msg); + } + topicPageFormDTO.setAgencyId(staffInfo.getAgencyId()); + } + } + PageMethod.startPage(topicPageFormDTO.getPageNo(), topicPageFormDTO.getPageSize()); + List list = baseDao.selectTopicList(topicPageFormDTO); + PageInfo pageInfo = new PageInfo<>(list); + if (CollectionUtils.isNotEmpty(list)) { + list.forEach(item -> { + ResiUserInfoCache userInfo = CustomerResiUserRedis.getUserBaseInfo(item.getUserId()); + if (null != userInfo) { + item.setReleaseUserName(userInfo.getShowName()); + item.setReleaseUserHeadPhoto(userInfo.getHeadImgUrl()); + } + if (tokenDto.getUserId().equals(item.getUserId())) { + item.setReleaseUserFlag("me"); + } else { + item.setReleaseUserFlag("other"); + } + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(item.getGridId()); + if (null != gridInfo) { + item.setGridName(gridInfo.getGridNamePath()); + } + //获取附件图片 + LambdaQueryWrapper imgWrapper = new LambdaQueryWrapper<>(); + imgWrapper.eq(YtTopicAttachmentEntity::getTopicId, item.getTopicId()); + imgWrapper.eq(YtTopicAttachmentEntity::getAttachmentType, TopicConstant.IMAGE); + imgWrapper.orderByAsc(YtTopicAttachmentEntity::getSort); + imgWrapper.last("limit 3"); + List imgList = ytTopicAttachmentDao.selectList(imgWrapper); + if (CollectionUtils.isNotEmpty(imgList)) { + List imageUrls = imgList.stream().map(YtTopicAttachmentEntity::getAttachmentUrl).collect(Collectors.toList()); + item.setImageList(imageUrls); + } + }); + } + return new PageData<>(list, pageInfo.getTotal()); + } + + /** + * 话题详情评论列表 + * + * @Param tokenDto + * @Param formDTO + * @Return {@link PageData} + * @Author zhaoqifeng + * @Date 2023/1/30 17:02 + */ + @Override + public PageData getTopicCommentList(TokenDto tokenDto, YtTopicDetailFormDTO formDTO) { + PageMethod.startPage(formDTO.getPageNo(), formDTO.getPageSize()); + List list = ytTopicCommentDao.selectCommentList(formDTO); + PageInfo pageInfo = new PageInfo<>(list); + if (CollectionUtils.isNotEmpty(list)) { + //获取评论附件信息 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(YtTopicCommentAttachmentEntity::getTopicId, formDTO.getTopicId()); + List attachmentList = ytTopicCommentAttachmentDao.selectList(wrapper); + Map> map = new HashMap<>(); + if (CollectionUtils.isNotEmpty(attachmentList)) { + map = attachmentList.stream().sorted(Comparator.comparingInt(YtTopicCommentAttachmentEntity::getSort)) + .collect(Collectors.groupingBy(YtTopicCommentAttachmentEntity::getTopicCommentId, LinkedHashMap::new, Collectors.toList())); + } + Map> finalMap = map; + list.forEach(item -> { + ResiUserInfoCache userInfo = CustomerResiUserRedis.getUserBaseInfo(item.getUserId()); + if (null != userInfo) { + item.setCommentUserName(userInfo.getShowName()); + item.setCommentUserHeadPhoto(userInfo.getHeadImgUrl()); + } + if (finalMap.containsKey(item.getCommentId())) { + List fileList = finalMap.get(item.getCommentId()).stream().map(i -> { + CommentFileDTO file = new CommentFileDTO(); + file.setName(i.getAttachmentName()); + file.setUrl(i.getAttachmentUrl()); + file.setDuration(i.getDuration()); + file.setSize(i.getAttachmentSize()); + file.setFormat(i.getAttachmentFormat()); + file.setType(i.getAttachmentType()); + return file; + }).collect(Collectors.toList()); + item.setImageList(fileList); + } + }); + } + return new PageData<>(list, pageInfo.getTotal()); + } + + /** + * 评论话题 + * + * @Param tokenDto + * @Param formDTO + * @Return + * @Author zhaoqifeng + * @Date 2023/1/30 17:05 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void topicComment(TokenDto tokenDto, YtTopicCommentFormDTO formDTO) { + YtTopicCommentEntity comment = ConvertUtils.sourceToTarget(formDTO, YtTopicCommentEntity.class); + comment.setStatus(TopicConstant.PUBLISHMENT); + comment.setCustomerId(tokenDto.getCustomerId()); + ytTopicCommentDao.insert(comment); + //保存评论附件 + //图片 + if (CollectionUtils.isNotEmpty(formDTO.getImageList())) { + AtomicInteger sort = new AtomicInteger(); + formDTO.getImageList().forEach(img -> { + YtTopicCommentAttachmentEntity attachment = new YtTopicCommentAttachmentEntity(); + attachment.setCustomerId(tokenDto.getCustomerId()); + attachment.setTopicId(formDTO.getTopicId()); + attachment.setTopicCommentId(comment.getId()); + attachment.setFileName(img.getName()); + attachment.setAttachmentName(""); + attachment.setAttachmentSize(img.getSize()); + attachment.setAttachmentFormat(img.getFormat()); + attachment.setAttachmentType(img.getType()); + attachment.setAttachmentUrl(img.getUrl()); + attachment.setSort(sort.get()); + attachment.setDuration(img.getDuration()); + sort.getAndIncrement(); + ytTopicCommentAttachmentDao.insert(attachment); + }); + } + } + + /** + * 话题投票 + * + * @Param tokenDto + * @Param formDTO + * @Return + * @Author zhaoqifeng + * @Date 2023/1/30 17:08 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void topicVote(TokenDto tokenDto, YtTopicVoteFormDTO formDTO) { + YtTopicVoteDetailEntity entity = ConvertUtils.sourceToTarget(formDTO, YtTopicVoteDetailEntity.class); + entity.setCustomerId(tokenDto.getCustomerId()); + ytTopicVoteDetailDao.insert(entity); + } +} \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/db/migration/V0.0.28__yt_topic.sql b/epmet-module/resi-group/resi-group-server/src/main/resources/db/migration/V0.0.28__yt_topic.sql new file mode 100644 index 0000000000..d73eeef70f --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/db/migration/V0.0.28__yt_topic.sql @@ -0,0 +1,94 @@ +CREATE TABLE `yt_topic` ( + `ID` varchar(64) NOT NULL COMMENT '主键', + `CUSTOMER_ID` varchar(64) DEFAULT NULL COMMENT '客户ID', + `GRID_ID` varchar(64) DEFAULT NULL COMMENT '网格ID', + `PIDS` varchar(255) DEFAULT NULL COMMENT '网格所有上级组织ID', + `TOPIC_CONTENT` text COMMENT '话题内容', + `STATUS` varchar(32) NOT NULL COMMENT '话题状态(讨论中 - discussing、 已屏蔽 - hidden、 已关闭 - closed)', + `CLOSED_STATUS` varchar(32) DEFAULT NULL COMMENT '关闭状态:已解决 resolved,未解决 unresolved', + `PROVINCE` varchar(32) DEFAULT NULL COMMENT '省', + `CITY` varchar(32) DEFAULT NULL COMMENT '市', + `AREA` varchar(32) DEFAULT NULL COMMENT '区 ', + `ADDRESS` varchar(255) NOT NULL COMMENT '地址', + `LONGITUDE` varchar(32) DEFAULT NULL COMMENT '经度', + `LATITUDE` varchar(32) DEFAULT NULL COMMENT '维度', + `LOCATE_ADDRESS` varchar(255) DEFAULT NULL COMMENT '定位地址', + `LOCATE_LONGITUDE` varchar(32) DEFAULT NULL COMMENT '定位经度', + `LOCATE_LATITUDE` varchar(32) DEFAULT NULL COMMENT '定位维度', + `USER_NAME` varchar(20) DEFAULT NULL COMMENT '话题发表人姓名', + `DEL_FLAG` varchar(1) NOT NULL COMMENT '删除标记 0:未删除,1:已删除', + `REVISION` int(11) NOT NULL COMMENT '乐观锁', + `CREATED_BY` varchar(32) NOT NULL COMMENT '创建人,发布人Id来源于user', + `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', + `UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人', + `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='烟台话题信息表'; +CREATE TABLE `yt_topic_attachment` ( + `ID` varchar(64) NOT NULL COMMENT '主键', + `CUSTOMER_ID` varchar(64) DEFAULT NULL COMMENT '客户ID', + `TOPIC_ID` varchar(64) NOT NULL COMMENT '话题Id,关联resi_topic的id', + `ATTACHMENT_NAME` varchar(64) DEFAULT NULL COMMENT '附件名(uuid随机生成)', + `ATTACHMENT_FORMAT` varchar(64) DEFAULT NULL COMMENT '文件格式(JPG、PNG、PDF、JPEG、BMP、MP4、WMA、M4A、MP3、DOC、DOCX、XLS)', + `ATTACHMENT_TYPE` varchar(64) DEFAULT NULL COMMENT '附件类型((图片 - image、 视频 - video、 语音 - voice、 文档 - doc))', + `ATTACHMENT_URL` varchar(255) NOT NULL COMMENT '附件地址', + `SORT` int(1) NOT NULL COMMENT '排序字段', + `DURATION` int(11) unsigned zerofill DEFAULT '00000000000' COMMENT '语音或视频时长,秒', + `DEL_FLAG` varchar(1) NOT NULL COMMENT '删除标记 0:未删除,1:已删除', + `REVISION` int(11) DEFAULT NULL COMMENT '乐观锁', + `CREATED_BY` varchar(32) NOT NULL COMMENT '创建人', + `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', + `UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人', + `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) USING BTREE, + KEY `idx_topic_id` (`TOPIC_ID`) USING BTREE COMMENT '话题主键' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='烟台话题附件表'; +CREATE TABLE `yt_topic_comment` ( + `ID` varchar(64) NOT NULL COMMENT '主键', + `CUSTOMER_ID` varchar(64) DEFAULT NULL COMMENT '客户ID', + `TOPIC_ID` varchar(64) NOT NULL COMMENT '话题Id,来自resi_topic', + `COMMENT_CONTENT` varchar(300) DEFAULT NULL, + `STATUS` varchar(32) DEFAULT NULL COMMENT '评论状态:讨论中:discussing;已屏蔽 :hidden', + `DEL_FLAG` varchar(1) NOT NULL COMMENT '删除标记 0:未删除,1:已删除', + `REVISION` int(11) DEFAULT NULL COMMENT '乐观锁', + `CREATED_BY` varchar(32) NOT NULL COMMENT '创建人,评论人Id,来自user', + `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', + `UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人', + `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='烟台话题评论表'; +CREATE TABLE `yt_topic_comment_attachment` ( + `ID` varchar(64) NOT NULL COMMENT '主键', + `CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户ID', + `TOPIC_ID` varchar(64) NOT NULL COMMENT '话题Id', + `TOPIC_COMMENT_ID` varchar(64) NOT NULL COMMENT '评论Id', + `FILE_NAME` varchar(255) DEFAULT NULL COMMENT '文件名', + `ATTACHMENT_NAME` varchar(64) DEFAULT NULL COMMENT '附件名(uuid随机生成)', + `ATTACHMENT_SIZE` int(11) DEFAULT NULL COMMENT '文件大小,单位b', + `ATTACHMENT_FORMAT` varchar(64) DEFAULT NULL COMMENT '文件格式(JPG、PNG、PDF、JPEG、BMP、MP4、WMA、M4A、MP3、DOC、DOCX、XLS)', + `ATTACHMENT_TYPE` varchar(64) DEFAULT NULL COMMENT '附件类型((图片 - image、 视频 - video、 语音 - voice、 文档 - doc))', + `ATTACHMENT_URL` varchar(255) NOT NULL COMMENT '附件地址', + `SORT` int(1) NOT NULL COMMENT '排序字段', + `DURATION` int(11) unsigned zerofill DEFAULT '00000000000' COMMENT '语音或视频时长,秒', + `DEL_FLAG` varchar(1) NOT NULL COMMENT '删除标记 0:未删除,1:已删除', + `REVISION` int(11) NOT NULL COMMENT '乐观锁', + `CREATED_BY` varchar(32) NOT NULL COMMENT '创建人', + `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', + `UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人', + `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='烟台话题评论附件表'; +CREATE TABLE `yt_topic_vote_detail` ( + `ID` varchar(32) NOT NULL COMMENT '主键ID', + `CUSTOMER_ID` varchar(64) DEFAULT NULL COMMENT '客户ID', + `TOPIC_ID` varchar(32) NOT NULL COMMENT '话题ID', + `ATTITUDE` varchar(32) NOT NULL COMMENT '态度 - opposition(反对)support(赞成)', + `DEL_FLAG` varchar(1) NOT NULL DEFAULT '0' COMMENT '删除标识 0未删除、1已删除', + `REVISION` int(11) NOT NULL DEFAULT '0' COMMENT '乐观锁', + `CREATED_BY` varchar(32) NOT NULL COMMENT '创建人', + `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', + `UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人', + `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`), + KEY `idx_topic_id` (`TOPIC_ID`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='话题表决记录表'; \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/YtTopicAttachmentDao.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/YtTopicAttachmentDao.xml new file mode 100644 index 0000000000..1ce30b7819 --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/YtTopicAttachmentDao.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/YtTopicCommentAttachmentDao.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/YtTopicCommentAttachmentDao.xml new file mode 100644 index 0000000000..7046356677 --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/YtTopicCommentAttachmentDao.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/YtTopicCommentDao.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/YtTopicCommentDao.xml new file mode 100644 index 0000000000..8751ea8bb9 --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/YtTopicCommentDao.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/YtTopicDao.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/YtTopicDao.xml new file mode 100644 index 0000000000..1d922ef955 --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/YtTopicDao.xml @@ -0,0 +1,36 @@ + + + + + + \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/YtTopicVoteDetailDao.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/YtTopicVoteDetailDao.xml new file mode 100644 index 0000000000..81277dd963 --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/YtTopicVoteDetailDao.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/result/InitInfoResultDTO.java b/epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/result/InitInfoResultDTO.java index 36b860a3e9..c55c4d41fb 100644 --- a/epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/result/InitInfoResultDTO.java +++ b/epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/result/InitInfoResultDTO.java @@ -53,4 +53,15 @@ public class InitInfoResultDTO implements Serializable { * 手机号 */ private String mobile; + + /** + * 2023.04.18烟台需求增加 + * 用于完善信息界面展示 + */ + private String gridId; + /** + * 2023.04.18烟台需求增加 + * 用于完善信息界面展示 + */ + private String gridName; } diff --git a/epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/result/OperListResultDTO.java b/epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/result/OperListResultDTO.java index d202918818..178c11390b 100644 --- a/epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/result/OperListResultDTO.java +++ b/epmet-module/resi-mine/resi-mine-client/src/main/java/com/epmet/resi/mine/dto/result/OperListResultDTO.java @@ -48,4 +48,9 @@ public class OperListResultDTO implements Serializable { */ private String badgeType; + /** + * 认证(审核)状态 待审核:auditing;审核通过: approved;驳回:rejected; + */ + // @JsonIgnore + private String auditStatus; } diff --git a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/mine/service/impl/PersonalCenterServiceImpl.java b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/mine/service/impl/PersonalCenterServiceImpl.java index 5c4788f7b7..29f2eecffe 100644 --- a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/mine/service/impl/PersonalCenterServiceImpl.java +++ b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/mine/service/impl/PersonalCenterServiceImpl.java @@ -1,6 +1,8 @@ package com.epmet.modules.mine.service.impl; import com.epmet.commons.tools.exception.RenException; +import com.epmet.commons.tools.redis.common.CustomerOrgRedis; +import com.epmet.commons.tools.redis.common.bean.GridInfoCache; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.form.EditInfoFormDTO; @@ -11,6 +13,7 @@ import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.modules.mine.service.PersonalCenterService; import com.epmet.resi.mine.dto.result.InitInfoResultDTO; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -46,6 +49,16 @@ public class PersonalCenterServiceImpl implements PersonalCenterService { resultDTO.setIdNum(baseInfoResult.getData().getIdNum()); resultDTO.setMobile(baseInfoResult.getData().getMobile()); resultDTO.setRealName(baseInfoResult.getData().getRealName()); + // start + // 2023.04.18烟台需求增加 + // 用于完善信息界面展示 + resultDTO.setGridId(baseInfoResult.getData().getGridId()); + if (StringUtils.isNotBlank(resultDTO.getGridId())) { + GridInfoCache gridInfoCache = CustomerOrgRedis.getGridInfo(resultDTO.getGridId()); + if (null != gridInfoCache) { + resultDTO.setGridName(gridInfoCache.getGridNamePath()); + } + }// end return resultDTO; } diff --git a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/result/PartymemberPortraitResultDTO.java b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/result/PartymemberPortraitResultDTO.java new file mode 100644 index 0000000000..9989ef8f5e --- /dev/null +++ b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/result/PartymemberPortraitResultDTO.java @@ -0,0 +1,41 @@ +package com.epmet.resi.partymember.dto.partymember.result; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; + +/** + * @Description 烟台管理平台党员画像 + * @Author yzm + * @Date 2023/4/20 13:32 + */ +@Data +public class PartymemberPortraitResultDTO { + @ExcelIgnore + private String userId; + + @ColumnWidth(15) + @ExcelProperty(value = "姓名",order = 1) + private String name; + + @ColumnWidth(20) + @ExcelProperty(value = "手机号",order = 2) + private String mobile; + + @ColumnWidth(20) + @ExcelProperty(value = "证件号",order = 3) + private String idCard; + + @ColumnWidth(15) + @ExcelProperty(value = "年龄",order = 4) + private String age; + + @ColumnWidth(15) + @ExcelProperty(value = "学历",order = 5) + private String education; + + @ExcelIgnore + private String icResiUser; +} + diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/service/IcPartyOrgService.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/service/IcPartyOrgService.java index aa13fbfec8..5764d703d3 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/service/IcPartyOrgService.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/service/IcPartyOrgService.java @@ -158,4 +158,12 @@ public interface IcPartyOrgService extends BaseService { */ void editPrincipal(EditPrincipalFormDTO formDTO); + /** + * 获取工作人员所属组织下的党组织 + * @param customerId + * @param staffId + * @return + */ + IcPartyOrgEntity getIcPartyOrg(String customerId,String staffId); + } diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/service/impl/IcPartyOrgServiceImpl.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/service/impl/IcPartyOrgServiceImpl.java index 0b18281ce5..b13a9b573a 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/service/impl/IcPartyOrgServiceImpl.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/service/impl/IcPartyOrgServiceImpl.java @@ -503,4 +503,28 @@ public class IcPartyOrgServiceImpl extends BaseServiceImpl orgWrapper = new LambdaQueryWrapper<>(); + orgWrapper.eq(IcPartyOrgEntity::getCustomerId, customerId); + orgWrapper.eq(IcPartyOrgEntity::getAgencyId, staffInfo.getAgencyId()); + orgWrapper.ne(IcPartyOrgEntity::getPartyOrgType, NumConstant.FIVE_STR); + IcPartyOrgEntity icPartyOrgEntity = baseDao.selectOne(orgWrapper); + if (null == icPartyOrgEntity) { + log.warn("当前工作人员所属组织下,暂无党组织,当前"); + } + return icPartyOrgEntity; + } } diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartyMemberController.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartyMemberController.java index 7628cfbb82..0330f3b9d3 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartyMemberController.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartyMemberController.java @@ -4,21 +4,18 @@ 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.tools.annotation.LoginUser; import com.epmet.commons.tools.annotation.MaskResponse; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.constant.AppClientConstant; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.ServiceConstant; -import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.dto.result.OptionDataResultDTO; 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.feign.ResultDataResolver; import com.epmet.commons.tools.page.PageData; -import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.*; import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; @@ -33,14 +30,15 @@ import com.epmet.dto.form.IcPartyMemberListFormDTO; import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.dto.result.PartyMemberAgeResultDTO; import com.epmet.dto.result.PartyMemberEducationResultDTO; -import com.epmet.modules.partyOrg.dao.IcPartyOrgDao; import com.epmet.modules.partyOrg.entity.IcPartyOrgEntity; +import com.epmet.modules.partyOrg.service.IcPartyOrgService; import com.epmet.modules.partymember.excel.IcPartyMemberExcel; import com.epmet.modules.partymember.service.IcPartyMemberService; import com.epmet.resi.partymember.dto.partymember.IcPartyMemberDTO; import com.epmet.resi.partymember.dto.partymember.form.IcPartyMemberFromDTO; import com.epmet.resi.partymember.dto.partymember.result.IcPartyInfoResultDTO; import com.epmet.resi.partymember.dto.partymember.result.IcPartyMemberResultDTO; +import com.epmet.resi.partymember.dto.partymember.result.PartymemberPortraitResultDTO; import com.epmet.utils.ImportTaskUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -59,10 +57,7 @@ import java.io.InputStream; import java.io.PrintWriter; import java.net.URLEncoder; import java.nio.file.Path; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.UUID; +import java.util.*; import java.util.concurrent.atomic.AtomicInteger; @@ -79,8 +74,10 @@ public class IcPartyMemberController implements ResultDataResolver { @Autowired private IcPartyMemberService icPartyMemberService; + // @Autowired + // private IcPartyOrgDao icPartyOrgDao; @Autowired - private IcPartyOrgDao icPartyOrgDao; + private IcPartyOrgService icPartyOrgService; @RequestMapping("page") @MaskResponse(fieldNames = { "mobile", "idCard" }, fieldsMaskType = { MaskResponse.MASK_TYPE_MOBILE, MaskResponse.MASK_TYPE_ID_CARD }) @@ -230,6 +227,26 @@ public class IcPartyMemberController implements ResultDataResolver { return new Result(); } + + /** + * @describe: 统计分析-党员年龄范围统计 + * @author wangtong + * @date 2022/5/23 10:19 + * @params [formDTO] + * @return com.epmet.commons.tools.utils.Result> + */ + @PostMapping("partymemberagestatistics") + public Result> partyMemberAgeStatistics(@LoginUser TokenDto tokenDto,@RequestBody IcPartyMemberFormDTO formDTO) { + if(StringUtils.isBlank(formDTO.getOrgId())){ + IcPartyOrgEntity org =icPartyOrgService.getIcPartyOrg(tokenDto.getCustomerId(),tokenDto.getUserId()); + if (null == org) { + return new Result>().ok(new ArrayList<>()); + } + formDTO.setOrgId(org.getId()); + } + return new Result>().ok(icPartyMemberService.partyMemberAgeStatistics(formDTO)); + } + /** * @describe: 统计分析-党员学历统计 * @author wangtong @@ -240,7 +257,7 @@ public class IcPartyMemberController implements ResultDataResolver { @PostMapping("partymembereducationstatistics") public Result> partyMemberEducationStatistics(@LoginUser TokenDto tokenDto, @RequestBody IcPartyMemberFormDTO formDTO) { if(StringUtils.isBlank(formDTO.getOrgId())){ - IcPartyOrgEntity org = setOrgId(tokenDto); + IcPartyOrgEntity org= icPartyOrgService.getIcPartyOrg(tokenDto.getCustomerId(),tokenDto.getUserId()); if (null == org) { return new Result>().ok(new ArrayList<>()); } @@ -260,7 +277,7 @@ public class IcPartyMemberController implements ResultDataResolver { @MaskResponse(fieldNames = {"mobile"}, fieldsMaskType = {MaskResponse.MASK_TYPE_MOBILE}) public Result> partyMemberAgelist(@LoginUser TokenDto tokenDto,@RequestBody IcPartyMemberListFormDTO formDTO) { if(StringUtils.isBlank(formDTO.getOrgId())){ - IcPartyOrgEntity org = setOrgId(tokenDto); + IcPartyOrgEntity org= icPartyOrgService.getIcPartyOrg(tokenDto.getCustomerId(),tokenDto.getUserId()); if (null == org) { return new Result>().ok(new PageData<>(Collections.emptyList(), 0)); } @@ -280,7 +297,7 @@ public class IcPartyMemberController implements ResultDataResolver { @MaskResponse(fieldNames = {"mobile"}, fieldsMaskType = {MaskResponse.MASK_TYPE_MOBILE}) public Result> partyMemberEducationlist(@LoginUser TokenDto tokenDto,@RequestBody IcPartyMemberListFormDTO formDTO) { if(StringUtils.isBlank(formDTO.getOrgId())){ - IcPartyOrgEntity org = setOrgId(tokenDto); + IcPartyOrgEntity org= icPartyOrgService.getIcPartyOrg(tokenDto.getCustomerId(),tokenDto.getUserId()); if (null == org) { return new Result>().ok(new PageData<>(Collections.emptyList(), 0)); } @@ -289,43 +306,116 @@ public class IcPartyMemberController implements ResultDataResolver { return new Result>().ok(icPartyMemberService.getPartyMemberEducationList(formDTO)); } + /** - * @describe: 统计分析-党员年龄范围统计 - * @author wangtong - * @date 2022/5/23 10:19 - * @params [formDTO] - * @return com.epmet.commons.tools.utils.Result> - */ - @PostMapping("partymemberagestatistics") - public Result> partyMemberAgeStatistics(@LoginUser TokenDto tokenDto,@RequestBody IcPartyMemberFormDTO formDTO) { - if(StringUtils.isBlank(formDTO.getOrgId())){ - IcPartyOrgEntity org = setOrgId(tokenDto); - if (null == org) { - return new Result>().ok(new ArrayList<>()); + * 烟台党员画像列表接口,将上方两个接口,合为一个 + * @param formDTO + * @return + */ + @PostMapping("partymember-portrait-list") + @MaskResponse(fieldNames = {"mobile","idCard"}, fieldsMaskType = {MaskResponse.MASK_TYPE_MOBILE,MaskResponse.MASK_TYPE_ID_CARD}) + public Result> queryPartyMemberPortraitList(@RequestBody IcPartyMemberListFormDTO formDTO) { + return new Result>().ok(icPartyMemberService.queryPartyMemberPortraitList(formDTO)); + } + + + /** + * 烟台党员画像列表-导出 + * @param formDTO + * @return + */ + @NoRepeatSubmit + @PostMapping("partymember-portrait-export") + public void partymemberPortraitExport(@RequestBody IcPartyMemberListFormDTO formDTO, HttpServletResponse response) throws Exception { + ExcelWriter excelWriter = null; + formDTO.setPageSize(NumConstant.TEN_THOUSAND); + formDTO.setIsPage(true); + String fileName=getPartymemberPortraitFileName(formDTO.getCodeType(),formDTO.getCode()); + try { + excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), PartymemberPortraitResultDTO.class).build(); + WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build(); + PageData data = null; + List list = null; + do { + data = icPartyMemberService.queryPartyMemberPortraitList(formDTO); + list = data.getList(); + formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE); + excelWriter.write(list, writeSheet); + } while (org.apache.commons.collections4.CollectionUtils.isNotEmpty(list) && list.size() == formDTO.getPageSize()); + } catch (EpmetException e) { + response.reset(); + response.setCharacterEncoding("UTF-8"); + response.setHeader("content-type", "application/json; charset=UTF-8"); + PrintWriter printWriter = response.getWriter(); + Result result = new Result<>().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), e.getMsg()); + printWriter.write(JSON.toJSONString(result)); + printWriter.close(); + } catch (Exception e) { + log.error("党员画像列表导出exception", e); + } finally { + if (excelWriter != null) { + excelWriter.finish(); } - formDTO.setOrgId(org.getId()); } - return new Result>().ok(icPartyMemberService.partyMemberAgeStatistics(formDTO)); } /** - * @describe: 组装党组织信息 - * @author wangtong - * @date 2022/7/8 16:46 - * @params [tokenDto, formDTO] - * @return com.epmet.modules.partyOrg.entity.IcPartyOrgEntity - */ - public IcPartyOrgEntity setOrgId(TokenDto tokenDto){ - CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(),tokenDto.getUserId()); - if (null == staffInfo) { - throw new EpmetException("获取工作人员信息失败"); + * 烟台党员画像列表-导出 + * @return 返回导出excel的文件名 + */ + private String getPartymemberPortraitFileName(String codeType, String code) { + String name = "党员画像"; + if ("age".equals(codeType)) { + switch (code) { + case NumConstant.ZERO_STR: + name = "50岁以下党员信息"; + break; + case NumConstant.ONE_STR: + name = "50-59岁党员信息"; + break; + case NumConstant.TWO_STR: + name = "60-69岁党员信息"; + break; + case NumConstant.THREE_STR: + name = "70-79岁党员信息"; + break; + case NumConstant.FOUR_STR: + name = "80岁以上党员信息"; + break; + default: + name = ""; + break; + } + }else if ("education".equals(codeType)) { + switch (code) { + case NumConstant.ZERO_STR: + name = "小学及文盲党员信息"; + break; + case NumConstant.ONE_STR: + name = "初中学历党员信息"; + break; + case NumConstant.TWO_STR: + name = "高中学历党员信息"; + break; + case NumConstant.THREE_STR: + name = "大专学历党员信息"; + break; + case NumConstant.FOUR_STR: + name = "本科学历党员信息"; + break; + case NumConstant.FIVE_STR: + name = "硕士学历党员信息"; + break; + case NumConstant.SIX_STR: + name = "博士学历党员信息"; + break; + default: + name = "党员画像"; + break; + } } - //获取工作人员所属组织同级的党组织 - LambdaQueryWrapper orgWrapper = new LambdaQueryWrapper<>(); - orgWrapper.eq(IcPartyOrgEntity::getCustomerId, tokenDto.getCustomerId()); - orgWrapper.eq(IcPartyOrgEntity::getAgencyId, staffInfo.getAgencyId()); - orgWrapper.ne(IcPartyOrgEntity::getPartyOrgType, NumConstant.FIVE_STR); - return icPartyOrgDao.selectOne(orgWrapper); + String fileName=name+DateUtils.format(new Date()) + ".xlsx"; + return fileName; } diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartyMemberDao.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartyMemberDao.java index ea835cddec..e653adfff0 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartyMemberDao.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/dao/IcPartyMemberDao.java @@ -65,7 +65,10 @@ public interface IcPartyMemberDao extends BaseDao { * @params [orgId, code] * @return java.util.List */ - List getPartyMemberEducationList(@Param("agencyId") String agencyId,@Param("orgId") String orgId,@Param("code") String code); + List getPartyMemberEducationList(@Param("agencyId") String agencyId, + @Param("orgId") String orgId, + @Param("code") String code, + @Param("codeType") String codeType); /** * @describe: 党员年龄范围统计 diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartyMemberService.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartyMemberService.java index c88113ae6a..1ff8c2dece 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartyMemberService.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/IcPartyMemberService.java @@ -8,6 +8,7 @@ import com.epmet.dto.form.IcPartyMemberFormDTO; import com.epmet.dto.form.IcPartyMemberListFormDTO; import com.epmet.dto.result.PartyMemberAgeResultDTO; import com.epmet.dto.result.PartyMemberEducationResultDTO; +import com.epmet.resi.partymember.dto.partymember.result.PartymemberPortraitResultDTO; import com.epmet.modules.partymember.entity.IcPartyMemberEntity; import com.epmet.resi.partymember.dto.partymember.IcPartyMemberDTO; import com.epmet.resi.partymember.dto.partymember.form.IcPartyMemberFromDTO; @@ -150,4 +151,11 @@ public interface IcPartyMemberService extends BaseService { void execAsyncExcelImport(Path filePath, String importTaskId); IcPartyInfoResultDTO partyInfo(TokenDto tokenDto); + + /** + * 烟台管理平台党员画像,列表查询 + * @param formDTO + * @return + */ + PageData queryPartyMemberPortraitList(IcPartyMemberListFormDTO formDTO); } diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartyMemberServiceImpl.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartyMemberServiceImpl.java index 98d737728d..c443e90f75 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartyMemberServiceImpl.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/IcPartyMemberServiceImpl.java @@ -10,7 +10,6 @@ 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.form.DictListFormDTO; -import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.dto.result.DictListResultDTO; import com.epmet.commons.tools.dto.result.OptionDataResultDTO; import com.epmet.commons.tools.enums.DictTypeEnum; @@ -22,7 +21,6 @@ import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.feign.ResultDataResolver; import com.epmet.commons.tools.page.PageData; -import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.*; import com.epmet.constants.ImportTaskConstants; @@ -49,6 +47,7 @@ import com.epmet.resi.partymember.dto.partymember.IcPartyMemberDTO; import com.epmet.resi.partymember.dto.partymember.form.IcPartyMemberFromDTO; import com.epmet.resi.partymember.dto.partymember.result.IcPartyInfoResultDTO; import com.epmet.resi.partymember.dto.partymember.result.IcPartyMemberResultDTO; +import com.epmet.resi.partymember.dto.partymember.result.PartymemberPortraitResultDTO; import com.epmet.utils.ImportTaskUtils; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -106,17 +105,9 @@ public class IcPartyMemberServiceImpl extends BaseServiceImpl page(TokenDto tokenDto, IcPartyMemberFromDTO formDTO) { - CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId()); - if (null == staffInfo) { - throw new EpmetException("获取工作人员信息失败"); - } if (StringUtils.isBlank(formDTO.getPartyOrgId())) { //获取工作人员所属组织同级的党组织 - LambdaQueryWrapper orgWrapper = new LambdaQueryWrapper<>(); - orgWrapper.eq(IcPartyOrgEntity::getCustomerId, tokenDto.getCustomerId()); - orgWrapper.eq(IcPartyOrgEntity::getAgencyId, staffInfo.getAgencyId()); - orgWrapper.ne(IcPartyOrgEntity::getPartyOrgType, NumConstant.FIVE_STR); - IcPartyOrgEntity org = icPartyOrgDao.selectOne(orgWrapper); + IcPartyOrgEntity org = icPartyOrgService.getIcPartyOrg(tokenDto.getCustomerId(),tokenDto.getUserId()); if (null == org) { return new PageData<>(Collections.emptyList(), 0); } @@ -177,17 +168,8 @@ public class IcPartyMemberServiceImpl extends BaseServiceImpl orgWrapper = new LambdaQueryWrapper<>(); - orgWrapper.eq(IcPartyOrgEntity::getCustomerId, tokenDto.getCustomerId()); - orgWrapper.eq(IcPartyOrgEntity::getAgencyId, staffInfo.getAgencyId()); - orgWrapper.ne(IcPartyOrgEntity::getPartyOrgType, NumConstant.FIVE_STR); - IcPartyOrgEntity orgInfo = icPartyOrgDao.selectOne(orgWrapper); + IcPartyOrgEntity orgInfo=icPartyOrgService.getIcPartyOrg(tokenDto.getCustomerId(),tokenDto.getUserId()); if (null == orgInfo) { throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "党组织不存在", "党组织不存在"); } @@ -450,7 +432,7 @@ public class IcPartyMemberServiceImpl extends BaseServiceImpl list = baseDao.getPartyMemberAgeList(formDTO.getAgencyId(),formDTO.getOrgId(), formDTO.getCode()); PageInfo pageInfo = new PageInfo<>(list); - return new PageData<>(list, pageInfo.getTotal()); + return new PageData<>(list, pageInfo.getTotal(),formDTO.getPageSize()); } List list = baseDao.getPartyMemberAgeList(formDTO.getAgencyId(),formDTO.getOrgId(), formDTO.getCode()); return new PageData<>(list, null == list?NumConstant.ZERO:list.size()); @@ -460,23 +442,23 @@ public class IcPartyMemberServiceImpl extends BaseServiceImpl getPartyMemberEducationList(IcPartyMemberListFormDTO formDTO) { if (formDTO.getIsPage()) { PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); - List list = baseDao.getPartyMemberEducationList(formDTO.getAgencyId(),formDTO.getOrgId(), formDTO.getCode()); - Result> mapResult = epmetAdminOpenFeignClient.dictMap(DictTypeEnum.EDUCATION.getCode()); + List list = baseDao.getPartyMemberEducationList(formDTO.getAgencyId(),formDTO.getOrgId(), formDTO.getCode(),"education"); PageInfo pageInfo = new PageInfo<>(list); - if (CollectionUtils.isNotEmpty(list)) { - list.forEach(item -> { - item.setEducation(null == mapResult.getData().get(item.getEducation()) ? "" : mapResult.getData().get(item.getEducation())); - }); - } - return new PageData<>(list, pageInfo.getTotal()); - } - List list = baseDao.getPartyMemberEducationList(formDTO.getAgencyId(),formDTO.getOrgId(), formDTO.getCode()); - Result> mapResult = epmetAdminOpenFeignClient.dictMap(DictTypeEnum.EDUCATION.getCode()); - if (CollectionUtils.isNotEmpty(list)) { - list.forEach(item -> { - item.setEducation(null == mapResult.getData().get(item.getEducation()) ? "" : mapResult.getData().get(item.getEducation())); - }); - } + // Result> mapResult = epmetAdminOpenFeignClient.dictMap(DictTypeEnum.EDUCATION.getCode()); + // if (CollectionUtils.isNotEmpty(list)) { + // list.forEach(item -> { + // item.setEducation(null == mapResult.getData().get(item.getEducation()) ? "" : mapResult.getData().get(item.getEducation())); + // }); + // } + return new PageData<>(list, pageInfo.getTotal(),formDTO.getPageSize()); + } + List list = baseDao.getPartyMemberEducationList(formDTO.getAgencyId(),formDTO.getOrgId(), formDTO.getCode(),"education"); + // Result> mapResult = epmetAdminOpenFeignClient.dictMap(DictTypeEnum.EDUCATION.getCode()); + // if (CollectionUtils.isNotEmpty(list)) { + // list.forEach(item -> { + // item.setEducation(null == mapResult.getData().get(item.getEducation()) ? "" : mapResult.getData().get(item.getEducation())); + // }); + // } return new PageData<>(list, null == list?NumConstant.ZERO:list.size()); } @@ -734,5 +716,39 @@ public class IcPartyMemberServiceImpl extends BaseServiceImpl queryPartyMemberPortraitList(IcPartyMemberListFormDTO formDTO) { + if (StringUtils.isBlank(formDTO.getOrgId())) { + // 当前工作人员所属组织下的,党组织 + IcPartyOrgEntity org= icPartyOrgService.getIcPartyOrg(EpmetRequestHolder.getLoginUserCustomerId(),EpmetRequestHolder.getLoginUserId()); + if (null == org) { + return new PageData<>(Collections.emptyList(), 0, formDTO.getPageSize()); + } + formDTO.setOrgId(org.getId()); + } + if ("age".equals(formDTO.getCodeType())) { + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); + List list = baseDao.getPartyMemberAgeList(formDTO.getAgencyId(), formDTO.getOrgId(), formDTO.getCode()); + PageInfo pageInfo = new PageInfo<>(list); + + List resultDTOList = ConvertUtils.sourceToTarget(list, PartymemberPortraitResultDTO.class); + return new PageData<>(resultDTOList, pageInfo.getTotal(), formDTO.getPageSize()); + + } + // else if ("education".equals(formDTO.getCodeType())) { + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); + List list = baseDao.getPartyMemberEducationList(formDTO.getAgencyId(), formDTO.getOrgId(), formDTO.getCode(),formDTO.getCodeType()); + PageInfo pageInfo = new PageInfo<>(list); + + List resultDTOList = ConvertUtils.sourceToTarget(list, PartymemberPortraitResultDTO.class); + return new PageData<>(resultDTOList, pageInfo.getTotal(), formDTO.getPageSize()); + } + } \ No newline at end of file diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartyMemberDao.xml b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartyMemberDao.xml index b33c53a9d0..06bd2e4940 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartyMemberDao.xml +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partymember/IcPartyMemberDao.xml @@ -165,7 +165,9 @@ NAME, MOBILE, age, - IC_RESI_USER + IC_RESI_USER, + ID_CARD, + education FROM ( SELECT @@ -173,14 +175,16 @@ NAME, MOBILE, age, - CASE + (CASE WHEN age < 50 THEN '0' WHEN age >= 50 AND age <= 59 THEN '1' WHEN age >= 60 AND age <= 69 THEN '2' WHEN age >= 70 AND age <= 79 THEN '3' ELSE '4' - END AS ageGroup, - IC_RESI_USER + END )AS ageGroup, + IC_RESI_USER, + ID_CARD, + education FROM ( SELECT @@ -188,7 +192,20 @@ NAME, MOBILE, YEAR (FROM_DAYS(DATEDIFF(NOW(),SUBSTRING( ID_CARD, 7, 8 )))) AS age, - IC_RESI_USER + IC_RESI_USER, + ID_CARD, + ( + case when CULTURE='0' then '小学及文盲' + when CULTURE='1' then '初中' + when CULTURE='2' then '高中' + when CULTURE='3' then '大专' + when CULTURE='4' then '本科' + when CULTURE='5' then '硕士' + when CULTURE='6' then '博士' + when CULTURE='7' then '中专' + else '' + end + )as education FROM ic_party_member WHERE @@ -206,22 +223,37 @@ WHERE ageGroup = #{code} - ORDER BY CONVERT(NAME USING GBK) ASC + ORDER BY ID ASC + + + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/DataSyncConfigDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/DataSyncConfigDao.xml index ea80141610..f25185a68d 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/DataSyncConfigDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/DataSyncConfigDao.xml @@ -108,6 +108,83 @@ ORDER BY CREATED_TIME + + + + + + + SELECT - d.id, - d.`NAME`, - d.ID_CARD, - d.DEATH_DATE, - d.AGE, - d.ADDRESS, - d.IC_RESI_USER_ID, - d.GRID_ID, - d.AGENCY_ID, - d.CREMATION_TIME, - d.ORGAN_NAME + d.* FROM data_sync_record_death d WHERE diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/DataSyncRecordMaritalDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/DataSyncRecordMaritalDao.xml new file mode 100755 index 0000000000..18a11ba5d5 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/DataSyncRecordMaritalDao.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml index b2b6b36861..d2df1efa5d 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml @@ -138,7 +138,47 @@ - and ${subCondition.tableName}.${subCondition.columnName} between #{subCondition.columnValue[0]} and #{subCondition.columnValue[1]} + + + and ${subCondition.tableName}.${subCondition.columnName} is not null + and ${subCondition.tableName}.${subCondition.columnName} !='' + and ${subCondition.tableName}.${subCondition.columnName} >= #{subCondition.columnValue[0]} + + + and ${subCondition.tableName}.${subCondition.columnName} is not null + and ${subCondition.tableName}.${subCondition.columnName} !='' + and ${subCondition.tableName}.${subCondition.columnName} <= #{subCondition.columnValue[1]} + + + + + and ${subCondition.tableName}.${subCondition.columnName} is not null + and ${subCondition.tableName}.${subCondition.columnName} !='' + and ${subCondition.tableName}.${subCondition.columnName} >= #{subCondition.columnValue[0]} + + + + + + + + and ic_resi_user.BIRTHDAY is not null + and ic_resi_user.BIRTHDAY !='' + and YEAR(NOW())-SUBSTR(ic_resi_user.BIRTHDAY, 1, 4) >= #{subCondition.columnValue[0]} + + + and ic_resi_user.BIRTHDAY is not null + and ic_resi_user.BIRTHDAY !='' + and YEAR(NOW())-SUBSTR(ic_resi_user.BIRTHDAY, 1, 4) <= #{subCondition.columnValue[1]} + + + + + and ic_resi_user.BIRTHDAY is not null + and ic_resi_user.BIRTHDAY !='' + and YEAR(NOW())-SUBSTR(ic_resi_user.BIRTHDAY, 1, 4) >= #{subCondition.columnValue[0]} + + @@ -193,7 +233,47 @@ - and ${subCondition.tableName}.${subCondition.columnName} between #{subCondition.columnValue[0]} and #{subCondition.columnValue[1]} + + + and ${subCondition.tableName}.${subCondition.columnName} is not null + and ${subCondition.tableName}.${subCondition.columnName} !='' + and ${subCondition.tableName}.${subCondition.columnName} >= #{subCondition.columnValue[0]} + + + and ${subCondition.tableName}.${subCondition.columnName} is not null + and ${subCondition.tableName}.${subCondition.columnName} !='' + and ${subCondition.tableName}.${subCondition.columnName} <= #{subCondition.columnValue[1]} + + + + + and ${subCondition.tableName}.${subCondition.columnName} is not null + and ${subCondition.tableName}.${subCondition.columnName} !='' + and ${subCondition.tableName}.${subCondition.columnName} >= #{subCondition.columnValue[0]} + + + + + + + + and ic_resi_user.BIRTHDAY is not null + and ic_resi_user.BIRTHDAY !='' + and YEAR(NOW())-SUBSTR(ic_resi_user.BIRTHDAY, 1, 4) >= #{subCondition.columnValue[0]} + + + and ic_resi_user.BIRTHDAY is not null + and ic_resi_user.BIRTHDAY !='' + and YEAR(NOW())-SUBSTR(ic_resi_user.BIRTHDAY, 1, 4) <= #{subCondition.columnValue[1]} + + + + + and ic_resi_user.BIRTHDAY is not null + and ic_resi_user.BIRTHDAY !='' + and YEAR(NOW())-SUBSTR(ic_resi_user.BIRTHDAY, 1, 4) >= #{subCondition.columnValue[0]} + + @@ -506,7 +586,8 @@ mobile, agency_id, grid_id, - home_id + home_id, + IS_PARTY as isParty FROM ic_resi_user WHERE @@ -1527,6 +1608,135 @@ + + + + + + + + + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcVaccineDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcVaccineDao.xml index ea56bb20b6..882a0c421e 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcVaccineDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcVaccineDao.xml @@ -252,4 +252,43 @@ select ID from ic_vaccine where CUSTOMER_ID = #{customerId} and ID_CARD = #{idCard} + 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 c43cea28cc..f2e0506de3 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 @@ -97,5 +97,20 @@ AND grid_id = #{gridId} - + diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeCertificateRecordDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeCertificateRecordDao.xml index 2a58027d9c..bd895279b0 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeCertificateRecordDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeCertificateRecordDao.xml @@ -40,5 +40,17 @@ AND (AUDIT_STATUS = 'approved' OR AUDIT_STATUS = 'auditing') - + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeDao.xml index 95b77d51a7..fb8acd52bb 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeDao.xml @@ -73,7 +73,7 @@ CREATED_TIME DESC - + SELECT - SURNAME, - NAME, - ID_NUM AS idcard, - ( CASE WHEN AUDIT_STATUS = 'approved' THEN 'yes' ELSE 'no' END ) AS isCertificated, - MOBILE, - CERTIFICATION_IMG, - REMAEK AS remark, - CUSTOMER_ID, - BADGE_ID, - CERTIFICATION_IMG, - AUDIT_STATUS, - AUDIT_STATUS AS authResult, - AUDIT_REMARK AS authReason, - ID AS recordId + r.SURNAME, + r.NAME, + r.ID_NUM AS idcard, + ( CASE WHEN r.AUDIT_STATUS = 'approved' THEN 'yes' ELSE 'no' END ) AS isCertificated, + r.MOBILE, + r.CERTIFICATION_IMG, + r.REMAEK AS remark, + r.CUSTOMER_ID, + r.BADGE_ID, + r.CERTIFICATION_IMG, + r.AUDIT_STATUS, + r.AUDIT_STATUS AS authResult, + r.AUDIT_REMARK AS authReason, + r.ID AS recordId, + r.GRID_ID as gridId, + r.BADGE_ID as badgeId, + b.BADGE_NAME as badgeName, + r.CREATED_TIME as createdTime FROM - user_badge_certificate_record + user_badge_certificate_record r + left join badge b on(r.BADGE_ID=b.id and r.CUSTOMER_ID=b.CUSTOMER_ID) WHERE - DEL_FLAG = 0 - AND BADGE_ID = #{badgeId} + r.DEL_FLAG = 0 + AND r.BADGE_ID = #{badgeId} - AND USER_ID = #{userId} - AND IS_LAST = 'yes' + AND r.USER_ID = #{userId} + AND r.IS_LAST = 'yes' - AND ID = #{recordId} + AND r.ID = #{recordId} @@ -175,6 +180,7 @@ ID, CUSTOMER_ID, GRID_ID, + AGENCY_ID, USER_ID, BADGE_ID, SURNAME, @@ -200,6 +206,7 @@ #{id}, #{customerId}, #{gridId}, + #{agencyId}, #{userId}, #{badgeId}, #{surname},