private void updateApps()

in ozhera-app/app-service/src/main/java/org/apache/ozhera/app/service/project/group/HeraProjectGroupService.java [257:360]


    private void updateApps(HeraProjectGroupDataRequest request){

        List<HeraProjectGroupAppRequest> updateApps = request.getApps();

        if(updateApps == null){
            return;
        }

        List<HeraProjectGroupApp> existApps = projectGroupAppDao.listByProjectGroupId(request.getId());

        if(CollectionUtils.isEmpty(existApps)){

            //没有历史数据,本次也没有同步新数据
            if(updateApps.size() == 0){
                return;
            }

            List<HeraProjectGroupApp> apps = new ArrayList<>();
            for(HeraProjectGroupAppRequest appRequest : updateApps){

                if(appRequest.getAppId() == null || appRequest.getPlatFormType() == null){
                    log.error("updateApps param app is invalid! request:{}",request.toString());
                    continue;
                }

                Integer baseInfoId = heraBaseInfoDao.idByBindIdsAndPlat(String.valueOf(appRequest.getAppId()), appRequest.getPlatFormType());
                if(baseInfoId == null){
                    log.error("updateApps error! no baseInfo found for appId:{},platFormType:{}",appRequest.getAppId(),appRequest.getPlatFormType());
                    continue;
                }
                HeraProjectGroupApp app = new HeraProjectGroupApp();
                app.setProjectGroupId(request.getId());
                app.setAppBaseInfoId(baseInfoId);
                app.setStatus(0);
                app.setCreateTime(new Date());
                app.setUpdateTime(new Date());
                apps.add(app);
            }

            projectGroupAppDao.batchInsert(apps);
            return;
        }

        List<Integer> updateAppIds = new ArrayList<>();
        if(!CollectionUtils.isEmpty(updateApps)){
            for (HeraProjectGroupAppRequest appRequest : updateApps) {

                if(appRequest.getAppId() == null || appRequest.getPlatFormType() == null){
                    log.error("updateApps param error! request : {}",request.toString());
                    continue;
                }

                Integer baseInfoId = heraBaseInfoDao.idByBindIdsAndPlat(String.valueOf(appRequest.getAppId()), appRequest.getPlatFormType());
                if(baseInfoId != null){
                    updateAppIds.add(baseInfoId);
                }
            }
        }

        /**
         * 删除本次不包含的,如果本次传递了空list,则删除全部历史数据。
         */
        List<HeraProjectGroupApp> toDeleteApps = existApps.stream().filter(t -> !updateAppIds.contains(t.getAppBaseInfoId())).collect(Collectors.toList());
        if(!CollectionUtils.isEmpty(toDeleteApps)){
            toDeleteApps.forEach(t->{
                projectGroupAppDao.delById(t.getId());
            });
        }

        if(CollectionUtils.isEmpty(updateAppIds)){
            return;
        }

        /**
         * 添加本次新增的
         */
        updateAppIds.removeAll(existApps.stream().map(t -> t.getAppBaseInfoId()).collect(Collectors.toList()));
        if(!CollectionUtils.isEmpty(updateAppIds)){
            List<HeraProjectGroupApp> apps = new ArrayList<>();
            for(HeraProjectGroupAppRequest appRequest : updateApps){

                if(appRequest.getAppId() == null || appRequest.getPlatFormType() == null){
                    log.error("updateApps param app is invalid! request:{}",request.toString());
                    continue;
                }

                Integer baseInfoId = heraBaseInfoDao.idByBindIdsAndPlat(String.valueOf(appRequest.getAppId()), appRequest.getPlatFormType());
                if(baseInfoId == null){
                    log.error("updateApps error! no baseInfo found for appId:{},platFormType:{}",appRequest.getAppId(),appRequest.getPlatFormType());
                    continue;
                }
                HeraProjectGroupApp app = new HeraProjectGroupApp();
                app.setProjectGroupId(request.getId());
                app.setAppBaseInfoId(baseInfoId);
                app.setStatus(0);
                app.setCreateTime(new Date());
                app.setUpdateTime(new Date());
                apps.add(app);
            }

            projectGroupAppDao.batchInsert(apps);
        }

    }