101captain
2021-11-09 e7f03acfa5ee4ad4fd6d1ee9e9ae9a5655488f6d
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActWorkGuideServiceImpl.java
@@ -1,43 +1,62 @@
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 com.panzhihua.common.utlis.AgeUtils;
import com.panzhihua.common.utlis.StringUtils;
import com.panzhihua.service_community.dao.ComActWorkGuideClassifyDAO;
import com.panzhihua.service_community.model.dos.ComActWorkGuideClassifyDO;
import com.panzhihua.common.model.vos.community.ComActWorkGuideAppletsVO;
import com.panzhihua.common.model.vos.community.ComActWorkGuideDetailAppletsVO;
import com.panzhihua.service_community.dao.ComActWorkGuideClassifyDAO;
import com.panzhihua.service_community.service.ComActWorkGuideClassifyService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.common.model.dtos.community.ComActWorkGuideDTO;
import com.panzhihua.common.model.dtos.community.PageActWorkGuideDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.ComActWorkGuideMaterialVO;
import com.panzhihua.common.model.vos.community.ComActWorkGuideVO;
import com.panzhihua.common.utlis.DifferentLongListUtil;
import com.panzhihua.service_community.dao.ComActDAO;
import com.panzhihua.service_community.dao.ComActWorkGuideDAO;
import com.panzhihua.service_community.dao.ComActWorkGuideMaterialDAO;
import com.panzhihua.service_community.model.dos.ComActDO;
import com.panzhihua.service_community.model.dos.ComActWorkGuideDO;
import com.panzhihua.service_community.model.dos.ComActWorkGuideMaterialDO;
import com.panzhihua.service_community.service.ComActWorkGuideService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/**
 * @auther llming
 * @describe 办事指南
 */
@Service
public class ComActWorkGuideServiceImpl extends ServiceImpl<ComActWorkGuideDAO, ComActWorkGuideDO> implements ComActWorkGuideService {
public class ComActWorkGuideServiceImpl extends ServiceImpl<ComActWorkGuideDAO, ComActWorkGuideDO>
    implements ComActWorkGuideService {
    static String AK = "W3x8DhCWKc2UFIwYgclpRBdL6BeGLLQt"; // 百度地图密钥
    @Resource
    ComActWorkGuideMaterialDAO workGuideMaterialDAO;
    @Resource
    private ComActWorkGuideClassifyDAO comActWorkGuideClassifyDAO;
    @Resource
    ComActDAO comActDAO;
    @Override
    public R addWorkGuide(ComActWorkGuideVO workGuideVO, Long userId) {
    public R addWorkGuide(ComActWorkGuideDTO workGuideDTO, Long userId) {
        ComActWorkGuideDO comActWorkGuideDO = new ComActWorkGuideDO();
        BeanUtils.copyProperties(workGuideVO, comActWorkGuideDO);
        BeanUtils.copyProperties(workGuideDTO, comActWorkGuideDO);
        comActWorkGuideDO.setCreateBy(userId);
        this.baseMapper.insert(comActWorkGuideDO);
        //保存办事指南材料
        workGuideVO.getMaterials().forEach(material -> {
        // 保存办事指南材料
        workGuideDTO.getMaterials().forEach(material -> {
            ComActWorkGuideMaterialDO workGuideMaterialDO = new ComActWorkGuideMaterialDO();
            workGuideMaterialDO.setMaterialName(material.getMaterialName());
            workGuideMaterialDO.setWorkGuideId(comActWorkGuideDO.getId());
@@ -47,44 +66,44 @@
    }
    @Override
    public R editWorkGuide(ComActWorkGuideVO workGuideVO, Long userId) {
        if (workGuideVO.getId() == 0L) {
    public R editWorkGuide(ComActWorkGuideDTO workGuideDTO, Long userId) {
        if (workGuideDTO.getId() == 0L) {
            return R.fail("Id有误!");
        }
        ComActWorkGuideDO workGuideDO = this.baseMapper.selectById(workGuideVO.getId());
        ComActWorkGuideDO workGuideDO = this.baseMapper.selectById(workGuideDTO.getId());
        if (workGuideDO == null) {
            return R.fail("Id有误!");
        }
        BeanUtils.copyProperties(workGuideVO, workGuideDO);
        BeanUtils.copyProperties(workGuideDTO, workGuideDO);
        workGuideDO.setUpdateBy(userId);
        this.baseMapper.updateById(workGuideDO);
        if (workGuideVO.getMaterials().size() == 0) {//若编辑材料为null,执行删除操作
        if (workGuideDTO.getMaterials().size() == 0) {// 若编辑材料为null,执行删除操作
            workGuideMaterialDAO.delete(new LambdaQueryWrapper<ComActWorkGuideMaterialDO>()
                    .eq(ComActWorkGuideMaterialDO::getWorkGuideId, workGuideVO.getId()));
        } else {//若材料不为空,但是少了数据条数,也要执行删除
            List<ComActWorkGuideMaterialDO> workGuideMaterialDOS = workGuideMaterialDAO.selectList(new LambdaQueryWrapper<ComActWorkGuideMaterialDO>()
                    .eq(ComActWorkGuideMaterialDO::getWorkGuideId, workGuideVO.getId()));
            //1、筛选vo里面和db里,需要删除的材料数据
            List<Long> voMaterialIds = workGuideVO.getMaterials().stream()
                    .filter(materialVo -> materialVo.getId() != null)
                    .map(ComActWorkGuideMaterialVO::getId)
                    .collect(Collectors.toList());
                .eq(ComActWorkGuideMaterialDO::getWorkGuideId, workGuideDTO.getId()));
        } else {// 若材料不为空,但是少了数据条数,也要执行删除
            List<ComActWorkGuideMaterialDO> workGuideMaterialDOS =
                workGuideMaterialDAO.selectList(new LambdaQueryWrapper<ComActWorkGuideMaterialDO>()
                    .eq(ComActWorkGuideMaterialDO::getWorkGuideId, workGuideDTO.getId()));
            // 1、筛选vo里面和db里,需要删除的材料数据
            List<Long> voMaterialIds =
                workGuideDTO.getMaterials().stream().filter(materialVo -> materialVo.getId() != null)
                    .map(ComActWorkGuideMaterialVO::getId).collect(Collectors.toList());
            List<Long> deleteMaterialIds = workGuideMaterialDOS.stream()
                    .filter(workGuideMaterialDO -> !voMaterialIds.contains(workGuideMaterialDO.getId()))
                    .map(ComActWorkGuideMaterialDO::getId)
                    .collect(Collectors.toList());
                .filter(workGuideMaterialDO -> !voMaterialIds.contains(workGuideMaterialDO.getId()))
                .map(ComActWorkGuideMaterialDO::getId).collect(Collectors.toList());
            if (deleteMaterialIds.size() != 0) {
                workGuideMaterialDAO.deleteBatchIds(deleteMaterialIds);
            }
            workGuideVO.getMaterials().forEach(materialsVO -> {
            workGuideDTO.getMaterials().forEach(materialsVO -> {
                if (materialsVO.getId() != null && materialsVO.getId() != 0L) {
                    ComActWorkGuideMaterialDO workGuideMaterialDO1 = workGuideMaterialDOS.stream().filter(workGuideMaterialDO -> workGuideMaterialDO.getId()
                            .equals(materialsVO.getId())).findFirst().orElse(null);
                    if (workGuideMaterialDO1 != null) {//2、如果db有,执行编辑
                    ComActWorkGuideMaterialDO workGuideMaterialDO1 = workGuideMaterialDOS.stream()
                        .filter(workGuideMaterialDO -> workGuideMaterialDO.getId().equals(materialsVO.getId()))
                        .findFirst().orElse(null);
                    if (workGuideMaterialDO1 != null) {// 2、如果db有,执行编辑
                        workGuideMaterialDO1.setMaterialName(materialsVO.getMaterialName());
                        workGuideMaterialDAO.updateById(workGuideMaterialDO1);
                    }
                } else {//3、如果db没有,执行新增
                } else {// 3、如果db没有,执行新增
                    ComActWorkGuideMaterialDO newWorkGuideMaterialDO = new ComActWorkGuideMaterialDO();
                    newWorkGuideMaterialDO.setMaterialName(materialsVO.getMaterialName());
                    newWorkGuideMaterialDO.setWorkGuideId(workGuideDO.getId());
@@ -96,14 +115,23 @@
    }
    @Override
    public R detailWorkGuide(Long workGuideId) {
    public R detailWorkGuide(Long workGuideId, Long communityId) {
        ComActWorkGuideDO workGuideDO = this.baseMapper.selectById(workGuideId);
        if (workGuideDO == null) {
            return R.fail("Id有误!");
        }
        ComActWorkGuideVO vo = new ComActWorkGuideVO();
        BeanUtils.copyProperties(workGuideDO, vo);
        List<ComActWorkGuideMaterialDO> workGuideMaterialDOS = workGuideMaterialDAO.selectList(new LambdaQueryWrapper<ComActWorkGuideMaterialDO>()
        ComActDO comActDO = comActDAO.selectById(communityId);
        if (comActDO != null) {
            vo.setAddress(comActDO.getAddress());
            vo.setPhone(comActDO.getContactsPhone());
            vo.setLon(comActDO.getLng());
            vo.setLat(comActDO.getLat());
        }
        List<ComActWorkGuideMaterialDO> workGuideMaterialDOS =
            workGuideMaterialDAO.selectList(new LambdaQueryWrapper<ComActWorkGuideMaterialDO>()
                .eq(ComActWorkGuideMaterialDO::getWorkGuideId, workGuideId));
        workGuideMaterialDOS.forEach(workGuideMaterialDO -> {
            ComActWorkGuideMaterialVO workGuideMaterialVO = new ComActWorkGuideMaterialVO();
@@ -128,6 +156,14 @@
        page.setSize(pageSize);
        page.setCurrent(pageNum);
        IPage<ComActWorkGuideVO> iPage = this.baseMapper.pageWorkGuide(page, pageActWorkGuideDTO);
        if (!iPage.getRecords().isEmpty()) {
            iPage.getRecords().forEach(comActWorkGuideVO -> {
                ComActWorkGuideClassifyDO comActWorkGuideClassifyDO = comActWorkGuideClassifyDAO.selectById(comActWorkGuideVO.getClassify());
                if (comActWorkGuideClassifyDO != null) {
                    comActWorkGuideVO.setClassifyName(comActWorkGuideClassifyDO.getClassifyName());
                }
            });
        }
        return R.ok(iPage);
    }
@@ -135,7 +171,40 @@
    public R delectWorkGuide(Long workGuideId) {
        this.baseMapper.deleteById(workGuideId);
        workGuideMaterialDAO.delete(new LambdaQueryWrapper<ComActWorkGuideMaterialDO>()
                .eq(ComActWorkGuideMaterialDO::getWorkGuideId, workGuideId));
            .eq(ComActWorkGuideMaterialDO::getWorkGuideId, workGuideId));
        return R.ok();
    }
    /**
     * 办事指南列表-按分类查询
     * @param pageActWorkGuideDTO   请求参数
     * @return  办事指南分类列表
     */
    @Override
    public R listWorkGuide(PageActWorkGuideDTO pageActWorkGuideDTO){
        //结果数据集合
        List<ComActWorkGuideAppletsVO> resultList = new ArrayList<>();
        List<ComActWorkGuideAppletsVO> workGuideClassifyList = comActWorkGuideClassifyDAO.listWorkGuideClassify();
        //通过办事指南分类查询分类下办事指南
        workGuideClassifyList.forEach(workGuideClassify -> {
            List<ComActWorkGuideDetailAppletsVO> workGuideList = this.baseMapper.getWorkGuideListByClassifyId(workGuideClassify.getId(),10L);
            if(workGuideList != null && workGuideList.size() > 0){
                workGuideClassify.setGuideDetailList(workGuideList);
                //分类下办事指南数据大于0加入到结果集中向小程序展示
                resultList.add(workGuideClassify);
            }
        });
        return R.ok(resultList);
    }
    /**
     * 根据办事指南分类id查询办事指南列表
     * @param classifyId   办事指南分类id
     * @return  办事指南列表数据
     */
    @Override
    public R listWorkGuideByClassifyId(Long classifyId){
        return R.ok(this.baseMapper.getWorkGuideListByClassifyId(classifyId,null));
    }
}