Demo
2024-04-01 963f2f00f033d3fdd3d18ab71beb28d9f0e179bf
修改类型
24个文件已修改
542 ■■■■ 已修改文件
Wms/Model/ModelDto/BllAsnDto/ArrivalNoticeDetailDto.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Model/ModelDto/BllCheckDto/StockCheckDto.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Model/ModelDto/BllQualityDto/BllQualityInspectDto.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Model/ModelDto/DataDto/AssSoDateStockInfoDto.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Model/ModelDto/DataDto/MateDataStockDto.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Model/ModelDto/DataDto/TotalRecordDto.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Model/ModelDto/PdaDto/PdaAsnDto.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Model/ModelVm/BllAsnVm/ArrivalNoticeDetailVm.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Model/ModelVm/BllAsnVm/BoxInfoVm.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Model/ModelVm/BllAsnVm/PalletUnBingVm.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Model/ModelVm/BllCheckVm/StockCheckVm.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Model/ModelVm/BllSoVm/ExportNoticeVm.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Model/ModelVm/DataVm/DataStockInfoVM.cs 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Model/ModelVm/PdaVm/PdaAsnVm.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Model/ModelVm/PdaVm/PdaCrVm.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/DataServer/StockServer.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.BLL/Logic/AllotSku.cs 392 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Wms/Model/ModelDto/BllAsnDto/ArrivalNoticeDetailDto.cs
@@ -54,21 +54,21 @@
        /// Default:
        /// Nullable:False
        /// </summary>           
        public int Qty { get; set; }
        public decimal Qty { get; set; }
        /// <summary>
        /// Desc:已组数量
        /// Default:0
        /// Nullable:True
        /// </summary>           
        public int? FactQty { get; set; }
        public decimal? FactQty { get; set; }
        /// <summary>
        /// Desc:入库数量
        /// Default:0
        /// Nullable:True
        /// </summary>           
        public int? CompleteQty { get; set; }
        public decimal? CompleteQty { get; set; }
        /// <summary>
        /// Desc:包装编号
Wms/Model/ModelDto/BllCheckDto/StockCheckDto.cs
@@ -192,7 +192,7 @@
        public string Standard { get; set; }
        public string LotNo { get; set; }
        public string LotText { get; set; }
        public decimal Qty { get; set; }
        public decimal? Qty { get; set; }
        public string SupplierLot { get; set; }
        public string PalletNo { get; set; }
Wms/Model/ModelDto/BllQualityDto/BllQualityInspectDto.cs
@@ -58,14 +58,14 @@
        /// Default:
        /// Nullable:True
        /// </summary>           
        public int? PassQty { get; set; }
        public decimal? PassQty { get; set; }
        /// <summary>
        /// Desc:不合格数量
        /// Default:
        /// Nullable:True
        /// </summary>           
        public int? FailQty { get; set; }
        public decimal? FailQty { get; set; }
        /// <summary>
        /// Desc:来源
Wms/Model/ModelDto/DataDto/AssSoDateStockInfoDto.cs
@@ -39,21 +39,21 @@
        /// Default:
        /// Nullable:False
        /// </summary>           
        public int ASNQty { get; set; }
        public decimal ASNQty { get; set; }
        /// <summary>
        /// Desc:出库数量
        /// Default:
        /// Nullable:False
        /// </summary>           
        public int SOQty { get; set; }
        public decimal SOQty { get; set; }
        /// <summary>
        /// Desc:结存数量
        /// Default:
        /// Nullable:False
        /// </summary>           
        public int ASNSOQty { get; set; }
        public decimal ASNSOQty { get; set; }
        /// <summary>
Wms/Model/ModelDto/DataDto/MateDataStockDto.cs
@@ -192,12 +192,12 @@
        /// <summary>
        /// Desc:数量
        /// </summary>           
        public int Qty { get; set; }
        public decimal Qty { get; set; }
        /// <summary>
        /// Desc:整箱数量
        /// </summary>           
        public int? FullQty { get; set; }
        public decimal? FullQty { get; set; }
        /// <summary>
        /// Desc:状态
Wms/Model/ModelDto/DataDto/TotalRecordDto.cs
@@ -39,37 +39,37 @@
        /// <summary>
        /// 入库数量
        /// </summary>
        public int RQty { get; set; }
        public decimal RQty { get; set; }
        /// <summary>
        /// 已组数量
        /// </summary>
        public int RFactQty { get; set; }
        public decimal RFactQty { get; set; }
        /// <summary>
        /// 完成数量
        /// </summary>
        public int RCompleteQty { get; set; }
        public decimal RCompleteQty { get; set; }
        /// <summary>
        /// 出库数量
        /// </summary>
        public int CQty { get; set; }
        public decimal CQty { get; set; }
        /// <summary>
        /// 分配数量
        /// </summary>
        public int CAllotQty { get; set; }
        public decimal CAllotQty { get; set; }
        /// <summary>
        /// 下架数量
        /// </summary>
        public int CFactQty { get; set; }
        public decimal CFactQty { get; set; }
        /// <summary>
        /// 拣货数量
        /// </summary>
        public int CompleteQty { get; set; }
        public decimal CompleteQty { get; set; }
        /// <summary>
        /// 入库时间
Wms/Model/ModelDto/PdaDto/PdaAsnDto.cs
@@ -59,21 +59,21 @@
        /// Default:
        /// Nullable:False
        /// </summary>           
        public int Qty { get; set; }
        public decimal Qty { get; set; }
        /// <summary>
        /// Desc:已组数量
        /// Default:0
        /// Nullable:True
        /// </summary>           
        public int? FactQty { get; set; }
        public decimal? FactQty { get; set; }
        /// <summary>
        /// Desc:入库数量
        /// Default:0
        /// Nullable:True
        /// </summary>           
        public int? CompleteQty { get; set; }
        public decimal? CompleteQty { get; set; }
        /// <summary>
        /// Desc:包装编号
@@ -199,14 +199,14 @@
        /// Default:
        /// Nullable:False
        /// </summary>           
        public int? Qty { get; set; }
        public decimal? Qty { get; set; }
        /// <summary>
        /// Desc:整箱数量
        /// Default:
        /// Nullable:True
        /// </summary>           
        public int? FullQty { get; set; }
        public decimal? FullQty { get; set; }
        /// <summary>
        /// Desc:状态
Wms/Model/ModelVm/BllAsnVm/ArrivalNoticeDetailVm.cs
@@ -54,21 +54,21 @@
        /// Default:
        /// Nullable:False
        /// </summary>           
        public int? Qty { get; set; }
        public decimal? Qty { get; set; }
        /// <summary>
        /// Desc:已组数量
        /// Default:0
        /// Nullable:True
        /// </summary>           
        public int? FactQty { get; set; }
        public decimal? FactQty { get; set; }
        /// <summary>
        /// Desc:入库数量
        /// Default:0
        /// Nullable:True
        /// </summary>           
        public int? CompleteQty { get; set; }
        public decimal? CompleteQty { get; set; }
        /// <summary>
        /// Desc:包装编号
Wms/Model/ModelVm/BllAsnVm/BoxInfoVm.cs
@@ -75,14 +75,14 @@
        /// Default:
        /// Nullable:False
        /// </summary>           
        public int? Qty { get; set; }
        public decimal? Qty { get; set; }
        /// <summary>
        /// Desc:整箱数量
        /// Default:
        /// Nullable:True
        /// </summary>           
        public int? FullQty { get; set; }
        public decimal? FullQty { get; set; }
        /// <summary>
        /// Desc:状态
@@ -175,7 +175,7 @@
    public class BoxQtyInfo
    {
        public string boxNo { get; set; }
        public int realQty { get; set; }
        public decimal realQty { get; set; }
        public string bitBoxMark { get; set; }
    }
Wms/Model/ModelVm/BllAsnVm/PalletUnBingVm.cs
@@ -58,7 +58,7 @@
        /// <summary>
        /// 数量
        /// </summary>
        public int? Qty { get; set; }
        public decimal? Qty { get; set; }
        /// <summary>
        /// 二级托盘号
Wms/Model/ModelVm/BllCheckVm/StockCheckVm.cs
@@ -82,7 +82,7 @@
        public string Standard { get; set; }
        public string LotNo { get; set; }
        public string LotText { get; set; }
        public int Qty { get; set; }
        public decimal Qty { get; set; }
        public string SupplierLot { get; set; }
        public string PalletNo { get; set; }
Wms/Model/ModelVm/BllSoVm/ExportNoticeVm.cs
@@ -43,7 +43,7 @@
        public string LotNo { get; set; }       //批次
        public string SkuNo { get; set; }       //物料编码
        [Required]
        public int Qty { get; set; }        //数量
        public decimal Qty { get; set; }        //数量
        [MaxLength(3)]
        public string IsBale { get; set; }      //是否裹包
        [MaxLength(3)]
@@ -122,7 +122,7 @@
        /// <summary>
        /// 出库数量
        /// </summary>
        public int Qty { get; set; }
        public decimal Qty { get; set; }
    }
    
    /// <summary>
Wms/Model/ModelVm/DataVm/DataStockInfoVM.cs
@@ -66,56 +66,56 @@
        /// Default:
        /// Nullable:False
        /// </summary>           
        public int ArrivalQty { get; set; }
        public decimal ArrivalQty { get; set; }
        /// <summary>
        /// Desc:入库数量(月)
        /// Default:
        /// Nullable:False
        /// </summary>           
        public int YearArrivalQty { get; set; }
        public decimal YearArrivalQty { get; set; }
        /// <summary>
        /// Desc:出库数量
        /// Default:
        /// Nullable:False
        /// </summary>           
        public int ExportQty { get; set; }
        public decimal ExportQty { get; set; }
        /// <summary>
        /// Desc:出库数量(月)
        /// Default:
        /// Nullable:False
        /// </summary>           
        public int YearExportQty { get; set; }
        public decimal YearExportQty { get; set; }
        /// <summary>
        /// Desc:结存数量
        /// Default:
        /// Nullable:False
        /// </summary>           
        public int BalanceQty { get; set; }
        public decimal BalanceQty { get; set; }
        /// <summary>
        /// Desc:期出数量
        /// Default:
        /// Nullable:False
        /// </summary>           
        public int ExpectedQty { get; set; }
        public decimal ExpectedQty { get; set; }
        /// <summary>
        /// Desc:结存数量(月)
        /// Default:
        /// Nullable:False
        /// </summary>           
        public int YearBalanceQty { get; set; }
        public decimal YearBalanceQty { get; set; }
        /// <summary>
        /// Desc:期出数量(月)
        /// Default:
        /// Nullable:False
        /// </summary>           
        public int YearExpectedQty { get; set; }
        public decimal YearExpectedQty { get; set; }
        /// <summary>
        /// Desc:批次号
Wms/Model/ModelVm/PdaVm/PdaAsnVm.cs
@@ -63,7 +63,7 @@
        /// <summary>
        /// Desc:物料数量
        /// </summary>           
        public int SkuQty { get; set; }
        public decimal SkuQty { get; set; }
        /// <summary>
        /// Desc:批次号
Wms/Model/ModelVm/PdaVm/PdaCrVm.cs
@@ -29,7 +29,7 @@
        /// <summary>
        /// 箱码号
        /// </summary>
        public int? Qty { get; set; }
        public decimal? Qty { get; set; }
        /// <summary>
        /// 盘点结果
Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs
@@ -962,8 +962,8 @@
                                maxboxcode3 = maxboxcode3.Substring(0, 11) + (int.Parse(maxboxcode3.Substring(11, 4)) + 1).ToString().PadLeft(4, '0'); 
                            }
                            var ssss = d.ToString("0");
                            var sss = int.Parse(ssss);
                            //var ssss = d.ToString("0");
                            //var sss = int.Parse(ssss);
                            // 将条码保存到原料条码表
                            var labelModel = new BllBoxInfo()
@@ -972,7 +972,7 @@
                                ASNDetailNo = asnList.Id,
                                BoxNo = maxboxcode2,
                                BoxNo3 = maxboxcode3,
                                Qty = sss,
                                Qty = d,
                                FullQty = bNum,
                                Status = "0",
                                SkuNo = asnList.SkuNo,
Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs
@@ -200,7 +200,7 @@
                    LotNo = m.LotNo,
                    LotText = m.LotText,
                    SupplierLot = m.SupplierLot,
                    Qty = (decimal)m.Qty,
                    Qty = m.Qty,
                    PalletNo = m.PalletNo
                }).ToList();
@@ -658,12 +658,12 @@
                                };
                                Db.Insertable<DataBoxInfo>(databox).ExecuteCommand();
                                //库存明细增加数量
                                stockDetailInfo.Qty += l.RealQty;
                                stockDetailInfo.Qty += (int)l.RealQty;
                            }
                            else
                            {
                                //库存明细增加数量
                                stockDetailInfo.Qty = l.RealQty;
                                stockDetailInfo.Qty = (int)l.RealQty;
                            }
                            stockDetailInfo.Status = "0";
@@ -676,11 +676,11 @@
                            }
                            if (sku.Type != "4")
                            {
                                de.Qty += (decimal)l.RealQty;
                                de.Qty += (int)l.RealQty;
                            }
                            else
                            {
                                de.Qty += (decimal)(l.RealQty - l.Qty);
                                de.Qty += (int)(l.RealQty - l.Qty);
                            }
                            Db.Updateable(de).ExecuteCommand();
Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
@@ -324,7 +324,7 @@
                    PalletNo3 = model.PalletNo3,
                    Status = "1",
                    CompleteTime = DateTime.Now,
                    Qty = (decimal)model.Qty,
                    Qty = (int)model.Qty,
                    FullQty = null,
                    SkuNo = "100099",
                    SkuName = "托盘",
Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs
@@ -171,7 +171,7 @@
            }
        }
        public void CrSetCheck(string crNo, string crDetail, string palletNo, string boxNo, string boxNo3, string result, int? qty, string isContinue, int userId)
        public void CrSetCheck(string crNo, string crDetail, string palletNo, string boxNo, string boxNo3, string result, decimal? qty, string isContinue, int userId)
        {
            try
            {
@@ -276,14 +276,14 @@
                    var list = checkLog.ToList();
                    decimal num = 0;
                    var num = 0;
                    foreach (var l in list)
                    {
                        l.RealQty = 0;
                        l.CheckResult = 1;
                        l.CheckDate = time;
                        l.CheckUserId = userId;
                        num -= (decimal)l.RealQty;
                        num -= int.Parse(l.RealQty.ToString());
                    }
                    if (checkDetail.RealQty == null)
                    {
Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
@@ -639,7 +639,7 @@
                            SkuName = allot.SkuName,
                            Standard = allot.Standard,
                            PalletNo = palletNo,
                            CompleteQty = biaoShi == "2" ? int.Parse(pickQty1) : item.Qty,
                            CompleteQty = biaoShi == "2" ? decimal.Parse(pickQty1) : item.Qty,
                            CreateUser = userId
                        };
@@ -652,14 +652,14 @@
                        }
                        else//数量拣货
                        {
                            if (int.Parse(pickQty1) == item.Qty)
                            if (decimal.Parse(pickQty1) == item.Qty)
                            {
                                //删除库存箱码明细
                                Db.Deleteable(item).ExecuteCommand();
                            }
                            else
                            {
                                item.Qty -= int.Parse(pickQty1);
                                item.Qty -= decimal.Parse(pickQty1);
                                item.BitBoxMark = "1";//零箱标识
                                Db.Updateable(item).ExecuteCommand();
                            }
@@ -1667,7 +1667,7 @@
                            SkuName = allot2.SkuName,
                            Standard = allot2.Standard,
                            PalletNo = palletNo,
                            CompleteQty = biaoShi == "2" ? int.Parse(pickQty1) : item.Qty,
                            CompleteQty = biaoShi == "2" ? decimal.Parse(pickQty1) : item.Qty,
                            InspectMark = "1",
                            CreateUser = userId
@@ -1681,20 +1681,20 @@
                        }
                        else//数量拣货
                        {
                            if (int.Parse(pickQty1) == item.Qty)
                            if (decimal.Parse(pickQty1) == item.Qty)
                            {
                                //删除库存箱码明细
                                Db.Deleteable(item).ExecuteCommand();
                            }
                            else
                            {
                                item.Qty -= int.Parse(pickQty1);
                                item.Qty -= decimal.Parse(pickQty1);
                                item.BitBoxMark = "1";//零箱标识
                                item.InspectMark = "1";//抽检箱标识
                                Db.Updateable(item).ExecuteCommand();
                            }
                        }
                        pickQty += biaoShi == "2" ? int.Parse(pickQty1) : item.Qty;
                        pickQty += biaoShi == "2" ? decimal.Parse(pickQty1) : item.Qty;
                    }
@@ -1930,7 +1930,7 @@
                            SkuName = allot.SkuName,
                            Standard = allot.Standard,
                            PalletNo = palletNo,
                            CompleteQty = biaoShi == "2" ? int.Parse(pickQty1) : item.Qty,
                            CompleteQty = biaoShi == "2" ? decimal.Parse(pickQty1) : item.Qty,
                            CreateUser = userId
                        };
@@ -1943,14 +1943,14 @@
                        }
                        else//数量拣货
                        {
                            if (int.Parse(pickQty1) == item.Qty)
                            if (decimal.Parse(pickQty1) == item.Qty)
                            {
                                //删除库存箱码明细
                                Db.Deleteable(item).ExecuteCommand();
                            }
                            else
                            {
                                item.Qty -= int.Parse(pickQty1);
                                item.Qty -= decimal.Parse(pickQty1);
                                item.BitBoxMark = "1";//零箱标识
                                Db.Updateable(item).ExecuteCommand();
                            }
@@ -2906,7 +2906,7 @@
                            SkuName = allot.SkuName,
                            Standard = allot.Standard,
                            PalletNo = palletNo,
                            CompleteQty = biaoShi == "2" ? int.Parse(pickQty1) : item.Qty,
                            CompleteQty = biaoShi == "2" ? decimal.Parse(pickQty1) : item.Qty,
                            CreateUser = userId
                        };
@@ -2938,7 +2938,7 @@
                        }
                        else//数量拣货
                        {
                            if (int.Parse(pickQty1) == item.Qty)
                            if (decimal.Parse(pickQty1) == item.Qty)
                            {
                                //修改库存箱码明细
                                item.StockDetailId = sdId;
@@ -2949,7 +2949,7 @@
                            }
                            else
                            {
                                item.Qty -= int.Parse(pickQty1);
                                item.Qty -= decimal.Parse(pickQty1);
                                item.BitBoxMark = "1";//零箱标识
                                Db.Updateable(item).ExecuteCommand();
                            }
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -3296,7 +3296,7 @@
                //var stockz = Db.Queryable<DataStock>().First(d => d.IsDel == "0" && d.SkuNo == detail.SkuNo && d.LotNo == detail.LotNo);
                var allotList = new List<BllExportAllot>();
                var outQtys = 0;
                decimal outQtys = 0;
                foreach (var st in model.StockList)
                {
                    var stock = stockList.First(a => a.Id == st.StockId);
Wms/WMS.BLL/DataServer/StockServer.cs
@@ -571,7 +571,7 @@
                {
                    EndTime = (Convert.ToDateTime(EndTime).AddDays(1)).ToString();
                }
                int countjie = 0; //统计结存数量
                decimal countjie = 0; //统计结存数量
                ////判断库存信息是否为空
                //if (stockInfo != null)
                //{
@@ -596,10 +596,10 @@
                    }
                //}
                int yeara = 0; //年入库
                int years = 0; //年出库
                int montha = 0; //月入库
                int months = 0; //月出库
                decimal yeara = 0; //年入库
                decimal years = 0; //年出库
                decimal montha = 0; //月入库
                decimal months = 0; //月出库
                DateTime createTime = DateTime.Now.AddYears(-1000); //时间
                //获取有多少年
Wms/WMS.BLL/Logic/AllotSku.cs
@@ -233,6 +233,386 @@
        /// <summary>
        /// 原辅料取样出库分配库存
        /// </summary>
        /// <param name="palletList">托盘明细</param>
        /// <param name="boxInfoList">箱码明细</param>
        /// <param name="needQty">需求数</param>
        /// <param name="stockQtyDic">托出库物品数</param>
        /// <param name="useBoxQtyDic">托出库物品数</param>
        /// <param name="type">取样类型1:规则取样 2:随机取样</param>
        /// <param name="boxNum">需分配的箱数量  随机取样用</param>
        /// <param name="pickNum"></param>
        /// <returns></returns>
        public decimal AllotPalletsQuYang(List<DataStockDetail> palletList, List<DataBoxInfo> boxInfoList, decimal needQty, Dictionary<int, decimal> stockQtyDic, Dictionary<int, decimal> useBoxQtyDic, string type, int boxNum, decimal pickNum)
        {
            try
            {
                decimal? qty = 0;
                var listOrder = boxInfoList.Where(m => m.IsDel == "0").OrderBy(m => m.BoxNo).ThenBy(m => m.Qty).ToList();//根据箱码、数量排序 整箱的
                var boxList = listOrder.GroupBy(m => m.BoxNo).Select(m => m.Key).ToList();//分组后的箱码集合
                var boxCount = boxList.Count();//箱数量
                #region 旧分配原则
                //var outInfoCount = 0;
                //var boxStrList = new List<string>();//随机使用箱
                //Dictionary<string, decimal> useInfoQtyDic = new Dictionary<string, decimal>();//使用箱
                //if (type == "1")//规则取样(N<3;3<N<300;300<N)
                //{
                //    if (boxCount<=3)//箱子小于3
                //    {
                //        foreach (var item in boxList)//循环箱子
                //        {
                //            boxStrList.Add(item);
                //        }
                //    }
                //    else if (boxCount > 3)//箱子小于3
                //    {
                //        var a = Math.Sqrt(boxCount)+1;//开平方 //规则 箱数 √N+1
                //        if (boxCount > 300)
                //        {
                //            a = Math.Sqrt(boxCount) / 2 + 1;//规则 箱数 √N/2+1
                //        }
                //        var b = Math.Floor(a); //取样的箱数
                //        var lit = new List<int>();
                //        do
                //        {
                //            byte[] buffer = Guid.NewGuid().ToByteArray();
                //            int iSeed = BitConverter.ToInt32(buffer, 0);
                //            Random random = new Random(iSeed);
                //            var j = random.Next(0, boxCount);
                //            if (lit.Contains(j))
                //            {
                //                continue;
                //            }
                //            var boxCode = boxList[j];//箱码
                //            boxStrList.Add(boxCode);
                //            lit.Add(j);
                //        } while (lit.Count < b);
                //    }
                //}
                //else if(type == "2") //随机取样(一批次出一箱)
                //{
                //    if (boxCount < boxNum)
                //    {
                //        throw new Exception("当前库存整箱数少于输入的取样数");
                //    }
                //    var lit = new List<int>();
                //    do
                //    {
                //        byte[] buffer = Guid.NewGuid().ToByteArray();
                //        int iSeed = BitConverter.ToInt32(buffer, 0);
                //        Random random = new Random(iSeed);
                //        var j = random.Next(0, boxCount);
                //        if (lit.Contains(j))
                //        {
                //            continue;
                //        }
                //        var boxCode = boxList[j];//箱码
                //        boxStrList.Add(boxCode);
                //        lit.Add(j);
                //    } while (lit.Count < boxNum);
                //}
                //else
                //{
                //    throw new Exception("请选择取样规则");
                //}
                //foreach (var item in boxStrList)//循环箱子
                //{
                //    var box = listOrder.Where(m => m.BoxCode == item).ToList();
                //    var infoCount = box.Count;//箱内支数量
                //    if (infoCount <= 3) //支数量<=3
                //    {
                //        outInfoCount += infoCount;
                //        SaveDic(useInfoQtyDic, item, infoCount);
                //    }
                //    else if (infoCount > 3)//箱内数量 > 3 且 <=300
                //    {
                //        //规则 取样支数 √N+1
                //        var c = Math.Sqrt(infoCount) + 1;//开平方
                //        if (infoCount > 300) //箱内数量 > 300
                //        {
                //            //规则 箱数 √N/2+1
                //            c = Math.Sqrt(infoCount) / 2 + 1;
                //        }
                //        var d = Math.Floor(c);  //取样的支数量
                //        outInfoCount += (int)d;
                //        SaveDic(useInfoQtyDic, item, (decimal)d);
                //    }
                //}
                //var pingJunNum = needQty / outInfoCount;//平均每支取的数量
                //foreach (var item in useInfoQtyDic)
                //{
                //    var box = listOrder.Where(m => m.BoxCode == item.Key).ToList();
                //    var infoCount = box.Count;//箱内支数量
                //    if (infoCount <= 3) //支数量<=3
                //    {
                //        foreach (var item2 in box)
                //        {
                //            if (pingJunNum >= item2.Qty)
                //            {
                //                throw new Exception("平均需取样数量大于等于箱支内数量");
                //            }
                //            qty += pingJunNum;
                //            var tray = palletList.First(m => m.Id == item2.TrayId);
                //            SaveDic(stockQtyDic, tray.Id, pingJunNum);
                //            SaveDic(useBoxQtyDic, item2.Id, pingJunNum);
                //        }
                //    }
                //    else if (infoCount > 3)//箱内数量 > 3 且 <=300
                //    {
                //        var e = item.Value; //取样的支数量
                //        var lit2 = new List<int>();
                //        do
                //        {
                //            byte[] buffer = Guid.NewGuid().ToByteArray();
                //            int iSeed = BitConverter.ToInt32(buffer, 0);
                //            Random random = new Random(iSeed);
                //            var j = random.Next(0, infoCount);//随机箱内支码
                //            if (lit2.Contains(j))
                //            {
                //                continue;
                //            }
                //            var info = box[j];
                //            if (pingJunNum >= info.Qty)
                //            {
                //                throw new Exception("平均需取样数量大于等于箱支内数量");
                //            }
                //            qty += pingJunNum;
                //            var tray = palletList.First(m => m.Id == info.TrayId);
                //            SaveDic(stockQtyDic, tray.Id, pingJunNum);
                //            SaveDic(useBoxQtyDic, info.Id, pingJunNum);
                //            lit2.Add(j);
                //        } while (lit2.Count < e);
                //    }
                //}
                #endregion
                var outInfoCount = 0;
                var boxStrList = new List<string>();//随机使用箱
                Dictionary<string, int> useInfoQtyDic = new Dictionary<string, int>();//使用箱 及每箱出多少支
                if (type == "1")//规则取样(N<3;3<N<300;300<N)
                {
                    if (boxCount <= 3)//箱子小于3
                    {
                        foreach (var item in boxList)//循环箱子
                        {
                            boxStrList.Add(item);
                        }
                    }
                    else if (boxCount > 3)//箱子小于3
                    {
                        var a = Math.Sqrt(boxCount) + 1;//开平方 //规则 箱数 √N+1
                        if (boxCount > 300)
                        {
                            a = Math.Sqrt(boxCount) / 2 + 1;//规则 箱数 √N/2+1
                        }
                        var b = Math.Floor(a); //取样的箱数
                        var lit = new List<int>();
                        do
                        {
                            byte[] buffer = Guid.NewGuid().ToByteArray();
                            int iSeed = BitConverter.ToInt32(buffer, 0);
                            Random random = new Random(iSeed);
                            var j = random.Next(0, boxCount);
                            if (lit.Contains(j))
                            {
                                continue;
                            }
                            var boxCode = boxList[j];//箱码
                            boxStrList.Add(boxCode);
                            lit.Add(j);
                        } while (lit.Count < b);
                    }
                    var zhi = listOrder.Count();
                    if (zhi <= 3) //支数量<=3
                    {
                        outInfoCount += zhi;
                    }
                    else if (zhi > 3)//箱内数量 > 3 且 <=300
                    {
                        //规则 取样支数 √N+1
                        var c = Math.Sqrt(zhi) + 1;//开平方
                        if (zhi > 300) //箱内数量 > 300
                        {
                            //规则 箱数 √N/2+1
                            c = Math.Sqrt(zhi) / 2 + 1;
                        }
                        var d = Math.Floor(c);  //取样的支数量
                        outInfoCount += (int)d;
                    }
                }
                else if (type == "2") //随机取样(一批次出一箱)
                {
                    if (boxCount < boxNum)
                    {
                        throw new Exception("当前库存整箱数少于输入的取样数");
                    }
                    var lit = new List<int>();
                    do
                    {
                        byte[] buffer = Guid.NewGuid().ToByteArray();
                        int iSeed = BitConverter.ToInt32(buffer, 0);
                        Random random = new Random(iSeed);
                        var j = random.Next(0, boxCount);
                        if (lit.Contains(j))
                        {
                            continue;
                        }
                        var boxCode = boxList[j];//箱码
                        boxStrList.Add(boxCode);
                        lit.Add(j);
                    } while (lit.Count < boxNum);
                    var zhi = listOrder.Count(m => boxStrList.Contains(m.BoxNo));
                    if (zhi <= 3) //支数量<=3
                    {
                        outInfoCount += zhi;
                    }
                    else if (zhi > 3)//箱内数量 > 3 且 <=300
                    {
                        //规则 取样支数 √N+1
                        var c = Math.Sqrt(zhi) + 1;//开平方
                        if (zhi > 300) //箱内数量 > 300
                        {
                            //规则 箱数 √N/2+1
                            c = Math.Sqrt(zhi) / 2 + 1;
                        }
                        var d = Math.Floor(c);  //取样的支数量
                        outInfoCount += (int)d;
                    }
                }
                else
                {
                    throw new Exception("请选择取样规则");
                }
                var zhiCount = outInfoCount;
                var xiangCount = boxStrList.Count; //随机出的箱数量
                for (int i = 1; i <= boxStrList.Count; i++)
                {
                    decimal t = zhiCount / xiangCount;
                    var t2 = zhiCount % xiangCount;
                    var t3 = 5 / 2;
                    var t4 = 5 % 2;
                    if (t2 > 0)
                    {
                        t += 1;
                    }
                    var q = (int)t;//箱内出多少支
                    var infoCount = listOrder.Count(m => m.BoxNo == boxStrList[i - 1]);
                    if (q > infoCount)
                    {
                        throw new Exception("箱内支数小于要分配的支数");
                    }
                    zhiCount -= q;
                    xiangCount -= 1;
                    SaveDic2(useInfoQtyDic, boxStrList[i - 1], q);
                }
                var pingJunNum = needQty / outInfoCount;// / pickNum;平均每支取的数量
                foreach (var item in useInfoQtyDic)
                {
                    var box = listOrder.Where(m => m.BoxNo == item.Key).ToList();
                    var infoCount = box.Count;//箱内支数量
                    if (infoCount == item.Value) //支数量<=3
                    {
                        foreach (var item2 in box)
                        {
                            if (pingJunNum > item2.Qty)
                            {
                                throw new Exception("平均需取样数量大于等于箱支内数量");
                            }
                            qty += pingJunNum;
                            var tray = palletList.First(m => m.Id == item2.Id);
                            SaveDic(stockQtyDic, tray.Id, pingJunNum);
                            SaveDic(useBoxQtyDic, item2.Id, pingJunNum);
                        }
                    }
                    else
                    {
                        var e = item.Value; //取样的支数量
                        var lit2 = new List<int>();
                        do
                        {
                            byte[] buffer = Guid.NewGuid().ToByteArray();
                            int iSeed = BitConverter.ToInt32(buffer, 0);
                            Random random = new Random(iSeed);
                            var j = random.Next(0, infoCount);//随机箱内支码
                            if (lit2.Contains(j))
                            {
                                continue;
                            }
                            var info = box[j];
                            if (pingJunNum > info.Qty)
                            {
                                throw new Exception("平均需取样数量大于等于箱支内数量");
                            }
                            qty += pingJunNum;
                            var tray = palletList.First(m => m.Id == info.Id);
                            SaveDic(stockQtyDic, tray.Id, pingJunNum);
                            SaveDic(useBoxQtyDic, info.Id, pingJunNum);
                            lit2.Add(j);
                        } while (lit2.Count < e);
                    }
                }
                return (decimal)qty;
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
        /// <summary>
        /// 保存字典
        /// </summary>
        /// <param name="dic"></param>
@@ -250,6 +630,18 @@
            }
        }
        private void SaveDic2(Dictionary<string, int> dic, string key, int v)
        {
            if (dic.ContainsKey(key))
            {
                dic[key] += v;
            }
            else
            {
                dic.Add(key, v);
            }
        }
        //--------------------------------------------------------------------------------------------------------------
        #region MyRegion
Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs
@@ -50,7 +50,7 @@
        /// <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,string isContinue, int userId);
        void CrSetCheck(string crNo, string crDetail, string palletNo, string boxNo,string boxNo3,string result, decimal? qty,string isContinue, int userId);
        #endregion