package com.ruoyi.system.service.impl;

import java.util.List;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.domain.ProposalInfo;
import com.ruoyi.system.domain.ZxFj;
import com.ruoyi.system.mapper.ProposalInfoMapper;
import com.ruoyi.system.mapper.ZxFjMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.ProposalUnitReplyMapper;
import com.ruoyi.system.domain.ProposalUnitReply;
import com.ruoyi.system.service.IProposalUnitReplyService;
import org.springframework.transaction.annotation.Transactional;

/**
 * 提案单位答复Service业务层处理
 * 
 * @author boman
 * @date 2024-03-07
 */
@Service
public class ProposalUnitReplyServiceImpl implements IProposalUnitReplyService 
{
    @Autowired
    private ProposalUnitReplyMapper proposalUnitReplyMapper;
    @Autowired
    private ProposalInfoMapper proposalInfoMapper;
    @Autowired
    private ZxFjMapper zxFjMapper;

    /**
     * 查询提案单位答复
     * 
     * @param id 提案单位答复主键
     * @return 提案单位答复
     */
    @Override
    public ProposalUnitReply selectProposalUnitReplyById(Long id)
    {
        return proposalUnitReplyMapper.selectProposalUnitReplyById(id);
    }

    /**
     * 查询提案单位答复列表
     * 
     * @param proposalUnitReply 提案单位答复
     * @return 提案单位答复
     */
    @Override
    public List<ProposalUnitReply> selectProposalUnitReplyList(ProposalUnitReply proposalUnitReply)
    {
        return proposalUnitReplyMapper.selectProposalUnitReplyList(proposalUnitReply);
    }

    /**
     * 新增提案单位答复
     * 
     * @param proposalUnitReply 提案单位答复
     * @return 结果
     */
    @Override
    public int insertProposalUnitReply(ProposalUnitReply proposalUnitReply)
    {
        return proposalUnitReplyMapper.insertProposalUnitReply(proposalUnitReply);
    }

    /**
     * 修改提案单位答复
     * 
     * @param proposalUnitReply 提案单位答复
     * @return 结果
     */
    @Override
    public int updateProposalUnitReply(ProposalUnitReply proposalUnitReply)
    {
        return proposalUnitReplyMapper.updateProposalUnitReply(proposalUnitReply);
    }

    /**
     * 批量删除提案单位答复
     * 
     * @param ids 需要删除的提案单位答复主键
     * @return 结果
     */
    @Override
    public int deleteProposalUnitReplyByIds(Long[] ids)
    {
        return proposalUnitReplyMapper.deleteProposalUnitReplyByIds(ids);
    }

    /**
     * 删除提案单位答复信息
     * 
     * @param id 提案单位答复主键
     * @return 结果
     */
    @Override
    public int deleteProposalUnitReplyById(Long id)
    {
        return proposalUnitReplyMapper.deleteProposalUnitReplyById(id);
    }

    @Override
    @Transactional
    public AjaxResult reply(ProposalUnitReply proposalUnitReply) {
        //查询当前账号部门
        Long deptId = SecurityUtils.getDeptId();
        proposalUnitReply.setDeptId(deptId);
        proposalUnitReply.setEndTime(DateUtils.getNowDate());
        List<ProposalUnitReply> list = proposalUnitReplyMapper.selectProposalUnitReplyList(proposalUnitReply);
        for (ProposalUnitReply unitReply : list) {
            unitReply.setContent(proposalUnitReply.getContent());
            unitReply.setIsReply("0");
            proposalUnitReplyMapper.updateProposalUnitReply(unitReply);
        }
        if(list.get(0).getType().equals("2")){
            ProposalInfo proposalInfo = new ProposalInfo();
            proposalInfo.setProposalId(proposalUnitReply.getProposalId());
            proposalInfo.setProposalProgress("4");
            proposalInfo.setUpdateTime(DateUtils.getNowDate());
            proposalInfoMapper.updateProposalInfo(proposalInfo);
        }

        if(proposalUnitReply.getZxFjList()!=null && proposalUnitReply.getZxFjList().size()>0){
            for (ZxFj zxFj : proposalUnitReply.getZxFjList()) {
                zxFj.setMainId(proposalUnitReply.getProposalId());
                zxFj.setSourceId(proposalUnitReply.getId());
                zxFj.setType("1");
                zxFj.setStytle(list.get(0).getType());
                zxFjMapper.insertZxFj(zxFj);
            }
        }

        return  AjaxResult.success();
    }

}
