czt
2024-11-26 e35480aba8cda53d68486ce45b49b0268a901614
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
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;
    }
}