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

import java.util.List;

import com.ruoyi.common.core.domain.entity.SysUser;
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.ZsyzJzqk;
import com.ruoyi.system.domain.projectV2.ZsyzJzqkTs;
import com.ruoyi.system.mapper.projectV2.ZsyzFjMapper;
import com.ruoyi.system.mapper.projectV2.ZsyzJzqkMapper;
import com.ruoyi.system.mapper.projectV2.ZsyzJzqkTsMapper;
import com.ruoyi.system.service.projectV2.IZsyzJzqkService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import static com.ruoyi.common.constant.CommonConstants.FIV;
import static com.ruoyi.common.constant.CommonConstants.FOR;

import org.springframework.transaction.annotation.Transactional;

/**
 * 招商引资_进展情况(跟督办关系 项目需要按照固定时间内,填写进展情况否则生成督办单)Service业务层处理
 * 
 * @author boman
 * @date 2023-02-25
 */
@Service
public class ZsyzJzqkServiceImpl implements IZsyzJzqkService
{
    @Autowired
    private ZsyzJzqkMapper zsyzJzqkMapper;

    @Autowired
    private ZsyzFjMapper zsyzFjMapper;

    @Autowired
    private ZsyzJzqkTsMapper zsyzJzqkTsMapper;

    /**
     * 查询招商引资_进展情况(跟督办关系 项目需要按照固定时间内,填写进展情况否则生成督办单)
     * 
     * @param id 招商引资_进展情况(跟督办关系 项目需要按照固定时间内,填写进展情况否则生成督办单)主键
     * @return 招商引资_进展情况(跟督办关系 项目需要按照固定时间内,填写进展情况否则生成督办单)
     */
    @Override
    @Transactional
    public ZsyzJzqk selectZsyzJzqkById(Long id)
    {
        ZsyzJzqk zsyzJzqk = zsyzJzqkMapper.selectZsyzJzqkById(id);
        if (zsyzJzqk != null) {
            ZsyzFj zsyzFj = new ZsyzFj();
            zsyzFj.setSourceId(id);
            zsyzFj.setType(FIV);
            List<ZsyzFj> zsyzFjList = zsyzFjMapper.selectZsyzFjList(zsyzFj);
            if (zsyzFjList != null && zsyzFjList.size() > 0) {
                zsyzJzqk.setZsyzFjList(zsyzFjList);
            }
        }
        return zsyzJzqk;
    }

    /**
     * 查询招商引资_进展情况(跟督办关系 项目需要按照固定时间内,填写进展情况否则生成督办单)列表
     * 
     * @param zsyzJzqk 招商引资_进展情况(跟督办关系 项目需要按照固定时间内,填写进展情况否则生成督办单)
     * @return 招商引资_进展情况(跟督办关系 项目需要按照固定时间内,填写进展情况否则生成督办单)
     */
    @Override
    public List<ZsyzJzqk> selectZsyzJzqkList(ZsyzJzqk zsyzJzqk)
    {
        List<ZsyzJzqk> zsyzJzqks = zsyzJzqkMapper.selectZsyzJzqkList(zsyzJzqk);
        if (zsyzJzqks != null) {
            for (ZsyzJzqk jzqk : zsyzJzqks) {
                ZsyzFj zsyzFj = new ZsyzFj();
                zsyzFj.setSourceId(jzqk.getId());
                zsyzFj.setType(FIV);
                List<ZsyzFj> zsyzFjList = zsyzFjMapper.selectZsyzFjList(zsyzFj);
                if (zsyzFjList != null && zsyzFjList.size() > 0) {
                    jzqk.setZsyzFjList(zsyzFjList);
                }
            }
        }
        return zsyzJzqks;
    }

    /**
     * 新增招商引资_进展情况(跟督办关系 项目需要按照固定时间内,填写进展情况否则生成督办单)
     * 
     * @param zsyzJzqk 招商引资_进展情况(跟督办关系 项目需要按照固定时间内,填写进展情况否则生成督办单)
     * @return 结果
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int insertZsyzJzqk(ZsyzJzqk zsyzJzqk)
    {
        SysUser user = SecurityUtils.getLoginUser().getUser();
        zsyzJzqk.setDeptName(user.getDept().getDeptName());
        zsyzJzqk.setDeptId(user.getDeptId());
        zsyzJzqk.setCreateTime(DateUtils.getNowDate());
        int i = zsyzJzqkMapper.insertZsyzJzqk(zsyzJzqk);
        //保存附件信息
        List<ZsyzFj> zsyzFjList = zsyzJzqk.getZsyzFjList();
        if (zsyzFjList != null){
            for (ZsyzFj zsyzFj : zsyzFjList) {
                zsyzFj.setSourceId(zsyzJzqk.getId());
                zsyzFj.setType(FIV);
                zsyzFj.setXmId(zsyzJzqk.getXmId());
                zsyzFj.setXmbh(zsyzJzqk.getXmbh());
                zsyzFjMapper.insertZsyzFj(zsyzFj);
            }
        }
        //修改招商引资_进展情况_提示表状态
        ZsyzJzqkTs zsyzJzqkTs = new ZsyzJzqkTs();
        zsyzJzqkTs.setXmId(zsyzJzqk.getXmId());
        zsyzJzqkTs.setIsDel("Y");
        zsyzJzqkTs.setUpdateTime(DateUtils.getNowDate());
        zsyzJzqkTsMapper.updateZsyzJzqkTsByXmid(zsyzJzqkTs);
        return i;
    }

    /**
     * 修改招商引资_进展情况(跟督办关系 项目需要按照固定时间内,填写进展情况否则生成督办单)
     * 
     * @param zsyzJzqk 招商引资_进展情况(跟督办关系 项目需要按照固定时间内,填写进展情况否则生成督办单)
     * @return 结果
     */
    @Override
    @Transactional
    public int updateZsyzJzqk(ZsyzJzqk zsyzJzqk)
    {
        zsyzJzqk.setUpdateTime(DateUtils.getNowDate());
        //修改附件
        if (zsyzJzqk.getZsyzFjList() != null && zsyzJzqk.getZsyzFjList().size() > 0) {
            ZsyzFj zsyzFjDelete = new ZsyzFj();
            zsyzFjDelete.setSourceId(zsyzJzqk.getId());
            zsyzFjDelete.setType(FIV);
            //先删除相关附件
            zsyzFjMapper.deleteZsyzFjBySourceId(zsyzFjDelete);
            //再将文件新增进数据库
            List<ZsyzFj> zsyzFjList = zsyzJzqk.getZsyzFjList();
            for (ZsyzFj zsyzFj : zsyzFjList) {
                zsyzFj.setSourceId(zsyzJzqk.getId());
                zsyzFj.setType(FIV);
                zsyzFj.setXmId(zsyzJzqk.getXmId());
                zsyzFj.setXmbh(zsyzJzqk.getXmbh());
                zsyzFjMapper.insertZsyzFj(zsyzFj);
            }
        }
        return zsyzJzqkMapper.updateZsyzJzqk(zsyzJzqk);
    }

    /**
     * 批量删除招商引资_进展情况(跟督办关系 项目需要按照固定时间内,填写进展情况否则生成督办单)
     * 
     * @param ids 需要删除的招商引资_进展情况(跟督办关系 项目需要按照固定时间内,填写进展情况否则生成督办单)主键
     * @return 结果
     */
    @Override
    public int deleteZsyzJzqkByIds(Long[] ids)
    {
        return zsyzJzqkMapper.deleteZsyzJzqkByIds(ids);
    }

    /**
     * 删除招商引资_进展情况(跟督办关系 项目需要按照固定时间内,填写进展情况否则生成督办单)信息
     * 
     * @param id 招商引资_进展情况(跟督办关系 项目需要按照固定时间内,填写进展情况否则生成督办单)主键
     * @return 结果
     */
    @Override
    public int deleteZsyzJzqkById(Long id)
    {
        return zsyzJzqkMapper.deleteZsyzJzqkById(id);
    }
}
