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