InStandingTaskServiceImpl.java 5 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());//获取当前任务头
        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);
            List<InventoryDetail> removeInventoryDetailList = new ArrayList<>();
            if (inventoryDetailList != null && inventoryDetailList.size() > 0) {
                for (InventoryDetail inventoryDetail : inventoryDetailList) {
                    String zoneCode = inventoryDetail.getZoneCode();
                    if (zoneCode.equals("B")) {
                        int taskQty = inventoryDetail.getTaskQty().intValue() - inventoryDetail.getTaskQty().intValue();
                        if (taskQty != 0 && (inStandingTaskDomain.getWeight() > weight||inStandingTaskDomain.getWeight()==0) ) {
                            return AjaxResult.success(1);//回库
                        }
                        removeInventoryDetailList.add(inventoryDetail);
                    }
                }

            }
        }catch (Exception e) {
                e.printStackTrace();
                if (inStandingTaskDomain.getWeight() > weight)
                {
                    return AjaxResult.success(1);//回库
                }
            }
        return AjaxResult.success(2);

    }
    //强制完成

}