RequestContainerNumberService.java 3.44 KB
package com.huaheng.api.wcs.service;

import java.math.BigDecimal;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
import com.huaheng.pc.task.taskDetail.domain.TaskDetail;
import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;

@Service
public class RequestContainerNumberService {

    @Resource
    private TaskHeaderService taskHeaderService;
    @Resource
    private TaskDetailService taskDetailService;
    @Resource
    private InventoryDetailService inventoryDetailService;

    // 请求一个位置
    @Transactional
    public AjaxResult requestContainerNumberByWcs(String containerCode) {
        AjaxResult ajaxResult = new AjaxResult();
        if (StringUtils.isEmpty(containerCode)) {
            return AjaxResult.error("容器为空");
        }
        LambdaQueryWrapper<TaskHeader> lambdaQueryWrapper = Wrappers.lambdaQuery();
        lambdaQueryWrapper.eq(TaskHeader::getContainerCode, containerCode);
        lambdaQueryWrapper.eq(TaskHeader::getZoneCode, "B");
        lambdaQueryWrapper.in(TaskHeader::getInternalTaskType, QuantityConstant.TASK_INTENERTYPE_SHIPMENT);
        lambdaQueryWrapper.lt(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_COMPLETED);
        lambdaQueryWrapper.last("limit 1");
        TaskHeader taskHeader = taskHeaderService.getOne(lambdaQueryWrapper);

        if (taskHeader == null) {
            return AjaxResult.error("容器号:" + containerCode + " 未找到未完成的出库任务。");
        }
        List<TaskDetail> list = taskDetailService.findByTaskId(taskHeader.getId());
        BigDecimal taskqty = new BigDecimal(0);
        for (TaskDetail detail : list) {
            taskqty = taskqty.add(detail.getQty());
            // 查找还未出库的物料
            if (detail.getNumber() == 1) {
                detail.setNumber(2);
                taskDetailService.updateById(detail);
                return AjaxResult.success(detail.getContainerDetailNumber());
            }
        }
        BigDecimal qty = new BigDecimal(0);
        LambdaQueryWrapper<InventoryDetail> query = Wrappers.lambdaQuery();
        query.eq(InventoryDetail::getContainerCode, taskHeader.getContainerCode());
//        query.eq(InventoryDetail::getLocationCode, taskHeader.getFromLocation());
        List<InventoryDetail> inventorydetaillist = inventoryDetailService.list(query);
        for (InventoryDetail detail : inventorydetaillist) {
            qty = qty.add(detail.getQty());
        }
        System.out.println("=======" + qty);
        System.out.println("=======" + taskqty);
        if (qty.subtract(taskqty).compareTo(BigDecimal.ZERO) > 0) {
            // 分拣出库,托盘回库
            return AjaxResult.success(0);
        } else {
            // 整盘出库,空托盘前进
            return AjaxResult.success(100);
        }
    }

}