YYC
2023-10-30 73fc635888a5ab20ed1e85ac4e2f8bf6879c4fd9
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
136
137
138
139
140
141
142
143
144
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;
    }
}