| 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 = "<?xml version=\"1.0\" encoding=\"utf8\"?><root><row id=\"storeroom_instore_detail\"><rkywdh desc=\"过磅业务单号\" type=\"varchar\" length=\"12\" requir=\"必填\">{rkywdh}</rkywdh><business_code desc=\"业务单号\" type=\"varchar\" length=\"30\" requir=\"必填\">{business_code}</business_code><depot_code desc=\"库点代码\" type=\"varchar\" length=\"30\" requir=\"必填\">{depot_code}</depot_code><storehouse_name desc=\"仓房名称\" type=\"varchar\" length=\"30\" requir=\"必填\">{storehouse_name}</storehouse_name><positionNo desc=\"货位编码\" type=\"varchar\" length=\"30\" requir=\"必填\">{positionNo}</positionNo><store_date desc=\"业务日期\" type=\"varchar\" length=\"10\" requir=\"必填\">{store_date}</store_date><mzjlsj desc=\"毛重计量时间\" type=\"varchar\" length=\"19\" requir=\"必填\">{mzjlsj}</mzjlsj><pzjlsj desc=\"皮重计量时间\" type=\"varchar\" length=\"19\" requir=\"必填\">{pzjlsj}</pzjlsj><tare desc=\"净重\" type=\"decimal\" length=\"20\" requir=\"必填\">{tare}</tare><cmsj desc=\"出门时间\" type=\"varchar\" length=\"19\" requir=\"必填\">{cmsj}</cmsj><cmqrmgryxm desc=\"出门确认门岗人员姓名\" type=\"varchar\" length=\"30\" requir=\"必填\">{cmqrmgryxm}</cmqrmgryxm><jsdbm desc=\"结算单编码\" type=\"varchar\" length=\"30\" requir=\"必填\">{jsdbm}</jsdbm><balance_weight desc=\"结算重量\" type=\"decimal\" length=\"20\" requir=\"必填\">{balance_weight}</balance_weight><joinTime desc=\"入场时间\" type=\"varchar\" length=\"19\" requir=\"必填\">{joinTime}</joinTime><outTime desc=\"出场时间\" type=\"varchar\" length=\"19\" requir=\"必填\">{outTime}</outTime><pzbm desc=\"粮食品种编码\" type=\"varchar\" length=\"30\" requir=\"必填\">{pzbm}</pzbm><lqxzbm desc=\"粮食性质编码\" type=\"varchar\" length=\"30\" requir=\"必填\">{lqxzbm}</lqxzbm><shnd desc=\"收获年度\" type=\"varchar\" length=\"4\" requir=\"必填\">{shnd}</shnd><cddm desc=\"产地代码\" type=\"varchar\" length=\"6\" requir=\"必填\">{cddm}</cddm><jjlx desc=\"检斤类型\" type=\"varchar\" length=\"1\" requir=\"必填\">{jjlx}</jjlx><gross_weight desc=\"毛重\" type=\"decimal\" length=\"9\" requir=\"必填\">{gross_weight}</gross_weight><cyr desc=\"承运人\" type=\"varchar\" length=\"32\" requir=\"必填\">{cyr}</cyr><lxdh desc=\"联系电话\" type=\"varchar\" length=\"32\" requir=\"必填\">{lxdh}</lxdh><sfzh desc=\"身份证号\" type=\"varchar\" length=\"18\" requir=\"必填\">{sfzh}</sfzh><xxdz desc=\"联系地址\" type=\"varchar\" length=\"128\" requir=\"必填\">{xxdz}</xxdz><ysgj desc=\"运输工具\" type=\"varchar\" length=\"1\" requir=\"必填\">{ysgj}</ysgj><boatNo desc=\"车船号\" type=\"varchar\" length=\"30\" requir=\"必填\">{boatNo}</boatNo><djsj desc=\"登记时间\" type=\"varchar\" length=\"19\" requir=\"必填\">{djsj}</djsj><zjkl desc=\"质检扣量\" type=\"decimal\" length=\"20\" requir=\"必填\">{zjkl}</zjkl><net_weight desc=\"皮重\" type=\"decimal\" length=\"9\" requir=\"必填\">{net_weight}</net_weight><czbz desc=\"操作标志\" type=\"varchar\" length=\"1\" requir=\"必填\">{czbz}</czbz><zhgxsj desc=\"最后更新时间\" type=\"varchar\" length=\"19\" requir=\"必填\">{zhgxsj}</zhgxsj><pzjby desc=\"皮重监磅员\" type=\"varchar\" length=\"32\" requir=\"可选\">{pzjby}</pzjby><bzwkl desc=\"包装物扣量\" type=\"decimal\" length=\"20\" requir=\"可选\">{bzwkl}</bzwkl><qtkl desc=\"其他扣量\" type=\"decimal\" length=\"20\" requir=\"可选\">{qtkl}</qtkl><klyy desc=\"扣量原因\" type=\"varchar\" length=\"256\" requir=\"可选\">{klyy}</klyy><ksz desc=\"扣水杂\" type=\"decimal\" length=\"20\" requir=\"可选\">{ksz}</ksz><kzs desc=\"扣整晒\" type=\"decimal\" length=\"20\" requir=\"可选\">{kzs}</kzs><buckle_weight desc=\"现场扣量\" type=\"decimal\" length=\"20\" requir=\"可选\">{buckle_weight}</buckle_weight><djmgryxm desc=\"登记门岗人员姓名\" type=\"varchar\" length=\"30\" requir=\"可选\">{djmgryxm}</djmgryxm><mzjby desc=\"毛重监磅员\" type=\"varchar\" length=\"32\" requir=\"可选\">{mzjby}</mzjby><batch desc=\"批次号\" type=\"varchar\" length=\"32\" requir=\"可选\">{batch}</batch><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><bz desc=\"备注\" type=\"varchar\" length=\"200\" requir=\"可选\">{bz}</bz><pzjly desc=\"皮重计量员\" type=\"varchar\" length=\"32\" requir=\"可选\">{pzjly}</pzjly><bzw desc=\"包装物\" type=\"varchar\" length=\"1\" requir=\"可选\">{bzw}</bzw><bzbdbz desc=\"标准包单包重\" type=\"decimal\" length=\"8\" requir=\"可选\">{bzbdbz}</bzbdbz><bzbjs desc=\"标准包件数\" type=\"int\" length=\"12\" requir=\"可选\">{bzbjs}</bzbjs><mzjly desc=\"毛重计量员\" type=\"varchar\" length=\"32\" requir=\"可选\">{mzjly}</mzjly><zcy desc=\"值仓员\" type=\"varchar\" length=\"32\" requir=\"可选\">{zcy}</zcy><jhbh desc=\"计划编号\" type=\"varchar\" length=\"32\" requir=\"可选\">{jhbh}</jhbh><htbm desc=\"合同编码\" type=\"varchar\" length=\"64\" requir=\"可选\">{htbm}</htbm></row></root>"; | 
|   | 
|   | 
|     /** | 
|      * @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; | 
|     } | 
| } |