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;
|
}
|
}
|