FFMInfoHandle.java 5.5 KB
package com.tianbo.analysis.task;

import com.netflix.discovery.converters.Auto;
import com.tianbo.analysis.dao.FWBINFOMapper;
import com.tianbo.analysis.dao.ORIGINMANIFESTMASTERMapper;
import com.tianbo.analysis.dao.OriginmanifestsecondaryMapper;
import com.tianbo.analysis.model.FFMInfo;
import com.tianbo.analysis.model.FWBINFO;
import com.tianbo.analysis.model.ORIGINMANIFESTMASTER;
import com.tianbo.analysis.model.Originmanifestsecondary;
import com.tianbo.analysis.service.FFMInfoService;
import com.tianbo.analysis.service.FWBInfoService;
import com.tianbo.analysis.service.ManifestMasterService;
import com.tianbo.analysis.service.ManifestSecondService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.List;

/**
 * ffm临时业务表处理入业务库
 *
 */
@Component
public class FFMInfoHandle {

    @Autowired
    FFMInfoService ffmInfoService;

    @Autowired
    ORIGINMANIFESTMASTERMapper originmanifestmasterMapper;

    @Autowired
    ManifestMasterService manifestMasterService;


    @Autowired
    FWBInfoService fwbInfoService;

    @Autowired
    OriginmanifestsecondaryMapper originmanifestsecondaryMapper;

    @Autowired
    ManifestSecondService secondService;

    public boolean dealFFMInfo(){
        boolean result =false;
        try {
            //1.处理板箱非空的数据
            List<FFMInfo> ffmInfoList = ffmInfoService.getDistinctFlightWithPallet(false);
            if (ffmInfoList!=null && !ffmInfoList.isEmpty()){
                for (FFMInfo item_f:ffmInfoList) {
                    //针对补发报文处理,补发的报文: FFM_INFOB表数据,存储的报文批次01对应标识是LAST
                    List<FFMInfo> ffmlist_reportorder_1 = ffmInfoService.getFFMLastReportOrderByPallet(item_f,false);

                    /**
                     * 判断列表是否为空
                     * 不为空则说明 FFM只有一份,第一份报文包含LAST标识
                     */
                    if (ffmlist_reportorder_1 !=null && !ffmlist_reportorder_1.isEmpty()){
                        for (FFMInfo item:ffmlist_reportorder_1) {

                            //1.1 查看舱单运单业务表是否已存在运单数据,不存在则插入业务表,存在则更新临时表的数据为已处理
                            int Flag = 0;

                            Flag = manifestMasterService.insertManifestWithMaster(item);

                            if (Flag>0){
                                result = true;
                                //业务数据入库成功后,更新舱单待处理表的数据状态为 1,根据航班号+航班日期+主单号
                                ffmInfoService.setDealstatusSuccess(item);

                                //舱单报文入库后, 更新FWB信息,将FWB临时表的信息更新到 舱单业务表
                                fwbInfoService.updateFwbToManifest(item.getWaybillnomaster());

                                //分单挂主单
                                int i = secondService.setManifestMaster(item);

                            }
                        }
                    }
                    /**
                     *FFM文件多份处理
                     */
                    else
                    {
                        //首先确定带有LAST的ffm的最批次大序号
                        //根据航班号+航班日期 判断LAST报对应的报文批次
                        List<FFMInfo> _last = ffmInfoService.getLastReportOrder(item_f,false);
                        List<FFMInfo> _last_count = ffmInfoService.getLastCountByPallet(item_f,false);
                        if (_last != null && _last.size() > 0 && _last_count != null && _last_count.size() > 0){
                            int mm = Integer.parseInt(_last.get(0).getReportorder());
                            int nn = Integer.parseInt(_last_count.get(0).getReportorder());
                            if (mm > 0 && nn > 0 && mm == nn){
                                // 业务数据 开始入库

                                List<FFMInfo> ffmlist = ffmInfoService.getFFMinfoByPallet(item_f,false);
                                if (ffmlist != null && ffmlist.size() > 0){

                                    for (FFMInfo item:ffmlist) {
                                        int Flag = 0;
                                        Flag = manifestMasterService.insertManifestWithMaster(item);

                                        if (Flag>0){
                                            result = true;

                                            //业务数据入库成功后,更新舱单待处理表的数据状态为 1,根据航班号+航班日期+主单号
                                            ffmInfoService.setDealstatusSuccess(item);

                                            //舱单报文入库后, 更新FWB信息,将FWB临时表的信息更新到 舱单业务表
                                            fwbInfoService.updateFwbToManifest(item.getWaybillnomaster());

                                            //分单挂主单
                                            int i = secondService.setManifestMaster(item);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return true;
    }
}