public T Clone<T>(bool newID = true) where T : BaseModel, new() { var proplist = this.GetProperties(); var result = new T(); foreach (var item in proplist) { if (item.PropertyType.FullName == "System.String") result.SetProperty(item.Name, this.GetPropertyValue(item.Name)); else { var value = this.GetPropertyValue(item.Name); if (value == null || value == DBNull.Value || String.IsNullOrEmpty(value.ToString())) result.SetProperty(item.Name, null); else if (item.PropertyType.FullName.IndexOf("Int32") >= 0) value = Convert.ToInt32(value); else if (item.PropertyType.FullName.IndexOf("Decimal") >= 0) value = Convert.ToDecimal(value); else if (item.PropertyType.FullName.IndexOf("Double") >= 0) value = Convert.ToDouble(value); else if (item.PropertyType.FullName.IndexOf("DateTime") >= 0) value = Convert.ToDateTime(value); result.SetProperty(item.Name, value); } } if (newID) { if (proplist.FirstOrDefault(d => d.Name == "ID").PropertyType == typeof(string)) result.SetProperty("ID", GuidHelper.CreateGuid()); } return result; }
/// <summary> /// Create a new access token /// </summary> /// <param name="consumer">The consumer for whom the token is to be created</param> /// <param name="requestToken">The request token being swapped for this access token</param> /// <returns>An access token</returns> public virtual IAccessToken CreateAccessToken(IConsumer consumer, IRequestToken requestToken) { return(new OAuthAccessToken( GuidHelper.CreateGuid().ToString("D"), GuidHelper.CreateGuid().ToString("D"), consumer, TokenStatus.Unauthorized, requestToken)); }
/// <summary> /// Create a new request token /// </summary> /// <param name="consumer">The consumer for whom the token is to be created</param> /// <param name="parameters">The parameters that were sent in the request that /// created this token (both OAuth and additional parameters).</param> /// <returns>A request token</returns> public virtual IRequestToken CreateRequestToken(IConsumer consumer, OAuthParameters parameters) { return(new OAuthRequestToken( GuidHelper.CreateGuid().ToString("D"), GuidHelper.CreateGuid().ToString("D"), consumer, TokenStatus.Unauthorized, parameters, null, new string[] { })); }
public async Task <JsonResult> InsertOrgAsync() { var response = new Model.ResponseModel <A_Org>(); var data = Request.Form.Keys.FirstOrDefault(); A_Org a_Org = new A_Org(); a_Org = JsonHelper.ToObject <A_Org>(data); a_Org.ID = GuidHelper.CreateGuid(); int i = await _orgServices.Add(a_Org); response.success = true; response.msg = "保存成功!"; response.data = a_Org; return(Json(response)); }
public async Task <string> CreateSession(string id) { if (!(DbContext is CutieshopContext context)) { throw new FormatException(); } var guid = await GuidHelper.CreateGuid(); await context.AuthSessions.AddAsync(new AuthSession { Auth = id, Id = guid, IsDeleted = false }); await context.SaveChangesAsync(); return(guid); }
private void addChildDesignInput(S_D_Input child, S_D_Input parent, List <S_D_Input> synData, StringBuilder sb) { if (string.IsNullOrEmpty(child.ID)) { child.ID = GuidHelper.CreateGuid(); } if (string.IsNullOrEmpty(child.ParentID)) { child.ParentID = parent.ID; } if (string.IsNullOrEmpty(child.FullID)) { child.FullID = parent.FullID + "." + child.ID; } if (string.IsNullOrEmpty(child.ProjectInfoID)) { child.ProjectInfoID = parent.ProjectInfoID; } if (child.SortIndex == 0) { child.SortIndex = synData.Count(a => a.ParentID == parent.ID) + 1; } if (!synData.Exists(a => a.ID == child.ID)) { synData.Add(child); } var param = new DesignInputRequestData(); param.Id = child.ID; param.name = child.Name; param.FullID = child.FullID; param.parentId = child.ParentID; param.ProjectInfoID = child.ProjectInfoID; param.sort = child.SortIndex; param.type = 8; var queueSql = string.Format(this.SaveQueueSqlTmp, SynType.Save.ToString(), "S_D_Input", child.ID, child.Type , DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), JsonHelper.ToJson <DesignInputRequestData>(param).Replace("'", "''") , this.BaseServerUrl + "folder/edit"); sb.AppendLine(queueSql); }
private static void Log(string systemName, string pwd) { string sql = @" INSERT INTO [S_A_AuthLog] ([ID],[Operation],[OperationTarget],[RelateData],[ModifyUserName],[ModifyTime],[ClientIP]) VALUES ('{0}','{1}','{2}','{3}','{4}','{5}','{6}') "; sql = string.Format(sql , GuidHelper.CreateGuid() , "个人修改密码" , systemName , pwd , "" , DateTime.Now , GetUserIP() ); SQLHelper sqlHelper = SQLHelper.CreateSqlHelper(ConnEnum.Base); sqlHelper.ExecuteNonQuery(sql); }
private string initVirtualDesignInput(string projectInfoID, DataTable sourceDt, List <S_D_Input> SynData) { var param = new DesignInputBatchRequestData(); param.folders = new List <DesignInputRequestData>(); param.parentId = projectInfoID; var root = new DesignInputRequestData(); root.Id = GuidHelper.CreateGuid(); root.children = new List <DesignInputRequestData>(); root.name = "设计输入资料"; root.type = 31; root.FullID = root.Id; root.parentId = string.Empty; root.Code = "Root"; root.sort = 0; SynData.Add(new S_D_Input() { ProjectInfoID = projectInfoID, Code = root.Code, ID = root.Id, FullID = root.FullID, ParentID = root.parentId, Name = root.name, Type = DesignInputType.Virtual.ToString() }); param.folders.Add(root); var projectCatagory = new DesignInputRequestData(); projectCatagory.Id = GuidHelper.CreateGuid(); projectCatagory.children = new List <DesignInputRequestData>(); projectCatagory.name = "项目资料"; projectCatagory.type = 8; projectCatagory.sort = 0; projectCatagory.FullID = root.Id + "." + projectCatagory.Id; projectCatagory.parentId = root.Id; projectCatagory.Code = "Project"; SynData.Add(new S_D_Input() { ProjectInfoID = projectInfoID, ID = projectCatagory.Id, ParentID = projectCatagory.parentId, FullID = projectCatagory.FullID, Name = projectCatagory.name, Code = projectCatagory.Code, Type = DesignInputType.Virtual.ToString() }); root.children.Add(projectCatagory); var types = sourceDt.Select(" ProjectInfoID='" + projectInfoID + "'", "InputTypeIndex asc") .Select(d => new { Catagory = d["Catagory"].ToString(), Type = d["InputType"].ToString(), SortIndex = d["InputTypeIndex"] }).Distinct().ToList(); foreach (var item in types.Where(a => a.Catagory == projectCatagory.Code).ToList()) { var typeCatagory = new DesignInputRequestData(); typeCatagory.Id = GuidHelper.CreateGuid(); typeCatagory.name = item.Type; typeCatagory.type = 8; typeCatagory.sort = 0; typeCatagory.FullID = root.Id + "." + projectCatagory.Id + "." + typeCatagory.Id; typeCatagory.parentId = projectCatagory.Id; typeCatagory.Code = item.Catagory; if (item.SortIndex != null && item.SortIndex != DBNull.Value) { typeCatagory.sort = Convert.ToInt32(item.SortIndex); } SynData.Add(new S_D_Input() { ProjectInfoID = projectInfoID, ID = typeCatagory.Id, ParentID = typeCatagory.parentId, FullID = typeCatagory.FullID, Name = typeCatagory.name, Code = typeCatagory.Code, Type = DesignInputType.Virtual.ToString() }); projectCatagory.children.Add(typeCatagory); } var projectMajors = this.SQLHelpeProject.ExecuteScalar("select Major from S_I_ProjectInfo where id='" + projectInfoID + "'"); if (projectMajors != DBNull.Value && projectMajors != null && !string.IsNullOrEmpty(projectMajors.ToString())) { var majorList = JsonHelper.ToList(projectMajors.ToString()); var n = 1; foreach (var majorDic in majorList) { var majorCatagory = new DesignInputRequestData(); majorCatagory.Id = GuidHelper.CreateGuid(); majorCatagory.children = new List <DesignInputRequestData>(); majorCatagory.name = majorDic.GetValue("Name"); majorCatagory.type = 8; majorCatagory.FullID = root.Id + "." + majorCatagory.Id; majorCatagory.parentId = root.Id; majorCatagory.Code = majorDic.GetValue("Value"); majorCatagory.sort = n++; SynData.Add(new S_D_Input() { ProjectInfoID = projectInfoID, ID = majorCatagory.Id, ParentID = majorCatagory.parentId, FullID = majorCatagory.FullID, Name = majorCatagory.name, Code = majorCatagory.Code, Type = DesignInputType.Virtual.ToString() }); root.children.Add(majorCatagory); foreach (var item in types.Where(a => a.Catagory == majorCatagory.Code).ToList()) { var typeCatagory = new DesignInputRequestData(); typeCatagory.Id = GuidHelper.CreateGuid(); typeCatagory.name = item.Type; typeCatagory.type = 8; typeCatagory.sort = 0; typeCatagory.FullID = root.Id + "." + majorCatagory.Id + "." + typeCatagory.Id; typeCatagory.parentId = majorCatagory.Id; typeCatagory.Code = item.Catagory; if (item.SortIndex != null && item.SortIndex != DBNull.Value) { typeCatagory.sort = Convert.ToInt32(item.SortIndex); } SynData.Add(new S_D_Input() { ProjectInfoID = projectInfoID, ID = typeCatagory.Id, ParentID = typeCatagory.parentId, FullID = typeCatagory.FullID, Name = typeCatagory.name, Code = typeCatagory.Code, Type = DesignInputType.Virtual.ToString() }); majorCatagory.children.Add(typeCatagory); } } } var queueSql = string.Format(this.SaveQueueSqlTmp, SynType.BatchSave.ToString(), "S_D_Input", "", "" , DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), JsonHelper.ToJson <DesignInputBatchRequestData>(param).Replace("'", "''") , this.BaseServerUrl + "folder/editbatch"); return(queueSql); }
public virtual ActionResult CoreView() { try { string ID = Request.Query["ID"]; string tmplCode = Request.Query["tmplCode"]; string IsPreView = Request.Query["IsPreView"]; string UpperVersion = Request.Query["UpperVersion"]; //前台用的判断数据 ViewBag.tmplCode = tmplCode; ViewBag.IsPreView = IsPreView; ViewBag.IsPreView = IsPreView; ViewBag.UpperVersion = UpperVersion; ViewBag.FlowCode = Request.Query["FlowCode"]; ViewBag.TaskExecID = Request.Query["TaskExecID"]; //TODO 流程升版 UIBuilder uiFO = new UIBuilder(); string sql = "SELECT * FROM S_UI_Form WITH(NOLOCK) "; List <S_UI_Form> uiLists = SQLHelper.CreateSqlHelper().ExecuteList <S_UI_Form>(sql).Where(c => c.Code == tmplCode).ToList(); S_UI_Form formDef = uiLists.FirstOrDefault(); bool isNew = false; DataTable formDataDT = null; if (IsPreView == "True") { formDataDT = new DataTable(); var row = formDataDT.NewRow(); formDataDT.Rows.Add(row); } else { if (string.IsNullOrEmpty(UpperVersion)) { sql = string.Format("select count(ID) from {0} where ID='{1}'", formDef.TableName, ID); SQLHelper sqlHelper = SQLHelper.CreateSqlHelper(formDef.ConnName); var count = Convert.ToInt32(sqlHelper.ExecuteScalar(sql)); if (count == 0) { isNew = true; } formDataDT = GetModelDT(formDef, ID); } else { isNew = true; formDataDT = GetModelDT(formDef, UpperVersion, true); formDataDT.Rows[0]["ID"] = GuidHelper.CreateGuid(); formDataDT.Rows[0]["FlowPhase"] = ""; formDataDT.Rows[0]["VersionNumber"] = ""; } //TODO Import AfterGetData(formDataDT, isNew, UpperVersion); } ViewBag.FormData = JsonHelper.ToJson(formDataDT).Trim('[', ']'); var fieldInfo = JsonHelper.ToJson(uiFO.GetFieldInfo(formDef)); if (fieldInfo == "[]" || fieldInfo == "") { ViewBag.FieldInfo = "{}"; } else { ViewBag.FieldInfo = fieldInfo.Trim('[', ']'); } ViewBag.FormHtml = uiFO.CreateFormHtml(formDef); ViewBag.HiddenHtml = uiFO.CreateFormHiddenHtml(formDef); //此处允许开发者在自定义的controller中增加自己需要的脚本,同平台的脚本一起绘制在PageView中 if (ViewBag.Script != null && !String.IsNullOrEmpty(ViewBag.Script)) { ViewBag.Script += "\n " + uiFO.CreateFormScript(formDef); } else { ViewBag.Script = uiFO.CreateFormScript(formDef); } #region 子表大数据时,需要配置表单虚滚动加载 var items = JsonHelper.ToObject <List <FormItem> >(formDef.Items); ViewBag.VirtualScroll = false.ToString().ToLower(); var subTableList = items.Where(c => c.ItemType == "SubTable").ToList(); foreach (var subTableItem in subTableList) { if (String.IsNullOrEmpty(subTableItem.Settings)) { continue; } var dic = JsonHelper.ToObject(subTableItem.Settings); var dicSubTableSettings = JsonHelper.ToObject(dic["formData"].ToString()); if (dicSubTableSettings.GetValue("IsVirtualScroll") == "true") { ViewBag.VirtualScroll = true.ToString().ToLower(); break; } } #endregion if (ViewBag.DataSource == null) { var defaultValueRows = uiFO.GetDefaultValueDic(formDef.DefaultValueSettings); #region 数据源到前台 StringBuilder sb = new StringBuilder(); foreach (var key in defaultValueRows.Keys) { var guid = new Guid(); if (Guid.TryParse(key, out guid) == false) { sb.AppendFormat("\n var {0}={1}", key, JsonHelper.ToJson(defaultValueRows[key])); } } ViewBag.DataSource = sb.ToString(); #endregion } } catch (Exception ex) { throw new Exception(ex.Message); } return(View()); }
public DataTable GetModelDT(S_UI_Form formInfo, string id, bool isUpVersion = false, string taskExecID = "", string code = "") { UIBuilder uiFO = new UIBuilder(); SQLHelper sqlHelper = SQLHelper.CreateSqlHelper(formInfo.ConnName); var items = JsonHelper.ToObject <List <FormItem> >(formInfo.Items); string sql = string.Format("select * from {0} where ID='{1}'", formInfo.TableName, id); DataTable dt = sqlHelper.ExecuteDataTable(sql); //获取数据后处理加密字段 if (System.Configuration.ConfigurationManager.AppSettings["FieldEncryption"] == "True") { foreach (var item in items) { if (item.FieldType == "varbinary(500)") { string _sql = @" OPEN SYMMETRIC KEY SymmetricByCert DECRYPTION BY CERTIFICATE JinHuiCertificate "; _sql += string.Format("select convert(nvarchar(500), DecryptByKey({1})) from {0} where ID='{2}'", formInfo.TableName, item.Code, id); var obj = sqlHelper.ExecuteScalar(_sql); if (dt.Rows.Count > 0) { dt.Columns.Remove(item.Code); dt.Columns.Add(item.Code); dt.Rows[0][item.Code] = obj.ToString(); } } } } Dictionary <string, DataTable> defaultValueRows = null; if (dt.Rows.Count == 0) { defaultValueRows = uiFO.GetDefaultValueDic(formInfo.DefaultValueSettings); } else { defaultValueRows = uiFO.GetDefaultValueDic(formInfo.DefaultValueSettings, dt.Rows[0]); } #region 数据默认值 StringBuilder sb = new StringBuilder(); foreach (var key in defaultValueRows.Keys) { var guid = new Guid(); if (Guid.TryParse(key, out guid) == false) { sb.AppendFormat("\n var {0}={1}", key, JsonHelper.ToJson(defaultValueRows[key])); } } ViewBag.DataSource = sb.ToString(); #endregion if (dt.Rows.Count == 0 || isUpVersion) { #region 新对象默认值 DataRow row = null; if (dt.Rows.Count == 0) { row = dt.NewRow(); dt.Rows.Add(row); } else { row = dt.Rows[0]; } row["ID"] = string.IsNullOrEmpty(id) ? GuidHelper.CreateGuid() : id; //包含默认值设置则初始化默认值 items.Where(c => !string.IsNullOrEmpty(c.DefaultValue)).ToList().ForEach(d => { if (d.ItemType == "SubTable") { //子表 if (!dt.Columns.Contains(d.Code)) { dt.Columns.Add(d.Code); } row[d.Code] = uiFO.GetDefaultValue(d.Code, d.DefaultValue, defaultValueRows); } else if (!dt.Columns.Contains(d.Code)) { return; } else if ((d.ItemType == "ButtonEdit" || d.ItemType == "ComboBox") && d.DefaultValue.Split(',').Count() == 2) { //键值控件 string v1 = uiFO.GetDefaultValue(d.Code, d.DefaultValue.Split(',')[0], defaultValueRows); string v2 = uiFO.GetDefaultValue(d.Code, d.DefaultValue.Split(',')[1], defaultValueRows); if (!string.IsNullOrEmpty(v1) && v1.Contains('{') == false) { row[d.Code] = v1; } if (!string.IsNullOrEmpty(v2) && v2.Contains('{') == false) { var fieldName = ""; fieldName = d.Code + "Name"; if (!String.IsNullOrWhiteSpace(d.Settings)) { var settings = JsonHelper.ToObject(d.Settings); var txtName = settings.GetValue("textName"); if (!String.IsNullOrEmpty(txtName)) { fieldName = txtName; } } row[fieldName] = v2; } } else { //单值控件 string v = uiFO.GetDefaultValue(d.Code, d.DefaultValue, defaultValueRows); if (!string.IsNullOrEmpty(v) && v.Contains('{') == false) { row[d.Code] = v; } } }); #endregion #region 升版子表无默认值数据取历史版本 foreach (var item in items) { if (item.ItemType != "SubTable") { continue; } if (!dt.Columns.Contains(item.Code)) { dt.Columns.Add(item.Code); } if (!string.IsNullOrEmpty(Convert.ToString(dt.Rows[0][item.Code]))) { sql = string.Format("select * from {0}_{1} where {0}ID='{2}' order by SortIndex", formInfo.TableName, item.Code, id); DataTable dtSubTable = sqlHelper.ExecuteDataTable(sql); if (dtSubTable.Rows.Count > 0) { dt.Rows[0][item.Code] = JsonHelper.ToJson(dtSubTable); } } } #endregion //设置默认流水号 if (dt.Columns.Contains("SerialNumber") && !string.IsNullOrEmpty(formInfo.SerialNumberSettings) && !isUpVersion) { var serialNumberDic = JsonHelper.ToObject(formInfo.SerialNumberSettings); string userMode = "ONLYGET";//默认值兼容老项目没有配置该选项 if (serialNumberDic.ContainsKey("UserSerialNumber")) { userMode = serialNumberDic["UserSerialNumber"] == null ? "" : serialNumberDic["UserSerialNumber"].ToString().Trim().ToUpper(); } if (userMode != "NONE" && userMode != "FLOWEND") { bool isAutoIncrease = userMode.Equals("ONLYGET"); row["SerialNumber"] = GetSerialNumber(formInfo.Code, formInfo.SerialNumberSettings, isAutoIncrease, row, null); } } } else //获取子表数据 { #region 获取子表数据 foreach (var item in items) { if (item.ItemType != "SubTable") { continue; } //表单子表支持加密字段 if (System.Configuration.ConfigurationManager.AppSettings["FieldEncryption"] == "True") { var subTableSettings = JsonHelper.ToObject(item.Settings); var subTableItems = JsonHelper.ToObject <List <FormItem> >(subTableSettings["listData"].ToString()); StringBuilder sbSubTableFields = new StringBuilder(); sbSubTableFields.AppendFormat("ID"); foreach (var subItem in subTableItems) { if (subItem.FieldType == "") { } else if (subItem.FieldType == "varbinary(500)") { sbSubTableFields.AppendFormat(",{0}=convert(nvarchar(500), DecryptByKey({0})) ", subItem.Code); } else { sbSubTableFields.Append("," + subItem.Code); } if (subItem.ItemType == "ButtonEdit") { sbSubTableFields.Append("," + subItem.Code + "Name"); } else if (subItem.ItemType == "ComboBox" && !String.IsNullOrEmpty(subItem.Settings)) { var subSetting = JsonHelper.ToObject(subItem.Settings); if (!String.IsNullOrEmpty(subSetting.GetValue("textName"))) { sbSubTableFields.Append("," + subSetting.GetValue("textName")); } } } sql = string.Format("select {3} from {0}_{1} where {0}ID='{2}' order by SortIndex", formInfo.TableName, item.Code, id, sbSubTableFields); //子表支持加密 if (System.Configuration.ConfigurationManager.AppSettings["FieldEncryption"] == "True") { sql = @" OPEN SYMMETRIC KEY SymmetricByCert DECRYPTION BY CERTIFICATE JinHuiCertificate " + sql; } } else { sql = string.Format("select * from {0}_{1} where {0}ID='{2}' order by SortIndex", formInfo.TableName, item.Code, id); } DataTable dtSubTable = sqlHelper.ExecuteDataTable(sql); if (!dt.Columns.Contains(item.Code)) { dt.Columns.Add(item.Code); } dt.Rows[0][item.Code] = JsonHelper.ToJson(dtSubTable); } #endregion } //计算值(增加表单表没有的字段) 2015-6-16 新增功能 foreach (var item in items) { if (dt.Columns.Contains(item.Code)) { continue; } if (string.IsNullOrEmpty(item.DefaultValue)) { continue; } dt.Columns.Add(item.Code); string v = uiFO.GetDefaultValue(item.Code, item.DefaultValue, defaultValueRows); if (!string.IsNullOrEmpty(v) && v.Contains('{') == false) { dt.Rows[0][item.Code] = v; } } return(dt); }
/// <summary> /// 发送提醒 /// </summary> /// <param name="alarmTitle">提醒标题</param> /// <param name="alarmContent">正文内容</param> /// <param name="alarmUrl">事务地址</param> /// <param name="ownerName">提醒人</param> /// <param name="ownerID">提醒人ID</param> /// <param name="deadlineTime">提醒截止时间(过期日期)</param> /// <param name="alarmType">提醒模块名,比如经营提醒、OA提醒等等文本</param> /// <param name="projectInfoID">关联ID</param> /// <param name="formCode">关联Code</param> /// <param name="sendUser">发送人</param> /// <param name="isImportant">是否重要,默认否.</param> /// <param name="isUrgency">是否紧急,默认否.</param> public static void SendAlarm(string alarmTitle, string alarmContent, string alarmUrl, string ownerName, string ownerID, DateTime?deadlineTime, string alarmType, string projectInfoID, string formCode, UserInfo sendUser, Dictionary <string, object> dic = null, bool isImportant = false, bool isUrgency = false) { if (dic != null) { Regex reg = new Regex("\\{[0-9a-zA-Z_\u4e00-\u9faf]*\\}"); alarmTitle = reg.Replace(alarmTitle, (Match m) => { string value = m.Value.Trim('{', '}'); if (dic != null && dic.ContainsKey(value)) { return(dic[value].ToString()); } else { return(value); } }); alarmContent = reg.Replace(alarmContent, (Match m) => { string value = m.Value.Trim('{', '}'); if (dic != null && dic.ContainsKey(value)) { return(dic[value].ToString()); } else { return(value); } }); alarmUrl = reg.Replace(alarmUrl, (Match m) => { string value = m.Value.Trim('{', '}'); if (dic != null && dic.ContainsKey(value)) { return(dic[value].ToString()); } else { return(value); } }); } alarmTitle = alarmTitle.Replace("'", "''"); alarmContent = alarmContent.Replace("'", "''"); string alarmID = GuidHelper.CreateGuid(); string userID = ""; string userName = "******"; if (sendUser != null) { userID = sendUser.UserID; userName = sendUser.UserName; } StringBuilder sb = new StringBuilder(); sb.AppendFormat(alarmSql, alarmID, isImportant ? "1" : "0", isUrgency ? "1" : "0", alarmType, alarmTitle, alarmContent, alarmUrl, ownerName, ownerID, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), deadlineTime == null ? "null" : Convert.ToDateTime(deadlineTime).ToString("yyyy-MM-dd HH:mm:ss"), userName, userID, projectInfoID, formCode); SQLHelper sqlHelper = SQLHelper.CreateSqlHelper(ConnEnum.Base); if (Config.Constant.IsOracleDb) { string sql = sb.ToString(); sql = sql.Replace("\r\n", "").Replace("\n", ""); sql = "begin " + sql + " end;"; sqlHelper.ExecuteNonQuery(sql); } else { sqlHelper.ExecuteNonQuery(sb.ToString()); } }
public override void AfterGetData(Dictionary <string, object> data) { if (this.Task.BusinessType != BusinessType.GetData.ToString()) { return; } var projectInfoID = this.Task.BusinessID; var productDt = this.BusinessSQLHelper.ExecuteDataTable(@"select * from S_E_Product where ProjectInfoID='" + projectInfoID + "'"); var versionDt = this.BusinessSQLHelper.ExecuteDataTable(@"select * from S_E_ProductVersion where ProjectInfoID='" + projectInfoID + "'"); var dbsDt = this.BusinessSQLHelper.ExecuteDataTable(@"select * from S_D_DBS where ProjectInfoID='" + projectInfoID + "' and DBSType='OEMMapping'"); var documentDt = this.BusinessSQLHelper.ExecuteDataTable(@"select * from S_D_Document where ProjectInfoID='" + projectInfoID + "'"); var documentVersisonDt = this.BusinessSQLHelper.ExecuteDataTable(@"select * from S_D_DocumentVersion where DocumentID in ( select ID from S_D_Document where ProjectInfoID='" + projectInfoID + "')"); StringBuilder sb = new StringBuilder(); StringBuilder filesb = new StringBuilder(); var errorList = new List <Dictionary <string, string> >(); var folders = JsonHelper.ToList(data.GetValue("folders")); //目录集合 var files = JsonHelper.ToList(data.GetValue("files")); //文件集合 var oemFolderIDs = new List <string>(); #region 其他资料逻辑 生成DBS //生成DBS 及 Document var oemDBSRoot = dbsDt.Select("DBSCode='OEM_Szsow'").FirstOrDefault(); if (oemDBSRoot == null) { errorList.Add(new Dictionary <string, string>() { { "Msg", "同步DBS失败,未找到编号为OEM_Szsow的DBS文件夹" } }); } else { var rootFolder = folders.FirstOrDefault(a => a.GetValue("FolderType") == Convert.ToInt32(FolderTypeEnum.Project).ToString()); if (rootFolder == null) { errorList.Add(new Dictionary <string, string>() { { "Msg", "同步DBS失败,未找FolderType=1的公共区文件夹(根节点)" } }); } else { var allFolderList = folders.Where(a => a.GetValue("FolderType") == Convert.ToInt32(FolderTypeEnum.Folder).ToString()).ToList(); var childrenFolder = allFolderList.Where(a => a.GetValue("PID") == rootFolder.GetValue("ID")).ToList(); foreach (var item in childrenFolder) { createDbs(item, allFolderList, oemDBSRoot, dbsDt, sb);//递归生成DBS目录及下层文件 } //删除逻辑 oemFolderIDs = allFolderList.Select(a => a.GetValue("ID")).ToList(); var epmIDs = dbsDt.AsEnumerable().Select(c => c.Field <string>("ID")).ToList(); epmIDs.Remove(oemDBSRoot["ID"].ToString()); var deleteIDs = epmIDs.Where(a => !oemFolderIDs.Contains(a)).ToArray(); if (deleteIDs.Length > 0) { string dbsDelSql = "delete from S_D_DBS where id in ('" + string.Join("','", deleteIDs) + "')"; sb.AppendLine(dbsDelSql); } } } #endregion #region 成果绑定附件 及生成 document数据 foreach (var item in files) { if (string.IsNullOrEmpty(item.GetValue("file"))) { errorList.Add(new Dictionary <string, string>() { { "Msg", "file为null" } }); continue; } var file = JsonHelper.ToObject(item.GetValue("file")); #region 生成document数据 if (oemFolderIDs.Contains(file.GetValue("FolderID"))) { var dbsRow = dbsDt.Select("ID='" + file.GetValue("FolderID") + "'").FirstOrDefault(); if (dbsRow == null) { errorList.Add(new Dictionary <string, string>() { { "FolderID", file.GetValue("FolderID") }, { "Msg", "生成document数据失败,dbsRow为null" } }); } else { var fileID = file.GetValue("ID"); var documentRow = documentDt.Select("ID='" + fileID + "'").FirstOrDefault(); if (documentRow == null) { documentRow = documentDt.NewRow(); documentDt.Rows.Add(documentRow); documentRow["ID"] = fileID; documentRow["ProjectInfoID"] = projectInfoID; documentRow["DBSID"] = dbsRow["ID"]; documentRow["DBSFullID"] = dbsRow["FullID"]; documentRow["State"] = "Normal"; documentRow["CreateDate"] = DataHelper.FormatTime(file.GetValue("CreateDate")); documentRow["CreateUser"] = file.GetValue("LockUserName"); documentRow["CreateUserID"] = file.GetValue("LockUserID"); documentRow["Version"] = 1; } var documentName = file.GetValue("Name"); var documentMD5Code = file.GetValue("MD5"); //当md5不同时才进入文件队列,调用文件下载服务 if (documentRow["FontFile"] == null || documentRow["FontFile"] == DBNull.Value || documentRow["FontFile"].ToString() != documentMD5Code) { #region 生成待同步文件队列 if (!string.IsNullOrEmpty(documentMD5Code) && !string.IsNullOrEmpty(documentName)) { string fileTaskSql = @" insert into S_OEM_TaskFileList(OEMCode,BusinessCode,BusinessID,CreateTime,MD5Code,FileName) values( '{0}','{1}','{2}','{3}','{4}','{5}')"; fileTaskSql = string.Format(fileTaskSql, Task.OEMCode, Task.BusinessCode + ".document", fileID, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), documentMD5Code, documentName.Replace("'", "''")); filesb.AppendLine(fileTaskSql); } #endregion } documentRow["Name"] = documentName; documentRow["FontFile"] = documentMD5Code; //documentRow["Code"] = file.GetObject("Serial"); //documentRow["MainFiles"] = file.GetObject("Serial"); documentRow["ModifyUserID"] = file.GetValue("LockUserID"); documentRow["ModifyUser"] = file.GetValue("LockUserName"); documentRow["ModifyDate"] = DataHelper.FormatTime(file.GetValue("LockedDate")); string documentSql = SQLHelper.CreateUpdateSql("S_D_Document", documentRow); sb.AppendLine(documentSql); //documentVersion var documentVersionRow = documentVersisonDt.Select("DocumentID='" + fileID + "'").FirstOrDefault(); if (documentVersionRow == null) { documentVersionRow = documentVersisonDt.NewRow(); documentVersisonDt.Rows.Add(documentVersionRow); documentVersionRow["ID"] = GuidHelper.CreateGuid(); documentVersionRow["DocumentID"] = fileID; } foreach (DataColumn col in documentVersisonDt.Columns) { if (col.ColumnName == "ID") { continue; } if (productDt.Columns.Contains(col.ColumnName)) { documentVersionRow[col] = documentRow[col.ColumnName]; } } string versionSql = SQLHelper.CreateUpdateSql("S_D_DocumentVersion", documentVersionRow); sb.AppendLine(versionSql); } } #endregion #region 成果绑定附件 var sourceFileId = item.GetValue("sourceFileId"); var sourceMd5 = item.GetValue("sourceMd5"); if (string.IsNullOrEmpty(sourceFileId) || string.IsNullOrEmpty(sourceMd5)) { continue; } if (string.IsNullOrEmpty(item.GetValue("attachInfo"))) { errorList.Add(new Dictionary <string, string>() { { "sourceFileId", sourceFileId }, { "Msg", "attachInfo为null" } }); continue; } var frameInfo = JsonHelper.ToObject(item.GetValue("attachInfo")); var drawingNo = frameInfo.GetValue("图号"); var ext = file.GetValue("Extension"); var fileName = file.GetValue("Name"); var md5Code = file.GetValue("MD5"); var productRow = productDt.Select("SwfFile='" + sourceFileId + "' and ShotSnap='" + sourceMd5 + "' and Code='" + drawingNo + "' ").FirstOrDefault(); if (productRow == null) { continue; } //当md5不同时才进入文件队列,调用文件下载服务 var PlotFileDic = new Dictionary <string, string>() { }; if (productRow["PlotFile"] != null && productRow["PlotFile"] != DBNull.Value && !string.IsNullOrEmpty(productRow["PlotFile"].ToString())) { PlotFileDic = JsonHelper.ToObject <Dictionary <string, string> >(productRow["PlotFile"].ToString()); } if (productRow["PlotFile"] == null || productRow["PlotFile"] == DBNull.Value || PlotFileDic.GetValue(ext) != md5Code) { var detailID = productRow["ID"].ToString(); PlotFileDic.SetValue(ext, md5Code); productRow["PlotFile"] = JsonHelper.ToJson(PlotFileDic); sb.AppendLine(SQLHelper.CreateUpdateSql("S_E_Product", productRow)); var versionRow = versionDt.Select("ProductID='" + detailID + "'").FirstOrDefault(); versionRow["PlotFile"] = productRow["PlotFile"]; sb.AppendLine(SQLHelper.CreateUpdateSql("S_E_ProductVersion", versionRow)); #region 生成待同步文件队列 if (!string.IsNullOrEmpty(md5Code) && !string.IsNullOrEmpty(fileName)) { string fileTaskSql = @" insert into S_OEM_TaskFileList(OEMCode,BusinessCode,BusinessID,CreateTime,MD5Code,FileName) values( '{0}','{1}','{2}','{3}','{4}','{5}')"; fileTaskSql = string.Format(fileTaskSql, Task.OEMCode, Task.BusinessCode + ext, detailID, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), md5Code, fileName.Replace("'", "''")); filesb.AppendLine(fileTaskSql); } #endregion } #endregion } #endregion if (errorList.Count > 0) { this.Task.ErrorMsg = JsonHelper.ToJson(errorList); } if (sb.Length > 0) { this.BusinessSQLHelper.ExecuteNonQuery(sb.ToString()); } if (filesb.Length > 0) { this.BaseSQLHelper.ExecuteNonQuery(filesb.ToString()); } }
public JsonResult GetTreeList(string ListIDs) { var versionList = ListIDs.Split(','); var result = new DataTable(); result.Columns.Add("ID"); result.Columns.Add("ParentID"); result.Columns.Add("Code"); result.Columns.Add("ParentCode"); result.Columns.Add("Name"); result.Columns.Add("NodeType"); result.Columns.Add("SortIndex"); result.Columns.Add("Diff"); foreach (var item in versionList) { result.Columns.Add(item + "_TotalValue", typeof(decimal)); result.Columns.Add(item + "_UnitPrice", typeof(decimal)); result.Columns.Add(item + "_Quantity", typeof(decimal)); } string sql = @"select CBSID as ID,Name,Code,CBSParentID as ParentID,SortIndex,NodeType,S_EP_BudgetVersionID, UnitPrice,Quantity,TotalValue from S_EP_BudgetVersion_Detail where S_EP_BudgetVersionID in ('{0}') "; var dataTable = this.SQLDB.ExecuteDataTable(String.Format(sql, ListIDs.Replace(",", "','"))); var totalRow = result.NewRow(); totalRow["Code"] = GuidHelper.CreateGuid(); totalRow["ID"] = GuidHelper.CreateGuid(); totalRow["ParentID"] = ""; totalRow["ParentCode"] = ""; totalRow["Name"] = "预算单元"; totalRow["NodeType"] = "Root"; totalRow["SortIndex"] = "-100"; totalRow["Diff"] = false.ToString(); result.Rows.Add(totalRow); foreach (DataRow row in dataTable.Rows) { if (row["S_EP_BudgetVersionID"] == null || row["S_EP_BudgetVersionID"] == DBNull.Value || String.IsNullOrEmpty(row["S_EP_BudgetVersionID"].ToString())) { continue; } var versionID = row["S_EP_BudgetVersionID"].ToString(); var resultRows = result.Select("Code='" + row["Code"] + "'"); var parentRows = dataTable.Select("ID = " + "'" + row["ParentID"].ToString() + "'"); if (resultRows.Length == 0) { var resultRow = result.NewRow(); resultRow["ID"] = row["ID"]; resultRow["Code"] = row["Code"]; resultRow["Name"] = row["Name"]; resultRow["NodeType"] = row["NodeType"]; resultRow["SortIndex"] = row["SortIndex"]; resultRow["Diff"] = false.ToString(); if (parentRows.Length == 0) { resultRow["ParentID"] = totalRow["ID"]; resultRow["ParentCode"] = totalRow["Code"]; } else { resultRow["ParentID"] = row["ParentID"]; resultRow["ParentCode"] = parentRows[0]["Code"]; } resultRow[versionID + "_TotalValue"] = row["TotalValue"]; resultRow[versionID + "_UnitPrice"] = row["UnitPrice"]; resultRow[versionID + "_Quantity"] = row["Quantity"]; result.Rows.Add(resultRow); } else { var resultRow = resultRows.FirstOrDefault(); resultRow[versionID + "_TotalValue"] = row["TotalValue"]; resultRow[versionID + "_UnitPrice"] = row["UnitPrice"]; resultRow[versionID + "_Quantity"] = row["Quantity"]; } if (parentRows.Length == 0) { decimal totalTmp = 0, tmp = 0; decimal.TryParse(totalRow[versionID + "_TotalValue"].ToString(), out totalTmp); decimal.TryParse(row["TotalValue"].ToString(), out tmp); totalRow[versionID + "_TotalValue"] = totalTmp + tmp; } } foreach (DataRow item in result.Rows) { var lastTotalValue = -1m; for (int i = 0; i < versionList.Length; i++) { var field = versionList[i] + "_TotalValue"; var totalValue = item[field] == null || item[field] == DBNull.Value ? 0m : Convert.ToDecimal(item[field]); if (totalValue != lastTotalValue && (lastTotalValue >= 0)) { item["Diff"] = true.ToString(); break; } lastTotalValue = totalValue; } } var rows = result.Select(); var resultDt = result.Clone(); resultDt.Clear(); foreach (var item in rows) { resultDt.ImportRow(item); } return(Json(resultDt)); }
//校审意见库分类 public void CreateCatalogQueue() { var sourceSql = @"select distinct Major,Catalog from S_AE_AuditAdvice where Major is not null and Catalog is not null and Level='System'"; //取最近的同步记录时间,到当前时间的差异数据 var synData = this.SQLHelperInterface.ExecuteList <S_AE_AuditAdviceCatalog>("select * from S_AE_AuditAdviceCatalog where State='Normal' "); //数据库中所有专业、分类 var alldt = this.SQLHelpeProject.ExecuteDataTable(sourceSql).AsEnumerable(); #region Remove var removeSb = new StringBuilder(); var removeUrl = this.BaseServerUrl + "Article/DeleteArticle"; var removeList = new List <S_AE_AuditAdviceCatalog>(); foreach (var item in synData) { var exist = alldt.FirstOrDefault(a => a["Major"].ToString() == item.MajorCode && a["Catalog"].ToString() == item.Name); if (exist == null) { removeList.Add(item); } } foreach (var item in removeList) { var queueSql = string.Format(this.SaveQueueSqlTmp, SynType.Remove.ToString(), "S_AE_AuditAdviceCatalog", item.ID, "" , DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), JsonHelper.ToJson <DeleteRequestData>(new DeleteRequestData() { id = item.ID }), removeUrl); removeSb.AppendLine(queueSql); } if (removeSb.Length > 0) { this.SQLHelperInterface.ExecuteNonQuery(removeSb.ToString()); } #endregion #region Add var saveSb = new StringBuilder(); var saveUrl = this.BaseServerUrl + "Article/CreateArticle"; foreach (var item in alldt) { var major = item["Major"].ToString(); var catalog = item["Catalog"].ToString(); if (!synData.Exists(a => a.MajorCode == major && a.Name == catalog)) { var param = new AuditAdviceCatalogRequestData(); param.id = GuidHelper.CreateGuid(); param.title = catalog; //分类 param.specialtyCode = major; //专业 var queueSql = string.Format(this.SaveQueueSqlTmp, SynType.Save.ToString(), "S_AE_AuditAdviceCatalog", param.id, "" , DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), JsonHelper.ToJson <AuditAdviceCatalogRequestData>(param).Replace("'", "''"), saveUrl); saveSb.AppendLine(queueSql); } } if (saveSb.Length > 0) { this.SQLHelperInterface.ExecuteNonQuery(saveSb.ToString()); } #endregion }
public virtual string GenerateNonce(int timestamp) { return(GuidHelper.CreateGuid().ToString("D")); }
public void CreateProjectQueue() { //URL地址 var saveUrl = this.BaseServerUrl + "project/edit"; var removeUrl = this.BaseServerUrl + "project/delete"; var sourceSql = "select * from S_I_ProjectInfo where 1=1 "; var synProjectMode = ConfigurationManager.AppSettings["SynProjectMode"] != null ? ConfigurationManager.AppSettings["SynProjectMode"].ToString() : string.Empty; var whereSql = string.Empty; if (!string.IsNullOrEmpty(synProjectMode)) { whereSql = "and ModeCode in ('" + synProjectMode.Replace(",", "','") + "') "; } //取最近的同步记录时间,到当前时间的差异数据 var synData = this.SQLHelperInterface.ExecuteList <S_I_ProjectInfo>("select * from S_I_ProjectInfo"); var lastSynTime = synData.Max(a => a.SynTime); if (lastSynTime != null) { //判断同步增量数据 还是 所有数据 var startDate = Convert.ToDateTime(lastSynTime).ToString(); var endDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); whereSql += " and ModifyDate >='" + startDate + "' and ModifyDate <='" + endDate + "'"; } sourceSql += whereSql; var saveSb = new StringBuilder(); var sourceDt = this.SQLHelpeProject.ExecuteDataTable(sourceSql); var wbsDt = this.SQLHelpeProject.ExecuteDataTable("select * from S_W_WBS with(nolock) where ProjectInfoID in (select ID from S_I_ProjectInfo where 1=1 " + whereSql + ")"); var rbsDt = this.SQLHelpeProject.ExecuteDataTable("select * from S_W_RBS with(nolock) where ProjectInfoID in (select ID from S_I_ProjectInfo where 1=1 " + whereSql + ")"); #region 角色编号对应关系、图框属性对应 var roleCodeDic = new Dictionary <string, string>(); //角色编号对应关系 var attrDic = new Dictionary <string, string>(); //图框属性对应关系 foreach (var key in ConfigurationManager.AppSettings.AllKeys) { if (key.StartsWith("FrameAttr_")) { attrDic.SetValue(key.Replace("FrameAttr_", ""), ConfigurationManager.AppSettings[key].ToString()); } else if (key.StartsWith("RoleCode_")) { roleCodeDic.SetValue(key.Replace("RoleCode_", ""), ConfigurationManager.AppSettings[key].ToString()); } } #endregion var removeSb = new StringBuilder(); foreach (DataRow prjRow in sourceDt.Rows) { var projectDic = DataHelper.DataRowToDic(prjRow); //设置参数 var param = new ProjectRequestData(); param.id = projectDic.GetValue("ID"); param.name = projectDic.GetValue("Name"); param.code = projectDic.GetValue("Code"); param.constructionUnit = projectDic.GetValue("CustomerName"); param.enable = true; param.standard = true; param.isdeleted = false; var state = projectDic.GetValue("State"); var enableStates = new string[] { "Finish", "Pause", "Terminate" };//完工、暂停、终止 if (enableStates.Contains(state)) { param.enable = false; } //项目经理 #region 项目经理 var pmList = new List <string>(); var pmRows = rbsDt.Select("ProjectInfoID='" + param.id + "' and RoleCode='" + ProjectRole.ProjectManager.ToString() + "'"); foreach (DataRow row in pmRows) { if (row["UserID"] == null || row["UserID"] == DBNull.Value) { continue; } var userId = row["UserID"].ToString(); if (string.IsNullOrEmpty(userId)) { continue; } var synUser = GlobalData.UserList.FirstOrDefault(a => a.ID == userId); if (synUser != null && !string.IsNullOrEmpty(synUser.SynID)) { userId = synUser.SynID; } if (!pmList.Contains(userId)) { pmList.Add(userId); } } param.owerUserId = string.Join(",", pmList.ToArray()); #endregion //阶段 #region 阶段 param.phases = new List <phase>(); var phaseRows = wbsDt.Select("ProjectInfoID='" + param.id + "' and WBSType='" + WBSNodeType.Phase.ToString() + "'"); foreach (DataRow row in phaseRows) { var item = new phase(); param.phases.Add(item); var phaseWBSID = row["ID"].ToString(); item.PhaseCode = row["WBSValue"].ToString(); item.phaseUsers = new List <ProjectUser>(); item.subProjects = new List <subProject>(); var children = wbsDt.Select("ParentID='" + phaseWBSID + "'"); if (children.FirstOrDefault() != null) { if (children.FirstOrDefault()["WBSType"].ToString() == WBSNodeType.Major.ToString()) { //阶段-专业 foreach (var majorRow in children) { //处理专业节点及所有以上人员 //项目经理通过owerUserId处理 var wbsids = majorRow["FullID"].ToString().Replace(".", "','"); var roleUserRows = rbsDt.Select("WBSID in ('" + wbsids + "') and RoleCode <>'" + ProjectRole.ProjectManager.ToString() + "'"); var majorCode = majorRow["WBSValue"].ToString(); setProjectUser(roleUserRows, item.phaseUsers, majorCode, roleCodeDic); } } else { //阶段-子项-专业 foreach (var subProjectRow in children) { var subProject = new subProject(); item.subProjects.Add(subProject); subProject.id = subProjectRow["ID"].ToString(); subProject.Name = subProjectRow["Name"].ToString(); if (subProjectRow["Code"] != null && subProjectRow["Code"] != DBNull.Value) { subProject.Code = subProjectRow["Code"].ToString(); } else { subProject.Code = subProject.Name; } subProject.users = new List <ProjectUser>(); var spChildren = wbsDt.Select("ParentID='" + subProjectRow["ID"].ToString() + "' and WBSType='" + WBSNodeType.Major.ToString() + "'"); foreach (var majorRow in spChildren) { //处理专业节点及所有以上人员 //项目经理通过owerUserId处理 var wbsids = majorRow["FullID"].ToString().Replace(".", "','"); var roleUserRows = rbsDt.Select("WBSID in ('" + wbsids + "') "); var majorCode = majorRow["WBSValue"].ToString(); setProjectUser(roleUserRows, subProject.users, majorCode, roleCodeDic); } } } } } #endregion //图框扩展属性 结构比较怪异,需要传递树层数据 #region 图框扩展属性 param.drawInfo = new List <drawInfo>(); foreach (var field in attrDic.Keys) { var code = attrDic.GetValue(field); var name = projectDic.GetValue(field); if (string.IsNullOrEmpty(name)) { continue; } var droot = new drawInfo(); droot.ProjectId = param.id; droot.ID = GuidHelper.CreateGuid(); droot.Name = code; droot.Code = code; droot.Description = string.Empty; param.drawInfo.Add(droot); foreach (var item in name.Split(',')) { var dvalue = new drawInfo(); dvalue.ProjectId = param.id; dvalue.ID = GuidHelper.CreateGuid(); dvalue.Name = item; dvalue.Description = droot.ID; dvalue.Code = string.Empty; param.drawInfo.Add(dvalue); } } #endregion var queueSql = string.Format(this.SaveQueueSqlTmp, SynType.Save.ToString(), "S_I_ProjectInfo", param.id, "" , DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), JsonHelper.ToJson <ProjectRequestData>(param).Replace("'", "''"), saveUrl); saveSb.AppendLine(queueSql); } var idSql = "select ID from S_I_ProjectInfo where 1=1"; if (!string.IsNullOrEmpty(synProjectMode)) { idSql += "and ModeCode in ('" + synProjectMode.Replace(",", "','") + "') "; } var alldt = this.SQLHelpeProject.ExecuteDataTable(idSql); var allIDs = new List <string>(); foreach (DataRow item in alldt.Rows) { allIDs.Add(item["ID"].ToString()); } var removeList = synData.Where(a => !allIDs.Contains(a.ID) && a.State == DataState.Normal.ToString()).ToList(); foreach (var item in removeList) { var queueSql = string.Format(this.SaveQueueSqlTmp, SynType.Remove.ToString(), "S_I_ProjectInfo", item.ID, "" , DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), JsonHelper.ToJson <DeleteRequestData>(new DeleteRequestData() { id = item.ID }), removeUrl); removeSb.AppendLine(queueSql); } if (removeSb.Length > 0) { this.SQLHelperInterface.ExecuteNonQuery(removeSb.ToString()); } if (saveSb.Length > 0) { this.SQLHelperInterface.ExecuteNonQuery(saveSb.ToString()); } }
public override void AfterGetData(Dictionary <string, object> data) { if (this.Task.BusinessType != BusinessType.GetData.ToString()) { return; } var projectInfoID = this.Task.BusinessID; var wbsDt = this.BusinessSQLHelper.ExecuteDataTable(@"select * from S_W_WBS where ProjectInfoID='" + projectInfoID + "'"); var productDt = this.BusinessSQLHelper.ExecuteDataTable(@"select * from S_E_Product where ProjectInfoID='" + projectInfoID + "'"); var versionDt = this.BusinessSQLHelper.ExecuteDataTable(@"select * from S_E_ProductVersion where ProjectInfoID='" + projectInfoID + "'"); var auditDt = this.BusinessSQLHelper.ExecuteDataTable(@"select * from T_EXE_Audit where ProjectInfoID='" + projectInfoID + "'"); var auditAdviceDt = this.BusinessSQLHelper.ExecuteDataTable(@"select * from T_EXE_Audit_AdviceDetail where T_EXE_AuditID in (select id from T_EXE_Audit where ProjectInfoID='" + projectInfoID + "') "); var mistakeDt = this.BusinessSQLHelper.ExecuteDataTable(@"select * from S_AE_Mistake where ProjectInfoID='" + projectInfoID + "'"); var taskDt = this.BusinessSQLHelper.ExecuteDataTable(@"select * from S_W_TaskWork where ProjectInfoID='" + projectInfoID + "'"); StringBuilder sb = new StringBuilder(); StringBuilder basesb = new StringBuilder(); var Tasks = JsonHelper.ToList(data.GetValue("Tasks")); //任务集合 var Files = JsonHelper.ToList(data.GetValue("Files")); //原图集合,发送校审后有数据 //var Versions = JsonHelper.ToList(data.GetValue("Versions"));//原图版本数据,根据日期获取最新版, var Proofs = JsonHelper.ToList(data.GetValue("Proofs")); //校审记录 校审通过后md5字段才有数据 var Comments = JsonHelper.ToList(data.GetValue("Comments")); //批注意见 var errorList = new List <Dictionary <string, string> >(); foreach (var task in Tasks) { var taskID = task.GetValue("TaskID"); var taskRow = taskDt.Select("ID='" + taskID + "'").FirstOrDefault(); if (taskRow == null) { //删除 basesb.AppendFormat("insert into S_OEM_TaskList(OEMCode,BusinessType,BusinessCode,BusinessID,CreateTime) values( '{0}','{1}','{2}','{3}','{4}')", Task.OEMCode, BusinessType.Remove.ToString(), Task.BusinessCode, taskID, Task.CreateTime.ToString()); basesb.AppendLine(); } } foreach (var file in Files) { var fileID = file.GetValue("ID"); var wbsID = string.Empty; var proof = Proofs.Where(a => a.GetValue("FileId") == fileID) .OrderByDescending(a => Convert.ToInt64(a.GetValue("CreateDate"))).FirstOrDefault(); if (proof == null) { errorList.Add(new Dictionary <string, string>() { { "FileId", fileID }, { "Name", file.GetValue("Name") }, { "Msg", "proof为null" } }); continue; } #region 获得WBSID string phaseName = file.GetValue("PhaseName"), subProjectName = file.GetValue("SubProjectName"), majorName = file.GetValue("SpecialtyName"), taskName = file.GetValue("TaskName"); var wbsRow = GetWBS(wbsDt, phaseName, subProjectName, majorName, taskName); if (wbsRow != null) { wbsID = wbsRow["ID"].ToString(); } if (string.IsNullOrEmpty(wbsID)) { errorList.Add(new Dictionary <string, string>() { { "FileId", fileID }, { "Name", file.GetValue("Name") }, { "Msg", "WBSID为null" } }); continue; } var rootWbs = wbsDt.Select("WBSType='" + WBSNodeType.Project.ToString() + "'").FirstOrDefault(); if (rootWbs == null) { errorList.Add(new Dictionary <string, string>() { { "FileId", fileID }, { "Name", file.GetValue("Name") }, { "Msg", "WBSRoot为null" } }); continue; } #endregion var description = file.GetValue("Description"); if (string.IsNullOrEmpty(description)) { errorList.Add(new Dictionary <string, string>() { { "FileId", fileID }, { "Name", file.GetValue("Name") }, { "Msg", "Description为null,未开启校审识别图框" } }); continue; } var drawings = JsonHelper.ToList(description);//图框信息 if (drawings.Count == 0) { errorList.Add(new Dictionary <string, string>() { { "FileId", fileID }, { "Name", file.GetValue("Name") }, { "Msg", "Description为[],未检测到图框信息" } }); continue; } var state = proof.GetValue("State"); //循环图框 foreach (var drawing in drawings) { var code = drawing.GetValue("DrawingNo"); if (string.IsNullOrEmpty(code)) { errorList.Add(new Dictionary <string, string>() { { "FileId", fileID }, { "DrawingNo", code }, { "Msg", "DrawingNo为null" } }); continue; } var name = drawing.GetValue("DrawingName"); var size = drawing.GetValue("Size"); var designerName = drawing.GetValue("Designer");//图框输入值 #region 生成业务记录S_E_Product、S_E_ProductVersion #region S_E_Product var productRow = productDt.Select("Code='" + code + "' and Name='" + name + "' and WBSID ='" + wbsID + "'").FirstOrDefault(); var auditId = string.Empty; var productId = string.Empty; if (productRow == null) { productRow = productDt.NewRow(); productDt.Rows.Add(productRow); auditId = GuidHelper.CreateGuid(); productId = GuidHelper.CreateGuid(); productRow["ID"] = productId; productRow["ProjectInfoID"] = projectInfoID; productRow["WBSID"] = wbsID; productRow["WBSFullID"] = wbsRow["FullID"].ToString(); productRow["AuditID"] = auditId; productRow["CreateUser"] = file.GetValue("LockUserName"); productRow["CreateUserID"] = file.GetValue("LockUserID"); productRow["CreateDate"] = DateTime.Now; productRow["ModifyUser"] = productRow["CreateUser"]; productRow["ModifyUserID"] = productRow["CreateUserID"]; productRow["ModifyDate"] = productRow["CreateDate"]; productRow["FileType"] = "图纸"; productRow["Version"] = 1; productRow["State"] = "Create"; productRow["SignState"] = "False"; productRow["CoSignState"] = "NoSign"; productRow["ArchiveState"] = "False"; productRow["PrintState"] = "UnPrint"; } else { productId = productRow["ID"].ToString(); auditId = productRow["AuditID"].ToString(); productRow["ModifyUser"] = file.GetValue("LockUserID"); productRow["ModifyUserID"] = file.GetValue("LockUserName"); productRow["ModifyDate"] = DateTime.Now; } productRow["SwfFile"] = fileID; //此模式下SwfFile、ShotSnap无用,所以记录FileID和MD5,在GetAreaData接口根据这两个值绑定Mainfile 和 Pdffile productRow["ShotSnap"] = proof.GetValue("Md5"); //proof的Md5 是在校审完成后才会赋值 productRow["Name"] = name; productRow["Code"] = code; productRow["FileSize"] = size; productRow["SubmitDate"] = DataHelper.FormatTime(proof.GetValue("CreateDate")); /*Proofs字段说明 * Step1State - Step6State:step1 = 校对,2 = 审核,3 = 审定 * 值:0 = 还未送到当前节点,1 = 未读,2 = 校对中/审核中/审定中,3 = 退回,4 = 完成 * State:0 = 未完成,1 = 完成,待最后确认(和存储相关,可忽略),2 = 完成 */ if (state == "0") { productRow["AuditState"] = "Flow"; } else { productRow["AuditState"] = "Pass"; productRow["AuditPassDate"] = DateTime.Now; } if (GlobalData.MajorEnum.Any(a => a.Value == majorName)) { productRow["MajorValue"] = GlobalData.MajorEnum.FirstOrDefault(a => a.Value == majorName).Key; } if (GlobalData.PhaseEnum.Any(a => a.Value == phaseName)) { productRow["PhaseValue"] = GlobalData.PhaseEnum.FirstOrDefault(a => a.Value == phaseName).Key; } productRow["SubProjectInfo"] = subProjectName; //TaskName if (wbsRow["WBSType"].ToString() == WBSNodeType.Work.ToString()) { productRow["PackageName"] = taskName; productRow["PackageCode"] = wbsRow["Code"].ToString(); } //设校审人员 productRow["Designer"] = file.GetValue("LockUserID"); productRow["DesignerName"] = file.GetValue("LockUserName"); var proofUsers = JsonHelper.ToList(proof.GetValue("ProofUsers")); foreach (var proofUser in proofUsers) { var userid = proofUser.GetValue("UserId"); var userRow = GlobalData.UserDt.Select("ID='" + userid + "'").FirstOrDefault(); if (userRow == null) { continue; } var userName = userRow["Name"].ToString(); var proofSerial = proofUser.GetValue("Serial"); var auditType = string.Empty; if (proofSerial == OEMCollactorSerial) { auditType = "Collactor"; } else if (proofSerial == OEMAuditorSerial) { auditType = "Auditor"; } else if (proofSerial == OEMApproverSerial) { auditType = "Approver"; } if (!string.IsNullOrEmpty(auditType)) { productRow[auditType] = userid; productRow[auditType + "Name"] = userName; } } string productSql = SQLHelper.CreateUpdateSql("S_E_Product", productRow); sb.AppendLine(productSql); #endregion #region S_E_ProductVersion //version var versionRow = versionDt.Select("ProductID='" + productId + "'").FirstOrDefault(); if (versionRow == null) { versionRow = versionDt.NewRow(); versionDt.Rows.Add(versionRow); versionRow["ID"] = GuidHelper.CreateGuid(); versionRow["ProductID"] = productId; } foreach (DataColumn col in versionDt.Columns) { if (col.ColumnName == "ID") { continue; } if (productDt.Columns.Contains(col.ColumnName)) { versionRow[col] = productRow[col.ColumnName]; } } string versionSql = SQLHelper.CreateUpdateSql("S_E_ProductVersion", versionRow); sb.AppendLine(versionSql); #endregion #endregion #region 生成校审记录T_EXE_Audit、T_EXE_Audit_AdviceDetail、S_AE_Mistake /*Proofs字段说明 * Step1State - Step6State:step1 = 校对,2 = 审核,3 = 审定 * 值:0 = 还未送到当前节点,1 = 未读,2 = 校对中/审核中/审定中,3 = 退回,4 = 完成 * State:0 = 未完成,1 = 完成,待最后确认(和存储相关,可忽略),2 = 完成 */ #region T_EXE_Audit var auditRow = auditDt.Select("ID='" + auditId + "'").FirstOrDefault(); if (auditRow == null) { auditRow = auditDt.NewRow(); auditDt.Rows.Add(auditRow); auditRow["ID"] = auditId; auditRow["ProjectInfoID"] = projectInfoID; auditRow["WBSID"] = wbsID; auditRow["ProjectInfoName"] = rootWbs["Name"].ToString(); auditRow["ProjectInfoCode"] = rootWbs["Code"].ToString(); auditRow["SubProjectName"] = subProjectName; auditRow["PhaseCode"] = productRow["PhaseValue"]; auditRow["MajorCode"] = productRow["MajorValue"]; auditRow["CreateUser"] = productRow["CreateUser"]; auditRow["CreateUserID"] = productRow["CreateUserID"]; auditRow["CreateDate"] = DataHelper.FormatTime(proof.GetValue("CreateDate")); auditRow["ModifyDate"] = auditRow["CreateDate"]; } else { auditRow["ModifyDate"] = DateTime.Now; } auditRow["FlowPhase"] = state == "0" ? "Processing" : "End"; auditRow["SerialNumber"] = code; //设置校审人员 auditRow["Designer"] = productRow["Designer"]; auditRow["DesignerName"] = productRow["DesignerName"]; auditRow["Collactor"] = productRow["Collactor"]; auditRow["CollactorName"] = productRow["CollactorName"]; auditRow["Auditor"] = productRow["Auditor"]; auditRow["AuditorName"] = productRow["AuditorName"]; auditRow["Approver"] = productRow["Approver"]; auditRow["ApproverName"] = productRow["ApproverName"]; string auditSql = SQLHelper.CreateUpdateSql("T_EXE_Audit", auditRow); sb.AppendLine(auditSql); #endregion //校审意见 var comments = Comments.Where(a => a.GetValue("FileID") == fileID && a.GetValue("DrawingNo") == code).ToList(); foreach (var comment in comments) { #region T_EXE_Audit_AdviceDetail var adviceID = comment.GetValue("ID"); var isConfirm = false; if (comment.GetValue("IsConfirm") == "true") { isConfirm = true; } var adviceRow = auditAdviceDt.Select("ID='" + adviceID + "'").FirstOrDefault(); if (adviceRow == null) { adviceRow = auditAdviceDt.NewRow(); auditAdviceDt.Rows.Add(adviceRow); adviceRow["ID"] = adviceID; adviceRow["T_EXE_AuditID"] = auditId; adviceRow["ProductCode"] = code; var mistakeDate = DataHelper.FormatTime(comment.GetValue("CreateDate")); adviceRow["CreateDate"] = mistakeDate; adviceRow["MistakeYear"] = mistakeDate.Year; adviceRow["MistakeMonth"] = mistakeDate.Month; adviceRow["MistakeSeason"] = (mistakeDate.Month + 2) / 3; } /*Comments字段说明 * Type:0 = 普通批注,1 = 校对批注,2 = 审核批注,3 = 审定批注 * CommentType:1 = 严重,2 = 一般,4 = 提醒 */ adviceRow["MsitakeContent"] = comment.GetValue("Content"); adviceRow["MistakeType"] = "CommentType" + comment.GetValue("CommentType"); var step = AuditType.Design.ToString(); switch (comment.GetValue("Type")) { case "1": step = AuditType.Collact.ToString(); break; case "2": step = AuditType.Audit.ToString(); break; case "3": step = AuditType.Approve.ToString(); break; case "0": default: step = AuditType.Design.ToString(); break; } adviceRow["Step"] = step; adviceRow["SubmitUser"] = comment.GetValue("CriticUserID"); adviceRow["SubmitUserName"] = comment.GetValue("CriticUserName"); var rpyStr = string.Empty; var replys = JsonHelper.ToList(comment.GetValue("ReplyContent")); foreach (var reply in replys) { rpyStr += string.Format("{0}({1}):{2}\r\n", reply.GetValue("author"), DataHelper.FormatTime(reply.GetValue("time")), reply.GetValue("content")); } adviceRow["ResponseContent"] = rpyStr; string adviceSql = SQLHelper.CreateUpdateSql("T_EXE_Audit_AdviceDetail", adviceRow); sb.AppendLine(adviceSql); #endregion #region S_AE_Mistake var mistakeRow = mistakeDt.Select("ID='" + adviceID + "'").FirstOrDefault(); if (mistakeRow == null) { mistakeRow = mistakeDt.NewRow(); mistakeDt.Rows.Add(mistakeRow); mistakeRow["ID"] = adviceID; mistakeRow["AuditID"] = auditId; mistakeRow["ProjectInfoID"] = projectInfoID; mistakeRow["AuditActivityType"] = adviceRow["Step"]; mistakeRow["MistakeLevel"] = adviceRow["MistakeType"]; mistakeRow["MajorCode"] = auditRow["MajorCode"]; mistakeRow["MajorName"] = majorName; mistakeRow["DesignerID"] = auditRow["Designer"]; mistakeRow["Designer"] = auditRow["DesignerName"]; mistakeRow["CreateDate"] = adviceRow["CreateDate"]; mistakeRow["MistakeYear"] = adviceRow["MistakeYear"]; mistakeRow["MistakeMonth"] = adviceRow["MistakeMonth"]; mistakeRow["MistakeSeason"] = adviceRow["MistakeSeason"]; mistakeRow["CreateUserID"] = adviceRow["SubmitUser"]; mistakeRow["CreateUser"] = adviceRow["SubmitUserName"]; } mistakeRow["MistakeContent"] = adviceRow["MsitakeContent"]; mistakeRow["Measure"] = adviceRow["ResponseContent"]; mistakeRow["DrawingNO"] = adviceRow["ProductCode"]; mistakeRow["DeptID"] = rootWbs["WBSDeptID"]; mistakeRow["DeptName"] = rootWbs["WBSDeptName"]; mistakeRow["State"] = isConfirm ? "Finish" : "Create"; string mistakeSql = SQLHelper.CreateUpdateSql("S_AE_Mistake", mistakeRow); sb.AppendLine(mistakeSql); #endregion } #endregion } } if (errorList.Count > 0) { this.Task.ErrorMsg = JsonHelper.ToJson(errorList); } if (sb.Length > 0) { this.BusinessSQLHelper.ExecuteNonQuery(sb.ToString()); } if (basesb.Length > 0) { this.BaseSQLHelper.ExecuteNonQuery(basesb.ToString()); } }
public void InitUser() { //人员:sys_user //人员的签名文件:sys_userdictionaryfile(DictionaryType='7') var saID = System.Configuration.ConfigurationManager.AppSettings["OEMSaUserID"]; var _userDt = cpHelper.ExecuteDataTable("select * from sys_user where IsDeleted = 0 and Status = 0"); var _signDt = cpHelper.ExecuteDataTable("select * from sys_userdictionaryfile where IsDeleted = 0 and DictionaryType='7'"); //gw StringBuilder sb = new StringBuilder(); StringBuilder hrsb = new StringBuilder(); var rootID = System.Configuration.ConfigurationManager.AppSettings["OrgRootID"]; var rootName = System.Configuration.ConfigurationManager.AppSettings["OrgRootName"]; var userDt = baseHelper.ExecuteDataTable(@"select * from S_A_User"); var userImgDt = baseHelper.ExecuteDataTable(@"select * from S_A_UserImg"); var orgUserDt = baseHelper.ExecuteDataTable(@"select * from S_A__OrgUser"); var hrDt = hrHelper.ExecuteDataTable(@"select * from T_Employee"); foreach (DataRow row in _userDt.Rows) { var userID = row["ID"].ToString(); if (userID == saID) { continue; } var name = row["Name"].ToString(); var code = row["LoginID"].ToString(); var pwd = row["Password"].ToString(); byte[] signBt = null; var signRow = _signDt.Select(" UserID='" + userID + "'").FirstOrDefault(); if (signRow != null) { var signContent = signRow["Content"].ToString(); signBt = Convert.FromBase64String(signContent); } var userRow = userDt.Select(" ID ='" + userID + "'").FirstOrDefault(); if (userRow == null) { userRow = userDt.NewRow(); userRow["ID"] = userID; userDt.Rows.Add(userRow); } userRow["Code"] = code; userRow["WorkNo"] = code; userRow["Name"] = name; userRow["Password"] = FormsAuthentication.HashPasswordForStoringInConfigFile(string.Format("{0}{1}", code.ToLower(), pwd), "SHA1"); userRow["Sortindex"] = 0; userRow["ErrorCount"] = 0; userRow["IsDeleted"] = "0"; userRow["DeptID"] = rootID; userRow["DeptFullID"] = rootID; userRow["DeptName"] = rootName; userRow["ModifyTime"] = DateTime.Now; sb.AppendLine(SQLHelper.CreateUpdateSql("S_A_User", userRow)); var orgUserRow = orgUserDt.Select("OrgID='" + rootID + "' and UserID='" + userID + "'").FirstOrDefault(); if (orgUserRow == null) { orgUserRow = orgUserDt.NewRow(); orgUserRow["OrgID"] = rootID; orgUserRow["UserID"] = userID; orgUserDt.Rows.Add(orgUserRow); sb.AppendLine(SQLHelper.CreateInsertSql("S_A__OrgUser", orgUserRow)); } var hrRow = hrDt.Select("UserID='" + userID + "'").FirstOrDefault(); if (hrRow == null) { hrRow = hrDt.NewRow(); hrRow["ID"] = GuidHelper.CreateGuid(); hrRow["UserID"] = userID; hrDt.Rows.Add(hrRow); } hrRow["Code"] = code; hrRow["Name"] = name; hrRow["EmploymentWay"] = "正式员工"; hrRow["EmployeeState"] = "Incumbency"; hrRow["IsDeleted"] = "0"; hrRow["IsHaveAccount"] = "1"; hrRow["CreateDate"] = DateTime.Now; hrRow["ModifyDate"] = hrRow["CreateDate"]; if (signBt != null) { hrRow["SignDwg"] = signBt; } hrsb.AppendLine(SQLHelper.CreateUpdateSql("T_Employee", hrRow)); if (signBt != null) { var imgRow = userImgDt.Select(" UserID ='" + userID + "'").FirstOrDefault(); if (imgRow == null) { imgRow = userImgDt.NewRow(); imgRow["ID"] = GuidHelper.CreateGuid(); imgRow["UserID"] = userID; userImgDt.Rows.Add(imgRow); } sb.AppendLine(SQLHelper.CreateUpdateSql("S_A_UserImg", imgRow)); } } if (sb.Length > 0) { baseHelper.ExecuteNonQuery(sb.ToString()); } if (hrsb.Length > 0) { hrHelper.ExecuteNonQuery(hrsb.ToString()); } }