BackSapStatusService.java 4.17 KB
package com.huaheng.pc.sap.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.huaheng.api.sap.service.ZarApiService;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.pc.config.station.domain.Station;
import com.huaheng.pc.config.station.service.StationService;
import com.huaheng.pc.config.zone.domain.Zone;
import com.huaheng.pc.config.zone.service.ZoneService;
import com.huaheng.pc.sap.domain.BackSapStatus;
import com.huaheng.pc.sap.domain.Zarsh;
import com.huaheng.pc.sap.mapper.BackSapStatusMapper;
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;

/**
 * Created by Cotter on 2023/2/1.
 *
 * @author zhouhong
 */
@Service
public class BackSapStatusService extends ServiceImpl<BackSapStatusMapper, BackSapStatus> {

    @Resource
    private ZarApiService zarApiService;
    @Resource
    private TaskHeaderService taskHeaderService;
    @Resource
    private StationService stationService;
    @Resource
    private ZoneService zoneService;
    @Resource
    private ZarshService zarshService;

    /**
     * @param uniqueIds
     * @param lgnum
     * @param locationCode
     * @param mFlag        1入库 2出库
     * @param cFlag        命令状态:1:正在执行 2执行成功 C异常 -1使用者取消
     * @param taskId
     * @return
     */
    public boolean saveBackSapStatus(String uniqueIds, String lgnum, String locationCode, Integer mFlag, String cFlag, Integer taskId, String msg) {
        boolean flag = false;
        if (StringUtils.isEmpty(uniqueIds)) {
            return true;
        }
        Zarsh zarsh = zarshService.getZarshByUnique(uniqueIds);
        if (zarsh == null) {
            return true;
        }
        LambdaQueryWrapper<BackSapStatus> queryWrapper = Wrappers.lambdaQuery();
        queryWrapper.eq(BackSapStatus::getUniqueIds, uniqueIds).eq(BackSapStatus::getLgnum, lgnum)
                .eq(StringUtils.isNotEmpty(locationCode), BackSapStatus::getLocation, locationCode).eq(BackSapStatus::getMFlag, mFlag)
//                .eq(BackSapStatus::getCFlag, cFlag)
                .eq(StringUtils.isNotNull(taskId), BackSapStatus::getTaskId, taskId);
        queryWrapper.last("limit 1");
        BackSapStatus backSapStatus1 = this.getOne(queryWrapper);
        //解决SAP 移库回传问题.
        if (StringUtils.isNotNull(taskId)) {
            TaskHeader taskHeader = taskHeaderService.getById(taskId);
            if (taskHeader.getTaskType() == QuantityConstant.TASK_STATUS_COMPLETED) {
                Station station = stationService.getStaionByCode(taskHeader.getPort());
                Station staionByCode = stationService.getStaionByCode(station.getByPassPort());
                if (staionByCode != null) {
                    Integer area = staionByCode.getArea();
                    Zone zone = zoneService.getZoneByArea(area.toString());
                    lgnum = zone.getCode();
                }
            }
        }
        if (backSapStatus1 == null) {
            BackSapStatus backSapStatus = new BackSapStatus();
            backSapStatus.setStatus(1);
            backSapStatus.setCFlag(cFlag);
            backSapStatus.setLocation(locationCode);
            backSapStatus.setMFlag(mFlag);
            backSapStatus.setTaskId(taskId);
            backSapStatus.setLgnum(lgnum);
            backSapStatus.setUniqueIds(uniqueIds);
            backSapStatus.setMsg(msg);
            flag = this.save(backSapStatus);
        } else {
            backSapStatus1.setCFlag(cFlag);
            backSapStatus1.setStatus(1);
            flag = this.updateById(backSapStatus1);
        }
        if (cFlag.equals("D")) {
        }
        // 判断 分拣叠盘
        if (backSapStatus1 != null && StringUtils.isNotNull(taskId) && mFlag == 2) {
            backSapStatus1.setLocation(locationCode);
            flag = this.updateById(backSapStatus1);
        }
        return flag;
    }
}