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.FmsCrop;
import com.yunfeiyun.agmp.fms.mapper.FmsCropMapper;
import com.yunfeiyun.agmp.fms.domain.resvo.FmsCropResVo;
import com.yunfeiyun.agmp.fms.service.IFmsCropService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

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

/**
 * 作物Service业务层处理
 * 
 * @author 杨晓辉
 * @date 2023-05-16
 */
@Service
public class FmsCropServiceImpl implements IFmsCropService 
{
    @Autowired
    private FmsCropMapper fmsCropMapper;
    @Resource
    private SysResMapper sysResMapper;
    @Resource
    private ISysResService sysResService;

    /**
     * 查询作物
     * 
     * @param cropId 作物主键
     * @return 作物
     */
    @Override
    public FmsCrop selectFmsCropByCropId(String cropId)
    {
        return fmsCropMapper.selectFmsCropByCropId(cropId);
    }

    @Override
    public List<FmsCrop> selectFmsCropNameByCropMaintype(String cropMaintype) {
        return fmsCropMapper.selectFmsCropNameByCropMaintype(cropMaintype);
    }

    /**
     * 查询作物列表
     * 
     * @param fmsCrop 作物
     * @return 作物
     */
    @Override
    public List<FmsCropResVo> selectFmsCropList(FmsCrop fmsCrop)
    {
        return fmsCropMapper.selectFmsCropList(fmsCrop);
    }

    /**
     * 新增作物
     * 
     * @param fmsCrop 作物
     * @return 结果
     */
    @Transactional
    @Override
    public int insertFmsCrop(FmsCrop fmsCrop)
    {
        fmsCrop.setCropId(fmsCrop.getId());
        fmsCrop.setCropRcmdstatus("0");
        int i = fmsCropMapper.insertFmsCrop(fmsCrop);

        String resIdsStr = fmsCrop.getResIds();
        if (!StringUtils.isEmpty(resIdsStr)) {
            String[] resIds = resIdsStr.split(",");
            for (String resId : resIds) {
                SysRes sysRes = sysResMapper.selectSysResByResId(resId);
                sysRes.setResBusId(fmsCrop.getCropId());
                sysResMapper.updateSysRes(sysRes);
            }
        }
        return i;
    }

    /**
     * 修改作物
     * 
     * @param fmsCrop 作物
     * @return 结果
     */
    @Transactional
    @Override
    public int updateFmsCrop(FmsCrop fmsCrop)
    {
        SysRes sysRes = new SysRes();
        sysRes.setResBusId(fmsCrop.getCropId());
        List<SysRes> sysResList = sysResMapper.selectSysResList(sysRes);
        List<String> resIdsOld = new ArrayList<>();
        for (SysRes res : sysResList) {
            resIdsOld.add(res.getResId());
        }
        String resIdsStr = fmsCrop.getResIds();
        List<String> resIdsNew = new ArrayList<>();
        if (!StringUtils.isEmpty(resIdsStr)) {
            String[] resIds = resIdsStr.split(",");
            resIdsNew = Arrays.asList(resIds);
        }

        sysResService.updateSysRes(resIdsOld, resIdsNew, fmsCrop.getCropId());
        return fmsCropMapper.updateFmsCrop(fmsCrop);
    }

    /**
     * 批量删除作物
     * 
     * @param cropIds 需要删除的作物主键
     * @return 结果
     */
    @Override
    public int deleteFmsCropByCropIds(String[] cropIds)
    {
        return fmsCropMapper.deleteFmsCropByCropIds(cropIds);
    }

    /**
     * 删除作物信息
     * 
     * @param cropId 作物主键
     * @return 结果
     */
    @Override
    public int deleteFmsCropByCropId(String cropId)
    {
        return fmsCropMapper.deleteFmsCropByCropId(cropId);
    }


}
