package com.fzzy.push.gd2020.v2; import com.fzzy.api.data.AuthToken; import com.fzzy.api.entity.Api1103; import com.fzzy.api.entity.Api1202; 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 InStorageDetailWebService { public static InStorageDetailWebService newInstance() { return new InStorageDetailWebService(); } /** * 入库过磅-数据接口 -xml报文 */ public String xml_webService = "{rkywdh}{business_code}{depot_code}{storehouse_name}{positionNo}{store_date}{mzjlsj}{pzjlsj}{tare}{cmsj}{cmqrmgryxm}{jsdbm}{balance_weight}{joinTime}{outTime}{pzbm}{lqxzbm}{shnd}{cddm}{jjlx}{gross_weight}{cyr}{lxdh}{sfzh}{xxdz}{ysgj}{boatNo}{djsj}{zjkl}{net_weight}{czbz}{zhgxsj}{pzjby}{bzwkl}{qtkl}{klyy}{ksz}{kzs}{buckle_weight}{djmgryxm}{mzjby}{batch}{pic_id}{video_id}{bz}{pzjly}{bzw}{bzbdbz}{bzbjs}{mzjly}{zcy}{jhbh}{htbm}"; /** * @Desc: 入库过磅-数据接口 */ public InvokeResult webService(AuthToken authToken, ApiConfs conf, Api1202 data, Api1103 api1103) { InvokeResult invokeResult = new InvokeResult(); ClassLoader cl = Thread.currentThread().getContextClassLoader(); String url = conf.getApiUrl() + "/inStorageDetailWebService?wsdl"; // 填写调用入库过磅数据接口服务 String method = "saveInStorageDetailRecord"; // 填写入库过磅方法名 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(Api1202 data, Api1103 api1103) { String xmlStr = xml_webService; xmlStr = xmlStr.replace("{rkywdh}", GDUtils.formatStr(data.getRkywdh()));//过磅业务单号 //入库数据接口的业务单号,格式:库点代码+年月日+三位随机数 String bizCode = data.getKqdm() + data.getBizId().substring(4); xmlStr = xmlStr.replace("{business_code}", bizCode);//业务单号 xmlStr = xmlStr.replace("{depot_code}", GDUtils.formatStr(data.getKqdm()));//库点代码 xmlStr = xmlStr.replace("{storehouse_name}", GDUtils.formatStr(api1103.getCfmc()));//仓房名称 xmlStr = xmlStr.replace("{positionNo}", GDUtils.formatStr(data.getHwdm()));//货位编码 xmlStr = xmlStr.replace("{store_date}", GDUtils.formatDate(data.getYwrq(), "yyyy-MM-dd"));//业务日期 xmlStr = xmlStr.replace("{jhbh}", GDUtils.formatStr(data.getJhmxh()));//计划编号 xmlStr = xmlStr.replace("{htbm}", GDUtils.formatStr(data.getHth()));//合同编码 xmlStr = xmlStr.replace("{cyr}", GDUtils.formatStr(data.getCyr()));//承运人 xmlStr = xmlStr.replace("{sfzh}", GDUtils.formatStr(data.getSfzh()));//身份证号 xmlStr = xmlStr.replace("{xxdz}", GDUtils.formatStr(data.getXxdz()));//联系地址 xmlStr = xmlStr.replace("{ysgj}", GDUtils.formatStr(data.getYsgj()));//运输工具 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.getLspzdm()));//粮食品种编码 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("{jjlx}", GDUtils.formatStr(data.getJjlx()));//检斤类型 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("{zcy}", GDUtils.formatStr(data.getZcy()));//值仓员 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("{bzw}", GDUtils.formatStr(data.getBzw()));//包装物 xmlStr = xmlStr.replace("{bzbdbz}", GDUtils.formatNum(data.getBzbdbz()));//标准包单包重 xmlStr = xmlStr.replace("{bzbjs}", GDUtils.formatNum(data.getBzbjs()));//标准包件数 xmlStr = xmlStr.replace("{zjkl}", GDUtils.formatNum(data.getZjklxj()));//质检扣量 xmlStr = xmlStr.replace("{bzwkl}", GDUtils.formatNum(data.getBzwkl()));//包装物扣量 xmlStr = xmlStr.replace("{qtkl}", GDUtils.formatNum(data.getQtkl()));//其他扣量 xmlStr = xmlStr.replace("{klyy}", GDUtils.formatStr(data.getKlyy()));//扣量原因 xmlStr = xmlStr.replace("{ksz}", "");//扣水杂 可以空 xmlStr = xmlStr.replace("{buckle_weight}", GDUtils.formatNum(data.getXckl()));//现场扣量 xmlStr = xmlStr.replace("{tare}", GDUtils.formatNum(data.getJz()));//净重 xmlStr = xmlStr.replace("{jsdbm}", GDUtils.formatStr(data.getRkjsdh()));//入库结算单编码 xmlStr = xmlStr.replace("{balance_weight}", GDUtils.formatNum(data.getJz()));//结算重量 xmlStr = xmlStr.replace("{joinTime}", GDUtils.formatDate(data.getDjsj(), "yyyy-MM-dd HH:mm:ss"));//入场时间 xmlStr = xmlStr.replace("{cmsj}", GDUtils.formatDate(data.getCmsj(), "yyyy-MM-dd HH:mm:ss"));//出门时间 xmlStr = xmlStr.replace("{outTime}", GDUtils.formatDate(data.getCmsj(), "yyyy-MM-dd HH:mm:ss"));//出场时间 xmlStr = xmlStr.replace("{batch}", "");//批次号 可空 xmlStr = xmlStr.replace("{pic_id}", "");//截图附件ID 可空 TODO 暂时配置为空 xmlStr = xmlStr.replace("{video_id}", "");//短视频附件ID 可空 TODO 暂时配置为空 xmlStr = xmlStr.replace("{bz}", GDUtils.formatStr(data.getBz()));//备注 xmlStr = xmlStr.replace("{cmqrmgryxm}", GDUtils.formatStr(data.getCmqrmgryxm()));//出门确认门岗人员姓名 xmlStr = xmlStr.replace("{klyy}", GDUtils.formatStr(data.getCzbz()));//操作标志 xmlStr = xmlStr.replace("{zhgxsj}", GDUtils.formatDate(data.getZhgxsj(), "yyyy-MM-dd HH:mm:ss"));//最后更新时间 return xmlStr; } }