package com.yunyan.business.document.y23.finalData;

import cn.hutool.core.util.NumberUtil;
import com.yunyan.business.constant.TemplateEpType;
import com.yunyan.business.document.utils.ReadExcelUtil;
import com.yunyan.business.document.y22.FinalY22Utils;
import com.yunyan.business.document.y22.pojo.finalExcelY22.FinalP3T1TotalItemVo;
import com.yunyan.business.document.y23.finalData.pojo.ChangeValueItemVo;
import com.yunyan.common.utils.NumberFormatUtils;
import com.yunyan.common.utils.StringUtils;

import java.math.BigDecimal;

/**
 * 决算的凭祥模板的读取(博白)
 */
public class FinalY23BbUtils {

    /**
     * 检查 是否是模板的 修改
     * @param templateExportType
     * @return 当不属于时, 返回true
     */
    private static boolean checkTmplateType(String templateExportType) {
        if(
        !TemplateEpType.Y2023FT4BB.getCode().equals(templateExportType)
        ) {
            return true;
        }

        return false;
    }

    /**
     * 第3部分的第一的收入的设置
     * @param incomeItem
     * @param templateExportType
     */
    public static void setP3T1ItemInfo(FinalP3T1TotalItemVo incomeItem, String templateExportType) {
        if(checkTmplateType(templateExportType)) {
            return;
        }

        String info = incomeItem.getInfo();
        if(incomeItem.getName().startsWith("一般公共预算财政") ||  incomeItem.getName().startsWith("政府性基金预算")) {
            info += "，为县本级财政当年拨付的资金";
            incomeItem.setInfo(info);
        }
        if (incomeItem.getName().startsWith("国有资本经营预算")) {
            info += "，为县本级财政当年拨付的资金";
            incomeItem.setInfo(info);
        }
        if (incomeItem.getName().startsWith("其他收入")) {
            info += "，为预算单位在“财政拨款收入”“事业收入”“经营收入”之外取得的收入";
            incomeItem.setInfo(info);
            incomeItem.setInfoDescFlag(0);
        }
        if (incomeItem.getName().startsWith("事业收入")) {
            info += "，为事业单位开展业务活动取得的收入";
            incomeItem.setInfo(info);
            incomeItem.setInfoDescFlag(0);
        }
        if (incomeItem.getName().startsWith("经营收入")) {
            info += "，为事业单位在业务活动之外开展非独立核算经营活动取得的收入";
            incomeItem.setInfo(info);
        }
        if (incomeItem.getName().startsWith("使用非财政拨款结余和专用结余")) {
            incomeItem.setName(incomeItem.getName().replaceFirst("使用非财政拨款结余和专用结余", "使用非财政拨款结余"));
            info = info.replaceFirst("使用非财政拨款结余和专用结余", "使用非财政拨款结余");
            info += "，主要是所属事业单位在当年的“财政拨款收入”“事业收入”“经营收入”及“其他收入”不能保证其支出的情况下，使用以前年度积累的非财政拨款结余弥补本年度收支缺口的资金";
            incomeItem.setInfo(info);
        }
        if (incomeItem.getName().startsWith("年初结转和结余")) {
            incomeItem.setName(incomeItem.getName().replaceFirst("年初结转和结余", "上年结转和结余"));
            //改成 年初
            info = info.replaceFirst("年初结转和结余", "上年结转和结余");
            //info += "，既包括财政拨款结转和结余，也包括事业收入、经营收入、其他收入的结转和结余";
            incomeItem.setInfo(info);
        }

    }
    /**
     * 第3部分的第一的支出的设置
     * @param itemInfo
     * @param templateExportType
     */
    public static void setP3T1ItemInfo2(FinalP3T1TotalItemVo itemInfo, String templateExportType) {
        if(checkTmplateType(templateExportType)) {
            return;
        }

        String info = itemInfo.getInfo();
        if (itemInfo.getName().startsWith("结余分配")) {
            info += "，为事业单位按规定提取的职工福利基金、事业基金和缴纳的所得税等";
            itemInfo.setInfo(info);
        }
        if (itemInfo.getName().startsWith("年末结转和结余")) {
            info += "，为本年度或以前年度预算安排、因客观条件发生变化无法按原计划实施，需要延迟到以后年度按有关规定继续使用的资金，既包括财政拨款结转和结余，也包括事业收入、经营收入、其他收入的结转和结余";
            itemInfo.setInfo(info);
            itemInfo.setInfoDescFlag(0);
        }

        if (itemInfo.getName().startsWith("事业收入")) {
            //单位自行填写
            itemInfo.setInfoDescFlag(1);
        }
    }


    /**
     * 附属单位上缴 上级补助收入 去除, 去除 返回 false
     * @param incomeItem
     * @param templateExportType
     * @return
     */
    public static boolean checkAddP3T1Item(FinalP3T1TotalItemVo incomeItem, String templateExportType) {
        if(!checkTmplateType(templateExportType) && incomeItem.getName().startsWith("附属单位上缴") || !checkTmplateType(templateExportType) && incomeItem.getName().startsWith("上级补助收入")) {
            return false;
        }

        return true;
    }

    /**
     * 3.3部分的年度一般公共预算财政拨款基本支出决算情况说明 经济分类支出科目 的info 文字
     * @param itemName
     * @param val1 本年/结束
     * @param val2 去年/开始
     * @param ratio
     * @return
     */
    public static String getInfoStrP3T3(String itemName, String val1, String val2, String ratio, String templateExportType) {
        if(checkTmplateType(templateExportType)) {
            return "";
        }
        //String str =  String.format("%s决算数为%s万元，年初预算为%s万元", itemName, val1, val2);
        String str =  String.format("%s决算数为%s万元", itemName, val1);

        //判断 初始值 是否为空 变化率的显示
        if(StringUtils.isNotBlank(val2) ) {
            String valNum = FinalY23Utils.strFormaTtoNum(val2);
            BigDecimal val1Decimal =  new BigDecimal(valNum);
            if(val1Decimal.compareTo(BigDecimal.ZERO) != 0 ) {
                str += String.format("，完成年初预算的%s%%", ratio);
            }
        }

        return str;
    }

}
