package nc.bs.pu.m25.wgpt.rule;


import com.alibaba.fastjson.JSONObject;

import nc.bs.logging.Logger;
import nc.impl.pubapp.pattern.rule.IRule;
import nc.vo.pu.m25.entity.InvoiceHeaderVO;
import nc.vo.pu.m25.entity.InvoiceVO;
import nc.vo.pub.lang.UFDateTime;
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
import ncc.pub.wywgpt.utils.WyWGPTUtils;
import nccloud.commons.lang.ArrayUtils;
/**
 * @Description: 网购平台传来的发票，删除后回传网购平台
 * 
 * @author 谢文如 【碧桂园-物业板块-网购平台接口】
 * @date 2019-3-6
 * @version with NCC
 */
public class InvoiceDeleteWgptRule  implements IRule<InvoiceVO> {

	@Override
	public void process(InvoiceVO[] invoiceVOs) {
		if(ArrayUtils.isEmpty(invoiceVOs)){ 
			return;
		}
		String sendJsonData = null;
		String esbResultinfoStr = null;
		try {
			for(InvoiceVO invoiceVO:invoiceVOs){
				InvoiceHeaderVO headerVO = invoiceVO.getParentVO();
				//vdef29	网购平台结算单号
				//vdef14	是否网购平台发送
				if("Y".equals(headerVO.getVdef8()) && headerVO.getVdef10()!=null){
					JSONObject requestInfo = new JSONObject();
					//method 接口方法名
					requestInfo.put("method", "cancelBalance");
					//处理时间
					requestInfo.put("createTime",new UFDateTime().toString());
					//平台结算单号
					requestInfo.put("billNo",headerVO.getVdef10());
					
					String instId = "D91S008-WYOSP-1903-013-"+System.currentTimeMillis();
					sendJsonData = WyWGPTUtils.getSendToEsbData(instId, requestInfo);
					//发送请求
					JSONObject esbResultinfo = WyWGPTUtils.sendToESB(sendJsonData,"NC-WGPT-PU-002");
					if(esbResultinfo!=null){
						esbResultinfoStr = esbResultinfo.toString();
						Logger.error("【网购平台传来的发票，删除后回传网购平台】请求参数："+sendJsonData+"；\r\n返回参数："+esbResultinfoStr);
						JSONObject esbInfo = (JSONObject)esbResultinfo.get("esbInfo");
						if(esbInfo!=null){
							//接口返回状态：S（成功）/W（警告）/E（错误）
							String returnStatus = esbInfo.get("returnStatus")+"";
							returnStatus = "E".equals(returnStatus)?"否":"是";
							if("否".equals(returnStatus)){
								String returnMsg = esbInfo.get("returnMsg")+"";
								ExceptionUtils.wrappBusinessException("接口错误："+returnMsg);
							}
						}
						JSONObject resultInfo = esbResultinfo.getJSONObject("resultInfo");
						Object success = resultInfo.get("success");
						if(!"true".equals(success+"")){
							Object result = resultInfo.get("result");
							ExceptionUtils.wrappBusinessException("网购平台提示:"+result);
						}
					}
				}
			}
		} catch (Exception e) {
			Logger.error(e);
			e.printStackTrace();
			ExceptionUtils.wrappBusinessException("异常：\n"+e.getMessage()+"\n请求报文：\n"+sendJsonData+"\n返回报文：\n"+esbResultinfoStr);
		}
	
	}

}
