liujie
2025-06-09 70d2a5d0f9c6951b2d4cac954041ed73582ff7eb
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActNeighborCircleServiceImpl.java
@@ -1135,7 +1135,7 @@
    @Override
    public R serviceStatic(ServiceStaticDTO serviceStaticDTO) {
        ServiceStaticsVO serviceStaticsVO = new ServiceStaticsVO();
        if (serviceStaticDTO.getCheckUnitId() != null)
        if (serviceStaticDTO.getCheckUnitId() != null && serviceStaticDTO.getCheckUnitId()> 0)
        {
            //单位服务统计
            serviceStaticsVO =
@@ -1145,7 +1145,7 @@
                    serviceStaticDTO.getYear(), serviceStaticDTO.getServiceType());
           if(serviceStaticDTO.getServiceType()==1  || serviceStaticDTO.getServiceType()==null)
           if(serviceStaticDTO.getServiceType()==null  || serviceStaticDTO.getServiceType()==1)
           {
               List<NewFightNeedProblemClaim> list=baseMapper.getNewServiceNum("",serviceStaticDTO.getCheckUnitId()+"");
               if(list.size()>0)
@@ -1163,21 +1163,23 @@
                       String Ltime=item.getServiceTime();
                       if(!StringUtils.isEmpty(Ltime))
                       {
                           double time=(double)(Long.valueOf(Ltime)/3600000);
                           hours=hours+(time);
                           DecimalFormat df = new DecimalFormat("#.00");
                           double time=(Double.valueOf(Ltime)/3600000);
                           DecimalFormat df = new DecimalFormat("#.##");
                           String formattedNumber = df.format(time);
                           double result = Double.parseDouble(formattedNumber);
                           hours=hours+result;
                           newItem.setServiceTime(result);
                           item.setServiceTime(result+"");
                       }
                       newItem.setIsNew("2");
                       newItem.setServiceId(Long.valueOf(item.getTaskId()));
                       newItem.setServiceType(1);
                       newItem.setServiceAt(item.getCreationTime());
                       serviceDetailStaticsVOList.add(newItem);
                   }
                   DecimalFormat df = new DecimalFormat("#.00");
                   DecimalFormat df = new DecimalFormat("#.##");
                   String formattedNumber = df.format(hours);
                   double result = Double.parseDouble(formattedNumber);
                   serviceStaticsVO.setHours(result);
@@ -1188,7 +1190,8 @@
        else
        {
            //个人服务统计
            serviceStaticsVO = this.baseMapper.selectStatsUser(serviceStaticDTO.getPhone(), serviceStaticDTO.getYear());
            ComPbMemberDO comPbMemberDO = comPbMemberDAO.selectOne(new QueryWrapper<ComPbMemberDO>().lambda()
                    .eq(ComPbMemberDO::getPhone, serviceStaticDTO.getPhone()).last("limit 1"));
            Long checkUnitId = null;
@@ -1196,12 +1199,12 @@
                checkUnitId = comPbMemberDO.getCheckUnitId();
            }
            serviceStaticsVO = this.baseMapper.selectStatsUser(serviceStaticDTO.getPhone(),checkUnitId+"", serviceStaticDTO.getYear());
            List<ServiceDetailStaticsVO> serviceDetailStaticsVOList=this.baseMapper.selectServiceDetailListForPersonal(checkUnitId, serviceStaticDTO.getPhone(),
                    serviceStaticDTO.getYear(), serviceStaticDTO.getServiceType());
            if(serviceStaticDTO.getServiceType()==1  || serviceStaticDTO.getServiceType()==null)
            if(serviceStaticDTO.getServiceType()==null  || serviceStaticDTO.getServiceType()==1)
            {
                //获取新需求服务列表
                List<NewFightNeedProblemClaim> list=baseMapper.getNewServiceNum(serviceStaticDTO.getPhone(),"");
@@ -1220,22 +1223,24 @@
                        String Ltime=item.getServiceTime();
                        if(!StringUtils.isEmpty(Ltime))
                        {
                            double time=(double)(Long.valueOf(Ltime)/3600000);
                            hours=hours+(time);
                            DecimalFormat df = new DecimalFormat("#.00");
                            double time=(Double.valueOf(Ltime)/3600000);
                            DecimalFormat df = new DecimalFormat("#.##");
                            String formattedNumber = df.format(time);
                            double result = Double.parseDouble(formattedNumber);
                            hours=hours+result;
                            newItem.setServiceTime(result);
                            item.setServiceTime(result+"");
                        }
                        newItem.setIsNew("2");
                        newItem.setServiceId(Long.valueOf(item.getTaskId()));
                        newItem.setServiceType(1);
                        newItem.setServiceAt(item.getCreationTime());
                        serviceDetailStaticsVOList.add(newItem);
                    }
                    DecimalFormat df = new DecimalFormat("#.00");
                    DecimalFormat df = new DecimalFormat("#.##");
                    String formattedNumber = df.format(hours);
                    double result = Double.parseDouble(formattedNumber);
                    serviceStaticsVO.setHours(result);
@@ -1262,9 +1267,12 @@
        activityVO.setPartyMemberCount(comActDAO.selectUnitCount());
        activityVO.setUnitCount(comActDAO.selectMemberCount());
        //获取单位活动统计数据(邻里圈)
        List<UnitActivityAnalysisVO> unitActivityAnalysisVOS = comActNeighborCircleDAO.institutionalUnitServiceAnalysis(beginTime, endTime, belongTo,communityId);
        List<UnitActivityAnalysisVO> unitActivityAnalysisVOS = comActNeighborCircleDAO.institutionalUnitServiceAnalysis(beginTime, endTime, belongTo,communityId,unitId);
        //获取单位活动统计数据(活动)
        List<UnitActivityAnalysisVO> unitActivityAnalysisVOS1 = comActNeighborCircleDAO.institutionalUnitActivityAnalysis(beginTime, endTime, belongTo,communityId);
        List<UnitActivityAnalysisVO> unitActivityAnalysisVOS1 = comActNeighborCircleDAO.institutionalUnitActivityAnalysis(beginTime, endTime, belongTo,communityId,unitId);
        //获取新双挣双评清单任务
        List<UnitActivityAnalysisVO> newTaskList=comActNeighborCircleDAO.getNewTaskList(beginTime, endTime, belongTo,communityId);
        if (unitActivityAnalysisVOS.size()>0){
            for (UnitActivityAnalysisVO unitActivityAnalysisVO : unitActivityAnalysisVOS){
                if (ObjectUtils.isNotEmpty(unitActivityAnalysisVO)){
@@ -1279,6 +1287,28 @@
                }
            }
        }
        if (newTaskList.size()>0){
            for (UnitActivityAnalysisVO item : newTaskList){
                if (ObjectUtils.isNotEmpty(item)){
                    if (ObjectUtils.isNotEmpty(item.getUnitId())){
                        //设置单位名称
                        item.setUnitName(comActDAO.selectUnitName(item.getUnitId()));
                        //统计活动表中的活动信息
                    }
                    if (ObjectUtils.isNotEmpty(item.getCommunityId())){
                        item.setCommunityName(comActDAO.selectById(item.getCommunityId()).getName());
                    }
                    Double time=(item.getServiceTime()/3600000);
                    DecimalFormat df = new DecimalFormat("#.##");
                    String formattedNumber = df.format(time);
                    Double result = Double.parseDouble(formattedNumber);
                    item.setServiceTime(result);
                }
            }
        }
        //活动表数据处理
        if (unitActivityAnalysisVOS1.size()>0){
            for (UnitActivityAnalysisVO vo : unitActivityAnalysisVOS1) {
@@ -1288,7 +1318,7 @@
                        Map<String, Integer> param = alreadyAnalysis(vo.getUnitId(), unitActivityAnalysisVOS);
                        if (param.get("flag")==1){
                            //已有数据,将时长,次数相加
                            Integer serviceTime = vo.getServiceTime();
                            Double serviceTime = vo.getServiceTime();
                            Integer serviceTimes = vo.getServiceTimes();
                            unitActivityAnalysisVOS.get(param.get("index")).setServiceTime(unitActivityAnalysisVOS.get(param.get("index")).getServiceTime()+serviceTime);
                            unitActivityAnalysisVOS.get(param.get("index")).setServiceTimes(unitActivityAnalysisVOS.get(param.get("index")).getServiceTimes()+serviceTimes);
@@ -1309,16 +1339,59 @@
                }
            }
        }
        if (newTaskList.size()>0){
            for (UnitActivityAnalysisVO item : newTaskList){
                if (ObjectUtils.isNotEmpty(item)){
                    if (ObjectUtils.isNotEmpty(item.getUnitId())){
                        //判断邻里圈统计中是否已有该单位数据
                        Map<String, Integer> param = alreadyAnalysis(item.getUnitId(), unitActivityAnalysisVOS);
                        if (param.get("flag")==1){
                            //已有数据,将时长,次数相加
                            Double serviceTime = unitActivityAnalysisVOS.get(param.get("index")).getServiceTime()+item.getServiceTime();
                            Integer serviceTimes = item.getServiceTimes();
                            DecimalFormat df2 = new DecimalFormat("#.##");
                            String formattedNumber2 = df2.format(serviceTime);
                            Double result2 = Double.parseDouble(formattedNumber2);
                            unitActivityAnalysisVOS.get(param.get("index")).setServiceTime(result2);
                            unitActivityAnalysisVOS.get(param.get("index")).setServiceTimes(unitActivityAnalysisVOS.get(param.get("index")).getServiceTimes()+serviceTimes);
                        }else {
                            //新数据,获取单位,社区名
                            item.setUnitName(comActDAO.selectUnitName(item.getUnitId()));
                            if (ObjectUtils.isNotEmpty(item.getCommunityId()))
                            {
                                ComActDO actDO=comActDAO.selectById(item.getCommunityId());
                                if(actDO!=null && !StringUtils.isEmpty(actDO.getName()))
                                {
                                    item.setCommunityName(actDO.getName());
                                }
                            }
                            unitActivityAnalysisVOS.add(item);
                        }
                    }
                }
            }
        }
        //获取党员活动统计数据
        List<PartyMemberAnalysisVO> partyMemberAnalysisVOS = comActNeighborCircleDAO.institutionalPartyMemberServiceAnalysis(beginTime, endTime, belongTo,communityId,unitId,searchContent);
        List<PartyMemberAnalysisVO> partyMemberAnalysisVOS1 = comActNeighborCircleDAO.institutionalPartyMemberActAnalysis(beginTime, endTime, belongTo,communityId,unitId,searchContent);
        //获取新双挣双评清单任务
        List<PartyMemberAnalysisVO> newPartyMemberList = comActNeighborCircleDAO.getNewPartyMemberTaskList(beginTime, endTime, belongTo,communityId,unitId,searchContent);
        if (partyMemberAnalysisVOS1.size()>0){
            for (PartyMemberAnalysisVO vo : partyMemberAnalysisVOS1) {
                if (ObjectUtils.isNotEmpty(vo)){
                    if (ObjectUtils.isNotEmpty(vo.getMemberId())){
                        Map<String, Integer> param = memberAlreadyAnalysis(vo.getMemberId(), partyMemberAnalysisVOS);
                        if (param.get("flag")==1){
                            Integer serviceTime = vo.getServiceTime();
                            Double serviceTime = vo.getServiceTime();
                            Integer serviceTimes = vo.getServiceTimes();
                            partyMemberAnalysisVOS.get(param.get("index")).setServiceTime(partyMemberAnalysisVOS.get(param.get("index")).getServiceTime()+serviceTime);
                            partyMemberAnalysisVOS.get(param.get("index")).setServiceTimes(partyMemberAnalysisVOS.get(param.get("index")).getServiceTimes()+serviceTimes);
@@ -1329,6 +1402,39 @@
                }
            }
        }
        if (newPartyMemberList.size()>0){
            for (PartyMemberAnalysisVO item : newPartyMemberList)
            {
                Double time=(item.getServiceTime()/3600000);
                DecimalFormat df = new DecimalFormat("#.##");
                String formattedNumber = df.format(time);
                Double result = Double.parseDouble(formattedNumber);
                item.setServiceTime(result);
                if (ObjectUtils.isNotEmpty(item)){
                    if (ObjectUtils.isNotEmpty(item.getMemberId())){
                        Map<String, Integer> param = memberAlreadyAnalysis(item.getMemberId(), partyMemberAnalysisVOS);
                        if (param.get("flag")==1){
                            Double serviceTime = partyMemberAnalysisVOS.get(param.get("index")).getServiceTime()+item.getServiceTime();
                            Integer serviceTimes = item.getServiceTimes();
                            DecimalFormat df1 = new DecimalFormat("#.##");
                            String formattedNumber1 = df1.format(serviceTime);
                            Double result1 = Double.parseDouble(formattedNumber1);
                            partyMemberAnalysisVOS.get(param.get("index")).setServiceTime(result1);
                            partyMemberAnalysisVOS.get(param.get("index")).setServiceTimes(partyMemberAnalysisVOS.get(param.get("index")).getServiceTimes()+serviceTimes);
                        }else{
                            partyMemberAnalysisVOS.add(item);
                        }
                    }
                }
            }
        }
        //报道单位统计积分
        List<NewFightNeedProblemInventory> allList = newFightNeedProblemInventoryMapper.selectAll();
        Map<Long, String> awardMap = allList.stream().filter(Objects::nonNull).collect(Collectors.toMap(NewFightNeedProblemInventory::getId, NewFightNeedProblemInventory::getAward));
@@ -1341,7 +1447,7 @@
            Map<String, Long> collectMap = inventories.stream()
                    .collect(Collectors.groupingBy(NewFightNeedProblemClaim::getTaskId, Collectors.counting()));
            long sum = 0l;
            if(unitVO.getAwardSum()!=null || unitVO.getAwardSum()!=0l )
            if(unitVO.getAwardSum()!=null)
            {
                sum=unitVO.getAwardSum();
            }
@@ -1352,49 +1458,65 @@
//                String award = newFightNeedProblemInventory.getAward();
                String award = awardMap.get(Long.parseLong(taskId));
                Long count = collectMap.get(taskId);
                long i = Long.parseLong(award) * count;
                sum = sum + i;
                if(!StringUtils.isEmpty(award) )
                {
                    long i = Long.parseLong(award) * count;
                    sum = sum + i;
                }
            }
            unitVO.setAwardSum(sum);
        }
        //报道党员统计积分
        for (PartyMemberAnalysisVO memberAnalysisVO : partyMemberAnalysisVOS) {
            Long userId = memberAnalysisVO.getMemberId();
            LambdaQueryWrapper<NewFightNeedProblemClaim> wrapper = new LambdaQueryWrapper<>();
            wrapper.eq(NewFightNeedProblemClaim::getUserId,userId);
            List<NewFightNeedProblemClaim> newFightNeedProblemInventories = newFightNeedProblemClaimMapper.selectList(wrapper);
            long sumAward = 0l;
            if(memberAnalysisVO.getPartyCount()!=null || memberAnalysisVO.getPartyCount()!=0l )
        for (PartyMemberAnalysisVO memberAnalysisVO : partyMemberAnalysisVOS)
        {
            if(memberAnalysisVO!=null)
            {
                sumAward=memberAnalysisVO.getPartyCount();
            }
                Long userId = memberAnalysisVO.getMemberId();
                LambdaQueryWrapper<NewFightNeedProblemClaim> wrapper = new LambdaQueryWrapper<>();
                wrapper.eq(NewFightNeedProblemClaim::getUserId,userId);
                List<NewFightNeedProblemClaim> newFightNeedProblemInventories = newFightNeedProblemClaimMapper.selectList(wrapper);
                long sumAward = 0l;
            for (NewFightNeedProblemClaim inventory : newFightNeedProblemInventories) {
                String taskId = inventory.getTaskId();
                NewFightNeedProblemInventory newFightNeedProblemInventory = newFightNeedProblemInventoryMapper.selectById(taskId);
                String award = newFightNeedProblemInventory.getAward();
                sumAward = Long.parseLong(award) + sumAward;
                if(memberAnalysisVO.getPartyCount()!=null)
                {
                    sumAward=memberAnalysisVO.getPartyCount();
                }
                for (NewFightNeedProblemClaim inventory : newFightNeedProblemInventories) {
                    String taskId = inventory.getTaskId();
                    NewFightNeedProblemInventory newFightNeedProblemInventory = newFightNeedProblemInventoryMapper.selectById(taskId);
                    if(newFightNeedProblemInventory!=null && !StringUtils.isEmpty(newFightNeedProblemInventory.getAward()))
                    {
                        String award = newFightNeedProblemInventory.getAward();
                        if(!StringUtils.isEmpty(award) )
                        {
                            sumAward = Long.parseLong(award) + sumAward;
                        }
                    }
                }
                memberAnalysisVO.setPartyCount(sumAward);
            }
            memberAnalysisVO.setPartyCount(sumAward);
        }
        //统计总时长和总次数
        Integer unitServiceCount=0;
        Integer unitServiceTotalTime=0;
        Double unitServiceTotalTime=0.0;
        Integer memberServiceCount=0;
        Integer memberServiceTotalTome=0;
        Double memberServiceTotalTome=0.0;
        long awardSumCount=0L;
        long partySumCount=0L;
        for (UnitActivityAnalysisVO vo : unitActivityAnalysisVOS) {
            //避免空指针
            if (ObjectUtils.isNotEmpty(vo)){
                if (ObjectUtils.isNotEmpty(vo.getServiceTime())){
                    unitServiceCount+=vo.getServiceTime();
                    unitServiceTotalTime+=vo.getServiceTime();
                }
                if (ObjectUtils.isNotEmpty(vo.getServiceTimes())){
                    unitServiceTotalTime+=vo.getServiceTimes();
                    unitServiceCount+=vo.getServiceTimes();
                }
            }
        }
@@ -1402,10 +1524,10 @@
            //避免空指针
            if (ObjectUtils.isNotEmpty(vo)){
                if (ObjectUtils.isNotEmpty(vo.getServiceTime())){
                    memberServiceCount+=vo.getServiceTime();
                    memberServiceTotalTome+=vo.getServiceTime();
                }
                if (ObjectUtils.isNotEmpty(vo.getServiceTimes())){
                    memberServiceTotalTome+=vo.getServiceTimes();
                    memberServiceCount+=vo.getServiceTimes();
                }
            }
        }
@@ -1453,6 +1575,15 @@
             //   ListUtil.sortByProperty(unitActivityAnalysisVOS,"");
            }
        }
        else
        {
            //按时长排序
            ListUtil.sortByProperty(unitActivityAnalysisVOS, "serviceTime");
            ListUtil.sortByProperty(partyMemberAnalysisVOS, "serviceTime");
            ListUtil.reverse(unitActivityAnalysisVOS);
            ListUtil.reverse(partyMemberAnalysisVOS);
        }
        //处理分页
        PageVO<List<UnitActivityAnalysisVO>> unitPage=new PageVO<>();
        PageVO<List<PartyMemberAnalysisVO>> memberPage=new PageVO<>();
@@ -1476,10 +1607,10 @@
        activityVO.setPartyMemberList(memberPage);
        //党员数据 聚合
        Map<String, Long> map = new HashMap<>();
        Map<String, Double> map = new HashMap<>();
        partyMemberAnalysisVOS.forEach(vo->{
            String name = vo.getBelongTo();
            Long time = Long.valueOf(vo.getServiceTime());
            Double time = vo.getServiceTime();
            if (map.containsKey(name)) {
                time += map.get(name);
            }
@@ -1510,9 +1641,9 @@
            endTime=year.toString().concat("-12-31");
        }
        //获取单位活动统计数据(邻里圈)
        List<UnitActivityAnalysisVO> unitActivityAnalysisVOS = comActNeighborCircleDAO.institutionalUnitServiceAnalysis(beginTime, endTime, belongTo,communityId);
        List<UnitActivityAnalysisVO> unitActivityAnalysisVOS = comActNeighborCircleDAO.institutionalUnitServiceAnalysis(beginTime, endTime, belongTo,communityId,null);
        //获取单位活动统计数据(活动)
        List<UnitActivityAnalysisVO> unitActivityAnalysisVOS1 = comActNeighborCircleDAO.institutionalUnitActivityAnalysis(beginTime, endTime, belongTo,communityId);
        List<UnitActivityAnalysisVO> unitActivityAnalysisVOS1 = comActNeighborCircleDAO.institutionalUnitActivityAnalysis(beginTime, endTime, belongTo,communityId,null);
        if (!unitActivityAnalysisVOS.isEmpty()){
            for (UnitActivityAnalysisVO unitActivityAnalysisVO : unitActivityAnalysisVOS){
                if (ObjectUtils.isNotEmpty(unitActivityAnalysisVO)){
@@ -1536,7 +1667,7 @@
                        Map<String, Integer> param = alreadyAnalysis(vo.getUnitId(), unitActivityAnalysisVOS);
                        if (param.get("flag")==1){
                            //已有数据,将时长,次数相加
                            Integer serviceTime = vo.getServiceTime();
                            Double serviceTime = vo.getServiceTime();
                            Integer serviceTimes = vo.getServiceTimes();
                            unitActivityAnalysisVOS.get(param.get("index")).setServiceTime(unitActivityAnalysisVOS.get(param.get("index")).getServiceTime()+serviceTime);
                            unitActivityAnalysisVOS.get(param.get("index")).setServiceTimes(unitActivityAnalysisVOS.get(param.get("index")).getServiceTimes()+serviceTimes);
@@ -1611,7 +1742,7 @@
                    if (ObjectUtils.isNotEmpty(vo.getMemberId())){
                        Map<String, Integer> param = memberAlreadyAnalysis(vo.getMemberId(), partyMemberAnalysisVOS);
                        if (param.get("flag")==1){
                            Integer serviceTime = vo.getServiceTime();
                            Double serviceTime = vo.getServiceTime();
                            Integer serviceTimes = vo.getServiceTimes();
                            partyMemberAnalysisVOS.get(param.get("index")).setServiceTime(partyMemberAnalysisVOS.get(param.get("index")).getServiceTime()+serviceTime);
                            partyMemberAnalysisVOS.get(param.get("index")).setServiceTimes(partyMemberAnalysisVOS.get(param.get("index")).getServiceTimes()+serviceTimes);