package com.panzhihua.service_community.service.impl;
|
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
|
import javax.annotation.Resource;
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONObject;
|
import com.panzhihua.common.model.dtos.community.building.BuildingDto;
|
import com.panzhihua.common.model.dtos.community.large.AreaStreetDetail;
|
import com.panzhihua.common.model.dtos.community.large.AreaStreetDetailResp;
|
import com.panzhihua.common.model.dtos.community.large.SumAreaStreetResp;
|
import com.panzhihua.common.model.dtos.partybuilding.QryReportResp;
|
import com.panzhihua.common.model.vos.StreetVO;
|
import com.panzhihua.common.model.vos.area.StreetAndBuildVO;
|
import com.panzhihua.common.model.vos.community.bigscreen.ScreenStatics;
|
import com.panzhihua.common.model.vos.community.screen.event.EventPopulationSpecialStatisticsVO;
|
import com.panzhihua.common.model.vos.neighbor.ActivityAnalysisVO;
|
import com.panzhihua.common.model.vos.neighbor.UnitActivityAnalysisVO;
|
import com.panzhihua.common.model.vos.user.AdministratorsUserVO;
|
import com.panzhihua.common.service.community.CommunityService;
|
import com.panzhihua.common.service.user.UserService;
|
import com.panzhihua.common.utlis.Snowflake;
|
import com.panzhihua.service_community.dao.*;
|
|
import com.panzhihua.service_community.entity.ComEvent;
|
|
import com.panzhihua.service_community.service.ComAreaTownCommunityService;
|
import com.panzhihua.service_community.util.MyAESUtil;
|
import com.panzhihua.service_community.util.WxDataUtil;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.ObjectUtils;
|
|
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.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.google.common.collect.Lists;
|
import com.panzhihua.common.model.dtos.community.PageComStreetDTO;
|
import com.panzhihua.common.model.vos.R;
|
import com.panzhihua.common.model.vos.community.ComActVO;
|
import com.panzhihua.common.model.vos.community.ComStreetVO;
|
import com.panzhihua.service_community.model.dos.ComActDO;
|
import com.panzhihua.service_community.model.dos.ComStreetDO;
|
import com.panzhihua.service_community.service.ComStreetService;
|
import org.springframework.util.StringUtils;
|
|
/**
|
* @author: llming
|
* @description: 街道
|
**/
|
@Service
|
public class ComStreetServiceImpl implements ComStreetService {
|
@Resource
|
private ComActDAO comActDAO;
|
|
@Resource
|
private ComStreetDAO comStreetDAO;
|
|
@Resource
|
private UserService userService;
|
|
@Resource
|
private ComEventMapper comEventMapper;
|
|
@Autowired
|
private CommunityService communityService;
|
|
@Resource
|
private StringRedisTemplate stringRedisTemplate;
|
|
/**
|
* 新增社区
|
*
|
* @param comStreetVO
|
* 街道信息
|
* @return 新增结果
|
*/
|
@Override
|
@Transactional
|
public R<ComStreetVO> addStreet(ComStreetVO comStreetVO) {
|
ComStreetDO comStreetDO = new ComStreetDO();
|
LambdaQueryWrapper<ComStreetDO> param = new QueryWrapper<ComStreetDO>().lambda();
|
param.eq(ComStreetDO::getName, comStreetVO.getName());
|
param.eq(ComStreetDO::getProvinceCode, comStreetVO.getProvinceCode());
|
param.eq(ComStreetDO::getCityCode, comStreetVO.getCityCode());
|
param.eq(ComStreetDO::getAreaCode, comStreetVO.getAreaCode());
|
Integer integer = comStreetDAO.selectCount(param);
|
if (integer > 0) {
|
return R.fail(500, "街道已经存在");
|
}
|
AdministratorsUserVO administratorsUserVO=new AdministratorsUserVO();
|
administratorsUserVO.setType(3);
|
administratorsUserVO.setAccount(comStreetVO.getAccount());
|
administratorsUserVO.setPassword(comStreetVO.getPassword());
|
administratorsUserVO.setSocialType(1);
|
administratorsUserVO.setRoleId(777777777L);
|
administratorsUserVO.setStreetId(0L);
|
administratorsUserVO.setName(comStreetVO.getName());
|
administratorsUserVO.setUserId(Snowflake.getId());
|
R r=userService.addUserBackstageProperty(administratorsUserVO);
|
if(R.isOk(r)){
|
BeanUtils.copyProperties(comStreetVO, comStreetDO);
|
int insert = comStreetDAO.insert(comStreetDO);
|
if (insert > 0) {
|
AdministratorsUserVO administratorsUserVO1=new AdministratorsUserVO();
|
administratorsUserVO1.setUserId(Long.parseLong(r.getData().toString()));
|
administratorsUserVO1.setStreetId(comStreetDO.getStreetId());
|
userService.updateStreet(administratorsUserVO1);
|
ComStreetDO comStreetDO1 = comStreetDAO.selectOne(param);
|
BeanUtils.copyProperties(comStreetDO1, comStreetVO);
|
return R.ok(comStreetVO);
|
}
|
return R.fail(500, "");
|
}
|
return R.fail("账号已存在");
|
}
|
|
/**
|
* 查询街道
|
*
|
* @param comStreetVO
|
* 街道名
|
* @return 社区集合
|
*/
|
@Override
|
public R listStreet(ComStreetVO comStreetVO) {
|
LambdaQueryWrapper<ComStreetDO> param = new QueryWrapper<ComStreetDO>().lambda();
|
if (comStreetVO.getProvinceCode() != null) {
|
param.eq(ComStreetDO::getProvinceCode, comStreetVO.getProvinceCode());
|
}
|
if (comStreetVO.getCityCode() != null) {
|
param.eq(ComStreetDO::getCityCode, comStreetVO.getCityCode());
|
}
|
if (comStreetVO.getAreaCode() != null) {
|
param.eq(ComStreetDO::getAreaCode, comStreetVO.getAreaCode());
|
}
|
List<ComStreetVO> voList = Lists.newArrayList();
|
List<ComStreetDO> comStreetDOS = comStreetDAO.selectList(param);
|
comStreetDOS.forEach(dos -> {
|
ComStreetVO vo = new ComStreetVO();
|
BeanUtils.copyProperties(dos, vo);
|
voList.add(vo);
|
});
|
return R.ok(voList);
|
}
|
|
/**
|
* 社区详情
|
*
|
* @param streetId
|
* 街道id
|
* @return 社区详情
|
*/
|
@Override
|
public R detailStreet(Long streetId) {
|
ComStreetDO comStreetDO = comStreetDAO.selectById(streetId);
|
if (ObjectUtils.isEmpty(comStreetDO)) {
|
return R.fail();
|
}
|
ComStreetVO comStreetVO = new ComStreetVO();
|
BeanUtils.copyProperties(comStreetDO, comStreetVO);
|
comStreetVO.setAdministrativeRegions(comStreetDAO.retrieveRegions(comStreetVO.getAreaCode().toString()));
|
return R.ok(comStreetVO);
|
}
|
|
/**
|
* 分页查询社区
|
*
|
* @param pageComStreetDTO
|
* 查询参数
|
* @return 分页集合
|
*/
|
@Override
|
public R pageStreet(PageComStreetDTO pageComStreetDTO) {
|
Page page = new Page<>();
|
Long pageNum = pageComStreetDTO.getPageNum();
|
Long pageSize = pageComStreetDTO.getPageSize();
|
if (null == pageNum || 0 == pageNum) {
|
pageNum = 1L;
|
}
|
if (null == pageSize || 0 == pageSize) {
|
pageSize = 10L;
|
}
|
page.setSize(pageSize);
|
page.setCurrent(pageNum);
|
LambdaQueryWrapper<ComStreetDO> userLambdaQueryWrapper = Wrappers.lambdaQuery();
|
if (pageComStreetDTO.getName() != null) {
|
userLambdaQueryWrapper.like(ComStreetDO::getName, pageComStreetDTO.getName());
|
}
|
if (pageComStreetDTO.getAreaCode() != null) {
|
userLambdaQueryWrapper.like(ComStreetDO::getAreaCode, pageComStreetDTO.getAreaCode());
|
}
|
Page userPage = new Page(pageNum, pageSize);
|
IPage<ComStreetDO> doPager =
|
comStreetDAO.selectPage(userPage, userLambdaQueryWrapper.orderByDesc(ComStreetDO::getCreateAt));
|
return R.ok(doPager);
|
}
|
|
/**
|
* 批量删除街道
|
*
|
* @param streetIds
|
* 社区id
|
* @return 删除结果
|
*/
|
@Override
|
public R delectStreat(List<Long> streetIds) {
|
// 不能删除,已经绑定了社区的街道
|
LambdaQueryWrapper<ComActDO> comActDOParam =
|
new QueryWrapper<ComActDO>().lambda().in(ComActDO::getStreetId, streetIds);
|
List<ComActDO> comActDOS = comActDAO.selectList(comActDOParam);
|
if (comActDOS != null && comActDOS.size() > 0) {
|
return R.fail("删除失败,批量删除街道中,街道下有社区无法删除!");
|
}
|
int delete = comStreetDAO.deleteBatchIds(streetIds);
|
if (delete > 0) {
|
return R.ok();
|
}
|
return R.fail();
|
}
|
|
|
/**
|
* 修改街道信息
|
* @param comStreetVO 街道信息
|
* */
|
@Override
|
public R update(ComStreetVO comStreetVO) {
|
ComStreetDO comStreetDO=new ComStreetDO();
|
BeanUtils.copyProperties(comStreetVO,comStreetDO );
|
return R.ok(comStreetDAO.updateById(comStreetDO));
|
}
|
|
/**
|
* 删除街道
|
* */
|
@Override
|
public R remove(Long id) {
|
//是否有未结事件
|
List<Long> longs = comActDAO.selectCommunityByStreetId(id);
|
List<ComEvent> comEvents = comEventMapper.selectList(new QueryWrapper<ComEvent>().lambda().in(ComEvent::getEventProcessStatus, (4), (6), (7), (8)).in(ComEvent::getRequestUserCommunity, longs));
|
if (comEvents.size()!=0){
|
return R.fail("有未结事件不可删除");
|
}
|
comStreetDAO.deleteById(id);
|
return R.ok();
|
}
|
|
@Override
|
public R removeCommunity(Long id) {
|
//是否有未结案件
|
List<ComEvent> comEvents = comEventMapper.selectList(new QueryWrapper<ComEvent>().lambda().in(ComEvent::getEventProcessStatus, (4), (6), (7), (8)).eq(ComEvent::getRequestUserCommunity, id));
|
if (comEvents.size()!=0){
|
return R.fail("有未结事件不可删除");
|
}
|
comActDAO.deleteById(id);
|
return R.ok();
|
}
|
|
@Override
|
public R repassCommunity(ComActVO comActVO) {
|
ComActDO comActDO=new ComActDO();
|
try {
|
comActDO.setPassword(MyAESUtil.Encrypt(comActVO.getPassword(),"Ryo7M3n8loC5Abcd" ));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
comActDO.setCommunityId(comActVO.getCommunityId());
|
return R.ok(comActDAO.updateById(comActDO));
|
}
|
|
@Override
|
public R repssStreet(ComStreetVO comActVO) {
|
ComStreetDO comStreetDO=new ComStreetDO();
|
try {
|
comStreetDO.setPassword(MyAESUtil.Encrypt(comActVO.getPassword(),"Ryo7M3n8loC5Abcd" ));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
comStreetDO.setStreetId(comActVO.getStreetId());
|
return R.ok(comStreetDAO.updateById(comStreetDO));
|
}
|
|
@Override
|
public R panzhihuaMap(String areaCode) {
|
|
List<ComActVO> comActVOS = comActDAO.panzhihuaMap(areaCode);
|
return R.ok(comActVOS);
|
}
|
|
@Override
|
public R searchStreet(BuildingDto buildingDto) {
|
QueryWrapper<ComStreetDO> wrapper = new QueryWrapper<>();
|
wrapper.eq(buildingDto.getAreaCode()!= null,"area_code",buildingDto.getAreaCode());
|
wrapper.eq("app_id","wx118de8a734d269f0");
|
List<ComStreetDO> comStreetDOS = comStreetDAO.selectList(wrapper);
|
// ArrayList<ComStreetDO> collect = comStreetDOS.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
|
// Comparator.comparing(ComStreetDO::getAreaCode))), ArrayList::new));
|
List<StreetVO> list = comStreetDOS.stream().map(v -> {
|
StreetVO vo = new StreetVO();
|
vo.setStreetId(String.valueOf(v.getStreetId()));
|
vo.setName(v.getName());
|
return vo;
|
}).collect(Collectors.toList());
|
return R.ok(list);
|
}
|
|
@Override
|
public R oneTagThreeReal(Long street) {
|
List<StreetAndBuildVO> streetAndBuildVOS = comActDAO.oneTagThreeReal(street);
|
return R.ok(streetAndBuildVOS);
|
}
|
|
@Override
|
public R getScreenStatics() {
|
ScreenStatics screenStatics = comActDAO.getScreenStatics();
|
WxDataUtil wxDataUtil=new WxDataUtil();
|
//微信查询较慢 数据时有 时没有 缓存到 redis 里
|
//日 活跃
|
if(null != wxDataUtil.getDayUser()){
|
stringRedisTemplate.opsForValue().set("WxDataUtil_Day",String.valueOf(wxDataUtil.getDayUser()));
|
screenStatics.setDayUser(wxDataUtil.getDayUser());
|
}else {
|
Object obj = stringRedisTemplate.opsForValue().get("WxDataUtil_Day");
|
screenStatics.setDayUser(Integer.valueOf((String)obj));
|
}
|
//月 活跃
|
if(null != wxDataUtil.getMonthUser()){
|
stringRedisTemplate.opsForValue().set("WxDataUtil_Month",String.valueOf(wxDataUtil.getMonthUser()));
|
screenStatics.setCountUser(wxDataUtil.getMonthUser());
|
}else {
|
Object obj = stringRedisTemplate.opsForValue().get("WxDataUtil_Month");
|
screenStatics.setCountUser(Integer.valueOf((String)obj));
|
}
|
return R.ok(screenStatics);
|
}
|
|
@Override
|
public R populationStatics(Long streetId) {
|
StreetAndBuildVO vo = new StreetAndBuildVO();
|
List<StreetAndBuildVO> list = comActDAO.oneTagThreeReal(streetId);
|
if(list != null){
|
for (StreetAndBuildVO basics : list) {
|
vo.setPeopleNum(vo.getPeopleNum() + basics.getPeopleNum());
|
vo.setVillageNum(vo.getVillageNum() + basics.getVillageNum());
|
vo.setBuildNum(vo.getBuildNum() + basics.getBuildNum());
|
}
|
}
|
EventPopulationSpecialStatisticsVO populationSpecial = comActDAO.getPopulationSpecial(streetId);
|
if(populationSpecial != null){
|
populationSpecial.setOtherTotal(populationSpecial.getZjTotal() + populationSpecial.getSfTotal()
|
+ populationSpecial.getXsTotal() + populationSpecial.getXjTotal()
|
+ populationSpecial.getJzTotal() + populationSpecial.getXdTotal());
|
populationSpecial.setLnTotal(comActDAO.getPopulationAge(streetId,60));
|
populationSpecial.setGlTotal(comActDAO.getPopulationAge(streetId,80));
|
vo.setSpecialStatisticsVo(populationSpecial);
|
}
|
vo.setSpecialStatisticsVo(populationSpecial);
|
return R.ok(vo);
|
}
|
|
@Override
|
public R probably(Integer year,String belongTo) {
|
ActivityAnalysisVO activityVO=new ActivityAnalysisVO();
|
// String beginTime=null;
|
// String endTime=null;
|
// if (null != year){
|
// //设置开始,截止时间
|
// beginTime=year.toString().concat("-01-01");
|
// endTime=year.toString().concat("-12-31");
|
// }
|
activityVO.setUnitCount(comActDAO.arriveUnit(belongTo));
|
R r = communityService.institutionalUnitServiceAnalysis(year, null, null, null,
|
null, null, belongTo, null, null,null);
|
Object data = r.getData();
|
String jsonString = JSON.toJSONString(data);
|
ActivityAnalysisVO activityAnalysisVO = JSON.parseObject(jsonString, ActivityAnalysisVO.class);
|
activityVO.setUnitServiceTotalTime(activityAnalysisVO.getUnitServiceTotalTime());
|
return R.ok(activityVO);
|
}
|
|
@Override
|
public SumAreaStreetResp sumAreaStreet() {
|
SumAreaStreetResp resp = comActDAO.sumAreaStreet();
|
return resp;
|
}
|
|
@Override
|
public AreaStreetDetail areaStreetDetail(String code, String type) {
|
//根据层级 查询 社区id
|
LambdaQueryWrapper<ComActDO> qry = new LambdaQueryWrapper<>();
|
if(type.equals("1")){// 1 查询 大区
|
qry.eq( !StringUtils.isEmpty(code),ComActDO::getAreaCode,code);
|
}
|
if(type.equals("2")){// 2 查询 街道
|
qry.eq( !StringUtils.isEmpty(code),ComActDO::getStreetId,code);
|
}
|
if(type.equals("3")){// 3 查询 小区
|
qry.eq( !StringUtils.isEmpty(code),ComActDO::getCommunityId,code);
|
}
|
// qry.eq(ComActDO::getAppId,"wx118de8a734d269f0");
|
List<ComActDO> doList = comActDAO.selectList(qry);
|
//解析 社区id
|
List<Long> ids = doList.stream().map(ComActDO::getCommunityId).collect(Collectors.toList());
|
|
AreaStreetDetail result = new AreaStreetDetail();
|
if(CollectionUtil.isNotEmpty(ids)){
|
//查询 街道相关信息
|
AreaStreetDetailResp village = comActDAO.selectVillage(ids,type);
|
result.setAreaStreetDetailResp(village);
|
//查询 人口相关数据
|
EventPopulationSpecialStatisticsVO eventResult = comActDAO.selectEvent(ids);
|
result.setEventPopulationVO(eventResult);
|
}
|
return result;
|
}
|
|
|
@Override
|
public List<QryReportResp> qryReport(String yearTime) {
|
List<QryReportResp> result = comActDAO.qryReport(yearTime);
|
return result;
|
}
|
}
|