自动化立体仓库 - WMS系统
zwl
14 小时以前 519f42d527a1dd4917455609855f732b1eb0f7a0
src/main/java/com/zy/api/controller/HmesApiController.java
@@ -1,14 +1,118 @@
package com.zy.api.controller;
import com.alibaba.fastjson.JSONObject;
import com.core.annotations.ManagerAuth;
import com.core.common.Cools;
import com.core.common.R;
import com.zy.api.controller.params.HmesBackLocParams;
import com.zy.api.controller.params.ReceviceTaskParams;
import com.zy.api.service.HmesApiService;
import com.zy.asrs.entity.param.OpenOrderPakoutParam;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.Objects;
@Api(value = "HMES对接")
@RestController
@Slf4j
@RequestMapping("/api")
public class HmesApiController {
    @Autowired
    private HmesApiService hmesApiService;
    /**
     * 人工穿线
     * @author Ryan
     * @date 2026/1/10 10:40
     * @return com.core.common.R
     */
//    @ManagerAuth
    @ApiOperation("下发生产任务")
    @PostMapping("/work/tasks")
    public R menauWork(@RequestBody OpenOrderPakoutParam params) {
        log.info("下发生产任务={}", JSONObject.toJSONString(params));
        if (Objects.isNull(params)) {
            return R.error("参数不能为空!!");
        }
        if (Cools.isEmpty(params.getOrderNo())) {
            return R.error("单据编号[orderNo]不能为空");
        }
        if (Cools.isEmpty(params.getBillType())) {
            return R.error("单据类型[BillType]不能为空");
        }
        if (Cools.isEmpty(params.getMatList())) {
            return R.error("单据明细[orderDetails]不能为空");
        }
        return hmesApiService.pubWorkTask(params);
    }
    /**
     * 穿线完成,释放机台周边库位
     * @author Ryan
     * @date 2026/1/10 11:06
     * @param params
     * @return com.core.common.R
     */
//    @ManagerAuth
    @ApiOperation("穿线完成")
    @PostMapping("/work/release/lock")
    public R releaseLock(@RequestBody ReceviceTaskParams params) {
        if (Objects.isNull(params)) {
            return R.error("参数不能为空!!");
        }
        if (Objects.isNull(params.getDevNo())) {
            return R.error("机台号不能为空!!");
        }
        return hmesApiService.releaseLock(params);
    }
    /**
     * 获取机台及对应工位冻结情况
     * @author Ryan
     * @date 2026/3/20 11:06
     * @return com.core.common.R
     */
//    @ManagerAuth
    @ApiOperation("获取机台及对应工位冻结情况")
    @GetMapping("/work/freeze/status")
    public R getDeviceFreezeStatus() {
        return hmesApiService.getDeviceFreezeStatus();
    }
    /**
     * 空桶/余料回库
     * @author Ryan
     * @date 2026/3/20 11:28
     * @param params
     * @return com.core.common.R
     */
//    @ManagerAuth
    @ApiOperation("空桶/余料回库")
    @PostMapping("/work/back/loc")
    public R backLoc(@RequestBody HmesBackLocParams params) {
        if (Objects.isNull(params)) {
            return R.error("参数不能为空!!");
        }
        if (Cools.isEmpty(params.getLocNo()) && Cools.isEmpty(params.getWorkNo()) && Cools.isEmpty(params.getBarcode())) {
            return R.error("库位号[locNo]、工作号[workNo]、条码[barcode]不能同时为空");
        }
        if (Cools.isEmpty(params.getBackType())) {
            return R.error("回库类型[backType]不能为空");
        }
        return hmesApiService.backLoc(params);
    }
}