Exemplo n.º 1
0
        /// <summary>
        /// 码申请处理申请工作
        /// </summary>
        /// <param name="codeApply">码申请信息</param>
        /// <param name="ct"></param>
        public static void ApplyGenerateWork(CodeApply codeApply, CancellationToken ct)
        {
            CodeService.logger.Log(LogLevel.Info, $"处理码申请Id:{codeApply.ApplyId},申请工作");

            #region 初始化码申请码规则处理表ApplyRuleProcess数据
            //获取码规则ID
            int[] ruleIds = Array.ConvertAll <string, int>(codeApply.CodeRulesIDs.Split(new char[] { '|' }), int.Parse);
            //获取处理程序
            List <ApplyRuleProcess> allApplyRuleProcess = ApplyRuleProcessFactory.Instance.GetCodeRuleByApplyId(codeApply.ApplyId);
            for (int i = 0; i < ruleIds.Length; i++)
            {
                if (allApplyRuleProcess.Count <= i)
                {
                    //生成APPLY - RULE - PROCESSOR
                    ApplyRuleProcess ruleProcess = new ApplyRuleProcess()
                    {
                        ApplyId = codeApply.ApplyId, CodeRuleId = ruleIds[i], Status = ApplyRuleStatus.None, AttributeInfo = string.Empty, EndCode = string.Empty, FirstCode = string.Empty
                    };
                    ApplyRuleProcessFactory.Instance.Add(ruleProcess);
                }
            }
            #endregion
            ApplyProcesser applyProcess = new ApplyProcesser(codeApply);
            applyProcess.LoadData();
            applyProcess.ApplyGenerate();
            codeApply.ProcessType = ProcessType.Applied;
            CodeService.logger.Log(LogLevel.Info, $"完成码申请Id:{codeApply.ApplyId},申请工作");
        }
Exemplo n.º 2
0
        ///// <summary>
        ///// 生成码信息
        ///// </summary>
        //public void Generate()
        //{
        //    List<List<string>> rulersResult = new List<List<string>>();
        //    List<string> allCode = new List<string>();
        //    for(int i=0;i<this.segRulers.Count;i++)
        //    {
        //        rulersResult.Add(this.segRulers[i].Generate(this.codeApply.ApplyAmount * this.outerPackageRatios[i]));
        //    }
        //    if (this.segRulers.Count > 1)
        //    {
        //        for (int i = 0; i < this.codeApply.ApplyAmount; i++)
        //        {
        //            for (int j = 0; j < this.segRulers.Count; j++)
        //            {
        //                for (int k = 0; k < this.outerPackageRatios[j]; k++)
        //                {
        //                    allCode.Add(rulersResult[j][i * this.outerPackageRatios[j] + k]);
        //                }
        //            }
        //        }
        //    }
        //    else
        //    {
        //        allCode = rulersResult[0];
        //    }
        //    ////#region测试代码
        //    //Dictionary<string, object> extentDictionary = new Dictionary<string, object>();
        //    //extentDictionary.Add("ExtentName","TEST");
        //    //extentDictionary.Add("ExtentType", "TestType");
        //    //List<Acctrue.CMC.Model.Report.ActivityCodes> activityCodes = allCode.Select(s => new Acctrue.CMC.Model.Report.ActivityCodes() { Code=s, Extent=extentDictionary }).ToList();
        //    //string activeStr =  Newtonsoft.Json.JsonConvert.SerializeObject(activityCodes);
        //    //CodeActiveUploadFactory.Instance.InsertNewActive(new Model.Systems.AppSettingInfo() { AppID="1", AppSettingID=1, AppStatus=0, CorpCode="1", CorpName="TEST", CreatedDate=DateTime.Now, SubCorpCode="01" }, new Model.Request.UploadActiveRequest() { ApplyId=33, ActiveName="激活", Memo="", ProductCode="01", WorkLine="01", ProductName="TEST", File= Tools.SerializeZipCode(activeStr) });
        //    ////#endregion
        //    InnerCodeFileRecord record = new InnerCodeFileRecord();
        //    record.ApplyId = codeApply.ApplyId;
        //    record.Content = Tools.SerializeZipCode(allCode);
        //    CodeDownloadFactory.Instance.AddInnerCodeFiledRecord(record);

        //    //更新码申请记录状态完成
        //    codeApply.ApplyStatus = ApplyStatus.Completed;
        //    codeApply.ProcessType = ProcessType.Completed;
        //    CodeApplyFactory.Instance.Update(codeApply);
        //}

        /// <summary>
        /// 将生成后的码信息逐个存储于mongodb
        /// </summary>
        ///<param name="ct">工作取消令牌</param>
        public void SaveBySingleCode(CancellationToken ct)
        {
            InnerCodeFileRecord record = CodeDownloadFactory.Instance.GetInnerCodeFileRecord(codeApply.ApplyId);

            //处理码格式
            List <string> codes       = new List <string>();
            List <string> originCodes = Tools.DeserializeZipCode(Convert.ToBase64String(record.Content));

            foreach (string oriCode in originCodes)
            {
                codes.Add(oriCode.Split(new char[] { '/' }).LastOrDefault());
            }

            List <ApplyCodes> applyCodes = new List <ApplyCodes>();

            ApplyRuleProcess applyRuleProcess = ApplyRuleProcessFactory.Instance.GetCodeRuleByApplyIdRuleId(this.codeApply.ApplyId, 0);

            if (applyRuleProcess == null)
            {
                applyRuleProcess = new ApplyRuleProcess()
                {
                    ApplyId = this.codeApply.ApplyId, CodeRuleId = 0, FirstCode = codes[1], EndCode = codes[codes.Count - 1], Status = ApplyRuleStatus.None, AttributeInfo = "0"
                };
                ApplyRuleProcessFactory.Instance.Add(applyRuleProcess);
            }
            int lastLineIndex = 0;

            int.TryParse(applyRuleProcess.AttributeInfo, out lastLineIndex);
            if (lastLineIndex < codes.Count - 1)
            {
                for (int i = lastLineIndex; i < codes.Count - 1; i++)
                {
                    applyCodes.Clear();
                    for (int j = 0; j < BatchSize && i < codes.Count - 1; j++, i++)
                    {
                        applyCodes.Add(new ApplyCodes()
                        {
                            AppId = codeApply.ApplyAppId, ApplyId = codeApply.ApplyId, ApplyType = codeApply.ApplyType, Code = codes[i + 1], CorpCode = codeApply.CorpCode, CorpName = codeApply.CorpName, CreateDate = codeApply.AuditDate == null ? DateTime.Now : (DateTime)codeApply.AuditDate, ProduceWorkline = codeApply.ProduceWorkLine, ProductCode = codeApply.ProductCode, ProductName = codeApply.ProductName, SubCorpCode = codeApply.ApplySubCorpCode, UseCorpCode = codeApply.UseCorpCode, UseCorpName = codeApply.UseCorpName, UseSubCorpCode = codeApply.UseSubCorpCode
                        });
                    }
                    ;


                    ApplyCodesFactory.Instance.BatchAdd(applyCodes);
                    applyRuleProcess.AttributeInfo = i.ToString();
                    ApplyRuleProcessFactory.Instance.Update(applyRuleProcess);
                    i--;
                }
            }

            //更新状态
            applyRuleProcess.Status = ApplyRuleStatus.Completed;
            ApplyRuleProcessFactory.Instance.Update(applyRuleProcess);
            for (int i = 0; i < this.segRulers.Count; i++)
            {
                if (applyRuleProcessDict[this.segRulers[i]].Status == ApplyRuleStatus.Stored)
                {
                    applyRuleProcessDict[this.segRulers[i]].Status = ApplyRuleStatus.Completed;
                    ApplyRuleProcessFactory.Instance.Update(applyRuleProcessDict[this.segRulers[i]]);
                }
            }
        }