InStandingTaskServiceImpl.java 5.2 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.general.domain.ReturnTask;
import com.huaheng.api.general.service.IReturnTaskService;
import com.huaheng.api.general.service.ReturnService;
import com.huaheng.api.wcs.domain.InStandingTaskDomain;
import com.huaheng.api.wcs.service.taskCancel.TaskCancelService;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.support.Convert;
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.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.List;

@Service
public class InStandingTaskServiceImpl implements InStandingTaskService {

    @Resource
    TaskHeaderService taskHeaderService;
    @Resource
    InventoryHeaderService inventoryHeaderService;
    @Resource
    InventoryDetailService inventoryDetailService;
    @Resource
    TaskDetailService taskDetailService;
    @Resource
    IReturnTaskService returnTaskService;
    @Resource
    private ConfigService configService;
    @Resource
    private TaskCancelService taskCancelService;
    @Resource
    private ReturnService returnService;

    @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 == null) {
            return AjaxResult.error("任务不存在");
        }

        if (inStandingTaskDomain.getWeight() < weight && inStandingTaskDomain.getContainerCode().contains("M")) {
            return AjaxResult.success(2);
        }

        //如果是D
        if ((header.getContainerCode().substring(0, 1)).equals("D"))
        {
            //回库
            return AjaxResult.success(1);
        }


        if (header.getTaskType() != QuantityConstant.TASK_TYPE_EMPTYRECEIPT) {
            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) {

                                return AjaxResult.success(1);//回库
                            }
                        }
                    }

                }
            } catch (Exception e) {
                e.printStackTrace();
                return AjaxResult.success(1);//回库
            }

        }


        return AjaxResult.success(2);
    }


}