From c88d1658a2b6b51ed1a81c3be3e9102b661970f3 Mon Sep 17 00:00:00 2001
From: luoxinwu <934743099@qq.com>
Date: 星期二, 05 三月 2024 09:42:37 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/haucheng_panzhihua' into haucheng_panzhihua

---
 springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/PartyOrganizationServiceImpl.java |  331 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 316 insertions(+), 15 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/PartyOrganizationServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/PartyOrganizationServiceImpl.java
index 8953f03..01c4fa1 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/PartyOrganizationServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/PartyOrganizationServiceImpl.java
@@ -1,16 +1,29 @@
 package com.panzhihua.service_dangjian.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.panzhihua.common.model.vos.partybuilding.PartyOrganizationVO;
-import com.panzhihua.service_dangjian.dao.ComPbOrgDAO;
-import com.panzhihua.service_dangjian.model.dos.ComPbOrgDO;
-import com.panzhihua.service_dangjian.service.PartyOrganizationService;
-import org.springframework.stereotype.Service;
-import org.springframework.util.ObjectUtils;
-
-import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
+
+import javax.annotation.Resource;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.ObjectUtils;
+import org.springframework.util.StringUtils;
+
+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.model.dtos.partybuilding.ComListPartyDTO;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.partybuilding.west.PartyOrganizationVO;
+import com.panzhihua.service_dangjian.dao.ComPbMemberDAO;
+import com.panzhihua.service_dangjian.dao.ComPbOrgDAO;
+import com.panzhihua.service_dangjian.model.dos.ComPbMemberDO;
+import com.panzhihua.service_dangjian.model.dos.ComPbOrgDO;
+import com.panzhihua.service_dangjian.service.PartyOrganizationService;
 
 /**
  * @program: springcloud_k8s_panzhihuazhihuishequ
@@ -22,23 +35,311 @@
 public class PartyOrganizationServiceImpl implements PartyOrganizationService {
     @Resource
     private ComPbOrgDAO comPbOrgDAO;
+    @Resource
+    private ComPbMemberDAO comPbMemberDAO;
+
     /**
-     * 平台所有党组织
+     * 社区所有启用的党组织列表
      *
      * @return 党组织集合
      */
     @Override
     public List<PartyOrganizationVO> listPartyOrganization(Long communityId) {
-        List<PartyOrganizationVO> partyOrganizationVOS=new ArrayList<>();
-        List<ComPbOrgDO> comPbOrgDOS = comPbOrgDAO.selectList(new QueryWrapper<ComPbOrgDO>().lambda().eq(ComPbOrgDO::getCommunityId,communityId));
+        List<PartyOrganizationVO> partyOrganizationVOS = new ArrayList<>();
+        List<ComPbOrgDO> comPbOrgDOS = comPbOrgDAO.selectList(new QueryWrapper<ComPbOrgDO>().lambda()
+            .eq(ComPbOrgDO::getCommunityId, communityId).eq(ComPbOrgDO::getStatus, 1));
         if (!ObjectUtils.isEmpty(comPbOrgDOS)) {
             comPbOrgDOS.forEach(comPbOrgDO -> {
-                PartyOrganizationVO partyOrganizationVO=new PartyOrganizationVO();
-                partyOrganizationVO.setId(comPbOrgDO.getId());
-                partyOrganizationVO.setName(comPbOrgDO.getName());
+                PartyOrganizationVO partyOrganizationVO = new PartyOrganizationVO();
+                BeanUtils.copyProperties(comPbOrgDO,partyOrganizationVO);
                 partyOrganizationVOS.add(partyOrganizationVO);
             });
         }
         return partyOrganizationVOS;
     }
+
+    /**
+     * 社区所有党组织列表
+     *
+     * @return 党组织集合
+     */
+    @Override
+    public R listPartyOrganizationAll(PartyOrganizationVO partyOrganizationVO) {
+        IPage<PartyOrganizationVO> orgPage = this.comPbOrgDAO.listPartyOrganizationAll(
+            new Page(partyOrganizationVO.getPageNum(), partyOrganizationVO.getPageSize()), partyOrganizationVO);
+        if (!ObjectUtils.isEmpty(orgPage.getRecords()) && StringUtils.isEmpty(partyOrganizationVO.getKeyWord())) {
+            //遍历第一级党组织列表
+            orgPage.getRecords().forEach(org -> {
+                partyOrganizationVO.setParentId(org.getId());
+                List<PartyOrganizationVO> twoChildList = comPbOrgDAO.getChildOrgList(partyOrganizationVO);
+                if(!ObjectUtils.isEmpty(twoChildList)){
+                    //遍历第二级党组织列表
+                    twoChildList.forEach(twoChild -> {
+                        partyOrganizationVO.setParentId(twoChild.getId());
+                        List<PartyOrganizationVO> thirdChildList = comPbOrgDAO.getChildOrgList(partyOrganizationVO);
+                        if(!ObjectUtils.isEmpty(thirdChildList)){
+                            //遍历第三级党组织列表
+                            thirdChildList.forEach(thirdChild -> {
+                                partyOrganizationVO.setParentId(thirdChild.getId());
+                                List<PartyOrganizationVO> fourChildList = comPbOrgDAO.getChildOrgList(partyOrganizationVO);
+                                if(!ObjectUtils.isEmpty(fourChildList)){
+                                    fourChildList.forEach(fourChild -> {
+                                        partyOrganizationVO.setParentId(fourChild.getId());
+                                        List<PartyOrganizationVO> fiveChildList = comPbOrgDAO.getChildOrgList(partyOrganizationVO);
+                                        fourChild.setCountPerson(fourChild.getCountPerson() + fiveChildList.stream().mapToInt(five -> five.getCountPerson()).sum());
+                                        fourChild.setChildList(fiveChildList);
+                                    });
+                                }
+                                thirdChild.setCountPerson(thirdChild.getCountPerson() + fourChildList.stream().mapToInt(four -> four.getCountPerson()).sum());
+                                thirdChild.setChildList(fourChildList);
+                            });
+                        }
+                        twoChild.setCountPerson(twoChild.getCountPerson() + thirdChildList.stream().mapToInt(third -> third.getCountPerson()).sum());
+                        twoChild.setChildList(thirdChildList);
+                    });
+                }
+                org.setCountPerson(org.getCountPerson() + twoChildList.stream().mapToInt(two -> two.getCountPerson()).sum());
+                org.setChildList(twoChildList);
+            });
+        }
+        return R.ok(orgPage);
+    }
+
+    /**
+     * 新增党支部
+     *
+     * @param partyOrganizationVO
+     *            党支部基本信息
+     * @return 新增结果
+     */
+    @Override
+    public R addPartyOrganization(PartyOrganizationVO partyOrganizationVO) {
+        ComPbOrgDO comPbOrgDO = new ComPbOrgDO();
+        BeanUtils.copyProperties(partyOrganizationVO, comPbOrgDO);
+        comPbOrgDO.setLevel(partyOrganizationVO.getType());
+        if(partyOrganizationVO.getType().equals(ComPbOrgDO.Type.JCDW)){
+            comPbOrgDO.setParentId(0L);
+        }
+        ComPbOrgDO oldComPbOrgDO = null;
+        int insert = comPbOrgDAO.insert(comPbOrgDO);
+        if (insert > 0) {
+            switch (partyOrganizationVO.getType()){
+                case ComPbOrgDO.Type.JCDW:
+                    comPbOrgDO.setParentId(0L);
+                    comPbOrgDO.setOneId(comPbOrgDO.getId());
+                    break;
+                case ComPbOrgDO.Type.EJJCDW:
+                    comPbOrgDO.setOneId(partyOrganizationVO.getParentId());
+                    comPbOrgDO.setTwoId(comPbOrgDO.getId());
+                    break;
+                case ComPbOrgDO.Type.DZZ:
+                    oldComPbOrgDO = this.comPbOrgDAO.selectById(partyOrganizationVO.getParentId());
+                    if(oldComPbOrgDO != null){
+                        comPbOrgDO.setOneId(oldComPbOrgDO.getOneId());
+                        comPbOrgDO.setTwoId(oldComPbOrgDO.getTwoId());
+                    }
+                    comPbOrgDO.setThirdId(comPbOrgDO.getId());
+                    break;
+                case ComPbOrgDO.Type.DZB:
+                    oldComPbOrgDO = this.comPbOrgDAO.selectById(partyOrganizationVO.getParentId());
+                    if(oldComPbOrgDO != null){
+                        comPbOrgDO.setOneId(oldComPbOrgDO.getOneId());
+                        comPbOrgDO.setTwoId(oldComPbOrgDO.getTwoId());
+                        comPbOrgDO.setThirdId(oldComPbOrgDO.getThirdId());
+                    }
+                    comPbOrgDO.setFourId(comPbOrgDO.getId());
+                    break;
+                case ComPbOrgDO.Type.DXZ:
+                    oldComPbOrgDO = this.comPbOrgDAO.selectById(partyOrganizationVO.getParentId());
+                    if(oldComPbOrgDO != null){
+                        comPbOrgDO.setOneId(oldComPbOrgDO.getOneId());
+                        comPbOrgDO.setTwoId(oldComPbOrgDO.getTwoId());
+                        comPbOrgDO.setThirdId(oldComPbOrgDO.getThirdId());
+                        comPbOrgDO.setFourId(oldComPbOrgDO.getFourId());
+                    }
+                    comPbOrgDO.setFiveId(comPbOrgDO.getId());
+                    break;
+                default:
+                    break;
+            }
+            this.comPbOrgDAO.updateById(comPbOrgDO);
+            return R.ok();
+        }
+        return R.fail();
+    }
+
+    /**
+     * 编辑党支部
+     *
+     * @param partyOrganizationVO
+     *            党支部基本信息
+     * @return 编辑结果
+     */
+    @Override
+    public R updatePartyOrganization(PartyOrganizationVO partyOrganizationVO) {
+        ComPbOrgDO comPbOrgDO = new ComPbOrgDO();
+        BeanUtils.copyProperties(partyOrganizationVO, comPbOrgDO);
+        comPbOrgDO.setLevel(partyOrganizationVO.getType());
+        ComPbOrgDO oldComPbOrgDO = null;
+        int insert = comPbOrgDAO.updateById(comPbOrgDO);
+        if (insert > 0) {
+            switch (partyOrganizationVO.getType()){
+                case ComPbOrgDO.Type.JCDW:
+                    comPbOrgDO.setParentId(0L);
+                    comPbOrgDO.setOneId(comPbOrgDO.getId());
+                    break;
+                case ComPbOrgDO.Type.EJJCDW:
+                    comPbOrgDO.setOneId(partyOrganizationVO.getParentId());
+                    comPbOrgDO.setTwoId(comPbOrgDO.getId());
+                    break;
+                case ComPbOrgDO.Type.DZZ:
+                    oldComPbOrgDO = this.comPbOrgDAO.selectById(partyOrganizationVO.getParentId());
+                    if(oldComPbOrgDO != null){
+                        comPbOrgDO.setOneId(oldComPbOrgDO.getOneId());
+                        comPbOrgDO.setTwoId(oldComPbOrgDO.getTwoId());
+                    }
+                    comPbOrgDO.setThirdId(comPbOrgDO.getId());
+                    break;
+                case ComPbOrgDO.Type.DZB:
+                    oldComPbOrgDO = this.comPbOrgDAO.selectById(partyOrganizationVO.getParentId());
+                    if(oldComPbOrgDO != null){
+                        comPbOrgDO.setOneId(oldComPbOrgDO.getOneId());
+                        comPbOrgDO.setTwoId(oldComPbOrgDO.getTwoId());
+                        comPbOrgDO.setThirdId(oldComPbOrgDO.getThirdId());
+                    }
+                    comPbOrgDO.setFourId(comPbOrgDO.getId());
+                    break;
+                case ComPbOrgDO.Type.DXZ:
+                    oldComPbOrgDO = this.comPbOrgDAO.selectById(partyOrganizationVO.getParentId());
+                    if(oldComPbOrgDO != null){
+                        comPbOrgDO.setOneId(oldComPbOrgDO.getOneId());
+                        comPbOrgDO.setTwoId(oldComPbOrgDO.getTwoId());
+                        comPbOrgDO.setThirdId(oldComPbOrgDO.getThirdId());
+                        comPbOrgDO.setFourId(oldComPbOrgDO.getFourId());
+                    }
+                    comPbOrgDO.setFiveId(comPbOrgDO.getId());
+                    break;
+                default:
+                    break;
+            }
+            return R.ok();
+        }
+        return R.fail();
+    }
+
+    /**
+     * 启用,禁用党支部
+     *
+     * @param partyOrganizationVO
+     *            党支部基本信息
+     * @return 编辑结果
+     */
+    @Override
+    public R resetPartyOrganization(PartyOrganizationVO partyOrganizationVO) {
+        ComPbOrgDO comPbOrgDO = comPbOrgDAO.selectById(partyOrganizationVO.getId());
+        if (ObjectUtils.isEmpty(comPbOrgDO)) {
+            return R.fail("没有此党支部");
+        }
+        comPbOrgDO.setStatus(partyOrganizationVO.getStatus());
+        int insert = comPbOrgDAO.updateById(comPbOrgDO);
+        if (insert > 0) {
+            return R.ok();
+        }
+        return R.fail();
+    }
+
+    /**
+     * 删除党支部
+     *
+     * @param partyOrganizationVO
+     *            党支部基本信息
+     * @return 编辑结果
+     */
+    @Override
+    public R deletePartyOrganization(PartyOrganizationVO partyOrganizationVO) {
+        Integer count = comPbOrgDAO.selectCount(new QueryWrapper<ComPbOrgDO>().lambda().eq(ComPbOrgDO::getParentId,partyOrganizationVO.getId()));
+        if(count > 0){
+            return R.fail("该组织下已有子组织,不能删除!");
+        }
+        List<ComPbMemberDO> comPbMemberList = comPbMemberDAO.selectList(
+            new QueryWrapper<ComPbMemberDO>().lambda().eq(ComPbMemberDO::getOrgId, partyOrganizationVO.getId()));
+        if (!CollectionUtils.isEmpty(comPbMemberList) && comPbMemberList.size() > 0) {
+            return R.fail("该党组织下已有党员,不能删除!");
+        }
+        int insert = comPbOrgDAO.deleteById(partyOrganizationVO.getId());
+        if (insert > 0) {
+            return R.ok();
+        }
+        return R.fail();
+    }
+
+    @Override
+    public List<PartyOrganizationVO> listPartyOrganizationByApp(ComListPartyDTO comListPartyDTO) {
+        List<PartyOrganizationVO> partyOrganizationVOS = new ArrayList<>();
+        QueryWrapper<ComPbOrgDO> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(ComPbOrgDO::getStatus, 1);
+        if (comListPartyDTO.getCommunityId() != null) {
+            queryWrapper.lambda().eq(ComPbOrgDO::getCommunityId, comListPartyDTO.getCommunityId());
+        }
+        if (!StringUtils.isEmpty(comListPartyDTO.getName())) {
+            queryWrapper.lambda().like(ComPbOrgDO::getName, comListPartyDTO.getName());
+        }
+        List<ComPbOrgDO> comPbOrgDOS = comPbOrgDAO.selectList(queryWrapper);
+        if (!ObjectUtils.isEmpty(comPbOrgDOS)) {
+            comPbOrgDOS.forEach(comPbOrgDO -> {
+                PartyOrganizationVO partyOrganizationVO = new PartyOrganizationVO();
+                partyOrganizationVO.setId(comPbOrgDO.getId());
+                partyOrganizationVO.setName(comPbOrgDO.getName());
+                partyOrganizationVO.setStatus(comPbOrgDO.getStatus());
+                partyOrganizationVOS.add(partyOrganizationVO);
+            });
+        }
+        return partyOrganizationVOS;
+    }
+
+    /**
+     * 查询所有党组织列表
+     * @param partyOrganizationVO   请求参数
+     * @return  党组织列表
+     */
+    @Override
+    public R getPbOrgAllList(PartyOrganizationVO partyOrganizationVO){
+        List<PartyOrganizationVO> orgList = this.comPbOrgDAO.getPbOrgAllList(partyOrganizationVO);
+        if (!ObjectUtils.isEmpty(orgList) && StringUtils.isEmpty(partyOrganizationVO.getKeyWord())) {
+            //遍历第一级党组织列表
+            orgList.forEach(org -> {
+                partyOrganizationVO.setParentId(org.getId());
+                List<PartyOrganizationVO> twoChildList = comPbOrgDAO.getChildOrgList(partyOrganizationVO);
+                if(!ObjectUtils.isEmpty(twoChildList)){
+                    //遍历第二级党组织列表
+                    twoChildList.forEach(twoChild -> {
+                        partyOrganizationVO.setParentId(twoChild.getId());
+                        List<PartyOrganizationVO> thirdChildList = comPbOrgDAO.getChildOrgList(partyOrganizationVO);
+                        if(!ObjectUtils.isEmpty(thirdChildList)){
+                            //遍历第三级党组织列表
+                            thirdChildList.forEach(thirdChild -> {
+                                partyOrganizationVO.setParentId(thirdChild.getId());
+                                List<PartyOrganizationVO> fourChildList = comPbOrgDAO.getChildOrgList(partyOrganizationVO);
+                                if(!ObjectUtils.isEmpty(fourChildList)){
+                                    fourChildList.forEach(fourChild -> {
+                                        partyOrganizationVO.setParentId(fourChild.getId());
+                                        List<PartyOrganizationVO> fiveChildList = comPbOrgDAO.getChildOrgList(partyOrganizationVO);
+                                        fourChild.setCountPerson(fourChild.getCountPerson() + fiveChildList.stream().mapToInt(five -> five.getCountPerson()).sum());
+                                        fourChild.setChildList(fiveChildList);
+                                    });
+                                }
+                                thirdChild.setCountPerson(thirdChild.getCountPerson() + fourChildList.stream().mapToInt(four -> four.getCountPerson()).sum());
+                                thirdChild.setChildList(fourChildList);
+                            });
+                        }
+                        twoChild.setCountPerson(twoChild.getCountPerson() + thirdChildList.stream().mapToInt(third -> third.getCountPerson()).sum());
+                        twoChild.setChildList(thirdChildList);
+                    });
+                }
+                org.setCountPerson(org.getCountPerson() + twoChildList.stream().mapToInt(two -> two.getCountPerson()).sum());
+                org.setChildList(twoChildList);
+            });
+        }
+        return R.ok(orgList);
+    }
 }

--
Gitblit v1.7.1