chengsc
2024-11-02 d567d9d6926abb103f3ab73402134daa6a09ef11
修改问题
20个文件已修改
1个文件已添加
1139 ■■■■■ 已修改文件
HTML/views/QualityControl/QualityInformation.html 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HTML/views/QualityControl/QualityInformationFrom.html 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Pda/View/HouseDataSetting/artificialTransport.html 493 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Model/InterFaceModel/HttpModel.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Model/ModelDto/BllQualityDto/BllQualityInspectDto.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Model/ModelVm/PdaVm/PdaCrVm.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs 154 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllQualityServer/QualityInspectServer.cs 113 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.Entity/BllQualityEntity/BllQualityInspect.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.IBLL/IBllQualityServer/IQualityInspectServer.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.IBLL/IPdaServer/IPdaAsnServer.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.IBLL/ISysServer/IToken.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Wms/Controllers/BllQualityController.cs 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Wms/Controllers/PdaAsnController.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Wms/Controllers/PdaCrController.cs 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Wms/Tools/ApiUrlConfig.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Wms/appsettings.json 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HTML/views/QualityControl/QualityInformation.html
@@ -96,6 +96,15 @@
                         </div> 
                        
                        <script type="text/html" id="IsStatus">
                            {{#  if(d.Status=='0'){ }}
                                <p>等待审核</p>
                            {{#  } else if(d.Status=='1'){ }}
                                <p>通过</p>
                            {{#  } else if(d.Status=='2'){ }}
                                <p>不通过</p>
                            {{#  } }}
                        </script>
                        <script type="text/html" id="IsQualifiedButton">
                            {{#  if(d.IsQualified=='0'){ }}
                                <p>不合格</p>
@@ -107,6 +116,23 @@
                            {{# console.log(d.CreateTime);
                                    return formatDate(d.CreateTime);
                            }}
                        </script>
                        <script type="text/html" id="CaoZuoList">
                            {{# function GetBtn(d){
                                    var html = '';
                                    console.log(d);
                                    switch (d.Status) {
                                        case "0" :
                                        html += `<a class="layui-btn layui-btn-normal layui-btn-xs editClass" lay-event="edit">
                                                    <i class="layui-icon layui-icon-edit"></i>复核</a>`;
                                            break;
                                        default :
                                        break;
                                    }
                                    return html;
                                }
                            }}
                            {{ GetBtn(d) }}
                        </script>
                    
                </div>
@@ -138,6 +164,9 @@
                            field: 'InspectNo',title: '检验号',align: 'center'
                        }, 
                        {
                            field: 'Status',title: '状态',align: 'center',templet: '#IsStatus',
                        },
                        {
                            field: 'SkuNo',title: '物料编码',align: 'center'
                        }, 
                        {
@@ -166,6 +195,9 @@
                        },
                        {
                            field: 'CreateTime',title: '创建时间',align: 'center', templet: '#CreateTimeButton',
                        },
                        {
                            field: 'caozuo', title: '操作', fixed: 'right', width: 100, align: 'center', toolbar: '#CaoZuoList', "disabled": true
                        },
                    ]];
                var TotalColsSysArr=encodeURIComponent(encodeURIComponent(JSON.stringify(TotalColsArr)))//将表头数据进行url编码
@@ -291,6 +323,7 @@
                function setRight() {
                    $(function() {
                        $("#approvalBtn").hide();
                        $("#editClass").hide();
                    });
                    sendData(IP + "/Basis/GetRoleRightList", {}, 'get', function (res) {
                        if (res.code == 0) { //成功 
@@ -301,6 +334,12 @@
                                        $("#approvalBtn").show();
                                    });
                                }
                                if (res.data[k].MenuName == "复核质检结果")
                                {
                                    $(function() {
                                        $(".editClass").show();
                                    });
                                }
                            }
                        } else { //不成功
                            layer.msg('获取权限信息失败', {
HTML/views/QualityControl/QualityInformationFrom.html
@@ -34,16 +34,16 @@
                    <input type="text" name="SkuNo" placeholder="请输入物料号" lay-verify="required" autocomplete="off" class="layui-input">
                </div>
            </div>
            <div class="layui-form-item">
            <!-- <div class="layui-form-item">
                    <label class="layui-form-label">审核状态</label>
                    <div class="layui-input-block" style="width: 70%;">
                        <select name="IsQualified" id="IsQualified" lay-verify="">
                            <!-- <option value=""></option> -->
                            <option value=""></option>
                            <option value="0">不合格</option>
                            <option value="1" selected>合格</option>
                        </select>
                    </div>
            </div>
            </div> -->
            <div class="layui-form-item layui-hide">
                <input type="button" lay-submit lay-filter="layuiadmin-app-form-submit" id="layuiadmin-app-form-submit" value="确认添加">
            </div>
Pda/View/HouseDataSetting/artificialTransport.html
New file
@@ -0,0 +1,493 @@
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="user-scalable=0,width=device-width,initial-scale=1.0" />
    <meta charset="UTF-8" />
    <!-- <meta name="viewport" content="width=device-width, initial-scale=0.665, minimum-scale=0.5, maximum-scale=1, user-scalable=no" /> -->
    <!-- <meta name="viewport" content="width=device-width, initial-scale=0.665" /> -->
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>人工转运</title>
    <link rel="stylesheet" href="/layui/css/layui.css" />
    <link rel="stylesheet" href="/css/style.css" />
    <script src="/js/adaptive.js"></script>
    <link rel="stylesheet" href="/css/my.css" />
    <style type="text/css">
        .layui-form-label {
            width: 20%;
        }
        .layui-input-block {
            width: 80%;
            margin-left: 20%;
        }
        .div-tbl-title {
            width: 98%;
            margin: auto;
            /* background-color: #4476A7; */
            height: 30px;
            margin-top: 20px;
        }
        .div-tbl-title table {
            width: 100%;
            height: 30px;
        }
        .div-tbl-title td {
            width: 50%;
            height: 30px;
            line-height: 30px;
        }
        .div-tbl-title span {
            float: left;
            width: 60%;
            height: 30px;
            line-height: 30px;
        }
        .div-tbl-title input {
            float: left;
            width: 40%;
            height: 30px;
            line-height: 30px;
            border: none;
        }
        .layout-tbl-paging {
            margin-top: 0;
        }
        .layout-bill-info {
            height: auto;
        }
        .btn-ok {
            border: none;
            color: #FFFFFF;
            background-color: #0a93e3;
            width: 48%;
            height: 36px;
            border-radius: 5px;
            float: left;
            margin: 0 1%;
            margin-left: 25%;
        }
        .btn-ok:active {
            opacity: 0.8;
        }
        td {
            word-break: break-all;
            word-wrap: break-word;
        }
    </style>
    <link rel="stylesheet" href="/css/adapter.css" />
</head>
<body>
    <div id="" class="main-content">
        <div id="" class="layout-title">
            <table border="" cellspacing="" cellpadding="">
                <tr>
                    <td class="img-back"><a href="../index.html"><img src="/assets/back.jpg"></a></td>
                    <td class="title-text">人工转运</td>
                    <td class="title-menu-icon"><img id="menuImg" src="/assets/menu.jpg"></td>
                </tr>
            </table>
        </div>
        <div id="" class="layout-sub-content">
            <div id="menuList" class="menu">
                <ul class="" style="text-align: center;">
                    <li><a href="../index.html">主页</a></li>
                    <li><a href="../login.html">重新登录</a></li>
                </ul>
            </div>
            <div id="" class="layout-bill-info">
                <form class="layui-form" action="" style="height: auto;">
                    <div id="" class="layui-form-item layout-input">
                        <label class="layui-form-label" lang>托盘条码:</label>
                        <div class="layui-input-block">
                            <input id="STOCKCODE" type="text" lay-verify="stock" lang langholder
                                placeholder="请扫描托盘条码" autocomplete="off" class="layui-input">
                        </div>
                    </div>
                    <div id="" class="layui-form-item layout-input">
                        <label class="layui-form-label" lang>起始地码:</label>
                        <div class="layui-input-block">
                            <input id="LocatNo" type="text" lay-verify="stock" lang langholder placeholder="起始地码"
                                autocomplete="off" class="layui-input" readonly>
                        </div>
                    </div>
                    <div id="" class="layui-form-item layout-input">
                        <label class="layui-form-label" lang>目标地码:</label>
                        <div class="layui-input-block">
                            <input id="EndLocatNo" type="text" lay-verify="stock" lang langholder placeholder="目标地码"
                                autocomplete="off" class="layui-input">
                        </div>
                    </div>
                    <div id="" class="" style="width: 100%;height: 36px;margin-top: 15px;">
                        <button id="btnQuery" class="btn-ok" type="button">转运</button>
                    </div>
                </form>
            </div>
            <div class="layout-tbl-paging" id="">
                <table id="tableBoxList" class="tbl-box-list" border="" cellspacing="" cellpadding="">
                    <tr>
                        <th lang style="width: 15%;">物料编码</th>
                        <th lang style="width: 35%;">物料名称</th>
                        <th lang style="width: 25%;">批次</th>
                        <th lang style="width: 15%;">物料数量</th>
                    </tr>
                    <tr id="boxCell" style="display: none;">
                        <td name="code">AG000001</td>
                        <td name="name">疫苗名称名称名称</td>
                        <td name="lotNo">批次号</td>
                        <td name="num">30</td>
                    </tr>
                </table>
                <!-- 分页 -->
                <table id="tableBoxPages" class="tbl-box-pages" border="" cellspacing="" cellpadding="">
                    <tr>
                        <td class="page-prev">上一页</td>
                        <td class="page-num page-num-select">1</td>
                        <td class="page-num">2</td>
                        <td class="page-num">3</td>
                        <td class="page-num">4</td>
                        <td class="page-num">5</td>
                        <td class="page-next">下一页</td>
                    </tr>
                </table>
            </div>
        </div>
    </div>
    <script src="/js/jquery-3.5.1.min.js"></script>
    <script src="/layui/layui.js"></script>
    <script src="/js/public.js"></script>
    <script src="/js/jquery.cookie.js"></script>
    <script>
        layui.use(['form', 'jquery'], function () {
            var form = layui.form;
            //当前分页
            var curPageIndex = 1;
            var tableData = null;
            //-----------------------------------------------------------------------------------------------------
            // 托盘码文本改变时触发
            $("#STOCKCODE").on('input', function () {
                if ($("#STOCKCODE").val() == "" || $("#STOCKCODE").val().length < 8) {
                    return;
                }
                if ($("#STOCKCODE").val().length >= 8) {
                    $("#STOCKCODE").val($("#STOCKCODE").val().substr(-8))
                }
                getPalletLocatNo()
            })
            //托盘码回车事件
            $("#STOCKCODE").keydown(function (e) {
                if (e.keyCode === 13) {
                    if ($("#STOCKCODE").val() == "") {
                        layer.msg('请先扫描托盘条码', {
                            icon: 2,
                            time: 2000 //2秒关闭(如果不配置,默认是3秒)
                        });
                        return
                    }
                    getPalletLocatNo()
                }
            });
            function getPalletLocatNo() {
                var param = {
                    "PalletNo": $("#STOCKCODE").val()
                }
                sendData(IP + "/PdaCr/GetPalletLocatNo", param, 'get', function (res) {
                    if (res.code == 0) {
                        $("#LocatNo").val(res.data)
                        refreshTable()
                    } else {
                        $("#LocatNo").val('')
                        //先清空一下箱子列表
                        let trs = $("#tableBoxList tr")
                        let len = trs.length
                        for (i = len - 1; i >= 2; i--) {
                            trs[i].remove();
                        }
                        layer.msg(res.msg, {
                            icon: 2,
                            time: 2000 //2秒关闭(如果不配置,默认是3秒)
                        }, function () { });
                    }
                });
            }
            $("#btnQuery").click(function () {
                if ($("#STOCKCODE").val() == "") {
                    layer.msg('请扫描托盘条码', {
                        icon: 2,
                        time: 2000 //2秒关闭(如果不配置,默认是3秒)
                    });
                    return;
                }
                if ($("#LocatNo").val() == "") {
                    layer.msg('起始位置不能为空', {
                        icon: 2,
                        time: 2000 //2秒关闭(如果不配置,默认是3秒)
                    });
                    return;
                }
                if ($("#LocatNo").val() == "") {
                    layer.msg('目标地址不能为空', {
                        icon: 2,
                        time: 2000 //2秒关闭(如果不配置,默认是3秒)
                    });
                    return;
                }
                var param = {
                    PalletNo: $("#STOCKCODE").val(),
                    LocatNo: $("#LocatNo").val(),
                    EndLocatNo: $("#EndLocatNo").val()
                }
                //呼叫小车
                sendData(IP + "/PdaCr/ArtificialTransport", param, 'post', function (res) {
                    if (res.code == 0) { //成功
                        layer.msg(res.msg, {
                            icon: 1,
                            time: 1000 //2秒关闭(如果不配置,默认是3秒)
                        }, function () {
                        });
                    } else { //不成功
                        layer.msg(res.msg, {
                            icon: 2,
                            time: 2000 //2秒关闭(如果不配置,默认是3秒)
                        }, function () {
                            //回调
                        });
                    }
                });
                return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。
            })
            //-----------------------------------------------------------------------------------------------------
            // 渲染箱码信息
            function refreshTable() {
                //先清空一下箱子列表
                let trs = $("#tableBoxList tr")
                let len = trs.length
                for (i = len - 1; i >= 2; i--) {
                    trs[i].remove();
                }
                if ($("#STOCKCODE").val() == '') {
                    return;
                }
                var param = {
                    PalletNo: $("#STOCKCODE").val(),
                    IsHuiKu: 1
                };
                //  根据托盘号获取箱码信息
                sendData(IP + "/PdaCr/GetSkuInfoByPalletNo", param, 'get', function (res) {
                    if (res.code == 0) { //成功
                        var list = res
                        var arrTrs = new Array()
                        let idx = 0
                        for (var i in res.data) {
                            var tr = $("#boxCell").eq(0).clone();
                            tr.appendTo("#tableBoxList");
                            tr.attr('id', res.data[i].Id)
                            tr.attr('boxno', res.data[i].BoxNo)
                            tr.attr('BindNo', res.data[i].BindNo)
                            idx++;
                            tr.attr('index', idx)
                            tr.find("td[name='code']").html(res.data[i].BoxNo);
                            tr.find("td[name='name']").html(res.data[i].SkuName);
                            tr.find("td[name='lotNo']").html(res.data[i].LotNo);
                            tr.find("td[name='num']").html(res.data[i].Qty);
                            tr.show();
                            arrTrs[i] = tr
                        }
                    } else { //不成功
                        layer.msg("无数据", {
                            icon: 2,
                            time: 2000 //2秒关闭(如果不配置,默认是3秒)
                        }, function () { });
                        $("#boxNum").val(0)
                    }
                });
            }
            //设置分页
            function setPages(pageIndex, boxNum) {
                if (boxNum <= 0) {
                    //列表为空,隐藏分页页码
                    $("#tableBoxPages").hide()
                    return
                }
                let pageNum = Math.floor(boxNum / 10);
                if (boxNum % 10 > 0) {
                    pageNum += 1;
                }
                //console.log("pageNum is " + pageNum)
                $("#tableBoxPages").find("tr").remove()
                let table = $("#tableBoxPages")
                $("<tr></tr>").appendTo("#tableBoxPages")
                // let newTr = table.append("<tr></tr>")
                // newTr.append("<td class='page-prev'>上一页</td>")
                $("<td id='prevPage' class='page-prev'>上一页</td>").appendTo("#tableBoxPages tr")
                $("#tableBoxPages tr").eq(0).find("td[id^='prevPage']").click(function () {
                    onClickPrevPage()
                })
                for (i = 1; i < pageNum + 1; i++) {
                    // newTr.append("<td class='page-num'>"+ i +"</td>")
                    $("<td class='page-num'>" + i + "</td>").appendTo("#tableBoxPages tr")
                }
                // newTr.append("<td class='page-next'>下一页</td>")
                $("<td id='nextPage' class='page-next'>下一页</td>").appendTo("#tableBoxPages tr")
                $("#tableBoxPages tr").eq(0).find("td[id^='nextPage']").click(function () {
                    onClickNextPage()
                })
                // pages.show()
                $("#tableBoxPages").show()
                setCurPage(1)
            }
            //设置当前分页
            function setCurPage(pageIndex) {
                let totalTrNum = $("#tableBoxList tr").length
                if (totalTrNum <= 2) {
                    //console.log("tableBoxList 为空 totalTrNum: " + totalTrNum)
                    //curPageIndex = 1
                    return
                }
                let pageNum = getBoxPageNum()
                if (pageIndex > pageNum) {
                    //console.log("设置的页码超出页数, pageIndex : " + pageIndex)
                    //curPageIndex = 1
                    return
                }
                let startIndex = (pageIndex - 1) * 10 + 1
                let n = totalTrNum - startIndex
                let endIndex = 0
                if (n > 9) {
                    endIndex = startIndex + 9
                } else {
                    endIndex = startIndex + n
                }
                //console.log("startIndex is "+startIndex)
                //console.log("endIndex is "+endIndex)
                //startIndex =2
                //endIndex = 2
                let trs = $("#tableBoxList tr")
                //console.log("行数 "+trs.length)
                let d = 0
                for (let i = 2; i < trs.length; i++) {
                    //console.log("行索引 " + trs.eq(i).attr('index'))
                    let t = trs.eq(i)
                    d = t.attr('index')
                    if (d >= startIndex && d <= endIndex) {
                        //console.log("需要显示")
                        //显示行
                        t.show()
                    } else {
                        //隐藏行
                        t.hide()
                    }
                }
                curPageIndex = pageIndex
                let ptr = $("#tableBoxPages tr")
                for (let i = 1; i < pageNum + 1; i++) {
                    ptr.eq(0).find("td").eq(i).removeClass("page-num-select")
                    if (i == curPageIndex) {
                        ptr.eq(0).find("td").eq(i).addClass("page-num-select")
                    }
                }
                //console.log("totalTrNum is " + totalTrNum)
            }
            function onClickPrevPage() {
                //console.log("上一页按钮被点击")
                if (curPageIndex == 1) {
                    return
                }
                setCurPage(curPageIndex - 1)
            }
            function onClickNextPage() {
                //console.log("下一页按钮被点击")
                let n = getBoxPageNum()
                if (curPageIndex == n) {
                    return
                }
                setCurPage(curPageIndex + 1)
            }
            function getBoxPageNum() {
                let num = $("#tableBoxList tr").length
                if (num <= 2) {
                    return 0
                }
                let pageNum = Math.floor(num / 10);
                if (num % 10 > 0) {
                    pageNum += 1;
                }
                return pageNum
            }
            $("#menuImg").click(function (e) {
                //console.log("menuImg")
                e.stopPropagation()
                if ($("#menuList").is(":hidden")) {
                    $("#menuList").show()
                } else {
                    $("#menuList").hide()
                }
            })
            $('body').click(function () {
                $("#menuList").hide()
            })
            form.verify({
                stock: [/^[\S]{6}$/, '托盘条码必须为六位字符']
            });
        })
    </script>
</body>
</html>
Wms/Model/InterFaceModel/HttpModel.cs
@@ -982,7 +982,7 @@
        /// <summary>
        /// 箱内小包装数量
        /// </summary>
        public string BoxItemQty { get; set; }
        public decimal BoxItemQty { get; set; }
        /// <summary>
        /// 
        /// </summary>
Wms/Model/ModelDto/BllQualityDto/BllQualityInspectDto.cs
@@ -19,6 +19,13 @@
        public string ASNNo { get; set; }
        /// <summary>
        /// Desc:状态
        /// Default:
        /// Nullable:True
        /// </summary>
        public string Status { get; set; }
        /// <summary>
        /// Desc:批次号
        /// Default:
        /// Nullable:True
Wms/Model/ModelVm/PdaVm/PdaCrVm.cs
@@ -69,4 +69,21 @@
        /// </summary>
        public string Ruku { get; set; }
    }
    public class PdaArtificialTransportVm
    {
        /// <summary>
        /// 托盘条码
        /// </summary>
        public string PalletNo { get; set; }
        /// <summary>
        /// 起始地址
        /// </summary>
        public string LocatNo { get; set; }
        /// <summary>
        /// 目标地址
        /// </summary>
        public string EndLocatNo { get; set; }
    }
}
Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs
@@ -722,7 +722,7 @@
                            //{
                            //    maxLotNoStr = toDayTime.Substring(2, 6) + "0001";
                            //}
                            //maxBoxCode = label.Where(m => m.LotNo == maxLotNoStr).Max(a => a.BoxNo);
                            maxBoxCode = label.Where(m => m.LotNo == maxLotNoStr).Max(a => a.BoxNo);
                        }
                        
                    }
@@ -894,8 +894,8 @@
                            //{
                            //    maxCodestr2 = toDayTime2.Substring(2, 6) + "0001";
                            //}
                            //maxboxcode2 = label.Where(m => m.LotNo == maxCodestr2).Max(a => a.BoxNo);//箱号;
                            //maxboxcode3 = label.Where(m => m.LotNo == maxCodestr2).Max(a => a.BoxNo3);//支号;
                            maxboxcode2 = label.Where(m => m.LotNo == maxCodestr2).Max(a => a.BoxNo);//箱号;
                            maxboxcode3 = label.Where(m => m.LotNo == maxCodestr2).Max(a => a.BoxNo3);//支号;
                        }
                        
                    }
Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs
@@ -1378,8 +1378,12 @@
                    if (endLocate != null && endLocate.AreaNo == "B12") //是否是3楼缓存区 是:删除库存
                    {
                        if (string.IsNullOrWhiteSpace(item.SONo))
                        {
                            throw new Exception("当前托盘不是拼托出库托盘");
                        }
                        //记录托盘上信息给MES
                        data.Add(new RequertBeiliaoInfoModel()
                        {
                            materiel_no = item.SkuNo,
Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
@@ -24,6 +24,7 @@
using System.IO;
using System.Security.Cryptography.X509Certificates;
using System.Net.WebSockets;
using WMS.BLL.SysServer;
namespace WMS.BLL.BllPdaServer
{
@@ -1794,7 +1795,7 @@
        #region 产品组托
        public void GetBoxInfoByFuMa(string boxNo,string url)
        public void GetBoxInfoByFuMa(string boxNo,string url,string fuMaTokenUrl,string levelType)
        {
            try
            {
@@ -1865,77 +1866,86 @@
                #endregion
                #region 正式版本
                var token = new Token().GetFuMaToken(fuMaTokenUrl);
                var getParentVal = levelType == "1" ? "true" : "false";
                var getChildrenVal = levelType == "3" ? "true" : "false";
                Dictionary<string, string> paramDic = new Dictionary<string, string>
                {
                    { "Token", token }, //分配的令牌(变量)
                    { "Barcode", boxNo },//要查询的条码
                    { "getParent", getParentVal },//是否查询父码
                    { "getChildren", getChildrenVal } //是否查询子码
                };
                //程序正式发布后放开
                var time1 = DateTime.Now;//发送时间 .ToString("yyyy-MM-dd HH:mm:ss")
                var response = HttpHelper.DoGet(url, "赋码", "获取箱码信息", paramDic);
                var time2 = DateTime.Now;//返回时间 .ToString("yyyy-MM-dd HH:mm:ss")
                ////程序正式发布后放开
                //var time1 = DateTime.Now;//发送时间 .ToString("yyyy-MM-dd HH:mm:ss")
                ////var response = HttpHelper.DoGet(url, jsonData, "获取箱码信息", "赋码");
                //var time2 = DateTime.Now;//返回时间 .ToString("yyyy-MM-dd HH:mm:ss")
                //解析返回数据
                var fuMaModel = JsonConvert.DeserializeObject<FuMaGetBoxModel>(response);
                if (fuMaModel.IsSuccess)
                {
                    //赋码返回信息成功状态
                    if (fuMaModel.Product == null || fuMaModel.Barcodes.Count == 0)
                    {
                        throw new Exception("产品信息或箱支信息为空");
                    }
                ////解析返回数据
                //var fuMaModel = JsonConvert.DeserializeObject<FuMaGetBoxModel>(response);
                //if (fuMaModel.IsSuccess)
                //{
                //    //赋码返回信息成功状态
                //    if (fuMaModel.Product == null || fuMaModel.Barcodes.Count == 0)
                //    {
                //        throw new Exception("产品信息或箱支信息为空");
                //    }
                    foreach (var item in fuMaModel.Barcodes)
                    {
                        if (item.Barcode != boxNo)
                        {
                            throw new Exception("获取信息不一致");
                        }
                //    foreach (var item in fuMaModel.Barcodes)
                //    {
                //        if (item.Barcode != boxNo)
                //        {
                //            throw new Exception("获取信息不一致");
                //        }
                //        var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == fuMaModel.Product.ProductCode);
                //        if (sku == null)
                //        {
                //            throw new Exception("未查询到箱码中的物料信息");
                //        }
                //        //var boxInfo = new BllBoxInfo()
                //        //{
                //        //    ASNNo = "",
                //        //    //ASNDetailNo = 0,
                //        //    OrderCode = "",
                //        //    //BindNo = 0,
                //        //    BoxNo = item.BoxNo,
                //        //    BoxNo2 = item.BoxNo2,
                //        //    BoxNo3 = item.Barcode,
                //        //    PalletNo = "",
                //        //    Qty = item.Qty,
                //        //    FullQty = item.FullQty,
                //        //    Status = "0",
                //        //    SkuNo = item.SkuNo,
                //        //    SkuName = sku.SkuName,
                //        //    LotNo = item.LotNo,
                //        //    LotText = item.LotText,
                //        //    SupplierLot = item.SupplierLot,
                //        //    ProductionTime = item.ProductionTime,
                //        //    ExpirationTime = item.ExpirationTime,
                //        //    //CompleteTime = comTime,
                //        //    InspectMark = item.InspectMark,
                //        //    BitBoxMark = item.BitBoxMark,
                //        //    InspectStatus = item.InspectStatus,
                //        //    Origin = "赋码",
                //        //    Standard = item.Standard,
                //        //    PackageStandard = item.PackageStandard,
                //        //    StoreTime = item.StoreTime,
                //        //    QtyOrd = item.QtyOrd,
                //        //    QtyCount = item.QtyCount,
                //        //    CreateUser = 0,
                //        //    CreateTime = comTime,
                //        //};
                //        //list.Add(boxInfo);
                //    }
                //    Db.Insertable(list).ExecuteCommand();
                //}
                //else
                //{
                //    //赋码返回信息失败状态
                //    throw new Exception($"赋码系统返回状态异常:{fuMaModel.Message}");
                //}
                        var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == fuMaModel.Product.ProductCode);
                        if (sku == null)
                        {
                            throw new Exception("未查询到箱码中的物料信息");
                        }
                        var boxInfo = new BllBoxInfo()
                        {
                            ASNNo = "",
                            //ASNDetailNo = 0,
                            OrderCode = "",
                            //BindNo = 0,
                            BoxNo = item.Barcode,
                            BoxNo2 = item.Barcode,
                            BoxNo3 = item.Barcode,
                            PalletNo = "",
                            Qty = item.BoxItemQty,
                            FullQty = fuMaModel.BoxItemQty,
                            Status = "0",
                            SkuNo = sku.SkuNo,
                            SkuName = sku.SkuName,
                            LotNo = item.BatchNo,
                            //LotText = "",
                            //SupplierLot = item.SupplierLot,
                            ProductionTime = DateTime.Parse(item.ProductionDate),
                            ExpirationTime = DateTime.Parse(item.ExpirationDate),
                            //CompleteTime = comTime,
                            InspectMark = "0",
                            BitBoxMark = item.Status == "零箱"? "1":"0",
                            InspectStatus = "0",
                            Origin = "赋码",
                            Standard = fuMaModel.Product.Spec,
                            PackageStandard = fuMaModel.Product.PackageSpec,
                            //StoreTime = item.StoreTime,
                            //QtyOrd = item.QtyOrd,
                            //QtyCount = item.QtyCount,
                            CreateUser = 0,
                            CreateTime = comTime,
                        };
                        list.Add(boxInfo);
                    }
                    Db.Insertable(list).ExecuteCommand();
                }
                else
                {
                    //赋码返回信息失败状态
                    throw new Exception($"赋码系统返回状态异常:{fuMaModel.Message}");
                }
                #endregion
            }
@@ -1950,7 +1960,7 @@
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public List<BoxInfoDto> GetBindBoxInfos(BoxInfoVm model, string url)
        public List<BoxInfoDto> GetBindBoxInfos(BoxInfoVm model, string url, string fuMaTokenUrl)
        {
            try
            {
@@ -1970,7 +1980,7 @@
                            var count = Db.Queryable<BllBoxInfo>().Count(m => m.IsDel == "0" && m.Status == "0" && m.BoxNo == model.BoxNo);
                            if (count == 0)
                            {
                                GetBoxInfoByFuMa(model.BoxNo, url); //从赋码系统获取箱码信息
                                GetBoxInfoByFuMa(model.BoxNo, url, fuMaTokenUrl,"1"); //从赋码系统获取箱码信息
                            }
                        }
                    }
@@ -2007,7 +2017,7 @@
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public List<BoxInfoDto> GetBindBoxInfo2s(BoxInfoVm model, string url)
        public List<BoxInfoDto> GetBindBoxInfo2s(BoxInfoVm model, string url, string fuMaTokenUrl)
        {
            try
            {
@@ -2073,7 +2083,7 @@
                                }
                                else
                                {
                                    GetBoxInfoByFuMa(model.BoxNo3, url); //从赋码系统获取箱码信息
                                    GetBoxInfoByFuMa(model.BoxNo3, url, fuMaTokenUrl,"3"); //从赋码系统获取箱码信息
                                }
                            }
                        }
Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs
@@ -1,15 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Policy;
using System.Text;
using System.Threading.Tasks;
using Model.InterFaceModel;
using Model.ModelDto.BllCheckDto;
using Model.ModelDto.PdaDto;
using Model.ModelDto.SysDto;
using Model.ModelVm;
using Newtonsoft.Json;
using SqlSugar;
using Utility.Tools;
using WMS.BLL.LogServer;
using WMS.BLL.SysServer;
using WMS.DAL;
using WMS.Entity.BllAsnEntity;
using WMS.Entity.BllCheckEntity;
@@ -1333,6 +1337,166 @@
        }
        #endregion
        #region 人工转运
        //人工转运
        public void ArtificialTransport(string palletNo, string locatNo, string endLocatNo, string mesTokenUrl, string mesUrl,int userId)
        {
            if (string.IsNullOrEmpty(palletNo))
            {
                throw new Exception("请扫描托盘条码!");
            }
            if (string.IsNullOrEmpty(locatNo))
            {
                throw new Exception("请选择起始地址!");
            }
            if (string.IsNullOrEmpty(endLocatNo))
            {
                throw new Exception("请输入目标地址!");
            }
            try
            {
                #region 判断信息
                var stockDetail = Db.Queryable<DataStockDetail>().Where(w => w.IsDel == "0" && w.PalletNo == palletNo).ToList();
                if (stockDetail.Count == 0)
                {
                    throw new Exception("托盘上物料库存明细信息不存在,请检查!");
                }
                if (string.IsNullOrEmpty(stockDetail.First().LocatNo))
                {
                    throw new Exception("托盘储位信息不存在,请检查!");
                }
                if (stockDetail.First().WareHouseNo != "W02")
                {
                    throw new Exception("该托盘未在平库内,请检查!");
                }
                //起始储位信息
                var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == locatNo);
                if (storageLocat == null)
                {
                    throw new Exception("起始地址储位信息不存在,请检查!");
                }
                //目标储位信息
                var EndLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == endLocatNo);
                if (EndLocat == null)
                {
                    throw new Exception("目标地址储位信息不存在,请检查!");
                }
                #endregion
                //开启事务
                Db.BeginTran();
                //需先判断目标地址前方是否有空储位
                storageLocat.Status = "0"; //更改起始储位
                Db.Updateable(storageLocat).ExecuteCommand();
                EndLocat.Status = "1"; //更改目标储位
                Db.Updateable(storageLocat).ExecuteCommand();
                var data = new List<RequertBeiliaoInfoModel>();
                //更改库存明细
                foreach (var item in stockDetail)
                {
                    item.LocatNo = EndLocat.LocatNo;//储位更改
                    item.WareHouseNo = EndLocat.WareHouseNo;//所属仓库更改
                    item.RoadwayNo = EndLocat.RoadwayNo;//所属巷道更改
                    item.AreaNo = EndLocat.AreaNo;//所属区域更改
                    Db.Updateable(item).ExecuteCommand();
                    if (EndLocat != null && EndLocat.AreaNo == "B12") //是否是3楼缓存区 是:删除库存
                    {
                        if (string.IsNullOrWhiteSpace(item.SONo))
                        {
                            throw new Exception("当前托盘不是拼托出库托盘");
                        }
                        //记录托盘上信息给MES
                        data.Add(new RequertBeiliaoInfoModel()
                        {
                            materiel_no = item.SkuNo,
                            materiel_name = item.SkuName,
                            qty = item.Qty,
                            batch = item.LotNo,
                            producttime = item.ProductionTime,
                            expiry = item.ExpirationTime
                        });
                        //库存箱码明细删除
                        var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == item.Id).ToList();
                        Db.Deleteable(boxInfo).ExecuteCommand();
                        //删除库存托盘信息
                        Db.Deleteable(item).ExecuteCommand();
                        //更改库存总表
                        var stock = Db.Queryable<DataStock>().First(w => w.IsDel == "0" && w.SkuNo == item.SkuNo && w.LotNo == item.LotNo);
                        stock.LockQty -= (decimal)item.Qty;
                        stock.Qty -= (decimal)item.Qty;
                        Db.Updateable(stock).ExecuteCommand();
                        //更改托盘状态
                        var pallet = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == palletNo);
                        if (pallet != null)
                        {
                            pallet.Status = "0";
                            Db.Updateable(pallet).ExecuteCommand();
                        }
                    }
                }
                if (EndLocat != null && EndLocat.AreaNo == "B12")
                {
                    //获取令牌
                    var token = new Token().GetMesToken(mesTokenUrl);
                    Dictionary<string, string> mesDic = new Dictionary<string, string>()
                    {
                        {"Authorization",token }
                    };
                    var mesData = new RequertBeiliaoModel()
                    {
                        morder_no = stockDetail.First().SONo,
                        pallet = stockDetail.First().PalletNo,
                        layer_no = EndLocat.LocatNo,
                        items = data
                    };
                    var jsonData = JsonConvert.SerializeObject(mesData);
                    //调用接口
                    var response = HttpHelper.DoPost(mesUrl, jsonData, "备料完成运至缓存区反馈至MES", "MES", mesDic);
                    var obj = JsonConvert.DeserializeObject<MesModel>(response);//解析返回数据
                    if (obj.status != "0")
                    {
                        throw new Exception("备料同步MES失败:" + obj.message);
                    }
                }
                //添加操作日志记录
                var k = new OperationCrServer().AddLogOperationCr("PDA模块", "AGV转运", palletNo, "移库", $"PDA呼叫小车对托盘号:{palletNo}发起转运", userId);
                //提交事务
                Db.CommitTran();
            }
            catch (Exception ex)
            {
                Db.RollbackTran();
                throw new Exception(ex.Message);
            }
        }
        #endregion
        #region 箱码查询
        /// <summary>
        /// 箱码查询 
Wms/WMS.BLL/BllQualityServer/QualityInspectServer.cs
@@ -32,7 +32,7 @@
        /// <returns></returns>
        public List<BllQualityInspectDto> GetBllQualityList(BllQualityInspect model)
        {
            string str = "select q.Id Id,q.InspectNo InspectNo,q.ASNNo ASNNo,q.LotNo LotNo,q.SupplierLot SupplierLot,q.SkuNo SkuNo,q.SkuName SkuName,q.Standard Standard,q.PassQty PassQty,q.FailQty FailQty,q.Origin Origin,q.InspectTime InspectTime,q.IsOut IsOut,q.IsQualified IsQualified,q.IsDel IsDel,q.CreateTime CreateTime,u.RealName CreateUserName,q.UpdateTime UpdateTime,q.UpdateUser UpdateUserName from BllQualityInspect q left join SysUserInfor u on q.CreateUser = u.id where q.IsDel = @isdel";
            string str = "select q.Id Id,q.InspectNo InspectNo,q.ASNNo ASNNo,q.Status Status,q.LotNo LotNo,q.SupplierLot SupplierLot,q.SkuNo SkuNo,q.SkuName SkuName,q.Standard Standard,q.PassQty PassQty,q.FailQty FailQty,q.Origin Origin,q.InspectTime InspectTime,q.IsOut IsOut,q.IsQualified IsQualified,q.IsDel IsDel,q.CreateTime CreateTime,u.RealName CreateUserName,q.UpdateTime UpdateTime,q.UpdateUser UpdateUserName from BllQualityInspect q left join SysUserInfor u on q.CreateUser = u.id where q.IsDel = @isdel";
            ////判断入库单号是否为空
            //if (!string.IsNullOrEmpty(model.ASNNo))
@@ -131,40 +131,123 @@
            //if (quality != null)
            //{
                ////判断是否为退货入库单
                //if (isTui == 1)
                //{
                //    if (quality.ASNNo == model.ASNNo)
                //    {
                //        throw new Exception("当前退货入库单已创建质检信息,请勿重复创建!");
                //    }
                //}
            ////判断是否为退货入库单
            //if (isTui == 1)
            //{
            //    if (quality.ASNNo == model.ASNNo)
            //    {
            //        throw new Exception("当前退货入库单已创建质检信息,请勿重复创建!");
            //    }
            //}
            //    throw new Exception("当前物料和批次已进行质检,请核查!");
            //}
            ////查找同批次 同单据 入库单信息、
            //BllArrivalNoticeDetail arrivalDetail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.ASNNo == model.ASNNo && m.LotNo == model.LotNo);
            model.Status = "0";//审核状态
            model.Origin = "WMS"; //来源
            model.CreateTime = Db.GetDate(); //创建日期
            model.SkuNo = sku.SkuNo; //物料号
            model.SkuName = sku.SkuName; //物料名称
            model.PassQty = 0; //合格数量
            model.FailQty = 0; //不合格数量
            //model.PassQty = 0; //合格数量
            //model.FailQty = 0; //不合格数量
            model.Standard = sku.Standard; //规格
            //model.SupplierLot = arrivalDetail.SupplierLot; //供货批次
            //查找库存明细信息
            //List<DataStockDetail> detail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.SkuNo == model.SkuNo && m.LotNo == model.LotNo).ToList();
            //if (isTui == 1)
            //{
            //    detail = detail.Where(m=> m.ASNNo == model.ASNNo).ToList();
            //}
            //foreach (var item in detail)
            //{
            //    List<DataBoxInfo> box = Db.Queryable<DataBoxInfo>().Where(a => a.IsDel == "0" && a.StockDetailId == item.Id && a.SkuNo == model.SkuNo && a.LotNo == model.LotNo).ToList();
            //    //判断合格状态是否合格
            //    if (model.IsQualified == "1")
            //    {
            //        //合格 相同批次库存信息全部改为合格状态 且合格数量增加为同批次同单号该物料全部数量之和
            //        model.PassQty += item.Qty;
            //        //修改库存明细合格状态
            //        item.InspectStatus = "1"; //1合格
            //        foreach (var b1 in box)
            //        {
            //            b1.InspectStatus = "1"; //1合格
            //        }
            //    }
            //    else //不合格
            //    {
            //        //不合格 相同批次、入库单库存信息全部改为不合格物料 且不合格数量增加为同批次同单号该物料全部数量之和
            //        model.FailQty += item.Qty;
            //        item.InspectStatus = "2"; //2不合格
            //        foreach (var b1 in box)
            //        {
            //            b1.InspectStatus = "2"; //2不合格
            //        }
            //    }
            //    Db.Updateable(box).ExecuteCommand();
            //    Db.Updateable(item).ExecuteCommand();
            //}
            var isquality = Db.Insertable(model).ExecuteCommand();
            return isquality;
        }
        /// <summary>
        /// 质检复核信息
        /// </summary>
        /// <param name="model">质检信息实体模型</param>
        /// <returns></returns>
        public int FinshQuality(int id,string type,int userId)
        {
            //验证质检号是否为空
            if (string.IsNullOrEmpty(type))
            {
                throw new Exception("状态不能为空!");
            }
            var model = Db.Queryable<BllQualityInspect>().First(m=>m.IsDel == "0" && m.Id == id);
            if (model == null)
            {
                throw new Exception("未查询到质检信息");
            }
            int isTui = 0;
            //验证入库单号是否为空
            if (!string.IsNullOrEmpty(model.ASNNo))
            {
                //查询是否为退货入库单据
                var Arrival = Db.Queryable<BllArrivalNotice>().First(a => a.IsDel == "0" && a.ASNNo == model.ASNNo && (a.Type == "3" || a.Type == "4"));
                if (Arrival == null)
                {
                    throw new Exception("只有入库单据为退货入库单可输入入库单号,请核查!");
                }
                //获取入库单明细
                var ArrivalDetail = Db.Queryable<BllArrivalNoticeDetail>().First(a => a.IsDel == "0" && a.ASNNo == model.ASNNo && a.LotNo.Contains(model.LotNo) && a.SkuNo == model.SkuNo);
                if (ArrivalDetail == null)
                {
                    throw new Exception("输入的批次或物料信息与入库单据不符,请核查!");
                }
                isTui = 1;
            }
            model.Status = type; //规格
            model.IsQualified = type;
            //model.SupplierLot = arrivalDetail.SupplierLot; //供货批次
            //查找库存明细信息
            List<DataStockDetail> detail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.SkuNo == model.SkuNo && m.LotNo == model.LotNo).ToList();
            if (isTui == 1)
            {
                detail = detail.Where(m=> m.ASNNo == model.ASNNo).ToList();
                detail = detail.Where(m => m.ASNNo == model.ASNNo).ToList();
            }
            foreach (var item in detail)
            {
                List<DataBoxInfo> box = Db.Queryable<DataBoxInfo>().Where(a => a.IsDel == "0" && a.StockDetailId == item.Id && a.SkuNo == model.SkuNo && a.LotNo == model.LotNo).ToList();
                //判断合格状态是否合格
                if (model.IsQualified == "1")
                if (type == "1")
                {
                    //合格 相同批次库存信息全部改为合格状态 且合格数量增加为同批次同单号该物料全部数量之和
                    model.PassQty += item.Qty;
@@ -188,7 +271,7 @@
                Db.Updateable(box).ExecuteCommand();
                Db.Updateable(item).ExecuteCommand();
            }
            var isquality = Db.Insertable(model).ExecuteCommand();
            var isquality = Db.Updateable(model).ExecuteCommand();
            return isquality;
        }
Wms/WMS.Entity/BllQualityEntity/BllQualityInspect.cs
@@ -26,6 +26,13 @@
        public string ASNNo {get;set;}
        /// <summary>
        /// Desc:状态 0 等待审核 1 审核通过 2审核不通过
        /// Default:
        /// Nullable:True
        /// </summary>
        public string Status { get; set; }
        /// <summary>
        /// Desc:批次号
        /// Default:
        /// Nullable:True
Wms/WMS.IBLL/IBllQualityServer/IQualityInspectServer.cs
@@ -25,6 +25,14 @@
        /// <returns></returns>
        int InsertQuality(BllQualityInspect model);
        /// <summary>
        /// 复核质检结果
        /// </summary>
        /// <param name="id">ID</param>
        /// <param name="type">类型 1 通过  2 不通过</param>
        /// <param name="userId">操作人</param>
        /// <returns></returns>
        int FinshQuality(int id, string type, int userId);
        #endregion
    }
}
Wms/WMS.IBLL/IPdaServer/IPdaAsnServer.cs
@@ -74,12 +74,12 @@
        //零箱入库
        void CompleteInStockLing(PdaLingAsnVm model, int userId);
        void GetBoxInfoByFuMa(string boxNo, string url);
        void GetBoxInfoByFuMa(string boxNo, string url, string fuMaTokenUrl,string levelType);
        // 根据箱码获取标签箱码信息
        List<BoxInfoDto> GetBindBoxInfos(BoxInfoVm model, string url);
        List<BoxInfoDto> GetBindBoxInfos(BoxInfoVm model, string url, string fuMaTokenUrl);
        // 根据箱码获取标签最小追溯码信息
        List<BoxInfoDto> GetBindBoxInfo2s(BoxInfoVm model,string url);
        List<BoxInfoDto> GetBindBoxInfo2s(BoxInfoVm model,string url, string fuMaTokenUrl);
        //根据单据号获取单据明细列表
        List<ArrivalNoticeDetailDto> GetBindArrivalNoticeDetails(ArrivalNoticeVm model);
Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs
@@ -140,6 +140,19 @@
        List<string> AgvTransport2(string soNo, string palletNo, string areaNo, int userId, string url);
        #endregion
        #region 人工转运
        /// <summary>
        /// 人工转运
        /// </summary>
        /// <param name="palletNo"></param>
        /// <param name="locatNo"></param>
        /// <param name="endLocatNo"></param>
        /// <param name="mesTokenUrl"></param>
        /// <param name="mesUrl"></param>
        /// <param name="userId"></param>
        void ArtificialTransport(string palletNo, string locatNo, string endLocatNo, string mesTokenUrl, string mesUrl, int userId);
        #endregion
        #region 箱码查询
        /// <summary>
        /// pda库存查询
Wms/WMS.IBLL/ISysServer/IToken.cs
@@ -12,5 +12,13 @@
        /// <param name="url">mes获取令牌路径</param>
        /// <returns>token值</returns>
        string GetMesToken(string url);
        /// <summary>
        /// 获取赋码的token令牌
        /// </summary>
        /// <param name="url">赋码获取令牌路径</param>
        /// <returns>token值</returns>
        string GetFuMaToken(string url);
    }
}
Wms/Wms/Controllers/BllQualityController.cs
@@ -40,7 +40,7 @@
            {
                var bolls = _qualityServer.GetBllQualityList(model);
                return Ok(new { code = 0, msg = "质检信息", data = bolls });
                return Ok(new { code = 0,count = bolls.Count, msg = "质检信息", data = bolls });
            }
            catch (Exception e)
            {
@@ -81,6 +81,41 @@
            }
        }
        /// <summary>
        /// 添加复核信息
        /// </summary>
        /// <param name="model">质检信息实体模型</param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult InsertFuHe(BllQualityInspect model)
        {
            try
            {
                //获取当前登录的用户ID
                var claimsIdentity = this.User.Identity as ClaimsIdentity;
                if (claimsIdentity == null)
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
                if (string.IsNullOrWhiteSpace(userId))
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                model.CreateUser = int.Parse(userId);
                _qualityServer.InsertQuality(model);
                return Ok(new { code = 0, count = 0, msg = "物料质检信息操作成功", data = "" });
            }
            catch (Exception e)
            {
                return Ok(new { code = 1, msg = e.Message });
            }
        }
        #endregion
    }
}
Wms/Wms/Controllers/PdaAsnController.cs
@@ -528,7 +528,7 @@
        {
            try
            {
                var models = _PdaAsnSvc.GetBindBoxInfos(model, _config.BoxHost + _config.FuMaGetBoxUrl);
                var models = _PdaAsnSvc.GetBindBoxInfos(model, _config.BoxHost + _config.FuMaGetBoxUrl, _config.BoxHost + _config.FuMaGetTokenUrl);
                return Ok(new { code = 0, msg = "标签箱码信息", data = models });
            }
@@ -548,7 +548,7 @@
        {
            try
            {
                var models = _PdaAsnSvc.GetBindBoxInfo2s(model, _config.BoxHost + _config.FuMaGetBoxUrl);
                var models = _PdaAsnSvc.GetBindBoxInfo2s(model, _config.BoxHost + _config.FuMaGetBoxUrl, _config.BoxHost + _config.FuMaGetTokenUrl);
                return Ok(new { code = 0, msg = "标签箱码信息", data = models });
            }
Wms/Wms/Controllers/PdaCrController.cs
@@ -416,6 +416,43 @@
        }
        #endregion
        #region 人工转运
        /// <summary>
        /// 人工转运
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult ArtificialTransport(PdaArtificialTransportVm model)
        {
            try
            {
                //获取当前登录的用户ID
                var claimsIdentity = this.User.Identity as ClaimsIdentity;
                if (claimsIdentity == null)
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value;
                if (string.IsNullOrWhiteSpace(userId))
                {
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                var uId = int.Parse(userId);
                _pdaCrSvc.ArtificialTransport(model.PalletNo, model.LocatNo, model.EndLocatNo, _config.MesHost + _config.MesGetTokenUrl,_config.MesHost+_config.MesBeiLiaoUrl, uId);
                return Ok(new { data = "", code = 0, msg = "成功" });
            }
            catch (Exception e)
            {
                return Ok(new { data = "", code = 1, msg = $"异常:{e.Message}" });
            }
        }
        #endregion
        #region 箱码查询
        /// <summary>
        /// pda箱码查询
Wms/Wms/Tools/ApiUrlConfig.cs
@@ -26,6 +26,11 @@
        /// </summary>
        public string BoxHost { get; set; }
        /// <summary>
        /// AGV的IP
        /// </summary>
        public string AgvHost { get; set; }
        #region Erp系统
        /// <summary>
@@ -73,6 +78,11 @@
        /// 获取箱码信息
        /// </summary>
        public string FuMaGetBoxUrl { get; set; }
        /// <summary>
        /// 获取赋码令牌路径
        /// </summary>
        public string FuMaGetTokenUrl { get; set; }
        #endregion
Wms/Wms/appsettings.json
@@ -27,6 +27,7 @@
    "MesHost": "http://10.110.24.30:8081", //mesIP
    "WcsHost": "http://10.18.52.10:5005", // "http://localhost:57061", //wcsIPhttp://localhost:57061/
    "BoxHost": "http://10.110.24.30:8081", //boxIP
    "AgvHost": "http://10.110.24.30:8081", //agvIP
    // WCS
    "IssueComApiUrl": "/api/demo/wcsTasks", //下发命令(出库、移库)
@@ -45,6 +46,7 @@
    "MesGetTokenUrl": "/port/mes/service/system/sign_login", //获取令牌
    // 赋码
    "FuMaGetBoxUrl": "/port/mes/service/system/sign_login", //获取赋码箱码信息
    "FuMaGetTokenUrl": "/port/mes/service/system/sign_login", //获取令牌
    // AGV
    "GenAgvSchedulingTask": "http://IP:PORT/rcms/services/rest/hikRpcService/genAgvSchedulingTask", //生成任务单接口