package org.jeecg.modules.projectManagement.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.modules.projectManagement.entity.FdProjectQuotationTemplateItem;
import org.jeecg.modules.projectManagement.entity.FdProjectQuotationTemplateItemAppend;
import org.jeecg.modules.projectManagement.mapper.FdProjectQuotationTemplateItemMapper;
import org.jeecg.modules.projectManagement.service.IFdProjectQuotationTemplateItemAppendService;
import org.jeecg.modules.projectManagement.service.IFdProjectQuotationTemplateItemService;
import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional;

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

/**
 * @Description: 项目报价模板对照明细
 * @author： gurui
 * @date： 2019-05-20
 * @version： V1.0
 */
@Service
@Transactional
public class FdProjectQuotationTemplateItemServiceImpl extends ServiceImpl<FdProjectQuotationTemplateItemMapper, FdProjectQuotationTemplateItem> implements IFdProjectQuotationTemplateItemService {

    @Resource
    IFdProjectQuotationTemplateItemService fdProjectQuotationTemplateItemService;

    @Resource
    IFdProjectQuotationTemplateItemAppendService fdProjectQuotationTemplateItemAppendService;

    @Resource
    FdProjectQuotationTemplateItemMapper fdProjectQuotationTemplateItemMapper;

    /**
     * @return void
     * @Author gurui
     * @Description //TODO 添加 项目报价模板对照明细 同时添加 项目报价模板新增明细
     * @Date 11:40 2019/5/21
     * @Param [fdProjectQuotationTemplateItem]
     **/
    @Override
    public void saveProjectQuotationTemplateItem(FdProjectQuotationTemplateItem fdProjectQuotationTemplateItem) {
        fdProjectQuotationTemplateItemService.save(fdProjectQuotationTemplateItem);
        if (fdProjectQuotationTemplateItem.getProjectQuotationTemplateId() != null) {
            for (FdProjectQuotationTemplateItemAppend fdProjectQuotationTemplateItemAppend : fdProjectQuotationTemplateItem.getTemplateItemAppendList()) {
                fdProjectQuotationTemplateItemAppend.setProjectQuotationTemplateId(fdProjectQuotationTemplateItem.getProjectQuotationTemplateId());
                fdProjectQuotationTemplateItemAppendService.save(fdProjectQuotationTemplateItemAppend);
            }
        }
    }

    /**
     * @return void
     * @Author gurui
     * @Description //TODO 修改 项目报价模板对照明细 同时修改 项目报价模板新增明细
     * @Date 11:41 2019/5/21
     * @Param [fdProjectQuotationTemplateItem]
     **/
    @Override
    public void updateProjectQuotationTemplateItem(FdProjectQuotationTemplateItem fdProjectQuotationTemplateItem) {
        fdProjectQuotationTemplateItemService.updateById(fdProjectQuotationTemplateItem);
        // 根据项目报价单模板id查询项目报价模板新增明细
        LambdaQueryWrapper<FdProjectQuotationTemplateItemAppend> queryTemplateItemAppend = new LambdaQueryWrapper<>();
        queryTemplateItemAppend.eq(FdProjectQuotationTemplateItemAppend::getProjectQuotationTemplateId, fdProjectQuotationTemplateItem.getProjectQuotationTemplateId()).eq(FdProjectQuotationTemplateItemAppend::getDelFlag, "0");
        List<FdProjectQuotationTemplateItemAppend> templateItemAppendList = fdProjectQuotationTemplateItemAppendService.list(queryTemplateItemAppend);
        if (fdProjectQuotationTemplateItem.getTemplateItemAppendList() != null) {
            for (FdProjectQuotationTemplateItemAppend fdProjectQuotationTemplateItemAppend : templateItemAppendList) {
                for (FdProjectQuotationTemplateItemAppend fdProjectQuotationTemplateItemAppend1 : fdProjectQuotationTemplateItem.getTemplateItemAppendList()) {
                    // 将查询出来的ID赋给传入值,根据ID修改
                    fdProjectQuotationTemplateItemAppend1.setId(fdProjectQuotationTemplateItemAppend.getId());
                    fdProjectQuotationTemplateItemAppendService.updateById(fdProjectQuotationTemplateItemAppend1);
                }
            }
        }
    }
    /**
     * @return void
     * @Author gurui
     * @Description //TODO 删除 项目报价模板对照明细 同时删除 项目报价模板新增明细
     * @Date 11:42 2019/5/21
     * @Param [ids]
     **/
    @Override
    public void deleteProjectQuotationTemplateItem(String ids) {
        //  获得要删除的ids 根据逗号提取值
        List list = Arrays.asList(ids.split(","));
        FdProjectQuotationTemplateItem fdProjectQuotationTemplateItem = null;
        for (int i = 0; i < list.size(); i++) {
            fdProjectQuotationTemplateItem = new FdProjectQuotationTemplateItem();
            fdProjectQuotationTemplateItem.setId(list.get(i).toString());
            //删除项目报价模板新增明细
            LambdaQueryWrapper<FdProjectQuotationTemplateItemAppend> queryTemplateItemAppend = new LambdaQueryWrapper<>();
            queryTemplateItemAppend.eq(FdProjectQuotationTemplateItemAppend::getProjectQuotationTemplateId, fdProjectQuotationTemplateItem.getProjectQuotationTemplateId()).eq(FdProjectQuotationTemplateItemAppend::getDelFlag, "0");
            List<FdProjectQuotationTemplateItemAppend> templateItemAppendList = fdProjectQuotationTemplateItemAppendService.list(queryTemplateItemAppend);
            for (FdProjectQuotationTemplateItemAppend templateItemAppend : templateItemAppendList) {
                templateItemAppend.setDelFlag(CommonConstant.DEL_FLAG_1.toString());
                fdProjectQuotationTemplateItemAppendService.updateById(templateItemAppend);
            }
            //删除项目报价模板对照明细
            fdProjectQuotationTemplateItem.setDelFlag(CommonConstant.DEL_FLAG_1.toString());
            fdProjectQuotationTemplateItemService.updateById(fdProjectQuotationTemplateItem);
        }
    }

    /*
    *
     * 样本模板对照的合并数据
     * @author 陈创
     * @date 2019/5/22
     * @param
     * @return map
     */
    @Override
    public List<Map<String, Object>> getTemplateItemMerge() {
        return fdProjectQuotationTemplateItemMapper.getTemplateItemMerge();
    }

    /*
    *
     * 根据模板id，报价单id查询报价单对照数据集合
     * @author 陈创
     * @date 2019/5/22
     * @param
     * @return 报价当对照集合
     */
    @Override
    public List<FdProjectQuotationTemplateItem> getListTemplateItem() {
        return fdProjectQuotationTemplateItemMapper.getListTemplateItem();
    }

    //根据来源模板id查询报价单的费用一和费用二的和
    @Override
    public List<FdProjectQuotationTemplateItem> getByQuotationId1(String quotationId) {
        return fdProjectQuotationTemplateItemMapper.getByQuotationId1(quotationId);
    }

    @Override
    public List<FdProjectQuotationTemplateItem> listOrderByCode(String quotationId, String quotationTemplateId) {
        return fdProjectQuotationTemplateItemMapper.listOrderByCode(quotationId,quotationTemplateId);
    }

    @Override
    public List<FdProjectQuotationTemplateItem> getItemAndTemp(String quotationId) {
        return fdProjectQuotationTemplateItemMapper.getItemAndTemp(quotationId);
    }

    @Override
    public List<FdProjectQuotationTemplateItem> getBioTempItemsBycontractId(String contractId) {
        return fdProjectQuotationTemplateItemMapper.getBioTempItemsBycontractId(contractId);
    }
}
