ReleaseNoticeController.java 3.86 KB
package com.huaheng.api.wcs.controller;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.api.wcs.domain.ReleasedCons;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.framework.aspectj.lang.annotation.ApiLogger;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.config.station.domain.Station;
import com.huaheng.pc.config.station.service.StationService;
import com.huaheng.pc.config.zone.domain.Zone;
import com.huaheng.pc.config.zone.service.ZoneService;
import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
import io.swagger.annotations.ApiOperation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;

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

/**
 * 铜箔仓 二楼出库时不能有入库任务堵
 * 放行通知
 */

@RestController
@RequestMapping("/API/WMS/v2")
public class ReleaseNoticeController {

    @Resource
    private TaskHeaderService taskHeaderService;
    @Resource
    private ZoneService zoneService;
    @Resource
    private StationService stationService;

    @PostMapping("/releasedNotice")
    @ApiOperation("放行通知")
    @ApiLogger(apiName = "放行通知", from="WCS")
    @Transactional(rollbackFor = Exception.class)
    @ResponseBody
    public AjaxResult releasedNotice(@RequestBody Map<String,String> map) {
        AjaxResult result = AjaxResult.toAjax(false).setData(ReleasedCons.RELEASED_ERR);
        String area = map.get("area");
        String port = map.get("port");

        if(StringUtils.isEmpty(port)){
            return result.setMsg("站台编码不能为空!!");
        }
        if(StringUtils.isEmpty(area)){
            return result.setMsg("库区编号不能为空!!");
        }
        if(!"P5043".equals(port)){
            return result.setMsg("站台编码错误!!");
        }
        Zone zone = zoneService.getZoneByArea(area);
        if(zone == null){
            return result.setMsg("库区编号错误或不存在!!");
        }
        String zoneCode = zone.getCode();
        LambdaQueryWrapper<TaskHeader> query = Wrappers.lambdaQuery();
        query.eq(TaskHeader::getTaskType, QuantityConstant.TASK_TYPE_EMPTYRECEIPT)
                .lt(TaskHeader::getStatus,QuantityConstant.TASK_STATUS_COMPLETED)
                .eq(TaskHeader::getZoneCode, zoneCode)
                .eq(TaskHeader::getPort, "P5043")
                .last("LIMIT 1");
        TaskHeader taskHeader = taskHeaderService.getOne(query);
        if(taskHeader != null){
            return result.setMsg("请求失败目标站台存在空托盘入库任务:["+taskHeader.getId()+"]");
        }
        return AjaxResult.toAjax(true).setData(ReleasedCons.RELEASED_SUC);
    }

    /**
     * 解锁站台 通知下发 assignTask
     * @param map
     * @return
     */
    @PostMapping("/noticeAssign")
    @ApiOperation("通知下发")
    @ApiLogger(apiName = "通知下发", from="WCS")
    @Transactional(rollbackFor = Exception.class)
    @ResponseBody
    public AjaxResult noticeAssign(@RequestBody Map<String,String> map) {
        String taskId = map.get("TaskNo");
        TaskHeader taskHeader = taskHeaderService.getById(taskId);
        if(taskHeader==null){
            return AjaxResult.error("任务号不存在");
        }
        if(taskHeader.getStatus() >= 100){
            return AjaxResult.error("任务已完成");
        }
        Station station = stationService.getByTaskNo(taskHeader);
        if(station==null){
            return AjaxResult.error("任务错误没有找到站台");
        }
        station.setTaskNo(null);
        stationService.updateById(station);
        return AjaxResult.success();
    }
}