Пример #1
0
        /// <summary>
        /// 推荐仓位
        /// </summary>
        /// <returns></returns>
        protected String SuggestBarcode(String qu, Action <wms_cangwei> action)
        {
            String      barcode = null;
            wms_cangwei cw      = null;

            /*String[] barcodes = GetEmptyBarcodeByQu(qu);
             * var qrybar = from e in WmsDc.wms_cangwei
             *           where e.tjflg == GetY() && e.isvld == GetY() && e.tpflg == GetN()
             *           && qu == e.qu && barcodes.Contains(e.barcode)
             *           orderby e.barcode
             *           select e;*/
            var qrybar = from e in WmsDc.wms_cangwei
                         where savdpts.Contains(e.savdptid.Trim()) &&
                         e.qu == qu &&
                         e.isvld == GetY() && e.tjflg == GetY() &&
                         e.tpflg == GetN() && e.kcflg == WMSConst.KC_FLG_NONQTY
                         orderby e.barcode
                         select e;

            var arrqrybar = qrybar.Take(1).ToArray();

            if (arrqrybar.Length > 0)
            {
                cw      = arrqrybar[0];
                barcode = cw.barcode;
                action(cw);
            }
            else
            {
                barcode = null;
            }

            return(barcode);
        }
Пример #2
0
        private wms_cangwei GetCangWei(String newbarcode)
        {
            var qrytj = from e in WmsDc.wms_cangwei
                        where e.isvld == GetY() // && e.tjflg == GetN()
                                                //&& savdpts.Contains(e.savdptid)
                                                //&& qus.Contains(e.qu)
                        && e.barcode == newbarcode
                        select e;
            wms_cangwei cw = qrytj.FirstOrDefault();

            return(cw);
        }
Пример #3
0
        public ActionResult MdRetBll(String bllno, String gdsids, String qtys, String rsns)
        {
            //拆分货号,数量
            JsonResult    jr = (JsonResult)_MkParam(gdsids, qtys, rsns);
            ResultMessage rm = (ResultMessage)jr.Data;

            if (rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS)
            {
                return(jr);
            }
            List <ParamRetBll> param = null;

            param = (List <ParamRetBll>)rm.ResultObject;

            //查询返仓单
            //查询返仓单主表
            var qrymst = from e in WmsDc.wms_cang_109
                         where e.bllid == WMSConst.BLL_TYPE_RETCANG &&
                         e.wmsno == bllno &&
                         qus.Contains(e.qu.Trim())
                         select e;
            var arrqrymst = qrymst.ToArray();

            if (arrqrymst.Length <= 0)
            {
                return(RNoData("N0155"));
            }
            wms_cang_109 mst = arrqrymst[0];
            ////正在生成拣货单,请稍候重试
            //string quRetrv = mst.qu;
            //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
            //{
            //    return RInfo( "I0318" );
            //}

            //查询返仓单明细
            var qrydtl = from e in WmsDc.wms_cangdtl_109
                         join e1 in qrymst on new { e.wmsno, e.bllid } equals new { e1.wmsno, e1.bllid }
            select e;
            var    arrqrydtl = qrydtl.ToArray();

            if (arrqrydtl.Length <= 0)
            {
                return(RNoData("N0156"));
            }

            //查询是不是本人操作
            if (mst.mkr.Trim() != LoginInfo.Usrid)
            {
                return(RInfo("I0319"));
            }

            //查询是否有残损库权限
            if (mst.savdptid.Trim() != LoginInfo.DefCsSavdptid.Trim())
            {
                return(RInfo("I0320"));
            }

            //返仓单是否已经审核,审核不允许修改
            if (mst.chkflg == GetY())
            {
                return(RInfo("I0321"));
            }

            //插入单据明细
            //生成明细单
            int _i = 0;
            List <wms_cangdtl_109> lstDtl = new List <wms_cangdtl_109>();

            foreach (ParamRetBll r in param)
            {
                wms_cangdtl_109 dtl = new wms_cangdtl_109();
                dtl.wmsno      = bllno;
                dtl.bllid      = WMSConst.BLL_TYPE_RETCANG;
                dtl.rcdidx     = _i + 1;
                dtl.oldbarcode = "";
                wms_cangwei cw = GetBarcodeByGdsid(LoginInfo.DefCsSavdptid, r.Gdsid);
                if (cw == null)
                {
                    return(RInfo(r.Gdsid + ",推荐仓位为空", "I0322"));
                }
                dtl.barcode = cw.barcode;
                dtl.gdsid   = r.Gdsid;
                dtl.pkgid   = "01";
                dtl.pkgqty  = Math.Round(r.Qty, 4, MidpointRounding.AwayFromZero);
                dtl.qty     = Math.Round(r.Qty, 4, MidpointRounding.AwayFromZero);
                dtl.gdstype = "95";
                dtl.bthno   = "";
                dtl.vlddat  = "";
                dtl.bcd     = r.Bcd;
                dtl.tpcode  = "";
                dtl.bkr     = "";
                dtl.bokflg  = GetN();
                dtl.bokdat  = "";
                dtl.preqty  = null;
                dtl.brfdtl  = r.Rsn.ToString();

                lstDtl.Add(dtl);
                _i++;
            }
            WmsDc.wms_cangdtl_109.DeleteAllOnSubmit(arrqrydtl);
            iDelCangDtl109(arrqrydtl, mst);

            if (lstDtl.Count > 0)
            {
                WmsDc.wms_cangdtl_109.InsertAllOnSubmit(lstDtl);
            }
            else
            {
                WmsDc.wms_cang_109.DeleteOnSubmit(mst);
                iDelCangMst109(mst);
            }

            try
            {
                WmsDc.SubmitChanges();
                return(RSucc("修改成功", null, "S0146"));
            }
            catch (Exception ex)
            {
                return(RErr(ex.Message, "E0043"));
            }
        }
Пример #4
0
        public ActionResult MkRetBll(String dptid, String hndno, String gdsids, String qtys, String rsns, String qu)
        {
            /*if(GetCsQuByDptid(dptid, LoginInfo.DefStoreid)!=qu.Trim()){
             *  return RInfo("I0468");
             * }*/
            if (string.IsNullOrEmpty(qu))
            {
                return(RInfo("I0307"));
            }

            //检查是否有残损库权限
            if (String.IsNullOrEmpty(LoginInfo.DefCsSavdptid))
            {
                return(RInfo("I0308"));
            }

            //判断分店是不是操作的仓库(残损)
            if (!IsInSavdptid(dptid))
            {
                return(RInfo("I0309"));
            }

            //拆分货号,数量
            JsonResult    jr = (JsonResult)_MkParam(gdsids, qtys, rsns);
            ResultMessage rm = (ResultMessage)jr.Data;

            if (rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS)
            {
                return(jr);
            }
            List <ParamRetBll> param = null;

            param = (List <ParamRetBll>)rm.ResultObject;

            //得到分区
            //GetRealteQuResult rq= GetRealteQu("all", LoginInfo.DefCsSavdptid);

            //手工单号不能重复
            if (HasHndno(hndno))
            {
                return(RInfo("I0310", hndno));
            }

            //开始制单
            return(MakeNewBllNo(LoginInfo.DefCsSavdptid, qu, WMSConst.BLL_TYPE_RETCANG, (bllno) =>
            {
                //生成主单
                wms_cang_109 mst = new wms_cang_109();
                mst.wmsno = bllno;
                mst.bllid = WMSConst.BLL_TYPE_RETCANG;
                mst.savdptid = LoginInfo.DefCsSavdptid;
                mst.prvid = "";
                mst.qu = qu;
                ////正在生成拣货单,请稍候重试
                //string quRetrv = mst.qu;
                //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                //{
                //    return RRInfo( "I0311" );
                //}
                mst.rcvdptid = dptid;
                mst.times = "1";
                mst.lnkbocino = "";
                mst.lnkbocidat = "";
                mst.mkr = LoginInfo.Usrid;
                mst.mkedat = GetCurrentDay();
                mst.mkedat2 = GetCurrentDate();
                mst.ckr = "";
                mst.chkflg = GetN();
                mst.chkdat = "";
                mst.opr = LoginInfo.Usrid;
                mst.brief = "";
                mst.lnkbllid = "";
                mst.lnkno = hndno;
                mst.lnkbrief = "";

                //生成明细单
                int i = 0;
                List <wms_cangdtl_109> lstDtl = new List <wms_cangdtl_109>();
                foreach (ParamRetBll r in param)
                {
                    string dptid1 = (from e in WmsDc.gds where e.gdsid == r.Gdsid select e.dptid.Trim()).FirstOrDefault();
                    if (GetCsQuByDptid(dptid1, LoginInfo.DefStoreid) != qu.Trim())
                    {
                        return RRInfo("I0468");
                    }


                    wms_cangdtl_109 dtl = new wms_cangdtl_109();
                    dtl.wmsno = bllno;
                    dtl.bllid = WMSConst.BLL_TYPE_RETCANG;
                    dtl.rcdidx = i + 1;
                    dtl.oldbarcode = "";
                    wms_cangwei cw = GetBarcodeByGdsid(LoginInfo.DefCsSavdptid, r.Gdsid);
                    if (cw == null)
                    {
                        rm.ResultObject = null;
                        return RRInfo("I0454", r.Gdsid);
                    }
                    dtl.barcode = cw.barcode;
                    dtl.gdsid = r.Gdsid;
                    dtl.pkgid = "01";
                    dtl.pkgqty = Math.Round(r.Qty, 4, MidpointRounding.AwayFromZero);
                    dtl.qty = Math.Round(r.Qty, 4, MidpointRounding.AwayFromZero);
                    dtl.gdstype = "95";
                    dtl.bthno = "";
                    dtl.vlddat = "";
                    dtl.bcd = r.Bcd;
                    dtl.tpcode = "";
                    dtl.bkr = "";
                    dtl.bokflg = GetN();
                    dtl.bokdat = "";
                    dtl.preqty = null;
                    dtl.brfdtl = r.Rsn.ToString();

                    lstDtl.Add(dtl);
                    //修改推荐仓位标志
                    i++;
                }

                //done 判断商品是否在同一个部门

                WmsDc.wms_cang_109.InsertOnSubmit(mst);
                WmsDc.wms_cangdtl_109.InsertAllOnSubmit(lstDtl);

                rm.ResultObject = bllno;

                return rm;
            }));
        }
Пример #5
0
        public ActionResult AdRetBll(String bllno, String dptid, String hndno, String gdsids, String qtys, String rsns)
        {
            ////正在生成拣货单,请稍候重试
            //string quRetrv = GetQuByDptid(dptid, LoginInfo.DefStoreid);
            //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
            //{
            //    return RInfo( "I0297" );
            //}

            //检查是否有残损库权限
            if (String.IsNullOrEmpty(LoginInfo.DefCsSavdptid))
            {
                return(RInfo("I0298"));
            }

            var qrymst = from e in WmsDc.wms_cang_109
                         where e.wmsno == bllno && e.bllid == WMSConst.BLL_TYPE_RETCANG &&
                         e.mkr == LoginInfo.Usrid &&
                         qus.Contains(e.qu.Trim())
                         select e;
            var arrqrymst = qrymst.ToArray();
            var qrydtl    = from e in WmsDc.wms_cangdtl_109
                            where e.wmsno == bllno && e.bllid == WMSConst.BLL_TYPE_RETCANG
                            select e;
            var arrqrydtl = qrydtl.ToArray();

            if (arrqrymst.Length <= 0)
            {
                return(RNoData("N0152"));
            }
            wms_cang_109 mst = arrqrymst[0];

            if (mst.chkflg == GetY())
            {
                return(RInfo("I0299"));
            }
            //是否是本人制单
            if (!IsSameLogin(mst.mkr))
            {
                return(RInfo("I0300"));
            }


            //拆分货号,数量
            JsonResult    jr = (JsonResult)_MkParam(gdsids, qtys, rsns);
            ResultMessage rm = (ResultMessage)jr.Data;

            if (rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS)
            {
                return(jr);
            }
            List <ParamRetBll> param = null;

            param = (List <ParamRetBll>)rm.ResultObject;

            //检查录入的商品有没有相同记录
            var qrySameGds = from e in param
                             group e by e.Gdsid into g
                             where g.Count() > 1
                             select g.Key;
            var arrQrySameGds = qrySameGds.ToArray();

            if (arrQrySameGds.Length > 0)
            {
                return(RInfo("I0301", arrQrySameGds[0]));
            }


            //得到分区
            //GetRealteQuResult rq = GetRealteQu("all", LoginInfo.DefCsSavdptid);
            var gdsqus = (from e in WmsDc.gds
                          join e1 in WmsDc.wms_set on new { setid = "001", e.dptid } equals new { e1.setid, dptid = e1.val2.Trim() }
                          join e2 in WmsDc.wms_set on new { setid = "008", storeid = "2", savdptid = e1.val3 }     //残损库对应的区
                          equals new { e2.setid, storeid = e2.val2.Trim(), savdptid = e2.val1.Trim() }
                          where param.Select(ee => ee.Gdsid.Trim()).Contains(e.gdsid) &&
                          e2.val3 == LoginInfo.DefStoreid &&
                          e1.isvld == GetY() && e2.isvld == GetY() &&
                          thqus.Contains(e1.val1.Trim())
                          select new { qu = e1.val1.Trim() }
                          ).Distinct().ToArray();

            if (gdsqus.Length == 0 || gdsqus.Length > 1)
            {
                return(RInfo("I0302"));
            }
            if (gdsqus[0].qu != mst.qu.Trim())
            {
                return(RInfo("I0303", gdsqus[0].qu, mst.qu.Trim()));
            }



            //开始制单

            //生成明细单
            int i     = 0;
            var qrymx = from e in arrqrydtl
                        where e.wmsno == bllno && e.bllid == WMSConst.BLL_TYPE_RETCANG
                        orderby e.rcdidx descending
                        select e;
            var arrqrymx = qrymx.ToArray();

            if (arrqrymx.Length > 0)
            {
                i = arrqrymx[0].rcdidx;
            }
            List <wms_cangdtl_109> lstDtl = new List <wms_cangdtl_109>();

            foreach (ParamRetBll r in param)
            {
                wms_cangdtl_109 dtl = new wms_cangdtl_109();
                dtl.wmsno      = bllno;
                dtl.bllid      = WMSConst.BLL_TYPE_RETCANG;
                dtl.rcdidx     = i + 1;
                dtl.oldbarcode = "";
                wms_cangwei cw = GetBarcodeByGdsid(LoginInfo.DefCsSavdptid, r.Gdsid);
                if (cw == null)
                {
                    return(RInfo(r.Gdsid + ",推荐仓位为空", "I0304"));
                }
                dtl.barcode = cw.barcode;
                dtl.gdsid   = r.Gdsid;
                dtl.pkgid   = "01";
                dtl.pkgqty  = Math.Round(r.Qty, 4, MidpointRounding.AwayFromZero);
                dtl.qty     = Math.Round(r.Qty, 4, MidpointRounding.AwayFromZero);
                dtl.gdstype = "95";
                dtl.bthno   = "";
                dtl.vlddat  = "";
                dtl.bcd     = r.Bcd;
                dtl.tpcode  = "";
                dtl.bkr     = "";
                dtl.bokflg  = GetN();
                dtl.bokdat  = "";
                dtl.preqty  = null;
                dtl.brfdtl  = r.Rsn.ToString();

                //看看数据库有没有已加的商品
                if (arrqrydtl.Length > 0)
                {
                    var qryhasgds = from e in arrqrydtl
                                    where e.wmsno == bllno && e.bllid == WMSConst.BLL_TYPE_RETCANG &&
                                    e.gdsid == dtl.gdsid
                                    select e;
                    foreach (var q in qryhasgds)
                    {
                        return(RInfo("I0305", q.gdsid));
                    }
                }

                lstDtl.Add(dtl);
                //修改推荐仓位标志
                i++;
            }

            WmsDc.wms_cangdtl_109.InsertAllOnSubmit(lstDtl);

            try
            {
                WmsDc.SubmitChanges();
                return(RSucc("成功", null, "S0142"));
            }
            catch (Exception ex)
            {
                return(RErr(ex.Message, "E0041"));
            }
        }
Пример #6
0
        public ActionResult CheckCangwei(String wmsno, String barcode, String newbarcode, String tpcode)
        {
            using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options))
            {
                wms_cangwei oldCw = null;
                String      rqu   = GetQuByBarcode(newbarcode);
                String      oqu   = GetQuByBarcode(barcode);

                //如果旧仓位不为空,就需要查询出就仓位,以便修改其仓位托盘tpflg标志
                if (!string.IsNullOrEmpty(barcode.Trim()))
                {
                    //判断仓位码是否有效
                    if (!IsExistBarcode(barcode))
                    {
                        return(RInfo("I0396", barcode.Trim()));
                    }
                    oldCw = GetCangWei(barcode);
                }

                //判断仓位码是否有效
                if (!string.IsNullOrEmpty(newbarcode) && !IsExistBarcode(newbarcode))
                {
                    return(RInfo("I0397", newbarcode.Trim()));
                }
                //todo 判断新的仓位码是否为今天已经上架单中已有的仓位

                //主表
                wms_cang cang = GetCangMst(wmsno);

                //明细表
                var qrydtl = GetCangDtl(wmsno)
                             .Where(e => e.barcode.Trim() == barcode.Trim() && e.tpcode.Trim() == tpcode.Trim());
                var arrqrydtl = qrydtl.ToArray();
                // 判断明细的分区是否是同一个分区,而且newbarcode的分区也在商品的分区内
                string initQu = null;
                foreach (wms_cangdtl dtl in arrqrydtl)
                {
                    string gdsqu = GetQuByGdsid(dtl.gdsid, LoginInfo.DefStoreid).FirstOrDefault();
                    if (string.IsNullOrEmpty(initQu))
                    {
                        initQu = gdsqu;
                    }
                    if (initQu != gdsqu)
                    {
                        return(RInfo("I0398"));
                    }
                }
                if (!dtqus.Contains(rqu))
                {
                    if (initQu != newbarcode.Substring(0, 2))
                    {
                        return(RInfo("I0399"));
                    }
                }

                #region  效性检查
                //检查单号是否有效
                if (cang == null)
                {
                    return(RNoData("N0213"));
                }
                ////正在生成拣货单,请稍候重试
                //string quRetrv = cang.qu;
                //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                //{
                //    return RInfo( "I0400" );
                //}

                //检查是否已经审核
                if (cang.chkflg == GetY())
                {
                    return(RInfo("I0401"));
                }

                //未查找到托盘的正确仓位
                if (arrqrydtl.Length <= 0)
                {
                    return(RNoData("N0214"));
                }

                //检查同一个托盘是否都已经上架
                if (arrqrydtl[0].bokflg == GetY())
                {
                    return(RInfo("I0402"));
                }
                #endregion

                wms_cangwei cw = null;
                //如果调入不在堆头区,就判断一下区域间能不能互相调用
                //if (!dtqus.Contains(rqu))
                //{
                //查看新仓位是否不为推荐仓位
                if (!String.IsNullOrEmpty(newbarcode) && barcode.Trim() != newbarcode.Trim())
                {
                    cw = GetCangWei(newbarcode);
                    if (cw == null)
                    {
                        return(RNoData("N0215", newbarcode));
                    }

                    if (!savdpts.Contains(cw.savdptid.Trim()))
                    {
                        return(RInfo("I0403", newbarcode));
                    }
                    if (!qus.Contains(cw.qu.Trim()))
                    {
                        return(RInfo("I0404", newbarcode));
                    }


                    /*var qrynewcw = from e in WmsDc.wms_cang
                     *             join e1 in WmsDc.wms_cangdtl on new { e.wmsno, e.bllid } equals new { e1.wmsno, e1.bllid }
                     *             where //e.wmsno == wmsno &&
                     *             e.bllid == "102" //上架单
                     *             && e1.barcode == newbarcode
                     *             && e.mkedat.Substring(0, 8) == GetCurrentDay()
                     *             select e;
                     * if (oldCw != null &&
                     *  (
                     *  !qrynewcw.Any() &&  //这两句不能换位置
                     *  cw.tjflg == GetY() //调整仓位{0}为不在当天上架单中的推荐仓位,不能使用
                     *  )
                     *  )
                     * {
                     *  return RInfo("I0405", newbarcode);
                     * }*/
                    //修改新仓位标记tpflg=GetY()
                    cw.tpflg = GetY();
                    //修改旧仓位tpflg=GetN()
                    if (oldCw != null)
                    {
                        oldCw.tpflg = GetN();
                    }
                    WmsDc.SubmitChanges();
                }
                //}

                #region  架托盘到仓位
                foreach (wms_cangdtl cangdtl in arrqrydtl)
                {
                    cangdtl.bkr    = LoginInfo.Usrid;
                    cangdtl.bokflg = GetY();
                    cangdtl.bokdat = DateTime.Now.ToString("yyyyMMddHHmmss");
                    if (cw != null)
                    {
                        cangdtl.oldbarcode = cangdtl.barcode;
                        cangdtl.barcode    = newbarcode;
                    }
                }

                try
                {
                    WmsDc.SubmitChanges();

                    //done: 判断是否已经上架单明细已经审核完毕,完毕后就直接审核整单
                    //明细表
                    /**/
                    int?isLasted = WmsDc.ExecuteQuery <int?>("select count(*) from wms_cangdtl with(updlock) where wmsno={0} and bllid={1} and bokflg={2}",
                                                             wmsno, WMSConst.BLL_TYPE_UPBLL, GetN()).FirstOrDefault();
                    if (isLasted == null || isLasted == 0)
                    {
                        wms_cangdtl[] arrqryaldtl = GetCangDtl(wmsno)
                                                    .Where(e => e.bokflg == GetN())
                                                    .ToArray();
                        // done: 判断盘点收货单有没有整单审核,提示不能上架
                        wms_bllmst bllmst = GetBllMst(wmsno);
                        if (bllmst == null)
                        {
                            return(RInfo("I0406"));
                        }
                        if (bllmst.chkflg == GetN())
                        {
                            return(RInfo("I0407"));
                        }
                        #region 审核整单
                        JsonResult    ar = (JsonResult)AdtUpShelf(wmsno);
                        ResultMessage rm = (ResultMessage)ar.Data;
                        if (rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS)
                        {
                            return(ar);
                        }
                        #endregion 审核整单
                    }

                    scop.Complete();
                    return(RSucc("扫描仓位码和托盘码匹配成功!", null, "S0196"));
                }
                catch (Exception ex)
                {
                    return(RErr("异常错误!" + ex.Message, "E0053"));
                }
                #endregion
            }
        }

        private wms_cangwei GetCangWei(String newbarcode)
        {
            var qrytj = from e in WmsDc.wms_cangwei
                        where e.isvld == GetY() // && e.tjflg == GetN()
                                                //&& savdpts.Contains(e.savdptid)
                                                //&& qus.Contains(e.qu)
                        && e.barcode == newbarcode
                        select e;
            wms_cangwei cw = qrytj.FirstOrDefault();

            return(cw);
        }

        private wms_cangdtl[] GetCangDtl(String wmsno)
        {
            var qryaldtl = from e in WmsDc.wms_cangdtl
                           join e1 in WmsDc.wms_cang on new { e.wmsno, e.bllid } equals new { e1.wmsno, e1.bllid }
            where e.wmsno == wmsno &&
            e1.bllid == WMSConst.BLL_TYPE_UPBLL
            //&& e.bokflg == GetN()
            select e;
            var arrqryaldtl = qryaldtl.ToArray();

            return(arrqryaldtl);
        }

        private wms_bllmst GetBllMst(String wmsno)
        {
            var qry = from e in WmsDc.wms_bllmst
                      join e1 in WmsDc.wms_cang on new { e.wmsno, e.bllid } equals new { wmsno = e1.lnkno, bllid = e1.lnkbllid }
            where e1.wmsno == wmsno && e1.bllid == WMSConst.BLL_TYPE_UPBLL
            select e;
            wms_bllmst bllmst = qry.FirstOrDefault();

            return(bllmst);
        }

        private ActionResult AdtUpShelf(String wmsno)
        {
            //主表
            wms_cang cang = GetCangMst(wmsno);

            //明细表
            wms_cangdtl[] arrqrydtl = GetCangDtl(wmsno);

            #region  效性检查
            //检查单号是否有效
            if (cang == null)
            {
                return(RNoData("N0216"));
            }
            ////正在生成拣货单,请稍候重试
            //string quRetrv = cang.qu;
            //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
            //{
            //    return RInfo( "I0408" );
            //}

            //检查是否已经审核
            if (cang.chkflg == GetY())
            {
                return(RInfo("I0409"));
            }

            //未查找到收货单明细
            if (arrqrydtl.Length <= 0)
            {
                return(RNoData("N0217"));
            }

            //检查是否所有托盘都已经确认
            foreach (wms_cangdtl cangdtl in arrqrydtl)
            {
                if (cangdtl.bokflg == GetN())
                {
                    return(RInfo("I0410", cangdtl.tpcode));
                }
            }
            #endregion

            #region 登帐
            String fscprdid = GetCurrentFscprdid();
            var    qrygdsbs = from e in WmsDc.wms_gdsbs
                              where e.fscprdid == fscprdid &&
                              e.srcbllno == cang.wmsno &&
                              e.bllid == cang.bllid
                              select e;
            var arrqrygdsbs = qrygdsbs.ToArray();
            WmsDc.wms_gdsbs.DeleteAllOnSubmit(arrqrygdsbs);
            WmsDc.SubmitChanges();

            List <wms_gdsbs> lstgdsbs = new List <wms_gdsbs>();
            foreach (wms_cangdtl cangdtl in arrqrydtl)
            {
                wms_gdsbs gdsbs = new wms_gdsbs();
                gdsbs.actdat    = DateTime.Now.ToString("yyyyMMdd");
                gdsbs.barcode   = cangdtl.barcode;
                gdsbs.bcd       = cangdtl.bcd;
                gdsbs.bllid     = cang.bllid;
                gdsbs.brief     = cang.brief;
                gdsbs.bthno     = cangdtl.bthno;
                gdsbs.dbtcrt    = '1';
                gdsbs.empid     = LoginInfo.Usrid;
                gdsbs.fscprdid  = fscprdid;
                gdsbs.gdsid     = cangdtl.gdsid;
                gdsbs.gdstype   = cangdtl.gdstype;
                gdsbs.prvid     = cang.prvid;
                gdsbs.qty       = cangdtl.qty;
                gdsbs.savdptid  = cang.savdptid;
                gdsbs.srcbllno  = cang.wmsno;
                gdsbs.srcrcdidx = cangdtl.rcdidx;
                gdsbs.vlddat    = cangdtl.vlddat;
                lstgdsbs.Add(gdsbs);

                #region 统计帐表数据更新
                wms_cangwei cw = GetCangWei(cangdtl.barcode);
                if (cw == null)
                {
                    return(RNoData("N0218", gdsbs.gdsid));
                }

                #region 修改仓位有货标记

                /*try       //周熙写了触发器,说不用改这个了
                 * {
                 *  cw.kcflg = WMSConst.KC_FLG_HASQTY;     //修改仓位有无库存,有为1,没有为0;
                 *  cw.tpflg = GetN();
                 *  WmsDc.SubmitChanges();
                 * }
                 * catch (Exception ex)
                 * {
                 * }*/
                #endregion

                var qrycwgdsbs = from e in WmsDc.wms_cwgdsbs
                                 where e.barcode == gdsbs.barcode.Trim()
                                 //&& e.bcd == gdsbs.bcd
                                 //&& e.bthno == gdsbs.bthno
                                 && e.gdsid == gdsbs.gdsid.Trim() &&
                                 e.gdstype == gdsbs.gdstype.Trim() &&
                                 e.bthno == gdsbs.bthno &&
                                 e.vlddat == gdsbs.vlddat
                                 //&& e.prvid == gdsbs.prvid
                                 && e.savdptid == gdsbs.savdptid &&
                                 e.qu == cw.qu.Trim()
                                 select e;
                var arrqrycwgdsbs = qrycwgdsbs.ToArray();

                //如果统计帐表里面没有就增加一条记录
                if (arrqrycwgdsbs.Length <= 0)
                {
                    wms_cwgdsbs cwgdsbs = new wms_cwgdsbs();
                    cwgdsbs.barcode  = gdsbs.barcode;
                    cwgdsbs.bcd      = gdsbs.bcd;
                    cwgdsbs.gdsid    = gdsbs.gdsid;
                    cwgdsbs.qty      = gdsbs.qty;
                    cwgdsbs.gdstype  = gdsbs.gdstype;
                    cwgdsbs.prvid    = gdsbs.prvid;
                    cwgdsbs.qu       = cw.qu;
                    cwgdsbs.savdptid = gdsbs.savdptid;
                    cwgdsbs.bthno    = gdsbs.bthno == null ? "1" : gdsbs.bthno;
                    cwgdsbs.vlddat   = gdsbs.vlddat == null?GetCurrentDay() : gdsbs.vlddat;

                    WmsDc.wms_cwgdsbs.InsertOnSubmit(cwgdsbs);
                    WmsDc.SubmitChanges();
                }
                else    //如果有的话就修改统计帐表的信息
                {
                    wms_cwgdsbs cwgdsbs = arrqrycwgdsbs[0];
                    cwgdsbs.qty += gdsbs.qty;
                    WmsDc.SubmitChanges();
                }
                #endregion

                //WmsDc.SubmitChanges();
            }
            //WmsDc.wms_gdsbs.InsertAllOnSubmit(lstgdsbs);
            #endregion

            #region 修改审核标记
            cang.chkflg = GetY();
            cang.ckr    = LoginInfo.Usrid;
            cang.chkdat = DateTime.Now.ToString("yyyyMMddHHmmss");
            #endregion

            WmsDc.SubmitChanges();

            return(RSucc("上架单审核成功!", null, "S0197"));
        }
Пример #7
0
        private ActionResult AdtUpShelf(String wmsno)
        {
            //主表
            wms_cang cang = GetCangMst(wmsno);

            //明细表
            wms_cangdtl[] arrqrydtl = GetCangDtl(wmsno);

            #region  效性检查
            //检查单号是否有效
            if (cang == null)
            {
                return(RNoData("N0216"));
            }
            ////正在生成拣货单,请稍候重试
            //string quRetrv = cang.qu;
            //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
            //{
            //    return RInfo( "I0408" );
            //}

            //检查是否已经审核
            if (cang.chkflg == GetY())
            {
                return(RInfo("I0409"));
            }

            //未查找到收货单明细
            if (arrqrydtl.Length <= 0)
            {
                return(RNoData("N0217"));
            }

            //检查是否所有托盘都已经确认
            foreach (wms_cangdtl cangdtl in arrqrydtl)
            {
                if (cangdtl.bokflg == GetN())
                {
                    return(RInfo("I0410", cangdtl.tpcode));
                }
            }
            #endregion

            #region 登帐
            String fscprdid = GetCurrentFscprdid();
            var    qrygdsbs = from e in WmsDc.wms_gdsbs
                              where e.fscprdid == fscprdid &&
                              e.srcbllno == cang.wmsno &&
                              e.bllid == cang.bllid
                              select e;
            var arrqrygdsbs = qrygdsbs.ToArray();
            WmsDc.wms_gdsbs.DeleteAllOnSubmit(arrqrygdsbs);
            WmsDc.SubmitChanges();

            List <wms_gdsbs> lstgdsbs = new List <wms_gdsbs>();
            foreach (wms_cangdtl cangdtl in arrqrydtl)
            {
                wms_gdsbs gdsbs = new wms_gdsbs();
                gdsbs.actdat    = DateTime.Now.ToString("yyyyMMdd");
                gdsbs.barcode   = cangdtl.barcode;
                gdsbs.bcd       = cangdtl.bcd;
                gdsbs.bllid     = cang.bllid;
                gdsbs.brief     = cang.brief;
                gdsbs.bthno     = cangdtl.bthno;
                gdsbs.dbtcrt    = '1';
                gdsbs.empid     = LoginInfo.Usrid;
                gdsbs.fscprdid  = fscprdid;
                gdsbs.gdsid     = cangdtl.gdsid;
                gdsbs.gdstype   = cangdtl.gdstype;
                gdsbs.prvid     = cang.prvid;
                gdsbs.qty       = cangdtl.qty;
                gdsbs.savdptid  = cang.savdptid;
                gdsbs.srcbllno  = cang.wmsno;
                gdsbs.srcrcdidx = cangdtl.rcdidx;
                gdsbs.vlddat    = cangdtl.vlddat;
                lstgdsbs.Add(gdsbs);

                #region 统计帐表数据更新
                wms_cangwei cw = GetCangWei(cangdtl.barcode);
                if (cw == null)
                {
                    return(RNoData("N0218", gdsbs.gdsid));
                }

                #region 修改仓位有货标记

                /*try       //周熙写了触发器,说不用改这个了
                 * {
                 *  cw.kcflg = WMSConst.KC_FLG_HASQTY;     //修改仓位有无库存,有为1,没有为0;
                 *  cw.tpflg = GetN();
                 *  WmsDc.SubmitChanges();
                 * }
                 * catch (Exception ex)
                 * {
                 * }*/
                #endregion

                var qrycwgdsbs = from e in WmsDc.wms_cwgdsbs
                                 where e.barcode == gdsbs.barcode.Trim()
                                 //&& e.bcd == gdsbs.bcd
                                 //&& e.bthno == gdsbs.bthno
                                 && e.gdsid == gdsbs.gdsid.Trim() &&
                                 e.gdstype == gdsbs.gdstype.Trim() &&
                                 e.bthno == gdsbs.bthno &&
                                 e.vlddat == gdsbs.vlddat
                                 //&& e.prvid == gdsbs.prvid
                                 && e.qu == cw.qu.Trim()
                                 select e;
                var arrqrycwgdsbs = qrycwgdsbs.ToArray();

                //如果统计帐表里面没有就增加一条记录
                if (arrqrycwgdsbs.Length <= 0)
                {
                    wms_cwgdsbs cwgdsbs = new wms_cwgdsbs();
                    cwgdsbs.barcode  = gdsbs.barcode;
                    cwgdsbs.bcd      = gdsbs.bcd;
                    cwgdsbs.gdsid    = gdsbs.gdsid;
                    cwgdsbs.qty      = gdsbs.qty;
                    cwgdsbs.gdstype  = gdsbs.gdstype;
                    cwgdsbs.prvid    = gdsbs.prvid;
                    cwgdsbs.qu       = cw.qu;
                    cwgdsbs.savdptid = gdsbs.savdptid;
                    cwgdsbs.bthno    = gdsbs.bthno == null ? "1" : gdsbs.bthno;
                    cwgdsbs.vlddat   = gdsbs.vlddat == null?GetCurrentDay() : gdsbs.vlddat;

                    WmsDc.wms_cwgdsbs.InsertOnSubmit(cwgdsbs);
                    WmsDc.SubmitChanges();
                }
                else    //如果有的话就修改统计帐表的信息
                {
                    wms_cwgdsbs cwgdsbs = arrqrycwgdsbs[0];
                    cwgdsbs.qty += gdsbs.qty;
                    WmsDc.SubmitChanges();
                }
                #endregion

                //WmsDc.SubmitChanges();
            }
            //WmsDc.wms_gdsbs.InsertAllOnSubmit(lstgdsbs);
            #endregion

            #region 修改审核标记
            cang.chkflg = GetY();
            cang.ckr    = LoginInfo.Usrid;
            cang.chkdat = DateTime.Now.ToString("yyyyMMddHHmmss");
            #endregion

            WmsDc.SubmitChanges();

            return(RSucc("上架单审核成功!", null, "S0197"));
        }
Пример #8
0
        public ActionResult CheckCangwei(String wmsno, String barcode, String newbarcode, String tpcode)
        {
            using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options))
            {
                wms_cangwei oldCw = null;
                String      rqu   = GetQuByBarcode(newbarcode);
                String      oqu   = GetQuByBarcode(barcode);

                //如果旧仓位不为空,就需要查询出就仓位,以便修改其仓位托盘tpflg标志
                if (!string.IsNullOrEmpty(barcode.Trim()))
                {
                    //判断仓位码是否有效
                    if (!IsExistBarcode(barcode))
                    {
                        return(RInfo("I0396", barcode.Trim()));
                    }
                    oldCw = GetCangWei(barcode);
                }

                //判断仓位码是否有效
                if (!string.IsNullOrEmpty(newbarcode) && !IsExistBarcode(newbarcode))
                {
                    return(RInfo("I0397", newbarcode.Trim()));
                }
                //todo 判断新的仓位码是否为今天已经上架单中已有的仓位

                //主表
                wms_cang cang = GetCangMst(wmsno);

                //明细表
                var qrydtl = GetCangDtl(wmsno)
                             .Where(e => e.barcode.Trim() == barcode.Trim() && e.tpcode.Trim() == tpcode.Trim());
                var arrqrydtl = qrydtl.ToArray();
                // 判断明细的分区是否是同一个分区,而且newbarcode的分区也在商品的分区内
                string initQu = null;
                foreach (wms_cangdtl dtl in arrqrydtl)
                {
                    string gdsqu = GetQuByGdsid(dtl.gdsid, LoginInfo.DefStoreid).FirstOrDefault();
                    if (string.IsNullOrEmpty(initQu))
                    {
                        initQu = gdsqu;
                    }
                    if (initQu != gdsqu)
                    {
                        return(RInfo("I0398"));
                    }
                }
                if (!dtqus.Contains(rqu))
                {
                    if (initQu != newbarcode.Substring(0, 2))
                    {
                        return(RInfo("I0399"));
                    }
                }

                #region  效性检查
                //检查单号是否有效
                if (cang == null)
                {
                    return(RNoData("N0213"));
                }
                ////正在生成拣货单,请稍候重试
                //string quRetrv = cang.qu;
                //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                //{
                //    return RInfo( "I0400" );
                //}

                //检查是否已经审核
                if (cang.chkflg == GetY())
                {
                    return(RInfo("I0401"));
                }

                //未查找到托盘的正确仓位
                if (arrqrydtl.Length <= 0)
                {
                    return(RNoData("N0214"));
                }

                //检查同一个托盘是否都已经上架
                if (arrqrydtl[0].bokflg == GetY())
                {
                    return(RInfo("I0402"));
                }
                #endregion

                wms_cangwei cw = null;
                //如果调入不在堆头区,就判断一下区域间能不能互相调用
                //if (!dtqus.Contains(rqu))
                //{
                //查看新仓位是否不为推荐仓位
                if (!String.IsNullOrEmpty(newbarcode) && barcode.Trim() != newbarcode.Trim())
                {
                    cw = GetCangWei(newbarcode);
                    if (cw == null)
                    {
                        return(RNoData("N0215", newbarcode));
                    }

                    if (!savdpts.Contains(cw.savdptid.Trim()))
                    {
                        return(RInfo("I0403", newbarcode));
                    }
                    if (!qus.Contains(cw.qu.Trim()))
                    {
                        return(RInfo("I0404", newbarcode));
                    }


                    /*var qrynewcw = from e in WmsDc.wms_cang
                     *             join e1 in WmsDc.wms_cangdtl on new { e.wmsno, e.bllid } equals new { e1.wmsno, e1.bllid }
                     *             where //e.wmsno == wmsno &&
                     *             e.bllid == "102" //上架单
                     *             && e1.barcode == newbarcode
                     *             && e.mkedat.Substring(0, 8) == GetCurrentDay()
                     *             select e;
                     * if (oldCw != null &&
                     *  (
                     *  !qrynewcw.Any() &&  //这两句不能换位置
                     *  cw.tjflg == GetY() //调整仓位{0}为不在当天上架单中的推荐仓位,不能使用
                     *  )
                     *  )
                     * {
                     *  return RInfo("I0405", newbarcode);
                     * }*/
                    //修改新仓位标记tpflg=GetY()
                    cw.tpflg = GetY();
                    //修改旧仓位tpflg=GetN()
                    if (oldCw != null)
                    {
                        oldCw.tpflg = GetN();
                    }
                    WmsDc.SubmitChanges();
                }
                //}

                #region  架托盘到仓位
                foreach (wms_cangdtl cangdtl in arrqrydtl)
                {
                    cangdtl.bkr    = LoginInfo.Usrid;
                    cangdtl.bokflg = GetY();
                    cangdtl.bokdat = DateTime.Now.ToString("yyyyMMddHHmmss");
                    if (cw != null)
                    {
                        cangdtl.oldbarcode = cangdtl.barcode;
                        cangdtl.barcode    = newbarcode;
                    }
                }

                try
                {
                    WmsDc.SubmitChanges();

                    //done: 判断是否已经上架单明细已经审核完毕,完毕后就直接审核整单
                    //明细表
                    wms_cangdtl[] arrqryaldtl = GetCangDtl(wmsno)
                                                .Where(e => e.bokflg == GetN())
                                                .ToArray();
                    if (arrqryaldtl.Length == 0)
                    {
                        // done: 判断盘点收货单有没有整单审核,提示不能上架
                        wms_bllmst bllmst = GetBllMst(wmsno);
                        if (bllmst == null)
                        {
                            return(RInfo("I0406"));
                        }
                        if (bllmst.chkflg == GetN())
                        {
                            return(RInfo("I0407"));
                        }
                        #region 审核整单
                        JsonResult    ar = (JsonResult)AdtUpShelf(wmsno);
                        ResultMessage rm = (ResultMessage)ar.Data;
                        if (rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS)
                        {
                            return(ar);
                        }
                        #endregion 审核整单
                    }

                    scop.Complete();
                    return(RSucc("扫描仓位码和托盘码匹配成功!", null, "S0196"));
                }
                catch (Exception ex)
                {
                    return(RErr("异常错误!" + ex.Message, "E0053"));
                }
                #endregion
            }
        }
Пример #9
0
        public ActionResult MdARetBll(String bllno, String gdsid, String qty, String rsn)
        {
            using (TransactionScope scop = new TransactionScope(TransactionScopeOption.Required, options))
            {
                ////正在生成拣货单,请稍候重试
                //string quRetrv = GetQuByGdsid(gdsid, LoginInfo.DefStoreid).FirstOrDefault();
                //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                //{
                //    return RInfo("I0312");
                //}

                //拆分货号,数量
                JsonResult    jr = (JsonResult)_MkParam(gdsid, qty, rsn);
                ResultMessage rm = (ResultMessage)jr.Data;
                if (rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS)
                {
                    return(jr);
                }
                List <ParamRetBll> param = null;
                param = (List <ParamRetBll>)rm.ResultObject;

                //查询返仓单
                //查询返仓单主表
                var qrymst = WmsDc.ExecuteQuery <wms_cang_109>("select * from wms_cang_109 with(updlock) where bllid={0} and wmsno={1} and mkr={2}",
                                                               WMSConst.BLL_TYPE_RETCANG, bllno, LoginInfo.Usrid);

                /*var qrymst = from e in WmsDc.wms_cang_109
                 *           where e.wmsno == bllno && e.bllid == WMSConst.BLL_TYPE_RETCANG
                 *           && e.mkr == LoginInfo.Usrid
                 *           && qus.Contains(e.qu.Trim())
                 *           select e;*/
                var arrqrymst = qrymst.Where(e => qus.Contains(e.qu.Trim())).ToArray();

                /*
                 * var qrymst = from e in WmsDc.wms_cang_109
                 *           where e.bllid == WMSConst.BLL_TYPE_RETCANG
                 *           && e.wmsno == bllno
                 *           && qus.Contains(e.qu.Trim())
                 *           select e;
                 * var arrqrymst = qrymst.ToArray();*/
                if (arrqrymst.Length <= 0)
                {
                    return(RNoData("N0153"));
                }
                wms_cang_109 mst = arrqrymst[0];

                //查询返仓单明细
                var qrydtl = from e in WmsDc.wms_cangdtl_109
                             join e1 in WmsDc.wms_cang_109 on new { e.wmsno, e.bllid } equals new { e1.wmsno, e1.bllid }
                where e.wmsno == bllno && e.bllid == WMSConst.BLL_TYPE_RETCANG && e.gdsid == param[0].Gdsid
                select e;
                var arrqrydtl = qrydtl.ToArray();
                if (arrqrydtl.Length <= 0)
                {
                    return(RNoData("N0154"));
                }
                if (rsn.Trim() == "")
                {
                    return(RInfo("I0313"));
                }

                //查询是不是本人操作
                if (mst.mkr.Trim() != LoginInfo.Usrid)
                {
                    return(RInfo("I0314"));
                }

                //查询是否有残损库权限
                if (mst.savdptid.Trim() != LoginInfo.DefCsSavdptid.Trim())
                {
                    return(RInfo("I0315"));
                }

                //返仓单是否已经审核,审核不允许修改
                if (mst != null && mst.chkflg == GetY())
                {
                    return(RInfo("I0316"));
                }

                //插入单据明细
                //生成明细单
                int _i = 0;
                List <wms_cangdtl_109> lstDtl = new List <wms_cangdtl_109>();
                foreach (ParamRetBll r in param)
                {
                    wms_cangdtl_109 dtl = new wms_cangdtl_109();
                    dtl.wmsno      = bllno;
                    dtl.bllid      = WMSConst.BLL_TYPE_RETCANG;
                    dtl.rcdidx     = _i + 1;
                    dtl.oldbarcode = "";
                    wms_cangwei cw = GetBarcodeByGdsid(LoginInfo.DefCsSavdptid, r.Gdsid);
                    if (cw == null)
                    {
                        return(RInfo(r.Gdsid + ",推荐仓位为空", "I0317"));
                    }
                    dtl.barcode = cw.barcode;
                    dtl.gdsid   = r.Gdsid;
                    dtl.pkgid   = "01";
                    dtl.pkgqty  = Math.Round(r.Qty, 4, MidpointRounding.AwayFromZero);
                    dtl.qty     = Math.Round(r.Qty, 4, MidpointRounding.AwayFromZero);
                    dtl.gdstype = "95";
                    dtl.bthno   = "1";
                    dtl.vlddat  = GetCurrentDay();
                    dtl.bcd     = r.Bcd;
                    dtl.tpcode  = "";
                    dtl.bkr     = "";
                    dtl.bokflg  = GetN();
                    dtl.bokdat  = GetCurrentDate();
                    dtl.preqty  = null;
                    dtl.brfdtl  = r.Rsn.ToString();

                    lstDtl.Add(dtl);
                    _i++;
                }

                wms_cangdtl_109 mddtl = arrqrydtl[0];
                mddtl.pkgqty = lstDtl[0].pkgqty;
                mddtl.qty    = lstDtl[0].qty;
                if (!string.IsNullOrEmpty(rsn))
                {
                    mddtl.brfdtl = rsn;
                }
                mddtl.bokdat = GetCurrentDate();

                /*WmsDc.wms_cangdtl_109.DeleteAllOnSubmit(arrqrydtl);
                 * if (lstDtl.Count > 0)
                 * {
                 *  WmsDc.wms_cangdtl_109.InsertAllOnSubmit(lstDtl);
                 * }
                 * else
                 * {
                 *  WmsDc.wms_cang_109.DeleteOnSubmit(mst);
                 * }*/

                try
                {
                    //WmsDc.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, mst);
                    ////检查单号是否已经审核
                    //if (mst!=null && mst.chkflg == GetY())
                    //{
                    //    return RInfo("I0207");
                    //}



                    ////修改主单时间戳
                    //string sql = @"update wms_cang_109 set bllid='109' where wmsno='" + mst.wmsno + "' and bllid='109' and udtdtm={0}";
                    //int iEff = WmsDc.ExecuteCommand(sql, mst.udtdtm);
                    //if (iEff == 0)
                    //{
                    //    return RInfo("I0207");
                    //}

                    WmsDc.SubmitChanges();
                    scop.Complete();
                    return(RSucc("修改成功", null, "S0145"));
                }
                catch (Exception ex)
                {
                    return(RErr(ex.Message, "E0042"));
                }
            }
        }
Пример #10
0
        public ActionResult CheckCangwei(String wmsno, String barcode, String newbarcode, String tpcode)
        {
            using (TransactionScope scop = new TransactionScope())
            {
                wms_cangwei oldCw = null;
                //如果旧仓位不为空,就需要查询出就仓位,以便修改其仓位托盘tpflg标志
                if (!string.IsNullOrEmpty(barcode.Trim()))
                {
                    //判断仓位码是否有效
                    if (!IsExistBarcode(barcode))
                    {
                        return(RInfo("I0396", barcode.Trim()));
                    }
                    oldCw = GetCangWei(barcode);
                }

                //判断仓位码是否有效
                if (!string.IsNullOrEmpty(newbarcode) && !IsExistBarcode(newbarcode))
                {
                    return(RInfo("I0397", newbarcode.Trim()));
                }

                //主表
                wms_cang cang = GetCangMst(wmsno);

                //明细表
                var qrydtl = GetCangDtl(wmsno)
                             .Where(e => e.barcode.Trim() == barcode.Trim() && e.tpcode.Trim() == tpcode.Trim());
                var arrqrydtl = qrydtl.ToArray();
                // 判断明细的分区是否是同一个分区,而且newbarcode的分区也在商品的分区内
                string initQu = null;
                foreach (wms_cangdtl dtl in arrqrydtl)
                {
                    string gdsqu = GetQuByGdsid(dtl.gdsid, LoginInfo.DefStoreid).FirstOrDefault();
                    if (string.IsNullOrEmpty(initQu))
                    {
                        initQu = gdsqu;
                    }
                    if (initQu != gdsqu)
                    {
                        return(RInfo("I0398"));
                    }
                }
                if (initQu != newbarcode.Substring(0, 2))
                {
                    return(RInfo("I0399"));
                }

                #region  效性检查
                //检查单号是否有效
                if (cang == null)
                {
                    return(RNoData("单号无效", "N0213"));
                }
                ////正在生成拣货单,请稍候重试
                //string quRetrv = cang.qu;
                //if (DoingRetrieve(LoginInfo.DefStoreid, quRetrv))
                //{
                //    return RInfo( "I0400" );
                //}

                //检查是否已经审核
                if (cang.chkflg == GetY())
                {
                    return(RInfo("I0401"));
                }

                //未查找到托盘的正确仓位
                if (arrqrydtl.Length <= 0)
                {
                    return(RNoData("未查找到托盘的正确仓位", "N0214"));
                }

                //检查同一个托盘是否都已经上架
                if (arrqrydtl[0].bokflg == GetY())
                {
                    return(RInfo("I0402"));
                }
                #endregion

                //查看新仓位是否不为推荐仓位
                wms_cangwei cw = null;
                if (!String.IsNullOrEmpty(newbarcode) && barcode.Trim() != newbarcode.Trim())
                {
                    cw = GetCangWei(newbarcode);
                    if (cw == null)
                    {
                        return(RNoData("N0215", newbarcode));
                    }

                    if (!savdpts.Contains(cw.savdptid.Trim()))
                    {
                        return(RInfo("I0403", newbarcode));
                    }
                    if (!qus.Contains(cw.qu.Trim()))
                    {
                        return(RInfo("I0404", newbarcode));
                    }
                    if (oldCw != null && cw.tjflg == GetY())
                    {
                        return(RInfo("I0405", newbarcode));
                    }
                    //修改新仓位标记tpflg=GetY()
                    cw.tpflg = GetY();
                    //修改旧仓位tpflg=GetN()
                    if (oldCw != null)
                    {
                        oldCw.tpflg = GetN();
                    }
                    WmsDc.SubmitChanges();
                }
                #region  架托盘到仓位
                foreach (wms_cangdtl cangdtl in arrqrydtl)
                {
                    cangdtl.bkr    = LoginInfo.Usrid;
                    cangdtl.bokflg = GetY();
                    cangdtl.bokdat = DateTime.Now.ToString("yyyyMMddHHmmss");
                    if (cw != null)
                    {
                        cangdtl.oldbarcode = cangdtl.barcode;
                        cangdtl.barcode    = newbarcode;
                    }
                }

                try
                {
                    WmsDc.SubmitChanges();

                    //done: 判断是否已经上架单明细已经审核完毕,完毕后就直接审核整单
                    //明细表
                    wms_cangdtl[] arrqryaldtl = GetCangDtl(wmsno)
                                                .Where(e => e.bokflg == GetN())
                                                .ToArray();
                    if (arrqryaldtl.Length == 0)
                    {
                        // done: 判断盘点收货单有没有整单审核,提示不能上架
                        wms_bllmst bllmst = GetBllMst(wmsno);
                        if (bllmst == null)
                        {
                            return(RInfo("I0406"));
                        }
                        if (bllmst.chkflg == GetN())
                        {
                            return(RInfo("I0407"));
                        }
                        #region 审核整单
                        JsonResult    ar = (JsonResult)AdtUpShelf(wmsno);
                        ResultMessage rm = (ResultMessage)ar.Data;
                        if (rm.ResultCode != ResultMessage.RESULTMESSAGE_SUCCESS)
                        {
                            return(ar);
                        }
                        #endregion 审核整单
                    }

                    scop.Complete();
                    return(RSucc("扫描仓位码和托盘码匹配成功!", null, "S0196"));
                }
                catch (Exception ex)
                {
                    return(RErr("异常错误!" + ex.Message, "E0053"));
                }
                #endregion
            }
        }