InStandingTaskServiceImpl.java 6.19 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.service.TaskService;
import com.huaheng.api.wcs.domain.InStandingTaskDomain;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.common.support.Convert;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.config.container.domain.Container;
import com.huaheng.pc.config.container.service.ContainerService;
import com.huaheng.pc.config.location.domain.Location;
import com.huaheng.pc.config.material.domain.Material;
import com.huaheng.pc.inventory.cycleCountHeader.domain.CycleCountHeader;
import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
import com.huaheng.pc.inventory.inventoryDetail.mapper.InventoryDetailMapper;
import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
import com.huaheng.pc.inventory.inventoryHeader.domain.InventoryHeader;
import com.huaheng.pc.inventory.inventoryHeader.mapper.InventoryHeaderMapper;
import com.huaheng.pc.inventory.inventoryHeader.service.InventoryHeaderService;
import com.huaheng.pc.task.taskDetail.domain.TaskDetail;
import com.huaheng.pc.task.taskDetail.mapper.TaskDetailMapper;
import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
import com.huaheng.pc.task.taskHeader.mapper.TaskHeaderMapper;
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.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Service
public class InStandingTaskServiceImpl implements InStandingTaskService{

    @Resource
    TaskHeaderService taskHeaderService;
    @Resource
    TaskHeaderMapper taskHeaderMapper;
    @Resource
    InventoryHeaderService inventoryHeaderService;
    @Resource
    InventoryDetailService inventoryDetailService;
    @Resource
    InventoryHeaderMapper inventoryHeaderMapper;
    @Resource
    TaskDetailService taskDetailService;
    @Resource
    TaskDetailMapper taskDetailMapper;

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

        TaskHeader header = taskHeaderService.getById(inStandingTaskDomain.getTaskNo());
        LambdaQueryWrapper<TaskDetail> taskDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
        taskDetailLambdaQueryWrapper.eq(TaskDetail::getTaskId, header.getId());
        List<TaskDetail> details = taskDetailService.list(taskDetailLambdaQueryWrapper);


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

        if (one==null && inStandingTaskDomain.getWeight() < 150 && header.getStatus()==50 && header.getInternalTaskType()==300)
        {

            LambdaQueryWrapper<TaskDetail> taskDetailLambdaQueryWrapper1 = Wrappers.lambdaQuery();
            taskDetailLambdaQueryWrapper1.eq(TaskDetail::getTaskId,header.getId());
            taskHeaderService.completeTaskByWMS(Convert.toIntArray(""+header.getId()), null);
            header.setId(null);
            header.setTaskType(600);
            header.setInternalTaskType(200);
            header.setUserDef3("异常出库");
            header.setStatus(1);
            header.setToLocation(null);
            header.setPort("P3045");
            taskHeaderMapper.insert(header);

            TaskDetail taskDetail = taskDetailService.getOne(taskDetailLambdaQueryWrapper1);
            taskDetail.setId(null);
            taskDetail.setTaskId(header.getId());
            taskDetailMapper.insert(taskDetail);
            taskHeaderService.completeTaskByWMS(Convert.toIntArray(""+header.getId()), null);
            return AjaxResult.success(2);

        }

        if (inStandingTaskDomain.getWeight() > 150) {
            header.setWeight("" + inStandingTaskDomain.getWeight());
            taskHeaderMapper.updateById(header);
            if (one!=null)
            {
            one.setTotalWeight("" + inStandingTaskDomain.getWeight());
            inventoryHeaderMapper.updateById(one);
            }
            return AjaxResult.success(1);
        } else {
            if (header.getStatus()==50&&header.getInternalTaskType()==300)
            {
            //任务完成---调完成接口
            taskHeaderService.completeTaskByWMS(Convert.toIntArray(""+header.getId()), null);
            header.setId(null);
            header.setTaskType(300);
            header.setInternalTaskType(200);
            header.setUserDef3("异常出库");
            header.setStatus(1);
            header.setToLocation(null);
            header.setPort("P3045");
            taskHeaderMapper.insert(header);
            for (int i=0;i<details.size();i++)
            {
                details.get(i).setId(null);
                details.get(i).setTaskId(header.getId());
                LambdaQueryWrapper<InventoryDetail> hea = Wrappers.lambdaQuery();
                hea.eq(InventoryDetail::getMaterialCode,details.get(i).getMaterialCode())
                .eq(InventoryDetail::getContainerCode,details.get(i).getContainerCode())
                .eq(InventoryDetail::getLocationCode,details.get(i).getToLocation());
                InventoryDetail detail = inventoryDetailService.getOne(hea);
                details.get(i).setQty(detail.getQty());
                detail.setTaskQty(detail.getQty());
                details.get(i).setStatus(10);
                inventoryDetailService.updateById(detail);
                List<InventoryDetail> list = inventoryDetailService.list(hea);
                taskDetailMapper.insert(details.get(i));
            }
            taskHeaderService.completeTaskByWMS(Convert.toIntArray(""+header.getId()), null);

            }


            else {throw new ServiceException("当前任务非分拣任务");}



        }
            return AjaxResult.success(2);
    }   }
    //强制完成