package com.yunfeiyun.agmp.fms.service.impl;

import com.yunfeiyun.agmp.common.utils.StringUtils;
import com.yunfeiyun.agmp.common.web.system.domain.SysRes;
import com.yunfeiyun.agmp.common.web.system.mapper.SysResMapper;
import com.yunfeiyun.agmp.common.web.system.service.ISysResService;
import com.yunfeiyun.agmp.fms.domain.FmsLand;
import com.yunfeiyun.agmp.fms.mapper.FmsLandMapper;
import com.yunfeiyun.agmp.fms.domain.resvo.FmsLandTotalResVo;
import com.yunfeiyun.agmp.fms.service.IFmsLandService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


/**
 * 基地Service业务层处理
 * 
 * @author 杨晓辉
 * @date 2023-05-15
 */
@Service
public class FmsLandServiceImpl implements IFmsLandService
{
    @Autowired
    private FmsLandMapper fmsLandMapper;
    @Resource
    private SysResMapper sysResMapper;
    @Resource
    private ISysResService sysResService;

    /**
     * 查询基地
     * 
     * @param landId 基地主键
     * @return 基地
     */
    @Override
    public FmsLand selectFmsLandByLandId(String landId)
    {
        return fmsLandMapper.selectFmsLandByLandId(landId);
    }

    @Override
    public FmsLandTotalResVo selectFmsLandTotal(FmsLand fmsLand) {
        return fmsLandMapper.selectFmsLandTotal(fmsLand);
    }

    @Override
    public int selectDevCount(FmsLand fmsLand) {
        return fmsLandMapper.selectDevCount(fmsLand);
    }

    /**
     * 查询基地列表
     * 
     * @param fmsLand 基地
     * @return 基地
     */
    @Override
    public List<FmsLand> selectFmsLandList(FmsLand fmsLand)
    {
        return fmsLandMapper.selectFmsLandList(fmsLand);
    }

    /**
     * 新增基地
     * 
     * @param fmsLand 基地
     * @return 结果
     */
    @Override
    public int insertFmsLand(FmsLand fmsLand)
    {
        fmsLand.setLandId(fmsLand.getId());
        int i = fmsLandMapper.insertFmsLand(fmsLand);
        String resIdsStr = fmsLand.getResIds();
        if (!StringUtils.isEmpty(resIdsStr)) {
            String[] resIds = resIdsStr.split(",");
            for (String resId : resIds) {
                SysRes sysRes = sysResMapper.selectSysResByResId(resId);
                sysRes.setResBusId(fmsLand.getLandId());
                sysResMapper.updateSysRes(sysRes);
            }
        }
        return i;
    }

    /**
     * 修改基地
     * 
     * @param fmsLand 基地
     * @return 结果
     */
    @Override
    public int updateFmsLand(FmsLand fmsLand)
    {
        SysRes sysRes = new SysRes();
        sysRes.setResBusId(fmsLand.getLandId());
        List<SysRes> sysResList = sysResMapper.selectSysResList(sysRes);
        List<String> resIdsOld = new ArrayList<>();
        for (SysRes res : sysResList) {
            resIdsOld.add(res.getResId());
        }
        String resIdsStr = fmsLand.getResIds();
        List<String> resIdsNew = new ArrayList<>();
        if (!StringUtils.isEmpty(resIdsStr)) {
            String[] resIds = resIdsStr.split(",");
            resIdsNew = Arrays.asList(resIds);
        }
        sysResService.updateSysRes(resIdsOld, resIdsNew, fmsLand.getLandId());

        return fmsLandMapper.updateFmsLand(fmsLand);
    }

    /**
     * 批量删除基地
     * 
     * @param landIds 需要删除的基地主键
     * @return 结果
     */
    @Override
    public int deleteFmsLandByLandIds(String[] landIds)
    {
        return fmsLandMapper.deleteFmsLandByLandIds(landIds);
    }

    /**
     * 删除基地信息
     * 
     * @param landId 基地主键
     * @return 结果
     */
    @Override
    public int deleteFmsLandByLandId(String landId)
    {
        return fmsLandMapper.deleteFmsLandByLandId(landId);
    }
}
