public OutWareCheckData GetOutWareCheckData(string billNo) { OutWareCheckData outWareCheckData = null; if (!string.IsNullOrEmpty(billNo)) { outWareCheckData = this.Get <OutWareCheckData>(billNo); } if (outWareCheckData == null) { object lockItem = lockObjDic.GetOrAdd(billNo, new object()); lock (lockItem) { outWareCheckData = this.Get <OutWareCheckData>(billNo); if (outWareCheckData == null) { //CacheItemPolicy policy = new CacheItemPolicy(); //policy.SlidingExpiration = new TimeSpan(0, 60, 0); //60分钟内不访问自动剔除 LibBcfData ppWorkOrderBcf = (LibBcfData)LibBcfSystem.Default.GetBcfInstance("qc.OwQualityCheck"); DataSet ds = ppWorkOrderBcf.BrowseTo(new object[] { billNo }); outWareCheckData = new OutWareCheckData(ds); this.Set(billNo, outWareCheckData, new TimeSpan(0, 60, 0)); } } } return(outWareCheckData); }
public static void DelBcf(string progId, List <string> list, LibDataAccess dataAccess, LibManagerMessage manager = null) { if (manager == null) { manager = new LibManagerMessage(); } try { foreach (var item in list) { if (!string.IsNullOrEmpty(item)) { LibBcfData bcfData = (LibBcfData)LibBcfSystem.Default.GetBcfInstance(progId); bcfData.DataAccess = dataAccess; DataSet ds = bcfData.BrowseTo(new object[] { item }); if (ds == null || ds.Tables.Count <= 0 || ds.Tables[0].Rows.Count <= 0) { continue; } ds.Clear(); bcfData.Delete(new object[] { item }); } } } catch (Exception ex) { manager.AddMessage(new LibMessage() { MessageKind = LibMessageKind.Error, Message = string.Format("系统错误:{0}", ex.Message) }); } }
public static Result ExceptionTrack(string personId, string BillNo, DateTime PlanEndTime, string Solution, int DealwithState, string userId) { Result res = new Result(); LibBcfData bcfData = (LibBcfData)LibBcfSystem.Default.GetBcfInstance("com.AbnormalTrace"); LibEntryParam param = new LibEntryParam(); DataSet dataSet = bcfData.AddNew(param); DataTable masterDt = dataSet.Tables[0]; masterDt.BeginLoadData(); DataRow masterRow = masterDt.Rows[0]; try { masterRow.BeginEdit(); try { masterRow["TYPEID"] = "P001"; masterRow["FROMBILLNO"] = BillNo; masterRow["PLANENDTIME"] = LibDateUtils.DateTimeToLibDateTime(PlanEndTime); masterRow["SOLUTION"] = Solution; masterRow["DEALWITHSTATE"] = DealwithState; masterRow["DEALWITHPERSONID"] = personId; } catch { throw; } finally { masterRow.EndEdit(); } } catch { throw; } finally { masterDt.EndLoadData(); } bcfData.InnerSave(BillAction.AddNew, null, dataSet); if (bcfData.ManagerMessage.IsThrow) { res.Message = "数据有误"; res.ReturnValue = false; } else { res.ReturnValue = true; //Service.PushMessage(userId, PushType.Message); } return(res); }
public string Register(RegisterInfo info) { string error = string.Empty; LibDataAccess dataAccess = new LibDataAccess(); string userId = LibSysUtils.ToString(dataAccess.ExecuteScalar(string.Format("select USERID from AXPUSER where USERID={0}", LibStringBuilder.GetQuotString(info.inputId)))); if (string.IsNullOrEmpty(userId)) { string personId = LibSysUtils.ToString(dataAccess.ExecuteScalar(string.Format("select PERSONID from COMPERSON where PERSONNAME={0} and DEPTID={1}", LibStringBuilder.GetQuotString(info.inputName), LibStringBuilder.GetQuotString(info.inputDept)))); //如果遇到同部门同名的情况。建议客户手动创建人员主数据。 if (string.IsNullOrEmpty(personId)) { LibBcfData bcfData = (LibBcfData)LibBcfSystem.Default.GetBcfInstance("com.Person"); DataSet dataSet = bcfData.AddNew(null); DataRow masterRow = dataSet.Tables[0].Rows[0]; masterRow.BeginEdit(); try { if (string.IsNullOrEmpty(LibSysUtils.ToString(masterRow["PERSONID"]))) { masterRow["PERSONID"] = personId = LibCommUtils.GetInternalId().ToString(); } masterRow["PERSONNAME"] = info.inputName; masterRow["GENDER"] = info.gender; masterRow["DEPTID"] = info.inputDept; masterRow["MAIL"] = info.inputEmail; masterRow["PHONENO"] = info.inputPhone; } finally { masterRow.EndEdit(); } dataSet = bcfData.InnerSave(BillAction.AddNew, new object[] { personId }, dataSet); personId = LibSysUtils.ToString(dataSet.Tables[0].Rows[0]["PERSONID"]); } if (!string.IsNullOrEmpty(personId)) { string sql = string.Format("insert into AXPUSER(USERID,USERPASSWORD,PERSONID,ISUSE) values({0},{1},{2},0)", LibStringBuilder.GetQuotString(info.inputId), LibStringBuilder.GetQuotString(info.inputPassword1), LibStringBuilder.GetQuotString(personId)); dataAccess.ExecuteNonQuery(sql); } } else { error = "账号已注册"; } return(error); }
public string Audit(string progId, string billNo, int rowId, string userId, string password, bool isPass) { //模拟用户登录 SystemService server = new SystemService(); LoginInfo loginInfo = server.Login(userId, password, false); if (loginInfo.PersonId == null) { return("登录失败"); } //根据progid构建bcf LibBcfData bcf = (LibBcfData)LibBcfSystem.Default.GetBcfInstance(progId); bcf.Handle = LibHandleCache.Default.GetHandle(string.Empty, LibHandeleType.None, userId, loginInfo.PersonId, loginInfo.PersonName, ""); //根据rowid判断是行审核还是单据审核 if (rowId > 0) { Dictionary <int, SortedList <int, List <LibApproveFlowInfo> > > dic = new Dictionary <int, SortedList <int, List <LibApproveFlowInfo> > >(); dic.Add(rowId, new SortedList <int, List <LibApproveFlowInfo> >( )); bcf.AuditRow(new object[] { billNo }, isPass, dic, new Dictionary <int, int>()); } else { bcf.Audit(new object[] { billNo }, isPass, new Dictionary <string, LibChangeRecord>(), -1, null); } StringBuilder sb = new StringBuilder(); //根据messagelist判断是否操作成功 if (bcf.ManagerMessage.IsThrow) { foreach (LibMessage item in bcf.ManagerMessage.MessageList) { sb.Append(item.Message); } return(sb.ToString()); } else { return("审核成功"); } }
public string SubmitAudit(string billNo, string progId) { LibBcfData bcf = (LibBcfData)LibBcfSystem.Default.GetBcfInstance(progId); bcf.SubmitAudit(new object[] { billNo }, false, new Dictionary <string, LibChangeRecord>(), null); StringBuilder sb = new StringBuilder(); if (bcf.ManagerMessage.IsThrow) { foreach (LibMessage item in bcf.ManagerMessage.MessageList) { sb.Append(item.Message); } return(sb.ToString()); } else { return("送审成功"); } }
public PurCheckData GetPurCheckData(string billNo) { PurCheckData purCheckData = null; byte[] mybyte = this.StringGetBytes(billNo); if (mybyte != null) { purCheckData = (PurCheckData)RetrieveObjectex(mybyte); } if (purCheckData == null) { object lockItem = lockObjDic.GetOrAdd(billNo, new object()); lock (lockItem) { mybyte = this.StringGetBytes(billNo); if (mybyte != null) { purCheckData = (PurCheckData)RetrieveObjectex(mybyte); } // purCheckData = this.Get< PurCheckData>(billNo) ; if (purCheckData == null) { //CacheItemPolicy policy = new CacheItemPolicy(); //policy.SlidingExpiration = new TimeSpan(0, 60, 0); //60分钟内不访问自动剔除 LibBcfData ppWorkOrderBcf = (LibBcfData)LibBcfSystem.Default.GetBcfInstance("qc.PurQualityCheck"); DataSet ds = ppWorkOrderBcf.BrowseTo(new object[] { billNo }); purCheckData = new PurCheckData(ds); this.Set(billNo, purCheckData, new TimeSpan(0, 720, 0)); // byte[] binaryDataResult = GetBinaryFormatData(purCheckData); // Default.StringSetBytes(billNo, binaryDataResult, new TimeSpan(0, 30, 0)); } } } return(purCheckData); }
/// <summary> /// 获取审核单据数据 /// </summary> /// <param name="progId"></param> /// <param name="billNo"></param> /// <param name="RowId"></param> /// <returns></returns> public static Result GetBillInfo(string userId, string handle, string progId, string billNo, int RowId) { Result res = new Result(); res.ReturnValue = true; LibHandle Handle = LibHandleCache.Default.IsExistsHandle(LibHandeleType.PC, userId); VerificationHandle(userId, handle, Handle, res); if (res.ReturnValue) { try { LibBcfData bcfData = (LibBcfData)LibBcfSystem.Default.GetBcfInstance(progId); DataSet ds = bcfData.BrowseTo(new object[] { billNo }); if (RowId > 0) { DataSet newDs = new DataSet(); DataTable dt = ds.Tables[1].Clone(); newDs.Tables.Add(ds.Tables[0].Copy()); DataRow selrow = ds.Tables[1].Select("ROW_ID='" + RowId + "'")[0]; dt.ImportRow(selrow); newDs.Tables.Add(dt); res.Info = newDs; } else { res.Info = ds; } res.ReturnValue = true; } catch (Exception ex) { res.ReturnValue = false; res.Message = "审核失败!" + ex.Message; } } return(res); }
/// <summary> /// 将object格式化成字节数组byte[] /// </summary> /// <param name="billNo">单据编号</param> /// <returns>字节数组</returns> public ProduceData GetProduceData(string billNo) { ProduceData produceData = null; string json = this.StringGet(billNo); if (!string.IsNullOrEmpty((json))) { produceData = JsonUtiler.Deserialize <ProduceData>(json); } if (produceData == null) { object lockItem = lockObjDic.GetOrAdd(billNo, new object()); lock (lockItem) { json = this.StringGet(billNo); if (!string.IsNullOrEmpty((json))) { produceData = JsonUtiler.Deserialize <ProduceData>(json); } // produceData = this.Get< ProduceData>(billNo) ; if (produceData == null) { //CacheItemPolicy policy = new CacheItemPolicy(); //policy.SlidingExpiration = new TimeSpan(0, 60, 0); //60分钟内不访问自动剔除 LibBcfData ppWorkOrderBcf = (LibBcfData)LibBcfSystem.Default.GetBcfInstance("pp.WorkOrder"); DataSet ds = ppWorkOrderBcf.BrowseTo(new object[] { billNo }); produceData = new ProduceData(ds); this.Set(billNo, produceData, new TimeSpan(0, 720, 0)); // byte[] binaryDataResult = GetBinaryFormatData(produceData); // Default.StringSetBytes(billNo, binaryDataResult, new TimeSpan(0, 30, 0)); } } } return(produceData); }
public static void CheckRuleData(LibBcfData bcf) { bool isCodingRule = bcf.ProgId == "com.CodingRule"; string totalLenName = isCodingRule ? "CODINGRULELENGTH" : "BARCODELENGTH"; DataRow masterRow = bcf.DataSet.Tables[0].Rows[0]; int barcodeLength = 0; bool hasDy = false; bool hasSerialNum = false; int maxRowNo = 0; int serialNumRowNo = 0; foreach (DataRow curRow in bcf.DataSet.Tables[1].Rows) { if (curRow.RowState == DataRowState.Deleted) { continue; } int rowNo = LibSysUtils.ToInt32(curRow["ROWNO"]); if (maxRowNo < rowNo) { maxRowNo = rowNo; } int sectionLength = LibSysUtils.ToInt32(curRow["SECTIONLENGTH"]); DataRow[] childRows = curRow.GetChildRows(bcf.DataSet.Relations[1]); bool hasDetail = false; BarcodeRuleSectionType type = (BarcodeRuleSectionType)LibSysUtils.ToInt32(curRow["SECTIONTYPE"]); if (type == BarcodeRuleSectionType.Dynamic) { if (!hasDy) { hasDy = true; } if (string.IsNullOrEmpty(LibSysUtils.ToString(curRow["FIELDNAME"]))) { bcf.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("行{0}设定为动态段,字段名不能为空。", rowNo)); } foreach (DataRow subRow in childRows) { if (subRow.RowState == DataRowState.Deleted) { continue; } if (!hasDetail) { hasDetail = true; } int sectionValueLen = LibSysUtils.ToString(subRow["SECTIONVALUE"]).Length; if (sectionLength != sectionValueLen) { bcf.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("行{0}的编码段长度为{1},子行{2}的编码值长度为{3}。长度须相等。", rowNo, sectionLength, LibSysUtils.ToInt32(subRow["ROWNO"]), sectionValueLen)); } } } else { if (!string.IsNullOrEmpty(LibSysUtils.ToString(curRow["FIELDNAME"]))) { bcf.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("行{0}非动态段,字段名不能有值。", rowNo)); } if (LibSysUtils.ToBoolean(curRow["DYRULEDETAIL"])) { bcf.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("行{0}非动态段,不能有动态规则明细。", rowNo)); } } switch (type) { case BarcodeRuleSectionType.SerialNum: if (hasSerialNum) { bcf.ManagerMessage.AddMessage(LibMessageKind.Error, "编码规则明细里不能同时设置多笔流水号。"); } else { hasSerialNum = true; } serialNumRowNo = rowNo; if (sectionLength < 3) { bcf.ManagerMessage.AddMessage(LibMessageKind.Warn, "流水码的编码长度建议最少大于3"); } break; case BarcodeRuleSectionType.DateL: if (sectionLength != 8) { curRow["SECTIONLENGTH"] = 8; } break; case BarcodeRuleSectionType.DateL1: if (sectionLength != 8) { curRow["SECTIONLENGTH"] = 4; } break; case BarcodeRuleSectionType.DateS: case BarcodeRuleSectionType.DateS1: case BarcodeRuleSectionType.DateAB: if (sectionLength != 6) { curRow["SECTIONLENGTH"] = 6; } break; case BarcodeRuleSectionType.DateL16: if (sectionLength != 7) { curRow["SECTIONLENGTH"] = 7; } break; case BarcodeRuleSectionType.DateS16: if (sectionLength != 5) { curRow["SECTIONLENGTH"] = 5; } break; default: break; } if (LibSysUtils.ToBoolean(curRow["DYRULEDETAIL"]) != hasDetail) { curRow["DYRULEDETAIL"] = hasDetail; } barcodeLength += LibSysUtils.ToInt32(curRow["SECTIONLENGTH"]); } if (!hasSerialNum) { bcf.ManagerMessage.AddMessage(LibMessageKind.Error, "编码规则明细里需存在一笔流水号。"); } else if (serialNumRowNo != maxRowNo) { bcf.ManagerMessage.AddMessage(LibMessageKind.Error, "编码规则明细里的流水号必须是最后一笔数据。"); } if (hasDy && string.IsNullOrEmpty(LibSysUtils.ToString(masterRow["PROGID"]))) { bcf.ManagerMessage.AddMessage(LibMessageKind.Error, "编码规则明细存在动态段,表头功能字段不能为空。"); } if (LibSysUtils.ToInt32(masterRow[totalLenName]) != barcodeLength) { masterRow[totalLenName] = barcodeLength; } }
/// <summary> /// 审核操作 /// </summary> /// <param name="progId"></param> /// <param name="billNo"></param> /// <param name="rowId"></param> /// <param name="userId"></param> /// <param name="handle"></param> /// <param name="isPass"></param> /// <param name="message"></param> /// <returns></returns> public static Result Audit(string progId, string billNo, int rowId, string userId, string handle, bool isPass, string message) { Result res = new Result(); res.ReturnValue = true; LibHandle Handle = LibHandleCache.Default.IsExistsHandle(LibHandeleType.PC, userId); VerificationHandle(userId, handle, Handle, res); if (res.ReturnValue) { try { //根据progid构建bcf LibBcfData bcf = (LibBcfData)LibBcfSystem.Default.GetBcfInstance(progId); if (bcf == null) { res.ReturnValue = false; res.Message = "请输入正确progId!"; return(res); } bcf.Handle = Handle; //根据rowid判断是行审核还是单据审核 if (rowId > 0) { Dictionary <int, SortedList <int, List <LibApproveFlowInfo> > > dic = new Dictionary <int, SortedList <int, List <LibApproveFlowInfo> > >(); dic.Add(rowId, new SortedList <int, List <LibApproveFlowInfo> >()); bcf.AuditRow(new object[] { billNo }, isPass, dic, new Dictionary <int, int>()); } else { //string.Empty 为审核意见,后期加上 bcf.Audit(new object[] { billNo }, isPass, string.Empty, new Dictionary <string, LibChangeRecord>(), -1, null); } StringBuilder sb = new StringBuilder(); //根据messagelist判断是否操作成功 if (bcf.ManagerMessage.IsThrow) { foreach (LibMessage item in bcf.ManagerMessage.MessageList) { sb.Append(item.Message); } res.Message = sb.ToString(); res.ReturnValue = false; } else { res.ReturnValue = true; res.Message = "审核成功!"; PushMessage(userId, PushType.Approval); } } catch (Exception ex) { res.ReturnValue = false; res.Message = "审核失败!" + ex.Message; } } return(res); }
public UpLoadFileResult UpLoadFile1(HttpPostedFile file, string progId = "") { UpLoadFileResult upLoadFileResult = new UpLoadFileResult(); bool isLocalHost = true; string fileName = LibDateUtils.Now().Ticks.ToString(); fileName = file.FileName.Replace(file.FileName.Substring(0, file.FileName.LastIndexOf('.')), fileName); string filePath = Path.Combine(EnvProvider.Default.RuningPath, "TempData", "ImportData", fileName); string url = Path.Combine("\\TempData", "ImportData", fileName); #region 对应实体图片路径 if (!string.IsNullOrEmpty(progId)) { string sql = string.Format(" SELECT Url,LocalHost FROM ComImagePath WHERE Progid='{0}' ", progId); DataSet dataSet = new LibDataAccess().ExecuteDataSet(sql); if (dataSet != null && dataSet.Tables.Count > 0 && dataSet.Tables[0].Rows.Count > 0) { DataRow dr = dataSet.Tables[0].Rows[0]; isLocalHost = LibSysUtils.ToBoolean(dr["LocalHost"]); url = LibSysUtils.Combine(LibSysUtils.ToString(dr["Url"]), fileName); filePath = LibSysUtils.Combine(EnvProvider.Default.RuningPath, url); } } #endregion #region 新增图片实体 LibEntryParam entryParam = new LibEntryParam(); DataSet dataset = null; LibBcfData bcfData = (LibBcfData)LibBcfSystem.Default.GetBcfInstance("KanTime.Picture"); dataset = bcfData.AddNew(entryParam); #region 填充数据 dataset.EnforceConstraints = false; try { #region 表头 DataRow masterRow = dataset.Tables[0].Rows[0]; masterRow.BeginEdit(); masterRow["Name"] = fileName; masterRow["Url"] = url; masterRow.EndEdit(); #endregion #region 明细 //dataset.Tables[1].BeginLoadData(); //dataset.Tables[1].EndLoadData(); #endregion } finally { dataset.EnforceConstraints = true; } dataset = bcfData.InnerSave(BillAction.AddNew, null, dataset); if (bcfData.ManagerMessage.IsThrow) { StringBuilder strMsg = new StringBuilder(); foreach (var item in bcfData.ManagerMessage.MessageList) { strMsg.AppendFormat("{0}", item.Message); } throw new Exception(strMsg.ToString()); } #endregion #endregion file.SaveAs(filePath); #region 返回本机或外网地址 if (isLocalHost) { upLoadFileResult.FileName = url; } else { upLoadFileResult.FileName = LibSysUtils.Combine(EnvProvider.Default.UploadHostName, url); } #endregion upLoadFileResult.success = true; return(upLoadFileResult); }
protected override void BeforeUpdate() { base.BeforeUpdate(); int bodyRowCount = 0; int subRowCount = 0; //检查行审核的启用是否有效 DataRow masterRow = this.DataSet.Tables[0].Rows[0]; if (LibSysUtils.ToBoolean(masterRow["ISAPPROVEROW"])) { string progId = LibSysUtils.ToString(masterRow["PROGID"]); LibBcfData bcfData = (LibBcfData)LibBcfSystem.Default.GetBcfInstance(progId); if (bcfData != null && bcfData.Template.FuncPermission.UsingApproveRow == false) { this.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("审核流程:功能{0}的实现中未启用行审核,审核流不能配置为行审核。", progId)); } } List <string> useConditionList = new List <string>(); string useCondition = string.Empty; foreach (DataRow curRow in this.DataSet.Tables[1].Rows) { if (curRow.RowState == DataRowState.Deleted) { continue; } useCondition = LibSysUtils.ToString(curRow["USECONDITION"]); if (useConditionList.Contains(useCondition) == false) { useConditionList.Add(useCondition); } else { this.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("审核流程:不能使用相同的使用条件。行号:{0}", curRow["ROWNO"])); } bodyRowCount++; SortedList <int, HashSet <string> > tempList = new SortedList <int, HashSet <string> >(); HashSet <int> tempHashSet = new HashSet <int>(); DataRow[] childRows = curRow.GetChildRows(this.DataSet.Relations[1]); if (childRows != null) { subRowCount = 0; foreach (DataRow childRow in childRows) { if (childRow.RowState == DataRowState.Deleted) { continue; } subRowCount++; int flowLevel = LibSysUtils.ToInt32(childRow["FLOWLEVEL"]); if (!tempList.ContainsKey(flowLevel)) { tempList.Add(flowLevel, new HashSet <string>()); } HashSet <string> hashSet = tempList[flowLevel]; string personId = LibSysUtils.ToString(childRow["PERSONID"]); string deptId = LibSysUtils.ToString(childRow["DEPTID"]); string dutyId = LibSysUtils.ToString(childRow["DUTYID"]); string deptColumnName = LibSysUtils.ToString(childRow["DEPTIDCOLUMN"]); if (string.IsNullOrEmpty(personId) && string.IsNullOrEmpty(dutyId)) { this.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("审核流程明细:具体审核人和岗位必须要指定一个。行号:{0}", childRow["ROWNO"])); } if (string.IsNullOrEmpty(personId) == false && string.IsNullOrEmpty(dutyId) == false) { this.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("审核流程明细:具体审核人和岗位不能同时指定。行号:{0}", childRow["ROWNO"])); } if (string.IsNullOrEmpty(personId) == false) { //设定了具体审核人就不用再设置部门(或动态部门字段) if (string.IsNullOrEmpty(deptId) == false || string.IsNullOrEmpty(deptColumnName) == false) { this.ManagerMessage.AddMessage(LibMessageKind.Warn, string.Format("审核流程明细:设定了具体审核人,再设置部门(或动态部门字段)无意义。行号:{0}", childRow["ROWNO"])); } if (hashSet.Contains(personId)) { this.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("审核流程明细:同一层级不能出现相同的人。行号:{0}", childRow["ROWNO"])); } else { hashSet.Add(personId); } bool independent = LibSysUtils.ToBoolean(childRow["INDEPENDENT"]); if (independent && !tempHashSet.Contains(flowLevel)) { tempHashSet.Add(flowLevel); } } else { if (string.IsNullOrEmpty(deptId) == false && string.IsNullOrEmpty(deptColumnName) == false) { this.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("审核流程明细:部门和动态部门字段只能设置一个。行号:{0}", childRow["ROWNO"])); } } } if (subRowCount == 0) { this.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("审核流程:行号为{0}的流程必须配置至少一个审核过程。", curRow["ROWNO"])); } int preLevel = -1; foreach (var item in tempList) { if (preLevel == -1) { preLevel = item.Key; if (preLevel != 1) { this.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("审核流程明细:最小层级必须从1开始。")); } } else if (++preLevel != item.Key) { this.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("审核流程明细:层级中间不能有断层。")); break; } if (item.Value.Count == 1 && tempHashSet.Contains(item.Key)) { this.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("审核流程明细:同一层级存在多人时才能勾选独立决策权。")); } } } } if (bodyRowCount == 0) { this.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("必须配置至少一个审核流程。")); } }