package com.zjrs.ggfw.shbzk.bpo.impl;

import jakarta.annotation.Resource;
import org.apache.commons.lang.StringUtils;
import org.dom4j.DocumentException;
import org.mohrss.leaf.core.framework.domain.bpo.impl.BPOImpl;
import org.mohrss.leaf.core.framework.persistens.PageResult;
import org.mohrss.leaf.core.framework.web.controller.AjaxResponse;
import com.zjrs.ggfw.portal.bpo.UserBPO;
import com.zjrs.ggfw.shbzk.blo.ShbzkBLO;
import com.zjrs.ggfw.shbzk.bpo.ShbzkBPO;
import com.zjrs.ggfw.shbzk.dto.*;
import com.zjrs.ggfw.shbzk.util.ShbzkcxConfig;
import com.zjrs.ggfw.shbzk.util.WebServiceUtil;
import com.zjrs.ggfw.shbzk.util.XmlUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

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

@Service
public class ShbzkBPOImpl extends BPOImpl implements ShbzkBPO {
	
	private static final Logger LOG = LoggerFactory.getLogger(ShbzkBPOImpl.class);
	
	@Value("${shbzk.url:http://19.15.232.26:7001/gdCardService/services/CardService}")
	private String shbzkUrl;//网上办卡URL
	
	@Value("${shbzk.yhm:440800}")
	private String shbzkYhm;//用户名
	
	@Value("${shbzk.mm:z4IocGFiCj}")
	private String shbzkMm;//密码

    @Autowired
    ShbzkcxConfig shbzkcxConfig;
	@Resource
	private UserBPO userBPO;
	
	@Resource
    private ShbzkBLO shbzkBLO;
	
	@Override
	public AjaxResponse getShbzkNum(FwwdQueryDTO queryDTO) throws DocumentException {
		AjaxResponse ajaxResponse = new AjaxResponse();
		AjaxResponse userAjaxResponse =userBPO.getUserInfo("0");
		if(userAjaxResponse.getAppcode().equals("0")){
			Map<String,Object> userMap =userAjaxResponse.getMap();
			userMap= (Map<String, Object>) userMap.get("data");
			Object aac147=userMap.get("aac147");//证件号码
			Object aac058=userMap.get("aac058");//证件类型
            Object aac161=userMap.get("aac161");//国家/地区代码
			if(aac147==null||aac147.equals("")){
				ajaxResponse.setAppcode("1");
				ajaxResponse.setErrorMsg("无法查询到对应证件类型");
				return ajaxResponse;
			}
			if(aac058.equals("01")||aac058.equals("04")||aac058.equals("05")||aac058.equals("06")
					||aac058.equals("07")||aac058.equals("08")||aac058.equals("16")){
				//调用接口
                ShbzhQueryDTO dto=new ShbzhQueryDTO();
                dto.setZjhm(aac147.toString());
                dto.setZjlx(aac058.toString());
                if(aac161==null||aac161.equals("")) {
                    aac161="CHN";
                }
                dto.setGjdq(aac161.toString());
				AjaxResponse ajaxResponse1=this.getShbzh(dto);
				Map<String,Object> map=ajaxResponse1.getMap();
				Object shbzh=map.get("shbzh");
				ajaxResponse.setData("shbzh",shbzh);
				if(shbzh!=null){
					ShbzkQueryDTO dto1=new ShbzkQueryDTO();
					dto1.setShbzh(shbzh.toString());
					if(StringUtils.isNotBlank(queryDTO.getDq())) {
						dto1.setSscs(queryDTO.getDq());
					}else{
						dto1.setSscs("440800");
					}
					AjaxResponse ajaxResponse2=this.queryKzt(dto1);
					Map<String,Object> map2=ajaxResponse2.getMap();
					if(map2!=null){
						map2= (Map<String, Object>) map2.get("data");
						ajaxResponse.setData("sbkh",map2.get("sbkh"));
					}
				}
				return ajaxResponse;
			}else{
				ajaxResponse.setAppcode("1");
				ajaxResponse.setErrorMsg("无法查询到对应证件类型");
			}
			return ajaxResponse;
		}else{
			return userAjaxResponse;
		}
	}

	@Override
	public AjaxResponse getShbzkList(ShbzkListQueryDTO dto) {
		AjaxResponse ajaxResponse = new AjaxResponse();
		try {
			//拼接入参
			Object[] obj = new Object[]{"<操作*>网上社保卡查询</操作*>"
					+ "<用户名*>" + shbzkYhm + "</用户名*>"
					+ "<密码*>" + shbzkMm + "</密码*>"
					+ "<所属城市>" + StringUtils.defaultString(dto.getSscs(), "") + "</所属城市>"
					+ "<社会保障号*>" + dto.getShbzh() + "</社会保障号*>"
					+ "<相片>NO</相片>"};
			String result = WebServiceUtil.invoke(shbzkUrl,"allDsjk", obj);
			LOG.info("=====getShbzkList-result="+result);
			Map<String,Object> resultMap = XmlUtils.xmlToMap(result);//转换map
			if("00".equals(resultMap.get("ERR"))) {
				ArrayList<Map<String, Object>> rowList = (ArrayList<Map<String, Object>>) resultMap.get("ROWS");
				if(rowList.size() > 0) {
					ArrayList<ShbzkDTO> shbzkList = new ArrayList<ShbzkDTO>();
					for(Map<String, Object> ShbzkMap : rowList) {
						//解析参数
						ShbzkDTO shbzkDTO = new ShbzkDTO();
						shbzkDTO.setSscs("_".equals(ShbzkMap.get("所属城市")) ? "" : ShbzkMap.get("所属城市").toString().split("_")[0]);
						shbzkDTO.setSbkh(ShbzkMap.get("社保卡号") == null ? "" : ShbzkMap.get("社保卡号").toString());
						shbzkDTO.setShbzh(ShbzkMap.get("社会保障号") == null ? "" : ShbzkMap.get("社会保障号").toString());
						shbzkDTO.setXm(ShbzkMap.get("姓名") == null ? "" : ShbzkMap.get("姓名").toString());
						shbzkDTO.setGj("_".equals(ShbzkMap.get("国家地区")) ? "" : ShbzkMap.get("国家地区").toString().split("_")[0]);
						shbzkDTO.setZjlx("_".equals(ShbzkMap.get("证件类型")) ? "" : ShbzkMap.get("证件类型").toString().split("_")[0]);
						shbzkDTO.setZjhm(ShbzkMap.get("证件号码") == null ? "" : ShbzkMap.get("证件号码").toString());
						shbzkDTO.setXb("_".equals(ShbzkMap.get("性别")) ? "" : ShbzkMap.get("性别").toString().split("_")[0]);
						shbzkDTO.setMz("_".equals(ShbzkMap.get("民族")) ? "" : ShbzkMap.get("民族").toString().split("_")[0]);
						shbzkDTO.setCsrq(ShbzkMap.get("出生日期") == null ? "" : ShbzkMap.get("出生日期").toString());
						shbzkDTO.setLxsj(ShbzkMap.get("联系手机") == null ? "" : ShbzkMap.get("联系手机").toString());
						shbzkDTO.setZkjd("_".equals(ShbzkMap.get("制卡进度")) ? "" : ShbzkMap.get("制卡进度").toString().split("_")[0]);
						shbzkDTO.setKzt("_".equals(ShbzkMap.get("卡状态")) ? "" : ShbzkMap.get("卡状态").toString().split("_")[0]);
						shbzkDTO.setKbb(ShbzkMap.get("卡版本") == null ? "" : ShbzkMap.get("卡版本").toString());
						
						shbzkList.add(shbzkDTO);
					}
					ajaxResponse.setData("data", shbzkList);
				}else {
					ajaxResponse.setAppcode("1");
		            ajaxResponse.setErrorMsg("未查询到对应数据！");
		            return ajaxResponse;
				}
			}else {
				ajaxResponse.setAppcode("1");
	            ajaxResponse.setErrorMsg(resultMap.get("ERR").toString());
			}
		} catch (Exception e) {
			LOG.info("系统异常：", e);
			ajaxResponse.setErrorMsg("系统异常");
			ajaxResponse.setAppcode("1");
		}
		return ajaxResponse;
	}
	
	@Override
	public AjaxResponse getShbzk(ShbzkQueryDTO dto) {
		AjaxResponse ajaxResponse = new AjaxResponse();
		try {
			//拼接入参
			String photo = "NO";//默认不返回照片
			if("1".equals(dto.getIsNeedPhoto())) {//需要返回照片
				photo = "";
			}
			Object[] obj = new Object[]{"<操作*>网上社保卡查询</操作*>"
					+ "<用户名*>" + shbzkYhm + "</用户名*>"
					+ "<密码*>" + shbzkMm + "</密码*>"
					+ "<所属城市>" + StringUtils.defaultString(dto.getSscs(), "") + "</所属城市>"
					+ "<社会保障号*>" + dto.getShbzh() + "</社会保障号*>"
					+ "<相片>" + photo + "</相片>"};
			String result = WebServiceUtil.invoke(shbzkUrl,"allDsjk", obj);
			LOG.info("=====getShbzk-result="+result);
			Map<String,Object> resultMap = XmlUtils.xmlToMap(result);//转换map
			if("00".equals(resultMap.get("ERR"))) {
				ArrayList<Map<String, Object>> rowList = (ArrayList<Map<String, Object>>) resultMap.get("ROWS");
				if(rowList.size() > 0) {
					//解析参数
					Map<String, Object> ShbzkMap = rowList.get(0);//解析第一条数据
					ShbzkDTO shbzkDTO = new ShbzkDTO();
					shbzkDTO.setSscs("_".equals(ShbzkMap.get("所属城市")) ? "" : ShbzkMap.get("所属城市").toString().split("_")[0]);
					shbzkDTO.setSsjg("_".equals(ShbzkMap.get("所属机构")) ? "" : ShbzkMap.get("所属机构").toString().split("_")[0]);
					shbzkDTO.setFwyh("_".equals(ShbzkMap.get("服务银行")) ? "" : ShbzkMap.get("服务银行").toString().split("_")[0]);
					shbzkDTO.setKlb("_".equals(ShbzkMap.get("卡类别")) ? "" : ShbzkMap.get("卡类别").toString().split("_")[0]);
					shbzkDTO.setSqlx("_".equals(ShbzkMap.get("申请类型")) ? "" : ShbzkMap.get("申请类型").toString().split("_")[0]);
					shbzkDTO.setSbkh(ShbzkMap.get("社保卡号") == null ? "" : ShbzkMap.get("社保卡号").toString());
					shbzkDTO.setShbzh(ShbzkMap.get("社会保障号") == null ? "" : ShbzkMap.get("社会保障号").toString());
					shbzkDTO.setXm(ShbzkMap.get("姓名") == null ? "" : ShbzkMap.get("姓名").toString());
					shbzkDTO.setSpzms(ShbzkMap.get("生僻字描述") == null ? "" : ShbzkMap.get("生僻字描述").toString());
					shbzkDTO.setGj("_".equals(ShbzkMap.get("国家地区")) ? "" : ShbzkMap.get("国家地区").toString().split("_")[0]);
					shbzkDTO.setZjlx("_".equals(ShbzkMap.get("证件类型")) ? "" : ShbzkMap.get("证件类型").toString().split("_")[0]);
					shbzkDTO.setZjhm(ShbzkMap.get("证件号码") == null ? "" : ShbzkMap.get("证件号码").toString());
					shbzkDTO.setZjyxq(ShbzkMap.get("证件有效期") == null ? "" : ShbzkMap.get("证件有效期").toString());
					shbzkDTO.setXb("_".equals(ShbzkMap.get("性别")) ? "" : ShbzkMap.get("性别").toString().split("_")[0]);
					shbzkDTO.setMz("_".equals(ShbzkMap.get("民族")) ? "" : ShbzkMap.get("民族").toString().split("_")[0]);
					shbzkDTO.setCsrq(ShbzkMap.get("出生日期") == null ? "" : ShbzkMap.get("出生日期").toString());
					shbzkDTO.setRyzt("_".equals(ShbzkMap.get("人员状态")) ? "" : ShbzkMap.get("人员状态").toString().split("_")[0]);
					shbzkDTO.setHkqx("_".equals(ShbzkMap.get("户口区县")) ? "" : ShbzkMap.get("户口区县").toString().split("_")[0]);
					shbzkDTO.setHkxz("_".equals(ShbzkMap.get("户口性质")) ? "" : ShbzkMap.get("户口性质").toString().split("_")[0]);
					shbzkDTO.setHkdz(ShbzkMap.get("户口地址") == null ? "" : ShbzkMap.get("户口地址").toString());
					shbzkDTO.setLxsj(ShbzkMap.get("联系手机") == null ? "" : ShbzkMap.get("联系手机").toString());
					shbzkDTO.setLxdh(ShbzkMap.get("联系电话") == null ? "" : ShbzkMap.get("联系电话").toString());
					shbzkDTO.setTxdz(ShbzkMap.get("通讯地址") == null ? "" : ShbzkMap.get("通讯地址").toString());
					shbzkDTO.setYzbm(ShbzkMap.get("邮政编码") == null ? "" : ShbzkMap.get("邮政编码").toString());
					shbzkDTO.setDzyx(ShbzkMap.get("电子邮箱") == null ? "" : ShbzkMap.get("电子邮箱").toString());
					shbzkDTO.setGrbh(ShbzkMap.get("个人编号") == null ? "" : ShbzkMap.get("个人编号").toString());
					shbzkDTO.setDwbh(ShbzkMap.get("单位编号") == null ? "" : ShbzkMap.get("单位编号").toString());
					shbzkDTO.setDwmc(ShbzkMap.get("单位名称") == null ? "" : ShbzkMap.get("单位名称").toString());
					shbzkDTO.setZygz("_".equals(ShbzkMap.get("职业工种")) ? "" : ShbzkMap.get("职业工种").toString().split("_")[0]);
					shbzkDTO.setJhrxm(ShbzkMap.get("监护人姓名") == null ? "" : ShbzkMap.get("监护人姓名").toString());
					shbzkDTO.setJhrzjlx("_".equals(ShbzkMap.get("监护人证件类型")) ? "" : ShbzkMap.get("监护人证件类型").toString().split("_")[0]);
					shbzkDTO.setJhrzjhm(ShbzkMap.get("监护人证件号码") == null ? "" : ShbzkMap.get("监护人证件号码").toString());
					shbzkDTO.setZksbyy(ShbzkMap.get("制卡失败原因") == null ? "" : ShbzkMap.get("制卡失败原因").toString());
					shbzkDTO.setSqsj(ShbzkMap.get("申请时间") == null ? "" : ShbzkMap.get("申请时间").toString());
					shbzkDTO.setScpc(ShbzkMap.get("生成批次") == null ? "" : ShbzkMap.get("生成批次").toString());
					shbzkDTO.setDcykh(ShbzkMap.get("导出预开户") == null ? "" : ShbzkMap.get("导出预开户").toString());
					shbzkDTO.setYkhfh(ShbzkMap.get("预开户返回") == null ? "" : ShbzkMap.get("预开户返回").toString());
					shbzkDTO.setDczk(ShbzkMap.get("导出制卡") == null ? "" : ShbzkMap.get("导出制卡").toString());
					shbzkDTO.setZkfh(ShbzkMap.get("制卡返回") == null ? "" : ShbzkMap.get("制卡返回").toString());
					shbzkDTO.setSzxjc(ShbzkMap.get("省中心寄出") == null ? "" : ShbzkMap.get("省中心寄出").toString());
					shbzkDTO.setSzxjs(ShbzkMap.get("市中心接收") == null ? "" : ShbzkMap.get("市中心接收").toString());
					shbzkDTO.setLksj(ShbzkMap.get("领卡时间") == null ? "" : ShbzkMap.get("领卡时间").toString());
					shbzkDTO.setYhjh(ShbzkMap.get("银行激活") == null ? "" : ShbzkMap.get("银行激活").toString());
					shbzkDTO.setZkjd("_".equals(ShbzkMap.get("制卡进度")) ? "" : ShbzkMap.get("制卡进度").toString().split("_")[0]);
					shbzkDTO.setKzt("_".equals(ShbzkMap.get("卡状态")) ? "" : ShbzkMap.get("卡状态").toString().split("_")[0]);
					shbzkDTO.setKbb(ShbzkMap.get("卡版本") == null ? "" : ShbzkMap.get("卡版本").toString());
					shbzkDTO.setYwdh(ShbzkMap.get("业务单号") == null ? "" : ShbzkMap.get("业务单号").toString());
					shbzkDTO.setJfdh(ShbzkMap.get("缴费单号") == null ? "" : ShbzkMap.get("缴费单号").toString());
					shbzkDTO.setJfsj(ShbzkMap.get("缴费时间") == null ? "" : ShbzkMap.get("缴费时间").toString());
					shbzkDTO.setSjdz(ShbzkMap.get("收件地址") == null ? "" : ShbzkMap.get("收件地址").toString());
					shbzkDTO.setYjdh(ShbzkMap.get("邮寄单号") == null ? "" : ShbzkMap.get("邮寄单号").toString());
					shbzkDTO.setXp(ShbzkMap.get("相片") == null ? "" : ShbzkMap.get("相片").toString());
					
					ajaxResponse.setData("data", shbzkDTO);
				}else {
					ajaxResponse.setAppcode("1");
		            ajaxResponse.setErrorMsg("未查询到对应数据！");
		            return ajaxResponse;
				}
			}else {
				ajaxResponse.setAppcode("1");
	            ajaxResponse.setErrorMsg(resultMap.get("ERR").toString());
			}
		} catch (Exception e) {
			LOG.info("系统异常：", e);
			ajaxResponse.setErrorMsg("系统异常");
			ajaxResponse.setAppcode("1");
		}
		return ajaxResponse;
	}
	
	@Override
	public AjaxResponse getShbzkZkjd(ShbzkQueryDTO dto) {
		AjaxResponse ajaxResponse = new AjaxResponse();
		try {
			//校验参数
			if(StringUtils.isBlank(dto.getSscs())) {
				ajaxResponse.setAppcode("1");
	            ajaxResponse.setErrorMsg("所属城市不可为空！");
	            return ajaxResponse;
			}
			if(StringUtils.isBlank(dto.getXm())) {
				ajaxResponse.setAppcode("1");
	            ajaxResponse.setErrorMsg("姓名不可为空！");
	            return ajaxResponse;
			}
			Object[] obj = new Object[]{shbzkYhm,shbzkMm,dto.getShbzh(),dto.getXm(),dto.getSscs()};
			String result = WebServiceUtil.invoke(shbzkUrl,"getAZ03",obj);
			LOG.info("=====getShbzkZkjd-result="+result);
			Map<String,Object> resultMap = XmlUtils.xmlToMap(result);
			if(resultMap.get("ERR").equals("00") || resultMap.get("ERR").equals("OK")){
				ShbzkZkjdDTO shbzkZkjdDTO = new ShbzkZkjdDTO();
				shbzkZkjdDTO.setSscs(resultMap.get("AAB301") == null ? "" : resultMap.get("AAB301").toString());
				shbzkZkjdDTO.setSbkh(resultMap.get("AAZ500") == null ? "" : resultMap.get("AAZ500").toString());
				shbzkZkjdDTO.setShbzh(resultMap.get("AAC002") == null ? "" : resultMap.get("AAC002").toString());
				shbzkZkjdDTO.setXm(resultMap.get("AAC003") == null ? "" : resultMap.get("AAC003").toString());
				shbzkZkjdDTO.setKlb(resultMap.get("CARDTYPE") == null ? "" : resultMap.get("CARDTYPE").toString());
				shbzkZkjdDTO.setBklx(resultMap.get("TRANSACTTYPE") == null ? "" : resultMap.get("TRANSACTTYPE").toString());
				shbzkZkjdDTO.setBhyy(resultMap.get("BHYY") == null ? "" : resultMap.get("BHYY").toString());
				shbzkZkjdDTO.setPch(resultMap.get("BATCHNO") == null ? "" : resultMap.get("BATCHNO").toString());
				shbzkZkjdDTO.setPcscsj(resultMap.get("BATCHNUMBER") == null ? "" : resultMap.get("BATCHNUMBER").toString());
				shbzkZkjdDTO.setJbjg(resultMap.get("ORGANID") == null ? "" : resultMap.get("ORGANID").toString());
				shbzkZkjdDTO.setSldbm(resultMap.get("SLDBM") == null ? "" : resultMap.get("SLDBM").toString());
				shbzkZkjdDTO.setSlbbm(resultMap.get("SLBBM") == null ? "" : resultMap.get("SLBBM").toString());
				shbzkZkjdDTO.setDwbh(resultMap.get("AAB001") == null ? "" : resultMap.get("AAB001").toString());
				shbzkZkjdDTO.setKs(resultMap.get("KS") == null ? "" : resultMap.get("KS").toString());
				shbzkZkjdDTO.setZxwz(resultMap.get("ZXWZ") == null ? "" : resultMap.get("ZXWZ").toString());
				shbzkZkjdDTO.setKhyh(resultMap.get("AAE008") == null ? "" : resultMap.get("AAE008").toString());
				shbzkZkjdDTO.setYhwd(resultMap.get("AAE008B") == null ? "" : resultMap.get("AAE008B").toString());
				shbzkZkjdDTO.setYhkh(resultMap.get("AAE010") == null ? "" : resultMap.get("AAE010").toString());
				shbzkZkjdDTO.setYhzh(resultMap.get("AAE010A") == null ? "" : resultMap.get("AAE010A").toString());
				shbzkZkjdDTO.setGrzh(resultMap.get("AAE010B") == null ? "" : resultMap.get("AAE010B").toString());
				shbzkZkjdDTO.setSqsj(resultMap.get("APPLYTIME") == null ? "" : resultMap.get("APPLYTIME").toString());
				shbzkZkjdDTO.setDcykhsj(resultMap.get("BANKTIME0") == null ? "" : resultMap.get("BANKTIME0").toString());
				shbzkZkjdDTO.setYkhhpsj(resultMap.get("BANKFINISHTIME0") == null ? "" : resultMap.get("BANKFINISHTIME0").toString());
				shbzkZkjdDTO.setDckszksj(resultMap.get("INSURETIME") == null ? "" : resultMap.get("INSURETIME").toString());
				shbzkZkjdDTO.setKszkhpsj(resultMap.get("INSUREFINISHTIME") == null ? "" : resultMap.get("INSUREFINISHTIME").toString());
				shbzkZkjdDTO.setSkzxjcsj(resultMap.get("PROVINCETIME") == null ? "" : resultMap.get("PROVINCETIME").toString());
				shbzkZkjdDTO.setSzxjssj(resultMap.get("PROVINCETIME") == null ? "" : resultMap.get("PROVINCETIME").toString());
				shbzkZkjdDTO.setLksj(resultMap.get("GETTIME") == null ? "" : resultMap.get("GETTIME").toString());
				shbzkZkjdDTO.setZzsj(resultMap.get("ZZTIME") == null ? "" : resultMap.get("ZZTIME").toString());
				shbzkZkjdDTO.setBz(resultMap.get("REMARKS") == null ? "" : resultMap.get("REMARKS").toString());
				shbzkZkjdDTO.setSfzcff(resultMap.get("SLFF") == null ? "" : resultMap.get("SLFF").toString());
				shbzkZkjdDTO.setJgjs(resultMap.get("SLJS") == null ? "" : resultMap.get("SLJS").toString());
				shbzkZkjdDTO.setYxbz(resultMap.get("VALIDTAG") == null ? "" : resultMap.get("VALIDTAG").toString());
				shbzkZkjdDTO.setLkjgbh(resultMap.get("领卡机构编号") == null ? "" : resultMap.get("领卡机构编号").toString());
				shbzkZkjdDTO.setLkjgmc(resultMap.get("领卡机构名称") == null ? "" : resultMap.get("领卡机构名称").toString());
				shbzkZkjdDTO.setLkjglxr(resultMap.get("领卡机构联系人") == null ? "" : resultMap.get("领卡机构联系人").toString());
				shbzkZkjdDTO.setLkjgdh(resultMap.get("领卡机构电话") == null ? "" : resultMap.get("领卡机构电话").toString());
				shbzkZkjdDTO.setWdxx(resultMap.get("网点信息") == null ? "" : resultMap.get("网点信息").toString());
				shbzkZkjdDTO.setSjdz(resultMap.get("收件地址") == null ? "" : resultMap.get("收件地址").toString());
				
				ajaxResponse.setData("data", shbzkZkjdDTO);
			}else{
				ajaxResponse.setAppcode("1");
	            ajaxResponse.setErrorMsg(resultMap.get("ERR").toString());
			}
		} catch (Exception e) {
			LOG.info("系统异常：", e);
			ajaxResponse.setErrorMsg("系统异常");
			ajaxResponse.setAppcode("1");
		}
		return ajaxResponse;
	}
	
	@Override
	public AjaxResponse applyShbzk(ShbzkDTO dto) {
		AjaxResponse ajaxResponse = new AjaxResponse();
		try {
			//校验参数
			if(!"2".equals(dto.getSqlx())) {
				ajaxResponse.setAppcode("1");
	            ajaxResponse.setErrorMsg("申请类型必须为网上申请!");
	            return ajaxResponse;
			}
			//当姓名为生僻字时，“生僻字描述”、“证件图片1”、“证件图片2”均不能为空，图像采用BASE64编码
			if(StringUtils.isNotBlank(dto.getSpzms())
					&& (StringUtils.isBlank(dto.getZjtpxm()) || StringUtils.isBlank(dto.getZjtpgh()))) {
				ajaxResponse.setAppcode("1");
	            ajaxResponse.setErrorMsg("当姓名为生僻字时,证件正反面图片不可为空!");
	            return ajaxResponse;
			}
			//拼接入参
			String zjtp = "";
			if(StringUtils.isNotBlank(dto.getZjtpxm())) {
				zjtp += "<证件图片1>" + dto.getZjtpxm() + "</证件图片1>";
			}
			if(StringUtils.isNotBlank(dto.getZjtpgh())) {
				zjtp += "<证件图片2>" + dto.getZjtpgh() + "</证件图片2>";
			}
			if(StringUtils.isNotBlank(dto.getJhrzjtpxm())) {
				zjtp += "<证件图片3>" + dto.getJhrzjtpxm() + "</证件图片3>";
			}
			if(StringUtils.isNotBlank(dto.getJhrzjtpgh())) {
				zjtp += "<证件图片4>" + dto.getJhrzjtpgh() + "</证件图片4>";
			}
			if(StringUtils.isNotBlank(dto.getJhrzjtpcl())) {
				zjtp += "<证件图片5>" + dto.getJhrzjtpcl() + "</证件图片5>";
			}
			//处理数据来源参数
			String sjly = "";
			if("1".equals(dto.getSjly())){
				sjly="44080003";
			}else if("2".equals(dto.getSjly())){
				sjly="44080002";
			}else if("3".equals(dto.getSjly())){
				sjly="44080001";
			}
			Object[] obj = new Object[]{"<操作*>网上申请社保卡</操作*>"
					+ "<用户名*>" + shbzkYhm + "</用户名*>"
					+ "<密码*>" + shbzkMm + "</密码*>"
					+ "<数据归属机构*>" + dto.getSsjg() + "</数据归属机构*>"
					+ "<服务银行*>" + dto.getFwyh() + "</服务银行*>"
					+ "<收表网点>" + StringUtils.defaultString(dto.getSbwd(), "") + "</收表网点>"
					+ "<卡类别*>" + dto.getKlb() + "</卡类别*>"
					+ "<申请类型*>" + dto.getSqlx() + "</申请类型*>"
					+ "<社会保障号*>" + dto.getShbzh() + "</社会保障号*>"
					+ "<姓名*>" + dto.getXm() + "</姓名*>"
					+ "<生僻字描述>" + StringUtils.defaultString(dto.getSpzms(), "") + "</生僻字描述>"
					+ "<国家地区*>" + dto.getGj() + "</国家地区*>"
					+ "<证件类型*>" + dto.getZjlx() + "</证件类型*>"
					+ "<证件号码*>" + dto.getZjhm() + "</证件号码*>"
					+ "<证件有效期*>" + dto.getZjyxq() + "</证件有效期*>"
					+ "<性别*>" + dto.getXb() + "</性别*>"
					+ "<民族*>" + dto.getMz() + "</民族*>"
					+ "<出生日期*>" + dto.getCsrq() + "</出生日期*>"
					+ "<人员状态>" + StringUtils.defaultString(dto.getRyzt(), "") + "</人员状态>"
					+ "<户口区县>" + StringUtils.defaultString(dto.getHkqx(), "") + "</户口区县>"
					+ "<户口性质>" + StringUtils.defaultString(dto.getHkxz(), "") + "</户口性质>"
					+ "<户口地址>" + StringUtils.defaultString(dto.getHkdz(), "") + "</户口地址>"
					+ "<联系手机*>" + dto.getLxsj() + "</联系手机*>"
					+ "<联系电话>" + StringUtils.defaultString(dto.getLxdh(), "") + "</联系电话>"
					+ "<通讯地址>" + StringUtils.defaultString(dto.getTxdz(), "") + "</通讯地址>"
					+ "<邮政编码>" + StringUtils.defaultString(dto.getYzbm(), "") + "</邮政编码>"
					+ "<电子邮箱>" + StringUtils.defaultString(dto.getDzyx(), "") + "</电子邮箱>"
					+ "<个人编号>" + StringUtils.defaultString(dto.getGrbh(), "") + "</个人编号>"
					+ "<单位编号>" + StringUtils.defaultString(dto.getDwbh(), "") + "</单位编号>"
					+ "<单位名称>" + StringUtils.defaultString(dto.getDwmc(), "") + "</单位名称>"
					+ "<职业工种>" + StringUtils.defaultString(dto.getZygz(), "") + "</职业工种>"
					+ "<监护人姓名>" + StringUtils.defaultString(dto.getJhrxm(), "") + "</监护人姓名>"
					+ "<监护人证件类型>" + StringUtils.defaultString(dto.getJhrzjlx(), "") + "</监护人证件类型>"
					+ "<监护人证件号码>" + StringUtils.defaultString(dto.getJhrzjhm(), "") + "</监护人证件号码>"
					+ "<收件地址>" + StringUtils.defaultString(dto.getSjdz(), "") + "</收件地址>"
					+ "<数据来源>" + sjly  + "</数据来源>"
					+ zjtp + "<相片*>" + dto.getXp() + "</相片*>"};
			LOG.info("=====applyShbzk-request="+obj);
			String result = WebServiceUtil.invoke(shbzkUrl,"allDsjk", obj);
			LOG.info("=====applyShbzk-result="+result);
			Map<String,Object> resultMap = XmlUtils.xmlToMap(result);//转换map
			if("00".equals(resultMap.get("ERR"))) {
				ShbzkDTO shbzkDTO = new ShbzkDTO();
				shbzkDTO.setYwdh(resultMap.get("业务单号") == null ? "" : resultMap.get("业务单号").toString());
				shbzkDTO.setJfdh(resultMap.get("缴费单号") == null ? "" : resultMap.get("缴费单号").toString());
				shbzkDTO.setSjdz(resultMap.get("收件地址") == null ? "" : resultMap.get("收件地址").toString());
				shbzkDTO.setYjdh(resultMap.get("邮寄单号") == null ? "" : resultMap.get("邮寄单号").toString());
				
				ajaxResponse.setData("data", shbzkDTO);
			}else {
				ajaxResponse.setAppcode("1");
	            ajaxResponse.setErrorMsg(resultMap.get("ERR").toString());
			}
		} catch (Exception e) {
			LOG.info("系统异常：", e);
			ajaxResponse.setErrorMsg("系统异常");
			ajaxResponse.setAppcode("1");
		}
		return ajaxResponse;
	}
	
	@Override
	public AjaxResponse changeShbzk(ShbzkDTO dto) {
		AjaxResponse ajaxResponse = new AjaxResponse();
		try {
			//校验参数
			if(!"5".equals(dto.getSqlx()) && !"6".equals(dto.getSqlx())) {
				ajaxResponse.setAppcode("1");
	            ajaxResponse.setErrorMsg("申请类型必须为遗失补卡或普通换卡!");
	            return ajaxResponse;
			}
			if(StringUtils.isNotBlank(dto.getBhyy())) {
				if(!"51".equals(dto.getBhyy()) 
						&& (Integer.parseInt(dto.getBhyy().toString()) < 61 
								|| Integer.parseInt(dto.getBhyy().toString()) > 67)) {
					ajaxResponse.setAppcode("1");
		            ajaxResponse.setErrorMsg("该补换原因不可网上申请!");
		            return ajaxResponse;
				}
			}else {
				ajaxResponse.setAppcode("1");
	            ajaxResponse.setErrorMsg("补换原因不可为空!");
	            return ajaxResponse;
			}
			if(StringUtils.isBlank(dto.getSbkh())) {
				ajaxResponse.setAppcode("1");
	            ajaxResponse.setErrorMsg("社保卡号不可为空!");
	            return ajaxResponse;
			}
			//当姓名为生僻字时，“生僻字描述”、“证件图片1”、“证件图片2”均不能为空，图像采用BASE64编码
			if(StringUtils.isNotBlank(dto.getSpzms())
					&& (StringUtils.isBlank(dto.getZjtpxm()) || StringUtils.isBlank(dto.getZjtpgh()))) {
				ajaxResponse.setAppcode("1");
	            ajaxResponse.setErrorMsg("当姓名为生僻字时,证件正反面图片不可为空!");
	            return ajaxResponse;
			}
			//拼接入参
			String zjtp = "";
			if(StringUtils.isNotBlank(dto.getZjtpxm())) {
				zjtp += "<证件图片1>" + dto.getZjtpxm() + "</证件图片1>";
			}
			if(StringUtils.isNotBlank(dto.getZjtpgh())) {
				zjtp += "<证件图片2>" + dto.getZjtpgh() + "</证件图片2>";
			}
			//处理数据来源参数
			String sjly = "";
			if("1".equals(dto.getSjly())){
				sjly="44080003";
			}else if("2".equals(dto.getSjly())){
				sjly="44080002";
			}else if("3".equals(dto.getSjly())){
				sjly="44080001";
			}
			Object[] obj = new Object[]{"<操作*>网上补换社保卡</操作*>"
					+ "<用户名*>" + shbzkYhm + "</用户名*>"
					+ "<密码*>" + shbzkMm + "</密码*>"
					+ "<数据归属机构*>" + dto.getSsjg() + "</数据归属机构*>"
					+ "<服务银行*>" + dto.getFwyh() + "</服务银行*>"
					+ "<卡类别*>" + dto.getKlb() + "</卡类别*>"
					+ "<申请类型*>" + dto.getSqlx() + "</申请类型*>"
					+ "<社会保障号*>" + dto.getShbzh() + "</社会保障号*>"
					+ "<姓名*>" + dto.getXm() + "</姓名*>"
					+ "<生僻字描述>" + StringUtils.defaultString(dto.getSpzms(), "") + "</生僻字描述>"
					+ "<国家地区*>" + dto.getGj() + "</国家地区*>"
					+ "<证件类型*>" + dto.getZjlx() + "</证件类型*>"
					+ "<证件号码*>" + dto.getZjhm() + "</证件号码*>"
					+ "<证件有效期*>" + dto.getZjyxq() + "</证件有效期*>"
					+ "<性别*>" + dto.getXb() + "</性别*>"
					+ "<民族*>" + dto.getMz() + "</民族*>"
					+ "<出生日期*>" + dto.getCsrq() + "</出生日期*>"
					+ "<人员状态>" + StringUtils.defaultString(dto.getRyzt(), "") + "</人员状态>"
					+ "<户口区县>" + StringUtils.defaultString(dto.getHkqx(), "") + "</户口区县>"
					+ "<户口性质>" + StringUtils.defaultString(dto.getHkxz(), "") + "</户口性质>"
					+ "<户口地址>" + StringUtils.defaultString(dto.getHkdz(), "") + "</户口地址>"
					+ "<联系手机*>" + dto.getLxsj() + "</联系手机*>"
					+ "<联系电话>" + StringUtils.defaultString(dto.getLxdh(), "") + "</联系电话>"
					+ "<通讯地址>" + StringUtils.defaultString(dto.getTxdz(), "") + "</通讯地址>"
					+ "<邮政编码>" + StringUtils.defaultString(dto.getYzbm(), "") + "</邮政编码>"
					+ "<电子邮箱>" + StringUtils.defaultString(dto.getDzyx(), "") + "</电子邮箱>"
					+ "<个人编号>" + StringUtils.defaultString(dto.getGrbh(), "") + "</个人编号>"
					+ "<单位编号>" + StringUtils.defaultString(dto.getDwbh(), "") + "</单位编号>"
					+ "<单位名称>" + StringUtils.defaultString(dto.getDwmc(), "") + "</单位名称>"
					+ "<职业工种>" + StringUtils.defaultString(dto.getZygz(), "") + "</职业工种>"
					+ "<监护人姓名>" + StringUtils.defaultString(dto.getJhrxm(), "") + "</监护人姓名>"
					+ "<监护人证件类型>" + StringUtils.defaultString(dto.getJhrzjlx(), "") + "</监护人证件类型>"
					+ "<监护人证件号码>" + StringUtils.defaultString(dto.getJhrzjhm(), "") + "</监护人证件号码>"
					+ "<收件地址>" + StringUtils.defaultString(dto.getSjdz(), "") + "</收件地址>"
					+ "<数据来源>" + sjly + "</数据来源>"
					+ "<补换原因>" + dto.getBhyy() + "</补换原因>"
					+ "<社保卡号>" + dto.getSbkh() + "</社保卡号>"
					+ zjtp + "<相片*>" + dto.getXp() + "</相片*>"};
			LOG.info("=====changeShbzk-request="+obj);
			String result = WebServiceUtil.invoke(shbzkUrl,"allDsjk", obj);
			LOG.info("=====changeShbzk-result="+result);
			Map<String,Object> resultMap = XmlUtils.xmlToMap(result);//转换map
			if("00".equals(resultMap.get("ERR"))) {
				ShbzkDTO shbzkDTO = new ShbzkDTO();
				shbzkDTO.setYwdh(resultMap.get("业务单号") == null ? "" : resultMap.get("业务单号").toString());
				shbzkDTO.setJfdh(resultMap.get("缴费单号") == null ? "" : resultMap.get("缴费单号").toString());
				shbzkDTO.setSjdz(resultMap.get("收件地址") == null ? "" : resultMap.get("收件地址").toString());
				shbzkDTO.setYjdh(resultMap.get("邮寄单号") == null ? "" : resultMap.get("邮寄单号").toString());
				
				ajaxResponse.setData("data", shbzkDTO);
			}else {
				ajaxResponse.setAppcode("1");
	            ajaxResponse.setErrorMsg(resultMap.get("ERR").toString());
			}
		} catch (Exception e) {
			LOG.info("系统异常：", e);
			ajaxResponse.setErrorMsg("系统异常");
			ajaxResponse.setAppcode("1");
		}
		return ajaxResponse;
	}
	
	@Override
	public AjaxResponse editShbzk(ShbzkEditDTO dto) {
		AjaxResponse ajaxResponse = new AjaxResponse();
		try {
			//当姓名为生僻字时，“生僻字描述”、“证件图片1”、“证件图片2”均不能为空，图像采用BASE64编码
			if(StringUtils.isNotBlank(dto.getSpzms())
					&& (StringUtils.isBlank(dto.getZjtpxm()) || StringUtils.isBlank(dto.getZjtpgh()))) {
				ajaxResponse.setAppcode("1");
	            ajaxResponse.setErrorMsg("当姓名为生僻字时,证件正反面图片不可为空!");
	            return ajaxResponse;
			}
			//拼接入参
			String zjtp = "";
			if(StringUtils.isNotBlank(dto.getZjtpxm())) {
				zjtp += "<证件图片1>" + dto.getZjtpxm() + "</证件图片1>";
			}
			if(StringUtils.isNotBlank(dto.getZjtpgh())) {
				zjtp += "<证件图片2>" + dto.getZjtpgh() + "</证件图片2>";
			}
			Object[] obj = new Object[]{"<操作*>修改信息</操作*>"
					+ "<用户名*>" + shbzkYhm + "</用户名*>"
					+ "<密码*>" + shbzkMm + "</密码*>"
					+ "<所属城市*>" + dto.getSscs() + "</所属城市*>"
					+ "<社会保障号*>" + dto.getShbzh() + "</社会保障号*>"
					+ "<姓名*>" + dto.getXm() + "</姓名*>"
					+ "<生僻字描述>" + StringUtils.defaultString(dto.getSpzms(), "") + "</生僻字描述>"
					+ "<证件有效期*>" + dto.getZjyxq() + "</证件有效期*>"
					+ "<性别*>" + dto.getXb() + "</性别*>"
					+ "<民族*>" + dto.getMz() + "</民族*>"
					+ "<出生日期*>" + dto.getCsrq() + "</出生日期*>"
					+ "<人员状态>" + StringUtils.defaultString(dto.getRyzt(), "") + "</人员状态>"
					+ "<户口区县>" + StringUtils.defaultString(dto.getHkqx(), "") + "</户口区县>"
					+ "<户口性质>" + StringUtils.defaultString(dto.getHkxz(), "") + "</户口性质>"
					+ "<户口地址>" + StringUtils.defaultString(dto.getHkdz(), "") + "</户口地址>"
					+ "<联系手机*>" + dto.getLxsj() + "</联系手机*>"
					+ "<联系电话>" + StringUtils.defaultString(dto.getLxdh(), "") + "</联系电话>"
					+ "<通讯地址>" + StringUtils.defaultString(dto.getTxdz(), "") + "</通讯地址>"
					+ "<邮政编码>" + StringUtils.defaultString(dto.getYzbm(), "") + "</邮政编码>"
					+ "<电子邮箱>" + StringUtils.defaultString(dto.getDzyx(), "") + "</电子邮箱>"
					+ "<个人编号>" + StringUtils.defaultString(dto.getGrbh(), "") + "</个人编号>"
					+ "<单位编号>" + StringUtils.defaultString(dto.getDwbh(), "") + "</单位编号>"
					+ "<单位名称>" + StringUtils.defaultString(dto.getDwmc(), "") + "</单位名称>"
					+ "<职业工种>" + StringUtils.defaultString(dto.getZygz(), "") + "</职业工种>"
					+ "<监护人姓名>" + StringUtils.defaultString(dto.getJhrxm(), "") + "</监护人姓名>"
					+ "<监护人证件类型>" + StringUtils.defaultString(dto.getJhrzjlx(), "") + "</监护人证件类型>"
					+ "<监护人证件号码>" + StringUtils.defaultString(dto.getJhrzjhm(), "") + "</监护人证件号码>"
					+ zjtp + "<相片*>" + StringUtils.defaultString(dto.getXp(), "") + "</相片*>"};
			String result = WebServiceUtil.invoke(shbzkUrl,"allDsjk", obj);
			LOG.info("=====editShbzk-result="+result);
			Map<String,Object> resultMap = XmlUtils.xmlToMap(result);//转换map
			if(!"00".equals(resultMap.get("ERR"))) {
				ajaxResponse.setAppcode("1");
	            ajaxResponse.setErrorMsg(resultMap.get("ERR").toString());
			}
		} catch (Exception e) {
			LOG.info("系统异常：", e);
			ajaxResponse.setErrorMsg("系统异常");
			ajaxResponse.setAppcode("1");
		}
		return ajaxResponse;
	}
	
	@Override
	public AjaxResponse setShbzk(String cz, ShbzkQueryDTO dto) {
		AjaxResponse ajaxResponse = new AjaxResponse();
		try {
			//校验入参
			if(StringUtils.isBlank(dto.getSscs())) {
				ajaxResponse.setAppcode("1");
	            ajaxResponse.setErrorMsg("所属城市不可为空!");
	            return ajaxResponse;
			}
			if(StringUtils.isBlank(dto.getSbkh())) {
				ajaxResponse.setAppcode("1");
	            ajaxResponse.setErrorMsg("社保卡号不可为空!");
	            return ajaxResponse;
			}
			//拼接入参
			Object[] obj = new Object[]{"<操作*>" + cz + "</操作*>"
					+ "<用户名*>" + shbzkYhm + "</用户名*>"
					+ "<密码*>" + shbzkMm + "</密码*>"
					+ "<所属城市*>" + dto.getSscs() + "</所属城市*>"
					+ "<社保卡号*>" + dto.getSbkh() + "</社保卡号*>"
					+ "<社会保障号*>" + dto.getShbzh() + "</社会保障号*>"};
			String result = WebServiceUtil.invoke(shbzkUrl,"allDsjk", obj);
			LOG.info("=====setShbzk-result="+result);
			Map<String,Object> resultMap = XmlUtils.xmlToMap(result);//转换map
			if(!"00".equals(resultMap.get("ERR"))) {
				ajaxResponse.setAppcode("1");
				if("01".equals(resultMap.get("ERR"))) {
					if("网上临时挂失".equals(cz)) {
						ajaxResponse.setErrorMsg("该社会保障已经临时挂失!");
					}else if("网上正式挂失".equals(cz)) {
						ajaxResponse.setErrorMsg("该社会保障已经正式挂失!");
					}else if("网上解除挂失".equals(cz)) {
						ajaxResponse.setErrorMsg("该社会保障已经解除挂失!");
					}else if("网上社保卡注销".equals(cz)) {
						ajaxResponse.setErrorMsg("该社会保障已经注销（卡不存在）!");
					}
				}else if(resultMap.get("ERR").toString().indexOf("02") == 0) {//02*表示社保卡挂失成功但银行联动失败（*是原因）
					ajaxResponse.setAppcode("0");
					ajaxResponse.setErrorMsg(resultMap.get("ERR").toString());
				}else {
		            ajaxResponse.setErrorMsg(resultMap.get("ERR").toString());
				}
			}
		} catch (Exception e) {
			LOG.info("系统异常：", e);
			ajaxResponse.setErrorMsg("系统异常");
			ajaxResponse.setAppcode("1");
		}
		return ajaxResponse;
	}
	
	@Override
	public AjaxResponse startUseShbzkOnline(ShbzkQueryDTO dto) {
		AjaxResponse ajaxResponse = new AjaxResponse();
		try {
			//校验入参
			if(StringUtils.isBlank(dto.getXm())) {
				ajaxResponse.setAppcode("1");
	            ajaxResponse.setErrorMsg("姓名不可为空!");
	            return ajaxResponse;
			}
			if(StringUtils.isBlank(dto.getYhkh())) {
				ajaxResponse.setAppcode("1");
	            ajaxResponse.setErrorMsg("银行卡号不可为空!");
	            return ajaxResponse;
			}
			//拼接入参
			Object[] obj = new Object[]{"<操作*>网上领卡启用</操作*>"
					+ "<用户名*>" + shbzkYhm + "</用户名*>"
					+ "<密码*>" + shbzkMm + "</密码*>"
					+ "<所属城市*>" + dto.getSscs() + "</所属城市*>"
					+ "<社会保障号*>" + dto.getShbzh() + "</社会保障号*>"
					+ "<姓名*>" + dto.getXm() + "</姓名*>"
					+ "<银行卡号*>" + dto.getYhkh() + "</银行卡号*>"};
			String result = WebServiceUtil.invoke(shbzkUrl,"allDsjk", obj);
			LOG.info("=====startUseShbzkOnline-result="+result);
			Map<String,Object> resultMap = XmlUtils.xmlToMap(result);//转换map
			if(!"00".equals(resultMap.get("ERR"))) {
				ajaxResponse.setAppcode("1");
				if("01".equals(resultMap.get("ERR"))) {
					ajaxResponse.setErrorMsg("该社会保障已经领卡启用!");
				}else if(resultMap.get("ERR").toString().indexOf("02") == 0) {//02*表示社保卡领卡启用成功但银行联动失败（*是原因）
					ajaxResponse.setAppcode("0");
					ajaxResponse.setErrorMsg(resultMap.get("ERR").toString());
				}else {
		            ajaxResponse.setErrorMsg(resultMap.get("ERR").toString());
				}
			}
		} catch (Exception e) {
			LOG.info("系统异常：", e);
			ajaxResponse.setErrorMsg("系统异常");
			ajaxResponse.setAppcode("1");
		}
		return ajaxResponse;
	}
	
	@Override
	public AjaxResponse startUseShbzk(ShbzkQueryDTO dto) {
		AjaxResponse ajaxResponse = new AjaxResponse();
		try {
			//校验入参
			if(StringUtils.isBlank(dto.getSscs())) {
				ajaxResponse.setAppcode("1");
	            ajaxResponse.setErrorMsg("所属城市不可为空!");
	            return ajaxResponse;
			}
			if(StringUtils.isBlank(dto.getXm())) {
				ajaxResponse.setAppcode("1");
	            ajaxResponse.setErrorMsg("姓名不可为空!");
	            return ajaxResponse;
			}
			if(StringUtils.isBlank(dto.getSbkh())) {
				ajaxResponse.setAppcode("1");
	            ajaxResponse.setErrorMsg("社保卡号不可为空!");
	            return ajaxResponse;
			}
			//拼接入参
			Object[] obj = new Object[]{shbzkYhm,shbzkMm,dto.getSbkh(),dto.getShbzh(),dto.getXm(),dto.getSscs()};
			String result = WebServiceUtil.invoke(shbzkUrl,"setStart", obj);
			LOG.info("=====startUseShbzk-result="+result);
			if(!"00".equals(result)) {
				ajaxResponse.setAppcode("1");
				if("01".equals(result)) {
					ajaxResponse.setErrorMsg("该社会保障已经领卡启用!");
				}else if(result.indexOf("02") == 0) {//02*表示社保卡领卡启用成功但银行联动失败（*是原因）
					ajaxResponse.setAppcode("0");
					ajaxResponse.setErrorMsg(result);
				}else {
		            ajaxResponse.setErrorMsg(result);
				}
			}
		} catch (Exception e) {
			LOG.info("系统异常：", e);
			ajaxResponse.setErrorMsg("系统异常");
			ajaxResponse.setAppcode("1");
		}
		return ajaxResponse;
	}
	
	@Override
	public AjaxResponse cancelApplication(ShbzkQueryDTO dto) {
		AjaxResponse ajaxResponse = new AjaxResponse();
		try {
			//拼接入参
			Object[] obj = new Object[]{"<操作*>网上撤销申请</操作*>"
					+ "<用户名*>" + shbzkYhm + "</用户名*>"
					+ "<密码*>" + shbzkMm + "</密码*>"
					+ "<所属城市*>" + dto.getSscs() + "</所属城市*>"
					+ "<社会保障号*>" + dto.getShbzh() + "</社会保障号*>"};
			String result = WebServiceUtil.invoke(shbzkUrl,"allDsjk", obj);
			LOG.info("=====cancelApplication-result="+result);
			Map<String,Object> resultMap = XmlUtils.xmlToMap(result);//转换map
			if(!"00".equals(resultMap.get("ERR"))) {
				if("01".equals(resultMap.get("ERR"))) {
					ajaxResponse.setErrorMsg("申请数据不存在（之前已经撤销）!");
				}else {
		            ajaxResponse.setErrorMsg(resultMap.get("ERR").toString());
				}
				ajaxResponse.setAppcode("1");
			}
		} catch (Exception e) {
			LOG.info("系统异常：", e);
			ajaxResponse.setErrorMsg("系统异常");
			ajaxResponse.setAppcode("1");
		}
		return ajaxResponse;
	}
	
	@Override
	public AjaxResponse getShbzh(ShbzhQueryDTO dto) {
		AjaxResponse ajaxResponse = new AjaxResponse();
		try {
			//拼接入参
			Object[] obj = new Object[]{"<操作*>转换社会保障号</操作*>"
					+ "<用户名*>" + shbzkYhm + "</用户名*>"
					+ "<密码*>" + shbzkMm + "</密码*>"
					+ "<国家地区*>" + dto.getGjdq() + "</国家地区*>"
					+ "<证件类型*>" + dto.getZjlx() + "</证件类型*>"
					+ "<证件号码*>" + dto.getZjhm() + "</证件号码*>"};
			String result = WebServiceUtil.invoke(shbzkUrl,"allDsjk", obj);
			LOG.info("=====getShbzh-result="+result);
			Map<String,Object> resultMap = XmlUtils.xmlToMap(result);//转换map
			if("00".equals(resultMap.get("ERR"))) {
				ajaxResponse.setData("shbzh", resultMap.get("社会保障号") == null ? "" : resultMap.get("社会保障号").toString());
			}else {
		        ajaxResponse.setErrorMsg(resultMap.get("ERR").toString());
				ajaxResponse.setAppcode("1");
			}
		} catch (Exception e) {
			LOG.info("系统异常：", e);
			ajaxResponse.setErrorMsg("系统异常");
			ajaxResponse.setAppcode("1");
		}
		return ajaxResponse;
	}
	
	@Override
	public AjaxResponse checkApplication(ShbzkQueryDTO dto) {
		AjaxResponse ajaxResponse = new AjaxResponse();
		try {
			//校验入参
			if(StringUtils.isBlank(dto.getGj())) {
				ajaxResponse.setErrorMsg("国籍不可为空！");
				ajaxResponse.setAppcode("1");
				return ajaxResponse;
			}
			if(StringUtils.isBlank(dto.getXm())) {
				ajaxResponse.setErrorMsg("姓名不可为空！");
				ajaxResponse.setAppcode("1");
				return ajaxResponse;
			}
			if(StringUtils.isBlank(dto.getZjlx())) {
				ajaxResponse.setErrorMsg("证件类型不可为空！");
				ajaxResponse.setAppcode("1");
				return ajaxResponse;
			}
			if(StringUtils.isBlank(dto.getSbyw())) {
				ajaxResponse.setErrorMsg("申办业务不可为空！");
				ajaxResponse.setAppcode("1");
				return ajaxResponse;
			}
			//拼接入参
			Object[] obj = new Object[]{"<操作*>申请资格校验</操作*>"
					+ "<用户名*>" + shbzkYhm + "</用户名*>"
					+ "<密码*>" + shbzkMm + "</密码*>"
					+ "<国籍*>" + dto.getGj() + "</国籍*>"
					+ "<地区代码*>" + dto.getSscs() + "</地区代码*>"
					+ "<姓名*>" + dto.getXm() + "</姓名*>"
					+ "<证件类型*>" + dto.getZjlx() + "</证件类型*>"
					+ "<社会保障号*>" + dto.getShbzh() + "</社会保障号*>"
					+ "<申办业务*>"+ dto.getSbyw() +"</申办业务*>"};
			String result = WebServiceUtil.invoke(shbzkUrl,"allDsjk", obj);
			LOG.info("=====checkApplication-result="+result);
			Map<String,Object> resultMap = XmlUtils.xmlToMap(result);//转换map
			if(!"00".equals(resultMap.get("ERR"))) {
		        ajaxResponse.setErrorMsg(resultMap.get("INFO").toString());
				ajaxResponse.setAppcode("1");
			}
		} catch (Exception e) {
			LOG.info("系统异常：", e);
			ajaxResponse.setErrorMsg("系统异常");
			ajaxResponse.setAppcode("1");
		}
		return ajaxResponse;
	}
	
	@Override
	public AjaxResponse getPhoto(PhotoQueryDTO dto) {
		AjaxResponse ajaxResponse = new AjaxResponse();
		try {
			//拼接入参
			Object[] obj = new Object[]{"<操作*>取认证相片</操作*>"
					+ "<用户名*>" + shbzkYhm + "</用户名*>"
					+ "<密码*>" + shbzkMm + "</密码*>"
					+ "<相片号*>" + dto.getXph() + "</相片号*>"};
			String result = WebServiceUtil.invoke(shbzkUrl,"allDsjk", obj);
			LOG.info("=====getPhoto-result="+result);
			Map<String,Object> resultMap = XmlUtils.xmlToMap(result);//转换map
			if("00".equals(resultMap.get("ERR"))) {
				ajaxResponse.setData("rzsj", resultMap.get("认证时间") == null ? "" : resultMap.get("认证时间").toString());
				ajaxResponse.setData("xp", resultMap.get("相片") == null ? "" : resultMap.get("相片").toString());
			}else {
		        ajaxResponse.setErrorMsg(resultMap.get("ERR").toString());
				ajaxResponse.setAppcode("1");
			}
		} catch (Exception e) {
			LOG.info("系统异常：", e);
			ajaxResponse.setErrorMsg("系统异常");
			ajaxResponse.setAppcode("1");
		}
		return ajaxResponse;
	}
	
	@Override
	public AjaxResponse getServiceBank(ServiceBankQueryDTO dto) {
		AjaxResponse ajaxResponse = new AjaxResponse();
		try {
			//拼接入参
			Object[] obj = new Object[]{"<操作*>服务网点查询</操作*>"
					+ "<用户名*>" + shbzkYhm + "</用户名*>"
					+ "<密码*>" + shbzkMm + "</密码*>"
					+ "<所属城市*>" + dto.getSscs() + "</所属城市*>"
					+ "<所属银行*>" + dto.getSsyh() + "</所属银行*>"
					+ "<区县编码>" + StringUtils.defaultIfBlank(dto.getQxbm(), "") + "</区县编码>"
					+ "<网点编码>" + StringUtils.defaultIfBlank(dto.getWdbm(), "") + "</网点编码>"
					+ "<网点名称>" + StringUtils.defaultIfBlank(dto.getWdmc(), "") + "</网点名称>"};
			String result = WebServiceUtil.invoke(shbzkUrl,"allDsjk", obj);
			LOG.info("=====getServiceBank-result="+result);
			String err=result.substring(result.indexOf("<ERR>")+5,result.indexOf("</ERR>"));
			if("00".equals(err)) {
				String max=result.substring(result.indexOf("<MAX>")+5,result.indexOf("</MAX>"));
				if(!"0".equals(max)) {
					ArrayList<ServiceBankDTO> yhList = new ArrayList<ServiceBankDTO>();
					for(int i = 1;i <= Integer.parseInt(max);i++) {
						String yhStr = result.substring(result.indexOf("<"+i+">")+3,result.indexOf("</"+i+">"));
						Map<String,Object> resultMap = XmlUtils.xmlToMap("<ERR>00</ERR>"+yhStr);//转换map
						ServiceBankDTO serviceBankDTO = new ServiceBankDTO();
						serviceBankDTO.setWdbm(resultMap.get("网点编码") == null ? "" : resultMap.get("网点编码").toString()); 
						serviceBankDTO.setWdmc(resultMap.get("网点名称") == null ? "" : resultMap.get("网点名称").toString());
						serviceBankDTO.setSscs(resultMap.get("所属城市") == null ? "" : resultMap.get("所属城市").toString());
						serviceBankDTO.setSsqx(resultMap.get("所属区县") == null ? "" : resultMap.get("所属区县").toString());
						serviceBankDTO.setSsyh(resultMap.get("所属银行") == null ? "" : resultMap.get("所属银行").toString());
						serviceBankDTO.setSsjbjg(resultMap.get("所属经办机构") == null ? "" : resultMap.get("所属经办机构").toString());
						serviceBankDTO.setWddz(resultMap.get("网点地址") == null ? "" : resultMap.get("网点地址").toString());
						serviceBankDTO.setLxdh(resultMap.get("联系电话") == null ? "" : resultMap.get("联系电话").toString());
						serviceBankDTO.setBz(resultMap.get("备注") == null ? "" : resultMap.get("备注").toString());
						
						yhList.add(serviceBankDTO);
					}
					ajaxResponse.setData("data", yhList);
				}else {
					ajaxResponse.setErrorMsg("没有数据");
					ajaxResponse.setAppcode("1");
				}
			}else {
		        ajaxResponse.setErrorMsg(err);
				ajaxResponse.setAppcode("1");
			}
		} catch (Exception e) {
			LOG.info("系统异常：", e);
			ajaxResponse.setErrorMsg("系统异常");
			ajaxResponse.setAppcode("1");
		}
		return ajaxResponse;
	}
	
	@Override
	public AjaxResponse querySbkfwwd(FwwdQueryDTO dto) {
		AjaxResponse ajaxResponse = new AjaxResponse();
		PageResult pageResult = shbzkBLO.querySbkfwwd(dto);
        ajaxResponse.setData("data", pageResult);
        ajaxResponse.setData("pagesize", dto.getPagesize());
        ajaxResponse.setData("pagenum", dto.getPagenum());
        return ajaxResponse;
	}
	
	@Override
	public AjaxResponse checkShbzk(ShbzkQueryDTO dto) {
		AjaxResponse ajaxResponse = new AjaxResponse();
		try {
			//校验入参
			if(StringUtils.isBlank(dto.getSscs())) {
				dto.setSscs("440800");//默认湛江市
			}
			if(StringUtils.isBlank(dto.getXm())) {
				ajaxResponse.setErrorMsg("姓名不可为空！");
				ajaxResponse.setAppcode("1");
				return ajaxResponse;
			}
			if(StringUtils.isBlank(dto.getSbkh())) {
				ajaxResponse.setErrorMsg("社保卡号不可为空！");
				ajaxResponse.setAppcode("1");
				return ajaxResponse;
			}
			if(StringUtils.isBlank(dto.getKsbm())) {
				ajaxResponse.setErrorMsg("卡识别码不可为空！");
				ajaxResponse.setAppcode("1");
				return ajaxResponse;
			}
			//拼接入参
			Object[] obj = new Object[]{"<操作*>全国鉴权</操作*>"
					+ "<用户名*>" + shbzkYhm + "</用户名*>"
					+ "<密码*>" + shbzkMm + "</密码*>"
					+ "<发卡城市*>" + dto.getSscs() + "</发卡城市*>"
					+ "<社会保障号*>" + dto.getShbzh() + "</社会保障号*>"
					+ "<姓名*>" + dto.getXm() + "</姓名*>"
					+ "<社保卡号*>" + dto.getSbkh() + "</社保卡号*>"
					+ "<卡识别码*>"+ dto.getKsbm() +"</卡识别码*>"};
			String result = WebServiceUtil.invoke(shbzkUrl,"allDsjk", obj);
			LOG.info("=====checkShbzk-result="+result);
			if(!"OK".equals(result)) {
		        ajaxResponse.setErrorMsg(result);
				ajaxResponse.setAppcode("1");
			}
		} catch (Exception e) {
			LOG.info("系统异常：", e);
			ajaxResponse.setErrorMsg("系统异常");
			ajaxResponse.setAppcode("1");
		}
		return ajaxResponse;
	}

	@Override
	public AjaxResponse queryKzt(ShbzkQueryDTO dto) throws DocumentException {
		AjaxResponse ajaxResponse = new AjaxResponse();
		StringBuffer param=new StringBuffer();
		param.append("<操作*>网上社保卡查询</操作*><用户名*>").append(shbzkcxConfig.getYhm()).append("</用户名*><密码*>").append(shbzkcxConfig.getMm()).append(
		        "</密码*>");
		param.append("<所属城市>").append(dto.getSscs()).append("</所属城市><社会保障号*>").append(dto.getShbzh()).append("</社会保障号*><相片>NO</相片>");
		Object[] obj=new Object[]{param.toString()};
		String rsponXml= WebServiceUtil.invoke(shbzkcxConfig.getUrl(),"allDsjk",obj);
		Map<String,Object> rsponMap= XmlUtils.xmlToMap(rsponXml);
		LOG.info(rsponMap+"");
		if(rsponMap.get("ERR").equals("00")||rsponMap.get("ERR").equals("OK")){
			List<Map<String,String>> list= (List<Map<String, String>>) rsponMap.get("ROWS");
			if(list.size()==0){
				Map<String,String> m=new HashMap<>();
				m.put("KIND_CODE", "-1");
				m.put("KIND", "您尚未制卡。");
				ajaxResponse.setData("data", m);
			}else{
                Map<String,String> m=new HashMap<>();
                String zkjd=list.get(0).get("制卡进度");
				if(zkjd.equals("81_待领卡")) {
					m.put("KIND_CODE", "-3");
					m.put("KIND", "未领卡");
					String fwyh=list.get(0).get("服务银行");
					if(fwyh!=null&&fwyh.length()>1){
						String fwyhValue=fwyh.substring(fwyh.indexOf("_")+1);
						m.put("FWYH", fwyhValue);
					}
					m.put("sbkh",list.get(0).get("社保卡号"));
					ajaxResponse.setData("data", m);
				}else if(!zkjd.equals("81_待领卡")&&!zkjd.equals("91_已领卡")){
                    m.put("KIND_CODE","-2");
                    m.put("KIND","正在制卡");
					String fwyh=list.get(0).get("服务银行");
					if(fwyh!=null&&fwyh.length()>1){
						String fwyhValue=fwyh.substring(fwyh.indexOf("_")+1);
						m.put("FWYH", fwyhValue);
					}
					m.put("sbkh",list.get(0).get("社保卡号"));
                    ajaxResponse.setData("data",m);
                }else{
                    String kzt=list.get(0).get("卡状态");
                    String key=kzt.substring(0,kzt.indexOf("_"));
                    String value=kzt.substring(kzt.indexOf("_")+1);
                    m.put("KIND_CODE",key);
                    m.put("KIND",value);
					String fwyh=list.get(0).get("服务银行");
					if(fwyh!=null&&fwyh.length()>1){
						String fwyhValue=fwyh.substring(fwyh.indexOf("_")+1);
						m.put("FWYH", fwyhValue);
					}
					m.put("sbkh",list.get(0).get("社保卡号"));
                    ajaxResponse.setData("data",m);
                }
			}
		}else{
			ajaxResponse.setAppcode("1");
			ajaxResponse.setErrorMsg(rsponMap.get("ERR").toString());
		}
		return ajaxResponse;
	}
	@Override
	public Object queryCardNO(String shbzh,String xm,String sscs) throws DocumentException {
		Object[] obj=new Object[]{shbzkcxConfig.getYhm(),shbzkcxConfig.getMm(),shbzh,xm,sscs};
		String rsponXml=WebServiceUtil.invoke(shbzkcxConfig.getUrl(),"getAZ03",obj);
		Map<String,Object> rsponMap=XmlUtils.xmlToMap(rsponXml);
		if(rsponMap.get("ERR").equals("00")||rsponMap.get("ERR").equals("OK")){
			return rsponMap.get("AAE010B");
		}else{
			return null;
		}
	}
}	