//private ORGModels _dbContext;

        //protected virtual ORGModels DbContext
        //{
        //    get
        //    {
        //        if (_dbContext == null)
        //            _dbContext = new ORGModels();

        //        return _dbContext;
        //    }
        //}

        public void SaveLocationAssigner(IMS_CB_KC kc, IMS_CB_RQ rq, IMS_WT_CWRW cwrw, IMS_VC_DJH djh)
        {
            IMS_CB_Container_Dal dalContainer = new IMS_CB_Container_Dal();
            IMS_WT_CWRW_Dal      dalTask      = new IMS_WT_CWRW_Dal();
            IMS_VC_DJH_Dal       dalOrderData = new IMS_VC_DJH_Dal();
            IMS_CB_Inventory_Dal dalInventory = new IMS_CB_Inventory_Dal();

            if (dalInventory.Exists(string.Format(" RQBH == \"{0}\" ", rq.RQBH)))
            {
                throw new JsMiracleException("容器编号已在库存中,请重新输入容器编号");
            }

            using (var tran = new TransactionScope())
            {
                try
                {
                    dalContainer.SaveOrUpdate(rq);
                    dalInventory.SaveOrUpdate(kc);
                    dalTask.SaveOrUpdate(cwrw);
                    dalOrderData.SaveOrUpdate(djh);

                    tran.Complete();
                }
                catch (Exception ex)
                {
                    throw new Exception("组盘失败", ex);
                }
            }
        }
        protected override WcfResponse BaseRequest(Entities.WCF.WcfRequest req)
        {
            IMS_LocationAssigner dal = new IMS_LocationAssigner();


            var res = new WcfResponse();

            object[] objs;
            switch (req.Head.RequestMethodName)
            {
            case "SaveLocationAssigner":
                objs = (object[])req.Body.Parameters;
                IMS_CB_KC   kc   = (IMS_CB_KC)objs[0];
                IMS_CB_RQ   rq   = (IMS_CB_RQ)objs[1];
                IMS_WT_CWRW cwrw = (IMS_WT_CWRW)objs[2];
                IMS_VC_DJH  djh  = (IMS_VC_DJH)objs[3];

                dal.SaveLocationAssigner(kc, rq, cwrw, djh);
                break;
            }

            return(res);
        }
예제 #3
0
 public void SaveLocationAssigner(IMS_CB_KC kc, IMS_CB_RQ rq, IMS_WT_CWRW cwrw, IMS_VC_DJH djh)
 {
     base.RequestAction <object[]>("SaveLocationAssigner", new object[] { kc, rq, cwrw, djh });
 }
        public void ZPIn(long id, string userid, long sku, decimal zpsl, string rqbh)
        {
            var bizEnt = GetEntity(id);

            if (bizEnt == null)
            {
                throw new JsMiracleException("业务任务不存在无法处理");
            }

            if (DbContext.IMS_CB_KC_S.Any(n => n.RQBH.Equals(rqbh, StringComparison.CurrentCultureIgnoreCase)))
            {
                throw new JsMiracleException("容器编号已存在库存中,请重新输入容器编号");
            }

            if (!DbContext.IMS_CB_WL_S.Any(n => n.ID == sku))
            {
                throw new JsMiracleException(string.Format("物料信息不存在sku({0})", sku));
            }

            // 已生成单据的操作数
            var buildTaskNumber =
                DbContext.IMS_WT_CWRW_S.Where(n => n.FRWID == bizEnt.ID).Sum(n => n.RWSL) ?? 0;

            // 生成单据数据加本次组盘数量大于 业务单据最大数量,报错
            if ((buildTaskNumber + zpsl) > bizEnt.DJSL)
            {
                throw new JsMiracleException(string.Format("本次组盘数量大于本笔业务的剩余可用数量", zpsl));
            }

            var rqEnt = DbContext.IMS_CB_RQ_S.Where(n =>
                                                    n.RQBH.Equals(rqbh, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault();

            if (rqEnt == null)
            {
                rqEnt = new IMS_CB_RQ()
                {
                    RQBH = rqbh,
                    DQCD = 0,
                    DQKD = 0,
                    DQWZ = "",
                    DQZL = 0,
                    LXBH = "",
                    SDZT = 0,
                    SYZT = 0,
                    WZZT = 0,
                    ZYZT = 0,
                    SMTM = "",
                    SYCS = 0,
                    ZCSJ = System.DateTime.Now,
                    ZCWZ = ""
                };
            }

            // 库存信息
            var kc = new IMS_CB_KC()
            {
                KQSL   = zpsl,
                KYSL   = zpsl,
                PCBH   = bizEnt.PCBH,
                KYZT   = 0,
                RKRY   = userid,
                BZXS   = "",
                RKSJ   = System.DateTime.Now,
                RQBH   = rqbh,
                SDZT   = 0,
                SYZ    = "",
                SKU    = sku,
                ZHXGSJ = System.DateTime.Now,
                ZJZT   = 0,
                ZLZT   = 0,
            };

            IMS_WT_CWRW op = new IMS_WT_CWRW()
            {
                RWBH  = WorkTaskFunction.CreateNextTaskID(),
                CJR   = userid,
                CJSJ  = System.DateTime.Now,
                DJHID = bizEnt.DJH_ID ?? 0,
                FRWID = bizEnt.ID,
                MDRQ  = "",
                RQBH  = rqbh,
                RWLX  = 0,
                RWSL  = zpsl,
                ZT    = 0,
            };


            using (var tran = new TransactionScope())
            {
                if (rqEnt.ID == 0)
                {
                    DbContext.IMS_CB_RQ_S.Add(rqEnt);
                }

                DbContext.IMS_CB_KC_S.Add(kc);
                DbContext.SaveChanges();

                //  更新入库存ID
                op.CCID = kc.ID;

                DbContext.IMS_WT_CWRW_S.Add(op);

                DbContext.SaveChanges();

                // 没有异常提交退出
                tran.Complete();
            }
        }