MobilePutawayController.java 6.28 KB
package com.huaheng.mobile.receipt;

import com.alibaba.fastjson.JSONException;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.api.wcs.domain.WcsTask;
import com.huaheng.common.utils.security.ShiroUtils;
import com.huaheng.framework.aspectj.lang.annotation.ApiLogger;
import com.huaheng.framework.aspectj.lang.annotation.Log;
import com.huaheng.framework.aspectj.lang.constant.BusinessType;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.config.location.domain.Location;
import com.huaheng.pc.config.location.service.LocationService;
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 io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;

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

/**
 *
 * @author Enzo Cotter
 * @date 2019/12/16
 */
@RestController
@RequestMapping("/mobile/putaway/execute")
@Api(tags = {"手机收货上架"}, value = "手机收货上架MobilePutawayController")
public class MobilePutawayController {

    @Resource
    private TaskHeaderService taskService;
    @Resource
    private LocationService locationService;

    @Resource
    private TaskDetailService taskDetailService;

    @PostMapping("/createReceiptTask")
    @ApiOperation("手机扫描容器收货上架")
    @Log(title = "手机扫描容器收货上架", action = BusinessType.OTHER)
    public AjaxResult createReceiptTask(@RequestBody @ApiParam(value="容器号") Map<String, String> param) throws Exception {
        if  (param.get("containerCode") == null || param.get("containerCode").trim().length() < 1) {
            throw new JSONException("容器号(containerCode)不能为空");
        }
        AjaxResult retResult = taskService.mobileCreateReceiptTask(param.get("containerCode"), "L10-27-01");
        return retResult;
    }

    @PostMapping("/getLocationFromContainer")
    @ApiOperation("手机扫描容器获得库位号")
    @Log(title = "手机扫描容器获得库位号", action = BusinessType.OTHER)
    public AjaxResult getLocationFromContainer(@RequestBody @ApiParam(value="容器号") Map<String, String> param) throws Exception {
        if  (param.get("containerCode") == null || param.get("containerCode").trim().length() < 1) {
            throw new JSONException("容器号(containerCode)不能为空");
        }
        LambdaQueryWrapper<Location> queryWrapper = Wrappers.lambdaQuery();
        queryWrapper.eq(Location::getWarehouseCode, ShiroUtils.getWarehouseCode())
                .eq(Location::getDeleted, false)
                .eq(Location::getContainerCode, param.get("containerCode"));
        Location location = locationService.getOne(queryWrapper);
        if(location == null) {
            return AjaxResult.error("没有该库位");
        }
        return AjaxResult.success("获取成功",location.getCode());
    }

    @PostMapping("/createQuickTask")
    @ApiOperation("手机扫描容器收货上架")
    @Log(title = "手机扫描容器收货上架", action = BusinessType.OTHER)
    public AjaxResult createQuickTask(@RequestBody @ApiParam(value="容器号") Map<String, String> param) throws Exception {
        if  (param.get("containerCode") == null || param.get("containerCode").trim().length() < 1) {
            throw new JSONException("容器号(containerCode)不能为空");
        }

        AjaxResult retResult = taskService.createQuickTask(param.get("containerCode"));
        return retResult;
    }

    @PostMapping("/scanLocationCode")
    @ApiOperation("手机扫描库位收货上架")
    @Log(title = "手机扫描库位收货上架", action = BusinessType.OTHER)
    public AjaxResult scanLocationCode(@RequestBody @ApiParam(value="库位编码") Map<String, String> param) throws Exception {
        if  (param.get("locationCode") == null || param.get("locationCode").trim().length() < 1) {
            throw new JSONException("库位号(locationCode)不能为空");
        }
        AjaxResult retResult = taskService.completeTask(param.get("locationCode"));
        return retResult;
    }

    @PostMapping("/createReplenishTask")
    @ApiOperation("手机扫描容器创建补充入库任务")
    @Log(title = "手机扫描容器创建补充入库任务", action = BusinessType.OTHER)
    public AjaxResult createReplenishTask(@RequestBody @ApiParam(value="容器号") Map<String, String> param) throws Exception {
        if  (param.get("containerCode") == null || param.get("containerCode").trim().length() < 1) {
            throw new JSONException("容器号(containerCode)不能为空");
        }
        AjaxResult retResult = taskService.createReplenishTask(param.get("containerCode"), 1);
        return retResult;
    }
    /**
     * PDA根据物料快速查找托盘
     *
     */
    @ApiOperation(value="PDA归还查询", notes="归还查询 ", httpMethod = "POST")
    @Log(title = "查找物料历史托盘 ",operating = "PDA快速查找托盘 ", action = BusinessType.INSERT)
    @PostMapping("/pdaSelect")
    @ApiLogger(from = "PDA", apiName = "PDA快速查找托盘")
    public AjaxResult pdaSelect(@RequestBody @ApiParam(value = "物料号") Map<String, String> param) {
        if  (param.get("materialCode") == null || param.get("materialCode").trim().length() < 1) {
            throw new JSONException("物料编码(materialCode)不能为空");
        }
        LambdaQueryWrapper<TaskDetail> lambda = new LambdaQueryWrapper<>();
        lambda.eq(TaskDetail::getMaterialCode, param.get("materialCode")).last("order by id desc limit 1");
        TaskDetail taskDetail = taskDetailService.getOne(lambda);
        if (taskDetail == null){
            return AjaxResult.error("没有该物料容器");
        }
        String containerCode = taskDetail.getContainerCode();
        LambdaQueryWrapper<Location> queryWrapper = Wrappers.lambdaQuery();
        queryWrapper.eq(Location::getContainerCode, containerCode);
        List<Location> location = locationService.list(queryWrapper);

        return  AjaxResult.success(location);
    }
}