zjj
2024-01-02 8215c02870e511e6dccfe5cdd0a0c6a564721a84
#人工命令更新库位状态
4个文件已修改
155 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/CrnController.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/domain/param/CrnOperatorParam.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/deviceOperate/crnOperate.html 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/CrnController.java
@@ -1,6 +1,7 @@
package com.zy.asrs.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.annotations.ManagerAuth;
import com.core.common.Cools;
@@ -15,12 +16,15 @@
import com.zy.asrs.domain.vo.CrnStateTableVo;
import com.zy.asrs.entity.*;
import com.zy.asrs.mapper.BasCrnErrorMapper;
import com.zy.asrs.service.ApiLogService;
import com.zy.asrs.service.BasCrnpService;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.service.impl.MainServiceImpl;
import com.zy.asrs.utils.CommandUtils;
import com.zy.asrs.utils.Utils;
import com.zy.asrs.utils.VersionUtils;
import com.zy.common.utils.HttpHandler;
import com.zy.core.CrnThread;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.OutputQueue;
@@ -35,6 +39,7 @@
import com.zy.core.properties.SlaveProperties;
import com.zy.core.properties.SystemProperties;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.validator.internal.engine.messageinterpolation.parser.ELState;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
@@ -59,7 +64,8 @@
    private String movePath;
    @Autowired
    private ApiLogService apiLogService;
    @Autowired
    private SlaveProperties slaveProperties;
    @Autowired
@@ -392,6 +398,12 @@
        command.setDestinationPosX(param.getBay());     // 目标库位列
        command.setDestinationPosY(param.getLev());     // 目标库位层
        command.setCommand((short)1);
        String locNo =String.format("%2d",param.getRow()) + String.format("%3d",param.getBay()) + String.format("%2d",param.getLev());
        String startlocNo =String.format("%2d",param.getSourceRow()) + String.format("%3d",param.getSourceBay()) + String.format("%2d",param.getSourceLev());
        boolean wmsLocStatus = toWmsLocStatus(1, startlocNo, locNo, param.getBarcode(), param.getBarcodeType(), param.getEmptyContainer());
        if (!wmsLocStatus){
            return R.error("库位更新失败");
        }
        return crnControl(command)?R.ok():R.error();
    }
@@ -413,6 +425,12 @@
        command.setDestinationPosZ(param.getRow());     // 目标库位排
        command.setDestinationPosX(param.getBay());     // 目标库位列
        command.setDestinationPosY(param.getLev());     // 目标库位层
        String locNo =String.format("%2d",param.getRow()) + String.format("%3d",param.getBay()) + String.format("%2d",param.getLev());
        String startlocNo =String.format("%2d",param.getSourceRow()) + String.format("%3d",param.getSourceBay()) + String.format("%2d",param.getSourceLev());
        boolean wmsLocStatus = toWmsLocStatus(2, startlocNo, locNo, param.getBarcode(), param.getBarcodeType(), param.getEmptyContainer());
        if (!wmsLocStatus){
            return R.error("库位更新失败");
        }
        return crnControl(command)?R.ok():R.error();
    }
@@ -440,6 +458,12 @@
        LocMast loc = locMastService.selectOne(new EntityWrapper<LocMast>().eq("row1", command.getDestinationPosX())
                .eq("bay1", command.getDestinationPosY()).eq("lev1", command.getDestinationPosZ()));
        VersionUtils.locMoveCheckLocType(sourceLoc, loc);
        String locNo =String.format("%2d",param.getRow()) + String.format("%3d",param.getBay()) + String.format("%2d",param.getLev());
        String startlocNo =String.format("%2d",param.getSourceRow()) + String.format("%3d",param.getSourceBay()) + String.format("%2d",param.getSourceLev());
        boolean wmsLocStatus = toWmsLocStatus(3, startlocNo, locNo, param.getBarcode(), param.getBarcodeType(), param.getEmptyContainer());
        if (!wmsLocStatus){
            return R.error("库位更新失败");
        }
        return crnControl(command)?R.ok():R.error();
    }
@@ -864,5 +888,67 @@
        return R.ok().add(list);
    }
    public boolean toWmsLocStatus(Integer type,String startlocNo,String locNo,String barcode,String barcodeType,String emptyContainer){
        Map<String, Object> map = new HashMap<>();
        map.put("x-api-key","7a15b5db-29b6-552c-8cff-0cfec3756da2");
        WmsLocStatus param = new WmsLocStatus();
        param.setWarehouseId("1688469798893297665");
        param.setLocationCode(Utils.getWmsLocNo(locNo));
        if (emptyContainer.equals("1")){
            param.setEmptyContainer("Y");
        }else {
            param.setEmptyContainer("N");
        }
        param.setStatus("QY");
        param.setContainerCode(barcode);
        param.setContainerTypeCode(barcodeType);
        String response = null;
        try {
            response = new HttpHandler.Builder()
                    .setHeaders(map)
                    .setUri(wmsUrl)
                    .setPath("wcsManager/wcsInterface/locationUpdate")
                    .setJson(JSON.toJSONString(param))
                    .build()
                    .doPost();
        }catch (Exception e){
            log.error("库位更新失败");
        }
        JSONObject jsonObject = JSON.parseObject(response);
        if (jsonObject.getInteger("code").equals(200)){
            LocMast originLoc = locMastService.selectByLocNo(startlocNo);
            LocMast locMast = locMastService.selectByLocNo(locNo);
            if (type == 1){
                locMast.setBarcode(barcode);
                locMast.setLocSts("F");
                locMastService.updateById(locMast);
            }else if (type == 2){
                locMast.setBarcode("");
                locMast.setLocSts("O");
                locMastService.updateById(locMast);
            }else if (type == 3){
                originLoc.setLocSts("O");
                originLoc.setBarcode("");
                locMast.setBarcode(barcode);
                locMast.setLocSts("F");
                locMastService.updateById(originLoc);
                locMastService.updateById(locMast);
            }
            apiLogService.save("Wms变更货位状态"
                    ,wmsUrl+"wcsManager/wcsInterface/inboundTaskApply"
                    ,null
                    ,"127.0.0.1"
                    ,JSON.toJSONString(param)
                    ,response
                    ,true
            );
            return true;
        }
        return false;
    }
}
src/main/java/com/zy/asrs/domain/param/CrnOperatorParam.java
@@ -34,5 +34,10 @@
    // 目标库位-层
    private Short lev;
    //条码
    private String barcode;
    //条码类型
    private String barcodeType;
    private String emptyContainer;
}
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -111,7 +111,7 @@
                    .build()
                    .doPost();
        }catch (Exception e){
            log.error("堆垛机任务完成,请求wms任务完成接口失败");
            log.error("库位更新失败");
        }
        JSONObject jsonObject = JSON.parseObject(response);
src/main/webapp/views/deviceOperate/crnOperate.html
@@ -37,32 +37,51 @@
                    </div>
                    <div>
                        <el-form :model="formParam" label-position="top" :inline="true" class="demo-form-inline">
                            <el-form-item label="源站/源库位">
                                <el-input v-model="formParam.sourceStaNo" placeholder="源站/源库位"></el-input>
                            </el-form-item>
                            <el-form-item label="排">
<!--                            <el-form-item label="源站/源库位">-->
<!--                                <el-input v-model="formParam.sourceStaNo" placeholder="源站/源库位"></el-input>-->
<!--                            </el-form-item>-->
                            <el-form-item label="源排">
                                <el-input v-model="formParam.sourceRow" placeholder="排"></el-input>
                            </el-form-item>
                            <el-form-item label="列">
                            <el-form-item label="源列">
                                <el-input v-model="formParam.sourceBay" placeholder="列"></el-input>
                            </el-form-item>
                            <el-form-item label="层">
                            <el-form-item label="源层">
                                <el-input v-model="formParam.sourceLev" placeholder="层"></el-input>
                            </el-form-item>
                        </el-form>
                        <el-form :model="formParam" label-position="top" :inline="true" class="demo-form-inline">
                            <el-form-item label="目标站/目标库位">
                                <el-input v-model="formParam.staNo" placeholder="目标站/目标库位"></el-input>
                            </el-form-item>
                            <el-form-item label="排">
<!--                            <el-form-item label="目标站/目标库位">-->
<!--                                <el-input v-model="formParam.staNo" placeholder="目标站/目标库位"></el-input>-->
<!--                            </el-form-item>-->
                            <el-form-item label="目标排">
                                <el-input v-model="formParam.row" placeholder="排"></el-input>
                            </el-form-item>
                            <el-form-item label="列">
                            <el-form-item label="目标列">
                                <el-input v-model="formParam.bay" placeholder="列"></el-input>
                            </el-form-item>
                            <el-form-item label="层">
                            <el-form-item label="目标层">
                                <el-input v-model="formParam.lev" placeholder="层"></el-input>
                            </el-form-item>
                        </el-form>
                        <el-form :model="formParam" label-position="top" :inline="true" class="demo-form-inline">
                            <el-form-item label="托盘码">
                                <el-input v-model="formParam.barcode" placeholder="条码"></el-input>
                            </el-form-item>
                            <el-form-item label="托盘类型">
                                <el-input v-model="formParam.barcodeType" placeholder="类型"></el-input>
                            </el-form-item>
                            <el-form-item label="空托盘">
                                <el-select v-model="formParam.emptyContainer" placeholder="是否为空托盘">
                                    <el-option
                                            v-for="item in options"
                                            :key="item.value"
                                            :label="item.label"
                                            :value="item.value">
                                    </el-option>
                                </el-select>
                            </el-form-item>
                        </el-form>
                        <el-form label-position="top" :inline="true" class="demo-form-inline">
                            <el-form-item label="">
@@ -188,10 +207,23 @@
                    staNo: null,
                    row: 1,
                    bay: 0,
                    lev: 1
                    lev: 1,
                    barcode:null,
                    barcodeType:null,
                    emptyContainer:null
                },
                enableIn: false,
                enableOut: false
                enableOut: false,
                options:[
                    {
                        value:'1',
                        label:'是'
                    },
                    {
                        value:'0',
                        label:'否'
                    }
                ]
            },
            created() {
                this.init()