From 5cc66034f6d2dba30d2132078b2730f1dd4abf86 Mon Sep 17 00:00:00 2001
From: huanghongfa <huanghongfa123456>
Date: 星期六, 31 七月 2021 21:00:56 +0800
Subject: [PATCH] 修改bug

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngPopulationServiceImpl.java |  129 ++++++++++++++++++++++++++++++++----------
 1 files changed, 97 insertions(+), 32 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngPopulationServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngPopulationServiceImpl.java
index f37dfe6..be123cc 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngPopulationServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngPopulationServiceImpl.java
@@ -55,6 +55,7 @@
 import com.panzhihua.service_community.service.ComMngPopulationService;
 import com.panzhihua.service_community.service.ComMngVillageService;
 import com.panzhihua.service_community.service.EventResourceService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -71,6 +72,7 @@
 /**
  * 实有人口Service实现类
  */
+@Slf4j
 @Service
 public class ComMngPopulationServiceImpl extends ServiceImpl<ComMngPopulationDAO, ComMngPopulationDO> implements ComMngPopulationService {
     @Resource
@@ -298,14 +300,21 @@
                 comMngPopulationVO.setAgeEndTime(ageEndTime);
             }
         }
-        if (comMngPopulationVO.getAgeStartTime().equals(comMngPopulationVO.getAgeEndTime())) {
-            Date endAge = DateUtils.stringToDate(comMngPopulationVO.getAgeEndTime(),new SimpleDateFormat("yyyy-MM-dd"));
-            String ageStartTime = DateUtils.getDateFormatString(DateUtils.yearAddNum(endAge, -1),"yyyy-MM-dd");
-            if (StringUtils.isNotEmpty(ageStartTime)) {
-                comMngPopulationVO.setAgeStartTimeEnd(ageStartTime);
+        if (comMngPopulationVO.getAgeStartTime() !=null && !"".equals(comMngPopulationVO.getAgeStartTime()) && comMngPopulationVO.getAgeEndTime() !=null && !"".equals(comMngPopulationVO.getAgeEndTime())){
+            if (comMngPopulationVO.getAgeStartTime().equals(comMngPopulationVO.getAgeEndTime())) {
+                Date endAge = DateUtils.stringToDate(comMngPopulationVO.getAgeEndTime(), new SimpleDateFormat("yyyy-MM-dd"));
+                String ageStartTime = DateUtils.getDateFormatString(DateUtils.yearAddNum(endAge, -1), "yyyy-MM-dd");
+                if (StringUtils.isNotEmpty(ageStartTime)) {
+                    comMngPopulationVO.setAgeStartTimeEnd(ageStartTime);
+                }
+            } else {
+                Date endAge = DateUtils.stringToDate(comMngPopulationVO.getAgeEndTime(), new SimpleDateFormat("yyyy-MM-dd"));
+                String ageStartTime = DateUtils.getDateFormatString(DateUtils.yearAddNum(endAge, -1), "yyyy-MM-dd");
+                if (StringUtils.isNotEmpty(ageStartTime)) {
+                    comMngPopulationVO.setAgeEndTimeEnd(ageStartTime);
+                }
             }
         }
-
         IPage<ComMngPopulationVO> iPage = populationDAO.pagePopulation(page, comMngPopulationVO);
         if (!iPage.getRecords().isEmpty()) {
             iPage.getRecords().forEach(populDO -> {
@@ -354,7 +363,8 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public R listSavePopulation(List<ComMngPopulationServeExcelVO> list, Long communityId) throws Exception {
-        List<ComMngPopulationImportErrorVO> populationImportErrorVOList = new ArrayList<>();
+        List<ComMngPopulationMistakeExcelVO> mistakes = new ArrayList<>();
+//        List<ComMngPopulationImportErrorVO> populationImportErrorVOList = new ArrayList<>();
         //查询该社区
         ComActDO comActDO = comActDAO.selectById(communityId);
         //查询该社区的省市区地址
@@ -386,11 +396,16 @@
             //查询小区街路巷是否存在
             ComMngVillageDO comMngVillageDO = comActVillageDAO.selectOne(new QueryWrapper<ComMngVillageDO>().eq("alley", vo.getRoad()).eq("house_num", vo.getDoorNo()).eq("community_id", communityId));
             if (comMngVillageDO == null) {
-                ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
-                importErrorVO.setErrorMsg("街路巷或小区号不存在");
-                importErrorVO.setErrorPosition("街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
-                populationImportErrorVOList.add(importErrorVO);
+//                ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
+//                importErrorVO.setErrorMsg("街路巷或小区号不存在,请先在“小区管理”中添加该小区");
+//                importErrorVO.setErrorPosition("街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
+//                populationImportErrorVOList.add(importErrorVO);
 //                index++;
+                ComMngPopulationMistakeExcelVO mistake = new ComMngPopulationMistakeExcelVO();
+                BeanUtils.copyProperties(vo,mistake);
+                setMistake(mistake, vo);
+                mistake.setMistake("街路巷或小区号不存在,请先在“小区管理”中添加该小区:街路巷:"+ vo.getRoad() +",小区号:" + vo.getDoorNo());
+                mistakes.add(mistake);
                 continue;
             }
 
@@ -419,9 +434,10 @@
             }
             String cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
             //判断实有人口是否已存在
-            ComMngPopulationDO populationDO = this.baseMapper.selectOne(new QueryWrapper<ComMngPopulationDO>().lambda()
-                    .eq(ComMngPopulationDO::getCardNo, cardNoAES));
-            if (populationDO == null) {
+            List<ComMngPopulationDO> populationDOList = this.baseMapper.selectList(new QueryWrapper<ComMngPopulationDO>().lambda()
+                    .eq(ComMngPopulationDO::getCardNo, cardNoAES).eq(ComMngPopulationDO::getActId,communityId));
+            ComMngPopulationDO populationDO = null;
+            if (populationDOList.isEmpty()) {
                 //不存在实有人口,则新增
                 populationDO = savePopulationDO(vo, comActDO, comMngVillageDO);
 //                ComMngPopulationHouseUserDO comMngPopulationHouseUserDO = savePopulationHouseUser(vo, populationDO, populationHouseDO);
@@ -430,7 +446,7 @@
 //                if (vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())) {
 //                    populationDO = updatePopulationDO(vo, populationDO);
 //                }
-                populationDO = updatePopulationDO(vo, populationDO);
+                populationDO = updatePopulationDO(vo, comActDO, populationDOList.get(0));
             }
 
             //处理实有人口房屋居住信息
@@ -445,6 +461,7 @@
                     populationHouseUserDO.setPopulId(populationDO.getId());
                     populationHouseUserDO.setRelation(vo.getRelation());
                     populationHouseUserDO.setRelationId(vo.getIsRent());
+                    populationHouseUserDO.setResidence(vo.getResidence());
                     comMngPopulationHouseUserDAO.insert(populationHouseUserDO);
                 }
             }
@@ -456,13 +473,13 @@
         }
         this.saveBatch(populationDOList);*/
 
-        if (!populationImportErrorVOList.isEmpty()) {
-            return R.fail(JSON.toJSONString(populationImportErrorVOList));
+        if (!mistakes.isEmpty()) {
+            return R.fail(mistakes);
         }
         return R.ok();
     }
 
-    private ComMngPopulationDO updatePopulationDO(ComMngPopulationServeExcelVO vo, ComMngPopulationDO populationDO) throws Exception {
+    private ComMngPopulationDO updatePopulationDO(ComMngPopulationServeExcelVO vo, ComActDO comActDO, ComMngPopulationDO populationDO) throws Exception {
         UpdateWrapper<ComMngPopulationDO> updateWrapper = new UpdateWrapper<>();
         updateWrapper.eq("id",populationDO.getId());
         ComMngPopulationDO update = new ComMngPopulationDO();
@@ -475,7 +492,24 @@
 //        if (StringUtils.isNotEmpty(populationDO.getPhone())) {
 //            update.setPhone(populationDO.getPhone());
 //        }
+        String cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
         BeanUtils.copyProperties(vo, update);
+        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList());
+        //查询当前社区标签列表
+        List<String> list = new ArrayList<>();
+        List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO.selectList(new QueryWrapper<ComMngUserTagDO>().eq("sys_flag", 1).or().eq("community_id", comActDO.getCommunityId()));
+        if (!ObjectUtils.isEmpty(comMngUserTagDOS)) {
+            list = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName()).collect(Collectors.toList());
+        }
+        //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
+        Iterator<String> iterator = userTag.iterator();
+        while (iterator.hasNext()) {
+            String s = iterator.next();
+            if (!list.contains(s))
+                iterator.remove();
+        }
+        update.setLabel(Joiner.on(",").join(userTag));
+        update.setCardNo(cardNoAES);
         this.baseMapper.update(update,updateWrapper);
         return populationDO;
     }
@@ -785,8 +819,12 @@
                 populationHouseUserDO.setId(Snowflake.getId());
                 populationHouseUserDO.setPopulId(populationDO.getId());
                 populationHouseUserDO.setHouseId(houseEditDto.getId());
+                populationHouseUserDO.setRelation(houseEditDto.getRelation());
                 if (houseEditDto.getIsResidence().equals(ComMngPopulationHouseEditDTO.isResidence.yes)) {
                     houseId = houseEditDto.getId();//居住地
+                    populationHouseUserDO.setResidence(ComMngPopulationHouseEditDTO.isResidence.yes);
+                }else {
+                    populationHouseUserDO.setResidence(ComMngPopulationHouseEditDTO.isResidence.no);
                 }
                 populationHouseUserDOList.add(populationHouseUserDO);
 
@@ -816,19 +854,19 @@
             }
         }
 
-        ComMngPopulationHouseUserDO comMngPopulationHouseUserDO = comMngPopulationHouseUserDAO.selectOne(new QueryWrapper<ComMngPopulationHouseUserDO>().lambda()
-                .eq(ComMngPopulationHouseUserDO::getPopulId, vo.getId()));
-        if (comMngPopulationHouseUserDO != null) {
-            comMngPopulationHouseUserDO.setRelation(vo.getRelation());
-            comMngPopulationHouseUserDAO.updateById(comMngPopulationHouseUserDO);
-        }else {
-            comMngPopulationHouseUserDO = new ComMngPopulationHouseUserDO();
-            comMngPopulationHouseUserDO.setId(Snowflake.getId());
-            comMngPopulationHouseUserDO.setPopulId(vo.getId());
-            comMngPopulationHouseUserDO.setRelation(vo.getRelation());
-            comMngPopulationHouseUserDO.setCreateAt(new Date());
-            comMngPopulationHouseUserDAO.insert(comMngPopulationHouseUserDO);
-        }
+//        ComMngPopulationHouseUserDO comMngPopulationHouseUserDO = comMngPopulationHouseUserDAO.selectOne(new QueryWrapper<ComMngPopulationHouseUserDO>().lambda()
+//                .eq(ComMngPopulationHouseUserDO::getPopulId, vo.getId()));
+//        if (comMngPopulationHouseUserDO != null) {
+//            comMngPopulationHouseUserDO.setRelation(vo.getRelation());
+//            comMngPopulationHouseUserDAO.updateById(comMngPopulationHouseUserDO);
+//        }else {
+//            comMngPopulationHouseUserDO = new ComMngPopulationHouseUserDO();
+//            comMngPopulationHouseUserDO.setId(Snowflake.getId());
+//            comMngPopulationHouseUserDO.setPopulId(vo.getId());
+//            comMngPopulationHouseUserDO.setRelation(vo.getRelation());
+//            comMngPopulationHouseUserDO.setCreateAt(new Date());
+//            comMngPopulationHouseUserDAO.insert(comMngPopulationHouseUserDO);
+//        }
         if (populationDAO.updateById(populationDO) > 0) {
             return R.ok();
         } else {
@@ -1241,7 +1279,11 @@
             villageStatisticsList.forEach(village -> {
                 CivilVillageStatisticsVO villageStatisticsVO = this.baseMapper.getCivilScreenVillageStatistics(village.getVillageId());
                 if(villageStatisticsVO != null){
-                    BeanUtils.copyProperties(villageStatisticsVO,village);
+                    village.setPeopleNum(villageStatisticsVO.getPeopleNum());
+                    village.setHouseNum(villageStatisticsVO.getHouseNum());
+                    village.setRegisterNum(villageStatisticsVO.getRegisterNum());
+                    village.setFlowNum(villageStatisticsVO.getFlowNum());
+//                    BeanUtils.copyProperties(villageStatisticsVO,village);
                 }
             });
         }
@@ -1702,6 +1744,14 @@
      */
     @Override
     public R getGridPopulationAdminList(ComMngPopulationListDTO populationListDTO){
+        if(StringUtils.isNotEmpty(populationListDTO.getKeyWord())){
+            try {
+                populationListDTO.setCardNo(AESUtil.encrypt128(populationListDTO.getKeyWord(),aesKey));
+            }catch (Exception e){
+                log.error("转换身份证号码失败");
+            }
+        }
+
         IPage<ComMngPopulationListVO> populationListIPage = this.baseMapper.getGridPopulationAdminList(new Page(populationListDTO.getPageNum(),populationListDTO.getPageSize()),populationListDTO);
         if(!populationListIPage.getRecords().isEmpty()){
             populationListIPage.getRecords().forEach(population -> {
@@ -1865,4 +1915,19 @@
         return R.ok(this.baseMapper.getVillagePopulationAdmin(new Page(villagePopulationDTO.getPageNum(),villagePopulationDTO.getPageSize()),villagePopulationDTO));
     }
 
+    private void setMistake(ComMngPopulationMistakeExcelVO mvo, ComMngPopulationServeExcelVO vo){
+        mvo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(vo.getPoliticalOutlook()));
+        mvo.setIsRent(PopulHouseUseEnum.getCnDescByName(vo.getIsRent()));
+        mvo.setRelation(PopulRelationEnum.getCnDescByName(vo.getRelation()));
+        mvo.setHouseStatus(PopulHouseStatusEnum.getCnDescByName(vo.getHouseStatus()));
+        mvo.setHousePurpose(PopulHousePurposeEnum.getCnDescByName(vo.getHousePurpose()));
+        mvo.setControlStatus(PopulHouseControlStatusEnum.getCnDescByName(vo.getControlStatus()));
+        mvo.setCultureLevel(PopulCultureLevelEnum.getCnDescByName(vo.getCultureLevel()));
+        mvo.setMarriage(PopulMarriageEnum.getCnDescByName(vo.getMarriage()));
+        mvo.setOutOrLocal(PopulOutOrLocalEnum.getCnDescByName(vo.getOutOrLocal()));
+        mvo.setResidence(PopulRelationEnum.getCnDescByName(vo.getResidence()));
+        mvo.setPersonType(PopulPersonTypeEnum.getCnDescByName(vo.getPersonType()));
+        mvo.setDeath(PopulOutOrLocalEnum.getCnDescByName(vo.getDeath()));
+    }
+
 }
\ No newline at end of file

--
Gitblit v1.7.1