作者 shenhailong

修改所有出港生成报文报文头部信息 添加工厂模式

... ... @@ -132,8 +132,9 @@ custom:
send-path: ./send/
#海关备案编码
custom-code: 460470678920X
#企业备案编码
#舱单传输人名称
org-code: 9141010070678920XJ
tcs:
#企业备案编码
mq-number: DXPENT0000460002
... ...
... ... @@ -59,7 +59,6 @@ public class MT1201Controller {
@PutMapping("/removeMt1201")
@ResponseBody
public Map<String, Object> removeMt1201(@RequestBody Map<String, Object> map){
try {
return mt1201Service.removeMt1201(map);
... ...
package com.sunyo.wlpt.message.builder.factory;
import com.sunyo.wlpt.message.builder.util.CustomXmlMaker;
import com.tianbo.util.Date.DateUtil;
import java.util.HashMap;
import java.util.Map;
/**
* shenhailong
* 2020/4/22/18:25
*/
public class CustomsXmlAnalysisHeader implements CustomsXmlHeader {
/**
* 生成所有报文头部信息
* @param customCode 关区代码
* @param orgsn 海关备案编码
* @param waylbillNo 主单号
* @param orgCode 舱单传输人名称
* @param tcssn 企业备案编码
* @return
*/
@Override
public Map<String, Object> makeHeader(String customCode, String orgsn, String waylbillNo, String orgCode, String tcssn, String mtType) {
Map<String, Object> map = new HashMap<>();
CustomXmlMaker customXmlMaker = new CustomXmlMaker();
// 报文头部信息 messageId
String messageId = customXmlMaker.makeMsgID(mtType, orgsn, waylbillNo);
// 报文头部信息
String senderID = customXmlMaker.makeSenderID(customCode, orgsn, tcssn);
// 报文头部信息 customCode就是ReceiverID
// 报文头部信息 sendTime
String sendTime = DateUtil.getCurrentTime17();
map.put("messageID", messageId);
map.put("senderID", senderID);
map.put("receiverID", customCode);
map.put("sendTime", sendTime);
return map;
}
}
... ...
package com.sunyo.wlpt.message.builder.factory;
/**
* shenhailong
* 2020/4/23/09:37
*/
public class CustomsXmlFactory {
public CustomsXmlHeader getCustomsXmlHeader(String customsXmlHeaderType){
if (customsXmlHeaderType == null && "".equals(customsXmlHeaderType)){
return null;
}
if ("MESSAGE".equalsIgnoreCase(customsXmlHeaderType)){
return new CustomsXmlAnalysisHeader();
}
return null;
}
}
... ...
package com.sunyo.wlpt.message.builder.factory;
import java.util.Map;
public interface CustomsXmlHeader {
Map<String, Object> makeHeader(String customCode, String orgsn, String waylbillNo, String orgCode, String tcssn, String mtType);
}
... ...
... ... @@ -89,6 +89,7 @@ public class MT1201ServiceImp extends CustomXmlMaker implements MT1201Service{
public Map<String, Object> mt1201(Map<String, Object> map) throws IOException, ParseException {
ObjectMapper objectMapper = new ObjectMapper();
// 预配
NMMS_CUSTOM_MT1201 customMt1201 = objectMapper.convertValue(map.get("mt1201"), NMMS_CUSTOM_MT1201.class);
... ... @@ -110,11 +111,9 @@ public class MT1201ServiceImp extends CustomXmlMaker implements MT1201Service{
// 封装实体
map.put("mt", customMt1201);
map.put("awbAwbinfo", awbAwbinfo);
// 处理主单号-
String awba = ReturnUtil.awbaReplace(customMt1201.getAwba());
map.put("awba", awba);
// 生成报文头部
String msgId = makeMsgID("MT1201", orgsn, customMt1201.getAwba());
String senderId = makeSenderID(customCode, orgsn, "");
... ...
... ... @@ -6,6 +6,8 @@ import com.sunyo.wlpt.base.model.AWB_AWBINFO;
import com.sunyo.wlpt.base.model.NMMS_CUSTOM_MT2201;
import com.sunyo.wlpt.base.model.NMMS_CUSTOM_MT4201;
import com.sunyo.wlpt.base.model.NMMS_CUSTOM_RESPONSE;
import com.sunyo.wlpt.message.builder.factory.CustomsXmlFactory;
import com.sunyo.wlpt.message.builder.factory.CustomsXmlHeader;
import com.sunyo.wlpt.message.builder.service.MT2201Service;
import com.sunyo.wlpt.message.builder.util.CustomXmlMaker;
import com.sunyo.wlpt.message.builder.util.ReturnUtil;
... ... @@ -79,27 +81,23 @@ public class MT2201ServiceImp extends CustomXmlMaker implements MT2201Service {
public Map<String, Object> removeMt2201(Map<String, Object> map) throws IOException, ParseException {
String customCode = map.get("customCode").toString();
// 生成报文头部
String msgId = makeMsgID("MT2201", orgsn, map.get("awba").toString());
String senderId = makeSenderID(customCode, orgsn, "");
String receiverID = customCode;
map.put("msgId", msgId);
map.put("senderId", senderId);
map.put("receiverID", receiverID);
// 报文头时间 精确到毫秒
map.put("sendTime", DateUtil.getCurrentTime17());
// 生成报文头部信息
CustomsXmlFactory customsXmlFactory = new CustomsXmlFactory();
CustomsXmlHeader message = customsXmlFactory.getCustomsXmlHeader("MESSAGE");
Map<String, Object> mt2201 = message.makeHeader(customCode, orgsn, map.get("awba").toString(), orgCode, "", "MT2201");
map.put("map", mt2201);
// 舱单传输人名称
map.put("orgCode", orgCode);
// 处理主单号-
String awba = ReturnUtil.awbaReplace(map.get("awba").toString());
map.put("awbas", awba);
String flightDate = ReturnUtil.awbaReplace(map.get("flightDate").toString());
map.put("flightDates",flightDate);
Map<String, Object> hashMap = new HashMap<>();
// 生成报文
if (makeXmlToFile("/remove/MT2201.ftlx", msgId+".xml", map, "./send/remove/")>0){
if (makeXmlToFile("/remove/MT2201.ftlx", mt2201.get("messageID").toString()+".xml", map, "./send/remove/")>0){
map.put("functionCode", "3");
map.put("busType","MT2201");
System.out.println();
... ... @@ -126,16 +124,6 @@ public class MT2201ServiceImp extends CustomXmlMaker implements MT2201Service {
AWB_AWBINFO awbAwbinfo = custom_mt2201.getAwbinfo();
// 关区代码
String customCode = custom_mt2201.getCustomcode();
// 报文头时间 精确到毫秒
map.put("sendTime", DateUtil.getCurrentTime17());
// 处理 预付0 PP 到付 1 CC
if(awbAwbinfo.getCollected() != null && awbAwbinfo.getCollected() != ""){
if ("0".equals(awbAwbinfo.getCollected())){
awbAwbinfo.setCollected("PP");
}else {
awbAwbinfo.setCollected("CC");
}
}
// 封装实体
map.put("mt", custom_mt2201);
map.put("awbAwbinfo", awbAwbinfo);
... ... @@ -143,13 +131,12 @@ public class MT2201ServiceImp extends CustomXmlMaker implements MT2201Service {
String awba = ReturnUtil.awbaReplace(custom_mt2201.getAwba());
map.put("awba", awba);
// 生成报文头部
String msgId = makeMsgID("MT2201", orgsn, custom_mt2201.getAwba());
String senderId = makeSenderID(customCode, orgsn, "");
String receiverID = customCode;
map.put("msgId", msgId);
map.put("senderId", senderId);
map.put("receiverID", receiverID);
// 生成报文头部信息
CustomsXmlFactory customsXmlFactory = new CustomsXmlFactory();
CustomsXmlHeader message = customsXmlFactory.getCustomsXmlHeader("MESSAGE");
Map<String, Object> mt2201 = message.makeHeader(customCode, orgsn, custom_mt2201.getAwba(), orgCode, "", "MT2201");
map.put("map", mt2201);
String s = DateUtil.addDateMinut(new Date(), 6);
// 货物装卸时间
map.put("loadingDate",s);
... ... @@ -158,7 +145,7 @@ public class MT2201ServiceImp extends CustomXmlMaker implements MT2201Service {
Map<String, Object> maps = new HashMap<>();
// 生成报文
if (makeXmlToFile(map.get("templatePath").toString(), msgId+".xml", map, map.get("sendPath").toString())>0){
if (makeXmlToFile(map.get("templatePath").toString(), mt2201.get("messageID")+".xml", map, map.get("sendPath").toString())>0){
if (!map.containsKey("reason")){
map.put("functionCode", "9");
map.put("busType","MT2201");
... ...
... ... @@ -3,6 +3,8 @@ package com.sunyo.wlpt.message.builder.service.imp;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.sunyo.wlpt.base.model.NMMS_CUSTOM_MT3201;
import com.sunyo.wlpt.base.model.NMMS_CUSTOM_RESPONSE;
import com.sunyo.wlpt.message.builder.factory.CustomsXmlFactory;
import com.sunyo.wlpt.message.builder.factory.CustomsXmlHeader;
import com.sunyo.wlpt.message.builder.service.MT3201Service;
import com.sunyo.wlpt.message.builder.util.CustomXmlMaker;
import com.sunyo.wlpt.message.builder.util.ReturnUtil;
... ... @@ -26,31 +28,29 @@ public class MT3201ServiceImp extends CustomXmlMaker implements MT3201Service {
@Value("${custom.org-code}")
private String orgCode;
@Value("${tcs.mq-number}")
private String tcss;
@Override
public Map<String, Object> fohcreate(Map<String, Object> map) throws IOException, ParseException {
ObjectMapper objectMapper = new ObjectMapper();
NMMS_CUSTOM_MT3201 customMt3201 = objectMapper.convertValue(map.get("mt3201"), NMMS_CUSTOM_MT3201.class);
// 关区代码
String customCode = customMt3201.getCustomcode();
// 报文头时间 精确到毫秒
map.put("sendTime", DateUtil.getCurrentTime17());
String awba = ReturnUtil.awbaReplace(customMt3201.getAwba());
map.put("awba", awba);
// 封装实体
map.put("mt", customMt3201);
// 生成报文头部
String msgId = makeMsgID("MT3201", orgsn, customMt3201.getAwba());
String senderId = makeSenderID(customCode, orgsn, "");
String receiverID = customCode;
map.put("msgId", msgId);
map.put("senderId", senderId);
map.put("receiverID", receiverID);
// 生成报文头部信息
CustomsXmlFactory customsXmlFactory = new CustomsXmlFactory();
CustomsXmlHeader message = customsXmlFactory.getCustomsXmlHeader("MESSAGE");
Map<String, Object> mt3201 = message.makeHeader(customCode, orgsn, customMt3201.getAwba(), orgCode, tcss, "MT3201");
map.put("map", mt3201);
Map<String, Object> map3201= new HashMap<>();
if (makeXmlToFile("/manifest/MT3201.ftlx", msgId+".xml", map,"./send/add/")>0){
if (makeXmlToFile("/manifest/MT3201.ftlx", mt3201.get("messageID")+".xml", map,"./send/add/")>0){
map.put("functionCode", "9");
map.put("busType","MT3201");
NMMS_CUSTOM_RESPONSE nmmsCustomResponse = ReturnUtil.nmmsCustomResponse(map);
... ... @@ -88,24 +88,21 @@ public class MT3201ServiceImp extends CustomXmlMaker implements MT3201Service {
public Map<String, Object> remove(Map<String, Object> map) throws IOException, ParseException {
// 关区代码
String customCode = map.get("customCode").toString();
// 报文头时间 精确到毫秒
map.put("sendTime", DateUtil.getCurrentTime17());
// 生成报文头部
String msgId = makeMsgID("MT3201", orgsn, map.get("awba").toString());
String senderId = makeSenderID(customCode, orgsn, "");
String receiverID = customCode;
map.put("msgId", msgId);
map.put("senderId", senderId);
map.put("receiverID", receiverID);
String awba = ReturnUtil.awbaReplace(map.get("awba").toString());
map.put("awbas", awba);
String flightDate = ReturnUtil.awbaReplace(map.get("flightDate").toString());
map.put("flightDates",flightDate);
Map<String, Object> map3201 = new HashMap<>();
if (makeXmlToFile("/remove/MT3201.ftlx", msgId+".xml", map,"./send/remove/")>0){
// 生成报文头部信息
CustomsXmlFactory customsXmlFactory = new CustomsXmlFactory();
CustomsXmlHeader message = customsXmlFactory.getCustomsXmlHeader("MESSAGE");
Map<String, Object> mt3201 = message.makeHeader(customCode, orgsn, map.get("awba").toString(), orgCode, tcss, "MT3201");
map.put("map", mt3201);
if (makeXmlToFile("/remove/MT3201.ftlx", mt3201.get("messageID")+".xml", map,"./send/remove/")>0){
map.put("functionCode", "3");
map.put("busType","MT3201");
NMMS_CUSTOM_RESPONSE nmmsCustomResponse = ReturnUtil.nmmsCustomResponse(map);
... ...
... ... @@ -3,6 +3,8 @@ package com.sunyo.wlpt.message.builder.service.imp;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.sunyo.wlpt.base.model.NMMS_CUSTOM_MT4201;
import com.sunyo.wlpt.base.model.NMMS_CUSTOM_RESPONSE;
import com.sunyo.wlpt.message.builder.factory.CustomsXmlFactory;
import com.sunyo.wlpt.message.builder.factory.CustomsXmlHeader;
import com.sunyo.wlpt.message.builder.service.MT4201Service;
import com.sunyo.wlpt.message.builder.util.CustomXmlMaker;
import com.sunyo.wlpt.message.builder.util.ReturnUtil;
... ... @@ -34,23 +36,21 @@ public class MT4201ServiceImp extends CustomXmlMaker implements MT4201Service {
NMMS_CUSTOM_MT4201 customMt4201 = objectMapper.convertValue(map.get("mt4201"), NMMS_CUSTOM_MT4201.class);
// 关区代码
String customCode = customMt4201.getCustomcode();
// 报文头时间 精确到毫秒
map.put("sendTime", DateUtil.getCurrentTime17());
// 封装实体
map.put("mt", customMt4201);
// 处理主单号 -
String awba = ReturnUtil.awbaReplace(customMt4201.getAwba());
map.put("awba", awba);
// 生成报文头部
String msgId = makeMsgID("MT4201", orgsn, customMt4201.getAwba());
String senderId = makeSenderID(customCode, orgsn);
String receiverID = customCode;
map.put("msgId", msgId);
map.put("senderId", senderId);
map.put("receiverID", receiverID);
// 生成报文头部信息
CustomsXmlFactory customsXmlFactory = new CustomsXmlFactory();
CustomsXmlHeader message = customsXmlFactory.getCustomsXmlHeader("MESSAGE");
Map<String, Object> mt4201 = message.makeHeader(customCode, orgsn, customMt4201.getAwba(), "", "", "MT4201");
map.put("map", mt4201);
Map<String, Object> map4201 = new HashMap<>();
if (makeXmlToFile("/manifest/MT4201.ftlx", msgId+".xml", map, "./send/add/")>0){
if (makeXmlToFile("/manifest/MT4201.ftlx", map.get("messageID").toString()+".xml", map, "./send/add/")>0){
map.put("functionCode", "2");
map.put("busType","MT4201");
NMMS_CUSTOM_RESPONSE nmmsCustomResponse = ReturnUtil.nmmsCustomResponse(map);
... ... @@ -88,24 +88,21 @@ public class MT4201ServiceImp extends CustomXmlMaker implements MT4201Service {
public Map<String, Object> remove4201(Map<String, Object> map) throws IOException, ParseException {
// 关区代码
String customCode = map.get("customCode").toString();
// 报文头时间 精确到毫秒
map.put("sendTime", DateUtil.getCurrentTime17());
// 生成报文头部
String msgId = makeMsgID("MT4201", orgsn, map.get("awba").toString());
String senderId = makeSenderID(customCode, orgsn);
String receiverID = customCode;
map.put("msgId", msgId);
map.put("senderId", senderId);
map.put("receiverID", receiverID);
// 生成报文头部信息
CustomsXmlFactory customsXmlFactory = new CustomsXmlFactory();
CustomsXmlHeader message = customsXmlFactory.getCustomsXmlHeader("MESSAGE");
Map<String, Object> mt4201 = message.makeHeader(customCode, orgsn, map.get("awba").toString(), "", "", "MT4201");
map.put("map", mt4201);
// 处理主单号 -
String awba = ReturnUtil.awbaReplace(map.get("awba").toString());
map.put("awbas", awba);
String flightDate = ReturnUtil.awbaReplace(map.get("flightDate").toString());
map.put("flightDates",flightDate);
Map<String, Object> map4201 = new HashMap<>();
if (makeXmlToFile("/remove/MT4201.ftlx", msgId+".xml", map, "./send/remove/")>0){
if (makeXmlToFile("/remove/MT4201.ftlx", mt4201.get("messageID").toString()+".xml", map, "./send/remove/")>0){
map.put("functionCode", "3");
map.put("busType","MT4201");
NMMS_CUSTOM_RESPONSE nmmsCustomResponse = ReturnUtil.nmmsCustomResponse(map);
... ...
... ... @@ -3,6 +3,8 @@ package com.sunyo.wlpt.message.builder.service.imp;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.sunyo.wlpt.base.model.NMMS_CUSTOM_MT520X;
import com.sunyo.wlpt.base.model.NMMS_CUSTOM_RESPONSE;
import com.sunyo.wlpt.message.builder.factory.CustomsXmlFactory;
import com.sunyo.wlpt.message.builder.factory.CustomsXmlHeader;
import com.sunyo.wlpt.message.builder.service.MT520XService;
import com.sunyo.wlpt.message.builder.util.CustomXmlMaker;
import com.sunyo.wlpt.message.builder.util.ReturnUtil;
... ... @@ -40,11 +42,8 @@ public class MT520XServiceImp extends CustomXmlMaker implements MT520XService{
hashMap.put("awba", awba);
// 关区代码
String customCode = customMt520X.getCustomcode();
// 报文头时间 精确到毫秒
hashMap.put("sendTime", DateUtil.getCurrentTime17());
// 封装实体
hashMap.put("mt", customMt520X);
hashMap.put("orgCode", orgCode);
if ("MT5201".equals(customMt520X.getRcfdep())){
// 生成报文头部
... ... @@ -89,17 +88,14 @@ public class MT520XServiceImp extends CustomXmlMaker implements MT520XService{
}
}else {
// 生成报文头部
String msgId = makeMsgID("MT5202", orgsn, customMt520X.getAwba());
String msessageType = "MT5202";
String senderId = makeSenderID(customCode, orgsn, "");
String receiverID = customCode;
hashMap.put("msgId", msgId);
hashMap.put("msessageType", msessageType);
hashMap.put("senderId", senderId);
hashMap.put("receiverID", receiverID);
// 生成报文头部信息
CustomsXmlFactory customsXmlFactory = new CustomsXmlFactory();
CustomsXmlHeader message = customsXmlFactory.getCustomsXmlHeader("MESSAGE");
Map<String, Object> mt520x = message.makeHeader(customCode, orgsn, customMt520X.getAwba(), orgCode, "", "MT5202");
hashMap .put("map", mt520x);
Map<String, Object> maps = new HashMap<>();
if (makeXmlToFile("/manifest/MT5202.ftlx", msgId+".xml", hashMap, "./send/add/")>0){
if (makeXmlToFile("/manifest/MT5202.ftlx", mt520x.get("messageID").toString()+".xml", hashMap, "./send/add/")>0){
hashMap.put("functionCode", "2");
hashMap.put("busType","MT5202");
... ... @@ -173,15 +169,15 @@ public class MT520XServiceImp extends CustomXmlMaker implements MT520XService{
return maps;
}
}else {
// 生成报文头部
String msgId = makeMsgID("MT5202", orgsn, map.get("awba").toString());
String senderId = makeSenderID(customCode, orgsn, "");
String receiverID = customCode;
map.put("msgId", msgId);
map.put("senderId", senderId);
map.put("receiverID", receiverID);
// 生成报文头部信息
CustomsXmlFactory customsXmlFactory = new CustomsXmlFactory();
CustomsXmlHeader message = customsXmlFactory.getCustomsXmlHeader("MESSAGE");
Map<String, Object> mt520x = message.makeHeader(customCode, orgsn, map.get("awba").toString(), orgCode, "", "MT5202");
map.put("map", mt520x);
Map<String, Object> maps = new HashMap<>();
if (makeXmlToFile("/remove/MT5202.ftlx", msgId+".xml", map, "./send/remove/")>0){
if (makeXmlToFile("/remove/MT5202.ftlx", mt520x.get("messageID")+".xml", map, "./send/remove/")>0){
map.put("functionCode", "3");
map.put("busType","MT5202");
... ...
... ... @@ -12,6 +12,8 @@ import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@Component
public class CustomXmlMaker {
... ... @@ -103,11 +105,14 @@ public class CustomXmlMaker {
sb.append(customCode)
.append(ORGSN)
.append("_")
.append(TCSMQNumber);
.append(TCSSN);
return sb.toString();
}
public String makeSenderID(String customCode,String ORGSN){
return makeSenderID(customCode,ORGSN,TCSMQNumber);
}
}
... ...
<?xml version="1.0" encoding="utf-8"?>
<Manifest xmlns="urn:Declaration:datamodel:standard:CN:MT2201:1" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Head>
<MessageID>${msgId}</MessageID>
<MessageID>${map.messageID}</MessageID>
<FunctionCode>5</FunctionCode>
<MessageType>MT2201</MessageType>
<SenderID>${senderId}</SenderID>
<ReceiverID>${receiverID}</ReceiverID>
<SendTime>${sendTime}</SendTime>
<SenderID>${map.senderID}</SenderID>
<ReceiverID>${map.receiverID}</ReceiverID>
<SendTime>${map.sendTime}</SendTime>
<Version>1.0</Version>
</Head>
<Declaration>
... ... @@ -48,7 +48,7 @@
</GoodsConsignedPlace>
<TransportSplitIndicator>${mt.splitcode}</TransportSplitIndicator>
<FreightPayment>
<MethodCode>${awbAwbinfo.collected}</MethodCode>
<MethodCode>${awbAwbinfo.paymodel}</MethodCode>
</FreightPayment>
<ConsignmentPackaging>
<QuantityQuantity>${awbAwbinfo.pcs}</QuantityQuantity>
... ...
<Manifest xmlns="urn:Declaration:datamodel:standard:CN:MT2201:1" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Head>
<MessageID>${msgId}</MessageID>
<MessageID>${map.messageID}</MessageID>
<FunctionCode>9</FunctionCode>
<MessageType>MT2201</MessageType>
<SenderID>${senderId}</SenderID>
<ReceiverID>${receiverID}</ReceiverID>
<SendTime>${sendTime}</SendTime>
<SenderID>${map.senderID}</SenderID>
<ReceiverID>${map.receiverID}</ReceiverID>
<SendTime>${map.sendTime}</SendTime>
<Version>1.0</Version>
</Head>
<Declaration>
... ... @@ -47,7 +47,7 @@
<CustomsStatusCode>${awbAwbinfo.awbtype}</CustomsStatusCode>
<TransportSplitIndicator>${mt.splitcode}</TransportSplitIndicator>
<FreightPayment>
<MethodCode>${awbAwbinfo.collected}</MethodCode>
<MethodCode>${awbAwbinfo.paymodel}</MethodCode>
</FreightPayment>
<ConsignmentPackaging>
<QuantityQuantity>${awbAwbinfo.pcs}</QuantityQuantity>
... ...
<Manifest xmlns="urn:Declaration:datamodel:standard:CN:MT3201:1" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Head>
<MessageID>${msgId}</MessageID>
<MessageID>${map.messageID}</MessageID>
<FunctionCode>2</FunctionCode>
<MessageType>MT3201</MessageType>
<SenderID>${senderId}</SenderID>
<ReceiverID>${receiverID}</ReceiverID>
<SendTime>${sendTime}</SendTime>
<SenderID>${map.senderID}</SenderID>
<ReceiverID>${map.receiverID}</ReceiverID>
<SendTime>${map.sendTime}</SendTime>
<Version>1.0</Version>
</Head>
<Declaration>
... ...
<Manifest xmlns="urn:Declaration:datamodel:standard:CN:MT4201:1" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Head>
<MessageID>${msgId}</MessageID>
<MessageID>${map.messageID}</MessageID>
<FunctionCode>2</FunctionCode>
<MessageType>MT4201</MessageType>
<SenderID>${senderId}</SenderID>
<ReceiverID>${receiverID}</ReceiverID>
<SendTime>${sendTime}</SendTime>
<SenderID>${map.senderID}</SenderID>
<ReceiverID>${map.receiverID}</ReceiverID>
<SendTime>${map.sendTime}</SendTime>
<Version>1.0</Version>
</Head>
<Declaration>
... ...
<Manifest xmlns="urn:Declaration:datamodel:standard:CN:MT5202:1" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Head>
<MessageID>${msgId}</MessageID>
<MessageID>${map.messageID}</MessageID>
<FunctionCode>2</FunctionCode>
<MessageType>MT5202</MessageType>
<SenderID>${senderId}</SenderID>
<ReceiverID>${receiverID}</ReceiverID>
<SendTime>${sendTime}</SendTime>
<SenderID>${map.senderID}</SenderID>
<ReceiverID>${map.receiverID}</ReceiverID>
<SendTime>${map.sendTime}</SendTime>
<Version>1.0</Version>
</Head>
<Declaration>
... ...
<?xml version="1.0" encoding="utf-8"?>
<Manifest xmlns="urn:Declaration:datamodel:standard:CN:MT2201:1" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Head>
<MessageID>${msgId}</MessageID>
<MessageID>${map.messageID}</MessageID>
<FunctionCode>3</FunctionCode>
<MessageType>MT2201</MessageType>
<SenderID>${senderId}</SenderID>
<ReceiverID>${receiverID}</ReceiverID>
<SendTime>${sendTime}</SendTime>
<SenderID>${map.senderID}</SenderID>
<ReceiverID>${map.receiverID}</ReceiverID>
<SendTime>${map.sendTime}</SendTime>
<Version>1.0</Version>
</Head>
<Declaration>
... ...
<Manifest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:Declaration:datamodel:standard:CN:MT3201:1">
<Head>
<MessageID>${msgId}</MessageID>
<MessageID>${map.messageID}</MessageID>
<FunctionCode>3</FunctionCode>
<MessageType>MT3201</MessageType>
<SenderID>${senderId}</SenderID>
<ReceiverID>${receiverID}</ReceiverID>
<SendTime>${sendTime}</SendTime>
<SenderID>${map.senderID}</SenderID>
<ReceiverID>${map.receiverID}</ReceiverID>
<SendTime>${map.sendTime}</SendTime>
<Version>1.0</Version>
</Head>
<Declaration>
... ...
<Manifest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:Declaration:datamodel:standard:CN:MT4201:1">
<Head>
<MessageID>${msgId}</MessageID>
<MessageID>${map.messageID}</MessageID>
<FunctionCode>3</FunctionCode>
<MessageType>MT4201</MessageType>
<SenderID>${senderId}</SenderID>
<ReceiverID>${receiverID}</ReceiverID>
<SendTime>${sendTime}</SendTime>
<SenderID>${map.senderID}</SenderID>
<ReceiverID>${map.receiverID}</ReceiverID>
<SendTime>${map.sendTime}</SendTime>
<Version>1.0</Version>
</Head>
<Declaration>
... ...
<Manifest xmlns="urn:Declaration:datamodel:standard:CN:MT5202:1" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Head>
<MessageID>${msgId}</MessageID>
<MessageID>${map.messageID}</MessageID>
<FunctionCode>3</FunctionCode>
<MessageType>MT5202</MessageType>
<SenderID>${senderId}</SenderID>
<ReceiverID>${receiverID}</ReceiverID>
<SendTime>${sendTime}</SendTime>
<SenderID>${map.senderID}</SenderID>
<ReceiverID>${map.receiverID}</ReceiverID>
<SendTime>${map.sendTime}</SendTime>
<Version>1.0</Version>
</Head>
<Declaration>
... ...