ZarApiService.java 4.7 KB
package com.huaheng.api.sap.service;

import com.huaheng.api.sap.domain.ZarDomain;

import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.framework.web.domain.AjaxResult;

import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService;
import com.huaheng.pc.sap.domain.Zarsh;
import com.huaheng.pc.sap.domain.Zarsi;
import com.huaheng.pc.sap.service.BackSapStatusService;
import com.huaheng.pc.sap.service.ZarshService;
import com.huaheng.pc.sap.service.ZarsiService;
import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService;
import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;


@Component
@Transactional
public class ZarApiService {
    @Resource
    private ZarshService zarshService;
    @Resource
    private ZarsiService zarsiService;
    @Resource
    private BackSapStatusService backSapStatusService;
    @Resource
    private ReceiptHeaderService receiptHeaderService;
    @Resource
    private ShipmentHeaderService shipmentHeaderService;
    @Resource
    private TaskHeaderService taskHeaderService;
    @Resource
    private TaskDetailService taskDetailService;


    /**
     *
     * @param zarDomain 入库出库单
     */
    public AjaxResult saveSapData(ZarDomain zarDomain) {
        if(StringUtils.isNull(zarDomain)){
            throw new ServiceException("参数为空");
        }
        List<Zarsi> zarsiList = zarDomain.getZarsiList();
        Zarsh zarsh=zarDomain.getZarsh();
        if(zarsiList==null||zarsiList.size()==0){
            throw new ServiceException("zarsiList参数为空");
        }
        if(zarsh==null){
            throw new ServiceException("zarsh参数为空");
        }
        if(StringUtils.isEmpty(zarsh.getUniqueId())){
            throw new ServiceException("唯一号uniqueId参数为空");
        }
        Zarsh zarsh1=zarshService.checkZarshByUniqueId(zarsh.getUniqueId());
        if(StringUtils.isNotEmpty(zarsh.getCFlag())&&zarsh.getCFlag().equals("D")){
            //取消
            return cancelTaskBySap(zarsh);
        }
        if(zarsh1!=null){
            throw new ServiceException("单据已存在,请不要重复下发");
        }
        if(!zarshService.save(zarsh)){
            throw new ServiceException("保存主表数据失败");
        }
        if(!zarsiService.saveBatch(zarsiList)){
            throw new ServiceException("保存子表数据失败");
        }
        AjaxResult ajaxResult= zarshService.saveSapDataByApi(zarDomain);
        if(ajaxResult==null||ajaxResult.hasErr()){
            String msg=ajaxResult.getMsg();
            //调用sap的api,传递任务状态
            backSapStatusService.saveBackSapStatus(zarsh.getUniqueId(), zarsh.getLgnum(), null, 1, "C", null,msg);
        }
        return ajaxResult;
    }

    /**
     * 上游系统取消任务,入库已组盘不能取消;出库已下发任务不能取消
     * @param zarsh
     */
    public AjaxResult cancelTaskBySap(Zarsh zarsh){
        Integer mflag=zarsh.getMFlag();
        String uniqueId=zarsh.getUniqueId();
        Zarsh zarsh1=zarshService.checkZarshByUniqueId(zarsh.getUniqueId());
        if(zarsh1!=null){
            throw new ServiceException("找不到该任务,"+uniqueId);
        }
        switch (mflag){
            case 2:
            case 8:
                ReceiptHeader receiptHeader=receiptHeaderService.getReceiptByReferCode(uniqueId);
                if(receiptHeader==null){
                    throw new ServiceException("找不到该任务,"+uniqueId);
                }
                if(receiptHeader.getFirstStatus()> QuantityConstant.RECEIPT_HEADER_RECEIVING){
                    throw new ServiceException("任务已经在执行,不能取消");
                }
                break;
            case 1:
            case 3:
                /*TaskHeader taskHeader=taskDetailService.getRollNumberByTaskId(uniqueId);
                if(taskHeader==null){
                    throw new ServiceException("找不到该单据,"+uniqueId);
                }*/

                break;
            default:
                break;

        }
        //更新zarsh表
        zarsh1.setCFlag("D");
        zarshService.updateById(zarsh1);
        return AjaxResult.success();
    }

}