huanghongfa
2021-07-22 02f18587bd8860b305e2c688e20465be166bb48c
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngStructAreaServiceImpl.java
New file
@@ -0,0 +1,238 @@
package com.panzhihua.service_community.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.BatchhouseVO;
import com.panzhihua.common.model.vos.community.ComActDynVO;
import com.panzhihua.common.model.vos.community.ComMngStructAreaVO;
import com.panzhihua.service_community.dao.ComMngStructAreaDAO;
import com.panzhihua.service_community.model.dos.ComMngStructAreaDO;
import com.panzhihua.service_community.service.ComMngStructAreaService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
 * @program: springcloud_k8s_panzhihuazhihuishequ
 * @description: 小区
 * @author: huang.hongfa weixin hhf9596 qq 959656820
 * @create: 2020-12-15 15:48
 **/
@Service
public class ComMngStructAreaServiceImpl implements ComMngStructAreaService {
    @Resource
    private ComMngStructAreaDAO comMngStructAreaDAO;
    /**
     * 新增小区
     *
     * @param comMngStructAreaVO 小区信息
     * @return 新增结果
     */
    @Override
    public R addArea(ComMngStructAreaVO comMngStructAreaVO) {
        ComMngStructAreaDO comMngStructAreaDO=new ComMngStructAreaDO();
        BeanUtils.copyProperties(comMngStructAreaVO,comMngStructAreaDO);
        long areaCode=510000510400000001l;//攀枝花区域地址编码+000001
        ComMngStructAreaDO comMngStructAreaDO1 = comMngStructAreaDAO.selectOne(new QueryWrapper<ComMngStructAreaDO>().lambda().orderByDesc(ComMngStructAreaDO::getAreaCode).last(" limit 1 "));
        if (!ObjectUtils.isEmpty(comMngStructAreaDO1)) {
             areaCode = Long.valueOf(comMngStructAreaDO1.getAreaCode())+1;
        }
        comMngStructAreaDO.setAreaCode(areaCode+"");
        int insert = 0;
        try {
            insert = comMngStructAreaDAO.insert(comMngStructAreaDO);
        } catch (Exception e) {
            if (e.getMessage().contains("unique_address_detail")) {
                return R.fail("小区地址已经存在");
            }
        }
        if (insert>0) {
            return R.ok(areaCode);
        }
        return R.fail();
    }
    /**
     * 分页查询小区
     *
     * @param comMngStructAreaVO 查询参数
     * @return 分页结果
     */
    @Override
    public R pageArea(ComMngStructAreaVO comMngStructAreaVO) {
        Page page = new Page<>();
        Long pageNum = comMngStructAreaVO.getPageNum();
        Long pageSize = comMngStructAreaVO.getPageSize();
        if (null==pageNum||0==pageNum) {
            pageNum = 1l;
        }
        if (null==pageSize||0==pageSize) {
            pageSize = 10l;
        }
        page.setSize(pageSize);
        page.setCurrent(pageNum);
        IPage<ComMngStructAreaVO> iPage = comMngStructAreaDAO.pageArea(page, comMngStructAreaVO);
        return R.ok(iPage);
    }
    /**
     * 编辑小区
     *
     * @param comMngStructAreaVO 编辑内容
     * @return 编辑结果
     */
    @Override
    public R putArea(ComMngStructAreaVO comMngStructAreaVO) {
        ComMngStructAreaDO comMngStructAreaDO=new ComMngStructAreaDO();
        BeanUtils.copyProperties(comMngStructAreaVO,comMngStructAreaDO);
        int update = comMngStructAreaDAO.update(comMngStructAreaDO, new UpdateWrapper<ComMngStructAreaDO>().lambda().eq(ComMngStructAreaDO::getAreaCode, comMngStructAreaVO.getAreaCode()));
        if (update>0) {
            return R.ok();
        }
        return R.fail();
    }
    /**
     * 删除小区
     *
     * @param comMngStructAreaVO 地址编码
     * @return 删除结果
     */
    @Override
    public R deleteArea(ComMngStructAreaVO comMngStructAreaVO) {
        int delete = comMngStructAreaDAO.delete(new QueryWrapper<ComMngStructAreaDO>().lambda().eq(ComMngStructAreaDO::getAreaCode, comMngStructAreaVO.getAreaCode()));
        if (delete>0) {
            return R.ok();
        }
        return R.fail();
    }
    /**
     * 查询小区信息
     *
     * @param areaCode 小区地址编码
     * @return 小区信息
     */
    @Override
    public R selectAreaByAreaCode(String areaCode) {
        ComMngStructAreaDO comMngStructAreaDO = comMngStructAreaDAO.selectOne(new QueryWrapper<ComMngStructAreaDO>().lambda().eq(ComMngStructAreaDO::getAreaCode, areaCode));
        if (ObjectUtils.isEmpty(comMngStructAreaDO)) {
            return R.fail();
        }
        return R.ok(comMngStructAreaDO);
    }
    /**
     * 获取小区的地址编码
     *
     * @param areaId 小区id
     * @return 小区地址编码
     */
    @Override
    public R selectAreaById(Long areaId) {
        ComMngStructAreaDO comMngStructAreaDO = comMngStructAreaDAO.selectById(areaId);
        if (ObjectUtils.isEmpty(comMngStructAreaDO)) {
            return R.fail("小区不存在");
        }
        return R.ok(comMngStructAreaDO.getAreaCode());
    }
    /**
     * 查询小区
     *
     * @param communityId 社区id
     * @return 小区集合
     */
    @Override
    public R listArea(Long communityId) {
        List<ComMngStructAreaVO> comMngStructAreaVOS=new ArrayList<>();
        List<ComMngStructAreaDO> comMngStructAreaDOS = comMngStructAreaDAO.selectList(new QueryWrapper<ComMngStructAreaDO>().lambda().eq(ComMngStructAreaDO::getCommunityId, communityId));
        if (!ObjectUtils.isEmpty(comMngStructAreaDOS)) {
            comMngStructAreaDOS.forEach(comMngStructAreaDO -> {
                ComMngStructAreaVO comMngStructAreaVO=new ComMngStructAreaVO();
                BeanUtils.copyProperties(comMngStructAreaDO,comMngStructAreaVO);
                comMngStructAreaVOS.add(comMngStructAreaVO);
            });
        }
        return R.ok(comMngStructAreaVOS);
    }
    /**
     * 小区详情
     *
     * @param areaId 小区id
     * @return 小区信息
     */
    @Override
    public R detailArea(Long areaId) {
        ComMngStructAreaDO comMngStructAreaDO = comMngStructAreaDAO.selectById(areaId);
        if (ObjectUtils.isEmpty(comMngStructAreaDO)) {
            return R.fail("小区不存在");
        }
        ComMngStructAreaVO comMngStructAreaVO=new ComMngStructAreaVO();
        BeanUtils.copyProperties(comMngStructAreaDO,comMngStructAreaVO);
        return R.ok(comMngStructAreaVO);
    }
    /**
     * 选择导入的小区
     *
     * @param param       小区名字 模糊查询
     * @param communityId 社区id
     * @return 小区集合 ComMngStructAreaVO
     */
    @Override
    public R listAreas(String param, Long communityId) {
        List<ComMngStructAreaVO> comMngStructAreaVOS=new ArrayList<>();
        comMngStructAreaVOS =comMngStructAreaDAO.listAreas(param,communityId);
        if (!ObjectUtils.isEmpty(comMngStructAreaVOS)) {
            comMngStructAreaVOS.forEach(comMngStructAreaVO -> {
                String roleConnector = comMngStructAreaVO.getRoleConnector();
                String roleFloor = comMngStructAreaVO.getRoleFloor();
                String roleDoor = comMngStructAreaVO.getRoleDoor();
                String doorNum="1-1-1-"+roleFloor+roleConnector+roleDoor;
                if (!ObjectUtils.isEmpty(roleFloor)) {
                    comMngStructAreaVO.setDoorNum(doorNum);
                }
            });
        }
        return R.ok(comMngStructAreaVOS);
    }
    /**
     * 检查小区是否已经批量设置过房屋并且返回小区房屋门号规则
     *
     * @param id 小区id
     * @return ComMngStructAreaVO
     */
    @Override
    public R checkAreaHouse(Long id) {
        ComMngStructAreaDO comMngStructAreaDO = comMngStructAreaDAO.selectById(id);
        if (null==comMngStructAreaDO) {
            return R.fail("小区不存在");
        }
        String roleFloor = comMngStructAreaDO.getRoleFloor();
        String roleDoor = comMngStructAreaDO.getRoleDoor();
        String areaCode = comMngStructAreaDO.getAreaCode();
        if (ObjectUtils.isEmpty(roleDoor)||ObjectUtils.isEmpty(roleFloor)) {
            return R.fail("小区未批量设置房屋,请先去社区后台配置");
        }
        Integer num=comMngStructAreaDAO.selectCountHouseByParentHouseCode(areaCode);
        if (num.intValue()==0) {
            return R.fail("小区未批量设置房屋,请先去社区后台配置");
        }
        ComMngStructAreaVO comMngStructAreaVO=new ComMngStructAreaVO();
        BeanUtils.copyProperties(comMngStructAreaDO,comMngStructAreaVO);
        return R.ok(comMngStructAreaVO);
    }
}