package com.malk.siku.service.impl;

import com.alibaba.fastjson.JSONObject;
import com.malk.server.aliwork.YDConf;
import com.malk.server.aliwork.YDParam;
import com.malk.server.common.McR;
import com.malk.service.aliwork.YDClient;
import com.malk.siku.service.SikuService;
import com.malk.siku.utils.MkUtil;
import com.malk.utils.UtilHttp;
import com.malk.utils.UtilMap;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

@Slf4j
@Service
public class SikuServiceImpl implements SikuService {
    @Autowired
    private YDClient ydClient;

    @Override
    public McR saveTradingPartner(Map map) {
        String formInstId = UtilMap.getString(map, "formInstId");

        String type = UtilMap.getString(map, "type");

        Map formData = ydClient.queryData(YDParam.builder()
                .formInstanceId(formInstId)
                .build(), YDConf.FORM_QUERY.retrieve_id).getFormData();

        Map partner = new HashMap();

        if ("客户".equals(type)){
            //客户
            partner.put("partnerName", "客户");//所属分类名称
            partner.put("name", UtilMap.getString(formData,"textField_mkddjwy3"));//往来单位中文名
            partner.put("partnerType", "客户");//往来关系，可选值为："供应商"、"客户"、"供应商，客户"（既是供应商又是客户的情况下以中文逗号分隔(供应商在前)）
            partner.put("partnerProperty", "公司");//往来性质，可选值为："公司"、"个体工商户"
            partner.put("businessCode", UtilMap.getString(formData,"serialNumberField_mkddjwy2"));//往来单位编码,不超过50个字符
            partner.put("taxNumber", UtilMap.getString(formData,"textField_mkddjwys"));//税务登记号,不超过200个字符
            partner.put("readOnly", false);//是否只读，默认false。如果为true，那么在每刻系统中往来单位的所有信息（如权限范围、收款账户等）均无法修改。（接口更新操作不受限制）
            partner.put("reMark", "");//往来单位备注
            partner.put("enabled", true);//是否启用（true:启用；false:禁用）。若该参数为空，新增则默认为true，更新则保持系统内状态。


        }else {
            //供应商、
            String hzlx = UtilMap.getString(formData, "radioField_mketkvw7");

            partner.put("partnerName", "供应商");//所属分类名称
            partner.put("name", "Free".equals(hzlx) ? UtilMap.getString(formData,"textField_mkkixdd6") : UtilMap.getString(formData,"textField_mketkvv0"));//往来单位中文名
            partner.put("partnerType", "供应商");//往来关系，可选值为："供应商"、"客户"、"供应商，客户"（既是供应商又是客户的情况下以中文逗号分隔(供应商在前)）
            partner.put("partnerProperty", "Free".equals(hzlx) ? "个体工商户" : "公司");//往来性质，可选值为："公司"、"个体工商户"
            partner.put("businessCode", UtilMap.getString(formData,"serialNumberField_mkddjwy2"));//往来单位编码,不超过50个字符
            partner.put("taxNumber", "Free".equals(hzlx) ? "" : UtilMap.getString(formData,"textField_mketkvxo"));//税务登记号,不超过200个字符
            partner.put("readOnly", false);//是否只读，默认false。如果为true，那么在每刻系统中往来单位的所有信息（如权限范围、收款账户等）均无法修改。（接口更新操作不受限制）
            partner.put("reMark", "");//往来单位备注
            partner.put("enabled", UtilMap.getBoolean(formData,"radioField_mketkvw8"));//是否启用（true:启用；false:禁用）。若该参数为空，新增则默认为true，更新则保持系统内状态。
        }

        Map body = new HashMap();
        body.put("partnerList", Arrays.asList(partner));

        Map result = (Map) JSONObject.parse(UtilHttp.doPost("https://ng.maycur.com/api/openapi/tradingPartner/batch/save", MkUtil.initTokenHeader(), null, body));

        log.info("Result:",result);

        return McR.success();
    }
}
