DESKTOP-71BH0QO\L、ming
2021-04-02 8555f974846ca5b4f4734f52b51e39cd4502df44
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
package com.panzhihua.service_community.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.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.panzhihua.common.model.dtos.community.PageComMngVillageDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.ComMngVillageServeExcelVO;
import com.panzhihua.common.model.vos.community.ComMngVillageVO;
import com.panzhihua.service_community.dao.ComActDAO;
import com.panzhihua.service_community.dao.ComActVillageDAO;
import com.panzhihua.service_community.dao.ComMngPopulationDAO;
import com.panzhihua.service_community.dao.ComMngVolunteerMngDAO;
import com.panzhihua.service_community.model.dos.ComActDO;
import com.panzhihua.service_community.model.dos.ComActDiscussDO;
import com.panzhihua.service_community.model.dos.ComMngPopulationDO;
import com.panzhihua.service_community.model.dos.ComMngVillageDO;
import com.panzhihua.service_community.service.ComMngVillageService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
 
/**
 * @author: llming
 * @description: 实有房屋
 **/
@Service
public class ComMngVillageServiceImpl extends ServiceImpl<ComActVillageDAO, ComMngVillageDO> implements ComMngVillageService {
    @Resource
    ComActVillageDAO comActVillageDAO;
    @Resource
    ComActDAO comActDAO;
    @Resource
    ComMngPopulationDAO populationDAO;
 
    @Override
    public R addComActVillage(ComMngVillageVO comMngVillageVO) {
        ComMngVillageDO comMngVillageDO = new ComMngVillageDO();
        LambdaQueryWrapper<ComMngVillageDO> param = new QueryWrapper<ComMngVillageDO>().lambda();
        param.eq(ComMngVillageDO::getCommunityId, comMngVillageVO.getCommunityId());
        param.eq(ComMngVillageDO::getAlley, comMngVillageVO.getAlley());
        param.eq(ComMngVillageDO::getHouseNum, comMngVillageVO.getHouseNum());
        Integer resultCount = comActVillageDAO.selectCount(param);
        if (resultCount > 0) {
            return R.fail("实有房屋已经存在");
        }
        BeanUtils.copyProperties(comMngVillageVO, comMngVillageDO);
        ComActDO comActDO = comActDAO.selectById(comMngVillageDO.getCommunityId());
        comMngVillageDO.setStreetId(comActDO.getStreetId());
        int insert = comActVillageDAO.insert(comMngVillageDO);
        if (insert > 0) {
            param.eq(ComMngVillageDO::getAlley, comMngVillageVO.getAlley());
            param.eq(ComMngVillageDO::getHouseNum, comMngVillageVO.getHouseNum());
            ComMngVillageDO comMngVillageDO1 = comActVillageDAO.selectOne(param);
            BeanUtils.copyProperties(comMngVillageDO1, comMngVillageVO);
            return R.ok(comMngVillageVO);
        }
        return R.fail();
    }
 
    @Override
    public R listComActVillage(ComMngVillageVO comMngVillageVO) {
        List<ComMngVillageDO> vos = Lists.newArrayList();
        LambdaQueryWrapper<ComMngVillageDO> param = new QueryWrapper<ComMngVillageDO>().lambda();
        param.eq(ComMngVillageDO::getAlley, comMngVillageVO.getAlley());
        param.eq(ComMngVillageDO::getCommunityId, comMngVillageVO.getCommunityId());
        List<ComMngVillageDO> comMngVillageDOS = comActVillageDAO.selectList(param);
        BeanUtils.copyProperties(vos, comMngVillageDOS);
        return R.ok(vos);
    }
 
 
    @Override
    public R pageComActVillage(PageComMngVillageDTO pageComMngVillageDTO) {
        Page page = new Page<>();
        Long pageNum = pageComMngVillageDTO.getPageNum();
        Long pageSize = pageComMngVillageDTO.getPageSize();
        if (null == pageNum || 0 == pageNum) {
            pageNum = 1l;
        }
        if (null == pageSize || 0 == pageSize) {
            pageSize = 10l;
        }
        page.setSize(pageSize);
        page.setCurrent(pageNum);
        LambdaQueryWrapper<ComMngVillageDO> userLambdaQueryWrapper = Wrappers.lambdaQuery();
        if (pageComMngVillageDTO.getAlley() != null) {
            userLambdaQueryWrapper.like(ComMngVillageDO::getAlley, pageComMngVillageDTO.getAlley());
        }
        Page userPage = new Page(pageNum, pageSize);
        IPage<ComMngVillageDO> doPager = comActVillageDAO.selectPage(userPage, userLambdaQueryWrapper.orderByDesc(ComMngVillageDO::getCreateAt));
        return R.ok(doPager);
    }
 
    @Override
    public R delecComActVillage(List<Long> Ids) {
        LambdaQueryWrapper<ComMngPopulationDO> paramWrapper = Wrappers.lambdaQuery();
        paramWrapper.in(ComMngPopulationDO::getVillageId, Ids);
        ComMngPopulationDO mngPopulationDO = populationDAO.selectOne(paramWrapper);
        if (mngPopulationDO != null) {
            return R.fail("无法删除,已绑定实有人口!");
        }
        int delete = comActVillageDAO.deleteBatchIds(Ids);
        if (delete > 0) {
            return R.ok();
        }
        return R.fail();
    }
 
    @Override
    public R listSaveVillage(List<ComMngVillageServeExcelVO> list, Long communityId) {
        //思路:获取社区下所有的实有房屋(小区),打印已经存在的重复数据
        if (list.size() == 0) {
            return R.fail("数据为空!");
        }
        List<ComMngVillageDO> comMngVillageDOs = comActVillageDAO.selectList(new QueryWrapper<ComMngVillageDO>().lambda().eq(ComMngVillageDO::getCommunityId, communityId));
        int index = 2;
        for (ComMngVillageServeExcelVO vo : list) {
            if (vo.getHouseNum() == null) {
                return R.fail("门牌号第" + index + "行为空!");
            }
            if (vo.getAlley() == null) {
                return R.fail("街路巷第" + index + "行为空!");
            }
            //判断DB和exel数据重复判断
            boolean result = comMngVillageDOs.stream().anyMatch(village -> village.getAlley().equals(vo.getAlley()) && village.getHouseNum().intValue() == vo.getHouseNum().intValue());
            if (result) {
                return R.fail("导入街路巷已存在(" + vo.getAlley() + ")");
            }
            index++;
        }
        ComActDO comActDO = comActDAO.selectById(communityId);
        ArrayList<ComMngVillageDO> comMngVillageDOS = Lists.newArrayList();
        list.forEach(vo -> {
            ComMngVillageDO comMngVillageDO = new ComMngVillageDO();
            BeanUtils.copyProperties(vo, comMngVillageDO);
            comMngVillageDO.setCommunityId(comActDO.getCommunityId());
            comMngVillageDO.setStreetId(comActDO.getStreetId());
            comMngVillageDOS.add(comMngVillageDO);
        });
        this.saveBatch(comMngVillageDOS);
        return R.ok("共计导入实有房屋数量:" + comMngVillageDOS.size());
    }
}