fuliqi
2024-11-13 6da8bd9bf08a75e3d026505f23c008f3b8188c22
ycl-server/src/main/java/com/ycl/platform/service/impl/PlatformServiceImpl.java
@@ -1,15 +1,22 @@
package com.ycl.platform.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.platform.domain.entity.Platform;
import com.ycl.platform.domain.form.PlatformForm;
import com.ycl.platform.domain.query.DashboardQuery;
import com.ycl.platform.domain.query.PlatformQuery;
import com.ycl.platform.domain.vo.PlatformVO;
import com.ycl.platform.mapper.PlatformMapper;
import com.ycl.platform.service.PlatformService;
import com.ycl.system.Result;
import com.ycl.system.entity.SysDictData;
import com.ycl.system.page.PageUtil;
import com.ycl.system.service.ISysDictTypeService;
import com.ycl.system.service.impl.SysDictDataServiceImpl;
import com.ycl.system.service.impl.SysDictTypeServiceImpl;
import enumeration.general.AreaDeptEnum;
import org.ehcache.core.util.CollectionUtil;
import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor;
@@ -17,9 +24,11 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.Date;
import java.util.List;
import java.io.IOException;
import java.net.InetAddress;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -33,9 +42,12 @@
public class PlatformServiceImpl extends ServiceImpl<PlatformMapper, Platform> implements PlatformService {
    private final PlatformMapper platformMapper;
    private final SysDictDataServiceImpl dictDataService;
    private final ISysDictTypeService dictTypeService;
    /**
     * 添加
     *
     * @param form
     * @return
     */
@@ -47,23 +59,27 @@
        Date now = new Date();
        entity.setCreateTime(now);
        entity.setUpdateTime(now);
        String area = form.getAreaList().stream().collect(Collectors.joining(","));
        entity.setArea(area);
        baseMapper.insert(entity);
        if (! CollectionUtils.isEmpty(form.getDeployList())) {
            List<Platform> childList = form.getDeployList().stream().map(deploy -> {
                Platform child = new Platform();
                BeanUtils.copyProperties(deploy, child);
                child.setParentId(entity.getId());
                child.setCreateTime(now);
                child.setUpdateTime(now);
                return child;
            }).collect(Collectors.toList());
            this.saveBatch(childList);
        }
//        if (! CollectionUtils.isEmpty(form.getDeployList())) {
//            List<Platform> childList = form.getDeployList().stream().map(deploy -> {
//                Platform child = new Platform();
//                BeanUtils.copyProperties(deploy, child);
//                child.setPlatformName(entity.getPlatformName());
//                child.setParentId(entity.getId());
//                child.setCreateTime(now);
//                child.setUpdateTime(now);
//                return child;
//            }).collect(Collectors.toList());
//            this.saveBatch(childList);
//        }
        return Result.ok("添加成功");
    }
    /**
     * 修改
     *
     * @param form
     * @return
     */
@@ -74,12 +90,15 @@
        // 为空抛IllegalArgumentException,做全局异常处理
        Assert.notNull(entity, "记录不存在");
        BeanUtils.copyProperties(form, entity);
        String area = form.getAreaList().stream().collect(Collectors.joining(","));
        entity.setArea(area);
        baseMapper.updateById(entity);
        return Result.ok("修改成功");
    }
    /**
     * 批量删除
     *
     * @param ids
     * @return
     */
@@ -91,6 +110,7 @@
    /**
     * id删除
     *
     * @param id
     * @return
     */
@@ -102,18 +122,40 @@
    /**
     * 分页查询
     *
     * @param query
     * @return
     */
    @Override
    public Result page(PlatformQuery query) {
        IPage<PlatformVO> page = PageUtil.getPage(query, PlatformVO.class);
        baseMapper.getPage(page, query);
        return Result.ok().data(page.getRecords()).total(page.getTotal());
        List<PlatformVO> list = baseMapper.getPage(query);
//        List<PlatformVO> parentList = list.stream().filter(item -> item.getParentId() == 0).collect(Collectors.toList());
        List<SysDictData> areaCodeList = dictTypeService.selectDictDataByType("area_code");
        Map<String, String> dictMap = areaCodeList.stream().collect(Collectors.toMap(SysDictData::getDictValue, SysDictData::getDictLabel));
        for (PlatformVO platform : list) {
            String[] areaList = platform.getArea().split(",");
            List<String> areas = new ArrayList<>();
            for (String s : areaList) {
                String label = dictMap.get(s);
                if (StringUtils.hasText(label)) {
                    areas.add(label);
                }
            }
            platform.setAreaList(areaList);
            platform.setArea(areas.stream().collect(Collectors.joining("、")));
//            List<PlatformVO> childList = list.stream().filter(item -> item.getParentId().equals(parent.getId())).collect(Collectors.toList());
//
//            parent.setChildNum(childList.size());
//            resultList.add(parent);
//            resultList.addAll(childList);
        }
        // 前端不用展示分页
        return Result.ok().data(list).total(0);
    }
    /**
     * 根据id查找
     *
     * @param id
     * @return
     */
@@ -126,6 +168,7 @@
    /**
     * 列表
     *
     * @return
     */
    @Override
@@ -136,4 +179,38 @@
                .collect(Collectors.toList());
        return Result.ok().data(vos);
    }
    @Override
    public Map<String, Map<String, Object>> dashboard(DashboardQuery dashboardQuery) {
        //先默认所有区县平台在线,初始化map数据
        Map<String, Map<String, Object>> resultMap = new HashMap<>();
        for (AreaDeptEnum value : AreaDeptEnum.values()) {
            Map<String, Object> map = new HashMap<>();
            map.put("platformOnline", Boolean.TRUE);
            resultMap.put(value.getName(), map);
        }
        //平台在线状态 默认在线,如果一个不在线改为false。
        List<Platform> platformList = new LambdaQueryChainWrapper<>(platformMapper)
                .isNotNull(Platform::getPlatformIP)
                .list();
        Boolean reachable = Boolean.FALSE;
        try {
            for (Platform platform : platformList) {
                reachable = InetAddress.getByName(platform.getPlatformIP()).isReachable(3000);
                //不在线
                if (!reachable) {
                    //获取平台管理的区域编码集合
                    List<String> areaCodes = Arrays.asList(com.ycl.utils.StringUtils.split(platform.getArea(), ","));
                    resultMap.forEach((deptName, map) -> {
                        if (areaCodes.contains(AreaDeptEnum.fromName(deptName).getCode())) {
                            map.put("platformOnline", Boolean.FALSE);
                        }
                    });
                }
            }
        } catch (Exception e) {
            log.error("检查平台连通性时发生错误", e);
        }
        return resultMap;
    }
}