Ejemplo n.º 1
0
        /// <summary>
        /// 初始化【详情】Tab内控件
        /// </summary>
        private void InitializeDetailTabControls()
        {
            #region 初始化下拉框

            //用户名
            _userList = CacheDAX.Get(CacheDAX.ConfigDataKey.SystemUser) as List <MDLSM_User>;
            mcbUserName.DisplayMember = SystemTableColumnEnums.SM_User.Code.User_Name;
            mcbUserName.ValueMember   = SystemTableColumnEnums.SM_User.Code.User_ID;
            mcbUserName.DataSource    = _userList;

            #endregion

            //初始化用户菜单明细List
            _userMenuAuthoritiyList = new SkyCarBindingList <UserMenuAuthorityUIModel, MDLSM_UserMenuAuthority>();
            //开始监控用户菜单明细List变化
            _userMenuAuthoritiyList.StartMonitChanges();

            //初始化用户菜单明细动作List
            _userActionAuthoritiyList = new SkyCarBindingList <UserActionAuthorityUIModel, MDLSM_UserActionAuthority>();
            //开始监控用户菜单明细动作List变化
            _userActionAuthoritiyList.StartMonitChanges();

            //初始化用户作业授权List
            _userJobAuthoritiyList = new SkyCarBindingList <UserJobAuthorityUIModel, MDLSM_UserJobAuthority>();
            //开始监控用户作业授权List变化
            _userJobAuthoritiyList.StartMonitChanges();

            //初始化树形控件
            InitializeMenuActionTreeView();
            InitializeUserJobTreeView();
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 初始化【列表】Tab内控件
        /// </summary>
        private void InitializeListTabControls()
        {
            #region 查询条件初始化
            //第三方编码
            txtWhere_SI_ThirdNo.Clear();
            //原厂编码
            txtWhere_SI_OEMNo.Clear();
            //配件条码
            txtWhere_SI_Barcode.Clear();
            //配件名称
            mcbWhere_SI_Name.Clear();
            #endregion

            #region 初始化下拉框

            //配件名称
            _autoPartsNameList             = CacheDAX.Get(CacheDAX.ConfigDataKey.AutoPartsName) as List <MDLBS_AutoPartsName>;
            mcbWhere_SI_Name.DisplayMember = SystemTableColumnEnums.BS_AutoPartsName.Code.APN_Name;
            mcbWhere_SI_Name.ValueMember   = SystemTableColumnEnums.BS_AutoPartsName.Code.APN_ID;
            mcbWhere_SI_Name.DataSource    = _autoPartsNameList;

            #endregion

            #region grid初始化
            _detailGridDS     = new SkyCarBindingList <AutoPartsShareInventoryManagerUIModel, MDLPIS_ShareInventory>();
            gdGrid.DataSource = _detailGridDS;
            gdGrid.DataBind();
            _detailGridDS.StartMonitChanges();
            #endregion
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 获取最新的用户作业授权进行绑定
        /// </summary>
        private void SetUserJobInfo()
        {
            #region 获取最新的用户作业授权进行绑定

            if (string.IsNullOrEmpty(mcbUserName.SelectedValue))
            {
                return;
            }
            _isCanAfterCheckOfJob = false;

            //用户ID
            string userId = mcbUserName.SelectedValue;
            //用户拥有权限的作业List
            List <UserJobAuthorityUIModel> resultUserJobList = new List <UserJobAuthorityUIModel>();

            _bll.QueryForList(SQLID.SM_UserMenuManager_SQL05, new MDLSM_UserJobAuthority()
            {
                WHERE_UJA_User_ID = userId,
            }, resultUserJobList);
            foreach (TreeNode loopJobNode in tvUserJob.Nodes)
            {
                if (loopJobNode == null)
                {
                    continue;
                }

                if (resultUserJobList.Any(p => p.BJ_ID == loopJobNode.Tag.ToString()))
                {
                    loopJobNode.Checked = true;
                }
                else
                {
                    loopJobNode.Checked = false;
                }
            }

            _isCanAfterCheckOfJob = true;

            //用户作业授权数据源
            _userJobAuthoritiyList = new SkyCarBindingList <UserJobAuthorityUIModel, MDLSM_UserJobAuthority>();
            _bll.CopyModelList(resultUserJobList, _userJobAuthoritiyList);
            //开始监控用户作业授权List变化
            _userJobAuthoritiyList.StartMonitChanges();

            #endregion
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 获取最新的用户组织进行绑定
        /// </summary>
        private void SetUserOrgInfo()
        {
            #region 获取最新的用户组织进行绑定

            if (string.IsNullOrEmpty(txtUser_ID.Text.Trim()))
            {
                return;
            }
            _isCanAfterCheck = false;

            //用户ID
            string userId = txtUser_ID.Text.Trim();
            //获取用户组织信息
            List <MDLSM_UserOrg> resultUserOrgList = new List <MDLSM_UserOrg>();
            _bll.QueryForList <MDLSM_UserOrg, MDLSM_UserOrg>(new MDLSM_UserOrg()
            {
                WHERE_UO_IsValid = true,
                WHERE_UO_User_ID = userId
            }, resultUserOrgList);

            if (resultUserOrgList.Count > 0)
            {
                foreach (TreeNode loopUserOrgNode in tvOrg.Nodes)
                {
                    if (loopUserOrgNode == null)
                    {
                        continue;
                    }
                    bool isSaveUserOrg = resultUserOrgList.Any(p => p.UO_Org_ID == loopUserOrgNode.Tag?.ToString() &&
                                                               p.UO_User_ID == txtUser_ID.Text.Trim());
                    loopUserOrgNode.Checked = isSaveUserOrg;
                }
            }

            _isCanAfterCheck = true;

            //用户组织数据源
            _userOrgList = new SkyCarBindingList <UserOrgUIModel, MDLSM_UserOrg>();
            _bll.CopyModelList(resultUserOrgList, _userOrgList);
            //开始监控用户组织List变化
            _userOrgList.StartMonitChanges();

            #endregion
        }
Ejemplo n.º 5
0
 /// <summary>
 /// 初始化【详情】Tab内控件
 /// </summary>
 private void InitializeDetailTabControls()
 {
     //单号
     txtPFO_No.Clear();
     //供应商名称
     txtPFO_SUPP_Name.Clear();
     //来源类型
     cbPFO_SourceTypeName.Items.Clear();
     //订单总额
     txtPFO_TotalAmount.Clear();
     //单据状态
     cbPFO_StatusName.Items.Clear();
     //有效
     ckPFO_IsValid.Checked    = true;
     ckPFO_IsValid.CheckState = System.Windows.Forms.CheckState.Checked;
     //创建人
     txtPFO_CreatedBy.Text = LoginInfoDAX.UserName;
     //创建时间
     dtPFO_CreatedTime.Value = DateTime.Now;
     //修改人
     txtPFO_UpdatedBy.Text = LoginInfoDAX.UserName;
     //修改时间
     dtPFO_UpdatedTime.Value = DateTime.Now;
     //采购预测订单ID
     txtPFO_ID.Clear();
     //组织ID
     txtPFO_Org_ID.Clear();
     txtPFO_Org_ID.Text = LoginInfoDAX.OrgID;
     //供应商ID
     txtPFO_SUPP_ID.Clear();
     //来源类型编码
     txtPFO_SourceTypeCode.Clear();
     //单据状态编码
     txtPFO_StatusCode.Clear();
     //版本号
     txtPFO_VersionNo.Clear();
     //给 单号 设置焦点
     lblPFO_No.Focus();
     //清空[明细]Grid
     _detailGridDS       = new SkyCarBindingList <PurchaseForecastOrderQueryDetailUIModel, MDLPIS_PurchaseForecastOrderDetail>();
     gdDetail.DataSource = _detailGridDS;
     gdDetail.DataBind();
 }
Ejemplo n.º 6
0
        /// <summary>
        /// 初始化【详情】Tab内控件
        /// </summary>
        private void InitializeDetailTabControls()
        {
            //仓库名称
            txtWH_Name.Clear();
            //仓库编号
            txtWH_No.Clear();
            //组织ID
            txtOrgName.Clear();
            txtOrgName.Text = LoginInfoDAX.OrgShortName;
            //仓库地址
            txtWH_Address.Clear();
            //仓库描述
            txtWH_Description.Clear();
            //有效
            ckWH_IsValid.Checked = true;
            ckWH_IsValid.CheckState = CheckState.Checked;
            //创建人
            txtWH_CreatedBy.Text = LoginInfoDAX.UserName;
            //创建时间
            dtWH_CreatedTime.Value = BLLCom.GetCurStdDatetime();
            //修改人
            txtWH_UpdatedBy.Text = LoginInfoDAX.UserName;
            //修改时间
            dtWH_UpdatedTime.Value = BLLCom.GetCurStdDatetime();
            //仓库ID
            txtWH_ID.Clear();
            //版本号
            txtWH_VersionNo.Clear();
            //给 仓库名称 设置焦点
            lblWH_Name.Focus();

            #region 仓位管理
            _warehouseBinList = new SkyCarBindingList<WarehouseBinManagerUIModel, MDLPIS_WarehouseBin>();
            gdGridWarehouseBin.DataSource = _warehouseBinList;
            gdGridWarehouseBin.DataBind();
            _warehouseBinList.StartMonitChanges();

            #endregion
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 获取最新的用户菜单明细授权和用户菜单明细动作授权进行绑定
        /// </summary>
        private void SetUserMenuAndActionInfo()
        {
            #region 获取最新的用户菜单明细授权和用户菜单明细动作授权进行绑定

            if (string.IsNullOrEmpty(mcbUserName.SelectedValue))
            {
                return;
            }
            _isCanAfterCheckOfMenu = false;

            //用户ID
            string userId = mcbUserName.SelectedValue;
            //用户拥有权限的菜单List
            List <MDLSM_Menu> resultUserMenuList = new List <MDLSM_Menu>();
            //用户的菜单授权List
            List <UserMenuAuthorityUIModel> resultUserMenuAuthoritiyList = new List <UserMenuAuthorityUIModel>();
            //用户的菜单动作授权List
            List <UserActionAuthorityUIModel> resultUserActionAuthoritiyList = new List <UserActionAuthorityUIModel>();

            //查询用户在当前组织下所有授权的菜单
            _bll.QueryForList(SQLID.SM_UserMenuManager_SQL04, new MDLSM_UserMenuAuthority()
            {
                WHERE_UMA_User_ID = userId,
                WHERE_UMA_Org_ID  = LoginInfoDAX.OrgID
            }, resultUserMenuList);

            //查询用户在当前组织下所有授权的菜单明细
            _bll.QueryForList(SQLID.SM_UserMenuManager_SQL01, new MDLSM_UserMenuAuthority()
            {
                WHERE_UMA_User_ID = userId,
                WHERE_UMA_Org_ID  = LoginInfoDAX.OrgID
            }, resultUserMenuAuthoritiyList);

            //查询用户在当前组织下所有授权的菜单动作
            _bll.QueryForList(SQLID.SM_UserMenuManager_SQL03, new MDLSM_UserActionAuthority()
            {
                WHERE_UAA_User_ID = userId,
                WHERE_UAA_Org_ID  = LoginInfoDAX.OrgID
            }, resultUserActionAuthoritiyList);

            foreach (TreeNode loopMenuNode in tvUserMenuAction.Nodes)
            {
                if (loopMenuNode == null)
                {
                    continue;
                }

                //勾选的菜单明细节点的数量
                int menuDetailNodeCount = 0;
                foreach (TreeNode loopMenuDetailNode in loopMenuNode.Nodes)
                {
                    if (loopMenuDetailNode == null || loopMenuDetailNode.Tag == null)
                    {
                        continue;
                    }

                    if (resultUserMenuAuthoritiyList.Any(p => p.UMA_MenuD_ID == loopMenuDetailNode.Tag.ToString()))
                    {
                        loopMenuDetailNode.Checked = true;
                        menuDetailNodeCount++;

                        //勾选的菜单动作的节点数
                        int menuDetailActionCount = 0;
                        foreach (TreeNode loopActionNode in loopMenuDetailNode.Nodes)
                        {
                            if (loopActionNode == null || loopActionNode.Tag == null)
                            {
                                continue;
                            }

                            if (resultUserActionAuthoritiyList.Any(p => p.UAA_MenuD_ID == loopMenuDetailNode.Tag.ToString() && p.UAA_Action_ID == loopActionNode.Tag.ToString()))
                            {
                                loopActionNode.Checked = true;
                                menuDetailActionCount++;
                            }
                            else
                            {
                                loopActionNode.Checked = false;
                            }
                        }
                        //如果菜单明细下的菜单动作节点都勾选,则该菜单明细勾选
                        if (menuDetailActionCount == loopMenuDetailNode.Nodes.Count)
                        {
                            loopMenuDetailNode.Checked = true;
                        }
                        else
                        {
                            loopMenuDetailNode.Checked = false;
                        }
                    }
                    else
                    {
                        loopMenuDetailNode.Checked = false;
                        foreach (TreeNode loopActionNode in loopMenuDetailNode.Nodes)
                        {
                            if (resultUserActionAuthoritiyList.Any(p => p.UAA_MenuD_ID == loopMenuDetailNode.Tag.ToString() && p.UAA_Action_ID == loopActionNode.Tag.ToString()))
                            {
                                loopActionNode.Checked = true;
                            }
                            else
                            {
                                loopActionNode.Checked = false;
                            }
                        }
                    }
                }
                //如果菜单下的菜单明细节点都勾选,则该菜单勾选
                if (menuDetailNodeCount == loopMenuNode.Nodes.Count)
                {
                    loopMenuNode.Checked = true;
                }
                else
                {
                    loopMenuNode.Checked = false;
                }
            }

            _isCanAfterCheckOfMenu = true;

            //用户菜单明细授权数据源
            _userMenuAuthoritiyList = new SkyCarBindingList <UserMenuAuthorityUIModel, MDLSM_UserMenuAuthority>();
            _bll.CopyModelList(resultUserMenuAuthoritiyList, _userMenuAuthoritiyList);
            //开始监控用户菜单明细授权List变化
            _userMenuAuthoritiyList.StartMonitChanges();

            //用户菜单明细动作授权数据源
            _userActionAuthoritiyList = new SkyCarBindingList <UserActionAuthorityUIModel, MDLSM_UserActionAuthority>();
            _bll.CopyModelList(resultUserActionAuthoritiyList, _userActionAuthoritiyList);
            //开始监控用户菜单明细动作List变化
            _userActionAuthoritiyList.StartMonitChanges();

            #endregion
        }
Ejemplo n.º 8
0
        /// <summary>
        /// 保存用户菜单和动作授权信息
        /// </summary>
        /// <param name="paramUserId">用户ID</param>
        /// <param name="paramUserMenuAuthoritiyList">用户菜单授权列表</param>
        /// <param name="paramUserActionAuthoritiyList">用户菜单动作授权列表</param>
        /// <param name="paramUserJobAuthoritiyList">用户作业授权列表</param>
        /// <returns></returns>
        public bool SaveUserMenu(string paramUserId, SkyCarBindingList <UserMenuAuthorityUIModel, MDLSM_UserMenuAuthority> paramUserMenuAuthoritiyList, SkyCarBindingList <UserActionAuthorityUIModel, MDLSM_UserActionAuthority> paramUserActionAuthoritiyList, SkyCarBindingList <UserJobAuthorityUIModel, MDLSM_UserJobAuthority> paramUserJobAuthoritiyList)
        {
            if (string.IsNullOrEmpty(paramUserId))
            {
                //没有获取到用户ID,保存失败
                ResultMsg = MsgHelp.GetMsg(MsgCode.W_0024, new object[] { SystemTableColumnEnums.SM_User.Name.User_ID, SystemActionEnum.Name.SAVE });
                return(false);
            }

            #region 准备数据

            #region 用户菜单授权

            if (paramUserMenuAuthoritiyList != null)
            {
                //新增用户菜单授权
                if (paramUserMenuAuthoritiyList.InsertList != null &&
                    paramUserMenuAuthoritiyList.InsertList.Count > 0)
                {
                    foreach (var loopUserMenuAuthoritiy in paramUserMenuAuthoritiyList.InsertList)
                    {
                        loopUserMenuAuthoritiy.UMA_User_ID     = paramUserId;
                        loopUserMenuAuthoritiy.UMA_CreatedBy   = LoginInfoDAX.UserName;
                        loopUserMenuAuthoritiy.UMA_CreatedTime = BLLCom.GetCurStdDatetime();
                        loopUserMenuAuthoritiy.UMA_UpdatedBy   = LoginInfoDAX.UserName;
                        loopUserMenuAuthoritiy.UMA_UpdatedTime = BLLCom.GetCurStdDatetime();
                    }
                }

                //删除用户菜单授权
                if (paramUserMenuAuthoritiyList.DeleteList != null &&
                    paramUserMenuAuthoritiyList.DeleteList.Count > 0)
                {
                    foreach (var loopUserMenuAuthoritiy in paramUserMenuAuthoritiyList.DeleteList)
                    {
                        loopUserMenuAuthoritiy.WHERE_UMA_ID = loopUserMenuAuthoritiy.UMA_ID;
                    }
                }
            }
            #endregion

            #region 用户菜单动作授权

            if (paramUserActionAuthoritiyList != null)
            {
                //新增用户菜单动作授权
                if (paramUserActionAuthoritiyList.InsertList != null &&
                    paramUserActionAuthoritiyList.InsertList.Count > 0)
                {
                    foreach (var loopUserActionAuthoritiy in paramUserActionAuthoritiyList.InsertList)
                    {
                        loopUserActionAuthoritiy.UAA_User_ID     = paramUserId;
                        loopUserActionAuthoritiy.UAA_CreatedBy   = LoginInfoDAX.UserName;
                        loopUserActionAuthoritiy.UAA_CreatedTime = BLLCom.GetCurStdDatetime();
                        loopUserActionAuthoritiy.UAA_UpdatedBy   = LoginInfoDAX.UserName;
                        loopUserActionAuthoritiy.UAA_UpdatedTime = BLLCom.GetCurStdDatetime();
                    }
                }
                //删除用户菜单动作授权
                if (paramUserActionAuthoritiyList.DeleteList != null &&
                    paramUserActionAuthoritiyList.DeleteList.Count > 0)
                {
                    foreach (var loopUserActionAuthoritiy in paramUserActionAuthoritiyList.DeleteList)
                    {
                        loopUserActionAuthoritiy.WHERE_UAA_ID = loopUserActionAuthoritiy.UAA_ID;
                    }
                }
            }

            #endregion

            #region 用户作业授权

            //新增用户菜单动作授权
            if (paramUserJobAuthoritiyList.InsertList != null)
            {
                foreach (var loopUserJobAuthoritiy in paramUserJobAuthoritiyList.InsertList)
                {
                    loopUserJobAuthoritiy.UJA_User_ID = paramUserId;
                }
            }
            //删除用户菜单动作授权
            if (paramUserJobAuthoritiyList.DeleteList != null)
            {
                foreach (var loopUserJobAuthoritiy in paramUserJobAuthoritiyList.DeleteList)
                {
                    loopUserJobAuthoritiy.WHERE_UJA_ID = loopUserJobAuthoritiy.UJA_ID;
                }
            }
            #endregion

            #endregion

            #region 带事务的保存

            try
            {
                DBManager.BeginTransaction(DBCONFIG.Coeus);

                if (paramUserMenuAuthoritiyList != null)
                {
                    #region 新增[用户菜单授权]

                    if (paramUserMenuAuthoritiyList.InsertList != null &&
                        paramUserMenuAuthoritiyList.InsertList.Count > 0)
                    {
                        bool saveUserMenuAuthority = _bll.InsertByList <UserMenuAuthorityUIModel, MDLSM_UserMenuAuthority>(
                            paramUserMenuAuthoritiyList.InsertList);
                        if (!saveUserMenuAuthority)
                        {
                            DBManager.RollBackTransaction(DBCONFIG.Coeus);
                            ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.NEW + SystemTableEnums.Name.SM_UserMenuAuthority });
                            return(false);
                        }
                    }
                    #endregion

                    #region  除[用户菜单授权]
                    if (paramUserMenuAuthoritiyList.DeleteList != null &&
                        paramUserMenuAuthoritiyList.DeleteList.Count > 0)
                    {
                        bool saveUserMenuAuthority = _bll.DeleteByList <UserMenuAuthorityUIModel, MDLSM_UserMenuAuthority>(
                            paramUserMenuAuthoritiyList.DeleteList);
                        if (!saveUserMenuAuthority)
                        {
                            DBManager.RollBackTransaction(DBCONFIG.Coeus);
                            ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.DELETE + SystemTableEnums.Name.SM_UserMenuAuthority });
                            return(false);
                        }
                    }
                    #endregion
                }
                if (paramUserActionAuthoritiyList != null)
                {
                    #region 新增[用户菜单动作授权]
                    if (paramUserActionAuthoritiyList.InsertList != null &&
                        paramUserActionAuthoritiyList.InsertList.Count > 0)
                    {
                        bool saveUserActionAuthority = _bll.InsertByList <UserActionAuthorityUIModel, MDLSM_UserActionAuthority>(paramUserActionAuthoritiyList.InsertList);
                        if (!saveUserActionAuthority)
                        {
                            DBManager.RollBackTransaction(DBCONFIG.Coeus);
                            ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.NEW + SystemTableEnums.Name.SM_UserActionAuthority });
                            return(false);
                        }
                    }
                    #endregion

                    #region  除[用户菜单动作授权]
                    if (paramUserActionAuthoritiyList.DeleteList != null &&
                        paramUserActionAuthoritiyList.DeleteList.Count > 0)
                    {
                        bool saveUserActionAuthority = _bll.DeleteByList <UserActionAuthorityUIModel, MDLSM_UserActionAuthority>(paramUserActionAuthoritiyList.DeleteList);
                        if (!saveUserActionAuthority)
                        {
                            DBManager.RollBackTransaction(DBCONFIG.Coeus);
                            ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.DELETE + SystemTableEnums.Name.SM_UserActionAuthority });
                            return(false);
                        }
                    }
                    #endregion

                    #region 保存[用户作业授权]

                    bool saveUserJobAuthorityResult = _bll.UnitySave(paramUserJobAuthoritiyList);
                    if (!saveUserJobAuthorityResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.SM_UserJobAuthority });
                        return(false);
                    }

                    #endregion
                }

                DBManager.CommitTransaction(DBCONFIG.Coeus);
            }
            catch (Exception ex)
            {
                DBManager.RollBackTransaction(DBCONFIG.Coeus);
                ResultMsg = MsgHelp.GetMsg(MsgCode.E_0018, new object[] { SystemActionEnum.Name.SAVE, ex.Message });
                LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, MethodBase.GetCurrentMethod().ToString(),
                                            ex.Message, "", null);
                return(false);
            }

            #endregion

            return(true);
        }
        /// <summary>
        /// 保存
        /// </summary>
        /// <param name="paramHead">单头UIModel</param>
        /// <param name="paramDetailList">明细UIModel列表</param>
        /// <returns></returns>
        public bool SaveDetailDS(PurchaseReturnManagerUIModel paramHead, SkyCarBindingList <StockOutBillManagerDetailUIModel, MDLPIS_StockOutBillDetail> paramDetailList)
        {
            var funcName = "SaveDetailDS";

            LogHelper.WriteBussLogStart(BussID, LoginInfoDAX.UserName, funcName, "", "", null);
            //服务端检查
            if (!ServerCheck(paramHead, paramDetailList))
            {
                LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                return(false);
            }

            #region 准备数据

            #region 单头
            //将UIModel转为TBModel
            var argsHead = paramHead.ToTBModelForSaveAndDelete <MDLPIS_StockOutBill>();
            //判断主键是否被赋值
            if (string.IsNullOrEmpty(paramHead.SOB_ID))
            {
                argsHead.SOB_ID = Guid.NewGuid().ToString();
                //单号
                argsHead.SOB_No          = BLLCom.GetCoeusDocumentNo(DocumentTypeEnums.Code.SOB);
                argsHead.SOB_CreatedBy   = LoginInfoDAX.UserName;
                argsHead.SOB_CreatedTime = BLLCom.GetCurStdDatetime();
            }
            argsHead.SOB_UpdatedBy   = LoginInfoDAX.UserName;
            argsHead.SOB_UpdatedTime = BLLCom.GetCurStdDatetime();

            #endregion

            #region 明细

            //添加的明细
            if (paramDetailList != null && paramDetailList.InsertList != null &&
                paramDetailList.InsertList.Count > 0)
            {
                foreach (var loopDetailItem in paramDetailList.InsertList)
                {
                    loopDetailItem.SOBD_SOB_ID      = argsHead.SOB_ID ?? argsHead.WHERE_SOB_ID;
                    loopDetailItem.SOBD_SOB_No      = argsHead.SOB_No;
                    loopDetailItem.SOBD_CreatedBy   = LoginInfoDAX.UserName;
                    loopDetailItem.SOBD_CreatedTime = BLLCom.GetCurStdDatetime();
                    loopDetailItem.SOBD_UpdatedBy   = LoginInfoDAX.UserName;
                    loopDetailItem.SOBD_UpdatedTime = BLLCom.GetCurStdDatetime();
                }
            }
            #endregion

            #endregion

            #region 带事务的保存

            try
            {
                DBManager.BeginTransaction(DBCONFIG.Coeus);

                #region 保存单头

                //执行保存
                var saveStockOutBillResult = _bll.Save(argsHead, argsHead.SOB_ID);
                if (!saveStockOutBillResult)
                {
                    DBManager.RollBackTransaction(DBCONFIG.Coeus);
                    ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.PIS_StockOutBill });
                    LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                    return(false);
                }

                #endregion

                #region 保存明细

                //执行保存
                var saveStockOutDetailResult = _bll.UnitySave(paramDetailList);
                if (!saveStockOutDetailResult)
                {
                    DBManager.RollBackTransaction(DBCONFIG.Coeus);
                    ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.PIS_StockOutBillDetail });
                    LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                    return(false);
                }

                #endregion

                DBManager.CommitTransaction(DBCONFIG.Coeus);
            }
            catch (Exception ex)
            {
                DBManager.RollBackTransaction(DBCONFIG.Coeus);
                ResultMsg = MsgHelp.GetMsg(MsgCode.E_0018, new object[] { SystemActionEnum.Name.SAVE, ex.Message });
                LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ex.Message, "", null);
                return(false);
            }

            #endregion

            //将最新数据回写给DetailDS
            CopyModel(argsHead, paramHead);

            //更新明细版本号
            if (paramDetailList != null)
            {
                if (paramDetailList.InsertList != null)
                {
                    foreach (var loopInsertDetail in paramDetailList.InsertList)
                    {
                        //新增时版本号为1
                        loopInsertDetail.SOBD_VersionNo = 1;
                    }
                }

                foreach (var loopUpdateDetail in paramDetailList.UpdateList)
                {
                    //更新时版本号加1
                    loopUpdateDetail.SOBD_VersionNo = loopUpdateDetail.SOBD_VersionNo + 1;
                }
            }

            return(true);
        }
 /// <summary>
 /// 服务端检查
 /// </summary>
 /// <param name="paramModelList">UIModel</param>
 /// <returns></returns>
 private bool ServerCheck(SkyCarBindingList <AutoPartsShareInventoryManagerUIModel, MDLPIS_ShareInventory> paramModelList)
 {
     return(true);
 }
        /// <summary>
        /// 计算入库总金额
        /// </summary>
        /// <param name="paramStockOutBill">入库单</param>
        /// <param name="paramStockOutBillDetailList">入库单明细列表</param>
        /// <returns></returns>
        private decimal CalculateStockOutAmount(MDLPIS_StockOutBill paramStockOutBill, SkyCarBindingList <StockOutBillManagerDetailUIModel, MDLPIS_StockOutBillDetail> paramStockOutBillDetailList)
        {
            if (paramStockOutBill == null || string.IsNullOrEmpty(paramStockOutBill.WHERE_SOB_ID))
            {
                return(0);
            }
            if (paramStockOutBillDetailList == null || paramStockOutBillDetailList.Count == 0)
            {
                return(0);
            }
            #region 计算入库总金额
            decimal totalStockOutAmount = 0;
            foreach (var loopStockOutBillDetail in paramStockOutBillDetailList)
            {
                if (string.IsNullOrEmpty(loopStockOutBillDetail.SOBD_Barcode) ||
                    string.IsNullOrEmpty(loopStockOutBillDetail.SOBD_BatchNo))
                {
                    continue;
                }
                totalStockOutAmount += (loopStockOutBillDetail.SOBD_Amount ?? 0);
            }
            #endregion

            return(totalStockOutAmount);
        }
Ejemplo n.º 12
0
        /// <summary>
        /// 反审核
        /// </summary>
        /// <param name="paramHead">UIModel</param>
        /// <param name="paramDetailList">出库单明细列表</param>
        /// <returns></returns>
        public bool UnApproveDetailDS(StockOutBillManagerUIModel paramHead, SkyCarBindingList <StockOutBillManagerDetailUIModel, MDLPIS_StockOutBillDetail> paramDetailList)
        {
            var funcName = "UnApproveDetailDS";

            LogHelper.WriteBussLogStart(BussID, LoginInfoDAX.UserName, funcName, "", "", null);

            #region 验证

            if (paramHead == null ||
                string.IsNullOrEmpty(paramHead.SOB_ID) ||
                string.IsNullOrEmpty(paramHead.SOB_No))
            {
                //没有获取到出库单,反审核失败
                ResultMsg = MsgHelp.GetMsg(MsgCode.W_0024, new object[] { SystemTableEnums.Name.PIS_StockOutBill, SystemActionEnum.Name.UNAPPROVE });
                LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                return(false);
            }
            #endregion

            #region 准备数据

            #region 变量定义

            //待更新的[出库单]
            var updateStockOutBill = paramHead.ToTBModelForSaveAndDelete <MDLPIS_StockOutBill>();

            //待删除的[应收单]
            MDLFM_AccountReceivableBill deleteAccountReceivableBill = new MDLFM_AccountReceivableBill();
            //待删除的[应收单明细]列表
            List <MDLFM_AccountReceivableBillDetail> deleteAccountReceivableBillDetailList = new List <MDLFM_AccountReceivableBillDetail>();

            //待新增的[库存异动日志]列表
            List <MDLPIS_InventoryTransLog> newInventoryTransLogList = new List <MDLPIS_InventoryTransLog>();
            //待更新的[库存]列表
            List <MDLPIS_Inventory> updateInventoryList = new List <MDLPIS_Inventory>();
            #endregion

            #region 更新[出库单]
            //将出库单[审核状态]更新为[待审核],[单据状态]更新为[已生成]
            updateStockOutBill.SOB_VersionNo++;
            updateStockOutBill.SOB_ApprovalStatusCode = ApprovalStatusEnum.Code.DSH;
            updateStockOutBill.SOB_ApprovalStatusName = ApprovalStatusEnum.Name.DSH;
            updateStockOutBill.SOB_UpdatedBy          = LoginInfoDAX.UserName;
            updateStockOutBill.SOB_UpdatedTime        = BLLCom.GetCurStdDatetime();
            //updateStockOutBill.SOB_StatusCode = StockOutBillStatusEnum.Code.YSC;
            //updateStockOutBill.SOB_StatusName = StockOutBillStatusEnum.Name.YSC;

            #endregion

            #region 获取待删除的[应收单]

            _bll.QueryForObject <MDLFM_AccountReceivableBill, MDLFM_AccountReceivableBill>(new MDLFM_AccountReceivableBill
            {
                WHERE_ARB_SrcBillNo = updateStockOutBill.SOB_No,
                WHERE_ARB_IsValid   = true
            }, deleteAccountReceivableBill);
            deleteAccountReceivableBill.WHERE_ARB_ID = deleteAccountReceivableBill.ARB_ID;
            #endregion

            #region 获取待删除的[应收单明细]列表

            if (!string.IsNullOrEmpty(deleteAccountReceivableBill.ARB_ID))
            {
                _bll.QueryForList <MDLFM_AccountReceivableBillDetail, MDLFM_AccountReceivableBillDetail>(new MDLFM_AccountReceivableBillDetail
                {
                    WHERE_ARBD_ARB_ID    = deleteAccountReceivableBill.ARB_ID,
                    WHERE_ARBD_SrcBillNo = updateStockOutBill.SOB_No,
                    WHERE_ARBD_IsValid   = true
                }, deleteAccountReceivableBillDetailList);
            }
            foreach (var loopAccountReceivableBillDetail in deleteAccountReceivableBillDetailList)
            {
                if (string.IsNullOrEmpty(loopAccountReceivableBillDetail.ARBD_ID))
                {
                    continue;
                }
                loopAccountReceivableBillDetail.WHERE_ARBD_ID = loopAccountReceivableBillDetail.ARBD_ID;
            }
            #endregion

            #region 获取待更新的[库存]列表,生成[库存异动日志]

            foreach (var loopDetail in paramDetailList)
            {
                //待更新的[库存]
                MDLPIS_Inventory updateInventory = new MDLPIS_Inventory();

                _bll.QueryForObject <MDLPIS_Inventory, MDLPIS_Inventory>(new MDLPIS_Inventory
                {
                    WHERE_INV_Org_ID  = updateStockOutBill.SOB_Org_ID,
                    WHERE_INV_WH_ID   = loopDetail.SOBD_WH_ID,
                    WHERE_INV_WHB_ID  = loopDetail.SOBD_WHB_ID,
                    WHERE_INV_Barcode = loopDetail.SOBD_Barcode,
                    WHERE_INV_BatchNo = loopDetail.SOBD_BatchNo,
                    WHERE_INV_IsValid = true
                }, updateInventory);

                if (!string.IsNullOrEmpty(updateInventory.INV_ID) &&
                    !string.IsNullOrEmpty(updateInventory.INV_Barcode) &&
                    !string.IsNullOrEmpty(updateInventory.INV_BatchNo))
                {
                    //[反审核]时,恢复[审核]时出库的配件数量
                    updateInventory.INV_Qty            += loopDetail.SOBD_Qty;
                    updateInventory.INV_UpdatedBy       = LoginInfoDAX.UserName;
                    updateInventory.INV_UpdatedTime     = BLLCom.GetCurStdDatetime();
                    updateInventory.WHERE_INV_ID        = updateInventory.INV_ID;
                    updateInventory.WHERE_INV_VersionNo = updateInventory.INV_VersionNo;
                }

                updateInventoryList.Add(updateInventory);

                //生成[库存异动日志]
                newInventoryTransLogList.Add(GenerateInventoryTransLogOfUnApprove(updateStockOutBill, loopDetail, updateInventory));
            }

            #endregion

            #endregion

            #region 带事务的保存和删除

            try
            {
                DBManager.BeginTransaction(DBCONFIG.Coeus);

                #region 更新[出库单]

                bool updateStockOutBillResult = _bll.Save(updateStockOutBill);
                if (!updateStockOutBillResult)
                {
                    DBManager.RollBackTransaction(DBCONFIG.Coeus);
                    ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.PIS_StockOutBill });
                    LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                    return(false);
                }
                #endregion

                #region  除[应收单]

                if (!string.IsNullOrEmpty(deleteAccountReceivableBill.ARB_ID))
                {
                    var deleteAccountReceivableBillResult = _bll.Delete <MDLFM_AccountReceivableBill>(deleteAccountReceivableBill);
                    if (!deleteAccountReceivableBillResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.DELETE + SystemTableEnums.Name.FM_AccountReceivableBill });
                        LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                        return(false);
                    }
                }

                #endregion

                #region  除[应收单明细]

                if (deleteAccountReceivableBillDetailList.Count > 0)
                {
                    var deleteAccountReceivableBillDetailResult = _bll.DeleteByList <MDLFM_AccountReceivableBillDetail, MDLFM_AccountReceivableBillDetail>(deleteAccountReceivableBillDetailList);
                    if (!deleteAccountReceivableBillDetailResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.DELETE + SystemTableEnums.Name.FM_AccountReceivableBillDetail });
                        LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                        return(false);
                    }
                }

                #endregion

                #region 更新[库存]

                foreach (var loopInventory in updateInventoryList)
                {
                    bool saveInventoryResult = _bll.Save(loopInventory);
                    if (!saveInventoryResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.PIS_Inventory });
                        LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                        return(false);
                    }
                }

                #endregion

                #region 新增[库存异动日志]

                if (newInventoryTransLogList.Count > 0)
                {
                    bool insertInventoryTransLogResult = _bll.InsertByList <MDLPIS_InventoryTransLog, MDLPIS_InventoryTransLog>(newInventoryTransLogList);
                    if (!insertInventoryTransLogResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.NEW + SystemTableEnums.Name.PIS_InventoryTransLog });
                        LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                        return(false);
                    }
                }
                #endregion

                DBManager.CommitTransaction(DBCONFIG.Coeus);
            }
            catch (Exception ex)
            {
                DBManager.RollBackTransaction(DBCONFIG.Coeus);
                ResultMsg = MsgHelp.GetMsg(MsgCode.E_0018, new object[] { SystemActionEnum.Name.UNAPPROVE, ex.Message });
                LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ex.Message, "", null);
                return(false);
            }

            #endregion

            //将最新数据回写给DetailDS
            CopyModel(updateStockOutBill, paramHead);

            return(true);
        }
        /// <summary>
        /// 保存
        /// </summary>
        /// <param name="paramHead">单头UIModel</param>
        /// <param name="paramDetailList">明细UIModel列表</param>
        /// <returns></returns>
        public bool SaveDetailDS(PurchaseForecastOrderQueryUIModel paramHead, SkyCarBindingList <PurchaseForecastOrderQueryDetailUIModel, MDLPIS_PurchaseForecastOrderDetail> paramDetailList)
        {
            var funcName = "SaveDetailDS";

            LogHelper.WriteBussLogStart(BussID, LoginInfoDAX.UserName, funcName, "", "", null);
            //服务端检查
            if (!ServerCheck(paramHead, paramDetailList))
            {
                LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                return(false);
            }

            #region 事务,多数据表操作

            try
            {
                DBManager.BeginTransaction(DBCONFIG.Coeus);

                #region 保存单头

                //将UIModel转为TBModel
                var argsHead = paramHead.ToTBModelForSaveAndDelete <MDLPIS_PurchaseForecastOrder>();
                //判断主键是否被赋值
                if (string.IsNullOrEmpty(paramHead.PFO_ID))
                {
                    argsHead.PFO_No = BLLCom.GetCoeusDocumentNo(DocumentTypeEnums.Code.PFO);
                }
                //执行保存
                if (!_bll.Save(argsHead))
                {
                    DBManager.RollBackTransaction(DBCONFIG.Coeus);
                    ResultMsg = MsgHelp.GetMsg(MsgCode.E_0000, new object[] { "保存[XX]信息失败!" });
                    LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                    return(false);
                }

                #endregion

                #region 保存明细

                //执行保存
                if (!_bll.UnitySave(paramDetailList))
                {
                    DBManager.RollBackTransaction(DBCONFIG.Coeus);
                    ResultMsg = MsgHelp.GetMsg(MsgCode.E_0000, new object[] { "保存[XX]信息失败!" });
                    LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                    return(false);
                }

                #endregion

                //将最新数据回写给DetailDS
                CopyModel(argsHead, paramHead);

                DBManager.CommitTransaction(DBCONFIG.Coeus);
            }
            catch (Exception ex)
            {
                DBManager.RollBackTransaction(DBCONFIG.Coeus);
                ResultMsg = MsgHelp.GetMsg(MsgCode.E_0000, new object[] { "保存失败,失败原因:" + ex.Message });
                LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ex.Message, "", null);
                return(false);
            }

            #endregion

            return(true);
        }
Ejemplo n.º 14
0
        /// <summary>
        /// 审核
        /// </summary>
        /// <param name="paramHead">单头</param>
        /// <param name="paramDetailList">明细列表</param>
        /// <returns></returns>
        public bool ApproveDetailDS(SalesTemplateManagerUIModel paramHead, SkyCarBindingList <SalesTemplateDetailUIModel, MDLSD_SalesTemplateDetail> paramDetailList)
        {
            var funcName = "ApproveDetailDS";

            LogHelper.WriteBussLogStart(BussID, LoginInfoDAX.UserName, funcName, "", "", null);

            if (paramHead == null)
            {
                //没有获取到销售模板,审核失败
                ResultMsg = MsgHelp.GetMsg(MsgCode.W_0024, new object[] { SystemTableEnums.Name.SD_SalesTemplate, SystemActionEnum.Name.APPROVE });
                return(false);
            }

            #region 准备数据

            #region 更新[主动销售模板]

            //更新主动销售模板[审核状态]为[已审核]
            paramHead.SasT_ApprovalStatusName = ApprovalStatusEnum.Name.YSH;
            paramHead.SasT_ApprovalStatusCode = ApprovalStatusEnum.Code.YSH;
            paramHead.SasT_UpdatedBy          = LoginInfoDAX.UserName;
            paramHead.SasT_UpdatedTime        = BLLCom.GetCurStdDatetime();
            //将UIModel转为TBModel
            var updateHead = paramHead.ToTBModelForSaveAndDelete <MDLSD_SalesTemplate>();

            #endregion

            #endregion

            #region 带事务的保存
            try
            {
                DBManager.BeginTransaction(DBCONFIG.Coeus);

                #region 保存[主动销售模板]

                bool updateSalesTemplate = _bll.Save(updateHead);
                if (!updateSalesTemplate)
                {
                    DBManager.RollBackTransaction(DBCONFIG.Coeus);
                    ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.UPDATE + SystemTableEnums.Name.SD_SalesTemplate });
                    LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                    return(false);
                }

                #endregion

                #region 保存[主动销售模板明细]

                var saveSalesTemplateDetailResult = _bll.UnitySave(paramDetailList);
                if (!saveSalesTemplateDetailResult)
                {
                    DBManager.RollBackTransaction(DBCONFIG.Coeus);
                    ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.SD_SalesTemplateDetail });
                    LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                    return(false);
                }

                #endregion

                DBManager.CommitTransaction(DBCONFIG.Coeus);
            }
            catch (Exception ex)
            {
                DBManager.RollBackTransaction(DBCONFIG.Coeus);
                ResultMsg = MsgHelp.GetMsg(MsgCode.E_0018, new object[] { SystemActionEnum.Name.APPROVE, ex.Message });
                LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                return(false);
            }
            #endregion

            //将最新数据回写给DetailDS
            CopyModel(updateHead, paramHead);

            //更新版本号
            foreach (var loopDetail in paramDetailList)
            {
                if (string.IsNullOrEmpty(loopDetail.SasTD_ID))
                {
                    loopDetail.SasTD_VersionNo = 1;
                }
                else
                {
                    loopDetail.SasTD_VersionNo = loopDetail.SasTD_VersionNo + 1;
                }
            }
            return(true);
        }
Ejemplo n.º 15
0
        /// <summary>
        /// 保存
        /// </summary>
        /// <param name="paramHead">单头</param>
        /// <param name="paramDetailList">明细列表</param>
        /// <param name="paramDistributePathList">下发路径</param>
        /// <returns></returns>
        public bool SaveDetailDs(SalesTemplateManagerUIModel paramHead,
                                 SkyCarBindingList <SalesTemplateDetailUIModel, MDLSD_SalesTemplateDetail> paramDetailList,
                                 SkyCarBindingList <DistributePathUIModel, MDLSD_DistributePath> paramDistributePathList)
        {
            var funcName = "SaveDetailDS";

            LogHelper.WriteBussLogStart(BussID, LoginInfoDAX.UserName, funcName, "", "", null);

            //服务端检查
            if (!ServerCheck(paramHead))
            {
                LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                return(false);
            }

            #region 准备数据

            #region 定义变量

            //待新增的目的组织的[销售模板]列表
            List <MDLSD_SalesTemplate> insertSalesTmpListOfDistributeOrg = new List <MDLSD_SalesTemplate>();
            //待新增的目的组织的[销售模板明细]列表
            List <MDLSD_SalesTemplateDetail> insertSalesTmpDetailListOfDistributeOrg = new List <MDLSD_SalesTemplateDetail>();

            //待删除的目的组织的[销售模板]列表
            List <MDLSD_SalesTemplate> deleteSalesTmpListOfDistributeOrg = new List <MDLSD_SalesTemplate>();
            //待删除的目的组织的[销售模板明细]列表
            List <MDLSD_SalesTemplateDetail> deleteSalesTmpDetailListOfDistributeOrg = new List <MDLSD_SalesTemplateDetail>();

            #endregion

            #region 保存[销售模板]
            //将UIModel转为TBModel
            var argsHead = paramHead.ToTBModelForSaveAndDelete <MDLSD_SalesTemplate>();
            //判断主键是否被赋值
            if (string.IsNullOrEmpty(paramHead.SasT_ID))
            {
                argsHead.SasT_ID          = Guid.NewGuid().ToString();
                argsHead.SasT_CreatedBy   = LoginInfoDAX.UserName;
                argsHead.SasT_CreatedTime = BLLCom.GetCurStdDatetime();
            }
            argsHead.SasT_UpdatedBy   = LoginInfoDAX.UserName;
            argsHead.SasT_UpdatedTime = BLLCom.GetCurStdDatetime();

            #endregion

            #region 保存[销售模板明细]

            //添加的明细
            if (paramDetailList != null && paramDetailList.InsertList != null &&
                paramDetailList.InsertList.Count > 0)
            {
                foreach (var loopSalesOrderDetail in paramDetailList.InsertList)
                {
                    //赋值销售模板ID
                    loopSalesOrderDetail.SasTD_SasT_ID     = argsHead.SasT_ID ?? argsHead.WHERE_SasT_ID;
                    loopSalesOrderDetail.SasTD_CreatedBy   = LoginInfoDAX.UserName;
                    loopSalesOrderDetail.SasTD_CreatedTime = BLLCom.GetCurStdDatetime();
                    loopSalesOrderDetail.SasTD_UpdatedBy   = LoginInfoDAX.UserName;
                    loopSalesOrderDetail.SasTD_UpdatedTime = BLLCom.GetCurStdDatetime();
                }
            }

            #endregion

            #region  发或取消下发销售模板

            if (paramDistributePathList != null)
            {
                //下发销售模板:新增目的组织下的[销售模板]和[销售模板明细]列表
                if (paramDistributePathList.InsertList != null &&
                    paramDistributePathList.InsertList.Count > 0)
                {
                    foreach (var loopDistributePath in paramDistributePathList.InsertList)
                    {
                        #region  发路径

                        //赋值销售模板ID
                        loopDistributePath.DP_SendDataID  = !string.IsNullOrEmpty(argsHead.SasT_ID) ? argsHead.SasT_ID : argsHead.WHERE_SasT_ID;
                        loopDistributePath.DP_CreatedBy   = LoginInfoDAX.UserName;
                        loopDistributePath.DP_CreatedTime = BLLCom.GetCurStdDatetime();
                        loopDistributePath.DP_UpdatedBy   = LoginInfoDAX.UserName;
                        loopDistributePath.DP_UpdatedTime = BLLCom.GetCurStdDatetime();
                        #endregion

                        #region 目的组织下的[销售模板]列表

                        MDLSD_SalesTemplate insertSalesTemplate = new MDLSD_SalesTemplate();
                        _bll.CopyModel(argsHead, insertSalesTemplate);

                        insertSalesTemplate.SasT_ID          = Guid.NewGuid().ToString();
                        insertSalesTemplate.SasT_Org_ID      = loopDistributePath.DP_Org_ID_To;
                        insertSalesTemplate.SasT_CreatedBy   = LoginInfoDAX.UserName;
                        insertSalesTemplate.SasT_CreatedTime = BLLCom.GetCurStdDatetime();
                        insertSalesTemplate.SasT_UpdatedBy   = LoginInfoDAX.UserName;
                        insertSalesTemplate.SasT_UpdatedTime = BLLCom.GetCurStdDatetime();

                        insertSalesTmpListOfDistributeOrg.Add(insertSalesTemplate);
                        #endregion

                        #region 目的组织下的[销售模板明细]列表

                        if (paramDetailList != null)
                        {
                            foreach (var loopSalesTemplateDetail in paramDetailList)
                            {
                                MDLSD_SalesTemplateDetail inserSalesTemplateDetail = new MDLSD_SalesTemplateDetail();
                                _bll.CopyModel(loopSalesTemplateDetail, inserSalesTemplateDetail);

                                inserSalesTemplateDetail.SasTD_ID          = Guid.NewGuid().ToString();
                                inserSalesTemplateDetail.SasTD_SasT_ID     = insertSalesTemplate.SasT_ID;
                                inserSalesTemplateDetail.SasTD_CreatedBy   = LoginInfoDAX.UserName;
                                inserSalesTemplateDetail.SasTD_CreatedTime = BLLCom.GetCurStdDatetime();
                                inserSalesTemplateDetail.SasTD_UpdatedBy   = LoginInfoDAX.UserName;
                                inserSalesTemplateDetail.SasTD_UpdatedTime = BLLCom.GetCurStdDatetime();

                                insertSalesTmpDetailListOfDistributeOrg.Add(inserSalesTemplateDetail);
                            }
                        }

                        #endregion
                    }
                }

                //取消下发销售模板:删除目的组织下的[销售模板]和[销售模板明细]列表
                if (paramDistributePathList.DeleteList != null &&
                    paramDistributePathList.DeleteList.Count > 0)
                {
                    foreach (var loopDistributePath in paramDistributePathList.DeleteList)
                    {
                        if (string.IsNullOrEmpty(loopDistributePath.DP_ID) ||
                            string.IsNullOrEmpty(loopDistributePath.DP_Org_ID_To))
                        {
                            continue;
                        }

                        #region 目的组织下的[销售模板]

                        //查询目的组织下的[销售模板]
                        var deleteSalesTemplate = _bll.QueryForObject <MDLSD_SalesTemplate>(SQLID.SD_SalesTemplate_SQL03, new SalesTemplateManagerQCModel
                        {
                            WHERE_SasT_Name      = argsHead.SasT_Name,
                            WHERE_DP_SendDataID  = !string.IsNullOrEmpty(argsHead.SasT_ID) ? argsHead.SasT_ID : argsHead.WHERE_SasT_ID,
                            WHERE_DP_Org_ID_From = argsHead.SasT_Org_ID,
                            WHERE_DP_Org_ID_To   = loopDistributePath.DP_Org_ID_To
                        });
                        if (deleteSalesTemplate == null ||
                            string.IsNullOrEmpty(deleteSalesTemplate.SasT_ID))
                        {
                            continue;
                        }
                        deleteSalesTemplate.WHERE_SasT_ID = deleteSalesTemplate.SasT_ID;

                        deleteSalesTmpListOfDistributeOrg.Add(deleteSalesTemplate);
                        #endregion

                        #region 目的组织下的[销售模板明细]列表

                        List <MDLSD_SalesTemplateDetail> tempSalesTemplateDetailList = new List <MDLSD_SalesTemplateDetail>();
                        _bll.QueryForList <MDLSD_SalesTemplateDetail, MDLSD_SalesTemplateDetail>(new MDLSD_SalesTemplateDetail
                        {
                            WHERE_SasTD_SasT_ID = deleteSalesTemplate.SasT_ID,
                            WHERE_SasTD_IsValid = true
                        }, tempSalesTemplateDetailList);

                        tempSalesTemplateDetailList.ForEach(x => x.WHERE_SasTD_ID = x.SasTD_ID);

                        deleteSalesTmpDetailListOfDistributeOrg.AddRange(tempSalesTemplateDetailList);

                        #endregion
                    }
                }
            }
            #endregion

            #endregion

            #region 带事务的保存

            try
            {
                DBManager.BeginTransaction(DBCONFIG.Coeus);

                #region 保存[销售模板]

                //执行保存
                if (!_bll.Save(argsHead, argsHead.SasT_ID))
                {
                    DBManager.RollBackTransaction(DBCONFIG.Coeus);
                    ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.SD_SalesTemplate });
                    LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                    return(false);
                }

                #endregion

                #region 保存[销售模板明细]

                if (paramDetailList != null)
                {
                    //执行保存
                    if (!_bll.UnitySave(paramDetailList))
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.SD_SalesTemplateDetail });
                        LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                        return(false);
                    }
                }

                #endregion

                #region 保存[下发路径]

                if (paramDistributePathList != null)
                {
                    //执行保存
                    if (!_bll.UnitySave(paramDistributePathList))
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.SD_DistributePath });
                        LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                        return(false);
                    }
                }
                #endregion

                #region 新增目的组织下的[销售模板]

                if (insertSalesTmpListOfDistributeOrg.Count > 0)
                {
                    var insertSalesTmpListOfDistributeOrgResult = _bll.InsertByList <MDLSD_SalesTemplate, MDLSD_SalesTemplate>(insertSalesTmpListOfDistributeOrg);
                    if (!insertSalesTmpListOfDistributeOrgResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.DELIVER + SystemTableEnums.Name.SD_SalesTemplate });
                        LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                        return(false);
                    }
                }

                #endregion

                #region 新增目的组织下的[销售模板明细]

                if (insertSalesTmpDetailListOfDistributeOrg.Count > 0)
                {
                    var insertSalesTmpListOfDistributeOrgResult = _bll.InsertByList <MDLSD_SalesTemplateDetail, MDLSD_SalesTemplateDetail>(insertSalesTmpDetailListOfDistributeOrg);
                    if (!insertSalesTmpListOfDistributeOrgResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.DELIVER + SystemTableEnums.Name.SD_SalesTemplate });
                        LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                        return(false);
                    }
                }

                #endregion

                #region  除目的组织下的[销售模板]

                if (deleteSalesTmpListOfDistributeOrg.Count > 0)
                {
                    var deleteSalesTmpListOfDistributeOrgResult = _bll.DeleteByList <MDLSD_SalesTemplate, MDLSD_SalesTemplate>(deleteSalesTmpListOfDistributeOrg);
                    if (!deleteSalesTmpListOfDistributeOrgResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.CANCELDELIVER + SystemTableEnums.Name.SD_SalesTemplate });
                        LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                        return(false);
                    }
                }

                #endregion

                #region  除目的组织下的[销售模板明细]

                if (deleteSalesTmpDetailListOfDistributeOrg.Count > 0)
                {
                    var deleteSalesTmpDetailListOfDistributeOrgResult = _bll.DeleteByList <MDLSD_SalesTemplateDetail, MDLSD_SalesTemplateDetail>(deleteSalesTmpDetailListOfDistributeOrg);
                    if (!deleteSalesTmpDetailListOfDistributeOrgResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.CANCELDELIVER + SystemTableEnums.Name.SD_SalesTemplate });
                        LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                        return(false);
                    }
                }

                #endregion

                DBManager.CommitTransaction(DBCONFIG.Coeus);
            }
            catch (Exception ex)
            {
                DBManager.RollBackTransaction(DBCONFIG.Coeus);
                ResultMsg = MsgHelp.GetMsg(MsgCode.E_0018, new object[] { SystemActionEnum.Name.SAVE, ex.Message });
                LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ex.Message, "", null);
                return(false);
            }

            #endregion

            //将最新数据回写给DetailDS
            CopyModel(argsHead, paramHead);

            //更新销售模板明细版本号
            if (paramDetailList != null)
            {
                if (paramDetailList.InsertList != null)
                {
                    foreach (var loopInsertDetail in paramDetailList.InsertList)
                    {
                        //新增时版本号为1
                        loopInsertDetail.SasTD_VersionNo = 1;
                    }
                }

                foreach (var loopUpdateDetail in paramDetailList.UpdateList)
                {
                    //更新时版本号加1
                    loopUpdateDetail.SasTD_VersionNo = loopUpdateDetail.SasTD_VersionNo + 1;
                }
            }

            //更新下发路径版本号
            if (paramDistributePathList != null)
            {
                if (paramDistributePathList.InsertList != null)
                {
                    foreach (var loopInsertDetail in paramDistributePathList.InsertList)
                    {
                        //新增时版本号为1
                        loopInsertDetail.DP_VersionNo = 1;
                    }
                }

                foreach (var loopUpdateDetail in paramDistributePathList.UpdateList)
                {
                    //更新时版本号加1
                    loopUpdateDetail.DP_VersionNo = loopUpdateDetail.DP_VersionNo + 1;
                }
            }

            return(true);
        }
Ejemplo n.º 16
0
 /// <summary>
 /// 服务端检查
 /// </summary>
 /// <param name="paramHead"></param>
 /// <param name="paramDetailModel"></param>
 /// <returns></returns>
 private bool ServerCheck(ReceiptBillManagerUIModel paramHead, SkyCarBindingList <ReceiptBillManagerDetailUIModel, MDLFM_ReceiptBillDetail> paramDetailModel)
 {
     return(true);
 }
Ejemplo n.º 17
0
        /// <summary>
        /// 保存
        /// </summary>
        /// <param name="paramHead">UIModel</param>
        /// <returns></returns>
        public bool SaveDetailDS(WarehouseManagerUIModel paramHead, SkyCarBindingList <WarehouseBinManagerUIModel, MDLPIS_WarehouseBin> paramWarehouseBinList)
        {
            //服务端检查
            if (!ServerCheck(paramHead))
            {
                return(false);
            }

            #region 准备数据

            #region 仓库
            //将UIModel转为TBModel
            var argsWarehouse = paramHead.ToTBModelForSaveAndDelete <MDLPIS_Warehouse>();
            //判断主键是否被赋值
            if (string.IsNullOrEmpty(paramHead.WH_ID))
            {
                argsWarehouse.WH_ID          = Guid.NewGuid().ToString();
                argsWarehouse.WH_CreatedBy   = LoginInfoDAX.UserName;
                argsWarehouse.WH_CreatedTime = BLLCom.GetCurStdDatetime();
            }
            argsWarehouse.WH_UpdatedBy   = LoginInfoDAX.UserName;
            argsWarehouse.WH_UpdatedTime = BLLCom.GetCurStdDatetime();

            #endregion

            #region 仓位

            //添加的仓位
            if (paramWarehouseBinList != null && paramWarehouseBinList.InsertList != null &&
                paramWarehouseBinList.InsertList.Count > 0)
            {
                foreach (var loopDetailItem in paramWarehouseBinList.InsertList)
                {
                    loopDetailItem.WHB_WH_ID       = argsWarehouse.WH_ID ?? argsWarehouse.WHERE_WH_ID;
                    loopDetailItem.WHB_CreatedBy   = LoginInfoDAX.UserName;
                    loopDetailItem.WHB_CreatedTime = BLLCom.GetCurStdDatetime();
                    loopDetailItem.WHB_UpdatedBy   = LoginInfoDAX.UserName;
                    loopDetailItem.WHB_UpdatedTime = BLLCom.GetCurStdDatetime();
                }
            }
            #endregion

            #endregion

            #region 带事务的保存

            try
            {
                DBManager.BeginTransaction(DBCONFIG.Coeus);

                #region 保存仓库

                var saveWarehouseResult = _bll.Save(argsWarehouse, argsWarehouse.WH_ID);
                if (!saveWarehouseResult)
                {
                    DBManager.RollBackTransaction(DBCONFIG.Coeus);
                    ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.PIS_Warehouse });
                    return(false);
                }
                #endregion

                #region 保存仓位

                var saveWarehouseBinResult = _bll.UnitySave(paramWarehouseBinList);
                if (!saveWarehouseBinResult)
                {
                    DBManager.RollBackTransaction(DBCONFIG.Coeus);
                    ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.PIS_WarehouseBin });
                    return(false);
                }
                #endregion

                DBManager.CommitTransaction(DBCONFIG.Coeus);
            }
            catch (Exception ex)
            {
                DBManager.RollBackTransaction(DBCONFIG.Coeus);
                //保存[仓库]信息发生异常
                ResultMsg = MsgHelp.GetMsg(MsgCode.E_0018, new object[] { SystemActionEnum.Name.SAVE, ex.Message });
                LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, MethodBase.GetCurrentMethod().ToString(),
                                            ex.Message, "", null);
                return(false);
            }
            //将最新数据回写给DetailDS
            CopyModel(argsWarehouse, paramHead);
            #endregion

            #region 刷新缓存

            //刷新仓库缓存
            var resultWarehouseList = CacheDAX.Get(CacheDAX.ConfigDataKey.Warehouse) as List <MDLPIS_Warehouse>;
            List <MDLPIS_Warehouse> newWarehouseList = new List <MDLPIS_Warehouse>();
            if (resultWarehouseList != null)
            {
                newWarehouseList = resultWarehouseList;
                if (resultWarehouseList.All(x => x.WH_ID != argsWarehouse.WH_ID && x.WH_Name != argsWarehouse.WH_Name))
                {
                    newWarehouseList.Add(argsWarehouse);
                    CacheDAX.Add(CacheDAX.ConfigDataKey.Warehouse, newWarehouseList, true);
                }
            }
            else
            {
                newWarehouseList.Add(argsWarehouse);
                CacheDAX.Add(CacheDAX.ConfigDataKey.Warehouse, newWarehouseList, true);
            }

            //刷新仓位缓存
            if (paramWarehouseBinList == null)
            {
                return(true);
            }
            var resultWarehouseBinList = CacheDAX.Get(CacheDAX.ConfigDataKey.WarehouseBin) as List <MDLPIS_WarehouseBin>;
            List <MDLPIS_WarehouseBin> newWarehouseBinList = new List <MDLPIS_WarehouseBin>();
            if (resultWarehouseBinList != null)
            {
                newWarehouseBinList = resultWarehouseBinList;
                if (paramWarehouseBinList.InsertList != null && paramWarehouseBinList.InsertList.Count > 0)
                {
                    foreach (var loopInsertBin in paramWarehouseBinList.InsertList)
                    {
                        if (resultWarehouseBinList.All(x => x.WHB_ID != loopInsertBin.WHB_ID && x.WHB_Name != loopInsertBin.WHB_Name))
                        {
                            var tempWarehouseBin = new MDLPIS_WarehouseBin();
                            _bll.CopyModel(loopInsertBin, tempWarehouseBin);
                            newWarehouseBinList.Add(tempWarehouseBin);
                            CacheDAX.Add(CacheDAX.ConfigDataKey.WarehouseBin, newWarehouseBinList, true);
                        }
                    }
                }
                if (paramWarehouseBinList.DeleteList != null && paramWarehouseBinList.DeleteList.Count > 0)
                {
                    //待移除的仓位
                    List <MDLPIS_WarehouseBin> removeWarehouseBinList = new List <MDLPIS_WarehouseBin>();
                    foreach (var loopWarehouseBin in newWarehouseBinList)
                    {
                        var deleteWarehouseBin = paramWarehouseBinList.DeleteList.FirstOrDefault(x => x.WHB_ID == loopWarehouseBin.WHB_ID);
                        if (deleteWarehouseBin != null)
                        {
                            removeWarehouseBinList.Add(loopWarehouseBin);
                        }
                    }
                    foreach (var loopWarehouseBin in removeWarehouseBinList)
                    {
                        newWarehouseBinList.Remove(loopWarehouseBin);
                    }
                }
            }
            else
            {
                var tempWarehouseBinList = new List <MDLPIS_WarehouseBin>();
                _bll.CopyModelList(paramWarehouseBinList.InsertList, tempWarehouseBinList);
                newWarehouseBinList.AddRange(tempWarehouseBinList);
                CacheDAX.Add(CacheDAX.ConfigDataKey.WarehouseBin, newWarehouseBinList, true);
            }
            #endregion

            return(true);
        }
Ejemplo n.º 18
0
        /// <summary>
        /// 保存
        /// </summary>
        /// <param name="paramHead"></param>
        /// <param name="paramDetailList"></param>
        /// <param name="paramPictureNameAndPath"></param>
        /// <returns></returns>
        public bool SaveDetailDS(ReceiptBillManagerUIModel paramHead, SkyCarBindingList <ReceiptBillManagerDetailUIModel, MDLFM_ReceiptBillDetail> paramDetailList,
                                 Dictionary <string, string> paramPictureNameAndPath)
        {
            var funcName = "SaveDetailDS";

            LogHelper.WriteBussLogStart(BussID, LoginInfoDAX.UserName, funcName, "", "", null);
            //服务端检查
            if (!ServerCheck(paramHead, paramDetailList))
            {
                return(false);
            }

            #region 准备数据

            #region 单头
            //将UIModel转为TBModel
            var argsHead = paramHead.ToTBModelForSaveAndDelete <MDLFM_ReceiptBill>();
            //判断主键是否被赋值
            if (string.IsNullOrEmpty(paramHead.RB_ID))
            {
                argsHead.RB_ID = Guid.NewGuid().ToString();
                //单号
                argsHead.RB_No          = BLLCom.GetCoeusDocumentNo(DocumentTypeEnums.Code.RB);
                argsHead.RB_CreatedBy   = LoginInfoDAX.UserName;
                argsHead.RB_CreatedTime = BLLCom.GetCurStdDatetime();
            }
            argsHead.RB_UpdatedBy   = LoginInfoDAX.UserName;
            argsHead.RB_UpdatedTime = BLLCom.GetCurStdDatetime();

            #endregion

            #region 明细

            //添加的明细
            if (paramDetailList != null && paramDetailList.InsertList != null &&
                paramDetailList.InsertList.Count > 0)
            {
                foreach (var loopDetailItem in paramDetailList)
                {
                    loopDetailItem.RBD_RB_ID       = argsHead.RB_ID ?? argsHead.WHERE_RB_ID;
                    loopDetailItem.RBD_RB_No       = argsHead.RB_No;
                    loopDetailItem.RBD_CreatedBy   = LoginInfoDAX.UserName;
                    loopDetailItem.RBD_CreatedTime = BLLCom.GetCurStdDatetime();
                    loopDetailItem.RBD_UpdatedBy   = LoginInfoDAX.UserName;
                    loopDetailItem.RBD_UpdatedTime = BLLCom.GetCurStdDatetime();
                }
            }
            #endregion

            #region   图片

            foreach (var loopPicture in paramPictureNameAndPath)
            {
                if (string.IsNullOrEmpty(loopPicture.Key) ||
                    string.IsNullOrEmpty(loopPicture.Value))
                {
                    continue;
                }

                #region 将图片保存到本地以及上传文件服务器

                string fileNetUrl        = string.Empty;
                bool   savePictureResult = BLLCom.SaveFileByFileName(loopPicture.Value, loopPicture.Key, ref fileNetUrl);
                if (!savePictureResult)
                {
                    ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + MsgParam.IMAGE });
                    LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                    return(false);
                }
                #endregion

                //截取上传图片返回值中的文件名称
                int fileNameStartIndex = fileNetUrl.IndexOf("FileName=", StringComparison.Ordinal) + 1;
                int fileNameEndIndex   = fileNameStartIndex + "FileName=".Length;
                int length             = fileNetUrl.Length;
                //文件名称
                string tempFileName = fileNetUrl.Substring(fileNameEndIndex - 1, length - (fileNameEndIndex - 1));

                //给各个图片赋值
                if (loopPicture.Key == argsHead.RB_CertificatePic)
                {
                    argsHead.RB_CertificatePic = tempFileName;
                }
            }
            #endregion

            #endregion

            #region 带事务的保存

            try
            {
                DBManager.BeginTransaction(DBCONFIG.Coeus);

                #region 保存单头

                //执行保存
                if (!_bll.Save(argsHead, argsHead.RB_ID))
                {
                    DBManager.RollBackTransaction(DBCONFIG.Coeus);

                    foreach (var loopPicture in paramPictureNameAndPath)
                    {
                        if (string.IsNullOrEmpty(loopPicture.Key) ||
                            string.IsNullOrEmpty(loopPicture.Value))
                        {
                            continue;
                        }
                        //保存失败,删除本地以及文件服务器上的图片
                        var outMsg = string.Empty;
                        BLLCom.DeleteFileByFileName(loopPicture.Key, ref outMsg);
                    }

                    ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.FM_ReceiptBill });
                    LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                    return(false);
                }

                #endregion

                #region 保存明细

                //执行保存
                if (!_bll.UnitySave(paramDetailList))
                {
                    DBManager.RollBackTransaction(DBCONFIG.Coeus);

                    foreach (var loopPicture in paramPictureNameAndPath)
                    {
                        if (string.IsNullOrEmpty(loopPicture.Key) ||
                            string.IsNullOrEmpty(loopPicture.Value))
                        {
                            continue;
                        }
                        //保存失败,删除本地以及文件服务器上的图片
                        var outMsg = string.Empty;
                        BLLCom.DeleteFileByFileName(loopPicture.Key, ref outMsg);
                    }

                    ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.FM_ReceiptBillDetail });
                    LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                    return(false);
                }

                #endregion

                DBManager.CommitTransaction(DBCONFIG.Coeus);
            }
            catch (Exception ex)
            {
                DBManager.RollBackTransaction(DBCONFIG.Coeus);

                foreach (var loopPicture in paramPictureNameAndPath)
                {
                    if (string.IsNullOrEmpty(loopPicture.Key) ||
                        string.IsNullOrEmpty(loopPicture.Value))
                    {
                        continue;
                    }
                    //保存失败,删除本地以及文件服务器上的图片
                    var outMsg = string.Empty;
                    BLLCom.DeleteFileByFileName(loopPicture.Key, ref outMsg);
                }

                ResultMsg = MsgHelp.GetMsg(MsgCode.E_0018, new object[] { SystemActionEnum.Name.SAVE, ex.Message });
                LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ex.Message, "", null);
                return(false);
            }

            #endregion

            //将最新数据回写给DetailDS
            CopyModel(argsHead, paramHead);

            //更新明细版本号
            if (paramDetailList != null)
            {
                if (paramDetailList.InsertList != null)
                {
                    foreach (var loopInsertDetail in paramDetailList.InsertList)
                    {
                        //新增时版本号为1
                        loopInsertDetail.RBD_VersionNo = 1;
                    }
                }

                foreach (var loopUpdateDetail in paramDetailList.UpdateList)
                {
                    //更新时版本号加1
                    loopUpdateDetail.RBD_VersionNo = loopUpdateDetail.RBD_VersionNo + 1;
                }
            }

            foreach (var loopPicture in paramPictureNameAndPath)
            {
                if (string.IsNullOrEmpty(loopPicture.Key) ||
                    string.IsNullOrEmpty(loopPicture.Value))
                {
                    continue;
                }
                //保存成功,删除临时保存的图片
                if (File.Exists(loopPicture.Value))
                {
                    File.Delete(loopPicture.Value);
                }
            }
            return(true);
        }
Ejemplo n.º 19
0
        /// <summary>
        /// 审核
        /// </summary>
        /// <param name="paramHead">UIModel</param>
        /// <param name="paramDetailList">明细UIModel</param>
        /// <returns></returns>
        public bool ApproveDetailDS(ReceiptBillManagerUIModel paramHead, SkyCarBindingList <ReceiptBillManagerDetailUIModel, MDLFM_ReceiptBillDetail> paramDetailList)
        {
            var funcName = "ApproveDetailDS";

            LogHelper.WriteBussLogStart(BussID, LoginInfoDAX.UserName, funcName, "", "", null);

            if (paramHead == null ||
                string.IsNullOrEmpty(paramHead.RB_ID) ||
                string.IsNullOrEmpty(paramHead.RB_No))
            {
                //没有获取到收款单,审核失败
                ResultMsg = MsgHelp.GetMsg(MsgCode.W_0024, new object[] { SystemTableEnums.Name.FM_ReceiptBill, SystemActionEnum.Name.APPROVE });
                return(false);
            }

            var receiptBillManagerDetailList =
                paramDetailList.Where(x => x.RBD_SourceTypeName == ReceiptBillDetailSourceTypeEnum.Name.SGSK);

            if (receiptBillManagerDetailList.Count() != paramDetailList.Count() || receiptBillManagerDetailList.Count() == 0)
            {
                //收款单不为手工收款,不能审核
                ResultMsg = MsgHelp.GetMsg(MsgCode.E_0017, new object[] { SystemTableEnums.Name.FM_ReceiptBill + MsgParam.NO + MsgParam.BE + PayBillDetailSourceTypeEnum.Name.SGFK, SystemActionEnum.Name.APPROVE });
                return(false);
            }

            #region 定义变量

            //待更新的[收款单]
            MDLFM_ReceiptBill updateReceiptBill = paramHead.ToTBModelForSaveAndDelete <MDLFM_ReceiptBill>();
            //待更新[收款单明细]
            List <MDLFM_ReceiptBillDetail> updateReceiptBillDetailList = new List <MDLFM_ReceiptBillDetail>();
            //待新增对应的[应收单]
            List <MDLFM_AccountReceivableBill> addAccountReceivableBillList = new List <MDLFM_AccountReceivableBill>();
            //待新增对应的[应收单明细]
            List <MDLFM_AccountReceivableBillDetail> addAccountReceivableBillDetailList = new List <MDLFM_AccountReceivableBillDetail>();
            //待更新的[钱包]
            MDLEWM_Wallet updateWallet = new MDLEWM_Wallet();
            //待新增的[钱包异动]
            MDLEWM_WalletTrans addWalletTrans = new MDLEWM_WalletTrans();
            #endregion

            #region 准备数据

            if (paramDetailList[0].RBD_SourceTypeName == ReceiptBillDetailSourceTypeEnum.Name.SGSK)
            {
                #region 新增[应收单]和[应收单明细]

                foreach (var loopDetail in paramDetailList)
                {
                    #region 新增[应收单]

                    MDLFM_AccountReceivableBill accountReceivableBill = new MDLFM_AccountReceivableBill
                    {
                        ARB_ID                      = System.Guid.NewGuid().ToString(),
                        ARB_No                      = BLLCom.GetCoeusDocumentNo(DocumentTypeEnums.Code.ARB),
                        ARB_BillDirectCode          = BillDirectionEnum.Code.PLUS,
                        ARB_BillDirectName          = BillDirectionEnum.Name.PLUS,
                        ARB_SourceTypeCode          = AccountReceivableBillSourceTypeEnum.Code.SGCJ,
                        ARB_SourceTypeName          = AccountReceivableBillSourceTypeEnum.Name.SGCJ,
                        ARB_Org_ID                  = LoginInfoDAX.OrgID,
                        ARB_Org_Name                = LoginInfoDAX.OrgShortName,
                        ARB_PayObjectTypeCode       = paramHead.RB_PayObjectTypeCode,
                        ARB_PayObjectTypeName       = paramHead.RB_PayObjectTypeName,
                        ARB_PayObjectID             = paramHead.RB_PayObjectID,
                        ARB_PayObjectName           = paramHead.RB_PayObjectName,
                        ARB_AccountReceivableAmount = loopDetail.RBD_ReceiveAmount,
                        ARB_ReceivedAmount          = loopDetail.RBD_ReceiveAmount,
                        ARB_UnReceiveAmount         = 0,
                        ARB_BusinessStatusName      = AccountReceivableBillStatusEnum.Name.YWC,
                        ARB_BusinessStatusCode      = AccountReceivableBillStatusEnum.Code.YWC,
                        ARB_ApprovalStatusName      = ApprovalStatusEnum.Name.YSH,
                        ARB_ApprovalStatusCode      = ApprovalStatusEnum.Code.YSH,
                        ARB_IsValid                 = true,
                        ARB_CreatedBy               = LoginInfoDAX.UserName,
                        ARB_CreatedTime             = BLLCom.GetCurStdDatetime(),
                        ARB_UpdatedBy               = LoginInfoDAX.UserName,
                        ARB_UpdatedTime             = BLLCom.GetCurStdDatetime(),
                    };
                    addAccountReceivableBillList.Add(accountReceivableBill);
                    //回写付款单的来源的单号
                    loopDetail.RBD_SrcBillNo = accountReceivableBill.ARB_No;
                    #endregion

                    #region 新增[应收单明细]

                    MDLFM_AccountReceivableBillDetail accountPayableBillDetail = new MDLFM_AccountReceivableBillDetail
                    {
                        ARBD_ID                      = Guid.NewGuid().ToString(),
                        ARBD_ARB_ID                  = accountReceivableBill.ARB_ID,
                        ARBD_IsMinusDetail           = false,
                        ARBD_Org_ID                  = accountReceivableBill.ARB_Org_ID,
                        ARBD_Org_Name                = accountReceivableBill.ARB_Org_Name,
                        ARBD_AccountReceivableAmount = loopDetail.RBD_ReceiveAmount,
                        ARBD_ReceivedAmount          = loopDetail.RBD_ReceiveAmount,
                        ARBD_UnReceiveAmount         = 0,
                        ARBD_BusinessStatusName      = accountReceivableBill.ARB_BusinessStatusName,
                        ARBD_BusinessStatusCode      = accountReceivableBill.ARB_BusinessStatusCode,
                        ARBD_ApprovalStatusName      = accountReceivableBill.ARB_ApprovalStatusName,
                        ARBD_ApprovalStatusCode      = accountReceivableBill.ARB_ApprovalStatusCode,
                        ARBD_IsValid                 = true,
                        ARBD_CreatedBy               = LoginInfoDAX.UserName,
                        ARBD_CreatedTime             = BLLCom.GetCurStdDatetime(),
                        ARBD_UpdatedBy               = LoginInfoDAX.UserName,
                        ARBD_UpdatedTime             = BLLCom.GetCurStdDatetime(),
                    };
                    addAccountReceivableBillDetailList.Add(accountPayableBillDetail);
                    #endregion
                }
                #endregion
            }

            #region 收款单

            //更新收款单[业务状态]为{已完成},[审核状态]为{已审核}
            updateReceiptBill.RB_ApprovalStatusName = ApprovalStatusEnum.Name.YSH;
            updateReceiptBill.RB_ApprovalStatusCode = ApprovalStatusEnum.Code.YSH;
            updateReceiptBill.RB_BusinessStatusName = ReceiptBillStatusEnum.Name.YWC;
            updateReceiptBill.RB_BusinessStatusCode = ReceiptBillStatusEnum.Code.YWC;
            updateReceiptBill.RB_UpdatedBy          = LoginInfoDAX.UserName;
            updateReceiptBill.RB_UpdatedTime        = BLLCom.GetCurStdDatetime();

            #endregion

            #region 更新[付款单明细]数据

            _bll.CopyModelList <ReceiptBillManagerDetailUIModel, MDLFM_ReceiptBillDetail>(paramDetailList, updateReceiptBillDetailList);
            foreach (var loopPayBillDetaill in updateReceiptBillDetailList)
            {
                loopPayBillDetaill.WHERE_RBD_ID        = loopPayBillDetaill.RBD_ID;
                loopPayBillDetaill.WHERE_RBD_VersionNo = loopPayBillDetaill.RBD_VersionNo;
                loopPayBillDetaill.RBD_VersionNo++;
            }

            #endregion

            #region 更新[钱包余额]和新增[钱包异动]

            if (paramHead.RB_ReceiveTypeName == TradeTypeEnum.Name.WALLET)
            {
                #region 更新[钱包]

                updateWallet.WHERE_Wal_ID         = paramHead.Wal_ID;
                updateWallet.WHERE_Wal_VersionNo  = paramHead.Wal_VersionNo;
                updateWallet.Wal_AvailableBalance = paramHead.Wal_AvailableBalance - paramHead.RB_ReceiveTotalAmount;
                paramHead.Wal_AvailableBalance    = updateWallet.Wal_AvailableBalance ?? 0;

                #endregion

                #region 新增[钱包异动]

                addWalletTrans.WalT_ID          = System.Guid.NewGuid().ToString();
                addWalletTrans.WalT_Org_ID      = LoginInfoDAX.OrgID;
                addWalletTrans.WalT_Org_Name    = LoginInfoDAX.OrgShortName;
                addWalletTrans.WalT_Wal_ID      = paramHead.Wal_ID;
                addWalletTrans.WalT_Wal_No      = paramHead.Wal_No;
                addWalletTrans.WalT_Time        = BLLCom.GetCurStdDatetime();
                addWalletTrans.WalT_TypeCode    = WalTransTypeEnum.Code.XF;
                addWalletTrans.WalT_TypeName    = WalTransTypeEnum.Name.XF;
                addWalletTrans.WalT_Amount      = -paramHead.RB_ReceiveTotalAmount;
                addWalletTrans.WalT_BillNo      = paramHead.RB_No;
                addWalletTrans.WalT_IsValid     = true;
                addWalletTrans.WalT_CreatedBy   = LoginInfoDAX.UserName;
                addWalletTrans.WalT_CreatedTime = BLLCom.GetCurStdDatetime();
                addWalletTrans.WalT_UpdatedBy   = LoginInfoDAX.UserName;
                addWalletTrans.WalT_UpdatedTime = BLLCom.GetCurStdDatetime();

                #endregion
            }

            #endregion

            #endregion

            #region 带事务的保存
            try
            {
                DBManager.BeginTransaction(DBCONFIG.Coeus);

                #region 更新[收款单]

                bool updateReceiptBillResult = _bll.Save(updateReceiptBill);
                if (!updateReceiptBillResult)
                {
                    DBManager.RollBackTransaction(DBCONFIG.Coeus);
                    ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.FM_ReceiptBill });
                    LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                    return(false);
                }
                #endregion

                #region 更新[收款单明细]

                foreach (var loopReceiptBillDetail in updateReceiptBillDetailList)
                {
                    bool updateDetailResult = _bll.Update(loopReceiptBillDetail);
                    if (!updateDetailResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.APPROVE + SystemTableEnums.Name.FM_ReceiptBillDetail });
                        return(false);
                    }
                }

                #endregion

                #region 新增[应收单]

                bool addAccountReceivableBillResult = _bll.InsertByList <MDLFM_AccountReceivableBill, MDLFM_AccountReceivableBill>(addAccountReceivableBillList);
                if (!addAccountReceivableBillResult)
                {
                    DBManager.RollBackTransaction(DBCONFIG.Coeus);
                    ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.ADD + SystemTableEnums.Name.FM_AccountReceivableBill });
                    return(false);
                }

                #endregion

                #region 新增[应付单明细]

                bool addAccountReceivableBillDetailResult = _bll.InsertByList <MDLFM_AccountReceivableBillDetail, MDLFM_AccountReceivableBillDetail>(addAccountReceivableBillDetailList);
                if (!addAccountReceivableBillDetailResult)
                {
                    DBManager.RollBackTransaction(DBCONFIG.Coeus);
                    ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.ADD + SystemTableEnums.Name.FM_AccountReceivableBillDetail });
                    return(false);
                }

                #endregion

                #region  更新[钱包余额]和新增[钱包异动]

                if (paramHead.RB_ReceiveTypeName == TradeTypeEnum.Name.WALLET)
                {
                    #region 更新[钱包余额]

                    bool updateWalletResult = _bll.Save(updateWallet);
                    if (!updateWalletResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.UPDATE + SystemTableEnums.Name.EWM_Wallet });
                        LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                        return(false);
                    }

                    #endregion

                    #region 新增[钱包异动]

                    bool addWalletTransResult = _bll.Insert <MDLEWM_WalletTrans>(addWalletTrans);
                    if (!addWalletTransResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.ADD + SystemTableEnums.Name.EWM_WalletTrans });
                        return(false);
                    }

                    #endregion
                }

                #endregion

                DBManager.CommitTransaction(DBCONFIG.Coeus);
            }
            catch (Exception ex)
            {
                DBManager.RollBackTransaction(DBCONFIG.Coeus);
                ResultMsg = MsgHelp.GetMsg(MsgCode.E_0018, new object[] { SystemActionEnum.Name.APPROVE, ex.Message });
                LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, MethodBase.GetCurrentMethod().ToString(),
                                            ex.Message, "", null);
                return(false);
            }

            #endregion

            //将最新数据回写给DetailDS
            CopyModel(updateReceiptBill, paramHead);
            return(true);
        }
Ejemplo n.º 20
0
 /// <summary>
 /// 服务端检查
 /// </summary>
 /// <param name="paramModel"></param>
 /// <param name="paramDetailList"></param>
 /// <returns></returns>
 private bool ServerCheck(PayBillManagerUIModel paramModel, SkyCarBindingList <PayBillManagerDetailUIModel, MDLFM_PayBillDetail> paramDetailList)
 {
     return(true);
 }
        /// <summary>
        /// 审核
        /// </summary>
        /// <param name="paramHead">UIModel</param>
        /// <param name="paramDetailList">出库单明细列表</param>
        /// <returns></returns>
        public bool ApproveDetailDS(PurchaseReturnManagerUIModel paramHead, SkyCarBindingList <StockOutBillManagerDetailUIModel, MDLPIS_StockOutBillDetail> paramDetailList)
        {
            var funcName = "ApproveDetailDS";

            LogHelper.WriteBussLogStart(BussID, LoginInfoDAX.UserName, funcName, "", "", null);

            #region 验证

            if (paramHead == null ||
                string.IsNullOrEmpty(paramHead.SOB_ID) ||
                string.IsNullOrEmpty(paramHead.SOB_No))
            {
                //没有获取到出库单,审核失败
                ResultMsg = MsgHelp.GetMsg(MsgCode.W_0024, new object[] { SystemTableEnums.Name.PIS_StockOutBill, SystemActionEnum.Name.APPROVE });
                LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                return(false);
            }

            #endregion

            #region 准备数据

            #region 变量定义

            //待更新的出库单
            MDLPIS_StockOutBill updateStockOutBill = paramHead.ToTBModelForSaveAndDelete <MDLPIS_StockOutBill>();

            //待新增的[应付单]
            MDLFM_AccountPayableBill newAccountPayableBill = new MDLFM_AccountPayableBill();
            //待新增的[应付单明细]列表
            List <MDLFM_AccountPayableBillDetail> newAccountPayableBillDetailList = new List <MDLFM_AccountPayableBillDetail>();

            //待更新的[库存]列表
            List <MDLPIS_Inventory> updateInventoryList = new List <MDLPIS_Inventory>();
            //待新增的[库存异动日志]列表
            List <MDLPIS_InventoryTransLog> newInventoryTransLogList = new List <MDLPIS_InventoryTransLog>();

            #endregion

            //计算出库金额
            decimal totalStockOutAmount = CalculateStockOutAmount(updateStockOutBill, paramDetailList);

            #region 创建[应付单]的场合

            if (updateStockOutBill.SOB_SourceTypeName == StockOutBillSourceTypeEnum.Name.THCK)
            {
                //应付单
                newAccountPayableBill.APB_ID                    = Guid.NewGuid().ToString();
                newAccountPayableBill.APB_No                    = BLLCom.GetCoeusDocumentNo(DocumentTypeEnums.Code.APB);
                newAccountPayableBill.APB_BillDirectCode        = BillDirectionEnum.Code.MINUS;
                newAccountPayableBill.APB_BillDirectName        = BillDirectionEnum.Name.MINUS;
                newAccountPayableBill.APB_SourceTypeCode        = AccountPayableBillSourceTypeEnum.Code.CKYF;
                newAccountPayableBill.APB_SourceTypeName        = AccountPayableBillSourceTypeEnum.Name.CKYF;
                newAccountPayableBill.APB_SourceBillNo          = updateStockOutBill.SOB_No;
                newAccountPayableBill.APB_Org_ID                = LoginInfoDAX.OrgID;
                newAccountPayableBill.APB_Org_Name              = LoginInfoDAX.OrgShortName;
                newAccountPayableBill.APB_ReceiveObjectTypeCode = AmountTransObjectTypeEnum.Code.AUTOPARTSSUPPLIER;
                newAccountPayableBill.APB_ReceiveObjectTypeName = AmountTransObjectTypeEnum.Name.AUTOPARTSSUPPLIER;
                newAccountPayableBill.APB_ReceiveObjectID       = paramHead.SOB_SUPP_ID;
                newAccountPayableBill.APB_ReceiveObjectName     = paramHead.SOB_SUPP_Name;
                newAccountPayableBill.APB_AccountPayableAmount  = -totalStockOutAmount;
                newAccountPayableBill.APB_PaidAmount            = 0;
                newAccountPayableBill.APB_UnpaidAmount          = -totalStockOutAmount;
                newAccountPayableBill.APB_BusinessStatusCode    = AccountPayableBillStatusEnum.Code.ZXZ;
                newAccountPayableBill.APB_BusinessStatusName    = AccountPayableBillStatusEnum.Name.ZXZ;
                newAccountPayableBill.APB_ApprovalStatusCode    = ApprovalStatusEnum.Code.YSH;
                newAccountPayableBill.APB_ApprovalStatusName    = ApprovalStatusEnum.Name.YSH;
                newAccountPayableBill.APB_IsValid               = true;
                newAccountPayableBill.APB_CreatedBy             = LoginInfoDAX.UserName;
                newAccountPayableBill.APB_CreatedTime           = BLLCom.GetCurStdDatetime();
                newAccountPayableBill.APB_UpdatedBy             = LoginInfoDAX.UserName;
                newAccountPayableBill.APB_UpdatedTime           = BLLCom.GetCurStdDatetime();
            }
            #endregion

            #region 更新[出库单]

            //将出库单审核状态更新为[已审核],单据状态更新为[已完成]
            updateStockOutBill.SOB_VersionNo++;
            updateStockOutBill.SOB_ApprovalStatusCode = ApprovalStatusEnum.Code.YSH;
            updateStockOutBill.SOB_ApprovalStatusName = ApprovalStatusEnum.Name.YSH;
            updateStockOutBill.SOB_UpdatedBy          = LoginInfoDAX.UserName;
            updateStockOutBill.SOB_UpdatedTime        = BLLCom.GetCurStdDatetime();
            //updateStockOutBill.SOB_StatusCode = StockOutBillStatusEnum.Code.YWC;
            //updateStockOutBill.SOB_StatusName = StockOutBillStatusEnum.Name.YWC;
            #endregion

            #region 遍历[出库单明细]列表,创建[应付单明细]和[应收单明细],创建或更新[库存],创建[库存异动日志]

            foreach (var loopStockOutBillDetail in paramDetailList)
            {
                if (string.IsNullOrEmpty(loopStockOutBillDetail.SOBD_Barcode) ||
                    string.IsNullOrEmpty(loopStockOutBillDetail.SOBD_BatchNo))
                {
                    continue;
                }

                if (updateStockOutBill.SOB_SourceTypeName == StockOutBillSourceTypeEnum.Name.THCK)
                {
                    //出库明细
                    loopStockOutBillDetail.WHERE_SOBD_ID        = loopStockOutBillDetail.SOBD_ID;
                    loopStockOutBillDetail.WHERE_SOBD_VersionNo = loopStockOutBillDetail.SOBD_VersionNo;

                    #region 应付单明细

                    MDLFM_AccountPayableBillDetail newAccountPayableBillDetail = new MDLFM_AccountPayableBillDetail
                    {
                        APBD_ID                   = Guid.NewGuid().ToString(),
                        APBD_APB_ID               = newAccountPayableBill.APB_ID,
                        APBD_IsMinusDetail        = false,
                        APBD_SourceBillNo         = updateStockOutBill.SOB_No,
                        APBD_SourceBillDetailID   = loopStockOutBillDetail.SOBD_ID,
                        APBD_Org_ID               = newAccountPayableBill.APB_Org_ID,
                        APBD_Org_Name             = newAccountPayableBill.APB_Org_Name,
                        APBD_AccountPayableAmount = -loopStockOutBillDetail.SOBD_Amount,
                        APBD_PaidAmount           = 0,
                        APBD_UnpaidAmount         = -loopStockOutBillDetail.SOBD_Amount,
                        APBD_BusinessStatusCode   = newAccountPayableBill.APB_BusinessStatusCode,
                        APBD_BusinessStatusName   = newAccountPayableBill.APB_BusinessStatusName,
                        APBD_ApprovalStatusCode   = newAccountPayableBill.APB_ApprovalStatusCode,
                        APBD_ApprovalStatusName   = newAccountPayableBill.APB_ApprovalStatusName,
                        APBD_IsValid              = true,
                        APBD_CreatedBy            = LoginInfoDAX.UserName,
                        APBD_CreatedTime          = BLLCom.GetCurStdDatetime(),
                        APBD_UpdatedBy            = LoginInfoDAX.UserName,
                        APBD_UpdatedTime          = BLLCom.GetCurStdDatetime()
                    };
                    newAccountPayableBillDetailList.Add(newAccountPayableBillDetail);

                    #endregion

                    #region 库存和库存异动日志
                    //在[出库单明细]列表中第一次出现的配件[库存]信息
                    MDLPIS_Inventory inventoryExists = null;

                    foreach (var loopInventory in updateInventoryList)
                    {
                        if (loopInventory.INV_Barcode == loopStockOutBillDetail.SOBD_Barcode &&
                            loopInventory.INV_BatchNo == loopStockOutBillDetail.SOBD_BatchNo)
                        {
                            inventoryExists = loopInventory;
                            break;
                        }
                    }
                    if (inventoryExists != null)
                    {
                        if (inventoryExists.INV_Qty < loopStockOutBillDetail.SOBD_Qty)
                        {
                            //配件:loopStockOutBillDetail.SOBD_Name(条形码:loopStockOutBillDetail.SOBD_Barcode)的库存不足,审核失败
                            ResultMsg = MsgHelp.GetMsg(MsgCode.E_0030, new object[]
                            {
                                loopStockOutBillDetail.SOBD_Name, loopStockOutBillDetail.SOBD_Barcode,
                                MsgParam.SHORTAGE, SystemActionEnum.Name.APPROVE
                            });
                            LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                            return(false);
                        }
                        //[出库单明细]列表中已遍历过该配件,累减数量
                        inventoryExists.INV_Qty -= loopStockOutBillDetail.SOBD_Qty;

                        //生成[库存异动日志]
                        newInventoryTransLogList.Add(GenerateInventoryTransLogOfApprove(updateStockOutBill, loopStockOutBillDetail, inventoryExists));
                    }
                    else
                    {
                        //[出库单明细]列表中第一次出现该配件
                        //查询该配件是否在[库存]中存在
                        MDLPIS_Inventory resultInventory = new MDLPIS_Inventory();
                        _bll.QueryForObject <MDLPIS_Inventory, MDLPIS_Inventory>(new MDLPIS_Inventory
                        {
                            WHERE_INV_Org_ID  = updateStockOutBill.SOB_Org_ID,
                            WHERE_INV_Barcode = loopStockOutBillDetail.SOBD_Barcode,
                            WHERE_INV_BatchNo = loopStockOutBillDetail.SOBD_BatchNo,
                            WHERE_INV_WH_ID   = loopStockOutBillDetail.SOBD_WH_ID,
                            WHERE_INV_IsValid = true
                        }, resultInventory);

                        //[库存]中不存在该配件
                        if (string.IsNullOrEmpty(resultInventory.INV_ID))
                        {
                            //配件:loopStockOutBillDetail.SOBD_Name(条形码:loopStockOutBillDetail.SOBD_Barcode)的库存不存在,审核失败
                            ResultMsg = MsgHelp.GetMsg(MsgCode.E_0030, new object[]
                            {
                                loopStockOutBillDetail.SOBD_Name, loopStockOutBillDetail.SOBD_Barcode,
                                MsgParam.NOTEXIST, SystemActionEnum.Name.APPROVE
                            });
                            LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                            return(false);
                        }

                        if (resultInventory.INV_Qty < loopStockOutBillDetail.SOBD_Qty)
                        {
                            //配件:loopStockOutBillDetail.SOBD_Name(条形码:loopStockOutBillDetail.SOBD_Barcode)的库存不足,审核失败
                            ResultMsg = MsgHelp.GetMsg(MsgCode.E_0030, new object[] { loopStockOutBillDetail.SOBD_Name, loopStockOutBillDetail.SOBD_Barcode, MsgParam.SHORTAGE, SystemActionEnum.Name.APPROVE });
                            LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                            return(false);
                        }
                        //[库存]中存在该配件
                        //更新[库存]中该配件的数量
                        resultInventory.INV_Qty            -= loopStockOutBillDetail.SOBD_Qty;
                        resultInventory.INV_UpdatedBy       = LoginInfoDAX.UserName;
                        resultInventory.INV_UpdatedTime     = BLLCom.GetCurStdDatetime();
                        resultInventory.WHERE_INV_ID        = resultInventory.INV_ID;
                        resultInventory.WHERE_INV_VersionNo = resultInventory.INV_VersionNo;
                        updateInventoryList.Add(resultInventory);

                        //生成[库存异动日志]
                        newInventoryTransLogList.Add(GenerateInventoryTransLogOfApprove(updateStockOutBill, loopStockOutBillDetail, resultInventory));
                    }
                    #endregion
                }
            }
            #endregion

            #endregion

            #region 带事务的新增和保存

            try
            {
                DBManager.BeginTransaction(DBCONFIG.Coeus);

                #region 新增[应付单]

                if (!string.IsNullOrEmpty(newAccountPayableBill.APB_ID))
                {
                    bool insertAccountPayableBillResult = _bll.Insert(newAccountPayableBill);
                    if (!insertAccountPayableBillResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.NEW + SystemTableEnums.Name.FM_AccountPayableBill });
                        LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                        return(false);
                    }
                }
                #endregion

                #region 新增[应付单明细]

                if (newAccountPayableBillDetailList.Count > 0)
                {
                    bool insertAccountPayableBillDetailResult = _bll.InsertByList <MDLFM_AccountPayableBillDetail, MDLFM_AccountPayableBillDetail>(newAccountPayableBillDetailList);
                    if (!insertAccountPayableBillDetailResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.NEW + SystemTableEnums.Name.FM_AccountPayableBillDetail });
                        LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                        return(false);
                    }
                }
                #endregion

                #region 保存[出库单]

                bool updateStockOutBillResult = _bll.Save(updateStockOutBill);
                if (!updateStockOutBillResult)
                {
                    DBManager.RollBackTransaction(DBCONFIG.Coeus);
                    ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.UPDATE + SystemTableEnums.Name.PIS_StockOutBill });
                    LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                    return(false);
                }

                #endregion

                #region 保存[出库单明细]

                var updateDetailList = new List <MDLPIS_StockOutBillDetail>();
                //将当前DetailGridDS转换为指定类型的TBModelList
                paramDetailList.ToTBModelListForUpdateAndDelete <MDLPIS_StockOutBillDetail>(updateDetailList);
                foreach (var loopStockoutBillDetail in updateDetailList)
                {
                    bool saveStockOutBillDetailResult = _bll.Save(loopStockoutBillDetail);
                    if (!saveStockOutBillDetailResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.PIS_StockOutBillDetail });
                        LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                        return(false);
                    }
                }
                #endregion

                #region 更新[库存]

                foreach (var loopInventory in updateInventoryList)
                {
                    bool saveInventoryResult = _bll.Save(loopInventory);
                    if (!saveInventoryResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.PIS_Inventory });
                        LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                        return(false);
                    }
                }
                #endregion

                #region 新增[库存异动日志]

                if (newInventoryTransLogList.Count > 0)
                {
                    bool insertInventoryTransLogResult = _bll.InsertByList <MDLPIS_InventoryTransLog, MDLPIS_InventoryTransLog>(newInventoryTransLogList);
                    if (!insertInventoryTransLogResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.NEW + SystemTableEnums.Name.PIS_InventoryTransLog });
                        LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                        return(false);
                    }
                }
                #endregion

                DBManager.CommitTransaction(DBCONFIG.Coeus);
            }
            catch (Exception ex)
            {
                DBManager.RollBackTransaction(DBCONFIG.Coeus);
                ResultMsg = MsgHelp.GetMsg(MsgCode.E_0018, new object[] { SystemActionEnum.Name.APPROVE, ex.Message });
                LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                return(false);
            }
            #endregion

            //将最新数据回写给DetailDS
            CopyModel(updateStockOutBill, paramHead);

            //更新明细版本号
            foreach (var loopInsertDetail in paramDetailList.InsertList)
            {
                //新增时版本号为1
                loopInsertDetail.SOBD_VersionNo = 1;
            }
            foreach (var loopUpdateDetail in paramDetailList.UpdateList)
            {
                //更新时版本号加1
                loopUpdateDetail.SOBD_VersionNo = loopUpdateDetail.SOBD_VersionNo + 1;
            }

            return(true);
        }
Ejemplo n.º 22
0
        /// <summary>
        /// 保存
        /// </summary>
        /// <param name="paramHead">UIModel</param>
        /// <param name="paramDetailList">销售订单明细列表</param>
        /// <returns></returns>
        public bool SaveDetailDs(SalesReturnOrderManagerUIModel paramHead, SkyCarBindingList <SalesOrderDetailUIModel, MDLSD_SalesOrderDetail> paramDetailList)
        {
            var funcName = "SaveDetailDS";

            LogHelper.WriteBussLogStart(BussID, LoginInfoDAX.UserName, funcName, "", "", null);
            //服务端检查
            if (!ServerCheck(paramHead))
            {
                LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                return(false);
            }

            #region 准备数据

            //待更新的[配件档案]列表
            List <MDLBS_AutoPartsArchive> updateAutoPartsArchiveList = new List <MDLBS_AutoPartsArchive>();

            #region 单头
            //将UIModel转为TBModel
            var argsHead = paramHead.ToTBModelForSaveAndDelete <MDLSD_SalesOrder>();
            //判断主键是否被赋值
            if (string.IsNullOrEmpty(paramHead.SO_ID))
            {
                argsHead.SO_ID = Guid.NewGuid().ToString();
                //单号
                argsHead.SO_No          = BLLCom.GetCoeusDocumentNo(DocumentTypeEnums.Code.SO);
                argsHead.SO_CreatedBy   = LoginInfoDAX.UserName;
                argsHead.SO_CreatedTime = BLLCom.GetCurStdDatetime();
            }
            argsHead.SO_UpdatedBy   = LoginInfoDAX.UserName;
            argsHead.SO_UpdatedTime = BLLCom.GetCurStdDatetime();

            #endregion

            #region 明细

            //添加的明细
            if (paramDetailList != null && paramDetailList.InsertList != null &&
                paramDetailList.InsertList.Count > 0)
            {
                foreach (var loopSalesOrderDetail in paramDetailList.InsertList)
                {
                    //赋值销售订单ID
                    loopSalesOrderDetail.SOD_SO_ID = argsHead.SO_ID ?? argsHead.WHERE_SO_ID;

                    //如果[计价基准可改]为true
                    if (loopSalesOrderDetail.SOD_SalePriceRateIsChangeable ?? false)
                    {
                        //回写配件档案[条码和名称唯一]
                        //待更新的配件档案
                        MDLBS_AutoPartsArchive updateAutoPartsArchive = new MDLBS_AutoPartsArchive();
                        _bll.QueryForObject <MDLBS_AutoPartsArchive, MDLBS_AutoPartsArchive>(new MDLBS_AutoPartsArchive
                        {
                            WHERE_APA_IsValid = true,
                            WHERE_APA_Barcode = loopSalesOrderDetail.SOD_Barcode,
                            WHERE_APA_Name    = loopSalesOrderDetail.SOD_Name
                        }, updateAutoPartsArchive);
                        if (!string.IsNullOrEmpty(updateAutoPartsArchive.APA_ID))
                        {
                            updateAutoPartsArchive.WHERE_APA_ID        = updateAutoPartsArchive.APA_ID;
                            updateAutoPartsArchive.WHERE_APA_VersionNo = updateAutoPartsArchive.APA_VersionNo;
                            updateAutoPartsArchive.APA_VersionNo++;
                            updateAutoPartsArchive.APA_SalePriceRate = loopSalesOrderDetail.SOD_SalePriceRate;
                            updateAutoPartsArchive.APA_UpdatedBy     = LoginInfoDAX.UserName;
                            updateAutoPartsArchive.APA_UpdatedTime   = BLLCom.GetCurStdDatetime();

                            updateAutoPartsArchiveList.Add(updateAutoPartsArchive);
                        }
                    }
                }
            }

            #endregion

            #endregion

            #region 带事务的保存

            try
            {
                DBManager.BeginTransaction(DBCONFIG.Coeus);

                #region 保存单头

                //执行保存
                if (!_bll.Save(argsHead, argsHead.SO_ID))
                {
                    DBManager.RollBackTransaction(DBCONFIG.Coeus);
                    ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.SD_SalesOrder });
                    LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                    return(false);
                }

                #endregion

                #region 保存明细

                if (paramDetailList != null)
                {
                    //执行保存
                    bool saveDetailResult = _bll.UnitySave(paramDetailList);
                    if (!saveDetailResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.SD_SalesOrderDetail });
                        LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                        return(false);
                    }
                }

                #endregion

                #region 更新[配件档案]列表

                foreach (var loopAutoPartsArchive in updateAutoPartsArchiveList)
                {
                    bool updateAutoPartsArchiveResult = _bll.Update(loopAutoPartsArchive);
                    if (!updateAutoPartsArchiveResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.UPDATE + SystemTableEnums.Name.BS_AutoPartsArchive });
                        LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                        return(false);
                    }
                }

                #endregion

                DBManager.CommitTransaction(DBCONFIG.Coeus);
            }
            catch (Exception ex)
            {
                DBManager.RollBackTransaction(DBCONFIG.Coeus);
                ResultMsg = MsgHelp.GetMsg(MsgCode.E_0018, new object[] { SystemActionEnum.Name.SAVE, ex.Message });
                LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ex.Message, "", null);
                return(false);
            }

            #endregion

            //将最新数据回写给DetailDS
            _bll.CopyModel(argsHead, paramHead);

            //更新明细版本号
            if (paramDetailList != null)
            {
                if (paramDetailList.InsertList != null)
                {
                    foreach (var loopInsertDetail in paramDetailList.InsertList)
                    {
                        //新增时版本号为1
                        loopInsertDetail.SOD_VersionNo = 1;
                    }
                }

                foreach (var loopUpdateDetail in paramDetailList.UpdateList)
                {
                    //更新时版本号加1
                    loopUpdateDetail.SOD_VersionNo = loopUpdateDetail.SOD_VersionNo + 1;
                }
            }

            return(true);
        }
Ejemplo n.º 23
0
        /// <summary>
        /// 初始化【详情】Tab内控件
        /// </summary>
        private void InitializeDetailTabControls()
        {
            #region 工具生成
            //姓名
            txtUser_Name.Clear();
            //工号
            txtUser_EMPNO.Clear();
            //身份证号码
            txtUser_IDNo.Clear();
            //性别
            cbUser_Sex.Items.Clear();
            //地址
            txtUser_Address.Clear();
            //电话号码
            txtUser_PhoneNo.Clear();
            //是否允许微信认证
            ckUser_IsAllowWechatCertificate.Checked    = true;
            ckUser_IsAllowWechatCertificate.CheckState = CheckState.Checked;
            //是否已微信认证
            ckUser_IsWechatCertified.Checked    = false;
            ckUser_IsWechatCertified.CheckState = CheckState.Unchecked;
            //打印标题前缀
            txtUser_PrintTitlePrefix.Clear();
            //有效
            ckUser_IsValid.Checked    = true;
            ckUser_IsValid.CheckState = CheckState.Checked;
            //创建人
            txtUser_CreatedBy.Text = LoginInfoDAX.UserName;
            //创建时间
            dtUser_CreatedTime.Value = BLLCom.GetCurStdDatetime();
            //修改人
            txtUser_UpdatedBy.Text = LoginInfoDAX.UserName;
            //修改时间
            dtUser_UpdatedTime.Value = BLLCom.GetCurStdDatetime();
            //用户ID
            txtUser_ID.Clear();
            //密码
            txtUser_Password.Clear();
            //版本号
            txtUser_VersionNo.Clear();
            //给 姓名 设置焦点
            lblUser_Name.Focus();
            #endregion

            #region 性别下拉框数据填充

            List <ComComboBoxDataSource> resultSexList = EnumDAX.GetEnumForComboBoxWithValueText(EnumKey.Sex);
            if (resultSexList != null)
            {
                cbUser_Sex.DisplayMember = SysConst.EN_TEXT;
                cbUser_Sex.ValueMember   = SysConst.Value;
                cbUser_Sex.DataSource    = resultSexList;
                cbUser_Sex.DataBind();
            }

            #endregion

            _userOrgList = new SkyCarBindingList <UserOrgUIModel, MDLSM_UserOrg>();
            _userOrgList.StartMonitChanges();

            //初始化树形控件
            InitializeTreeView();
        }
Ejemplo n.º 24
0
        /// <summary>
        /// 保存
        /// </summary>
        /// <param name="paramUser"></param>
        /// <param name="paramUserOrgList"></param>
        /// <returns></returns>
        public bool SaveDetailDS(UserManagerUIModel paramUser, SkyCarBindingList <UserOrgUIModel, MDLSM_UserOrg> paramUserOrgList)
        {
            #region 带事务的保存

            //将UIModel转为TBModel
            var argsUser = paramUser.ToTBModelForSaveAndDelete <MDLSM_User>();
            try
            {
                DBManager.BeginTransaction(DBCONFIG.Coeus);

                #region 保存用户信息
                if (string.IsNullOrEmpty(paramUser.User_ID))
                {
                    argsUser.User_ID          = Guid.NewGuid().ToString();
                    argsUser.User_CreatedBy   = LoginInfoDAX.UserName;
                    argsUser.User_CreatedTime = BLLCom.GetCurStdDatetime();
                }
                argsUser.User_IsValid     = true;
                argsUser.User_UpdatedBy   = LoginInfoDAX.UserName;
                argsUser.User_UpdatedTime = BLLCom.GetCurStdDatetime();
                bool saveUserResult = _bll.Save(argsUser);
                if (!saveUserResult)
                {
                    DBManager.RollBackTransaction(DBCONFIG.Coeus);
                    ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.SM_User });
                    return(false);
                }
                #endregion

                //保存用户组织信息
                if (paramUserOrgList != null && paramUserOrgList.InsertList != null && paramUserOrgList.InsertList.Count > 0)
                {
                    foreach (var loopUserOrg in paramUserOrgList.InsertList)
                    {
                        loopUserOrg.UO_User_ID     = argsUser.User_ID ?? argsUser.WHERE_User_ID;
                        loopUserOrg.UO_CreatedBy   = LoginInfoDAX.UserName;
                        loopUserOrg.UO_CreatedTime = BLLCom.GetCurStdDatetime();
                        loopUserOrg.UO_UpdatedBy   = LoginInfoDAX.UserName;
                        loopUserOrg.UO_UpdatedTime = BLLCom.GetCurStdDatetime();
                    }
                    bool saveUserOrgResult = _bll.InsertByList <UserOrgUIModel, MDLSM_UserOrg>(paramUserOrgList.InsertList);
                    if (!saveUserOrgResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.SM_UserOrg });
                        return(false);
                    }
                }
                if (paramUserOrgList != null && paramUserOrgList.DeleteList != null && paramUserOrgList.DeleteList.Count > 0)
                {
                    foreach (var loopUserOrg in paramUserOrgList.DeleteList)
                    {
                        loopUserOrg.WHERE_UO_ID = loopUserOrg.UO_ID;
                    }
                    bool deleteUserOrgResult = _bll.DeleteByList <UserOrgUIModel, MDLSM_UserOrg>(paramUserOrgList.DeleteList);
                    if (!deleteUserOrgResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.SM_UserOrg });
                        return(false);
                    }
                }

                DBManager.CommitTransaction(DBCONFIG.Coeus);
            }
            catch (Exception ex)
            {
                DBManager.RollBackTransaction(DBCONFIG.Coeus);
                ResultMsg = MsgHelp.GetMsg(MsgCode.E_0018, new object[] { SystemActionEnum.Name.SAVE, ex.Message });
                LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, MethodBase.GetCurrentMethod().ToString(),
                                            ex.Message, "", null);
                return(false);
            }

            //将最新数据回写给DetailDS
            _bll.CopyModel(argsUser, paramUser);

            //刷新用户缓存
            var resultUserList            = CacheDAX.Get(CacheDAX.ConfigDataKey.SystemUser) as List <MDLSM_User>;
            List <MDLSM_User> newUserList = new List <MDLSM_User>();
            if (resultUserList != null)
            {
                newUserList = resultUserList;
                if (resultUserList.All(x => x.User_ID != argsUser.User_ID && x.User_Name != argsUser.User_Name))
                {
                    newUserList.Insert(0, argsUser);
                    CacheDAX.Add(CacheDAX.ConfigDataKey.SystemUser, newUserList, true);
                }
            }
            else
            {
                newUserList.Add(argsUser);
                CacheDAX.Add(CacheDAX.ConfigDataKey.SystemUser, newUserList, true);
            }
            return(true);

            #endregion
        }
 /// <summary>
 /// 服务端检查
 /// </summary>
 /// <param name="paramModel">UIModel</param>
 /// <returns></returns>
 private bool ServerCheck(PurchaseForecastOrderQueryUIModel paramModel, SkyCarBindingList <PurchaseForecastOrderQueryDetailUIModel, MDLPIS_PurchaseForecastOrderDetail> paramDetailList)
 {
     return(true);
 }
Ejemplo n.º 26
0
        /// <summary>
        /// 保存本地失败的场合,还原平台上保存的信息
        /// </summary>
        /// <param name="paramHead">待保存的车辆信息</param>
        /// <param name="paramVehicleOemPartsList">待保存的原厂件信息列表</param>
        /// <param name="paramVehicleBrandPartsList">待保存的品牌件信息列表</param>
        private void RestoreSavePlatformInfo(MDLBS_VehicleInfo paramHead, SkyCarBindingList <VehicleOemPartsInfoUIModel, MDLBS_VehicleOemPartsInfo> paramVehicleOemPartsList, SkyCarBindingList <VehicleThirdPartsInfoUIModel, MDLBS_VehicleThirdPartsInfo> paramVehicleBrandPartsList)
        {
            #region 1. 待还原平台数据的[车辆信息]

            var restoreSyncVehicleInfo = new VehicleModelMatchAutoPartsManagerUIModel();
            _bll.QueryForObject <MDLBS_VehicleInfo, VehicleModelMatchAutoPartsManagerUIModel>(new MDLBS_VehicleInfo
            {
                WHERE_VC_VIN     = paramHead.VC_VIN,
                WHERE_VC_IsValid = true,
            }, restoreSyncVehicleInfo);
            if (string.IsNullOrEmpty(restoreSyncVehicleInfo.VC_ID))
            {
                _bll.CopyModel(paramHead, restoreSyncVehicleInfo);
                restoreSyncVehicleInfo.VC_OperateType = "Delete";
            }
            else
            {
                restoreSyncVehicleInfo.VC_OperateType = "Save";
            }
            List <VehicleModelMatchAutoPartsManagerUIModel> restoreVehicleInfoList = new List <VehicleModelMatchAutoPartsManagerUIModel>();
            restoreVehicleInfoList.Add(restoreSyncVehicleInfo);

            #endregion

            #region 2. 待还原平台数据的[车辆原厂件信息]列表

            List <VehicleOemPartsInfoUIModel> restoreVehicleOemPartsInfoList = new List <VehicleOemPartsInfoUIModel>();
            foreach (var loopInsert in paramVehicleOemPartsList.InsertList)
            {
                loopInsert.VOPI_OperateType = "Delete";
            }
            restoreVehicleOemPartsInfoList.AddRange(paramVehicleOemPartsList.InsertList);
            foreach (var loopDelete in paramVehicleOemPartsList.DeleteList)
            {
                loopDelete.VOPI_OperateType = "Save";
            }
            restoreVehicleOemPartsInfoList.AddRange(paramVehicleOemPartsList.DeleteList);
            //查询待更新数据的原保存内容
            List <MDLBS_VehicleOemPartsInfo> updateVehicleOemPartsInfoList = new List <MDLBS_VehicleOemPartsInfo>();
            string updateOemPartsIdStr = string.Empty;
            _bll.QueryForList(SQLID.BS_VehicleModelMatchAutoPartsManager_SQL05, new MDLBS_VehicleOemPartsInfo
            {
                WHERE_VOPI_ID = updateOemPartsIdStr,
            }, updateVehicleOemPartsInfoList);
            foreach (var loopUpdate in paramVehicleOemPartsList.UpdateList)
            {
                var curUpdateVehicleOemParts =
                    updateVehicleOemPartsInfoList.FirstOrDefault(x => x.VOPI_ID == loopUpdate.VOPI_ID);
                if (curUpdateVehicleOemParts != null && !string.IsNullOrEmpty(curUpdateVehicleOemParts.VOPI_ID))
                {
                    _bll.CopyModel(curUpdateVehicleOemParts, loopUpdate);
                }
                loopUpdate.VOPI_OperateType = "Save";
            }
            restoreVehicleOemPartsInfoList.AddRange(paramVehicleOemPartsList.UpdateList);

            #endregion

            #region 3. 待还原平台数据的[车辆品牌件信息]列表
            List <VehicleThirdPartsInfoUIModel> restoreVehicleBrandPartsInfoList = new List <VehicleThirdPartsInfoUIModel>();
            foreach (var loopInsert in paramVehicleBrandPartsList.InsertList)
            {
                loopInsert.VTPI_OperateType = "Delete";
            }
            restoreVehicleBrandPartsInfoList.AddRange(paramVehicleBrandPartsList.InsertList);
            foreach (var loopDelete in paramVehicleBrandPartsList.DeleteList)
            {
                loopDelete.VTPI_OperateType = "Save";
            }
            restoreVehicleBrandPartsInfoList.AddRange(paramVehicleBrandPartsList.DeleteList);
            //查询待更新数据的原保存内容
            List <MDLBS_VehicleThirdPartsInfo> updateVehicleBrandPartsInfoList = new List <MDLBS_VehicleThirdPartsInfo>();
            string updateBrandPartsIdStr = string.Empty;
            _bll.QueryForList(SQLID.BS_VehicleModelMatchAutoPartsManager_SQL06, new MDLBS_VehicleThirdPartsInfo
            {
                WHERE_VTPI_ID = updateBrandPartsIdStr,
            }, updateVehicleBrandPartsInfoList);
            foreach (var loopUpdate in paramVehicleBrandPartsList.UpdateList)
            {
                var curUpdateVehicleBrandParts =
                    updateVehicleBrandPartsInfoList.FirstOrDefault(x => x.VTPI_ID == loopUpdate.VTPI_ID);
                if (curUpdateVehicleBrandParts != null && !string.IsNullOrEmpty(curUpdateVehicleBrandParts.VTPI_ID))
                {
                    _bll.CopyModel(curUpdateVehicleBrandParts, loopUpdate);
                }
                loopUpdate.VTPI_OperateType = "Save";
            }
            restoreVehicleBrandPartsInfoList.AddRange(paramVehicleBrandPartsList.UpdateList);

            #endregion

            //同步到平台
            SynchronizeVehicleRelateInfo(restoreVehicleInfoList, restoreVehicleOemPartsInfoList, restoreVehicleBrandPartsInfoList);
        }
Ejemplo n.º 27
0
        /// <summary>
        /// 保存
        /// </summary>
        /// <param name="paramModel">UIModel</param>
        /// <param name="paramArOrgSupOrgAuthorityList">汽配汽修组织授权列表</param>
        /// <returns></returns>
        public bool SaveDetailDS(AutoFactoryCustomerManagerUIModel paramModel, SkyCarBindingList <AROrgSupOrgAuthorityUIModel, MDLSM_AROrgSupOrgAuthority> paramArOrgSupOrgAuthorityList)
        {
            //服务端检查
            if (!ServerCheck(paramModel))
            {
                return(false);
            }

            #region 保存数据

            //将UIModel转为TBModel
            var argsAutoFactoryCustomer = CopyModel <MDLPIS_AutoFactoryCustomer>(paramModel);

            #region  步到平台

            if (argsAutoFactoryCustomer.AFC_IsPlatform == true)
            {
                //同步到平台的数据
                List <ARCustomerAutoPartsPriceTypeUIModel> syncArCustomerAutoPartsPriceTypeList = new List <ARCustomerAutoPartsPriceTypeUIModel>();
                ARCustomerAutoPartsPriceTypeUIModel        curArCustomerAutoPartsPriceType      = new ARCustomerAutoPartsPriceTypeUIModel
                {
                    SAAPPT_ARMerchantCode     = argsAutoFactoryCustomer.AFC_Code,
                    SAAPPT_AROrgCode          = argsAutoFactoryCustomer.AFC_AROrg_Code,
                    SAAPPT_AutoPartsPriceType = argsAutoFactoryCustomer.AFC_AutoPartsPriceType,
                    SAAPPT_OperateType        = "Save"
                };
                syncArCustomerAutoPartsPriceTypeList.Add(curArCustomerAutoPartsPriceType);
                if (!SynchronizeARCustomerAutoPartsPriceType(syncArCustomerAutoPartsPriceTypeList))
                {
                    //同步到平台失败
                    ResultMsg = MsgHelp.GetMsg(MsgCode.E_0018, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.PIS_AutoFactoryCustomer, "同步平台失败" });
                    return(false);
                }
            }

            #endregion

            try
            {
                DBManager.BeginTransaction(DBCONFIG.Coeus);

                //判断主键是否被赋值
                if (string.IsNullOrEmpty(argsAutoFactoryCustomer.AFC_ID))
                {
                    #region 新增
                    //生成新ID
                    argsAutoFactoryCustomer.AFC_ID          = Guid.NewGuid().ToString();
                    argsAutoFactoryCustomer.AFC_CreatedBy   = LoginInfoDAX.UserName;
                    argsAutoFactoryCustomer.AFC_CreatedTime = BLLCom.GetCurStdDatetime();
                    argsAutoFactoryCustomer.AFC_UpdatedBy   = LoginInfoDAX.UserName;
                    argsAutoFactoryCustomer.AFC_UpdatedTime = BLLCom.GetCurStdDatetime();
                    //主键未被赋值,则执行新增
                    bool insertCustomerResult = _bll.Insert(argsAutoFactoryCustomer);
                    if (!insertCustomerResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.NEW + SystemTableEnums.Name.PIS_AutoFactoryCustomer });
                        return(false);
                    }
                    #endregion
                }
                else
                {
                    #region 更新
                    //主键被赋值,则需要更新,更新需要设定更新条件
                    argsAutoFactoryCustomer.WHERE_AFC_ID        = argsAutoFactoryCustomer.AFC_ID;
                    argsAutoFactoryCustomer.WHERE_AFC_VersionNo = argsAutoFactoryCustomer.AFC_VersionNo;
                    argsAutoFactoryCustomer.AFC_VersionNo++;
                    argsAutoFactoryCustomer.AFC_UpdatedBy   = LoginInfoDAX.UserName;
                    argsAutoFactoryCustomer.AFC_UpdatedTime = BLLCom.GetCurStdDatetime();
                    bool updateCustomerResult = _bll.Update(argsAutoFactoryCustomer);
                    if (!updateCustomerResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { MsgParam.UPDATE + SystemTableEnums.Name.PIS_AutoFactoryCustomer });
                        return(false);
                    }
                    #endregion
                }

                #region 保存[汽配汽修组织授权]

                if (argsAutoFactoryCustomer.AFC_IsPlatform == true)
                {
                    bool saveArOrgSupOrgAuthorityResult = _bll.UnitySave(paramArOrgSupOrgAuthorityList);
                    if (!saveArOrgSupOrgAuthorityResult)
                    {
                        DBManager.RollBackTransaction(DBCONFIG.Coeus);
                        ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.SM_AROrgSupOrgAuthority });
                        return(false);
                    }
                }
                #endregion

                DBManager.CommitTransaction(DBCONFIG.Coeus);
            }
            catch (Exception ex)
            {
                DBManager.RollBackTransaction(DBCONFIG.Coeus);

                if (argsAutoFactoryCustomer.AFC_IsPlatform == true)
                {
                    #region 保存本地失败,还原同步到平台上已新增、已更新、已删除的汽修商客户配件价格类别信息

                    List <ARCustomerAutoPartsPriceTypeUIModel> restoreSyncAutoPartsPriceTypeList = new List <ARCustomerAutoPartsPriceTypeUIModel>();
                    //查询待更新数据原保存数据内容
                    List <ARCustomerAutoPartsPriceTypeUIModel> updateAutoPartsPriceTypeList = new List <ARCustomerAutoPartsPriceTypeUIModel>();
                    _bll.QueryForList(SQLID.PIS_AutoFactoryCustomerManager_SQL04, new MDLPIS_AutoFactoryCustomer
                    {
                        WHERE_AFC_ID = argsAutoFactoryCustomer.AFC_ID,
                    }, updateAutoPartsPriceTypeList);

                    restoreSyncAutoPartsPriceTypeList.AddRange(updateAutoPartsPriceTypeList);
                    SynchronizeARCustomerAutoPartsPriceType(restoreSyncAutoPartsPriceTypeList);
                    #endregion
                }

                ResultMsg = MsgHelp.GetMsg(MsgCode.E_0018, new object[] { SystemActionEnum.Name.SAVE, ex.Message });
                LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, MethodBase.GetCurrentMethod().ToString(),
                                            ex.Message, "", null);
                return(false);
            }

            //将最新数据回写给DetailDS
            CopyModel(argsAutoFactoryCustomer, paramModel);

            #endregion

            return(true);
        }
Ejemplo n.º 28
0
        /// <summary>
        /// 保存数据
        /// </summary>
        /// <param name="paramHead">待保存的车辆信息</param>
        /// <param name="paramVehicleOemPartsList">待保存的原厂件信息列表</param>
        /// <param name="paramVehicleBrandPartsList">待保存的品牌件信息列表</param>
        /// <param name="paramIsJoinVinInfo">是否合并当前车架号的信息</param>
        /// <returns></returns>
        public bool SaveDetailDS(VehicleModelMatchAutoPartsManagerUIModel paramHead, SkyCarBindingList <VehicleOemPartsInfoUIModel, MDLBS_VehicleOemPartsInfo> paramVehicleOemPartsList, SkyCarBindingList <VehicleThirdPartsInfoUIModel, MDLBS_VehicleThirdPartsInfo> paramVehicleBrandPartsList, bool paramIsJoinVinInfo)
        {
            var funcName = "SaveDetailDS";

            LogHelper.WriteBussLogStart(BussID, LoginInfoDAX.UserName, funcName, "", "", null);

            #region 准备数据

            //待同步的[车辆信息列表]
            List <VehicleModelMatchAutoPartsManagerUIModel> syncVehicleInfoList = new List <VehicleModelMatchAutoPartsManagerUIModel>();
            //待同步的[车辆原厂件信息列表]
            List <VehicleOemPartsInfoUIModel> syncVehicleOemPartsInfoList = new List <VehicleOemPartsInfoUIModel>();
            //待同步的[车辆品牌件信息列表]
            List <VehicleThirdPartsInfoUIModel> syncVehicleBrandPartsInfoList = new List <VehicleThirdPartsInfoUIModel>();

            #region 车辆信息

            //待保存的[车辆信息]
            MDLBS_VehicleInfo saveVehicleInfo = new MDLBS_VehicleInfo();

            if (paramIsJoinVinInfo)
            {
                #region 合并当前车架号对应信息的场合

                //查询当前车架号对应的车辆信息
                _bll.QueryForObject <MDLBS_VehicleInfo, MDLBS_VehicleInfo>(new MDLBS_VehicleInfo
                {
                    WHERE_VC_VIN     = paramHead.VC_VIN,
                    WHERE_VC_IsValid = true,
                }, saveVehicleInfo);
                saveVehicleInfo.VC_UpdatedBy       = LoginInfoDAX.UserName;
                saveVehicleInfo.VC_UpdatedTime     = BLLCom.GetCurStdDatetime();
                saveVehicleInfo.WHERE_VC_ID        = saveVehicleInfo.VC_ID;
                saveVehicleInfo.WHERE_VC_VersionNo = saveVehicleInfo.VC_VersionNo;

                //查询当前车架号对应的所有[原厂件信息]
                List <MDLBS_VehicleOemPartsInfo> resultVehicleOemPartsInfoList = new List <MDLBS_VehicleOemPartsInfo>();
                _bll.QueryForList <MDLBS_VehicleOemPartsInfo, MDLBS_VehicleOemPartsInfo>(new MDLBS_VehicleOemPartsInfo
                {
                    WHERE_VOPI_VC_VIN  = saveVehicleInfo.VC_VIN,
                    WHERE_VOPI_IsValid = true,
                }, resultVehicleOemPartsInfoList);

                //查询当前车架号对应的所有[品牌件信息]
                List <MDLBS_VehicleThirdPartsInfo> resultVehicleBrandPartsInfoList = new List <MDLBS_VehicleThirdPartsInfo>();
                _bll.QueryForList <MDLBS_VehicleThirdPartsInfo, MDLBS_VehicleThirdPartsInfo>(new MDLBS_VehicleThirdPartsInfo
                {
                    WHERE_VTPI_VC_VIN  = saveVehicleInfo.VC_VIN,
                    WHERE_VTPI_IsValid = true,
                }, resultVehicleBrandPartsInfoList);

                //移除重复的[原厂件信息]
                foreach (var loopOemParts in resultVehicleOemPartsInfoList)
                {
                    var curOemParts = paramVehicleOemPartsList.FirstOrDefault(
                        x => x.VOPI_VC_VIN == loopOemParts.VOPI_VC_VIN && x.VOPI_OEMNo == loopOemParts.VOPI_OEMNo);
                    if (curOemParts != null)
                    {
                        paramVehicleOemPartsList.Remove(curOemParts);
                    }
                }

                //移除重复的[品牌件信息]
                foreach (var loopBrandParts in resultVehicleBrandPartsInfoList)
                {
                    var curBrandParts = paramVehicleBrandPartsList.FirstOrDefault(x =>
                                                                                  x.VTPI_VC_VIN == loopBrandParts.VTPI_VC_VIN &&
                                                                                  x.VTPI_ThirdNo == loopBrandParts.VTPI_ThirdNo);
                    if (curBrandParts != null)
                    {
                        paramVehicleBrandPartsList.Remove(curBrandParts);
                    }
                }
                #endregion
            }
            else
            {
                #region  合并当前车架号对应信息的场合

                //将UIModel转为TBModel
                saveVehicleInfo = paramHead.ToTBModelForSaveAndDelete <MDLBS_VehicleInfo>();
                //判断主键是否被赋值
                if (string.IsNullOrEmpty(paramHead.VC_ID))
                {
                    saveVehicleInfo.VC_ID          = Guid.NewGuid().ToString();
                    saveVehicleInfo.VC_CreatedBy   = LoginInfoDAX.UserName;
                    saveVehicleInfo.VC_CreatedTime = BLLCom.GetCurStdDatetime();
                }
                saveVehicleInfo.VC_UpdatedBy   = LoginInfoDAX.UserName;
                saveVehicleInfo.VC_UpdatedTime = BLLCom.GetCurStdDatetime();
                #endregion
            }

            VehicleModelMatchAutoPartsManagerUIModel syncehicleInfo = new VehicleModelMatchAutoPartsManagerUIModel();
            _bll.CopyModel(saveVehicleInfo, syncehicleInfo);
            syncehicleInfo.VC_OperateType = "Save";
            syncVehicleInfoList.Add(syncehicleInfo);

            #endregion

            #region 原厂件信息

            //添加的明细
            foreach (var loopDetailItem in paramVehicleOemPartsList.InsertList)
            {
                loopDetailItem.VOPI_VC_VIN      = saveVehicleInfo.VC_VIN;
                loopDetailItem.VOPI_CreatedBy   = LoginInfoDAX.UserName;
                loopDetailItem.VOPI_CreatedTime = BLLCom.GetCurStdDatetime();
                loopDetailItem.VOPI_UpdatedBy   = LoginInfoDAX.UserName;
                loopDetailItem.VOPI_UpdatedTime = BLLCom.GetCurStdDatetime();

                loopDetailItem.VOPI_OperateType = "Save";
            }

            //更新的明细
            foreach (var loopDetailItem in paramVehicleOemPartsList.UpdateList)
            {
                loopDetailItem.VOPI_VC_VIN      = saveVehicleInfo.VC_VIN;
                loopDetailItem.VOPI_UpdatedBy   = LoginInfoDAX.UserName;
                loopDetailItem.VOPI_UpdatedTime = BLLCom.GetCurStdDatetime();

                loopDetailItem.VOPI_OperateType = "Save";
            }

            //删除的明细
            foreach (var loopDetailItem in paramVehicleOemPartsList.DeleteList)
            {
                loopDetailItem.VOPI_OperateType = "Delete";
            }
            syncVehicleOemPartsInfoList.AddRange(paramVehicleOemPartsList.InsertList);
            syncVehicleOemPartsInfoList.AddRange(paramVehicleOemPartsList.UpdateList);
            syncVehicleOemPartsInfoList.AddRange(paramVehicleOemPartsList.DeleteList);
            #endregion

            #region 品牌件信息

            //添加的明细
            foreach (var loopDetailItem in paramVehicleBrandPartsList.InsertList)
            {
                loopDetailItem.VTPI_VC_VIN      = saveVehicleInfo.VC_VIN;
                loopDetailItem.VTPI_CreatedBy   = LoginInfoDAX.UserName;
                loopDetailItem.VTPI_CreatedTime = BLLCom.GetCurStdDatetime();
                loopDetailItem.VTPI_UpdatedBy   = LoginInfoDAX.UserName;
                loopDetailItem.VTPI_UpdatedTime = BLLCom.GetCurStdDatetime();

                loopDetailItem.VTPI_OperateType = "Save";
            }

            //更新的明细
            foreach (var loopDetailItem in paramVehicleBrandPartsList.UpdateList)
            {
                loopDetailItem.VTPI_VC_VIN      = saveVehicleInfo.VC_VIN;
                loopDetailItem.VTPI_UpdatedBy   = LoginInfoDAX.UserName;
                loopDetailItem.VTPI_UpdatedTime = BLLCom.GetCurStdDatetime();

                loopDetailItem.VTPI_OperateType = "Save";
            }

            //删除的明细
            foreach (var loopDetailItem in paramVehicleBrandPartsList.DeleteList)
            {
                loopDetailItem.VTPI_OperateType = "Delete";
            }
            syncVehicleBrandPartsInfoList.AddRange(paramVehicleBrandPartsList.InsertList);
            syncVehicleBrandPartsInfoList.AddRange(paramVehicleBrandPartsList.UpdateList);
            syncVehicleBrandPartsInfoList.AddRange(paramVehicleBrandPartsList.DeleteList);
            #endregion

            #endregion

            #region  步到平台

            if (!SynchronizeVehicleRelateInfo(syncVehicleInfoList, syncVehicleOemPartsInfoList, syncVehicleBrandPartsInfoList))
            {
                //同步到平台失败
                ResultMsg = MsgHelp.GetMsg(MsgCode.E_0018, new object[] { SystemActionEnum.Name.SAVE, "同步平台失败" });
                return(false);
            }
            #endregion

            #region 带事务的保存

            try
            {
                DBManager.BeginTransaction(DBCONFIG.Coeus);

                #region 保存[车辆信息]

                var saveVehicleInfoResult = _bll.Save(saveVehicleInfo, saveVehicleInfo.VC_ID);
                if (!saveVehicleInfoResult)
                {
                    DBManager.RollBackTransaction(DBCONFIG.Coeus);

                    //保存本地失败的场合,还原平台上保存的信息
                    RestoreSavePlatformInfo(saveVehicleInfo, paramVehicleOemPartsList, paramVehicleBrandPartsList);

                    ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.BS_VehicleInfo });
                    LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                    return(false);
                }

                #endregion

                #region 保存[车辆原厂件信息]

                var saveOemPartsResult = _bll.UnitySave(paramVehicleOemPartsList);
                if (!saveOemPartsResult)
                {
                    DBManager.RollBackTransaction(DBCONFIG.Coeus);

                    //保存本地失败的场合,还原平台上保存的信息
                    RestoreSavePlatformInfo(saveVehicleInfo, paramVehicleOemPartsList, paramVehicleBrandPartsList);

                    ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.BS_VehicleOemPartsInfo });
                    LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                    return(false);
                }

                #endregion

                #region 保存[车辆品牌件信息]

                var saveBrandPartsResult = _bll.UnitySave(paramVehicleBrandPartsList);
                if (!saveBrandPartsResult)
                {
                    DBManager.RollBackTransaction(DBCONFIG.Coeus);

                    //保存本地失败的场合,还原平台上保存的信息
                    RestoreSavePlatformInfo(saveVehicleInfo, paramVehicleOemPartsList, paramVehicleBrandPartsList);

                    ResultMsg = MsgHelp.GetMsg(MsgCode.E_0010, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.BS_VehicleBrandPartsInfo });
                    LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ResultMsg, "", null);
                    return(false);
                }

                #endregion

                DBManager.CommitTransaction(DBCONFIG.Coeus);
            }
            catch (Exception ex)
            {
                DBManager.RollBackTransaction(DBCONFIG.Coeus);

                //保存本地失败的场合,还原平台上保存的信息
                RestoreSavePlatformInfo(saveVehicleInfo, paramVehicleOemPartsList, paramVehicleBrandPartsList);

                ResultMsg = MsgHelp.GetMsg(MsgCode.E_0018, new object[] { SystemActionEnum.Name.SAVE, ex.Message });
                LogHelper.WriteBussLogEndNG(BussID, LoginInfoDAX.UserName, funcName, ex.Message, "", null);
                return(false);
            }

            #endregion

            //将最新数据回写给DetailDS
            CopyModel(saveVehicleInfo, paramHead);

            #region 更新[车辆原厂件信息]版本号
            foreach (var loopInsertDetail in paramVehicleOemPartsList.InsertList)
            {
                //新增时版本号为1
                loopInsertDetail.VOPI_VersionNo = 1;
            }
            foreach (var loopUpdateDetail in paramVehicleOemPartsList.UpdateList)
            {
                //更新时版本号加1
                loopUpdateDetail.VOPI_VersionNo = loopUpdateDetail.VOPI_VersionNo + 1;
            }
            #endregion

            #region 更新[车辆品牌件信息]版本号
            foreach (var loopInsertDetail in paramVehicleBrandPartsList.InsertList)
            {
                //新增时版本号为1
                loopInsertDetail.VTPI_VersionNo = 1;
            }
            foreach (var loopUpdateDetail in paramVehicleBrandPartsList.UpdateList)
            {
                //更新时版本号加1
                loopUpdateDetail.VTPI_VersionNo = loopUpdateDetail.VTPI_VersionNo + 1;
            }
            #endregion

            return(true);
        }
        /// <summary>
        /// 保存
        /// </summary>
        /// <param name="paramModelList">UIModel</param>
        /// <returns></returns>
        public bool SaveDetailDS(SkyCarBindingList <AutoPartsShareInventoryManagerUIModel, MDLPIS_ShareInventory> paramModelList)
        {
            //服务端检查
            if (!ServerCheck(paramModelList))
            {
                return(false);
            }
            var funcName = "SaveShareInventory";

            LogHelper.WriteBussLogStart(Trans.IS, LoginInfoDAX.UserName, funcName, "", "", null);

            #region 准备数据

            //同步到平台的数据
            List <AutoPartsShareInventoryManagerUIModel> syncShareInventoryList = new List <AutoPartsShareInventoryManagerUIModel>();

            #region 新增的数据
            ShareInventoryDataSet.InventoryDataTable insertShareInventoryDataTable = new ShareInventoryDataSet.InventoryDataTable();
            foreach (var loopInsert in paramModelList.InsertList)
            {
                loopInsert.OperateType = "Save";
                ShareInventoryDataSet.InventoryRow newInventoryRow =
                    insertShareInventoryDataTable.NewInventoryRow();
                newInventoryRow.SI_Org_ID        = loopInsert.SI_Org_ID;
                newInventoryRow.SI_WH_ID         = loopInsert.SI_WH_ID;
                newInventoryRow.SI_WHB_ID        = loopInsert.SI_WHB_ID;
                newInventoryRow.SI_ThirdNo       = loopInsert.SI_ThirdNo;
                newInventoryRow.SI_OEMNo         = loopInsert.SI_OEMNo;
                newInventoryRow.SI_Barcode       = loopInsert.SI_Barcode;
                newInventoryRow.SI_BatchNo       = loopInsert.SI_BatchNo;
                newInventoryRow.SI_Name          = loopInsert.SI_Name;
                newInventoryRow.SI_Specification = loopInsert.SI_Specification;
                newInventoryRow.SI_SUPP_ID       = loopInsert.SI_SUPP_ID;
                if (loopInsert.SI_Qty != null)
                {
                    newInventoryRow.SI_Qty = (decimal)loopInsert.SI_Qty;
                }
                newInventoryRow.SI_PurchasePriceIsVisible = loopInsert.SI_PurchasePriceIsVisible == null ? false : loopInsert.SI_PurchasePriceIsVisible.Value;
                if (loopInsert.SI_PurchaseUnitPrice != null)
                {
                    newInventoryRow.SI_PurchaseUnitPrice = (decimal)loopInsert.SI_PurchaseUnitPrice;
                }
                if (loopInsert.SI_PriceOfGeneralCustomer != null)
                {
                    newInventoryRow.SI_PriceOfGeneralCustomer = (decimal)loopInsert.SI_PriceOfGeneralCustomer;
                }
                if (loopInsert.SI_PriceOfCommonAutoFactory != null)
                {
                    newInventoryRow.SI_PriceOfCommonAutoFactory = (decimal)loopInsert.SI_PriceOfCommonAutoFactory;
                }
                if (loopInsert.SI_PriceOfPlatformAutoFactory != null)
                {
                    newInventoryRow.SI_PriceOfPlatformAutoFactory = (decimal)loopInsert.SI_PriceOfPlatformAutoFactory;
                }
                newInventoryRow.SI_IsValid     = loopInsert.SI_IsValid == null ? false : loopInsert.SI_IsValid.Value;
                newInventoryRow.SI_CreatedBy   = loopInsert.SI_CreatedBy;
                newInventoryRow.SI_CreatedTime = BLLCom.GetCurStdDatetime();
                newInventoryRow.SI_UpdatedBy   = loopInsert.SI_UpdatedBy;
                newInventoryRow.SI_UpdatedTime = BLLCom.GetCurStdDatetime();
                newInventoryRow.SI_VersionNo   = "1";
                insertShareInventoryDataTable.AddInventoryRow(newInventoryRow);
            }
            syncShareInventoryList.AddRange(paramModelList.InsertList);
            #endregion

            #region 修改的数据
            ShareInventoryDataSet.InventoryDataTable updateShareInventoryDataTable = new ShareInventoryDataSet.InventoryDataTable();
            //待更新的共享库存的ID组合字符串(用于本地保存失败时,还原平台上的数据)
            string updateIdStr = string.Empty;
            foreach (var loopUpdate in paramModelList.UpdateList)
            {
                loopUpdate.OperateType = "Save";
                updateIdStr           += loopUpdate.SI_ID + SysConst.Semicolon_DBC;

                ShareInventoryDataSet.InventoryRow newInventoryRow =
                    updateShareInventoryDataTable.NewInventoryRow();
                newInventoryRow.SI_ID            = loopUpdate.SI_ID;
                newInventoryRow.SI_Org_ID        = loopUpdate.SI_Org_ID;
                newInventoryRow.SI_WH_ID         = loopUpdate.SI_WH_ID;
                newInventoryRow.SI_WHB_ID        = loopUpdate.SI_WHB_ID;
                newInventoryRow.SI_ThirdNo       = loopUpdate.SI_ThirdNo;
                newInventoryRow.SI_OEMNo         = loopUpdate.SI_OEMNo;
                newInventoryRow.SI_Barcode       = loopUpdate.SI_Barcode;
                newInventoryRow.SI_BatchNo       = loopUpdate.SI_BatchNo;
                newInventoryRow.SI_Name          = loopUpdate.SI_Name;
                newInventoryRow.SI_Specification = loopUpdate.SI_Specification;
                newInventoryRow.SI_SUPP_ID       = loopUpdate.SI_SUPP_ID;
                if (loopUpdate.SI_Qty != null)
                {
                    newInventoryRow.SI_Qty = (decimal)loopUpdate.SI_Qty;
                }
                newInventoryRow.SI_PurchasePriceIsVisible = loopUpdate.SI_PurchasePriceIsVisible == null ? false : loopUpdate.SI_PurchasePriceIsVisible.Value;
                if (loopUpdate.SI_PurchaseUnitPrice != null)
                {
                    newInventoryRow.SI_PurchaseUnitPrice = (decimal)loopUpdate.SI_PurchaseUnitPrice;
                }
                if (loopUpdate.SI_PriceOfGeneralCustomer != null)
                {
                    newInventoryRow.SI_PriceOfGeneralCustomer = (decimal)loopUpdate.SI_PriceOfGeneralCustomer;
                }
                if (loopUpdate.SI_PriceOfCommonAutoFactory != null)
                {
                    newInventoryRow.SI_PriceOfCommonAutoFactory = (decimal)loopUpdate.SI_PriceOfCommonAutoFactory;
                }
                if (loopUpdate.SI_PriceOfPlatformAutoFactory != null)
                {
                    newInventoryRow.SI_PriceOfPlatformAutoFactory = (decimal)loopUpdate.SI_PriceOfPlatformAutoFactory;
                }
                newInventoryRow.SI_IsValid     = loopUpdate.SI_IsValid == null ? false : loopUpdate.SI_IsValid.Value;
                newInventoryRow.SI_CreatedBy   = loopUpdate.SI_CreatedBy;
                newInventoryRow.SI_CreatedTime = loopUpdate.SI_CreatedTime == null
                    ? BLLCom.GetCurStdDatetime()
                    : loopUpdate.SI_CreatedTime.Value;

                newInventoryRow.SI_UpdatedBy   = loopUpdate.SI_UpdatedBy;
                newInventoryRow.SI_UpdatedTime = BLLCom.GetCurStdDatetime();
                newInventoryRow.SI_VersionNo   = Convert.ToString(loopUpdate.SI_VersionNo + 1);
                updateShareInventoryDataTable.AddInventoryRow(newInventoryRow);
            }
            syncShareInventoryList.AddRange(paramModelList.UpdateList);
            #endregion

            #region  除的数据
            ShareInventoryDataSet.InventoryDataTable deleteShareInventoryDataTable = new ShareInventoryDataSet.InventoryDataTable();
            foreach (var loopDelete in paramModelList.DeleteList)
            {
                loopDelete.OperateType = "Delete";
                ShareInventoryDataSet.InventoryRow newInventoryRow =
                    deleteShareInventoryDataTable.NewInventoryRow();
                newInventoryRow.SI_ID            = loopDelete.SI_ID;
                newInventoryRow.SI_Org_ID        = loopDelete.SI_Org_ID;
                newInventoryRow.SI_WH_ID         = loopDelete.SI_WH_ID;
                newInventoryRow.SI_WHB_ID        = loopDelete.SI_WHB_ID;
                newInventoryRow.SI_ThirdNo       = loopDelete.SI_ThirdNo;
                newInventoryRow.SI_OEMNo         = loopDelete.SI_OEMNo;
                newInventoryRow.SI_Barcode       = loopDelete.SI_Barcode;
                newInventoryRow.SI_BatchNo       = loopDelete.SI_BatchNo;
                newInventoryRow.SI_Name          = loopDelete.SI_Name;
                newInventoryRow.SI_Specification = loopDelete.SI_Specification;
                newInventoryRow.SI_SUPP_ID       = loopDelete.SI_SUPP_ID;
                if (loopDelete.SI_Qty != null)
                {
                    newInventoryRow.SI_Qty = (decimal)loopDelete.SI_Qty;
                }
                newInventoryRow.SI_PurchasePriceIsVisible = loopDelete.SI_PurchasePriceIsVisible == null ? false : loopDelete.SI_PurchasePriceIsVisible.Value;
                if (loopDelete.SI_PurchaseUnitPrice != null)
                {
                    newInventoryRow.SI_PurchaseUnitPrice = (decimal)loopDelete.SI_PurchaseUnitPrice;
                }
                if (loopDelete.SI_PriceOfGeneralCustomer != null)
                {
                    newInventoryRow.SI_PriceOfGeneralCustomer = (decimal)loopDelete.SI_PriceOfGeneralCustomer;
                }
                if (loopDelete.SI_PriceOfCommonAutoFactory != null)
                {
                    newInventoryRow.SI_PriceOfCommonAutoFactory = (decimal)loopDelete.SI_PriceOfCommonAutoFactory;
                }
                if (loopDelete.SI_PriceOfPlatformAutoFactory != null)
                {
                    newInventoryRow.SI_PriceOfPlatformAutoFactory = (decimal)loopDelete.SI_PriceOfPlatformAutoFactory;
                }
                newInventoryRow.SI_IsValid     = loopDelete.SI_IsValid == null ? false : loopDelete.SI_IsValid.Value;
                newInventoryRow.SI_CreatedBy   = loopDelete.SI_CreatedBy;
                newInventoryRow.SI_CreatedTime = loopDelete.SI_CreatedTime == null
                    ? BLLCom.GetCurStdDatetime()
                    : loopDelete.SI_CreatedTime.Value;

                newInventoryRow.SI_UpdatedBy   = loopDelete.SI_UpdatedBy;
                newInventoryRow.SI_UpdatedTime = BLLCom.GetCurStdDatetime();
                newInventoryRow.SI_VersionNo   = Convert.ToString(loopDelete.SI_VersionNo);
                deleteShareInventoryDataTable.AddInventoryRow(newInventoryRow);
            }
            syncShareInventoryList.AddRange(paramModelList.DeleteList);
            #endregion

            #endregion

            #region 保存数据

            #region  步到平台

            if (!SynchronizeShareInventory(syncShareInventoryList))
            {
                //同步到平台失败
                ResultMsg = MsgHelp.GetMsg(MsgCode.E_0018, new object[] { SystemActionEnum.Name.SAVE + SystemTableEnums.Name.PIS_ShareInventory, "同步平台失败" });
                return(false);
            }
            #endregion

            try
            {
                //打开数据库并连接
                using (SqlConnection mySqlConnection = new SqlConnection
                {
                    ConnectionString = DBManager.GetConnectionString(DBCONFIG.Coeus)
                })
                {
                    SqlCommand mySqlCommand = new SqlCommand();
                    mySqlCommand.Connection  = mySqlConnection;
                    mySqlCommand.CommandText = "P_PIS_ShareInventory";
                    mySqlCommand.CommandType = CommandType.StoredProcedure;
                    mySqlCommand.Parameters.Add("@UpdateShareInventory", SqlDbType.Structured);
                    mySqlCommand.Parameters[0].Value = updateShareInventoryDataTable;
                    mySqlCommand.Parameters.Add("@InsertShareInventory", SqlDbType.Structured);
                    mySqlCommand.Parameters[1].Value = insertShareInventoryDataTable;
                    mySqlCommand.Parameters.Add("@DeleteShareInventory", SqlDbType.Structured);
                    mySqlCommand.Parameters[2].Value = deleteShareInventoryDataTable;
                    mySqlConnection.Open();
                    mySqlCommand.ExecuteNonQuery();
                }
            }
            catch (Exception ex)
            {
                #region 保存本地失败,还原同步到平台上已新增、已更新、已删除的共享库存

                List <AutoPartsShareInventoryManagerUIModel> restoreSyncShareInventoryList = new List <AutoPartsShareInventoryManagerUIModel>();
                foreach (var loopInsert in paramModelList.InsertList)
                {
                    loopInsert.OperateType = "Delete";
                }
                restoreSyncShareInventoryList.AddRange(paramModelList.InsertList);
                foreach (var loopDelete in paramModelList.DeleteList)
                {
                    loopDelete.OperateType = "Save";
                }
                restoreSyncShareInventoryList.AddRange(paramModelList.DeleteList);
                //查询待更新数据原保存数据内容
                List <MDLPIS_ShareInventory> updateShareInventoryList = new List <MDLPIS_ShareInventory>();
                _bll.QueryForList(SQLID.IS_AutoPartsShareInventoryManager_SQL02, new MDLPIS_ShareInventory
                {
                    WHERE_SI_ID = updateIdStr,
                }, updateShareInventoryList);
                foreach (var loopUpdate in paramModelList.UpdateList)
                {
                    var curUpdateShareInventory =
                        updateShareInventoryList.FirstOrDefault(x => x.SI_ID == loopUpdate.SI_ID);
                    if (curUpdateShareInventory != null && !string.IsNullOrEmpty(curUpdateShareInventory.SI_ID))
                    {
                        _bll.CopyModel(curUpdateShareInventory, loopUpdate);
                    }
                    loopUpdate.OperateType = "Save";
                }
                restoreSyncShareInventoryList.AddRange(paramModelList.UpdateList);
                SynchronizeShareInventory(restoreSyncShareInventoryList);

                #endregion

                ResultMsg = MsgHelp.GetMsg(MsgCode.E_0018, new object[] { SystemActionEnum.Name.SAVE, ex.Message });
                LogHelper.WriteBussLogEndOK(Trans.IS, LoginInfoDAX.UserName, funcName,
                                            MsgHelp.GetMsg(MsgCode.E_0018, new object[] { SystemActionEnum.Name.SAVE, ex.Message }), "", null);

                return(false);
            }
            #endregion

            return(true);
        }
 /// <summary>
 /// 服务端检查
 /// </summary>
 /// <param name="paramModel">UIModel</param>
 /// <returns></returns>
 private bool ServerCheck(PurchaseReturnManagerUIModel paramModel, SkyCarBindingList <StockOutBillManagerDetailUIModel, MDLPIS_StockOutBillDetail> paramDetailList)
 {
     return(true);
 }