IMFSaveHandle.java 3.4 KB
package com.tianbo.warehouse.handle;

import com.tianbo.warehouse.model.T_ETL_MESSAGE;
import com.tianbo.warehouse.service.T_ETL_MESSAGEService;

import com.tianbo.warehouse.util.Date.DateUtil;
import com.tianbo.warehouse.util.IO.FileTool;
import com.tianbo.warehouse.util.XML.XML2ENTITY;
import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.util.Date;
import java.util.Map;

/**
 * 存储IMF过来的原始报文到数据仓库T_ELT_MESSAGE原始报文表中
 */
@Component
public class IMFSaveHandle {

    @Autowired
    protected T_ETL_MESSAGEService messageService;

    private static IMFSaveHandle saveHandle;

    protected static final Logger logger = Logger.getLogger(IMFSaveHandle.class);

    @PostConstruct
    public  void  init(){
        saveHandle = this;
        saveHandle.messageService = this.messageService;
    }

    public void handle(String xmlmessage){
        try {
            //有人发报文头部不按规范发
//            xmlmessage = xmlmessage.replace("<Msg>","<MSG>")
//                    .replace("<msg>","<MSG>")
//                    .replace("</Msg>","</MSG>")
//                    .replace("</msg>","</MSG>");


            Document document = DocumentHelper.parseText(xmlmessage);
            XML2ENTITY xml2ENTITY =new  XML2ENTITY();
            Map xmlMap = xml2ENTITY.Dom2Map(document);

            Map meta = (Map) xmlMap.get("META");

            T_ETL_MESSAGE message = new T_ETL_MESSAGE();

            String sndrm = meta.get("SNDR").toString();
            String stypm = meta.get("STYP").toString();

            if ("TXD".equals(sndrm)){
                if("EDEP".equals(stypm)
                        || "EFOH".equals(stypm)
                        || "ERCF".equals(stypm)
                        || "PFFM".equals(stypm)
                        || "UDEP".equals(stypm)
                        || "UFOH".equals(stypm)
                        || "URCF".equals(stypm)
                        || "FFM".equals(stypm)
                        || "IFWB".equals(stypm)
                        || "IFHL".equals(stypm)){
                    //存储至备份目录
                    FileTool.writeFileToBak(xmlmessage);
                }
            }

            String typem = meta.get("TYPE").toString();
            String rcvr =  XML2ENTITY.getMap(meta,"RCVR").toString();
            String ddtm =  meta.get("DDTM").toString();
            String seqn =  meta.get("SEQN").toString();




            message.setSndr(sndrm);
            message.setRcvr(rcvr);
            message.setType(typem);
            message.setStyp(stypm);
            message.setSeqn(seqn);


            Date ddtmDate = DateUtil.formatByyyyyMMddHHmmss(ddtm);
            message.setDdtm(ddtmDate);
            message.setSntm(ddtmDate);
            message.setOper("ALL");
            message.setAppid("W");
            message.setEtltim(new Date());



            message.setContent(xmlmessage);

            int i = saveHandle.messageService.insertSelective(message);
        }catch (Exception e){
            FileTool.writeFile("err",e.toString()+"\n"+xmlmessage,false);
            logger.warn("*报文入库失败已存储成备份文件*");
            logger.error(e);
            logger.warn(e);
        }



    }
}