package com.awspaas.user.apps.bnbm.datalinkup.util;

import com.actionsoft.bpms.bo.engine.BO;
import com.actionsoft.bpms.util.UtilString;
import com.actionsoft.sdk.local.SDK;
import org.apache.commons.lang3.StringUtils;

import java.util.List;

public class SaleUtil {
    /**
     * 单字段匹配：根据源字段（如 BKGS）匹配 BO 中的目标字段（如 BBGS）
     * @param boList 待匹配的 BO 列表
     * @param defaultJzgz 匹配失败时默认的 JZGZ 值
     * @param defaultJcmc 匹配失败时默认的 JCMC 值
     * @return 匹配结果数组 [JZGZ, JCMC]
     */
    public static String[] matchSingleField(String bbgsSource, String lb_1,String lb_2,String lb_3,
                                            List<BO> boList, String defaultJzgz, String defaultJcmc,String defaultProdCat) {
        if (boList == null || boList.isEmpty()) {
            return new String[]{defaultJzgz, defaultJcmc,defaultProdCat};
        }
        lb_1 = StringUtils.isBlank(lb_1)?"":lb_1;
        lb_2 = StringUtils.isBlank(lb_2)?"":lb_2;
        lb_3 = StringUtils.isBlank(lb_3)?"":lb_3;
        for (BO bo : boList) {
            String bbgs = bo.getString("BBGS");
            String cpdl = bo.getString("CPDL");
            String cppp = bo.getString("CPPP");
            String cpgn = bo.getString("CPGN");
            //梦牌特殊处理
            if(bbgsSource.equals("梦牌") && lb_1.equals("石膏板") && lb_2.equals("梦牌") && !lb_3.equals("高强楔形")){
                //检验产品名称
                //先临时全部放家装了，暂时不处理了，后续处理
            }
            //泰山特殊处理
            if(cpgn.equals("需要补全")){ //只比较到L2
                if(bbgs.equals(bbgsSource) && lb_1.equals(cpdl) && lb_2.equals(cppp)) {
                    return new String[]{bo.getString("JZGZ"), bo.getString("JCMC"), bo.getString("TYPE_PP"),bo.getString("PBGNB"),bo.getString("ISOEM")};
                }
            }
            //按照板块公司,L1,L2,L3匹配
            if(bbgs.equals(bbgsSource) && lb_1.equals(cpdl) && lb_2.equals(cppp) && lb_3.equals(cpgn)) {
                return new String[]{bo.getString("JZGZ"), bo.getString("JCMC"), bo.getString("TYPE_PP"),bo.getString("PBGNB"),bo.getString("ISOEM")};
            }
        }
        if (bbgsSource.equals("泰山石膏") && lb_1.equals("石膏板")) {
            defaultJzgz = "公装";
            defaultJcmc = "基材";
            defaultProdCat = "非泰山";
        }
        if (bbgsSource.equals("龙牌") && lb_1.equals("石膏板")) {
            defaultJzgz = "公装";
            defaultJcmc = "基材";
            defaultProdCat = "非龙牌";
        }
        if (bbgsSource.equals("梦牌") && lb_1.equals("石膏板")) {
            defaultJzgz = "公装";
            defaultJcmc = "基材";
            defaultProdCat = "非梦牌";
        }
        return new String[]{defaultJzgz, defaultJcmc,defaultProdCat,"其他","其他"};
    }

    /**
     * 根据BKGS和QYGS匹配sxedList中的元素并计算结果
     * @param sxedList 待匹配的列表
     * @param bkgs 传入的BKGS参数
     * @param qygs 传入的QYGS参数
     * @param yszk 传入的YSZK参数
     * @return 匹配成功返回YSZK/SXED，否则返回0
     */
    public static double calculateResult(List<BO> sxedList, String bkgs, String qygs, double yszk) {
        // 遍历列表中的每个元素
        for (BO bo : sxedList) {
            // 获取当前元素的BKGS和QYGS
            String boBkgs = bo.getString("BKGS");
            String boQygs = bo.getString("QYGS");
            // 同时匹配BKGS和QYGS
            if (bkgs.equals(boBkgs) && qygs.equals(boQygs)) {
                // 匹配成功，获取SXED值
                String sxedStr = bo.getString("SXED");
                try {
                    // 将SXED转换为数值并计算结果
                    double sxed = Double.parseDouble(sxedStr);
                    // 避免除以0的情况
                    return sxed != 0 ? yszk / sxed : 0;
                } catch (NumberFormatException e) {
                    // 如果SXED无法转换为数值，返回0
                    return 0;
                }
            }
        }
        // 没有匹配到任何元素，返回0
        return 0;
    }


    /**
     * 获取省份简称
     * @param sf 省份全称
     * @return
     */
    public static String getProvinceAbbreviation(String sf) {
        String sfjc = "";
        BO bo_eu_1755768181783 = SDK.getBOAPI().query("BO_EU_1755768181783").addQuery("F_D2IYKX5I = ", sf).detail();
        if (bo_eu_1755768181783==null){
            sfjc = sf;
        }else {
            sfjc = bo_eu_1755768181783.getString("SQ_SHORT");
        }
        return sfjc;
    }

    /**
     * 计算月旬
     * @param dateTimeStr
     * @return
     */
    public static String getMonthPeriod(String dateTimeStr) {
        // 提取日期部分（假设格式为"yyyy-MM-dd HH:mm:ss"）
        String dateStr = dateTimeStr.split(" ")[0];
        // 获取日期的天数部分
        int day = Integer.parseInt(dateStr.split("-")[2]);

        if (day <= 10) {
            return "上旬";
        } else if (day <= 20) {
            return "中旬";
        } else {
            return "下旬";
        }
    }

}
