package thyyxxk.webserver.utils;

import thyyxxk.webserver.entity.datamodify.FeiYongLeiXin;
import thyyxxk.webserver.entity.datamodify.ZyDetailCharge;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 描述： 计算住院患者的费用
 * </p>
 *
 * @author xc
 * @date 2021-08-05 11:29
 */
public class JiSuanFeiYong {

    public static FeiYongLeiXin jiSuan(List<ZyDetailCharge> feiYong, Boolean zhengShu) {
        FeiYongLeiXin fy = new FeiYongLeiXin();
        // 创建一个 map
        Map<String, BigDecimal> map = new HashMap<>();
        BigDecimal sum;
        for (ZyDetailCharge zd : feiYong) {
            if (zhengShu) {
                if (zd.getAmount() == null) {
                    sum = zd.getChargeAmount().multiply(zd.getChargeFee());
                } else {
                    sum = zd.getChargeAmount().multiply(zd.getAmount());
                }
            } else {
                sum = zd.getChargeAmount().multiply(zd.getChargeFee().negate());
            }
            // 判断 map 中是否存在 项目的 key 值 如果存在就相加
            if (map.containsKey(zd.getBillItemCode())) {
                // 这里是替换 把原来的 key 的值 替换成 别的
                map.replace(zd.getBillItemCode(), map.get(zd.getBillItemCode()).add(sum));
            } else {
                // 如果没有这个 key 那就 put
                map.put(zd.getBillItemCode(), sum);
            }
        }
        // 在这里循环 map 往 实体类 费用类型 用添加值
        for (String key : map.keySet()) {
            fangRuShiTiLei(fy, key, map.get(key));
        }
        return fy;
    }

    public static void fangRuShiTiLei(FeiYongLeiXin fy, String code, BigDecimal sum) {
        if ("001".equals(code)) {
            fy.setCharge1(sum);
        } else if ("002".equals(code)) {
            fy.setCharge2(sum);
        } else if ("003".equals(code)) {
            fy.setCharge3(sum);
        } else if ("004".equals(code)) {
            fy.setCharge4(sum);
        } else if ("005".equals(code)) {
            fy.setCharge5(sum);
        } else if ("006".equals(code)) {
            fy.setCharge6(sum);
        } else if ("007".equals(code)) {
            fy.setCharge7(sum);
        } else if ("008".equals(code)) {
            fy.setCharge8(sum);
        } else if ("009".equals(code)) {
            fy.setCharge9(sum);
        } else if ("010".equals(code)) {
            fy.setCharge10(sum);
        } else if ("011".equals(code)) {
            fy.setCharge11(sum);
        } else if ("012".equals(code)) {
            fy.setCharge12(sum);
        } else if ("013".equals(code)) {
            fy.setCharge13(sum);
        } else if ("014".equals(code)) {
            fy.setCharge14(sum);
        } else if ("015".equals(code)) {
            fy.setCharge15(sum);
        } else if ("016".equals(code)) {
            fy.setCharge16(sum);
        } else if ("017".equals(code)) {
            fy.setCharge17(sum);
        } else if ("018".equals(code)) {
            fy.setCharge18(sum);
        } else if ("019".equals(code)) {
            fy.setCharge19(sum);
        } else if ("020".equals(code)) {
            fy.setCharge20(sum);
        } else if ("021".equals(code)) {
            fy.setCharge21(sum);
        } else if ("022".equals(code)) {
            fy.setCharge22(sum);
        } else if ("023".equals(code)) {
            fy.setCharge23(sum);
        } else if ("024".equals(code)) {
            fy.setCharge24(sum);
        } else if ("025".equals(code)) {
            fy.setCharge25(sum);
        } else if ("026".equals(code)) {
            fy.setCharge26(sum);
        } else if ("027".equals(code)) {
            fy.setCharge27(sum);
        } else if ("028".equals(code)) {
            fy.setCharge28(sum);
        } else if ("029".equals(code)) {
            fy.setCharge29(sum);
        } else if ("030".equals(code)) {
            fy.setCharge30(sum);
        }
    }
}
