Example #1
0
        /// <summary>
        /// 根据调拨单编号返回调拨单信息
        /// </summary>
        /// <param name="ID"></param>
        /// <returns></returns>
        public TOInputDto GetByID(string ID)
        {
            TOInputDto ro = Mapper.Map <AssTransferOrder, TOInputDto>(_AssTransferOrderRepository.GetByID(ID).AsNoTracking().FirstOrDefault());

            ro.Rows = _AssTransferOrderRowRepository.GetByTOID(ID).AsNoTracking().ToList();
            return(ro);
        }
Example #2
0
        /// <summary>
        /// 加载数据
        /// </summary>
        public void Bind()
        {
            try
            {
                TOInputDto TOData     = autofacConfig.assTransferOrderService.GetByID(TOID);
                coreUser   DeanInUser = autofacConfig.coreUserService.GetUserByID(TOData.MANAGER);
                coreUser   DealUser   = autofacConfig.coreUserService.GetUserByID(TOData.HANDLEMAN);
//                AssLocation assLocation = autofacConfig.assLocationService.GetByID(TOData.DESSLID);
                lblTDInMan.Text = DeanInUser.USER_NAME;
                lblDealMan.Text = DealUser.USER_NAME;
//                lblLocation.Text = assLocation.NAME;
                DatePicker.Value = TOData.TRANSFERDATE;
                if (String.IsNullOrEmpty(TOData.NOTE) == false)
                {
                    lblNote.Text = TOData.NOTE;
                }

                DataTable tableAssets = new DataTable();      //未开启SN的资产列表
                tableAssets.Columns.Add("ASSID");             //资产编号
                tableAssets.Columns.Add("NAME");              //资产名称
                tableAssets.Columns.Add("IMAGE");             //资产图片
                tableAssets.Columns.Add("SN");                //序列号
                tableAssets.Columns.Add("STATUS");            //行项状态
                foreach (AssTransferOrderRow Row in TOData.Rows)
                {
                    Assets assets = autofacConfig.orderCommonService.GetAssetsByID(Row.ASSID);
                    if (Row.STATUS == 0)
                    {
                        tableAssets.Rows.Add(Row.ASSID, assets.NAME, assets.IMAGE, Row.SN, "调拨中");
                    }
                    else if (Row.STATUS == 1)
                    {
                        tableAssets.Rows.Add(Row.ASSID, assets.NAME, assets.IMAGE, Row.SN, "调拨完成");
                    }
                    else
                    {
                        tableAssets.Rows.Add(Row.ASSID, assets.NAME, assets.IMAGE, Row.SN, "调拨取消");
                    }
                }
                if (tableAssets.Rows.Count > 0)
                {
                    ListAssetsSN.DataSource = tableAssets;
                    ListAssetsSN.DataBind();
                }
                if (Client.Session["Role"].ToString() == "SMOWMSUser")
                {
                    plButton.Visible = false;
                }
                //如果维修单已完成,则隐藏维修单处理按钮
                if (TOData.STATUS == 1 || TOData.STATUS == 2)
                {
                    plButton.Visible = false;
                }
            }
            catch (Exception ex)
            {
                Toast(ex.Message);
            }
        }
Example #3
0
        /// <summary>
        /// 数据加载
        /// </summary>
        public void Bind()
        {
            try
            {
                TOInputDto  TOData      = autofacConfig.assTransferOrderService.GetByID(TOID);
                coreUser    DeanInUser  = autofacConfig.coreUserService.GetUserByID(TOData.MANAGER);
                coreUser    DealUser    = autofacConfig.coreUserService.GetUserByID(TOData.HANDLEMAN);
                AssLocation assLocation = autofacConfig.assLocationService.GetByID(TOData.DESLOCATIONID);
                lblTDInMan.Text  = DeanInUser.USER_NAME;
                lblDealMan.Text  = DealUser.USER_NAME;
                lblLocation.Text = assLocation.NAME;
                DatePicker.Value = TOData.TRANSFERDATE;
                if (String.IsNullOrEmpty(TOData.NOTE) == false)
                {
                    lblNote.Text = TOData.NOTE;
                }

                DataTable tableAssets = new DataTable();      //未开启SN的资产列表
                tableAssets.Columns.Add("CID");               //耗材编号
                tableAssets.Columns.Add("NAME");              //资产名称
                tableAssets.Columns.Add("IMAGE");             //资产图片
                tableAssets.Columns.Add("WAITREPAIRQTY");     //待确认数量
                tableAssets.Columns.Add("STATUS");            //行项状态
                foreach (AssTransferOrderRow Row in TOData.Rows)
                {
                    ConsumablesOutputDto cons = autofacConfig.ConsumablesService.GetConsumablesByID(Row.CID);
                    if (Row.STATUS == 0)
                    {
                        tableAssets.Rows.Add(Row.CID, cons.NAME, cons.IMAGE, Row.INTRANSFERQTY, "调拨中");
                    }
                    else if (Row.STATUS == 1)
                    {
                        tableAssets.Rows.Add(Row.CID, cons.NAME, cons.IMAGE, Row.INTRANSFERQTY, "已完成");
                    }
                    else
                    {
                        tableAssets.Rows.Add(Row.CID, cons.NAME, cons.IMAGE, Row.INTRANSFERQTY, "已取消");
                    }
                }
                if (tableAssets.Rows.Count > 0)
                {
                    ListAssets.DataSource = tableAssets;
                    ListAssets.DataBind();
                }
                if (Client.Session["Role"].ToString() == "SMOSECUser")
                {
                    plButton.Visible = false;
                }
                //如果维修单已完成,则隐藏维修单处理按钮
                if (TOData.STATUS == 1 || TOData.STATUS == 2)
                {
                    plButton.Visible = false;
                }
            }
            catch (Exception ex)
            {
                Toast(ex.Message);
            }
        }
Example #4
0
        /// <summary>
        /// 新增调拨单
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public ReturnInfo AddAssTransferOrder(TOInputDto entity, OperateType type)
        {
            ReturnInfo RInfo = new ReturnInfo();

            if (String.IsNullOrEmpty(entity.MANAGER))
            {
                throw new Exception("调入管理员不能为空");
            }
            if (String.IsNullOrEmpty(entity.HANDLEMAN))
            {
                throw new Exception("处理人不能为空");
            }
            if (String.IsNullOrEmpty(entity.TRANSFERDATE.ToString()))
            {
                throw new Exception("业务日期不能为空");
            }
            if (String.IsNullOrEmpty(entity.DESSLID))
            {
                throw new Exception("调入区域不能为空");
            }
            String MaxID = _AssTransferOrderRepository.GetMaxID();        //获取当前最大报修单编号
            String NowID = Helper.GeneratePRID("T", MaxID);               //生成最新的报修单编号

            entity.TOID = NowID;
            try
            {
                AssTransferOrder OrderData = new AssTransferOrder();
                OrderData.TOID         = NowID;
                OrderData.MANAGER      = entity.MANAGER;
                OrderData.HANDLEMAN    = entity.HANDLEMAN;
                OrderData.TRANSFERDATE = entity.TRANSFERDATE;
                OrderData.WAREID       = entity.WAREID;
                OrderData.STID         = entity.STID;
                OrderData.DESSLID      = entity.DESSLID;
                OrderData.NOTE         = entity.NOTE;
                OrderData.TYPE         = (int)type;
                OrderData.STATUS       = 0;
                OrderData.CREATEDATE   = entity.CREATEDATE;
                OrderData.CREATEUSER   = entity.CREATEUSER;
                _unitOfWork.RegisterNew(OrderData);
                AddAssTransferOrderRow(entity, type);

                bool result = _unitOfWork.Commit();
                RInfo.IsSuccess = result;
                RInfo.ErrorInfo = "创建成功!";
                return(RInfo);
            }
            catch (Exception ex)
            {
                _unitOfWork.Rollback();
                RInfo.IsSuccess = false;
                RInfo.ErrorInfo = ex.Message;
                return(RInfo);
            }
        }
Example #5
0
        /// <summary>
        /// 数据加载
        /// </summary>
        public void Bind()
        {
            try
            {
                if (Type == PROCESSMODE.调拨确认)
                {
                    title1.TitleText = "调拨单确认";
                }
                if (Type == PROCESSMODE.调拨取消)
                {
                    title1.TitleText = "调拨单取消";
                }
                TOInputDto TOData     = autofacConfig.assTransferOrderService.GetByID(TOID);
                coreUser   DeanInUser = autofacConfig.coreUserService.GetUserByID(TOData.MANAGER);
                coreUser   DealUser   = autofacConfig.coreUserService.GetUserByID(TOData.HANDLEMAN);
                lblTDInMan.Text = DeanInUser.USER_NAME;
                lblDealMan.Text = DealUser.USER_NAME;
                WHStorageLocationOutputDto whLoc = autofacConfig.wareHouseService.GetSLByID(TOData.WAREID, TOData.STID, TOData.DESSLID);
                lblLocation.Text = whLoc.WARENAME + "/" + whLoc.STNAME + "/" + whLoc.SLNAME;
                DatePicker.Value = TOData.TRANSFERDATE;
                if (String.IsNullOrEmpty(TOData.NOTE))
                {
                    lblNote.Text = TOData.NOTE;
                }

                DataTable tableAssets = new DataTable();     //未开启SN的资产列表
                tableAssets.Columns.Add("TOROWID");          //报修单行项编号
                tableAssets.Columns.Add("LOCATIONID");       //区域编号
                tableAssets.Columns.Add("LOCATIONNAME");     //区域名称
                tableAssets.Columns.Add("CID");              //资产编号
                tableAssets.Columns.Add("NAME");             //资产名称
                tableAssets.Columns.Add("IMAGE");            //图片编号
                tableAssets.Columns.Add("INTRANSFERQTY");    //调拨中数量
                foreach (AssTransferOrderRow Row in TOData.Rows)
                {
                    Consumables cons     = autofacConfig.consumablesService.GetConsById(Row.CID);
                    WareHouse   Location = autofacConfig.wareHouseService.GetByWareID(Row.SLID);
                    if (Row.STATUS == 0)
                    {
                        tableAssets.Rows.Add(Row.TOROWID, Row.SLID, Location.NAME, Row.CID, cons.NAME, Row.IMAGE, Row.INTRANSFERQTY);
                    }
                }
                if (tableAssets.Rows.Count > 0)
                {
                    ListAssets.DataSource = tableAssets;
                    ListAssets.DataBind();
                }
            }
            catch (Exception ex)
            {
                Toast(ex.Message);
            }
        }
Example #6
0
        /// <summary>
        /// 加载数据
        /// </summary>
        public void Bind()
        {
            try
            {
                if (Type == PROCESSMODE.调拨确认)
                {
                    title1.TitleText = "调拨单确认";
                }
                if (Type == PROCESSMODE.调拨取消)
                {
                    title1.TitleText = "调拨单取消";
                }
                TOInputDto  TOData      = autofacConfig.assTransferOrderService.GetByID(TOID);
                coreUser    DeanInUser  = autofacConfig.coreUserService.GetUserByID(TOData.MANAGER);
                coreUser    DealUser    = autofacConfig.coreUserService.GetUserByID(TOData.HANDLEMAN);
                AssLocation assLocation = autofacConfig.assLocationService.GetByID(TOData.DESLOCATIONID);
                lblTDInMan.Text  = DeanInUser.USER_NAME;
                lblDealMan.Text  = DealUser.USER_NAME;
                lblLocation.Text = assLocation.NAME;
                DatePicker.Value = TOData.TRANSFERDATE;
                if (String.IsNullOrEmpty(TOData.NOTE))
                {
                    lblNote.Text = TOData.NOTE;
                }

                DataTable tableAssets = new DataTable();      //未开启SN的资产列表
                tableAssets.Columns.Add("TOROWID");           //报修单行项编号
                tableAssets.Columns.Add("ASSID");             //资产编号
                tableAssets.Columns.Add("NAME");              //资产名称
                tableAssets.Columns.Add("IMAGE");             //图片编号
                tableAssets.Columns.Add("SN");                //序列号
                foreach (AssTransferOrderRow Row in TOData.Rows)
                {
                    Assets assets = autofacConfig.orderCommonService.GetAssetsByID(Row.ASSID);
                    if (Row.STATUS == 0)
                    {
                        tableAssets.Rows.Add(Row.TOROWID, Row.ASSID, assets.NAME, Row.IMAGE, Row.SN);
                    }
                }
                if (tableAssets.Rows.Count > 0)
                {
                    ListAssetsSN.DataSource = tableAssets;
                    ListAssetsSN.DataBind();
                }
            }
            catch (Exception ex)
            {
                Toast(ex.Message);
            }
        }
Example #7
0
        /// <summary>
        /// 调拨单操作
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSave_Press(object sender, EventArgs e)
        {
            try
            {
                if (getNum() == 0)
                {
                    throw new Exception("请选择确认行项!");
                }

                TOInputDto BasicData = new TOInputDto();
                BasicData.MODIFYDATE = DateTime.Now;
                BasicData.MODIFYUSER = Client.Session["UserID"].ToString();
                BasicData.TOID       = TOID;

                List <AssTransferOrderRow> Data = new List <AssTransferOrderRow>();
                foreach (ListViewRow Row in ListAssets.Rows)
                {
                    frmAssTDLayout Layout = Row.Control as frmAssTDLayout;
                    if (Layout.getData() != null)
                    {
                        Data.Add(Layout.getData());
                    }
                }
                BasicData.Rows = Data;
                ReturnInfo r = autofacConfig.assTransferOrderService.UpdateAssTransferOrder(BasicData, Type, OperateType.耗材);
                if (r.IsSuccess)
                {
                    ShowResult = ShowResult.Yes;
                    Form.Close();
                    if (Type == PROCESSMODE.调拨确认)
                    {
                        Toast("确认调拨成功!");
                    }
                    else
                    {
                        Toast("取消调拨成功!");
                    }
                }
                else
                {
                    throw new Exception(r.ErrorInfo);
                }
            }
            catch (Exception ex)
            {
                Toast(ex.Message);
            }
        }
Example #8
0
        /// <summary>
        /// 调拨单创建
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void plSave_Press(object sender, EventArgs e)
        {
            try
            {
                TOInputDto TransferData = new TOInputDto();        //维修单信息
                if (btnDealInMan.Tag == null)
                {
                    throw new Exception("调入管理员不能为空");
                }
                else
                {
                    TransferData.MANAGER = btnDealInMan.Tag.ToString();     //调入管理员
                }
                if (lblLocation.Tag == null)
                {
                    throw new Exception("调入库位不能为空");
                }
                else
                {
                    string[] Datas = lblLocation.Tag.ToString().Split('/');
                    TransferData.WAREID  = Datas[0];    //调入仓库
                    TransferData.STID    = Datas[1];    //调入类型
                    TransferData.DESSLID = Datas[2];    //调入库位
                }


                if (btnDealMan.Tag == null)
                {
                    throw new Exception("处理人不能为空");
                }
                else
                {
                    TransferData.HANDLEMAN = btnDealMan.Tag.ToString();          //处理人
                }
                TransferData.TRANSFERDATE = DatePicker.Value;                    //维修花费
                TransferData.NOTE         = txtNote.Text;                        //备注
                TransferData.STATUS       = 0;                                   //维修单状态
                TransferData.CREATEUSER   = Client.Session["UserID"].ToString(); //创建用户
                TransferData.CREATEDATE   = DateTime.Now;

                List <AssTransferOrderRow> Data = new List <AssTransferOrderRow>();
                if (ListCons.Rows.Count == 0)
                {
                    throw new Exception("调拨行项不能为空!");
                }
                foreach (ListViewRow Row in ListCons.Rows)
                {
                    frmOrderCreateLayout Layout  = Row.Control as frmOrderCreateLayout;
                    ConsumablesOrderRow  RowData = Layout.getData();
                    AssTransferOrderRow  assRow  = new AssTransferOrderRow();

                    assRow.IMAGE         = RowData.IMAGE;
                    assRow.CID           = RowData.CID;
                    assRow.INTRANSFERQTY = RowData.QTY;
                    assRow.WAREID        = RowData.WAREID;
                    assRow.STID          = RowData.STID;
                    assRow.SLID          = RowData.SLID;
                    assRow.STATUS        = RowData.STATUS;
                    assRow.CREATEDATE    = DateTime.Now;
                    Data.Add(assRow);
                }
                TransferData.Rows = Data;
                ReturnInfo r = autofacConfig.assTransferOrderService.AddAssTransferOrder(TransferData, OperateType.耗材);
                if (r.IsSuccess)
                {
                    ShowResult = ShowResult.Yes;
                    Form.Close();          //创建成功
                    Toast("创建调拨单成功!");
                }
                else
                {
                    throw new Exception(r.ErrorInfo);
                }
            }
            catch (Exception ex)
            {
                Toast(ex.Message);
            }
        }
Example #9
0
        /// <summary>
        /// 创建ProcessRecorder表数据
        /// </summary>
        /// <param name="Data"></param>
        /// <param name="RowData"></param>
        /// <param name="Type"></param>
        public void CreatePR(TOInputDto Data, AssTransferOrderRow RowData, PROCESSMODE Type)
        {
            AssProcessRecord assProcessRecord = new AssProcessRecord
            {
                ASSID      = RowData.ASSID,     //资产条码
                CID        = RowData.CID,       //耗材编号
                CREATEDATE = DateTime.Now,      //创建时间
                CREATEUSER = Data.CREATEUSER,   //创建用户
                HANDLEDATE = DateTime.Now,      //处理时间
                MODIFYDATE = DateTime.Now,      //修改时间
                MODIFYUSER = Data.MODIFYUSER,   //修改用户
            };

            switch (Type)
            {
            case PROCESSMODE.调拨:
                assProcessRecord.QUANTITY    = RowData.INTRANSFERQTY;
                assProcessRecord.PROCESSMODE = (Int32)PROCESSMODE.调拨;
                assProcessRecord.HANDLEMAN   = Data.CREATEUSER;
                break;

            case PROCESSMODE.调拨确认:
                assProcessRecord.QUANTITY    = Convert.ToDecimal(RowData.TRANSFEREDQTY);
                assProcessRecord.PROCESSMODE = (Int32)PROCESSMODE.调拨确认;
                assProcessRecord.HANDLEMAN   = Data.MODIFYUSER;
                break;

            case PROCESSMODE.调拨取消:
                assProcessRecord.QUANTITY    = Convert.ToDecimal(RowData.TRANSFERCANCELQTY);
                assProcessRecord.PROCESSMODE = (Int32)PROCESSMODE.调拨取消;
                assProcessRecord.HANDLEMAN   = Data.MODIFYUSER;
                break;
            }
            if (String.IsNullOrEmpty(RowData.ASSID) == false)
            {
                switch (Type)         //根据操作模式,输入操作内容
                {
                case PROCESSMODE.调拨:
                    assProcessRecord.PROCESSCONTENT = Data.CREATEUSER + "调拨了物品编号为" + RowData.ASSID + "的资产";
                    break;

                case PROCESSMODE.调拨确认:
                    assProcessRecord.PROCESSCONTENT = Data.CREATEUSER + "确认调拨了物品编号为" + RowData.ASSID + "的资产";
                    break;

                case PROCESSMODE.调拨取消:
                    assProcessRecord.PROCESSCONTENT = Data.CREATEUSER + "取消调拨了物品编号为" + RowData.ASSID + "的资产";
                    break;
                }
            }
            else
            {
                assProcessRecord.CID = RowData.CID;
                switch (Type)         //根据操作模式,输入操作内容
                {
                case PROCESSMODE.调拨:
                    assProcessRecord.PROCESSCONTENT = Data.CREATEUSER + "调拨了耗材编号为" + RowData.CID + ",数量为" + RowData.INTRANSFERQTY;
                    break;

                case PROCESSMODE.调拨确认:
                    assProcessRecord.PROCESSCONTENT = Data.CREATEUSER + "确认调拨了耗材编号为" + RowData.CID + ",数量为" + RowData.TRANSFEREDQTY;
                    break;

                case PROCESSMODE.调拨取消:
                    assProcessRecord.PROCESSCONTENT = Data.CREATEUSER + "取消调拨了耗材编号为" + RowData.CID + ",数量为" + RowData.TRANSFERCANCELQTY;
                    break;
                }
            }
            _unitOfWork.RegisterNew(assProcessRecord);
        }
Example #10
0
        /// <summary>
        /// 更新报修单行项
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public void UpdateAssTransferOrderRow(TOInputDto entity, PROCESSMODE ProType, OperateType type)
        {
            AssTransferOrderRow assROR = new AssTransferOrderRow();

            foreach (AssTransferOrderRow Row in entity.Rows)
            {
                assROR = _AssTransferOrderRowRepository.GetByID(entity.TOID, Row.TOROWID).FirstOrDefault();
                if (assROR == null)
                {
                    throw new Exception("调拨单行项:" + Row.TOROWID + "不存在!");
                }
                switch (ProType)
                {
                case PROCESSMODE.调拨确认:
                    assROR.INTRANSFERQTY = assROR.INTRANSFERQTY - Convert.ToDecimal(Row.TRANSFEREDQTY);         //确认调拨数量
                    if (Row.INTRANSFERQTY < 0)
                    {
                        throw new Exception("确认数量不能超过申请调拨数量!");
                    }
                    assROR.TRANSFEREDQTY = Convert.ToDecimal(assROR.TRANSFEREDQTY) + Row.TRANSFEREDQTY;
                    break;

                case PROCESSMODE.调拨取消:
                    assROR.INTRANSFERQTY = assROR.INTRANSFERQTY - Convert.ToDecimal(Row.TRANSFERCANCELQTY);         //取消调拨数量
                    if (Row.INTRANSFERQTY < 0)
                    {
                        throw new Exception("取消数量不能超过申请调拨数量!");
                    }
                    assROR.TRANSFERCANCELQTY = Convert.ToDecimal(assROR.TRANSFERCANCELQTY) + Row.TRANSFERCANCELQTY;
                    break;
                }

                if (assROR.INTRANSFERQTY == 0)       //如果全部调拨完毕,则修改行项状态
                {
                    if (ProType == PROCESSMODE.调拨确认)
                    {
                        assROR.STATUS = 1;        //调拨完成
                    }
                    else
                    {
                        assROR.STATUS = 2;        //调拨取消
                    }
                }

                //更新OrderRow数据
                _unitOfWork.RegisterDirty(assROR);

                if (type == OperateType.资产)
                {
                    Assets SNData = _AssetsRepository.GetByID(Row.ASSID).FirstOrDefault();
                    if (ProType == PROCESSMODE.调拨确认)
                    {
                        SNData.LOCATIONID = entity.DESLOCATIONID;        //区域
                    }
                    //修改AssetsSN表中资产状态
                    SNData.STATUS = (Int32)STATUS.闲置;  //资产状态
                    _unitOfWork.RegisterDirty(SNData); //新建调拨行项
                }
                else
                {
                    ConQuant assQuant = new ConQuant();
                    //修改Quant表数据
                    assQuant.CID = Row.CID;    //资产条码
                    if (ProType == PROCESSMODE.调拨确认)
                    {
                        assQuant.QUANTITY   = Convert.ToDecimal(Row.TRANSFEREDQTY); //确认调入数量
                        assQuant.LOCATIONID = entity.DESLOCATIONID;                 //区域
                    }
                    else
                    {
                        assQuant.QUANTITY   = Convert.ToDecimal(Row.TRANSFERCANCELQTY); //取消调入数量
                        assQuant.LOCATIONID = Row.LOCATIONID;                           //区域
                    }
                    ConQuant aq = _ConQuantRepository.GetByCID(Row.CID, assQuant.LOCATIONID).FirstOrDefault();

                    if (aq == null)     //如果不存在当前库存地数据,则创建一条新数据
                    {
                        assQuant.CREATEDATE = DateTime.Now;
                        assQuant.CREATEUSER = entity.MODIFYUSER;
                        assQuant.MODIFYDATE = DateTime.Now;
                        assQuant.MODIFYUSER = entity.MODIFYUSER;
                        _unitOfWork.RegisterNew(assQuant);
                    }
                    else            //已有数据,修改库存数量
                    {
                        aq.QUANTITY = aq.QUANTITY + assQuant.QUANTITY;
                        _unitOfWork.RegisterDirty(aq);
                    }
                }
                //往AssProcessRecord表添加数据
                CreatePR(entity, Row, ProType);
            }
        }
Example #11
0
        /// <summary>
        /// 新增调拨单行项
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public ReturnInfo AddAssTransferOrderRow(TOInputDto entity, OperateType type)
        {
            ReturnInfo RInfo = new ReturnInfo();

            try
            {
                String   TOROWID  = "0";
                ConQuant assQuant = new ConQuant();
                if (entity.Rows != null)
                {
                    foreach (AssTransferOrderRow Row in entity.Rows)
                    {
                        TOROWID     = (int.Parse(TOROWID) + 1).ToString();
                        Row.TOID    = entity.TOID;
                        Row.TOROWID = TOROWID;
                        if (GetRowByRowID(Row.TOID, Row.TOROWID) != null)
                        {
                            throw new Exception("调拨单行项号已存在!");
                        }
                        _unitOfWork.RegisterNew(Row);
                        //往AssProcessRecord表添加数据
                        CreatePR(entity, Row, PROCESSMODE.调拨);

                        if (type == OperateType.资产)
                        {
                            Assets assetsSN = _AssetsRepository.GetByID(Row.ASSID).FirstOrDefault();
                            if (assetsSN == null)
                            {
                                throw new Exception("不存在条码为:" + Row.ASSID + "的资产。");
                            }
                            assetsSN.STATUS = (Int32)STATUS.调拨中;
                            _unitOfWork.RegisterDirty(assetsSN);
                        }
                        else
                        {
                            ConQuant aq = _ConQuantRepository.GetByCID(Row.CID, Row.LOCATIONID).FirstOrDefault();
                            if (aq == null)
                            {
                                throw new Exception("库存中不存在编号为+" + Row.CID + "的耗材,请检查!");
                            }

                            aq.QUANTITY = aq.QUANTITY - Row.INTRANSFERQTY;
                            if (aq.QUANTITY > 0)
                            {
                                //更新数据
                                _unitOfWork.RegisterDirty(aq);
                            }
                            else if (aq.QUANTITY == 0)
                            {
                                _unitOfWork.RegisterDeleted(aq);
                            }
                            else
                            {
                                throw new Exception("所需调拨数量超过库存数!");
                            }
                        }
                    }
                    RInfo.IsSuccess = true;
                    RInfo.ErrorInfo = "调拨单行项创建成功!";
                }
            }
            catch (Exception ex)
            {
                _unitOfWork.Rollback();
                RInfo.IsSuccess = false;
                RInfo.ErrorInfo = ex.Message;
            }
            return(RInfo);
        }
Example #12
0
        /// <summary>
        /// 更新调拨单
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public ReturnInfo UpdateAssTransferOrder(TOInputDto entity, PROCESSMODE ProType, OperateType type)
        {
            ReturnInfo RInfo = new ReturnInfo();

            try
            {
                if (String.IsNullOrEmpty(entity.TOID))
                {
                    throw new Exception("调拨单编号不能为空");
                }

                AssTransferOrder aro = _AssTransferOrderRepository.GetByID(entity.TOID).FirstOrDefault();
                if (aro != null)
                {
                    if (aro.STATUS == 1 || aro.STATUS == 2)
                    {
                        throw new Exception("只有调拨中的才能确认");
                    }
                    else
                    {
                        List <AssTransferOrderRow> Rows = _AssTransferOrderRowRepository.GetUnTransferTOID(aro.TOID).AsNoTracking().ToList();
                        if (Rows.Count == entity.Rows.Count)      //判断调拨单是完成还是取消
                        {
                            Boolean isOver = false;
                            foreach (AssTransferOrderRow Row in entity.Rows)     //只要调拨行项中有一个确认,则调拨单属于完成
                            {
                                if (Row.STATUS == 1)
                                {
                                    isOver     = true;
                                    aro.STATUS = 1;
                                }
                            }
                            if (isOver == false)        //否之,调拨单为取消
                            {
                                aro.STATUS = 2;
                            }
                        }
                        //更新报修单行项
                        aro.MODIFYDATE       = entity.MODIFYDATE;
                        aro.MODIFYUSER       = entity.MODIFYUSER;
                        entity.DESLOCATIONID = aro.DESLOCATIONID;
                        _unitOfWork.RegisterDirty(aro);
                        UpdateAssTransferOrderRow(entity, ProType, type);

                        bool result = _unitOfWork.Commit();
                        RInfo.IsSuccess = result;
                        RInfo.ErrorInfo = "修改成功!";
                        return(RInfo);
                    }
                }
                else
                {
                    throw new Exception("调拨单不存在!");
                }
            }
            catch (Exception ex)
            {
                _unitOfWork.Rollback();
                RInfo.IsSuccess = false;
                RInfo.ErrorInfo = ex.Message;
                return(RInfo);
            }
        }