提交代码
This commit is contained in:
parent
7755589aa4
commit
89af71fd68
|
|
@ -32,7 +32,7 @@ namespace BLL
|
||||||
public static void UpdateWorkPackageProject(Model.WBS_WorkPackageProject workPack)
|
public static void UpdateWorkPackageProject(Model.WBS_WorkPackageProject workPack)
|
||||||
{
|
{
|
||||||
Model.SGGLDB db = Funs.DB;
|
Model.SGGLDB db = Funs.DB;
|
||||||
Model.WBS_WorkPackageProject newPack = db.WBS_WorkPackageProject.First(e => e.WorkPackageCode == workPack.WorkPackageCode);
|
Model.WBS_WorkPackageProject newPack = db.WBS_WorkPackageProject.First(e => e.WorkPackageCode == workPack.WorkPackageCode && e.ProjectId == workPack.ProjectId);
|
||||||
newPack.WorkPackageCode = workPack.WorkPackageCode;
|
newPack.WorkPackageCode = workPack.WorkPackageCode;
|
||||||
newPack.IsChild = workPack.IsChild;
|
newPack.IsChild = workPack.IsChild;
|
||||||
newPack.PackageContent = workPack.PackageContent;
|
newPack.PackageContent = workPack.PackageContent;
|
||||||
|
|
|
||||||
|
|
@ -3338,6 +3338,10 @@ namespace BLL
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const string WBSWorkPackageTemplateUrl = "File\\Excel\\DataIn\\WBS定制导入模板.xls";
|
public const string WBSWorkPackageTemplateUrl = "File\\Excel\\DataIn\\WBS定制导入模板.xls";
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
/// WBS定制导入模板
|
||||||
|
/// </summary>
|
||||||
|
public const string WBSWorkPackageTemplate2Url = "File\\Excel\\DataIn\\WBS定制导入模板(电仪).xls";
|
||||||
|
/// <summary>
|
||||||
/// WBS编码规则
|
/// WBS编码规则
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const string WBSCodeTemplateUrl = "File\\Excel\\DataIn\\WBS编码规则.xlsx";
|
public const string WBSCodeTemplateUrl = "File\\Excel\\DataIn\\WBS编码规则.xlsx";
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@
|
||||||
<f:Button runat="server" ID="btnReCheck" OnClick="btnReCheck_Click" Hidden="true"></f:Button>
|
<f:Button runat="server" ID="btnReCheck" OnClick="btnReCheck_Click" Hidden="true"></f:Button>
|
||||||
<f:HiddenField runat="server" ID="hdId"></f:HiddenField>
|
<f:HiddenField runat="server" ID="hdId"></f:HiddenField>
|
||||||
<f:HiddenField runat="server" ID="hdTotalValue"></f:HiddenField>
|
<f:HiddenField runat="server" ID="hdTotalValue"></f:HiddenField>
|
||||||
|
<f:HiddenField runat="server" ID="hdType"></f:HiddenField>
|
||||||
</Items>
|
</Items>
|
||||||
</f:Toolbar>
|
</f:Toolbar>
|
||||||
</Toolbars>
|
</Toolbars>
|
||||||
|
|
|
||||||
|
|
@ -139,10 +139,15 @@ namespace FineUIPro.Web.CQMS.WBS
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var equipment = workPackages.FirstOrDefault(x => x.PackageContent == "机泵" || x.PackageContent == "静止设备");
|
this.hdType.Text = string.Empty;
|
||||||
|
var equipment = workPackages.FirstOrDefault(x => x.PackageContent == "机泵" || x.PackageContent == "静止设备" || x.PackageContent == "桥架" || x.PackageContent == "仪表回路");
|
||||||
if (equipment != null)
|
if (equipment != null)
|
||||||
{
|
{
|
||||||
this.btnImport.Hidden = false;
|
this.btnImport.Hidden = false;
|
||||||
|
if (equipment.PackageContent == "桥架" || equipment.PackageContent == "仪表回路")
|
||||||
|
{
|
||||||
|
this.hdType.Text = "DY"; //电仪
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -810,8 +815,15 @@ namespace FineUIPro.Web.CQMS.WBS
|
||||||
protected void btnImport_Click(object sender, EventArgs e)
|
protected void btnImport_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
SaveData();
|
SaveData();
|
||||||
|
if (string.IsNullOrEmpty(this.hdType.Text.Trim()))
|
||||||
|
{
|
||||||
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("WorkPackageSet2In.aspx?WorkPackageId={0}", WorkPackageId, "导入 - ")));
|
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("WorkPackageSet2In.aspx?WorkPackageId={0}", WorkPackageId, "导入 - ")));
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("WorkPackageSet2In2.aspx?WorkPackageId={0}", WorkPackageId, "导入 - ")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected void Window1_Close(object sender, WindowCloseEventArgs e)
|
protected void Window1_Close(object sender, WindowCloseEventArgs e)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,15 @@ namespace FineUIPro.Web.CQMS.WBS {
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::FineUIPro.HiddenField hdTotalValue;
|
protected global::FineUIPro.HiddenField hdTotalValue;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// hdType 控件。
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 自动生成的字段。
|
||||||
|
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
|
||||||
|
/// </remarks>
|
||||||
|
protected global::FineUIPro.HiddenField hdType;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// cbSelect 控件。
|
/// cbSelect 控件。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,80 @@
|
||||||
|
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WorkPackageSet2In2.aspx.cs" Inherits="FineUIPro.Web.CQMS.WBS.WorkPackageSet2In2" %>
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head runat="server">
|
||||||
|
<title>导入</title>
|
||||||
|
<link href="~/res/css/common.css" rel="stylesheet" type="text/css" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<form id="form1" runat="server">
|
||||||
|
<f:PageManager ID="PageManager1" AutoSizePanelID="SimpleForm1" runat="server" OnCustomEvent="PageManager1_CustomEvent" />
|
||||||
|
<f:Form ID="SimpleForm1" ShowBorder="false" ShowHeader="false" AutoScroll="true"
|
||||||
|
BodyPadding="10px" runat="server" RedStarPosition="BeforeText" LabelAlign="Right">
|
||||||
|
<Toolbars>
|
||||||
|
<f:Toolbar ID="Toolbar2" Position="Top" ToolbarAlign="Right" runat="server">
|
||||||
|
<Items>
|
||||||
|
<f:ToolbarFill runat="server"></f:ToolbarFill>
|
||||||
|
<f:Button ID="btnAudit" Icon="ApplicationEdit" runat="server" ToolTip="数据导入" ValidateForms="SimpleForm1"
|
||||||
|
OnClick="btnAudit_Click" >
|
||||||
|
</f:Button>
|
||||||
|
<f:Button ID="btnSave" ToolTip="保存" Icon="SystemSaveNew" runat="server" Text=""
|
||||||
|
OnClick="btnSave_Click">
|
||||||
|
</f:Button>
|
||||||
|
<f:Button ID="btnDownLoad" runat="server" Icon="ApplicationGo" ToolTip="下载模板" OnClick="btnDownLoad_Click">
|
||||||
|
</f:Button>
|
||||||
|
</Items>
|
||||||
|
</f:Toolbar>
|
||||||
|
</Toolbars>
|
||||||
|
<Rows>
|
||||||
|
<f:FormRow>
|
||||||
|
<Items>
|
||||||
|
<f:FileUpload runat="server" ID="fuAttachUrl" EmptyText="选择要导入的文件" Label="选择要导入的文件"
|
||||||
|
LabelWidth="150px">
|
||||||
|
</f:FileUpload>
|
||||||
|
</Items>
|
||||||
|
</f:FormRow>
|
||||||
|
<f:FormRow>
|
||||||
|
<Items>
|
||||||
|
<f:Grid ID="Grid1" Width="870px" ShowBorder="true" ShowHeader="false" EnableCollapse="true"
|
||||||
|
runat="server" BoxFlex="1" DataKeyNames="WorkPackageId,WorkPackageCode" AllowSorting="true" EnableColumnLines="true"
|
||||||
|
SortField="WorkPackageId" SortDirection="ASC" AllowCellEditing="true" ClicksToEdit="1" ForceFit="true"
|
||||||
|
ShowSelectedCell="true" DataIDField="WorkPackageId" AllowPaging="false" IsDatabasePaging="false"
|
||||||
|
PageSize="200" Hidden="true">
|
||||||
|
|
||||||
|
<Columns>
|
||||||
|
<f:RenderField Width="200px" ColumnID="PackageContent" DataField="PackageContent" FieldType="String"
|
||||||
|
HeaderText="第2级" HeaderTextAlign="Center" TextAlign="Center">
|
||||||
|
</f:RenderField>
|
||||||
|
<f:RenderField HeaderText="定制" ColumnID="SuperWorkPack" DataField="SuperWorkPack" SortField="SuperWorkPack"
|
||||||
|
HeaderTextAlign="Center" TextAlign="Center" Width="200px" FieldType="String">
|
||||||
|
<Editor>
|
||||||
|
<f:TextBox runat="server" ID="txtName">
|
||||||
|
</f:TextBox>
|
||||||
|
</Editor>
|
||||||
|
</f:RenderField>
|
||||||
|
</Columns>
|
||||||
|
</f:Grid>
|
||||||
|
</Items>
|
||||||
|
</f:FormRow>
|
||||||
|
<f:FormRow>
|
||||||
|
<Items>
|
||||||
|
<f:HiddenField ID="hdFileName" runat="server">
|
||||||
|
</f:HiddenField>
|
||||||
|
<f:HiddenField ID="hdCheckResult" runat="server">
|
||||||
|
</f:HiddenField>
|
||||||
|
<f:HiddenField runat="server" ID="hdTotalValue"></f:HiddenField>
|
||||||
|
</Items>
|
||||||
|
</f:FormRow>
|
||||||
|
<f:FormRow>
|
||||||
|
<Items>
|
||||||
|
<f:Label ID="lblBottom" runat="server" Text="说明:1 导入模板为.xls后缀的EXCEL文件,黑体字为必填项。2 数据导入完成,成功后自动返回,如果有不成功数据页面弹出提示框">
|
||||||
|
</f:Label>
|
||||||
|
</Items>
|
||||||
|
</f:FormRow>
|
||||||
|
</Rows>
|
||||||
|
</f:Form>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,534 @@
|
||||||
|
using BLL;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Data;
|
||||||
|
using System.Data.OleDb;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Web.UI.WebControls;
|
||||||
|
|
||||||
|
namespace FineUIPro.Web.CQMS.WBS
|
||||||
|
{
|
||||||
|
public partial class WorkPackageSet2In2 : PageBase
|
||||||
|
{
|
||||||
|
#region 定义变量
|
||||||
|
/// <summary>
|
||||||
|
/// 上传预设的虚拟路径
|
||||||
|
/// </summary>
|
||||||
|
private string initPath = Const.ExcelUrl;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 导入集合
|
||||||
|
/// </summary>
|
||||||
|
private List<Model.WBS_WorkPackage> ViewWorkPackages = new List<Model.WBS_WorkPackage>();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 错误集合
|
||||||
|
/// </summary>
|
||||||
|
public static string errorInfos = string.Empty;
|
||||||
|
/// <summary>
|
||||||
|
/// 主键
|
||||||
|
/// </summary>
|
||||||
|
public string WorkPackageId
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return (string)ViewState["WorkPackageId"];
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
ViewState["WorkPackageId"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 单位工程
|
||||||
|
/// </summary>
|
||||||
|
public string UnitWorkId
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return (string)ViewState["UnitWorkId"];
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
ViewState["UnitWorkId"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 加载页面
|
||||||
|
/// <summary>
|
||||||
|
/// 加载页面
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (!IsPostBack)
|
||||||
|
{
|
||||||
|
this.hdFileName.Text = string.Empty;
|
||||||
|
this.hdCheckResult.Text = string.Empty;
|
||||||
|
if (ViewWorkPackages != null)
|
||||||
|
{
|
||||||
|
ViewWorkPackages.Clear();
|
||||||
|
}
|
||||||
|
errorInfos = string.Empty;
|
||||||
|
WorkPackageId = Request.Params["WorkPackageId"];
|
||||||
|
var workPackage = BLL.WorkPackageService.GetWorkPackageByWorkPackageId(WorkPackageId);
|
||||||
|
if (workPackage != null)
|
||||||
|
{
|
||||||
|
UnitWorkId = workPackage.UnitWorkId;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 数据导入
|
||||||
|
/// <summary>
|
||||||
|
/// 数据导入
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
protected void btnAudit_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (this.fuAttachUrl.HasFile == false)
|
||||||
|
{
|
||||||
|
Alert.ShowInTop("请您选择Excel文件!", MessageBoxIcon.Warning);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
string IsXls = Path.GetExtension(this.fuAttachUrl.FileName).ToString().Trim().ToLower();
|
||||||
|
if (IsXls != ".xls")
|
||||||
|
{
|
||||||
|
Alert.ShowInTop("只可以选择Excel文件!", MessageBoxIcon.Warning);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (ViewWorkPackages != null)
|
||||||
|
{
|
||||||
|
ViewWorkPackages.Clear();
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(errorInfos))
|
||||||
|
{
|
||||||
|
errorInfos = string.Empty;
|
||||||
|
}
|
||||||
|
string rootPath = Server.MapPath("~/");
|
||||||
|
string initFullPath = rootPath + initPath;
|
||||||
|
if (!Directory.Exists(initFullPath))
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory(initFullPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.hdFileName.Text = BLL.Funs.GetNewFileName() + IsXls;
|
||||||
|
string filePath = initFullPath + this.hdFileName.Text;
|
||||||
|
this.fuAttachUrl.PostedFile.SaveAs(filePath);
|
||||||
|
ImportXlsToData(rootPath + initPath + this.hdFileName.Text);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
ShowNotify("'" + ex.Message + "'", MessageBoxIcon.Warning);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#region 读Excel提取数据
|
||||||
|
/// <summary>
|
||||||
|
/// 从Excel提取数据--》Dataset
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="filename">Excel文件路径名</param>
|
||||||
|
private void ImportXlsToData(string fileName)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ViewWorkPackages.Clear();
|
||||||
|
string oleDBConnString = String.Empty;
|
||||||
|
oleDBConnString = "Provider=Microsoft.Jet.OLEDB.4.0;";
|
||||||
|
oleDBConnString += "Data Source=";
|
||||||
|
oleDBConnString += fileName;
|
||||||
|
oleDBConnString += ";Extended Properties=Excel 8.0;";
|
||||||
|
OleDbConnection oleDBConn = null;
|
||||||
|
OleDbDataAdapter oleAdMaster = null;
|
||||||
|
DataTable m_tableName = new DataTable();
|
||||||
|
DataSet ds = new DataSet();
|
||||||
|
|
||||||
|
oleDBConn = new OleDbConnection(oleDBConnString);
|
||||||
|
oleDBConn.Open();
|
||||||
|
m_tableName = oleDBConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
|
||||||
|
|
||||||
|
if (m_tableName != null && m_tableName.Rows.Count > 0)
|
||||||
|
{
|
||||||
|
m_tableName.TableName = m_tableName.Rows[0]["TABLE_NAME"].ToString().Trim();
|
||||||
|
}
|
||||||
|
string sqlMaster;
|
||||||
|
sqlMaster = " SELECT * FROM [" + m_tableName.TableName + "]";
|
||||||
|
oleAdMaster = new OleDbDataAdapter(sqlMaster, oleDBConn);
|
||||||
|
oleAdMaster.Fill(ds, "m_tableName");
|
||||||
|
oleAdMaster.Dispose();
|
||||||
|
oleDBConn.Close();
|
||||||
|
oleDBConn.Dispose();
|
||||||
|
|
||||||
|
AddDatasetToSQL(ds.Tables[0]);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 将Dataset的数据导入数据库
|
||||||
|
/// <summary>
|
||||||
|
/// 将Dataset的数据导入数据库
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pds">数据集</param>
|
||||||
|
/// <param name="Cols">数据集行数</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
private bool AddDatasetToSQL(DataTable pds)
|
||||||
|
{
|
||||||
|
|
||||||
|
string results = string.Empty;
|
||||||
|
int ir = pds.Rows.Count;
|
||||||
|
if (pds != null && ir > 0)
|
||||||
|
{
|
||||||
|
Model.WBS_WorkPackage workPackage = BLL.WorkPackageService.GetWorkPackageByWorkPackageId(WorkPackageId);
|
||||||
|
var workPackageProjects = BLL.WorkPackageProjectService.GetWorkPackageProjects2ByWorkPackageCode(workPackage.InitWorkPackageCode, this.CurrUser.LoginProjectId);
|
||||||
|
if (workPackage != null)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < ir; i++)
|
||||||
|
{
|
||||||
|
string result = string.Empty;
|
||||||
|
string col0 = pds.Rows[i][0].ToString().Trim();
|
||||||
|
string col1 = pds.Rows[i][1].ToString().Trim();
|
||||||
|
if (!string.IsNullOrEmpty(col0))
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(col0))
|
||||||
|
{
|
||||||
|
result += "第" + (i + 2).ToString() + "行," + "导入项" + "," + "第二级为必填项!" + "|";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (BLL.WorkPackageService.GetWorkPackageByPackageContent(col0 + "-" + col1, UnitWorkId) == null) //数据库中不存在同样位号记录
|
||||||
|
{
|
||||||
|
Model.WBS_WorkPackage newWorkPackage = new Model.WBS_WorkPackage
|
||||||
|
{
|
||||||
|
WorkPackageId = SQLHelper.GetNewID(typeof(Model.WBS_WorkPackage)),
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
if (!string.IsNullOrEmpty(col1))
|
||||||
|
{
|
||||||
|
newWorkPackage.SuperWorkPack = col1;
|
||||||
|
}
|
||||||
|
foreach (var item in workPackageProjects)
|
||||||
|
{
|
||||||
|
if (col0 == item.PackageContent)
|
||||||
|
{
|
||||||
|
newWorkPackage.PackageContent = col0;
|
||||||
|
newWorkPackage.WorkPackageCode = item.WorkPackageCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if (string.IsNullOrEmpty(newWorkPackage.PackageContent))
|
||||||
|
{
|
||||||
|
result += "第" + (i + 2).ToString() + "行," + "定制输入值有误!" + "|";
|
||||||
|
}
|
||||||
|
|
||||||
|
ViewWorkPackages.Add(newWorkPackage);
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(result))
|
||||||
|
{
|
||||||
|
results += result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(results))
|
||||||
|
{
|
||||||
|
results = "数据导入失败,未成功数据:" + results.Substring(0, results.LastIndexOf("|"));
|
||||||
|
errorInfos = results;
|
||||||
|
Alert.ShowInParent(results, MessageBoxIcon.Warning);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ViewWorkPackages = ViewWorkPackages.Distinct().ToList();
|
||||||
|
this.Grid1.Hidden = false;
|
||||||
|
this.Grid1.DataSource = ViewWorkPackages;
|
||||||
|
this.Grid1.DataBind();
|
||||||
|
errorInfos = string.Empty;
|
||||||
|
ShowNotify("导入成功!", MessageBoxIcon.Success);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Alert.ShowInTop("导入数据为空!", MessageBoxIcon.Warning);
|
||||||
|
}
|
||||||
|
|
||||||
|
BLL.UploadFileService.DeleteFile(Funs.RootPath, initPath + this.hdFileName.Text);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 下载模板
|
||||||
|
/// <summary>
|
||||||
|
/// 下载模板按钮
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
protected void btnDownLoad_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
PageContext.RegisterStartupScript(Confirm.GetShowReference("确定下载导入模板吗?", String.Empty, MessageBoxIcon.Question, PageManager1.GetCustomEventReference(false, "Confirm_OK"), PageManager1.GetCustomEventReference("Confirm_Cancel")));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 下载导入模板
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
protected void PageManager1_CustomEvent(object sender, CustomEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.EventArgument == "Confirm_OK")
|
||||||
|
{
|
||||||
|
string rootPath = Server.MapPath("~/");
|
||||||
|
string filePath = Const.WBSWorkPackageTemplate2Url;
|
||||||
|
string uploadfilepath = rootPath + filePath;
|
||||||
|
string fileName = Path.GetFileName(filePath);
|
||||||
|
FileInfo info = new FileInfo(uploadfilepath);
|
||||||
|
long fileSize = info.Length;
|
||||||
|
Response.ClearContent();
|
||||||
|
Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
|
||||||
|
Response.ContentType = "excel/plain";
|
||||||
|
Response.ContentEncoding = System.Text.Encoding.UTF8;
|
||||||
|
Response.AddHeader("Content-Length", fileSize.ToString().Trim());
|
||||||
|
Response.TransmitFile(uploadfilepath, 0, fileSize);
|
||||||
|
Response.End();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
/// <summary>
|
||||||
|
/// 保存数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
protected void btnSave_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (this.fuAttachUrl.HasFile == false)
|
||||||
|
{
|
||||||
|
Alert.ShowInTop("请您选择Excel文件!", MessageBoxIcon.Warning);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
string IsXls = Path.GetExtension(this.fuAttachUrl.FileName).ToString().Trim().ToLower();
|
||||||
|
if (IsXls != ".xls")
|
||||||
|
{
|
||||||
|
Alert.ShowInTop("只可以选择Excel文件!", MessageBoxIcon.Warning);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (ViewWorkPackages != null)
|
||||||
|
{
|
||||||
|
ViewWorkPackages.Clear();
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(errorInfos))
|
||||||
|
{
|
||||||
|
errorInfos = string.Empty;
|
||||||
|
}
|
||||||
|
string rootPath = Server.MapPath("~/");
|
||||||
|
string initFullPath = rootPath + initPath;
|
||||||
|
if (!Directory.Exists(initFullPath))
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory(initFullPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.hdFileName.Text = BLL.Funs.GetNewFileName() + IsXls;
|
||||||
|
string filePath = initFullPath + this.hdFileName.Text;
|
||||||
|
this.fuAttachUrl.PostedFile.SaveAs(filePath);
|
||||||
|
|
||||||
|
ViewWorkPackages.Clear();
|
||||||
|
string oleDBConnString = String.Empty;
|
||||||
|
oleDBConnString = "Provider=Microsoft.Jet.OLEDB.4.0;";
|
||||||
|
oleDBConnString += "Data Source=";
|
||||||
|
oleDBConnString += rootPath + initPath + this.hdFileName.Text;
|
||||||
|
oleDBConnString += ";Extended Properties=Excel 8.0;";
|
||||||
|
OleDbConnection oleDBConn = null;
|
||||||
|
OleDbDataAdapter oleAdMaster = null;
|
||||||
|
DataTable m_tableName = new DataTable();
|
||||||
|
DataSet ds = new DataSet();
|
||||||
|
|
||||||
|
oleDBConn = new OleDbConnection(oleDBConnString);
|
||||||
|
oleDBConn.Open();
|
||||||
|
m_tableName = oleDBConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
|
||||||
|
|
||||||
|
if (m_tableName != null && m_tableName.Rows.Count > 0)
|
||||||
|
{
|
||||||
|
m_tableName.TableName = m_tableName.Rows[0]["TABLE_NAME"].ToString().Trim();
|
||||||
|
}
|
||||||
|
string sqlMaster;
|
||||||
|
sqlMaster = " SELECT * FROM [" + m_tableName.TableName + "]";
|
||||||
|
oleAdMaster = new OleDbDataAdapter(sqlMaster, oleDBConn);
|
||||||
|
oleAdMaster.Fill(ds, "m_tableName");
|
||||||
|
oleAdMaster.Dispose();
|
||||||
|
oleDBConn.Close();
|
||||||
|
oleDBConn.Dispose();
|
||||||
|
|
||||||
|
DataTable pds = ds.Tables[0];
|
||||||
|
string results = string.Empty;
|
||||||
|
int ir = pds.Rows.Count;
|
||||||
|
if (pds != null && ir > 0)
|
||||||
|
{
|
||||||
|
Model.WBS_WorkPackage workPackage = BLL.WorkPackageService.GetWorkPackageByWorkPackageId(WorkPackageId);
|
||||||
|
var workPackageProjects = BLL.WorkPackageProjectService.GetWorkPackageProjects2ByWorkPackageCode(workPackage.InitWorkPackageCode, this.CurrUser.LoginProjectId);
|
||||||
|
if (workPackage != null)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < ir; i++)
|
||||||
|
{
|
||||||
|
string result = string.Empty;
|
||||||
|
string col0 = pds.Rows[i][0].ToString().Trim();
|
||||||
|
string col1 = pds.Rows[i][1].ToString().Trim();
|
||||||
|
if (!string.IsNullOrEmpty(col0))
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(col0))
|
||||||
|
{
|
||||||
|
result += "第" + (i + 2).ToString() + "行," + "导入项" + "," + "第二级为必填项!" + "|";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (BLL.WorkPackageService.GetWorkPackageByPackageContent(col0 + "-" + col1, UnitWorkId) == null) //数据库中不存在同样位号记录
|
||||||
|
{
|
||||||
|
Model.WBS_WorkPackage newWorkPackage = new Model.WBS_WorkPackage
|
||||||
|
{
|
||||||
|
WorkPackageId = SQLHelper.GetNewID(typeof(Model.WBS_WorkPackage)),
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
if (!string.IsNullOrEmpty(col1))
|
||||||
|
{
|
||||||
|
newWorkPackage.SuperWorkPack = col1;
|
||||||
|
}
|
||||||
|
foreach (var item in workPackageProjects)
|
||||||
|
{
|
||||||
|
if (col0 == item.PackageContent)
|
||||||
|
{
|
||||||
|
newWorkPackage.PackageContent = col0;
|
||||||
|
newWorkPackage.WorkPackageCode = item.WorkPackageCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if (string.IsNullOrEmpty(newWorkPackage.PackageContent))
|
||||||
|
{
|
||||||
|
result += "第" + (i + 2).ToString() + "行," + "定制输入值有误!" + "|";
|
||||||
|
}
|
||||||
|
|
||||||
|
ViewWorkPackages.Add(newWorkPackage);
|
||||||
|
if (!string.IsNullOrEmpty(result))
|
||||||
|
{
|
||||||
|
results += result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(results))
|
||||||
|
{
|
||||||
|
results = "数据导入失败,未成功数据:" + results.Substring(0, results.LastIndexOf("|"));
|
||||||
|
errorInfos = results;
|
||||||
|
Alert.ShowInParent(results, MessageBoxIcon.Warning);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ViewWorkPackages = ViewWorkPackages.Distinct().ToList();
|
||||||
|
this.Grid1.Hidden = false;
|
||||||
|
this.Grid1.DataSource = ViewWorkPackages;
|
||||||
|
this.Grid1.DataBind();
|
||||||
|
errorInfos = string.Empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Alert.ShowInTop("导入数据为空!", MessageBoxIcon.Warning);
|
||||||
|
}
|
||||||
|
BLL.UploadFileService.DeleteFile(Funs.RootPath, initPath + this.hdFileName.Text);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
ShowNotify("'" + ex.Message + "'", MessageBoxIcon.Warning);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
string workPackageCode = string.Empty;
|
||||||
|
int num = 1;
|
||||||
|
string code = string.Empty;
|
||||||
|
Model.WBS_WorkPackage parentWorkPackage = BLL.WorkPackageService.GetWorkPackageByWorkPackageId(WorkPackageId);
|
||||||
|
foreach (JObject mergedRow in Grid1.GetMergedData())
|
||||||
|
{
|
||||||
|
JObject values = mergedRow.Value<JObject>("values");
|
||||||
|
int i = mergedRow.Value<int>("index");
|
||||||
|
string workPackageId = this.Grid1.Rows[i].DataKeys[0].ToString();
|
||||||
|
Model.WBS_WorkPackage oldWorkPackage = BLL.WorkPackageService.GetWorkPackageByWorkPackageId(workPackageId);
|
||||||
|
string workPackageCode2 = this.Grid1.Rows[i].DataKeys[1].ToString();
|
||||||
|
string txtName = values.Value<string>("SuperWorkPack");
|
||||||
|
Model.WBS_WorkPackageProject workPackageProject = BLL.WorkPackageProjectService.GetWorkPackageProjectByWorkPackageCode(workPackageCode2, this.CurrUser.LoginProjectId);
|
||||||
|
if (oldWorkPackage == null) //新增内容
|
||||||
|
{
|
||||||
|
if (BLL.WorkPackageService.GetWorkPackageByPackageContent(workPackageProject.PackageContent + "-" + txtName, UnitWorkId) == null) //数据库中不存在同样位号记录
|
||||||
|
{
|
||||||
|
Model.WBS_WorkPackage newWorkPackage = new Model.WBS_WorkPackage();
|
||||||
|
if (workPackageCode != workPackageProject.WorkPackageCode) //循环至新的分部
|
||||||
|
{
|
||||||
|
workPackageCode = workPackageProject.WorkPackageCode;
|
||||||
|
var oldWorkPackages = BLL.WorkPackageService.GetWorkPackagesByInitWorkPackageCodeAndUnitWorkId(workPackageCode, UnitWorkId);
|
||||||
|
if (oldWorkPackages.Count > 0) //该工作包已存在内容
|
||||||
|
{
|
||||||
|
var old = oldWorkPackages.First();
|
||||||
|
string oldStr = old.WorkPackageCode.Substring(old.WorkPackageCode.Length - 2);
|
||||||
|
num = Convert.ToInt32(oldStr) + 1;
|
||||||
|
if (num < 10)
|
||||||
|
{
|
||||||
|
code = "0" + num.ToString();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
code = num.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
num = 1;
|
||||||
|
code = "01";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (num < 10)
|
||||||
|
{
|
||||||
|
code = "0" + num.ToString();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
code = num.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
newWorkPackage.WorkPackageId = SQLHelper.GetNewID(typeof(Model.WBS_WorkPackage));
|
||||||
|
newWorkPackage.WorkPackageCode = parentWorkPackage.WorkPackageCode + workPackageCode.Substring(workPackageCode.IndexOf(parentWorkPackage.InitWorkPackageCode) + parentWorkPackage.InitWorkPackageCode.Length).Replace("00", "0000") + code;
|
||||||
|
newWorkPackage.ProjectId = this.CurrUser.LoginProjectId;
|
||||||
|
newWorkPackage.UnitWorkId = UnitWorkId;
|
||||||
|
newWorkPackage.PackageContent = workPackageProject.PackageContent + "-" + txtName;
|
||||||
|
newWorkPackage.SuperWorkPack = workPackageProject.SuperWorkPack;
|
||||||
|
newWorkPackage.SuperWorkPackageId = WorkPackageId;
|
||||||
|
newWorkPackage.PackageCode = workPackageProject.PackageCode;
|
||||||
|
newWorkPackage.ProjectType = workPackageProject.ProjectType;
|
||||||
|
newWorkPackage.InitWorkPackageCode = workPackageProject.WorkPackageCode;
|
||||||
|
newWorkPackage.IsApprove = true;
|
||||||
|
BLL.WorkPackageService.AddWorkPackage(newWorkPackage);
|
||||||
|
num++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
|
||||||
|
ShowNotify("保存成功!", MessageBoxIcon.Success);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,141 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <自动生成>
|
||||||
|
// 此代码由工具生成。
|
||||||
|
//
|
||||||
|
// 对此文件的更改可能导致不正确的行为,如果
|
||||||
|
// 重新生成代码,则所做更改将丢失。
|
||||||
|
// </自动生成>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace FineUIPro.Web.CQMS.WBS {
|
||||||
|
|
||||||
|
|
||||||
|
public partial class WorkPackageSet2In2 {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// form1 控件。
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 自动生成的字段。
|
||||||
|
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// PageManager1 控件。
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 自动生成的字段。
|
||||||
|
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
|
||||||
|
/// </remarks>
|
||||||
|
protected global::FineUIPro.PageManager PageManager1;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// SimpleForm1 控件。
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 自动生成的字段。
|
||||||
|
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
|
||||||
|
/// </remarks>
|
||||||
|
protected global::FineUIPro.Form SimpleForm1;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Toolbar2 控件。
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 自动生成的字段。
|
||||||
|
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
|
||||||
|
/// </remarks>
|
||||||
|
protected global::FineUIPro.Toolbar Toolbar2;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnAudit 控件。
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 自动生成的字段。
|
||||||
|
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
|
||||||
|
/// </remarks>
|
||||||
|
protected global::FineUIPro.Button btnAudit;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnSave 控件。
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 自动生成的字段。
|
||||||
|
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
|
||||||
|
/// </remarks>
|
||||||
|
protected global::FineUIPro.Button btnSave;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnDownLoad 控件。
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 自动生成的字段。
|
||||||
|
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
|
||||||
|
/// </remarks>
|
||||||
|
protected global::FineUIPro.Button btnDownLoad;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// fuAttachUrl 控件。
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 自动生成的字段。
|
||||||
|
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
|
||||||
|
/// </remarks>
|
||||||
|
protected global::FineUIPro.FileUpload fuAttachUrl;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Grid1 控件。
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 自动生成的字段。
|
||||||
|
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
|
||||||
|
/// </remarks>
|
||||||
|
protected global::FineUIPro.Grid Grid1;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtName 控件。
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 自动生成的字段。
|
||||||
|
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
|
||||||
|
/// </remarks>
|
||||||
|
protected global::FineUIPro.TextBox txtName;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// hdFileName 控件。
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 自动生成的字段。
|
||||||
|
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
|
||||||
|
/// </remarks>
|
||||||
|
protected global::FineUIPro.HiddenField hdFileName;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// hdCheckResult 控件。
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 自动生成的字段。
|
||||||
|
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
|
||||||
|
/// </remarks>
|
||||||
|
protected global::FineUIPro.HiddenField hdCheckResult;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// hdTotalValue 控件。
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 自动生成的字段。
|
||||||
|
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
|
||||||
|
/// </remarks>
|
||||||
|
protected global::FineUIPro.HiddenField hdTotalValue;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblBottom 控件。
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 自动生成的字段。
|
||||||
|
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
|
||||||
|
/// </remarks>
|
||||||
|
protected global::FineUIPro.Label lblBottom;
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -491,6 +491,7 @@
|
||||||
<Content Include="CQMS\WBS\WorkPackageSet1.aspx" />
|
<Content Include="CQMS\WBS\WorkPackageSet1.aspx" />
|
||||||
<Content Include="CQMS\WBS\WorkPackageSet2.aspx" />
|
<Content Include="CQMS\WBS\WorkPackageSet2.aspx" />
|
||||||
<Content Include="CQMS\WBS\WorkPackageSet2In.aspx" />
|
<Content Include="CQMS\WBS\WorkPackageSet2In.aspx" />
|
||||||
|
<Content Include="CQMS\WBS\WorkPackageSet2In2.aspx" />
|
||||||
<Content Include="DataShow\Accident.aspx" />
|
<Content Include="DataShow\Accident.aspx" />
|
||||||
<Content Include="DataShow\Check.aspx" />
|
<Content Include="DataShow\Check.aspx" />
|
||||||
<Content Include="DataShow\CompanyPerson.aspx" />
|
<Content Include="DataShow\CompanyPerson.aspx" />
|
||||||
|
|
@ -7389,6 +7390,13 @@
|
||||||
<Compile Include="CQMS\WBS\WorkPackageSet2In.aspx.designer.cs">
|
<Compile Include="CQMS\WBS\WorkPackageSet2In.aspx.designer.cs">
|
||||||
<DependentUpon>WorkPackageSet2In.aspx</DependentUpon>
|
<DependentUpon>WorkPackageSet2In.aspx</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="CQMS\WBS\WorkPackageSet2In2.aspx.cs">
|
||||||
|
<DependentUpon>WorkPackageSet2In2.aspx</DependentUpon>
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="CQMS\WBS\WorkPackageSet2In2.aspx.designer.cs">
|
||||||
|
<DependentUpon>WorkPackageSet2In2.aspx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="DataShow\Accident.aspx.cs">
|
<Compile Include="DataShow\Accident.aspx.cs">
|
||||||
<DependentUpon>Accident.aspx</DependentUpon>
|
<DependentUpon>Accident.aspx</DependentUpon>
|
||||||
<SubType>ASPXCodeBehind</SubType>
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue