zhaowc
2025-10-18 219a08427376efdd304e9b11e481ccd8276018bb
巷道形式存取放物料
7个文件已修改
809 ■■■■■ 已修改文件
HTML/views/HouseWithinSetting/HopperTransport.html 701 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Utility/Tools/RcsHelper.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllTransServer/HopperTransportServer.cs 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllTransServer/RcsServer.cs 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.IBLL/IBllTransServer/IHopperTransportServer.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Wms/Controllers/DownApiController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Wms/appsettings.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HTML/views/HouseWithinSetting/HopperTransport.html
@@ -1,19 +1,25 @@
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta charset="utf-8" />
    <title>料斗转运</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport"
        content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../layuiadmin/style/admin.css" media="all">
    <link rel="stylesheet" href="../../css/public.css" media="all">
    <meta name="renderer" content="webkit" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0" />
    <link
      rel="stylesheet"
      href="../../layuiadmin/layui/css/layui.css"
      media="all" />
    <link
      rel="stylesheet"
      href="../../layuiadmin/style/admin.css"
      media="all" />
    <link rel="stylesheet" href="../../css/public.css" media="all" />
    <style type="text/css">
        .layui-table-view .layui-table[lay-size=sm] .layui-table-cell {
      .layui-table-view .layui-table[lay-size="sm"] .layui-table-cell {
            height: auto;
            line-height: 23px;
        }
@@ -37,15 +43,12 @@
            display: none;
        }
    </style>
</head>
<body id="body">
    <div class="layui-fluid" style="padding-bottom: 0;height: 99%;">
        <div class="layui-card" style="height: 99%;">
            <div class="layui-card-body" style="height: 100%;">
    <div class="layui-fluid" style="padding-bottom: 0; height: 99%">
      <div class="layui-card" style="height: 99%">
        <div class="layui-card-body" style="height: 100%">
                    <div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief">
                        <ul class="layui-tab-title" id="tab">
                            <li class="layui-this">叫料</li>
@@ -56,7 +59,7 @@
                        <div class="layui-tab-content">
                            <div class="layui-tab-item layui-show ">
                                <div class="flesDiv" >
                                    <form class="layui-form" action="" style="width: 40%;">
                  <form class="layui-form" action="" style="width: 40%">
                                        <!-- <div class="layui-form-item">
                                            <label class="layui-form-label" style="width: 80px;">楼层</label>
                                            <div class="layui-input-block">
@@ -69,27 +72,41 @@
                                        </div> -->
                                       
                                        <div class="layui-form-item">
                                            <label class="layui-form-label" style="width: 80px;">区域</label>
                      <label class="layui-form-label" style="width: 80px"
                        >区域</label
                      >
                                            <div class="layui-input-block">
                                                <select id="AreaSelect" name="AreaSelect" lay-filter="AreaSelect" >
                        <select
                          id="AreaSelect"
                          name="AreaSelect"
                          lay-filter="AreaSelect">
                                                    <option value=""></option>
                                                </select>
                                            </div>
                                        </div>
                                           
                                        <div class="layui-form-item">
                                            <label class="layui-form-label" style="width: 80px;">目标位置</label>
                      <label class="layui-form-label" style="width: 80px"
                        >目标位置</label
                      >
                                            <div class="layui-input-block"> 
                                                <select id="LocateSelect" name="LocateSelect" lay-filter="LocateSelect" >
                        <select
                          id="LocateSelect"
                          name="LocateSelect"
                          lay-filter="LocateSelect">
                                                    <option value=""></option> 
                                                </select>
                                            </div>
                                        </div>
                                        <div class="layui-form-item">
                                            <label class="layui-form-label" style="width: 80px;">桶类型</label>
                      <label class="layui-form-label" style="width: 80px"
                        >桶类型</label
                      >
                                            <div class="layui-input-block">
                                                <select id="PalletStatus" name="PalletStatus" lay-filter="PalletStatus" >
                        <select
                          id="PalletStatus"
                          name="PalletStatus"
                          lay-filter="PalletStatus">
                                                    <option value=""></option>
                                                    <option value="0">净桶</option>
                                                    <option value="2">满桶</option> 
@@ -98,7 +115,9 @@
                                            </div>
                                        </div>
                                        <div class="layui-form-item" id="StandardDiv">
                                            <label class="layui-form-label" style="width: 80px;">规格</label>
                      <label class="layui-form-label" style="width: 80px"
                        >规格</label
                      >
                                            <div class="layui-input-block">
                                                <select name="Standard" lay-filter="Standard" >
                                                    <option value="400L">400L</option> 
@@ -108,59 +127,89 @@
                                            </div>
                                        </div>
                                        <div class="layui-form-item" id="SkuSelectDiv">
                                            <label class="layui-form-label" style="width: 80px;">物料</label>
                      <label class="layui-form-label" style="width: 80px"
                        >物料</label
                      >
                                            <div class="layui-input-block">
                                                <select id="SkuSelect" name="SkuSelect" lay-filter="SkuSelect" >
                        <select
                          id="SkuSelect"
                          name="SkuSelect"
                          lay-filter="SkuSelect">
                                                    <option value=""></option>
                                                </select>
                                            </div>
                                        </div>
                                        <div class="layui-form-item" id="LotNoSelectDiv">
                                            <label class="layui-form-label" style="width: 80px;">批次</label>
                      <label class="layui-form-label" style="width: 80px"
                        >批次</label
                      >
                                            <div class="layui-input-block">
                                                <select id="LotNoSelect" name="LotNoSelect" lay-filter="LotNoSelect" >
                        <select
                          id="LotNoSelect"
                          name="LotNoSelect"
                          lay-filter="LotNoSelect">
                                                    <option value=""></option>
                                                </select>
                                            </div>
                                        </div>
                                        <div class="layui-form-item" >
                                            <div class="layui-input-block">
                                                <button type="submit" class="layui-btn" lay-submit
                                                    lay-filter="demo1">立即提交</button>
                                                <button type="reset" class="layui-btn layui-btn-primary">重置</button>
                        <button
                          type="submit"
                          class="layui-btn"
                          lay-submit
                          lay-filter="demo1">
                          立即提交
                        </button>
                        <button
                          type="reset"
                          class="layui-btn layui-btn-primary">
                          重置
                        </button>
                                            </div>
                                        </div>
                                    </form>
                                </div>
                            </div>
                            <div class="layui-tab-item">
                                <div class="flesDiv" >
                                    <form class="layui-form" action="" style="width: 40%;">
                  <form class="layui-form" action="" style="width: 40%">
                                        <div class="layui-form-item">
                                            <label class="layui-form-label" style="width: 80px;">区域</label>
                      <label class="layui-form-label" style="width: 80px"
                        >区域</label
                      >
                                            <div class="layui-input-block">
                                                <select id="AreaSelect2" name="AreaSelect2" lay-filter="AreaSelect2" >
                        <select
                          id="AreaSelect2"
                          name="AreaSelect2"
                          lay-filter="AreaSelect2">
                                                    <option value=""></option>
                                                </select>
                                            </div>
                                        </div>
                                           
                                        <div class="layui-form-item">
                                            <label class="layui-form-label" style="width: 80px;">起始位置</label>
                      <label class="layui-form-label" style="width: 80px"
                        >起始位置</label
                      >
                                            <div class="layui-input-block"> 
                                                <select id="LocateSelect2" name="LocateSelect2" lay-filter="LocateSelect2" >
                        <select
                          id="LocateSelect2"
                          name="LocateSelect2"
                          lay-filter="LocateSelect2">
                                                    <option value=""></option> 
                                                </select>
                                            </div>
                                        </div>
                                        <div class="layui-form-item">
                                            <label class="layui-form-label" style="width: 80px;">桶类型</label>
                      <label class="layui-form-label" style="width: 80px"
                        >桶类型</label
                      >
                                            <div class="layui-input-block">
                                                <select id="PalletStatus2" name="PalletStatus2" lay-filter="PalletStatus2" >
                        <select
                          id="PalletStatus2"
                          name="PalletStatus2"
                          lay-filter="PalletStatus2">
                                                    <option value=""></option>
                                                     <option value="0">净桶</option> 
                                                    <option value="2">满桶</option> 
@@ -179,85 +228,132 @@
                                            </div>
                                        </div> -->
                                        <div class="layui-form-item" id="SkuSelectDiv2">
                                            <label class="layui-form-label" style="width: 80px;">物料</label>
                      <label class="layui-form-label" style="width: 80px"
                        >物料</label
                      >
                                            <div class="layui-input-block">
                                                <select id="SkuSelect2" name="SkuSelect2" lay-filter="SkuSelect2" >
                        <select
                          id="SkuSelect2"
                          name="SkuSelect2"
                          lay-filter="SkuSelect2">
                                                    <option value=""></option>
                                                </select>
                                            </div>
                                        </div>
                                        <div class="layui-form-item" id="LotNoSelectDiv2">
                                            <label class="layui-form-label" style="width: 80px;">批次</label>
                      <label class="layui-form-label" style="width: 80px"
                        >批次</label
                      >
                                            <div class="layui-input-block">
                                                <input type="text" id="LotNoInput" name="LotNoInput" placeholder="" autocomplete="off"
                                                    class="layui-input">
                        <input
                          type="text"
                          id="LotNoInput"
                          name="LotNoInput"
                          placeholder=""
                          autocomplete="off"
                          class="layui-input" />
                                            </div>
                                        </div>
                                        <div class="layui-form-item" id="WeightSelectDiv2">
                                            <label class="layui-form-label" style="width: 80px;">重量</label>
                      <label class="layui-form-label" style="width: 80px"
                        >重量</label
                      >
                                            <div class="layui-input-block"> 
                                                <input type="text" id="WeightInput" name="WeightInput" placeholder="" autocomplete="off"
                                                    class="layui-input">
                        <input
                          type="text"
                          id="WeightInput"
                          name="WeightInput"
                          placeholder=""
                          autocomplete="off"
                          class="layui-input" />
                                            </div>
                                        </div>
                                        <div class="layui-form-item" >
                                            <div class="layui-input-block">
                                                <button type="submit" class="layui-btn" lay-submit
                                                    lay-filter="demo2">立即提交</button>
                                                <button type="reset" class="layui-btn layui-btn-primary">重置</button>
                        <button
                          type="submit"
                          class="layui-btn"
                          lay-submit
                          lay-filter="demo2">
                          立即提交
                        </button>
                        <button
                          type="reset"
                          class="layui-btn layui-btn-primary">
                          重置
                        </button>
                                            </div>
                                        </div>
                                    </form>
                                </div>
                            </div>
                            <div class="layui-tab-item">
                                <div class="flesDiv" >
                                    <form class="layui-form" action="" style="width: 40%;">
                  <form class="layui-form" action="" style="width: 40%">
                                        <div class="layui-form-item">
                                            <label class="layui-form-label" style="width: 80px;">起始区域</label>
                      <label class="layui-form-label" style="width: 80px"
                        >起始区域</label
                      >
                                            <div class="layui-input-block">
                                                <select id="AreaSelect3" name="AreaSelect3" lay-filter="AreaSelect3" >
                        <select
                          id="AreaSelect3"
                          name="AreaSelect3"
                          lay-filter="AreaSelect3">
                                                    <option value=""></option>
                                                </select>
                                            </div>
                                        </div>
                                           
                                        <div class="layui-form-item">
                                            <label class="layui-form-label" style="width: 80px;">起始位置</label>
                      <label class="layui-form-label" style="width: 80px"
                        >起始位置</label
                      >
                                            <div class="layui-input-block"> 
                                                <select id="LocateSelect3" name="LocateSelect3" lay-filter="LocateSelect3" >
                        <select
                          id="LocateSelect3"
                          name="LocateSelect3"
                          lay-filter="LocateSelect3">
                                                    <option value=""></option> 
                                                </select>
                                            </div>
                                        </div>
                                        <div class="layui-form-item">
                                            <label class="layui-form-label" style="width: 80px;">目标区域</label>
                      <label class="layui-form-label" style="width: 80px"
                        >目标区域</label
                      >
                                            <div class="layui-input-block">
                                                <select id="AreaSelect4" name="AreaSelect4" lay-filter="AreaSelect4" >
                        <select
                          id="AreaSelect4"
                          name="AreaSelect4"
                          lay-filter="AreaSelect4">
                                                    <option value=""></option>
                                                </select>
                                            </div>
                                        </div>
                                           
                                        <div class="layui-form-item">
                                            <label class="layui-form-label" style="width: 80px;">目标位置</label>
                      <label class="layui-form-label" style="width: 80px"
                        >目标位置</label
                      >
                                            <div class="layui-input-block"> 
                                                <select id="LocateSelect4" name="LocateSelect4" lay-filter="LocateSelect4" >
                        <select
                          id="LocateSelect4"
                          name="LocateSelect4"
                          lay-filter="LocateSelect4">
                                                    <option value=""></option> 
                                                </select>
                                            </div>
                                        </div>
                                        <div class="layui-form-item">
                                            <label class="layui-form-label" style="width: 80px;">桶类型</label>
                      <label class="layui-form-label" style="width: 80px"
                        >桶类型</label
                      >
                                            <div class="layui-input-block">
                                                <select id="PalletStatus2" name="PalletStatus2" lay-filter="PalletStatus2" >
                        <select
                          id="PalletStatus2"
                          name="PalletStatus2"
                          lay-filter="PalletStatus2">
                                                    <option value=""></option>
                                                     <option value="0">净桶</option> 
                                                    <option value="2">满桶</option> 
@@ -266,41 +362,65 @@
                                            </div>
                                        </div>
                                        <div class="layui-form-item" id="SkuSelectDiv2">
                                            <label class="layui-form-label" style="width: 80px;">物料</label>
                      <label class="layui-form-label" style="width: 80px"
                        >物料</label
                      >
                                            <div class="layui-input-block">
                                                <select id="SkuSelect2" name="SkuSelect2" lay-filter="SkuSelect2" >
                        <select
                          id="SkuSelect2"
                          name="SkuSelect2"
                          lay-filter="SkuSelect2">
                                                    <option value=""></option>
                                                </select>
                                            </div>
                                        </div>
                                        <div class="layui-form-item" id="LotNoSelectDiv2">
                                            <label class="layui-form-label" style="width: 80px;">批次</label>
                      <label class="layui-form-label" style="width: 80px"
                        >批次</label
                      >
                                            <div class="layui-input-block">
                                                <input type="text" id="LotNoInput" name="LotNoInput" placeholder="" autocomplete="off"
                                                    class="layui-input">
                        <input
                          type="text"
                          id="LotNoInput"
                          name="LotNoInput"
                          placeholder=""
                          autocomplete="off"
                          class="layui-input" />
                                            </div>
                                        </div>
                                        <div class="layui-form-item" id="WeightSelectDiv2">
                                            <label class="layui-form-label" style="width: 80px;">重量</label>
                      <label class="layui-form-label" style="width: 80px"
                        >重量</label
                      >
                                            <div class="layui-input-block"> 
                                                <input type="text" id="WeightInput" name="WeightInput" placeholder="" autocomplete="off"
                                                    class="layui-input">
                        <input
                          type="text"
                          id="WeightInput"
                          name="WeightInput"
                          placeholder=""
                          autocomplete="off"
                          class="layui-input" />
                                            </div>
                                        </div>
                                        <div class="layui-form-item" >
                                            <div class="layui-input-block">
                                                <button type="submit" class="layui-btn" lay-submit
                                                    lay-filter="demo3">立即提交</button>
                                                <button type="reset" class="layui-btn layui-btn-primary">重置</button>
                        <button
                          type="submit"
                          class="layui-btn"
                          lay-submit
                          lay-filter="demo3">
                          立即提交
                        </button>
                        <button
                          type="reset"
                          class="layui-btn layui-btn-primary">
                          重置
                        </button>
                                            </div>
                                        </div>
                                    </form>
                                </div>
                            </div>
                        </div>
                    </div>
            </div>
@@ -311,15 +431,18 @@
    <script src="../../js/public.js"></script>
    <script src="../../js/jquery-3.5.1.min.js"></script>
    <script src="../../js/jquery.cookie.js"></script>
    <script type="text/javascript">
    </script>
    <script type="text/javascript"></script>
    <script>
        layui.config({
            base: '../../layuiadmin/' //静态资源所在路径
        }).extend({
            index: 'lib/index' //主入口模块
        }).use(['index', 'table', 'laypage', 'element', 'layer', 'laydate'], function () {
      layui
        .config({
          base: "../../layuiadmin/", //静态资源所在路径
        })
        .extend({
          index: "lib/index", //主入口模块
        })
        .use(
          ["index", "table", "laypage", "element", "layer", "laydate"],
          function () {
            var table = layui.table;
            var form = layui.form;
            var element = layui.element;
@@ -335,12 +458,11 @@
            //tab切换判断值
            var yemianid = 0; 
            //监听Tab切换,以改变地址hash值
            element.on('tab(docDemoTabBrief)', function (data) {
            element.on("tab(docDemoTabBrief)", function (data) {
                yemianid = data.index;
                console.log(yemianid);
                if (yemianid == 0) {
                } else if (yemianid == 1) {
                }
            });
@@ -349,10 +471,9 @@
            $("#SkuSelectDiv").hide();
            $("#LotNoSelectDiv").hide();
            var doing = true;
            // 叫料提交事件
            form.on('submit(demo1)', function (data) {
            form.on("submit(demo1)", function (data) {
                var field = data.field; // 获取表单字段值
                var param = {
                    AreaNo: field.AreaSelect,
@@ -360,33 +481,45 @@
                    PlnStatus:field.PalletStatus,
                    Standard:field.Standard,
                    SkuNo:field.SkuSelect,
                    LotNo:field.LotNoSelect
                LotNo: field.LotNoSelect,
                };
                sendData(IP + "/DownApi/jiaoLiaoHopper", param, 'post', function(res) {
                    if (res.code == 0) { //成功
                        layer.msg(res.msg, {
              sendData(
                IP + "/DownApi/jiaoLiaoHopper",
                param,
                "post",
                function (res) {
                  if (res.code == 0) {
                    //成功
                    layer.msg(
                      res.msg,
                      {
                            icon: 1,
                            time: 1000 //2秒关闭(如果不配置,默认是3秒)
                        }, function() {
                        });
                    } else { //不成功
                        layer.msg(res.msg, {
                        time: 1000, //2秒关闭(如果不配置,默认是3秒)
                      },
                      function () {}
                    );
                  } else {
                    //不成功
                    layer.msg(
                      res.msg,
                      {
                            icon: 2,
                            time: 2000 //2秒关闭(如果不配置,默认是3秒)
                        }, function() {});
                        time: 2000, //2秒关闭(如果不配置,默认是3秒)
                      },
                      function () {}
                    );
                    }
                });
                }
              );
                return false; // 阻止默认 form 跳转
            });
            
            // 叫车提交事件
            form.on('submit(demo2)', function (data) {
            form.on("submit(demo2)", function (data) {
                var field = data.field; // 获取表单字段值
                console.log("field.WeightInput:"+field.WeightInput);
                
                if(field.WeightInput.length != 0)
                {
              if (field.WeightInput.length != 0) {
                    a = parseFloat(field.WeightInput);
                }
                var param = {
@@ -395,37 +528,49 @@
                    PlnStatus:field.PalletStatus2,
                    SkuNo:field.SkuSelect2,
                    LotNo:field.LotNoInput,
                    Weight:a
                Weight: a,
                };
                console.log(param);
                
                sendData(IP + "/DownApi/jiaoCheHopper", param, 'post', function(res) {
                    if (res.code == 0) { //成功
                        layer.msg(res.msg, {
              sendData(
                IP + "/DownApi/jiaoCheHopper",
                param,
                "post",
                function (res) {
                  if (res.code == 0) {
                    //成功
                    layer.msg(
                      res.msg,
                      {
                            icon: 1,
                            time: 1000 //2秒关闭(如果不配置,默认是3秒)
                        }, function() {
                        });
                    } else { //不成功
                        layer.msg(res.msg, {
                        time: 1000, //2秒关闭(如果不配置,默认是3秒)
                      },
                      function () {}
                    );
                  } else {
                    //不成功
                    layer.msg(
                      res.msg,
                      {
                            icon: 2,
                            time: 2000 //2秒关闭(如果不配置,默认是3秒)
                        }, function() {});
                        time: 2000, //2秒关闭(如果不配置,默认是3秒)
                      },
                      function () {}
                    );
                    }
                });
                }
              );
                return false; // 阻止默认 form 跳转
            });
        
            GetArea();
            
            form.on('select(AreaSelect)', function(data) {
            form.on("select(AreaSelect)", function (data) {
                GetLocate(data.value);
                GetPlnStatus(data.value)
              GetPlnStatus(data.value);
            });
            form.on('select(PalletStatus)', function(data) {
            form.on("select(PalletStatus)", function (data) {
                //0:净桶 1:预混 2:半成品 3:脏桶
                if (data.value == "0") {
                    $("#StandardDiv").show();
@@ -435,11 +580,11 @@
                    $("#StandardDiv").hide();
                    $("#SkuSelectDiv").show();
                    $("#LotNoSelectDiv").show();
                    GetSku(data.value)
                GetSku(data.value);
                }
            });
            
            form.on('select(SkuSelect)', function(data) {
            form.on("select(SkuSelect)", function (data) {
                GetLotNo(data.value);
            });
@@ -449,21 +594,38 @@
                $("#AreaSelect").append('<option value =""></option>');
                
                //获取仓库下拉框信息
                sendData(IP + "/DownApi/GetAreaListByUser", {}, 'get', function(res) {
                    if (res.code == 0) { //成功
              sendData(
                IP + "/DownApi/GetAreaListByUser",
                {},
                "get",
                function (res) {
                  if (res.code == 0) {
                    //成功
                        
                        console.log(res.data); 
                        for (var i = 0; i < res.data.length; i++) {
                            $("#AreaSelect").append('<option value =' + res.data[i].AreaNo + '>' + res.data[i].AreaName +'</option>');
                      $("#AreaSelect").append(
                        "<option value =" +
                          res.data[i].AreaNo +
                          ">" +
                          res.data[i].AreaName +
                          "</option>"
                      );
                        } 
                        form.render('select');
                    } else { //不成功
                        layer.msg(res.msg, {
                    form.render("select");
                  } else {
                    //不成功
                    layer.msg(
                      res.msg,
                      {
                            icon: 2,
                            time: 2000 //2秒关闭(如果不配置,默认是3秒)
                        }, function() {});
                        time: 2000, //2秒关闭(如果不配置,默认是3秒)
                      },
                      function () {}
                    );
                    }
                });
                }
              );
            }
        
            // 获取储位
@@ -472,19 +634,36 @@
                $("#LocateSelect").append('<option value =""></option>'); 
                //获取仓库下拉框信息
                sendData(IP + "/DownApi/GetLocatByArea", {"areaNo":val}, 'get', function(res) {
                    if (res.code == 0) { //成功
              sendData(
                IP + "/DownApi/GetLocatByArea",
                { areaNo: val },
                "get",
                function (res) {
                  if (res.code == 0) {
                    //成功
                        for (var i = 0; i < res.data.length; i++) {
                            $("#LocateSelect").append('<option value =' + res.data[i].LocatNo + '>' + res.data[i].LocatNo +'</option>');
                      $("#LocateSelect").append(
                        "<option value =" +
                          res.data[i].LocatNo +
                          ">" +
                          res.data[i].LocatNo +
                          "</option>"
                      );
                        } 
                        form.render('select');
                    } else { //不成功
                        layer.msg(res.msg, {
                    form.render("select");
                  } else {
                    //不成功
                    layer.msg(
                      res.msg,
                      {
                            icon: 2,
                            time: 2000 //2秒关闭(如果不配置,默认是3秒)
                        }, function() {});
                        time: 2000, //2秒关闭(如果不配置,默认是3秒)
                      },
                      function () {}
                    );
                    }
                });
                }
              );
            }
            // 获取桶类型
@@ -493,19 +672,36 @@
                $("#PalletStatus").append('<option value =""></option>');
                //获取仓库下拉框信息
                sendData(IP + "/DownApi/GetPlnStatusByArea", {"areaNo":val}, 'get', function(res) {
                    if (res.code == 0) { //成功
              sendData(
                IP + "/DownApi/GetPlnStatusByArea",
                { areaNo: val },
                "get",
                function (res) {
                  if (res.code == 0) {
                    //成功
                        for (var i = 0; i < res.data.length; i++) { 
                            $("#PalletStatus").append('<option value =' + res.data[i].dic1 + '>' + res.data[i].dic2 +'</option>');
                      $("#PalletStatus").append(
                        "<option value =" +
                          res.data[i].dic1 +
                          ">" +
                          res.data[i].dic2 +
                          "</option>"
                      );
                        } 
                        form.render('select');
                    } else { //不成功
                        layer.msg(res.msg, {
                    form.render("select");
                  } else {
                    //不成功
                    layer.msg(
                      res.msg,
                      {
                            icon: 2,
                            time: 2000 //2秒关闭(如果不配置,默认是3秒)
                        }, function() {});
                        time: 2000, //2秒关闭(如果不配置,默认是3秒)
                      },
                      function () {}
                    );
                    }
                });
                }
              );
            }
            //获取物料
@@ -514,19 +710,36 @@
                $("#SkuSelect").append('<option value =""></option>');
                //获取仓库下拉框信息
                sendData(IP + "/DownApi/GetSkuByStatus", {"palletStatus":val}, 'get', function(res) {
                    if (res.code == 0) { //成功
              sendData(
                IP + "/DownApi/GetSkuByStatus",
                { palletStatus: val },
                "get",
                function (res) {
                  if (res.code == 0) {
                    //成功
                        for (var i = 0; i < res.data.length; i++) {
                            $("#SkuSelect").append('<option value =' + res.data[i] + '>' + res.data[i] +'</option>');
                      $("#SkuSelect").append(
                        "<option value =" +
                          res.data[i].SkuNo +
                          ">" +
                          res.data[i].SkuName +
                          "</option>"
                      );
                        } 
                        form.render('select');
                    } else { //不成功
                        layer.msg(res.msg, {
                    form.render("select");
                  } else {
                    //不成功
                    layer.msg(
                      res.msg,
                      {
                            icon: 2,
                            time: 2000 //2秒关闭(如果不配置,默认是3秒)
                        }, function() {});
                        time: 2000, //2秒关闭(如果不配置,默认是3秒)
                      },
                      function () {}
                    );
                    }
                });
                }
              );
            }
            
            //获取批次
@@ -535,21 +748,37 @@
                $("#LotNoSelect").append('<option value =""></option>');
                //获取仓库下拉框信息
                sendData(IP + "/DownApi/GetLotNoBySku", {"skuNo":val}, 'get', function(res) {
                    if (res.code == 0) { //成功
              sendData(
                IP + "/DownApi/GetLotNoBySku",
                { skuNo: val },
                "get",
                function (res) {
                  if (res.code == 0) {
                    //成功
                        for (var i = 0; i < res.data.length; i++) {
                            $("#LotNoSelect").append('<option value =' + res.data[i] + '>' + res.data[i] +'</option>');
                      $("#LotNoSelect").append(
                        "<option value =" +
                          res.data[i] +
                          ">" +
                          res.data[i] +
                          "</option>"
                      );
                        } 
                        form.render('select');
                    } else { //不成功
                        layer.msg(res.msg, {
                    form.render("select");
                  } else {
                    //不成功
                    layer.msg(
                      res.msg,
                      {
                            icon: 2,
                            time: 2000 //2秒关闭(如果不配置,默认是3秒)
                        }, function() {});
                        time: 2000, //2秒关闭(如果不配置,默认是3秒)
                      },
                      function () {}
                    );
                    }
                });
            }
              );
            }
        
            //------------------------------------------------------------------------------------
            
@@ -558,11 +787,10 @@
            $("#LotNoSelectDiv2").hide();
            GetArea2();
            GetSku2();
            form.on('select(AreaSelect2)', function(data) {
            form.on("select(AreaSelect2)", function (data) {
                GetLocate2(data.value); 
            });
            form.on('select(PalletStatus2)', function(data) {
            form.on("select(PalletStatus2)", function (data) {
                //0:净桶 1:预混 2:半成品 3:脏桶
                if (data.value == "2") {
                    $("#WeightSelectDiv2").show();
@@ -572,7 +800,7 @@
                    $("#WeightSelectDiv2").hide();
                    $("#SkuSelectDiv2").hide();
                    $("#LotNoSelectDiv2").show();
                    GetSku(data.value)
                GetSku(data.value);
                }
            });
@@ -581,21 +809,38 @@
                $("#AreaSelect2").empty();
                $("#AreaSelect2").append('<option value =""></option>');
                //获取仓库下拉框信息
                sendData(IP + "/DownApi/GetAreaListByUser", {}, 'get', function(res) {
                    if (res.code == 0) { //成功
              sendData(
                IP + "/DownApi/GetAreaListByUser",
                {},
                "get",
                function (res) {
                  if (res.code == 0) {
                    //成功
                        
                        console.log(res.data); 
                        for (var i = 0; i < res.data.length; i++) {
                            $("#AreaSelect2").append('<option value =' + res.data[i].AreaNo + '>' + res.data[i].AreaName +'</option>');
                      $("#AreaSelect2").append(
                        "<option value =" +
                          res.data[i].AreaNo +
                          ">" +
                          res.data[i].AreaName +
                          "</option>"
                      );
                        } 
                        form.render('select');
                    } else { //不成功
                        layer.msg(res.msg, {
                    form.render("select");
                  } else {
                    //不成功
                    layer.msg(
                      res.msg,
                      {
                            icon: 2,
                            time: 2000 //2秒关闭(如果不配置,默认是3秒)
                        }, function() {});
                        time: 2000, //2秒关闭(如果不配置,默认是3秒)
                      },
                      function () {}
                    );
                    }
                });
                }
              );
            }
        
            // 获取储位
@@ -604,19 +849,36 @@
                $("#LocateSelect2").append('<option value =""></option>');
                //获取仓库下拉框信息
                sendData(IP + "/DownApi/GetLocatByArea", {"areaNo":val}, 'get', function(res) {
                    if (res.code == 0) { //成功
              sendData(
                IP + "/DownApi/GetLocatByArea",
                { areaNo: val },
                "get",
                function (res) {
                  if (res.code == 0) {
                    //成功
                        for (var i = 0; i < res.data.length; i++) {
                            $("#LocateSelect2").append('<option value =' + res.data[i].LocatNo + '>' + res.data[i].LocatNo +'</option>');
                      $("#LocateSelect2").append(
                        "<option value =" +
                          res.data[i].LocatNo +
                          ">" +
                          res.data[i].LocatNo +
                          "</option>"
                      );
                        } 
                        form.render('select');
                    } else { //不成功
                        layer.msg(res.msg, {
                    form.render("select");
                  } else {
                    //不成功
                    layer.msg(
                      res.msg,
                      {
                            icon: 2,
                            time: 2000 //2秒关闭(如果不配置,默认是3秒)
                        }, function() {});
                        time: 2000, //2秒关闭(如果不配置,默认是3秒)
                      },
                      function () {}
                    );
                    }
                });
                }
              );
            }
        
            //获取物料
@@ -625,27 +887,34 @@
                $("#SkuSelect2").append('<option value =""></option>');
                //获取仓库下拉框信息
                sendData(IP + "/DownApi/GetSku", {}, 'get', function(res) {
                    if (res.code == 0) { //成功
              sendData(IP + "/DownApi/GetSku", {}, "get", function (res) {
                if (res.code == 0) {
                  //成功
                        for (var i = 0; i < res.data.length; i++) {
                            $("#SkuSelect2").append('<option value =' + res.data[i] + '>' + res.data[i] +'</option>');
                    $("#SkuSelect2").append(
                      "<option value =" +
                        res.data[i].SkuNo +
                        ">" +
                        res.data[i].SkuName +
                        "</option>"
                    );
                        } 
                        form.render('select');
                    } else { //不成功
                        layer.msg(res.msg, {
                  form.render("select");
                } else {
                  //不成功
                  layer.msg(
                    res.msg,
                    {
                            icon: 2,
                            time: 2000 //2秒关闭(如果不配置,默认是3秒)
                        }, function() {});
                      time: 2000, //2秒关闭(如果不配置,默认是3秒)
                    },
                    function () {}
                  );
                    }
                });
            }
        });
          }
        );
    </script>
</body>
</html>
Wms/Utility/Tools/RcsHelper.cs
@@ -45,7 +45,11 @@
            }
            //跨楼层任务tasktype值赋值……
            //tasktype = "";
            if (taskDetial.Endport.Substring(0,3) == "C01")
            {
                tasktype = "F23";
            }
            List<targetRoute> pahtList = new List<targetRoute>();
            //起始位置
Wms/WMS.BLL/BllTransServer/HopperTransportServer.cs
@@ -159,13 +159,14 @@
        /// <param name="palletStatus"></param>
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
        public List<string> GetSkuByStatus(string palletStatus)
        public List<DataStockDetail> GetSkuByStatus(string palletStatus)
        {
            try
            {
                //获取储位上的库存物料
                var detail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && !string.IsNullOrWhiteSpace(m.LocatNo) && m.PalletStatus == palletStatus).Select(m=>m.SkuNo).Distinct().ToList();
                return detail;
                var detail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && !string.IsNullOrWhiteSpace(m.LocatNo) && m.PalletStatus == palletStatus).ToList();
                List<DataStockDetail> result = detail.GroupBy(x => x.SkuNo).Select(xx => xx.First()).ToList();
                return result;
            }
            catch (Exception e)
            {
@@ -191,12 +192,14 @@
            }
        }
        public List<string> GetSku()
        public List<SysMaterials> GetSku()
        {
            try
            {
                //获取储位上的库存物料
                var detail = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0" ).Select(m => m.SkuNo).Distinct().ToList();
                //var detail = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0" ).Select(m => m.SkuNo).Distinct().ToList();
                var detail = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0").ToList();
                return detail;
            }
            catch (Exception e)
@@ -264,12 +267,20 @@
                    throw new Exception("没有查询到仓库信息");
                }
                //查找状态是未分配且储位不为空的库存信息
                var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.Status == "0" && m.WareHouseNo == house.WareHouseNo && !string.IsNullOrWhiteSpace(m.LocatNo)).ToList();
                var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.Status == "0" && m.WareHouseNo == house.WareHouseNo && !string.IsNullOrWhiteSpace(m.LocatNo) && m.IsDel=="0").ToList();
                //净桶
                if (plnStatus == "0")
                if (plnStatus == "0")  //4L叫净桶不分楼层
                {
                    stockDetail = stockDetail.Where(m => m.PalletStatus == "0" && m.Standard == standard).OrderBy(m => m.LocatNo).ToList();
                    if (house.WareHouseNo == "M01")
                    {
                        stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.Status == "0" && m.PalletStatus == "0" && m.Standard == standard && !string.IsNullOrWhiteSpace(m.LocatNo)).OrderBy(m => m.LocatNo).ToList();
                    }
                    else
                    {
                        stockDetail = stockDetail.Where(m => m.IsDel == "0" && m.Status == "0" && m.PalletStatus == "0" && m.Standard == standard && !string.IsNullOrWhiteSpace(m.LocatNo)).OrderBy(m => m.LocatNo).ToList();
                    }
                }
                //满桶
                else if (plnStatus == "2") 
@@ -292,12 +303,12 @@
                bool resultYi = false;
                #region#查找合适的 桶号 储位
                //目标仓库所有储位
                var locatList = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.WareHouseNo == house.WareHouseNo).ToList();
                //目标仓库所有不需要移库的储位
                var locatList = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Flag=="0" && w.WareHouseNo == house.WareHouseNo).OrderBy(w=>w.Column).ToList();
                //目标仓库所有最外侧的储位
                var locatListWai = locatList.Where(w => string.IsNullOrEmpty(w.AisleOne)).Select(s => s.LocatNo);
                //先找不需要移库的桶
                var palletModel = stockDetail.Where(w => locatListWai.Contains(w.LocatNo)).OrderByDescending(w => w.UpdateTime).FirstOrDefault();
                var palletModel = stockDetail.Where(w => locatListWai.Contains(w.LocatNo) && w.Status == "0").OrderByDescending(w => w.UpdateTime).FirstOrDefault();
                if (palletModel == null)
                {
                    //找需要移库的桶
@@ -383,16 +394,12 @@
                        }
                        else//失败
                        {
                            logTaskEntry.IsSuccess = 0;
                            logTaskEntry.Information = agvMsg;
                            Db.Updateable(logTaskEntry).ExecuteCommand();
                            throw new Exception("桶号:"+ task.Pallno + ",调度小车失败");
                        }
                    }
                    else 
                    {
                        logTaskEntry.IsSuccess = 0;
                        logTaskEntry.Information = "货架与货位绑定失败,原因:"+agvBindMsg;
                        Db.Updateable(logTaskEntry).ExecuteCommand();
                        throw new Exception("桶号:" + task.Pallno + ",绑定货位失败");
                    }
                   
                }
@@ -428,6 +435,11 @@
                if (string.IsNullOrWhiteSpace(areaNo) || string.IsNullOrWhiteSpace(StartLocate) || string.IsNullOrWhiteSpace(plnStatus))
                {
                    throw new Exception("区域/起始位/桶类型不能为空");
                }
                if (weight < 0)
                {
                    throw new Exception("重量应不小于0");
                }
                //if (plnStatus == "0" && string.IsNullOrWhiteSpace(standard))
@@ -586,17 +598,13 @@
                    }
                    else//失败
                    {
                        logTaskEntry.IsSuccess = 0;
                        logTaskEntry.Information = agvMsg;
                        Db.Updateable(logTaskEntry).ExecuteCommand();
                        throw new Exception("桶号:" + task.Pallno + ",调度小车失败");
                    }
                }
                else
                {
                    logTaskEntry.IsSuccess = 0;
                    logTaskEntry.Information = "货架与货位绑定失败,原因:"+agvBindMsg;
                    Db.Updateable(logTaskEntry).ExecuteCommand();
                    throw new Exception("桶号:" + task.Pallno + ",绑定货位失败");
                }
                
@@ -619,7 +627,7 @@
        /// <param name="comeFrom"></param>
        /// <param name="userId"></param>
        /// <exception cref="Exception"></exception>
        public void RCSFinishTask(string taskNo, string status, string comeFrom, int userId = 0)
        public void RCSFinishTask(string taskNo, string locateNo, string status, string comeFrom, int userId = 0)
        {
            try
            {
@@ -659,7 +667,7 @@
                    return;
                }
                //库存明细
                var stockDetail = Db.Queryable<DataStockDetail>().First(w => w.PalletNo == taskInfo.PalletNo);
                var stockDetail = Db.Queryable<DataStockDetail>().First(w => w.PalletNo == taskInfo.PalletNo && w.IsDel=="0");
                if (stockDetail == null)
                {
                    throw new Exception($"桶库存信息不存在");
@@ -829,7 +837,7 @@
                            //判断当前清洗机设备上有几个脏桶,status:2 正在清洗的脏桶(状态触发变更为AGV叫第2个脏桶时触发)
                            int ztQty = Db.Queryable<DataStockDetail>().Count(w => w.IsDel == "0" && w.Status == "2" && w.LocatNo == deviceID);
                            if (ztQty == 1)
                            if (ztQty == 2)
                            {
                                throw new Exception((deviceID == "1001"?"1":"2") + "号清洗机脏桶已满,重复叫料!");
                            }
@@ -866,6 +874,14 @@
                            {
                                throw new Exception($"起始目标储位信息不存在,桶号:{palletModel.LocatNo}");
                            }
                            //起始桶信息
                            var startDataDetil = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.Status == "0" && w.PalletStatus == "3");
                            if (startDataDetil == null)
                            {
                                throw new Exception($"清洗机所叫的桶状态错误,桶号:{palletModel.LocatNo}");
                            }
                            startDataDetil.Status = "4";
                            Db.Updateable(startDataDetil).ExecuteCommand();
                        }
                        else
                        {
@@ -891,7 +907,7 @@
                            {
                                palletModel.LocatNo = startLoction.LocatNo;
                                palletModel.PalletStatus = "0";
                                palletModel.Status = "0";
                                palletModel.Status = "4";
                                Db.Updateable(palletModel).ExecuteCommand();
                            }
                            //分配储位
@@ -903,13 +919,13 @@
                                throw new Exception("没有空余的净桶储位");
                            }
                            //优先分配四楼中间站净桶区
                            //endLoction = jtLocate.Where(w => w.WareHouseNo == "M01" && w.AreaNo == "C01")
                            //                    .OrderBy(w => w.Row).OrderByDescending(w => w.Column).FirstOrDefault();
                            //if (endLoction == null)//四楼中间站净桶区没有空储位,再从三楼中间站净桶区查找
                            //{
                            endLoction = jtLocate.Where(w => w.WareHouseNo == "M01" && w.AreaNo == "C01")
                                                .OrderBy(w => w.Row).OrderByDescending(w => w.Column).FirstOrDefault();
                            if (endLoction == null)//四楼中间站净桶区没有空储位,再从三楼中间站净桶区查找
                            {
                            endLoction = jtLocate.Where(w => w.WareHouseNo == "M16" && w.AreaNo == "C24")
                                                .OrderBy(w => w.Row).OrderByDescending(w => w.Column).FirstOrDefault();
                            //}
                            }
                            if (endLoction == null)//三楼中间站净桶区没有空储位,再从三楼清洗间缓存区查找             PS:小车现在还不支持清洗机直接送往4楼净桶区
                            {
                                endLoction = jtLocate.Where(w => w.WareHouseNo == "M44" && w.AreaNo == "C55")
@@ -996,16 +1012,12 @@
                    }
                    else//失败
                    {
                        logTaskEntry.IsSuccess = 0;
                        logTaskEntry.Information = agvMsg;
                        Db.Updateable(logTaskEntry).ExecuteCommand();
                        throw new Exception("桶号:" + task.Pallno + ",调度小车失败");
                    }
                }
                else
                {
                    logTaskEntry.IsSuccess = 0;
                    logTaskEntry.Information = agvBindMsg;
                    Db.Updateable(logTaskEntry).ExecuteCommand();
                    throw new Exception("桶号:" + task.Pallno + ",绑定货位失败");
                }
                
                //提交事务
@@ -1046,6 +1058,8 @@
                //判断该储位是否是内侧储位
                if (!string.IsNullOrEmpty(locatInfo.AisleOne))
                {
                    ////获取当前库位的外侧储位信息
                    //var waiLocatInfo = Db.Queryable<SysStorageLocat>().First(w=>w.IsDel == "0" && w.Row == locatInfo.Row && w.Column == locatInfo.Column - 1);
                    //判断外侧储位是否有桶
                    var palletInfoYi = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.LocatNo == locatInfo.AisleOne);
                    if (palletInfoYi != null)
@@ -1429,6 +1443,7 @@
                string areaNo = string.Empty;
                switch (palletStatus)
                {
                    case "0"://净桶
                             //查到到净桶区域编号
                        areaNo = Db.Queryable<SysStorageArea>().Where(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.Type == "0").Select(s => s.AreaNo).First();
Wms/WMS.BLL/BllTransServer/RcsServer.cs
Wms/WMS.IBLL/IBllTransServer/IHopperTransportServer.cs
@@ -2,6 +2,7 @@
using System;
using System.Collections.Generic;
using System.Text;
using WMS.Entity.DataEntity;
using WMS.Entity.SysEntity;
namespace WMS.IBLL.IBllTransServer
@@ -12,9 +13,9 @@
        List<SysStorageLocat> GetLocatByArea(string area);
        List<DicModel> GetPlnStatusByArea(string area);
        List<string> GetSkuByStatus(string palletStatus);
        List<DataStockDetail> GetSkuByStatus(string palletStatus);
        List<string> GetLotNoBySku(string skuNo);
        List<string> GetSku();
        List<SysMaterials> GetSku();
        void jiaoLiaoHopper(string areaNo, string endLocate, string plnStatus, string standard, string skuNo, string lotNo, string url,string bindUrl, int userId);
        void jiaoCheHopper(string areaNo, string StartLocate, string plnNo, string plnStatus, decimal weight, string skuNo, string lotNo, string url, string bindUrl, int userId);
@@ -35,7 +36,7 @@
        /// <param name="comeFrom"></param>
        /// <param name="userId"></param>
        /// <exception cref="Exception"></exception>
        void RCSFinishTask(string taskNo, string status, string comeFrom, int userId = 0);
        void RCSFinishTask(string taskNo, string locateNo, string status, string comeFrom, int userId = 0);
        /// <summary>
        /// 清洗机叫料状态
Wms/Wms/Controllers/DownApiController.cs
@@ -956,7 +956,7 @@
                LogFile.SaveLogToFile($"AGV任务执行通知-任务结束-请求报文:( {jsonData} ),", logStr);
               
                //具体处理方法
                _hopper.RCSFinishTask(model.robotTaskCode, "1", "AGV");
                _hopper.RCSFinishTask(model.robotTaskCode, extraValue.values.slotCode, "1", "AGV");
                Data data = new Data();
                data.robotTaskCode = model.robotTaskCode;
Wms/Wms/appsettings.json
@@ -11,7 +11,7 @@
    //"ConnectionString": "Server=47.95.120.93;Database=WMS_JC09;User ID=sa;password=boxline!@#; Integrated Security=True;",
    //"ConnectionString": "Server=47.95.120.53;Database=WMS_JC09;User ID=sa;Password=boxline!@#;Integrated Security=False;",
    //"ConnectionString": "Server=192.168.62.106;Database=WMS_JC24;User ID=sa;Password=sql2019;Integrated Security=False;",
    "ConnectionString": "Server=192.168.62.200;Database=WMS_JC37;User ID=sa;Password=sql2019;Integrated Security=False;"
    "ConnectionString": "Server=192.168.10.201\\WMSSQLSERVER;Database=WMS_JC37;User ID=sa;Password=sa@123456;Integrated Security=False;"
    //"ConnectionString": "Server=.;Database=WMS_JC37;User ID=sa;Password=sa@123456;Integrated Security=False;"
    //"ConnectionString": "Data Source=192.168.10.201\\WMSSQLSERVER;Database=WMS_JC37;User ID=sa;Password=sa@123456;Integrated Security=False;"
    //"ConnectionString": "Server=.\\MSSQLSERVER2019;Database=WMS_JC23-2;User Id=sa;Password=admin2023@;" // SqlServer 库连接字符串