Files
Groupware/SubProject/FLG0000/LogData/Add.cs
chikyun.kim 6a90be2e6d ..
2019-08-23 18:08:04 +09:00

418 lines
17 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace FLG0000.LogData
{
public partial class Add : Form
{
BindingSource bsManu;
BindingSource bsModel;
DSLog.LogDataRow dr;
public Boolean repeatAdd = false;
public Add(DSLog.LogDataRow dr_)
{
InitializeComponent();
bsManu = new BindingSource();
bsModel = new BindingSource();
this.dr = dr_;
this.KeyPreview = true;
this.StartPosition = FormStartPosition.CenterScreen;
this.KeyDown += (s1, e1) =>
{
if (e1.KeyCode == Keys.Escape) this.Close();
};
foreach (Control ctl in this.Controls)
{
if (ctl.GetType() == typeof(TextBox) || ctl.GetType() == typeof(ComboBox))
{
ctl.KeyDown += ctl_KeyDown;
}
}
}
private void __Load(object sender, EventArgs e)
{
////장비제조
//var dt_dept = FCOMMON.DBM.getCodeTable("06");
//bsManu.DataSource = dt_dept;
//this.cbEQManu.DisplayMember = "Value";
//this.cbEQManu.ValueMember = "Value";
//this.cbEQManu.DataSource = bsManu;
dtPdate.Value = DateTime.Parse(dr.pdate);
tbLocation.Text = dr.location;
tbReason.Text = dr.reason;
tbResult.Text = dr.result;
tbLocation.Tag = tbLocation.Text;
tbReason.Tag = tbReason.Text;
tbResult.Tag = tbResult.Text;
tbRemark.Text = dr.remark;
this.Show();
Application.DoEvents();
textBox1.Focus();
}
void ctl_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
Control ctl = sender as Control;
string nm = ctl.Name.ToLower();
string search = ctl.Text.Trim();
Console.WriteLine("inner keydown " + nm + ":" + search);
switch (nm)
{
case "tblocation":
if (search == "")
Lov_Location(search, false);
else if (search.Contains("L")) //바코드입력
{
var grpdata = FCOMMON.DBM.getCodeBySvalue("19", search);
if (grpdata.title != null)
{
if (grpdata.code.Length > 6)
{
//각 깊이별 이름을 다 가져와야한다
System.Text.StringBuilder sb = new StringBuilder();
int itemCount = (int)((grpdata.code.Length - 6) / 2.0);
for (int i = 6; i <= grpdata.code.Length; i += 2)
{
var codeStr = grpdata.code.Substring(0, i);
var codeData = FCOMMON.DBM.getCodeByCode("19", codeStr);
if (codeData.title != "")
{
if (sb.Length > 0) sb.Append('|');
sb.Append(codeData.title.Replace("|", ""));
}
}
ctl.Text = sb.ToString();
ctl.Tag = ctl.Text;
}
else
{
ctl.Text = grpdata.title;
ctl.Tag = ctl.Text;
}
SendKeys.Send("{TAB}");
}
else Lov_Location(search, false);
}
break;
case "tbreason":
if (search == "")
Lov_Reason(search, false);
else if (search.StartsWith("L")) //바코드입력
{
var grpdata = FCOMMON.DBM.getCodeBySvalue("19", search);
if (grpdata.title != null)
{
if (grpdata.code.Length > 6)
{
//각 깊이별 이름을 다 가져와야한다
System.Text.StringBuilder sb = new StringBuilder();
int itemCount = (int)((grpdata.code.Length - 6) / 2.0);
for (int i = 6; i <= grpdata.code.Length; i += 2)
{
var codeStr = grpdata.code.Substring(0, i);
var codeData = FCOMMON.DBM.getCodeByCode("19", codeStr);
if (codeData.title != "")
{
if (sb.Length > 0) sb.Append('|');
sb.Append(codeData.title.Replace("|", ""));
}
}
ctl.Text = sb.ToString();
ctl.Tag = ctl.Text;
}
else
{
ctl.Text = grpdata.title;
ctl.Tag = ctl.Text;
}
SendKeys.Send("{TAB}");
}
else Lov_Reason(search, false);
}
break;
case "tbresult":
if (search.StartsWith("L"))
{
var grpdata = FCOMMON.DBM.getCodeBySvalue("19", search);
if (grpdata.title != null)
{
if (grpdata.code.Length > 6)
{
//각 깊이별 이름을 다 가져와야한다
System.Text.StringBuilder sb = new StringBuilder();
int itemCount = (int)((grpdata.code.Length - 6) / 2.0);
for (int i = 6; i <= grpdata.code.Length; i += 2)
{
var codeStr = grpdata.code.Substring(0, i);
var codeData = FCOMMON.DBM.getCodeByCode("19", codeStr);
if (codeData.title != "")
{
if (sb.Length > 0) sb.Append('|');
sb.Append(codeData.title.Replace("|", ""));
}
}
ctl.Text = sb.ToString();
ctl.Tag = ctl.Text;
}
else
{
ctl.Text = grpdata.title;
ctl.Tag = ctl.Text;
}
btSave.Focus();
}
else Lov_Result(search, false);
}
else if (search != "")
Lov_Result(search, false);
break;
default:
SendKeys.Send("{TAB}");
break;
}
}
}
private void linkLabel5_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Lov_Location("", true);
}
void Lov_Location(string search, Boolean allowAll)
{
var f = new Lov_LogItem("00", "00");
if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
if (f.tbItem.Text.Trim() != "")
this.tbLocation.Text = string.Format("{0}|{1}", f.tbGrp.Text, f.tbItem.Text);
else
this.tbLocation.Text = f.tbGrp.Text.Trim();
this.tbLocation.Tag = this.tbLocation.Text;
}
}
void Lov_Reason(string search, Boolean allowAll)
{
var f = new Lov_LogItem("00", "01");
if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
if (f.tbItem.Text.Trim() != "")
this.tbReason.Text = string.Format("{0}|{1}", f.tbGrp.Text, f.tbItem.Text);
else
this.tbResult.Text = f.tbGrp.Text.Trim();
this.tbReason.Tag = this.tbReason.Text;
}
}
void Lov_Result(string search, Boolean allowAll)
{
var f = new Lov_LogItem("00", "02");
if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
if (f.tbItem.Text.Trim() != "")
this.tbResult.Text = string.Format("{0}|{1}", f.tbGrp.Text, f.tbItem.Text);
else
this.tbResult.Text = f.tbGrp.Text.Trim();
this.tbReason.Tag = this.tbReason.Text;
}
}
private bool saveData()
{
this.Validate();
if (tbLocation.Text.isEmpty())
{
FCOMMON.Util.MsgE("위치정보가 없습니다.");
tbLocation.Focus();
return false;
}
if (tbReason.Text == "")
{
FCOMMON.Util.MsgE("원인을 입력하세요.");
tbReason.Focus();
return false;
}
//if (tbResult.Text == "")
//{
// FCOMMON.Util.MsgE("결과를 입력하세요.");
// tbResult.Focus();
// return false;
//}
//임의 기록데이터가 있다면 신규 목록을 추가 한다.
if (tbLocation.Text != tbLocation.Tag.ToString())
{
var codeDatas = FCOMMON.DBM.getCodeTable("19");
var list = tbLocation.Text.Split('|');
int depth = 0;
string codeHeader = "";
string baseCode = "00" + "00"; //location 은 00,reason 01, 조치 02
for (int i = 0; i < list.Length; i++)
{
var strData = list[i];
if (strData.Trim() == "") continue;
//이 데이터가 존재하지 않으면 추가한다.
var existData = FCOMMON.DBM.getCodeByMemo("19", strData);
if (existData.title != "" && existData.code.StartsWith(baseCode)) baseCode = existData.code;
else
{
//없으므로 신규추가해준다.
int codeLen = 6 + depth * 2;
var filterStr = string.Format("code like '{0}%' and len(code) = {1}", baseCode.Substring(0, codeLen - 2), codeLen);
var preList = codeDatas.Select(filterStr, "code desc");
var newCode = "";
if (preList.Length == 0)
{
newCode = baseCode + "00";
}
else
{
//동일코드가 하나도 없다.
var lastCode = preList[0]["code"].ToString();
var lastNo = lastCode.Substring(baseCode.Length, 2);
newCode = baseCode + string.Format("{0:00}", int.Parse(lastNo) + 1);
}
FCOMMON.DBM.insertCode("19", newCode, strData, "LA" + newCode);
baseCode = newCode;
}
depth += 1;
}
}
if (this.tbReason.Text != tbReason.Tag.ToString())
{
var codeDatas = FCOMMON.DBM.getCodeTable("19");
var list = tbReason.Text.Split('|');
int depth = 0;
string codeHeader = "";
string baseCode = "00" + "01"; //location 은 00,reason 01, 조치 02
for (int i = 0; i < list.Length; i++)
{
var strData = list[i];
if (strData.Trim() == "") continue;
//이 데이터가 존재하지 않으면 추가한다.
var existData = FCOMMON.DBM.getCodeByMemo("19", strData);
if (existData.title != "" && existData.code.StartsWith(baseCode)) baseCode = existData.code;
else
{
//없으므로 신규추가해준다.
int codeLen = 6 + depth * 2;
var filterStr = string.Format("code like '{0}%' and len(code) = {1}", baseCode.Substring(0, codeLen - 2), codeLen);
var preList = codeDatas.Select(filterStr, "code desc");
var newCode = "";
if (preList.Length == 0)
{
newCode = baseCode + "00";
}
else
{
//동일코드가 하나도 없다.
var lastCode = preList[0]["code"].ToString();
var lastNo = lastCode.Substring(baseCode.Length, 2);
newCode = baseCode + string.Format("{0:00}", int.Parse(lastNo) + 1);
}
FCOMMON.DBM.insertCode("19", newCode, strData, "LB" + newCode);
baseCode = newCode;
}
depth += 1;
}
}
if (this.tbResult.Text != tbResult.Tag.ToString())
{
var codeDatas = FCOMMON.DBM.getCodeTable("19");
var list = tbReason.Text.Split('|');
int depth = 0;
string codeHeader = "";
string baseCode = "00" + "02"; //location 은 00,reason 01, 조치 02
for (int i = 0; i < list.Length; i++)
{
var strData = list[i];
if (strData.Trim() == "") continue;
//이 데이터가 존재하지 않으면 추가한다.
var existData = FCOMMON.DBM.getCodeByMemo("19", strData);
if (existData.title != "" && existData.code.StartsWith(baseCode)) baseCode = existData.code;
else
{
//없으므로 신규추가해준다.
int codeLen = 6 + depth * 2;
var filterStr = string.Format("code like '{0}%' and len(code) = {1}", baseCode.Substring(0, codeLen - 2), codeLen);
var preList = codeDatas.Select(filterStr, "code desc");
var newCode = "";
if (preList.Length == 0)
{
newCode = baseCode + "00";
}
else
{
//동일코드가 하나도 없다.
var lastCode = preList[0]["code"].ToString();
var lastNo = lastCode.Substring(baseCode.Length, 2);
newCode = baseCode + string.Format("{0:00}", int.Parse(lastNo) + 1);
}
FCOMMON.DBM.insertCode("19", newCode, strData, "LC" + newCode);
baseCode = newCode;
}
depth += 1;
}
}
dr.gcode = FCOMMON.info.Login.gcode;
dr.pdate = this.dtPdate.Value.ToShortDateString();
dr.location = tbLocation.Text.Trim().Replace("|", "");
dr.reason = tbReason.Text.Trim().Replace("|", "");
dr.result = tbResult.Text.Trim().Replace("|", "");
dr.remark = tbRemark.Text.Trim();
dr.EndEdit();
return true;
}
private void button1_Click(object sender, EventArgs e)
{
if (!saveData()) return;
DialogResult = System.Windows.Forms.DialogResult.OK;
}
private void linkLabel6_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
//lov 공급처
Lov_Reason("", true);
}
private void linkLabel7_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
//lov 프로젝트
Lov_Result("", true);
}
}
}