package com.fzzy.push.gd2020.v2; import com.fzzy.api.data.AuthToken; import com.fzzy.api.entity.Api1103; import com.fzzy.api.entity.Api1205; import com.fzzy.api.entity.ApiConfs; import com.fzzy.push.gd2020.GDResult; import com.fzzy.push.gd2020.GDUtils; import com.fzzy.push.gd2020.InvokeResult; import com.fzzy.push.gd2020.JaxbUtil; import lombok.extern.slf4j.Slf4j; import org.apache.cxf.endpoint.Client; import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory; import javax.xml.namespace.QName; /** * @Desc: 出库过磅单 * @author: Andy * @update-time: 2022/10/30 */ @Slf4j public class OutStorageDetailWebService { public static OutStorageDetailWebService newInstance() { return new OutStorageDetailWebService(); } public String xml_webService = "{depot_code}{storehouse_name}{business_code}{boatNo}{gross_weight}{net_weight}{tare}{balance_weight}{joinTime}{outTime}{batch}{positionNo}{buckle_weight}{put_weight}{compartment_name}{pic_id}{video_id}{djmgryxm}{qydbh}{hwmc}{jyjg}{zjkl}{qysj}{qyfs}{zjsj}{zjry}{mzjby}{mzjlsj}{mzjly}{bgyklfs}{bgykl}{bgyxm}{qrsj}{sbwz}{pzjby}{pzjlsj}{pzjly}{jsjg}{jsje}{jssj}{jsrxm}{fphm}{fpzt}{kdsh}{fpdm}{yhhbdm}{khhh}{khhmc}{yhkh}{cmqrmgryxm}"; public InvokeResult webservice(AuthToken authToken, ApiConfs conf, Api1205 data,Api1103 api1103) { InvokeResult invokeResult = new InvokeResult(); ClassLoader cl = Thread.currentThread().getContextClassLoader(); String url = conf.getApiUrl() + "/outStorageDetailWebService?wsdl"; // 填写调用出库过磅接口服务 String method = "saveOutStorageDetailRecord"; // 填写出库过磅方法名 String nameSpace = "http://service.sljt.com"; // 填写调用省平台命名空间 Thread.currentThread().setContextClassLoader(cl); JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); Client client = dcf.createClient(url); QName name = new QName(nameSpace, method); Object[] objects; try { String xmlStr = webServiceXml(data,api1103);// 获取接口的输入报文,根据需要填写相应的报文 log.debug("------xmlStr--{}", xmlStr); objects = client.invoke(name, new Object[]{authToken.getToken(), xmlStr}); log.debug("-----------返回信息---{}", objects[0].toString()); invokeResult = JaxbUtil.converyToJavaBean(objects[0].toString(), InvokeResult.class); } catch (Exception e) { log.error("----执行异常----{}", e); invokeResult.setCode(GDResult.CODE_500.getCode()); invokeResult.setData("后端服务执行异常:+" + e.getMessage()); return invokeResult; } return invokeResult; } /** * 报文获取--替换数据 * * @param data * @return */ public String webServiceXml(Api1205 data, Api1103 api1103) { String xmlStr = xml_webService; xmlStr = xmlStr.replace("{ckywdh}", GDUtils.formatStr(data.getCkywdh()));//出库业务单号 xmlStr = xmlStr.replace("{positionNo}", GDUtils.formatStr(data.getHwdm()));//货位编码 xmlStr = xmlStr.replace("{cktzdh}", GDUtils.formatStr(data.getCktzdh()));//出库通知单号 //入库数据接口的业务单号,格式:库点代码+年月日+三位随机数 String bizCode = data.getKqdm() + data.getBizId().substring(4); xmlStr = xmlStr.replace("{business_code}", bizCode);//业务单号 xmlStr = xmlStr.replace("{ywrq}", GDUtils.formatDate(data.getYwrq(), "yyyy-MM-dd"));//业务日期 xmlStr = xmlStr.replace("{htbm}", GDUtils.formatStr(data.getHth()));//合同编码 xmlStr = xmlStr.replace("{cyr}", GDUtils.formatStr(data.getCyr()));//承运人 xmlStr = xmlStr.replace("{lxdh}", GDUtils.formatStr(data.getLxdh()));//联系电话 xmlStr = xmlStr.replace("{sfzh}", GDUtils.formatStr(data.getSfzh()));//身份证号 xmlStr = xmlStr.replace("{ysgj}", GDUtils.formatStr(data.getYsgj()));//运输工具 xmlStr = xmlStr.replace("{boatNo}", GDUtils.formatStr(data.getCch()));//车船号 xmlStr = xmlStr.replace("{djsj}", GDUtils.formatDate(data.getDjsj(), "yyyy-MM-dd HH:mm:ss"));//登记时间 xmlStr = xmlStr.replace("{djmgryxm}", GDUtils.formatStr(data.getDjmgryxm()));//登记门岗人员姓名 xmlStr = xmlStr.replace("{pzbm}", GDUtils.formatStr(data.getLsdjdm()));//粮食品种编码 xmlStr = xmlStr.replace("{djbm}", GDUtils.formatStr(data.getLsxzdm()));//粮食等级 xmlStr = xmlStr.replace("{lqxzbm}", GDUtils.formatStr(data.getLsxzdm()));//粮食性质编码 xmlStr = xmlStr.replace("{shnd}", GDUtils.formatStr(data.getShnd()));//收获年度 xmlStr = xmlStr.replace("{cddm}", GDUtils.formatStr(data.getCddm()));//产地代码 xmlStr = xmlStr.replace("{net_weight}", GDUtils.formatNum(data.getPz()));//皮重 xmlStr = xmlStr.replace("{pzjby}", GDUtils.formatStr(data.getPzjby()));//皮重监磅员 xmlStr = xmlStr.replace("{pzjlsj}", GDUtils.formatDate(data.getPzjlsj(), "yyyy-MM-dd HH:mm:ss"));//皮重计量时间 xmlStr = xmlStr.replace("{pzjly}", GDUtils.formatStr(data.getPzjly()));//皮重计量员 xmlStr = xmlStr.replace("{gross_weight}", GDUtils.formatNum(data.getMz()));//毛重 xmlStr = xmlStr.replace("{mzjby}", GDUtils.formatStr(data.getMzjby()));//毛重监磅员 xmlStr = xmlStr.replace("{mzjlsj}", GDUtils.formatDate(data.getMzjlsj(), "yyyy-MM-dd HH:mm:ss"));//毛重计量时间 xmlStr = xmlStr.replace("{mzjly}", GDUtils.formatStr(data.getMzjly()));//毛重计量员 xmlStr = xmlStr.replace("{mzjby}", GDUtils.formatStr(data.getMzjby()));//毛重监磅员 xmlStr = xmlStr.replace("{bzw}", GDUtils.formatStr(data.getBzw()));//包装物 xmlStr = xmlStr.replace("{bzbdbz}", GDUtils.formatNum(data.getBzbdbz()));//标准包单包重 xmlStr = xmlStr.replace("{bzbjs}", GDUtils.formatNum(data.getBzbjs()));//标准包件数 xmlStr = xmlStr.replace("{tare}", GDUtils.formatNum(data.getJz()));//净重 xmlStr = xmlStr.replace("{kzl}", GDUtils.formatNum(data.getKzl()));//扣(增)量 xmlStr = xmlStr.replace("{cmsj}", GDUtils.formatDate(data.getCmsj(), "yyyy-MM-dd HH:mm:ss"));//出门时间 xmlStr = xmlStr.replace("{cmqrmgryxm}", GDUtils.formatStr(data.getCmqrmgryxm()));//出门确认门岗人员姓名 xmlStr = xmlStr.replace("{ckjsdbm}", GDUtils.formatStr(data.getCkjsdh()));//出库结算单编码 xmlStr = xmlStr.replace("{depot_code}", GDUtils.formatStr(data.getKqdm()));//库点代码 xmlStr = xmlStr.replace("{storehouse_name}", GDUtils.formatStr(api1103.getCfmc()));//仓房名称 xmlStr = xmlStr.replace("{balance_weight}", GDUtils.formatNum(data.getJz()));//结算重量 xmlStr = xmlStr.replace("{outTime}", GDUtils.formatDate(data.getDjsj(), "yyyy-MM-dd HH:mm:ss"));//入场时间 xmlStr = xmlStr.replace("{compartment_name}", GDUtils.formatStr(api1103.getCfmc()));//廒间名称 xmlStr = xmlStr.replace("{pic_id}", "");//截图附件ID 可空 TODO 暂时配置为空 xmlStr = xmlStr.replace("{video_id}", "");//短视频附件ID 可空 TODO 暂时配置为空 xmlStr = xmlStr.replace("{czbz}", GDUtils.formatStr(data.getCzbz()));//操作标志 xmlStr = xmlStr.replace("{zhgxsj}", GDUtils.formatDate(data.getZhgxsj(), "yyyy-MM-dd HH:mm:ss"));//最后更新时间 return xmlStr; } }