Files
Groupware/SubProject/FCM0000/fCode.cs
2024-05-08 14:53:55 +09:00

339 lines
12 KiB
C#

using FCOMMON;
using NetOffice.OutlookApi;
using System;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
namespace FCM0000
{
public partial class fCode : FCOMMON.fBase
{
string defaultgubun = "";
string defafilter = "";
public fCode(string gubun = "", string filter = "")
{
InitializeComponent();
this.defaultgubun = gubun;
this.defafilter = filter;
Properties.Settings.Default["gwcs"] = FCOMMON.info.CS;
this.dsMSSQL.Common.TableNewRow += Common_TableNewRow;
if (FCOMMON.info.Login.level >= 9) toolStripButton1.Visible = true;
this.KeyPreview = true;
this.KeyDown += (s1, e1) => { if (e1.KeyCode == Keys.Escape) this.Close(); };
}
void Common_TableNewRow(object sender, DataTableNewRowEventArgs e)
{
e.Row["gcode"] = FCOMMON.info.Login.gcode;
e.Row["wuid"] = FCOMMON.info.Login.no;
e.Row["wdate"] = DateTime.Now;
string grp = "99";
if (this.cmbList.SelectedIndex > 0)
{
var title = cmbList.Text.Split(']');
grp = title[0].Substring(1);
}
e.Row["grp"] = grp;
}
private void __Load(object sender, EventArgs e)
{
EnsureVisibleAndUsableSize();
tbFind.Text = string.Empty;
if (this.defaultgubun.isEmpty() == false)
{
commonDataGridView.AllowUserToAddRows = false;
commonDataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
btAddNew.Visible = false;
}
else
{
btCancle.Visible = false;
}
this.Show();
System.Windows.Forms.Application.DoEvents();
if (this.WindowState == FormWindowState.Minimized) this.WindowState = FormWindowState.Normal;
if (this.RestoreBounds.X + this.RestoreBounds.Width < 300 && this.RestoreBounds.X < 0)
this.Location = new Point(0, 0);
toolStripButton1.Visible = FCOMMON.info.Login.no == "dev";
// this.TopMost=true;
// this.Activate();
//자동선택해준다.
if (defaultgubun.isEmpty() == false)
{
RefreshCodeList();
var idx = -1;
for (int i = 0; i < this.cmbList.Items.Count; i++)
{
var itemname = $"[{i:00}]";
var item = cmbList.Items[i];
if (item.ToString().StartsWith($"[{defaultgubun}]"))
{
idx = i;
break;
}
}
if (idx > -1)
{
this.cmbList.SelectedIndex = idx;
this.cmbList.Enabled = false;
}
cmbList_SelectedIndexChanged(null, null);
}
else cmbList_SelectedIndexChanged(null, null);
}
void RefreshCodeList()
{
//공용코드목록을 가져온다.
cmbList.Items.Clear();
var codelist = FCOMMON.DBM.getCodeList();
cmbList.Items.Add("-- Code Group List --");
foreach (var item in codelist)
{
cmbList.Items.Add(string.Format("[{0}] {1}", item.Key, item.Value));
}
}
void RefreshCodeData()
{
string grp = "99";
if (cmbList.SelectedIndex > 0)
{
var title = cmbList.Text.Split(']');
grp = title[0].Substring(1);
}
try
{
this.ta.Fill(this.dsMSSQL.Common, grp, FCOMMON.info.Login.gcode);
this.bs.Filter = this.defafilter;
this.dsMSSQL.Common.AcceptChanges();
}
catch (System.Exception ex)
{
FCOMMON.Util.MsgE("Query Error\n\n" + ex.Message);
}
}
private void commonBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
this.Validate();
this.bs.EndEdit();
this.tam.UpdateAll(this.dsMSSQL);
this.dsMSSQL.Common.AcceptChanges();
if (this.cmbList.SelectedIndex <= 0)
{
cmbList_SelectedIndexChanged(null, null);
}
}
private void cmbList_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.dsMSSQL.HasChanges())
{
var dlg = FCOMMON.Util.MsgQ(
"변경된 자료가 손실됩니다.\n\n" +
"목록을 새로고침 하시겠습니까?");
if (dlg != System.Windows.Forms.DialogResult.Yes) return;
}
if (cmbList.SelectedIndex <= 0)
{
RefreshCodeList();
RefreshCodeData();
}
else if (cmbList.SelectedIndex > 0)
RefreshCodeData();
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
var drows = this.dsMSSQL.Common.Select(this.bs.Filter, "memo");
for (int i = 1; i <= drows.Length; i++)
{
drows[i - 1]["code"] = i.ToString("000");
}
}
private void title가져오기ToolStripMenuItem_Click(object sender, EventArgs e)
{
var f = new FCOMMON.fInputTextBox();
if (f.ShowDialog() == DialogResult.OK)
{
var data = f.textBox1.Text.Trim();
data = data.Replace("\r", "");
var lines = data.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries);
var dlg = FCOMMON.Util.MsgQ(lines.Count().ToString() + "건의 자료가 있습니다. 입력할까요?");
if (dlg == DialogResult.Yes)
{
foreach (var item in lines)
{
if (item.Trim().Equals("")) continue;
if (this.dsMSSQL.Common.Where(t => t.memo == item.Trim()).Any() == false)
{
var newdr = this.dsMSSQL.Common.NewCommonRow();
newdr.memo = item;
this.dsMSSQL.Common.AddCommonRow(newdr);
}
}
}
}
}
private void s가져오기ToolStripMenuItem_Click(object sender, EventArgs e)
{
var f = new FCOMMON.fInputTextBox();
if (f.ShowDialog() == DialogResult.OK)
{
var data = f.textBox1.Text.Trim();
data = data.Replace("\r", "");
var lines = data.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries);
var dlg = FCOMMON.Util.MsgQ(lines.Count().ToString() + "건의 자료가 있습니다. 입력할까요?");
if (dlg == DialogResult.Yes)
{
int r = 0;
foreach (var item in lines)
{
if (r < this.dsMSSQL.Common.Count)
this.dsMSSQL.Common.Rows[r]["svalue"] = item;
r += 1;
//if (item.Trim().Equals("")) continue;
//if (this.dsMSSQL.Common.Where(t => t.memo == item.Trim()).Any() == false)
//{
// var newdr = this.dsMSSQL.Common.NewCommonRow();
// newdr.memo = item;
// this.dsMSSQL.Common.AddCommonRow(newdr);
//}
}
}
}
}
private void toolStripButton2_Click(object sender, EventArgs e)
{
//누락된 목록을 생성합니다
var gcode = FCOMMON.info.Login.gcode;
var uid = FCOMMON.info.Login.no;
if (cmbList.SelectedIndex <= 0)
{
if (FCOMMON.Util.MsgQ("없는 목록을 기본값에서 생성 할까요?") != DialogResult.Yes) return;
var sql = "insert into Common(gcode,grp,code,svalue,ivalue,fvalue,memo,wuid,wdate)" +
$" select '{gcode}',grp,code,svalue,ivalue,fvalue,memo,'{uid}',getdate() from Common where gcode = 'EET1P' and grp = '99'" +
$" and code not in (select code from Common where gcode = '{gcode}' and grp = '99')";
var cnt = FCOMMON.DBM.ExecuteNonQuery(sql);
FCOMMON.Util.MsgI($"{cnt}건의 목록이 생성 되었습니다");
RefreshCodeList();
}
else
{
string grp = "99";
var title = cmbList.Text.Split(']');
grp = title[0].Substring(1);
if (FCOMMON.Util.MsgQ($"[{cmbList.Text}] 세부항목을 기본값에서 생성 할까요?") != DialogResult.Yes) return;
var sql = "insert into Common(gcode,grp,code,svalue,ivalue,fvalue,memo,wuid,wdate)" +
$" select '{gcode}',grp,code,svalue,ivalue,fvalue,memo,'{uid}',getdate() from Common where gcode = 'EET1P' and grp = '{grp}'" +
$" and code not in (select code from Common where gcode = '{gcode}' and grp = '{grp}')";
var cnt = FCOMMON.DBM.ExecuteNonQuery(sql);
FCOMMON.Util.MsgI($"{cnt}건의 목록이 생성 되었습니다");
RefreshCodeData();
}
}
private void commonDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
private void btAdd_Click(object sender, EventArgs e)
{
}
private void commonDataGridView_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex < 0 || e.ColumnIndex < 0) return;
if (this.defaultgubun.isEmpty()) return;
this.Validate();
this.bs.EndEdit();
if (this.dsMSSQL.Common.GetChanges() != null)
{
Util.MsgE("변경된 내용이 있습니다. 저장 후 다시 시도하세요");
return;
}
var drv = bs.Current as DataRowView;
if (drv == null) return;
var dr = drv.Row as dsMSSQL.CommonRow;
SelectedTitle = dr.memo;
//선택된것으로 한다.
DialogResult = DialogResult.OK;
}
public string SelectedTitle { get; set; } = "";
private void toolStripButton2_Click_1(object sender, EventArgs e)
{
this.SelectedTitle = string.Empty;
this.DialogResult = DialogResult.OK;
}
private void tbFind_TextChanged(object sender, EventArgs e)
{
}
private void tbFind_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
search();
}
void search()
{
var text = tbFind.Text.Trim();
if (text.isEmpty() == false)
{
try
{
var filter = "code like '%{0}%' or memo like '%{0}%'";
bs.Filter = filter.Replace("{0}", text);
tbFind.BackColor = Color.Lime;
}
catch (System.Exception ex)
{
tbFind.BackColor = Color.Tomato;
}
}
else
{
bs.Filter = "";
tbFind.BackColor = Color.White;
}
tbFind.SelectAll();
}
}
}