package com.bcxin.sp.work.timer;

import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.toolkit.StringUtils;
import com.bcxin.sp.work.entity.dto.nx.*;
import com.bcxin.sp.work.util.MD5Util;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service("nxevent")
@Transactional
@Slf4j
public class NXMegaEventService {

    public String getEvent(){
        String clientId="hlwj-dxhdab";
        String password="hlwj-dxhdab06";
        String url="http://10.196.47.242:9012";
        String APPLYINFO = "/docking/tskSum/uploadTask";

        Map<String, Object> params = new HashMap<>();
        params.put("clientId",clientId);
        String time=System.currentTimeMillis()+"";
        params.put("timespan",time);
        params.put("sign", MD5Util.encode(clientId+"|"+password+"|"+time));
        UpProAccept1 upProAccept=new UpProAccept1();
        UpProResult1 upProResult=new UpProResult1();
        List<UpProMaterial1> upProMaterials=new ArrayList<>();
        List<UpProProcess1> upProProcesses=new ArrayList<>();
        List<UpProsPecialProcedure1> upProsPecialProcedures=new ArrayList<>();

        // 办件受理信息
        upProAccept.setAcceptDate("2020-09-24 21:28:25");
        upProAccept.setApplyDate("2020-09-24 21:28:25");
        upProAccept.setApplyType("2");//申请类型
        upProAccept.setApplyerName("吴国兴");
        upProAccept.setApplyerPageCode("");
        upProAccept.setApplyerPageType("003");//申请人证件类型
        upProAccept.setApplyerType("2");
        upProAccept.setAreaId("640000");
        upProAccept.setCatalogCode("000109023000");
        upProAccept.setCdOperation("I");
        upProAccept.setCdTime("2020-09-24 21:28:25");
        upProAccept.setContractMobile("18095130222");
        upProAccept.setDataSource("zzqgat_dxqzxhdgzpt");
        upProAccept.setEnterpriseName("宁夏报业传媒集团有限公司");
        upProAccept.setIsItemBase("0");
        upProAccept.setLocalCatalogCode("");//不用传？
        upProAccept.setLocalItemCode("6d971dce4ed244dfbd95cd279ab19ca1");
        upProAccept.setLocalProjectNo("6d971dce4ed244dfbd95cd279ab19ca1");
        upProAccept.setLocalTaskCode("6d971dce4ed244dfbd95cd279ab19ca1");
        upProAccept.setOrgCode("116401220101035564");//受理部门编码
        upProAccept.setOrgName("宁夏回族自治区公安厅");
        upProAccept.setProjectNo("6d971dce4ed244dfbd95cd279ab19ca1"+"20200924"+"0000");
        upProAccept.setProjectType("2");
        upProAccept.setPromiseDate("2020-10-08 21:28:25");
        upProAccept.setPromiseTime("5");
        upProAccept.setRowGuid("OD160091939393548631");
        upProAccept.setTaskCode("1164012201010355644000109023000");
        upProAccept.setTaskName("大型群众性活动安全许可");
        upProAccept.setTaskVersion("1");
        upProAccept.setTaskHandleItem("116401220101035564400010902300001");
        upProAccept.setCompanyCode("");
        upProAccept.setHandleUserId("");
        upProAccept.setFileId("f6e3d619-9e52-4322-9fd0-4502e3d8a690");
        //办件过程信息
        UpProProcess1 upProProcess = new UpProProcess1();
        upProProcess.setCdOperation("I");
        upProProcess.setCdTime("2020-09-24 21:28:25");
        upProProcess.setDataSource("zzqgat_dxqzxhdgzpt");
        upProProcess.setEventEndTime("2020-09-24 21:28:25");
        upProProcess.setEventName("1");
        upProProcess.setEventStartTime("2020-09-24 21:28:25");
        upProProcess.setHandleExplain("无");
        upProProcess.setHandleUserName("");
        upProProcess.setProcessId("OD160091939393548631");
        upProProcess.setProcessName("办结");
        upProProcess.setProjectNo("OD160091939393548631");
        upProProcess.setIsNeedService("0");
        upProProcess.setRowGuid("OD160091939393548631");
        upProProcesses.add(upProProcess);

        //办件结果信息
        upProResult.setCdOperation("I");
        upProResult.setCdTime("2020-09-24 21:28:25");
        upProResult.setDataSource("zzqgat_dxqzxhdgzpt");
        upProResult.setHandleUserName("");
        upProResult.setIsDeliveryResults("0");
        upProResult.setProjectNo("OD160091939393548631");
        upProResult.setRemark("无");
        upProResult.setResultDate("2020-09-24 21:28:25");
        upProResult.setResultExplain("无");
        upProResult.setResultType("1");
        upProResult.setRowGuid("OD160091939393548631");

        //材料信息
        UpProMaterial1 upProMaterial = new UpProMaterial1();
        upProMaterial.setCdOperation("I");
        upProMaterial.setCdTime("2020-09-24 21:28:25");
        upProMaterial.setDataSource("zzqgat_dxqzxhdgzpt");
        upProMaterial.setGetType("2");
        upProMaterial.setMaterialAttachName("无");
        upProMaterial.setMaterialName("无");
        upProMaterial.setProjectNo("OD160091939393548631");
        upProMaterial.setRowGuid("OD160091939393548631");
        upProMaterial.setRemark("无");
        upProMaterial.setUrl("无");
        upProMaterials.add(upProMaterial);





        params.put("upProAccept", upProAccept);
        params.put("upProResult", upProResult);
        params.put("upProMaterial", upProMaterials);
        params.put("upProProcess", upProProcesses);
        params.put("upProsPecialProcedure", upProsPecialProcedures);
        log.info(params.toString());
        String result = StringUtils.EMPTY;
        CloseableHttpClient httpClient = HttpClients.createDefault();
        ResponseHandler<String> responseHandler = new BasicResponseHandler();
        try {
            StringEntity requestEntity = new StringEntity(JSON.toJSONString(params),"utf-8");
            requestEntity.setContentEncoding("UTF-8");
            //第一步：创建HttpClient对象
            httpClient = HttpClients.createDefault();
            //第二步：创建httpPost对象
            HttpPost httpPost = new HttpPost(url + APPLYINFO);
            httpPost.setHeader("Content-type", "application/json");
            httpPost.setEntity(requestEntity);
            result = httpClient.execute(httpPost,responseHandler);//调接口获取返回值时，必须用此方法
            log.info(result);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return result;
    }

}
