| 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 = "<?xml version=\"1.0\" encoding=\"utf8\"?><root><row id=\"storeroom_outstore_detail\"><depot_code desc=\"库点代码\" type=\"varchar\" length=\"50\" requir=\"必填\">{depot_code}</depot_code><storehouse_name desc=\"仓房名称\" type=\"varchar\" length=\"50\" requir=\"必填\">{storehouse_name}</storehouse_name><business_code desc=\"业务单号\" type=\"varchar\" length=\"30\" requir=\"必填\">{business_code}</business_code><boatNo desc=\"车船号\" type=\"varchar\" length=\"30\" requir=\"必填\">{boatNo}</boatNo><gross_weight desc=\"毛重\" type=\"decimal\" length=\"12\" requir=\"必填\">{gross_weight}</gross_weight><net_weight desc=\"皮重\" type=\"decimal\" length=\"12\" requir=\"必填\">{net_weight}</net_weight><tare desc=\"净重\" type=\"decimal\" length=\"12\" requir=\"必填\">{tare}</tare><balance_weight desc=\"结算重量\" type=\"decimal\" length=\"12\" requir=\"必填\">{balance_weight}</balance_weight><joinTime desc=\"入场时间\" type=\"datetime\" length=\"12\" requir=\"必填\">{joinTime}</joinTime><outTime desc=\"出场时间\" type=\"datetime\" length=\"12\" requir=\"必填\">{outTime}</outTime><batch desc=\"批次号\" type=\"varchar\" length=\"30\" requir=\"可选\">{batch}</batch><positionNo desc=\"货位编码\" type=\"varchar\" length=\"30\" requir=\"可选\">{positionNo}</positionNo><buckle_weight desc=\"现场扣量\" type=\"decimal\" length=\"12\" requir=\"可选\">{buckle_weight}</buckle_weight><put_weight desc=\"现场增量\" type=\"decimal\" length=\"12\" requir=\"可选\">{put_weight}</put_weight><compartment_name desc=\"廒间名称\" type=\"varchar\" length=\"30\" requir=\"可选\">{compartment_name}</compartment_name><pic_id desc=\"截图附件ID\" type=\"varchar\" length=\"500\" requir=\"可选\">{pic_id}</pic_id><video_id desc=\"短视频附件ID\" type=\"varchar\" length=\"500\" requir=\"可选\">{video_id}</video_id><djmgryxm desc=\"登记门岗人员姓名\" type=\"varchar\" length=\"32\" requir=\"可选\">{djmgryxm}</djmgryxm><qydbh desc=\"扦样单编号\" type=\"varchar\" length=\"64\" requir=\"可选\">{qydbh}</qydbh><hwmc desc=\"货位名称\" type=\"varchar\" length=\"64\" requir=\"可选\">{hwmc}</hwmc><jyjg desc=\"检验结果\" type=\"varchar\" length=\"32\" requir=\"可选\">{jyjg}</jyjg><zjkl desc=\"质检扣量\" type=\"decimal\" length=\"12\" requir=\"可选\">{zjkl}</zjkl><qysj desc=\"扦样时间\" type=\"varchar\" length=\"19\" requir=\"可选\">{qysj}</qysj><qyfs desc=\"扦样方式\" type=\"varchar\" length=\"1\" requir=\"可选\">{qyfs}</qyfs><zjsj desc=\"质检时间\" type=\"varchar\" length=\"32\" requir=\"可选\">{zjsj}</zjsj><zjry desc=\"质检人员\" type=\"varchar\" length=\"20\" requir=\"可选\">{zjry}</zjry><mzjby desc=\"毛重监磅员\" type=\"varchar\" length=\"32\" requir=\"可选\">{mzjby}</mzjby><mzjlsj desc=\"毛重计量时间\" type=\"varchar\" length=\"19\" requir=\"可选\">{mzjlsj}</mzjlsj><mzjly desc=\"毛重计量员\" type=\"varchar\" length=\"32\" requir=\"可选\">{mzjly}</mzjly><bgyklfs desc=\"保管员扣量方式\" type=\"varchar\" length=\"1\" requir=\"可选\">{bgyklfs}</bgyklfs><bgykl desc=\"保管员扣量\" type=\"decimal\" length=\"22\" requir=\"可选\">{bgykl}</bgykl><bgyxm desc=\"保管员姓名\" type=\"varchar\" length=\"32\" requir=\"可选\">{bgyxm}</bgyxm><qrsj desc=\"确认时间\" type=\"varchar\" length=\"32\" requir=\"可选\">{qrsj}</qrsj><sbwz desc=\"上磅位置\" type=\"varchar\" length=\"1\" requir=\"可选\">{sbwz}</sbwz><pzjby desc=\"皮重监磅员\" type=\"varchar\" length=\"32\" requir=\"可选\">{pzjby}</pzjby><pzjlsj desc=\"皮重计量时间\" type=\"varchar\" length=\"19\" requir=\"可选\">{pzjlsj}</pzjlsj><pzjly desc=\"皮重计量员\" type=\"varchar\" length=\"32\" requir=\"可选\">{pzjly}</pzjly><jsjg desc=\"结算价格\" type=\"decimal\" length=\"22\" requir=\"可选\">{jsjg}</jsjg><jsje desc=\"结算金额\" type=\"decimal\" length=\"22\" requir=\"可选\">{jsje}</jsje><jssj desc=\"结算时间\" type=\"varchar\" length=\"19\" requir=\"可选\">{jssj}</jssj><jsrxm desc=\"结算人姓名\" type=\"varchar\" length=\"32\" requir=\"可选\">{jsrxm}</jsrxm><fphm desc=\"发票号码\" type=\"varchar\" length=\"10\" requir=\"可选\">{fphm}</fphm><fpzt desc=\"发票状态\" type=\"varchar\" length=\"1\" requir=\"可选\">{fpzt}</fpzt><kdsh desc=\"库点税号\" type=\"varchar\" length=\"18\" requir=\"可选\">{kdsh}</kdsh><fpdm desc=\"发票代码\" type=\"varchar\" length=\"12\" requir=\"可选\">{fpdm}</fpdm><yhhbdm desc=\"银行行别代码\" type=\"varchar\" length=\"3\" requir=\"可选\">{yhhbdm}</yhhbdm><khhh desc=\"开户行号\" type=\"varchar\" length=\"32\" requir=\"可选\">{khhh}</khhh><khhmc desc=\"开户行名称\" type=\"varchar\" length=\"64\" requir=\"可选\">{khhmc}</khhmc><yhkh desc=\"银行卡号\" type=\"varchar\" length=\"32\" requir=\"可选\">{yhkh}</yhkh><cmqrmgryxm desc=\"出门确认门岗人员姓名\" type=\"varchar\" length=\"32\" requir=\"可选\">{cmqrmgryxm}</cmqrmgryxm></row></root>"; | 
|   | 
|   | 
|     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; | 
|     } | 
| } |