package com.ruoyi.project.plant.service.impl;

import java.util.List;

import com.ruoyi.common.utils.DictUtils;
import com.ruoyi.common.utils.poi.POIConstants;
import com.ruoyi.common.utils.poi.PoiWordTools;
import com.ruoyi.project.plant.domain.TMtEhsopenitem;
import com.ruoyi.project.system.domain.SysDictData;
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.service.ISysDictTypeService;
import com.ruoyi.project.system.service.ISysUserService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.poi.xwpf.usermodel.*;
import org.apache.xmlbeans.XmlCursor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.project.plant.mapper.TMtPersonMapper;
import com.ruoyi.project.plant.domain.TMtPerson;
import com.ruoyi.project.plant.service.ITMtPersonService;

import javax.annotation.Resource;

/**
 * 会议人员Service业务层处理
 *
 * @author ruoyi
 * @date 2021-01-14
 */
@Service
public class TMtPersonServiceImpl implements ITMtPersonService
{
    @Resource
    private TMtPersonMapper tMtPersonMapper;
    @Autowired
    private ISysDictTypeService iSysDictTypeService;
    @Autowired
    private ISysUserService sysUserService;
    /**
     * 查询会议人员
     *
     * @param id 会议人员ID
     * @return 会议人员
     */
    @Override
    public TMtPerson selectTMtPersonById(Long id)
    {
        return tMtPersonMapper.selectTMtPersonById(id);
    }

    /**
     * 查询会议人员列表
     *
     * @param tMtPerson 会议人员
     * @return 会议人员
     */
    @Override
    public List<TMtPerson> selectTMtPersonList(TMtPerson tMtPerson)
    {
        return tMtPersonMapper.selectTMtPersonList(tMtPerson);
    }

    /**
     * 新增会议人员
     *
     * @param tMtPerson 会议人员
     * @return 结果
     */
    @Override
    public int insertTMtPerson(TMtPerson tMtPerson)
    {
        return tMtPersonMapper.insertTMtPerson(tMtPerson);
    }

    /**
     * 修改会议人员
     *
     * @param tMtPerson 会议人员
     * @return 结果
     */
    @Override
    public int updateTMtPerson(TMtPerson tMtPerson)
    {
        return tMtPersonMapper.updateTMtPerson(tMtPerson);
    }

    /**
     * 批量删除会议人员
     *
     * @param ids 需要删除的会议人员ID
     * @return 结果
     */
    @Override
    public int deleteTMtPersonByIds(Long[] ids)
    {
        return tMtPersonMapper.deleteTMtPersonByIds(ids);
    }

    /**
     * 删除会议人员信息
     *
     * @param id 会议人员ID
     * @return 结果
     */
    @Override
    public int deleteTMtPersonById(Long id)
    {
        return tMtPersonMapper.deleteTMtPersonById(id);
    }

    @Override
    public void dealPerson1(XWPFDocument doc, XWPFParagraph paragraph, XWPFRun run, Long meetingId) {
        run.setText("", 0);//设置此文本在运行中的文本value -应在文件中显示的文字文本,pos --在文本数组中的位置（NB：从0开始）
        XmlCursor cursor = paragraph.getCTP().newCursor();
        XWPFTable tableOne = doc.insertNewTbl(cursor);// ---这个是关键
        List<SysDictData> staff = iSysDictTypeService.selectDictDataByType("STAFF_UNIT");
        List<SysDictData> actualpost = iSysDictTypeService.selectDictDataByType("ACTUALPOST");
        // 设置表格宽度，第一行宽度就可以了，这个值的单位，目前我也还不清楚，还没来得及研究
        tableOne.setWidth(6000);

        // 表格第一行，对于每个列，必须使用createCell()，而不是getCell()，因为第一行嘛，肯定是属于创建的，没有create哪里来的get呢
        XWPFTableRow tableOneRowOne = tableOne.getRow(0);// 行
        PoiWordTools.setWordCellSelfStyle(tableOneRowOne.getCell(0), POIConstants.FONT_NAME, POIConstants.MT_FONT_SIZE,    POIConstants.FONT_BOLD, POIConstants.ALIGNMENT, POIConstants.VERTICAL,POIConstants.FONT_COLOR, POIConstants.MT_BG_TITLE_COLOR, "20", "部门/岗位");
        PoiWordTools.setWordCellSelfStyle(tableOneRowOne.createCell(), POIConstants.FONT_NAME, POIConstants.MT_FONT_SIZE,  POIConstants.FONT_BOLD, POIConstants.ALIGNMENT,POIConstants.VERTICAL, POIConstants.FONT_COLOR, POIConstants.MT_BG_TITLE_COLOR, "40", "姓名");
        TMtPerson tMtPerson = new TMtPerson();
        tMtPerson.setMeetingId(meetingId);
        tMtPerson.setIsCc(0l);
        List<TMtPerson> list = tMtPersonMapper.selectTMtPersonList(tMtPerson);
        for (TMtPerson t: list
        ) {
            SysUser user = sysUserService.selectUserByStaffId(t.getStaffid());
            if (user != null) {
                t.setName(user.getNickName());
                t.setContact(user.getEmail());
                t.setUnit(user.getDept().getDeptName());
            }
        }
        if (CollectionUtils.isNotEmpty(list)) {
            for (int i = 0; i < list.size(); i++) {
                // 表格第二行
                XWPFTableRow tableOneRowTwo = tableOne.createRow();// 行
                PoiWordTools.setWordCellSelfStyle(tableOneRowTwo.getCell(0), POIConstants.FONT_NAME, POIConstants.MT_FONT_SIZE, POIConstants.FONT_BOLD, POIConstants.ALIGNMENT,POIConstants.VERTICAL, POIConstants.FONT_COLOR, POIConstants.BG_COLOR, "20", list.get(i).getUnit()+ "  " + DictUtils.getDictVale(actualpost ,list.get(i).getActualpost()));
                PoiWordTools.setWordCellSelfStyle(tableOneRowTwo.getCell(1), POIConstants.FONT_NAME, POIConstants.MT_FONT_SIZE, POIConstants.FONT_BOLD, POIConstants.ALIGNMENT,POIConstants.VERTICAL, POIConstants.FONT_COLOR, POIConstants.BG_COLOR, "40", list.get(i).getName());
            }
        }
    }

    @Override
    public void dealPerson2(XWPFDocument doc, XWPFParagraph paragraph, XWPFRun run, Long meetingId) {
        run.setText("", 0);//设置此文本在运行中的文本value -应在文件中显示的文字文本,pos --在文本数组中的位置（NB：从0开始）
        XmlCursor cursor = paragraph.getCTP().newCursor();
        XWPFTable tableOne = doc.insertNewTbl(cursor);// ---这个是关键

        // 设置表格宽度，第一行宽度就可以了，这个值的单位，目前我也还不清楚，还没来得及研究
        tableOne.setWidth(6000);

        // 表格第一行，对于每个列，必须使用createCell()，而不是getCell()，因为第一行嘛，肯定是属于创建的，没有create哪里来的get呢
        XWPFTableRow tableOneRowOne = tableOne.getRow(0);// 行
        PoiWordTools.setWordCellSelfStyle(tableOneRowOne.getCell(0), POIConstants.FONT_NAME, POIConstants.MT_FONT_SIZE,    POIConstants.FONT_BOLD, POIConstants.ALIGNMENT, POIConstants.VERTICAL,POIConstants.FONT_COLOR, POIConstants.MT_BG_TITLE_COLOR, "20", "部门/岗位");
        PoiWordTools.setWordCellSelfStyle(tableOneRowOne.createCell(), POIConstants.FONT_NAME, POIConstants.MT_FONT_SIZE,  POIConstants.FONT_BOLD, POIConstants.ALIGNMENT,POIConstants.VERTICAL, POIConstants.FONT_COLOR, POIConstants.MT_BG_TITLE_COLOR, "40", "姓名");
        TMtPerson tMtPerson = new TMtPerson();
        tMtPerson.setMeetingId(meetingId);
        tMtPerson.setIsCc(1l);
        List<TMtPerson> list = tMtPersonMapper.selectTMtPersonList(tMtPerson);
        List<SysDictData> staff = iSysDictTypeService.selectDictDataByType("STAFF_UNIT");
        List<SysDictData> actualpost = iSysDictTypeService.selectDictDataByType("ACTUALPOST");

        for (TMtPerson t: list
        ) {
            SysUser user = sysUserService.selectUserByStaffId(t.getStaffid());
            if (user != null) {
                t.setName(user.getNickName());
                t.setContact(user.getEmail());
                t.setUnit(user.getDept().getDeptName());
            }
        }

        if (CollectionUtils.isNotEmpty(list)) {
            for (int i = 0; i < list.size(); i++) {
                // 表格第二行
                XWPFTableRow tableOneRowTwo = tableOne.createRow();// 行
                PoiWordTools.setWordCellSelfStyle(tableOneRowTwo.getCell(0), POIConstants.FONT_NAME, POIConstants.MT_FONT_SIZE, POIConstants.FONT_BOLD, POIConstants.ALIGNMENT,POIConstants.VERTICAL, POIConstants.FONT_COLOR, POIConstants.BG_COLOR, "20", list.get(i).getUnit()+ "  " + DictUtils.getDictVale(actualpost ,list.get(i).getActualpost()));
                PoiWordTools.setWordCellSelfStyle(tableOneRowTwo.getCell(1), POIConstants.FONT_NAME, POIConstants.MT_FONT_SIZE, POIConstants.FONT_BOLD, POIConstants.ALIGNMENT,POIConstants.VERTICAL, POIConstants.FONT_COLOR, POIConstants.BG_COLOR, "40", list.get(i).getName());
            }
        }
    }
}
