StationBlocker.java 2.48 KB
package com.huaheng.pc.sap.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.pc.config.station.service.StationService;
import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/***
 * @author tongzonghao
 *
 */
@Service
public class StationBlocker implements IStationBlocker {

    @Resource
    private TaskHeaderService taskHeaderService;

    @Override
    public boolean isBlock(String stationCode, String passport) {
        Integer internalTaskType = null;
        switch (passport){
            case "IN":
                internalTaskType = QuantityConstant.TASK_INTENERTYPE_SHIPMENT;
                switch (stationCode){
                    case "P6031":
                        stationCode = "P6032";
                        break;
                    case "P6034":
                        stationCode = "P6035";
                        break;
                    case "P6037":
                        stationCode = "P6038";
                        break;
                    default:
                }
                break;
            case "OUT":
                internalTaskType = QuantityConstant.TASK_INTENERTYPE_RECEIPT;
                switch (stationCode){
                    case "P6032":
                        stationCode = "P6031";
                        break;
                    case "P6035":
                        stationCode = "P6034";
                        break;
                    case "P6038":
                        stationCode = "P6037";
                        break;
                    default:
                }
                break;
            default:
        }
        LambdaQueryWrapper<TaskHeader> taskQueryWrapper = Wrappers.lambdaQuery();
        taskQueryWrapper.eq(TaskHeader::getInternalTaskType, internalTaskType)
                .eq(TaskHeader::getPort, stationCode)
                .lt(TaskHeader::getStatus,QuantityConstant.TASK_STATUS_COMPLETED);
        IPage page = taskHeaderService.page(new Page(1, 1, false), taskQueryWrapper);
        return page.getRecords().size() > 0;
    }
}