InStandingTaskServiceImpl.java 5.46 KB
package com.huaheng.api.wcs.service.InStandingTaskHandle;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.api.wcs.domain.InStandingTaskDomain;
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.framework.web.service.ConfigService;
import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
import com.huaheng.pc.inventory.inventoryHeader.domain.InventoryHeader;
import com.huaheng.pc.inventory.inventoryHeader.service.InventoryHeaderService;
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;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;


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

@Service
public class InStandingTaskServiceImpl implements InStandingTaskService {

    @Resource
    TaskHeaderService taskHeaderService;
    @Resource
    InventoryHeaderService inventoryHeaderService;
    @Resource
    InventoryDetailService inventoryDetailService;
    @Resource
    TaskDetailService taskDetailService;
    @Resource
    private ConfigService configService;

    @Override
    @Transactional
    public AjaxResult instanding(InStandingTaskDomain inStandingTaskDomain) {

        String value = configService.getKey(QuantityConstant.RULE_PALLET_WEIGHT);
        int weight = Integer.parseInt(value);//从配置表取到重量

        TaskHeader header = taskHeaderService.getById(inStandingTaskDomain.getTaskNo());//获取当前任务头
        if ((header.getContainerCode().substring(0,1)).equals("D"))//如果是D
        {
            return AjaxResult.success(1);//回库
        }
        LambdaQueryWrapper<TaskDetail> taskDetailLambdaQueryWrapper = Wrappers.lambdaQuery();//获取当前任务子明细
        taskDetailLambdaQueryWrapper.eq(TaskDetail::getTaskId, header.getId());
        List<TaskDetail> details = taskDetailService.list(taskDetailLambdaQueryWrapper);

        if (header.getInternalTaskType() != 200) {
            throw new ServiceException("当前任务非分拣任务");
        }

        try {
            LambdaQueryWrapper<InventoryHeader> lambdaQueryWrapper = Wrappers.lambdaQuery();
            lambdaQueryWrapper.eq(InventoryHeader::getLocationCode, header.getToLocation()).eq(InventoryHeader::getContainerCode, header.getContainerCode());
            InventoryHeader one = inventoryHeaderService.getOne(lambdaQueryWrapper);

            LambdaQueryWrapper<InventoryDetail> inventoryDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
            inventoryDetailLambdaQueryWrapper.eq(StringUtils.isNotEmpty(header.getWarehouseCode()),
                    InventoryDetail::getWarehouseCode, header.getWarehouseCode())
                    .eq(StringUtils.isNotEmpty(header.getContainerCode()),
                            InventoryDetail::getContainerCode, header.getContainerCode())
                    .eq(StringUtils.isNotEmpty(header.getToLocation()),
                            InventoryDetail::getLocationCode, header.getToLocation())
                    .eq(StringUtils.isNotEmpty(header.getCompanyCode()),
                            InventoryDetail::getCompanyCode, header.getCompanyCode())
                    .eq(StringUtils.isNotEmpty(header.getZoneCode()),
                            InventoryDetail::getZoneCode, header.getZoneCode())
                    .eq(StringUtils.isNotEmpty("" + one.getId()),
                            InventoryDetail::getInventoryHeaderId, one.getId());
            List<InventoryDetail> inventoryDetailList = inventoryDetailService.list(inventoryDetailLambdaQueryWrapper);
            if (inventoryDetailList != null && inventoryDetailList.size() > 0) {
                for (InventoryDetail inventoryDetail : inventoryDetailList) {
                    String zoneCode = inventoryDetail.getZoneCode();
                    if (zoneCode.equals("B")) {
                        int taskQty = inventoryDetail.getQty().intValue() - inventoryDetail.getTaskQty().intValue();
                        if (taskQty != 0) {
                            if (inStandingTaskDomain.getWeight() > weight)
                            {
                                return AjaxResult.success(1);//回库
                            }else
                            {
                                return AjaxResult.error("重量不大于空托,请人工检查");
                            }
                        }
                    }
                }

            }
        }catch (Exception e) {
                e.printStackTrace();
                if (inStandingTaskDomain.getWeight() > weight)
                {
                    return AjaxResult.success(1);//回库
                }
                else
                {
                    return AjaxResult.error("重量不大于空托,请人工检查");
                }
            }

        if (inStandingTaskDomain.getWeight() > weight)
        {return AjaxResult.success("重量大于空托");}

        return AjaxResult.success(2);

    }
    //强制完成

}