파일정리
This commit is contained in:
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/claude-code-settings.json",
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"Bash(curl:*)",
|
||||
"Bash(mkdir:*)",
|
||||
"Bash(copy \"C:\\Data\\Source\\(0014) GroupWare\\Source\\Project\\Web\\Controller\\BaseController.cs\" \"C:\\Data\\Source\\(0014) GroupWare\\Source\\EETGW.Shared\\Controllers\"\")",
|
||||
"Bash(copy:*)",
|
||||
"Bash(powershell:*)",
|
||||
"Bash(git add:*)",
|
||||
"Bash(git checkout:*)",
|
||||
"Bash(dir \"C:\\Data\\Source\\(0014) GroupWare\\Source\\Project\\Web\\wwwroot\\lib\\js\")"
|
||||
],
|
||||
"deny": []
|
||||
}
|
||||
}
|
||||
267
CLAUDE.md
267
CLAUDE.md
@@ -1,267 +0,0 @@
|
||||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Project Overview
|
||||
|
||||
This is a Korean Enterprise GroupWare system built with C# .NET Framework 4.6 and Windows Forms. The application serves as a comprehensive business management system that includes project management, purchasing, attendance tracking, reporting, and web-based functionality. The project runs on port 7979 (previously 9000) and includes both desktop and web components.
|
||||
|
||||
## Architecture
|
||||
|
||||
### Main Application (Project/EETGW.csproj)
|
||||
- **Entry Point**: `Project/Program.cs` - Handles WebView2Runtime extraction and starts the main form
|
||||
- **Main Form**: `Project/fMain.cs` - Primary application window
|
||||
- **Web Server**: Integrated OWIN-based web server for HTTP API and static files
|
||||
- **Database**: Microsoft SQL Server with Entity Framework 6.2.0
|
||||
- **Target Framework**: .NET Framework 4.6
|
||||
|
||||
### Key Components
|
||||
|
||||
1. **Web Layer** (`Project/Web/`):
|
||||
- **Startup.cs**: OWIN configuration for HTTP API and static file serving
|
||||
- **Controllers**: API controllers for various business functions (Home, Project, Purchase, Item, etc.)
|
||||
- **wwwroot**: Static web assets (HTML, CSS, JS files)
|
||||
|
||||
2. **SubProjects**: Modular components with specific business functionality:
|
||||
- **FPJ0000**: Project management module
|
||||
- **FCM0000**: Customer management
|
||||
- **FEQ0000**: Equipment management
|
||||
- **FBS0000**: Holiday/attendance management
|
||||
- **FCOMMON**: Shared common functionality
|
||||
- **WebServer**: Additional web services
|
||||
- **AmkorRestfulService**: REST API services
|
||||
|
||||
3. **Sub Components** (`Sub/`):
|
||||
- **arCtl**: Custom controls library
|
||||
- **arftp**: FTP functionality
|
||||
- **tcpservice**: TCP communication services
|
||||
- **YARTE**: HTML editor component
|
||||
- **StaffLayoutCtl**: Staff layout controls
|
||||
|
||||
### Technology Stack
|
||||
- **UI Framework**: Windows Forms with custom controls (FarPoint Spread grids)
|
||||
- **Web Framework**: OWIN with ASP.NET Web API 5.2.9
|
||||
- **Database ORM**: Entity Framework 6.2.0
|
||||
- **JSON Processing**: Newtonsoft.Json 13.0.3
|
||||
- **Web Browser**: Microsoft WebView2 1.0.2210.55
|
||||
- **Reports**: Microsoft ReportViewer 15.0
|
||||
- **Excel Processing**: libxl.net and CsvHelper 30.0.1
|
||||
|
||||
### Running the Application
|
||||
- **Debug Mode**: Run from Visual Studio or build and execute the output from `Project/bin/Debug/`
|
||||
- **Web Server**: Automatically starts on port 7979 when the application launches
|
||||
- **Database**: Ensure SQL Server connection string is configured in app.config
|
||||
|
||||
### Package Management
|
||||
- Uses NuGet packages defined in `packages.config` files throughout the solution
|
||||
- Restore packages using: `nuget restore EETGW.sln`
|
||||
|
||||
## Configuration
|
||||
|
||||
### Database Connection
|
||||
- Connection strings configured in individual `app.config` files
|
||||
- Primary database connection in `Project/app.config`
|
||||
- Uses Entity Framework with SQL Server
|
||||
|
||||
### Web Server Configuration
|
||||
- **Port**: 7979 (configured in startup)
|
||||
- **Static Files**: Served from `Project/Web/wwwroot/`
|
||||
- **API Routes**: Configured in `Project/Web/Startup.cs`
|
||||
- **CORS**: Enabled for all origins
|
||||
|
||||
### Build Configurations
|
||||
- **Debug**: Outputs to `Project/bin/Debug/` with x86 platform target
|
||||
- **Release**: Optimized build configuration
|
||||
- Different output paths for various configurations (see EETGW.csproj)
|
||||
|
||||
## Key Conventions
|
||||
|
||||
### Code Organization
|
||||
- Korean comments and variable names are common throughout the codebase
|
||||
- Business logic separated into modular SubProjects
|
||||
- Shared functionality centralized in FCOMMON project
|
||||
- Custom controls and utilities in Sub/ directory
|
||||
|
||||
### File Structure
|
||||
- Each SubProject has its own namespace and assembly
|
||||
- Form files follow naming convention: `f[FormName].cs` with corresponding `.Designer.cs` and `.resx`
|
||||
- Dataset files use `.xsd` schemas with generated code
|
||||
|
||||
### Dependencies
|
||||
- Heavy use of FarPoint Spread controls for data grids
|
||||
- Custom logging via ArLog.Net4.dll
|
||||
- Settings management through ArSetting.Net4.dll
|
||||
- Multiple third-party libraries for Excel, FTP, and web functionality
|
||||
|
||||
## Development Notes
|
||||
|
||||
- WebView2Runtime is automatically extracted on first run from WebView2Runtime.zip
|
||||
- The application includes comprehensive error handling and logging
|
||||
- Multiple authentication methods including AD integration
|
||||
- Supports both Korean and English localization
|
||||
- Includes extensive reporting capabilities with RDLC files
|
||||
|
||||
## React Development Guidelines
|
||||
|
||||
### 파일 생성 및 프로젝트 등록 규칙
|
||||
|
||||
**❗ CRITICAL RULE**: 새로운 파일을 생성할 때마다 반드시 EETGW.csproj에 등록해야 합니다.
|
||||
|
||||
#### 자동 등록 필수사항
|
||||
1. **새 파일 생성 시**: Write 도구 사용 후 즉시 프로젝트 파일에 등록
|
||||
2. **등록 형식**:
|
||||
```xml
|
||||
<None Include="Web\wwwroot\[파일경로]">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
```
|
||||
3. **빌드 작업**: 없음 (`<None>` 태그 사용)
|
||||
4. **출력 디렉터리**: `PreserveNewest` (새 파일이면 복사)
|
||||
|
||||
#### 등록 대상 파일들
|
||||
- `Web\wwwroot\react\*.jsx` - React 컴포넌트
|
||||
- `Web\wwwroot\react-*.html` - React 페이지
|
||||
- `Web\wwwroot\*.html` - HTML 파일
|
||||
- `Web\wwwroot\*.js`, `Web\wwwroot\*.css` - 정적 자원
|
||||
|
||||
### React 아키텍처 패턴
|
||||
|
||||
#### 파일 구조
|
||||
- **컴포넌트**: `/Web/wwwroot/react/[ComponentName].jsx`
|
||||
- **페이지**: `/Web/wwwroot/react-[pagename].html`
|
||||
- **라우팅**: `ReactController`에서 `/react/[pagename]` 경로로 서빙
|
||||
|
||||
#### React 컴포넌트 구조
|
||||
```jsx
|
||||
// React 컴포넌트 기본 구조
|
||||
const { useState, useEffect, useRef } = React;
|
||||
|
||||
function ComponentName() {
|
||||
// 상태 관리
|
||||
const [data, setData] = useState({});
|
||||
const [loading, setLoading] = useState(false);
|
||||
|
||||
// API 연동
|
||||
const loadData = async () => {
|
||||
try {
|
||||
const response = await fetch('/Controller/Action');
|
||||
const result = await response.json();
|
||||
setData(result);
|
||||
} catch (error) {
|
||||
console.error('데이터 로드 실패:', error);
|
||||
}
|
||||
};
|
||||
|
||||
// 생명주기
|
||||
useEffect(() => {
|
||||
loadData();
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<div>
|
||||
{/* JSX 컨텐츠 */}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
#### HTML 페이지 구조
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<title>페이지명 (React)</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<!-- Tailwind 설정 -->
|
||||
<!-- 스타일 정의 -->
|
||||
</head>
|
||||
<body>
|
||||
<div id="react-app-id">
|
||||
<!-- 로딩 스켈레톤 UI -->
|
||||
</div>
|
||||
|
||||
<!-- React CDN -->
|
||||
<script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script>
|
||||
<script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
|
||||
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
|
||||
|
||||
<!-- 컴포넌트 로드 -->
|
||||
<script type="text/babel" src="/react/component/ComponentName"></script>
|
||||
|
||||
<!-- 앱 초기화 -->
|
||||
<script type="text/babel">
|
||||
const root = ReactDOM.createRoot(document.getElementById('react-app-id'));
|
||||
root.render(<ComponentName />);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
### ReactController 패턴
|
||||
|
||||
```csharp
|
||||
[HttpGet]
|
||||
[Route("react/pagename")]
|
||||
public HttpResponseMessage PageName()
|
||||
{
|
||||
try
|
||||
{
|
||||
var wwwrootPath = GetWwwRootPath();
|
||||
var filePath = Path.Combine(wwwrootPath, "react-pagename.html");
|
||||
|
||||
if (!File.Exists(filePath))
|
||||
{
|
||||
return Request.CreateErrorResponse(HttpStatusCode.NotFound,
|
||||
$"React page not found: {filePath}");
|
||||
}
|
||||
|
||||
var content = File.ReadAllText(filePath, Encoding.UTF8);
|
||||
var response = Request.CreateResponse(HttpStatusCode.OK);
|
||||
response.Content = new StringContent(content, Encoding.UTF8, "text/html");
|
||||
|
||||
return response;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError,
|
||||
$"Error serving React page: {ex.Message}");
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 개발 워크플로우
|
||||
|
||||
1. **컴포넌트 생성**: `/react/ComponentName.jsx` 파일 생성
|
||||
2. **페이지 생성**: `/react-pagename.html` 파일 생성
|
||||
3. **프로젝트 등록**: EETGW.csproj에 두 파일 모두 등록
|
||||
4. **라우트 추가**: ReactController에 새 라우트 추가
|
||||
5. **테스트**: 빌드 후 `/react/pagename`으로 접근 테스트
|
||||
|
||||
### API 연동 가이드라인
|
||||
|
||||
- **병렬 호출**: `Promise.all()` 사용으로 성능 최적화
|
||||
- **에러 처리**: try-catch로 모든 API 호출 감싸기
|
||||
- **로딩 상태**: 사용자 경험을 위한 로딩 인디케이터 필수
|
||||
- **실시간 업데이트**: 중요한 데이터는 자동 새로고침 구현
|
||||
|
||||
### 디자인 시스템
|
||||
|
||||
- **CSS 프레임워크**: Tailwind CSS 사용
|
||||
- **색상 팔레트**: primary, success, warning, danger 정의
|
||||
- **글래스 효과**: `glass-effect` 클래스 활용
|
||||
- **애니메이션**: `animate-fade-in`, `animate-slide-up` 등
|
||||
- **반응형**: 모바일 퍼스트 접근법
|
||||
|
||||
### 품질 기준
|
||||
|
||||
- **접근성**: 키보드 네비게이션, 스크린 리더 지원
|
||||
- **성능**: 30초 자동 새로고침, 로딩 최적화
|
||||
- **에러 처리**: 사용자 친화적 오류 메시지
|
||||
- **호환성**: 모든 주요 브라우저 지원
|
||||
|
||||
### 주의사항
|
||||
|
||||
- 기존 시스템과 병행 개발 (`/react/` 하위에서 개발)
|
||||
- 기존 API 컨트롤러 최대한 재사용
|
||||
- 동일한 디자인 언어 유지 (색상, 폰트, 레이아웃)
|
||||
- 단계적 전환을 위한 라우팅 분리
|
||||
@@ -1,16 +0,0 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net8.0-windows</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<UseWindowsForms>true</UseWindowsForms>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Data.SqlClient" Version="6.0.1" />
|
||||
<PackageReference Include="Microsoft.SqlServer.SqlManagementObjects" Version="172.64.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -1,14 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Compile Update="Forms\ConnectionForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Update="Forms\MainForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Update="Forms\ProgressForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -1,131 +0,0 @@
|
||||
using DBMigration.Models;
|
||||
|
||||
namespace DBMigration.Forms
|
||||
{
|
||||
public partial class ConnectionForm : Form
|
||||
{
|
||||
public ConnectionInfo ConnectionInfo { get; private set; }
|
||||
|
||||
public ConnectionForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.Load += ConnectionForm_Load;
|
||||
}
|
||||
|
||||
private void ConnectionForm_Load(object? sender, EventArgs e)
|
||||
{
|
||||
UpdateCredentialsFields();
|
||||
this.txtServer.Text = "10.131.15.18";
|
||||
this.txtDatabase.Text = "EE";
|
||||
this.txtUserId.Text = "eeuser";
|
||||
this.txtPassword.Text = "Amkor123!";
|
||||
this.chkWindowsAuth.Checked = false;
|
||||
}
|
||||
|
||||
private void UpdateCredentialsFields()
|
||||
{
|
||||
bool isWindowsAuth = chkWindowsAuth.Checked;
|
||||
txtUserId.Enabled = !isWindowsAuth;
|
||||
txtPassword.Enabled = !isWindowsAuth;
|
||||
}
|
||||
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.txtServer = new TextBox();
|
||||
this.txtDatabase = new TextBox();
|
||||
this.txtUserId = new TextBox();
|
||||
this.txtPassword = new TextBox();
|
||||
this.chkWindowsAuth = new CheckBox();
|
||||
this.btnConnect = new Button();
|
||||
this.btnCancel = new Button();
|
||||
this.SuspendLayout();
|
||||
|
||||
// txtServer
|
||||
this.txtServer.Location = new Point(12, 12);
|
||||
this.txtServer.Size = new Size(200, 23);
|
||||
this.txtServer.PlaceholderText = "서버 이름";
|
||||
|
||||
// txtDatabase
|
||||
this.txtDatabase.Location = new Point(12, 41);
|
||||
this.txtDatabase.Size = new Size(200, 23);
|
||||
this.txtDatabase.PlaceholderText = "데이터베이스 이름";
|
||||
|
||||
// txtUserId
|
||||
this.txtUserId.Location = new Point(12, 70);
|
||||
this.txtUserId.Size = new Size(200, 23);
|
||||
this.txtUserId.PlaceholderText = "사용자 ID";
|
||||
|
||||
// txtPassword
|
||||
this.txtPassword.Location = new Point(12, 99);
|
||||
this.txtPassword.Size = new Size(200, 23);
|
||||
this.txtPassword.PasswordChar = '*';
|
||||
this.txtPassword.PlaceholderText = "비밀번호";
|
||||
|
||||
// chkWindowsAuth
|
||||
this.chkWindowsAuth.Location = new Point(12, 128);
|
||||
this.chkWindowsAuth.Size = new Size(200, 23);
|
||||
this.chkWindowsAuth.Text = "Windows 인증 사용";
|
||||
this.chkWindowsAuth.CheckedChanged += (s, e) => UpdateCredentialsFields();
|
||||
|
||||
// btnConnect
|
||||
this.btnConnect.Location = new Point(12, 157);
|
||||
this.btnConnect.Size = new Size(95, 23);
|
||||
this.btnConnect.Text = "연결";
|
||||
this.btnConnect.Click += BtnConnect_Click;
|
||||
|
||||
// btnCancel
|
||||
this.btnCancel.Location = new Point(117, 157);
|
||||
this.btnCancel.Size = new Size(95, 23);
|
||||
this.btnCancel.Text = "취소";
|
||||
this.btnCancel.Click += BtnCancel_Click;
|
||||
|
||||
// ConnectionForm
|
||||
this.ClientSize = new Size(224, 192);
|
||||
this.Controls.AddRange(new Control[] {
|
||||
this.txtServer,
|
||||
this.txtDatabase,
|
||||
this.txtUserId,
|
||||
this.txtPassword,
|
||||
this.chkWindowsAuth,
|
||||
this.btnConnect,
|
||||
this.btnCancel
|
||||
});
|
||||
this.FormBorderStyle = FormBorderStyle.FixedDialog;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.StartPosition = FormStartPosition.CenterParent;
|
||||
this.Text = "데이터베이스 연결";
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
}
|
||||
|
||||
private void BtnConnect_Click(object? sender, EventArgs e)
|
||||
{
|
||||
ConnectionInfo = new ConnectionInfo
|
||||
{
|
||||
ServerName = txtServer.Text,
|
||||
DatabaseName = txtDatabase.Text,
|
||||
UserId = txtUserId.Text,
|
||||
Password = txtPassword.Text,
|
||||
UseWindowsAuthentication = chkWindowsAuth.Checked
|
||||
};
|
||||
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
}
|
||||
|
||||
private void BtnCancel_Click(object? sender, EventArgs e)
|
||||
{
|
||||
DialogResult = DialogResult.Cancel;
|
||||
Close();
|
||||
}
|
||||
|
||||
private TextBox txtServer;
|
||||
private TextBox txtDatabase;
|
||||
private TextBox txtUserId;
|
||||
private TextBox txtPassword;
|
||||
private CheckBox chkWindowsAuth;
|
||||
private Button btnConnect;
|
||||
private Button btnCancel;
|
||||
}
|
||||
}
|
||||
67
DBMigration/Forms/MainForm.Designer.cs
generated
67
DBMigration/Forms/MainForm.Designer.cs
generated
@@ -1,67 +0,0 @@
|
||||
namespace DBMigration.Forms
|
||||
{
|
||||
partial class MainForm
|
||||
{
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.treeObjects = new System.Windows.Forms.TreeView();
|
||||
this.btnConnectSource = new System.Windows.Forms.Button();
|
||||
this.btnMigrate = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// treeObjects
|
||||
//
|
||||
this.treeObjects.Location = new System.Drawing.Point(12, 12);
|
||||
this.treeObjects.Name = "treeObjects";
|
||||
this.treeObjects.Size = new System.Drawing.Size(300, 400);
|
||||
this.treeObjects.TabIndex = 0;
|
||||
//
|
||||
// btnConnectSource
|
||||
//
|
||||
this.btnConnectSource.Location = new System.Drawing.Point(12, 418);
|
||||
this.btnConnectSource.Name = "btnConnectSource";
|
||||
this.btnConnectSource.Size = new System.Drawing.Size(150, 30);
|
||||
this.btnConnectSource.TabIndex = 1;
|
||||
this.btnConnectSource.Text = "소스 DB 연결";
|
||||
this.btnConnectSource.UseVisualStyleBackColor = true;
|
||||
this.btnConnectSource.Click += new System.EventHandler(this.btnConnectSource_Click);
|
||||
//
|
||||
// btnMigrate
|
||||
//
|
||||
this.btnMigrate.Location = new System.Drawing.Point(168, 418);
|
||||
this.btnMigrate.Name = "btnMigrate";
|
||||
this.btnMigrate.Size = new System.Drawing.Size(144, 30);
|
||||
this.btnMigrate.TabIndex = 2;
|
||||
this.btnMigrate.Text = "마이그레이션 시작";
|
||||
this.btnMigrate.UseVisualStyleBackColor = true;
|
||||
this.btnMigrate.Click += new System.EventHandler(this.btnMigrate_Click);
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(324, 461);
|
||||
this.Controls.Add(this.btnMigrate);
|
||||
this.Controls.Add(this.btnConnectSource);
|
||||
this.Controls.Add(this.treeObjects);
|
||||
this.Name = "MainForm";
|
||||
this.Text = "DB Migration Tool";
|
||||
this.ResumeLayout(false);
|
||||
}
|
||||
|
||||
private System.Windows.Forms.TreeView treeObjects;
|
||||
private System.Windows.Forms.Button btnConnectSource;
|
||||
private System.Windows.Forms.Button btnMigrate;
|
||||
}
|
||||
}
|
||||
@@ -1,184 +0,0 @@
|
||||
using DBMigration.Models;
|
||||
using DBMigration.Services;
|
||||
|
||||
namespace DBMigration.Forms
|
||||
{
|
||||
public partial class MainForm : Form
|
||||
{
|
||||
private readonly DatabaseService _databaseService;
|
||||
private readonly MigrationService _migrationService;
|
||||
private ConnectionInfo? _sourceConnection;
|
||||
private ConnectionInfo? _targetConnection;
|
||||
private List<DatabaseObject>? _databaseObjects;
|
||||
private readonly CancellationTokenSource _cancellationTokenSource;
|
||||
|
||||
public MainForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
_databaseService = new DatabaseService();
|
||||
_migrationService = new MigrationService();
|
||||
_cancellationTokenSource = new CancellationTokenSource();
|
||||
_databaseObjects = new List<DatabaseObject>();
|
||||
}
|
||||
|
||||
private async void btnConnectSource_Click(object sender, EventArgs e)
|
||||
{
|
||||
using (var form = new ConnectionForm())
|
||||
{
|
||||
if (form.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
_sourceConnection = form.ConnectionInfo;
|
||||
await LoadDatabaseObjectsAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async Task LoadDatabaseObjectsAsync()
|
||||
{
|
||||
try
|
||||
{
|
||||
btnConnectSource.Enabled = false;
|
||||
treeObjects.Nodes.Clear();
|
||||
|
||||
// 테이블, 뷰, 프로시저 노드 생성
|
||||
var tableNode = treeObjects.Nodes.Add("Tables");
|
||||
var viewNode = treeObjects.Nodes.Add("Views");
|
||||
var procNode = treeObjects.Nodes.Add("Stored Procedures");
|
||||
|
||||
// 테이블 로드
|
||||
tableNode.Nodes.Add("Loading...");
|
||||
treeObjects.ExpandAll();
|
||||
await LoadTablesAsync(tableNode);
|
||||
|
||||
// 뷰 로드
|
||||
viewNode.Nodes.Add("Loading...");
|
||||
await LoadViewsAsync(viewNode);
|
||||
|
||||
// 프로시저 로드
|
||||
procNode.Nodes.Add("Loading...");
|
||||
await LoadProceduresAsync(procNode);
|
||||
|
||||
btnConnectSource.Enabled = true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show($"데이터베이스 객체 로드 중 오류 발생: {ex.Message}", "오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
btnConnectSource.Enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
private async Task LoadTablesAsync(TreeNode parentNode)
|
||||
{
|
||||
try
|
||||
{
|
||||
parentNode.Nodes.Clear();
|
||||
parentNode.Nodes.Add("Loading...");
|
||||
|
||||
await foreach (var table in _databaseService.GetTables(_sourceConnection!))
|
||||
{
|
||||
if (_cancellationTokenSource.Token.IsCancellationRequested)
|
||||
return;
|
||||
|
||||
var node = new TreeNode($"{table.Schema}.{table.Name}")
|
||||
{
|
||||
Tag = table,
|
||||
Checked = table.IsSelected
|
||||
};
|
||||
|
||||
parentNode.Nodes.Add(node);
|
||||
await Task.Yield();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
parentNode.Nodes.Clear();
|
||||
parentNode.Nodes.Add($"Error: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
private async Task LoadViewsAsync(TreeNode parentNode)
|
||||
{
|
||||
try
|
||||
{
|
||||
parentNode.Nodes.Clear();
|
||||
parentNode.Nodes.Add("Loading...");
|
||||
|
||||
await foreach (var view in _databaseService.GetViews(_sourceConnection!))
|
||||
{
|
||||
if (_cancellationTokenSource.Token.IsCancellationRequested)
|
||||
return;
|
||||
|
||||
var node = new TreeNode($"{view.Schema}.{view.Name}")
|
||||
{
|
||||
Tag = view,
|
||||
Checked = view.IsSelected
|
||||
};
|
||||
|
||||
parentNode.Nodes.Add(node);
|
||||
await Task.Yield();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
parentNode.Nodes.Clear();
|
||||
parentNode.Nodes.Add($"Error: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
private async Task LoadProceduresAsync(TreeNode parentNode)
|
||||
{
|
||||
try
|
||||
{
|
||||
parentNode.Nodes.Clear();
|
||||
parentNode.Nodes.Add("Loading...");
|
||||
|
||||
await foreach (var proc in _databaseService.GetProcedures(_sourceConnection!))
|
||||
{
|
||||
if (_cancellationTokenSource.Token.IsCancellationRequested)
|
||||
return;
|
||||
|
||||
var node = new TreeNode($"{proc.Schema}.{proc.Name}")
|
||||
{
|
||||
Tag = proc,
|
||||
Checked = proc.IsSelected
|
||||
};
|
||||
|
||||
parentNode.Nodes.Add(node);
|
||||
await Task.Yield();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
parentNode.Nodes.Clear();
|
||||
parentNode.Nodes.Add($"Error: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnFormClosing(FormClosingEventArgs e)
|
||||
{
|
||||
_cancellationTokenSource.Cancel();
|
||||
base.OnFormClosing(e);
|
||||
}
|
||||
|
||||
private void btnMigrate_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (_targetConnection == null)
|
||||
{
|
||||
MessageBox.Show("대상 데이터베이스 연결 정보를 먼저 설정하세요.", "알림", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
return;
|
||||
}
|
||||
|
||||
var selectedObjects = _databaseObjects.Where(o => o.IsSelected).ToList();
|
||||
if (selectedObjects.Count == 0)
|
||||
{
|
||||
MessageBox.Show("마이그레이션할 객체를 선택하세요.", "알림", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
return;
|
||||
}
|
||||
|
||||
using (var form = new ProgressForm(selectedObjects, _sourceConnection, _targetConnection))
|
||||
{
|
||||
form.ShowDialog();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,120 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
56
DBMigration/Forms/ProgressForm.Designer.cs
generated
56
DBMigration/Forms/ProgressForm.Designer.cs
generated
@@ -1,56 +0,0 @@
|
||||
namespace DBMigration.Forms
|
||||
{
|
||||
partial class ProgressForm
|
||||
{
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.progressBar = new System.Windows.Forms.ProgressBar();
|
||||
this.logTextBox = new System.Windows.Forms.TextBox();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// progressBar
|
||||
//
|
||||
this.progressBar.Location = new System.Drawing.Point(12, 12);
|
||||
this.progressBar.Name = "progressBar";
|
||||
this.progressBar.Size = new System.Drawing.Size(300, 23);
|
||||
this.progressBar.TabIndex = 0;
|
||||
//
|
||||
// logTextBox
|
||||
//
|
||||
this.logTextBox.Location = new System.Drawing.Point(12, 41);
|
||||
this.logTextBox.Multiline = true;
|
||||
this.logTextBox.Name = "logTextBox";
|
||||
this.logTextBox.ReadOnly = true;
|
||||
this.logTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
|
||||
this.logTextBox.Size = new System.Drawing.Size(300, 200);
|
||||
this.logTextBox.TabIndex = 1;
|
||||
//
|
||||
// ProgressForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(324, 253);
|
||||
this.Controls.Add(this.logTextBox);
|
||||
this.Controls.Add(this.progressBar);
|
||||
this.Name = "ProgressForm";
|
||||
this.Text = "마이그레이션 진행 상황";
|
||||
this.Load += new System.EventHandler(this.ProgressForm_Load);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
}
|
||||
|
||||
private System.Windows.Forms.ProgressBar progressBar;
|
||||
private System.Windows.Forms.TextBox logTextBox;
|
||||
}
|
||||
}
|
||||
@@ -1,107 +0,0 @@
|
||||
using DBMigration.Models;
|
||||
using DBMigration.Services;
|
||||
using Microsoft.Data.SqlClient;
|
||||
|
||||
namespace DBMigration.Forms
|
||||
{
|
||||
public partial class ProgressForm : Form
|
||||
{
|
||||
private readonly List<DatabaseObject> _objects;
|
||||
private readonly ConnectionInfo _source;
|
||||
private readonly ConnectionInfo _target;
|
||||
private readonly MigrationService _migrationService;
|
||||
|
||||
public ProgressForm(List<DatabaseObject> objects, ConnectionInfo source, ConnectionInfo target)
|
||||
{
|
||||
InitializeComponent();
|
||||
_objects = objects;
|
||||
_source = source;
|
||||
_target = target;
|
||||
_migrationService = new MigrationService();
|
||||
|
||||
progressBar.Maximum = _objects.Count;
|
||||
}
|
||||
|
||||
private async void ProgressForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
await Task.Run(() => MigrateObjects());
|
||||
}
|
||||
|
||||
private void MigrateObjects()
|
||||
{
|
||||
foreach (var obj in _objects)
|
||||
{
|
||||
try
|
||||
{
|
||||
UpdateProgress($"마이그레이션 시작: {obj.Type} {obj.Schema}.{obj.Name}");
|
||||
|
||||
if (obj.Type == "TABLE")
|
||||
{
|
||||
_migrationService.MigrateTable(obj, _source, _target);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 뷰나 프로시저의 경우 스크립트만 실행
|
||||
ExecuteScript(obj.Definition, _target);
|
||||
}
|
||||
|
||||
UpdateProgress($"완료: {obj.Type} {obj.Schema}.{obj.Name}");
|
||||
UpdateProgressBar();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
UpdateProgress($"오류 발생: {obj.Type} {obj.Schema}.{obj.Name}");
|
||||
UpdateProgress($"에러 메시지: {ex.Message}");
|
||||
|
||||
if (MessageBox.Show(
|
||||
$"{obj.Type} {obj.Schema}.{obj.Name} 마이그레이션 중 오류가 발생했습니다.\n계속 진행하시겠습니까?",
|
||||
"오류",
|
||||
MessageBoxButtons.YesNo,
|
||||
MessageBoxIcon.Error) == DialogResult.No)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MessageBox.Show("마이그레이션이 완료되었습니다.", "완료", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
DialogResult = DialogResult.OK;
|
||||
}
|
||||
|
||||
private void UpdateProgress(string message)
|
||||
{
|
||||
if (InvokeRequired)
|
||||
{
|
||||
Invoke(new Action<string>(UpdateProgress), message);
|
||||
return;
|
||||
}
|
||||
|
||||
logTextBox.AppendText(message + Environment.NewLine);
|
||||
logTextBox.SelectionStart = logTextBox.TextLength;
|
||||
logTextBox.ScrollToCaret();
|
||||
}
|
||||
|
||||
private void UpdateProgressBar()
|
||||
{
|
||||
if (InvokeRequired)
|
||||
{
|
||||
Invoke(new Action(UpdateProgressBar));
|
||||
return;
|
||||
}
|
||||
|
||||
progressBar.Value++;
|
||||
}
|
||||
|
||||
private void ExecuteScript(string script, ConnectionInfo connection)
|
||||
{
|
||||
using (var conn = new SqlConnection(connection.GetConnectionString()))
|
||||
{
|
||||
conn.Open();
|
||||
using (var cmd = new SqlCommand(script, conn))
|
||||
{
|
||||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
namespace DBMigration.Models
|
||||
{
|
||||
public class ConnectionInfo
|
||||
{
|
||||
public string ServerName { get; set; } = string.Empty;
|
||||
public string DatabaseName { get; set; } = string.Empty;
|
||||
public string UserId { get; set; } = string.Empty;
|
||||
public string Password { get; set; } = string.Empty;
|
||||
public bool UseWindowsAuthentication { get; set; }
|
||||
|
||||
public string GetConnectionString()
|
||||
{
|
||||
var builder = new Microsoft.Data.SqlClient.SqlConnectionStringBuilder
|
||||
{
|
||||
DataSource = ServerName,
|
||||
InitialCatalog = DatabaseName,
|
||||
IntegratedSecurity = UseWindowsAuthentication,
|
||||
TrustServerCertificate = true
|
||||
};
|
||||
|
||||
if (!UseWindowsAuthentication)
|
||||
{
|
||||
builder.UserID = UserId;
|
||||
builder.Password = Password;
|
||||
}
|
||||
|
||||
return builder.ConnectionString;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
namespace DBMigration.Models
|
||||
{
|
||||
public class DatabaseObject
|
||||
{
|
||||
public string Name { get; set; } = string.Empty;
|
||||
public string Schema { get; set; } = string.Empty;
|
||||
public string Type { get; set; } = string.Empty;
|
||||
public bool IsSelected { get; set; }
|
||||
public string Definition { get; set; } = string.Empty;
|
||||
|
||||
public string FullName => $"[{Schema}].[{Name}]";
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
using DBMigration.Forms;
|
||||
|
||||
namespace DBMigration;
|
||||
|
||||
static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
// To customize application configuration such as set high DPI settings or default font,
|
||||
// see https://aka.ms/applicationconfiguration.
|
||||
ApplicationConfiguration.Initialize();
|
||||
Application.Run(new MainForm());
|
||||
}
|
||||
}
|
||||
@@ -1,327 +0,0 @@
|
||||
-- =============================================
|
||||
-- EETGW_Board 테이블 구조 변경: 댓글/답글 시스템 추가
|
||||
-- 작성일: 2025-12-03
|
||||
-- 설명: 계층형 댓글/답글을 효율적으로 관리하기 위한 컬럼 추가
|
||||
-- =============================================
|
||||
|
||||
USE [EETGW]
|
||||
GO
|
||||
|
||||
PRINT '=== Starting EETGW_Board structure update ===';
|
||||
PRINT 'Timestamp: ' + CONVERT(VARCHAR(20), GETDATE(), 120);
|
||||
GO
|
||||
|
||||
-- 1. 기존 테이블 백업
|
||||
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'EETGW_Board_Backup_20251203')
|
||||
BEGIN
|
||||
SELECT * INTO EETGW_Board_Backup_20251203 FROM EETGW_Board;
|
||||
PRINT '✓ Backup created: EETGW_Board_Backup_20251203';
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
PRINT '⚠ Backup already exists: EETGW_Board_Backup_20251203';
|
||||
END
|
||||
GO
|
||||
|
||||
-- 2. 새로운 컬럼 추가
|
||||
PRINT '';
|
||||
PRINT '--- Adding new columns ---';
|
||||
|
||||
-- root_idx: 최상위 원글의 idx (답글/댓글이 어느 글에 속하는지)
|
||||
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('EETGW_Board') AND name = 'root_idx')
|
||||
BEGIN
|
||||
ALTER TABLE EETGW_Board ADD root_idx INT NULL;
|
||||
PRINT '✓ Added column: root_idx (최상위 원글 idx)';
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
PRINT '⊙ Column already exists: root_idx';
|
||||
END
|
||||
GO
|
||||
|
||||
-- depth: 댓글 깊이 (0=원글, 1=1차댓글, 2=2차댓글...)
|
||||
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('EETGW_Board') AND name = 'depth')
|
||||
BEGIN
|
||||
ALTER TABLE EETGW_Board ADD depth INT NOT NULL DEFAULT 0;
|
||||
PRINT '✓ Added column: depth (댓글 깊이)';
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
PRINT '⊙ Column already exists: depth';
|
||||
END
|
||||
GO
|
||||
|
||||
-- sort_order: 같은 레벨에서의 정렬 순서
|
||||
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('EETGW_Board') AND name = 'sort_order')
|
||||
BEGIN
|
||||
ALTER TABLE EETGW_Board ADD sort_order INT NOT NULL DEFAULT 0;
|
||||
PRINT '✓ Added column: sort_order (정렬 순서)';
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
PRINT '⊙ Column already exists: sort_order';
|
||||
END
|
||||
GO
|
||||
|
||||
-- thread_path: 계층 경로 (예: "1/5/12" - 빠른 정렬과 조회용)
|
||||
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('EETGW_Board') AND name = 'thread_path')
|
||||
BEGIN
|
||||
ALTER TABLE EETGW_Board ADD thread_path VARCHAR(1000) NULL;
|
||||
PRINT '✓ Added column: thread_path (계층 경로)';
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
PRINT '⊙ Column already exists: thread_path';
|
||||
END
|
||||
GO
|
||||
|
||||
-- is_comment: 댓글 여부 (true=댓글형식, false=답글형식)
|
||||
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('EETGW_Board') AND name = 'is_comment')
|
||||
BEGIN
|
||||
ALTER TABLE EETGW_Board ADD is_comment BIT NOT NULL DEFAULT 0;
|
||||
PRINT '✓ Added column: is_comment (댓글/답글 구분)';
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
PRINT '⊙ Column already exists: is_comment';
|
||||
END
|
||||
GO
|
||||
|
||||
-- reply_count: 하위 댓글/답글 개수 (캐시용)
|
||||
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('EETGW_Board') AND name = 'reply_count')
|
||||
BEGIN
|
||||
ALTER TABLE EETGW_Board ADD reply_count INT NOT NULL DEFAULT 0;
|
||||
PRINT '✓ Added column: reply_count (댓글 개수 캐시)';
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
PRINT '⊙ Column already exists: reply_count';
|
||||
END
|
||||
GO
|
||||
|
||||
-- 3. 기존 데이터 마이그레이션
|
||||
PRINT '';
|
||||
PRINT '--- Migrating existing data ---';
|
||||
|
||||
-- 원글(pidx가 0이거나 NULL인 경우)
|
||||
UPDATE EETGW_Board
|
||||
SET
|
||||
root_idx = idx,
|
||||
depth = 0,
|
||||
thread_path = CAST(idx AS VARCHAR(20)),
|
||||
sort_order = 0,
|
||||
is_comment = 0
|
||||
WHERE ISNULL(pidx, 0) = 0 AND (root_idx IS NULL OR thread_path IS NULL);
|
||||
|
||||
DECLARE @originalCount INT = @@ROWCOUNT;
|
||||
PRINT '✓ Updated ' + CAST(@originalCount AS VARCHAR(10)) + ' original posts (depth=0)';
|
||||
|
||||
-- 답글(pidx가 있는 경우) - 1depth만 처리
|
||||
UPDATE b
|
||||
SET
|
||||
root_idx = ISNULL(p.root_idx, b.pidx),
|
||||
depth = CASE WHEN p.depth IS NULL THEN 1 ELSE p.depth + 1 END,
|
||||
thread_path = ISNULL(p.thread_path, CAST(b.pidx AS VARCHAR(20))) + '/' + CAST(b.idx AS VARCHAR(20)),
|
||||
sort_order = 0,
|
||||
is_comment = 0
|
||||
FROM EETGW_Board b
|
||||
LEFT JOIN EETGW_Board p ON b.pidx = p.idx
|
||||
WHERE ISNULL(b.pidx, 0) > 0 AND (b.root_idx IS NULL OR b.thread_path IS NULL);
|
||||
|
||||
DECLARE @replyCount INT = @@ROWCOUNT;
|
||||
PRINT '✓ Updated ' + CAST(@replyCount AS VARCHAR(10)) + ' reply posts';
|
||||
GO
|
||||
|
||||
-- 4. 인덱스 추가 (성능 최적화)
|
||||
PRINT '';
|
||||
PRINT '--- Creating indexes ---';
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_EETGW_Board_root_idx_thread_path')
|
||||
BEGIN
|
||||
CREATE INDEX IX_EETGW_Board_root_idx_thread_path
|
||||
ON EETGW_Board(root_idx, thread_path);
|
||||
PRINT '✓ Created index: IX_EETGW_Board_root_idx_thread_path';
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
PRINT '⊙ Index already exists: IX_EETGW_Board_root_idx_thread_path';
|
||||
END
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_EETGW_Board_pidx')
|
||||
BEGIN
|
||||
CREATE INDEX IX_EETGW_Board_pidx
|
||||
ON EETGW_Board(pidx);
|
||||
PRINT '✓ Created index: IX_EETGW_Board_pidx';
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
PRINT '⊙ Index already exists: IX_EETGW_Board_pidx';
|
||||
END
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_EETGW_Board_bidx_wdate')
|
||||
BEGIN
|
||||
CREATE INDEX IX_EETGW_Board_bidx_wdate
|
||||
ON EETGW_Board(bidx, wdate DESC);
|
||||
PRINT '✓ Created index: IX_EETGW_Board_bidx_wdate';
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
PRINT '⊙ Index already exists: IX_EETGW_Board_bidx_wdate';
|
||||
END
|
||||
GO
|
||||
|
||||
-- 5. reply_count 업데이트 (기존 데이터 기준)
|
||||
PRINT '';
|
||||
PRINT '--- Updating reply counts ---';
|
||||
|
||||
UPDATE p
|
||||
SET reply_count = (
|
||||
SELECT COUNT(*)
|
||||
FROM EETGW_Board c
|
||||
WHERE c.root_idx = p.idx AND c.depth > 0
|
||||
)
|
||||
FROM EETGW_Board p
|
||||
WHERE p.depth = 0;
|
||||
|
||||
DECLARE @updatedRootPosts INT = @@ROWCOUNT;
|
||||
PRINT '✓ Updated reply_count for ' + CAST(@updatedRootPosts AS VARCHAR(10)) + ' root posts';
|
||||
GO
|
||||
|
||||
-- 6. 트리거 생성 (reply_count 자동 업데이트)
|
||||
PRINT '';
|
||||
PRINT '--- Creating triggers ---';
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.triggers WHERE name = 'TR_EETGW_Board_AfterInsert')
|
||||
BEGIN
|
||||
DROP TRIGGER TR_EETGW_Board_AfterInsert;
|
||||
PRINT '⊙ Dropped existing trigger: TR_EETGW_Board_AfterInsert';
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE TRIGGER TR_EETGW_Board_AfterInsert
|
||||
ON EETGW_Board
|
||||
AFTER INSERT
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
-- 댓글/답글이 추가된 경우 root_idx의 reply_count 증가
|
||||
UPDATE b
|
||||
SET b.reply_count = b.reply_count + 1
|
||||
FROM EETGW_Board b
|
||||
INNER JOIN inserted i ON b.idx = i.root_idx
|
||||
WHERE i.root_idx IS NOT NULL AND i.depth > 0;
|
||||
END
|
||||
GO
|
||||
|
||||
PRINT '✓ Created trigger: TR_EETGW_Board_AfterInsert';
|
||||
GO
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.triggers WHERE name = 'TR_EETGW_Board_AfterDelete')
|
||||
BEGIN
|
||||
DROP TRIGGER TR_EETGW_Board_AfterDelete;
|
||||
PRINT '⊙ Dropped existing trigger: TR_EETGW_Board_AfterDelete';
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE TRIGGER TR_EETGW_Board_AfterDelete
|
||||
ON EETGW_Board
|
||||
AFTER DELETE
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
-- 댓글/답글이 삭제된 경우 root_idx의 reply_count 감소
|
||||
UPDATE b
|
||||
SET b.reply_count = b.reply_count - 1
|
||||
FROM EETGW_Board b
|
||||
INNER JOIN deleted d ON b.idx = d.root_idx
|
||||
WHERE d.root_idx IS NOT NULL AND d.depth > 0 AND b.reply_count > 0;
|
||||
END
|
||||
GO
|
||||
|
||||
PRINT '✓ Created trigger: TR_EETGW_Board_AfterDelete';
|
||||
GO
|
||||
|
||||
-- 7. 조회용 뷰 생성 (옵션)
|
||||
PRINT '';
|
||||
PRINT '--- Creating views ---';
|
||||
|
||||
IF EXISTS (SELECT * FROM sys.views WHERE name = 'vEETGW_Board_WithReplies')
|
||||
BEGIN
|
||||
DROP VIEW vEETGW_Board_WithReplies;
|
||||
PRINT '⊙ Dropped existing view: vEETGW_Board_WithReplies';
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE VIEW vEETGW_Board_WithReplies
|
||||
AS
|
||||
SELECT
|
||||
b.idx,
|
||||
b.bidx,
|
||||
b.header,
|
||||
b.cate,
|
||||
b.title,
|
||||
b.contents,
|
||||
b.[file],
|
||||
b.guid,
|
||||
b.url,
|
||||
b.wuid,
|
||||
b.wdate,
|
||||
b.project,
|
||||
b.pidx,
|
||||
b.gcode,
|
||||
b.[close],
|
||||
b.remark,
|
||||
b.root_idx,
|
||||
b.depth,
|
||||
b.sort_order,
|
||||
b.thread_path,
|
||||
b.is_comment,
|
||||
b.reply_count,
|
||||
dbo.getUserName(b.wuid) AS wuid_name,
|
||||
CASE WHEN b.depth = 0 THEN b.idx ELSE b.root_idx END AS display_root_idx
|
||||
FROM EETGW_Board b;
|
||||
GO
|
||||
|
||||
PRINT '✓ Created view: vEETGW_Board_WithReplies';
|
||||
GO
|
||||
|
||||
-- 8. 검증 쿼리
|
||||
PRINT '';
|
||||
PRINT '--- Verification ---';
|
||||
|
||||
DECLARE @totalPosts INT = (SELECT COUNT(*) FROM EETGW_Board);
|
||||
DECLARE @rootPosts INT = (SELECT COUNT(*) FROM EETGW_Board WHERE depth = 0);
|
||||
DECLARE @replyPosts INT = (SELECT COUNT(*) FROM EETGW_Board WHERE depth > 0);
|
||||
|
||||
PRINT 'Total posts: ' + CAST(@totalPosts AS VARCHAR(10));
|
||||
PRINT 'Root posts (depth=0): ' + CAST(@rootPosts AS VARCHAR(10));
|
||||
PRINT 'Reply posts (depth>0): ' + CAST(@replyPosts AS VARCHAR(10));
|
||||
GO
|
||||
|
||||
PRINT '';
|
||||
PRINT '=== EETGW_Board structure update completed successfully ===';
|
||||
PRINT '';
|
||||
PRINT '📋 New columns added:';
|
||||
PRINT ' • root_idx: 최상위 원글 idx';
|
||||
PRINT ' • depth: 댓글 깊이 (0=원글, 1=1차댓글, 2=2차댓글...)';
|
||||
PRINT ' • sort_order: 같은 레벨에서 정렬 순서';
|
||||
PRINT ' • thread_path: 계층 경로 (빠른 정렬용)';
|
||||
PRINT ' • is_comment: 댓글 타입 (0=답글, 1=댓글)';
|
||||
PRINT ' • reply_count: 하위 댓글 개수';
|
||||
PRINT '';
|
||||
PRINT '📝 Usage examples:';
|
||||
PRINT ' -- 원글 목록 (댓글 개수 포함)';
|
||||
PRINT ' SELECT * FROM EETGW_Board WHERE bidx = 5 AND depth = 0 ORDER BY wdate DESC;';
|
||||
PRINT '';
|
||||
PRINT ' -- 특정 글의 전체 댓글 (계층 구조 유지)';
|
||||
PRINT ' SELECT * FROM EETGW_Board WHERE root_idx = 123 ORDER BY thread_path, wdate;';
|
||||
PRINT '';
|
||||
PRINT ' -- 1depth 댓글만 조회';
|
||||
PRINT ' SELECT * FROM EETGW_Board WHERE root_idx = 123 AND depth = 1 ORDER BY wdate;';
|
||||
PRINT '';
|
||||
PRINT '✅ Migration completed at: ' + CONVERT(VARCHAR(20), GETDATE(), 120);
|
||||
GO
|
||||
@@ -1,123 +0,0 @@
|
||||
using Microsoft.Data.SqlClient;
|
||||
using Microsoft.SqlServer.Management.Smo;
|
||||
using DBMigration.Models;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DBMigration.Services
|
||||
{
|
||||
public class DatabaseService
|
||||
{
|
||||
public async IAsyncEnumerable<DatabaseObject> GetTables(ConnectionInfo connection)
|
||||
{
|
||||
await foreach (var obj in GetDatabaseObjectsAsync(connection, "TABLE"))
|
||||
{
|
||||
yield return obj;
|
||||
}
|
||||
}
|
||||
|
||||
public async IAsyncEnumerable<DatabaseObject> GetViews(ConnectionInfo connection)
|
||||
{
|
||||
await foreach (var obj in GetDatabaseObjectsAsync(connection, "VIEW"))
|
||||
{
|
||||
yield return obj;
|
||||
}
|
||||
}
|
||||
|
||||
public async IAsyncEnumerable<DatabaseObject> GetProcedures(ConnectionInfo connection)
|
||||
{
|
||||
await foreach (var obj in GetDatabaseObjectsAsync(connection, "PROCEDURE"))
|
||||
{
|
||||
yield return obj;
|
||||
}
|
||||
}
|
||||
|
||||
private async IAsyncEnumerable<DatabaseObject> GetDatabaseObjectsAsync(ConnectionInfo connection, string objectType)
|
||||
{
|
||||
using (var conn = new SqlConnection(connection.GetConnectionString()))
|
||||
{
|
||||
await conn.OpenAsync();
|
||||
var server = new Server(new Microsoft.SqlServer.Management.Common.ServerConnection(conn));
|
||||
var database = server.Databases[connection.DatabaseName];
|
||||
|
||||
switch (objectType)
|
||||
{
|
||||
case "TABLE":
|
||||
foreach (Table table in database.Tables)
|
||||
{
|
||||
if (table.IsSystemObject || table.Name.StartsWith("_")) continue;
|
||||
yield return CreateDatabaseObject(table);
|
||||
await Task.Yield();
|
||||
}
|
||||
break;
|
||||
|
||||
case "VIEW":
|
||||
foreach (Microsoft.SqlServer.Management.Smo.View view in database.Views)
|
||||
{
|
||||
if (view.IsSystemObject) continue;
|
||||
yield return CreateDatabaseObject(view);
|
||||
await Task.Yield();
|
||||
}
|
||||
break;
|
||||
|
||||
case "PROCEDURE":
|
||||
foreach (StoredProcedure sp in database.StoredProcedures)
|
||||
{
|
||||
if (sp.IsSystemObject) continue;
|
||||
yield return CreateDatabaseObject(sp);
|
||||
await Task.Yield();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private DatabaseObject CreateDatabaseObject(Table table)
|
||||
{
|
||||
return new DatabaseObject
|
||||
{
|
||||
Name = table.Name,
|
||||
Schema = table.Schema,
|
||||
Type = "TABLE",
|
||||
Definition = GetTableDefinition(table)
|
||||
};
|
||||
}
|
||||
|
||||
private DatabaseObject CreateDatabaseObject(Microsoft.SqlServer.Management.Smo.View view)
|
||||
{
|
||||
return new DatabaseObject
|
||||
{
|
||||
Name = view.Name,
|
||||
Schema = view.Schema,
|
||||
Type = "VIEW",
|
||||
Definition = view.TextBody
|
||||
};
|
||||
}
|
||||
|
||||
private DatabaseObject CreateDatabaseObject(StoredProcedure sp)
|
||||
{
|
||||
return new DatabaseObject
|
||||
{
|
||||
Name = sp.Name,
|
||||
Schema = sp.Schema,
|
||||
Type = "PROCEDURE",
|
||||
Definition = sp.TextBody
|
||||
};
|
||||
}
|
||||
|
||||
private string GetTableDefinition(Table table)
|
||||
{
|
||||
var options = new ScriptingOptions
|
||||
{
|
||||
IncludeIfNotExists = true,
|
||||
ScriptDrops = false,
|
||||
WithDependencies = true,
|
||||
Indexes = true,
|
||||
Triggers = true,
|
||||
ClusteredIndexes = true,
|
||||
NonClusteredIndexes = true
|
||||
};
|
||||
|
||||
return table.Script(options).ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,92 +0,0 @@
|
||||
using Microsoft.Data.SqlClient;
|
||||
using Microsoft.SqlServer.Management.Smo;
|
||||
using DBMigration.Models;
|
||||
|
||||
namespace DBMigration.Services
|
||||
{
|
||||
public class MigrationService
|
||||
{
|
||||
private readonly DatabaseService _databaseService;
|
||||
|
||||
public MigrationService()
|
||||
{
|
||||
_databaseService = new DatabaseService();
|
||||
}
|
||||
|
||||
public void MigrateTable(DatabaseObject table, ConnectionInfo source, ConnectionInfo target)
|
||||
{
|
||||
using (var sourceConn = new SqlConnection(source.GetConnectionString()))
|
||||
using (var targetConn = new SqlConnection(target.GetConnectionString()))
|
||||
{
|
||||
sourceConn.Open();
|
||||
targetConn.Open();
|
||||
|
||||
// 1. 테이블 생성 (인덱스 포함)
|
||||
ExecuteScript(table.Definition, targetConn);
|
||||
|
||||
// 2. IDENTITY와 트리거 비활성화
|
||||
DisableIdentityAndTriggers(table, targetConn);
|
||||
|
||||
// 3. 데이터 복사
|
||||
CopyData(table, sourceConn, targetConn);
|
||||
|
||||
// 4. IDENTITY와 트리거 재활성화
|
||||
EnableIdentityAndTriggers(table, targetConn);
|
||||
|
||||
// 5. 통계 업데이트
|
||||
UpdateStatistics(table, targetConn);
|
||||
}
|
||||
}
|
||||
|
||||
private void ExecuteScript(string script, SqlConnection connection)
|
||||
{
|
||||
using (var cmd = new SqlCommand(script, connection))
|
||||
{
|
||||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
|
||||
private void DisableIdentityAndTriggers(DatabaseObject table, SqlConnection connection)
|
||||
{
|
||||
var disableScript = $@"
|
||||
-- IDENTITY 비활성화
|
||||
SET IDENTITY_INSERT {table.FullName} ON;
|
||||
|
||||
-- 트리거 비활성화
|
||||
DISABLE TRIGGER ALL ON {table.FullName};";
|
||||
|
||||
ExecuteScript(disableScript, connection);
|
||||
}
|
||||
|
||||
private void EnableIdentityAndTriggers(DatabaseObject table, SqlConnection connection)
|
||||
{
|
||||
var enableScript = $@"
|
||||
-- IDENTITY 활성화
|
||||
SET IDENTITY_INSERT {table.FullName} OFF;
|
||||
|
||||
-- 트리거 활성화
|
||||
ENABLE TRIGGER ALL ON {table.FullName};";
|
||||
|
||||
ExecuteScript(enableScript, connection);
|
||||
}
|
||||
|
||||
private void CopyData(DatabaseObject table, SqlConnection source, SqlConnection target)
|
||||
{
|
||||
using (var cmd = new SqlCommand($"SELECT * FROM {table.FullName}", source))
|
||||
using (var reader = cmd.ExecuteReader())
|
||||
{
|
||||
using (var bulkCopy = new SqlBulkCopy(target))
|
||||
{
|
||||
bulkCopy.DestinationTableName = table.FullName;
|
||||
bulkCopy.WriteToServer(reader);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateStatistics(DatabaseObject table, SqlConnection connection)
|
||||
{
|
||||
var updateStatsScript = $"UPDATE STATISTICS {table.FullName} WITH FULLSCAN;";
|
||||
ExecuteScript(updateStatsScript, connection);
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
51
EETGW.sln
51
EETGW.sln
@@ -1,7 +1,7 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Express 15 for Windows Desktop
|
||||
VisualStudioVersion = 15.0.36324.19
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.14.36310.24 d17.14
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EETGW", "Project\EETGW.csproj", "{65F3E762-800C-499E-862F-A535642EC59F}"
|
||||
EndProject
|
||||
@@ -21,25 +21,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Project", "Project", "{6C7E
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FBS0000", "SubProject\FBS0000\FBS0000.csproj", "{F6F515C6-6628-47C4-8A94-683BDF9FBB9C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FTPClass", "Sub\arftp\FTPClass.csproj", "{150859D3-1C5D-4E20-B324-F9EBE188D893}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FPM0000", "SubProject\FPM0000\FPM0000.csproj", "{D01A7891-AD0B-489B-8C45-F598C875FE26}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "arControl", "Sub\arCtl\arControl.csproj", "{F31C242C-1B15-4518-9733-48558499FE4B}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "arTCPService.Shared", "Sub\tcpservice\arTCPService.Shared\arTCPService.Shared.csproj", "{3CD79316-211A-4B57-A6B4-00FA6091C29D}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UMSControl", "SubProject\CMSControl\UMSControl.csproj", "{55EF08A8-6E94-4569-8371-7AAC9DE916AB}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebServer", "SubProject\WebServer\WebServer.csproj", "{CAFE5CD0-C055-4C77-9253-8D5EE9558D43}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FED0000", "SubProject\FED0000\FED0000.csproj", "{3869B8C1-1290-4864-B72D-D771475F914D}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "솔루션 항목", "솔루션 항목", "{3F107B67-9A59-4767-A20A-07A8AC4299D0}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
MemoryMap.cs = MemoryMap.cs
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YARTE", "Sub\YARTE\YARTE.csproj", "{DB5EE9C8-EACF-4231-877E-B9DFD7A714DE}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Console_SendMail", "Sub\Console_SendMail\Console_SendMail.csproj", "{8C94D335-7468-4964-AA24-1E3313CF7ABA}"
|
||||
@@ -98,12 +85,6 @@ Global
|
||||
{F6F515C6-6628-47C4-8A94-683BDF9FBB9C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F6F515C6-6628-47C4-8A94-683BDF9FBB9C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{F6F515C6-6628-47C4-8A94-683BDF9FBB9C}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{150859D3-1C5D-4E20-B324-F9EBE188D893}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{150859D3-1C5D-4E20-B324-F9EBE188D893}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{150859D3-1C5D-4E20-B324-F9EBE188D893}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{150859D3-1C5D-4E20-B324-F9EBE188D893}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{150859D3-1C5D-4E20-B324-F9EBE188D893}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{150859D3-1C5D-4E20-B324-F9EBE188D893}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{D01A7891-AD0B-489B-8C45-F598C875FE26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D01A7891-AD0B-489B-8C45-F598C875FE26}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D01A7891-AD0B-489B-8C45-F598C875FE26}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
@@ -112,22 +93,6 @@ Global
|
||||
{D01A7891-AD0B-489B-8C45-F598C875FE26}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{D01A7891-AD0B-489B-8C45-F598C875FE26}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{D01A7891-AD0B-489B-8C45-F598C875FE26}.Release|x86.Build.0 = Release|Any CPU
|
||||
{F31C242C-1B15-4518-9733-48558499FE4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F31C242C-1B15-4518-9733-48558499FE4B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F31C242C-1B15-4518-9733-48558499FE4B}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{F31C242C-1B15-4518-9733-48558499FE4B}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{F31C242C-1B15-4518-9733-48558499FE4B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F31C242C-1B15-4518-9733-48558499FE4B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{F31C242C-1B15-4518-9733-48558499FE4B}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{F31C242C-1B15-4518-9733-48558499FE4B}.Release|x86.Build.0 = Release|Any CPU
|
||||
{3CD79316-211A-4B57-A6B4-00FA6091C29D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3CD79316-211A-4B57-A6B4-00FA6091C29D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3CD79316-211A-4B57-A6B4-00FA6091C29D}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{3CD79316-211A-4B57-A6B4-00FA6091C29D}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{3CD79316-211A-4B57-A6B4-00FA6091C29D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3CD79316-211A-4B57-A6B4-00FA6091C29D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3CD79316-211A-4B57-A6B4-00FA6091C29D}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{3CD79316-211A-4B57-A6B4-00FA6091C29D}.Release|x86.Build.0 = Release|Any CPU
|
||||
{55EF08A8-6E94-4569-8371-7AAC9DE916AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{55EF08A8-6E94-4569-8371-7AAC9DE916AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{55EF08A8-6E94-4569-8371-7AAC9DE916AB}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
@@ -136,14 +101,6 @@ Global
|
||||
{55EF08A8-6E94-4569-8371-7AAC9DE916AB}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{55EF08A8-6E94-4569-8371-7AAC9DE916AB}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{55EF08A8-6E94-4569-8371-7AAC9DE916AB}.Release|x86.Build.0 = Release|Any CPU
|
||||
{CAFE5CD0-C055-4C77-9253-8D5EE9558D43}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{CAFE5CD0-C055-4C77-9253-8D5EE9558D43}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{CAFE5CD0-C055-4C77-9253-8D5EE9558D43}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{CAFE5CD0-C055-4C77-9253-8D5EE9558D43}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{CAFE5CD0-C055-4C77-9253-8D5EE9558D43}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{CAFE5CD0-C055-4C77-9253-8D5EE9558D43}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{CAFE5CD0-C055-4C77-9253-8D5EE9558D43}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{CAFE5CD0-C055-4C77-9253-8D5EE9558D43}.Release|x86.Build.0 = Release|Any CPU
|
||||
{3869B8C1-1290-4864-B72D-D771475F914D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3869B8C1-1290-4864-B72D-D771475F914D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3869B8C1-1290-4864-B72D-D771475F914D}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
@@ -187,12 +144,8 @@ Global
|
||||
{74836A5F-CB5B-449F-9210-99C9D1A23B97} = {6C7EC99E-7367-4255-A039-EF5E8D75A2F6}
|
||||
{26982882-C1FF-45F8-861C-D67558725FF1} = {6C7EC99E-7367-4255-A039-EF5E8D75A2F6}
|
||||
{F6F515C6-6628-47C4-8A94-683BDF9FBB9C} = {6C7EC99E-7367-4255-A039-EF5E8D75A2F6}
|
||||
{150859D3-1C5D-4E20-B324-F9EBE188D893} = {28105E67-9D33-4627-8E26-FCE67700622F}
|
||||
{D01A7891-AD0B-489B-8C45-F598C875FE26} = {6C7EC99E-7367-4255-A039-EF5E8D75A2F6}
|
||||
{F31C242C-1B15-4518-9733-48558499FE4B} = {28105E67-9D33-4627-8E26-FCE67700622F}
|
||||
{3CD79316-211A-4B57-A6B4-00FA6091C29D} = {28105E67-9D33-4627-8E26-FCE67700622F}
|
||||
{55EF08A8-6E94-4569-8371-7AAC9DE916AB} = {28105E67-9D33-4627-8E26-FCE67700622F}
|
||||
{CAFE5CD0-C055-4C77-9253-8D5EE9558D43} = {6C7EC99E-7367-4255-A039-EF5E8D75A2F6}
|
||||
{3869B8C1-1290-4864-B72D-D771475F914D} = {6C7EC99E-7367-4255-A039-EF5E8D75A2F6}
|
||||
{DB5EE9C8-EACF-4231-877E-B9DFD7A714DE} = {28105E67-9D33-4627-8E26-FCE67700622F}
|
||||
EndGlobalSection
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 2013
|
||||
VisualStudioVersion = 12.0.40629.0
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FTP_DB_Adapt", "FTP_DB_Adapt\FTP_DB_Adapt.csproj", "{BECE73DE-15C8-42B0-9F93-9484D745DF3A}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FTPClass", "FTP_DB_Adapt\Sub\arftp\FTPClass.csproj", "{150859D3-1C5D-4E20-B324-F9EBE188D893}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ArLog", "FTP_DB_Adapt\Sub\arLog_CSharp\ArLog.csproj", "{E9E16A98-8F8D-4848-A27E-4571C184FB1A}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "arSetting", "FTP_DB_Adapt\Sub\arSetting\arSetting.csproj", "{8870CE55-DF29-4E05-92FA-6D251DE4EC6C}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Sub", "Sub", "{97A5415A-4C67-4C76-95E6-4AB406BF67CD}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{BECE73DE-15C8-42B0-9F93-9484D745DF3A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BECE73DE-15C8-42B0-9F93-9484D745DF3A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BECE73DE-15C8-42B0-9F93-9484D745DF3A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BECE73DE-15C8-42B0-9F93-9484D745DF3A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{150859D3-1C5D-4E20-B324-F9EBE188D893}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{150859D3-1C5D-4E20-B324-F9EBE188D893}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{150859D3-1C5D-4E20-B324-F9EBE188D893}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{150859D3-1C5D-4E20-B324-F9EBE188D893}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{E9E16A98-8F8D-4848-A27E-4571C184FB1A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E9E16A98-8F8D-4848-A27E-4571C184FB1A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E9E16A98-8F8D-4848-A27E-4571C184FB1A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E9E16A98-8F8D-4848-A27E-4571C184FB1A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{8870CE55-DF29-4E05-92FA-6D251DE4EC6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{8870CE55-DF29-4E05-92FA-6D251DE4EC6C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{8870CE55-DF29-4E05-92FA-6D251DE4EC6C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{8870CE55-DF29-4E05-92FA-6D251DE4EC6C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{150859D3-1C5D-4E20-B324-F9EBE188D893} = {97A5415A-4C67-4C76-95E6-4AB406BF67CD}
|
||||
{E9E16A98-8F8D-4848-A27E-4571C184FB1A} = {97A5415A-4C67-4C76-95E6-4AB406BF67CD}
|
||||
{8870CE55-DF29-4E05-92FA-6D251DE4EC6C} = {97A5415A-4C67-4C76-95E6-4AB406BF67CD}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -1,25 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace FTP_DB_Adapt
|
||||
{
|
||||
public class CSetting : arUtil.Setting
|
||||
{
|
||||
public string connstr { get; set; }
|
||||
public string ftphost { get; set; }
|
||||
public string ftpid { get; set; }
|
||||
public string ftppw { get; set; }
|
||||
|
||||
public override void AfterLoad()
|
||||
{
|
||||
if (connstr == "")
|
||||
connstr = "Data Source=10.131.15.18;Initial Catalog=EE;Persist Security Info=True;User ID=eeuser;Password=Amkor123!";
|
||||
}
|
||||
public override void AfterSave()
|
||||
{
|
||||
//throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,86 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{BECE73DE-15C8-42B0-9F93-9484D745DF3A}</ProjectGuid>
|
||||
<OutputType>Exe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>FTP_DB_Adapt</RootNamespace>
|
||||
<AssemblyName>FTP_DB_Adapt</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="ArLog.Net4">
|
||||
<HintPath>..\..\DLL\ArLog.Net4.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="ArSetting.Net4">
|
||||
<HintPath>..\..\DLL\ArSetting.Net4.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json">
|
||||
<HintPath>..\..\DLL\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="CSetting.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Sub\arftp\FTPClass.csproj">
|
||||
<Project>{150859d3-1c5d-4e20-b324-f9ebe188d893}</Project>
|
||||
<Name>FTPClass</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
@@ -1,236 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
namespace FTP_DB_Adapt
|
||||
{
|
||||
class Program
|
||||
{
|
||||
static System.Data.SqlClient.SqlConnection cn;
|
||||
static System.Data.SqlClient.SqlCommand cmd;
|
||||
static System.Data.SqlClient.SqlDataAdapter da;
|
||||
static arUtil.FTPClient.FTPClient ftp;
|
||||
static CSetting setting;
|
||||
static arUtil.Log log;
|
||||
|
||||
static string lastfile = "";
|
||||
static DateTime lasttime = DateTime.Now;
|
||||
|
||||
class retdata
|
||||
{
|
||||
public int count { get; set; }
|
||||
public System.Data.DataTable result { get; set; }
|
||||
public string message { get; set; }
|
||||
}
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
//var jstest = JsonConvert.SerializeObject(retval);
|
||||
// var jsontest = "{\"count\":1,\"result\":[{\"id\":\"395552\",\"password\":\"B6589FC6AB0DC82CF12099D1C2D40AB994E8410C\",\"nameE\":\"Chikyun.Kim\",\"name\":\"<22><>ġ<EFBFBD><C4A1>\",\"dept\":\"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> K4<4B><34><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>Ʈ\",\"grade\":\"å<><C3A5>\",\"email\":\"Chikyun.Kim@amkor.co.kr\",\"level\":1,\"indate\":\"2018-04-11\",\"outdate\":null";
|
||||
/// var json = JObject.Parse(jsontest);
|
||||
// // var cnt = json["count"];
|
||||
|
||||
cw("setting load");
|
||||
setting = new CSetting();
|
||||
setting.Load();
|
||||
if (setting.Xml.Exist() == false)
|
||||
{
|
||||
setting.Xml.CreateFile();
|
||||
cw("setting file created");
|
||||
}
|
||||
|
||||
if (setting.ftphost == "")
|
||||
{
|
||||
setting.ftphost = "ftp.amkor.co.kr";
|
||||
setting.ftpid = "k4pcbmgr";
|
||||
setting.ftppw = "W2$fYiXp";
|
||||
setting.Save();
|
||||
cw("setting default");
|
||||
}
|
||||
cw(string.Format("ftp info - {0}", setting.ftphost));
|
||||
|
||||
|
||||
Properties.Settings.Default["cs"] = setting.connstr; // "Data Source=10.131.15.18;Initial Catalog=EE;Persist Security Info=True;User ID=eeuser;Password=Amkor123!";
|
||||
|
||||
|
||||
cw("program start v191212-0950" );
|
||||
cn = new System.Data.SqlClient.SqlConnection(Properties.Settings.Default.cs);
|
||||
DateTime conntime = DateTime.Now;
|
||||
|
||||
|
||||
|
||||
//ftp = new arUtil.FTPClient();
|
||||
while(true)
|
||||
{
|
||||
if(cn.State == System.Data.ConnectionState.Open)
|
||||
{
|
||||
if(ftp == null)
|
||||
{
|
||||
ftp = new arUtil.FTPClient.FTPClient();
|
||||
ftp.Host = setting.ftphost;
|
||||
ftp.UserPassword = setting.ftppw;
|
||||
ftp.UserID = setting.ftpid;
|
||||
ftp.Port = 21;
|
||||
cw(string.Format("ftp Initialize {0}",ftp.Host));
|
||||
}
|
||||
|
||||
//monitor file list
|
||||
string path = "/2D TEST/101369103/Log/QryResult";
|
||||
var list = ftp.directoryListSimple(path);
|
||||
var sqllist = list.Where(t => t.ToLower().EndsWith(".sql"));
|
||||
DateTime findtime = DateTime.Parse("1982-11-23");
|
||||
foreach(var sqlfile in sqllist)
|
||||
{
|
||||
string fn = sqlfile.Substring(0, sqlfile.Length - 3);
|
||||
string resultfile = fn + "json";
|
||||
if (list.Contains(resultfile)) continue;
|
||||
|
||||
if(lastfile == sqlfile)
|
||||
{
|
||||
var ts = DateTime.Now - lasttime;
|
||||
if (ts.TotalSeconds < 3) continue; //3초이내 연속 실행 불가
|
||||
}
|
||||
|
||||
//다운로드전에 무조건 대기해준다.
|
||||
System.Threading.Thread.Sleep(200);
|
||||
|
||||
// //이파일명에 해당하는 json 파일을 찾는다.
|
||||
// string rltfile =
|
||||
var file_local = AppDomain.CurrentDomain.BaseDirectory + sqlfile;
|
||||
var file_remote = path + "/" + sqlfile;
|
||||
try
|
||||
{
|
||||
if (System.IO.File.Exists(file_local)) System.IO.File.Delete(file_local);
|
||||
cw(string.Format("Down {0} to {1}",file_remote, file_local));
|
||||
lastfile = sqlfile;
|
||||
lasttime = DateTime.Now;
|
||||
if(ftp.Download(file_remote,file_local))
|
||||
{
|
||||
retdata retval = new retdata();
|
||||
retval.count = 0;
|
||||
retval.result = null;
|
||||
retval.message = "";
|
||||
|
||||
|
||||
cw("download ok : " + file_remote);
|
||||
|
||||
var jsonStr = "";
|
||||
var sql = System.IO.File.ReadAllText(file_local, System.Text.Encoding.Default);
|
||||
if (cmd == null) cmd = new System.Data.SqlClient.SqlCommand(sql);
|
||||
|
||||
var downfi = new System.IO.FileInfo(file_local);
|
||||
if (downfi.Length < 1)
|
||||
{
|
||||
retval.message = "0byte File Downaloaded : " + file_local;
|
||||
}
|
||||
else if(sql.Trim() == "")
|
||||
{
|
||||
retval.message = "No Sql data";
|
||||
}
|
||||
else
|
||||
{
|
||||
cmd.CommandText = sql;
|
||||
cmd.Connection = cn;
|
||||
if (cn.State == System.Data.ConnectionState.Closed) cn.Open();
|
||||
|
||||
if (sql.ToLower().StartsWith("select"))
|
||||
{
|
||||
cw("select query");
|
||||
//data table
|
||||
if (da == null) da = new System.Data.SqlClient.SqlDataAdapter(cmd);
|
||||
using (var ds = new System.Data.DataSet())
|
||||
{
|
||||
try
|
||||
{
|
||||
da.Fill(ds);
|
||||
if (ds != null && ds.Tables.Count > 0)
|
||||
{
|
||||
retval.result = ds.Tables[0];
|
||||
retval.count = retval.result.Rows.Count;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
retval.message = ex.Message + ",sql=" + sql;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cw("non query");
|
||||
//insert /update/ delete
|
||||
cmd.Connection = cn;
|
||||
try
|
||||
{
|
||||
retval.count = cmd.ExecuteNonQuery();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
retval.message = ex.Message + ",sql=" + sql;
|
||||
}
|
||||
}
|
||||
|
||||
jsonStr = JsonConvert.SerializeObject(retval);
|
||||
if (jsonStr != "")
|
||||
{
|
||||
file_local = AppDomain.CurrentDomain.BaseDirectory + resultfile;
|
||||
System.IO.File.WriteAllText(file_local, jsonStr, System.Text.Encoding.Default);
|
||||
cw("result file save : " + file_local);
|
||||
|
||||
file_remote = path + "/" + resultfile;
|
||||
if (!ftp.Upload(file_remote, file_local))
|
||||
cw("ftp Upload error remote = " + file_remote + "," + file_local);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cw("ftp down error remote = " + file_remote);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
cw("conn error:" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
var ts = DateTime.Now - conntime;
|
||||
if(ts.TotalSeconds > 5)
|
||||
{
|
||||
try
|
||||
{
|
||||
cw("Try Database Connect ");
|
||||
cn.Open();
|
||||
cw("Database Connected\n\nFTP Monitor ON");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
cw("conn error:" + ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
conntime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
}
|
||||
System.Threading.Thread.Sleep(1);
|
||||
}
|
||||
|
||||
}
|
||||
static void cw(string msg,Boolean logon=true)
|
||||
{
|
||||
if(log == null)
|
||||
{
|
||||
log = new arUtil.Log();
|
||||
}
|
||||
if (logon) log.Add(msg);
|
||||
Console.WriteLine(msg);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// 어셈블리의 일반 정보는 다음 특성 집합을 통해 제어됩니다.
|
||||
// 어셈블리와 관련된 정보를 수정하려면
|
||||
// 이 특성 값을 변경하십시오.
|
||||
[assembly: AssemblyTitle("FTP_DB_Adapt")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("FTP_DB_Adapt")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2019")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
|
||||
// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
|
||||
// 해당 형식에 대해 ComVisible 특성을 true로 설정하십시오.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
|
||||
[assembly: Guid("0d606978-0719-4d02-aea0-740db9f2a058")]
|
||||
|
||||
// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
|
||||
//
|
||||
// 주 버전
|
||||
// 부 버전
|
||||
// 빌드 번호
|
||||
// 수정 버전
|
||||
//
|
||||
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 버전이 자동으로
|
||||
// 지정되도록 할 수 있습니다.
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("19.12.12.0950")]
|
||||
[assembly: AssemblyFileVersion("19.12.12.0950")]
|
||||
@@ -1,37 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 이 코드는 도구를 사용하여 생성되었습니다.
|
||||
// 런타임 버전:4.0.30319.42000
|
||||
//
|
||||
// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
|
||||
// 이러한 변경 내용이 손실됩니다.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace FTP_DB_Adapt.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("Data Source=10.131.15.18;Initial Catalog=EE;Persist Security Info=True;User ID=ee" +
|
||||
"user;Password=EEmicro123!")]
|
||||
public string cs {
|
||||
get {
|
||||
return ((string)(this["cs"]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="FTP_DB_Adapt.Properties" GeneratedClassName="Settings">
|
||||
<Profiles />
|
||||
<Settings>
|
||||
<Setting Name="cs" Type="(Connection string)" Scope="Application">
|
||||
<DesignTimeValue Profile="(Default)"><?xml version="1.0" encoding="utf-16"?>
|
||||
<SerializableConnectionString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<ConnectionString>Data Source=10.131.15.18;Initial Catalog=EE;Persist Security Info=True;User ID=eeuser;Password=EEmicro123!</ConnectionString>
|
||||
<ProviderName>System.Data.SqlClient</ProviderName>
|
||||
</SerializableConnectionString></DesignTimeValue>
|
||||
<Value Profile="(Default)">Data Source=10.131.15.18;Initial Catalog=EE;Persist Security Info=True;User ID=eeuser;Password=EEmicro123!</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
||||
Submodule FTP_DB_Adapt/FTP_DB_Adapt/Sub/arLog_CSharp deleted from 106f873d37
Submodule FTP_DB_Adapt/FTP_DB_Adapt/Sub/arSetting deleted from a09d4eb9f8
Submodule FTP_DB_Adapt/FTP_DB_Adapt/Sub/arftp deleted from 0826cbe09b
@@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
</configSections>
|
||||
<connectionStrings>
|
||||
<add name="FTP_DB_Adapt.Properties.Settings.cs" connectionString="Data Source=10.131.15.18;Initial Catalog=EE;Persist Security Info=True;User ID=eeuser;Password=EEmicro123!" providerName="System.Data.SqlClient"/>
|
||||
</connectionStrings>
|
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup></configuration>
|
||||
Binary file not shown.
@@ -1,900 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Spread class="FarPoint.Win.Spread.FpSpread">
|
||||
<!--Settings Section - This section contains the workbook properties, and the sheet objects, properties and selections.-->
|
||||
<Settings>
|
||||
<RootWorkbook>
|
||||
<ActiveSheetIndex>0</ActiveSheetIndex>
|
||||
<AllowDragDrop>False</AllowDragDrop>
|
||||
<ShowCellErrors>False</ShowCellErrors>
|
||||
<ShowRowErrors>False</ShowRowErrors>
|
||||
<AllowDragFill>False</AllowDragFill>
|
||||
<EnableDragFillMenu>True</EnableDragFillMenu>
|
||||
<AllowCellOverflow>False</AllowCellOverflow>
|
||||
<AllowColumnMove>False</AllowColumnMove>
|
||||
<AllowColumnMoveMultiple>False</AllowColumnMoveMultiple>
|
||||
<AllowEditOverflow>False</AllowEditOverflow>
|
||||
<RangeDragFillMode>Copy</RangeDragFillMode>
|
||||
<CustomFillSeriesList />
|
||||
<DragFillDataOnly>True</DragFillDataOnly>
|
||||
<CellSpanSelectionPolicy>Default</CellSpanSelectionPolicy>
|
||||
<AllowEditorReservedLocations>True</AllowEditorReservedLocations>
|
||||
<AllowUserFormulas>False</AllowUserFormulas>
|
||||
<AllowRowMove>False</AllowRowMove>
|
||||
<AllowRowMoveMultiple>False</AllowRowMoveMultiple>
|
||||
<ShowDragBandOnMoving>True</ShowDragBandOnMoving>
|
||||
<AllowSheetMove>False</AllowSheetMove>
|
||||
<AllowUndo>True</AllowUndo>
|
||||
<AllowUserZoom>True</AllowUserZoom>
|
||||
<AutoClipboard>True</AutoClipboard>
|
||||
<AutoAdvance>False</AutoAdvance>
|
||||
<StatusBarVisible>False</StatusBarVisible>
|
||||
<BackgroundImage type="Image"></BackgroundImage>
|
||||
<BackgroundImageLayout>Tile</BackgroundImageLayout>
|
||||
<BorderCollapse>Separate</BorderCollapse>
|
||||
<RightToLeft>No</RightToLeft>
|
||||
<TabStripInsertTab>True</TabStripInsertTab>
|
||||
<UseOptimizedSelectionForTouch>True</UseOptimizedSelectionForTouch>
|
||||
<TouchSelectionGripperThickness>0</TouchSelectionGripperThickness>
|
||||
<TouchSelectionGripperLineColor>Empty</TouchSelectionGripperLineColor>
|
||||
<TouchSelectionGripperBackColor>Empty</TouchSelectionGripperBackColor>
|
||||
<TapToAddSelection>False</TapToAddSelection>
|
||||
<ShowGrippersInEditingStatus>True</ShowGrippersInEditingStatus>
|
||||
<AutoScrollWhenKeyboardShowing>True</AutoScrollWhenKeyboardShowing>
|
||||
<ResizeZeroIndicator>Default</ResizeZeroIndicator>
|
||||
<InputScope>Default</InputScope>
|
||||
<PanningMode>Both</PanningMode>
|
||||
<BoundaryFeedbackMode>Split</BoundaryFeedbackMode>
|
||||
<AllowUserToTouchZoom>True</AllowUserToTouchZoom>
|
||||
<TouchZoomSnapDistance>0.05</TouchZoomSnapDistance>
|
||||
<TouchDropDownScale>1.5</TouchDropDownScale>
|
||||
<HeaderIndicatorPositionAdjusting>0</HeaderIndicatorPositionAdjusting>
|
||||
<PaintSelectionBorder>True</PaintSelectionBorder>
|
||||
<PaintSelectionHeader>True</PaintSelectionHeader>
|
||||
<PaintActiveCellInSelection>False</PaintActiveCellInSelection>
|
||||
<VerticalScrollbarMode>Row</VerticalScrollbarMode>
|
||||
<HorizontalScrollbarMode>Column</HorizontalScrollbarMode>
|
||||
<ScrollTipPolicy>Off</ScrollTipPolicy>
|
||||
<ScrollBarTrackPolicy>Off</ScrollBarTrackPolicy>
|
||||
<ScrollBarShowMax>True</ScrollBarShowMax>
|
||||
<ScrollBarMaxAlign>True</ScrollBarMaxAlign>
|
||||
<BorderStyle>Fixed3D</BorderStyle>
|
||||
<ButtonDrawMode>Always</ButtonDrawMode>
|
||||
<CellNoteIndicatorVisible>True</CellNoteIndicatorVisible>
|
||||
<ClipboardOptions>AllHeaders</ClipboardOptions>
|
||||
<AutofitColumnOptions>ExcludeSpans</AutofitColumnOptions>
|
||||
<AutofitRowOptions>ExcludeSpans</AutofitRowOptions>
|
||||
<ClipboardPasteToFill>False</ClipboardPasteToFill>
|
||||
<ColumnSplitBoxAlignment>Leading</ColumnSplitBoxAlignment>
|
||||
<ImeMode>NoControl</ImeMode>
|
||||
<AutoImeMode>True</AutoImeMode>
|
||||
<ImeSentenceMode>NoControl</ImeSentenceMode>
|
||||
<SpreadScaleMode>None</SpreadScaleMode>
|
||||
<ColumnSplitBoxPolicy>Always</ColumnSplitBoxPolicy>
|
||||
<EditModePermanent>False</EditModePermanent>
|
||||
<EditModeReplace>False</EditModeReplace>
|
||||
<HorizontalScrollBarHeight>-1</HorizontalScrollBarHeight>
|
||||
<HorizontalScrollBarPolicy>Always</HorizontalScrollBarPolicy>
|
||||
<HorizontalScrollBarSmallChange>1</HorizontalScrollBarSmallChange>
|
||||
<AllowRowMoveDataAllowAddNew>False</AllowRowMoveDataAllowAddNew>
|
||||
<LeftTab>0</LeftTab>
|
||||
<MoveActiveOnFocus>True</MoveActiveOnFocus>
|
||||
<RetainSelectionBlock>True</RetainSelectionBlock>
|
||||
<RightToLeft>No</RightToLeft>
|
||||
<RowSplitBoxAlignment>Leading</RowSplitBoxAlignment>
|
||||
<RowSplitBoxPolicy>Always</RowSplitBoxPolicy>
|
||||
<SelectionBlockOptions>Cells, Rows, Columns, Sheet</SelectionBlockOptions>
|
||||
<SheetCount>1</SheetCount>
|
||||
<TabStrip>
|
||||
<BackColor>Control</BackColor>
|
||||
<Editable>False</Editable>
|
||||
<ButtonPolicy>Always</ButtonPolicy>
|
||||
<ActiveSheetTab />
|
||||
<DefaultSheetTab />
|
||||
<Items>
|
||||
<SheetTab />
|
||||
</Items>
|
||||
</TabStrip>
|
||||
<TabStripPlacement>WithHorizontalScrollBar</TabStripPlacement>
|
||||
<TabStripPolicy>AsNeeded</TabStripPolicy>
|
||||
<TabStripRatio>0.5</TabStripRatio>
|
||||
<TextTipAppearance class="FarPoint.Win.Spread.TipAppearance" assembly="FarPoint.Win.Spread">
|
||||
<BackColor>Info</BackColor>
|
||||
<ForeColor>InfoText</ForeColor>
|
||||
<Font>
|
||||
<Name>굴림</Name>
|
||||
<Size>9</Size>
|
||||
<Bold>False</Bold>
|
||||
<CharSet>129</CharSet>
|
||||
<Italic>False</Italic>
|
||||
<Strikeout>False</Strikeout>
|
||||
<Underline>False</Underline>
|
||||
<Unit>Point</Unit>
|
||||
<Vertical>False</Vertical>
|
||||
</Font>
|
||||
</TextTipAppearance>
|
||||
<TextTipDelay>500</TextTipDelay>
|
||||
<TextTipPolicy>Off</TextTipPolicy>
|
||||
<VerticalScrollBarWidth>-1</VerticalScrollBarWidth>
|
||||
<AllowCellContentFloat>False</AllowCellContentFloat>
|
||||
<VerticalScrollBarPolicy>Always</VerticalScrollBarPolicy>
|
||||
<VerticalScrollBarSmallChange>1</VerticalScrollBarSmallChange>
|
||||
<VisualStyles>Auto</VisualStyles>
|
||||
<FocusRenderer>
|
||||
<IFocusRenderer class="FarPoint.Win.Spread.FlatFocusIndicatorRenderer" assembly="FarPoint.Win.Spread, Version=11.40.20177.0, Culture=neutral, PublicKeyToken=327c3516b1b18457">
|
||||
<Thickness>3</Thickness>
|
||||
<Color>-16777216</Color>
|
||||
</IFocusRenderer>
|
||||
</FocusRenderer>
|
||||
<InterfaceRenderer>
|
||||
<IInterfaceRenderer class="FarPoint.Win.Spread.EnhancedInterfaceRenderer" assembly="FarPoint.Win.Spread, Version=11.40.20177.0, Culture=neutral, PublicKeyToken=327c3516b1b18457">
|
||||
<ScrollBoxStartColor>White</ScrollBoxStartColor>
|
||||
<ScrollBoxEndColor>White</ScrollBoxEndColor>
|
||||
<TabStripBackGroundStartColor>White</TabStripBackGroundStartColor>
|
||||
<TabStripBackGroundEndColor>White</TabStripBackGroundEndColor>
|
||||
<SheetTabUpperNormalStartColor>White</SheetTabUpperNormalStartColor>
|
||||
<SheetTabUpperNormalEndColor>White</SheetTabUpperNormalEndColor>
|
||||
<SheetTabLowerNormalStartColor>White</SheetTabLowerNormalStartColor>
|
||||
<SheetTabLowerNormalEndColor>White</SheetTabLowerNormalEndColor>
|
||||
<SheetTabUpperHoverStartColor>#ffbaeafd</SheetTabUpperHoverStartColor>
|
||||
<SheetTabUpperHoverEndColor>#ffbaeafd</SheetTabUpperHoverEndColor>
|
||||
<SheetTabLowerHoverStartColor>#ffbaeafd</SheetTabLowerHoverStartColor>
|
||||
<SheetTabLowerHoverEndColor>#ffbaeafd</SheetTabLowerHoverEndColor>
|
||||
<SheetTabBorderColor>#ffa6acb3</SheetTabBorderColor>
|
||||
<ForeColor>Black</ForeColor>
|
||||
<GrayAreaColor>White</GrayAreaColor>
|
||||
<TabStripButtonUpperNormalStartColor>White</TabStripButtonUpperNormalStartColor>
|
||||
<TabStripButtonUpperNormalEndColor>White</TabStripButtonUpperNormalEndColor>
|
||||
<TabStripButtonLowerNormalStartColor>White</TabStripButtonLowerNormalStartColor>
|
||||
<TabStripButtonLowerNormalEndColor>White</TabStripButtonLowerNormalEndColor>
|
||||
<TabStripButtonUpperHoverStartColor>#ffbaeafd</TabStripButtonUpperHoverStartColor>
|
||||
<TabStripButtonUpperHoverEndColor>#ffbaeafd</TabStripButtonUpperHoverEndColor>
|
||||
<TabStripButtonLowerHoverStartColor>#ffbaeafd</TabStripButtonLowerHoverStartColor>
|
||||
<TabStripButtonLowerHoverEndColor>#ffbaeafd</TabStripButtonLowerHoverEndColor>
|
||||
<TabStripButtonUpperPressedStartColor>#ffbaeafd</TabStripButtonUpperPressedStartColor>
|
||||
<TabStripButtonUpperPressedEndColor>#ffbaeafd</TabStripButtonUpperPressedEndColor>
|
||||
<TabStripButtonLowerPressedStartColor>#ffbaeafd</TabStripButtonLowerPressedStartColor>
|
||||
<TabStripButtonLowerPressedEndColor>#ffbaeafd</TabStripButtonLowerPressedEndColor>
|
||||
<TabStripButtonBorderColor>#ffa6acb3</TabStripButtonBorderColor>
|
||||
<SplitBoxBorderColor>#ffd5d5d5</SplitBoxBorderColor>
|
||||
<SplitBoxBackgroundColor>#ffd5d5d5</SplitBoxBackgroundColor>
|
||||
<SplitBarBackgroundColor>#ffdfe3f0</SplitBarBackgroundColor>
|
||||
<SplitBarDarkColor>#ffdfe3f0</SplitBarDarkColor>
|
||||
<SplitBarLightColor>#ffdfe3f0</SplitBarLightColor>
|
||||
<ScrollBoxBackgroundColor>White</ScrollBoxBackgroundColor>
|
||||
<TabStripBackgroundColor>White</TabStripBackgroundColor>
|
||||
<SheetTabUpperNormalColor>White</SheetTabUpperNormalColor>
|
||||
<SheetTabLowerNormalColor>White</SheetTabLowerNormalColor>
|
||||
<SheetTabUpperActiveColor>#ffbaeafd</SheetTabUpperActiveColor>
|
||||
<SheetTabLowerActiveColor>#ffbaeafd</SheetTabLowerActiveColor>
|
||||
<TabStripButtonUpperNormalColor>White</TabStripButtonUpperNormalColor>
|
||||
<TabStripButtonLowerNormalColor>White</TabStripButtonLowerNormalColor>
|
||||
<TabStripButtonUpperActiveColor>#ffbaeafd</TabStripButtonUpperActiveColor>
|
||||
<TabStripButtonLowerActiveColor>#ffbaeafd</TabStripButtonLowerActiveColor>
|
||||
<TabStripButtonUpperPressedColor>#ffbaeafd</TabStripButtonUpperPressedColor>
|
||||
<TabStripButtonLowerPressedColor>#ffbaeafd</TabStripButtonLowerPressedColor>
|
||||
<RangeGroupBackColor>White</RangeGroupBackColor>
|
||||
<RangeGroupButtonBackColor>Empty</RangeGroupButtonBackColor>
|
||||
<RangeGroupLineColor>#ff666666</RangeGroupLineColor>
|
||||
<RangeGroupButtonBorderColor>#ff666666</RangeGroupButtonBorderColor>
|
||||
<ArrowColorEnabled>#ffa6acb3</ArrowColorEnabled>
|
||||
<ArrowColorDisabled>#ffb2b2b2</ArrowColorDisabled>
|
||||
<SheetTabShape>Trapezoid</SheetTabShape>
|
||||
<ButtonStyle>Flat</ButtonStyle>
|
||||
<FlatStyle>Flat</FlatStyle>
|
||||
</IInterfaceRenderer>
|
||||
</InterfaceRenderer>
|
||||
<SelectionRenderer>
|
||||
<ISelectionRenderer class="FarPoint.Win.Spread.FlatSelectionRenderer" assembly="FarPoint.Win.Spread, Version=11.40.20177.0, Culture=neutral, PublicKeyToken=327c3516b1b18457">
|
||||
<ViewportColor>#64c1e0ff</ViewportColor>
|
||||
<ColumnHeaderColor>#64baeafd</ColumnHeaderColor>
|
||||
<ColumnFooterColor>#64baeafd</ColumnFooterColor>
|
||||
<RowHeaderColor>#64baeafd</RowHeaderColor>
|
||||
<FilterBarHeaderColor>#64baeafd</FilterBarHeaderColor>
|
||||
<FilterBarColor>#64c1e0ff</FilterBarColor>
|
||||
</ISelectionRenderer>
|
||||
</SelectionRenderer>
|
||||
<CellNoteIndicatorRenderer />
|
||||
<SuspendAnimations>False</SuspendAnimations>
|
||||
<HorizontalScrollBar class="FarPoint.Win.Spread.SpreadHScrollBar" assembly="FarPoint.Win.Spread">
|
||||
<Buttons class="FarPoint.Win.Spread.FpScrollBarButtonCollection">
|
||||
<Button class="FarPoint.Win.Spread.FpScrollBarButtonBackwardLine">
|
||||
<ChangeType>SmallChange</ChangeType>
|
||||
<ChangeValue>-1</ChangeValue>
|
||||
</Button>
|
||||
<Button class="FarPoint.Win.Spread.FpScrollBarComboThumb">
|
||||
<TrackBackward class="FarPoint.Win.Spread.FpScrollBarTrackBackward">
|
||||
<ChangeType>LargeChange</ChangeType>
|
||||
<ChangeValue>-1</ChangeValue>
|
||||
</TrackBackward>
|
||||
<Thumb class="FarPoint.Win.Spread.FpScrollBarThumb">
|
||||
<Gripper class="FarPoint.Win.Spread.FpScrollBarGripper" />
|
||||
</Thumb>
|
||||
<TrackForward class="FarPoint.Win.Spread.FpScrollBarTrackForward">
|
||||
<ChangeType>LargeChange</ChangeType>
|
||||
<ChangeValue>1</ChangeValue>
|
||||
</TrackForward>
|
||||
</Button>
|
||||
<Button class="FarPoint.Win.Spread.FpScrollBarButtonForwardLine">
|
||||
<ChangeType>SmallChange</ChangeType>
|
||||
<ChangeValue>1</ChangeValue>
|
||||
</Button>
|
||||
</Buttons>
|
||||
<VisualStyles>Auto</VisualStyles>
|
||||
<Renderer />
|
||||
</HorizontalScrollBar>
|
||||
<VerticalScrollBar class="FarPoint.Win.Spread.SpreadVScrollBar" assembly="FarPoint.Win.Spread">
|
||||
<Buttons class="FarPoint.Win.Spread.FpScrollBarButtonCollection">
|
||||
<Button class="FarPoint.Win.Spread.FpScrollBarButtonBackwardLine">
|
||||
<ChangeType>SmallChange</ChangeType>
|
||||
<ChangeValue>-1</ChangeValue>
|
||||
</Button>
|
||||
<Button class="FarPoint.Win.Spread.FpScrollBarComboThumb">
|
||||
<TrackBackward class="FarPoint.Win.Spread.FpScrollBarTrackBackward">
|
||||
<ChangeType>LargeChange</ChangeType>
|
||||
<ChangeValue>-1</ChangeValue>
|
||||
</TrackBackward>
|
||||
<Thumb class="FarPoint.Win.Spread.FpScrollBarThumb">
|
||||
<Gripper class="FarPoint.Win.Spread.FpScrollBarGripper" />
|
||||
</Thumb>
|
||||
<TrackForward class="FarPoint.Win.Spread.FpScrollBarTrackForward">
|
||||
<ChangeType>LargeChange</ChangeType>
|
||||
<ChangeValue>1</ChangeValue>
|
||||
</TrackForward>
|
||||
</Button>
|
||||
<Button class="FarPoint.Win.Spread.FpScrollBarButtonForwardLine">
|
||||
<ChangeType>SmallChange</ChangeType>
|
||||
<ChangeValue>1</ChangeValue>
|
||||
</Button>
|
||||
</Buttons>
|
||||
<VisualStyles>Auto</VisualStyles>
|
||||
<Renderer />
|
||||
</VerticalScrollBar>
|
||||
<StatusBar class="FarPoint.Win.Spread.FpStatusBar" assembly="FarPoint.Win.Spread">
|
||||
<Element class="FarPoint.Win.Spread.FpStatusBarAverageElement">
|
||||
<Visible>True</Visible>
|
||||
<Text>평균</Text>
|
||||
<MenuText>평균(&A)</MenuText>
|
||||
<Align>Right</Align>
|
||||
</Element>
|
||||
<Element class="FarPoint.Win.Spread.FpStatusBarCountElement">
|
||||
<Visible>True</Visible>
|
||||
<Text>개수</Text>
|
||||
<MenuText>개수(&C)</MenuText>
|
||||
<Align>Right</Align>
|
||||
</Element>
|
||||
<Element class="FarPoint.Win.Spread.FpStatusBarNumericalCountElement">
|
||||
<Visible>False</Visible>
|
||||
<Text>숫자 세기</Text>
|
||||
<MenuText>숫자세기(&T)</MenuText>
|
||||
<Align>Right</Align>
|
||||
</Element>
|
||||
<Element class="FarPoint.Win.Spread.FpStatusBarMinElement">
|
||||
<Visible>False</Visible>
|
||||
<Text>최소값</Text>
|
||||
<MenuText>최소값(&I)</MenuText>
|
||||
<Align>Right</Align>
|
||||
</Element>
|
||||
<Element class="FarPoint.Win.Spread.FpStatusBarMaxElement">
|
||||
<Visible>False</Visible>
|
||||
<Text>최대값</Text>
|
||||
<MenuText>최대값(&X)</MenuText>
|
||||
<Align>Right</Align>
|
||||
</Element>
|
||||
<Element class="FarPoint.Win.Spread.FpStatusBarSumElement">
|
||||
<Visible>True</Visible>
|
||||
<Text>합계</Text>
|
||||
<MenuText>합계</MenuText>
|
||||
<Align>Right</Align>
|
||||
</Element>
|
||||
<Element class="FarPoint.Win.Spread.ZoomSliderStatusBarElement">
|
||||
<Visible>True</Visible>
|
||||
<Text />
|
||||
<MenuText>확대/축소 슬라이더(&Z)</MenuText>
|
||||
<Align>Right</Align>
|
||||
</Element>
|
||||
<Element class="FarPoint.Win.Spread.ZoomStatusBarElement">
|
||||
<Visible>True</Visible>
|
||||
<Text />
|
||||
<MenuText>확대/축소(&Z)</MenuText>
|
||||
<Align>Right</Align>
|
||||
</Element>
|
||||
<Skin class="FarPoint.Win.Spread.StatusBarSkin">
|
||||
<name>Default</name>
|
||||
<backcolor>White</backcolor>
|
||||
<forecolor>Black</forecolor>
|
||||
<zoomButtonHoverColor>#ffcdcdcd</zoomButtonHoverColor>
|
||||
<zoomslidercolor>#ffa6a6a6</zoomslidercolor>
|
||||
<zoomsliderhovercolor>#ffcdcdcd</zoomsliderhovercolor>
|
||||
<zoomslidertrackcolor>#ffa6a6a6</zoomslidertrackcolor>
|
||||
<font>
|
||||
<Name>Microsoft Sans Serif</Name>
|
||||
<Size>8.25</Size>
|
||||
<Bold>False</Bold>
|
||||
<CharSet>1</CharSet>
|
||||
<Italic>False</Italic>
|
||||
<Strikeout>False</Strikeout>
|
||||
<Underline>False</Underline>
|
||||
<Unit>Point</Unit>
|
||||
<Vertical>False</Vertical>
|
||||
</font>
|
||||
</Skin>
|
||||
<EnableContextMenu>True</EnableContextMenu>
|
||||
</StatusBar>
|
||||
<TitleInfo class="FarPoint.Win.Spread.TitleInfo" assembly="FarPoint.Win.Spread">
|
||||
<BackColor>#ffe7eff7</BackColor>
|
||||
</TitleInfo>
|
||||
<TabStripInsertTabImage type="Image"></TabStripInsertTabImage>
|
||||
<DocumentProperties>
|
||||
<Created>0001-01-01T00:00:00.000</Created>
|
||||
<LastModified>0001-01-01T00:00:00.000</LastModified>
|
||||
<Revision>0</Revision>
|
||||
</DocumentProperties>
|
||||
</RootWorkbook>
|
||||
<Sheets>
|
||||
<Sheet index="0" class="FarPoint.Win.Spread.SheetView">
|
||||
<SheetName>Sheet1</SheetName>
|
||||
<TitleInfo class="FarPoint.Win.Spread.TitleInfo">
|
||||
<BackColor>#ffe7eff7</BackColor>
|
||||
</TitleInfo>
|
||||
<Categories>
|
||||
<Appearance>
|
||||
<GroupBarInfo class="FarPoint.Win.Spread.GroupBarInfo" />
|
||||
</Appearance>
|
||||
<Behavior>
|
||||
<DataAutoSizeColumns>False</DataAutoSizeColumns>
|
||||
</Behavior>
|
||||
<Appearance />
|
||||
<Behavior />
|
||||
<Layout>
|
||||
<ColumnCount>10</ColumnCount>
|
||||
<RowCount>0</RowCount>
|
||||
<ActiveColumnIndex>-1</ActiveColumnIndex>
|
||||
<ActiveRowIndex>-1</ActiveRowIndex>
|
||||
</Layout>
|
||||
<Appearance>
|
||||
<ScrollingContentInfo class="FarPoint.Win.Spread.ScrollingContentInfo" />
|
||||
<PreviewRowInfo class="FarPoint.Win.Spread.PreviewRowInfo" />
|
||||
</Appearance>
|
||||
</Categories>
|
||||
<SelectionModel class="FarPoint.Win.Spread.Model.DefaultSheetSelectionModel">
|
||||
<CellRange Row="-1" Column="6" RowCount="-1" ColumnCount="1" />
|
||||
<AnchorColumn>6</AnchorColumn>
|
||||
</SelectionModel>
|
||||
</Sheet>
|
||||
</Sheets>
|
||||
</Settings>
|
||||
<!--Styles Section - This section contains the workbook and sheet named style collections.-->
|
||||
<Styles>
|
||||
<NamedStyles class="FarPoint.Win.Spread.NamedStyleCollection" />
|
||||
</Styles>
|
||||
<!--Presentation Section - This section contains the column and row properties, cell spans, and the sheet, column, row, and cell styles.-->
|
||||
<Presentation>
|
||||
<Font>
|
||||
<Name>맑은 고딕</Name>
|
||||
<Size>9</Size>
|
||||
<Bold>False</Bold>
|
||||
<CharSet>129</CharSet>
|
||||
<Italic>False</Italic>
|
||||
<Strikeout>False</Strikeout>
|
||||
<Underline>False</Underline>
|
||||
<Unit>Point</Unit>
|
||||
<Vertical>False</Vertical>
|
||||
</Font>
|
||||
<Sheets>
|
||||
<Sheet index="0">
|
||||
<ViewportInfo>
|
||||
<RowPaneCount>1</RowPaneCount>
|
||||
<ColumnPaneCount>1</ColumnPaneCount>
|
||||
<ActiveRowPane>0</ActiveRowPane>
|
||||
<ActiveColumnPane>0</ActiveColumnPane>
|
||||
<RowPanes>
|
||||
<RowPane row="0">
|
||||
<TopRow>0</TopRow>
|
||||
<PreferredHeight>-1</PreferredHeight>
|
||||
<TopOffset>0</TopOffset>
|
||||
</RowPane>
|
||||
</RowPanes>
|
||||
<ColumnPanes>
|
||||
<ColumnPane column="0">
|
||||
<LeftColumn>0</LeftColumn>
|
||||
<PreferredWidth>-1</PreferredWidth>
|
||||
<LeftOffset>0</LeftOffset>
|
||||
</ColumnPane>
|
||||
</ColumnPanes>
|
||||
</ViewportInfo>
|
||||
<AxisModels>
|
||||
<Row class="q1" ignoreCreateWorksheet="True" orientation="Vertical" count="0">
|
||||
<Items />
|
||||
</Row>
|
||||
<Column class="q1" ignoreCreateWorksheet="True" orientation="Horizontal" count="10">
|
||||
<Items>
|
||||
<Item startIndex="0" endIndex="0">
|
||||
<Size>88</Size>
|
||||
<BooleanProperties>8</BooleanProperties>
|
||||
<Flags>1</Flags>
|
||||
</Item>
|
||||
<Item startIndex="1" endIndex="5">
|
||||
<Size>113</Size>
|
||||
<BooleanProperties>8</BooleanProperties>
|
||||
<Flags>1</Flags>
|
||||
</Item>
|
||||
<Item startIndex="6" endIndex="6">
|
||||
<Size>84</Size>
|
||||
<BooleanProperties>8</BooleanProperties>
|
||||
<Flags>1</Flags>
|
||||
</Item>
|
||||
<Item startIndex="7" endIndex="8">
|
||||
<Size>113</Size>
|
||||
<BooleanProperties>8</BooleanProperties>
|
||||
<Flags>1</Flags>
|
||||
</Item>
|
||||
<Item startIndex="9" endIndex="9">
|
||||
<Size>84</Size>
|
||||
<BooleanProperties>8</BooleanProperties>
|
||||
<Flags>1</Flags>
|
||||
</Item>
|
||||
</Items>
|
||||
</Column>
|
||||
<RowHeaderColumn class="FarPoint.Win.Spread.Model.DefaultSheetAxisModel" orientation="Horizontal" count="1" defaultSize="35">
|
||||
<Items>
|
||||
<Item index="-1">
|
||||
<_startIndex>-1</_startIndex>
|
||||
<Resizable>False</Resizable>
|
||||
<Size>35</Size>
|
||||
<_endIndex>-1</_endIndex>
|
||||
</Item>
|
||||
</Items>
|
||||
</RowHeaderColumn>
|
||||
<ColumnHeaderRow class="FarPoint.Win.Spread.Model.DefaultSheetAxisModel" orientation="Vertical" count="1">
|
||||
<Items>
|
||||
<Item index="-1">
|
||||
<_startIndex>-1</_startIndex>
|
||||
<Resizable>False</Resizable>
|
||||
<_endIndex>-1</_endIndex>
|
||||
</Item>
|
||||
<Item index="0">
|
||||
<_startIndex>-1</_startIndex>
|
||||
<Size>42</Size>
|
||||
<_endIndex>-1</_endIndex>
|
||||
</Item>
|
||||
</Items>
|
||||
</ColumnHeaderRow>
|
||||
<ColumnFooterRow class="FarPoint.Win.Spread.Model.DefaultSheetAxisModel" orientation="Vertical" count="1">
|
||||
<Items>
|
||||
<Item index="-1">
|
||||
<_startIndex>-1</_startIndex>
|
||||
<Resizable>False</Resizable>
|
||||
<_endIndex>-1</_endIndex>
|
||||
</Item>
|
||||
</Items>
|
||||
</ColumnFooterRow>
|
||||
</AxisModels>
|
||||
<StyleModels>
|
||||
<RowHeader class="FarPoint.Win.Spread.Model.DefaultSheetStyleModel" Rows="0" Columns="1">
|
||||
<AltRowCount>2</AltRowCount>
|
||||
<DefaultStyle class="FarPoint.Win.Spread.StyleInfo" Parent="RowHeaderDefaultEnhanced" />
|
||||
<ConditionalFormatCollections />
|
||||
</RowHeader>
|
||||
<ColumnHeader class="FarPoint.Win.Spread.Model.DefaultSheetStyleModel" Rows="1" Columns="10">
|
||||
<AltRowCount>2</AltRowCount>
|
||||
<DefaultStyle class="FarPoint.Win.Spread.StyleInfo" Parent="ColumnHeaderDefaultEnhanced" />
|
||||
<ConditionalFormatCollections />
|
||||
</ColumnHeader>
|
||||
<ColumnFooter class="FarPoint.Win.Spread.Model.DefaultSheetStyleModel" Rows="1" Columns="10">
|
||||
<AltRowCount>2</AltRowCount>
|
||||
<DefaultStyle class="FarPoint.Win.Spread.StyleInfo" Parent="ColumnHeaderDefaultEnhanced" />
|
||||
<ConditionalFormatCollections />
|
||||
</ColumnFooter>
|
||||
<DataArea class="qd" ignoreCreateWorksheet="True" Rows="0" Columns="10">
|
||||
<AltRowCount>2</AltRowCount>
|
||||
<DefaultStyle class="FarPoint.Win.Spread.StyleInfo" Parent="DataAreaDefault" />
|
||||
<NamedStyles class="FarPoint.Win.Spread.NamedStyleCollection">
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="13">
|
||||
<BackColor>#ffe0e0e0</BackColor>
|
||||
<CellType class="FarPoint.Win.Spread.CellType.NumberCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<DecimalPlaces>0</DecimalPlaces>
|
||||
<FixedPoint>True</FixedPoint>
|
||||
<LeadingZero>Yes</LeadingZero>
|
||||
<MaximumValue>2147483647</MaximumValue>
|
||||
<MinimumValue>-2147483648</MinimumValue>
|
||||
<NegativeFormat>UseRegional</NegativeFormat>
|
||||
<NegativeRed>False</NegativeRed>
|
||||
<ShowSeparator>False</ShowSeparator>
|
||||
<SpinButton>False</SpinButton>
|
||||
<SpinIntegerIncrement>1</SpinIntegerIncrement>
|
||||
<SpinDecimalIncrement>0.1</SpinDecimalIncrement>
|
||||
<FractionMode>False</FractionMode>
|
||||
<FractionDenominatorPrecision>Auto</FractionDenominatorPrecision>
|
||||
<FractionDenominatorDigits>3</FractionDenominatorDigits>
|
||||
<FractionCustomFormat># ???/???</FractionCustomFormat>
|
||||
<FractionConvertWholeNumbers>False</FractionConvertWholeNumbers>
|
||||
<FractionRenderOnly>False</FractionRenderOnly>
|
||||
<SpinWrap>False</SpinWrap>
|
||||
</CellType>
|
||||
<HorizontalAlignment>Center</HorizontalAlignment>
|
||||
<VerticalAlignment>Center</VerticalAlignment>
|
||||
</NamedStyle>
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="1">
|
||||
<BackColor>#ffc0ffff</BackColor>
|
||||
<CellType class="FarPoint.Win.Spread.CellType.TextCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<CharacterCasing>Normal</CharacterCasing>
|
||||
<MaxLength>255</MaxLength>
|
||||
<Multiline>False</Multiline>
|
||||
<ScrollBars>None</ScrollBars>
|
||||
<CharacterSet>Ascii</CharacterSet>
|
||||
<HotkeyPrefix>None</HotkeyPrefix>
|
||||
</CellType>
|
||||
<HorizontalAlignment>Center</HorizontalAlignment>
|
||||
<VerticalAlignment>Center</VerticalAlignment>
|
||||
</NamedStyle>
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="3">
|
||||
<CellType class="FarPoint.Win.Spread.CellType.TextCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<CharacterCasing>Normal</CharacterCasing>
|
||||
<MaxLength>255</MaxLength>
|
||||
<Multiline>False</Multiline>
|
||||
<ScrollBars>None</ScrollBars>
|
||||
<CharacterSet>Ascii</CharacterSet>
|
||||
<HotkeyPrefix>None</HotkeyPrefix>
|
||||
</CellType>
|
||||
<HorizontalAlignment>Left</HorizontalAlignment>
|
||||
<VerticalAlignment>Center</VerticalAlignment>
|
||||
</NamedStyle>
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="4">
|
||||
<CellType class="FarPoint.Win.Spread.CellType.TextCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<CharacterCasing>Normal</CharacterCasing>
|
||||
<MaxLength>255</MaxLength>
|
||||
<Multiline>False</Multiline>
|
||||
<ScrollBars>None</ScrollBars>
|
||||
<CharacterSet>Ascii</CharacterSet>
|
||||
<HotkeyPrefix>None</HotkeyPrefix>
|
||||
</CellType>
|
||||
<HorizontalAlignment>Center</HorizontalAlignment>
|
||||
<VerticalAlignment>Center</VerticalAlignment>
|
||||
</NamedStyle>
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="5">
|
||||
<CellType class="FarPoint.Win.Spread.CellType.TextCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<CharacterCasing>Normal</CharacterCasing>
|
||||
<MaxLength>255</MaxLength>
|
||||
<Multiline>False</Multiline>
|
||||
<ScrollBars>None</ScrollBars>
|
||||
<CharacterSet>Ascii</CharacterSet>
|
||||
<HotkeyPrefix>None</HotkeyPrefix>
|
||||
</CellType>
|
||||
<HorizontalAlignment>Left</HorizontalAlignment>
|
||||
<VerticalAlignment>Center</VerticalAlignment>
|
||||
</NamedStyle>
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="6">
|
||||
<CellType class="FarPoint.Win.Spread.CellType.TextCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<CharacterCasing>Normal</CharacterCasing>
|
||||
<MaxLength>255</MaxLength>
|
||||
<Multiline>False</Multiline>
|
||||
<ScrollBars>None</ScrollBars>
|
||||
<CharacterSet>Ascii</CharacterSet>
|
||||
<HotkeyPrefix>None</HotkeyPrefix>
|
||||
</CellType>
|
||||
<HorizontalAlignment>Center</HorizontalAlignment>
|
||||
<VerticalAlignment>Center</VerticalAlignment>
|
||||
</NamedStyle>
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="7">
|
||||
<CellType class="FarPoint.Win.Spread.CellType.NumberCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<DecimalPlaces>0</DecimalPlaces>
|
||||
<FixedPoint>False</FixedPoint>
|
||||
<LeadingZero>UseRegional</LeadingZero>
|
||||
<MaximumValue>999999999999999</MaximumValue>
|
||||
<MinimumValue>-999999999999999</MinimumValue>
|
||||
<NegativeFormat>UseRegional</NegativeFormat>
|
||||
<NegativeRed>True</NegativeRed>
|
||||
<ShowSeparator>True</ShowSeparator>
|
||||
<SpinButton>False</SpinButton>
|
||||
<SpinIntegerIncrement>1</SpinIntegerIncrement>
|
||||
<SpinDecimalIncrement>0.1</SpinDecimalIncrement>
|
||||
<FractionMode>False</FractionMode>
|
||||
<FractionDenominatorPrecision>Auto</FractionDenominatorPrecision>
|
||||
<FractionDenominatorDigits>3</FractionDenominatorDigits>
|
||||
<FractionCustomFormat># ???/???</FractionCustomFormat>
|
||||
<FractionConvertWholeNumbers>False</FractionConvertWholeNumbers>
|
||||
<FractionRenderOnly>False</FractionRenderOnly>
|
||||
<SpinWrap>False</SpinWrap>
|
||||
</CellType>
|
||||
<HorizontalAlignment>Right</HorizontalAlignment>
|
||||
<VerticalAlignment>Center</VerticalAlignment>
|
||||
</NamedStyle>
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="8">
|
||||
<CellType class="FarPoint.Win.Spread.CellType.TextCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<CharacterCasing>Normal</CharacterCasing>
|
||||
<MaxLength>255</MaxLength>
|
||||
<Multiline>False</Multiline>
|
||||
<ScrollBars>None</ScrollBars>
|
||||
<CharacterSet>Ascii</CharacterSet>
|
||||
<HotkeyPrefix>None</HotkeyPrefix>
|
||||
</CellType>
|
||||
<HorizontalAlignment>Left</HorizontalAlignment>
|
||||
<VerticalAlignment>Center</VerticalAlignment>
|
||||
</NamedStyle>
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="9">
|
||||
<CellType class="FarPoint.Win.Spread.CellType.TextCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<CharacterCasing>Normal</CharacterCasing>
|
||||
<MaxLength>255</MaxLength>
|
||||
<Multiline>False</Multiline>
|
||||
<ScrollBars>None</ScrollBars>
|
||||
<CharacterSet>Ascii</CharacterSet>
|
||||
<HotkeyPrefix>None</HotkeyPrefix>
|
||||
</CellType>
|
||||
<HorizontalAlignment>Left</HorizontalAlignment>
|
||||
<VerticalAlignment>Center</VerticalAlignment>
|
||||
</NamedStyle>
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="10">
|
||||
<CellType class="FarPoint.Win.Spread.CellType.NumberCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<DecimalPlaces>-1</DecimalPlaces>
|
||||
<FixedPoint>True</FixedPoint>
|
||||
<LeadingZero>UseRegional</LeadingZero>
|
||||
<MaximumValue>999999999999999</MaximumValue>
|
||||
<MinimumValue>-999999999999999</MinimumValue>
|
||||
<NegativeFormat>UseRegional</NegativeFormat>
|
||||
<NegativeRed>False</NegativeRed>
|
||||
<ShowSeparator>False</ShowSeparator>
|
||||
<SpinButton>False</SpinButton>
|
||||
<SpinIntegerIncrement>1</SpinIntegerIncrement>
|
||||
<SpinDecimalIncrement>0.1</SpinDecimalIncrement>
|
||||
<FractionMode>False</FractionMode>
|
||||
<FractionDenominatorPrecision>Auto</FractionDenominatorPrecision>
|
||||
<FractionDenominatorDigits>3</FractionDenominatorDigits>
|
||||
<FractionCustomFormat># ???/???</FractionCustomFormat>
|
||||
<FractionConvertWholeNumbers>False</FractionConvertWholeNumbers>
|
||||
<FractionRenderOnly>False</FractionRenderOnly>
|
||||
<SpinWrap>False</SpinWrap>
|
||||
</CellType>
|
||||
<HorizontalAlignment>Center</HorizontalAlignment>
|
||||
<VerticalAlignment>Center</VerticalAlignment>
|
||||
</NamedStyle>
|
||||
</NamedStyles><ColumnStyles><ColumnStyle Index="0" Name="13" /><ColumnStyle Index="1" Name="1" /><ColumnStyle Index="2" Name="3" /><ColumnStyle Index="3" Name="4" /><ColumnStyle Index="4" Name="5" /><ColumnStyle Index="5" Name="6" /><ColumnStyle Index="6" Name="7" /><ColumnStyle Index="7" Name="8" /><ColumnStyle Index="8" Name="9" /><ColumnStyle Index="9" Name="10" /></ColumnStyles><ConditionalFormatCollections /></DataArea>
|
||||
<SheetCorner class="FarPoint.Win.Spread.Model.DefaultSheetStyleModel" Rows="1" Columns="1">
|
||||
<AltRowCount>2</AltRowCount>
|
||||
<DefaultStyle class="FarPoint.Win.Spread.StyleInfo" Parent="CornerDefaultEnhanced" />
|
||||
<ConditionalFormatCollections />
|
||||
</SheetCorner>
|
||||
</StyleModels>
|
||||
<SheetCornerStyle class="FarPoint.Win.Spread.NamedStyle" Parent="CornerDefaultEnhanced" />
|
||||
<ColumnFooterSheetCornerStyle class="FarPoint.Win.Spread.NamedStyle" Parent="CornerFooterDefaultEnhanced" />
|
||||
<Notes class="FarPoint.Win.Spread.DrawingSpace.SpreadNotesContainer">
|
||||
<Top>0</Top>
|
||||
<Left>0</Left>
|
||||
<Height>800</Height>
|
||||
<Width>904</Width>
|
||||
<Name>spreadNotesContainer</Name>
|
||||
<Text />
|
||||
<ForeColor>ControlText</ForeColor>
|
||||
<BackColor>Transparent</BackColor>
|
||||
<AlignHorz>Center</AlignHorz>
|
||||
<AlignVert>Center</AlignVert>
|
||||
<AlphaBlendBackColor>255</AlphaBlendBackColor>
|
||||
<Font />
|
||||
<PictureTransparencyColor>Empty</PictureTransparencyColor>
|
||||
<PictureTransparencyTolerance>0</PictureTransparencyTolerance>
|
||||
<ShapeOutlineColor>Black</ShapeOutlineColor>
|
||||
<ShapeOutlineThickness>1</ShapeOutlineThickness>
|
||||
<ShapeOutlineStyle>Solid</ShapeOutlineStyle>
|
||||
<RotationAngle>0</RotationAngle>
|
||||
<PictureRotationAngle>0</PictureRotationAngle>
|
||||
<TextRotationAngle>0</TextRotationAngle>
|
||||
<Anchor>0</Anchor>
|
||||
<Locked>False</Locked>
|
||||
<CanRotate>True</CanRotate>
|
||||
<CanPrint>True</CanPrint>
|
||||
<SizeProportional>False</SizeProportional>
|
||||
<Selectable>True</Selectable>
|
||||
<FlipHorizontal>False</FlipHorizontal>
|
||||
<FlipVertical>False</FlipVertical>
|
||||
<TextOrientation>TextRotateCustom</TextOrientation>
|
||||
<CanMove>None</CanMove>
|
||||
<CanSize>None</CanSize>
|
||||
<Gradient class="FarPoint.Win.Spread.DrawingSpace.PSGradient" assembly="FarPoint.Win.Spread, Version=11.40.20177.0, Culture=neutral, PublicKeyToken=327c3516b1b18457">
|
||||
<GradientStyle>None</GradientStyle>
|
||||
<GradientSections>
|
||||
<GradientSection class="FarPoint.Win.Spread.DrawingSpace.GradientSection">
|
||||
<Amount>0</Amount>
|
||||
<Color>#ffffffff</Color>
|
||||
</GradientSection>
|
||||
<GradientSection class="FarPoint.Win.Spread.DrawingSpace.GradientSection">
|
||||
<Amount>0</Amount>
|
||||
<Color>#ffffffff</Color>
|
||||
</GradientSection>
|
||||
</GradientSections>
|
||||
</Gradient>
|
||||
<EndOfProps />
|
||||
<AllowNoteEdit>True</AllowNoteEdit>
|
||||
</Notes>
|
||||
<FilterBarHeaderStyle class="FarPoint.Win.Spread.NamedStyle" Parent="RowHeaderDefaultEnhanced" />
|
||||
<FilterBar class="FarPoint.Win.Spread.FilterBar">
|
||||
<Height>22</Height>
|
||||
<Style class="FarPoint.Win.Spread.Model.DefaultSheetStyleModel" Rows="1" Columns="10">
|
||||
<AltRowCount>2</AltRowCount>
|
||||
<DefaultStyle class="FarPoint.Win.Spread.StyleInfo" Parent="FilterBarDefaultEnhanced" />
|
||||
<ConditionalFormatCollections />
|
||||
</Style>
|
||||
</FilterBar>
|
||||
</Sheet>
|
||||
</Sheets>
|
||||
</Presentation>
|
||||
<!--Drawing Section - This section contains the drawing objects and their properties.-->
|
||||
<Drawing>
|
||||
<Sheets>
|
||||
<Sheet index="0">
|
||||
<DrawingContainer class="FarPoint.Win.Spread.DrawingSpace.SpreadShapesContainer">
|
||||
<Top>0</Top>
|
||||
<Left>0</Left>
|
||||
<Height>800</Height>
|
||||
<Width>904</Width>
|
||||
<Name>spreadShapesContainer</Name>
|
||||
<Text />
|
||||
<ForeColor>ControlText</ForeColor>
|
||||
<BackColor>Transparent</BackColor>
|
||||
<AlignHorz>Center</AlignHorz>
|
||||
<AlignVert>Center</AlignVert>
|
||||
<AlphaBlendBackColor>255</AlphaBlendBackColor>
|
||||
<Font />
|
||||
<PictureTransparencyColor>Empty</PictureTransparencyColor>
|
||||
<PictureTransparencyTolerance>0</PictureTransparencyTolerance>
|
||||
<ShapeOutlineColor>Black</ShapeOutlineColor>
|
||||
<ShapeOutlineThickness>1</ShapeOutlineThickness>
|
||||
<ShapeOutlineStyle>Solid</ShapeOutlineStyle>
|
||||
<RotationAngle>0</RotationAngle>
|
||||
<PictureRotationAngle>0</PictureRotationAngle>
|
||||
<TextRotationAngle>0</TextRotationAngle>
|
||||
<Anchor>0</Anchor>
|
||||
<Locked>False</Locked>
|
||||
<CanRotate>True</CanRotate>
|
||||
<CanPrint>True</CanPrint>
|
||||
<SizeProportional>False</SizeProportional>
|
||||
<Selectable>True</Selectable>
|
||||
<FlipHorizontal>False</FlipHorizontal>
|
||||
<FlipVertical>False</FlipVertical>
|
||||
<TextOrientation>TextRotateCustom</TextOrientation>
|
||||
<CanMove>None</CanMove>
|
||||
<CanSize>None</CanSize>
|
||||
<EndOfProps />
|
||||
</DrawingContainer>
|
||||
<SparklineContainer class="FarPoint.Win.Spread.DefaultSparklineContainer" />
|
||||
</Sheet>
|
||||
</Sheets>
|
||||
</Drawing>
|
||||
<!--Data Section - This section contains the sheet data.-->
|
||||
<Data>
|
||||
<EnableCrossSheetReference>True</EnableCrossSheetReference>
|
||||
<Sheets>
|
||||
<Sheet index="0">
|
||||
<DataArea class="rc" rows="0" columns="10">
|
||||
<AutoCalculation>True</AutoCalculation>
|
||||
<AutoGenerateColumns>False</AutoGenerateColumns>
|
||||
<ReferenceStyle>A1</ReferenceStyle>
|
||||
<Iteration>False</Iteration>
|
||||
<MaximumIterations>1</MaximumIterations>
|
||||
<MaximumChange>0.001</MaximumChange>
|
||||
<UnBoundNewRowIndex>-1</UnBoundNewRowIndex>
|
||||
<SheetName>Sheet1</SheetName>
|
||||
<Columns>
|
||||
<Column index="0">
|
||||
<ColumnInfo>
|
||||
<ColumnName>idx</ColumnName>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
<Column index="1">
|
||||
<ColumnInfo>
|
||||
<ColumnName>cate</ColumnName>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
<Column index="2">
|
||||
<ColumnInfo>
|
||||
<ColumnName>name</ColumnName>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
<Column index="3">
|
||||
<ColumnInfo>
|
||||
<ColumnName>sid</ColumnName>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
<Column index="4">
|
||||
<ColumnInfo>
|
||||
<ColumnName>model</ColumnName>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
<Column index="5">
|
||||
<ColumnInfo>
|
||||
<ColumnName>unit</ColumnName>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
<Column index="6">
|
||||
<ColumnInfo>
|
||||
<ColumnName>price</ColumnName>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
<Column index="7">
|
||||
<ColumnInfo>
|
||||
<ColumnName>manu</ColumnName>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
<Column index="8">
|
||||
<ColumnInfo>
|
||||
<ColumnName>memo</ColumnName>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
<Column index="9">
|
||||
<ColumnInfo>
|
||||
<ColumnName>scale</ColumnName>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
</Columns>
|
||||
<Cells />
|
||||
<UnionedChangeCellRange>True</UnionedChangeCellRange>
|
||||
</DataArea>
|
||||
<RowHeader class="FarPoint.Win.Spread.Model.DefaultSheetDataModel" rows="0" columns="1">
|
||||
<AutoCalculation>True</AutoCalculation>
|
||||
<AutoGenerateColumns>True</AutoGenerateColumns>
|
||||
<ReferenceStyle>A1</ReferenceStyle>
|
||||
<Iteration>False</Iteration>
|
||||
<MaximumIterations>1</MaximumIterations>
|
||||
<MaximumChange>0.001</MaximumChange>
|
||||
<UnBoundNewRowIndex>-1</UnBoundNewRowIndex>
|
||||
<UnionedChangeCellRange>True</UnionedChangeCellRange>
|
||||
</RowHeader>
|
||||
<ColumnHeader class="FarPoint.Win.Spread.Model.DefaultSheetDataModel" rows="1" columns="10">
|
||||
<AutoCalculation>True</AutoCalculation>
|
||||
<AutoGenerateColumns>True</AutoGenerateColumns>
|
||||
<ReferenceStyle>A1</ReferenceStyle>
|
||||
<Iteration>False</Iteration>
|
||||
<MaximumIterations>1</MaximumIterations>
|
||||
<MaximumChange>0.001</MaximumChange>
|
||||
<UnBoundNewRowIndex>-1</UnBoundNewRowIndex>
|
||||
<UnionedChangeCellRange>True</UnionedChangeCellRange>
|
||||
</ColumnHeader>
|
||||
<ColumnFooter class="FarPoint.Win.Spread.Model.AggregationDataModel">
|
||||
<ModelChangeEventSuspended>False</ModelChangeEventSuspended>
|
||||
<Model class="rc" rows="1" columns="10">
|
||||
<AutoCalculation>True</AutoCalculation>
|
||||
<AutoGenerateColumns>True</AutoGenerateColumns>
|
||||
<ReferenceStyle>A1</ReferenceStyle>
|
||||
<Iteration>False</Iteration>
|
||||
<MaximumIterations>1</MaximumIterations>
|
||||
<MaximumChange>0.001</MaximumChange>
|
||||
<UnBoundNewRowIndex>-1</UnBoundNewRowIndex>
|
||||
<UnionedChangeCellRange>True</UnionedChangeCellRange>
|
||||
</Model>
|
||||
</ColumnFooter>
|
||||
<RangeGroupModel class="r9">
|
||||
<outlineOptions>SummaryBelow, SummaryRight</outlineOptions>
|
||||
<ignoreCreateWorksheet>True</ignoreCreateWorksheet>
|
||||
</RangeGroupModel>
|
||||
<SheetCornerDataModel class="FarPoint.Win.Spread.Model.DefaultSheetDataModel" rows="1" columns="1">
|
||||
<AutoCalculation>True</AutoCalculation>
|
||||
<AutoGenerateColumns>True</AutoGenerateColumns>
|
||||
<ReferenceStyle>A1</ReferenceStyle>
|
||||
<Iteration>False</Iteration>
|
||||
<MaximumIterations>1</MaximumIterations>
|
||||
<MaximumChange>0.001</MaximumChange>
|
||||
<UnBoundNewRowIndex>-1</UnBoundNewRowIndex>
|
||||
<UnionedChangeCellRange>True</UnionedChangeCellRange>
|
||||
</SheetCornerDataModel>
|
||||
</Sheet>
|
||||
</Sheets>
|
||||
</Data>
|
||||
</Spread>
|
||||
@@ -1,896 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Spread class="FarPoint.Win.Spread.FpSpread">
|
||||
<!--Settings Section - This section contains the workbook properties, and the sheet objects, properties and selections.-->
|
||||
<Settings>
|
||||
<RootWorkbook>
|
||||
<ActiveSheetIndex>0</ActiveSheetIndex>
|
||||
<AllowDragDrop>False</AllowDragDrop>
|
||||
<ShowCellErrors>False</ShowCellErrors>
|
||||
<ShowRowErrors>False</ShowRowErrors>
|
||||
<AllowDragFill>False</AllowDragFill>
|
||||
<EnableDragFillMenu>True</EnableDragFillMenu>
|
||||
<AllowCellOverflow>False</AllowCellOverflow>
|
||||
<AllowColumnMove>False</AllowColumnMove>
|
||||
<AllowColumnMoveMultiple>False</AllowColumnMoveMultiple>
|
||||
<AllowEditOverflow>False</AllowEditOverflow>
|
||||
<RangeDragFillMode>Copy</RangeDragFillMode>
|
||||
<CustomFillSeriesList />
|
||||
<DragFillDataOnly>True</DragFillDataOnly>
|
||||
<CellSpanSelectionPolicy>Default</CellSpanSelectionPolicy>
|
||||
<AllowEditorReservedLocations>True</AllowEditorReservedLocations>
|
||||
<AllowUserFormulas>False</AllowUserFormulas>
|
||||
<AllowRowMove>False</AllowRowMove>
|
||||
<AllowRowMoveMultiple>False</AllowRowMoveMultiple>
|
||||
<ShowDragBandOnMoving>True</ShowDragBandOnMoving>
|
||||
<AllowSheetMove>False</AllowSheetMove>
|
||||
<AllowUndo>True</AllowUndo>
|
||||
<AllowUserZoom>True</AllowUserZoom>
|
||||
<AutoClipboard>True</AutoClipboard>
|
||||
<AutoAdvance>False</AutoAdvance>
|
||||
<StatusBarVisible>False</StatusBarVisible>
|
||||
<BackgroundImage type="Image"></BackgroundImage>
|
||||
<BackgroundImageLayout>Tile</BackgroundImageLayout>
|
||||
<BorderCollapse>Separate</BorderCollapse>
|
||||
<RightToLeft>No</RightToLeft>
|
||||
<TabStripInsertTab>True</TabStripInsertTab>
|
||||
<UseOptimizedSelectionForTouch>True</UseOptimizedSelectionForTouch>
|
||||
<TouchSelectionGripperThickness>0</TouchSelectionGripperThickness>
|
||||
<TouchSelectionGripperLineColor>Empty</TouchSelectionGripperLineColor>
|
||||
<TouchSelectionGripperBackColor>Empty</TouchSelectionGripperBackColor>
|
||||
<TapToAddSelection>False</TapToAddSelection>
|
||||
<ShowGrippersInEditingStatus>True</ShowGrippersInEditingStatus>
|
||||
<AutoScrollWhenKeyboardShowing>True</AutoScrollWhenKeyboardShowing>
|
||||
<ResizeZeroIndicator>Default</ResizeZeroIndicator>
|
||||
<InputScope>Default</InputScope>
|
||||
<PanningMode>Both</PanningMode>
|
||||
<BoundaryFeedbackMode>Split</BoundaryFeedbackMode>
|
||||
<AllowUserToTouchZoom>True</AllowUserToTouchZoom>
|
||||
<TouchZoomSnapDistance>0.05</TouchZoomSnapDistance>
|
||||
<TouchDropDownScale>1.5</TouchDropDownScale>
|
||||
<HeaderIndicatorPositionAdjusting>0</HeaderIndicatorPositionAdjusting>
|
||||
<PaintSelectionBorder>True</PaintSelectionBorder>
|
||||
<PaintSelectionHeader>True</PaintSelectionHeader>
|
||||
<PaintActiveCellInSelection>False</PaintActiveCellInSelection>
|
||||
<VerticalScrollbarMode>Row</VerticalScrollbarMode>
|
||||
<HorizontalScrollbarMode>Column</HorizontalScrollbarMode>
|
||||
<ScrollTipPolicy>Off</ScrollTipPolicy>
|
||||
<ScrollBarTrackPolicy>Off</ScrollBarTrackPolicy>
|
||||
<ScrollBarShowMax>True</ScrollBarShowMax>
|
||||
<ScrollBarMaxAlign>True</ScrollBarMaxAlign>
|
||||
<BorderStyle>Fixed3D</BorderStyle>
|
||||
<ButtonDrawMode>Always</ButtonDrawMode>
|
||||
<CellNoteIndicatorVisible>True</CellNoteIndicatorVisible>
|
||||
<ClipboardOptions>AllHeaders</ClipboardOptions>
|
||||
<AutofitColumnOptions>ExcludeSpans</AutofitColumnOptions>
|
||||
<AutofitRowOptions>ExcludeSpans</AutofitRowOptions>
|
||||
<ClipboardPasteToFill>False</ClipboardPasteToFill>
|
||||
<ColumnSplitBoxAlignment>Leading</ColumnSplitBoxAlignment>
|
||||
<ImeMode>NoControl</ImeMode>
|
||||
<AutoImeMode>True</AutoImeMode>
|
||||
<ImeSentenceMode>NoControl</ImeSentenceMode>
|
||||
<SpreadScaleMode>None</SpreadScaleMode>
|
||||
<ColumnSplitBoxPolicy>Always</ColumnSplitBoxPolicy>
|
||||
<EditModePermanent>False</EditModePermanent>
|
||||
<EditModeReplace>False</EditModeReplace>
|
||||
<HorizontalScrollBarHeight>-1</HorizontalScrollBarHeight>
|
||||
<HorizontalScrollBarPolicy>Always</HorizontalScrollBarPolicy>
|
||||
<HorizontalScrollBarSmallChange>1</HorizontalScrollBarSmallChange>
|
||||
<AllowRowMoveDataAllowAddNew>False</AllowRowMoveDataAllowAddNew>
|
||||
<LeftTab>0</LeftTab>
|
||||
<MoveActiveOnFocus>True</MoveActiveOnFocus>
|
||||
<RetainSelectionBlock>True</RetainSelectionBlock>
|
||||
<RightToLeft>No</RightToLeft>
|
||||
<RowSplitBoxAlignment>Leading</RowSplitBoxAlignment>
|
||||
<RowSplitBoxPolicy>Always</RowSplitBoxPolicy>
|
||||
<SelectionBlockOptions>Cells, Rows, Columns, Sheet</SelectionBlockOptions>
|
||||
<SheetCount>1</SheetCount>
|
||||
<TabStrip>
|
||||
<BackColor>Control</BackColor>
|
||||
<Editable>False</Editable>
|
||||
<ButtonPolicy>Always</ButtonPolicy>
|
||||
<ActiveSheetTab />
|
||||
<DefaultSheetTab />
|
||||
<Items>
|
||||
<SheetTab />
|
||||
</Items>
|
||||
</TabStrip>
|
||||
<TabStripPlacement>WithHorizontalScrollBar</TabStripPlacement>
|
||||
<TabStripPolicy>AsNeeded</TabStripPolicy>
|
||||
<TabStripRatio>0.5</TabStripRatio>
|
||||
<TextTipAppearance class="FarPoint.Win.Spread.TipAppearance" assembly="FarPoint.Win.Spread">
|
||||
<BackColor>Info</BackColor>
|
||||
<ForeColor>InfoText</ForeColor>
|
||||
<Font>
|
||||
<Name>굴림</Name>
|
||||
<Size>9</Size>
|
||||
<Bold>False</Bold>
|
||||
<CharSet>129</CharSet>
|
||||
<Italic>False</Italic>
|
||||
<Strikeout>False</Strikeout>
|
||||
<Underline>False</Underline>
|
||||
<Unit>Point</Unit>
|
||||
<Vertical>False</Vertical>
|
||||
</Font>
|
||||
</TextTipAppearance>
|
||||
<TextTipDelay>500</TextTipDelay>
|
||||
<TextTipPolicy>Off</TextTipPolicy>
|
||||
<VerticalScrollBarWidth>-1</VerticalScrollBarWidth>
|
||||
<AllowCellContentFloat>False</AllowCellContentFloat>
|
||||
<VerticalScrollBarPolicy>Always</VerticalScrollBarPolicy>
|
||||
<VerticalScrollBarSmallChange>1</VerticalScrollBarSmallChange>
|
||||
<VisualStyles>Auto</VisualStyles>
|
||||
<FocusRenderer>
|
||||
<IFocusRenderer class="FarPoint.Win.Spread.FlatFocusIndicatorRenderer" assembly="FarPoint.Win.Spread, Version=11.40.20177.0, Culture=neutral, PublicKeyToken=327c3516b1b18457">
|
||||
<Thickness>3</Thickness>
|
||||
<Color>-16777216</Color>
|
||||
</IFocusRenderer>
|
||||
</FocusRenderer>
|
||||
<InterfaceRenderer>
|
||||
<IInterfaceRenderer class="FarPoint.Win.Spread.EnhancedInterfaceRenderer" assembly="FarPoint.Win.Spread, Version=11.40.20177.0, Culture=neutral, PublicKeyToken=327c3516b1b18457">
|
||||
<ScrollBoxStartColor>White</ScrollBoxStartColor>
|
||||
<ScrollBoxEndColor>White</ScrollBoxEndColor>
|
||||
<TabStripBackGroundStartColor>White</TabStripBackGroundStartColor>
|
||||
<TabStripBackGroundEndColor>White</TabStripBackGroundEndColor>
|
||||
<SheetTabUpperNormalStartColor>White</SheetTabUpperNormalStartColor>
|
||||
<SheetTabUpperNormalEndColor>White</SheetTabUpperNormalEndColor>
|
||||
<SheetTabLowerNormalStartColor>White</SheetTabLowerNormalStartColor>
|
||||
<SheetTabLowerNormalEndColor>White</SheetTabLowerNormalEndColor>
|
||||
<SheetTabUpperHoverStartColor>#ffbaeafd</SheetTabUpperHoverStartColor>
|
||||
<SheetTabUpperHoverEndColor>#ffbaeafd</SheetTabUpperHoverEndColor>
|
||||
<SheetTabLowerHoverStartColor>#ffbaeafd</SheetTabLowerHoverStartColor>
|
||||
<SheetTabLowerHoverEndColor>#ffbaeafd</SheetTabLowerHoverEndColor>
|
||||
<SheetTabBorderColor>#ffa6acb3</SheetTabBorderColor>
|
||||
<ForeColor>Black</ForeColor>
|
||||
<GrayAreaColor>White</GrayAreaColor>
|
||||
<TabStripButtonUpperNormalStartColor>White</TabStripButtonUpperNormalStartColor>
|
||||
<TabStripButtonUpperNormalEndColor>White</TabStripButtonUpperNormalEndColor>
|
||||
<TabStripButtonLowerNormalStartColor>White</TabStripButtonLowerNormalStartColor>
|
||||
<TabStripButtonLowerNormalEndColor>White</TabStripButtonLowerNormalEndColor>
|
||||
<TabStripButtonUpperHoverStartColor>#ffbaeafd</TabStripButtonUpperHoverStartColor>
|
||||
<TabStripButtonUpperHoverEndColor>#ffbaeafd</TabStripButtonUpperHoverEndColor>
|
||||
<TabStripButtonLowerHoverStartColor>#ffbaeafd</TabStripButtonLowerHoverStartColor>
|
||||
<TabStripButtonLowerHoverEndColor>#ffbaeafd</TabStripButtonLowerHoverEndColor>
|
||||
<TabStripButtonUpperPressedStartColor>#ffbaeafd</TabStripButtonUpperPressedStartColor>
|
||||
<TabStripButtonUpperPressedEndColor>#ffbaeafd</TabStripButtonUpperPressedEndColor>
|
||||
<TabStripButtonLowerPressedStartColor>#ffbaeafd</TabStripButtonLowerPressedStartColor>
|
||||
<TabStripButtonLowerPressedEndColor>#ffbaeafd</TabStripButtonLowerPressedEndColor>
|
||||
<TabStripButtonBorderColor>#ffa6acb3</TabStripButtonBorderColor>
|
||||
<SplitBoxBorderColor>#ffd5d5d5</SplitBoxBorderColor>
|
||||
<SplitBoxBackgroundColor>#ffd5d5d5</SplitBoxBackgroundColor>
|
||||
<SplitBarBackgroundColor>#ffdfe3f0</SplitBarBackgroundColor>
|
||||
<SplitBarDarkColor>#ffdfe3f0</SplitBarDarkColor>
|
||||
<SplitBarLightColor>#ffdfe3f0</SplitBarLightColor>
|
||||
<ScrollBoxBackgroundColor>White</ScrollBoxBackgroundColor>
|
||||
<TabStripBackgroundColor>White</TabStripBackgroundColor>
|
||||
<SheetTabUpperNormalColor>White</SheetTabUpperNormalColor>
|
||||
<SheetTabLowerNormalColor>White</SheetTabLowerNormalColor>
|
||||
<SheetTabUpperActiveColor>#ffbaeafd</SheetTabUpperActiveColor>
|
||||
<SheetTabLowerActiveColor>#ffbaeafd</SheetTabLowerActiveColor>
|
||||
<TabStripButtonUpperNormalColor>White</TabStripButtonUpperNormalColor>
|
||||
<TabStripButtonLowerNormalColor>White</TabStripButtonLowerNormalColor>
|
||||
<TabStripButtonUpperActiveColor>#ffbaeafd</TabStripButtonUpperActiveColor>
|
||||
<TabStripButtonLowerActiveColor>#ffbaeafd</TabStripButtonLowerActiveColor>
|
||||
<TabStripButtonUpperPressedColor>#ffbaeafd</TabStripButtonUpperPressedColor>
|
||||
<TabStripButtonLowerPressedColor>#ffbaeafd</TabStripButtonLowerPressedColor>
|
||||
<RangeGroupBackColor>White</RangeGroupBackColor>
|
||||
<RangeGroupButtonBackColor>Empty</RangeGroupButtonBackColor>
|
||||
<RangeGroupLineColor>#ff666666</RangeGroupLineColor>
|
||||
<RangeGroupButtonBorderColor>#ff666666</RangeGroupButtonBorderColor>
|
||||
<ArrowColorEnabled>#ffa6acb3</ArrowColorEnabled>
|
||||
<ArrowColorDisabled>#ffb2b2b2</ArrowColorDisabled>
|
||||
<SheetTabShape>Trapezoid</SheetTabShape>
|
||||
<ButtonStyle>Flat</ButtonStyle>
|
||||
<FlatStyle>Flat</FlatStyle>
|
||||
</IInterfaceRenderer>
|
||||
</InterfaceRenderer>
|
||||
<SelectionRenderer>
|
||||
<ISelectionRenderer class="FarPoint.Win.Spread.FlatSelectionRenderer" assembly="FarPoint.Win.Spread, Version=11.40.20177.0, Culture=neutral, PublicKeyToken=327c3516b1b18457">
|
||||
<ViewportColor>#64c1e0ff</ViewportColor>
|
||||
<ColumnHeaderColor>#64baeafd</ColumnHeaderColor>
|
||||
<ColumnFooterColor>#64baeafd</ColumnFooterColor>
|
||||
<RowHeaderColor>#64baeafd</RowHeaderColor>
|
||||
<FilterBarHeaderColor>#64baeafd</FilterBarHeaderColor>
|
||||
<FilterBarColor>#64c1e0ff</FilterBarColor>
|
||||
</ISelectionRenderer>
|
||||
</SelectionRenderer>
|
||||
<CellNoteIndicatorRenderer />
|
||||
<SuspendAnimations>False</SuspendAnimations>
|
||||
<HorizontalScrollBar class="FarPoint.Win.Spread.SpreadHScrollBar" assembly="FarPoint.Win.Spread">
|
||||
<Buttons class="FarPoint.Win.Spread.FpScrollBarButtonCollection">
|
||||
<Button class="FarPoint.Win.Spread.FpScrollBarButtonBackwardLine">
|
||||
<ChangeType>SmallChange</ChangeType>
|
||||
<ChangeValue>-1</ChangeValue>
|
||||
</Button>
|
||||
<Button class="FarPoint.Win.Spread.FpScrollBarComboThumb">
|
||||
<TrackBackward class="FarPoint.Win.Spread.FpScrollBarTrackBackward">
|
||||
<ChangeType>LargeChange</ChangeType>
|
||||
<ChangeValue>-1</ChangeValue>
|
||||
</TrackBackward>
|
||||
<Thumb class="FarPoint.Win.Spread.FpScrollBarThumb">
|
||||
<Gripper class="FarPoint.Win.Spread.FpScrollBarGripper" />
|
||||
</Thumb>
|
||||
<TrackForward class="FarPoint.Win.Spread.FpScrollBarTrackForward">
|
||||
<ChangeType>LargeChange</ChangeType>
|
||||
<ChangeValue>1</ChangeValue>
|
||||
</TrackForward>
|
||||
</Button>
|
||||
<Button class="FarPoint.Win.Spread.FpScrollBarButtonForwardLine">
|
||||
<ChangeType>SmallChange</ChangeType>
|
||||
<ChangeValue>1</ChangeValue>
|
||||
</Button>
|
||||
</Buttons>
|
||||
<VisualStyles>Auto</VisualStyles>
|
||||
<Renderer />
|
||||
</HorizontalScrollBar>
|
||||
<VerticalScrollBar class="FarPoint.Win.Spread.SpreadVScrollBar" assembly="FarPoint.Win.Spread">
|
||||
<Buttons class="FarPoint.Win.Spread.FpScrollBarButtonCollection">
|
||||
<Button class="FarPoint.Win.Spread.FpScrollBarButtonBackwardLine">
|
||||
<ChangeType>SmallChange</ChangeType>
|
||||
<ChangeValue>-1</ChangeValue>
|
||||
</Button>
|
||||
<Button class="FarPoint.Win.Spread.FpScrollBarComboThumb">
|
||||
<TrackBackward class="FarPoint.Win.Spread.FpScrollBarTrackBackward">
|
||||
<ChangeType>LargeChange</ChangeType>
|
||||
<ChangeValue>-1</ChangeValue>
|
||||
</TrackBackward>
|
||||
<Thumb class="FarPoint.Win.Spread.FpScrollBarThumb">
|
||||
<Gripper class="FarPoint.Win.Spread.FpScrollBarGripper" />
|
||||
</Thumb>
|
||||
<TrackForward class="FarPoint.Win.Spread.FpScrollBarTrackForward">
|
||||
<ChangeType>LargeChange</ChangeType>
|
||||
<ChangeValue>1</ChangeValue>
|
||||
</TrackForward>
|
||||
</Button>
|
||||
<Button class="FarPoint.Win.Spread.FpScrollBarButtonForwardLine">
|
||||
<ChangeType>SmallChange</ChangeType>
|
||||
<ChangeValue>1</ChangeValue>
|
||||
</Button>
|
||||
</Buttons>
|
||||
<VisualStyles>Auto</VisualStyles>
|
||||
<Renderer />
|
||||
</VerticalScrollBar>
|
||||
<StatusBar class="FarPoint.Win.Spread.FpStatusBar" assembly="FarPoint.Win.Spread">
|
||||
<Element class="FarPoint.Win.Spread.FpStatusBarAverageElement">
|
||||
<Visible>True</Visible>
|
||||
<Text>평균</Text>
|
||||
<MenuText>평균(&A)</MenuText>
|
||||
<Align>Right</Align>
|
||||
</Element>
|
||||
<Element class="FarPoint.Win.Spread.FpStatusBarCountElement">
|
||||
<Visible>True</Visible>
|
||||
<Text>개수</Text>
|
||||
<MenuText>개수(&C)</MenuText>
|
||||
<Align>Right</Align>
|
||||
</Element>
|
||||
<Element class="FarPoint.Win.Spread.FpStatusBarNumericalCountElement">
|
||||
<Visible>False</Visible>
|
||||
<Text>숫자 세기</Text>
|
||||
<MenuText>숫자세기(&T)</MenuText>
|
||||
<Align>Right</Align>
|
||||
</Element>
|
||||
<Element class="FarPoint.Win.Spread.FpStatusBarMinElement">
|
||||
<Visible>False</Visible>
|
||||
<Text>최소값</Text>
|
||||
<MenuText>최소값(&I)</MenuText>
|
||||
<Align>Right</Align>
|
||||
</Element>
|
||||
<Element class="FarPoint.Win.Spread.FpStatusBarMaxElement">
|
||||
<Visible>False</Visible>
|
||||
<Text>최대값</Text>
|
||||
<MenuText>최대값(&X)</MenuText>
|
||||
<Align>Right</Align>
|
||||
</Element>
|
||||
<Element class="FarPoint.Win.Spread.FpStatusBarSumElement">
|
||||
<Visible>True</Visible>
|
||||
<Text>합계</Text>
|
||||
<MenuText>합계</MenuText>
|
||||
<Align>Right</Align>
|
||||
</Element>
|
||||
<Element class="FarPoint.Win.Spread.ZoomSliderStatusBarElement">
|
||||
<Visible>True</Visible>
|
||||
<Text />
|
||||
<MenuText>확대/축소 슬라이더(&Z)</MenuText>
|
||||
<Align>Right</Align>
|
||||
</Element>
|
||||
<Element class="FarPoint.Win.Spread.ZoomStatusBarElement">
|
||||
<Visible>True</Visible>
|
||||
<Text />
|
||||
<MenuText>확대/축소(&Z)</MenuText>
|
||||
<Align>Right</Align>
|
||||
</Element>
|
||||
<Skin class="FarPoint.Win.Spread.StatusBarSkin">
|
||||
<name>Default</name>
|
||||
<backcolor>White</backcolor>
|
||||
<forecolor>Black</forecolor>
|
||||
<zoomButtonHoverColor>#ffcdcdcd</zoomButtonHoverColor>
|
||||
<zoomslidercolor>#ffa6a6a6</zoomslidercolor>
|
||||
<zoomsliderhovercolor>#ffcdcdcd</zoomsliderhovercolor>
|
||||
<zoomslidertrackcolor>#ffa6a6a6</zoomslidertrackcolor>
|
||||
<font>
|
||||
<Name>Microsoft Sans Serif</Name>
|
||||
<Size>8.25</Size>
|
||||
<Bold>False</Bold>
|
||||
<CharSet>1</CharSet>
|
||||
<Italic>False</Italic>
|
||||
<Strikeout>False</Strikeout>
|
||||
<Underline>False</Underline>
|
||||
<Unit>Point</Unit>
|
||||
<Vertical>False</Vertical>
|
||||
</font>
|
||||
</Skin>
|
||||
<EnableContextMenu>True</EnableContextMenu>
|
||||
</StatusBar>
|
||||
<TitleInfo class="FarPoint.Win.Spread.TitleInfo" assembly="FarPoint.Win.Spread">
|
||||
<BackColor>#ffe7eff7</BackColor>
|
||||
</TitleInfo>
|
||||
<TabStripInsertTabImage type="Image"></TabStripInsertTabImage>
|
||||
<DocumentProperties>
|
||||
<Created>0001-01-01T00:00:00.000</Created>
|
||||
<LastModified>0001-01-01T00:00:00.000</LastModified>
|
||||
<Revision>0</Revision>
|
||||
</DocumentProperties>
|
||||
</RootWorkbook>
|
||||
<Sheets>
|
||||
<Sheet index="0" class="FarPoint.Win.Spread.SheetView">
|
||||
<SheetName>Sheet1</SheetName>
|
||||
<TitleInfo class="FarPoint.Win.Spread.TitleInfo">
|
||||
<BackColor>#ffe7eff7</BackColor>
|
||||
</TitleInfo>
|
||||
<Categories>
|
||||
<Appearance>
|
||||
<GroupBarInfo class="FarPoint.Win.Spread.GroupBarInfo" />
|
||||
</Appearance>
|
||||
<Behavior>
|
||||
<DataAutoSizeColumns>False</DataAutoSizeColumns>
|
||||
</Behavior>
|
||||
<Appearance />
|
||||
<Behavior />
|
||||
<Layout>
|
||||
<ColumnCount>9</ColumnCount>
|
||||
<RowCount>0</RowCount>
|
||||
<ActiveColumnIndex>-1</ActiveColumnIndex>
|
||||
<ActiveRowIndex>-1</ActiveRowIndex>
|
||||
</Layout>
|
||||
<Appearance>
|
||||
<ScrollingContentInfo class="FarPoint.Win.Spread.ScrollingContentInfo" />
|
||||
<PreviewRowInfo class="FarPoint.Win.Spread.PreviewRowInfo" />
|
||||
</Appearance>
|
||||
</Categories>
|
||||
<SelectionModel class="FarPoint.Win.Spread.Model.DefaultSheetSelectionModel">
|
||||
<CellRange Row="-1" Column="4" RowCount="-1" ColumnCount="1" />
|
||||
<AnchorColumn>4</AnchorColumn>
|
||||
</SelectionModel>
|
||||
</Sheet>
|
||||
</Sheets>
|
||||
</Settings>
|
||||
<!--Styles Section - This section contains the workbook and sheet named style collections.-->
|
||||
<Styles>
|
||||
<NamedStyles class="FarPoint.Win.Spread.NamedStyleCollection" />
|
||||
</Styles>
|
||||
<!--Presentation Section - This section contains the column and row properties, cell spans, and the sheet, column, row, and cell styles.-->
|
||||
<Presentation>
|
||||
<Font>
|
||||
<Name>맑은 고딕</Name>
|
||||
<Size>9</Size>
|
||||
<Bold>False</Bold>
|
||||
<CharSet>1</CharSet>
|
||||
<Italic>False</Italic>
|
||||
<Strikeout>False</Strikeout>
|
||||
<Underline>False</Underline>
|
||||
<Unit>Point</Unit>
|
||||
<Vertical>False</Vertical>
|
||||
</Font>
|
||||
<Sheets>
|
||||
<Sheet index="0">
|
||||
<ViewportInfo>
|
||||
<RowPaneCount>1</RowPaneCount>
|
||||
<ColumnPaneCount>1</ColumnPaneCount>
|
||||
<ActiveRowPane>0</ActiveRowPane>
|
||||
<ActiveColumnPane>0</ActiveColumnPane>
|
||||
<RowPanes>
|
||||
<RowPane row="0">
|
||||
<TopRow>0</TopRow>
|
||||
<PreferredHeight>-1</PreferredHeight>
|
||||
<TopOffset>0</TopOffset>
|
||||
</RowPane>
|
||||
</RowPanes>
|
||||
<ColumnPanes>
|
||||
<ColumnPane column="0">
|
||||
<LeftColumn>0</LeftColumn>
|
||||
<PreferredWidth>-1</PreferredWidth>
|
||||
<LeftOffset>0</LeftOffset>
|
||||
</ColumnPane>
|
||||
</ColumnPanes>
|
||||
</ViewportInfo>
|
||||
<AxisModels>
|
||||
<Row class="q1" ignoreCreateWorksheet="True" orientation="Vertical" count="0">
|
||||
<Items />
|
||||
</Row>
|
||||
<Column class="q1" ignoreCreateWorksheet="True" orientation="Horizontal" count="9">
|
||||
<Items>
|
||||
<Item startIndex="0" endIndex="0">
|
||||
<Size>58</Size>
|
||||
<BooleanProperties>8</BooleanProperties>
|
||||
<Flags>1</Flags>
|
||||
</Item>
|
||||
<Item startIndex="1" endIndex="1">
|
||||
<Size>78</Size>
|
||||
<BooleanProperties>8</BooleanProperties>
|
||||
<Flags>1</Flags>
|
||||
</Item>
|
||||
<Item startIndex="2" endIndex="2">
|
||||
<Size>74</Size>
|
||||
<BooleanProperties>8</BooleanProperties>
|
||||
<Flags>1</Flags>
|
||||
</Item>
|
||||
<Item startIndex="3" endIndex="3">
|
||||
<Size>109</Size>
|
||||
<BooleanProperties>8</BooleanProperties>
|
||||
<Flags>1</Flags>
|
||||
</Item>
|
||||
<Item startIndex="4" endIndex="4">
|
||||
<Size>88</Size>
|
||||
<BooleanProperties>8</BooleanProperties>
|
||||
<Flags>1</Flags>
|
||||
</Item>
|
||||
<Item startIndex="5" endIndex="5">
|
||||
<Size>73</Size>
|
||||
<BooleanProperties>8</BooleanProperties>
|
||||
<Flags>1</Flags>
|
||||
</Item>
|
||||
<Item startIndex="6" endIndex="6">
|
||||
<Size>34</Size>
|
||||
<BooleanProperties>8</BooleanProperties>
|
||||
<Flags>1</Flags>
|
||||
</Item>
|
||||
<Item startIndex="7" endIndex="7">
|
||||
<Size>25</Size>
|
||||
<BooleanProperties>8</BooleanProperties>
|
||||
<Flags>1</Flags>
|
||||
</Item>
|
||||
<Item startIndex="8" endIndex="8">
|
||||
<Size>113</Size>
|
||||
<BooleanProperties>8</BooleanProperties>
|
||||
<Flags>1</Flags>
|
||||
</Item>
|
||||
</Items>
|
||||
</Column>
|
||||
<RowHeaderColumn class="FarPoint.Win.Spread.Model.DefaultSheetAxisModel" orientation="Horizontal" count="1" defaultSize="35">
|
||||
<Items>
|
||||
<Item index="-1">
|
||||
<_startIndex>-1</_startIndex>
|
||||
<Resizable>False</Resizable>
|
||||
<Size>35</Size>
|
||||
<_endIndex>-1</_endIndex>
|
||||
</Item>
|
||||
</Items>
|
||||
</RowHeaderColumn>
|
||||
<ColumnHeaderRow class="FarPoint.Win.Spread.Model.DefaultSheetAxisModel" orientation="Vertical" count="1">
|
||||
<Items>
|
||||
<Item index="-1">
|
||||
<_startIndex>-1</_startIndex>
|
||||
<Resizable>False</Resizable>
|
||||
<_endIndex>-1</_endIndex>
|
||||
</Item>
|
||||
<Item index="0">
|
||||
<_startIndex>-1</_startIndex>
|
||||
<Size>28</Size>
|
||||
<_endIndex>-1</_endIndex>
|
||||
</Item>
|
||||
</Items>
|
||||
</ColumnHeaderRow>
|
||||
<ColumnFooterRow class="FarPoint.Win.Spread.Model.DefaultSheetAxisModel" orientation="Vertical" count="1">
|
||||
<Items>
|
||||
<Item index="-1">
|
||||
<_startIndex>-1</_startIndex>
|
||||
<Resizable>False</Resizable>
|
||||
<_endIndex>-1</_endIndex>
|
||||
</Item>
|
||||
</Items>
|
||||
</ColumnFooterRow>
|
||||
</AxisModels>
|
||||
<StyleModels>
|
||||
<RowHeader class="FarPoint.Win.Spread.Model.DefaultSheetStyleModel" Rows="0" Columns="1">
|
||||
<AltRowCount>2</AltRowCount>
|
||||
<DefaultStyle class="FarPoint.Win.Spread.StyleInfo" Parent="RowHeaderDefaultEnhanced" />
|
||||
<ConditionalFormatCollections />
|
||||
</RowHeader>
|
||||
<ColumnHeader class="FarPoint.Win.Spread.Model.DefaultSheetStyleModel" Rows="1" Columns="9">
|
||||
<AltRowCount>2</AltRowCount>
|
||||
<DefaultStyle class="FarPoint.Win.Spread.StyleInfo" Parent="ColumnHeaderDefaultEnhanced" />
|
||||
<ConditionalFormatCollections />
|
||||
</ColumnHeader>
|
||||
<ColumnFooter class="FarPoint.Win.Spread.Model.DefaultSheetStyleModel" Rows="1" Columns="9">
|
||||
<AltRowCount>2</AltRowCount>
|
||||
<DefaultStyle class="FarPoint.Win.Spread.StyleInfo" Parent="ColumnHeaderDefaultEnhanced" />
|
||||
<ConditionalFormatCollections />
|
||||
</ColumnFooter>
|
||||
<DataArea class="qd" ignoreCreateWorksheet="True" Rows="0" Columns="9">
|
||||
<AltRowCount>2</AltRowCount>
|
||||
<DefaultStyle class="FarPoint.Win.Spread.StyleInfo" Parent="DataAreaDefault" />
|
||||
<NamedStyles class="FarPoint.Win.Spread.NamedStyleCollection">
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="12">
|
||||
<CellType class="FarPoint.Win.Spread.CellType.TextCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<CharacterCasing>Normal</CharacterCasing>
|
||||
<MaxLength>255</MaxLength>
|
||||
<Multiline>False</Multiline>
|
||||
<ScrollBars>None</ScrollBars>
|
||||
<CharacterSet>Ascii</CharacterSet>
|
||||
<HotkeyPrefix>None</HotkeyPrefix>
|
||||
</CellType>
|
||||
</NamedStyle>
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="1">
|
||||
<CellType class="FarPoint.Win.Spread.CellType.TextCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<CharacterCasing>Normal</CharacterCasing>
|
||||
<MaxLength>255</MaxLength>
|
||||
<Multiline>False</Multiline>
|
||||
<ScrollBars>None</ScrollBars>
|
||||
<CharacterSet>Ascii</CharacterSet>
|
||||
<HotkeyPrefix>None</HotkeyPrefix>
|
||||
</CellType>
|
||||
</NamedStyle>
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="3">
|
||||
<BackColor>#ffe0e0e0</BackColor>
|
||||
<CellType class="FarPoint.Win.Spread.CellType.TextCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<CharacterCasing>Normal</CharacterCasing>
|
||||
<MaxLength>255</MaxLength>
|
||||
<Multiline>False</Multiline>
|
||||
<ScrollBars>None</ScrollBars>
|
||||
<CharacterSet>Ascii</CharacterSet>
|
||||
<HotkeyPrefix>None</HotkeyPrefix>
|
||||
</CellType>
|
||||
</NamedStyle>
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="10">
|
||||
<CellType class="FarPoint.Win.Spread.CellType.TextCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<CharacterCasing>Normal</CharacterCasing>
|
||||
<MaxLength>255</MaxLength>
|
||||
<Multiline>False</Multiline>
|
||||
<ScrollBars>None</ScrollBars>
|
||||
<CharacterSet>Ascii</CharacterSet>
|
||||
<HotkeyPrefix>None</HotkeyPrefix>
|
||||
</CellType>
|
||||
</NamedStyle>
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="5">
|
||||
<BackColor>#ffe0e0e0</BackColor>
|
||||
<CellType class="FarPoint.Win.Spread.CellType.NumberCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<DecimalPlaces>0</DecimalPlaces>
|
||||
<FixedPoint>True</FixedPoint>
|
||||
<LeadingZero>Yes</LeadingZero>
|
||||
<MaximumValue>2147483647</MaximumValue>
|
||||
<MinimumValue>-2147483648</MinimumValue>
|
||||
<NegativeFormat>UseRegional</NegativeFormat>
|
||||
<NegativeRed>False</NegativeRed>
|
||||
<ShowSeparator>False</ShowSeparator>
|
||||
<SpinButton>False</SpinButton>
|
||||
<SpinIntegerIncrement>1</SpinIntegerIncrement>
|
||||
<SpinDecimalIncrement>0.1</SpinDecimalIncrement>
|
||||
<FractionMode>False</FractionMode>
|
||||
<FractionDenominatorPrecision>Auto</FractionDenominatorPrecision>
|
||||
<FractionDenominatorDigits>3</FractionDenominatorDigits>
|
||||
<FractionCustomFormat># ???/???</FractionCustomFormat>
|
||||
<FractionConvertWholeNumbers>False</FractionConvertWholeNumbers>
|
||||
<FractionRenderOnly>False</FractionRenderOnly>
|
||||
<SpinWrap>False</SpinWrap>
|
||||
</CellType>
|
||||
</NamedStyle>
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="6">
|
||||
<CellType class="FarPoint.Win.Spread.CellType.TextCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<CharacterCasing>Normal</CharacterCasing>
|
||||
<MaxLength>255</MaxLength>
|
||||
<Multiline>False</Multiline>
|
||||
<ScrollBars>None</ScrollBars>
|
||||
<CharacterSet>Ascii</CharacterSet>
|
||||
<HotkeyPrefix>None</HotkeyPrefix>
|
||||
</CellType>
|
||||
</NamedStyle>
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="7">
|
||||
<CellType class="FarPoint.Win.Spread.CellType.TextCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<CharacterCasing>Normal</CharacterCasing>
|
||||
<MaxLength>255</MaxLength>
|
||||
<Multiline>False</Multiline>
|
||||
<ScrollBars>None</ScrollBars>
|
||||
<CharacterSet>Ascii</CharacterSet>
|
||||
<HotkeyPrefix>None</HotkeyPrefix>
|
||||
</CellType>
|
||||
</NamedStyle>
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="8">
|
||||
<CellType class="FarPoint.Win.Spread.CellType.NumberCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<DecimalPlaces>-1</DecimalPlaces>
|
||||
<FixedPoint>True</FixedPoint>
|
||||
<LeadingZero>UseRegional</LeadingZero>
|
||||
<MaximumValue>999999999999999</MaximumValue>
|
||||
<MinimumValue>-999999999999999</MinimumValue>
|
||||
<NegativeFormat>UseRegional</NegativeFormat>
|
||||
<NegativeRed>False</NegativeRed>
|
||||
<ShowSeparator>False</ShowSeparator>
|
||||
<SpinButton>False</SpinButton>
|
||||
<SpinIntegerIncrement>1</SpinIntegerIncrement>
|
||||
<SpinDecimalIncrement>0.1</SpinDecimalIncrement>
|
||||
<FractionMode>False</FractionMode>
|
||||
<FractionDenominatorPrecision>Auto</FractionDenominatorPrecision>
|
||||
<FractionDenominatorDigits>3</FractionDenominatorDigits>
|
||||
<FractionCustomFormat># ???/???</FractionCustomFormat>
|
||||
<FractionConvertWholeNumbers>False</FractionConvertWholeNumbers>
|
||||
<FractionRenderOnly>False</FractionRenderOnly>
|
||||
<SpinWrap>False</SpinWrap>
|
||||
</CellType>
|
||||
</NamedStyle>
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="9">
|
||||
<CellType class="FarPoint.Win.Spread.CellType.TextCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<CharacterCasing>Normal</CharacterCasing>
|
||||
<MaxLength>255</MaxLength>
|
||||
<Multiline>False</Multiline>
|
||||
<ScrollBars>None</ScrollBars>
|
||||
<CharacterSet>Ascii</CharacterSet>
|
||||
<HotkeyPrefix>None</HotkeyPrefix>
|
||||
</CellType>
|
||||
</NamedStyle>
|
||||
</NamedStyles><ColumnStyles><ColumnStyle Index="0" Name="12" /><ColumnStyle Index="1" Name="1" /><ColumnStyle Index="2" Name="3" /><ColumnStyle Index="3" Name="10" /><ColumnStyle Index="4" Name="5" /><ColumnStyle Index="5" Name="6" /><ColumnStyle Index="6" Name="7" /><ColumnStyle Index="7" Name="8" /><ColumnStyle Index="8" Name="9" /></ColumnStyles><ConditionalFormatCollections /></DataArea>
|
||||
<SheetCorner class="FarPoint.Win.Spread.Model.DefaultSheetStyleModel" Rows="1" Columns="1">
|
||||
<AltRowCount>2</AltRowCount>
|
||||
<DefaultStyle class="FarPoint.Win.Spread.StyleInfo" Parent="CornerDefaultEnhanced" />
|
||||
<ConditionalFormatCollections />
|
||||
</SheetCorner>
|
||||
</StyleModels>
|
||||
<SheetCornerStyle class="FarPoint.Win.Spread.NamedStyle" Parent="CornerDefaultEnhanced" />
|
||||
<ColumnFooterSheetCornerStyle class="FarPoint.Win.Spread.NamedStyle" Parent="CornerFooterDefaultEnhanced" />
|
||||
<Notes class="FarPoint.Win.Spread.DrawingSpace.SpreadNotesContainer">
|
||||
<Top>0</Top>
|
||||
<Left>0</Left>
|
||||
<Height>800</Height>
|
||||
<Width>904</Width>
|
||||
<Name>spreadNotesContainer</Name>
|
||||
<Text />
|
||||
<ForeColor>ControlText</ForeColor>
|
||||
<BackColor>Transparent</BackColor>
|
||||
<AlignHorz>Center</AlignHorz>
|
||||
<AlignVert>Center</AlignVert>
|
||||
<AlphaBlendBackColor>255</AlphaBlendBackColor>
|
||||
<Font />
|
||||
<PictureTransparencyColor>Empty</PictureTransparencyColor>
|
||||
<PictureTransparencyTolerance>0</PictureTransparencyTolerance>
|
||||
<ShapeOutlineColor>Black</ShapeOutlineColor>
|
||||
<ShapeOutlineThickness>1</ShapeOutlineThickness>
|
||||
<ShapeOutlineStyle>Solid</ShapeOutlineStyle>
|
||||
<RotationAngle>0</RotationAngle>
|
||||
<PictureRotationAngle>0</PictureRotationAngle>
|
||||
<TextRotationAngle>0</TextRotationAngle>
|
||||
<Anchor>0</Anchor>
|
||||
<Locked>False</Locked>
|
||||
<CanRotate>True</CanRotate>
|
||||
<CanPrint>True</CanPrint>
|
||||
<SizeProportional>False</SizeProportional>
|
||||
<Selectable>True</Selectable>
|
||||
<FlipHorizontal>False</FlipHorizontal>
|
||||
<FlipVertical>False</FlipVertical>
|
||||
<TextOrientation>TextRotateCustom</TextOrientation>
|
||||
<CanMove>None</CanMove>
|
||||
<CanSize>None</CanSize>
|
||||
<Gradient class="FarPoint.Win.Spread.DrawingSpace.PSGradient" assembly="FarPoint.Win.Spread, Version=11.40.20177.0, Culture=neutral, PublicKeyToken=327c3516b1b18457">
|
||||
<GradientStyle>None</GradientStyle>
|
||||
<GradientSections>
|
||||
<GradientSection class="FarPoint.Win.Spread.DrawingSpace.GradientSection">
|
||||
<Amount>0</Amount>
|
||||
<Color>#ffffffff</Color>
|
||||
</GradientSection>
|
||||
<GradientSection class="FarPoint.Win.Spread.DrawingSpace.GradientSection">
|
||||
<Amount>0</Amount>
|
||||
<Color>#ffffffff</Color>
|
||||
</GradientSection>
|
||||
</GradientSections>
|
||||
</Gradient>
|
||||
<EndOfProps />
|
||||
<AllowNoteEdit>True</AllowNoteEdit>
|
||||
</Notes>
|
||||
<FilterBarHeaderStyle class="FarPoint.Win.Spread.NamedStyle" Parent="RowHeaderDefaultEnhanced" />
|
||||
<FilterBar class="FarPoint.Win.Spread.FilterBar">
|
||||
<Height>22</Height>
|
||||
<Style class="FarPoint.Win.Spread.Model.DefaultSheetStyleModel" Rows="1" Columns="9">
|
||||
<AltRowCount>2</AltRowCount>
|
||||
<DefaultStyle class="FarPoint.Win.Spread.StyleInfo" Parent="FilterBarDefaultEnhanced" />
|
||||
<ConditionalFormatCollections />
|
||||
</Style>
|
||||
</FilterBar>
|
||||
</Sheet>
|
||||
</Sheets>
|
||||
</Presentation>
|
||||
<!--Drawing Section - This section contains the drawing objects and their properties.-->
|
||||
<Drawing>
|
||||
<Sheets>
|
||||
<Sheet index="0">
|
||||
<DrawingContainer class="FarPoint.Win.Spread.DrawingSpace.SpreadShapesContainer">
|
||||
<Top>0</Top>
|
||||
<Left>0</Left>
|
||||
<Height>800</Height>
|
||||
<Width>904</Width>
|
||||
<Name>spreadShapesContainer</Name>
|
||||
<Text />
|
||||
<ForeColor>ControlText</ForeColor>
|
||||
<BackColor>Transparent</BackColor>
|
||||
<AlignHorz>Center</AlignHorz>
|
||||
<AlignVert>Center</AlignVert>
|
||||
<AlphaBlendBackColor>255</AlphaBlendBackColor>
|
||||
<Font />
|
||||
<PictureTransparencyColor>Empty</PictureTransparencyColor>
|
||||
<PictureTransparencyTolerance>0</PictureTransparencyTolerance>
|
||||
<ShapeOutlineColor>Black</ShapeOutlineColor>
|
||||
<ShapeOutlineThickness>1</ShapeOutlineThickness>
|
||||
<ShapeOutlineStyle>Solid</ShapeOutlineStyle>
|
||||
<RotationAngle>0</RotationAngle>
|
||||
<PictureRotationAngle>0</PictureRotationAngle>
|
||||
<TextRotationAngle>0</TextRotationAngle>
|
||||
<Anchor>0</Anchor>
|
||||
<Locked>False</Locked>
|
||||
<CanRotate>True</CanRotate>
|
||||
<CanPrint>True</CanPrint>
|
||||
<SizeProportional>False</SizeProportional>
|
||||
<Selectable>True</Selectable>
|
||||
<FlipHorizontal>False</FlipHorizontal>
|
||||
<FlipVertical>False</FlipVertical>
|
||||
<TextOrientation>TextRotateCustom</TextOrientation>
|
||||
<CanMove>None</CanMove>
|
||||
<CanSize>None</CanSize>
|
||||
<EndOfProps />
|
||||
</DrawingContainer>
|
||||
<SparklineContainer class="FarPoint.Win.Spread.DefaultSparklineContainer" />
|
||||
</Sheet>
|
||||
</Sheets>
|
||||
</Drawing>
|
||||
<!--Data Section - This section contains the sheet data.-->
|
||||
<Data>
|
||||
<EnableCrossSheetReference>True</EnableCrossSheetReference>
|
||||
<Sheets>
|
||||
<Sheet index="0">
|
||||
<DataArea class="rc" rows="0" columns="9">
|
||||
<AutoCalculation>True</AutoCalculation>
|
||||
<AutoGenerateColumns>False</AutoGenerateColumns>
|
||||
<ReferenceStyle>A1</ReferenceStyle>
|
||||
<Iteration>False</Iteration>
|
||||
<MaximumIterations>1</MaximumIterations>
|
||||
<MaximumChange>0.001</MaximumChange>
|
||||
<UnBoundNewRowIndex>-1</UnBoundNewRowIndex>
|
||||
<SheetName>Sheet1</SheetName>
|
||||
<Columns>
|
||||
<Column index="0">
|
||||
<ColumnInfo>
|
||||
<ColumnName>pdate</ColumnName>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
<Column index="1">
|
||||
<ColumnInfo>
|
||||
<ColumnName>group</ColumnName>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
<Column index="2">
|
||||
<ColumnInfo>
|
||||
<ColumnName>username</ColumnName>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
<Column index="3">
|
||||
<ColumnInfo>
|
||||
<ColumnName>project</ColumnName>
|
||||
<DataType>mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:System.String</DataType>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
<Column index="4">
|
||||
<ColumnInfo>
|
||||
<ColumnName>projectidx</ColumnName>
|
||||
<DataType>mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:System.Int32</DataType>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
<Column index="5">
|
||||
<ColumnInfo>
|
||||
<ColumnName>progress</ColumnName>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
<Column index="6">
|
||||
<ColumnInfo>
|
||||
<ColumnName>type</ColumnName>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
<Column index="7">
|
||||
<ColumnInfo>
|
||||
<ColumnName>hrs</ColumnName>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
<Column index="8">
|
||||
<ColumnInfo>
|
||||
<ColumnName>memo</ColumnName>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
</Columns>
|
||||
<Cells />
|
||||
<UnionedChangeCellRange>True</UnionedChangeCellRange>
|
||||
</DataArea>
|
||||
<RowHeader class="FarPoint.Win.Spread.Model.DefaultSheetDataModel" rows="0" columns="1">
|
||||
<AutoCalculation>True</AutoCalculation>
|
||||
<AutoGenerateColumns>True</AutoGenerateColumns>
|
||||
<ReferenceStyle>A1</ReferenceStyle>
|
||||
<Iteration>False</Iteration>
|
||||
<MaximumIterations>1</MaximumIterations>
|
||||
<MaximumChange>0.001</MaximumChange>
|
||||
<UnBoundNewRowIndex>-1</UnBoundNewRowIndex>
|
||||
<UnionedChangeCellRange>True</UnionedChangeCellRange>
|
||||
</RowHeader>
|
||||
<ColumnHeader class="FarPoint.Win.Spread.Model.DefaultSheetDataModel" rows="1" columns="9">
|
||||
<AutoCalculation>True</AutoCalculation>
|
||||
<AutoGenerateColumns>True</AutoGenerateColumns>
|
||||
<ReferenceStyle>A1</ReferenceStyle>
|
||||
<Iteration>False</Iteration>
|
||||
<MaximumIterations>1</MaximumIterations>
|
||||
<MaximumChange>0.001</MaximumChange>
|
||||
<UnBoundNewRowIndex>-1</UnBoundNewRowIndex>
|
||||
<Cells>
|
||||
<Cell row="0" column="0">
|
||||
<Data type="System.String">Date</Data>
|
||||
</Cell>
|
||||
<Cell row="0" column="1">
|
||||
<Data type="System.String">Group</Data>
|
||||
</Cell>
|
||||
<Cell row="0" column="2">
|
||||
<Data type="System.String">User</Data>
|
||||
</Cell>
|
||||
<Cell row="0" column="3">
|
||||
<Data type="System.String">Project</Data>
|
||||
</Cell>
|
||||
<Cell row="0" column="4">
|
||||
<Data type="System.String">*</Data>
|
||||
</Cell>
|
||||
<Cell row="0" column="5">
|
||||
<Data type="System.String">%</Data>
|
||||
</Cell>
|
||||
<Cell row="0" column="6">
|
||||
<Data type="System.String">Type</Data>
|
||||
</Cell>
|
||||
</Cells>
|
||||
<UnionedChangeCellRange>True</UnionedChangeCellRange>
|
||||
</ColumnHeader>
|
||||
<ColumnFooter class="FarPoint.Win.Spread.Model.AggregationDataModel">
|
||||
<ModelChangeEventSuspended>False</ModelChangeEventSuspended>
|
||||
<Model class="rc" rows="1" columns="9">
|
||||
<AutoCalculation>True</AutoCalculation>
|
||||
<AutoGenerateColumns>True</AutoGenerateColumns>
|
||||
<ReferenceStyle>A1</ReferenceStyle>
|
||||
<Iteration>False</Iteration>
|
||||
<MaximumIterations>1</MaximumIterations>
|
||||
<MaximumChange>0.001</MaximumChange>
|
||||
<UnBoundNewRowIndex>-1</UnBoundNewRowIndex>
|
||||
<UnionedChangeCellRange>True</UnionedChangeCellRange>
|
||||
</Model>
|
||||
</ColumnFooter>
|
||||
<RangeGroupModel class="r9">
|
||||
<outlineOptions>SummaryBelow, SummaryRight</outlineOptions>
|
||||
<ignoreCreateWorksheet>True</ignoreCreateWorksheet>
|
||||
</RangeGroupModel>
|
||||
<SheetCornerDataModel class="FarPoint.Win.Spread.Model.DefaultSheetDataModel" rows="1" columns="1">
|
||||
<AutoCalculation>True</AutoCalculation>
|
||||
<AutoGenerateColumns>True</AutoGenerateColumns>
|
||||
<ReferenceStyle>A1</ReferenceStyle>
|
||||
<Iteration>False</Iteration>
|
||||
<MaximumIterations>1</MaximumIterations>
|
||||
<MaximumChange>0.001</MaximumChange>
|
||||
<UnBoundNewRowIndex>-1</UnBoundNewRowIndex>
|
||||
<UnionedChangeCellRange>True</UnionedChangeCellRange>
|
||||
</SheetCornerDataModel>
|
||||
</Sheet>
|
||||
</Sheets>
|
||||
</Data>
|
||||
</Spread>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,883 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Spread class="FarPoint.Win.Spread.FpSpread">
|
||||
<!--Settings Section - This section contains the workbook properties, and the sheet objects, properties and selections.-->
|
||||
<Settings>
|
||||
<RootWorkbook>
|
||||
<ActiveSheetIndex>0</ActiveSheetIndex>
|
||||
<AllowDragDrop>False</AllowDragDrop>
|
||||
<ShowCellErrors>False</ShowCellErrors>
|
||||
<ShowRowErrors>False</ShowRowErrors>
|
||||
<AllowDragFill>False</AllowDragFill>
|
||||
<EnableDragFillMenu>True</EnableDragFillMenu>
|
||||
<AllowCellOverflow>False</AllowCellOverflow>
|
||||
<AllowColumnMove>False</AllowColumnMove>
|
||||
<AllowColumnMoveMultiple>False</AllowColumnMoveMultiple>
|
||||
<AllowEditOverflow>False</AllowEditOverflow>
|
||||
<RangeDragFillMode>Copy</RangeDragFillMode>
|
||||
<CustomFillSeriesList />
|
||||
<DragFillDataOnly>True</DragFillDataOnly>
|
||||
<CellSpanSelectionPolicy>Default</CellSpanSelectionPolicy>
|
||||
<AllowEditorReservedLocations>True</AllowEditorReservedLocations>
|
||||
<AllowUserFormulas>False</AllowUserFormulas>
|
||||
<AllowRowMove>False</AllowRowMove>
|
||||
<AllowRowMoveMultiple>False</AllowRowMoveMultiple>
|
||||
<ShowDragBandOnMoving>True</ShowDragBandOnMoving>
|
||||
<AllowSheetMove>False</AllowSheetMove>
|
||||
<AllowUndo>True</AllowUndo>
|
||||
<AllowUserZoom>True</AllowUserZoom>
|
||||
<AutoClipboard>True</AutoClipboard>
|
||||
<AutoAdvance>False</AutoAdvance>
|
||||
<StatusBarVisible>False</StatusBarVisible>
|
||||
<BackgroundImage type="Image"></BackgroundImage>
|
||||
<BackgroundImageLayout>Tile</BackgroundImageLayout>
|
||||
<BorderCollapse>Separate</BorderCollapse>
|
||||
<RightToLeft>No</RightToLeft>
|
||||
<TabStripInsertTab>True</TabStripInsertTab>
|
||||
<UseOptimizedSelectionForTouch>True</UseOptimizedSelectionForTouch>
|
||||
<TouchSelectionGripperThickness>0</TouchSelectionGripperThickness>
|
||||
<TouchSelectionGripperLineColor>Empty</TouchSelectionGripperLineColor>
|
||||
<TouchSelectionGripperBackColor>Empty</TouchSelectionGripperBackColor>
|
||||
<TapToAddSelection>False</TapToAddSelection>
|
||||
<ShowGrippersInEditingStatus>True</ShowGrippersInEditingStatus>
|
||||
<AutoScrollWhenKeyboardShowing>True</AutoScrollWhenKeyboardShowing>
|
||||
<ResizeZeroIndicator>Default</ResizeZeroIndicator>
|
||||
<InputScope>Default</InputScope>
|
||||
<PanningMode>Both</PanningMode>
|
||||
<BoundaryFeedbackMode>Split</BoundaryFeedbackMode>
|
||||
<AllowUserToTouchZoom>True</AllowUserToTouchZoom>
|
||||
<TouchZoomSnapDistance>0.05</TouchZoomSnapDistance>
|
||||
<TouchDropDownScale>1.5</TouchDropDownScale>
|
||||
<HeaderIndicatorPositionAdjusting>0</HeaderIndicatorPositionAdjusting>
|
||||
<PaintSelectionBorder>True</PaintSelectionBorder>
|
||||
<PaintSelectionHeader>True</PaintSelectionHeader>
|
||||
<PaintActiveCellInSelection>False</PaintActiveCellInSelection>
|
||||
<VerticalScrollbarMode>Row</VerticalScrollbarMode>
|
||||
<HorizontalScrollbarMode>Column</HorizontalScrollbarMode>
|
||||
<ScrollTipPolicy>Off</ScrollTipPolicy>
|
||||
<ScrollBarTrackPolicy>Off</ScrollBarTrackPolicy>
|
||||
<ScrollBarShowMax>True</ScrollBarShowMax>
|
||||
<ScrollBarMaxAlign>True</ScrollBarMaxAlign>
|
||||
<BorderStyle>Fixed3D</BorderStyle>
|
||||
<ButtonDrawMode>Always</ButtonDrawMode>
|
||||
<CellNoteIndicatorVisible>True</CellNoteIndicatorVisible>
|
||||
<ClipboardOptions>AllHeaders</ClipboardOptions>
|
||||
<AutofitColumnOptions>ExcludeSpans</AutofitColumnOptions>
|
||||
<AutofitRowOptions>ExcludeSpans</AutofitRowOptions>
|
||||
<ClipboardPasteToFill>False</ClipboardPasteToFill>
|
||||
<ColumnSplitBoxAlignment>Leading</ColumnSplitBoxAlignment>
|
||||
<ImeMode>NoControl</ImeMode>
|
||||
<AutoImeMode>True</AutoImeMode>
|
||||
<ImeSentenceMode>NoControl</ImeSentenceMode>
|
||||
<SpreadScaleMode>None</SpreadScaleMode>
|
||||
<ColumnSplitBoxPolicy>Always</ColumnSplitBoxPolicy>
|
||||
<EditModePermanent>False</EditModePermanent>
|
||||
<EditModeReplace>False</EditModeReplace>
|
||||
<HorizontalScrollBarHeight>-1</HorizontalScrollBarHeight>
|
||||
<HorizontalScrollBarPolicy>Always</HorizontalScrollBarPolicy>
|
||||
<HorizontalScrollBarSmallChange>1</HorizontalScrollBarSmallChange>
|
||||
<AllowRowMoveDataAllowAddNew>False</AllowRowMoveDataAllowAddNew>
|
||||
<LeftTab>0</LeftTab>
|
||||
<MoveActiveOnFocus>True</MoveActiveOnFocus>
|
||||
<RetainSelectionBlock>True</RetainSelectionBlock>
|
||||
<RightToLeft>No</RightToLeft>
|
||||
<RowSplitBoxAlignment>Leading</RowSplitBoxAlignment>
|
||||
<RowSplitBoxPolicy>Always</RowSplitBoxPolicy>
|
||||
<SelectionBlockOptions>Cells, Rows, Columns, Sheet</SelectionBlockOptions>
|
||||
<SheetCount>1</SheetCount>
|
||||
<TabStrip>
|
||||
<BackColor>Control</BackColor>
|
||||
<Editable>False</Editable>
|
||||
<ButtonPolicy>Always</ButtonPolicy>
|
||||
<ActiveSheetTab />
|
||||
<DefaultSheetTab />
|
||||
<Items>
|
||||
<SheetTab />
|
||||
</Items>
|
||||
</TabStrip>
|
||||
<TabStripPlacement>WithHorizontalScrollBar</TabStripPlacement>
|
||||
<TabStripPolicy>AsNeeded</TabStripPolicy>
|
||||
<TabStripRatio>0.5</TabStripRatio>
|
||||
<TextTipAppearance class="FarPoint.Win.Spread.TipAppearance" assembly="FarPoint.Win.Spread">
|
||||
<BackColor>Info</BackColor>
|
||||
<ForeColor>InfoText</ForeColor>
|
||||
<Font>
|
||||
<Name>굴림</Name>
|
||||
<Size>9</Size>
|
||||
<Bold>False</Bold>
|
||||
<CharSet>129</CharSet>
|
||||
<Italic>False</Italic>
|
||||
<Strikeout>False</Strikeout>
|
||||
<Underline>False</Underline>
|
||||
<Unit>Point</Unit>
|
||||
<Vertical>False</Vertical>
|
||||
</Font>
|
||||
</TextTipAppearance>
|
||||
<TextTipDelay>500</TextTipDelay>
|
||||
<TextTipPolicy>Off</TextTipPolicy>
|
||||
<VerticalScrollBarWidth>-1</VerticalScrollBarWidth>
|
||||
<AllowCellContentFloat>False</AllowCellContentFloat>
|
||||
<VerticalScrollBarPolicy>Always</VerticalScrollBarPolicy>
|
||||
<VerticalScrollBarSmallChange>1</VerticalScrollBarSmallChange>
|
||||
<VisualStyles>Auto</VisualStyles>
|
||||
<FocusRenderer>
|
||||
<IFocusRenderer class="FarPoint.Win.Spread.FlatFocusIndicatorRenderer" assembly="FarPoint.Win.Spread, Version=11.40.20177.0, Culture=neutral, PublicKeyToken=327c3516b1b18457">
|
||||
<Thickness>3</Thickness>
|
||||
<Color>-16777216</Color>
|
||||
</IFocusRenderer>
|
||||
</FocusRenderer>
|
||||
<InterfaceRenderer>
|
||||
<IInterfaceRenderer class="FarPoint.Win.Spread.EnhancedInterfaceRenderer" assembly="FarPoint.Win.Spread, Version=11.40.20177.0, Culture=neutral, PublicKeyToken=327c3516b1b18457">
|
||||
<ScrollBoxStartColor>White</ScrollBoxStartColor>
|
||||
<ScrollBoxEndColor>White</ScrollBoxEndColor>
|
||||
<TabStripBackGroundStartColor>White</TabStripBackGroundStartColor>
|
||||
<TabStripBackGroundEndColor>White</TabStripBackGroundEndColor>
|
||||
<SheetTabUpperNormalStartColor>White</SheetTabUpperNormalStartColor>
|
||||
<SheetTabUpperNormalEndColor>White</SheetTabUpperNormalEndColor>
|
||||
<SheetTabLowerNormalStartColor>White</SheetTabLowerNormalStartColor>
|
||||
<SheetTabLowerNormalEndColor>White</SheetTabLowerNormalEndColor>
|
||||
<SheetTabUpperHoverStartColor>#ffbaeafd</SheetTabUpperHoverStartColor>
|
||||
<SheetTabUpperHoverEndColor>#ffbaeafd</SheetTabUpperHoverEndColor>
|
||||
<SheetTabLowerHoverStartColor>#ffbaeafd</SheetTabLowerHoverStartColor>
|
||||
<SheetTabLowerHoverEndColor>#ffbaeafd</SheetTabLowerHoverEndColor>
|
||||
<SheetTabBorderColor>#ffa6acb3</SheetTabBorderColor>
|
||||
<ForeColor>Black</ForeColor>
|
||||
<GrayAreaColor>White</GrayAreaColor>
|
||||
<TabStripButtonUpperNormalStartColor>White</TabStripButtonUpperNormalStartColor>
|
||||
<TabStripButtonUpperNormalEndColor>White</TabStripButtonUpperNormalEndColor>
|
||||
<TabStripButtonLowerNormalStartColor>White</TabStripButtonLowerNormalStartColor>
|
||||
<TabStripButtonLowerNormalEndColor>White</TabStripButtonLowerNormalEndColor>
|
||||
<TabStripButtonUpperHoverStartColor>#ffbaeafd</TabStripButtonUpperHoverStartColor>
|
||||
<TabStripButtonUpperHoverEndColor>#ffbaeafd</TabStripButtonUpperHoverEndColor>
|
||||
<TabStripButtonLowerHoverStartColor>#ffbaeafd</TabStripButtonLowerHoverStartColor>
|
||||
<TabStripButtonLowerHoverEndColor>#ffbaeafd</TabStripButtonLowerHoverEndColor>
|
||||
<TabStripButtonUpperPressedStartColor>#ffbaeafd</TabStripButtonUpperPressedStartColor>
|
||||
<TabStripButtonUpperPressedEndColor>#ffbaeafd</TabStripButtonUpperPressedEndColor>
|
||||
<TabStripButtonLowerPressedStartColor>#ffbaeafd</TabStripButtonLowerPressedStartColor>
|
||||
<TabStripButtonLowerPressedEndColor>#ffbaeafd</TabStripButtonLowerPressedEndColor>
|
||||
<TabStripButtonBorderColor>#ffa6acb3</TabStripButtonBorderColor>
|
||||
<SplitBoxBorderColor>#ffd5d5d5</SplitBoxBorderColor>
|
||||
<SplitBoxBackgroundColor>#ffd5d5d5</SplitBoxBackgroundColor>
|
||||
<SplitBarBackgroundColor>#ffdfe3f0</SplitBarBackgroundColor>
|
||||
<SplitBarDarkColor>#ffdfe3f0</SplitBarDarkColor>
|
||||
<SplitBarLightColor>#ffdfe3f0</SplitBarLightColor>
|
||||
<ScrollBoxBackgroundColor>White</ScrollBoxBackgroundColor>
|
||||
<TabStripBackgroundColor>White</TabStripBackgroundColor>
|
||||
<SheetTabUpperNormalColor>White</SheetTabUpperNormalColor>
|
||||
<SheetTabLowerNormalColor>White</SheetTabLowerNormalColor>
|
||||
<SheetTabUpperActiveColor>#ffbaeafd</SheetTabUpperActiveColor>
|
||||
<SheetTabLowerActiveColor>#ffbaeafd</SheetTabLowerActiveColor>
|
||||
<TabStripButtonUpperNormalColor>White</TabStripButtonUpperNormalColor>
|
||||
<TabStripButtonLowerNormalColor>White</TabStripButtonLowerNormalColor>
|
||||
<TabStripButtonUpperActiveColor>#ffbaeafd</TabStripButtonUpperActiveColor>
|
||||
<TabStripButtonLowerActiveColor>#ffbaeafd</TabStripButtonLowerActiveColor>
|
||||
<TabStripButtonUpperPressedColor>#ffbaeafd</TabStripButtonUpperPressedColor>
|
||||
<TabStripButtonLowerPressedColor>#ffbaeafd</TabStripButtonLowerPressedColor>
|
||||
<RangeGroupBackColor>White</RangeGroupBackColor>
|
||||
<RangeGroupButtonBackColor>Empty</RangeGroupButtonBackColor>
|
||||
<RangeGroupLineColor>#ff666666</RangeGroupLineColor>
|
||||
<RangeGroupButtonBorderColor>#ff666666</RangeGroupButtonBorderColor>
|
||||
<ArrowColorEnabled>#ffa6acb3</ArrowColorEnabled>
|
||||
<ArrowColorDisabled>#ffb2b2b2</ArrowColorDisabled>
|
||||
<SheetTabShape>Trapezoid</SheetTabShape>
|
||||
<ButtonStyle>Flat</ButtonStyle>
|
||||
<FlatStyle>Flat</FlatStyle>
|
||||
</IInterfaceRenderer>
|
||||
</InterfaceRenderer>
|
||||
<SelectionRenderer>
|
||||
<ISelectionRenderer class="FarPoint.Win.Spread.FlatSelectionRenderer" assembly="FarPoint.Win.Spread, Version=11.40.20177.0, Culture=neutral, PublicKeyToken=327c3516b1b18457">
|
||||
<ViewportColor>#64c1e0ff</ViewportColor>
|
||||
<ColumnHeaderColor>#64baeafd</ColumnHeaderColor>
|
||||
<ColumnFooterColor>#64baeafd</ColumnFooterColor>
|
||||
<RowHeaderColor>#64baeafd</RowHeaderColor>
|
||||
<FilterBarHeaderColor>#64baeafd</FilterBarHeaderColor>
|
||||
<FilterBarColor>#64c1e0ff</FilterBarColor>
|
||||
</ISelectionRenderer>
|
||||
</SelectionRenderer>
|
||||
<CellNoteIndicatorRenderer />
|
||||
<SuspendAnimations>False</SuspendAnimations>
|
||||
<HorizontalScrollBar class="FarPoint.Win.Spread.SpreadHScrollBar" assembly="FarPoint.Win.Spread">
|
||||
<Buttons class="FarPoint.Win.Spread.FpScrollBarButtonCollection">
|
||||
<Button class="FarPoint.Win.Spread.FpScrollBarButtonBackwardLine">
|
||||
<ChangeType>SmallChange</ChangeType>
|
||||
<ChangeValue>-1</ChangeValue>
|
||||
</Button>
|
||||
<Button class="FarPoint.Win.Spread.FpScrollBarComboThumb">
|
||||
<TrackBackward class="FarPoint.Win.Spread.FpScrollBarTrackBackward">
|
||||
<ChangeType>LargeChange</ChangeType>
|
||||
<ChangeValue>-1</ChangeValue>
|
||||
</TrackBackward>
|
||||
<Thumb class="FarPoint.Win.Spread.FpScrollBarThumb">
|
||||
<Gripper class="FarPoint.Win.Spread.FpScrollBarGripper" />
|
||||
</Thumb>
|
||||
<TrackForward class="FarPoint.Win.Spread.FpScrollBarTrackForward">
|
||||
<ChangeType>LargeChange</ChangeType>
|
||||
<ChangeValue>1</ChangeValue>
|
||||
</TrackForward>
|
||||
</Button>
|
||||
<Button class="FarPoint.Win.Spread.FpScrollBarButtonForwardLine">
|
||||
<ChangeType>SmallChange</ChangeType>
|
||||
<ChangeValue>1</ChangeValue>
|
||||
</Button>
|
||||
</Buttons>
|
||||
<VisualStyles>Auto</VisualStyles>
|
||||
<Renderer />
|
||||
</HorizontalScrollBar>
|
||||
<VerticalScrollBar class="FarPoint.Win.Spread.SpreadVScrollBar" assembly="FarPoint.Win.Spread">
|
||||
<Buttons class="FarPoint.Win.Spread.FpScrollBarButtonCollection">
|
||||
<Button class="FarPoint.Win.Spread.FpScrollBarButtonBackwardLine">
|
||||
<ChangeType>SmallChange</ChangeType>
|
||||
<ChangeValue>-1</ChangeValue>
|
||||
</Button>
|
||||
<Button class="FarPoint.Win.Spread.FpScrollBarComboThumb">
|
||||
<TrackBackward class="FarPoint.Win.Spread.FpScrollBarTrackBackward">
|
||||
<ChangeType>LargeChange</ChangeType>
|
||||
<ChangeValue>-1</ChangeValue>
|
||||
</TrackBackward>
|
||||
<Thumb class="FarPoint.Win.Spread.FpScrollBarThumb">
|
||||
<Gripper class="FarPoint.Win.Spread.FpScrollBarGripper" />
|
||||
</Thumb>
|
||||
<TrackForward class="FarPoint.Win.Spread.FpScrollBarTrackForward">
|
||||
<ChangeType>LargeChange</ChangeType>
|
||||
<ChangeValue>1</ChangeValue>
|
||||
</TrackForward>
|
||||
</Button>
|
||||
<Button class="FarPoint.Win.Spread.FpScrollBarButtonForwardLine">
|
||||
<ChangeType>SmallChange</ChangeType>
|
||||
<ChangeValue>1</ChangeValue>
|
||||
</Button>
|
||||
</Buttons>
|
||||
<VisualStyles>Auto</VisualStyles>
|
||||
<Renderer />
|
||||
</VerticalScrollBar>
|
||||
<StatusBar class="FarPoint.Win.Spread.FpStatusBar" assembly="FarPoint.Win.Spread">
|
||||
<Element class="FarPoint.Win.Spread.FpStatusBarAverageElement">
|
||||
<Visible>True</Visible>
|
||||
<Text>평균</Text>
|
||||
<MenuText>평균(&A)</MenuText>
|
||||
<Align>Right</Align>
|
||||
</Element>
|
||||
<Element class="FarPoint.Win.Spread.FpStatusBarCountElement">
|
||||
<Visible>True</Visible>
|
||||
<Text>개수</Text>
|
||||
<MenuText>개수(&C)</MenuText>
|
||||
<Align>Right</Align>
|
||||
</Element>
|
||||
<Element class="FarPoint.Win.Spread.FpStatusBarNumericalCountElement">
|
||||
<Visible>False</Visible>
|
||||
<Text>숫자 세기</Text>
|
||||
<MenuText>숫자세기(&T)</MenuText>
|
||||
<Align>Right</Align>
|
||||
</Element>
|
||||
<Element class="FarPoint.Win.Spread.FpStatusBarMinElement">
|
||||
<Visible>False</Visible>
|
||||
<Text>최소값</Text>
|
||||
<MenuText>최소값(&I)</MenuText>
|
||||
<Align>Right</Align>
|
||||
</Element>
|
||||
<Element class="FarPoint.Win.Spread.FpStatusBarMaxElement">
|
||||
<Visible>False</Visible>
|
||||
<Text>최대값</Text>
|
||||
<MenuText>최대값(&X)</MenuText>
|
||||
<Align>Right</Align>
|
||||
</Element>
|
||||
<Element class="FarPoint.Win.Spread.FpStatusBarSumElement">
|
||||
<Visible>True</Visible>
|
||||
<Text>합계</Text>
|
||||
<MenuText>합계</MenuText>
|
||||
<Align>Right</Align>
|
||||
</Element>
|
||||
<Element class="FarPoint.Win.Spread.ZoomSliderStatusBarElement">
|
||||
<Visible>True</Visible>
|
||||
<Text />
|
||||
<MenuText>확대/축소 슬라이더(&Z)</MenuText>
|
||||
<Align>Right</Align>
|
||||
</Element>
|
||||
<Element class="FarPoint.Win.Spread.ZoomStatusBarElement">
|
||||
<Visible>True</Visible>
|
||||
<Text />
|
||||
<MenuText>확대/축소(&Z)</MenuText>
|
||||
<Align>Right</Align>
|
||||
</Element>
|
||||
<Skin class="FarPoint.Win.Spread.StatusBarSkin">
|
||||
<name>Default</name>
|
||||
<backcolor>White</backcolor>
|
||||
<forecolor>Black</forecolor>
|
||||
<zoomButtonHoverColor>#ffcdcdcd</zoomButtonHoverColor>
|
||||
<zoomslidercolor>#ffa6a6a6</zoomslidercolor>
|
||||
<zoomsliderhovercolor>#ffcdcdcd</zoomsliderhovercolor>
|
||||
<zoomslidertrackcolor>#ffa6a6a6</zoomslidertrackcolor>
|
||||
<font>
|
||||
<Name>Microsoft Sans Serif</Name>
|
||||
<Size>8.25</Size>
|
||||
<Bold>False</Bold>
|
||||
<CharSet>1</CharSet>
|
||||
<Italic>False</Italic>
|
||||
<Strikeout>False</Strikeout>
|
||||
<Underline>False</Underline>
|
||||
<Unit>Point</Unit>
|
||||
<Vertical>False</Vertical>
|
||||
</font>
|
||||
</Skin>
|
||||
<EnableContextMenu>True</EnableContextMenu>
|
||||
</StatusBar>
|
||||
<TitleInfo class="FarPoint.Win.Spread.TitleInfo" assembly="FarPoint.Win.Spread">
|
||||
<BackColor>#ffe7eff7</BackColor>
|
||||
</TitleInfo>
|
||||
<TabStripInsertTabImage type="Image"></TabStripInsertTabImage>
|
||||
<DocumentProperties>
|
||||
<Created>0001-01-01T00:00:00.000</Created>
|
||||
<LastModified>0001-01-01T00:00:00.000</LastModified>
|
||||
<Revision>0</Revision>
|
||||
</DocumentProperties>
|
||||
</RootWorkbook>
|
||||
<Sheets>
|
||||
<Sheet index="0" class="FarPoint.Win.Spread.SheetView">
|
||||
<SheetName>Sheet1</SheetName>
|
||||
<TitleInfo class="FarPoint.Win.Spread.TitleInfo">
|
||||
<BackColor>#ffe7eff7</BackColor>
|
||||
</TitleInfo>
|
||||
<Categories>
|
||||
<Appearance>
|
||||
<GroupBarInfo class="FarPoint.Win.Spread.GroupBarInfo" />
|
||||
</Appearance>
|
||||
<Behavior>
|
||||
<DataAutoSizeColumns>False</DataAutoSizeColumns>
|
||||
</Behavior>
|
||||
<Appearance />
|
||||
<Behavior />
|
||||
<Layout>
|
||||
<ColumnCount>10</ColumnCount>
|
||||
<RowCount>0</RowCount>
|
||||
<ActiveColumnIndex>-1</ActiveColumnIndex>
|
||||
<ActiveRowIndex>-1</ActiveRowIndex>
|
||||
</Layout>
|
||||
<Appearance>
|
||||
<ScrollingContentInfo class="FarPoint.Win.Spread.ScrollingContentInfo" />
|
||||
<PreviewRowInfo class="FarPoint.Win.Spread.PreviewRowInfo" />
|
||||
</Appearance>
|
||||
</Categories>
|
||||
<SelectionModel class="FarPoint.Win.Spread.Model.DefaultSheetSelectionModel">
|
||||
<CellRange Row="-1" Column="3" RowCount="-1" ColumnCount="1" />
|
||||
<AnchorColumn>3</AnchorColumn>
|
||||
</SelectionModel>
|
||||
</Sheet>
|
||||
</Sheets>
|
||||
</Settings>
|
||||
<!--Styles Section - This section contains the workbook and sheet named style collections.-->
|
||||
<Styles>
|
||||
<NamedStyles class="FarPoint.Win.Spread.NamedStyleCollection" />
|
||||
</Styles>
|
||||
<!--Presentation Section - This section contains the column and row properties, cell spans, and the sheet, column, row, and cell styles.-->
|
||||
<Presentation>
|
||||
<Font>
|
||||
<Name>맑은 고딕</Name>
|
||||
<Size>9</Size>
|
||||
<Bold>False</Bold>
|
||||
<CharSet>1</CharSet>
|
||||
<Italic>False</Italic>
|
||||
<Strikeout>False</Strikeout>
|
||||
<Underline>False</Underline>
|
||||
<Unit>Point</Unit>
|
||||
<Vertical>False</Vertical>
|
||||
</Font>
|
||||
<Sheets>
|
||||
<Sheet index="0">
|
||||
<ViewportInfo>
|
||||
<RowPaneCount>1</RowPaneCount>
|
||||
<ColumnPaneCount>1</ColumnPaneCount>
|
||||
<ActiveRowPane>0</ActiveRowPane>
|
||||
<ActiveColumnPane>0</ActiveColumnPane>
|
||||
<RowPanes>
|
||||
<RowPane row="0">
|
||||
<TopRow>0</TopRow>
|
||||
<PreferredHeight>-1</PreferredHeight>
|
||||
<TopOffset>0</TopOffset>
|
||||
</RowPane>
|
||||
</RowPanes>
|
||||
<ColumnPanes>
|
||||
<ColumnPane column="0">
|
||||
<LeftColumn>0</LeftColumn>
|
||||
<PreferredWidth>-1</PreferredWidth>
|
||||
<LeftOffset>0</LeftOffset>
|
||||
</ColumnPane>
|
||||
</ColumnPanes>
|
||||
</ViewportInfo>
|
||||
<AxisModels>
|
||||
<Row class="q1" ignoreCreateWorksheet="True" orientation="Vertical" count="0">
|
||||
<Items />
|
||||
</Row>
|
||||
<Column class="q1" ignoreCreateWorksheet="True" orientation="Horizontal" count="10">
|
||||
<Items>
|
||||
<Item startIndex="0" endIndex="2">
|
||||
<Size>113</Size>
|
||||
<BooleanProperties>8</BooleanProperties>
|
||||
<Flags>1</Flags>
|
||||
</Item>
|
||||
<Item startIndex="3" endIndex="3">
|
||||
<Size>70</Size>
|
||||
<BooleanProperties>8</BooleanProperties>
|
||||
<Flags>1</Flags>
|
||||
</Item>
|
||||
<Item startIndex="4" endIndex="9">
|
||||
<Size>113</Size>
|
||||
<BooleanProperties>8</BooleanProperties>
|
||||
<Flags>1</Flags>
|
||||
</Item>
|
||||
</Items>
|
||||
</Column>
|
||||
<RowHeaderColumn class="FarPoint.Win.Spread.Model.DefaultSheetAxisModel" orientation="Horizontal" count="1" defaultSize="35">
|
||||
<Items>
|
||||
<Item index="-1">
|
||||
<_startIndex>-1</_startIndex>
|
||||
<Resizable>False</Resizable>
|
||||
<Size>35</Size>
|
||||
<_endIndex>-1</_endIndex>
|
||||
</Item>
|
||||
</Items>
|
||||
</RowHeaderColumn>
|
||||
<ColumnHeaderRow class="FarPoint.Win.Spread.Model.DefaultSheetAxisModel" orientation="Vertical" count="1">
|
||||
<Items>
|
||||
<Item index="-1">
|
||||
<_startIndex>-1</_startIndex>
|
||||
<Resizable>False</Resizable>
|
||||
<_endIndex>-1</_endIndex>
|
||||
</Item>
|
||||
<Item index="0">
|
||||
<_startIndex>-1</_startIndex>
|
||||
<Size>28</Size>
|
||||
<_endIndex>-1</_endIndex>
|
||||
</Item>
|
||||
</Items>
|
||||
</ColumnHeaderRow>
|
||||
<ColumnFooterRow class="FarPoint.Win.Spread.Model.DefaultSheetAxisModel" orientation="Vertical" count="1">
|
||||
<Items>
|
||||
<Item index="-1">
|
||||
<_startIndex>-1</_startIndex>
|
||||
<Resizable>False</Resizable>
|
||||
<_endIndex>-1</_endIndex>
|
||||
</Item>
|
||||
</Items>
|
||||
</ColumnFooterRow>
|
||||
</AxisModels>
|
||||
<StyleModels>
|
||||
<RowHeader class="FarPoint.Win.Spread.Model.DefaultSheetStyleModel" Rows="0" Columns="1">
|
||||
<AltRowCount>2</AltRowCount>
|
||||
<DefaultStyle class="FarPoint.Win.Spread.StyleInfo" Parent="RowHeaderDefaultEnhanced" />
|
||||
<ConditionalFormatCollections />
|
||||
</RowHeader>
|
||||
<ColumnHeader class="FarPoint.Win.Spread.Model.DefaultSheetStyleModel" Rows="1" Columns="10">
|
||||
<AltRowCount>2</AltRowCount>
|
||||
<DefaultStyle class="FarPoint.Win.Spread.StyleInfo" Parent="ColumnHeaderDefaultEnhanced" />
|
||||
<ConditionalFormatCollections />
|
||||
</ColumnHeader>
|
||||
<ColumnFooter class="FarPoint.Win.Spread.Model.DefaultSheetStyleModel" Rows="1" Columns="10">
|
||||
<AltRowCount>2</AltRowCount>
|
||||
<DefaultStyle class="FarPoint.Win.Spread.StyleInfo" Parent="ColumnHeaderDefaultEnhanced" />
|
||||
<ConditionalFormatCollections />
|
||||
</ColumnFooter>
|
||||
<DataArea class="qd" ignoreCreateWorksheet="True" Rows="0" Columns="10">
|
||||
<AltRowCount>2</AltRowCount>
|
||||
<DefaultStyle class="FarPoint.Win.Spread.StyleInfo" Parent="DataAreaDefault" />
|
||||
<NamedStyles class="FarPoint.Win.Spread.NamedStyleCollection">
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="12">
|
||||
<CellType class="FarPoint.Win.Spread.CellType.TextCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<CharacterCasing>Normal</CharacterCasing>
|
||||
<MaxLength>255</MaxLength>
|
||||
<Multiline>False</Multiline>
|
||||
<ScrollBars>None</ScrollBars>
|
||||
<CharacterSet>Ascii</CharacterSet>
|
||||
<HotkeyPrefix>None</HotkeyPrefix>
|
||||
</CellType>
|
||||
<HorizontalAlignment>Center</HorizontalAlignment>
|
||||
<VerticalAlignment>Center</VerticalAlignment>
|
||||
</NamedStyle>
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="1">
|
||||
<CellType class="FarPoint.Win.Spread.CellType.TextCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<CharacterCasing>Normal</CharacterCasing>
|
||||
<MaxLength>255</MaxLength>
|
||||
<Multiline>False</Multiline>
|
||||
<ScrollBars>None</ScrollBars>
|
||||
<CharacterSet>Ascii</CharacterSet>
|
||||
<HotkeyPrefix>None</HotkeyPrefix>
|
||||
</CellType>
|
||||
<HorizontalAlignment>Center</HorizontalAlignment>
|
||||
<VerticalAlignment>Center</VerticalAlignment>
|
||||
</NamedStyle>
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="3">
|
||||
<CellType class="FarPoint.Win.Spread.CellType.TextCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<CharacterCasing>Normal</CharacterCasing>
|
||||
<MaxLength>255</MaxLength>
|
||||
<Multiline>False</Multiline>
|
||||
<ScrollBars>None</ScrollBars>
|
||||
<CharacterSet>Ascii</CharacterSet>
|
||||
<HotkeyPrefix>None</HotkeyPrefix>
|
||||
</CellType>
|
||||
<HorizontalAlignment>Left</HorizontalAlignment>
|
||||
<VerticalAlignment>Center</VerticalAlignment>
|
||||
</NamedStyle>
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="10">
|
||||
<CellType class="FarPoint.Win.Spread.CellType.TextCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<CharacterCasing>Normal</CharacterCasing>
|
||||
<MaxLength>255</MaxLength>
|
||||
<Multiline>False</Multiline>
|
||||
<ScrollBars>None</ScrollBars>
|
||||
<CharacterSet>Ascii</CharacterSet>
|
||||
<HotkeyPrefix>None</HotkeyPrefix>
|
||||
</CellType>
|
||||
</NamedStyle>
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="4">
|
||||
<CellType class="FarPoint.Win.Spread.CellType.TextCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<CharacterCasing>Normal</CharacterCasing>
|
||||
<MaxLength>255</MaxLength>
|
||||
<Multiline>False</Multiline>
|
||||
<ScrollBars>None</ScrollBars>
|
||||
<CharacterSet>Ascii</CharacterSet>
|
||||
<HotkeyPrefix>None</HotkeyPrefix>
|
||||
</CellType>
|
||||
<HorizontalAlignment>Center</HorizontalAlignment>
|
||||
<VerticalAlignment>Center</VerticalAlignment>
|
||||
</NamedStyle>
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="5">
|
||||
<CellType class="FarPoint.Win.Spread.CellType.TextCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<CharacterCasing>Normal</CharacterCasing>
|
||||
<MaxLength>255</MaxLength>
|
||||
<Multiline>False</Multiline>
|
||||
<ScrollBars>None</ScrollBars>
|
||||
<CharacterSet>Ascii</CharacterSet>
|
||||
<HotkeyPrefix>None</HotkeyPrefix>
|
||||
</CellType>
|
||||
<HorizontalAlignment>Center</HorizontalAlignment>
|
||||
<VerticalAlignment>Center</VerticalAlignment>
|
||||
</NamedStyle>
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="6">
|
||||
<BackColor>#ffe0e0e0</BackColor>
|
||||
<CellType class="FarPoint.Win.Spread.CellType.TextCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<CharacterCasing>Normal</CharacterCasing>
|
||||
<MaxLength>255</MaxLength>
|
||||
<Multiline>False</Multiline>
|
||||
<ScrollBars>None</ScrollBars>
|
||||
<CharacterSet>Ascii</CharacterSet>
|
||||
<HotkeyPrefix>None</HotkeyPrefix>
|
||||
</CellType>
|
||||
<HorizontalAlignment>Center</HorizontalAlignment>
|
||||
<VerticalAlignment>Center</VerticalAlignment>
|
||||
</NamedStyle>
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="7">
|
||||
<BackColor>#ffe0e0e0</BackColor>
|
||||
<CellType class="FarPoint.Win.Spread.CellType.TextCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<CharacterCasing>Normal</CharacterCasing>
|
||||
<MaxLength>255</MaxLength>
|
||||
<Multiline>False</Multiline>
|
||||
<ScrollBars>None</ScrollBars>
|
||||
<CharacterSet>Ascii</CharacterSet>
|
||||
<HotkeyPrefix>None</HotkeyPrefix>
|
||||
</CellType>
|
||||
<HorizontalAlignment>Center</HorizontalAlignment>
|
||||
<VerticalAlignment>Center</VerticalAlignment>
|
||||
</NamedStyle>
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="8">
|
||||
<BackColor>#ffe0e0e0</BackColor>
|
||||
<CellType class="FarPoint.Win.Spread.CellType.TextCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<CharacterCasing>Normal</CharacterCasing>
|
||||
<MaxLength>255</MaxLength>
|
||||
<Multiline>False</Multiline>
|
||||
<ScrollBars>None</ScrollBars>
|
||||
<CharacterSet>Ascii</CharacterSet>
|
||||
<HotkeyPrefix>None</HotkeyPrefix>
|
||||
</CellType>
|
||||
<HorizontalAlignment>Center</HorizontalAlignment>
|
||||
<VerticalAlignment>Center</VerticalAlignment>
|
||||
</NamedStyle>
|
||||
<NamedStyle class="FarPoint.Win.Spread.NamedStyle" Name="9">
|
||||
<CellType class="FarPoint.Win.Spread.CellType.TextCellType">
|
||||
<TextAdjustmentSpacing>-1</TextAdjustmentSpacing>
|
||||
<StringTrim>None</StringTrim>
|
||||
<CharacterCasing>Normal</CharacterCasing>
|
||||
<MaxLength>255</MaxLength>
|
||||
<Multiline>False</Multiline>
|
||||
<ScrollBars>None</ScrollBars>
|
||||
<CharacterSet>Ascii</CharacterSet>
|
||||
<HotkeyPrefix>None</HotkeyPrefix>
|
||||
</CellType>
|
||||
<HorizontalAlignment>Left</HorizontalAlignment>
|
||||
<VerticalAlignment>Center</VerticalAlignment>
|
||||
</NamedStyle>
|
||||
</NamedStyles><ColumnStyles><ColumnStyle Index="0" Name="12" /><ColumnStyle Index="1" Name="1" /><ColumnStyle Index="2" Name="3" /><ColumnStyle Index="3" Name="10" /><ColumnStyle Index="4" Name="4" /><ColumnStyle Index="5" Name="5" /><ColumnStyle Index="6" Name="6" /><ColumnStyle Index="7" Name="7" /><ColumnStyle Index="8" Name="8" /><ColumnStyle Index="9" Name="9" /></ColumnStyles><ConditionalFormatCollections /></DataArea>
|
||||
<SheetCorner class="FarPoint.Win.Spread.Model.DefaultSheetStyleModel" Rows="1" Columns="1">
|
||||
<AltRowCount>2</AltRowCount>
|
||||
<DefaultStyle class="FarPoint.Win.Spread.StyleInfo" Parent="CornerDefaultEnhanced" />
|
||||
<ConditionalFormatCollections />
|
||||
</SheetCorner>
|
||||
</StyleModels>
|
||||
<SheetCornerStyle class="FarPoint.Win.Spread.NamedStyle" Parent="CornerDefaultEnhanced" />
|
||||
<ColumnFooterSheetCornerStyle class="FarPoint.Win.Spread.NamedStyle" Parent="CornerFooterDefaultEnhanced" />
|
||||
<Notes class="FarPoint.Win.Spread.DrawingSpace.SpreadNotesContainer">
|
||||
<Top>0</Top>
|
||||
<Left>0</Left>
|
||||
<Height>800</Height>
|
||||
<Width>904</Width>
|
||||
<Name>spreadNotesContainer</Name>
|
||||
<Text />
|
||||
<ForeColor>ControlText</ForeColor>
|
||||
<BackColor>Transparent</BackColor>
|
||||
<AlignHorz>Center</AlignHorz>
|
||||
<AlignVert>Center</AlignVert>
|
||||
<AlphaBlendBackColor>255</AlphaBlendBackColor>
|
||||
<Font />
|
||||
<PictureTransparencyColor>Empty</PictureTransparencyColor>
|
||||
<PictureTransparencyTolerance>0</PictureTransparencyTolerance>
|
||||
<ShapeOutlineColor>Black</ShapeOutlineColor>
|
||||
<ShapeOutlineThickness>1</ShapeOutlineThickness>
|
||||
<ShapeOutlineStyle>Solid</ShapeOutlineStyle>
|
||||
<RotationAngle>0</RotationAngle>
|
||||
<PictureRotationAngle>0</PictureRotationAngle>
|
||||
<TextRotationAngle>0</TextRotationAngle>
|
||||
<Anchor>0</Anchor>
|
||||
<Locked>False</Locked>
|
||||
<CanRotate>True</CanRotate>
|
||||
<CanPrint>True</CanPrint>
|
||||
<SizeProportional>False</SizeProportional>
|
||||
<Selectable>True</Selectable>
|
||||
<FlipHorizontal>False</FlipHorizontal>
|
||||
<FlipVertical>False</FlipVertical>
|
||||
<TextOrientation>TextRotateCustom</TextOrientation>
|
||||
<CanMove>None</CanMove>
|
||||
<CanSize>None</CanSize>
|
||||
<Gradient class="FarPoint.Win.Spread.DrawingSpace.PSGradient" assembly="FarPoint.Win.Spread, Version=11.40.20177.0, Culture=neutral, PublicKeyToken=327c3516b1b18457">
|
||||
<GradientStyle>None</GradientStyle>
|
||||
<GradientSections>
|
||||
<GradientSection class="FarPoint.Win.Spread.DrawingSpace.GradientSection">
|
||||
<Amount>0</Amount>
|
||||
<Color>#ffffffff</Color>
|
||||
</GradientSection>
|
||||
<GradientSection class="FarPoint.Win.Spread.DrawingSpace.GradientSection">
|
||||
<Amount>0</Amount>
|
||||
<Color>#ffffffff</Color>
|
||||
</GradientSection>
|
||||
</GradientSections>
|
||||
</Gradient>
|
||||
<EndOfProps />
|
||||
<AllowNoteEdit>True</AllowNoteEdit>
|
||||
</Notes>
|
||||
<FilterBarHeaderStyle class="FarPoint.Win.Spread.NamedStyle" Parent="RowHeaderDefaultEnhanced" />
|
||||
<FilterBar class="FarPoint.Win.Spread.FilterBar">
|
||||
<Height>22</Height>
|
||||
<Style class="FarPoint.Win.Spread.Model.DefaultSheetStyleModel" Rows="1" Columns="10">
|
||||
<AltRowCount>2</AltRowCount>
|
||||
<DefaultStyle class="FarPoint.Win.Spread.StyleInfo" Parent="FilterBarDefaultEnhanced" />
|
||||
<ConditionalFormatCollections />
|
||||
</Style>
|
||||
</FilterBar>
|
||||
</Sheet>
|
||||
</Sheets>
|
||||
</Presentation>
|
||||
<!--Drawing Section - This section contains the drawing objects and their properties.-->
|
||||
<Drawing>
|
||||
<Sheets>
|
||||
<Sheet index="0">
|
||||
<DrawingContainer class="FarPoint.Win.Spread.DrawingSpace.SpreadShapesContainer">
|
||||
<Top>0</Top>
|
||||
<Left>0</Left>
|
||||
<Height>800</Height>
|
||||
<Width>904</Width>
|
||||
<Name>spreadShapesContainer</Name>
|
||||
<Text />
|
||||
<ForeColor>ControlText</ForeColor>
|
||||
<BackColor>Transparent</BackColor>
|
||||
<AlignHorz>Center</AlignHorz>
|
||||
<AlignVert>Center</AlignVert>
|
||||
<AlphaBlendBackColor>255</AlphaBlendBackColor>
|
||||
<Font />
|
||||
<PictureTransparencyColor>Empty</PictureTransparencyColor>
|
||||
<PictureTransparencyTolerance>0</PictureTransparencyTolerance>
|
||||
<ShapeOutlineColor>Black</ShapeOutlineColor>
|
||||
<ShapeOutlineThickness>1</ShapeOutlineThickness>
|
||||
<ShapeOutlineStyle>Solid</ShapeOutlineStyle>
|
||||
<RotationAngle>0</RotationAngle>
|
||||
<PictureRotationAngle>0</PictureRotationAngle>
|
||||
<TextRotationAngle>0</TextRotationAngle>
|
||||
<Anchor>0</Anchor>
|
||||
<Locked>False</Locked>
|
||||
<CanRotate>True</CanRotate>
|
||||
<CanPrint>True</CanPrint>
|
||||
<SizeProportional>False</SizeProportional>
|
||||
<Selectable>True</Selectable>
|
||||
<FlipHorizontal>False</FlipHorizontal>
|
||||
<FlipVertical>False</FlipVertical>
|
||||
<TextOrientation>TextRotateCustom</TextOrientation>
|
||||
<CanMove>None</CanMove>
|
||||
<CanSize>None</CanSize>
|
||||
<EndOfProps />
|
||||
</DrawingContainer>
|
||||
<SparklineContainer class="FarPoint.Win.Spread.DefaultSparklineContainer" />
|
||||
</Sheet>
|
||||
</Sheets>
|
||||
</Drawing>
|
||||
<!--Data Section - This section contains the sheet data.-->
|
||||
<Data>
|
||||
<EnableCrossSheetReference>True</EnableCrossSheetReference>
|
||||
<Sheets>
|
||||
<Sheet index="0">
|
||||
<DataArea class="rc" rows="0" columns="10">
|
||||
<AutoCalculation>True</AutoCalculation>
|
||||
<AutoGenerateColumns>False</AutoGenerateColumns>
|
||||
<ReferenceStyle>A1</ReferenceStyle>
|
||||
<Iteration>False</Iteration>
|
||||
<MaximumIterations>1</MaximumIterations>
|
||||
<MaximumChange>0.001</MaximumChange>
|
||||
<UnBoundNewRowIndex>-1</UnBoundNewRowIndex>
|
||||
<SheetName>Sheet1</SheetName>
|
||||
<Columns>
|
||||
<Column index="0">
|
||||
<ColumnInfo>
|
||||
<ColumnName>pdate</ColumnName>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
<Column index="1">
|
||||
<ColumnInfo>
|
||||
<ColumnName>statusName</ColumnName>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
<Column index="2">
|
||||
<ColumnInfo>
|
||||
<ColumnName>name</ColumnName>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
<Column index="3">
|
||||
<ColumnInfo>
|
||||
<ColumnName>usermain</ColumnName>
|
||||
<DataType>mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:System.String</DataType>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
<Column index="4">
|
||||
<ColumnInfo>
|
||||
<ColumnName>request</ColumnName>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
<Column index="5">
|
||||
<ColumnInfo>
|
||||
<ColumnName>reqstaff</ColumnName>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
<Column index="6">
|
||||
<ColumnInfo>
|
||||
<ColumnName>sdate</ColumnName>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
<Column index="7">
|
||||
<ColumnInfo>
|
||||
<ColumnName>edate</ColumnName>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
<Column index="8">
|
||||
<ColumnInfo>
|
||||
<ColumnName>odate</ColumnName>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
<Column index="9">
|
||||
<ColumnInfo>
|
||||
<ColumnName>memo</ColumnName>
|
||||
</ColumnInfo>
|
||||
</Column>
|
||||
</Columns>
|
||||
<Cells />
|
||||
<UnionedChangeCellRange>True</UnionedChangeCellRange>
|
||||
</DataArea>
|
||||
<RowHeader class="FarPoint.Win.Spread.Model.DefaultSheetDataModel" rows="0" columns="1">
|
||||
<AutoCalculation>True</AutoCalculation>
|
||||
<AutoGenerateColumns>True</AutoGenerateColumns>
|
||||
<ReferenceStyle>A1</ReferenceStyle>
|
||||
<Iteration>False</Iteration>
|
||||
<MaximumIterations>1</MaximumIterations>
|
||||
<MaximumChange>0.001</MaximumChange>
|
||||
<UnBoundNewRowIndex>-1</UnBoundNewRowIndex>
|
||||
<UnionedChangeCellRange>True</UnionedChangeCellRange>
|
||||
</RowHeader>
|
||||
<ColumnHeader class="FarPoint.Win.Spread.Model.DefaultSheetDataModel" rows="1" columns="10">
|
||||
<AutoCalculation>True</AutoCalculation>
|
||||
<AutoGenerateColumns>True</AutoGenerateColumns>
|
||||
<ReferenceStyle>A1</ReferenceStyle>
|
||||
<Iteration>False</Iteration>
|
||||
<MaximumIterations>1</MaximumIterations>
|
||||
<MaximumChange>0.001</MaximumChange>
|
||||
<UnBoundNewRowIndex>-1</UnBoundNewRowIndex>
|
||||
<Cells>
|
||||
<Cell row="0" column="0">
|
||||
<Data type="System.String">Date</Data>
|
||||
</Cell>
|
||||
<Cell row="0" column="1">
|
||||
<Data type="System.String">Stat</Data>
|
||||
</Cell>
|
||||
<Cell row="0" column="2">
|
||||
<Data type="System.String">Title</Data>
|
||||
</Cell>
|
||||
<Cell row="0" column="3">
|
||||
<Data type="System.String">User</Data>
|
||||
</Cell>
|
||||
<Cell row="0" column="4">
|
||||
<Data type="System.String">Req.Dept</Data>
|
||||
</Cell>
|
||||
<Cell row="0" column="5">
|
||||
<Data type="System.String">Req.Staff</Data>
|
||||
</Cell>
|
||||
<Cell row="0" column="6">
|
||||
<Data type="System.String">Start</Data>
|
||||
</Cell>
|
||||
<Cell row="0" column="7">
|
||||
<Data type="System.String">End</Data>
|
||||
</Cell>
|
||||
<Cell row="0" column="8">
|
||||
<Data type="System.String">Release</Data>
|
||||
</Cell>
|
||||
</Cells>
|
||||
<UnionedChangeCellRange>True</UnionedChangeCellRange>
|
||||
</ColumnHeader>
|
||||
<ColumnFooter class="FarPoint.Win.Spread.Model.AggregationDataModel">
|
||||
<ModelChangeEventSuspended>False</ModelChangeEventSuspended>
|
||||
<Model class="rc" rows="1" columns="10">
|
||||
<AutoCalculation>True</AutoCalculation>
|
||||
<AutoGenerateColumns>True</AutoGenerateColumns>
|
||||
<ReferenceStyle>A1</ReferenceStyle>
|
||||
<Iteration>False</Iteration>
|
||||
<MaximumIterations>1</MaximumIterations>
|
||||
<MaximumChange>0.001</MaximumChange>
|
||||
<UnBoundNewRowIndex>-1</UnBoundNewRowIndex>
|
||||
<UnionedChangeCellRange>True</UnionedChangeCellRange>
|
||||
</Model>
|
||||
</ColumnFooter>
|
||||
<RangeGroupModel class="r9">
|
||||
<outlineOptions>SummaryBelow, SummaryRight</outlineOptions>
|
||||
<ignoreCreateWorksheet>True</ignoreCreateWorksheet>
|
||||
</RangeGroupModel>
|
||||
<SheetCornerDataModel class="FarPoint.Win.Spread.Model.DefaultSheetDataModel" rows="1" columns="1">
|
||||
<AutoCalculation>True</AutoCalculation>
|
||||
<AutoGenerateColumns>True</AutoGenerateColumns>
|
||||
<ReferenceStyle>A1</ReferenceStyle>
|
||||
<Iteration>False</Iteration>
|
||||
<MaximumIterations>1</MaximumIterations>
|
||||
<MaximumChange>0.001</MaximumChange>
|
||||
<UnBoundNewRowIndex>-1</UnBoundNewRowIndex>
|
||||
<UnionedChangeCellRange>True</UnionedChangeCellRange>
|
||||
</SheetCornerDataModel>
|
||||
</Sheet>
|
||||
</Sheets>
|
||||
</Data>
|
||||
</Spread>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,24 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
|
||||
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
|
||||
</configSections>
|
||||
<connectionStrings>
|
||||
<add name="JobReportMailService.Properties.Settings.CS" connectionString="Data Source=10.131.15.18;Initial Catalog=EE;Persist Security Info=True;User ID=eeuser;Password=Amkor123!" providerName="System.Data.SqlClient" />
|
||||
<add name="EEEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string="data source=10.131.15.18;initial catalog=EE;persist security info=True;user id=eeuser;password=Amkor123!;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
|
||||
</connectionStrings>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
|
||||
</startup>
|
||||
<entityFramework>
|
||||
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
|
||||
<parameters>
|
||||
<parameter value="mssqllocaldb" />
|
||||
</parameters>
|
||||
</defaultConnectionFactory>
|
||||
<providers>
|
||||
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
|
||||
</providers>
|
||||
</entityFramework>
|
||||
</configuration>
|
||||
@@ -1,24 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
public class CSetting : arUtil.Setting
|
||||
{
|
||||
// public string connstr { get; set; }
|
||||
public Boolean autoRun { get; set; }
|
||||
public Boolean autoRunData { get; set; }
|
||||
public override void AfterLoad()
|
||||
{
|
||||
//throw new NotImplementedException();
|
||||
//if (connstr == "")
|
||||
// connstr = "Data Source=10.131.15.18;Initial Catalog=EE;Persist Security Info=True;User ID=eeuser;Password=Amkor123!";
|
||||
}
|
||||
public override void AfterSave()
|
||||
{
|
||||
//throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
15011
JobReportMailService/DataSet1.Designer.cs
generated
15011
JobReportMailService/DataSet1.Designer.cs
generated
File diff suppressed because it is too large
Load Diff
@@ -1,37 +0,0 @@
|
||||
namespace JobReportMailService
|
||||
{
|
||||
}
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
}
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
}
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
}
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
}
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
}
|
||||
namespace JobReportMailService
|
||||
{
|
||||
|
||||
|
||||
public partial class DataSet1
|
||||
{
|
||||
}
|
||||
}
|
||||
namespace JobReportMailService {
|
||||
|
||||
|
||||
public partial class DataSet1 {
|
||||
}
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--<autogenerated>
|
||||
This code was generated by a tool.
|
||||
Changes to this file may cause incorrect behavior and will be lost if
|
||||
the code is regenerated.
|
||||
</autogenerated>-->
|
||||
<DataSetUISetting Version="1.00" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
|
||||
<TableUISettings />
|
||||
</DataSetUISetting>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,21 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--<autogenerated>
|
||||
This code was generated by a tool to store the dataset designer's layout information.
|
||||
Changes to this file may cause incorrect behavior and will be lost if
|
||||
the code is regenerated.
|
||||
</autogenerated>-->
|
||||
<DiagramLayout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ex:showrelationlabel="False" ViewPortX="-13" ViewPortY="-26" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
|
||||
<Shapes>
|
||||
<Shape ID="DesignTable:MailAuto" ZOrder="9" X="308" Y="320" Height="324" Width="252" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
|
||||
<Shape ID="DesignTable:MailData" ZOrder="8" X="-3" Y="357" Height="381" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
|
||||
<Shape ID="DesignTable:MailForm" ZOrder="10" X="311" Y="655" Height="305" Width="253" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
|
||||
<Shape ID="DesignTable:vMailingProjectSchedule" ZOrder="4" X="312" Y="0" Height="305" Width="289" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
|
||||
<Shape ID="DesignTable:vJobReportForUser" ZOrder="7" X="3" Y="747" Height="153" Width="290" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="102" />
|
||||
<Shape ID="DesignTable:vJobReportUserList" ZOrder="1" X="635" Y="31" Height="207" Width="158" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="137" />
|
||||
<Shape ID="DesignTable:JobReport" ZOrder="6" X="0" Y="0" Height="324" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
|
||||
<Shape ID="DesignTable:HolidayLIst" ZOrder="5" X="1" Y="909" Height="191" Width="295" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="140" />
|
||||
<Shape ID="DesignTable:vGroupUser" ZOrder="3" X="313" Y="969" Height="172" Width="269" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="121" />
|
||||
<Shape ID="DesignTable:JobReportDateList" ZOrder="2" X="575" Y="346" Height="115" Width="212" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="64" />
|
||||
</Shapes>
|
||||
<Connectors />
|
||||
</DiagramLayout>
|
||||
@@ -1,35 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 이 코드는 템플릿에서 생성되었습니다.
|
||||
//
|
||||
// 이 파일을 수동으로 변경하면 응용 프로그램에서 예기치 않은 동작이 발생할 수 있습니다.
|
||||
// 이 파일을 수동으로 변경하면 코드가 다시 생성될 때 변경 내용을 덮어씁니다.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
public partial class EETGW_ProjectToDo
|
||||
{
|
||||
public int idx { get; set; }
|
||||
public int pidx { get; set; }
|
||||
public Nullable<int> pseq { get; set; }
|
||||
public Nullable<int> sw { get; set; }
|
||||
public Nullable<int> ww { get; set; }
|
||||
public string sort { get; set; }
|
||||
public string cate { get; set; }
|
||||
public string title { get; set; }
|
||||
public string pdate { get; set; }
|
||||
public string edate { get; set; }
|
||||
public Nullable<int> process { get; set; }
|
||||
public string remark { get; set; }
|
||||
public string remark2 { get; set; }
|
||||
public string wuid { get; set; }
|
||||
public System.DateTime wdate { get; set; }
|
||||
public string gcode { get; set; }
|
||||
public Nullable<int> no { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 이 코드는 템플릿에서 생성되었습니다.
|
||||
//
|
||||
// 이 파일을 수동으로 변경하면 응용 프로그램에서 예기치 않은 동작이 발생할 수 있습니다.
|
||||
// 이 파일을 수동으로 변경하면 코드가 다시 생성될 때 변경 내용을 덮어씁니다.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
public partial class EETGW_ProjectsSchedule
|
||||
{
|
||||
public int idx { get; set; }
|
||||
public string gcode { get; set; }
|
||||
public Nullable<int> project { get; set; }
|
||||
public Nullable<int> no { get; set; }
|
||||
public Nullable<int> seq { get; set; }
|
||||
public string title { get; set; }
|
||||
public string cate { get; set; }
|
||||
public string sw { get; set; }
|
||||
public string ew { get; set; }
|
||||
public string swa { get; set; }
|
||||
public string ewa { get; set; }
|
||||
public string uid { get; set; }
|
||||
public string memo { get; set; }
|
||||
public Nullable<int> appoval { get; set; }
|
||||
public Nullable<int> progress { get; set; }
|
||||
public string wuid { get; set; }
|
||||
public System.DateTime wdate { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 이 코드는 템플릿에서 생성되었습니다.
|
||||
//
|
||||
// 이 파일을 수동으로 변경하면 응용 프로그램에서 예기치 않은 동작이 발생할 수 있습니다.
|
||||
// 이 파일을 수동으로 변경하면 코드가 다시 생성될 때 변경 내용을 덮어씁니다.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
public partial class HolidayLIst
|
||||
{
|
||||
public int idx { get; set; }
|
||||
public string pdate { get; set; }
|
||||
public Nullable<bool> free { get; set; }
|
||||
public string memo { get; set; }
|
||||
public string wuid { get; set; }
|
||||
public System.DateTime wdate { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 이 코드는 템플릿에서 생성되었습니다.
|
||||
//
|
||||
// 이 파일을 수동으로 변경하면 응용 프로그램에서 예기치 않은 동작이 발생할 수 있습니다.
|
||||
// 이 파일을 수동으로 변경하면 코드가 다시 생성될 때 변경 내용을 덮어씁니다.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
public partial class JobReport
|
||||
{
|
||||
public int idx { get; set; }
|
||||
public string gcode { get; set; }
|
||||
public string pdate { get; set; }
|
||||
public Nullable<int> pidx { get; set; }
|
||||
public string projectName { get; set; }
|
||||
public string uid { get; set; }
|
||||
public string requestpart { get; set; }
|
||||
public string package { get; set; }
|
||||
public string status { get; set; }
|
||||
public string type { get; set; }
|
||||
public string process { get; set; }
|
||||
public string description { get; set; }
|
||||
public string remark { get; set; }
|
||||
public Nullable<double> hrs { get; set; }
|
||||
public Nullable<double> ot { get; set; }
|
||||
public Nullable<bool> import { get; set; }
|
||||
public string wuid { get; set; }
|
||||
public System.DateTime wdate { get; set; }
|
||||
public string description2 { get; set; }
|
||||
public string tag { get; set; }
|
||||
public Nullable<bool> autoinput { get; set; }
|
||||
public Nullable<System.DateTime> otStart { get; set; }
|
||||
public Nullable<System.DateTime> otEnd { get; set; }
|
||||
public string kisullv { get; set; }
|
||||
public string kisuldiv { get; set; }
|
||||
public Nullable<decimal> kisulamt { get; set; }
|
||||
public Nullable<double> ot2 { get; set; }
|
||||
public string otReason { get; set; }
|
||||
public string otwuid { get; set; }
|
||||
public Nullable<System.DateTime> ottime { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,252 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{DBE5BD4A-09D3-4437-AD6C-81FE270C6458}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>JobReportMailService</RootNamespace>
|
||||
<AssemblyName>JobReportMailService</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<Deterministic>true</Deterministic>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<StartupObject />
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="ArSetting.Net4">
|
||||
<HintPath>..\DLL\ArSetting.Net4.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DevExpress.Data.v20.2, Version=20.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.Xpo.v20.2, Version=20.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.SqlServer.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="System.Security" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="CSetting.cs" />
|
||||
<Compile Include="DataSet1.cs">
|
||||
<DependentUpon>DataSet1.xsd</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="DataSet1.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>DataSet1.xsd</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="EETGW_ProjectsSchedule.cs">
|
||||
<DependentUpon>Model1.tt</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="EETGW_ProjectToDo.cs">
|
||||
<DependentUpon>Model1.tt</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="fChildBase.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="fChildBase.Designer.cs">
|
||||
<DependentUpon>fChildBase.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="fNoScheduleDayWeek.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="fNoScheduleDayWeek.Designer.cs">
|
||||
<DependentUpon>fNoScheduleDayWeek.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="fSendMail.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="fSendMail.Designer.cs">
|
||||
<DependentUpon>fSendMail.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="fScheduleDayWeek.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="fScheduleDayWeek.Designer.cs">
|
||||
<DependentUpon>fScheduleDayWeek.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="fScheduleDay.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="fScheduleDay.Designer.cs">
|
||||
<DependentUpon>fScheduleDay.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="fJobReportWeek.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="fJobReportWeek.Designer.cs">
|
||||
<DependentUpon>fJobReportWeek.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="fJobReportDay.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="fJobReportDay.Designer.cs">
|
||||
<DependentUpon>fJobReportDay.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="fSetup.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="fSetup.Designer.cs">
|
||||
<DependentUpon>fSetup.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="HolidayLIst.cs">
|
||||
<DependentUpon>Model1.tt</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="JobReport.cs">
|
||||
<DependentUpon>Model1.tt</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="MailData.cs">
|
||||
<DependentUpon>Model1.tt</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="MailForm.cs">
|
||||
<DependentUpon>Model1.tt</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="MDIParent1.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="MDIParent1.Designer.cs">
|
||||
<DependentUpon>MDIParent1.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Model1.Context.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Model1.Context.tt</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Model1.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Model1.tt</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Model1.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Model1.edmx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program_bak.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Projects.cs">
|
||||
<DependentUpon>Model1.tt</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Pub.cs" />
|
||||
<Content Include="ReadMe.txt" />
|
||||
<Compile Include="ReportUserData.cs" />
|
||||
<Compile Include="vGroupUser.cs">
|
||||
<DependentUpon>Model1.tt</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="vJobReportForUser.cs">
|
||||
<DependentUpon>Model1.tt</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
<EntityDeploy Include="Model1.edmx">
|
||||
<Generator>EntityModelCodeGenerator</Generator>
|
||||
<LastGenOutput>Model1.Designer.cs</LastGenOutput>
|
||||
</EntityDeploy>
|
||||
<None Include="DataSet1.xsc">
|
||||
<DependentUpon>DataSet1.xsd</DependentUpon>
|
||||
</None>
|
||||
<None Include="DataSet1.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSDataSetGenerator</Generator>
|
||||
<LastGenOutput>DataSet1.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<None Include="DataSet1.xss">
|
||||
<DependentUpon>DataSet1.xsd</DependentUpon>
|
||||
</None>
|
||||
<None Include="Model1.edmx.diagram">
|
||||
<DependentUpon>Model1.edmx</DependentUpon>
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Model1.Context.tt">
|
||||
<Generator>TextTemplatingFileGenerator</Generator>
|
||||
<LastGenOutput>Model1.Context.cs</LastGenOutput>
|
||||
<DependentUpon>Model1.edmx</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Model1.tt">
|
||||
<Generator>TextTemplatingFileGenerator</Generator>
|
||||
<DependentUpon>Model1.edmx</DependentUpon>
|
||||
<LastGenOutput>Model1.cs</LastGenOutput>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Service Include="{508349B6-6B84-4DF5-91F0-309BEEBAD82D}" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="fChildBase.resx">
|
||||
<DependentUpon>fChildBase.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="fNoScheduleDayWeek.resx">
|
||||
<DependentUpon>fNoScheduleDayWeek.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="fSendMail.resx">
|
||||
<DependentUpon>fSendMail.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="fScheduleDayWeek.resx">
|
||||
<DependentUpon>fScheduleDayWeek.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="fScheduleDay.resx">
|
||||
<DependentUpon>fScheduleDay.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="fJobReportWeek.resx">
|
||||
<DependentUpon>fJobReportWeek.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="fJobReportDay.resx">
|
||||
<DependentUpon>fJobReportDay.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="fSetup.resx">
|
||||
<DependentUpon>fSetup.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="MDIParent1.resx">
|
||||
<DependentUpon>MDIParent1.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
|
||||
<StartArguments>
|
||||
</StartArguments>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
613
JobReportMailService/MDIParent1.Designer.cs
generated
613
JobReportMailService/MDIParent1.Designer.cs
generated
@@ -1,613 +0,0 @@
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
partial class MDIParent1
|
||||
{
|
||||
/// <summary>
|
||||
/// 필수 디자이너 변수입니다.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// 사용 중인 모든 리소스를 정리합니다.
|
||||
/// </summary>
|
||||
/// <param name="disposing">관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form 디자이너에서 생성한 코드
|
||||
|
||||
/// <summary>
|
||||
/// 디자이너 지원에 필요한 메서드입니다.
|
||||
/// 이 메서드의 내용을 코드 편집기로 수정하지 마세요.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MDIParent1));
|
||||
this.menuStrip = new System.Windows.Forms.MenuStrip();
|
||||
this.fileMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.newToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.printToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.printPreviewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.printSetupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.editMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.undoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.redoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.cutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.pasteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.selectAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.viewMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolBarToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.statusBarToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolsMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.windowsMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.newWindowToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.cascadeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.tileVerticalToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.tileHorizontalToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.closeAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.arrangeIconsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.helpMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.contentsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.indexToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.searchToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStrip = new System.Windows.Forms.ToolStrip();
|
||||
this.bt1 = new System.Windows.Forms.ToolStripButton();
|
||||
this.bt2 = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.bt3 = new System.Windows.Forms.ToolStripButton();
|
||||
this.bt4 = new System.Windows.Forms.ToolStripButton();
|
||||
this.bt5 = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.bt6 = new System.Windows.Forms.ToolStripButton();
|
||||
this.statusStrip = new System.Windows.Forms.StatusStrip();
|
||||
this.toolStripStatusLabel = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.toolTip = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.menuStrip.SuspendLayout();
|
||||
this.toolStrip.SuspendLayout();
|
||||
this.statusStrip.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// menuStrip
|
||||
//
|
||||
this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.fileMenu,
|
||||
this.editMenu,
|
||||
this.viewMenu,
|
||||
this.toolsMenu,
|
||||
this.windowsMenu,
|
||||
this.helpMenu});
|
||||
this.menuStrip.Location = new System.Drawing.Point(0, 0);
|
||||
this.menuStrip.MdiWindowListItem = this.windowsMenu;
|
||||
this.menuStrip.Name = "menuStrip";
|
||||
this.menuStrip.Padding = new System.Windows.Forms.Padding(7, 2, 0, 2);
|
||||
this.menuStrip.Size = new System.Drawing.Size(709, 24);
|
||||
this.menuStrip.TabIndex = 0;
|
||||
this.menuStrip.Text = "MenuStrip";
|
||||
//
|
||||
// fileMenu
|
||||
//
|
||||
this.fileMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.newToolStripMenuItem,
|
||||
this.openToolStripMenuItem,
|
||||
this.toolStripSeparator3,
|
||||
this.saveToolStripMenuItem,
|
||||
this.saveAsToolStripMenuItem,
|
||||
this.toolStripSeparator4,
|
||||
this.printToolStripMenuItem,
|
||||
this.printPreviewToolStripMenuItem,
|
||||
this.printSetupToolStripMenuItem,
|
||||
this.toolStripSeparator5,
|
||||
this.exitToolStripMenuItem});
|
||||
this.fileMenu.ImageTransparentColor = System.Drawing.SystemColors.ActiveBorder;
|
||||
this.fileMenu.Name = "fileMenu";
|
||||
this.fileMenu.Size = new System.Drawing.Size(57, 20);
|
||||
this.fileMenu.Text = "파일(&F)";
|
||||
//
|
||||
// newToolStripMenuItem
|
||||
//
|
||||
this.newToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("newToolStripMenuItem.Image")));
|
||||
this.newToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.newToolStripMenuItem.Name = "newToolStripMenuItem";
|
||||
this.newToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N)));
|
||||
this.newToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.newToolStripMenuItem.Text = "새로 만들기(&N)";
|
||||
this.newToolStripMenuItem.Click += new System.EventHandler(this.ShowNewForm);
|
||||
//
|
||||
// openToolStripMenuItem
|
||||
//
|
||||
this.openToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("openToolStripMenuItem.Image")));
|
||||
this.openToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.openToolStripMenuItem.Name = "openToolStripMenuItem";
|
||||
this.openToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O)));
|
||||
this.openToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.openToolStripMenuItem.Text = "열기(&O)";
|
||||
this.openToolStripMenuItem.Click += new System.EventHandler(this.OpenFile);
|
||||
//
|
||||
// toolStripSeparator3
|
||||
//
|
||||
this.toolStripSeparator3.Name = "toolStripSeparator3";
|
||||
this.toolStripSeparator3.Size = new System.Drawing.Size(195, 6);
|
||||
//
|
||||
// saveToolStripMenuItem
|
||||
//
|
||||
this.saveToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("saveToolStripMenuItem.Image")));
|
||||
this.saveToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
|
||||
this.saveToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S)));
|
||||
this.saveToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.saveToolStripMenuItem.Text = "저장(&S)";
|
||||
//
|
||||
// saveAsToolStripMenuItem
|
||||
//
|
||||
this.saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem";
|
||||
this.saveAsToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.saveAsToolStripMenuItem.Text = "다른 이름으로 저장(&A)";
|
||||
this.saveAsToolStripMenuItem.Click += new System.EventHandler(this.SaveAsToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator4
|
||||
//
|
||||
this.toolStripSeparator4.Name = "toolStripSeparator4";
|
||||
this.toolStripSeparator4.Size = new System.Drawing.Size(195, 6);
|
||||
//
|
||||
// printToolStripMenuItem
|
||||
//
|
||||
this.printToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("printToolStripMenuItem.Image")));
|
||||
this.printToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.printToolStripMenuItem.Name = "printToolStripMenuItem";
|
||||
this.printToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.P)));
|
||||
this.printToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.printToolStripMenuItem.Text = "인쇄(&P)";
|
||||
//
|
||||
// printPreviewToolStripMenuItem
|
||||
//
|
||||
this.printPreviewToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("printPreviewToolStripMenuItem.Image")));
|
||||
this.printPreviewToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.printPreviewToolStripMenuItem.Name = "printPreviewToolStripMenuItem";
|
||||
this.printPreviewToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.printPreviewToolStripMenuItem.Text = "인쇄 미리 보기(&V)";
|
||||
//
|
||||
// printSetupToolStripMenuItem
|
||||
//
|
||||
this.printSetupToolStripMenuItem.Name = "printSetupToolStripMenuItem";
|
||||
this.printSetupToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.printSetupToolStripMenuItem.Text = "인쇄 설정";
|
||||
//
|
||||
// toolStripSeparator5
|
||||
//
|
||||
this.toolStripSeparator5.Name = "toolStripSeparator5";
|
||||
this.toolStripSeparator5.Size = new System.Drawing.Size(195, 6);
|
||||
//
|
||||
// exitToolStripMenuItem
|
||||
//
|
||||
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
|
||||
this.exitToolStripMenuItem.Size = new System.Drawing.Size(198, 22);
|
||||
this.exitToolStripMenuItem.Text = "끝내기(&X)";
|
||||
this.exitToolStripMenuItem.Click += new System.EventHandler(this.ExitToolsStripMenuItem_Click);
|
||||
//
|
||||
// editMenu
|
||||
//
|
||||
this.editMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.undoToolStripMenuItem,
|
||||
this.redoToolStripMenuItem,
|
||||
this.toolStripSeparator6,
|
||||
this.cutToolStripMenuItem,
|
||||
this.copyToolStripMenuItem,
|
||||
this.pasteToolStripMenuItem,
|
||||
this.toolStripSeparator7,
|
||||
this.selectAllToolStripMenuItem});
|
||||
this.editMenu.Name = "editMenu";
|
||||
this.editMenu.Size = new System.Drawing.Size(57, 20);
|
||||
this.editMenu.Text = "편집(&E)";
|
||||
//
|
||||
// undoToolStripMenuItem
|
||||
//
|
||||
this.undoToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("undoToolStripMenuItem.Image")));
|
||||
this.undoToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.undoToolStripMenuItem.Name = "undoToolStripMenuItem";
|
||||
this.undoToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Z)));
|
||||
this.undoToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
|
||||
this.undoToolStripMenuItem.Text = "실행 취소(&U)";
|
||||
//
|
||||
// redoToolStripMenuItem
|
||||
//
|
||||
this.redoToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("redoToolStripMenuItem.Image")));
|
||||
this.redoToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.redoToolStripMenuItem.Name = "redoToolStripMenuItem";
|
||||
this.redoToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y)));
|
||||
this.redoToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
|
||||
this.redoToolStripMenuItem.Text = "다시 실행(&R)";
|
||||
//
|
||||
// toolStripSeparator6
|
||||
//
|
||||
this.toolStripSeparator6.Name = "toolStripSeparator6";
|
||||
this.toolStripSeparator6.Size = new System.Drawing.Size(181, 6);
|
||||
//
|
||||
// cutToolStripMenuItem
|
||||
//
|
||||
this.cutToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("cutToolStripMenuItem.Image")));
|
||||
this.cutToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.cutToolStripMenuItem.Name = "cutToolStripMenuItem";
|
||||
this.cutToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.X)));
|
||||
this.cutToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
|
||||
this.cutToolStripMenuItem.Text = "잘라내기(&T)";
|
||||
this.cutToolStripMenuItem.Click += new System.EventHandler(this.CutToolStripMenuItem_Click);
|
||||
//
|
||||
// copyToolStripMenuItem
|
||||
//
|
||||
this.copyToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("copyToolStripMenuItem.Image")));
|
||||
this.copyToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.copyToolStripMenuItem.Name = "copyToolStripMenuItem";
|
||||
this.copyToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C)));
|
||||
this.copyToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
|
||||
this.copyToolStripMenuItem.Text = "복사(&C)";
|
||||
this.copyToolStripMenuItem.Click += new System.EventHandler(this.CopyToolStripMenuItem_Click);
|
||||
//
|
||||
// pasteToolStripMenuItem
|
||||
//
|
||||
this.pasteToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("pasteToolStripMenuItem.Image")));
|
||||
this.pasteToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.pasteToolStripMenuItem.Name = "pasteToolStripMenuItem";
|
||||
this.pasteToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V)));
|
||||
this.pasteToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
|
||||
this.pasteToolStripMenuItem.Text = "붙여넣기(&P)";
|
||||
this.pasteToolStripMenuItem.Click += new System.EventHandler(this.PasteToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator7
|
||||
//
|
||||
this.toolStripSeparator7.Name = "toolStripSeparator7";
|
||||
this.toolStripSeparator7.Size = new System.Drawing.Size(181, 6);
|
||||
//
|
||||
// selectAllToolStripMenuItem
|
||||
//
|
||||
this.selectAllToolStripMenuItem.Name = "selectAllToolStripMenuItem";
|
||||
this.selectAllToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.A)));
|
||||
this.selectAllToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
|
||||
this.selectAllToolStripMenuItem.Text = "모두 선택(&A)";
|
||||
//
|
||||
// viewMenu
|
||||
//
|
||||
this.viewMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolBarToolStripMenuItem,
|
||||
this.statusBarToolStripMenuItem});
|
||||
this.viewMenu.Name = "viewMenu";
|
||||
this.viewMenu.Size = new System.Drawing.Size(59, 20);
|
||||
this.viewMenu.Text = "보기(&V)";
|
||||
//
|
||||
// toolBarToolStripMenuItem
|
||||
//
|
||||
this.toolBarToolStripMenuItem.Checked = true;
|
||||
this.toolBarToolStripMenuItem.CheckOnClick = true;
|
||||
this.toolBarToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.toolBarToolStripMenuItem.Name = "toolBarToolStripMenuItem";
|
||||
this.toolBarToolStripMenuItem.Size = new System.Drawing.Size(153, 22);
|
||||
this.toolBarToolStripMenuItem.Text = "도구 모음(&T)";
|
||||
this.toolBarToolStripMenuItem.Click += new System.EventHandler(this.ToolBarToolStripMenuItem_Click);
|
||||
//
|
||||
// statusBarToolStripMenuItem
|
||||
//
|
||||
this.statusBarToolStripMenuItem.Checked = true;
|
||||
this.statusBarToolStripMenuItem.CheckOnClick = true;
|
||||
this.statusBarToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.statusBarToolStripMenuItem.Name = "statusBarToolStripMenuItem";
|
||||
this.statusBarToolStripMenuItem.Size = new System.Drawing.Size(153, 22);
|
||||
this.statusBarToolStripMenuItem.Text = "상태 표시줄(&S)";
|
||||
this.statusBarToolStripMenuItem.Click += new System.EventHandler(this.StatusBarToolStripMenuItem_Click);
|
||||
//
|
||||
// toolsMenu
|
||||
//
|
||||
this.toolsMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.optionsToolStripMenuItem});
|
||||
this.toolsMenu.Name = "toolsMenu";
|
||||
this.toolsMenu.Size = new System.Drawing.Size(57, 20);
|
||||
this.toolsMenu.Text = "도구(&T)";
|
||||
//
|
||||
// optionsToolStripMenuItem
|
||||
//
|
||||
this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem";
|
||||
this.optionsToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||
this.optionsToolStripMenuItem.Text = "옵션(&O)";
|
||||
this.optionsToolStripMenuItem.Click += new System.EventHandler(this.optionsToolStripMenuItem_Click);
|
||||
//
|
||||
// windowsMenu
|
||||
//
|
||||
this.windowsMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.newWindowToolStripMenuItem,
|
||||
this.cascadeToolStripMenuItem,
|
||||
this.tileVerticalToolStripMenuItem,
|
||||
this.tileHorizontalToolStripMenuItem,
|
||||
this.closeAllToolStripMenuItem,
|
||||
this.arrangeIconsToolStripMenuItem});
|
||||
this.windowsMenu.Name = "windowsMenu";
|
||||
this.windowsMenu.Size = new System.Drawing.Size(50, 20);
|
||||
this.windowsMenu.Text = "창(&W)";
|
||||
//
|
||||
// newWindowToolStripMenuItem
|
||||
//
|
||||
this.newWindowToolStripMenuItem.Name = "newWindowToolStripMenuItem";
|
||||
this.newWindowToolStripMenuItem.Size = new System.Drawing.Size(195, 22);
|
||||
this.newWindowToolStripMenuItem.Text = "새 창(&N)";
|
||||
this.newWindowToolStripMenuItem.Click += new System.EventHandler(this.ShowNewForm);
|
||||
//
|
||||
// cascadeToolStripMenuItem
|
||||
//
|
||||
this.cascadeToolStripMenuItem.Name = "cascadeToolStripMenuItem";
|
||||
this.cascadeToolStripMenuItem.Size = new System.Drawing.Size(195, 22);
|
||||
this.cascadeToolStripMenuItem.Text = "계단식 배열(&C)";
|
||||
this.cascadeToolStripMenuItem.Click += new System.EventHandler(this.CascadeToolStripMenuItem_Click);
|
||||
//
|
||||
// tileVerticalToolStripMenuItem
|
||||
//
|
||||
this.tileVerticalToolStripMenuItem.Name = "tileVerticalToolStripMenuItem";
|
||||
this.tileVerticalToolStripMenuItem.Size = new System.Drawing.Size(195, 22);
|
||||
this.tileVerticalToolStripMenuItem.Text = "세로 바둑판식 배열(&V)";
|
||||
this.tileVerticalToolStripMenuItem.Click += new System.EventHandler(this.TileVerticalToolStripMenuItem_Click);
|
||||
//
|
||||
// tileHorizontalToolStripMenuItem
|
||||
//
|
||||
this.tileHorizontalToolStripMenuItem.Name = "tileHorizontalToolStripMenuItem";
|
||||
this.tileHorizontalToolStripMenuItem.Size = new System.Drawing.Size(195, 22);
|
||||
this.tileHorizontalToolStripMenuItem.Text = "가로 바둑판식 배열(&H)";
|
||||
this.tileHorizontalToolStripMenuItem.Click += new System.EventHandler(this.TileHorizontalToolStripMenuItem_Click);
|
||||
//
|
||||
// closeAllToolStripMenuItem
|
||||
//
|
||||
this.closeAllToolStripMenuItem.Name = "closeAllToolStripMenuItem";
|
||||
this.closeAllToolStripMenuItem.Size = new System.Drawing.Size(195, 22);
|
||||
this.closeAllToolStripMenuItem.Text = "모두 닫기(&L)";
|
||||
this.closeAllToolStripMenuItem.Click += new System.EventHandler(this.CloseAllToolStripMenuItem_Click);
|
||||
//
|
||||
// arrangeIconsToolStripMenuItem
|
||||
//
|
||||
this.arrangeIconsToolStripMenuItem.Name = "arrangeIconsToolStripMenuItem";
|
||||
this.arrangeIconsToolStripMenuItem.Size = new System.Drawing.Size(195, 22);
|
||||
this.arrangeIconsToolStripMenuItem.Text = "아이콘 정렬(&A)";
|
||||
this.arrangeIconsToolStripMenuItem.Click += new System.EventHandler(this.ArrangeIconsToolStripMenuItem_Click);
|
||||
//
|
||||
// helpMenu
|
||||
//
|
||||
this.helpMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.contentsToolStripMenuItem,
|
||||
this.indexToolStripMenuItem,
|
||||
this.searchToolStripMenuItem,
|
||||
this.toolStripSeparator8,
|
||||
this.aboutToolStripMenuItem});
|
||||
this.helpMenu.Name = "helpMenu";
|
||||
this.helpMenu.Size = new System.Drawing.Size(72, 20);
|
||||
this.helpMenu.Text = "도움말(&H)";
|
||||
//
|
||||
// contentsToolStripMenuItem
|
||||
//
|
||||
this.contentsToolStripMenuItem.Name = "contentsToolStripMenuItem";
|
||||
this.contentsToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.F1)));
|
||||
this.contentsToolStripMenuItem.Size = new System.Drawing.Size(161, 22);
|
||||
this.contentsToolStripMenuItem.Text = "목차(&C)";
|
||||
//
|
||||
// indexToolStripMenuItem
|
||||
//
|
||||
this.indexToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("indexToolStripMenuItem.Image")));
|
||||
this.indexToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.indexToolStripMenuItem.Name = "indexToolStripMenuItem";
|
||||
this.indexToolStripMenuItem.Size = new System.Drawing.Size(161, 22);
|
||||
this.indexToolStripMenuItem.Text = "색인(&I)";
|
||||
//
|
||||
// searchToolStripMenuItem
|
||||
//
|
||||
this.searchToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("searchToolStripMenuItem.Image")));
|
||||
this.searchToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.searchToolStripMenuItem.Name = "searchToolStripMenuItem";
|
||||
this.searchToolStripMenuItem.Size = new System.Drawing.Size(161, 22);
|
||||
this.searchToolStripMenuItem.Text = "검색(&S)";
|
||||
//
|
||||
// toolStripSeparator8
|
||||
//
|
||||
this.toolStripSeparator8.Name = "toolStripSeparator8";
|
||||
this.toolStripSeparator8.Size = new System.Drawing.Size(158, 6);
|
||||
//
|
||||
// aboutToolStripMenuItem
|
||||
//
|
||||
this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
|
||||
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(161, 22);
|
||||
this.aboutToolStripMenuItem.Text = "정보(&A)... ...";
|
||||
//
|
||||
// toolStrip
|
||||
//
|
||||
this.toolStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.bt1,
|
||||
this.bt2,
|
||||
this.toolStripSeparator1,
|
||||
this.bt3,
|
||||
this.bt4,
|
||||
this.bt5,
|
||||
this.toolStripSeparator2,
|
||||
this.bt6});
|
||||
this.toolStrip.Location = new System.Drawing.Point(0, 24);
|
||||
this.toolStrip.Name = "toolStrip";
|
||||
this.toolStrip.Size = new System.Drawing.Size(709, 25);
|
||||
this.toolStrip.TabIndex = 1;
|
||||
this.toolStrip.Text = "ToolStrip";
|
||||
//
|
||||
// bt1
|
||||
//
|
||||
this.bt1.Image = ((System.Drawing.Image)(resources.GetObject("bt1.Image")));
|
||||
this.bt1.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.bt1.Name = "bt1";
|
||||
this.bt1.Size = new System.Drawing.Size(95, 22);
|
||||
this.bt1.Text = "업무일지(일)";
|
||||
this.bt1.Click += new System.EventHandler(this.ShowNewForm);
|
||||
//
|
||||
// bt2
|
||||
//
|
||||
this.bt2.Image = ((System.Drawing.Image)(resources.GetObject("bt2.Image")));
|
||||
this.bt2.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.bt2.Name = "bt2";
|
||||
this.bt2.Size = new System.Drawing.Size(95, 22);
|
||||
this.bt2.Text = "업무일지(주)";
|
||||
this.bt2.Click += new System.EventHandler(this.OpenFile);
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25);
|
||||
//
|
||||
// bt3
|
||||
//
|
||||
this.bt3.Image = ((System.Drawing.Image)(resources.GetObject("bt3.Image")));
|
||||
this.bt3.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.bt3.Name = "bt3";
|
||||
this.bt3.Size = new System.Drawing.Size(83, 22);
|
||||
this.bt3.Text = "스케쥴(일)";
|
||||
this.bt3.Click += new System.EventHandler(this.saveToolStripButton_Click);
|
||||
//
|
||||
// bt4
|
||||
//
|
||||
this.bt4.Image = ((System.Drawing.Image)(resources.GetObject("bt4.Image")));
|
||||
this.bt4.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.bt4.Name = "bt4";
|
||||
this.bt4.Size = new System.Drawing.Size(83, 22);
|
||||
this.bt4.Text = "스케쥴(주)";
|
||||
this.bt4.Click += new System.EventHandler(this.printToolStripButton_Click);
|
||||
//
|
||||
// bt5
|
||||
//
|
||||
this.bt5.Image = ((System.Drawing.Image)(resources.GetObject("bt5.Image")));
|
||||
this.bt5.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.bt5.Name = "bt5";
|
||||
this.bt5.Size = new System.Drawing.Size(107, 22);
|
||||
this.bt5.Text = "스케쥴없음(주)";
|
||||
this.bt5.Click += new System.EventHandler(this.toolStripButton2_Click);
|
||||
//
|
||||
// toolStripSeparator2
|
||||
//
|
||||
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
||||
this.toolStripSeparator2.Size = new System.Drawing.Size(6, 25);
|
||||
//
|
||||
// bt6
|
||||
//
|
||||
this.bt6.Image = ((System.Drawing.Image)(resources.GetObject("bt6.Image")));
|
||||
this.bt6.ImageTransparentColor = System.Drawing.Color.Black;
|
||||
this.bt6.Name = "bt6";
|
||||
this.bt6.Size = new System.Drawing.Size(111, 22);
|
||||
this.bt6.Text = "메일생성및전송";
|
||||
this.bt6.Click += new System.EventHandler(this.toolStripButton1_Click);
|
||||
//
|
||||
// statusStrip
|
||||
//
|
||||
this.statusStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolStripStatusLabel});
|
||||
this.statusStrip.Location = new System.Drawing.Point(0, 536);
|
||||
this.statusStrip.Name = "statusStrip";
|
||||
this.statusStrip.Padding = new System.Windows.Forms.Padding(1, 0, 16, 0);
|
||||
this.statusStrip.Size = new System.Drawing.Size(709, 22);
|
||||
this.statusStrip.TabIndex = 2;
|
||||
this.statusStrip.Text = "StatusStrip";
|
||||
//
|
||||
// toolStripStatusLabel
|
||||
//
|
||||
this.toolStripStatusLabel.Name = "toolStripStatusLabel";
|
||||
this.toolStripStatusLabel.Size = new System.Drawing.Size(31, 17);
|
||||
this.toolStripStatusLabel.Text = "상태";
|
||||
//
|
||||
// MDIParent1
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(709, 558);
|
||||
this.Controls.Add(this.statusStrip);
|
||||
this.Controls.Add(this.toolStrip);
|
||||
this.Controls.Add(this.menuStrip);
|
||||
this.IsMdiContainer = true;
|
||||
this.MainMenuStrip = this.menuStrip;
|
||||
this.Name = "MDIParent1";
|
||||
this.Text = "MDIParent1";
|
||||
this.Load += new System.EventHandler(this.MDIParent1_Load);
|
||||
this.menuStrip.ResumeLayout(false);
|
||||
this.menuStrip.PerformLayout();
|
||||
this.toolStrip.ResumeLayout(false);
|
||||
this.toolStrip.PerformLayout();
|
||||
this.statusStrip.ResumeLayout(false);
|
||||
this.statusStrip.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
private System.Windows.Forms.MenuStrip menuStrip;
|
||||
private System.Windows.Forms.ToolStrip toolStrip;
|
||||
private System.Windows.Forms.StatusStrip statusStrip;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator6;
|
||||
private System.Windows.Forms.ToolStripMenuItem printSetupToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator7;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator8;
|
||||
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel;
|
||||
private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem tileHorizontalToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem fileMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem newToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem saveAsToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem printToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem printPreviewToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem editMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem undoToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem redoToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem cutToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem copyToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem pasteToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem selectAllToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem viewMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolBarToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem statusBarToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolsMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem optionsToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem windowsMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem newWindowToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem cascadeToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem tileVerticalToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem closeAllToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem arrangeIconsToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem helpMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem contentsToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem indexToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem searchToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripButton bt1;
|
||||
private System.Windows.Forms.ToolStripButton bt2;
|
||||
private System.Windows.Forms.ToolStripButton bt3;
|
||||
private System.Windows.Forms.ToolStripButton bt4;
|
||||
private System.Windows.Forms.ToolTip toolTip;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
|
||||
private System.Windows.Forms.ToolStripButton bt6;
|
||||
private System.Windows.Forms.ToolStripButton bt5;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,159 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
public partial class MDIParent1 : Form
|
||||
{
|
||||
private int childFormNumber = 0;
|
||||
|
||||
public MDIParent1()
|
||||
{
|
||||
InitializeComponent();
|
||||
Pub.init();
|
||||
}
|
||||
|
||||
private void ShowNewForm(object sender, EventArgs e)
|
||||
{
|
||||
Form childForm = new fJobReportDay();
|
||||
childForm.MdiParent = this;
|
||||
//childForm.Text = "창 " + childFormNumber++;
|
||||
childForm.Show();
|
||||
}
|
||||
|
||||
private void OpenFile(object sender, EventArgs e)
|
||||
{
|
||||
Form childForm = new fJobReportWeek();
|
||||
childForm.MdiParent = this;
|
||||
//childForm.Text = "창 " + childFormNumber++;
|
||||
childForm.Show();
|
||||
}
|
||||
|
||||
private void SaveAsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveFileDialog saveFileDialog = new SaveFileDialog();
|
||||
saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
|
||||
saveFileDialog.Filter = "텍스트 파일 (*.txt)|*.txt|모든 파일 (*.*)|*.*";
|
||||
if (saveFileDialog.ShowDialog(this) == DialogResult.OK)
|
||||
{
|
||||
string FileName = saveFileDialog.FileName;
|
||||
}
|
||||
}
|
||||
|
||||
private void ExitToolsStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void CutToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
private void CopyToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
private void PasteToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
private void ToolBarToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
toolStrip.Visible = toolBarToolStripMenuItem.Checked;
|
||||
}
|
||||
|
||||
private void StatusBarToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
statusStrip.Visible = statusBarToolStripMenuItem.Checked;
|
||||
}
|
||||
|
||||
private void CascadeToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
LayoutMdi(MdiLayout.Cascade);
|
||||
}
|
||||
|
||||
private void TileVerticalToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
LayoutMdi(MdiLayout.TileVertical);
|
||||
}
|
||||
|
||||
private void TileHorizontalToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
LayoutMdi(MdiLayout.TileHorizontal);
|
||||
}
|
||||
|
||||
private void ArrangeIconsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
LayoutMdi(MdiLayout.ArrangeIcons);
|
||||
}
|
||||
|
||||
private void CloseAllToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
foreach (Form childForm in MdiChildren)
|
||||
{
|
||||
childForm.Close();
|
||||
}
|
||||
}
|
||||
|
||||
private void saveToolStripButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
Form childForm = new fScheduleDay();
|
||||
childForm.MdiParent = this;
|
||||
//childForm.Text = "창 " + childFormNumber++;
|
||||
childForm.Show();
|
||||
}
|
||||
|
||||
private void printToolStripButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
Form childForm = new fScheduleDayWeek();
|
||||
childForm.MdiParent = this;
|
||||
//childForm.Text = "창 " + childFormNumber++;
|
||||
childForm.Show();
|
||||
}
|
||||
|
||||
private void toolStripButton1_Click(object sender, EventArgs e)
|
||||
{
|
||||
Form childForm = new fSendMail();
|
||||
childForm.MdiParent = this;
|
||||
//childForm.Text = "창 " + childFormNumber++;
|
||||
childForm.Show();
|
||||
|
||||
}
|
||||
|
||||
private void toolStripButton2_Click(object sender, EventArgs e)
|
||||
{
|
||||
Form childForm = new fNoScheduleDayWeek();
|
||||
childForm.MdiParent = this;
|
||||
//childForm.Text = "창 " + childFormNumber++;
|
||||
childForm.Show();
|
||||
}
|
||||
|
||||
private void MDIParent1_Load(object sender, EventArgs e)
|
||||
{
|
||||
this.Text = "mail service " + Application.ProductVersion.ToString();
|
||||
|
||||
if(Pub.setting.autoRun)
|
||||
{
|
||||
bt1.PerformClick();
|
||||
bt2.PerformClick();
|
||||
bt3.PerformClick();
|
||||
bt4.PerformClick();
|
||||
bt5.PerformClick();
|
||||
bt6.PerformClick();
|
||||
}
|
||||
}
|
||||
|
||||
private void optionsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
var f = new fSetup();
|
||||
f.ShowDialog();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,404 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="menuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="newToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAELSURBVDhPrZDJasJQGIXzUvoO9TX0jcQuSulCLUUECwot
|
||||
KtrSAbQWRDTg0CLBCY1xqmkcYo7c8ItJYy9Z+MHhLu453+IXzkbypY6/SeRriKXLiKaKZqh6Gjb4j+v4
|
||||
M7y+AF9y/yRS3UkomkbmvcaXxLMVqjsJhh/N8SE0sXP38El1J1t9Z0oOIprYiSQLVLdjGAZUbYOhopoC
|
||||
z4X/tOAm8UoTO+uNjslcgzSY8wVXsTxNjug7Awt1jb68RFOa8AWXtxmaHdFWW8jTX7R7M1RbMl/APq2w
|
||||
w81+VugMF6i3FZTEgXuB9XBfnSkqjRHeyl33AuvhxO8xitU+ch+SOwF7eeEK2Keb0OQcCMIe3/X1lqrb
|
||||
NIsAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="openToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJYSURBVDhPvZFbSBNQHIf30ENPFmlRCEWWhD0MA0Oqh5Ck
|
||||
m6KUZoWRJpS3LhiKbVPbvE53c+pKh7lN19RptTIMK4RCkQgtdZSYmgVFpZgZKnn7GptokkEP0R9+L+ec
|
||||
7zs/zhH8l8kpMSPTWriSbyJPZ0WiNDK/9XcTnawjLF7lhC6IKsh0yFKyDUQllyCoN2tYLo218j/ekiAp
|
||||
JTxRRWh8oUvQ22VkcrTOmR8jFqaHDFhNKmzm7GUlYQlqQuO0BMcWI6irVDMxUr0Env1UyrQ9ieqKfKrK
|
||||
cjGUZKIvzOC6UkyxPHWptMaoYOKLcQGec8D0isEeu2x+E9wsl/P9o34BbqpXOPPAWkCDRc6dqlyshiws
|
||||
ehkm3VVuaNMoU4vRKUQuWZU+l7F3Rc7aAy1SbNVqZgdkMJi9NG8da/0S6EmGV4l01kZwKSYEgUGXxbe+
|
||||
fHiv5G6NiraHStehX6u/jIL2cGZag5h8FMCbSiHnTx9wCcq1Ur6+ljHYmo7NomSuXwrdcS6wM8YBnmCm
|
||||
LYTJ5v2MNe5huH4HsnhvTgZ6uN6iVJ3OcJeIW2YFHU8dTXqSHIKz0HGKuWdHmHpyiPGmvYzY/Phc40N7
|
||||
zmoig7zw2+bmEugKxHQ3Z3DbXAB9GfDCUff5MaZaghl/HMBogz9DViEfjFuxK92Rxm7Bd7vn4k8U5aVS
|
||||
Z8rHfi+Bdo1gIW3KFTTLV3I/cxW1aWsxpHpy7fImIg9vxt9346JAk52CRnqOPFE0kovHnQ9zJiKQowd3
|
||||
sW+3kJ1Cb3y8PNm4wYN1a9xY7z5f/d+MQPATMS7uX9kMtOAAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="saveToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIvSURBVDhPrZLdS9NRGMd//0L33QRddFtTYzgXq8GvXENZ
|
||||
Ngwrwl5+kWZpukwTFSvTqPkG2QqXTlqtJuGkIl/AFCkRZSpZmrmiJQ41xSaCwdfznP3yuIouogeem8P5
|
||||
fM55XqT/Es+fhUHpa11Ci3cRD93zaGoM4a5jGnW1X2C/FcD18kmUloyjsOAt8nJHcP6cHyouSQR2dQK1
|
||||
NSv4WyyvrMKU2oVDqU95qrgkeZ8scEFlxTf16u9BcGh+GbssL6DRKLAe9AiB+8EcF5SWfFWvR8dP+GNw
|
||||
ATFmHwouTeGApVkInA0zXHDR9kFFRGyEhydC2CZ7kZM9huQkpxDU3w5yQdbZERWLxK9wnz+IzQY3FGUA
|
||||
ZrNDCGqqP3OBcmpARf8Md/Z/wqb4Rhw+8gqJiXVCcKNyCh3tYKMEjh1/A+vRXt5tahjVTN+mlyNwN1Ks
|
||||
LyHLdiG4UjaBNh/YDgDNrh9s7t9Rfm2WN5UaRjVnZvjX4f3JrTAaK4TgcuEYPI+A+85VtjhhmNKyo9KS
|
||||
bkPamaIInMTgfR4YDGVCYMsbZTBQXRXmLxNE5zE6GYPvZzA6OQsl9yr2mFo4rNvtgl5fJAS0lo47WP82
|
||||
CQg+nX8T7wJzCEwv4kKxHbEGF4ObEJtwD7r4fCHIzBhidS9xeKvRgy07ZDxu64GvvQ8d3f3ofT2IvWYr
|
||||
NPoGxDF4u7YeWm1OtODkiR6+nrRhtCQ0ZxoVdZsaRjXTq5QE74zLEoJ/D0laA2xoOmtG+TV7AAAAAElF
|
||||
TkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="printToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIqSURBVDhPrZL7T1JxAMVZP/b/tLa2Wm21mail1YZlRjid
|
||||
k6JhTApClhGmktrDWlKjK3OBDrLAMWJaY9MZZJbo0umWQIEFXRPQMB6ne788HFpbW322s93d3fM598X5
|
||||
7xjtUxh0vId5dOaPMY14kL18O6zgrcePrWz8TMIbWMGgbQIlZy6DW31pu4Qts0ml0gjRETjdH0iGHC4Y
|
||||
LONwz/hQJVITQbZSiN7qxsfPdHYzA7u8Go1jdnEZJruLLP92XWsaB5sks+4LhgvWbc5puDxeVDaocOSs
|
||||
HBrtM9zps21KFJ1PSHnENZ9fzS0HwzHML4XRa3CglC+Dsqsfj0xjKGVEpNzUpof6/hAoyxs8MDqhf/4a
|
||||
tyk7rt4yQtyiBb+xA+U1ChSfluLkuevo1lkhUWlRnHuMm49fIBKLk+WtJJIprMcT5E6+0uv49CUKeTuF
|
||||
OmkXcweyjEB1zwzLq3d46nCDMr/E3b5hqHsGIGvXQdTcA8HFDvAaWnBUIEfRKQnOM+cqhdew/7goI1B2
|
||||
D8AfCGU3C4msbcAbXMVOcEh2UBzwxW0oqZZi1+GajKC504DpuSUw7ywPe/wtmsCcfw1jszQpW7OCY7UK
|
||||
7KsQbgqUGgqaXhN8oTjoWBqB72ksLqcwsfADw5NR9DtXSDGXQzwxKecF9ZJWyG7oMDrpJ9/2b1IgYJGo
|
||||
HqKiTokywRVwmd+0qKoJB3mNOHDiAvaWC7GnrB67ubX5YkH53+BwfgHgHTGbZU7qDAAAAABJRU5ErkJg
|
||||
gg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="printPreviewToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHXSURBVDhPrZDdS1NhAIf3z4RXXkRqEd5IoCaKROWc6YVN
|
||||
XMQkMFToZjcpQaatoVuiq+UkTTrFWR/OyuWmNaGoYDLtIkHUKfOjSJxuc0/7OHObx4+bHvjxvhe/33MO
|
||||
r+K/IDpn2B9hzMOQ/RtW21Q8UvVgYoPD6B3+SF5J3dGSF45pqS6ny2pndNJztGT43Q+pLsfw5G18nIw0
|
||||
yeTpmy9SPUUouMX45DjGRxZu39NzR99Ffpn6YEG/6JZmCba3txBHRnjvnMDnX2V+2Y9VEFFrm6jR3pJL
|
||||
zIJLmiZwTLiwO5zxeygMfwO7LK2HMZifoarVyAU9Q2PxcpJus4XFFf/eePl3iNnFIDbXDJXV1XJB98Co
|
||||
NE3QaexhYWUtMd4IR8c7uGcDPHzu5mJFhVwQe+l0BNGGaHfg24h+eSnI558BXn/dpKFFR2VVFfrWpkxJ
|
||||
uiASifBrbo67nQb6Bl/x0uXFJLhpaNahVF1m8H4NoulGpiRdsBMMs/4ngMfr5YHRiOa6lqt19VxRXsBw
|
||||
8xy+x0XsfqrF0tGYkiQFsfOwtLa1c60sh++6XBZMBazZlDRrylOC3PPqY1NYcglN6Sk+tJyhvjgbVelp
|
||||
+YMeR+wv8k9mUXz2RHSsUPwDd10kHqNu+GEAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="undoToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGmSURBVDhPvZHdS5MBFMb3p3TX6E7c1BTHUIc2xUbEqGUz
|
||||
LaV5s6ViRvhuul0M9lFshFjmjV/bKLVajRAid6N3KYg3FkHDiWvNmXt3++udDiMd4nthD5ybc57nx+Ec
|
||||
xbkqGM0TfCcysSgyuyQSlioSFymOT5d/QaRQnjmR4VAO+1SOlx8PASUhnkiKmZXDQSH05E2erkCGBtsK
|
||||
NV0xKu9EaRz8xlisBKDQGJ7aYeKziD0k8vRtHrN3G51tGc39RdS3X9Fgfc/l9lmM7gzTkq8Y/au+sW16
|
||||
nu/zYDzHTe8e1XejVHUsSOHwgdkwFKPsxiS6h5s4pnMnAZ3+JM0jaW759hkYT6NsDqBqCx0ZL2gFND1x
|
||||
dANfcYRLAK45t6jo+86VkdTBJh3eHwiTv/4FWOLohSTOUoC6wQTa3g2qLcuo2j9QZnqNsuXZkbHCPE+t
|
||||
ZQmD6ye20cRJwHEdv/RFfUBaf5Pu4C4+6b3F9tlVde8T191ZjMIXeWGzfxetdZWrriytj9a5ZHghD9D0
|
||||
OCGFf9PUv0a5KSJ/dZP01vr+DdRtc/LD/0EKxR+XdBDBXAMPDQAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="redoToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGVSURBVDhPzZHdK0NhHMf3p7jBknbBNpqbc+FtttrUrBim
|
||||
LEJeRo0lzMsK2S6M5D3vJjXFJinhZu64WolQu9FaXjrnuf56nrOl5kTIhW99L56e7/dzfuf3yP5MO+cE
|
||||
/jOCLeqlY4KJgADnioDk9ddiZebFI4KBdQGD2wLcOwJ6VimEOhn7XKw8e0hQ4nxAXt0BNLYQuNYwbD4e
|
||||
9gUB9sUEZPOCgOuMSIEbpwTm0SeoLcsobAtAVbMrWm3dRz2FNM7yaKGQJZoraAqL0yarCbk2BBR13yKz
|
||||
bALGvkPxUlXjR65lC9nGeVSMvYqTNM/xUFqD0glcfga4Q4bWizSu/z2grN6GXDcJx0IcFg8P3VAcioo1
|
||||
KWCYAnQDjzTsSwFMBQmY2Ze1QzGou+4h109LAR0zUZS748ip3E0BsIVp6D8rrSEoTOtiOb14XArw7BE0
|
||||
+J5R5Lihe5hMCUgW9pnM/Zcwjb4g33byvcJHZdFtG3ojMIy8gGu/Qq33+ecgBtE7r2F08yjtjf5uEiad
|
||||
K4Yq+mzJ47+WTPYGxTcHtykTmrAAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="cutToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGhSURBVDhPYyAG/AcCKJMwWLlp///ZyzbBNYA033nw9H91
|
||||
6xTiDJk8d83/nmmL/1e1zgRr+Pb9x//Vm/b8T8mpIt4Vk2av/D95zmqQ5f+fvXjzPy2/5r+YEB8J3ti4
|
||||
73/X5IX/T5y5+P/gsXP/w+KzSTNg4aod/7unLPrfO23h//LGvv8+QdHEawaBzokL/5c09P1Pzqv7Hxqb
|
||||
+d/NO4g0A0AgIa/lf1hC4f+QtLb//gktxBsQ3fHuf0Tn6/8hzQ/+e5ed+u9Tfva/X9Xl/z6lp/+7Ze/E
|
||||
b1BE+6v/kT3v/gc33PlvHT3vv2lQ33+3vH3//auv/ncFaraKmY/fgLD25//D2p7+d0zbANZsGtT737vk
|
||||
1H//yqv/nTI2/TcJ7sdvQGjLo/9Bjff+O6Vu+m8c0A02IABou2/F2f8WEdP+aztk4TcguOnef/+yS//t
|
||||
ktf8N/SBBJx3yfH/dkmr/mvaJP+XkdfEb4Bf5cX/9kmrgbZ3/Vc3CwcnHvuUNf+1rBP+q5tH/Df2b8dv
|
||||
gHPGlv9mIZP+a1jF/jf0qsGvmDqAgQEAkYXpGFtqYpEAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="copyToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHgSURBVDhPvZHdS1pxGMfPn7IKieq63Y/RKw0aFF1ssEEv
|
||||
dOVFXXUVFQ3Wlg4H2dSo7A21jnUiKiPFylwttMy9GXMNNgUrzinLrGN98zxaVgu7GOwLn5vf+X0/D8/v
|
||||
MP8cbuEbJFiblzDMuDDAfcQbLYfklfSRyrejn3CirnUID0tr7peYrd5kLZHY2Tm6hudgcXjxrEF5v8Qw
|
||||
66aixQew64DHL+C9fhrskgDTAg+jnUffLA/V+B7xojNwUzjAOUkg5eQ0BuEgikAoTILbaR/ZQX6tg0jW
|
||||
GUZnstPHXscpFDMCWtg/aOz3Y3h+l86vp0ETArciIK9qgiCBOr6vtPdRRMQOH8F2YB9f/LvQTQWp1MHG
|
||||
CM/WPl4qgsitmkROxSiyywcTAmnf46h4NVmu86Fe/RnvjNskuIxwKGLr9zEcmwfQsGuQPelJCYRwFF9/
|
||||
huD+HoDT8wu2Tz/Q2pv4vc0jYcjVQTx/68PTtg1Cw65CVtqdEuSXVP9Fo2qDBGJ8vRAvYtN/BKtLgHlx
|
||||
Dx9GncgqUqUe8q7UtK+Q4PrkS7pNy8gsUKQXVDbZETk5g27cBa15DZqxVZosldWGJWQ8fp1eUCS3xF/b
|
||||
SGSX6yEr0yKruAuZhcp4uQMPHr1KL/hPYZgL78LfVeQiZg4AAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="pasteToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJXSURBVDhPtZJdSFNhHMYPdGE3RR/UVVcF0U0UEVQXGYWt
|
||||
sNlikdii5SK2SckmS9tGas0cunRzadoW+THUprMSpUnREBqOvmdsRh8SOSPXsnY2N+eyeDrn3UaujCDo
|
||||
gYcD73mf3/+Dl/ovcvZr4bihQW+LCrL8fUgez6+edgPmuqX2CIL+DkT8V+EbqUGJmANDpQKXdWoYK4uJ
|
||||
k9GE2FCMtiEe6kYs2AlLkwLRyTaUSHh4MaTE2VNcKEWb4Xcew6R9NWTC/b8D2HA8ZEWj9ijcrhrQ7+sx
|
||||
MaLGW9dx9Jl5kAgy0VG6Ck8NFAoO/zJSd1ttAkBfh65UiHJFHtSFuThTwIdCzINcxIVUkIU62RoCyMvO
|
||||
TAd0NuswQ3dhJmBCdLwKgeeF8LYtJ/a0LoO7aREeGTNImHXWto3pAItJi+lAC6bHKhB9eRKRZwdB9y+G
|
||||
vtWOKlMvzl3qglJngVxjhkRlhLCoOh3Q3KDBlM+IyIgYU4+5CN/fhI+3VpBwSvHZbwiGYhibCCJXeh45
|
||||
+eqfELO+DPSrCoQfchAeXI/QwEr4WilSmVXzTSexyeqAZ9RPwneHvNjDFyUgDdUqfB4+jZBjHejbSxGw
|
||||
ZWD0GkXa/jr7HV/CTOUPQXje+OEafodsgRwcJrxr7wFkbt8Bqu5CMQIPpEx4CT71LMR4+wJ4GynImJnZ
|
||||
tlMdXGE6qLcMoG/QS76st25YC+pieRF5IKktpyxmFja38j3XaxK23XHDan+SDtCXnWBeGA8i/m7k7NxC
|
||||
frDbZmdOVZvPBPAnHWK2zV74m5PX/1UU9QOTNfjZ1V1+MwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="indexToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKWSURBVDhPjZJbSNNRHMf3HPRcYu+9Gb32VhAJ9RASlOBb
|
||||
b2aIFop5GXPeyrmp8zLNec01HbmpqJvabjbndHl3JTmGbk7zroUXKD79N5XMFPzCjwMHPp9zzu/8ROdF
|
||||
3eChpGSc7OxBsrIcHG1fLCE4VBMT69TVz6J5P4NUekHRMexyrVOumsBqW+OjOUC/eR5tiwdJtvN80Wm4
|
||||
q3sZh+MnA9YdbNYt+vvW0esXaWqeFm409K/oNNzRGcRi3qKnZ5X2jmXaBLBVN09T4xwqlQe5fIycvKFD
|
||||
wWlYbwiEQYMhSIt2gcZGLzU1s5SXT6NQjJKfP8KLZDMJz42caNhmGNa2zKPTLaB556O+bo6W9gCy1k1i
|
||||
S/eJke0gqQkgL58k/pkRffvgoUDbOoVc4aauwcvb6q9UlnlQlkyh1gVJ0kKVFT4vCOWHevsvHuf5aTN7
|
||||
mPP7EIklNrS6SSRSO7LiYWRFo7wpdFPb7CVRA7phWFzaJqPAxL0n6vBqcO1yJ9FNodKF6GWKEd9yAJNl
|
||||
jLT0PsRiW/jPc5tWUFkI5xgeGfOH19J6J1LNEnHxJkQZWRqKlb0sbQeZXxXeV2JBmmvnYcEGhrFDQSih
|
||||
W4QEtx5UUtE8StPAARHXKxC9LhoSTu4XyojZMcXGwXeszi9EiwPoTwh2fuyH4ZQcE3MrQi8se1yJzP87
|
||||
B5IcO+mZfRSX2fAGF1B1LyLv3D3CwSmcLq9x4RXgKaGZyaUeomPU/09keqaZV4Koy/KNu8njdLkP2PsN
|
||||
xk9+om4XM7MIFV1rXL6pJE9pOXukM8UWUtN6aWib4UasCXGtD61jj2brLkmKGS5FKUhI/cDAaOBswXFU
|
||||
1W6KlE7inrYTcS2Xq5EZ3H9UhUxlY2gyKMAi0R+3BHAuvd7mVQAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="searchToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAALGSURBVDhPldL/T01xHMfx/hczs8VmmC/zg1i7oa6pOXVL
|
||||
Jbrqlm5fbrluSqV7uynpdq/qtoh7C9Ei3eu0fBnKl6yFmSRkWF93VUZ2Q/Z0P2OuxmZe2/ntvB/nfD7v
|
||||
V8Dvya2UEY+hwk2+VcZY28n+Cheph86jKWzm52t/T15VBwdtMs6ubq6+7EMe7sA5VESGnIRkOklirhN1
|
||||
XuPfkQMWGZNDprX/Mg8+PGFgdpScthIsL/JJuaRkg7mcGFMP0YYGEvQn5iN68bs2N3W9VjrGHdyc6qVv
|
||||
pp8Br4eWERdJdjMK+1PW2NpYW6NGyqxkR1atHxFAsVPG/rCcmiE9jrc2nMNmah87ST3TgqZukpiK1yw9
|
||||
G8Hi06GsN6YTlVblB7LL2qlzv8EkW9h7fyuZvWHoHAZymnzHOn4Rk7UBQ3kl8dYUAqsVBJaFE6Ep9wMZ
|
||||
5jbqr8xSWF+P8qyCLXI06lor1Y0urnXdZszzjrfjHpoutBOXp2VBSQjKRJMf0Bpbsbq9HGjyEG9QE1q/
|
||||
G11TMZ03uhD5Ogcfvd8YnZrD1nCeddoINscX+IG9h1rIrHmF9vhnNNYhwnO1vnUeYWTC82t4/P1XBke+
|
||||
4Op+RkRcLMHRBj+QUnSO1NJbJB77RIJlimjjHfaXmhiemPwxPD3nG/5Mz6CXutYetkmRBEk6PyAaJkqy
|
||||
q+QBqsPjKIp6kYw62jtvMDbt+/LoF+4993K5b4Y0fQFh0k6K87P9gIhoWJzeSdTBOyzNNrNMF0uyLosT
|
||||
zW7augewX+ghbV8BkartNFtiabenU2XKmY+IhqnSq9mUYSVYnYpSY0ZKLkTasYtwSUVM5DZsuo2MnVLw
|
||||
7W4CjqNZfyKiYaIkYs9iVeK2xYWJM8cog0kOW8GjgpUM24OYdEWyL2nrfOBfEUBS6HKu61ezJ2QJqtBV
|
||||
/weICGTdskWErF3oGw4I+A4LpgTtu1iCBgAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="toolStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>126, 17</value>
|
||||
</metadata>
|
||||
<data name="bt1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAELSURBVDhPrZDJasJQGIXzUvoO9TX0jcQuSulCLUUECwot
|
||||
KtrSAbQWRDTg0CLBCY1xqmkcYo7c8ItJYy9Z+MHhLu453+IXzkbypY6/SeRriKXLiKaKZqh6Gjb4j+v4
|
||||
M7y+AF9y/yRS3UkomkbmvcaXxLMVqjsJhh/N8SE0sXP38El1J1t9Z0oOIprYiSQLVLdjGAZUbYOhopoC
|
||||
z4X/tOAm8UoTO+uNjslcgzSY8wVXsTxNjug7Awt1jb68RFOa8AWXtxmaHdFWW8jTX7R7M1RbMl/APq2w
|
||||
w81+VugMF6i3FZTEgXuB9XBfnSkqjRHeyl33AuvhxO8xitU+ch+SOwF7eeEK2Keb0OQcCMIe3/X1lqrb
|
||||
NIsAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="bt2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJYSURBVDhPvZFbSBNQHIf30ENPFmlRCEWWhD0MA0Oqh5Ck
|
||||
m6KUZoWRJpS3LhiKbVPbvE53c+pKh7lN19RptTIMK4RCkQgtdZSYmgVFpZgZKnn7GptokkEP0R9+L+ec
|
||||
7zs/zhH8l8kpMSPTWriSbyJPZ0WiNDK/9XcTnawjLF7lhC6IKsh0yFKyDUQllyCoN2tYLo218j/ekiAp
|
||||
JTxRRWh8oUvQ22VkcrTOmR8jFqaHDFhNKmzm7GUlYQlqQuO0BMcWI6irVDMxUr0Env1UyrQ9ieqKfKrK
|
||||
cjGUZKIvzOC6UkyxPHWptMaoYOKLcQGec8D0isEeu2x+E9wsl/P9o34BbqpXOPPAWkCDRc6dqlyshiws
|
||||
ehkm3VVuaNMoU4vRKUQuWZU+l7F3Rc7aAy1SbNVqZgdkMJi9NG8da/0S6EmGV4l01kZwKSYEgUGXxbe+
|
||||
fHiv5G6NiraHStehX6u/jIL2cGZag5h8FMCbSiHnTx9wCcq1Ur6+ljHYmo7NomSuXwrdcS6wM8YBnmCm
|
||||
LYTJ5v2MNe5huH4HsnhvTgZ6uN6iVJ3OcJeIW2YFHU8dTXqSHIKz0HGKuWdHmHpyiPGmvYzY/Phc40N7
|
||||
zmoig7zw2+bmEugKxHQ3Z3DbXAB9GfDCUff5MaZaghl/HMBogz9DViEfjFuxK92Rxm7Bd7vn4k8U5aVS
|
||||
Z8rHfi+Bdo1gIW3KFTTLV3I/cxW1aWsxpHpy7fImIg9vxt9346JAk52CRnqOPFE0kovHnQ9zJiKQowd3
|
||||
sW+3kJ1Cb3y8PNm4wYN1a9xY7z5f/d+MQPATMS7uX9kMtOAAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="bt3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIvSURBVDhPrZLdS9NRGMd//0L33QRddFtTYzgXq8GvXENZ
|
||||
Ngwrwl5+kWZpukwTFSvTqPkG2QqXTlqtJuGkIl/AFCkRZSpZmrmiJQ41xSaCwdfznP3yuIouogeem8P5
|
||||
fM55XqT/Es+fhUHpa11Ci3cRD93zaGoM4a5jGnW1X2C/FcD18kmUloyjsOAt8nJHcP6cHyouSQR2dQK1
|
||||
NSv4WyyvrMKU2oVDqU95qrgkeZ8scEFlxTf16u9BcGh+GbssL6DRKLAe9AiB+8EcF5SWfFWvR8dP+GNw
|
||||
ATFmHwouTeGApVkInA0zXHDR9kFFRGyEhydC2CZ7kZM9huQkpxDU3w5yQdbZERWLxK9wnz+IzQY3FGUA
|
||||
ZrNDCGqqP3OBcmpARf8Md/Z/wqb4Rhw+8gqJiXVCcKNyCh3tYKMEjh1/A+vRXt5tahjVTN+mlyNwN1Ks
|
||||
LyHLdiG4UjaBNh/YDgDNrh9s7t9Rfm2WN5UaRjVnZvjX4f3JrTAaK4TgcuEYPI+A+85VtjhhmNKyo9KS
|
||||
bkPamaIInMTgfR4YDGVCYMsbZTBQXRXmLxNE5zE6GYPvZzA6OQsl9yr2mFo4rNvtgl5fJAS0lo47WP82
|
||||
CQg+nX8T7wJzCEwv4kKxHbEGF4ObEJtwD7r4fCHIzBhidS9xeKvRgy07ZDxu64GvvQ8d3f3ofT2IvWYr
|
||||
NPoGxDF4u7YeWm1OtODkiR6+nrRhtCQ0ZxoVdZsaRjXTq5QE74zLEoJ/D0laA2xoOmtG+TV7AAAAAElF
|
||||
TkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="bt4.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIqSURBVDhPrZL7T1JxAMVZP/b/tLa2Wm21mail1YZlRjid
|
||||
k6JhTApClhGmktrDWlKjK3OBDrLAMWJaY9MZZJbo0umWQIEFXRPQMB6ne788HFpbW322s93d3fM598X5
|
||||
7xjtUxh0vId5dOaPMY14kL18O6zgrcePrWz8TMIbWMGgbQIlZy6DW31pu4Qts0ml0gjRETjdH0iGHC4Y
|
||||
LONwz/hQJVITQbZSiN7qxsfPdHYzA7u8Go1jdnEZJruLLP92XWsaB5sks+4LhgvWbc5puDxeVDaocOSs
|
||||
HBrtM9zps21KFJ1PSHnENZ9fzS0HwzHML4XRa3CglC+Dsqsfj0xjKGVEpNzUpof6/hAoyxs8MDqhf/4a
|
||||
tyk7rt4yQtyiBb+xA+U1ChSfluLkuevo1lkhUWlRnHuMm49fIBKLk+WtJJIprMcT5E6+0uv49CUKeTuF
|
||||
OmkXcweyjEB1zwzLq3d46nCDMr/E3b5hqHsGIGvXQdTcA8HFDvAaWnBUIEfRKQnOM+cqhdew/7goI1B2
|
||||
D8AfCGU3C4msbcAbXMVOcEh2UBzwxW0oqZZi1+GajKC504DpuSUw7ywPe/wtmsCcfw1jszQpW7OCY7UK
|
||||
7KsQbgqUGgqaXhN8oTjoWBqB72ksLqcwsfADw5NR9DtXSDGXQzwxKecF9ZJWyG7oMDrpJ9/2b1IgYJGo
|
||||
HqKiTokywRVwmd+0qKoJB3mNOHDiAvaWC7GnrB67ubX5YkH53+BwfgHgHTGbZU7qDAAAAABJRU5ErkJg
|
||||
gg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="bt5.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIqSURBVDhPrZL7T1JxAMVZP/b/tLa2Wm21mail1YZlRjid
|
||||
k6JhTApClhGmktrDWlKjK3OBDrLAMWJaY9MZZJbo0umWQIEFXRPQMB6ne788HFpbW322s93d3fM598X5
|
||||
7xjtUxh0vId5dOaPMY14kL18O6zgrcePrWz8TMIbWMGgbQIlZy6DW31pu4Qts0ml0gjRETjdH0iGHC4Y
|
||||
LONwz/hQJVITQbZSiN7qxsfPdHYzA7u8Go1jdnEZJruLLP92XWsaB5sks+4LhgvWbc5puDxeVDaocOSs
|
||||
HBrtM9zps21KFJ1PSHnENZ9fzS0HwzHML4XRa3CglC+Dsqsfj0xjKGVEpNzUpof6/hAoyxs8MDqhf/4a
|
||||
tyk7rt4yQtyiBb+xA+U1ChSfluLkuevo1lkhUWlRnHuMm49fIBKLk+WtJJIprMcT5E6+0uv49CUKeTuF
|
||||
OmkXcweyjEB1zwzLq3d46nCDMr/E3b5hqHsGIGvXQdTcA8HFDvAaWnBUIEfRKQnOM+cqhdew/7goI1B2
|
||||
D8AfCGU3C4msbcAbXMVOcEh2UBzwxW0oqZZi1+GajKC504DpuSUw7ywPe/wtmsCcfw1jszQpW7OCY7UK
|
||||
7KsQbgqUGgqaXhN8oTjoWBqB72ksLqcwsfADw5NR9DtXSDGXQzwxKecF9ZJWyG7oMDrpJ9/2b1IgYJGo
|
||||
HqKiTokywRVwmd+0qKoJB3mNOHDiAvaWC7GnrB67ubX5YkH53+BwfgHgHTGbZU7qDAAAAABJRU5ErkJg
|
||||
gg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="bt6.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIqSURBVDhPrZL7T1JxAMVZP/b/tLa2Wm21mail1YZlRjid
|
||||
k6JhTApClhGmktrDWlKjK3OBDrLAMWJaY9MZZJbo0umWQIEFXRPQMB6ne788HFpbW322s93d3fM598X5
|
||||
7xjtUxh0vId5dOaPMY14kL18O6zgrcePrWz8TMIbWMGgbQIlZy6DW31pu4Qts0ml0gjRETjdH0iGHC4Y
|
||||
LONwz/hQJVITQbZSiN7qxsfPdHYzA7u8Go1jdnEZJruLLP92XWsaB5sks+4LhgvWbc5puDxeVDaocOSs
|
||||
HBrtM9zps21KFJ1PSHnENZ9fzS0HwzHML4XRa3CglC+Dsqsfj0xjKGVEpNzUpof6/hAoyxs8MDqhf/4a
|
||||
tyk7rt4yQtyiBb+xA+U1ChSfluLkuevo1lkhUWlRnHuMm49fIBKLk+WtJJIprMcT5E6+0uv49CUKeTuF
|
||||
OmkXcweyjEB1zwzLq3d46nCDMr/E3b5hqHsGIGvXQdTcA8HFDvAaWnBUIEfRKQnOM+cqhdew/7goI1B2
|
||||
D8AfCGU3C4msbcAbXMVOcEh2UBzwxW0oqZZi1+GajKC504DpuSUw7ywPe/wtmsCcfw1jszQpW7OCY7UK
|
||||
7KsQbgqUGgqaXhN8oTjoWBqB72ksLqcwsfADw5NR9DtXSDGXQzwxKecF9ZJWyG7oMDrpJ9/2b1IgYJGo
|
||||
HqKiTokywRVwmd+0qKoJB3mNOHDiAvaWC7GnrB67ubX5YkH53+BwfgHgHTGbZU7qDAAAAABJRU5ErkJg
|
||||
gg==
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="statusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>225, 17</value>
|
||||
</metadata>
|
||||
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>335, 17</value>
|
||||
</metadata>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>51</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@@ -1,35 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 이 코드는 템플릿에서 생성되었습니다.
|
||||
//
|
||||
// 이 파일을 수동으로 변경하면 응용 프로그램에서 예기치 않은 동작이 발생할 수 있습니다.
|
||||
// 이 파일을 수동으로 변경하면 코드가 다시 생성될 때 변경 내용을 덮어씁니다.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
public partial class MailData
|
||||
{
|
||||
public int idx { get; set; }
|
||||
public Nullable<int> project { get; set; }
|
||||
public string gcode { get; set; }
|
||||
public string cate { get; set; }
|
||||
public string pdate { get; set; }
|
||||
public string subject { get; set; }
|
||||
public string fromlist { get; set; }
|
||||
public string tolist { get; set; }
|
||||
public string bcc { get; set; }
|
||||
public string cc { get; set; }
|
||||
public string body { get; set; }
|
||||
public Nullable<bool> SendOK { get; set; }
|
||||
public string SendMsg { get; set; }
|
||||
public Nullable<int> aidx { get; set; }
|
||||
public string atime { get; set; }
|
||||
public string wuid { get; set; }
|
||||
public System.DateTime wdate { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 이 코드는 템플릿에서 생성되었습니다.
|
||||
//
|
||||
// 이 파일을 수동으로 변경하면 응용 프로그램에서 예기치 않은 동작이 발생할 수 있습니다.
|
||||
// 이 파일을 수동으로 변경하면 코드가 다시 생성될 때 변경 내용을 덮어씁니다.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
public partial class MailForm
|
||||
{
|
||||
public int idx { get; set; }
|
||||
public string gcode { get; set; }
|
||||
public string cate { get; set; }
|
||||
public string title { get; set; }
|
||||
public string tolist { get; set; }
|
||||
public string bcc { get; set; }
|
||||
public string cc { get; set; }
|
||||
public string subject { get; set; }
|
||||
public string tail { get; set; }
|
||||
public string body { get; set; }
|
||||
public Nullable<bool> selfTo { get; set; }
|
||||
public Nullable<bool> selfCC { get; set; }
|
||||
public Nullable<bool> selfBCC { get; set; }
|
||||
public string wuid { get; set; }
|
||||
public System.DateTime wdate { get; set; }
|
||||
public string exceptmail { get; set; }
|
||||
public string exceptmailcc { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 이 코드는 템플릿에서 생성되었습니다.
|
||||
//
|
||||
// 이 파일을 수동으로 변경하면 응용 프로그램에서 예기치 않은 동작이 발생할 수 있습니다.
|
||||
// 이 파일을 수동으로 변경하면 코드가 다시 생성될 때 변경 내용을 덮어씁니다.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
using System;
|
||||
using System.Data.Entity;
|
||||
using System.Data.Entity.Infrastructure;
|
||||
|
||||
public partial class EEEntities : DbContext
|
||||
{
|
||||
public EEEntities()
|
||||
: base("name=EEEntities")
|
||||
{
|
||||
}
|
||||
|
||||
protected override void OnModelCreating(DbModelBuilder modelBuilder)
|
||||
{
|
||||
throw new UnintentionalCodeFirstException();
|
||||
}
|
||||
|
||||
public virtual DbSet<JobReport> JobReport { get; set; }
|
||||
public virtual DbSet<MailData> MailData { get; set; }
|
||||
public virtual DbSet<vGroupUser> vGroupUser { get; set; }
|
||||
public virtual DbSet<HolidayLIst> HolidayLIst { get; set; }
|
||||
public virtual DbSet<MailForm> MailForm { get; set; }
|
||||
public virtual DbSet<EETGW_ProjectToDo> EETGW_ProjectToDo { get; set; }
|
||||
public virtual DbSet<Projects> Projects { get; set; }
|
||||
public virtual DbSet<EETGW_ProjectsSchedule> EETGW_ProjectsSchedule { get; set; }
|
||||
public virtual DbSet<vJobReportForUser> vJobReportForUser { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,636 +0,0 @@
|
||||
<#@ template language="C#" debug="false" hostspecific="true"#>
|
||||
<#@ include file="EF6.Utility.CS.ttinclude"#><#@
|
||||
output extension=".cs"#><#
|
||||
|
||||
const string inputFile = @"Model1.edmx";
|
||||
var textTransform = DynamicTextTransformation.Create(this);
|
||||
var code = new CodeGenerationTools(this);
|
||||
var ef = new MetadataTools(this);
|
||||
var typeMapper = new TypeMapper(code, ef, textTransform.Errors);
|
||||
var loader = new EdmMetadataLoader(textTransform.Host, textTransform.Errors);
|
||||
var itemCollection = loader.CreateEdmItemCollection(inputFile);
|
||||
var modelNamespace = loader.GetModelNamespace(inputFile);
|
||||
var codeStringGenerator = new CodeStringGenerator(code, typeMapper, ef);
|
||||
|
||||
var container = itemCollection.OfType<EntityContainer>().FirstOrDefault();
|
||||
if (container == null)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
#>
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// <#=CodeGenerationTools.GetResourceString("Template_GeneratedCodeCommentLine1")#>
|
||||
//
|
||||
// <#=CodeGenerationTools.GetResourceString("Template_GeneratedCodeCommentLine2")#>
|
||||
// <#=CodeGenerationTools.GetResourceString("Template_GeneratedCodeCommentLine3")#>
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
<#
|
||||
|
||||
var codeNamespace = code.VsNamespaceSuggestion();
|
||||
if (!String.IsNullOrEmpty(codeNamespace))
|
||||
{
|
||||
#>
|
||||
namespace <#=code.EscapeNamespace(codeNamespace)#>
|
||||
{
|
||||
<#
|
||||
PushIndent(" ");
|
||||
}
|
||||
|
||||
#>
|
||||
using System;
|
||||
using System.Data.Entity;
|
||||
using System.Data.Entity.Infrastructure;
|
||||
<#
|
||||
if (container.FunctionImports.Any())
|
||||
{
|
||||
#>
|
||||
using System.Data.Entity.Core.Objects;
|
||||
using System.Linq;
|
||||
<#
|
||||
}
|
||||
#>
|
||||
|
||||
<#=Accessibility.ForType(container)#> partial class <#=code.Escape(container)#> : DbContext
|
||||
{
|
||||
public <#=code.Escape(container)#>()
|
||||
: base("name=<#=container.Name#>")
|
||||
{
|
||||
<#
|
||||
if (!loader.IsLazyLoadingEnabled(container))
|
||||
{
|
||||
#>
|
||||
this.Configuration.LazyLoadingEnabled = false;
|
||||
<#
|
||||
}
|
||||
|
||||
foreach (var entitySet in container.BaseEntitySets.OfType<EntitySet>())
|
||||
{
|
||||
// Note: the DbSet members are defined below such that the getter and
|
||||
// setter always have the same accessibility as the DbSet definition
|
||||
if (Accessibility.ForReadOnlyProperty(entitySet) != "public")
|
||||
{
|
||||
#>
|
||||
<#=codeStringGenerator.DbSetInitializer(entitySet)#>
|
||||
<#
|
||||
}
|
||||
}
|
||||
#>
|
||||
}
|
||||
|
||||
protected override void OnModelCreating(DbModelBuilder modelBuilder)
|
||||
{
|
||||
throw new UnintentionalCodeFirstException();
|
||||
}
|
||||
|
||||
<#
|
||||
foreach (var entitySet in container.BaseEntitySets.OfType<EntitySet>())
|
||||
{
|
||||
#>
|
||||
<#=codeStringGenerator.DbSet(entitySet)#>
|
||||
<#
|
||||
}
|
||||
|
||||
foreach (var edmFunction in container.FunctionImports)
|
||||
{
|
||||
WriteFunctionImport(typeMapper, codeStringGenerator, edmFunction, modelNamespace, includeMergeOption: false);
|
||||
}
|
||||
#>
|
||||
}
|
||||
<#
|
||||
|
||||
if (!String.IsNullOrEmpty(codeNamespace))
|
||||
{
|
||||
PopIndent();
|
||||
#>
|
||||
}
|
||||
<#
|
||||
}
|
||||
#>
|
||||
<#+
|
||||
|
||||
private void WriteFunctionImport(TypeMapper typeMapper, CodeStringGenerator codeStringGenerator, EdmFunction edmFunction, string modelNamespace, bool includeMergeOption)
|
||||
{
|
||||
if (typeMapper.IsComposable(edmFunction))
|
||||
{
|
||||
#>
|
||||
|
||||
[DbFunction("<#=edmFunction.NamespaceName#>", "<#=edmFunction.Name#>")]
|
||||
<#=codeStringGenerator.ComposableFunctionMethod(edmFunction, modelNamespace)#>
|
||||
{
|
||||
<#+
|
||||
codeStringGenerator.WriteFunctionParameters(edmFunction, WriteFunctionParameter);
|
||||
#>
|
||||
<#=codeStringGenerator.ComposableCreateQuery(edmFunction, modelNamespace)#>
|
||||
}
|
||||
<#+
|
||||
}
|
||||
else
|
||||
{
|
||||
#>
|
||||
|
||||
<#=codeStringGenerator.FunctionMethod(edmFunction, modelNamespace, includeMergeOption)#>
|
||||
{
|
||||
<#+
|
||||
codeStringGenerator.WriteFunctionParameters(edmFunction, WriteFunctionParameter);
|
||||
#>
|
||||
<#=codeStringGenerator.ExecuteFunction(edmFunction, modelNamespace, includeMergeOption)#>
|
||||
}
|
||||
<#+
|
||||
if (typeMapper.GenerateMergeOptionFunction(edmFunction, includeMergeOption))
|
||||
{
|
||||
WriteFunctionImport(typeMapper, codeStringGenerator, edmFunction, modelNamespace, includeMergeOption: true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void WriteFunctionParameter(string name, string isNotNull, string notNullInit, string nullInit)
|
||||
{
|
||||
#>
|
||||
var <#=name#> = <#=isNotNull#> ?
|
||||
<#=notNullInit#> :
|
||||
<#=nullInit#>;
|
||||
|
||||
<#+
|
||||
}
|
||||
|
||||
public const string TemplateId = "CSharp_DbContext_Context_EF6";
|
||||
|
||||
public class CodeStringGenerator
|
||||
{
|
||||
private readonly CodeGenerationTools _code;
|
||||
private readonly TypeMapper _typeMapper;
|
||||
private readonly MetadataTools _ef;
|
||||
|
||||
public CodeStringGenerator(CodeGenerationTools code, TypeMapper typeMapper, MetadataTools ef)
|
||||
{
|
||||
ArgumentNotNull(code, "code");
|
||||
ArgumentNotNull(typeMapper, "typeMapper");
|
||||
ArgumentNotNull(ef, "ef");
|
||||
|
||||
_code = code;
|
||||
_typeMapper = typeMapper;
|
||||
_ef = ef;
|
||||
}
|
||||
|
||||
public string Property(EdmProperty edmProperty)
|
||||
{
|
||||
return string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"{0} {1} {2} {{ {3}get; {4}set; }}",
|
||||
Accessibility.ForProperty(edmProperty),
|
||||
_typeMapper.GetTypeName(edmProperty.TypeUsage),
|
||||
_code.Escape(edmProperty),
|
||||
_code.SpaceAfter(Accessibility.ForGetter(edmProperty)),
|
||||
_code.SpaceAfter(Accessibility.ForSetter(edmProperty)));
|
||||
}
|
||||
|
||||
public string NavigationProperty(NavigationProperty navProp)
|
||||
{
|
||||
var endType = _typeMapper.GetTypeName(navProp.ToEndMember.GetEntityType());
|
||||
return string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"{0} {1} {2} {{ {3}get; {4}set; }}",
|
||||
AccessibilityAndVirtual(Accessibility.ForNavigationProperty(navProp)),
|
||||
navProp.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many ? ("ICollection<" + endType + ">") : endType,
|
||||
_code.Escape(navProp),
|
||||
_code.SpaceAfter(Accessibility.ForGetter(navProp)),
|
||||
_code.SpaceAfter(Accessibility.ForSetter(navProp)));
|
||||
}
|
||||
|
||||
public string AccessibilityAndVirtual(string accessibility)
|
||||
{
|
||||
return accessibility + (accessibility != "private" ? " virtual" : "");
|
||||
}
|
||||
|
||||
public string EntityClassOpening(EntityType entity)
|
||||
{
|
||||
return string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"{0} {1}partial class {2}{3}",
|
||||
Accessibility.ForType(entity),
|
||||
_code.SpaceAfter(_code.AbstractOption(entity)),
|
||||
_code.Escape(entity),
|
||||
_code.StringBefore(" : ", _typeMapper.GetTypeName(entity.BaseType)));
|
||||
}
|
||||
|
||||
public string EnumOpening(SimpleType enumType)
|
||||
{
|
||||
return string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"{0} enum {1} : {2}",
|
||||
Accessibility.ForType(enumType),
|
||||
_code.Escape(enumType),
|
||||
_code.Escape(_typeMapper.UnderlyingClrType(enumType)));
|
||||
}
|
||||
|
||||
public void WriteFunctionParameters(EdmFunction edmFunction, Action<string, string, string, string> writeParameter)
|
||||
{
|
||||
var parameters = FunctionImportParameter.Create(edmFunction.Parameters, _code, _ef);
|
||||
foreach (var parameter in parameters.Where(p => p.NeedsLocalVariable))
|
||||
{
|
||||
var isNotNull = parameter.IsNullableOfT ? parameter.FunctionParameterName + ".HasValue" : parameter.FunctionParameterName + " != null";
|
||||
var notNullInit = "new ObjectParameter(\"" + parameter.EsqlParameterName + "\", " + parameter.FunctionParameterName + ")";
|
||||
var nullInit = "new ObjectParameter(\"" + parameter.EsqlParameterName + "\", typeof(" + TypeMapper.FixNamespaces(parameter.RawClrTypeName) + "))";
|
||||
writeParameter(parameter.LocalVariableName, isNotNull, notNullInit, nullInit);
|
||||
}
|
||||
}
|
||||
|
||||
public string ComposableFunctionMethod(EdmFunction edmFunction, string modelNamespace)
|
||||
{
|
||||
var parameters = _typeMapper.GetParameters(edmFunction);
|
||||
|
||||
return string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"{0} IQueryable<{1}> {2}({3})",
|
||||
AccessibilityAndVirtual(Accessibility.ForMethod(edmFunction)),
|
||||
_typeMapper.GetTypeName(_typeMapper.GetReturnType(edmFunction), modelNamespace),
|
||||
_code.Escape(edmFunction),
|
||||
string.Join(", ", parameters.Select(p => TypeMapper.FixNamespaces(p.FunctionParameterType) + " " + p.FunctionParameterName).ToArray()));
|
||||
}
|
||||
|
||||
public string ComposableCreateQuery(EdmFunction edmFunction, string modelNamespace)
|
||||
{
|
||||
var parameters = _typeMapper.GetParameters(edmFunction);
|
||||
|
||||
return string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"return ((IObjectContextAdapter)this).ObjectContext.CreateQuery<{0}>(\"[{1}].[{2}]({3})\"{4});",
|
||||
_typeMapper.GetTypeName(_typeMapper.GetReturnType(edmFunction), modelNamespace),
|
||||
edmFunction.NamespaceName,
|
||||
edmFunction.Name,
|
||||
string.Join(", ", parameters.Select(p => "@" + p.EsqlParameterName).ToArray()),
|
||||
_code.StringBefore(", ", string.Join(", ", parameters.Select(p => p.ExecuteParameterName).ToArray())));
|
||||
}
|
||||
|
||||
public string FunctionMethod(EdmFunction edmFunction, string modelNamespace, bool includeMergeOption)
|
||||
{
|
||||
var parameters = _typeMapper.GetParameters(edmFunction);
|
||||
var returnType = _typeMapper.GetReturnType(edmFunction);
|
||||
|
||||
var paramList = String.Join(", ", parameters.Select(p => TypeMapper.FixNamespaces(p.FunctionParameterType) + " " + p.FunctionParameterName).ToArray());
|
||||
if (includeMergeOption)
|
||||
{
|
||||
paramList = _code.StringAfter(paramList, ", ") + "MergeOption mergeOption";
|
||||
}
|
||||
|
||||
return string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"{0} {1} {2}({3})",
|
||||
AccessibilityAndVirtual(Accessibility.ForMethod(edmFunction)),
|
||||
returnType == null ? "int" : "ObjectResult<" + _typeMapper.GetTypeName(returnType, modelNamespace) + ">",
|
||||
_code.Escape(edmFunction),
|
||||
paramList);
|
||||
}
|
||||
|
||||
public string ExecuteFunction(EdmFunction edmFunction, string modelNamespace, bool includeMergeOption)
|
||||
{
|
||||
var parameters = _typeMapper.GetParameters(edmFunction);
|
||||
var returnType = _typeMapper.GetReturnType(edmFunction);
|
||||
|
||||
var callParams = _code.StringBefore(", ", String.Join(", ", parameters.Select(p => p.ExecuteParameterName).ToArray()));
|
||||
if (includeMergeOption)
|
||||
{
|
||||
callParams = ", mergeOption" + callParams;
|
||||
}
|
||||
|
||||
return string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction{0}(\"{1}\"{2});",
|
||||
returnType == null ? "" : "<" + _typeMapper.GetTypeName(returnType, modelNamespace) + ">",
|
||||
edmFunction.Name,
|
||||
callParams);
|
||||
}
|
||||
|
||||
public string DbSet(EntitySet entitySet)
|
||||
{
|
||||
return string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"{0} virtual DbSet<{1}> {2} {{ get; set; }}",
|
||||
Accessibility.ForReadOnlyProperty(entitySet),
|
||||
_typeMapper.GetTypeName(entitySet.ElementType),
|
||||
_code.Escape(entitySet));
|
||||
}
|
||||
|
||||
public string DbSetInitializer(EntitySet entitySet)
|
||||
{
|
||||
return string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"{0} = Set<{1}>();",
|
||||
_code.Escape(entitySet),
|
||||
_typeMapper.GetTypeName(entitySet.ElementType));
|
||||
}
|
||||
|
||||
public string UsingDirectives(bool inHeader, bool includeCollections = true)
|
||||
{
|
||||
return inHeader == string.IsNullOrEmpty(_code.VsNamespaceSuggestion())
|
||||
? string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"{0}using System;{1}" +
|
||||
"{2}",
|
||||
inHeader ? Environment.NewLine : "",
|
||||
includeCollections ? (Environment.NewLine + "using System.Collections.Generic;") : "",
|
||||
inHeader ? "" : Environment.NewLine)
|
||||
: "";
|
||||
}
|
||||
}
|
||||
|
||||
public class TypeMapper
|
||||
{
|
||||
private const string ExternalTypeNameAttributeName = @"http://schemas.microsoft.com/ado/2006/04/codegeneration:ExternalTypeName";
|
||||
|
||||
private readonly System.Collections.IList _errors;
|
||||
private readonly CodeGenerationTools _code;
|
||||
private readonly MetadataTools _ef;
|
||||
|
||||
public static string FixNamespaces(string typeName)
|
||||
{
|
||||
return typeName.Replace("System.Data.Spatial.", "System.Data.Entity.Spatial.");
|
||||
}
|
||||
|
||||
public TypeMapper(CodeGenerationTools code, MetadataTools ef, System.Collections.IList errors)
|
||||
{
|
||||
ArgumentNotNull(code, "code");
|
||||
ArgumentNotNull(ef, "ef");
|
||||
ArgumentNotNull(errors, "errors");
|
||||
|
||||
_code = code;
|
||||
_ef = ef;
|
||||
_errors = errors;
|
||||
}
|
||||
|
||||
public string GetTypeName(TypeUsage typeUsage)
|
||||
{
|
||||
return typeUsage == null ? null : GetTypeName(typeUsage.EdmType, _ef.IsNullable(typeUsage), modelNamespace: null);
|
||||
}
|
||||
|
||||
public string GetTypeName(EdmType edmType)
|
||||
{
|
||||
return GetTypeName(edmType, isNullable: null, modelNamespace: null);
|
||||
}
|
||||
|
||||
public string GetTypeName(TypeUsage typeUsage, string modelNamespace)
|
||||
{
|
||||
return typeUsage == null ? null : GetTypeName(typeUsage.EdmType, _ef.IsNullable(typeUsage), modelNamespace);
|
||||
}
|
||||
|
||||
public string GetTypeName(EdmType edmType, string modelNamespace)
|
||||
{
|
||||
return GetTypeName(edmType, isNullable: null, modelNamespace: modelNamespace);
|
||||
}
|
||||
|
||||
public string GetTypeName(EdmType edmType, bool? isNullable, string modelNamespace)
|
||||
{
|
||||
if (edmType == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var collectionType = edmType as CollectionType;
|
||||
if (collectionType != null)
|
||||
{
|
||||
return String.Format(CultureInfo.InvariantCulture, "ICollection<{0}>", GetTypeName(collectionType.TypeUsage, modelNamespace));
|
||||
}
|
||||
|
||||
var typeName = _code.Escape(edmType.MetadataProperties
|
||||
.Where(p => p.Name == ExternalTypeNameAttributeName)
|
||||
.Select(p => (string)p.Value)
|
||||
.FirstOrDefault())
|
||||
?? (modelNamespace != null && edmType.NamespaceName != modelNamespace ?
|
||||
_code.CreateFullName(_code.EscapeNamespace(edmType.NamespaceName), _code.Escape(edmType)) :
|
||||
_code.Escape(edmType));
|
||||
|
||||
if (edmType is StructuralType)
|
||||
{
|
||||
return typeName;
|
||||
}
|
||||
|
||||
if (edmType is SimpleType)
|
||||
{
|
||||
var clrType = UnderlyingClrType(edmType);
|
||||
if (!IsEnumType(edmType))
|
||||
{
|
||||
typeName = _code.Escape(clrType);
|
||||
}
|
||||
|
||||
typeName = FixNamespaces(typeName);
|
||||
|
||||
return clrType.IsValueType && isNullable == true ?
|
||||
String.Format(CultureInfo.InvariantCulture, "Nullable<{0}>", typeName) :
|
||||
typeName;
|
||||
}
|
||||
|
||||
throw new ArgumentException("edmType");
|
||||
}
|
||||
|
||||
public Type UnderlyingClrType(EdmType edmType)
|
||||
{
|
||||
ArgumentNotNull(edmType, "edmType");
|
||||
|
||||
var primitiveType = edmType as PrimitiveType;
|
||||
if (primitiveType != null)
|
||||
{
|
||||
return primitiveType.ClrEquivalentType;
|
||||
}
|
||||
|
||||
if (IsEnumType(edmType))
|
||||
{
|
||||
return GetEnumUnderlyingType(edmType).ClrEquivalentType;
|
||||
}
|
||||
|
||||
return typeof(object);
|
||||
}
|
||||
|
||||
public object GetEnumMemberValue(MetadataItem enumMember)
|
||||
{
|
||||
ArgumentNotNull(enumMember, "enumMember");
|
||||
|
||||
var valueProperty = enumMember.GetType().GetProperty("Value");
|
||||
return valueProperty == null ? null : valueProperty.GetValue(enumMember, null);
|
||||
}
|
||||
|
||||
public string GetEnumMemberName(MetadataItem enumMember)
|
||||
{
|
||||
ArgumentNotNull(enumMember, "enumMember");
|
||||
|
||||
var nameProperty = enumMember.GetType().GetProperty("Name");
|
||||
return nameProperty == null ? null : (string)nameProperty.GetValue(enumMember, null);
|
||||
}
|
||||
|
||||
public System.Collections.IEnumerable GetEnumMembers(EdmType enumType)
|
||||
{
|
||||
ArgumentNotNull(enumType, "enumType");
|
||||
|
||||
var membersProperty = enumType.GetType().GetProperty("Members");
|
||||
return membersProperty != null
|
||||
? (System.Collections.IEnumerable)membersProperty.GetValue(enumType, null)
|
||||
: Enumerable.Empty<MetadataItem>();
|
||||
}
|
||||
|
||||
public bool EnumIsFlags(EdmType enumType)
|
||||
{
|
||||
ArgumentNotNull(enumType, "enumType");
|
||||
|
||||
var isFlagsProperty = enumType.GetType().GetProperty("IsFlags");
|
||||
return isFlagsProperty != null && (bool)isFlagsProperty.GetValue(enumType, null);
|
||||
}
|
||||
|
||||
public bool IsEnumType(GlobalItem edmType)
|
||||
{
|
||||
ArgumentNotNull(edmType, "edmType");
|
||||
|
||||
return edmType.GetType().Name == "EnumType";
|
||||
}
|
||||
|
||||
public PrimitiveType GetEnumUnderlyingType(EdmType enumType)
|
||||
{
|
||||
ArgumentNotNull(enumType, "enumType");
|
||||
|
||||
return (PrimitiveType)enumType.GetType().GetProperty("UnderlyingType").GetValue(enumType, null);
|
||||
}
|
||||
|
||||
public string CreateLiteral(object value)
|
||||
{
|
||||
if (value == null || value.GetType() != typeof(TimeSpan))
|
||||
{
|
||||
return _code.CreateLiteral(value);
|
||||
}
|
||||
|
||||
return string.Format(CultureInfo.InvariantCulture, "new TimeSpan({0})", ((TimeSpan)value).Ticks);
|
||||
}
|
||||
|
||||
public bool VerifyCaseInsensitiveTypeUniqueness(IEnumerable<string> types, string sourceFile)
|
||||
{
|
||||
ArgumentNotNull(types, "types");
|
||||
ArgumentNotNull(sourceFile, "sourceFile");
|
||||
|
||||
var hash = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);
|
||||
if (types.Any(item => !hash.Add(item)))
|
||||
{
|
||||
_errors.Add(
|
||||
new CompilerError(sourceFile, -1, -1, "6023",
|
||||
String.Format(CultureInfo.CurrentCulture, CodeGenerationTools.GetResourceString("Template_CaseInsensitiveTypeConflict"))));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public IEnumerable<SimpleType> GetEnumItemsToGenerate(IEnumerable<GlobalItem> itemCollection)
|
||||
{
|
||||
return GetItemsToGenerate<SimpleType>(itemCollection)
|
||||
.Where(e => IsEnumType(e));
|
||||
}
|
||||
|
||||
public IEnumerable<T> GetItemsToGenerate<T>(IEnumerable<GlobalItem> itemCollection) where T: EdmType
|
||||
{
|
||||
return itemCollection
|
||||
.OfType<T>()
|
||||
.Where(i => !i.MetadataProperties.Any(p => p.Name == ExternalTypeNameAttributeName))
|
||||
.OrderBy(i => i.Name);
|
||||
}
|
||||
|
||||
public IEnumerable<string> GetAllGlobalItems(IEnumerable<GlobalItem> itemCollection)
|
||||
{
|
||||
return itemCollection
|
||||
.Where(i => i is EntityType || i is ComplexType || i is EntityContainer || IsEnumType(i))
|
||||
.Select(g => GetGlobalItemName(g));
|
||||
}
|
||||
|
||||
public string GetGlobalItemName(GlobalItem item)
|
||||
{
|
||||
if (item is EdmType)
|
||||
{
|
||||
return ((EdmType)item).Name;
|
||||
}
|
||||
else
|
||||
{
|
||||
return ((EntityContainer)item).Name;
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<EdmProperty> GetSimpleProperties(EntityType type)
|
||||
{
|
||||
return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type);
|
||||
}
|
||||
|
||||
public IEnumerable<EdmProperty> GetSimpleProperties(ComplexType type)
|
||||
{
|
||||
return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type);
|
||||
}
|
||||
|
||||
public IEnumerable<EdmProperty> GetComplexProperties(EntityType type)
|
||||
{
|
||||
return type.Properties.Where(p => p.TypeUsage.EdmType is ComplexType && p.DeclaringType == type);
|
||||
}
|
||||
|
||||
public IEnumerable<EdmProperty> GetComplexProperties(ComplexType type)
|
||||
{
|
||||
return type.Properties.Where(p => p.TypeUsage.EdmType is ComplexType && p.DeclaringType == type);
|
||||
}
|
||||
|
||||
public IEnumerable<EdmProperty> GetPropertiesWithDefaultValues(EntityType type)
|
||||
{
|
||||
return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type && p.DefaultValue != null);
|
||||
}
|
||||
|
||||
public IEnumerable<EdmProperty> GetPropertiesWithDefaultValues(ComplexType type)
|
||||
{
|
||||
return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type && p.DefaultValue != null);
|
||||
}
|
||||
|
||||
public IEnumerable<NavigationProperty> GetNavigationProperties(EntityType type)
|
||||
{
|
||||
return type.NavigationProperties.Where(np => np.DeclaringType == type);
|
||||
}
|
||||
|
||||
public IEnumerable<NavigationProperty> GetCollectionNavigationProperties(EntityType type)
|
||||
{
|
||||
return type.NavigationProperties.Where(np => np.DeclaringType == type && np.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many);
|
||||
}
|
||||
|
||||
public FunctionParameter GetReturnParameter(EdmFunction edmFunction)
|
||||
{
|
||||
ArgumentNotNull(edmFunction, "edmFunction");
|
||||
|
||||
var returnParamsProperty = edmFunction.GetType().GetProperty("ReturnParameters");
|
||||
return returnParamsProperty == null
|
||||
? edmFunction.ReturnParameter
|
||||
: ((IEnumerable<FunctionParameter>)returnParamsProperty.GetValue(edmFunction, null)).FirstOrDefault();
|
||||
}
|
||||
|
||||
public bool IsComposable(EdmFunction edmFunction)
|
||||
{
|
||||
ArgumentNotNull(edmFunction, "edmFunction");
|
||||
|
||||
var isComposableProperty = edmFunction.GetType().GetProperty("IsComposableAttribute");
|
||||
return isComposableProperty != null && (bool)isComposableProperty.GetValue(edmFunction, null);
|
||||
}
|
||||
|
||||
public IEnumerable<FunctionImportParameter> GetParameters(EdmFunction edmFunction)
|
||||
{
|
||||
return FunctionImportParameter.Create(edmFunction.Parameters, _code, _ef);
|
||||
}
|
||||
|
||||
public TypeUsage GetReturnType(EdmFunction edmFunction)
|
||||
{
|
||||
var returnParam = GetReturnParameter(edmFunction);
|
||||
return returnParam == null ? null : _ef.GetElementType(returnParam.TypeUsage);
|
||||
}
|
||||
|
||||
public bool GenerateMergeOptionFunction(EdmFunction edmFunction, bool includeMergeOption)
|
||||
{
|
||||
var returnType = GetReturnType(edmFunction);
|
||||
return !includeMergeOption && returnType != null && returnType.EdmType.BuiltInTypeKind == BuiltInTypeKind.EntityType;
|
||||
}
|
||||
}
|
||||
|
||||
public static void ArgumentNotNull<T>(T arg, string name) where T : class
|
||||
{
|
||||
if (arg == null)
|
||||
{
|
||||
throw new ArgumentNullException(name);
|
||||
}
|
||||
}
|
||||
#>
|
||||
10
JobReportMailService/Model1.Designer.cs
generated
10
JobReportMailService/Model1.Designer.cs
generated
@@ -1,10 +0,0 @@
|
||||
// 모델 'D:\Source\##### 완료아이템\(014) GroupWare\Source\JobReportMailService\Model1.edmx'에 대해 T4 코드 생성이 사용됩니다.
|
||||
// 레거시 코드 생성을 사용하려면 '코드 생성 전략' 디자이너 속성의 값을
|
||||
// 'Legacy ObjectContext'로 변경하십시오. 이 속성은 모델이 디자이너에서 열릴 때
|
||||
// 속성 창에서 사용할 수 있습니다.
|
||||
|
||||
// 컨텍스트 및 엔터티 클래스가 생성되지 않은 경우 빈 모델을 만들었기 때문일 수도 있지만
|
||||
// 사용할 Entity Framework 버전을 선택하지 않았기 때문일 수도 있습니다. 모델에 맞는 컨텍스트 클래스 및
|
||||
// 엔터티 클래스를 생성하려면 디자이너에서 모델을 열고 디자이너 화면에서 마우스 오른쪽 단추를 클릭한
|
||||
// 다음 '데이터베이스에서 모델 업데이트...', '모델에서 데이터베이스 생성...' 또는 '코드 생성 항목 추가...'를
|
||||
// 선택하십시오.
|
||||
@@ -1,9 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 이 코드는 템플릿에서 생성되었습니다.
|
||||
//
|
||||
// 이 파일을 수동으로 변경하면 응용 프로그램에서 예기치 않은 동작이 발생할 수 있습니다.
|
||||
// 이 파일을 수동으로 변경하면 코드가 다시 생성될 때 변경 내용을 덮어씁니다.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -1,887 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<edmx:Edmx Version="3.0" xmlns:edmx="http://schemas.microsoft.com/ado/2009/11/edmx">
|
||||
<!-- EF Runtime content -->
|
||||
<edmx:Runtime>
|
||||
<!-- SSDL content -->
|
||||
<edmx:StorageModels>
|
||||
<Schema Namespace="EEModel.Store" Provider="System.Data.SqlClient" ProviderManifestToken="2008" Alias="Self" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns:customannotation="http://schemas.microsoft.com/ado/2013/11/edm/customannotation" xmlns="http://schemas.microsoft.com/ado/2009/11/edm/ssdl">
|
||||
<EntityType Name="EETGW_ProjectsSchedule">
|
||||
<Key>
|
||||
<PropertyRef Name="idx" />
|
||||
</Key>
|
||||
<Property Name="idx" Type="int" StoreGeneratedPattern="Identity" Nullable="false" />
|
||||
<Property Name="gcode" Type="varchar" MaxLength="20" />
|
||||
<Property Name="project" Type="int" />
|
||||
<Property Name="no" Type="int" />
|
||||
<Property Name="seq" Type="int" />
|
||||
<Property Name="title" Type="varchar" MaxLength="100" />
|
||||
<Property Name="cate" Type="varchar" MaxLength="20" />
|
||||
<Property Name="sw" Type="varchar" MaxLength="10" />
|
||||
<Property Name="ew" Type="varchar" MaxLength="10" />
|
||||
<Property Name="swa" Type="varchar" MaxLength="10" />
|
||||
<Property Name="ewa" Type="varchar" MaxLength="10" />
|
||||
<Property Name="uid" Type="varchar" MaxLength="50" />
|
||||
<Property Name="memo" Type="varchar(max)" />
|
||||
<Property Name="appoval" Type="int" />
|
||||
<Property Name="progress" Type="int" />
|
||||
<Property Name="wuid" Type="varchar" MaxLength="20" Nullable="false" />
|
||||
<Property Name="wdate" Type="smalldatetime" Nullable="false" />
|
||||
</EntityType>
|
||||
<EntityType Name="EETGW_ProjectToDo">
|
||||
<Key>
|
||||
<PropertyRef Name="idx" />
|
||||
</Key>
|
||||
<Property Name="idx" Type="int" StoreGeneratedPattern="Identity" Nullable="false" />
|
||||
<Property Name="gcode" Type="varchar" MaxLength="10" />
|
||||
<Property Name="pidx" Type="int" Nullable="false" />
|
||||
<Property Name="pseq" Type="int" />
|
||||
<Property Name="no" Type="int" />
|
||||
<Property Name="sw" Type="int" />
|
||||
<Property Name="ww" Type="int" />
|
||||
<Property Name="sort" Type="varchar" MaxLength="2" />
|
||||
<Property Name="cate" Type="nvarchar" MaxLength="100" />
|
||||
<Property Name="title" Type="nvarchar" MaxLength="255" />
|
||||
<Property Name="pdate" Type="varchar" MaxLength="10" />
|
||||
<Property Name="edate" Type="varchar" MaxLength="10" />
|
||||
<Property Name="process" Type="int" />
|
||||
<Property Name="remark" Type="varchar(max)" />
|
||||
<Property Name="remark2" Type="varchar(max)" />
|
||||
<Property Name="wuid" Type="varchar" MaxLength="20" Nullable="false" />
|
||||
<Property Name="wdate" Type="smalldatetime" Nullable="false" />
|
||||
</EntityType>
|
||||
<EntityType Name="HolidayLIst">
|
||||
<Key>
|
||||
<PropertyRef Name="idx" />
|
||||
</Key>
|
||||
<Property Name="idx" Type="int" StoreGeneratedPattern="Identity" Nullable="false" />
|
||||
<Property Name="pdate" Type="varchar" MaxLength="10" />
|
||||
<Property Name="free" Type="bit" />
|
||||
<Property Name="memo" Type="nvarchar" MaxLength="255" />
|
||||
<Property Name="wuid" Type="varchar" MaxLength="20" Nullable="false" />
|
||||
<Property Name="wdate" Type="smalldatetime" Nullable="false" />
|
||||
</EntityType>
|
||||
<EntityType Name="JobReport">
|
||||
<Key>
|
||||
<PropertyRef Name="idx" />
|
||||
</Key>
|
||||
<Property Name="idx" Type="int" StoreGeneratedPattern="Identity" Nullable="false" />
|
||||
<Property Name="gcode" Type="varchar" MaxLength="10" Nullable="false" />
|
||||
<Property Name="pdate" Type="varchar" MaxLength="10" />
|
||||
<Property Name="pidx" Type="int" />
|
||||
<Property Name="projectName" Type="nvarchar" MaxLength="255" />
|
||||
<Property Name="uid" Type="varchar" MaxLength="20" />
|
||||
<Property Name="requestpart" Type="varchar" MaxLength="50" />
|
||||
<Property Name="package" Type="varchar" MaxLength="50" />
|
||||
<Property Name="status" Type="varchar" MaxLength="20" />
|
||||
<Property Name="type" Type="varchar" MaxLength="50" />
|
||||
<Property Name="process" Type="varchar" MaxLength="50" />
|
||||
<Property Name="description" Type="nvarchar(max)" />
|
||||
<Property Name="remark" Type="nvarchar" MaxLength="255" />
|
||||
<Property Name="hrs" Type="float" />
|
||||
<Property Name="ot" Type="float" />
|
||||
<Property Name="otStart" Type="datetime" />
|
||||
<Property Name="otEnd" Type="datetime" />
|
||||
<Property Name="import" Type="bit" />
|
||||
<Property Name="wuid" Type="varchar" MaxLength="20" Nullable="false" />
|
||||
<Property Name="wdate" Type="smalldatetime" Nullable="false" />
|
||||
<Property Name="description2" Type="nvarchar(max)" />
|
||||
<Property Name="tag" Type="varchar" MaxLength="255" />
|
||||
<Property Name="autoinput" Type="bit" />
|
||||
<Property Name="kisullv" Type="varchar" MaxLength="10" />
|
||||
<Property Name="kisuldiv" Type="varchar" MaxLength="100" />
|
||||
<Property Name="kisulamt" Type="decimal" Precision="18" Scale="3" />
|
||||
<Property Name="ot2" Type="float" />
|
||||
<Property Name="otReason" Type="varchar" MaxLength="255" />
|
||||
<Property Name="otwuid" Type="varchar" MaxLength="20" />
|
||||
<Property Name="ottime" Type="datetime" />
|
||||
</EntityType>
|
||||
<EntityType Name="MailData">
|
||||
<Key>
|
||||
<PropertyRef Name="idx" />
|
||||
</Key>
|
||||
<Property Name="idx" Type="int" StoreGeneratedPattern="Identity" Nullable="false" />
|
||||
<Property Name="project" Type="int" />
|
||||
<Property Name="gcode" Type="varchar" MaxLength="10" Nullable="false" />
|
||||
<Property Name="cate" Type="varchar" MaxLength="20" />
|
||||
<Property Name="pdate" Type="varchar" MaxLength="10" />
|
||||
<Property Name="subject" Type="varchar(max)" />
|
||||
<Property Name="fromlist" Type="varchar(max)" />
|
||||
<Property Name="tolist" Type="varchar(max)" />
|
||||
<Property Name="bcc" Type="varchar(max)" />
|
||||
<Property Name="cc" Type="varchar(max)" />
|
||||
<Property Name="body" Type="varchar(max)" />
|
||||
<Property Name="SendOK" Type="bit" />
|
||||
<Property Name="SendMsg" Type="varchar" MaxLength="255" />
|
||||
<Property Name="aidx" Type="int" />
|
||||
<Property Name="atime" Type="varchar" MaxLength="20" />
|
||||
<Property Name="wuid" Type="varchar" MaxLength="20" Nullable="false" />
|
||||
<Property Name="wdate" Type="smalldatetime" Nullable="false" />
|
||||
</EntityType>
|
||||
<EntityType Name="MailForm">
|
||||
<Key>
|
||||
<PropertyRef Name="idx" />
|
||||
</Key>
|
||||
<Property Name="idx" Type="int" StoreGeneratedPattern="Identity" Nullable="false" />
|
||||
<Property Name="gcode" Type="varchar" MaxLength="10" Nullable="false" />
|
||||
<Property Name="cate" Type="varchar" MaxLength="2" />
|
||||
<Property Name="title" Type="varchar" MaxLength="100" />
|
||||
<Property Name="tolist" Type="varchar(max)" />
|
||||
<Property Name="bcc" Type="varchar(max)" />
|
||||
<Property Name="cc" Type="varchar(max)" />
|
||||
<Property Name="subject" Type="varchar(max)" />
|
||||
<Property Name="tail" Type="varchar(max)" />
|
||||
<Property Name="body" Type="varchar(max)" />
|
||||
<Property Name="selfTo" Type="bit" />
|
||||
<Property Name="selfCC" Type="bit" />
|
||||
<Property Name="selfBCC" Type="bit" />
|
||||
<Property Name="wuid" Type="varchar" MaxLength="20" Nullable="false" />
|
||||
<Property Name="wdate" Type="smalldatetime" Nullable="false" />
|
||||
<Property Name="exceptmail" Type="varchar(max)" />
|
||||
<Property Name="exceptmailcc" Type="varchar(max)" />
|
||||
</EntityType>
|
||||
<EntityType Name="Projects">
|
||||
<Key>
|
||||
<PropertyRef Name="idx" />
|
||||
</Key>
|
||||
<Property Name="idx" Type="int" StoreGeneratedPattern="Identity" Nullable="false" />
|
||||
<Property Name="pidx" Type="int" />
|
||||
<Property Name="gcode" Type="varchar" MaxLength="10" Nullable="false" />
|
||||
<Property Name="isdel" Type="bit" />
|
||||
<Property Name="category" Type="varchar" MaxLength="50" />
|
||||
<Property Name="status" Type="varchar" MaxLength="50" />
|
||||
<Property Name="asset" Type="varchar" MaxLength="100" />
|
||||
<Property Name="level" Type="int" />
|
||||
<Property Name="rev" Type="int" />
|
||||
<Property Name="process" Type="varchar" MaxLength="50" />
|
||||
<Property Name="part" Type="varchar" MaxLength="50" />
|
||||
<Property Name="pdate" Type="varchar" MaxLength="10" />
|
||||
<Property Name="name" Type="nvarchar" MaxLength="255" />
|
||||
<Property Name="userManager" Type="varchar" MaxLength="50" />
|
||||
<Property Name="usermain" Type="varchar" MaxLength="50" />
|
||||
<Property Name="usersub" Type="varchar" MaxLength="50" />
|
||||
<Property Name="userhw2" Type="varchar" MaxLength="50" />
|
||||
<Property Name="reqstaff" Type="varchar" MaxLength="50" />
|
||||
<Property Name="costo" Type="float" />
|
||||
<Property Name="costn" Type="float" />
|
||||
<Property Name="cnt" Type="int" />
|
||||
<Property Name="remark_req" Type="varchar(max)" />
|
||||
<Property Name="remark_ans" Type="varchar(max)" />
|
||||
<Property Name="sdate" Type="varchar" MaxLength="50" />
|
||||
<Property Name="ddate" Type="varchar" MaxLength="50" />
|
||||
<Property Name="edate" Type="varchar" MaxLength="50" />
|
||||
<Property Name="odate" Type="varchar" MaxLength="50" />
|
||||
<Property Name="progress" Type="int" />
|
||||
<Property Name="memo" Type="nvarchar" MaxLength="255" />
|
||||
<Property Name="wuid" Type="varchar" MaxLength="20" Nullable="false" />
|
||||
<Property Name="wdate" Type="smalldatetime" Nullable="false" />
|
||||
<Property Name="orderno" Type="varchar" MaxLength="50" />
|
||||
<Property Name="crdue" Type="varchar" MaxLength="10" />
|
||||
<Property Name="import" Type="bit" />
|
||||
<Property Name="path" Type="varchar" MaxLength="300" />
|
||||
<Property Name="userprocess" Type="nvarchar" MaxLength="100" />
|
||||
<Property Name="CMP_Background" Type="nvarchar(max)" />
|
||||
<Property Name="CMP_Description" Type="nvarchar(max)" />
|
||||
<Property Name="CMP_Before" Type="nvarchar(max)" />
|
||||
<Property Name="CMP_After" Type="nvarchar(max)" />
|
||||
<Property Name="CMP_After2" Type="nvarchar(max)" />
|
||||
<Property Name="bCost" Type="bit" />
|
||||
<Property Name="bFanOut" Type="bit" />
|
||||
<Property Name="div" Type="varchar" MaxLength="2" />
|
||||
<Property Name="model" Type="varchar" MaxLength="50" />
|
||||
<Property Name="serial" Type="varchar" MaxLength="50" />
|
||||
<Property Name="EB_Site" Type="varchar" MaxLength="20" />
|
||||
<Property Name="EB_Line" Type="varchar" MaxLength="10" />
|
||||
<Property Name="EB_Team" Type="varchar" MaxLength="10" />
|
||||
<Property Name="EB_Model" Type="varchar" MaxLength="100" />
|
||||
<Property Name="EB_OutSourceName" Type="varchar" MaxLength="100" />
|
||||
<Property Name="EB_RepairTime" Type="float" />
|
||||
<Property Name="EB_ConstNew" Type="float" />
|
||||
<Property Name="EB_BoardName" Type="nvarchar" MaxLength="255" />
|
||||
<Property Name="bAlert" Type="bit" />
|
||||
</EntityType>
|
||||
<!--생성 중 오류 발생:
|
||||
경고 6002: 테이블/뷰 'EE.dbo.vGroupUser'에 기본 키가 정의되지 않았습니다. 키가 유추되었고 읽기 전용 테이블/뷰로 정의되었습니다.-->
|
||||
<EntityType Name="vGroupUser">
|
||||
<Key>
|
||||
<PropertyRef Name="gcode" />
|
||||
|
||||
</Key>
|
||||
<Property Name="gcode" Type="varchar" MaxLength="10" Nullable="false" />
|
||||
<Property Name="dept" Type="varchar" MaxLength="100" />
|
||||
<Property Name="level" Type="smallint" />
|
||||
<Property Name="name" Type="nvarchar" MaxLength="100" />
|
||||
<Property Name="nameE" Type="nvarchar" MaxLength="100" />
|
||||
<Property Name="grade" Type="varchar" MaxLength="10" />
|
||||
<Property Name="email" Type="varchar" MaxLength="100" />
|
||||
<Property Name="tel" Type="varchar" MaxLength="20" />
|
||||
<Property Name="indate" Type="varchar" MaxLength="20" />
|
||||
<Property Name="outdate" Type="varchar" MaxLength="20" />
|
||||
<Property Name="hp" Type="varchar" MaxLength="20" />
|
||||
<Property Name="place" Type="varchar" MaxLength="100" />
|
||||
<Property Name="ads_employNo" Type="varchar" MaxLength="50" />
|
||||
<Property Name="ads_title" Type="nvarchar" MaxLength="100" />
|
||||
<Property Name="ads_created" Type="varchar" MaxLength="50" />
|
||||
<Property Name="memo" Type="nvarchar" MaxLength="255" />
|
||||
<Property Name="processs" Type="varchar" MaxLength="50" Nullable="false" />
|
||||
<Property Name="id" Type="varchar" MaxLength="20" />
|
||||
<Property Name="state" Type="varchar" MaxLength="20" />
|
||||
<Property Name="useJobReport" Type="bit" />
|
||||
<Property Name="useUserState" Type="bit" />
|
||||
<Property Name="password" Type="varchar" MaxLength="50" />
|
||||
</EntityType>
|
||||
<!--생성 중 오류 발생:
|
||||
경고 6002: 테이블/뷰 'EE.dbo.vJobReportForUser'에 기본 키가 정의되지 않았습니다. 키가 유추되었고 읽기 전용 테이블/뷰로 정의되었습니다.-->
|
||||
<EntityType Name="vJobReportForUser">
|
||||
<Key>
|
||||
<PropertyRef Name="idx" />
|
||||
<PropertyRef Name="gcode" />
|
||||
<PropertyRef Name="process" />
|
||||
<PropertyRef Name="requestpart" />
|
||||
<PropertyRef Name="package" />
|
||||
</Key>
|
||||
<Property Name="idx" Type="int" Nullable="false" />
|
||||
<Property Name="pdate" Type="varchar" MaxLength="10" />
|
||||
<Property Name="gcode" Type="varchar" MaxLength="10" Nullable="false" />
|
||||
<Property Name="id" Type="varchar" MaxLength="20" />
|
||||
<Property Name="name" Type="nvarchar" MaxLength="100" />
|
||||
<Property Name="process" Type="varchar" MaxLength="50" Nullable="false" />
|
||||
<Property Name="type" Type="varchar" MaxLength="50" />
|
||||
<Property Name="svalue" Type="varchar" MaxLength="255" />
|
||||
<Property Name="hrs" Type="float" />
|
||||
<Property Name="ot" Type="float" />
|
||||
<Property Name="requestpart" Type="varchar" MaxLength="50" Nullable="false" />
|
||||
<Property Name="package" Type="varchar" MaxLength="50" Nullable="false" />
|
||||
<Property Name="userProcess" Type="varchar" MaxLength="50" />
|
||||
<Property Name="status" Type="varchar" MaxLength="20" />
|
||||
<Property Name="projectName" Type="nvarchar" MaxLength="255" />
|
||||
<Property Name="description" Type="nvarchar(max)" />
|
||||
<Property Name="ww" Type="varchar" MaxLength="6" />
|
||||
<Property Name="otStart" Type="datetime" />
|
||||
<Property Name="otEnd" Type="datetime" />
|
||||
<Property Name="ot2" Type="float" />
|
||||
<Property Name="otReason" Type="varchar" MaxLength="255" />
|
||||
<Property Name="grade" Type="varchar" MaxLength="10" />
|
||||
<Property Name="indate" Type="varchar" MaxLength="20" />
|
||||
<Property Name="outdate" Type="varchar" MaxLength="20" />
|
||||
</EntityType>
|
||||
<EntityContainer Name="EEModelStoreContainer">
|
||||
<EntitySet Name="EETGW_ProjectsSchedule" EntityType="Self.EETGW_ProjectsSchedule" Schema="dbo" store:Type="Tables" />
|
||||
<EntitySet Name="EETGW_ProjectToDo" EntityType="Self.EETGW_ProjectToDo" Schema="dbo" store:Type="Tables" />
|
||||
<EntitySet Name="HolidayLIst" EntityType="Self.HolidayLIst" Schema="dbo" store:Type="Tables" />
|
||||
<EntitySet Name="JobReport" EntityType="Self.JobReport" Schema="dbo" store:Type="Tables" />
|
||||
<EntitySet Name="MailData" EntityType="Self.MailData" Schema="dbo" store:Type="Tables" />
|
||||
<EntitySet Name="MailForm" EntityType="Self.MailForm" Schema="dbo" store:Type="Tables" />
|
||||
<EntitySet Name="Projects" EntityType="Self.Projects" Schema="dbo" store:Type="Tables" />
|
||||
<EntitySet Name="vGroupUser" EntityType="Self.vGroupUser" store:Type="Views" store:Schema="dbo">
|
||||
<DefiningQuery>SELECT
|
||||
[vGroupUser].[gcode] AS [gcode],
|
||||
[vGroupUser].[dept] AS [dept],
|
||||
[vGroupUser].[level] AS [level],
|
||||
[vGroupUser].[name] AS [name],
|
||||
[vGroupUser].[nameE] AS [nameE],
|
||||
[vGroupUser].[grade] AS [grade],
|
||||
[vGroupUser].[email] AS [email],
|
||||
[vGroupUser].[tel] AS [tel],
|
||||
[vGroupUser].[indate] AS [indate],
|
||||
[vGroupUser].[outdate] AS [outdate],
|
||||
[vGroupUser].[hp] AS [hp],
|
||||
[vGroupUser].[place] AS [place],
|
||||
[vGroupUser].[ads_employNo] AS [ads_employNo],
|
||||
[vGroupUser].[ads_title] AS [ads_title],
|
||||
[vGroupUser].[ads_created] AS [ads_created],
|
||||
[vGroupUser].[memo] AS [memo],
|
||||
[vGroupUser].[processs] AS [processs],
|
||||
[vGroupUser].[id] AS [id],
|
||||
[vGroupUser].[state] AS [state],
|
||||
[vGroupUser].[useJobReport] AS [useJobReport],
|
||||
[vGroupUser].[useUserState] AS [useUserState],
|
||||
[vGroupUser].[password] AS [password]
|
||||
FROM [dbo].[vGroupUser] AS [vGroupUser]</DefiningQuery>
|
||||
</EntitySet>
|
||||
<EntitySet Name="vJobReportForUser" EntityType="Self.vJobReportForUser" store:Type="Views" store:Schema="dbo">
|
||||
<DefiningQuery>SELECT
|
||||
[vJobReportForUser].[idx] AS [idx],
|
||||
[vJobReportForUser].[pdate] AS [pdate],
|
||||
[vJobReportForUser].[gcode] AS [gcode],
|
||||
[vJobReportForUser].[id] AS [id],
|
||||
[vJobReportForUser].[name] AS [name],
|
||||
[vJobReportForUser].[process] AS [process],
|
||||
[vJobReportForUser].[type] AS [type],
|
||||
[vJobReportForUser].[svalue] AS [svalue],
|
||||
[vJobReportForUser].[hrs] AS [hrs],
|
||||
[vJobReportForUser].[ot] AS [ot],
|
||||
[vJobReportForUser].[requestpart] AS [requestpart],
|
||||
[vJobReportForUser].[package] AS [package],
|
||||
[vJobReportForUser].[userProcess] AS [userProcess],
|
||||
[vJobReportForUser].[status] AS [status],
|
||||
[vJobReportForUser].[projectName] AS [projectName],
|
||||
[vJobReportForUser].[description] AS [description],
|
||||
[vJobReportForUser].[ww] AS [ww],
|
||||
[vJobReportForUser].[otStart] AS [otStart],
|
||||
[vJobReportForUser].[otEnd] AS [otEnd],
|
||||
[vJobReportForUser].[ot2] AS [ot2],
|
||||
[vJobReportForUser].[otReason] AS [otReason],
|
||||
[vJobReportForUser].[grade] AS [grade],
|
||||
[vJobReportForUser].[indate] AS [indate],
|
||||
[vJobReportForUser].[outdate] AS [outdate]
|
||||
FROM [dbo].[vJobReportForUser] AS [vJobReportForUser]</DefiningQuery>
|
||||
</EntitySet>
|
||||
</EntityContainer>
|
||||
</Schema></edmx:StorageModels>
|
||||
<!-- CSDL content -->
|
||||
<edmx:ConceptualModels>
|
||||
<Schema Namespace="EEModel" Alias="Self" annotation:UseStrongSpatialTypes="false" xmlns:annotation="http://schemas.microsoft.com/ado/2009/02/edm/annotation" xmlns:customannotation="http://schemas.microsoft.com/ado/2013/11/edm/customannotation" xmlns="http://schemas.microsoft.com/ado/2009/11/edm">
|
||||
<EntityType Name="JobReport">
|
||||
<Key>
|
||||
<PropertyRef Name="idx" />
|
||||
</Key>
|
||||
<Property Name="idx" Type="Int32" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
|
||||
<Property Name="gcode" Type="String" MaxLength="10" FixedLength="false" Unicode="false" Nullable="false" />
|
||||
<Property Name="pdate" Type="String" MaxLength="10" FixedLength="false" Unicode="false" />
|
||||
<Property Name="pidx" Type="Int32" />
|
||||
<Property Name="projectName" Type="String" MaxLength="255" FixedLength="false" Unicode="true" />
|
||||
<Property Name="uid" Type="String" MaxLength="20" FixedLength="false" Unicode="false" />
|
||||
<Property Name="requestpart" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="package" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="status" Type="String" MaxLength="20" FixedLength="false" Unicode="false" />
|
||||
<Property Name="type" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="process" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="description" Type="String" MaxLength="Max" FixedLength="false" Unicode="true" />
|
||||
<Property Name="remark" Type="String" MaxLength="255" FixedLength="false" Unicode="true" />
|
||||
<Property Name="hrs" Type="Double" />
|
||||
<Property Name="ot" Type="Double" />
|
||||
<Property Name="import" Type="Boolean" />
|
||||
<Property Name="wuid" Type="String" MaxLength="20" FixedLength="false" Unicode="false" Nullable="false" />
|
||||
<Property Name="wdate" Type="DateTime" Nullable="false" Precision="0" />
|
||||
<Property Name="description2" Type="String" MaxLength="Max" FixedLength="false" Unicode="true" />
|
||||
<Property Name="tag" Type="String" MaxLength="255" FixedLength="false" Unicode="false" />
|
||||
<Property Name="autoinput" Type="Boolean" />
|
||||
<Property Name="otStart" Type="DateTime" Precision="3" />
|
||||
<Property Name="otEnd" Type="DateTime" Precision="3" />
|
||||
<Property Name="kisullv" Type="String" MaxLength="10" FixedLength="false" Unicode="false" />
|
||||
<Property Name="kisuldiv" Type="String" MaxLength="100" FixedLength="false" Unicode="false" />
|
||||
<Property Name="kisulamt" Type="Decimal" Precision="18" Scale="3" />
|
||||
<Property Name="ot2" Type="Double" />
|
||||
<Property Name="otReason" Type="String" MaxLength="255" FixedLength="false" Unicode="false" />
|
||||
<Property Name="otwuid" Type="String" MaxLength="20" FixedLength="false" Unicode="false" />
|
||||
<Property Name="ottime" Type="DateTime" Precision="3" />
|
||||
</EntityType>
|
||||
<EntityType Name="MailData">
|
||||
<Key>
|
||||
<PropertyRef Name="idx" />
|
||||
</Key>
|
||||
<Property Name="idx" Type="Int32" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
|
||||
<Property Name="project" Type="Int32" />
|
||||
<Property Name="gcode" Type="String" MaxLength="10" FixedLength="false" Unicode="false" Nullable="false" />
|
||||
<Property Name="cate" Type="String" MaxLength="20" FixedLength="false" Unicode="false" />
|
||||
<Property Name="pdate" Type="String" MaxLength="10" FixedLength="false" Unicode="false" />
|
||||
<Property Name="subject" Type="String" MaxLength="Max" FixedLength="false" Unicode="false" />
|
||||
<Property Name="fromlist" Type="String" MaxLength="Max" FixedLength="false" Unicode="false" />
|
||||
<Property Name="tolist" Type="String" MaxLength="Max" FixedLength="false" Unicode="false" />
|
||||
<Property Name="bcc" Type="String" MaxLength="Max" FixedLength="false" Unicode="false" />
|
||||
<Property Name="cc" Type="String" MaxLength="Max" FixedLength="false" Unicode="false" />
|
||||
<Property Name="body" Type="String" MaxLength="Max" FixedLength="false" Unicode="false" />
|
||||
<Property Name="SendOK" Type="Boolean" />
|
||||
<Property Name="SendMsg" Type="String" MaxLength="255" FixedLength="false" Unicode="false" />
|
||||
<Property Name="aidx" Type="Int32" />
|
||||
<Property Name="atime" Type="String" MaxLength="20" FixedLength="false" Unicode="false" />
|
||||
<Property Name="wuid" Type="String" MaxLength="20" FixedLength="false" Unicode="false" Nullable="false" />
|
||||
<Property Name="wdate" Type="DateTime" Nullable="false" Precision="0" />
|
||||
</EntityType>
|
||||
<EntityType Name="vGroupUser">
|
||||
<Key>
|
||||
<PropertyRef Name="gcode" />
|
||||
</Key>
|
||||
<Property Name="gcode" Type="String" MaxLength="10" FixedLength="false" Unicode="false" Nullable="false" />
|
||||
<Property Name="dept" Type="String" MaxLength="100" FixedLength="false" Unicode="false" />
|
||||
<Property Name="level" Type="Int16" />
|
||||
<Property Name="name" Type="String" MaxLength="100" FixedLength="false" Unicode="true" />
|
||||
<Property Name="nameE" Type="String" MaxLength="100" FixedLength="false" Unicode="true" />
|
||||
<Property Name="grade" Type="String" MaxLength="10" FixedLength="false" Unicode="false" />
|
||||
<Property Name="email" Type="String" MaxLength="100" FixedLength="false" Unicode="false" />
|
||||
<Property Name="tel" Type="String" MaxLength="20" FixedLength="false" Unicode="false" />
|
||||
<Property Name="indate" Type="String" MaxLength="20" FixedLength="false" Unicode="false" />
|
||||
<Property Name="outdate" Type="String" MaxLength="20" FixedLength="false" Unicode="false" />
|
||||
<Property Name="hp" Type="String" MaxLength="20" FixedLength="false" Unicode="false" />
|
||||
<Property Name="place" Type="String" MaxLength="100" FixedLength="false" Unicode="false" />
|
||||
<Property Name="ads_employNo" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="ads_title" Type="String" MaxLength="100" FixedLength="false" Unicode="true" />
|
||||
<Property Name="ads_created" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="memo" Type="String" MaxLength="255" FixedLength="false" Unicode="true" />
|
||||
<Property Name="processs" Type="String" MaxLength="50" FixedLength="false" Unicode="false" Nullable="false" />
|
||||
<Property Name="id" Type="String" MaxLength="20" FixedLength="false" Unicode="false" />
|
||||
<Property Name="state" Type="String" MaxLength="20" FixedLength="false" Unicode="false" />
|
||||
<Property Name="useJobReport" Type="Boolean" />
|
||||
<Property Name="useUserState" Type="Boolean" />
|
||||
<Property Name="password" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
</EntityType>
|
||||
<EntityContainer Name="EEEntities" annotation:LazyLoadingEnabled="true">
|
||||
<EntitySet Name="JobReport" EntityType="Self.JobReport" />
|
||||
<EntitySet Name="MailData" EntityType="Self.MailData" />
|
||||
<EntitySet Name="vGroupUser" EntityType="Self.vGroupUser" />
|
||||
<EntitySet Name="HolidayLIst" EntityType="EEModel.HolidayLIst" />
|
||||
<EntitySet Name="MailForm" EntityType="EEModel.MailForm" />
|
||||
<EntitySet Name="EETGW_ProjectToDo" EntityType="EEModel.EETGW_ProjectToDo" />
|
||||
<EntitySet Name="Projects" EntityType="EEModel.Projects" />
|
||||
<EntitySet Name="EETGW_ProjectsSchedule" EntityType="EEModel.EETGW_ProjectsSchedule" />
|
||||
<EntitySet Name="vJobReportForUser" EntityType="EEModel.vJobReportForUser" />
|
||||
</EntityContainer>
|
||||
<EntityType Name="HolidayLIst">
|
||||
<Key>
|
||||
<PropertyRef Name="idx" />
|
||||
</Key>
|
||||
<Property Name="idx" Type="Int32" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
|
||||
<Property Name="pdate" Type="String" MaxLength="10" FixedLength="false" Unicode="false" />
|
||||
<Property Name="free" Type="Boolean" />
|
||||
<Property Name="memo" Type="String" MaxLength="255" FixedLength="false" Unicode="true" />
|
||||
<Property Name="wuid" Type="String" Nullable="false" MaxLength="20" FixedLength="false" Unicode="false" />
|
||||
<Property Name="wdate" Type="DateTime" Nullable="false" Precision="0" />
|
||||
</EntityType>
|
||||
<EntityType Name="MailForm">
|
||||
<Key>
|
||||
<PropertyRef Name="idx" />
|
||||
</Key>
|
||||
<Property Name="idx" Type="Int32" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
|
||||
<Property Name="gcode" Type="String" Nullable="false" MaxLength="10" FixedLength="false" Unicode="false" />
|
||||
<Property Name="cate" Type="String" MaxLength="2" FixedLength="false" Unicode="false" />
|
||||
<Property Name="title" Type="String" MaxLength="100" FixedLength="false" Unicode="false" />
|
||||
<Property Name="tolist" Type="String" MaxLength="Max" FixedLength="false" Unicode="false" />
|
||||
<Property Name="bcc" Type="String" MaxLength="Max" FixedLength="false" Unicode="false" />
|
||||
<Property Name="cc" Type="String" MaxLength="Max" FixedLength="false" Unicode="false" />
|
||||
<Property Name="subject" Type="String" MaxLength="Max" FixedLength="false" Unicode="false" />
|
||||
<Property Name="tail" Type="String" MaxLength="Max" FixedLength="false" Unicode="false" />
|
||||
<Property Name="body" Type="String" MaxLength="Max" FixedLength="false" Unicode="false" />
|
||||
<Property Name="selfTo" Type="Boolean" />
|
||||
<Property Name="selfCC" Type="Boolean" />
|
||||
<Property Name="selfBCC" Type="Boolean" />
|
||||
<Property Name="wuid" Type="String" Nullable="false" MaxLength="20" FixedLength="false" Unicode="false" />
|
||||
<Property Name="wdate" Type="DateTime" Nullable="false" Precision="0" />
|
||||
<Property Name="exceptmail" Type="String" MaxLength="Max" FixedLength="false" Unicode="false" />
|
||||
<Property Name="exceptmailcc" Type="String" MaxLength="Max" FixedLength="false" Unicode="false" />
|
||||
</EntityType>
|
||||
<EntityType Name="EETGW_ProjectToDo">
|
||||
<Key>
|
||||
<PropertyRef Name="idx" />
|
||||
</Key>
|
||||
<Property Name="idx" Type="Int32" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
|
||||
<Property Name="pidx" Type="Int32" Nullable="false" />
|
||||
<Property Name="pseq" Type="Int32" />
|
||||
<Property Name="sw" Type="Int32" />
|
||||
<Property Name="ww" Type="Int32" />
|
||||
<Property Name="sort" Type="String" MaxLength="2" FixedLength="false" Unicode="false" />
|
||||
<Property Name="cate" Type="String" MaxLength="100" FixedLength="false" Unicode="true" />
|
||||
<Property Name="title" Type="String" MaxLength="255" FixedLength="false" Unicode="true" />
|
||||
<Property Name="pdate" Type="String" MaxLength="10" FixedLength="false" Unicode="false" />
|
||||
<Property Name="edate" Type="String" MaxLength="10" FixedLength="false" Unicode="false" />
|
||||
<Property Name="process" Type="Int32" />
|
||||
<Property Name="remark" Type="String" MaxLength="Max" FixedLength="false" Unicode="false" />
|
||||
<Property Name="remark2" Type="String" MaxLength="Max" FixedLength="false" Unicode="false" />
|
||||
<Property Name="wuid" Type="String" Nullable="false" MaxLength="20" FixedLength="false" Unicode="false" />
|
||||
<Property Name="wdate" Type="DateTime" Nullable="false" Precision="0" />
|
||||
<Property Name="gcode" Type="String" MaxLength="10" FixedLength="false" Unicode="false" />
|
||||
<Property Name="no" Type="Int32" />
|
||||
</EntityType>
|
||||
<EntityType Name="Projects">
|
||||
<Key>
|
||||
<PropertyRef Name="idx" />
|
||||
</Key>
|
||||
<Property Name="idx" Type="Int32" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
|
||||
<Property Name="pidx" Type="Int32" />
|
||||
<Property Name="gcode" Type="String" Nullable="false" MaxLength="10" FixedLength="false" Unicode="false" />
|
||||
<Property Name="isdel" Type="Boolean" />
|
||||
<Property Name="category" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="status" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="asset" Type="String" MaxLength="100" FixedLength="false" Unicode="false" />
|
||||
<Property Name="level" Type="Int32" />
|
||||
<Property Name="rev" Type="Int32" />
|
||||
<Property Name="process" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="part" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="pdate" Type="String" MaxLength="10" FixedLength="false" Unicode="false" />
|
||||
<Property Name="name" Type="String" MaxLength="255" FixedLength="false" Unicode="true" />
|
||||
<Property Name="userManager" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="usermain" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="usersub" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="userhw2" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="reqstaff" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="costo" Type="Double" />
|
||||
<Property Name="costn" Type="Double" />
|
||||
<Property Name="cnt" Type="Int32" />
|
||||
<Property Name="remark_req" Type="String" MaxLength="Max" FixedLength="false" Unicode="false" />
|
||||
<Property Name="remark_ans" Type="String" MaxLength="Max" FixedLength="false" Unicode="false" />
|
||||
<Property Name="sdate" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="ddate" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="edate" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="odate" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="progress" Type="Int32" />
|
||||
<Property Name="memo" Type="String" MaxLength="255" FixedLength="false" Unicode="true" />
|
||||
<Property Name="wuid" Type="String" Nullable="false" MaxLength="20" FixedLength="false" Unicode="false" />
|
||||
<Property Name="wdate" Type="DateTime" Nullable="false" Precision="0" />
|
||||
<Property Name="orderno" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="crdue" Type="String" MaxLength="10" FixedLength="false" Unicode="false" />
|
||||
<Property Name="import" Type="Boolean" />
|
||||
<Property Name="path" Type="String" MaxLength="300" FixedLength="false" Unicode="false" />
|
||||
<Property Name="userprocess" Type="String" MaxLength="100" FixedLength="false" Unicode="true" />
|
||||
<Property Name="CMP_Background" Type="String" MaxLength="Max" FixedLength="false" Unicode="true" />
|
||||
<Property Name="CMP_Description" Type="String" MaxLength="Max" FixedLength="false" Unicode="true" />
|
||||
<Property Name="CMP_Before" Type="String" MaxLength="Max" FixedLength="false" Unicode="true" />
|
||||
<Property Name="CMP_After" Type="String" MaxLength="Max" FixedLength="false" Unicode="true" />
|
||||
<Property Name="bCost" Type="Boolean" />
|
||||
<Property Name="bFanOut" Type="Boolean" />
|
||||
<Property Name="div" Type="String" MaxLength="2" FixedLength="false" Unicode="false" />
|
||||
<Property Name="EB_Site" Type="String" MaxLength="20" FixedLength="false" Unicode="false" />
|
||||
<Property Name="EB_Line" Type="String" MaxLength="10" FixedLength="false" Unicode="false" />
|
||||
<Property Name="EB_Team" Type="String" MaxLength="10" FixedLength="false" Unicode="false" />
|
||||
<Property Name="EB_Model" Type="String" MaxLength="100" FixedLength="false" Unicode="false" />
|
||||
<Property Name="EB_OutSourceName" Type="String" MaxLength="100" FixedLength="false" Unicode="false" />
|
||||
<Property Name="EB_RepairTime" Type="Double" />
|
||||
<Property Name="EB_ConstNew" Type="Double" />
|
||||
<Property Name="EB_BoardName" Type="String" MaxLength="255" FixedLength="false" Unicode="true" />
|
||||
<Property Name="CMP_After2" Type="String" MaxLength="Max" FixedLength="false" Unicode="true" />
|
||||
<Property Name="model" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="serial" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="bAlert" Type="Boolean" />
|
||||
</EntityType>
|
||||
<EntityType Name="EETGW_ProjectsSchedule">
|
||||
<Key>
|
||||
<PropertyRef Name="idx" />
|
||||
</Key>
|
||||
<Property Name="idx" Type="Int32" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
|
||||
<Property Name="gcode" Type="String" MaxLength="20" FixedLength="false" Unicode="false" />
|
||||
<Property Name="project" Type="Int32" />
|
||||
<Property Name="no" Type="Int32" />
|
||||
<Property Name="seq" Type="Int32" />
|
||||
<Property Name="title" Type="String" MaxLength="100" FixedLength="false" Unicode="false" />
|
||||
<Property Name="cate" Type="String" MaxLength="20" FixedLength="false" Unicode="false" />
|
||||
<Property Name="sw" Type="String" MaxLength="10" FixedLength="false" Unicode="false" />
|
||||
<Property Name="ew" Type="String" MaxLength="10" FixedLength="false" Unicode="false" />
|
||||
<Property Name="swa" Type="String" MaxLength="10" FixedLength="false" Unicode="false" />
|
||||
<Property Name="ewa" Type="String" MaxLength="10" FixedLength="false" Unicode="false" />
|
||||
<Property Name="uid" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="memo" Type="String" MaxLength="Max" FixedLength="false" Unicode="false" />
|
||||
<Property Name="appoval" Type="Int32" />
|
||||
<Property Name="progress" Type="Int32" />
|
||||
<Property Name="wuid" Type="String" Nullable="false" MaxLength="20" FixedLength="false" Unicode="false" />
|
||||
<Property Name="wdate" Type="DateTime" Nullable="false" Precision="0" />
|
||||
</EntityType>
|
||||
<EntityType Name="vJobReportForUser">
|
||||
<Key>
|
||||
<PropertyRef Name="idx" />
|
||||
<PropertyRef Name="gcode" />
|
||||
<PropertyRef Name="process" />
|
||||
<PropertyRef Name="requestpart" />
|
||||
<PropertyRef Name="package" />
|
||||
</Key>
|
||||
<Property Name="idx" Type="Int32" Nullable="false" />
|
||||
<Property Name="pdate" Type="String" MaxLength="10" FixedLength="false" Unicode="false" />
|
||||
<Property Name="gcode" Type="String" Nullable="false" MaxLength="10" FixedLength="false" Unicode="false" />
|
||||
<Property Name="id" Type="String" MaxLength="20" FixedLength="false" Unicode="false" />
|
||||
<Property Name="name" Type="String" MaxLength="100" FixedLength="false" Unicode="true" />
|
||||
<Property Name="process" Type="String" Nullable="false" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="type" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="svalue" Type="String" MaxLength="255" FixedLength="false" Unicode="false" />
|
||||
<Property Name="hrs" Type="Double" />
|
||||
<Property Name="ot" Type="Double" />
|
||||
<Property Name="requestpart" Type="String" Nullable="false" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="package" Type="String" Nullable="false" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="userProcess" Type="String" MaxLength="50" FixedLength="false" Unicode="false" />
|
||||
<Property Name="status" Type="String" MaxLength="20" FixedLength="false" Unicode="false" />
|
||||
<Property Name="projectName" Type="String" MaxLength="255" FixedLength="false" Unicode="true" />
|
||||
<Property Name="description" Type="String" MaxLength="Max" FixedLength="false" Unicode="true" />
|
||||
<Property Name="ww" Type="String" MaxLength="6" FixedLength="false" Unicode="false" />
|
||||
<Property Name="otStart" Type="DateTime" Precision="3" />
|
||||
<Property Name="otEnd" Type="DateTime" Precision="3" />
|
||||
<Property Name="ot2" Type="Double" />
|
||||
<Property Name="otReason" Type="String" MaxLength="255" FixedLength="false" Unicode="false" />
|
||||
<Property Name="grade" Type="String" MaxLength="10" FixedLength="false" Unicode="false" />
|
||||
<Property Name="indate" Type="String" MaxLength="20" FixedLength="false" Unicode="false" />
|
||||
<Property Name="outdate" Type="String" MaxLength="20" FixedLength="false" Unicode="false" />
|
||||
</EntityType>
|
||||
</Schema>
|
||||
</edmx:ConceptualModels>
|
||||
<!-- C-S mapping content -->
|
||||
<edmx:Mappings>
|
||||
<Mapping Space="C-S" xmlns="http://schemas.microsoft.com/ado/2009/11/mapping/cs">
|
||||
<EntityContainerMapping StorageEntityContainer="EEModelStoreContainer" CdmEntityContainer="EEEntities">
|
||||
<EntitySetMapping Name="JobReport">
|
||||
<EntityTypeMapping TypeName="EEModel.JobReport">
|
||||
<MappingFragment StoreEntitySet="JobReport">
|
||||
<ScalarProperty Name="ottime" ColumnName="ottime" />
|
||||
<ScalarProperty Name="otwuid" ColumnName="otwuid" />
|
||||
<ScalarProperty Name="otReason" ColumnName="otReason" />
|
||||
<ScalarProperty Name="ot2" ColumnName="ot2" />
|
||||
<ScalarProperty Name="kisulamt" ColumnName="kisulamt" />
|
||||
<ScalarProperty Name="kisuldiv" ColumnName="kisuldiv" />
|
||||
<ScalarProperty Name="kisullv" ColumnName="kisullv" />
|
||||
<ScalarProperty Name="otEnd" ColumnName="otEnd" />
|
||||
<ScalarProperty Name="otStart" ColumnName="otStart" />
|
||||
<ScalarProperty Name="autoinput" ColumnName="autoinput" />
|
||||
<ScalarProperty Name="idx" ColumnName="idx" />
|
||||
<ScalarProperty Name="gcode" ColumnName="gcode" />
|
||||
<ScalarProperty Name="pdate" ColumnName="pdate" />
|
||||
<ScalarProperty Name="pidx" ColumnName="pidx" />
|
||||
<ScalarProperty Name="projectName" ColumnName="projectName" />
|
||||
<ScalarProperty Name="uid" ColumnName="uid" />
|
||||
<ScalarProperty Name="requestpart" ColumnName="requestpart" />
|
||||
<ScalarProperty Name="package" ColumnName="package" />
|
||||
<ScalarProperty Name="status" ColumnName="status" />
|
||||
<ScalarProperty Name="type" ColumnName="type" />
|
||||
<ScalarProperty Name="process" ColumnName="process" />
|
||||
<ScalarProperty Name="description" ColumnName="description" />
|
||||
<ScalarProperty Name="remark" ColumnName="remark" />
|
||||
<ScalarProperty Name="hrs" ColumnName="hrs" />
|
||||
<ScalarProperty Name="ot" ColumnName="ot" />
|
||||
<ScalarProperty Name="import" ColumnName="import" />
|
||||
<ScalarProperty Name="wuid" ColumnName="wuid" />
|
||||
<ScalarProperty Name="wdate" ColumnName="wdate" />
|
||||
<ScalarProperty Name="description2" ColumnName="description2" />
|
||||
<ScalarProperty Name="tag" ColumnName="tag" />
|
||||
</MappingFragment>
|
||||
</EntityTypeMapping>
|
||||
</EntitySetMapping>
|
||||
<EntitySetMapping Name="MailData">
|
||||
<EntityTypeMapping TypeName="EEModel.MailData">
|
||||
<MappingFragment StoreEntitySet="MailData">
|
||||
<ScalarProperty Name="idx" ColumnName="idx" />
|
||||
<ScalarProperty Name="project" ColumnName="project" />
|
||||
<ScalarProperty Name="gcode" ColumnName="gcode" />
|
||||
<ScalarProperty Name="cate" ColumnName="cate" />
|
||||
<ScalarProperty Name="pdate" ColumnName="pdate" />
|
||||
<ScalarProperty Name="subject" ColumnName="subject" />
|
||||
<ScalarProperty Name="fromlist" ColumnName="fromlist" />
|
||||
<ScalarProperty Name="tolist" ColumnName="tolist" />
|
||||
<ScalarProperty Name="bcc" ColumnName="bcc" />
|
||||
<ScalarProperty Name="cc" ColumnName="cc" />
|
||||
<ScalarProperty Name="body" ColumnName="body" />
|
||||
<ScalarProperty Name="SendOK" ColumnName="SendOK" />
|
||||
<ScalarProperty Name="SendMsg" ColumnName="SendMsg" />
|
||||
<ScalarProperty Name="aidx" ColumnName="aidx" />
|
||||
<ScalarProperty Name="atime" ColumnName="atime" />
|
||||
<ScalarProperty Name="wuid" ColumnName="wuid" />
|
||||
<ScalarProperty Name="wdate" ColumnName="wdate" />
|
||||
</MappingFragment>
|
||||
</EntityTypeMapping>
|
||||
</EntitySetMapping>
|
||||
<EntitySetMapping Name="vGroupUser">
|
||||
<EntityTypeMapping TypeName="EEModel.vGroupUser">
|
||||
<MappingFragment StoreEntitySet="vGroupUser">
|
||||
<ScalarProperty Name="password" ColumnName="password" />
|
||||
<ScalarProperty Name="useUserState" ColumnName="useUserState" />
|
||||
<ScalarProperty Name="useJobReport" ColumnName="useJobReport" />
|
||||
<ScalarProperty Name="state" ColumnName="state" />
|
||||
<ScalarProperty Name="gcode" ColumnName="gcode" />
|
||||
<ScalarProperty Name="dept" ColumnName="dept" />
|
||||
<ScalarProperty Name="level" ColumnName="level" />
|
||||
<ScalarProperty Name="name" ColumnName="name" />
|
||||
<ScalarProperty Name="nameE" ColumnName="nameE" />
|
||||
<ScalarProperty Name="grade" ColumnName="grade" />
|
||||
<ScalarProperty Name="email" ColumnName="email" />
|
||||
<ScalarProperty Name="tel" ColumnName="tel" />
|
||||
<ScalarProperty Name="indate" ColumnName="indate" />
|
||||
<ScalarProperty Name="outdate" ColumnName="outdate" />
|
||||
<ScalarProperty Name="hp" ColumnName="hp" />
|
||||
<ScalarProperty Name="place" ColumnName="place" />
|
||||
<ScalarProperty Name="ads_employNo" ColumnName="ads_employNo" />
|
||||
<ScalarProperty Name="ads_title" ColumnName="ads_title" />
|
||||
<ScalarProperty Name="ads_created" ColumnName="ads_created" />
|
||||
<ScalarProperty Name="memo" ColumnName="memo" />
|
||||
<ScalarProperty Name="processs" ColumnName="processs" />
|
||||
<ScalarProperty Name="id" ColumnName="id" />
|
||||
</MappingFragment>
|
||||
</EntityTypeMapping>
|
||||
</EntitySetMapping>
|
||||
<EntitySetMapping Name="HolidayLIst">
|
||||
<EntityTypeMapping TypeName="EEModel.HolidayLIst">
|
||||
<MappingFragment StoreEntitySet="HolidayLIst">
|
||||
<ScalarProperty Name="wdate" ColumnName="wdate" />
|
||||
<ScalarProperty Name="wuid" ColumnName="wuid" />
|
||||
<ScalarProperty Name="memo" ColumnName="memo" />
|
||||
<ScalarProperty Name="free" ColumnName="free" />
|
||||
<ScalarProperty Name="pdate" ColumnName="pdate" />
|
||||
<ScalarProperty Name="idx" ColumnName="idx" />
|
||||
</MappingFragment>
|
||||
</EntityTypeMapping>
|
||||
</EntitySetMapping>
|
||||
<EntitySetMapping Name="MailForm">
|
||||
<EntityTypeMapping TypeName="EEModel.MailForm">
|
||||
<MappingFragment StoreEntitySet="MailForm">
|
||||
<ScalarProperty Name="exceptmailcc" ColumnName="exceptmailcc" />
|
||||
<ScalarProperty Name="exceptmail" ColumnName="exceptmail" />
|
||||
<ScalarProperty Name="wdate" ColumnName="wdate" />
|
||||
<ScalarProperty Name="wuid" ColumnName="wuid" />
|
||||
<ScalarProperty Name="selfBCC" ColumnName="selfBCC" />
|
||||
<ScalarProperty Name="selfCC" ColumnName="selfCC" />
|
||||
<ScalarProperty Name="selfTo" ColumnName="selfTo" />
|
||||
<ScalarProperty Name="body" ColumnName="body" />
|
||||
<ScalarProperty Name="tail" ColumnName="tail" />
|
||||
<ScalarProperty Name="subject" ColumnName="subject" />
|
||||
<ScalarProperty Name="cc" ColumnName="cc" />
|
||||
<ScalarProperty Name="bcc" ColumnName="bcc" />
|
||||
<ScalarProperty Name="tolist" ColumnName="tolist" />
|
||||
<ScalarProperty Name="title" ColumnName="title" />
|
||||
<ScalarProperty Name="cate" ColumnName="cate" />
|
||||
<ScalarProperty Name="gcode" ColumnName="gcode" />
|
||||
<ScalarProperty Name="idx" ColumnName="idx" />
|
||||
</MappingFragment>
|
||||
</EntityTypeMapping>
|
||||
</EntitySetMapping>
|
||||
<EntitySetMapping Name="EETGW_ProjectToDo">
|
||||
<EntityTypeMapping TypeName="EEModel.EETGW_ProjectToDo">
|
||||
<MappingFragment StoreEntitySet="EETGW_ProjectToDo">
|
||||
<ScalarProperty Name="no" ColumnName="no" />
|
||||
<ScalarProperty Name="gcode" ColumnName="gcode" />
|
||||
<ScalarProperty Name="wdate" ColumnName="wdate" />
|
||||
<ScalarProperty Name="wuid" ColumnName="wuid" />
|
||||
<ScalarProperty Name="remark2" ColumnName="remark2" />
|
||||
<ScalarProperty Name="remark" ColumnName="remark" />
|
||||
<ScalarProperty Name="process" ColumnName="process" />
|
||||
<ScalarProperty Name="edate" ColumnName="edate" />
|
||||
<ScalarProperty Name="pdate" ColumnName="pdate" />
|
||||
<ScalarProperty Name="title" ColumnName="title" />
|
||||
<ScalarProperty Name="cate" ColumnName="cate" />
|
||||
<ScalarProperty Name="sort" ColumnName="sort" />
|
||||
<ScalarProperty Name="ww" ColumnName="ww" />
|
||||
<ScalarProperty Name="sw" ColumnName="sw" />
|
||||
<ScalarProperty Name="pseq" ColumnName="pseq" />
|
||||
<ScalarProperty Name="pidx" ColumnName="pidx" />
|
||||
<ScalarProperty Name="idx" ColumnName="idx" />
|
||||
</MappingFragment>
|
||||
</EntityTypeMapping>
|
||||
</EntitySetMapping>
|
||||
<EntitySetMapping Name="Projects">
|
||||
<EntityTypeMapping TypeName="EEModel.Projects">
|
||||
<MappingFragment StoreEntitySet="Projects">
|
||||
<ScalarProperty Name="bAlert" ColumnName="bAlert" />
|
||||
<ScalarProperty Name="serial" ColumnName="serial" />
|
||||
<ScalarProperty Name="model" ColumnName="model" />
|
||||
<ScalarProperty Name="CMP_After2" ColumnName="CMP_After2" />
|
||||
<ScalarProperty Name="EB_BoardName" ColumnName="EB_BoardName" />
|
||||
<ScalarProperty Name="EB_ConstNew" ColumnName="EB_ConstNew" />
|
||||
<ScalarProperty Name="EB_RepairTime" ColumnName="EB_RepairTime" />
|
||||
<ScalarProperty Name="EB_OutSourceName" ColumnName="EB_OutSourceName" />
|
||||
<ScalarProperty Name="EB_Model" ColumnName="EB_Model" />
|
||||
<ScalarProperty Name="EB_Team" ColumnName="EB_Team" />
|
||||
<ScalarProperty Name="EB_Line" ColumnName="EB_Line" />
|
||||
<ScalarProperty Name="EB_Site" ColumnName="EB_Site" />
|
||||
<ScalarProperty Name="div" ColumnName="div" />
|
||||
<ScalarProperty Name="bFanOut" ColumnName="bFanOut" />
|
||||
<ScalarProperty Name="bCost" ColumnName="bCost" />
|
||||
<ScalarProperty Name="CMP_After" ColumnName="CMP_After" />
|
||||
<ScalarProperty Name="CMP_Before" ColumnName="CMP_Before" />
|
||||
<ScalarProperty Name="CMP_Description" ColumnName="CMP_Description" />
|
||||
<ScalarProperty Name="CMP_Background" ColumnName="CMP_Background" />
|
||||
<ScalarProperty Name="userprocess" ColumnName="userprocess" />
|
||||
<ScalarProperty Name="path" ColumnName="path" />
|
||||
<ScalarProperty Name="import" ColumnName="import" />
|
||||
<ScalarProperty Name="crdue" ColumnName="crdue" />
|
||||
<ScalarProperty Name="orderno" ColumnName="orderno" />
|
||||
<ScalarProperty Name="wdate" ColumnName="wdate" />
|
||||
<ScalarProperty Name="wuid" ColumnName="wuid" />
|
||||
<ScalarProperty Name="memo" ColumnName="memo" />
|
||||
<ScalarProperty Name="progress" ColumnName="progress" />
|
||||
<ScalarProperty Name="odate" ColumnName="odate" />
|
||||
<ScalarProperty Name="edate" ColumnName="edate" />
|
||||
<ScalarProperty Name="ddate" ColumnName="ddate" />
|
||||
<ScalarProperty Name="sdate" ColumnName="sdate" />
|
||||
<ScalarProperty Name="remark_ans" ColumnName="remark_ans" />
|
||||
<ScalarProperty Name="remark_req" ColumnName="remark_req" />
|
||||
<ScalarProperty Name="cnt" ColumnName="cnt" />
|
||||
<ScalarProperty Name="costn" ColumnName="costn" />
|
||||
<ScalarProperty Name="costo" ColumnName="costo" />
|
||||
<ScalarProperty Name="reqstaff" ColumnName="reqstaff" />
|
||||
<ScalarProperty Name="userhw2" ColumnName="userhw2" />
|
||||
<ScalarProperty Name="usersub" ColumnName="usersub" />
|
||||
<ScalarProperty Name="usermain" ColumnName="usermain" />
|
||||
<ScalarProperty Name="userManager" ColumnName="userManager" />
|
||||
<ScalarProperty Name="name" ColumnName="name" />
|
||||
<ScalarProperty Name="pdate" ColumnName="pdate" />
|
||||
<ScalarProperty Name="part" ColumnName="part" />
|
||||
<ScalarProperty Name="process" ColumnName="process" />
|
||||
<ScalarProperty Name="rev" ColumnName="rev" />
|
||||
<ScalarProperty Name="level" ColumnName="level" />
|
||||
<ScalarProperty Name="asset" ColumnName="asset" />
|
||||
<ScalarProperty Name="status" ColumnName="status" />
|
||||
<ScalarProperty Name="category" ColumnName="category" />
|
||||
<ScalarProperty Name="isdel" ColumnName="isdel" />
|
||||
<ScalarProperty Name="gcode" ColumnName="gcode" />
|
||||
<ScalarProperty Name="pidx" ColumnName="pidx" />
|
||||
<ScalarProperty Name="idx" ColumnName="idx" />
|
||||
</MappingFragment>
|
||||
</EntityTypeMapping>
|
||||
</EntitySetMapping>
|
||||
<EntitySetMapping Name="EETGW_ProjectsSchedule">
|
||||
<EntityTypeMapping TypeName="EEModel.EETGW_ProjectsSchedule">
|
||||
<MappingFragment StoreEntitySet="EETGW_ProjectsSchedule">
|
||||
<ScalarProperty Name="wdate" ColumnName="wdate" />
|
||||
<ScalarProperty Name="wuid" ColumnName="wuid" />
|
||||
<ScalarProperty Name="progress" ColumnName="progress" />
|
||||
<ScalarProperty Name="appoval" ColumnName="appoval" />
|
||||
<ScalarProperty Name="memo" ColumnName="memo" />
|
||||
<ScalarProperty Name="uid" ColumnName="uid" />
|
||||
<ScalarProperty Name="ewa" ColumnName="ewa" />
|
||||
<ScalarProperty Name="swa" ColumnName="swa" />
|
||||
<ScalarProperty Name="ew" ColumnName="ew" />
|
||||
<ScalarProperty Name="sw" ColumnName="sw" />
|
||||
<ScalarProperty Name="cate" ColumnName="cate" />
|
||||
<ScalarProperty Name="title" ColumnName="title" />
|
||||
<ScalarProperty Name="seq" ColumnName="seq" />
|
||||
<ScalarProperty Name="no" ColumnName="no" />
|
||||
<ScalarProperty Name="project" ColumnName="project" />
|
||||
<ScalarProperty Name="gcode" ColumnName="gcode" />
|
||||
<ScalarProperty Name="idx" ColumnName="idx" />
|
||||
</MappingFragment>
|
||||
</EntityTypeMapping>
|
||||
</EntitySetMapping>
|
||||
<EntitySetMapping Name="vJobReportForUser">
|
||||
<EntityTypeMapping TypeName="EEModel.vJobReportForUser">
|
||||
<MappingFragment StoreEntitySet="vJobReportForUser">
|
||||
<ScalarProperty Name="outdate" ColumnName="outdate" />
|
||||
<ScalarProperty Name="indate" ColumnName="indate" />
|
||||
<ScalarProperty Name="grade" ColumnName="grade" />
|
||||
<ScalarProperty Name="otReason" ColumnName="otReason" />
|
||||
<ScalarProperty Name="ot2" ColumnName="ot2" />
|
||||
<ScalarProperty Name="otEnd" ColumnName="otEnd" />
|
||||
<ScalarProperty Name="otStart" ColumnName="otStart" />
|
||||
<ScalarProperty Name="ww" ColumnName="ww" />
|
||||
<ScalarProperty Name="description" ColumnName="description" />
|
||||
<ScalarProperty Name="projectName" ColumnName="projectName" />
|
||||
<ScalarProperty Name="status" ColumnName="status" />
|
||||
<ScalarProperty Name="userProcess" ColumnName="userProcess" />
|
||||
<ScalarProperty Name="package" ColumnName="package" />
|
||||
<ScalarProperty Name="requestpart" ColumnName="requestpart" />
|
||||
<ScalarProperty Name="ot" ColumnName="ot" />
|
||||
<ScalarProperty Name="hrs" ColumnName="hrs" />
|
||||
<ScalarProperty Name="svalue" ColumnName="svalue" />
|
||||
<ScalarProperty Name="type" ColumnName="type" />
|
||||
<ScalarProperty Name="process" ColumnName="process" />
|
||||
<ScalarProperty Name="name" ColumnName="name" />
|
||||
<ScalarProperty Name="id" ColumnName="id" />
|
||||
<ScalarProperty Name="gcode" ColumnName="gcode" />
|
||||
<ScalarProperty Name="pdate" ColumnName="pdate" />
|
||||
<ScalarProperty Name="idx" ColumnName="idx" />
|
||||
</MappingFragment>
|
||||
</EntityTypeMapping>
|
||||
</EntitySetMapping>
|
||||
</EntityContainerMapping>
|
||||
</Mapping>
|
||||
</edmx:Mappings>
|
||||
</edmx:Runtime>
|
||||
<!-- EF Designer content (DO NOT EDIT MANUALLY BELOW HERE) -->
|
||||
<Designer xmlns="http://schemas.microsoft.com/ado/2009/11/edmx">
|
||||
<Connection>
|
||||
<DesignerInfoPropertySet>
|
||||
<DesignerProperty Name="MetadataArtifactProcessing" Value="EmbedInOutputAssembly" />
|
||||
</DesignerInfoPropertySet>
|
||||
</Connection>
|
||||
<Options>
|
||||
<DesignerInfoPropertySet>
|
||||
<DesignerProperty Name="ValidateOnBuild" Value="true" />
|
||||
<DesignerProperty Name="EnablePluralization" Value="false" />
|
||||
<DesignerProperty Name="IncludeForeignKeysInModel" Value="true" />
|
||||
<DesignerProperty Name="UseLegacyProvider" Value="false" />
|
||||
<DesignerProperty Name="CodeGenerationStrategy" Value="없음" />
|
||||
</DesignerInfoPropertySet>
|
||||
</Options>
|
||||
<!-- Diagram content (shape and connector positions) -->
|
||||
<Diagrams></Diagrams>
|
||||
</Designer>
|
||||
</edmx:Edmx>
|
||||
@@ -1,20 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<edmx:Edmx Version="3.0" xmlns:edmx="http://schemas.microsoft.com/ado/2009/11/edmx">
|
||||
<!-- EF Designer content (DO NOT EDIT MANUALLY BELOW HERE) -->
|
||||
<edmx:Designer xmlns="http://schemas.microsoft.com/ado/2009/11/edmx">
|
||||
<!-- Diagram content (shape and connector positions) -->
|
||||
<edmx:Diagrams>
|
||||
<Diagram DiagramId="c8b8f2389aab4dbe8db51886b86fe9b4" Name="Diagram1">
|
||||
<EntityTypeShape EntityType="EEModel.JobReport" Width="1.5" PointX="0.75" PointY="0.75" IsExpanded="true" />
|
||||
<EntityTypeShape EntityType="EEModel.MailData" Width="1.5" PointX="2.75" PointY="0.75" IsExpanded="true" />
|
||||
<EntityTypeShape EntityType="EEModel.vGroupUser" Width="1.5" PointX="4.75" PointY="5.75" IsExpanded="true" />
|
||||
<EntityTypeShape EntityType="EEModel.HolidayLIst" Width="1.5" PointX="0.75" PointY="6.75" />
|
||||
<EntityTypeShape EntityType="EEModel.MailForm" Width="1.5" PointX="7.375" PointY="5.75" />
|
||||
<EntityTypeShape EntityType="EEModel.EETGW_ProjectToDo" Width="2.875" PointX="10.125" PointY="5.75" />
|
||||
<EntityTypeShape EntityType="EEModel.Projects" Width="1.5" PointX="9.75" PointY="10.75" />
|
||||
<EntityTypeShape EntityType="EEModel.EETGW_ProjectsSchedule" Width="1.5" PointX="3.375" PointY="11.75" />
|
||||
<EntityTypeShape EntityType="EEModel.vJobReportForUser" Width="1.75" PointX="0.75" PointY="9.75" />
|
||||
</Diagram>
|
||||
</edmx:Diagrams>
|
||||
</edmx:Designer>
|
||||
</edmx:Edmx>
|
||||
@@ -1,733 +0,0 @@
|
||||
<#@ template language="C#" debug="false" hostspecific="true"#>
|
||||
<#@ include file="EF6.Utility.CS.ttinclude"#><#@
|
||||
output extension=".cs"#><#
|
||||
|
||||
const string inputFile = @"Model1.edmx";
|
||||
var textTransform = DynamicTextTransformation.Create(this);
|
||||
var code = new CodeGenerationTools(this);
|
||||
var ef = new MetadataTools(this);
|
||||
var typeMapper = new TypeMapper(code, ef, textTransform.Errors);
|
||||
var fileManager = EntityFrameworkTemplateFileManager.Create(this);
|
||||
var itemCollection = new EdmMetadataLoader(textTransform.Host, textTransform.Errors).CreateEdmItemCollection(inputFile);
|
||||
var codeStringGenerator = new CodeStringGenerator(code, typeMapper, ef);
|
||||
|
||||
if (!typeMapper.VerifyCaseInsensitiveTypeUniqueness(typeMapper.GetAllGlobalItems(itemCollection), inputFile))
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
WriteHeader(codeStringGenerator, fileManager);
|
||||
|
||||
foreach (var entity in typeMapper.GetItemsToGenerate<EntityType>(itemCollection))
|
||||
{
|
||||
fileManager.StartNewFile(entity.Name + ".cs");
|
||||
BeginNamespace(code);
|
||||
#>
|
||||
<#=codeStringGenerator.UsingDirectives(inHeader: false)#>
|
||||
<#=codeStringGenerator.EntityClassOpening(entity)#>
|
||||
{
|
||||
<#
|
||||
var propertiesWithDefaultValues = typeMapper.GetPropertiesWithDefaultValues(entity);
|
||||
var collectionNavigationProperties = typeMapper.GetCollectionNavigationProperties(entity);
|
||||
var complexProperties = typeMapper.GetComplexProperties(entity);
|
||||
|
||||
if (propertiesWithDefaultValues.Any() || collectionNavigationProperties.Any() || complexProperties.Any())
|
||||
{
|
||||
#>
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
|
||||
public <#=code.Escape(entity)#>()
|
||||
{
|
||||
<#
|
||||
foreach (var edmProperty in propertiesWithDefaultValues)
|
||||
{
|
||||
#>
|
||||
this.<#=code.Escape(edmProperty)#> = <#=typeMapper.CreateLiteral(edmProperty.DefaultValue)#>;
|
||||
<#
|
||||
}
|
||||
|
||||
foreach (var navigationProperty in collectionNavigationProperties)
|
||||
{
|
||||
#>
|
||||
this.<#=code.Escape(navigationProperty)#> = new HashSet<<#=typeMapper.GetTypeName(navigationProperty.ToEndMember.GetEntityType())#>>();
|
||||
<#
|
||||
}
|
||||
|
||||
foreach (var complexProperty in complexProperties)
|
||||
{
|
||||
#>
|
||||
this.<#=code.Escape(complexProperty)#> = new <#=typeMapper.GetTypeName(complexProperty.TypeUsage)#>();
|
||||
<#
|
||||
}
|
||||
#>
|
||||
}
|
||||
|
||||
<#
|
||||
}
|
||||
|
||||
var simpleProperties = typeMapper.GetSimpleProperties(entity);
|
||||
if (simpleProperties.Any())
|
||||
{
|
||||
foreach (var edmProperty in simpleProperties)
|
||||
{
|
||||
#>
|
||||
<#=codeStringGenerator.Property(edmProperty)#>
|
||||
<#
|
||||
}
|
||||
}
|
||||
|
||||
if (complexProperties.Any())
|
||||
{
|
||||
#>
|
||||
|
||||
<#
|
||||
foreach(var complexProperty in complexProperties)
|
||||
{
|
||||
#>
|
||||
<#=codeStringGenerator.Property(complexProperty)#>
|
||||
<#
|
||||
}
|
||||
}
|
||||
|
||||
var navigationProperties = typeMapper.GetNavigationProperties(entity);
|
||||
if (navigationProperties.Any())
|
||||
{
|
||||
#>
|
||||
|
||||
<#
|
||||
foreach (var navigationProperty in navigationProperties)
|
||||
{
|
||||
if (navigationProperty.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many)
|
||||
{
|
||||
#>
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
|
||||
<#
|
||||
}
|
||||
#>
|
||||
<#=codeStringGenerator.NavigationProperty(navigationProperty)#>
|
||||
<#
|
||||
}
|
||||
}
|
||||
#>
|
||||
}
|
||||
<#
|
||||
EndNamespace(code);
|
||||
}
|
||||
|
||||
foreach (var complex in typeMapper.GetItemsToGenerate<ComplexType>(itemCollection))
|
||||
{
|
||||
fileManager.StartNewFile(complex.Name + ".cs");
|
||||
BeginNamespace(code);
|
||||
#>
|
||||
<#=codeStringGenerator.UsingDirectives(inHeader: false, includeCollections: false)#>
|
||||
<#=Accessibility.ForType(complex)#> partial class <#=code.Escape(complex)#>
|
||||
{
|
||||
<#
|
||||
var complexProperties = typeMapper.GetComplexProperties(complex);
|
||||
var propertiesWithDefaultValues = typeMapper.GetPropertiesWithDefaultValues(complex);
|
||||
|
||||
if (propertiesWithDefaultValues.Any() || complexProperties.Any())
|
||||
{
|
||||
#>
|
||||
public <#=code.Escape(complex)#>()
|
||||
{
|
||||
<#
|
||||
foreach (var edmProperty in propertiesWithDefaultValues)
|
||||
{
|
||||
#>
|
||||
this.<#=code.Escape(edmProperty)#> = <#=typeMapper.CreateLiteral(edmProperty.DefaultValue)#>;
|
||||
<#
|
||||
}
|
||||
|
||||
foreach (var complexProperty in complexProperties)
|
||||
{
|
||||
#>
|
||||
this.<#=code.Escape(complexProperty)#> = new <#=typeMapper.GetTypeName(complexProperty.TypeUsage)#>();
|
||||
<#
|
||||
}
|
||||
#>
|
||||
}
|
||||
|
||||
<#
|
||||
}
|
||||
|
||||
var simpleProperties = typeMapper.GetSimpleProperties(complex);
|
||||
if (simpleProperties.Any())
|
||||
{
|
||||
foreach(var edmProperty in simpleProperties)
|
||||
{
|
||||
#>
|
||||
<#=codeStringGenerator.Property(edmProperty)#>
|
||||
<#
|
||||
}
|
||||
}
|
||||
|
||||
if (complexProperties.Any())
|
||||
{
|
||||
#>
|
||||
|
||||
<#
|
||||
foreach(var edmProperty in complexProperties)
|
||||
{
|
||||
#>
|
||||
<#=codeStringGenerator.Property(edmProperty)#>
|
||||
<#
|
||||
}
|
||||
}
|
||||
#>
|
||||
}
|
||||
<#
|
||||
EndNamespace(code);
|
||||
}
|
||||
|
||||
foreach (var enumType in typeMapper.GetEnumItemsToGenerate(itemCollection))
|
||||
{
|
||||
fileManager.StartNewFile(enumType.Name + ".cs");
|
||||
BeginNamespace(code);
|
||||
#>
|
||||
<#=codeStringGenerator.UsingDirectives(inHeader: false, includeCollections: false)#>
|
||||
<#
|
||||
if (typeMapper.EnumIsFlags(enumType))
|
||||
{
|
||||
#>
|
||||
[Flags]
|
||||
<#
|
||||
}
|
||||
#>
|
||||
<#=codeStringGenerator.EnumOpening(enumType)#>
|
||||
{
|
||||
<#
|
||||
var foundOne = false;
|
||||
|
||||
foreach (MetadataItem member in typeMapper.GetEnumMembers(enumType))
|
||||
{
|
||||
foundOne = true;
|
||||
#>
|
||||
<#=code.Escape(typeMapper.GetEnumMemberName(member))#> = <#=typeMapper.GetEnumMemberValue(member)#>,
|
||||
<#
|
||||
}
|
||||
|
||||
if (foundOne)
|
||||
{
|
||||
this.GenerationEnvironment.Remove(this.GenerationEnvironment.Length - 3, 1);
|
||||
}
|
||||
#>
|
||||
}
|
||||
<#
|
||||
EndNamespace(code);
|
||||
}
|
||||
|
||||
fileManager.Process();
|
||||
|
||||
#>
|
||||
<#+
|
||||
|
||||
public void WriteHeader(CodeStringGenerator codeStringGenerator, EntityFrameworkTemplateFileManager fileManager)
|
||||
{
|
||||
fileManager.StartHeader();
|
||||
#>
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// <#=CodeGenerationTools.GetResourceString("Template_GeneratedCodeCommentLine1")#>
|
||||
//
|
||||
// <#=CodeGenerationTools.GetResourceString("Template_GeneratedCodeCommentLine2")#>
|
||||
// <#=CodeGenerationTools.GetResourceString("Template_GeneratedCodeCommentLine3")#>
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
<#=codeStringGenerator.UsingDirectives(inHeader: true)#>
|
||||
<#+
|
||||
fileManager.EndBlock();
|
||||
}
|
||||
|
||||
public void BeginNamespace(CodeGenerationTools code)
|
||||
{
|
||||
var codeNamespace = code.VsNamespaceSuggestion();
|
||||
if (!String.IsNullOrEmpty(codeNamespace))
|
||||
{
|
||||
#>
|
||||
namespace <#=code.EscapeNamespace(codeNamespace)#>
|
||||
{
|
||||
<#+
|
||||
PushIndent(" ");
|
||||
}
|
||||
}
|
||||
|
||||
public void EndNamespace(CodeGenerationTools code)
|
||||
{
|
||||
if (!String.IsNullOrEmpty(code.VsNamespaceSuggestion()))
|
||||
{
|
||||
PopIndent();
|
||||
#>
|
||||
}
|
||||
<#+
|
||||
}
|
||||
}
|
||||
|
||||
public const string TemplateId = "CSharp_DbContext_Types_EF6";
|
||||
|
||||
public class CodeStringGenerator
|
||||
{
|
||||
private readonly CodeGenerationTools _code;
|
||||
private readonly TypeMapper _typeMapper;
|
||||
private readonly MetadataTools _ef;
|
||||
|
||||
public CodeStringGenerator(CodeGenerationTools code, TypeMapper typeMapper, MetadataTools ef)
|
||||
{
|
||||
ArgumentNotNull(code, "code");
|
||||
ArgumentNotNull(typeMapper, "typeMapper");
|
||||
ArgumentNotNull(ef, "ef");
|
||||
|
||||
_code = code;
|
||||
_typeMapper = typeMapper;
|
||||
_ef = ef;
|
||||
}
|
||||
|
||||
public string Property(EdmProperty edmProperty)
|
||||
{
|
||||
return string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"{0} {1} {2} {{ {3}get; {4}set; }}",
|
||||
Accessibility.ForProperty(edmProperty),
|
||||
_typeMapper.GetTypeName(edmProperty.TypeUsage),
|
||||
_code.Escape(edmProperty),
|
||||
_code.SpaceAfter(Accessibility.ForGetter(edmProperty)),
|
||||
_code.SpaceAfter(Accessibility.ForSetter(edmProperty)));
|
||||
}
|
||||
|
||||
public string NavigationProperty(NavigationProperty navProp)
|
||||
{
|
||||
var endType = _typeMapper.GetTypeName(navProp.ToEndMember.GetEntityType());
|
||||
return string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"{0} {1} {2} {{ {3}get; {4}set; }}",
|
||||
AccessibilityAndVirtual(Accessibility.ForNavigationProperty(navProp)),
|
||||
navProp.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many ? ("ICollection<" + endType + ">") : endType,
|
||||
_code.Escape(navProp),
|
||||
_code.SpaceAfter(Accessibility.ForGetter(navProp)),
|
||||
_code.SpaceAfter(Accessibility.ForSetter(navProp)));
|
||||
}
|
||||
|
||||
public string AccessibilityAndVirtual(string accessibility)
|
||||
{
|
||||
return accessibility + (accessibility != "private" ? " virtual" : "");
|
||||
}
|
||||
|
||||
public string EntityClassOpening(EntityType entity)
|
||||
{
|
||||
return string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"{0} {1}partial class {2}{3}",
|
||||
Accessibility.ForType(entity),
|
||||
_code.SpaceAfter(_code.AbstractOption(entity)),
|
||||
_code.Escape(entity),
|
||||
_code.StringBefore(" : ", _typeMapper.GetTypeName(entity.BaseType)));
|
||||
}
|
||||
|
||||
public string EnumOpening(SimpleType enumType)
|
||||
{
|
||||
return string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"{0} enum {1} : {2}",
|
||||
Accessibility.ForType(enumType),
|
||||
_code.Escape(enumType),
|
||||
_code.Escape(_typeMapper.UnderlyingClrType(enumType)));
|
||||
}
|
||||
|
||||
public void WriteFunctionParameters(EdmFunction edmFunction, Action<string, string, string, string> writeParameter)
|
||||
{
|
||||
var parameters = FunctionImportParameter.Create(edmFunction.Parameters, _code, _ef);
|
||||
foreach (var parameter in parameters.Where(p => p.NeedsLocalVariable))
|
||||
{
|
||||
var isNotNull = parameter.IsNullableOfT ? parameter.FunctionParameterName + ".HasValue" : parameter.FunctionParameterName + " != null";
|
||||
var notNullInit = "new ObjectParameter(\"" + parameter.EsqlParameterName + "\", " + parameter.FunctionParameterName + ")";
|
||||
var nullInit = "new ObjectParameter(\"" + parameter.EsqlParameterName + "\", typeof(" + TypeMapper.FixNamespaces(parameter.RawClrTypeName) + "))";
|
||||
writeParameter(parameter.LocalVariableName, isNotNull, notNullInit, nullInit);
|
||||
}
|
||||
}
|
||||
|
||||
public string ComposableFunctionMethod(EdmFunction edmFunction, string modelNamespace)
|
||||
{
|
||||
var parameters = _typeMapper.GetParameters(edmFunction);
|
||||
|
||||
return string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"{0} IQueryable<{1}> {2}({3})",
|
||||
AccessibilityAndVirtual(Accessibility.ForMethod(edmFunction)),
|
||||
_typeMapper.GetTypeName(_typeMapper.GetReturnType(edmFunction), modelNamespace),
|
||||
_code.Escape(edmFunction),
|
||||
string.Join(", ", parameters.Select(p => TypeMapper.FixNamespaces(p.FunctionParameterType) + " " + p.FunctionParameterName).ToArray()));
|
||||
}
|
||||
|
||||
public string ComposableCreateQuery(EdmFunction edmFunction, string modelNamespace)
|
||||
{
|
||||
var parameters = _typeMapper.GetParameters(edmFunction);
|
||||
|
||||
return string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"return ((IObjectContextAdapter)this).ObjectContext.CreateQuery<{0}>(\"[{1}].[{2}]({3})\"{4});",
|
||||
_typeMapper.GetTypeName(_typeMapper.GetReturnType(edmFunction), modelNamespace),
|
||||
edmFunction.NamespaceName,
|
||||
edmFunction.Name,
|
||||
string.Join(", ", parameters.Select(p => "@" + p.EsqlParameterName).ToArray()),
|
||||
_code.StringBefore(", ", string.Join(", ", parameters.Select(p => p.ExecuteParameterName).ToArray())));
|
||||
}
|
||||
|
||||
public string FunctionMethod(EdmFunction edmFunction, string modelNamespace, bool includeMergeOption)
|
||||
{
|
||||
var parameters = _typeMapper.GetParameters(edmFunction);
|
||||
var returnType = _typeMapper.GetReturnType(edmFunction);
|
||||
|
||||
var paramList = String.Join(", ", parameters.Select(p => TypeMapper.FixNamespaces(p.FunctionParameterType) + " " + p.FunctionParameterName).ToArray());
|
||||
if (includeMergeOption)
|
||||
{
|
||||
paramList = _code.StringAfter(paramList, ", ") + "MergeOption mergeOption";
|
||||
}
|
||||
|
||||
return string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"{0} {1} {2}({3})",
|
||||
AccessibilityAndVirtual(Accessibility.ForMethod(edmFunction)),
|
||||
returnType == null ? "int" : "ObjectResult<" + _typeMapper.GetTypeName(returnType, modelNamespace) + ">",
|
||||
_code.Escape(edmFunction),
|
||||
paramList);
|
||||
}
|
||||
|
||||
public string ExecuteFunction(EdmFunction edmFunction, string modelNamespace, bool includeMergeOption)
|
||||
{
|
||||
var parameters = _typeMapper.GetParameters(edmFunction);
|
||||
var returnType = _typeMapper.GetReturnType(edmFunction);
|
||||
|
||||
var callParams = _code.StringBefore(", ", String.Join(", ", parameters.Select(p => p.ExecuteParameterName).ToArray()));
|
||||
if (includeMergeOption)
|
||||
{
|
||||
callParams = ", mergeOption" + callParams;
|
||||
}
|
||||
|
||||
return string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction{0}(\"{1}\"{2});",
|
||||
returnType == null ? "" : "<" + _typeMapper.GetTypeName(returnType, modelNamespace) + ">",
|
||||
edmFunction.Name,
|
||||
callParams);
|
||||
}
|
||||
|
||||
public string DbSet(EntitySet entitySet)
|
||||
{
|
||||
return string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"{0} virtual DbSet<{1}> {2} {{ get; set; }}",
|
||||
Accessibility.ForReadOnlyProperty(entitySet),
|
||||
_typeMapper.GetTypeName(entitySet.ElementType),
|
||||
_code.Escape(entitySet));
|
||||
}
|
||||
|
||||
public string UsingDirectives(bool inHeader, bool includeCollections = true)
|
||||
{
|
||||
return inHeader == string.IsNullOrEmpty(_code.VsNamespaceSuggestion())
|
||||
? string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"{0}using System;{1}" +
|
||||
"{2}",
|
||||
inHeader ? Environment.NewLine : "",
|
||||
includeCollections ? (Environment.NewLine + "using System.Collections.Generic;") : "",
|
||||
inHeader ? "" : Environment.NewLine)
|
||||
: "";
|
||||
}
|
||||
}
|
||||
|
||||
public class TypeMapper
|
||||
{
|
||||
private const string ExternalTypeNameAttributeName = @"http://schemas.microsoft.com/ado/2006/04/codegeneration:ExternalTypeName";
|
||||
|
||||
private readonly System.Collections.IList _errors;
|
||||
private readonly CodeGenerationTools _code;
|
||||
private readonly MetadataTools _ef;
|
||||
|
||||
public TypeMapper(CodeGenerationTools code, MetadataTools ef, System.Collections.IList errors)
|
||||
{
|
||||
ArgumentNotNull(code, "code");
|
||||
ArgumentNotNull(ef, "ef");
|
||||
ArgumentNotNull(errors, "errors");
|
||||
|
||||
_code = code;
|
||||
_ef = ef;
|
||||
_errors = errors;
|
||||
}
|
||||
|
||||
public static string FixNamespaces(string typeName)
|
||||
{
|
||||
return typeName.Replace("System.Data.Spatial.", "System.Data.Entity.Spatial.");
|
||||
}
|
||||
|
||||
public string GetTypeName(TypeUsage typeUsage)
|
||||
{
|
||||
return typeUsage == null ? null : GetTypeName(typeUsage.EdmType, _ef.IsNullable(typeUsage), modelNamespace: null);
|
||||
}
|
||||
|
||||
public string GetTypeName(EdmType edmType)
|
||||
{
|
||||
return GetTypeName(edmType, isNullable: null, modelNamespace: null);
|
||||
}
|
||||
|
||||
public string GetTypeName(TypeUsage typeUsage, string modelNamespace)
|
||||
{
|
||||
return typeUsage == null ? null : GetTypeName(typeUsage.EdmType, _ef.IsNullable(typeUsage), modelNamespace);
|
||||
}
|
||||
|
||||
public string GetTypeName(EdmType edmType, string modelNamespace)
|
||||
{
|
||||
return GetTypeName(edmType, isNullable: null, modelNamespace: modelNamespace);
|
||||
}
|
||||
|
||||
public string GetTypeName(EdmType edmType, bool? isNullable, string modelNamespace)
|
||||
{
|
||||
if (edmType == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var collectionType = edmType as CollectionType;
|
||||
if (collectionType != null)
|
||||
{
|
||||
return String.Format(CultureInfo.InvariantCulture, "ICollection<{0}>", GetTypeName(collectionType.TypeUsage, modelNamespace));
|
||||
}
|
||||
|
||||
var typeName = _code.Escape(edmType.MetadataProperties
|
||||
.Where(p => p.Name == ExternalTypeNameAttributeName)
|
||||
.Select(p => (string)p.Value)
|
||||
.FirstOrDefault())
|
||||
?? (modelNamespace != null && edmType.NamespaceName != modelNamespace ?
|
||||
_code.CreateFullName(_code.EscapeNamespace(edmType.NamespaceName), _code.Escape(edmType)) :
|
||||
_code.Escape(edmType));
|
||||
|
||||
if (edmType is StructuralType)
|
||||
{
|
||||
return typeName;
|
||||
}
|
||||
|
||||
if (edmType is SimpleType)
|
||||
{
|
||||
var clrType = UnderlyingClrType(edmType);
|
||||
if (!IsEnumType(edmType))
|
||||
{
|
||||
typeName = _code.Escape(clrType);
|
||||
}
|
||||
|
||||
typeName = FixNamespaces(typeName);
|
||||
|
||||
return clrType.IsValueType && isNullable == true ?
|
||||
String.Format(CultureInfo.InvariantCulture, "Nullable<{0}>", typeName) :
|
||||
typeName;
|
||||
}
|
||||
|
||||
throw new ArgumentException("edmType");
|
||||
}
|
||||
|
||||
public Type UnderlyingClrType(EdmType edmType)
|
||||
{
|
||||
ArgumentNotNull(edmType, "edmType");
|
||||
|
||||
var primitiveType = edmType as PrimitiveType;
|
||||
if (primitiveType != null)
|
||||
{
|
||||
return primitiveType.ClrEquivalentType;
|
||||
}
|
||||
|
||||
if (IsEnumType(edmType))
|
||||
{
|
||||
return GetEnumUnderlyingType(edmType).ClrEquivalentType;
|
||||
}
|
||||
|
||||
return typeof(object);
|
||||
}
|
||||
|
||||
public object GetEnumMemberValue(MetadataItem enumMember)
|
||||
{
|
||||
ArgumentNotNull(enumMember, "enumMember");
|
||||
|
||||
var valueProperty = enumMember.GetType().GetProperty("Value");
|
||||
return valueProperty == null ? null : valueProperty.GetValue(enumMember, null);
|
||||
}
|
||||
|
||||
public string GetEnumMemberName(MetadataItem enumMember)
|
||||
{
|
||||
ArgumentNotNull(enumMember, "enumMember");
|
||||
|
||||
var nameProperty = enumMember.GetType().GetProperty("Name");
|
||||
return nameProperty == null ? null : (string)nameProperty.GetValue(enumMember, null);
|
||||
}
|
||||
|
||||
public System.Collections.IEnumerable GetEnumMembers(EdmType enumType)
|
||||
{
|
||||
ArgumentNotNull(enumType, "enumType");
|
||||
|
||||
var membersProperty = enumType.GetType().GetProperty("Members");
|
||||
return membersProperty != null
|
||||
? (System.Collections.IEnumerable)membersProperty.GetValue(enumType, null)
|
||||
: Enumerable.Empty<MetadataItem>();
|
||||
}
|
||||
|
||||
public bool EnumIsFlags(EdmType enumType)
|
||||
{
|
||||
ArgumentNotNull(enumType, "enumType");
|
||||
|
||||
var isFlagsProperty = enumType.GetType().GetProperty("IsFlags");
|
||||
return isFlagsProperty != null && (bool)isFlagsProperty.GetValue(enumType, null);
|
||||
}
|
||||
|
||||
public bool IsEnumType(GlobalItem edmType)
|
||||
{
|
||||
ArgumentNotNull(edmType, "edmType");
|
||||
|
||||
return edmType.GetType().Name == "EnumType";
|
||||
}
|
||||
|
||||
public PrimitiveType GetEnumUnderlyingType(EdmType enumType)
|
||||
{
|
||||
ArgumentNotNull(enumType, "enumType");
|
||||
|
||||
return (PrimitiveType)enumType.GetType().GetProperty("UnderlyingType").GetValue(enumType, null);
|
||||
}
|
||||
|
||||
public string CreateLiteral(object value)
|
||||
{
|
||||
if (value == null || value.GetType() != typeof(TimeSpan))
|
||||
{
|
||||
return _code.CreateLiteral(value);
|
||||
}
|
||||
|
||||
return string.Format(CultureInfo.InvariantCulture, "new TimeSpan({0})", ((TimeSpan)value).Ticks);
|
||||
}
|
||||
|
||||
public bool VerifyCaseInsensitiveTypeUniqueness(IEnumerable<string> types, string sourceFile)
|
||||
{
|
||||
ArgumentNotNull(types, "types");
|
||||
ArgumentNotNull(sourceFile, "sourceFile");
|
||||
|
||||
var hash = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);
|
||||
if (types.Any(item => !hash.Add(item)))
|
||||
{
|
||||
_errors.Add(
|
||||
new CompilerError(sourceFile, -1, -1, "6023",
|
||||
String.Format(CultureInfo.CurrentCulture, CodeGenerationTools.GetResourceString("Template_CaseInsensitiveTypeConflict"))));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public IEnumerable<SimpleType> GetEnumItemsToGenerate(IEnumerable<GlobalItem> itemCollection)
|
||||
{
|
||||
return GetItemsToGenerate<SimpleType>(itemCollection)
|
||||
.Where(e => IsEnumType(e));
|
||||
}
|
||||
|
||||
public IEnumerable<T> GetItemsToGenerate<T>(IEnumerable<GlobalItem> itemCollection) where T: EdmType
|
||||
{
|
||||
return itemCollection
|
||||
.OfType<T>()
|
||||
.Where(i => !i.MetadataProperties.Any(p => p.Name == ExternalTypeNameAttributeName))
|
||||
.OrderBy(i => i.Name);
|
||||
}
|
||||
|
||||
public IEnumerable<string> GetAllGlobalItems(IEnumerable<GlobalItem> itemCollection)
|
||||
{
|
||||
return itemCollection
|
||||
.Where(i => i is EntityType || i is ComplexType || i is EntityContainer || IsEnumType(i))
|
||||
.Select(g => GetGlobalItemName(g));
|
||||
}
|
||||
|
||||
public string GetGlobalItemName(GlobalItem item)
|
||||
{
|
||||
if (item is EdmType)
|
||||
{
|
||||
return ((EdmType)item).Name;
|
||||
}
|
||||
else
|
||||
{
|
||||
return ((EntityContainer)item).Name;
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<EdmProperty> GetSimpleProperties(EntityType type)
|
||||
{
|
||||
return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type);
|
||||
}
|
||||
|
||||
public IEnumerable<EdmProperty> GetSimpleProperties(ComplexType type)
|
||||
{
|
||||
return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type);
|
||||
}
|
||||
|
||||
public IEnumerable<EdmProperty> GetComplexProperties(EntityType type)
|
||||
{
|
||||
return type.Properties.Where(p => p.TypeUsage.EdmType is ComplexType && p.DeclaringType == type);
|
||||
}
|
||||
|
||||
public IEnumerable<EdmProperty> GetComplexProperties(ComplexType type)
|
||||
{
|
||||
return type.Properties.Where(p => p.TypeUsage.EdmType is ComplexType && p.DeclaringType == type);
|
||||
}
|
||||
|
||||
public IEnumerable<EdmProperty> GetPropertiesWithDefaultValues(EntityType type)
|
||||
{
|
||||
return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type && p.DefaultValue != null);
|
||||
}
|
||||
|
||||
public IEnumerable<EdmProperty> GetPropertiesWithDefaultValues(ComplexType type)
|
||||
{
|
||||
return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type && p.DefaultValue != null);
|
||||
}
|
||||
|
||||
public IEnumerable<NavigationProperty> GetNavigationProperties(EntityType type)
|
||||
{
|
||||
return type.NavigationProperties.Where(np => np.DeclaringType == type);
|
||||
}
|
||||
|
||||
public IEnumerable<NavigationProperty> GetCollectionNavigationProperties(EntityType type)
|
||||
{
|
||||
return type.NavigationProperties.Where(np => np.DeclaringType == type && np.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many);
|
||||
}
|
||||
|
||||
public FunctionParameter GetReturnParameter(EdmFunction edmFunction)
|
||||
{
|
||||
ArgumentNotNull(edmFunction, "edmFunction");
|
||||
|
||||
var returnParamsProperty = edmFunction.GetType().GetProperty("ReturnParameters");
|
||||
return returnParamsProperty == null
|
||||
? edmFunction.ReturnParameter
|
||||
: ((IEnumerable<FunctionParameter>)returnParamsProperty.GetValue(edmFunction, null)).FirstOrDefault();
|
||||
}
|
||||
|
||||
public bool IsComposable(EdmFunction edmFunction)
|
||||
{
|
||||
ArgumentNotNull(edmFunction, "edmFunction");
|
||||
|
||||
var isComposableProperty = edmFunction.GetType().GetProperty("IsComposableAttribute");
|
||||
return isComposableProperty != null && (bool)isComposableProperty.GetValue(edmFunction, null);
|
||||
}
|
||||
|
||||
public IEnumerable<FunctionImportParameter> GetParameters(EdmFunction edmFunction)
|
||||
{
|
||||
return FunctionImportParameter.Create(edmFunction.Parameters, _code, _ef);
|
||||
}
|
||||
|
||||
public TypeUsage GetReturnType(EdmFunction edmFunction)
|
||||
{
|
||||
var returnParam = GetReturnParameter(edmFunction);
|
||||
return returnParam == null ? null : _ef.GetElementType(returnParam.TypeUsage);
|
||||
}
|
||||
|
||||
public bool GenerateMergeOptionFunction(EdmFunction edmFunction, bool includeMergeOption)
|
||||
{
|
||||
var returnType = GetReturnType(edmFunction);
|
||||
return !includeMergeOption && returnType != null && returnType.EdmType.BuiltInTypeKind == BuiltInTypeKind.EntityType;
|
||||
}
|
||||
}
|
||||
|
||||
public static void ArgumentNotNull<T>(T arg, string name) where T : class
|
||||
{
|
||||
if (arg == null)
|
||||
{
|
||||
throw new ArgumentNullException(name);
|
||||
}
|
||||
}
|
||||
#>
|
||||
@@ -1,28 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// 해당 애플리케이션의 주 진입점입니다.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main(string[] args)
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
|
||||
if (args != null && args.Length == 1 && args[0] == "DEBUG")
|
||||
Pub.debugmode = true;
|
||||
else
|
||||
Pub.debugmode = false;
|
||||
|
||||
Application.Run(new MDIParent1());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,91 +0,0 @@
|
||||
//using System;
|
||||
//using System.Collections.Generic;
|
||||
//using System.Data.SqlClient;
|
||||
//using System.Linq;
|
||||
//using System.Text;
|
||||
//using System.Threading.Tasks;
|
||||
|
||||
//namespace JobReportMailService
|
||||
//{
|
||||
// partial class Program_bak
|
||||
// {
|
||||
// static CSetting setting = new CSetting();
|
||||
// static DateTime ChkAutoDate = DateTime.Now.AddDays(-1);
|
||||
// static string vGcode = "EET1P";
|
||||
// static bool cn = false;
|
||||
// static DateTime LastUpdateTime = DateTime.Now.AddHours(-1);
|
||||
// static DateTime ConsoleTime = DateTime.Now.AddDays(-1);
|
||||
|
||||
|
||||
// static void Main(string[] args)
|
||||
// {
|
||||
// setting = new CSetting();
|
||||
// setting.Load();
|
||||
// if (setting.Xml.Exist() == false)
|
||||
// {
|
||||
// Console.WriteLine("new setting file make");
|
||||
// setting.Save();
|
||||
// }
|
||||
|
||||
|
||||
// while (true)
|
||||
// {
|
||||
// //등록된 날짜를 확인하여, 해당 일자가 일반 평일 이라면 8시간 체크해서 메일을 보낸다.
|
||||
// //등록된 날짜가 토,일은 제외한다.
|
||||
|
||||
// var ts = DateTime.Now - LastUpdateTime;
|
||||
// if (ts.TotalMinutes <= 15)
|
||||
// {
|
||||
// //15분 미만이면 동작하지 않는다
|
||||
// if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
// {
|
||||
// Console.WriteLine("15분 미만이라 동작하지 않습니다");
|
||||
// ConsoleTime = DateTime.Now;
|
||||
// }
|
||||
// }
|
||||
// else if (DateTime.Now.DayOfWeek == DayOfWeek.Saturday || DateTime.Now.DayOfWeek == DayOfWeek.Sunday)
|
||||
// {
|
||||
// //토,일요일에는 동작하지 않는다
|
||||
// if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
// {
|
||||
// Console.WriteLine("토/일에는 동작하지 않습니다");
|
||||
// ConsoleTime = DateTime.Now;
|
||||
// }
|
||||
// }
|
||||
// else if (DateTime.Now.Hour < 9)
|
||||
// {
|
||||
// if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
// {
|
||||
// Console.WriteLine("9시 이전에는 동작하지 않습니다");
|
||||
// ConsoleTime = DateTime.Now;
|
||||
// }
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// LastUpdateTime = DateTime.Now;
|
||||
// try
|
||||
// {
|
||||
// WorkDay();
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// Console.WriteLine("일간업무알림 실패: " + ex.Message);
|
||||
// }
|
||||
|
||||
// try
|
||||
// {
|
||||
// WorkWeek();
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// Console.WriteLine("주간업무알림 실패: " + ex.Message);
|
||||
// }
|
||||
// }
|
||||
|
||||
// System.Threading.Thread.Sleep(60000); //1분단위로 체크한다
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
// }
|
||||
//}
|
||||
@@ -1,73 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 이 코드는 템플릿에서 생성되었습니다.
|
||||
//
|
||||
// 이 파일을 수동으로 변경하면 응용 프로그램에서 예기치 않은 동작이 발생할 수 있습니다.
|
||||
// 이 파일을 수동으로 변경하면 코드가 다시 생성될 때 변경 내용을 덮어씁니다.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
public partial class Projects
|
||||
{
|
||||
public int idx { get; set; }
|
||||
public Nullable<int> pidx { get; set; }
|
||||
public string gcode { get; set; }
|
||||
public Nullable<bool> isdel { get; set; }
|
||||
public string category { get; set; }
|
||||
public string status { get; set; }
|
||||
public string asset { get; set; }
|
||||
public Nullable<int> level { get; set; }
|
||||
public Nullable<int> rev { get; set; }
|
||||
public string process { get; set; }
|
||||
public string part { get; set; }
|
||||
public string pdate { get; set; }
|
||||
public string name { get; set; }
|
||||
public string userManager { get; set; }
|
||||
public string usermain { get; set; }
|
||||
public string usersub { get; set; }
|
||||
public string userhw2 { get; set; }
|
||||
public string reqstaff { get; set; }
|
||||
public Nullable<double> costo { get; set; }
|
||||
public Nullable<double> costn { get; set; }
|
||||
public Nullable<int> cnt { get; set; }
|
||||
public string remark_req { get; set; }
|
||||
public string remark_ans { get; set; }
|
||||
public string sdate { get; set; }
|
||||
public string ddate { get; set; }
|
||||
public string edate { get; set; }
|
||||
public string odate { get; set; }
|
||||
public Nullable<int> progress { get; set; }
|
||||
public string memo { get; set; }
|
||||
public string wuid { get; set; }
|
||||
public System.DateTime wdate { get; set; }
|
||||
public string orderno { get; set; }
|
||||
public string crdue { get; set; }
|
||||
public Nullable<bool> import { get; set; }
|
||||
public string path { get; set; }
|
||||
public string userprocess { get; set; }
|
||||
public string CMP_Background { get; set; }
|
||||
public string CMP_Description { get; set; }
|
||||
public string CMP_Before { get; set; }
|
||||
public string CMP_After { get; set; }
|
||||
public Nullable<bool> bCost { get; set; }
|
||||
public Nullable<bool> bFanOut { get; set; }
|
||||
public string div { get; set; }
|
||||
public string EB_Site { get; set; }
|
||||
public string EB_Line { get; set; }
|
||||
public string EB_Team { get; set; }
|
||||
public string EB_Model { get; set; }
|
||||
public string EB_OutSourceName { get; set; }
|
||||
public Nullable<double> EB_RepairTime { get; set; }
|
||||
public Nullable<double> EB_ConstNew { get; set; }
|
||||
public string EB_BoardName { get; set; }
|
||||
public string CMP_After2 { get; set; }
|
||||
public string model { get; set; }
|
||||
public string serial { get; set; }
|
||||
public Nullable<bool> bAlert { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
|
||||
// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
|
||||
// 이러한 특성 값을 변경하세요.
|
||||
[assembly: AssemblyTitle("JobReportMailService")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("JobReportMailService")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2020")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
|
||||
// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
|
||||
// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
|
||||
[assembly: Guid("dbe5bd4a-09d3-4437-ad6c-81fe270c6458")]
|
||||
|
||||
// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
|
||||
//
|
||||
// 주 버전
|
||||
// 부 버전
|
||||
// 빌드 번호
|
||||
// 수정 버전
|
||||
//
|
||||
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
|
||||
// 기본값으로 할 수 있습니다.
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("22.05.30.0920")]
|
||||
[assembly: AssemblyFileVersion("22.05.30.0920")]
|
||||
37
JobReportMailService/Properties/Settings.Designer.cs
generated
37
JobReportMailService/Properties/Settings.Designer.cs
generated
@@ -1,37 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 이 코드는 도구를 사용하여 생성되었습니다.
|
||||
// 런타임 버전:4.0.30319.42000
|
||||
//
|
||||
// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
|
||||
// 이러한 변경 내용이 손실됩니다.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace JobReportMailService.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("Data Source=10.131.15.18;Initial Catalog=EE;Persist Security Info=True;User ID=ee" +
|
||||
"user;Password=Amkor123!")]
|
||||
public string CS {
|
||||
get {
|
||||
return ((string)(this["CS"]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="JobReportMailService.Properties" GeneratedClassName="Settings">
|
||||
<Profiles />
|
||||
<Settings>
|
||||
<Setting Name="CS" Type="(Connection string)" Scope="Application">
|
||||
<DesignTimeValue Profile="(Default)"><?xml version="1.0" encoding="utf-16"?>
|
||||
<SerializableConnectionString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<ConnectionString>Data Source=10.131.15.18;Initial Catalog=EE;Persist Security Info=True;User ID=eeuser;Password=Amkor123!</ConnectionString>
|
||||
<ProviderName>System.Data.SqlClient</ProviderName>
|
||||
</SerializableConnectionString></DesignTimeValue>
|
||||
<Value Profile="(Default)">Data Source=10.131.15.18;Initial Catalog=EE;Persist Security Info=True;User ID=eeuser;Password=Amkor123!</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
||||
@@ -1,31 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
public static class Pub
|
||||
{
|
||||
// public static string vGcode = "EET1P";
|
||||
public static CSetting setting;
|
||||
public static Boolean debugmode = false;
|
||||
|
||||
public static string MailSort(string addr, string except)
|
||||
{
|
||||
if (string.IsNullOrEmpty(except)) return addr;
|
||||
var alist = addr.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||
var elist = except.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||
foreach (var item in elist)
|
||||
alist.Remove(item);
|
||||
if (alist.Count < 1) return string.Empty;
|
||||
return string.Join(";", alist);
|
||||
}
|
||||
public static void init()
|
||||
{
|
||||
setting = new CSetting();
|
||||
setting.Load();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
200607 EETGW_GroupUser 에 업무일지 미사용 체크된 인원은 sendmail 에서 제외하게 변경
|
||||
@@ -1,16 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
public class ReportUserData
|
||||
{
|
||||
public DateTime date { get; set; }
|
||||
public string uid { get; set; }
|
||||
public string uname { get; set; }
|
||||
public double hrs { get; set; }
|
||||
}
|
||||
}
|
||||
69
JobReportMailService/fChildBase.Designer.cs
generated
69
JobReportMailService/fChildBase.Designer.cs
generated
@@ -1,69 +0,0 @@
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
partial class fChildBase
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
|
||||
this.timer1 = new System.Windows.Forms.Timer(this.components);
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// richTextBox1
|
||||
//
|
||||
this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.richTextBox1.Location = new System.Drawing.Point(0, 0);
|
||||
this.richTextBox1.Name = "richTextBox1";
|
||||
this.richTextBox1.Size = new System.Drawing.Size(704, 491);
|
||||
this.richTextBox1.TabIndex = 1;
|
||||
this.richTextBox1.Text = "";
|
||||
//
|
||||
// timer1
|
||||
//
|
||||
this.timer1.Interval = 250;
|
||||
//
|
||||
// fChildBase
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(704, 491);
|
||||
this.Controls.Add(this.richTextBox1);
|
||||
this.Name = "fChildBase";
|
||||
this.Text = "fChildBase";
|
||||
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.fChildBase_FormClosed);
|
||||
this.Load += new System.EventHandler(this.fChildBase_Load);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.RichTextBox richTextBox1;
|
||||
protected System.Windows.Forms.Timer timer1;
|
||||
}
|
||||
}
|
||||
@@ -1,69 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
public partial class fChildBase : Form
|
||||
{
|
||||
protected Boolean taskrun = true;
|
||||
protected DateTime ChkMakeSchDayWeekTime;
|
||||
protected DateTime ConsoleTime;
|
||||
protected Task task = null;
|
||||
protected int Delaytime = 60000;
|
||||
protected Boolean taskwait = true;
|
||||
|
||||
public fChildBase()
|
||||
{
|
||||
InitializeComponent();
|
||||
ChkMakeSchDayWeekTime = DateTime.Now.AddDays(-1);
|
||||
ConsoleTime = ChkMakeSchDayWeekTime;
|
||||
}
|
||||
|
||||
private void fChildBase_Load(object sender, EventArgs e)
|
||||
{
|
||||
//taskwait = Pub.debugmode;
|
||||
}
|
||||
|
||||
protected void addmsg(string m)
|
||||
{
|
||||
if (this.richTextBox1.InvokeRequired)
|
||||
{
|
||||
this.richTextBox1.BeginInvoke(new Action(() =>
|
||||
{
|
||||
if (this.richTextBox1.Lines.Length > 1000) this.richTextBox1.Clear();
|
||||
this.richTextBox1.AppendText(DateTime.Now.ToString("HH:mm:ss.fff") + "] " + m + "\n");
|
||||
this.richTextBox1.ScrollToCaret();
|
||||
}));
|
||||
return;
|
||||
}
|
||||
if (this.richTextBox1.Lines.Length > 1000) this.richTextBox1.Clear();
|
||||
this.richTextBox1.AppendText(DateTime.Now.ToString("HH:mm:ss.fff") + "] " + m + "\n");
|
||||
this.richTextBox1.ScrollToCaret();
|
||||
}
|
||||
|
||||
private void fChildBase_FormClosed(object sender, FormClosedEventArgs e)
|
||||
{
|
||||
if(this.task != null)
|
||||
{
|
||||
taskwait = true;
|
||||
taskrun = false;
|
||||
task.Wait(1000);
|
||||
try
|
||||
{
|
||||
task.Dispose();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,123 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
||||
95
JobReportMailService/fJobReportDay.Designer.cs
generated
95
JobReportMailService/fJobReportDay.Designer.cs
generated
@@ -1,95 +0,0 @@
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
partial class fJobReportDay
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fJobReportDay));
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.btRun = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// timer1
|
||||
//
|
||||
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.btRun,
|
||||
this.toolStripButton1});
|
||||
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.Size = new System.Drawing.Size(473, 25);
|
||||
this.toolStrip1.TabIndex = 2;
|
||||
this.toolStrip1.Text = "toolStrip1";
|
||||
//
|
||||
// btRun
|
||||
//
|
||||
this.btRun.Image = ((System.Drawing.Image)(resources.GetObject("btRun.Image")));
|
||||
this.btRun.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.btRun.Name = "btRun";
|
||||
this.btRun.Size = new System.Drawing.Size(48, 22);
|
||||
this.btRun.Text = "Run";
|
||||
this.btRun.Click += new System.EventHandler(this.toolStripButton1_Click);
|
||||
//
|
||||
// toolStripButton1
|
||||
//
|
||||
this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image")));
|
||||
this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButton1.Name = "toolStripButton1";
|
||||
this.toolStripButton1.Size = new System.Drawing.Size(67, 22);
|
||||
this.toolStripButton1.Text = "manual";
|
||||
this.toolStripButton1.Click += new System.EventHandler(this.toolStripButton1_Click_1);
|
||||
//
|
||||
// fJobReportDay
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(473, 416);
|
||||
this.Controls.Add(this.toolStrip1);
|
||||
this.Name = "fJobReportDay";
|
||||
this.Text = "업무일지(일보고)";
|
||||
this.Load += new System.EventHandler(this.fJobReportDay_Load);
|
||||
this.Controls.SetChildIndex(this.toolStrip1, 0);
|
||||
this.toolStrip1.ResumeLayout(false);
|
||||
this.toolStrip1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ToolStrip toolStrip1;
|
||||
private System.Windows.Forms.ToolStripButton btRun;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButton1;
|
||||
}
|
||||
}
|
||||
@@ -1,454 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
public partial class fJobReportDay : fChildBase
|
||||
{
|
||||
|
||||
public fJobReportDay()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void fJobReportDay_Load(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
task = Task.Run(() =>
|
||||
{
|
||||
while (taskrun)
|
||||
{
|
||||
if (taskwait)
|
||||
{
|
||||
task.Wait(1000);
|
||||
continue;
|
||||
}
|
||||
|
||||
var ts = DateTime.Now - ChkMakeSchDayWeekTime;
|
||||
if (ts.TotalMinutes <= 15)
|
||||
{
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
addmsg("15분 미만이라 동작하지 않습니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else if (DateTime.Now.DayOfWeek == DayOfWeek.Saturday ||
|
||||
DateTime.Now.DayOfWeek == DayOfWeek.Sunday ||
|
||||
DateTime.Now.DayOfWeek == DayOfWeek.Monday)
|
||||
{
|
||||
//토,일요일에는 동작하지 않는다
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
addmsg("토/일/월에는 동작하지 않습니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else if (DateTime.Now.Hour < 9)
|
||||
{
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
addmsg("9시 이전에는 동작하지 않습니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ChkMakeSchDayWeekTime = DateTime.Now;
|
||||
try
|
||||
{
|
||||
RunData();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
|
||||
addmsg(ex.Message);
|
||||
|
||||
using(var ta = new DataSet1TableAdapters.MailDataTableAdapter())
|
||||
{
|
||||
using (var dt = new DataSet1.MailDataDataTable())
|
||||
{
|
||||
var newdr = dt.NewMailDataRow();
|
||||
newdr.gcode = "EET1P";
|
||||
newdr.cate = "ER";
|
||||
newdr.subject = "[ERROR] 업무일지 메일작성 실패";
|
||||
newdr.fromlist = "chikyun.kim@amkor.co.kr";
|
||||
newdr.tolist = "chikyun.kim@amkor.co.kr";
|
||||
newdr.bcc = string.Empty;
|
||||
newdr.cc = string.Empty;
|
||||
newdr.pdate = DateTime.Now.ToShortDateString();
|
||||
newdr.body = ex.Message;
|
||||
newdr.wuid = "dev";
|
||||
newdr.wdate = DateTime.Now;
|
||||
newdr.EndEdit();
|
||||
dt.AddMailDataRow(newdr);
|
||||
var cnt = ta.Update(dt);
|
||||
}
|
||||
}
|
||||
|
||||
task.Wait(5000);
|
||||
}
|
||||
}
|
||||
Task.Delay(Delaytime).Wait();
|
||||
}
|
||||
|
||||
});
|
||||
timer1.Start();
|
||||
|
||||
if (Pub.setting.autoRunData)
|
||||
btRun.PerformClick();
|
||||
}
|
||||
|
||||
void RunData()
|
||||
{
|
||||
addmsg("업무일지 미 작성자 추출 작업을 시작 합니다");
|
||||
|
||||
|
||||
//var db = new EEEntities();
|
||||
|
||||
//기준일자는 오늘부터 -15일이다
|
||||
//var basedate = new DateTime(2022, 05, 20);// DateTime.Now;
|
||||
var basedate = DateTime.Now;
|
||||
var sd = basedate.AddDays(-15);
|
||||
var ed = basedate.AddDays(-1);
|
||||
var str_sd = sd.ToShortDateString();
|
||||
var str_ed = ed.ToShortDateString();
|
||||
var str_dt = basedate.ToShortDateString();
|
||||
|
||||
|
||||
var taMailForm = new DataSet1TableAdapters.MailFormTableAdapter();
|
||||
var taMailData = new DataSet1TableAdapters.MailDataTableAdapter();
|
||||
var taJobReportUserList = new DataSet1TableAdapters.vJobReportUserListTableAdapter();
|
||||
var taJobReport = new DataSet1TableAdapters.JobReportTableAdapter();
|
||||
var taHolidayList = new DataSet1TableAdapters.HolidayLIstTableAdapter();
|
||||
var taGroupUser = new DataSet1TableAdapters.vGroupUserTableAdapter();
|
||||
var taJobReportDateList = new DataSet1TableAdapters.JobReportDateListTableAdapter();
|
||||
|
||||
var dtMailForm = new DataSet1.MailFormDataTable();
|
||||
var dtMailData = new DataSet1.MailDataDataTable();
|
||||
var dtDateList = new DataSet1.JobReportDateListDataTable();
|
||||
|
||||
taMailForm.Fill(dtMailForm);
|
||||
|
||||
|
||||
|
||||
|
||||
var gcodelist = dtMailForm.GroupBy(t => t.gcode).Select(t => t.Key).ToList();
|
||||
//gcodelist = new List<string>();
|
||||
//gcodelist.Add("EETK5");
|
||||
|
||||
foreach (var gcodedata in gcodelist)
|
||||
{
|
||||
//메일양식이 지정되어있는지 체크
|
||||
var vGcode = gcodedata;
|
||||
if (string.IsNullOrEmpty(vGcode)) continue;
|
||||
|
||||
if (vGcode.Contains("K5") == false) continue;
|
||||
|
||||
|
||||
var MailJD = dtMailForm.Where(t => t.gcode == vGcode & t.cate == "JD").FirstOrDefault();
|
||||
if (MailJD == null)
|
||||
{
|
||||
addmsg($"[{vGcode}]업무일지 미작성 메일 양식이 입력되지 않았습니다");
|
||||
continue;
|
||||
}
|
||||
if (MailJD.exceptmail == null) MailJD.exceptmail = string.Empty;
|
||||
if (MailJD.exceptmailcc == null) MailJD.exceptmailcc = string.Empty;
|
||||
|
||||
|
||||
//오늘날짜로 주간 데이터가 등록되어있느지 확인한다.
|
||||
// db.MailData.Where(t => t.gcode == vGcode && t.cate == "JD" && t.pdate == str_dt).Any();
|
||||
var Existweek = taMailData.GetDataExistDay(vGcode, "JD", str_dt).Any();
|
||||
if (Existweek)
|
||||
{
|
||||
addmsg($"[{vGcode}] 업무일지(일간({str_dt}) 보고 메일이 이미 등록되어 있습니다");
|
||||
continue;
|
||||
}
|
||||
|
||||
List<string> NoMailList = new List<string>();
|
||||
NoMailList.Add($"그룹\t사번\t성명\t경고일");
|
||||
|
||||
//대상 사용자 목록을 추출한다;
|
||||
var users = taJobReportUserList.GetData(vGcode);
|
||||
//var users = db.vJobReportForUser.Where(t => t.gcode == vGcode).GroupBy(t => t.id);
|
||||
|
||||
Dictionary<string, string> uids = new Dictionary<string, string>();
|
||||
foreach (var userinfo in users)
|
||||
{
|
||||
//해당 사용자의 오늘 날짜로 등록된 자동 데이터가 있다면 대상에 넣지 않는다
|
||||
//var userinfo = user.FirstOrDefault();
|
||||
if (userinfo == null || string.IsNullOrEmpty(userinfo.id) == true) continue;
|
||||
|
||||
//퇴사자 확인
|
||||
var 퇴사일자 = userinfo.outdate;
|
||||
if (string.IsNullOrEmpty(퇴사일자) == false)
|
||||
{
|
||||
//퇴사자
|
||||
if (퇴사일자.CompareTo(str_dt) < 1) continue;
|
||||
}
|
||||
|
||||
var Exists = taMailData.GetDataByUserData(vGcode, userinfo.id, str_dt, "JD").Any();
|
||||
// db.MailData.Where(t => t.gcode == vGcode && t.wuid == userinfo.id && t.pdate == str_dt && t.cate == "JD").Any();
|
||||
if (Exists == false) uids.Add(userinfo.id, userinfo.name); //자동생성된 자료가 없는 경우에만 처리한다
|
||||
}
|
||||
|
||||
addmsg($"[{vGcode}] {uids.Count} 명의 전체 사용자가 확인 되었습니다");
|
||||
|
||||
//먼저 날짜목록을 가져온다
|
||||
dtDateList = taJobReportDateList.GetData(vGcode, str_sd, str_ed);//
|
||||
//db = new EEEntities();
|
||||
//var lstDate = db.JobReport
|
||||
// .Where(t => t.gcode == vGcode && t.pdate.CompareTo(str_sd) >= 0 && t.pdate.CompareTo(str_ed) < 0)
|
||||
// .OrderBy(t => t.pdate)
|
||||
// .GroupBy(t => t.pdate).ToList();
|
||||
|
||||
//날짜대로 루프를 돈다
|
||||
List<DateTime> days = new List<DateTime>();
|
||||
foreach (var jobdata in dtDateList)
|
||||
{
|
||||
// var jobdata = dateitem.FirstOrDefault();
|
||||
var dt = DateTime.Parse(jobdata.pdate);
|
||||
if (dt.DayOfWeek == DayOfWeek.Sunday || dt.DayOfWeek == DayOfWeek.Saturday) continue;
|
||||
|
||||
//이 날짜가 휴일인지 체크한다.
|
||||
//db = new EEEntities();
|
||||
var Holyinfo = taHolidayList.GetData(jobdata.pdate).FirstOrDefault();
|
||||
// db.HolidayLIst.Where(t => t.pdate == jobdata.pdate).FirstOrDefault();
|
||||
if (Holyinfo != null && Holyinfo.free == true) continue;
|
||||
|
||||
//이날짜에는 8시간을 근무 해야 한다
|
||||
days.Add(DateTime.Parse(jobdata.pdate));
|
||||
}
|
||||
addmsg($"[{vGcode}] {days.Count} 건의 일자가 확인 되었습니다(기간:{str_sd}~{str_ed}");
|
||||
|
||||
//사용자 목록과 날짜 목록을 모두 수집했다
|
||||
List<ReportUserData> totWarnList = new List<ReportUserData>();
|
||||
foreach (var uid in uids)
|
||||
{
|
||||
if (uid.Key == "71188")
|
||||
Console.WriteLine("테스트");
|
||||
|
||||
//이사용자의 날짜별 근무시간을 확인한다.
|
||||
//db = new EEEntities();
|
||||
var UserDatas = taJobReport.GetUserDates(vGcode, uid.Key, str_sd, str_ed);
|
||||
// db.JobReport.Where(t => t.gcode == vGcode && t.uid == uid.Key && t.pdate.CompareTo(str_sd) >= 0 && t.pdate.CompareTo(str_ed) < 0).ToList();
|
||||
|
||||
Dictionary<DateTime, double?> WarnList = new Dictionary<DateTime, double?>();
|
||||
foreach (var dt in days.OrderBy(t => t))
|
||||
{
|
||||
var dtstr = dt.ToShortDateString();
|
||||
var userdata = UserDatas.Where(t => t.pdate == dtstr); //해당날짜의 데이터를 확인한다.
|
||||
var hrs = 0.0;
|
||||
if (userdata.Any()) hrs = (double)userdata.Sum(t => t.hrs);
|
||||
//else continue; //동작하지 않게함.
|
||||
|
||||
//자료를 입력하지 않았거나, 입력시간이 8시간 미만이면 경고한다
|
||||
if (hrs < 8.0)
|
||||
{
|
||||
WarnList.Add(dt, hrs);
|
||||
totWarnList.Add(new ReportUserData { date = dt, hrs = hrs, uid = uid.Key, uname = uid.Value }); //전체알림시에 사용하는 목록
|
||||
}
|
||||
}
|
||||
|
||||
if (WarnList.Count > 0)
|
||||
{
|
||||
addmsg($"[{vGcode}] {uid.Value}({uid.Key}) 의 경고 일수는 {WarnList.Count} 건 입니다");
|
||||
|
||||
//db = new EEEntities();
|
||||
var userinfo = taGroupUser.GetData(vGcode, uid.Key).FirstOrDefault();
|
||||
// db.vGroupUser.Where(t => t.gcode == vGcode && t.id == uid.Key).FirstOrDefault();
|
||||
if (userinfo == null)
|
||||
{
|
||||
addmsg($"[{vGcode}] {uid.Value}({uid.Key}) 의 사용자 정보를 확인 할 수 없습니다");
|
||||
}
|
||||
else if (string.IsNullOrEmpty(userinfo.email))
|
||||
{
|
||||
NoMailList.Add($"{vGcode}\t{uid.Key}\t{uid.Value}\t{WarnList.Count}");
|
||||
addmsg($"[{vGcode}] {uid.Value}({uid.Key}) 의 메일 정보가 존재하지 않습니다");
|
||||
}
|
||||
else
|
||||
{
|
||||
//일별경고(월요일제외)
|
||||
|
||||
if (DateTime.Now.DayOfWeek != DayOfWeek.Monday && MailJD != null)
|
||||
{
|
||||
var mail_subject = MailJD.subject.Replace("{담당자}", userinfo.name).Replace("{사번}", userinfo.id);
|
||||
var mail_to = MailJD.tolist.Replace("{담당자}", userinfo.email);
|
||||
var mail_cc = string.Empty; //
|
||||
if (MailJD.cc != null) mail_cc = MailJD.cc.Replace("{담당자}", userinfo.email);
|
||||
var mail_bcc = string.Empty;
|
||||
if (MailJD.bcc != null) mail_bcc = MailJD.bcc.Replace("{담당자}", userinfo.email);
|
||||
var mail_body = MailJD.body.Replace("{담당자}", userinfo.name);
|
||||
mail_body = mail_body.Replace("{사번}", userinfo.id);
|
||||
|
||||
//메일본문을 생성해서 진행해야함
|
||||
var mail_content = "<p>일자별 정보</p>";
|
||||
mail_content += $"<br/>조회기간 : {str_sd}~{str_ed}";
|
||||
mail_content += "<br/><table border='1' cellspacing='1' cellpadding='1'><tr><td>날짜</td><td>요일</td><td>시간</td></tr>";
|
||||
foreach (var warnitem in WarnList)
|
||||
{
|
||||
mail_content += $"<tr><td>{warnitem.Key.ToShortDateString()}</td><td>{warnitem.Key.DayOfWeek.ToString()}</td><td>{warnitem.Value.ToString()}</td></tr>";
|
||||
}
|
||||
mail_content += "</table>";
|
||||
|
||||
//메일데이터를 생성한다.
|
||||
//mail_to = "chikyun.kim@amkor.co.kr";
|
||||
//mail_bcc = string.Empty;
|
||||
//mail_cc = string.Empty;
|
||||
|
||||
mail_to = Pub.MailSort(mail_to, MailJD.exceptmail);
|
||||
if (string.IsNullOrEmpty(mail_to) == false)
|
||||
{
|
||||
//db = new EEEntities();
|
||||
using (var dt = new DataSet1.MailDataDataTable())
|
||||
{
|
||||
var newdr = dt.NewMailDataRow();
|
||||
newdr.gcode = vGcode;
|
||||
newdr.cate = "JD";
|
||||
newdr.subject = mail_subject;
|
||||
newdr.fromlist = userinfo.email;
|
||||
newdr.tolist = Pub.MailSort(mail_to, MailJD.exceptmail);
|
||||
newdr.bcc = mail_bcc;
|
||||
newdr.cc = Pub.MailSort(mail_cc, MailJD.exceptmailcc);
|
||||
newdr.pdate = DateTime.Now.ToShortDateString();
|
||||
newdr.body = mail_body.Replace("{내용}", mail_content);
|
||||
newdr.wuid = "dev";
|
||||
newdr.wdate = DateTime.Now;
|
||||
newdr.EndEdit();
|
||||
dt.AddMailDataRow(newdr);
|
||||
var cnt = taMailData.Update(dt);
|
||||
|
||||
if (cnt == 1)
|
||||
{
|
||||
addmsg($"[{vGcode}] {userinfo.name}({userinfo.email}) 메일 생성 완료(day)");
|
||||
System.Threading.Thread.Sleep(10000);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
//taMailData.Insert()
|
||||
//db.MailData.Add(new MailData
|
||||
//{
|
||||
// gcode = vGcode,
|
||||
// cate = "JD",
|
||||
// subject = mail_subject,
|
||||
// fromlist = userinfo.email,
|
||||
// tolist = Pub.MailSort(mail_to, MailJD.exceptmail),
|
||||
// bcc = mail_bcc,
|
||||
// cc = Pub.MailSort(mail_cc, MailJD.exceptmailcc),
|
||||
// pdate = DateTime.Now.ToShortDateString(),
|
||||
// body = mail_body.Replace("{내용}", mail_content),
|
||||
// wuid = "dev",
|
||||
// wdate = DateTime.Now,
|
||||
//});
|
||||
//db.SaveChanges();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
addmsg($"[{vGcode}] 받는사람이 소거되어 메일을 생성하지 않습니다");
|
||||
}
|
||||
}
|
||||
}
|
||||
System.Threading.Thread.Sleep(3000);
|
||||
}
|
||||
else
|
||||
{
|
||||
addmsg($"[{vGcode}] {uid.Value}({uid.Key}) 미 작성 일자가 없습니다");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
//첫줄은 제목이므로 2줄이상 있어야 한다
|
||||
if (NoMailList.Count > 1)
|
||||
{
|
||||
using (var dt = new DataSet1.MailDataDataTable())
|
||||
{
|
||||
var newdr = dt.NewMailDataRow();
|
||||
newdr.gcode = "EET1P";
|
||||
newdr.cate = "ERR";
|
||||
newdr.subject = $"[GW] {vGcode} - 업무일지 담당자 이메일 경고";
|
||||
newdr.fromlist = "chikyun.kim@amkor.co.kr";
|
||||
newdr.tolist = "chikyun.kim@amkor.co.kr";
|
||||
newdr.bcc = string.Empty;
|
||||
newdr.cc = string.Empty;
|
||||
newdr.pdate = DateTime.Now.ToShortDateString();
|
||||
newdr.body = string.Join("<br/>", NoMailList.ToList());
|
||||
newdr.wuid = "dev";
|
||||
newdr.wdate = DateTime.Now;
|
||||
newdr.EndEdit();
|
||||
dt.AddMailDataRow(newdr);
|
||||
var cnt = taMailData.Update(dt);
|
||||
if (cnt == 1)
|
||||
{
|
||||
addmsg($"업무일지 메일없는 대상자 생성 완료(day)");
|
||||
System.Threading.Thread.Sleep(10000);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
System.Threading.Thread.Sleep(500);
|
||||
}
|
||||
|
||||
|
||||
|
||||
dtMailForm.Dispose();
|
||||
dtMailData.Dispose();
|
||||
dtDateList.Dispose();
|
||||
|
||||
|
||||
|
||||
|
||||
taMailForm.Dispose();// = new DataSet1TableAdapters.MailFormTableAdapter();
|
||||
taMailData.Dispose();// = new DataSet1TableAdapters.MailDataTableAdapter();
|
||||
taJobReportUserList.Dispose();// = new DataSet1TableAdapters.vJobReportUserListTableAdapter();
|
||||
taJobReport.Dispose();// = new DataSet1TableAdapters.JobReportTableAdapter();
|
||||
taHolidayList.Dispose();// = new DataSet1TableAdapters.HolidayLIstTableAdapter();
|
||||
taGroupUser.Dispose();// = new DataSet1TableAdapters.vGroupUserTableAdapter();
|
||||
taJobReportDateList.Dispose();
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void toolStripButton1_Click(object sender, EventArgs e)
|
||||
{
|
||||
taskwait = !taskwait;
|
||||
if (taskwait == false)
|
||||
ChkMakeSchDayWeekTime = DateTime.Now.AddHours(-1);
|
||||
}
|
||||
|
||||
private void timer1_Tick(object sender, EventArgs e)
|
||||
{
|
||||
if (task != null)
|
||||
{
|
||||
if (task.IsCompleted) this.btRun.Text = "완료";
|
||||
else if (task.IsCanceled) this.btRun.Text = "취소";
|
||||
else if (taskwait) this.btRun.Text = "대기상태";
|
||||
else this.btRun.Text = "가동중";
|
||||
this.btRun.Enabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.btRun.Text = "사용불가";
|
||||
this.btRun.Enabled = false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void toolStripButton1_Click_1(object sender, EventArgs e)
|
||||
{
|
||||
RunData();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,157 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>104, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="btRun.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="toolStripButton1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
95
JobReportMailService/fJobReportWeek.Designer.cs
generated
95
JobReportMailService/fJobReportWeek.Designer.cs
generated
@@ -1,95 +0,0 @@
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
partial class fJobReportWeek
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fJobReportWeek));
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.btRun = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// timer1
|
||||
//
|
||||
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.btRun,
|
||||
this.toolStripButton1});
|
||||
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.Size = new System.Drawing.Size(473, 25);
|
||||
this.toolStrip1.TabIndex = 3;
|
||||
this.toolStrip1.Text = "toolStrip1";
|
||||
//
|
||||
// btRun
|
||||
//
|
||||
this.btRun.Image = ((System.Drawing.Image)(resources.GetObject("btRun.Image")));
|
||||
this.btRun.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.btRun.Name = "btRun";
|
||||
this.btRun.Size = new System.Drawing.Size(48, 22);
|
||||
this.btRun.Text = "Run";
|
||||
this.btRun.Click += new System.EventHandler(this.toolStripButton1_Click);
|
||||
//
|
||||
// toolStripButton1
|
||||
//
|
||||
this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image")));
|
||||
this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButton1.Name = "toolStripButton1";
|
||||
this.toolStripButton1.Size = new System.Drawing.Size(67, 22);
|
||||
this.toolStripButton1.Text = "manual";
|
||||
this.toolStripButton1.Click += new System.EventHandler(this.toolStripButton1_Click_1);
|
||||
//
|
||||
// fJobReportWeek
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(473, 416);
|
||||
this.Controls.Add(this.toolStrip1);
|
||||
this.Name = "fJobReportWeek";
|
||||
this.Text = "업무일지(주간보고)";
|
||||
this.Load += new System.EventHandler(this.fJobReportDay_Load);
|
||||
this.Controls.SetChildIndex(this.toolStrip1, 0);
|
||||
this.toolStrip1.ResumeLayout(false);
|
||||
this.toolStrip1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ToolStrip toolStrip1;
|
||||
private System.Windows.Forms.ToolStripButton btRun;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButton1;
|
||||
}
|
||||
}
|
||||
@@ -1,385 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
public partial class fJobReportWeek : fChildBase
|
||||
{
|
||||
|
||||
public fJobReportWeek()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void fJobReportDay_Load(object sender, EventArgs e)
|
||||
{
|
||||
task = Task.Run(() =>
|
||||
{
|
||||
while (taskrun)
|
||||
{
|
||||
if (taskwait)
|
||||
{
|
||||
task.Wait(1000);
|
||||
continue;
|
||||
}
|
||||
|
||||
var ts = DateTime.Now - ChkMakeSchDayWeekTime;
|
||||
if (ts.TotalMinutes <= 15)
|
||||
{
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
addmsg("15분 미만이라 동작하지 않습니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else if (DateTime.Now.DayOfWeek != DayOfWeek.Monday)
|
||||
{
|
||||
//토,일요일에는 동작하지 않는다
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
addmsg("월요일에만 동작 함");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else if (DateTime.Now.Hour < 9)
|
||||
{
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
addmsg("9시 이전에는 동작하지 않습니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ChkMakeSchDayWeekTime = DateTime.Now;
|
||||
try
|
||||
{
|
||||
RunData();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
addmsg(ex.Message);
|
||||
|
||||
using (var ta = new DataSet1TableAdapters.MailDataTableAdapter())
|
||||
{
|
||||
using (var dt = new DataSet1.MailDataDataTable())
|
||||
{
|
||||
var newdr = dt.NewMailDataRow();
|
||||
newdr.gcode = "EET1P";
|
||||
newdr.cate = "ER";
|
||||
newdr.subject = "[ERROR] 업무일지(주간) 메일작성 실패";
|
||||
newdr.fromlist = "chikyun.kim@amkor.co.kr";
|
||||
newdr.tolist = "chikyun.kim@amkor.co.kr";
|
||||
newdr.bcc = string.Empty;
|
||||
newdr.cc = string.Empty;
|
||||
newdr.pdate = DateTime.Now.ToShortDateString();
|
||||
newdr.body = ex.Message;
|
||||
newdr.wuid = "dev";
|
||||
newdr.wdate = DateTime.Now;
|
||||
newdr.EndEdit();
|
||||
dt.AddMailDataRow(newdr);
|
||||
var cnt = ta.Update(dt);
|
||||
}
|
||||
}
|
||||
|
||||
task.Wait(5000);
|
||||
}
|
||||
}
|
||||
Task.Delay(Delaytime).Wait();
|
||||
}
|
||||
|
||||
});
|
||||
timer1.Start();
|
||||
if (Pub.setting.autoRunData)
|
||||
btRun.PerformClick();
|
||||
}
|
||||
|
||||
void RunData()
|
||||
{
|
||||
|
||||
addmsg("업무일지 미 작성자(주간) 추출 작업을 시작 합니다");
|
||||
|
||||
var taMailForm = new DataSet1TableAdapters.MailFormTableAdapter();
|
||||
var taMailData = new DataSet1TableAdapters.MailDataTableAdapter();
|
||||
var taJobReportUserList = new DataSet1TableAdapters.vJobReportUserListTableAdapter();
|
||||
var taJobReport = new DataSet1TableAdapters.JobReportTableAdapter();
|
||||
var taHolidayList = new DataSet1TableAdapters.HolidayLIstTableAdapter();
|
||||
var taGroupUser = new DataSet1TableAdapters.vGroupUserTableAdapter();
|
||||
var taJobReportDateList = new DataSet1TableAdapters.JobReportDateListTableAdapter();
|
||||
|
||||
|
||||
var dtMailForm = new DataSet1.MailFormDataTable();
|
||||
var dtMailData = new DataSet1.MailDataDataTable();
|
||||
var dtDateList = new DataSet1.JobReportDateListDataTable();
|
||||
|
||||
taMailForm.Fill(dtMailForm);
|
||||
|
||||
//기준일자는 오늘부터 -15일이다
|
||||
var sd = DateTime.Now.AddDays(-15);
|
||||
var ed = DateTime.Now.AddDays(-1);
|
||||
var str_sd = sd.ToShortDateString();
|
||||
var str_ed = ed.ToShortDateString();
|
||||
var str_dt = DateTime.Now.ToShortDateString();
|
||||
|
||||
var gcodelist = dtMailForm.GroupBy(t => t.gcode).Select(t => t.Key).ToList();
|
||||
foreach (var gcodedata in gcodelist)
|
||||
{
|
||||
//메일양식이 지정되어있는지 체크
|
||||
var vGcode = gcodedata;
|
||||
if (string.IsNullOrEmpty(vGcode)) continue;
|
||||
|
||||
//메일양식이 지정되어있는지 체크
|
||||
var MailJW = dtMailForm.Where(t => t.gcode == vGcode & t.cate == "JW").FirstOrDefault();
|
||||
if (MailJW == null)
|
||||
{
|
||||
addmsg($"[{vGcode}] 업무일지 미작성(주간) 메일 양식이 입력되지 않았습니다");
|
||||
continue;
|
||||
}
|
||||
if (MailJW.exceptmail == null) MailJW.exceptmail = string.Empty;
|
||||
if (MailJW.exceptmailcc == null) MailJW.exceptmailcc = string.Empty;
|
||||
|
||||
//오늘날짜로 주간 데이터가 등록되어있느지 확인한다.
|
||||
var Existweek = taMailData.GetDataExistDay(vGcode, "JW", str_dt).Any();
|
||||
if (Existweek)
|
||||
{
|
||||
addmsg($"[{vGcode}] 업무일지({str_dt}) (주간)보고 메일이 이미 등록되어 있습니다");
|
||||
continue;
|
||||
}
|
||||
|
||||
//대상 사용자 목록을 추출한다
|
||||
var users = taJobReportUserList.GetData(vGcode);
|
||||
Dictionary<string, string> uids = new Dictionary<string, string>();
|
||||
foreach (var userinfo in users)
|
||||
{
|
||||
//해당 사용자의 오늘 날짜로 등록된 자동 데이터가 있다면 대상에 넣지 않는다
|
||||
// var userinfo = user.FirstOrDefault();
|
||||
if (userinfo == null || string.IsNullOrEmpty(userinfo.id)) continue; //null인게 있네? 220110
|
||||
|
||||
//퇴사자 확인
|
||||
var 퇴사일자 = userinfo.outdate;
|
||||
if (string.IsNullOrEmpty(퇴사일자) == false)
|
||||
{
|
||||
//퇴사자
|
||||
if (퇴사일자.CompareTo(str_dt) < 1) continue;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//이 대상의 이메일이 받는 사람에 제외되어있다면 처리하지 않는다.
|
||||
if (MailJW.exceptmail == null) MailJW.exceptmail = string.Empty;
|
||||
var exxptolist = MailJW.exceptmail.ToUpper().Split(';');
|
||||
if (exxptolist.Contains(userinfo.email.ToUpper()) == false)
|
||||
{
|
||||
//모두대상으로 처리한다
|
||||
//if (userdata.email.ToUpper() != ("BongSeok.Jung@amkor.co.kr").ToUpper())
|
||||
uids.Add(userinfo.id, userinfo.name);
|
||||
}
|
||||
else addmsg($"[{vGcode}] 주간 제외대상자임 " + userinfo.email);
|
||||
}
|
||||
|
||||
addmsg($"[{vGcode}] {uids.Count} 명의 전체 사용자가 확인 되었습니다");
|
||||
|
||||
//먼저 날짜목록을 가져온다
|
||||
//db = new EEEntities();
|
||||
//var lstDate = db.JobReport
|
||||
// .Where(t => t.gcode == vGcode && t.pdate.CompareTo(str_sd) >= 0 && t.pdate.CompareTo(str_ed) < 0)
|
||||
// .OrderBy(t => t.pdate)
|
||||
// .GroupBy(t => t.pdate).ToList();
|
||||
|
||||
dtDateList = taJobReportDateList.GetData(vGcode, str_sd, str_ed);//
|
||||
|
||||
//날짜대로 루프를 돈다
|
||||
List<DateTime> days = new List<DateTime>();
|
||||
foreach (var jobdata in dtDateList)
|
||||
{
|
||||
// var jobdata = dateitem.FirstOrDefault();
|
||||
var dt = DateTime.Parse(jobdata.pdate);
|
||||
if (dt.DayOfWeek == DayOfWeek.Sunday || dt.DayOfWeek == DayOfWeek.Saturday) continue;
|
||||
|
||||
//이 날짜가 휴일인지 체크한다.
|
||||
var Holyinfo = taHolidayList.GetData(jobdata.pdate).FirstOrDefault();
|
||||
//var Holyinfo = db.HolidayLIst.Where(t => t.pdate == jobdata.pdate).FirstOrDefault();
|
||||
if (Holyinfo != null && Holyinfo.free == true) continue;
|
||||
|
||||
//이날짜에는 8시간을 근무 해야 한다
|
||||
days.Add(DateTime.Parse(jobdata.pdate));
|
||||
}
|
||||
addmsg($"[{vGcode}] {days.Count} 건의 일자가 확인 되었습니다(기간:{str_sd}~{str_ed}");
|
||||
|
||||
//사용자 목록과 날짜 목록을 모두 수집했다
|
||||
List<ReportUserData> totWarnList = new List<ReportUserData>();
|
||||
foreach (var uid in uids)
|
||||
{
|
||||
//이사용자의 날짜별 근무시간을 확인한다.
|
||||
var UserDatas = taJobReport.GetUserDates(vGcode, uid.Key, str_sd, str_ed);
|
||||
|
||||
Dictionary<DateTime, double?> WarnList = new Dictionary<DateTime, double?>();
|
||||
foreach (var dt in days.OrderBy(t => t))
|
||||
{
|
||||
var dtstr = dt.ToShortDateString();
|
||||
var userdata = UserDatas.Where(t => t.pdate == dtstr); //해당날짜의 데이터를 확인한다.
|
||||
var hrs = 0.0;
|
||||
if (userdata.Any()) hrs = (double)userdata.Sum(t => t.hrs);
|
||||
|
||||
//자료를 입력하지 않았거나, 입력시간이 8시간 미만이면 경고한다
|
||||
if (hrs < 8.0)
|
||||
{
|
||||
//WarnList.Add(dt, hrs);
|
||||
totWarnList.Add(new ReportUserData { date = dt, hrs = hrs, uid = uid.Key, uname = uid.Value }); //전체알림시에 사용하는 목록
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (totWarnList.Count > 0)
|
||||
{
|
||||
addmsg($"[{vGcode}] 주간 경고 데이터는 {totWarnList.Count} 건 입니다");
|
||||
|
||||
//오늘잘짜로 등록된 자료가 있으면 처리하지 안흔다.
|
||||
//해당 사용자의 오늘 날짜로 등록된 자동 데이터가 있다면 대상에 넣지 않는다
|
||||
//db = new EEEntities();
|
||||
|
||||
var mail_subject = MailJW.subject;
|
||||
var mail_to = MailJW.tolist;//.Replace("{담당자}", userinfo.email);
|
||||
var pmail_cc = new List<string>(); //
|
||||
if (MailJW.cc != null) pmail_cc = MailJW.cc.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries).ToList();//.Replace("{담당자}", userinfo.email);
|
||||
var mail_bcc = string.Empty;
|
||||
if (MailJW.bcc != null) mail_bcc = MailJW.bcc;//.Replace("{담당자}", userinfo.email);
|
||||
var mail_body = MailJW.body;//.Replace("{담당자}", userinfo.name);
|
||||
|
||||
//메일본문을 생성해서 진행해야함
|
||||
var vmail_body = "<p>담당자별 정보</p>";
|
||||
vmail_body += "<br/>조회기간 : " + sd.ToShortDateString() + "~" + ed.ToShortDateString();
|
||||
|
||||
////참고데이터를 추가한다
|
||||
var usergrplist = totWarnList.OrderBy(t => t.uname).GroupBy(t => t.uid).ToList();
|
||||
//foreach (var item in usergrplist)
|
||||
//{
|
||||
// //var fitem = item.FirstOrDefault();
|
||||
// //db = new EEEntities();
|
||||
// var userinfo = item.FirstOrDefault();// db.vGroupUser.Where(t => t.gcode == vGcode && t.id == fitem.uid).FirstOrDefault();
|
||||
// var username = string.Empty;
|
||||
// if (userinfo != null)
|
||||
// {
|
||||
// if (string.IsNullOrEmpty(userinfo.email) == false)
|
||||
// {
|
||||
// //if (pmail_cc.Contains(userinfo.email) == false)
|
||||
// // pmail_cc.Add(userinfo.email);
|
||||
// }
|
||||
// username = userinfo.name;
|
||||
// }
|
||||
//}
|
||||
|
||||
vmail_body += "<br/><table border='1' cellspacing='1' cellpadding='1'><tr><td>담당자</td><td>일자별시간</td></tr>";
|
||||
var mail_cc = string.Join(";", pmail_cc); //모든 대상을 세미콜론으로 붙인다.
|
||||
foreach (var warnitem in usergrplist)
|
||||
{
|
||||
var item = warnitem.FirstOrDefault();
|
||||
vmail_body += $"<tr><td>{item.uname}({item.uid})</td><td>";
|
||||
foreach (var ii in warnitem.OrderBy(t => t.date))
|
||||
{
|
||||
vmail_body += $" {ii.date.ToString("MM/dd")}({ii.hrs}h)";
|
||||
}
|
||||
vmail_body += "</td></tr>";
|
||||
}
|
||||
vmail_body += "</table>";
|
||||
|
||||
//메일데이터를 생성한다.
|
||||
//mail_bcc = string.Empty;
|
||||
//mail_cc = string.Empty;
|
||||
//mail_to = "chikyun.kim@amkor.co.kr";
|
||||
|
||||
//db = new EEEntities();
|
||||
mail_to = Pub.MailSort(mail_to, MailJW.exceptmail);
|
||||
if (string.IsNullOrEmpty(mail_to) == false)
|
||||
{
|
||||
using (var dt = new DataSet1.MailDataDataTable())
|
||||
{
|
||||
|
||||
var newdr = dt.NewMailDataRow();
|
||||
newdr.gcode = vGcode;
|
||||
newdr.cate = "JW";
|
||||
newdr.subject = mail_subject;
|
||||
newdr.fromlist = "EETGW@amkor.co.kr";
|
||||
newdr.tolist = Pub.MailSort(mail_to, MailJW.exceptmail);
|
||||
newdr.bcc = mail_bcc;
|
||||
newdr.cc = Pub.MailSort(mail_cc, MailJW.exceptmailcc);
|
||||
newdr.pdate = DateTime.Now.ToShortDateString();
|
||||
newdr.body = mail_body.Replace("{내용}", vmail_body);
|
||||
newdr.wuid = "dev";
|
||||
newdr.wdate = DateTime.Now;
|
||||
newdr.EndEdit();
|
||||
dt.AddMailDataRow(newdr);
|
||||
var cnt = taMailData.Update(dt);
|
||||
|
||||
if (cnt == 1)
|
||||
{
|
||||
addmsg($"[{vGcode}] {cnt}건) 메일 생성 완료(week)");
|
||||
System.Threading.Thread.Sleep(10000);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
addmsg($"[{vGcode}] 받는사람이 소거되어 메일을 생성하지 않습니다");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
System.Threading.Thread.Sleep(500);
|
||||
|
||||
}
|
||||
|
||||
dtMailForm.Dispose();
|
||||
dtMailData.Dispose();
|
||||
dtDateList.Dispose();
|
||||
|
||||
|
||||
|
||||
|
||||
taMailForm.Dispose();// = new DataSet1TableAdapters.MailFormTableAdapter();
|
||||
taMailData.Dispose();// = new DataSet1TableAdapters.MailDataTableAdapter();
|
||||
taJobReportUserList.Dispose();// = new DataSet1TableAdapters.vJobReportUserListTableAdapter();
|
||||
taJobReport.Dispose();// = new DataSet1TableAdapters.JobReportTableAdapter();
|
||||
taHolidayList.Dispose();// = new DataSet1TableAdapters.HolidayLIstTableAdapter();
|
||||
taGroupUser.Dispose();// = new DataSet1TableAdapters.vGroupUserTableAdapter();
|
||||
taJobReportDateList.Dispose();
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void toolStripButton1_Click(object sender, EventArgs e)
|
||||
{
|
||||
taskwait = !taskwait;
|
||||
}
|
||||
|
||||
private void timer1_Tick(object sender, EventArgs e)
|
||||
{
|
||||
if (task != null)
|
||||
{
|
||||
if (task.IsCompleted) this.btRun.Text = "완료";
|
||||
else if (task.IsCanceled) this.btRun.Text = "취소";
|
||||
else if (taskwait) this.btRun.Text = "대기상태";
|
||||
else this.btRun.Text = "가동중";
|
||||
this.btRun.Enabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.btRun.Text = "사용불가";
|
||||
this.btRun.Enabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void toolStripButton1_Click_1(object sender, EventArgs e)
|
||||
{
|
||||
RunData();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,157 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>104, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="btRun.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="toolStripButton1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
83
JobReportMailService/fNoScheduleDayWeek.Designer.cs
generated
83
JobReportMailService/fNoScheduleDayWeek.Designer.cs
generated
@@ -1,83 +0,0 @@
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
partial class fNoScheduleDayWeek
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fNoScheduleDayWeek));
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.btRun = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// timer1
|
||||
//
|
||||
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.btRun});
|
||||
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.Size = new System.Drawing.Size(473, 25);
|
||||
this.toolStrip1.TabIndex = 2;
|
||||
this.toolStrip1.Text = "toolStrip1";
|
||||
//
|
||||
// btRun
|
||||
//
|
||||
this.btRun.Image = ((System.Drawing.Image)(resources.GetObject("btRun.Image")));
|
||||
this.btRun.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.btRun.Name = "btRun";
|
||||
this.btRun.Size = new System.Drawing.Size(48, 22);
|
||||
this.btRun.Text = "Run";
|
||||
this.btRun.Click += new System.EventHandler(this.toolStripButton1_Click);
|
||||
//
|
||||
// fNoScheduleDayWeek
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(473, 416);
|
||||
this.Controls.Add(this.toolStrip1);
|
||||
this.Name = "fNoScheduleDayWeek";
|
||||
this.Text = "스케쥴없음(주보고)";
|
||||
this.Load += new System.EventHandler(this.fJobReportDay_Load);
|
||||
this.Controls.SetChildIndex(this.toolStrip1, 0);
|
||||
this.toolStrip1.ResumeLayout(false);
|
||||
this.toolStrip1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ToolStrip toolStrip1;
|
||||
private System.Windows.Forms.ToolStripButton btRun;
|
||||
}
|
||||
}
|
||||
@@ -1,280 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
public partial class fNoScheduleDayWeek : fChildBase
|
||||
{
|
||||
|
||||
public fNoScheduleDayWeek()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void fJobReportDay_Load(object sender, EventArgs e)
|
||||
{
|
||||
task = Task.Run(() =>
|
||||
{
|
||||
while (taskrun)
|
||||
{
|
||||
if (taskwait)
|
||||
{
|
||||
if (task != null)
|
||||
task.Wait(1000);
|
||||
continue;
|
||||
}
|
||||
|
||||
var ts = DateTime.Now - ChkMakeSchDayWeekTime;
|
||||
if (ts.TotalMinutes <= 15)
|
||||
{
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
addmsg("15분 미만이라 동작하지 않습니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else if (DateTime.Now.DayOfWeek != DayOfWeek.Monday)
|
||||
{
|
||||
//토,일요일에는 동작하지 않는다
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
addmsg("월요일에만 동작 합니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else if (DateTime.Now.Hour < 10) //10시부터 동작한다
|
||||
{
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
addmsg("9시 이전에는 동작하지 않습니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ChkMakeSchDayWeekTime = DateTime.Now;
|
||||
try
|
||||
{
|
||||
RunData();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
addmsg(ex.Message);
|
||||
|
||||
using (var ta = new DataSet1TableAdapters.MailDataTableAdapter())
|
||||
{
|
||||
using (var dt = new DataSet1.MailDataDataTable())
|
||||
{
|
||||
var newdr = dt.NewMailDataRow();
|
||||
newdr.gcode = "EET1P";
|
||||
newdr.cate = "ER";
|
||||
newdr.subject = "[ERROR] 스케쥴없음 메일작성 실패";
|
||||
newdr.fromlist = "chikyun.kim@amkor.co.kr";
|
||||
newdr.tolist = "chikyun.kim@amkor.co.kr";
|
||||
newdr.bcc = string.Empty;
|
||||
newdr.cc = string.Empty;
|
||||
newdr.pdate = DateTime.Now.ToShortDateString();
|
||||
newdr.body = ex.Message;
|
||||
newdr.wuid = "dev";
|
||||
newdr.wdate = DateTime.Now;
|
||||
newdr.EndEdit();
|
||||
dt.AddMailDataRow(newdr);
|
||||
var cnt = ta.Update(dt);
|
||||
}
|
||||
}
|
||||
|
||||
task.Wait(5000);
|
||||
}
|
||||
}
|
||||
Task.Delay(Delaytime).Wait();
|
||||
}
|
||||
|
||||
});
|
||||
timer1.Start();
|
||||
if (Pub.setting.autoRunData)
|
||||
btRun.PerformClick();
|
||||
}
|
||||
|
||||
void RunData()
|
||||
{
|
||||
addmsg("스케쥴입력(주) 미 작성자 추출 작업을 시작 합니다");
|
||||
|
||||
var db = new EEEntities();
|
||||
|
||||
//기준일자는 오늘부터 -15일이다
|
||||
var sd = DateTime.Now.AddDays(-15);
|
||||
var ed = DateTime.Now;
|
||||
var str_sd = sd.ToShortDateString();
|
||||
var str_ed = ed.ToShortDateString();
|
||||
var str_dt = DateTime.Now.ToShortDateString();
|
||||
|
||||
var gcodelist = db.MailForm.GroupBy(t => t.gcode).ToList();
|
||||
foreach (var gcodedata in gcodelist)
|
||||
{
|
||||
//메일양식이 지정되어있는지 체크
|
||||
var vGcode = gcodedata.Key;
|
||||
if (string.IsNullOrEmpty(vGcode)) continue;
|
||||
|
||||
//메일양식이 지정되어있는지 체크
|
||||
var MailJD = db.MailForm.AsNoTracking().Where(t => t.gcode == vGcode & t.cate == "SN").FirstOrDefault();
|
||||
if (MailJD == null)
|
||||
{
|
||||
//토,일요일에는 동작하지 않는다
|
||||
addmsg($"[{vGcode}] 메일 양식(SN)이 입력되지 않았습니다");
|
||||
continue;
|
||||
}
|
||||
if (MailJD.exceptmail == null) MailJD.exceptmail = string.Empty;
|
||||
if (MailJD.exceptmailcc == null) MailJD.exceptmailcc = string.Empty;
|
||||
|
||||
//오늘날짜로 데이터가 등록되어있느지 확인한다.
|
||||
db = new EEEntities();
|
||||
var Existweek = db.MailData.AsNoTracking().Where(t => t.gcode == vGcode && t.cate == "SN" && t.pdate == str_dt).Any();
|
||||
if (Existweek)
|
||||
{
|
||||
addmsg($"[{vGcode}] 스케쥴(day)({str_dt}) 보고 메일이 이미 등록되어 있습니다");
|
||||
continue;
|
||||
}
|
||||
|
||||
//대상 사용자 목록을 추출한다
|
||||
//var ta = new DataSet1TableAdapters.vMailingProjectScheduleTableAdapter();
|
||||
//var users = new DataSet1.vMailingProjectScheduleDataTable();
|
||||
//ta.Fill(users);
|
||||
db = new EEEntities();
|
||||
var projects = db.Projects.AsNoTracking().Where(t => t.gcode == vGcode && t.status == "진행" && (t.isdel == null || t.isdel == false)).OrderBy(t => t.sdate).ToList();
|
||||
// db.vMailingProjectSchedule.ToList();// .vJobReportForUser.Where(t => t.gcode == Pub.vGcode).GroupBy(t => t.id);
|
||||
|
||||
addmsg($"[{vGcode}] {projects.Count} 건의 데이터가 확인 되었습니다");
|
||||
|
||||
//메일데이터 생성
|
||||
var body = new System.Text.StringBuilder();
|
||||
body.AppendLine("<table border='1' cellspacing='1' cellpadding='1' style='text-align:center;'>");
|
||||
body.AppendLine("<tr>");
|
||||
body.AppendLine("<td>시작일</td>");
|
||||
body.AppendLine("<td>상태</td>");
|
||||
body.AppendLine("<td>번호</td>");
|
||||
body.AppendLine("<td>Project</td>");
|
||||
body.AppendLine("<td>요청</td>");
|
||||
body.AppendLine("<td>Champion</td>");
|
||||
body.AppendLine("<td>협업</td>");
|
||||
body.AppendLine("<td>만료일</td>");
|
||||
body.AppendLine("<td>수량</td>");
|
||||
body.AppendLine("<td>외주금액</td>");
|
||||
body.AppendLine("<td>자체금액</td>");
|
||||
body.AppendLine("<td>절감액</td>");
|
||||
body.AppendLine("<td>CR/CF</td>");
|
||||
body.AppendLine("</tr>");
|
||||
|
||||
//var gp = projects.GroupBy(t => t.idx);
|
||||
foreach (var row in projects)
|
||||
{
|
||||
|
||||
//스케쥴에서 데이터를 찾는다.
|
||||
var cnt = db.EETGW_ProjectsSchedule.AsNoTracking().Where(t => t.gcode == vGcode && t.project == row.idx).Any();
|
||||
if (cnt == true) continue; //등록되었다
|
||||
|
||||
body.AppendLine($"<tr>");
|
||||
body.AppendLine($"<td>{row.sdate}</td>");
|
||||
body.AppendLine($"<td>{row.status}</td>");
|
||||
body.AppendLine($"<td>{row.idx}</td>");
|
||||
body.AppendLine($"<td>{row.name}</td>");
|
||||
body.AppendLine($"<td>{row.reqstaff}</td>");
|
||||
body.AppendLine($"<td>{row.userManager}</td>");
|
||||
body.AppendLine($"<td>{row.usermain}/{row.usersub}/{row.userhw2}</td>");
|
||||
body.AppendLine($"<td>{row.edate}</td>");
|
||||
body.AppendLine($"<td>{row.cnt}</td>");
|
||||
body.AppendLine($"<td>{row.costo}</td>");
|
||||
body.AppendLine($"<td>{row.costn}</td>");
|
||||
body.AppendLine($"<td>{row.costo - row.costn}</td>");
|
||||
body.AppendLine($"<td>{row.orderno}</td>");
|
||||
body.AppendLine($"</tr>");
|
||||
}
|
||||
body.AppendLine("</table>");
|
||||
|
||||
//일별경고(월요일제외)
|
||||
|
||||
if (MailJD != null)
|
||||
{
|
||||
var mail_subject = MailJD.subject;//.Replace("{담당자}", userinfo.name).Replace("{사번}", userinfo.id);
|
||||
var mail_to = MailJD.tolist;//.Replace("{담당자}", userinfo.email);
|
||||
var mail_cc = string.Empty; //
|
||||
if (MailJD.cc != null) mail_cc = MailJD.cc;//.Replace("{담당자}", userinfo.email);
|
||||
var mail_bcc = string.Empty;
|
||||
if (MailJD.bcc != null) mail_bcc = MailJD.bcc;//.Replace("{담당자}", userinfo.email);
|
||||
var mail_body = MailJD.body;//.Replace("{담당자}", userinfo.name);
|
||||
//mail_body = mail_body.Replace("{사번}", userinfo.id);
|
||||
|
||||
//메일본문을 생성해서 진행해야함
|
||||
var mail_content = mail_body.Replace("{data}", body.ToString());
|
||||
|
||||
//메일데이터를 생성한다.
|
||||
//mail_to = "chikyun.kim@amkor.co.kr";
|
||||
//mail_bcc = string.Empty;
|
||||
//mail_cc = string.Empty;
|
||||
|
||||
mail_to = Pub.MailSort(mail_to, MailJD.exceptmail);
|
||||
if (string.IsNullOrEmpty(mail_to) == false)
|
||||
{
|
||||
db = new EEEntities();
|
||||
db.MailData.Add(new MailData
|
||||
{
|
||||
gcode = vGcode,
|
||||
cate = "SN",
|
||||
subject = mail_subject,
|
||||
fromlist = "EETGW@amkor.co.kr",
|
||||
tolist = Pub.MailSort(mail_to, MailJD.exceptmail),
|
||||
bcc = mail_bcc,
|
||||
cc = Pub.MailSort(mail_cc, MailJD.exceptmailcc),
|
||||
pdate = DateTime.Now.ToShortDateString(),
|
||||
body = mail_content,
|
||||
wuid = "DEV",
|
||||
wdate = DateTime.Now,
|
||||
});
|
||||
db.SaveChanges();
|
||||
addmsg($"[{vGcode}] 메일 전송 완료(no스케쥴week)");
|
||||
System.Threading.Thread.Sleep(10000);
|
||||
}
|
||||
else
|
||||
{
|
||||
addmsg($"[{vGcode}] 받는사람이 소거되어 메일을 생성하지 않습니다");
|
||||
}
|
||||
}
|
||||
|
||||
System.Threading.Thread.Sleep(500);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void toolStripButton1_Click(object sender, EventArgs e)
|
||||
{
|
||||
taskwait = !taskwait;
|
||||
}
|
||||
|
||||
private void timer1_Tick(object sender, EventArgs e)
|
||||
{
|
||||
if (task != null)
|
||||
{
|
||||
if (task.IsCompleted) this.btRun.Text = "완료";
|
||||
else if (task.IsCanceled) this.btRun.Text = "취소";
|
||||
else if (taskwait) this.btRun.Text = "대기상태";
|
||||
else this.btRun.Text = "가동중";
|
||||
this.btRun.Enabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.btRun.Text = "사용불가";
|
||||
this.btRun.Enabled = false;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,142 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>104, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="btRun.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
83
JobReportMailService/fScheduleDay.Designer.cs
generated
83
JobReportMailService/fScheduleDay.Designer.cs
generated
@@ -1,83 +0,0 @@
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
partial class fScheduleDay
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fScheduleDay));
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.btRun = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// timer1
|
||||
//
|
||||
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.btRun});
|
||||
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.Size = new System.Drawing.Size(473, 25);
|
||||
this.toolStrip1.TabIndex = 2;
|
||||
this.toolStrip1.Text = "toolStrip1";
|
||||
//
|
||||
// btRun
|
||||
//
|
||||
this.btRun.Image = ((System.Drawing.Image)(resources.GetObject("btRun.Image")));
|
||||
this.btRun.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.btRun.Name = "btRun";
|
||||
this.btRun.Size = new System.Drawing.Size(48, 22);
|
||||
this.btRun.Text = "Run";
|
||||
this.btRun.Click += new System.EventHandler(this.toolStripButton1_Click);
|
||||
//
|
||||
// fScheduleDay
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(473, 416);
|
||||
this.Controls.Add(this.toolStrip1);
|
||||
this.Name = "fScheduleDay";
|
||||
this.Text = "프로젝트 스케쥴(일보고)";
|
||||
this.Load += new System.EventHandler(this.fJobReportDay_Load);
|
||||
this.Controls.SetChildIndex(this.toolStrip1, 0);
|
||||
this.toolStrip1.ResumeLayout(false);
|
||||
this.toolStrip1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ToolStrip toolStrip1;
|
||||
private System.Windows.Forms.ToolStripButton btRun;
|
||||
}
|
||||
}
|
||||
@@ -1,283 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
public partial class fScheduleDay : fChildBase
|
||||
{
|
||||
|
||||
public fScheduleDay()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void fJobReportDay_Load(object sender, EventArgs e)
|
||||
{
|
||||
task = Task.Run(() =>
|
||||
{
|
||||
while (taskrun)
|
||||
{
|
||||
if (taskwait)
|
||||
{
|
||||
if (task != null)
|
||||
task.Wait(1000);
|
||||
continue;
|
||||
}
|
||||
|
||||
var ts = DateTime.Now - ChkMakeSchDayWeekTime;
|
||||
if (ts.TotalMinutes <= 15)
|
||||
{
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
addmsg("15분 미만이라 동작하지 않습니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else if (DateTime.Now.DayOfWeek == DayOfWeek.Saturday ||
|
||||
DateTime.Now.DayOfWeek == DayOfWeek.Sunday)
|
||||
{
|
||||
//토,일요일에는 동작하지 않는다
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
addmsg("토/일/월에는 동작하지 않습니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else if (DateTime.Now.Hour < 10) //10시부터 동작한다
|
||||
{
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
addmsg("10시 이전에는 동작하지 않습니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ChkMakeSchDayWeekTime = DateTime.Now;
|
||||
try
|
||||
{
|
||||
RunData();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
addmsg(ex.Message);
|
||||
|
||||
using (var ta = new DataSet1TableAdapters.MailDataTableAdapter())
|
||||
{
|
||||
using (var dt = new DataSet1.MailDataDataTable())
|
||||
{
|
||||
var newdr = dt.NewMailDataRow();
|
||||
newdr.gcode = "EET1P";
|
||||
newdr.cate = "ER";
|
||||
newdr.subject = "[ERROR] 스케쥴(day) 메일작성 실패";
|
||||
newdr.fromlist = "chikyun.kim@amkor.co.kr";
|
||||
newdr.tolist = "chikyun.kim@amkor.co.kr";
|
||||
newdr.bcc = string.Empty;
|
||||
newdr.cc = string.Empty;
|
||||
newdr.pdate = DateTime.Now.ToShortDateString();
|
||||
newdr.body = ex.Message;
|
||||
newdr.wuid = "dev";
|
||||
newdr.wdate = DateTime.Now;
|
||||
newdr.EndEdit();
|
||||
dt.AddMailDataRow(newdr);
|
||||
var cnt = ta.Update(dt);
|
||||
}
|
||||
}
|
||||
|
||||
task.Wait(5000);
|
||||
}
|
||||
}
|
||||
Task.Delay(Delaytime).Wait();
|
||||
}
|
||||
|
||||
});
|
||||
timer1.Start();
|
||||
if (Pub.setting.autoRunData)
|
||||
btRun.PerformClick();
|
||||
}
|
||||
|
||||
void RunData()
|
||||
{
|
||||
addmsg("업무일지 미 작성자 추출 작업을 시작 합니다");
|
||||
|
||||
|
||||
var db = new EEEntities();
|
||||
//기준일자는 오늘부터 -15일이다
|
||||
var sd = DateTime.Now.AddDays(-15);
|
||||
var ed = DateTime.Now;
|
||||
var str_sd = sd.ToShortDateString();
|
||||
var str_ed = ed.ToShortDateString();
|
||||
var str_dt = DateTime.Now.ToShortDateString();
|
||||
|
||||
var gcodelist = db.MailForm.GroupBy(t => t.gcode).ToList();
|
||||
foreach (var gcodedata in gcodelist)
|
||||
{
|
||||
//메일양식이 지정되어있는지 체크
|
||||
var vGcode = gcodedata.Key;
|
||||
if (string.IsNullOrEmpty(vGcode)) continue;
|
||||
|
||||
//메일양식이 지정되어있는지 체크
|
||||
var MailJD = db.MailForm.Where(t => t.gcode == vGcode & t.cate == "SJ").FirstOrDefault();
|
||||
|
||||
if (MailJD == null)
|
||||
{
|
||||
//토,일요일에는 동작하지 않는다
|
||||
addmsg($"[{vGcode}] 메일 양식(SJ)이 입력되지 않았습니다");
|
||||
continue;
|
||||
}
|
||||
if (MailJD.exceptmail == null) MailJD.exceptmail = string.Empty;
|
||||
if (MailJD.exceptmailcc == null) MailJD.exceptmailcc = string.Empty;
|
||||
|
||||
//오늘날짜로 데이터가 등록되어있느지 확인한다.
|
||||
db = new EEEntities();
|
||||
var Existweek = db.MailData.Where(t => t.gcode == vGcode && t.cate == "SJ" && t.pdate == str_dt).Any();
|
||||
if (Existweek)
|
||||
{
|
||||
addmsg($"[{vGcode}] 스케쥴(day)({str_dt}) 보고 메일이 이미 등록되어 있습니다");
|
||||
continue;
|
||||
}
|
||||
|
||||
//대상 사용자 목록을 추출한다
|
||||
var ta = new DataSet1TableAdapters.vMailingProjectScheduleTableAdapter();
|
||||
var users = new DataSet1.vMailingProjectScheduleDataTable();
|
||||
ta.Fill(users,vGcode);
|
||||
//var users = db.vMailingProjectSchedule.ToList();// .vJobReportForUser.Where(t => t.gcode == Pub.vGcode).GroupBy(t => t.id);
|
||||
|
||||
addmsg($"[{vGcode}] {users.Count} 명의 데이터가 확인 되었습니다");
|
||||
|
||||
//메일데이터 생성
|
||||
var body = new System.Text.StringBuilder();
|
||||
body.AppendLine("<table border='1' cellspacing='1' cellpadding='1' style='text-align:center;'>");
|
||||
body.AppendLine("<tr>");
|
||||
body.AppendLine("<td>진행(%)</td>");
|
||||
body.AppendLine("<td>Project</td>");
|
||||
body.AppendLine("<td>Champion</td>");
|
||||
body.AppendLine("<td>등록일</td>");
|
||||
body.AppendLine("<td>스케쥴</td>");
|
||||
body.AppendLine("</tr>");
|
||||
|
||||
var gp = users.GroupBy(t => t.idx);
|
||||
foreach (var row in gp)
|
||||
{
|
||||
var prc = row.Sum(t => t.progress) / row.Count();
|
||||
var dr = row.FirstOrDefault();
|
||||
body.AppendLine($"<tr>");
|
||||
body.AppendLine($"<td>{prc}</td>");
|
||||
body.AppendLine($"<td>[{dr.idx}] {dr.name}</td>");
|
||||
body.AppendLine($"<td>{dr.userManager}</td>");
|
||||
body.AppendLine($"<td>{dr.pdate}</td>");
|
||||
body.AppendLine("<td>");
|
||||
body.AppendLine("<table border='1' cellspacing='1' cellpadding='1' style='text-align:center;'>");
|
||||
body.AppendLine("<tr>");
|
||||
body.AppendLine("<td rowspan='2'>No</td><td rowspan='2'>Title</td><td colspan='2'>Plan(ww)</td><td colspan='2'>Actual(ww)</td><td>진행</td><td>비고</td>");
|
||||
body.AppendLine("</tr>");
|
||||
body.AppendLine("<tr>");
|
||||
body.AppendLine("<td>시작</td><td>완료</td><td>시작</td><td>완료</td><td>%</td><td> </td>");
|
||||
body.AppendLine("</tr>");
|
||||
var ll = row.OrderBy(t => t.seq).ToList();
|
||||
foreach (var srow in ll)
|
||||
{
|
||||
body.AppendLine($"<tr>");
|
||||
body.AppendLine($"<td>{srow.seq}</td>");
|
||||
body.AppendLine($"<td>{srow.title}</td>");
|
||||
body.AppendLine($"<td>{srow.sw}</td>");
|
||||
body.AppendLine($"<td>{srow.ew}</td>");
|
||||
body.AppendLine($"<td>{srow.swa}</td>");
|
||||
body.AppendLine($"<td>{srow.ewa}</td>");
|
||||
body.AppendLine($"<td>{srow.progress}</td>");
|
||||
body.AppendLine($"<td>{srow.memo}</td>");
|
||||
body.AppendLine($"</tr>");
|
||||
}
|
||||
body.AppendLine("</table>");
|
||||
body.AppendLine("</td>");
|
||||
//여기에 스케쥴이 들어가야한다
|
||||
body.AppendLine($"</tr>");
|
||||
}
|
||||
body.AppendLine("</table>");
|
||||
|
||||
//일별경고(월요일제외)
|
||||
|
||||
if (MailJD != null)
|
||||
{
|
||||
var mail_subject = MailJD.subject;//.Replace("{담당자}", userinfo.name).Replace("{사번}", userinfo.id);
|
||||
var mail_to = MailJD.tolist;//.Replace("{담당자}", userinfo.email);
|
||||
var mail_cc = string.Empty; //
|
||||
if (MailJD.cc != null) mail_cc = MailJD.cc;//.Replace("{담당자}", userinfo.email);
|
||||
var mail_bcc = string.Empty;
|
||||
if (MailJD.bcc != null) mail_bcc = MailJD.bcc;//.Replace("{담당자}", userinfo.email);
|
||||
var mail_body = MailJD.body;//.Replace("{담당자}", userinfo.name);
|
||||
//mail_body = mail_body.Replace("{사번}", userinfo.id);
|
||||
|
||||
//메일본문을 생성해서 진행해야함
|
||||
var mail_content = mail_body.Replace("{data}", body.ToString());
|
||||
|
||||
//메일데이터를 생성한다.
|
||||
//mail_to = "chikyun.kim@amkor.co.kr";
|
||||
//mail_bcc = string.Empty;
|
||||
//mail_cc = string.Empty;
|
||||
|
||||
mail_to = Pub.MailSort(mail_to, MailJD.exceptmail);
|
||||
if (string.IsNullOrEmpty(mail_to) == false)
|
||||
{
|
||||
db = new EEEntities();
|
||||
db.MailData.Add(new MailData
|
||||
{
|
||||
gcode = vGcode,
|
||||
cate = "SJ",
|
||||
subject = mail_subject,
|
||||
fromlist = "eetgw@amkor.co.kr",
|
||||
tolist = Pub.MailSort(mail_to, MailJD.exceptmail),
|
||||
bcc = mail_bcc,
|
||||
cc = Pub.MailSort(mail_cc, MailJD.exceptmailcc),
|
||||
pdate = DateTime.Now.ToShortDateString(),
|
||||
body = mail_content,
|
||||
wuid = "DEV",
|
||||
wdate = DateTime.Now,
|
||||
});
|
||||
db.SaveChanges();
|
||||
addmsg($"[{vGcode}] 메일 전송 완료(스케쥴day)");
|
||||
System.Threading.Thread.Sleep(10000);
|
||||
}
|
||||
else
|
||||
{
|
||||
addmsg($"[{vGcode}] 받는사람이 소거되어 메일을 생성하지 않습니다");
|
||||
}
|
||||
}
|
||||
System.Threading.Thread.Sleep(500);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void toolStripButton1_Click(object sender, EventArgs e)
|
||||
{
|
||||
taskwait = !taskwait;
|
||||
}
|
||||
|
||||
private void timer1_Tick(object sender, EventArgs e)
|
||||
{
|
||||
if (task != null)
|
||||
{
|
||||
if (task.IsCompleted) this.btRun.Text = "완료";
|
||||
else if (task.IsCanceled) this.btRun.Text = "취소";
|
||||
else if (taskwait) this.btRun.Text = "대기상태";
|
||||
else this.btRun.Text = "가동중";
|
||||
this.btRun.Enabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.btRun.Text = "사용불가";
|
||||
this.btRun.Enabled = false;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,142 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>104, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="btRun.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
83
JobReportMailService/fScheduleDayWeek.Designer.cs
generated
83
JobReportMailService/fScheduleDayWeek.Designer.cs
generated
@@ -1,83 +0,0 @@
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
partial class fScheduleDayWeek
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fScheduleDayWeek));
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.btRun = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// timer1
|
||||
//
|
||||
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.btRun});
|
||||
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.Size = new System.Drawing.Size(473, 25);
|
||||
this.toolStrip1.TabIndex = 2;
|
||||
this.toolStrip1.Text = "toolStrip1";
|
||||
//
|
||||
// btRun
|
||||
//
|
||||
this.btRun.Image = ((System.Drawing.Image)(resources.GetObject("btRun.Image")));
|
||||
this.btRun.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.btRun.Name = "btRun";
|
||||
this.btRun.Size = new System.Drawing.Size(48, 22);
|
||||
this.btRun.Text = "Run";
|
||||
this.btRun.Click += new System.EventHandler(this.toolStripButton1_Click);
|
||||
//
|
||||
// fScheduleDayWeek
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(473, 416);
|
||||
this.Controls.Add(this.toolStrip1);
|
||||
this.Name = "fScheduleDayWeek";
|
||||
this.Text = "프로젝트 스케쥴(주보고)";
|
||||
this.Load += new System.EventHandler(this.fJobReportDay_Load);
|
||||
this.Controls.SetChildIndex(this.toolStrip1, 0);
|
||||
this.toolStrip1.ResumeLayout(false);
|
||||
this.toolStrip1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ToolStrip toolStrip1;
|
||||
private System.Windows.Forms.ToolStripButton btRun;
|
||||
}
|
||||
}
|
||||
@@ -1,287 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
public partial class fScheduleDayWeek : fChildBase
|
||||
{
|
||||
|
||||
public fScheduleDayWeek()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void fJobReportDay_Load(object sender, EventArgs e)
|
||||
{
|
||||
task = Task.Run(() =>
|
||||
{
|
||||
while (taskrun)
|
||||
{
|
||||
if (taskwait)
|
||||
{
|
||||
if (task != null)
|
||||
task.Wait(1000);
|
||||
continue;
|
||||
}
|
||||
|
||||
var ts = DateTime.Now - ChkMakeSchDayWeekTime;
|
||||
if (ts.TotalMinutes <= 15)
|
||||
{
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
addmsg("15분 미만이라 동작하지 않습니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else if (DateTime.Now.DayOfWeek != DayOfWeek.Monday)
|
||||
{
|
||||
//토,일요일에는 동작하지 않는다
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
addmsg("월요일에만 동작 합니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else if (DateTime.Now.Hour < 10) //10시부터 동작한다
|
||||
{
|
||||
if ((DateTime.Now - ConsoleTime).TotalHours >= 1.0)
|
||||
{
|
||||
addmsg("9시 이전에는 동작하지 않습니다");
|
||||
ConsoleTime = DateTime.Now;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ChkMakeSchDayWeekTime = DateTime.Now;
|
||||
try
|
||||
{
|
||||
RunData();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
addmsg(ex.Message);
|
||||
|
||||
|
||||
using (var ta = new DataSet1TableAdapters.MailDataTableAdapter())
|
||||
{
|
||||
using (var dt = new DataSet1.MailDataDataTable())
|
||||
{
|
||||
var newdr = dt.NewMailDataRow();
|
||||
newdr.gcode = "EET1P";
|
||||
newdr.cate = "ER";
|
||||
newdr.subject = "[ERROR] 스케쥴(주) 메일작성 실패";
|
||||
newdr.fromlist = "chikyun.kim@amkor.co.kr";
|
||||
newdr.tolist = "chikyun.kim@amkor.co.kr";
|
||||
newdr.bcc = string.Empty;
|
||||
newdr.cc = string.Empty;
|
||||
newdr.pdate = DateTime.Now.ToShortDateString();
|
||||
newdr.body = ex.Message;
|
||||
newdr.wuid = "dev";
|
||||
newdr.wdate = DateTime.Now;
|
||||
newdr.EndEdit();
|
||||
dt.AddMailDataRow(newdr);
|
||||
var cnt = ta.Update(dt);
|
||||
}
|
||||
}
|
||||
|
||||
task.Wait(5000);
|
||||
}
|
||||
}
|
||||
Task.Delay(Delaytime).Wait();
|
||||
}
|
||||
|
||||
});
|
||||
timer1.Start();
|
||||
if (Pub.setting.autoRunData)
|
||||
btRun.PerformClick();
|
||||
}
|
||||
|
||||
void RunData()
|
||||
{
|
||||
addmsg("스케쥴관리(주) 미 작성자 추출 작업을 시작 합니다");
|
||||
|
||||
|
||||
var db = new EEEntities();
|
||||
|
||||
//기준일자는 오늘부터 -15일이다
|
||||
var sd = DateTime.Now.AddDays(-15);
|
||||
var ed = DateTime.Now;
|
||||
var str_sd = sd.ToShortDateString();
|
||||
var str_ed = ed.ToShortDateString();
|
||||
var str_dt = DateTime.Now.ToShortDateString();
|
||||
|
||||
|
||||
var gcodelist = db.MailForm.GroupBy(t => t.gcode).ToList();
|
||||
foreach (var gcodedata in gcodelist)
|
||||
{
|
||||
//메일양식이 지정되어있는지 체크
|
||||
var vGcode = gcodedata.Key;
|
||||
if (string.IsNullOrEmpty(vGcode)) continue;
|
||||
|
||||
//메일양식이 지정되어있는지 체크
|
||||
var MailJD = db.MailForm.Where(t => t.gcode == vGcode & t.cate == "SP").FirstOrDefault();
|
||||
|
||||
if (MailJD == null)
|
||||
{
|
||||
//토,일요일에는 동작하지 않는다
|
||||
addmsg($"[{vGcode}] 메일 양식(SP)이 입력되지 않았습니다");
|
||||
continue;
|
||||
}
|
||||
if (MailJD.exceptmail == null) MailJD.exceptmail = string.Empty;
|
||||
if (MailJD.exceptmailcc == null) MailJD.exceptmailcc = string.Empty;
|
||||
|
||||
|
||||
//오늘날짜로 데이터가 등록되어있느지 확인한다.
|
||||
db = new EEEntities();
|
||||
var Existweek = db.MailData.Where(t => t.gcode == vGcode && t.cate == "SP" && t.pdate == str_dt).Any();
|
||||
if (Existweek)
|
||||
{
|
||||
addmsg($"[{vGcode}] 스케쥴(day)({str_dt}) 보고 메일이 이미 등록되어 있습니다");
|
||||
continue;
|
||||
}
|
||||
|
||||
//대상 사용자 목록을 추출한다
|
||||
var ta = new DataSet1TableAdapters.vMailingProjectScheduleTableAdapter();
|
||||
var users = new DataSet1.vMailingProjectScheduleDataTable();
|
||||
ta.Fill(users,vGcode);
|
||||
//var users = db.vMailingProjectSchedule.ToList();// .vJobReportForUser.Where(t => t.gcode == Pub.vGcode).GroupBy(t => t.id);
|
||||
|
||||
addmsg($"[{vGcode}] {users.Count} 명의 데이터가 확인 되었습니다");
|
||||
|
||||
//메일데이터 생성
|
||||
var body = new System.Text.StringBuilder();
|
||||
body.AppendLine("<table border='1' cellspacing='1' cellpadding='1' style='text-align:center;'>");
|
||||
body.AppendLine("<tr>");
|
||||
body.AppendLine("<td>진행(%)</td>");
|
||||
body.AppendLine("<td>Project</td>");
|
||||
body.AppendLine("<td>Champion</td>");
|
||||
body.AppendLine("<td>등록일</td>");
|
||||
body.AppendLine("<td>스케쥴</td>");
|
||||
body.AppendLine("</tr>");
|
||||
|
||||
var gp = users.GroupBy(t => t.idx);
|
||||
foreach (var row in gp)
|
||||
{
|
||||
var prc = row.Sum(t => t.progress) / row.Count();
|
||||
var dr = row.FirstOrDefault();
|
||||
body.AppendLine($"<tr>");
|
||||
body.AppendLine($"<td>{prc}</td>");
|
||||
body.AppendLine($"<td>[{dr.idx}] {dr.name}</td>");
|
||||
body.AppendLine($"<td>{dr.userManager}</td>");
|
||||
body.AppendLine($"<td>{dr.pdate}</td>");
|
||||
body.AppendLine("<td>");
|
||||
body.AppendLine("<table border='1' cellspacing='1' cellpadding='1' style='text-align:center;'>");
|
||||
body.AppendLine("<tr>");
|
||||
body.AppendLine("<td rowspan='2'>No</td><td rowspan='2'>Title</td><td colspan='2'>Plan(ww)</td><td colspan='2'>Actual(ww)</td><td>진행</td><td>비고</td>");
|
||||
body.AppendLine("</tr>");
|
||||
body.AppendLine("<tr>");
|
||||
body.AppendLine("<td>시작</td><td>완료</td><td>시작</td><td>완료</td><td>%</td><td> </td>");
|
||||
body.AppendLine("</tr>");
|
||||
var ll = row.OrderBy(t => t.seq).ToList();
|
||||
foreach (var srow in ll)
|
||||
{
|
||||
body.AppendLine($"<tr>");
|
||||
body.AppendLine($"<td>{srow.seq}</td>");
|
||||
body.AppendLine($"<td>{srow.title}</td>");
|
||||
body.AppendLine($"<td>{srow.sw}</td>");
|
||||
body.AppendLine($"<td>{srow.ew}</td>");
|
||||
body.AppendLine($"<td>{srow.swa}</td>");
|
||||
body.AppendLine($"<td>{srow.ewa}</td>");
|
||||
body.AppendLine($"<td>{srow.progress}</td>");
|
||||
body.AppendLine($"<td>{srow.memo}</td>");
|
||||
body.AppendLine($"</tr>");
|
||||
}
|
||||
body.AppendLine("</table>");
|
||||
body.AppendLine("</td>");
|
||||
//여기에 스케쥴이 들어가야한다
|
||||
body.AppendLine($"</tr>");
|
||||
}
|
||||
body.AppendLine("</table>");
|
||||
|
||||
//일별경고(월요일제외)
|
||||
|
||||
if (MailJD != null)
|
||||
{
|
||||
var mail_subject = MailJD.subject;//.Replace("{담당자}", userinfo.name).Replace("{사번}", userinfo.id);
|
||||
var mail_to = MailJD.tolist;//.Replace("{담당자}", userinfo.email);
|
||||
var mail_cc = string.Empty; //
|
||||
if (MailJD.cc != null) mail_cc = MailJD.cc;//.Replace("{담당자}", userinfo.email);
|
||||
var mail_bcc = string.Empty;
|
||||
if (MailJD.bcc != null) mail_bcc = MailJD.bcc;//.Replace("{담당자}", userinfo.email);
|
||||
var mail_body = MailJD.body;//.Replace("{담당자}", userinfo.name);
|
||||
//mail_body = mail_body.Replace("{사번}", userinfo.id);
|
||||
|
||||
//메일본문을 생성해서 진행해야함
|
||||
var mail_content = mail_body.Replace("{data}", body.ToString());
|
||||
|
||||
//메일데이터를 생성한다.
|
||||
//mail_to = "chikyun.kim@amkor.co.kr";
|
||||
//mail_bcc = string.Empty;
|
||||
//mail_cc = string.Empty;
|
||||
|
||||
mail_to = Pub.MailSort(mail_to, MailJD.exceptmail);
|
||||
if (string.IsNullOrEmpty(mail_to) == false)
|
||||
{
|
||||
db = new EEEntities();
|
||||
db.MailData.Add(new MailData
|
||||
{
|
||||
gcode = vGcode,
|
||||
cate = "SP",
|
||||
subject = mail_subject,
|
||||
fromlist = "eetgw@amkor.co.kr",
|
||||
tolist = Pub.MailSort(mail_to, MailJD.exceptmail),
|
||||
bcc = mail_bcc,
|
||||
cc = Pub.MailSort(mail_cc, MailJD.exceptmailcc),
|
||||
pdate = DateTime.Now.ToShortDateString(),
|
||||
body = mail_content,
|
||||
wuid = "DEV",
|
||||
wdate = DateTime.Now,
|
||||
});
|
||||
db.SaveChanges();
|
||||
addmsg($"[{vGcode}] 메일 전송 완료(스케쥴day)");
|
||||
System.Threading.Thread.Sleep(10000);
|
||||
}
|
||||
else
|
||||
{
|
||||
addmsg($"[{vGcode}] 받는사람이 소거되어 메일을 생성하지 않습니다");
|
||||
}
|
||||
}
|
||||
|
||||
System.Threading.Thread.Sleep(500);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void toolStripButton1_Click(object sender, EventArgs e)
|
||||
{
|
||||
taskwait = !taskwait;
|
||||
}
|
||||
|
||||
private void timer1_Tick(object sender, EventArgs e)
|
||||
{
|
||||
if (task != null)
|
||||
{
|
||||
if (task.IsCompleted) this.btRun.Text = "완료";
|
||||
else if (task.IsCanceled) this.btRun.Text = "취소";
|
||||
else if (taskwait) this.btRun.Text = "대기상태";
|
||||
else this.btRun.Text = "가동중";
|
||||
this.btRun.Enabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.btRun.Text = "사용불가";
|
||||
this.btRun.Enabled = false;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,142 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>104, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="btRun.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
83
JobReportMailService/fSendMail.Designer.cs
generated
83
JobReportMailService/fSendMail.Designer.cs
generated
@@ -1,83 +0,0 @@
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
partial class fSendMail
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fSendMail));
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.btRun = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// timer1
|
||||
//
|
||||
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.btRun});
|
||||
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.Size = new System.Drawing.Size(473, 25);
|
||||
this.toolStrip1.TabIndex = 2;
|
||||
this.toolStrip1.Text = "toolStrip1";
|
||||
//
|
||||
// btRun
|
||||
//
|
||||
this.btRun.Image = ((System.Drawing.Image)(resources.GetObject("btRun.Image")));
|
||||
this.btRun.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.btRun.Name = "btRun";
|
||||
this.btRun.Size = new System.Drawing.Size(48, 22);
|
||||
this.btRun.Text = "Run";
|
||||
this.btRun.Click += new System.EventHandler(this.toolStripButton1_Click);
|
||||
//
|
||||
// fSendMail
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(473, 416);
|
||||
this.Controls.Add(this.toolStrip1);
|
||||
this.Name = "fSendMail";
|
||||
this.Text = "Send Mail";
|
||||
this.Load += new System.EventHandler(this.fJobReportDay_Load);
|
||||
this.Controls.SetChildIndex(this.toolStrip1, 0);
|
||||
this.toolStrip1.ResumeLayout(false);
|
||||
this.toolStrip1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ToolStrip toolStrip1;
|
||||
private System.Windows.Forms.ToolStripButton btRun;
|
||||
}
|
||||
}
|
||||
@@ -1,274 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
public partial class fSendMail : fChildBase
|
||||
{
|
||||
|
||||
public fSendMail()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void fJobReportDay_Load(object sender, EventArgs e)
|
||||
{
|
||||
this.Delaytime = 3000;
|
||||
task = Task.Run(() =>
|
||||
{
|
||||
while (taskrun)
|
||||
{
|
||||
if (taskwait)
|
||||
{
|
||||
task.Wait(1000);
|
||||
continue;
|
||||
}
|
||||
|
||||
var ts = DateTime.Now - ChkMakeSchDayWeekTime;
|
||||
if (ts.TotalMilliseconds <= 1000)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
ChkMakeSchDayWeekTime = DateTime.Now;
|
||||
try
|
||||
{
|
||||
RunData();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
addmsg(ex.Message);
|
||||
task.Wait(5000);
|
||||
}
|
||||
}
|
||||
Task.Delay(Delaytime).Wait();
|
||||
}
|
||||
|
||||
});
|
||||
timer1.Start();
|
||||
if (Pub.setting.autoRunData)
|
||||
btRun.PerformClick();
|
||||
}
|
||||
|
||||
void RunData()
|
||||
{
|
||||
SendMail();
|
||||
System.Threading.Thread.Sleep(1000);
|
||||
MakeAutoMail();
|
||||
}
|
||||
|
||||
void SendMail()
|
||||
{
|
||||
//그룹무관하게 모든 자료를 전송처리한다
|
||||
var ta = new DataSet1TableAdapters.MailDataTableAdapter();
|
||||
var sendList = ta.GetData(); //발송되지않은 메일목록
|
||||
|
||||
if (sendList.Rows.Count > 0) addmsg("Found : " + sendList.Rows.Count.ToString());
|
||||
else addmsg("전송할 메일이 없습니다");
|
||||
|
||||
foreach (DataSet1.MailDataRow dr in sendList)
|
||||
{
|
||||
//전자메일 검증을 한다.
|
||||
var list_from = getMaillist(dr.fromlist);
|
||||
var list_to = getMaillist(dr.tolist);
|
||||
var list_bcc = getMaillist(dr.bcc);
|
||||
var list_cc = getMaillist(dr.cc);
|
||||
|
||||
|
||||
string sendMsg = "";
|
||||
if (list_from == "")
|
||||
{
|
||||
sendMsg = ("보내는 주소가 없습니다");
|
||||
}
|
||||
else if (dr.subject.Trim() == "")
|
||||
{
|
||||
sendMsg = ("메일 제목이 없습니다");
|
||||
}
|
||||
else if (dr.body.Trim() == "")
|
||||
{
|
||||
sendMsg = ("본문이 없습니다");
|
||||
}
|
||||
else if (list_to == "")
|
||||
{
|
||||
sendMsg = ("받는 주소가 없습니다");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
var body = dr.body;
|
||||
body +=
|
||||
"<p>" +
|
||||
"<br />이 메일은 EET 프로그램에서 자동 발신 되었습니다." +
|
||||
"<br />메일이 잘못 전송 되었다면 [<a href='chikyun.kim@amkor.co.kr'>chikyun.kim@amkor.co.kr</a>] 로 문의 주시기 바랍니다" +
|
||||
"</p>";
|
||||
|
||||
//전송을 해야 함
|
||||
var mc = new System.Net.Mail.SmtpClient("10.101.10.6");
|
||||
var msg = new System.Net.Mail.MailMessage
|
||||
(list_from,
|
||||
list_to,
|
||||
dr.subject,
|
||||
body);
|
||||
|
||||
if (list_bcc != "") msg.Bcc.Add(list_bcc);
|
||||
if (list_cc != "") msg.CC.Add(list_cc);
|
||||
msg.IsBodyHtml = true;
|
||||
|
||||
try
|
||||
{
|
||||
mc.Send(msg);
|
||||
Console.WriteLine("send mail to" + list_to + ",subject=" + dr.subject);
|
||||
sendMsg = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
}
|
||||
catch (Exception eX)
|
||||
{
|
||||
sendMsg = eX.Message;
|
||||
}
|
||||
}
|
||||
|
||||
Console.WriteLine(string.Format("Send Complete index={0},Msg={1}", dr.idx, sendMsg));
|
||||
ta.UpdateSendOK(sendMsg, dr.idx);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
static DateTime ChkAutoDate = DateTime.Now.AddDays(-1);
|
||||
void MakeAutoMail()
|
||||
{
|
||||
var ts = DateTime.Now - ChkAutoDate;
|
||||
if (ts.TotalMinutes < 1) return; //10분마다 자동 생성 데이터를 처리한다
|
||||
Console.WriteLine("Check Auto Make Mail");
|
||||
|
||||
var taData = new DataSet1TableAdapters.MailDataTableAdapter();
|
||||
var taList = new DataSet1TableAdapters.MailAutoTableAdapter();
|
||||
var dtList = taList.GetByAutoSend();
|
||||
var dtInsert = new DataSet1.MailDataDataTable();
|
||||
|
||||
//대상
|
||||
Console.WriteLine("Make Auto Send Mail Data (" + dtList.Rows.Count.ToString() + ")");
|
||||
|
||||
foreach (DataSet1.MailAutoRow dr in dtList)
|
||||
{
|
||||
//시간정보가 없는 애들은 처리 하지 않음
|
||||
if (dr.stime.IndexOf(":") == -1) continue;
|
||||
if (dr.sday == null || dr.sday.Length < 2) continue;
|
||||
|
||||
//발신시간을 넘어야 한다
|
||||
var curTime = DateTime.Now.ToString("HH:mm");
|
||||
if (string.Compare(curTime, dr.stime) < 0) continue; //지정된 시간 이전이면 생성 안한다
|
||||
|
||||
//자동생성 구분용 카테고리
|
||||
var cate = string.Format("{0},{1}", dr.sday[0], dr.sday[1]);
|
||||
|
||||
//동륵일
|
||||
var pdate = DateTime.Now.ToString("yyyy-MM-dd");
|
||||
|
||||
//같은날, 같은 atime aidx pdate 의 같이 있으면 이미 생성된것이므로 추가하지 않는다
|
||||
var existData = taData.FindAutoData(dr.idx, dr.stime, pdate, cate);
|
||||
var PreMakeCount = (int)(existData);
|
||||
if (PreMakeCount > 0) continue;
|
||||
|
||||
//전송간격과 대상
|
||||
if (dr.sday[0] == 1)
|
||||
{
|
||||
//week
|
||||
var bitString = Convert.ToString(dr.sday[1], 2).PadLeft(8, '0').ToArray();
|
||||
var weeknum = (int)(DateTime.Now.DayOfWeek);
|
||||
if (bitString[weeknum + 1] == '0') continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
//month
|
||||
if (dr.sday[1] != DateTime.Now.Day) continue;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//같은날, 같은 atime aidx pdate 의 같이 있으면 이미 생성된것이므로 추가하지 않는다
|
||||
//생성해야할 자료라면 만들어 준다
|
||||
var newdr = dtInsert.NewMailDataRow();
|
||||
newdr.pdate = pdate;// DateTime.Now.ToString("yyyy-MM-dd");
|
||||
newdr.gcode = dr.gcode;
|
||||
newdr.fromlist = dr.fromlist;
|
||||
newdr.tolist = dr.tolist;
|
||||
newdr.bcc = dr.bcc;
|
||||
newdr.cate = cate;// string.Format("{0},{1}", dr.sday[0], dr.sday[1]); //cate에 해당 자료를 기록한다.
|
||||
newdr.cc = dr.cc;
|
||||
newdr.subject = dr.subject;
|
||||
newdr.body = dr.body;
|
||||
newdr.aidx = dr.idx;
|
||||
newdr.atime = dr.stime;
|
||||
newdr.wuid = "DEV";
|
||||
newdr.wdate = DateTime.Now;
|
||||
dtInsert.AddMailDataRow(newdr);
|
||||
try
|
||||
{
|
||||
taData.Update(newdr);
|
||||
Console.WriteLine("auto make : " + newdr.tolist + ",subject=" + newdr.subject);
|
||||
}
|
||||
catch (Exception eX)
|
||||
{
|
||||
Console.WriteLine("auto make error : " + eX.Message);
|
||||
}
|
||||
}
|
||||
ChkAutoDate = DateTime.Now;
|
||||
}
|
||||
|
||||
string getMaillist(string org)
|
||||
{
|
||||
org = org.Replace(";", ",").Replace(":", ",");
|
||||
string list_to = "";
|
||||
foreach (var item in org.Split(','))
|
||||
{
|
||||
if (item.Trim() != "")
|
||||
{
|
||||
var atindex = item.IndexOf("@");
|
||||
if (atindex != -1)
|
||||
{
|
||||
var dotindex = item.IndexOf(".", atindex + 1);
|
||||
if (dotindex != -1)
|
||||
{
|
||||
//정상이므로 추가한다.
|
||||
if (list_to != "") list_to += ",";
|
||||
list_to += item.Trim();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return list_to;
|
||||
}
|
||||
|
||||
private void toolStripButton1_Click(object sender, EventArgs e)
|
||||
{
|
||||
taskwait = !taskwait;
|
||||
if (taskwait == false)
|
||||
ChkMakeSchDayWeekTime = DateTime.Now.AddHours(-1);
|
||||
}
|
||||
|
||||
private void timer1_Tick(object sender, EventArgs e)
|
||||
{
|
||||
if (task != null)
|
||||
{
|
||||
if (task.IsCompleted) this.btRun.Text = "완료";
|
||||
else if (task.IsCanceled) this.btRun.Text = "취소";
|
||||
else if (taskwait) this.btRun.Text = "대기상태";
|
||||
else this.btRun.Text = "가동중";
|
||||
this.btRun.Enabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.btRun.Text = "사용불가";
|
||||
this.btRun.Enabled = false;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,142 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>104, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="btRun.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
75
JobReportMailService/fSetup.Designer.cs
generated
75
JobReportMailService/fSetup.Designer.cs
generated
@@ -1,75 +0,0 @@
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
partial class fSetup
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.propertyGrid1 = new System.Windows.Forms.PropertyGrid();
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// propertyGrid1
|
||||
//
|
||||
this.propertyGrid1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.propertyGrid1.Location = new System.Drawing.Point(0, 0);
|
||||
this.propertyGrid1.Name = "propertyGrid1";
|
||||
this.propertyGrid1.Size = new System.Drawing.Size(457, 486);
|
||||
this.propertyGrid1.TabIndex = 0;
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||
this.button1.Location = new System.Drawing.Point(0, 486);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(457, 68);
|
||||
this.button1.TabIndex = 1;
|
||||
this.button1.Text = "button1";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
this.button1.Click += new System.EventHandler(this.button1_Click);
|
||||
//
|
||||
// fSetup
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(457, 554);
|
||||
this.Controls.Add(this.propertyGrid1);
|
||||
this.Controls.Add(this.button1);
|
||||
this.Name = "fSetup";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "fSetup";
|
||||
this.Load += new System.EventHandler(this.fSetup_Load);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.PropertyGrid propertyGrid1;
|
||||
private System.Windows.Forms.Button button1;
|
||||
}
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
public partial class fSetup : Form
|
||||
{
|
||||
public fSetup()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.propertyGrid1.SelectedObject = Pub.setting;
|
||||
}
|
||||
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Validate();
|
||||
Pub.setting.Save();
|
||||
DialogResult = DialogResult.OK;
|
||||
}
|
||||
|
||||
private void fSetup_Load(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,120 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -1,36 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
* {
|
||||
font-family:"맑은 고딕";
|
||||
font-weight:bold;
|
||||
font-size:50px;
|
||||
}
|
||||
|
||||
</style>
|
||||
<body>
|
||||
|
||||
<table border="1" cellpadding="1" cellspacing="1" style='text-align: center;'>
|
||||
<tr>
|
||||
<td rowspan="2">
|
||||
fdasf
|
||||
</td>
|
||||
<td>
|
||||
맑은 고딕 테스트
|
||||
</td>
|
||||
<td>
|
||||
fdasf
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
||||
<td>
|
||||
fdasf
|
||||
</td>
|
||||
<td>
|
||||
fdasf
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,5 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="EntityFramework" version="6.2.0" targetFramework="net45" />
|
||||
<package id="EntityFramework.ko" version="6.2.0" targetFramework="net45" />
|
||||
</packages>
|
||||
@@ -1,40 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 이 코드는 템플릿에서 생성되었습니다.
|
||||
//
|
||||
// 이 파일을 수동으로 변경하면 응용 프로그램에서 예기치 않은 동작이 발생할 수 있습니다.
|
||||
// 이 파일을 수동으로 변경하면 코드가 다시 생성될 때 변경 내용을 덮어씁니다.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
public partial class vGroupUser
|
||||
{
|
||||
public string gcode { get; set; }
|
||||
public string dept { get; set; }
|
||||
public Nullable<short> level { get; set; }
|
||||
public string name { get; set; }
|
||||
public string nameE { get; set; }
|
||||
public string grade { get; set; }
|
||||
public string email { get; set; }
|
||||
public string tel { get; set; }
|
||||
public string indate { get; set; }
|
||||
public string outdate { get; set; }
|
||||
public string hp { get; set; }
|
||||
public string place { get; set; }
|
||||
public string ads_employNo { get; set; }
|
||||
public string ads_title { get; set; }
|
||||
public string ads_created { get; set; }
|
||||
public string memo { get; set; }
|
||||
public string processs { get; set; }
|
||||
public string id { get; set; }
|
||||
public string state { get; set; }
|
||||
public Nullable<bool> useJobReport { get; set; }
|
||||
public Nullable<bool> useUserState { get; set; }
|
||||
public string password { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 이 코드는 템플릿에서 생성되었습니다.
|
||||
//
|
||||
// 이 파일을 수동으로 변경하면 응용 프로그램에서 예기치 않은 동작이 발생할 수 있습니다.
|
||||
// 이 파일을 수동으로 변경하면 코드가 다시 생성될 때 변경 내용을 덮어씁니다.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace JobReportMailService
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
public partial class vJobReportForUser
|
||||
{
|
||||
public int idx { get; set; }
|
||||
public string pdate { get; set; }
|
||||
public string gcode { get; set; }
|
||||
public string id { get; set; }
|
||||
public string name { get; set; }
|
||||
public string process { get; set; }
|
||||
public string type { get; set; }
|
||||
public string svalue { get; set; }
|
||||
public Nullable<double> hrs { get; set; }
|
||||
public Nullable<double> ot { get; set; }
|
||||
public string requestpart { get; set; }
|
||||
public string package { get; set; }
|
||||
public string userProcess { get; set; }
|
||||
public string status { get; set; }
|
||||
public string projectName { get; set; }
|
||||
public string description { get; set; }
|
||||
public string ww { get; set; }
|
||||
public Nullable<System.DateTime> otStart { get; set; }
|
||||
public Nullable<System.DateTime> otEnd { get; set; }
|
||||
public Nullable<double> ot2 { get; set; }
|
||||
public string otReason { get; set; }
|
||||
public string grade { get; set; }
|
||||
public string indate { get; set; }
|
||||
public string outdate { get; set; }
|
||||
}
|
||||
}
|
||||
13
MemoryMap.cs
13
MemoryMap.cs
@@ -1,13 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace AR
|
||||
{
|
||||
public class MemoryMap
|
||||
{
|
||||
public MemoryMap()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
using Microsoft.Owin.Hosting;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace OwinProject
|
||||
{
|
||||
public static class OwinServer
|
||||
{
|
||||
public static void Run()
|
||||
{
|
||||
// Start OWIN host
|
||||
WebApp.Start<OWIN.Startup>(url: "http://127.0.0.1:9000");
|
||||
Console.WriteLine("start webapp");
|
||||
}
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user