|  | @@ -1,365 +0,0 @@
 | 
											
												
													
														|  | -package tmc.bei.task;
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -import fi.cas.opplugin.TypeUtils;
 |  | 
 | 
											
												
													
														|  | -import kd.bos.context.RequestContext;
 |  | 
 | 
											
												
													
														|  | -import kd.bos.dataentity.OperateOption;
 |  | 
 | 
											
												
													
														|  | -import kd.bos.dataentity.entity.DynamicObject;
 |  | 
 | 
											
												
													
														|  | -import kd.bos.entity.operate.result.OperationResult;
 |  | 
 | 
											
												
													
														|  | -import kd.bos.exception.KDException;
 |  | 
 | 
											
												
													
														|  | -import kd.bos.logging.Log;
 |  | 
 | 
											
												
													
														|  | -import kd.bos.logging.LogFactory;
 |  | 
 | 
											
												
													
														|  | -import kd.bos.login.utils.DemoSMSSender;
 |  | 
 | 
											
												
													
														|  | -import kd.bos.orm.query.QCP;
 |  | 
 | 
											
												
													
														|  | -import kd.bos.orm.query.QFilter;
 |  | 
 | 
											
												
													
														|  | -import kd.bos.schedule.executor.AbstractTask;
 |  | 
 | 
											
												
													
														|  | -import kd.bos.servicehelper.BusinessDataServiceHelper;
 |  | 
 | 
											
												
													
														|  | -import kd.bos.servicehelper.operation.OperationServiceHelper;
 |  | 
 | 
											
												
													
														|  | -import org.apache.commons.lang3.StringUtils;
 |  | 
 | 
											
												
													
														|  | -import org.json.JSONArray;
 |  | 
 | 
											
												
													
														|  | -import org.json.JSONObject;
 |  | 
 | 
											
												
													
														|  | -import org.json.XML;
 |  | 
 | 
											
												
													
														|  | -import org.w3c.dom.Document;
 |  | 
 | 
											
												
													
														|  | -import org.w3c.dom.Element;
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -import javax.xml.parsers.DocumentBuilder;
 |  | 
 | 
											
												
													
														|  | -import javax.xml.parsers.DocumentBuilderFactory;
 |  | 
 | 
											
												
													
														|  | -import javax.xml.transform.OutputKeys;
 |  | 
 | 
											
												
													
														|  | -import javax.xml.transform.Transformer;
 |  | 
 | 
											
												
													
														|  | -import javax.xml.transform.TransformerFactory;
 |  | 
 | 
											
												
													
														|  | -import javax.xml.transform.dom.DOMSource;
 |  | 
 | 
											
												
													
														|  | -import javax.xml.transform.stream.StreamResult;
 |  | 
 | 
											
												
													
														|  | -import java.io.*;
 |  | 
 | 
											
												
													
														|  | -import java.math.BigDecimal;
 |  | 
 | 
											
												
													
														|  | -import java.net.Socket;
 |  | 
 | 
											
												
													
														|  | -import java.text.ParseException;
 |  | 
 | 
											
												
													
														|  | -import java.text.SimpleDateFormat;
 |  | 
 | 
											
												
													
														|  | -import java.util.*;
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -/**
 |  | 
 | 
											
												
													
														|  | - * 自动获取资金流水调度任务插件
 |  | 
 | 
											
												
													
														|  | - * 2024-09-27 wangj
 |  | 
 | 
											
												
													
														|  | - * 主要功能:调用前置机接口获取第三方系统资金流水写入交易明细
 |  | 
 | 
											
												
													
														|  | - */
 |  | 
 | 
											
												
													
														|  | -public class synTransdetailTask extends AbstractTask {
 |  | 
 | 
											
												
													
														|  | -    protected static final Log log = LogFactory.getLog(DemoSMSSender.class);
 |  | 
 | 
											
												
													
														|  | -    @Override
 |  | 
 | 
											
												
													
														|  | -    public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
 |  | 
 | 
											
												
													
														|  | -        //1.获取计划参数,计算取数日期
 |  | 
 | 
											
												
													
														|  | -        String type = (String) map.get("type");
 |  | 
 | 
											
												
													
														|  | -        String queryDate = getDateByType(type);
 |  | 
 | 
											
												
													
														|  | -        //2.获取接口链接等信息
 |  | 
 | 
											
												
													
														|  | -        DynamicObject jkpzxx = BusinessDataServiceHelper.loadSingle("nckd_jkpzxx",new QFilter[]{new QFilter("number","=","paytozfqz")});
 |  | 
 | 
											
												
													
														|  | -        String servername =  jkpzxx.getString("nckd_servername");
 |  | 
 | 
											
												
													
														|  | -        String port =  jkpzxx.getString("nckd_port");
 |  | 
 | 
											
												
													
														|  | -        //3.获取取数银行账号,循环查询接口(第三方不支持批量查询)
 |  | 
 | 
											
												
													
														|  | -        QFilter qFilter_enable = new QFilter("enable", QCP.equals,"1");
 |  | 
 | 
											
												
													
														|  | -        QFilter qFilter_status = new QFilter("status", QCP.equals, "C");
 |  | 
 | 
											
												
													
														|  | -        QFilter qFilter_acctstatus = new QFilter("acctstatus", QCP.equals, "normal");
 |  | 
 | 
											
												
													
														|  | -        DynamicObject[] accountBanks = BusinessDataServiceHelper.load("am_accountbank",
 |  | 
 | 
											
												
													
														|  | -                "id,bankaccountnumber,openorg,bank",new QFilter[]{qFilter_enable,qFilter_status,qFilter_acctstatus});
 |  | 
 | 
											
												
													
														|  | -        for(DynamicObject accountBank : accountBanks){
 |  | 
 | 
											
												
													
														|  | -            String bankaccountnumber = accountBank.getString("bankaccountnumber");
 |  | 
 | 
											
												
													
														|  | -            //4.拼接xml对象
 |  | 
 | 
											
												
													
														|  | -            String bodyxml = createMessageRequest(queryDate,bankaccountnumber);
 |  | 
 | 
											
												
													
														|  | -            log.info("银行账号:"+bankaccountnumber+"请求xml:"+bodyxml);
 |  | 
 | 
											
												
													
														|  | -            log.info("银行账号:"+bankaccountnumber+"开始调用接口");
 |  | 
 | 
											
												
													
														|  | -            //5.调用接口
 |  | 
 | 
											
												
													
														|  | -            JSONObject cbsReturnJson = socketService(servername,port,bodyxml);
 |  | 
 | 
											
												
													
														|  | -            log.info("银行账号:"+bankaccountnumber+"调用接口返回结果:"+cbsReturnJson.toString());
 |  | 
 | 
											
												
													
														|  | -            if(cbsReturnJson!=null && cbsReturnJson.length()>0) {
 |  | 
 | 
											
												
													
														|  | -                JSONObject reMessage = cbsReturnJson.getJSONObject("Message");
 |  | 
 | 
											
												
													
														|  | -                JSONObject reHeadInfo = reMessage.getJSONObject("HeadInfo");
 |  | 
 | 
											
												
													
														|  | -                if (reHeadInfo.getString("errorcode").contains("000000")) {//响应成功
 |  | 
 | 
											
												
													
														|  | -//                    if ("000".equals(reBodyInfo.getString("Fs_retCode"))) {
 |  | 
 | 
											
												
													
														|  | -                        JSONObject reBodyInfo = reMessage.getJSONObject("BodyInfo");
 |  | 
 | 
											
												
													
														|  | -                        log.info("银行账号:"+bankaccountnumber+"发送前置机响应成功,前置机接口发送成功");
 |  | 
 | 
											
												
													
														|  | -                        //6.获取成功写入交易明细表***
 |  | 
 | 
											
												
													
														|  | -                    try {
 |  | 
 | 
											
												
													
														|  | -                        writeTransdetail(reBodyInfo,bankaccountnumber);
 |  | 
 | 
											
												
													
														|  | -                    } catch (Exception e) {
 |  | 
 | 
											
												
													
														|  | -                        throw new RuntimeException(e);
 |  | 
 | 
											
												
													
														|  | -                    }
 |  | 
 | 
											
												
													
														|  | -                    log.info("银行账号:"+bankaccountnumber+"写入交易明细成功");
 |  | 
 | 
											
												
													
														|  | -//                    } else {
 |  | 
 | 
											
												
													
														|  | -//                        log.info("银行账号:"+bankaccountnumber+"发送前置机响应成功,前置机接口发送失败");
 |  | 
 | 
											
												
													
														|  | -//                    }
 |  | 
 | 
											
												
													
														|  | -                } else {
 |  | 
 | 
											
												
													
														|  | -                    log.info("银行账号:"+bankaccountnumber+"发送前置机响应失败:"+reHeadInfo.getString("errormsg"));
 |  | 
 | 
											
												
													
														|  | -                }
 |  | 
 | 
											
												
													
														|  | -            }
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -    private void writeTransdetail(JSONObject reBodyInfo, String bankaccountnumber) throws ParseException {
 |  | 
 | 
											
												
													
														|  | -        //银行账号匹配获取银行账户
 |  | 
 | 
											
												
													
														|  | -        QFilter qFilter_bankaccountnumber = new QFilter("bankaccountnumber",QCP.equals,bankaccountnumber);
 |  | 
 | 
											
												
													
														|  | -        DynamicObject[] bd_accountbanks = BusinessDataServiceHelper.load(
 |  | 
 | 
											
												
													
														|  | -                "bd_accountbanks","id,number,name,openorg.number,openorg.name,bank.number,bank.name",
 |  | 
 | 
											
												
													
														|  | -                    new QFilter[]{qFilter_bankaccountnumber});
 |  | 
 | 
											
												
													
														|  | -        DynamicObject bd_accountbank = null;
 |  | 
 | 
											
												
													
														|  | -        if(bd_accountbanks!=null && bd_accountbanks.length>0){
 |  | 
 | 
											
												
													
														|  | -            bd_accountbank = bd_accountbanks[0];
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        //拼装接口返回的交易流水号集合
 |  | 
 | 
											
												
													
														|  | -        List<String> detailids = new ArrayList<String>();
 |  | 
 | 
											
												
													
														|  | -        JSONArray actrsview_rich = reBodyInfo.getJSONArray("actrsview_rich");
 |  | 
 | 
											
												
													
														|  | -        for(int i=0;i<actrsview_rich.length();i++){
 |  | 
 | 
											
												
													
														|  | -            JSONObject actrsview_rich_obj = actrsview_rich.getJSONObject(i);
 |  | 
 | 
											
												
													
														|  | -            String TransNbr = String.valueOf(actrsview_rich_obj.getLong("TransNbr"));
 |  | 
 | 
											
												
													
														|  | -            detailids.add(TransNbr);
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        log.info("预计写入交易明细:"+actrsview_rich.length()+"条");
 |  | 
 | 
											
												
													
														|  | -        //查询一次交易流水表缓存已存在的交易流水记录
 |  | 
 | 
											
												
													
														|  | -        QFilter qFilter_detailid = new QFilter("detailid",QCP.in,detailids);
 |  | 
 | 
											
												
													
														|  | -        DynamicObject[] bills = BusinessDataServiceHelper.load("bei_transdetail","id,detailid",new QFilter[]{qFilter_detailid});
 |  | 
 | 
											
												
													
														|  | -        Map tempdetailid = new HashMap();
 |  | 
 | 
											
												
													
														|  | -        int isHaveBillSize = 0;
 |  | 
 | 
											
												
													
														|  | -        for(DynamicObject bill : bills){
 |  | 
 | 
											
												
													
														|  | -            String detailid = bill.getString("detailid");
 |  | 
 | 
											
												
													
														|  | -            tempdetailid.put(detailid,detailid);
 |  | 
 | 
											
												
													
														|  | -            isHaveBillSize ++;
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        log.info("已存在交易明细:"+isHaveBillSize+"条");
 |  | 
 | 
											
												
													
														|  | -        //缓存所有币种
 |  | 
 | 
											
												
													
														|  | -        Map currencyMap = getCurrencyMap();
 |  | 
 | 
											
												
													
														|  | -        //过滤已存在的记录,写入不存在的记录
 |  | 
 | 
											
												
													
														|  | -        int size = actrsview_rich.length() - isHaveBillSize;
 |  | 
 | 
											
												
													
														|  | -        log.info("最终写入交易明细:"+size+"条");
 |  | 
 | 
											
												
													
														|  | -        DynamicObject[] datalist = new DynamicObject[size];
 |  | 
 | 
											
												
													
														|  | -        for(int i=0;i<actrsview_rich.length();i++){
 |  | 
 | 
											
												
													
														|  | -            JSONObject actrsview_rich_obj = actrsview_rich.getJSONObject(i);
 |  | 
 | 
											
												
													
														|  | -            String transSet = String.valueOf(actrsview_rich_obj.getLong("TransSet"));
 |  | 
 | 
											
												
													
														|  | -            if(null == tempdetailid || null == tempdetailid.get(transSet)){
 |  | 
 | 
											
												
													
														|  | -                DynamicObject bill = createBill(actrsview_rich_obj,bd_accountbank,currencyMap);
 |  | 
 | 
											
												
													
														|  | -                datalist[i] = bill;
 |  | 
 | 
											
												
													
														|  | -            }
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        if(datalist.length>0){
 |  | 
 | 
											
												
													
														|  | -            log.info("拼装完成,开始保存");
 |  | 
 | 
											
												
													
														|  | -            OperationResult result = OperationServiceHelper.executeOperate("save","zb_ps_pricemgconfig",datalist, OperateOption.create());
 |  | 
 | 
											
												
													
														|  | -            log.info("保存结束:"+result.getMessage());
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        log.info("写入交易明细完成");
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -    private DynamicObject createBill(JSONObject actrsview_rich_obj, DynamicObject bd_accountbank, Map currencyMap) throws ParseException {
 |  | 
 | 
											
												
													
														|  | -        DynamicObject bill = BusinessDataServiceHelper.newDynamicObject("bei_betransdetail_imp");
 |  | 
 | 
											
												
													
														|  | -        //交易明细编号
 |  | 
 | 
											
												
													
														|  | -//                bill.set("billno",transSet);
 |  | 
 | 
											
												
													
														|  | -        if(bd_accountbank!=null){
 |  | 
 | 
											
												
													
														|  | -            //资金组织
 |  | 
 | 
											
												
													
														|  | -            DynamicObject company = bd_accountbank.getDynamicObject("openorg");
 |  | 
 | 
											
												
													
														|  | -            bill.set("company",company.getPkValue());
 |  | 
 | 
											
												
													
														|  | -            //银行账号
 |  | 
 | 
											
												
													
														|  | -            bill.set("accountbank",bd_accountbank.getPkValue());
 |  | 
 | 
											
												
													
														|  | -            //开户银行
 |  | 
 | 
											
												
													
														|  | -            DynamicObject bank = bd_accountbank.getDynamicObject("bank");
 |  | 
 | 
											
												
													
														|  | -            bill.set("bank",bank.getPkValue());
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        //单据状态
 |  | 
 | 
											
												
													
														|  | -        bill.set("billstatus","A");
 |  | 
 | 
											
												
													
														|  | -        //币种
 |  | 
 | 
											
												
													
														|  | -        String currency = String.valueOf(actrsview_rich_obj.getInt("CcyNbr"));
 |  | 
 | 
											
												
													
														|  | -        bill.set("currency",currencyMap.get(currency));
 |  | 
 | 
											
												
													
														|  | -        //交易日期
 |  | 
 | 
											
												
													
														|  | -        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
 |  | 
 | 
											
												
													
														|  | -        String entryDate = String.valueOf(actrsview_rich_obj.getInt("EntryDate"));
 |  | 
 | 
											
												
													
														|  | -        String bizdate = entryDate.substring(0,4)+"-"+entryDate.substring(4,6)+"-"+entryDate.substring(6,8);
 |  | 
 | 
											
												
													
														|  | -        bill.set("bizdate",sdf1.format(bizdate));
 |  | 
 | 
											
												
													
														|  | -        //交易时间
 |  | 
 | 
											
												
													
														|  | -        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 |  | 
 | 
											
												
													
														|  | -        String entryTime = String.valueOf(actrsview_rich_obj.getInt("EntryTime"));
 |  | 
 | 
											
												
													
														|  | -        String biztime = transTime(bizdate,entryTime);
 |  | 
 | 
											
												
													
														|  | -        bill.set("biztime",sdf2.parse(biztime));
 |  | 
 | 
											
												
													
														|  | -        //摘要
 |  | 
 | 
											
												
													
														|  | -        String description = "";
 |  | 
 | 
											
												
													
														|  | -        if(StringUtils.isNotBlank(actrsview_rich_obj.getString("BankText"))){
 |  | 
 | 
											
												
													
														|  | -            //交易银行内部摘要
 |  | 
 | 
											
												
													
														|  | -            description = actrsview_rich_obj.getString("BankText")+";";
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        if(StringUtils.isNotBlank(actrsview_rich_obj.getString("CltText"))){
 |  | 
 | 
											
												
													
														|  | -            //交易银行内部摘要
 |  | 
 | 
											
												
													
														|  | -            description = description + actrsview_rich_obj.getString("CltText")+";";
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        if(StringUtils.isNotBlank(actrsview_rich_obj.getString("ElecText"))){
 |  | 
 | 
											
												
													
														|  | -            //交易银行内部摘要
 |  | 
 | 
											
												
													
														|  | -            description = description + actrsview_rich_obj.getString("ElecText")+";";
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        if(StringUtils.isNotBlank(actrsview_rich_obj.getString("StmVar"))){
 |  | 
 | 
											
												
													
														|  | -            //交易银行内部摘要
 |  | 
 | 
											
												
													
														|  | -            description = description + actrsview_rich_obj.getString("StmVar")+";";
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        bill.set("description",description);
 |  | 
 | 
											
												
													
														|  | -        //收款金额/付款金额
 |  | 
 | 
											
												
													
														|  | -        BigDecimal transAmt = actrsview_rich_obj.getBigDecimal("TransAmt");
 |  | 
 | 
											
												
													
														|  | -        String transDir = actrsview_rich_obj.getString("TransDir");
 |  | 
 | 
											
												
													
														|  | -        if("C".equals(transDir)){
 |  | 
 | 
											
												
													
														|  | -            bill.set("creditamount",transAmt);//贷-收款
 |  | 
 | 
											
												
													
														|  | -        }else if("D".equals(transDir)){
 |  | 
 | 
											
												
													
														|  | -            bill.set("debitamount",transAmt);//借-付款
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        //余额
 |  | 
 | 
											
												
													
														|  | -        BigDecimal transbalance = actrsview_rich_obj.getBigDecimal("OnlBal");
 |  | 
 | 
											
												
													
														|  | -        bill.set("transbalance",transbalance);
 |  | 
 | 
											
												
													
														|  | -        //对方户名
 |  | 
 | 
											
												
													
														|  | -        String oppunit = actrsview_rich_obj.getString("YourRichName");
 |  | 
 | 
											
												
													
														|  | -        bill.set("oppunit",oppunit);
 |  | 
 | 
											
												
													
														|  | -        //对方账号
 |  | 
 | 
											
												
													
														|  | -        String oppbanknumber = actrsview_rich_obj.getString("YourRichNbr");
 |  | 
 | 
											
												
													
														|  | -        bill.set("oppbanknumber",oppbanknumber);
 |  | 
 | 
											
												
													
														|  | -        //对方开户行
 |  | 
 | 
											
												
													
														|  | -        String oppbank = actrsview_rich_obj.getString("CltText");
 |  | 
 | 
											
												
													
														|  | -        bill.set("oppbank",oppbank);
 |  | 
 | 
											
												
													
														|  | -        //业务类型
 |  | 
 | 
											
												
													
														|  | -        bill.set("biztype","1");
 |  | 
 | 
											
												
													
														|  | -        //明细流水号
 |  | 
 | 
											
												
													
														|  | -        String detailid = String.valueOf(actrsview_rich_obj.getLong("TransNbr"));
 |  | 
 | 
											
												
													
														|  | -        bill.set("detailid",detailid);
 |  | 
 | 
											
												
													
														|  | -        //业务参考号
 |  | 
 | 
											
												
													
														|  | -        String bizrefno = String.valueOf(actrsview_rich_obj.getLong("TraceNbr"));
 |  | 
 | 
											
												
													
														|  | -        bill.set("bizrefno",bizrefno);
 |  | 
 | 
											
												
													
														|  | -        //数据来源
 |  | 
 | 
											
												
													
														|  | -        bill.set("datasource","hxsys");
 |  | 
 | 
											
												
													
														|  | -        //入账状态
 |  | 
 | 
											
												
													
														|  | -        bill.set("receredtype","0");
 |  | 
 | 
											
												
													
														|  | -//                //记账日期
 |  | 
 | 
											
												
													
														|  | -//                bill.set("transdate",new Date());
 |  | 
 | 
											
												
													
														|  | -        return bill;
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -    private Map getCurrencyMap() {
 |  | 
 | 
											
												
													
														|  | -        Map currMap = new HashMap();
 |  | 
 | 
											
												
													
														|  | -        QFilter qFilter_enable = new QFilter("enable",QCP.equals,"1");
 |  | 
 | 
											
												
													
														|  | -        DynamicObject[] currCol = BusinessDataServiceHelper.load(
 |  | 
 | 
											
												
													
														|  | -                "bd_currency","id,number,nckd_hxxtno",new QFilter[]{qFilter_enable});
 |  | 
 | 
											
												
													
														|  | -        for(DynamicObject currObj : currCol){
 |  | 
 | 
											
												
													
														|  | -            if(StringUtils.isNotBlank(currObj.getString("nckd_hxxtno"))){
 |  | 
 | 
											
												
													
														|  | -                currMap.put(currObj.getString("nckd_hxxtno"),currObj);
 |  | 
 | 
											
												
													
														|  | -            }
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        return currMap;
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -    private String transTime(String entryDate, String entryTime) {
 |  | 
 | 
											
												
													
														|  | -        String time = "";
 |  | 
 | 
											
												
													
														|  | -        switch (entryTime.length()){
 |  | 
 | 
											
												
													
														|  | -            case 1:time="00:00:0"+entryTime;break;
 |  | 
 | 
											
												
													
														|  | -            case 2:time="00:00:"+entryTime;break;
 |  | 
 | 
											
												
													
														|  | -            case 3:time="00:0"+entryTime.substring(0,1)+":"+entryTime.substring(1);break;
 |  | 
 | 
											
												
													
														|  | -            case 4:time="00:"+entryTime.substring(0,2)+":"+entryTime.substring(2);break;
 |  | 
 | 
											
												
													
														|  | -            case 5:time="0"+entryTime.substring(0,1)+":"+entryTime.substring(1,3)+":"+entryTime.substring(3);break;
 |  | 
 | 
											
												
													
														|  | -            case 6:time=entryTime.substring(0,2)+":"+entryTime.substring(2,4)+":"+entryTime.substring(4);break;
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -        return entryDate+" "+time;
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -    private String createMessageRequest(String queryDate, String bankaccountnumber) {
 |  | 
 | 
											
												
													
														|  | -        try {
 |  | 
 | 
											
												
													
														|  | -            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
 |  | 
 | 
											
												
													
														|  | -            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
 |  | 
 | 
											
												
													
														|  | -            Document doc = dBuilder.newDocument();
 |  | 
 | 
											
												
													
														|  | -            //创建Message节点
 |  | 
 | 
											
												
													
														|  | -            Element rootElement = doc.createElement("Message");
 |  | 
 | 
											
												
													
														|  | -            doc.appendChild(rootElement);
 |  | 
 | 
											
												
													
														|  | -            //创建HeadInfo节点
 |  | 
 | 
											
												
													
														|  | -            Element head = doc.createElement("HeadInfo");
 |  | 
 | 
											
												
													
														|  | -            rootElement.appendChild(head);
 |  | 
 | 
											
												
													
														|  | -            //拼接HeadInfo报文
 |  | 
 | 
											
												
													
														|  | -            createElement(doc, head, "transcode", "ACRCTRSQ"); //请求交易代码
 |  | 
 | 
											
												
													
														|  | -            createElement(doc, head, "channelcode", "JF");//发起渠道
 |  | 
 | 
											
												
													
														|  | -            Calendar currentdate = Calendar.getInstance();
 |  | 
 | 
											
												
													
														|  | -            createElement(doc, head, "channeldate", TypeUtils.date2String(currentdate.getTime(),"yyyyMMdd"));//发起渠道日期
 |  | 
 | 
											
												
													
														|  | -            String channelserno = TypeUtils.date2String(currentdate.getTime(),"yyyyMMdd HHmmss");
 |  | 
 | 
											
												
													
														|  | -            createElement(doc, head, "channelserno", channelserno);//发起渠道流水
 |  | 
 | 
											
												
													
														|  | -            createElement(doc, head, "channeltime", currentdate.get(Calendar.HOUR)+""+currentdate.get(Calendar.MINUTE)+""+currentdate.get(Calendar.SECOND));
 |  | 
 | 
											
												
													
														|  | -            createElement(doc, head, "brno", "");//交易机构,可为空
 |  | 
 | 
											
												
													
														|  | -            createElement(doc, head, "tellerno", "");//操作柜员,可为空
 |  | 
 | 
											
												
													
														|  | -            createElement(doc, head, "terminalno", "");//操作终端号,可为空
 |  | 
 | 
											
												
													
														|  | -            createElement(doc, head, "reserve", "");//保留域,可为空
 |  | 
 | 
											
												
													
														|  | -            //创建BodyInfo节点
 |  | 
 | 
											
												
													
														|  | -            Element body = doc.createElement("BodyInfo");
 |  | 
 | 
											
												
													
														|  | -            rootElement.appendChild(body);
 |  | 
 | 
											
												
													
														|  | -            //拼接BodyInfo报文
 |  | 
 | 
											
												
													
														|  | -            createElement(doc, body, "RichNbr", bankaccountnumber); //户口号
 |  | 
 | 
											
												
													
														|  | -            createElement(doc, body, "QryRichType", "1"); //交易查询标志
 |  | 
 | 
											
												
													
														|  | -            createElement(doc, body, "TransTypeFlag", "N"); //交易类型选项标志
 |  | 
 | 
											
												
													
														|  | -            createElement(doc, body, "BgnDate", queryDate); //查询起始日期
 |  | 
 | 
											
												
													
														|  | -            createElement(doc, body, "EndDate", queryDate); //查询结束日期
 |  | 
 | 
											
												
													
														|  | -            createElement(doc, body, "QryDir", "D"); //查询排序方式
 |  | 
 | 
											
												
													
														|  | -            createElement(doc, body, "MinAmt", "0"); //查询金额下限
 |  | 
 | 
											
												
													
														|  | -            createElement(doc, body, "MaxAmt", "999999999999.99"); //查询金额上限
 |  | 
 | 
											
												
													
														|  | -            createElement(doc, body, "YourType", "N"); //查询金额上限
 |  | 
 | 
											
												
													
														|  | -            createElement(doc, body, "RowCnt", "20000");//展示条数
 |  | 
 | 
											
												
													
														|  | -            createElement(doc, body, "TotalFlag", "0");//汇总标志
 |  | 
 | 
											
												
													
														|  | -            // 指定编码格式为GBK
 |  | 
 | 
											
												
													
														|  | -            TransformerFactory transformerFactory = TransformerFactory.newInstance();
 |  | 
 | 
											
												
													
														|  | -            Transformer transformer = transformerFactory.newTransformer();
 |  | 
 | 
											
												
													
														|  | -            transformer.setOutputProperty(OutputKeys.ENCODING, "GBK");
 |  | 
 | 
											
												
													
														|  | -            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -            DOMSource source = new DOMSource(doc);
 |  | 
 | 
											
												
													
														|  | -            StringWriter writer = new StringWriter();
 |  | 
 | 
											
												
													
														|  | -            StreamResult result = new StreamResult(writer);
 |  | 
 | 
											
												
													
														|  | -            transformer.transform(source, result);
 |  | 
 | 
											
												
													
														|  | -            int length = writer.toString().length();
 |  | 
 | 
											
												
													
														|  | -            String xmlStr = "00000" +String.valueOf(length)+writer.toString();
 |  | 
 | 
											
												
													
														|  | -            return xmlStr;
 |  | 
 | 
											
												
													
														|  | -        }catch (Exception e) {
 |  | 
 | 
											
												
													
														|  | -            log.info("拼接请求报文异常:"+e.getMessage());
 |  | 
 | 
											
												
													
														|  | -            e.printStackTrace();
 |  | 
 | 
											
												
													
														|  | -            return null;
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -    private static void createElement(Document doc, Element parent, String name, String value) {
 |  | 
 | 
											
												
													
														|  | -        Element element = doc.createElement(name);
 |  | 
 | 
											
												
													
														|  | -        element.appendChild(doc.createTextNode(value));
 |  | 
 | 
											
												
													
														|  | -        parent.appendChild(element);
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -    private String getDateByType(String type) {
 |  | 
 | 
											
												
													
														|  | -        String date = "";
 |  | 
 | 
											
												
													
														|  | -        Calendar now = Calendar.getInstance();
 |  | 
 | 
											
												
													
														|  | -        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
 |  | 
 | 
											
												
													
														|  | -        if("now".equals(type)){
 |  | 
 | 
											
												
													
														|  | -            date = sdf.format(now.getTime());
 |  | 
 | 
											
												
													
														|  | -        }else if("before".equals(type)){
 |  | 
 | 
											
												
													
														|  | -            now.add(Calendar.DAY_OF_MONTH,-1);
 |  | 
 | 
											
												
													
														|  | -            date = sdf.format(now.getTime());
 |  | 
 | 
											
												
													
														|  | -        }else{
 |  | 
 | 
											
												
													
														|  | -            date = type;
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        return date;
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -    public static JSONObject socketService(String serverName,String port,String xmlData){
 |  | 
 | 
											
												
													
														|  | -        try {
 |  | 
 | 
											
												
													
														|  | -            Socket client = new Socket(serverName, TypeUtils.nullToInt(port));
 |  | 
 | 
											
												
													
														|  | -            OutputStream outToServer = client.getOutputStream();
 |  | 
 | 
											
												
													
														|  | -            PrintWriter out = new PrintWriter(new OutputStreamWriter(outToServer, "GBK"), true);
 |  | 
 | 
											
												
													
														|  | -            out.println(xmlData);
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -            InputStream inFromServer = client.getInputStream();
 |  | 
 | 
											
												
													
														|  | -            BufferedReader in = new BufferedReader(new InputStreamReader(inFromServer, "GBK"));
 |  | 
 | 
											
												
													
														|  | -            StringBuilder responseBuilder = new StringBuilder();
 |  | 
 | 
											
												
													
														|  | -            String line;
 |  | 
 | 
											
												
													
														|  | -            while ((line = in.readLine()) != null) {
 |  | 
 | 
											
												
													
														|  | -                responseBuilder.append(line);
 |  | 
 | 
											
												
													
														|  | -            }
 |  | 
 | 
											
												
													
														|  | -            String responseJson = responseBuilder.toString();
 |  | 
 | 
											
												
													
														|  | -            if(responseJson.indexOf("<?xml")>0){
 |  | 
 | 
											
												
													
														|  | -                int index = responseJson.indexOf("<?xml");
 |  | 
 | 
											
												
													
														|  | -                responseJson = responseJson.substring(index);
 |  | 
 | 
											
												
													
														|  | -            }
 |  | 
 | 
											
												
													
														|  | -            JSONObject jsonObject = XML.toJSONObject(responseJson);
 |  | 
 | 
											
												
													
														|  | -            client.close();
 |  | 
 | 
											
												
													
														|  | -            return jsonObject;
 |  | 
 | 
											
												
													
														|  | -        } catch (IOException e) {
 |  | 
 | 
											
												
													
														|  | -            e.printStackTrace();
 |  | 
 | 
											
												
													
														|  | -            log.info("短信发送失败:"+e.getMessage());
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        return null;
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | -}
 |  | 
 |