package com.panzhihua.service_community.service.impl; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import javax.annotation.Resource; import org.springframework.beans.BeanUtils; 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.extension.plugins.pagination.Page; import com.panzhihua.common.exceptions.ServiceException; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.SystemmanagementConfigVO; import com.panzhihua.common.model.vos.community.ComMngStructBuildTypeVO; import com.panzhihua.common.model.vos.community.ComMngStructOtherBuildVO; import com.panzhihua.service_community.dao.ComMngStructBuildTypeDAO; import com.panzhihua.service_community.dao.ComMngStructOtherBuildDAO; import com.panzhihua.service_community.model.dos.ComMngStructBuildTypeDO; import com.panzhihua.service_community.model.dos.ComMngStructOtherBuildDO; import com.panzhihua.service_community.service.ComMngStructOtherBuildService; /** * @program: springcloud_k8s_panzhihuazhihuishequ * @description: ComMngStructOtherBuildService * @author: huang.hongfa weixin hhf9596 qq 959656820 * @create: 2020-12-16 15:27 **/ @Service public class ComMngStructOtherBuildServiceImpl implements ComMngStructOtherBuildService { @Resource private ComMngStructOtherBuildDAO comMngStructOtherBuildDAO; @Resource private ComMngStructBuildTypeDAO comMngStructBuildTypeDAO; /** * 新增其他建筑 * * @param comMngStructOtherBuildVO * 建筑参数 * @return 新增结果 */ @Override public R addOtherbuild(ComMngStructOtherBuildVO comMngStructOtherBuildVO) { ComMngStructOtherBuildDO comMngStructOtherBuildDO = new ComMngStructOtherBuildDO(); BeanUtils.copyProperties(comMngStructOtherBuildVO, comMngStructOtherBuildDO); int insert = comMngStructOtherBuildDAO.insert(comMngStructOtherBuildDO); if (insert > 0) { return R.ok(); } return R.fail(); } /** * 查询所有建筑类型 * * @return 类型列表 */ @Override public R listBuildType(Long communityId) { List comMngStructBuildTypeVOS = new ArrayList<>(); List comMngStructBuildTypeDOS = comMngStructBuildTypeDAO.selectList(new QueryWrapper().lambda().eq(ComMngStructBuildTypeDO::getCommunityId,communityId)); if (!ObjectUtils.isEmpty(comMngStructBuildTypeDOS)) { comMngStructBuildTypeDOS.forEach(comMngStructBuildTypeDO -> { ComMngStructBuildTypeVO comMngStructBuildTypeVO = new ComMngStructBuildTypeVO(); BeanUtils.copyProperties(comMngStructBuildTypeDO, comMngStructBuildTypeVO); comMngStructBuildTypeVOS.add(comMngStructBuildTypeVO); }); } return R.ok(comMngStructBuildTypeVOS); } /** * 分页查询 其他建筑 * * @param comMngStructOtherBuildVO * 分页查询参数 * @return 查询结果 */ @Override public R pageOtherBuild(ComMngStructOtherBuildVO comMngStructOtherBuildVO) { Page page = new Page<>(); Long pageNum = comMngStructOtherBuildVO.getPageNum(); Long pageSize = comMngStructOtherBuildVO.getPageSize(); if (null == pageNum || 0 == pageNum) { pageNum = 1l; } if (null == pageSize || 0 == pageSize) { pageSize = 10l; } page.setSize(pageSize); page.setCurrent(pageNum); IPage iPage = comMngStructOtherBuildDAO.pageOtherBuild(page, comMngStructOtherBuildVO); return R.ok(iPage); } /** * 建筑类型 * * @param communityId * 社区id * @return 建筑集合 */ @Override public R listComMngStructBuildType(Long communityId) { List comMngStructBuildTypeDOS = comMngStructBuildTypeDAO.selectList(new QueryWrapper().lambda() .eq(ComMngStructBuildTypeDO::getCommunityId, communityId)); if (ObjectUtils.isEmpty(comMngStructBuildTypeDOS)) { return R.fail(); } List comMngStructBuildTypeVOList = new ArrayList<>(); comMngStructBuildTypeDOS.forEach(comMngStructBuildTypeDO -> { ComMngStructBuildTypeVO comMngStructBuildTypeVO = new ComMngStructBuildTypeVO(); BeanUtils.copyProperties(comMngStructBuildTypeDO, comMngStructBuildTypeVO); comMngStructBuildTypeVOList.add(comMngStructBuildTypeVO); }); return R.ok(comMngStructBuildTypeVOList); } /** * 增加删除建筑类型 * * @param systemmanagementConfigVO * 操作内容 * @return 操作结果 */ @Override @Transactional(rollbackFor = Exception.class) public R putComMngStructBuildType(SystemmanagementConfigVO systemmanagementConfigVO) { Long communityId = systemmanagementConfigVO.getCommunityId(); List comMngStructBuildTypeVOList = systemmanagementConfigVO.getComMngStructBuildTypeVOList(); if (ObjectUtils.isEmpty(comMngStructBuildTypeVOList)) { return R.fail("建筑类型不能为空"); } List collect = comMngStructBuildTypeVOList.stream() .map(comMngStructBuildTypeVO -> comMngStructBuildTypeVO.getId()).collect(Collectors.toList()); List buildTypdIds = comMngStructOtherBuildDAO.selectAllBuildTypeIds(communityId); buildTypdIds.forEach(aLong -> { if (!collect.contains(aLong)) { ComMngStructBuildTypeDO comMngStructBuildTypeDO = comMngStructBuildTypeDAO.selectById(aLong); if (!ObjectUtils.isEmpty(comMngStructBuildTypeDO)) { throw new ServiceException(comMngStructBuildTypeDO.getName() + "已经在使用无法删除"); } } }); comMngStructBuildTypeDAO.delete(new QueryWrapper().lambda() .eq(ComMngStructBuildTypeDO::getCommunityId, communityId)); comMngStructBuildTypeVOList.forEach(comMngStructBuildTypeVO -> { String name = comMngStructBuildTypeVO.getName(); if (ObjectUtils.isEmpty(name)) { throw new RuntimeException("建筑类型名称不能为空"); } ComMngStructBuildTypeDO comMngStructBuildTypeDO = new ComMngStructBuildTypeDO(); comMngStructBuildTypeDO.setCommunityId(communityId); comMngStructBuildTypeDO.setName(name); comMngStructBuildTypeDAO.insert(comMngStructBuildTypeDO); }); return R.ok(); } /** * 其他建筑详情 * * @param id * 主键id * @return 建筑内容 */ @Override public R detailOtherbuild(Long id) { ComMngStructOtherBuildDO comMngStructOtherBuildDO = comMngStructOtherBuildDAO.selectById(id); if (ObjectUtils.isEmpty(comMngStructOtherBuildDO)) { return R.fail("建筑不存在"); } Long typeId = comMngStructOtherBuildDO.getTypeId(); ComMngStructBuildTypeDO comMngStructBuildTypeDO = comMngStructBuildTypeDAO.selectById(typeId); if (ObjectUtils.isEmpty(comMngStructBuildTypeDO)) { return R.fail("建筑类型不存在"); } ComMngStructOtherBuildVO comMngStructOtherBuildVO = new ComMngStructOtherBuildVO(); BeanUtils.copyProperties(comMngStructOtherBuildDO, comMngStructOtherBuildVO); comMngStructOtherBuildVO.setBuileTypeName(comMngStructBuildTypeDO.getName()); return R.ok(comMngStructOtherBuildVO); } /** * 编辑其他建筑 * * @param comMngStructOtherBuildVO * 编辑内容 * @return 编辑结果 */ @Override public R putOtherbuild(ComMngStructOtherBuildVO comMngStructOtherBuildVO) { Long typeId = comMngStructOtherBuildVO.getTypeId(); ComMngStructBuildTypeDO comMngStructBuildTypeDO = comMngStructBuildTypeDAO.selectById(typeId); if (ObjectUtils.isEmpty(comMngStructBuildTypeDO)) { return R.fail("建筑类型不存在"); } ComMngStructOtherBuildDO comMngStructOtherBuildDO = new ComMngStructOtherBuildDO(); BeanUtils.copyProperties(comMngStructOtherBuildVO, comMngStructOtherBuildDO); int update = comMngStructOtherBuildDAO.updateById(comMngStructOtherBuildDO); if (update > 0) { return R.ok("编辑成功过"); } return R.fail("编辑失败"); } /** * 删除其他建筑 * * @param id * 主键 * @return 删除结果 */ @Override public R deleteOtherbuild(Long id) { int delete = comMngStructOtherBuildDAO.deleteById(id); if (delete > 0) { return R.ok(); } return R.fail("删除失败"); } }