Exemplo n.º 1
0
        public bool updateKingDeeDataBase(string model, List <string> SQLStatement, Dictionary <string, UpdateFields> updateMap, Context ctx)
        {
            List <string> statementList = new List <string>();

            foreach (KeyValuePair <string, UpdateFields> kvp in updateMap)
            {
                if (string.Equals(CustomerSQLObject.Customer, model, StringComparison.CurrentCultureIgnoreCase))
                {
                    CustomerUpdateFields customerUpdateFields = (CustomerUpdateFields)kvp.Value;
                    string statement = string.Format(SQLStatement[0], customerUpdateFields.FName, kvp.Key);
                    statementList.Add(statement);
                    CustomerFnunbers.Add(kvp.Key);
                }
                if (string.Equals(SupplierSQLObject.Supplier, model, StringComparison.CurrentCultureIgnoreCase))
                {
                    SupplierUpdateFields supplierUpdateFields = (SupplierUpdateFields)kvp.Value;
                    string statement1 = string.Format(SQLStatement[0], supplierUpdateFields.FName, kvp.Key);
                    string statement2 = string.Format(SQLStatement[1], supplierUpdateFields.FbankCode, kvp.Key);
                    string statement3 = string.Format(SQLStatement[2], supplierUpdateFields.FopenBankName, kvp.Key);
                    SupplierFnumbers.Add(kvp.Key);

                    using (KDTransactionScope trans = new KDTransactionScope(System.Transactions.TransactionScopeOption.Required))
                    {
                        if (DBServiceHelper.Execute(ctx, statement1) > 0)
                        {
                            if (DBServiceHelper.Execute(ctx, statement2) > 0)
                            {
                                if (DBServiceHelper.Execute(ctx, statement3) > 0)
                                {
                                    BussnessLog.WriteBussnessLog("", model + "更新", "更新金蝶数据库成功! fnumber=" + kvp.Key);
                                }
                                else
                                {
                                    BussnessLog.WriteBussnessLog("", model + "更新", "更新金蝶数据库失败! fnumber=" + kvp.Key);
                                }
                            }
                        }
                        trans.Complete();
                    }
                }
            }

            if (DBServiceHelper.ExecuteBatch(ctx, statementList) > 0)
            {
                foreach (string s in statementList)
                {
                    BussnessLog.WriteBussnessLog("", model + "更新", "更新金蝶数据库成功! 更新语句=" + s);
                }
            }
            else
            {
                foreach (string s in statementList)
                {
                    BussnessLog.WriteBussnessLog("", model + "更新", "更新金蝶数据库失败! 更新语句=" + s);
                }
            }

            return(true);
        }
        public override HttpResponseResult ExecuteSynchro(IEnumerable <AbsSynchroDataInfo> sourceDatas, List <SynchroLog> logs, SynOperationType operationType)
        {
            HttpResponseResult result    = null;
            List <Material>    materials = null /*sourceDatas.Select(m => (Material)m).ToList()*/;

            KDTransactionScope trans   = null;
            List <string>      numbers = null;

            try
            {
                if (operationType == SynOperationType.SAVE)
                {
                }
                else if (operationType == SynOperationType.UPDATE)
                {
                    using (trans = new KDTransactionScope(System.Transactions.TransactionScopeOption.Required))
                    {
                        int    count    = 0;
                        string messages = "";

                        if (materials != null && materials.Count > 0)
                        {
                            numbers = new List <string>();

                            foreach (var data in materials)
                            {
                                //if (data != null)
                                //{

                                //    string sql = string.Format(@"/*dialect*/ update T_BD_MATERIAL
                                //                                set F_HS_LISTID = '{0}' ,F_HS_LISTNAME= '{1}'
                                //                                where FNUMBER = '{2}'
                                //                                and  len(F_HS_LISTID) = 0", info.F_HS_ListID, info.F_HS_ListName, info.FNumber);
                                //    try
                                //    {
                                //        count += DBUtils.Execute(this.K3CloudContext, sql);

                                //        if (count > 0)
                                //        {
                                //            numbers.Add(info.FNumber);
                                //        }
                                //        else
                                //        {
                                //            string message = "物料【" + info.FNumber + "】LISTID【" + info.F_HS_ListID + "】已更新,不再更新!";
                                //            messages += message;
                                //            (this.K3CloudContext, SynchroDataType.DownLoadListInfo, message);
                                //        }
                                //    }
                                //    catch (Exception ex)
                                //    {
                                //        (this.K3CloudContext, SynchroDataType.DownLoadListInfo, "数据批量更新过程中出现异常,异常信息:" + ex.Message + System.Environment.NewLine + ex.StackTrace);
                                //        messages += ex.Message + System.Environment.NewLine + ex.StackTrace;
                                //    }
                                //}
                            }
                            if (numbers != null && numbers.Count > 0)
                            {
                                RemoveRedisData(this.K3CloudContext, numbers);
                            }

                            if (!string.IsNullOrWhiteSpace(messages))
                            {
                                result.Success = false;
                                result.Message = messages;
                            }
                            else
                            {
                                if (count == numbers.Count && count > 0)
                                {
                                    result.Success = true;
                                    result.Message = "物料ListId下载成功!";
                                }
                            }
                        }
                    }
                    return(result);
                }
            }
            catch (Exception ex)
            {
                if (logs != null && logs.Count > 0)
                {
                    foreach (var log in logs)
                    {
                        log.IsSuccess = 0;
                        log.ErrInfor  = ex.Message + System.Environment.NewLine + ex.StackTrace;
                    }
                }
            }

            if (result == null)
            {
                return(null);
            }

            if (result.Success == false && result.FailedResult == null && result.Result == null)
            {
                //同步出现错误之类:如令牌错误,url错误之类的
                if (logs != null && logs.Count > 0)
                {
                    foreach (var log in logs)
                    {
                        log.IsSuccess = 0;
                        log.ErrInfor  = "数据同步失败:" + result.Message == null ? "" : result.Message;
                    }
                }

                return(result);
            }

            return(result);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 同步数据
        /// </summary>
        /// <param name="sourceDatas"></param>
        /// <param name="logs"></param>
        /// <param name="operationType"></param>
        /// <returns></returns>
        public override HttpResponseResult ExecuteSynchro(IEnumerable <AbsSynchroDataInfo> sourceDatas, List <SynchroLog> logs, SynOperationType operationType)
        {
            HttpResponseResult result  = null;
            JObject            bizData = BuildSynchroDataJsons(sourceDatas, operationType);

            List <DeliveryNotice> notices = ConvertAbsSynchroObject(sourceDatas);
            KDTransactionScope    trans   = null;

            try
            {
                if (operationType == SynOperationType.SAVE)
                {
                    using (trans = new KDTransactionScope(System.Transactions.TransactionScopeOption.Required))
                    {
                        //单据保存
                        //result = InvokeWebApi.InvokeBatchSave(this.K3CloudContext, this.DataType, this.FormKey, bizData.ToString());
                        //提交事务
                        trans.Complete();
                    }
                    return(result);
                }
                else if (operationType == SynOperationType.UPDATE)
                {
                    result         = new HttpResponseResult();
                    result.Message = "订单已经存在!";
                }
            }
            catch (Exception ex)
            {
                LogUtils.WriteSynchroLog(this.K3CloudContext, SynchroDataType.DeliveryNoticeBill, "数据批量更新过程中出现异常,异常信息:" + ex.Message + System.Environment.NewLine + ex.StackTrace);
                result         = new HttpResponseResult();
                result.Success = false;
                result.Message = ex.Message;

                if (logs != null && logs.Count > 0)
                {
                    foreach (var log in logs)
                    {
                        log.IsSuccess = 0;
                        log.ErrInfor  = ex.Message + System.Environment.NewLine + ex.StackTrace;
                    }
                }
            }
            finally
            {
                if (trans != null)
                {
                    trans.Dispose();
                }
            }

            if (result == null)
            {
                return(null);
            }

            if (result.Success == false && result.FailedResult == null && result.Result == null)
            {
                return(result);
            }
            return(result);
        }
Exemplo n.º 4
0
        public override HttpResponseResult ExecuteSynchro(IEnumerable <AbsSynchroDataInfo> sourceDatas, List <SynchroLog> logs, SynOperationType operationType)
        {
            HttpResponseResult result  = null;
            HttpResponseResult saveR   = null;
            HttpResponseResult submitR = null;
            HttpResponseResult auditR  = null;
            KDTransactionScope trans   = null;
            JObject            bizData = null;


            if (sourceDatas != null && sourceDatas.Count() > 0)
            {
                bizData = BuildSynchroDataJsons(sourceDatas, operationType);
            }
            else
            {
                result         = new HttpResponseResult();
                result.Success = false;
                result.Message = "没有需要保存的数据!";
                return(result);
            }
            try
            {
                if (operationType == SynOperationType.SAVE)
                {
                    #region
                    using (trans = new KDTransactionScope(System.Transactions.TransactionScopeOption.Required))
                    {
                        #region
                        //单据保存
                        result = ExecuteOperate(SynOperationType.SAVE, null, null, bizData.ToString());
                        saveR  = result;

                        if (result != null && result.SuccessEntityNos != null && result.SuccessEntityNos.Count > 0)
                        {
                            result.Message = this.DataType + "【" + string.Join(",", result.SuccessEntityNos.Select(o => o.ToString())) + "】" + SynOperationType.SAVE + " 成功!";

                            //单据提交
                            result  = ExecuteOperate(SynOperationType.SUBMIT, result.SuccessEntityNos, null, null);
                            submitR = result;

                            if (result != null && result.SuccessEntityNos != null && result.SuccessEntityNos.Count > 0)
                            {
                                result.Message = this.DataType + "【" + string.Join(",", result.SuccessEntityNos.Select(o => o.ToString())) + "】" + SynOperationType.SUBMIT + " 成功!";
                                //单据审核
                                result         = ExecuteOperate(SynOperationType.AUDIT, result.SuccessEntityNos, null, null);
                                result.Message = this.DataType + "【" + string.Join(",", result.SuccessEntityNos.Select(o => o.ToString())) + "】" + SynOperationType.AUDIT + " 成功!";
                                auditR         = result;
                            }
                        }

                        //提交事务
                        trans.Complete();

                        #endregion
                    }

                    UpdateAfterOperate(this.K3CloudContext, saveR, SynOperationType.SAVE);
                    UpdateAfterOperate(this.K3CloudContext, submitR, SynOperationType.SUBMIT);
                    UpdateAfterOperate(this.K3CloudContext, auditR, SynOperationType.AUDIT);

                    #endregion
                }
                return(result);
            }
            catch (Exception ex)
            {
                if (logs != null && logs.Count > 0)
                {
                    foreach (var log in logs)
                    {
                        log.IsSuccess = 0;
                        log.ErrInfor  = ex.Message + System.Environment.NewLine + ex.StackTrace;
                    }
                }

                LogUtils.WriteSynchroLog(this.K3CloudContext, this.DataType, ex.Message + System.Environment.NewLine + ex.StackTrace);
            }
            finally
            {
                if (trans != null)
                {
                    trans.Dispose();
                }
            }
            if (result == null)
            {
                return(null);
            }

            if (result.Success == false && result.FailedResult == null && result.Result == null)
            {
                //同步出现错误之类:如令牌错误,url错误之类的
                if (logs != null && logs.Count > 0)
                {
                    foreach (var log in logs)
                    {
                        log.IsSuccess = 0;
                        log.ErrInfor  = "数据同步失败:" + result.Message == null ? "" : result.Message;
                    }
                }

                return(result);
            }

            return(result);
        }
Exemplo n.º 5
0
        /// <summary>
        /// 执行同步客户操作
        /// </summary>
        /// <param name="sourceDatas"></param>
        /// <param name="logs"></param>
        /// <param name="operationType"></param>
        /// <returns></returns>
        public override HttpResponseResult ExecuteSynchro(IEnumerable <AbsSynchroDataInfo> sourceDatas, List <SynchroLog> logs, SynOperationType operationType)
        {
            HttpResponseResult result = null;
            KDTransactionScope trans  = null;

            List <K3CustomerInfo> custs = ConvertAbsSynchroObject(sourceDatas);
            JObject bizData             = BuildSynchroDataJsons(sourceDatas, operationType);

            List <string> numbers = null;
            List <int>    pkIds   = null;

            try
            {
                if (operationType == SynOperationType.SAVE)
                {
                    #region
                    try
                    {
                        #region
                        using (trans = new KDTransactionScope(System.Transactions.TransactionScopeOption.Required))
                        {
                            //单据保存
                            result = ExecuteOperate(SynOperationType.SAVE, null, null, bizData.ToString());

                            if (result != null && result.Success == true)
                            {
                                //保存操作成功后返回单据的编码集合
                                if (result.GetNeedReturnValues("FNumber").ConvertAll(obj => string.Format("{0}", obj)) != null)
                                {
                                    numbers = result.GetNeedReturnValues("FNumber").ConvertAll(obj => string.Format("{0}", obj));
                                }
                                //保存操作成功后返回的单据内码集合
                                if (result.GetNeedReturnValues("FCUSTID").Select(obj => Convert.ToInt32(obj)).ToList() != null)
                                {
                                    pkIds = result.GetNeedReturnValues("FCUSTID").Select(obj => Convert.ToInt32(obj)).ToList();
                                }
                            }
                            ////单据提交
                            //result = InvokeWebApi.InvokeBatchSubmit(this.K3CloudContext, this.DataType, FormKey, numbers);
                            ////单据审核
                            //result = InvokeWebApi.InvokeBatchAudit(this.K3CloudContext, this.DataType, FormKey, numbers);
                            ////单据分配
                            //result = InvokeWebApi.InvokeBatchAllot(this.K3CloudContext, this.DataType, FormKey, pkIds);
                            ////分配后更新提交审核
                            //result = AfterAllot(this.K3CloudContext, custs);
                            ////提交事务
                            trans.Complete();
                        }
                    }

                    #endregion

                    #region
                    ////单据保存
                    //result = InvokeWebApi.InvokeBatchSave(this.K3CloudContext, this.DataType, FormKey, bizData.ToString());

                    //if (result != null && result.Success == true)
                    //{
                    //    //保存操作成功后返回单据的编码集合
                    //    if (result.ReturnValues("FNumber").ConvertAll(obj => string.Format("{0}", obj)) != null)
                    //    {
                    //        numbers = result.ReturnValues("FNumber").ConvertAll(obj => string.Format("{0}", obj));
                    //    }
                    //    //保存操作成功后返回的单据内码集合
                    //    if (result.ReturnValues("FCUSTID").Select(obj => Convert.ToInt32(obj)).ToList() != null)
                    //    {
                    //        pkIds = result.ReturnValues("FCUSTID").Select(obj => Convert.ToInt32(obj)).ToList();
                    //    }
                    //}
                    ////单据提交
                    //result = InvokeWebApi.InvokeBatchSumbit(this.K3CloudContext, this.DataType, FormKey, numbers);

                    ////单据审核
                    //result = InvokeWebApi.InvokeBatchAudit(this.K3CloudContext, this.DataType, FormKey, numbers);


                    ////单据分配
                    ////result = InvokeWebApi.InvokeBatchAllot(this.K3CloudContext, this.DataType, FormKey, pkIds);

                    ////分配后更新提交审核
                    ////result = AfterAllot(this.K3CloudContext, custs);

                    //trans.Complete();

                    #endregion

                    catch (Exception ex)
                    {
                        LogUtils.WriteSynchroLog(this.K3CloudContext, this.DataType, "提交事务出现异常,异常信息:" + ex.Message + System.Environment.NewLine + ex.StackTrace);
                    }
                    finally
                    {
                        if (trans != null)
                        {
                            trans.Dispose();
                        }
                    }

                    #endregion
                }
                else if (operationType == SynOperationType.ALLOT)
                {
                    //单据分配
                    try
                    {
                        if (custs != null && custs.Count > 0)
                        {
                            AfterAllot(this.K3CloudContext, custs);
                        }
                    }
                    catch (Exception ex)
                    {
                        LogUtils.WriteSynchroLog(this.K3CloudContext, this.DataType, "分配操作出现异常,异常信息:" + ex.Message + System.Environment.NewLine + ex.StackTrace);
                    }
                }

                else if (operationType == SynOperationType.UPDATE)
                {
                    //单据更新
                    //result = InvokeWebApi.InvokeBatchSave(this.K3CloudContext, this.DataType, FormKey, bizData.ToString());
                }
                return(result);
            }
            catch (Exception ex)
            {
                if (logs != null && logs.Count > 0)
                {
                    foreach (var log in logs)
                    {
                        log.IsSuccess = 0;
                        log.ErrInfor  = ex.Message + System.Environment.NewLine + ex.StackTrace;
                    }
                }
            }

            if (result == null)
            {
                return(null);
            }

            if (result.Success == false && result.FailedResult == null && result.Result == null)
            {
                //同步出现错误之类:如令牌错误,url错误之类的
                if (logs != null && logs.Count > 0)
                {
                    foreach (var log in logs)
                    {
                        log.IsSuccess = 0;
                        log.ErrInfor  = "数据同步失败:" + result.Message == null ? "" : result.Message;
                    }
                }

                return(result);
            }

            return(result);
        }
Exemplo n.º 6
0
        /// <summary>
        /// 执行同步操作
        /// </summary>
        /// <param name="sourceDatas"></param>
        /// <param name="logs"></param>
        /// <param name="operationType"></param>
        /// <returns></returns>
        public override HttpResponseResult ExecuteSynchro(IEnumerable <AbsSynchroDataInfo> sourceDatas, List <SynchroLog> logs, SynOperationType operationType)
        {
            HttpResponseResult result  = null;
            JObject            bizData = BuildSynchroDataJsons(sourceDatas, operationType);

            KDTransactionScope trans     = null;
            HttpResponseResult saveRet   = null;
            HttpResponseResult sumbitRet = null;
            HttpResponseResult auditRet  = null;

            if (sourceDatas == null || sourceDatas.Count() == 0)
            {
                result         = new HttpResponseResult();
                result.Success = false;
                result.Message = "没有需要同步的数据!";
            }

            try
            {
                if (operationType == SynOperationType.SAVE)
                {
                    #region

                    try
                    {
                        #region
                        using (trans = new KDTransactionScope(System.Transactions.TransactionScopeOption.Required))
                        {
                            //单据保存
                            saveRet = ExecuteOperate(SynOperationType.SAVE, null, null, bizData.ToString());
                            result  = saveRet;

                            if (saveRet != null && saveRet.SuccessEntityNos != null && saveRet.SuccessEntityNos.Count > 0)
                            {
                                result.Message = "收款单【" + string.Join(",", saveRet.SuccessEntityNos.Select(o => o.ToString())) + "】" + SynOperationType.SAVE + "成功!";
                                //单据提交
                                sumbitRet = ExecuteOperate(SynOperationType.SUBMIT, saveRet.SuccessEntityNos);
                                result    = sumbitRet;

                                if (sumbitRet != null && sumbitRet.SuccessEntityNos != null && sumbitRet.SuccessEntityNos.Count > 0)
                                {
                                    auditRet       = ExecuteOperate(SynOperationType.AUDIT, sumbitRet.SuccessEntityNos);
                                    result         = auditRet;
                                    result.Message = "收款单【" + string.Join(",", sumbitRet.SuccessEntityNos.Select(o => o.ToString())) + "】" + SynOperationType.SUBMIT + "成功!";
                                    //单据审核后

                                    if (auditRet != null && auditRet.SuccessEntityNos != null && auditRet.SuccessEntityNos.Count > 0)
                                    {
                                        result.Message = "收款单【" + string.Join(",", auditRet.SuccessEntityNos.Select(o => o.ToString())) + "】" + SynOperationType.AUDIT + "成功!";
                                    }
                                }
                            }
                            trans.Complete();
                        }
                        //更新收款单对应单据字段的信息
                        UpdateAfterOperate(K3CloudContext, saveRet, sourceDatas, SynOperationType.SAVE);
                        //更新收款单对应单据字段的信息
                        UpdateAfterOperate(K3CloudContext, sumbitRet, sourceDatas, SynOperationType.SUBMIT);
                        //更新收款单对应单据字段的信息
                        UpdateAfterOperate(K3CloudContext, auditRet, sourceDatas, SynOperationType.AUDIT);

                        #endregion
                    }
                    catch (Exception ex)
                    {
                        LogUtils.WriteSynchroLog(K3CloudContext, this.DataType, "同步收款单,异常信息:" + ex.Message + System.Environment.NewLine + ex.StackTrace);
                    }
                    finally
                    {
                        if (trans != null)
                        {
                            trans.Dispose();
                        }
                    }
                    #endregion
                }
                return(result);
            }
            catch (Exception ex)
            {
                if (logs != null && logs.Count > 0)
                {
                    foreach (var log in logs)
                    {
                        log.IsSuccess = 0;
                        log.ErrInfor  = ex.Message + System.Environment.NewLine + ex.StackTrace;
                    }
                }
            }

            return(null);
        }