BaseVeCheck.groovy 3.4 KB
package com.sy.groovy

import com.sy.model.GatherInfo
import com.sy.model.LandRoadVe
import com.sy.service.LandRoadVeService
import com.sy.service.impl.GatherInfoHandle
import org.apache.commons.lang3.StringUtils
import org.basis.enhance.groovy.entity.ExecuteParams
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.springframework.context.ApplicationContext

//基本信息验放
class BaseVeCheck extends Script {

    private final Logger logger = LoggerFactory.getLogger(getClass());
    private final String NORECORD =            "车辆未备案或者识别错误,车牌号:";
    private final String VE_RECORD_WEIGHT_ERR =            "车辆备案信息异常";

    private final String BLACKLIST=            "车辆已被拉进黑名单,不允许出区";

    /**x21指令判定
    * 传入gatherInfo,三大属性验证,二维码/车牌/过卡重量
     * 车辆备案实体
     * 从redis读取的申请表体实体
    */
    Boolean check(ExecuteParams executeParams) {
        try{
            GatherInfo gatherInfo = (GatherInfo) executeParams.get("gatherInfo");
            LandRoadVe ve = (LandRoadVe) executeParams.get("LandRoadVe");

            //3.车辆备案验证
            // 调用方法
            ApplicationContext context = getContext();
            // 获取容器中的bean
            GatherInfoHandle gatherInfoHandle = context.getBean(GatherInfoHandle.class);
            //若无备案信息或者黑名单,返回车辆未备案或者识别错误,
            if (ve == null) {
                logger.error(NORECORD+gatherInfo.getVename());
                gatherInfoHandle.sendBw(gatherInfo,false,NORECORD + gatherInfo.getVename(),null,null);
                return false;
            }
            logger.info("[VE-CHECK-SUCCESS]:{}:备案验证通过",gatherInfo.getVename());
            //车辆备案重量
            Double selfWt=Double.parseDouble(ve.getSelfWt());
            if (!(selfWt>0)){
                logger.error(VE_RECORD_WEIGHT_ERR+gatherInfo.getVename());
                gatherInfoHandle.sendBw(gatherInfo,false,gatherInfo.getVename()+VE_RECORD_WEIGHT_ERR,null,null);
                return false;
            }
            logger.info("[VE-CHECK-SUCCESS]:{}备案重量[{}]验证通过",gatherInfo.getVename(),selfWt)

            //车辆黑名单校验
            if (!veBlackListCheck(ve)){
                logger.error(BLACKLIST+gatherInfo.getVename());
                gatherInfoHandle.sendBw(gatherInfo,false,gatherInfo.getVename()+BLACKLIST,null,null);
                return false;
            }
            logger.info("[VE-CHECK-SUCCESS]:{}黑名单验证通过",gatherInfo.getVename());

            //todo:车辆备案信息缓存,在哪里做申请提运单列表缓存?

            logger.info("[VE-CHECK-SUCCESS]:{}车辆信息验证通过",gatherInfo.getVename());
            return true;
        }catch (Exception e){
            e.printStackTrace();
            logger.error("[VE-CHECK-ERROR]:",e);
            return false;
        }
    }

    @Override
    Object run() {
        return null
    }

    // 获取spring容器
    ApplicationContext getContext() {
        // 获取spring IOC容器
        ApplicationContext context = applicationContext;
        return context;
    }

    Boolean veBlackListCheck(LandRoadVe ve){
        //Y 是拉黑了
        if("Y".equals(ve.getVeState())){
            return false;
        }
        return true;
    }


}