package com.ruoyi.system.service.impl.projectV2;

import java.util.List;

import com.ruoyi.common.annotation.DataScope;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.domain.projectV2.ZsyzFj;
import com.ruoyi.system.domain.projectV2.ZsyzSkDzje;
import com.ruoyi.system.domain.projectV2.ZsyzSkSwtzdw;
import com.ruoyi.system.domain.projectV2.ZsyzSkxm;
import com.ruoyi.system.mapper.projectV2.ZsyzFjMapper;
import com.ruoyi.system.mapper.projectV2.ZsyzSkDzjeMapper;
import com.ruoyi.system.mapper.projectV2.ZsyzSkSwtzdwMapper;
import com.ruoyi.system.mapper.projectV2.ZsyzSkxmMapper;
import com.ruoyi.system.service.projectV2.IZsyzSkxmService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import static com.ruoyi.common.constant.CommonConstants.ONE;
import static com.ruoyi.common.constant.CommonConstants.SIX;

/**
 * 招商引资_省库项目Service业务层处理
 *
 * @author boman
 * @date 2023-03-28
 */
@Service
public class ZsyzSkxmServiceImpl implements IZsyzSkxmService {
    @Autowired
    private ZsyzSkxmMapper zsyzSkxmMapper;
    @Autowired
    private ZsyzSkSwtzdwMapper zsyzSkSwtzdwMapper;
    @Autowired
    private ZsyzSkDzjeMapper zsyzSkDzjeMapper;

    @Autowired
    private ZsyzFjMapper zsyzFjMapper;

    /**
     * 查询招商引资_省库项目
     *
     * @param id 招商引资_省库项目主键
     * @return 招商引资_省库项目
     */
    @Override
    public ZsyzSkxm selectZsyzSkxmById(Long id) {
        ZsyzSkxm zsyzSkxm = zsyzSkxmMapper.selectZsyzSkxmById(id);
        if (zsyzSkxm != null) {
            List<ZsyzSkSwtzdw> zsyzSkSwtzdws = zsyzSkSwtzdwMapper.selectZsyzSkSwtzdwBySkId(zsyzSkxm.getId());
            ZsyzFj zsyzFj = new ZsyzFj();
            zsyzFj.setSourceId(zsyzSkxm.getId());
            zsyzFj.setType(SIX);
            List<ZsyzFj> zsyzFjs = zsyzFjMapper.selectZsyzFjList(zsyzFj);
            ZsyzSkDzje zsyzSkDzje = new ZsyzSkDzje();
            zsyzSkDzje.setSkId(zsyzSkxm.getId());
            List<ZsyzSkDzje> zsyzSkDzjes = zsyzSkDzjeMapper.selectZsyzSkDzjeList(zsyzSkDzje);
            if (zsyzSkDzjes != null && zsyzSkDzjes.size() > 0){
                zsyzSkxm.setZsyzSkDzjeList(zsyzSkDzjes);
            }
            if (zsyzFjs != null && zsyzFjs.size() > 0){
                zsyzSkxm.setZsyzFjList(zsyzFjs);
            }
            if (zsyzSkSwtzdws != null && zsyzSkSwtzdws.size() > 0) {
                zsyzSkxm.setZsyzSkSwtzdwList(zsyzSkSwtzdws);
            }
        }
        return zsyzSkxm;
    }

    /**
     * 查询招商引资_省库项目列表
     *
     * @param zsyzSkxm 招商引资_省库项目
     * @return 招商引资_省库项目
     */
    @Override
    @DataScope(deptAlias = "z")
    public List<ZsyzSkxm> selectZsyzSkxmList(ZsyzSkxm zsyzSkxm) {
        List<ZsyzSkxm> zsyzSkxms = zsyzSkxmMapper.selectZsyzSkxmList(zsyzSkxm);
        //查询实际到资金额
        if (zsyzSkxms != null && zsyzSkxms.size() > 0) {
            for (ZsyzSkxm skxm : zsyzSkxms) {
                Long aLong = zsyzSkDzjeMapper.selectCountBySkId(skxm.getId());
                skxm.setZzje(aLong);
            }
        }
        return zsyzSkxms;
    }

    /**
     * 新增招商引资_省库项目
     *
     * @param zsyzSkxm 招商引资_省库项目
     * @return 结果
     */
    @Override
    public int insertZsyzSkxm(ZsyzSkxm zsyzSkxm) {
        zsyzSkxm.setCreateTime(DateUtils.getNowDate());
        zsyzSkxm.setDeptId(SecurityUtils.getDeptId());
        int i = zsyzSkxmMapper.insertZsyzSkxm(zsyzSkxm);
        List<ZsyzSkSwtzdw> zsyzSkSwtzdwList = zsyzSkxm.getZsyzSkSwtzdwList();
        if (zsyzSkSwtzdwList != null && zsyzSkSwtzdwList.size() > 0) {
            for (ZsyzSkSwtzdw zsyzSkSwtzdw : zsyzSkSwtzdwList) {
                zsyzSkSwtzdw.setSkId(zsyzSkxm.getId());
                zsyzSkSwtzdwMapper.insertZsyzSkSwtzdw(zsyzSkSwtzdw);
            }
        }
        List<ZsyzSkDzje> zsyzSkDzjeList = zsyzSkxm.getZsyzSkDzjeList();
        if (zsyzSkDzjeList != null && zsyzSkDzjeList.size() > 0) {
            for (ZsyzSkDzje zsyzSkDzje : zsyzSkDzjeList) {
                zsyzSkDzje.setXmmc(zsyzSkxm.getXmmc());
                zsyzSkDzje.setSkId(zsyzSkxm.getId());
                zsyzSkDzjeMapper.insertZsyzSkDzje(zsyzSkDzje);
            }
        }
        List<ZsyzFj> zsyzFjList = zsyzSkxm.getZsyzFjList();
        if (zsyzFjList != null && zsyzFjList.size() > 0){
            for (ZsyzFj zsyzFj : zsyzFjList) {
                zsyzFj.setType(SIX);
                zsyzFj.setXmId(zsyzSkxm.getId());
                zsyzFj.setSourceId(zsyzSkxm.getId());
                zsyzFjMapper.insertZsyzFj(zsyzFj);
            }
        }
        return i;
    }

    /**
     * 修改招商引资_省库项目
     *
     * @param zsyzSkxm 招商引资_省库项目
     * @return 结果
     */
    @Override
    public int updateZsyzSkxm(ZsyzSkxm zsyzSkxm) {
        zsyzSkxm.setUpdateTime(DateUtils.getNowDate());
        zsyzSkxm.setIsSh(ONE);
        int i = zsyzSkxmMapper.updateZsyzSkxm(zsyzSkxm);
        List<ZsyzSkSwtzdw> zsyzSkSwtzdwList = zsyzSkxm.getZsyzSkSwtzdwList();
        if (zsyzSkSwtzdwList != null && zsyzSkSwtzdwList.size() > 0) {
            zsyzSkSwtzdwMapper.deleteZsyzSkSwtzdwBySkId(zsyzSkxm.getId());
            for (ZsyzSkSwtzdw zsyzSkSwtzdw : zsyzSkSwtzdwList) {
                zsyzSkSwtzdw.setSkId(zsyzSkxm.getId());
                zsyzSkSwtzdwMapper.insertZsyzSkSwtzdw(zsyzSkSwtzdw);
            }
        }
        List<ZsyzSkDzje> zsyzSkDzjeList = zsyzSkxm.getZsyzSkDzjeList();
        if (zsyzSkDzjeList != null && zsyzSkDzjeList.size() > 0) {
            zsyzSkDzjeMapper.deleteZsyzSkDzjeBySkId(zsyzSkxm.getId());
            for (ZsyzSkDzje zsyzSkDzje : zsyzSkDzjeList) {
                zsyzSkDzje.setXmmc(zsyzSkxm.getXmmc());
                zsyzSkDzje.setSkId(zsyzSkxm.getId());
                zsyzSkDzjeMapper.insertZsyzSkDzje(zsyzSkDzje);
            }
        }
        List<ZsyzFj> zsyzFjList = zsyzSkxm.getZsyzFjList();
        if (zsyzFjList != null && zsyzFjList.size() > 0){
            ZsyzFj zsyzFjDelete = new ZsyzFj();
            zsyzFjDelete.setSourceId(zsyzSkxm.getId());
            zsyzFjDelete.setType(SIX);
            zsyzFjMapper.deleteZsyzFjBySourceId(zsyzFjDelete);
            for (ZsyzFj zsyzFj : zsyzFjList) {
                zsyzFj.setType(SIX);
                zsyzFj.setXmId(zsyzSkxm.getId());
                zsyzFj.setSourceId(zsyzSkxm.getId());
                zsyzFjMapper.insertZsyzFj(zsyzFj);
            }
        }
        return i;
    }

    /**
     * 批量删除招商引资_省库项目
     *
     * @param ids 需要删除的招商引资_省库项目主键
     * @return 结果
     */
    @Override
    public int deleteZsyzSkxmByIds(Long[] ids) {
        return zsyzSkxmMapper.deleteZsyzSkxmByIds(ids);
    }

    /**
     * 删除招商引资_省库项目信息
     *
     * @param id 招商引资_省库项目主键
     * @return 结果
     */
    @Override
    public int deleteZsyzSkxmById(Long id) {
        return zsyzSkxmMapper.deleteZsyzSkxmById(id);
    }
}
