Administrator
2024-03-02 18dfe607d34ecbc7881e8c80c8434354723d27c7
Merge branch 'master' into wxw
8个文件已修改
625 ■■■■ 已修改文件
HTML/views/HouseWithinSetting/StockCheck.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Pda/View/HouseDataSetting/stockCheck.html 100 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Model/ModelVm/PdaVm/PdaCrVm.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs 291 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs 215 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Wms/Controllers/PdaCrController.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HTML/views/HouseWithinSetting/StockCheck.html
@@ -695,7 +695,7 @@
                            });
                        });
                    } else if (obj.event === 'finish') {//生成调整单
                        layer.confirm('确定完成此单据吗?', function(index) {
                        layer.confirm('确定调整库存吗?', function(index) {
                            var param = {
                                Id: parseInt(Id), 
                                Origin:data.Origin
Pda/View/HouseDataSetting/stockCheck.html
@@ -168,6 +168,9 @@
            word-break: break-all;
            word-wrap: break-word;
        }
        .layui-form-switch {
            margin-top: 0;
        }
    </style>
    <link rel="stylesheet" href="/css/adapter.css" />
</head>
@@ -218,9 +221,16 @@
                                autocomplete="off" class="layui-input">
                        </div>
                    </div>
                    <div class="layout-tab-page">
                        <div class="layui-form-item layout-input" style="margin-top: 10px;">
                        <div id="" class="layui-form-item layout-input"  >
                            <label class="layui-form-label">是否数量盘点:</label>
                            <div class="layui-input-block" style="position: absolute;top: 100;">
                                <input type="checkbox" name="IsZhengTuo" id="IsZhengTuo" lay-skin="switch" lay-text="是|否"
                                    lay-filter="IsZhengTuo" class="layui-input" >
                            </div>
                        </div>
                        <div id="boxno1" class="layui-form-item layout-input" style="margin-top: 10px;">
                            <label class="layui-form-label">箱码:</label>
                            <div class="layui-input-block">
                                <input id="boxNo" type="text" lay-verify="boxNo" placeholder="请扫描外箱条码"
@@ -239,7 +249,7 @@
                            <div class="layui-input-block">
                                <select id="Result" lay-filter="Result" lay-search>
                                    <!-- <option value=""></option> -->
                                    <option value="0" selected>正常</option>
                                    <option value="0">正常</option>
                                    <option value="1">盘亏</option>
                                    <option value="2">盘盈</option>
                                </select>
@@ -276,13 +286,13 @@
                </form>
            </div>
            <div id="" class="layout-tbl-paging">
            <div id="tableid" class="layout-tbl-paging">
                <table id="tableBoxList" class="tbl-box-list" border="" cellspacing="" cellpadding="">
                    <tr>
                        <th style="width: 40%;">箱码</th>
                        <th style="width: 30%;">支码</th>
                        <th style="width: 15%;">箱内数量</th>
                        <th style="width: 15%;">结果</th>
                        <th style="width: 40%;"><p id="a">箱码</p></th>
                        <th style="width: 30%;"><p id="b">支码</p></th>
                        <th style="width: 15%;"><p id="c">箱内数量</p></th>
                        <th style="width: 15%;"><p id="d">结果</p></th>
                    </tr>
                    <tr id="boxCell" style="display: none;">
                        <td name="boxNo"></td>
@@ -310,6 +320,51 @@
            var canPickBox = true;
            $("#palletNo").focus();
            //是否数量盘点
            var isContinue = "0";
            form.on('switch(IsZhengTuo)', function (obj) {
                $("#a").html('');
                $("#b").html('');
                $("#c").html('');
                if (obj.elem.checked) {
                    $('#boxno1').attr("style", "display:none")
                    $('#boxno3').attr("style", "display:none")
                    isContinue="1";
                    $("#a").html('物料编码');
                    $("#b").html('托盘条码');
                    $("#c").html('托盘数量');
                } else {
                    $('#boxno1').attr("style", "display:block")
                    $('#boxno3').attr("style", "display:block")
                    isContinue="0";
                    $("#a").html('箱码');
                    $("#b").html('支码');
                    $("#c").html('箱内数量');
                    if ($("#Result").val() != "0") {
                        $('#boxno3').addClass("show");
                        $('#boxno3').removeClass("noshow");
                    }else{
                        $('#boxno3').addClass("noshow");
                        $('#boxno3').removeClass("show");
                    }
                    if($("#Result").val() == "2"){
                        $('#factNum').removeAttr("disabled");
                    }
                    else{
                        $('#factNum').attr("disabled","disabled");
                    }
                }
                $('#boxNo').val("");
                $('#boxNo3').val("");
                refreshTable()
                checkPalletState()
            });
            $("#menuImg").click(function (e) {
                //console.log("menuImg")
@@ -326,7 +381,7 @@
                $("#menuList").hide()
            })
            // //当托盘条码输入框失去焦点时,检查一下托盘状态
            //当托盘条码输入框失去焦点时,检查一下托盘状态
            // $("#palletNo").blur(function () {
            //     //console.log("0000000000000")
            //     if ($("#palletNo").val() == "") {
@@ -447,7 +502,9 @@
                    "CrDetail": $("#skuLotNo").val(),
                    "PalletNo": $("#palletNo").val(),
                    "BoxNo": $("#boxNo").val(),
                    "isContinue": isContinue,
                }
                console.log(param)
                synData(IP + "/PdaCr/GetStockCheckLogList", param, 'post', function (res) {
                    console.log(res)
                    if (res.code == 0) { //成功 
@@ -482,7 +539,7 @@
                    }, function () { });
                    return
                }
                if ($("#Result").val() == "2") {
                if ($("#Result").val() == "2" && isContinue == "0") {
                    if ($("#boxNo").val() == "" ||$("#boxNo3").val() == "") {
                        layer.msg("请扫描外箱条码和支码", {
                            icon: 2,
@@ -509,6 +566,7 @@
                        "BoxNo3": $("#boxNo3").val(),
                        "Result": $("#Result").val(),
                        "Qty": parseInt($("#factNum").val()),
                        "isContinue": isContinue,
                    }
                    sendData(IP + "/PdaCr/CrSetCheck", param, 'post', function (res) {
                        
@@ -523,6 +581,7 @@
                                $("#boxNo3").val('')
                                $("#Result").val('0')
                                refreshTable()
                                GetOutInfo()
                                canPickBox = true
                            });
@@ -551,10 +610,10 @@
                    $('#boxno3').addClass("noshow");
                    $('#boxno3').removeClass("show");
                }
                if(data.value == "2"){
                if(data.value == "2" || isContinue == "1"){
                    $('#factNum').removeAttr("disabled");
                }
                else{
                else if(isContinue != "1"){
                    $('#factNum').attr("disabled","disabled");
                }
                $('#boxNo3').val("");
@@ -574,7 +633,7 @@
                }
                if (data.length > 0) { //成功
                if (data.length > 0 || isContinue == "1") { //成功
                    $("#boxNum").val(data.length)
                    var list = data
                    var arrTrs = new Array()
@@ -586,9 +645,18 @@
                        tr.appendTo("#tableBoxList");
                        idx++;
                        tr.attr('index', idx)
                        tr.find("td[name='boxNo']").html(list[i].BoxNo);
                        tr.find("td[name='boxNo3']").html(list[i].BoxNo3);
                        //判断是否为数量
                        if(isContinue == "1")
                        {
                            tr.find("td[name='boxNo']").html(list[i].SkuNo);
                            tr.find("td[name='boxNo3']").html(list[i].PalletNo);
                        }
                        else{
                            tr.find("td[name='boxNo']").html(list[i].BoxNo);
                            tr.find("td[name='boxNo3']").html(list[i].BoxNo3);
                        }
                        tr.find("td[name='qty']").html(list[i].Qty);
                        var CheckResultStr='';
                        if(list[i].CheckResult=='0'){
@@ -599,6 +667,8 @@
                            CheckResultStr='盘盈';
                        }else if(list[i].CheckResult=='3'){
                            CheckResultStr='实物不符';
                        }else if(list[i].CheckResult=='4'){
                            CheckResultStr='数量盘点';
                        }
                        tr.find("td[name='result']").html(CheckResultStr);
Wms/Model/ModelVm/PdaVm/PdaCrVm.cs
@@ -36,6 +36,11 @@
        /// </summary>
        public string Result { get; set; }
        /// <summary>
        /// 是否数量盘点
        /// </summary>
        public string isContinue { get; set; }
    }
    public class PdaPalletCheckVm
Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs
@@ -11,6 +11,7 @@
using Model.ModelVm.BllCheckVm;
using Newtonsoft.Json;
using SqlSugar;
using SqlSugar.Extensions;
using Utility.Tools;
using WMS.BLL.LogServer;
using WMS.DAL;
@@ -107,7 +108,7 @@
            try
            {
                var total = 0;
                var list = Db.Queryable<BllStockCheckDetail>().Where(m => m.IsDel =="0" && m.CRNo == crNo)
                var list = Db.Queryable<BllStockCheckDetail>().Where(m => m.IsDel == "0" && m.CRNo == crNo)
                    .LeftJoin<SysUserInfor>((a, b) => a.CreateUser == b.Id)
                    .LeftJoin<SysUserInfor>((a, b, c) => a.UpdateUser == c.Id)
                    .Select((a, b, c) => new StockCheckDetailDto()
@@ -234,7 +235,7 @@
                if (string.IsNullOrWhiteSpace(model.CrNo))
                {
                    var num = Db.Queryable<BllStockCheck>().Count(m => m.IsDel == "0" && (m.Status == 0 || m.Status == 1));
                    if (num>0)
                    if (num > 0)
                    {
                        throw new Exception("已有等待执行的盘点单据请先完成或删除");
                    }
@@ -339,7 +340,7 @@
                                CreateTime = time
                            };
                            list.Add(detail);
                            var sd = Db.Queryable<DataStockDetail>().Where(m => m.IsDel =="0" && m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.PalletNo == item.PalletNo && m.Status == "0").ToList();
                            var sd = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.PalletNo == item.PalletNo && m.Status == "0").ToList();
                            foreach (var s in sd)
                            {
                                s.Status = "3";
@@ -356,7 +357,7 @@
                    }
                    if (list.Count>0)
                    if (list.Count > 0)
                    {
                        Db.Insertable(list).ExecuteCommand();
                    }
@@ -397,7 +398,7 @@
                    d.IsDel = "1";
                    d.UpdateTime = time;
                    d.UpdateUser = userId;
                    var item = Db.Queryable<DataStockDetail>().Where(m => m.IsDel =="0" && m.PalletNo == d.PalletNo && m.SkuNo ==d.SkuNo && m.LotNo == d.LotNo && m.Status == "3").ToList();
                    var item = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == d.PalletNo && m.SkuNo == d.SkuNo && m.LotNo == d.LotNo && m.Status == "3").ToList();
                    foreach (var i in item)
                    {
                        i.Status = "0";
@@ -543,80 +544,129 @@
                    //循环盘点记录
                    foreach (var l in demo)
                    {
                        var sku = Db.Queryable<SysMaterials>().First(a => a.IsDel == "0" && a.SkuNo == l.SkuNo);
                        if (l.CheckResult == 0)//正常
                        {
                            var de3 = stockBox.First(m => m.BoxNo == l.BoxNo && m.BoxNo3 == l.BoxNo3);
                            if (de3 == null)
                            if (sku.Type != "4")
                            {
                                throw new Exception($"未查询到{l.BoxNo}箱中{l.BoxNo3}库存箱码的信息");
                                var de3 = stockBox.First(m => m.BoxNo == l.BoxNo && m.BoxNo3 == l.BoxNo3);
                                if (de3 == null)
                                {
                                    throw new Exception($"未查询到{l.BoxNo}箱中{l.BoxNo3}库存箱码的信息");
                                }
                                var de2 = stockDetail.First(m => m.Id == de3.StockDetailId);
                                if (de2 == null)
                                {
                                    throw new Exception($"未查询到{l.BoxNo}箱中{l.BoxNo3}库存明细的信息");
                                }
                                de2.Status = "0";//将库存明细状态改为待分配
                                Db.Updateable(de2).ExecuteCommand();
                            }
                            var de2 = stockDetail.First(m => m.Id == de3.StockDetailId);
                            if (de2 == null)
                            else
                            {
                                throw new Exception($"未查询到{l.BoxNo}箱中{l.BoxNo3}库存明细的信息");
                                var de2 = stockDetail.First(m => m.PalletNo == l.PalletNo && m.SkuNo == l.SkuNo);
                                if (de2 == null)
                                {
                                    throw new Exception($"未查询到{l.PalletNo}的库存明细的信息");
                                }
                                de2.Status = "0";//将库存明细状态改为待分配
                                Db.Updateable(de2).ExecuteCommand();
                            }
                            de2.Status = "0";//将库存明细状态改为待分配
                            Db.Updateable(de2).ExecuteCommand();
                        }
                        else if (l.CheckResult == 1)//盘亏
                        {
                            var de3 = stockBox.First(m => m.BoxNo == l.BoxNo && m.BoxNo3 == l.BoxNo3);
                            if (de3 == null)
                            if (sku.Type != "4")
                            {
                                throw new Exception($"未查询到{l.BoxNo}箱中{l.BoxNo3}库存箱码的信息");
                            }
                                var de3 = stockBox.First(m => m.BoxNo == l.BoxNo && m.BoxNo3 == l.BoxNo3);
                                if (de3 == null)
                                {
                                    throw new Exception($"未查询到{l.BoxNo}箱中{l.BoxNo3}库存箱码的信息");
                                }
                            var de2 = stockDetail.First(m => m.Id == de3.StockDetailId);
                            if (de2 == null)
                            {
                                throw new Exception($"未查询到{l.BoxNo}箱中{l.BoxNo3}库存明细的信息");
                            }
                            de2.Status = "0";
                            de2.Qty -= de3.Qty;
                            var de = stock.First(m => m.SkuNo == l.SkuNo && m.LotNo == l.LotNo);
                            if (de == null)
                            {
                                throw new Exception($"未查询到物料{l.SkuNo}批次{l.LotNo}的总库存的信息");
                            }
                            de.Qty -= de3.Qty;
                                var de2 = stockDetail.First(m => m.Id == de3.StockDetailId);
                                if (de2 == null)
                                {
                                    throw new Exception($"未查询到{l.BoxNo}箱中{l.BoxNo3}库存明细的信息");
                                }
                                de2.Status = "0";
                                de2.Qty -= de3.Qty;
                                var de = stock.First(m => m.SkuNo == l.SkuNo && m.LotNo == l.LotNo);
                                if (de == null)
                                {
                                    throw new Exception($"未查询到物料{l.SkuNo}批次{l.LotNo}的总库存的信息");
                                }
                                de.Qty -= de3.Qty;
                            Db.Updateable(de).ExecuteCommand();
                            Db.Updateable(de2).ExecuteCommand();
                            Db.Deleteable(de3).ExecuteCommand();
                                Db.Updateable(de).ExecuteCommand();
                                Db.Updateable(de2).ExecuteCommand();
                                Db.Deleteable(de3).ExecuteCommand();
                            }
                            else
                            {
                                var de2 = stockDetail.First(m => m.PalletNo == l.PalletNo && m.SkuNo == l.SkuNo);
                                if (de2 == null)
                                {
                                    throw new Exception($"未查询到{l.PalletNo}的库存明细的信息");
                                }
                                de2.Status = "0";
                                de2.Qty = l.RealQty;
                                var de = stock.First(m => m.SkuNo == l.SkuNo && m.LotNo == l.LotNo);
                                if (de == null)
                                {
                                    throw new Exception($"未查询到物料{l.SkuNo}批次{l.LotNo}的总库存的信息");
                                }
                                de.Qty -= Convert.ToDecimal(l.Qty - l.RealQty);
                                Db.Updateable(de).ExecuteCommand();
                                Db.Updateable(de2).ExecuteCommand();
                            }
                        }
                        else if (l.CheckResult == 2)//盘盈
                        {
                            var stockDetailInfo = stockDetail.First(m => m.PalletNo == d.PalletNo && m.SkuNo == d.SkuNo && m.LotNo == d.LotNo);//库存明细
                            var stockBoxInfo = stockBox.First(m => m.StockDetailId == stockDetailInfo.Id);//库存箱支明细
                            var boxInfo = boxQtyList.First(m => m.boxNo == l.BoxNo);//找到对应箱子是否零箱
                            //添加库存箱支信息
                            var databox = new DataBoxInfo
                            {
                                StockDetailId = stockDetailInfo.Id,
                                BindNo= stockBoxInfo.BindNo,
                                BoxNo = l.BoxNo,
                                BoxNo2 = l.BoxNo2,
                                BoxNo3 = l.BoxNo3,
                                PalletNo = l.PalletNo,
                                Qty = (int)l.RealQty,
                                FullQty = stockBoxInfo.FullQty,//满箱数量
                                Status = "2",
                                SkuNo = l.SkuNo,
                                SkuName = l.SkuName,
                                LotNo = l.LotNo,
                                LotText = l.LotText,
                                Standard = l.Standard,
                                SupplierLot = l.SupplierLot,
                        {
                                InspectMark = stockBoxInfo.InspectMark,
                                InspectStatus = stockBoxInfo.InspectStatus,
                                ProductionTime = stockBoxInfo.ProductionTime,
                                BitBoxMark = boxInfo.bitBoxMark,
                            };
                            Db.Insertable<DataBoxInfo>(databox).ExecuteCommand();
                            //库存明细增加数量
                            stockDetailInfo.Qty += (int)l.RealQty;
                            var stockDetailInfo = stockDetail.First(m => m.PalletNo == d.PalletNo && m.SkuNo == d.SkuNo && m.LotNo == d.LotNo);//库存明细
                            if (sku.Type != "4")
                            {
                                var stockBoxInfo = stockBox.First(m => m.StockDetailId == stockDetailInfo.Id);//库存箱支明细
                                var boxInfo = boxQtyList.First(m => m.boxNo == l.BoxNo);//找到对应箱子是否零箱
                                                                                        //添加库存箱支信息
                                var databox = new DataBoxInfo
                                {
                                    StockDetailId = stockDetailInfo.Id,
                                    BindNo = stockBoxInfo.BindNo,
                                    BoxNo = l.BoxNo,
                                    BoxNo2 = l.BoxNo2,
                                    BoxNo3 = l.BoxNo3,
                                    PalletNo = l.PalletNo,
                                    Qty = (int)l.RealQty,
                                    FullQty = stockBoxInfo.FullQty,//满箱数量
                                    Status = "2",
                                    SkuNo = l.SkuNo,
                                    SkuName = l.SkuName,
                                    LotNo = l.LotNo,
                                    LotText = l.LotText,
                                    Standard = l.Standard,
                                    SupplierLot = l.SupplierLot,
                                    InspectMark = stockBoxInfo.InspectMark,
                                    InspectStatus = stockBoxInfo.InspectStatus,
                                    ProductionTime = stockBoxInfo.ProductionTime,
                                    BitBoxMark = boxInfo.bitBoxMark,
                                };
                                Db.Insertable<DataBoxInfo>(databox).ExecuteCommand();
                                //库存明细增加数量
                                stockDetailInfo.Qty += (int)l.RealQty;
                            }
                            else
                            {
                                //库存明细增加数量
                                stockDetailInfo.Qty = (int)l.RealQty;
                            }
                            stockDetailInfo.Status = "0";
                            Db.Updateable(stockDetailInfo).ExecuteCommand();
                            //库存增加数量
                            var de = stock.First(m => m.SkuNo == l.SkuNo && m.LotNo == l.LotNo);
@@ -624,7 +674,15 @@
                            {
                                throw new Exception($"未查询到{l.BoxNo}箱中{l.BoxNo3}库存的信息");
                            }
                            de.Qty += (int)l.RealQty;
                            if (sku.Type != "4")
                            {
                                de.Qty += (int)l.RealQty;
                            }
                            else
                            {
                                de.Qty += (int)(l.RealQty - l.Qty);
                            }
                            Db.Updateable(de).ExecuteCommand();
                        }
                    }
@@ -636,7 +694,7 @@
                    if (d.Qty == d.RealQty)
                    {
                        d.CheckResult = 0;
                        if (demo.Count(m=>m.CheckResult == 1 || m.CheckResult == 2)>0)
                        if (demo.Count(m => m.CheckResult == 1 || m.CheckResult == 2) > 0)
                        {
                            d.CheckResult = 3;
                        }
@@ -650,7 +708,7 @@
                        d.CheckResult = 1;
                    }
                    Db.Updateable(d).ExecuteCommand();
                    #region 添加判断盘点完托盘是否是零托 
                    var material = materialList.FirstOrDefault(m => m.SkuNo == d.SkuNo);
                    if (material == null)
@@ -708,13 +766,13 @@
                Db.Updateable(notice).ExecuteCommand();
                //添加操作日志记录
                var k = new OperationCrServer().AddLogOperationCr("库内作业", "盘点单据", notice.CRNo, "调整单据", $"调整了单据号为{notice.CRNo}的盘点单信息", userId);
                //提交事务
                Db.CommitTran();
                return true;
            }
            catch (Exception e)
            {
            {
                //回滚事务
                Db.RollbackTran();
                throw new Exception(e.Message);
@@ -868,6 +926,8 @@
                //要出库的明细集合
                var outStockDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && outLpnList.Contains(m.PalletNo)).ToList();
                var outStockBox = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && outLpnList.Contains(m.PalletNo)).ToList();
                //获取物料信息
                var skuNo = Db.Queryable<SysMaterials>().Where(a => a.IsDel == "0" && a.Type == "4").Select(a => a.SkuNo).ToList();
                var time = DateTime.Now;
                Db.BeginTran();
                try
@@ -877,32 +937,63 @@
                    {
                        if (item.Status == 0)
                        {
                            var de = outStockDetail.Where(m =>
                                m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.PalletNo == item.PalletNo).Select(m => m.Id).ToList();
                            var bo = outStockBox.Where(m => de.Contains(m.StockDetailId)).ToList();
                            var logList = new List<BllStockCheckLog>();
                            foreach (var b in bo)
                            //判断是否为无码物料
                            if (skuNo.Contains(item.SkuNo))
                            {
                                var de = outStockDetail.First(m => m.IsDel == "0" &&
                                m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.PalletNo == item.PalletNo);
                                var checkLog = new BllStockCheckLog()
                                {
                                    CRNo = item.CRNo,
                                    PalletNo = item.PalletNo,
                                    BoxNo = b.BoxNo,
                                    BoxNo2 = b.BoxNo2,
                                    BoxNo3 = b.BoxNo3,
                                    Qty = b.Qty,
                                    SkuNo = b.SkuNo,
                                    SkuName = b.SkuName,
                                    Standard = b.Standard,
                                    LotNo = b.LotNo,
                                    LotText = b.LotText,
                                    SupplierLot = b.SupplierLot,
                                    BoxNo = "",
                                    BoxNo2 = "",
                                    BoxNo3 = "",
                                    Qty = (int?)de.Qty,
                                    SkuNo = de.SkuNo,
                                    SkuName = de.SkuName,
                                    Standard = de.Standard,
                                    LotNo = de.LotNo,
                                    LotText = de.LotText,
                                    SupplierLot = de.SupplierLot,
                                    CreateUser = userId,
                                    CreateTime = time
                                };
                                logList.Add(checkLog);
                            }
                            }
                            else
                            {
                                var de = outStockDetail.Where(m =>
                                m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.PalletNo == item.PalletNo).Select(m => m.Id).ToList();
                                var bo = outStockBox.Where(m => de.Contains(m.StockDetailId)).ToList();
                                foreach (var b in bo)
                                {
                                    var checkLog = new BllStockCheckLog()
                                    {
                                        CRNo = item.CRNo,
                                        PalletNo = item.PalletNo,
                                        BoxNo = b.BoxNo,
                                        BoxNo2 = b.BoxNo2,
                                        BoxNo3 = b.BoxNo3,
                                        Qty = b.Qty,
                                        SkuNo = b.SkuNo,
                                        SkuName = b.SkuName,
                                        Standard = b.Standard,
                                        LotNo = b.LotNo,
                                        LotText = b.LotText,
                                        SupplierLot = b.SupplierLot,
                                        CreateUser = userId,
                                        CreateTime = time
                                    };
                                    logList.Add(checkLog);
                                }
                            }
                            //生成盘点记录
                            Db.Insertable(logList).ExecuteCommand();
                        }
@@ -915,10 +1006,10 @@
                        {
                            var de = outStockDetail.First(m => m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.PalletNo == item.PalletNo);
                            //判断是否是零箱库,当前明细信息直接更新出库完成 
                            if (de!= null && de.WareHouseNo=="W02")
                            if (de != null && de.WareHouseNo == "W02")
                            {
                                //盘点明细状态改为待盘点 
                                item.Status = 2;
                                item.Status = 2;
                                Db.Updateable(item).ExecuteCommand();
                                //盘点信息修改
                                if (notice.Status == 0)
@@ -985,7 +1076,7 @@
                            #region 添加出库任务
                            var taskNo = new Common().GetMaxNo("TK");
                            //添加出库任务
                            var exTask = new LogTask
                            var exTask = new LogTask
                            {
                                TaskNo = taskNo,
                                Sender = "WMS",
@@ -1104,22 +1195,22 @@
                        try
                        {
                            var time1 = DateTime.Now;//发送时间 .ToString("yyyy-MM-dd HH:mm:ss")
                            response = HttpHelper.DoPost(url, jsonData, "下发给WCS出库命令", "WCS");
                            //response = HttpHelper.DoPost(url, jsonData, "下发给WCS出库命令", "WCS"); //正式版本放开
                            var time2 = DateTime.Now;//返回时间 .ToString("yyyy-MM-dd HH:mm:ss")
                            ////解析返回数据 
                            var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
                            if (wcsModel.StatusCode == 0)
                            {
                                //        //更改任务的发送返回时间//
                                new TaskServer().EditTaskIssueOk(list2, time1, time2);
                            str += "下发成功";
                            }
                            if (wcsModel.StatusCode == -1)
                            {
                                new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg);
                                throw new Exception(wcsModel.Msg);
                            }
                            //var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
                            //if (wcsModel.StatusCode == 0)
                            //{
                            //        //更改任务的发送返回时间//
                            //    new TaskServer().EditTaskIssueOk(list2, time1, time2);
                            //str += "下发成功";
                            //}
                            //if (wcsModel.StatusCode == -1)
                            //{
                            //    new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg);
                            //    throw new Exception(wcsModel.Msg);
                            //}
                        }
                        catch (Exception ex)
                        {
@@ -1383,5 +1474,5 @@
        }
        #endregion
    }
    }
}
Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
@@ -1827,7 +1827,7 @@
                    throw new Exception("该托盘未在库外,请核实!");
                }
                // 验证入库单明细是否存在
                var detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == model.AsnDetailId && m.ASNNo == model.AsnNo && m.LotNo.Contains(model.LotNo));
                var detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == model.AsnDetailId && m.ASNNo == model.AsnNo && model.LotNo.Contains(m.LotNo));
                if (detail == null)
                {
                    throw new Exception("-1:当前物料及批次与单据无关联,请核实!");
Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs
@@ -83,7 +83,7 @@
        }
        //获取要盘点的箱码信息(盘点记录中数据)
        public List<StockCheckLogDto> GetStockCheckLogList(string crNo, string crDetail, string palletNo, string boxNo)
        public List<StockCheckLogDto> GetStockCheckLogList(string crNo, string crDetail, string palletNo, string boxNo, string isContinue)
        {
            try
            {
@@ -102,6 +102,18 @@
                var detail = crDetail.Split("-");
                var sku = detail[0];
                //判断是否为无码物料
                var skuinfo = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == sku);
                //判断是否存在物料消息
                if (skuinfo == null)
                {
                    throw new Exception("托盘码不能为空");
                }
                int isQtySku = 0;
                if (skuinfo.Type == "4" && isContinue == "1")
                {
                    isQtySku = 1;
                }
                var lotNo = detail[1];
                var list = Db.Queryable<BllStockCheckLog>().Where(m => m.IsDel == "0" && m.CRNo == crNo);
                //var deList= Db.Queryable<BllStockCheckDetail>().Where(m => m.IsDel == "0" && m.SkuNo == sku && m.LotNo == lotNo && m.PalletNo == palletNo);
@@ -109,25 +121,47 @@
                //{
                //    throw new Exception("未查询到托盘上的盘点物料批次信息");
                //}
                list = list.Where(m => m.SkuNo == sku && m.LotNo == lotNo && m.PalletNo == palletNo);
                if (!string.IsNullOrWhiteSpace(boxNo))
                {
                    list = list.Where(m => m.BoxNo == boxNo);
                }
                var data = list.Select(m => new StockCheckLogDto()
                List<StockCheckLogDto> data = new List<StockCheckLogDto>();
                //判断是否为无码物料
                if (isQtySku == 1)
                {
                    BoxNo = m.BoxNo,
                    BoxNo3 = m.BoxNo3,
                    SkuNo = m.SkuNo,
                    SkuName = m.SkuName,
                    LotNo = m.LotNo,
                    Qty = m.Qty,
                    CheckResult = m.CheckResult,
                    //获取库存信息
                    var stockDetail = Db.Queryable<DataStockDetail>().First(a => a.IsDel == "0" && a.Status == "3" && a.SkuNo == sku && a.PalletNo == palletNo);
                }).ToList();
                    var model = new StockCheckLogDto()
                    {
                        PalletNo = palletNo,
                        SkuNo = sku,
                        Qty = (int?)stockDetail.Qty,
                        CheckResult = 4,
                    };
                    data.Add(model);
                }
                else
                {
                    data = list.Select(m => new StockCheckLogDto()
                    {
                        BoxNo = m.BoxNo,
                        BoxNo3 = m.BoxNo3,
                        SkuNo = m.SkuNo,
                        SkuName = m.SkuName,
                        LotNo = m.LotNo,
                        Qty = m.Qty,
                        CheckResult = m.CheckResult,
                    }).ToList();
                }
                return data;
            }
            catch (Exception e)
            {
@@ -135,7 +169,7 @@
            }
        }
        public void CrSetCheck(string crNo, string crDetail, string palletNo, string boxNo, string boxNo3, string result, int? qty, int userId)
        public void CrSetCheck(string crNo, string crDetail, string palletNo, string boxNo, string boxNo3, string result, int? qty, string isContinue, int userId)
        {
            try
            {
@@ -165,8 +199,8 @@
                //盘点记录
                var checkLog = Db.Queryable<BllStockCheckLog>().Where(m =>
                    m.IsDel == "0" && m.CRNo == crNo && m.PalletNo == palletNo && m.SkuNo == sku && m.LotNo == lotNo && m.CheckResult == null);
                var time = DateTime.Now;
                //正常
                if (result == "0")
                {
                    if (!string.IsNullOrWhiteSpace(boxNo))
@@ -178,7 +212,7 @@
                        checkLog = checkLog.Where(m => m.BoxNo3 == boxNo3);
                    }
                    if (checkLog.Count() == 0)
                    if (checkLog.Count() == 0 && isContinue == "0")
                    {
                        throw new Exception("未查询到未盘点的箱支信息");
                    }
@@ -189,7 +223,7 @@
                    {
                        if (l.CheckResult != null)
                        {
                           continue;
                            continue;
                        }
                        l.RealQty = l.Qty;
                        l.CheckResult = 0;
@@ -204,6 +238,7 @@
                        checkDetail.RealQty = 0;
                    }
                    checkDetail.RealQty += num;
                    checkDetail.CheckResult = 0;
                    //if (checkDetail.CheckResult == null || checkDetail.CheckResult == 0)
                    //{
                    //    checkDetail.CheckResult = 0;
@@ -211,6 +246,7 @@
                    Db.Updateable(checkDetail).ExecuteCommand();
                    Db.Updateable(list).ExecuteCommand();
                }
                //盘亏
                else if (result == "1")
                {
                    if (!string.IsNullOrWhiteSpace(boxNo))
@@ -222,10 +258,20 @@
                        checkLog = checkLog.Where(m => m.BoxNo3 == boxNo3);
                    }
                    if (checkLog.Count() == 0)
                    if (checkLog.Count() == 0 && isContinue == "0")
                    {
                        throw new Exception("未查询到箱支信息");
                    }
                    //
                    if (isContinue == "1")
                    {
                        if (qty == null || qty <= 0)
                        {
                            throw new Exception("数量盘点时、盘亏数量不能为空且需大于0");
                        }
                    }
                    var list = checkLog.ToList();
                    var num = 0;
@@ -242,64 +288,111 @@
                        checkDetail.RealQty = 0;
                    }
                    checkDetail.RealQty += num;
                    //checkDetail.CheckResult = 1;
                    if (isContinue == "1")
                    {
                        checkDetail.RealQty = qty;
                    }
                    checkDetail.CheckResult = 1;
                    var checkInfo = Db.Queryable<BllStockCheckLog>().First(m =>
                    m.IsDel == "0" && m.CRNo == crNo && m.PalletNo == palletNo && m.SkuNo == sku && m.LotNo == lotNo);
                    checkInfo.RealQty = qty;
                    checkInfo.CheckResult = 1;
                    checkInfo.CheckUserId = userId;
                    checkInfo.CheckDate = time;
                    checkInfo.UpdateUser = userId;
                    checkInfo.UpdateTime = time;
                    Db.Updateable(checkInfo).ExecuteCommand();
                    Db.Updateable(checkDetail).ExecuteCommand();
                    Db.Updateable(list).ExecuteCommand();
                }
                //盘盈
                else if (result == "2")
                {
                    if (string.IsNullOrWhiteSpace(boxNo) || string.IsNullOrWhiteSpace(boxNo3))
                    if (isContinue == "0")
                    {
                        throw new Exception("盘盈时箱码与支码不能为空");
                        if (string.IsNullOrWhiteSpace(boxNo) || string.IsNullOrWhiteSpace(boxNo3))
                        {
                            throw new Exception("盘盈时箱码与支码不能为空");
                        }
                    }
                    if (qty == null || qty <= 0)
                    {
                        throw new Exception("盘盈时数量不能为空且需大于0");
                    }
                    var count = Db.Queryable<DataBoxInfo>()
                        .Count(m => m.IsDel == "0" && m.BoxNo == boxNo && m.BoxNo3 == boxNo3);
                    var count2 = Db.Queryable<BllStockCheckLog>()
                        .Count(m => m.IsDel == "0" && m.BoxNo == boxNo && m.BoxNo3 == boxNo3);
                    if (count > 0 || count2 > 0)
                    if (isContinue == "0")
                    {
                        throw new Exception("当前库存中已存在该箱支信息");
                        var count = Db.Queryable<DataBoxInfo>()
                        .Count(m => m.IsDel == "0" && m.BoxNo == boxNo && m.BoxNo3 == boxNo3);
                        var count2 = Db.Queryable<BllStockCheckLog>()
                            .Count(m => m.IsDel == "0" && m.BoxNo == boxNo && m.BoxNo3 == boxNo3);
                        if (count > 0 || count2 > 0)
                        {
                            throw new Exception("当前库存中已存在该箱支信息");
                        }
                    }
                    var crLog = new BllStockCheckLog()
                    BllStockCheckLog crLog = new BllStockCheckLog();
                    if (isContinue == "0")
                    {
                        CRNo = crNo,
                        PalletNo = palletNo,
                        BoxNo = boxNo,
                        BoxNo2 = null,
                        BoxNo3 = boxNo3,
                        Qty = qty,
                        SkuNo = checkDetail.SkuNo,
                        SkuName = checkDetail.SkuName,
                        Standard = checkDetail.Standard,
                        LotNo = checkDetail.LotNo,
                        LotText = checkDetail.LotText,
                        SupplierLot = checkDetail.SupplierLot,
                        crLog = new BllStockCheckLog()
                        {
                            CRNo = crNo,
                            PalletNo = palletNo,
                            BoxNo = boxNo,
                            BoxNo2 = null,
                            BoxNo3 = boxNo3,
                            Qty = qty,
                            SkuNo = checkDetail.SkuNo,
                            SkuName = checkDetail.SkuName,
                            Standard = checkDetail.Standard,
                            LotNo = checkDetail.LotNo,
                            LotText = checkDetail.LotText,
                            SupplierLot = checkDetail.SupplierLot,
                        RealQty = qty,
                        CheckResult = 2,
                        CheckDate = time,
                        CheckUserId = userId,
                            RealQty = qty,
                            CheckResult = 2,
                            CheckDate = time,
                            CheckUserId = userId,
                        CreateUser = userId,
                        CreateTime = time
                    };
                    if (checkDetail.RealQty == null)
                            CreateUser = userId,
                            CreateTime = time
                        };
                    }
                    else
                    {
                        var checkInfo = Db.Queryable<BllStockCheckLog>().First(m =>
                    m.IsDel == "0" && m.CRNo == crNo && m.PalletNo == palletNo && m.SkuNo == sku && m.LotNo == lotNo);
                        checkInfo.RealQty = qty;
                        checkInfo.CheckResult = 2;
                        checkInfo.CheckUserId = userId;
                        checkInfo.CheckDate = time;
                        checkInfo.UpdateUser = userId;
                        checkInfo.UpdateTime = time;
                        Db.Updateable(checkInfo).ExecuteCommand();
                    }
                    if (checkDetail.RealQty == null && isContinue == "0")
                    {
                        checkDetail.RealQty = 0;
                    }
                    checkDetail.RealQty += qty;
                    //checkDetail.CheckResult = 1;
                    if (isContinue == "1")
                    {
                        checkDetail.RealQty = qty;
                    }
                    checkDetail.CheckResult = 2;
                    Db.Updateable(checkDetail).ExecuteCommand();
                    Db.Insertable(crLog).ExecuteCommand();
                    if (isContinue == "0")
                    {
                        Db.Insertable(crLog).ExecuteCommand();
                    }
                }
                else
                {
                    Db.RollbackTran();
                    throw new Exception("盘点结果不符,请核实!");
                }
                var checkLogNum = Db.Queryable<BllStockCheckLog>().Where(m => m.IsDel == "0" && m.CRNo == crNo && m.PalletNo == palletNo && m.SkuNo == sku && m.LotNo == lotNo);
@@ -352,7 +445,7 @@
            {
                str += " and PalletNo like @palletno";
            }
            //排序
            str += " order by LotNo,LocatNo,PalletNo";
            List<DataStockDetail> stockList = Db.Ado.SqlQuery<DataStockDetail>(str, new
@@ -377,7 +470,7 @@
                {
                    throw new Exception("托盘号不能为空");
                }
                var detail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).Select(m=>m.Id).ToList();
                var detail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).Select(m => m.Id).ToList();
                var info = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && detail.Contains(m.StockDetailId))
                    .GroupBy(m => m.BoxNo).Select(a => new PdaPalletNoCheckDto
                    {
@@ -386,7 +479,7 @@
                    }).ToList();
                return info;
            }
            catch(Exception e)
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
@@ -401,9 +494,9 @@
                {
                    throw new Exception("箱码不能为空");
                }
                var info = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxNo)
                    .GroupBy(m => new{m.BoxNo,m.SkuNo,m.SkuName,m.LotNo}).Select(a => new PdaPalletNoCheckDto
                    .GroupBy(m => new { m.BoxNo, m.SkuNo, m.SkuName, m.LotNo }).Select(a => new PdaPalletNoCheckDto
                    {
                        BoxNo = a.BoxNo,
                        SkuNo = a.SkuNo,
@@ -411,7 +504,7 @@
                        LotNo = a.LotNo,
                        Qty = SqlFunc.AggregateSum(a.Qty)
                    }).ToList();
                if (info.Count>1)
                if (info.Count > 1)
                {
                    throw new Exception("当前箱码查询出多条物料或批次信息,请核实");
                }
@@ -425,7 +518,7 @@
        }
        //解绑原托盘绑定新托盘
        public void SaveUnbind(string palletNo,string boxNo,string palletNoNew,int userId)
        public void SaveUnbind(string palletNo, string boxNo, string palletNoNew, int userId)
        {
            try
            {
@@ -450,7 +543,7 @@
                    throw new Exception("原托盘上未查到箱支明细,请核实");
                }
                //库存明细id
                var infoIds = infos.GroupBy(m => m.StockDetailId).Select(a =>a.StockDetailId).ToList();
                var infoIds = infos.GroupBy(m => m.StockDetailId).Select(a => a.StockDetailId).ToList();
                if (infoIds.Count == 0)
                {
                    throw new Exception("未查询到当前箱码信息,请核实");
@@ -485,7 +578,7 @@
                                }
                            }
                        }
                    }
                    }
                    #endregion
                }
                if (!newPalletHaveGoods)//新托盘上没有物品
@@ -520,7 +613,7 @@
                    }
                    var stockDetail2 = stockDetailList.FirstOrDefault(w => w.SkuNo == stockDetail1.SkuNo && w.LotNo == stockDetail1.LotNo);
                    var stId = 0;
                    var stId = 0;
                    if (stockDetail2 == null) //添加-新托盘上没有同物料同批次物品
                    {
                        //新托盘添加库存明细
Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs
@@ -34,8 +34,9 @@
        /// <param name="crDetail">盘点明细ID 物料-批次</param>
        /// <param name="palletNo">托盘号</param>
        /// <param name="boxNo">箱码号</param>
        /// <param name="isContinue">是否数量盘点</param>
        /// <returns></returns>
        List<StockCheckLogDto> GetStockCheckLogList(string crNo, string crDetail,string palletNo,string boxNo);
        List<StockCheckLogDto> GetStockCheckLogList(string crNo, string crDetail,string palletNo,string boxNo,string isContinue);
        /// <summary>
        /// 盘点库存
@@ -47,8 +48,9 @@
        /// <param name="boxNo3">支码</param>
        /// <param name="result">结果</param>
        /// <param name="qty">数量</param>
        /// <param name="isContinue">是否数量盘点</param>
        /// <param name="userId"></param>
        void CrSetCheck(string crNo, string crDetail, string palletNo, string boxNo,string boxNo3,string result, int? qty,int userId);
        void CrSetCheck(string crNo, string crDetail, string palletNo, string boxNo,string boxNo3,string result, int? qty,string isContinue, int userId);
        #endregion
Wms/Wms/Controllers/PdaCrController.cs
@@ -77,7 +77,7 @@
        {
            try
            {
                var list = _pdaCrSvc.GetStockCheckLogList(model.CrNo, model.CrDetail, model.PalletNo, model.BoxNo);
                var list = _pdaCrSvc.GetStockCheckLogList(model.CrNo, model.CrDetail, model.PalletNo, model.BoxNo,model.isContinue);
                return Ok(new { code = 0, msg = "要盘点的箱码信息", data = list });
            }
@@ -109,7 +109,7 @@
                    return Ok(new { code = 1, msg = "未获取到当前操作人信息" });
                }
                _pdaCrSvc.CrSetCheck(model.CrNo, model.CrDetail, model.PalletNo, model.BoxNo, model.BoxNo3, model.Result, model.Qty, int.Parse(userId));
                _pdaCrSvc.CrSetCheck(model.CrNo, model.CrDetail, model.PalletNo, model.BoxNo, model.BoxNo3, model.Result, model.Qty,model.isContinue, int.Parse(userId));
                return Ok(new { code = 0, msg = "盘点完成", data = "" });
            }