//package com.njcn.device.pms.service.majornetwork.impl;
//
//import cn.hutool.core.collection.CollUtil;
//import cn.hutool.core.util.StrUtil;
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
//import com.njcn.common.pojo.enums.common.DataStateEnum;
//import com.njcn.common.pojo.exception.BusinessException;
//import com.njcn.device.pms.enums.PmsDeviceResponseEnum;
//import com.njcn.device.pms.mapper.majornetwork.PmsGeneratrixMapper;
//import com.njcn.device.pms.mapper.majornetwork.StatationStatMapper;
//import com.njcn.device.pms.pojo.dto.GeneratrixAndPowerStationDTO;
//import com.njcn.device.pms.pojo.dto.GeneratrixAndPowerStationSonDTO;
//import com.njcn.device.pms.pojo.dto.PmsGeneratrixDTO;
//import com.njcn.device.pms.pojo.param.*;
//import com.njcn.device.pms.pojo.po.Generatrix;
//import com.njcn.device.pms.pojo.po.StatationStat;
//import com.njcn.device.pms.service.majornetwork.IPmsGeneratrixService;
//
//import com.njcn.user.api.DeptFeignClient;
//import com.njcn.web.factory.PageFactory;
//import com.njcn.web.pojo.param.BaseParam;
//import lombok.RequiredArgsConstructor;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.BeanUtils;
//import org.springframework.stereotype.Service;
//
//import java.util.List;
//import java.util.Objects;
//
///**
// * @author yzh
// * @date 2022/10/18
// */
//@Slf4j
//@Service
//@RequiredArgsConstructor
//public class PmsGeneratrixServiceImpl extends ServiceImpl<PmsGeneratrixMapper, Generatrix> implements IPmsGeneratrixService {
//
//    private final PmsGeneratrixMapper pmsGeneratrixMapper;
//
//    private final StatationStatMapper statationStatMapper;
//
//    private final DeptFeignClient deptFeignClient;
//
//    /**
//     * 获取母线信息
//     *
//     * @param param 入参
//     * @return 母线信息
//     */
//    @Override
//    public List<PmsGeneratrixDTO> getGeneratrixInfo(PmsGeneratrixParam param) {
//        if (CollUtil.isEmpty(param.getGeneratrixIds())) {
//            return null;
//        }
//        return pmsGeneratrixMapper.getGeneratrixInfo(param);
//    }
//
//    @Override
//    public boolean addGeneratrix(GeneratrixParam generatrixParam) {
//        checkName(generatrixParam,false);
//        StatationStat statationStat = statationStatMapper.selectById(generatrixParam.getStatationId());
//        if(Objects.isNull(statationStat)){
//            throw new BusinessException(PmsDeviceResponseEnum.NO_STATION);
//        }
//        Generatrix generatrix = new Generatrix();
//        BeanUtils.copyProperties(generatrixParam, generatrix);
//        generatrix.setStatationName(statationStat.getPowerName());
//        generatrix.setStatus(DataStateEnum.ENABLE.getCode());
//        return this.save(generatrix);
//    }
//
//    @Override
//    public boolean updateGeneratrix(GeneratrixParam generatrixParam) {
//        checkName(generatrixParam,true);
//        StatationStat statationStat = statationStatMapper.selectById(generatrixParam.getStatationId());
//        if(Objects.isNull(statationStat)){
//            throw new BusinessException(PmsDeviceResponseEnum.NO_STATION);
//        }
//        Generatrix generatrix = new Generatrix();
//        BeanUtils.copyProperties(generatrixParam, generatrix);
//        generatrix.setStatationName(statationStat.getPowerName());
//        return this.updateById(generatrix);
//    }
//
//    @Override
//    public boolean delGeneratrix(List<String> generatrixIds) {
//        return this.removeByIds(generatrixIds);
//    }
//
//    @Override
//    public Generatrix getGeneratrixById(String generatrixId) {
//        return this.getById(generatrixId);
//    }
//
//    @Override
//    public List<Generatrix> getGeneratrixList(PmsBaseParam pmsBaseParam) {
//        LambdaQueryWrapper<Generatrix> lambdaQueryWrapper = new LambdaQueryWrapper<>();
//        if(StrUtil.isNotBlank(pmsBaseParam.getStationId())){
//            lambdaQueryWrapper.eq(Generatrix::getStatationId,pmsBaseParam.getStationId());
//        }
//        lambdaQueryWrapper.orderByAsc(Generatrix::getCreateTime);
//        return this.list(lambdaQueryWrapper);
//    }
//
//    @Override
//    public Page<Generatrix> getGeneratrixPageList(BaseParam baseParam) {
//        LambdaQueryWrapper<Generatrix> lambdaQueryWrapper = new LambdaQueryWrapper<>();
//        lambdaQueryWrapper.like(StrUtil.isNotBlank(baseParam.getSearchValue()),Generatrix::getGeneratrixName,baseParam.getSearchValue())
//                .or(StrUtil.isNotBlank(baseParam.getSearchValue()))
//                .like(StrUtil.isNotBlank(baseParam.getSearchValue()),Generatrix::getStatationName,baseParam.getSearchValue())
//                .orderByAsc(Generatrix::getCreateTime);
//        return this.page(new Page<>(PageFactory.getPageNum(baseParam),PageFactory.getPageSize(baseParam)),lambdaQueryWrapper);
//    }
//
//    /**
//     * 获取母线与电站关联信息
//     *
//     * @param param 条件参数
//     * @return java.util.List<com.njcn.device.pms.pojo.dto.PmsGeneratrixDTO>
//     * @author yzh
//     * @date 2022/11/3
//     */
//    @Override
//    public List<GeneratrixAndPowerStationDTO> getGeneratrixAndPowerStationInfo(PmsGeneratrixParam param) {
//        return pmsGeneratrixMapper.getGeneratrixAndPowerStationInfo(param);
//    }
//
//    /**
//     * @param param
//     * @Description: 普测计划页面调用根据条件查询母线信息
//     * @Param: [param]
//     * @return: java.util.List<com.njcn.device.pms.pojo.dto.GeneratrixAndPowerStationDTO>
//     * @Author: clam
//     * @Date: 2022/12/5
//     */
//    @Override
//    public List<GeneratrixAndPowerStationSonDTO> getGeneratrixByCondition(ConditionParam param) {
//
//        List<String> data = deptFeignClient.getDepSonSelfCodetByDeptId (param.getDeptId ( )).getData ( );
//
//        return pmsGeneratrixMapper.getGeneratrixByCondition(data,param);
//    }
//
//
//    private void checkName(GeneratrixParam generatrixParam, Boolean updateFlag){
//
//        LambdaQueryWrapper<Generatrix> lambdaQueryWrapper = new LambdaQueryWrapper<>();
//        lambdaQueryWrapper.eq(Generatrix::getGeneratrixName,generatrixParam.getGeneratrixName())
//                .eq(Generatrix::getGeneratrixId,generatrixParam.getStatationId())
//                .eq(Generatrix::getStatus, DataStateEnum.ENABLE.getCode());
//
//        if(updateFlag){
//            //更新
//            lambdaQueryWrapper.ne(Generatrix::getGeneratrixId,generatrixParam.getGeneratrixId());
//        }else {
//            //新增校验
//            LambdaQueryWrapper<Generatrix> lambdaQuery = new LambdaQueryWrapper<>();
//            lambdaQuery.eq(Generatrix::getGeneratrixId,generatrixParam.getGeneratrixId());
//            int count = this.count(lambdaQuery);
//            if(count>0){
//                throw new BusinessException(PmsDeviceResponseEnum.GENWIRE_SAME);
//            }
//        }
//        int count = this.count(lambdaQueryWrapper);
//        if(count > 0){
//            throw new BusinessException(PmsDeviceResponseEnum.GENERATRIX_NAME_REPEAT);
//        }
//    }
//}
