update 20241107

This commit is contained in:
Stefan Hutter
2024-11-07 22:35:24 +01:00
parent 86be28ec33
commit 23a308ad73
65 changed files with 759 additions and 55 deletions

View File

@@ -5,6 +5,8 @@ using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Runtime.CompilerServices;
using System.Runtime.Remoting.Messaging;
using System.Text;
using System.Threading.Tasks;
@@ -20,13 +22,18 @@ using OnDoc.DocMgmt;
using OnDoc.Helper;
using OnDoc.Klassen;
using OnDoc.UIControls.Administrator;
using Syncfusion.Pdf;
using Syncfusion.Windows.Forms.Tools;
using Syncfusion.Windows.Forms.Tools.Navigation;
using Syncfusion.Windows.Forms.Tools.Renderers;
using Syncfusion.WinForms.Controls;
using Syncfusion.WinForms.DataGrid;
using Syncfusion.WinForms.DataGrid.Interactivity;
using Windows.ApplicationModel.Activation;
using Windows.ApplicationModel.VoiceCommands;
using Windows.Media.Ocr;
using Windows.Perception.Spatial;
using static Model.OnBaseDocUpload;
namespace OnDoc.UIControls
@@ -339,6 +346,7 @@ namespace OnDoc.UIControls
try { sb.unterschriftrechts = Convert.ToInt32(cbboxunterschriftrechts.SelectedValue.ToString()); } catch { sb.unterschriftrechts = 0; }
try { sb.team = Convert.ToInt32(cbboxteam.SelectedValue.ToString()); } catch { sb.team = 0; }
sb.archivdatum = Convert.ToDateTime(DateDokumentDatum.Value);
sb.dokumentdatum= Convert.ToDateTime(DateDokumentDatum.Value);
DB db = new DB(AppParams.connectionstring);
sb.serienbriefnr = db.Save_Serienbrief(sb, AppParams.tempdir);
db.save_sb_vorlage_to_db(sb.filename, "", sb.serienbriefnr);
@@ -554,10 +562,13 @@ namespace OnDoc.UIControls
System.Data.DataTable dt = new System.Data.DataTable();
dt = db.Check_sb_Data(AppParams.CurrentMitarbieter, sb);
string msg = "";
init_progressbar("Partnerliste prüfen", dt.Rows.Count);
bool bldossier = false;
System.Data.DataRow[] dr;
for (int i = 0, loopTo = dt.Rows.Count - 1; i <= loopTo; i++)
{
add_progress();
System.Windows.Forms.Application.DoEvents();
dr = sb.dsempfaenger.Tables[0].Select("Partnernr='" + dt.Rows[i][0].ToString() + "'");
if (dr.Length == 0)
{
@@ -596,6 +607,7 @@ namespace OnDoc.UIControls
if (Convert.ToInt32(dt.Rows[i][4]) == 1) { bldossier = true; };
}
if (sb.dsempfaenger.Tables[0].Columns.Count > 20) { check_zwingende_felder(); }
finish_progress();
refresh_empfaenger(sb.dsempfaenger.Tables[0]);
if (msg != "") { MessageBox.Show(msg, "Serienbrief", MessageBoxButtons.OK, MessageBoxIcon.Error); }
}
@@ -605,31 +617,40 @@ namespace OnDoc.UIControls
for (int i = 20; i < sb.dsempfaenger.Tables[0].Columns.Count; i++)
{
if (Convert.ToInt32(sb.dsempfaenger.Tables[1].Rows[0][sb.dsempfaenger.Tables[0].Columns[i].ColumnName]) == 1)
try
{
System.Data.DataRow[] dr = sb.dsempfaenger.Tables[0].Select("[" + sb.dsempfaenger.Tables[0].Columns[i].ColumnName + "] <>''");
foreach (System.Data.DataRow dr2 in dr)
if (Convert.ToInt32(sb.dsempfaenger.Tables[1].Rows[0][sb.dsempfaenger.Tables[0].Columns[i].ColumnName]) == 1)
{
if (Convert.ToInt32(dr2["Status"]) == 0) { dr2["Status"] = 1; }
}
dr = sb.dsempfaenger.Tables[0].Select("[" + sb.dsempfaenger.Tables[0].Columns[i].ColumnName + "] =''");
foreach (System.Data.DataRow dr2 in dr)
{
if (Convert.ToInt32(dr2["Status"]) == 0)
System.Data.DataRow[] dr = sb.dsempfaenger.Tables[0].Select("[" + sb.dsempfaenger.Tables[0].Columns[i].ColumnName + "] <>''");
foreach (System.Data.DataRow dr2 in dr)
{
dr2["Status"] = -1;
dr2["Fehlercode"] = 2;
if (Convert.ToInt32(dr2["Status"]) == 0) { dr2["Status"] = 1; }
}
dr = sb.dsempfaenger.Tables[0].Select("[" + sb.dsempfaenger.Tables[0].Columns[i].ColumnName + "] =''");
foreach (System.Data.DataRow dr2 in dr)
{
if (Convert.ToInt32(dr2["Status"]) == 0)
{
dr2["Status"] = -1;
dr2["Fehlercode"] = 2;
}
}
}
}
catch { }
}
}
private void ribbonButton2_Click(object sender, EventArgs e)
{
lblProgressTitel.Text = "Partnerliste prüfen";
pnlprogress.Visible = true;
Partnerliste_Pruefen();
treeViewAdv1_AfterSelect(sender, e);
pnlprogress.Visible = false;
}
System.Data.DataTable vorlagendaten = new System.Data.DataTable();
@@ -647,14 +668,19 @@ namespace OnDoc.UIControls
sb.VorlageBase64 = dB.dsdaten.Tables[0].Rows[0][0].ToString();
sb.DocValues = new List<clsDocValue>();
vorlagendaten_aufbereiten();
update_serienbriefdaten(false);
update_zahlen();
}
private void vorlagendaten_aufbereiten()
{
init_progressbar("Dokumente generieren", vorlagendaten.Rows.Count);
for (int i = 0, loopTo = vorlagendaten.Rows.Count - 1; i <= loopTo; i++)
{
add_progress();
System.Windows.Forms.Application.DoEvents();
string sp1 = "";
string[] sp2;
@@ -714,7 +740,7 @@ namespace OnDoc.UIControls
if (vorlagendaten.Rows[i]["Briefanrede1"] != "")
{
s = vorlagendaten.Rows[i]["Briefanrede1"].ToString();
if (s.Substring(0,4)=="Herr")
if (s.Substring(0, 4) == "Herr")
{
s = "r " + s;
}
@@ -728,7 +754,7 @@ namespace OnDoc.UIControls
if (!string.IsNullOrEmpty(s))
s = s + Environment.NewLine;
s1 = vorlagendaten.Rows[i]["Briefanrede2"].ToString();
if (s.Substring(0,4)=="Herr")
if (s.Substring(0, 4) == "Herr")
{
s = s + "Sehr geehrter " + s1;
}
@@ -824,7 +850,7 @@ namespace OnDoc.UIControls
{
Insert_Value(vorlagendaten.Rows[i][i1].ToString(), vorlagendaten.Columns[i1].ColumnName);
}
}catch { }
} catch { }
try
{
if (vorlagendaten.Columns[i1].ColumnName.ToString().Substring(0, 5) == "I_09_")
@@ -844,18 +870,29 @@ namespace OnDoc.UIControls
// IntWert = RenCol(IntWert)
Insert_Value(vorlagendaten.Rows[i][IntWert].ToString(), Intbookmark);
}
}catch { }
} catch { }
}
string pdfdoc = dget.Convert_Word_To_PDF(dg.generate_serienbrief(sb.VorlageBase64, sb));
Helper.FileHelper fh = new FileHelper();
DB db = new DB(AppParams.connectionstring);
string filename = "SB_" + sb.serienbriefnr.ToString() + vorlagendaten.Rows[i]["intEintragnr"].ToString() + ".pdf";
fh.SaveBase64ToFile(pdfdoc,AppParams.tempdir + filename);
db.save_serienbrief_datei(sb.serienbriefnr, Convert.ToInt32(vorlagendaten.Rows[i]["IntEintragnr"]), AppParams.tempdir+filename);
//db = null;
fh.SaveBase64ToFile(pdfdoc, AppParams.tempdir + filename);
db.save_serienbrief_datei(sb.serienbriefnr, Convert.ToInt32(vorlagendaten.Rows[i]["IntEintragnr"]), AppParams.tempdir + filename);
System.IO.File.Delete(AppParams.tempdir + filename);
db = null;
System.Data.DataRow dr = sb.dsempfaenger.Tables[0].Select("intEintragnr = '" + vorlagendaten.Rows[i]["IntEintragnr"].ToString()+"'").FirstOrDefault();
if (dr != null)
{
dr["STATUS"] = "1";
}
sb.DocValues.Clear();
}
finish_progress();
}
private void insert_PPZeile(string position, string typ)
@@ -938,12 +975,12 @@ namespace OnDoc.UIControls
}
clsDocValue dv = new clsDocValue();
dv.TMBeginn=beginntextmarke; ;
dv.TMBeginn = beginntextmarke; ;
dv.TMEnd = endetextmarke;
dv.Value = feldwert;
dv.FieldName=feldname;
dv.FieldName = feldname;
sb.DocValues.Add(dv);
}
private string Insert_DT_Column(ref System.Data.DataTable dt, string colname)
@@ -1075,12 +1112,237 @@ namespace OnDoc.UIControls
{
if (docPreview1.Visible == true)
{
var selectedItem = e.DataRow;
var dataRow = (e.DataRow.RowData as DataRowView).Row;
string inteintragnr = "0";
inteintragnr = dataRow["inteintragnr"].ToString();
docPreview1.Show_Serienbrief_Dokument(sb.serienbriefnr, Convert.ToInt32(inteintragnr));
try
{
var selectedItem = e.DataRow;
var dataRow = (e.DataRow.RowData as DataRowView).Row;
string inteintragnr = "0";
inteintragnr = dataRow["inteintragnr"].ToString();
docPreview1.Show_Serienbrief_Dokument(sb.serienbriefnr, Convert.ToInt32(inteintragnr));
}
catch { }
}
}
private void init_progressbar(string title, int maxvalue)
{
progressBarAdv1.Value = 0;
progressBarAdv1.Maximum = maxvalue;
progressBarAdv1.Minimum = 0;
lblProgressTitel.Text = title;
pnlprogress.Visible = true;
}
private void add_progress()
{
progressBarAdv1.Value = progressBarAdv1.Value + 1;
System.Windows.Forms.Application.DoEvents();
}
private void finish_progress()
{
pnlprogress.Visible = false;
}
private void merge()
{
DataView dv = new DataView(sb.dsempfaenger.Tables[0]);
dv.RowFilter = "Status = 1";
dv.Sort = "Partnernr";
PdfDocument finalDoc = new PdfDocument();
DB db = new DB(AppParams.connectionstring);
int stapelgroesse = 100;
int stapel = 1;
int i = 0;
int anzahl_stapel = (dv.Count / 100) + 1;
Stream[] streams = null;
if (dv.Count > stapelgroesse) { streams = new Stream[stapelgroesse]; } else streams = new Stream[dv.Count];
init_progressbar("Druckstapel generieren", dv.Count);
foreach (DataRowView rowView in dv)
{
add_progress();
System.Data.DataRow dr = rowView.Row;
db.Get_Tabledata("Select dbo.BinaryToBase64(dokument) from edex_sb_serienbrief_dokument where serienbriefnr=" + sb.serienbriefnr.ToString() + " and inteintragnr=" + dr["IntEintragNr"].ToString(), false, true);
var stream = new MemoryStream(Convert.FromBase64String(db.dsdaten.Tables[0].Rows[0][0].ToString()));
if (stream.Length > 0)
{
streams[i] = stream;
i++;
if (i >= stapelgroesse)
{
save_stapel(stapel, ref streams);
i = 0;
streams = new Stream[dv.Count-(stapel*stapelgroesse)];
stapel++;
}
}
}
save_stapel(stapel, ref streams);
//PdfDocumentBase.Merge(finalDoc, streams);
//FileStream fs = new FileStream(AppParams.tempdir+sb.serienbriefnr.ToString()+".pdf",FileMode.Create);
//finalDoc.Save(fs);
//finalDoc.Close();
//finalDoc.Dispose();
//fs.Close();
//fs.Dispose();
//for (i = 0; i < streams.Length; i++)
//{
// streams[i].Dispose();
//}
streams = null;
dv = null;
finish_progress();
}
private void save_stapel(int stapelnr, ref Stream[] streams)
{
try
{
PdfDocument finalDoc = new PdfDocument();
PdfDocumentBase.Merge(finalDoc, streams);
string filename = AppParams.tempdir + DateTime.Now.ToString("yyyyhhmmHHmmss") + "_" + stapelnr.ToString() + "_" + sb.serienbriefnr.ToString() + ".pdf";
FileStream fs = new FileStream(filename, FileMode.Create);
finalDoc.Save(fs);
finalDoc.Close();
finalDoc.Dispose();
fs.Close();
fs.Dispose();
TreeNodeAdv tn = new TreeNodeAdv();
tn.Text = "Druckstapel " + stapelnr.ToString()+" ("+streams.Length.ToString()+")";
tn.Tag = stapelnr.ToString();
tn.TagObject = filename;
treeviewDruckstapel.Nodes.Add(tn);
for (int i = 0; i < streams.Length; i++)
{
streams[i].Dispose();
}
streams = null;
}
catch { }
}
private void ribbonButtonDruckstapel_Click(object sender, EventArgs e)
{
treeviewDruckstapel.Nodes.Clear();
merge();
try
{
treeviewDruckstapel.SelectedNode = treeviewDruckstapel.Nodes[0];
}
catch { }
grpDruckstapel.Visible = true;
}
private void button1_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start(treeviewDruckstapel.SelectedNode.TagObject.ToString());
}
private void button2_Click(object sender, EventArgs e)
{
grpDruckstapel.Visible = false;
}
private void RibbonButtonArchivierenUndAbschlessen_CanvasChanged(object sender, EventArgs e)
{
}
private void RibbonButtonArchivierenUndAbschlessen_Click(object sender, EventArgs e)
{
DB db = new DB(AppParams.connectionstring);
DataView dv = new DataView(sb.dsempfaenger.Tables[0]);
dv.RowFilter = "Status = 1";
dv.Sort = "Partnernr";
foreach (DataRowView rowView in dv)
{
OnBaseDocUpload.OnBaseDokument onbasedoc = new OnBaseDocUpload.OnBaseDokument();
System.Data.DataRow dr = rowView.Row;
db.clear_parameter();
db.add_parameter("@serienbriefnr", sb.serienbriefnr.ToString());
db.add_parameter("@intEintragnr", dr["intEintragnr"].ToString());
db.add_parameter("@partnernr", dr["Partnernr"].ToString());
db.Get_Tabledata("sp_get_onbase_parameters_sb", true, false);
if (db.dsdaten.Tables[0].Rows[0]["BpNummer"].ToString() == "")
{
onbasedoc.personNummer = db.dsdaten.Tables[0].Rows[0]["PersonNummer"].ToString();
onbasedoc.bpNummer = "";
}
else
{
onbasedoc.bpNummer = db.dsdaten.Tables[0].Rows[0]["BpNummer"].ToString();
onbasedoc.personNummer = "";
}
onbasedoc.dokumentDatum = db.dsdaten.Tables[0].Rows[0]["DokumentDatum"].ToString();
onbasedoc.dokumentTyp = db.dsdaten.Tables[0].Rows[0]["dokumenttyp"].ToString();
onbasedoc.dateiTyp= db.dsdaten.Tables[0].Rows[0]["dateityp"].ToString();
var Attribute = new List<Model.OnBaseDocUpload.attribute>();
foreach (System.Data.DataRow rw in db.dsdaten.Tables[1].Rows)
{
var p = new OnBaseDocUpload.attribute()
{
fieldname = rw["fieldname"].ToString(),
fieldvalue = rw["fieldvalue"].ToString()
};
Attribute.Add(p);
}
onbasedoc.attributes = Attribute;
db.Get_Tabledata("Select dbo.BinaryToBase64(dokument) from edex_sb_serienbrief_dokument where serienbriefnr=" + sb.serienbriefnr.ToString() + " and inteintragnr=" + dr["IntEintragNr"].ToString(), false, true);
onbasedoc.dokumentDatei = db.dsdaten.Tables[0].Rows[0][0].ToString();
string URL = "";
string response = "";
string jsonstring = Newtonsoft.Json.JsonConvert.SerializeObject(onbasedoc);
URL = AppParams.RESTURI + "api/ArchivSBDoc";
URL = URL + "?sbnr=" + sb.serienbriefnr.ToString();
URL = URL + "&intid=" + dr["inteintragnr"].ToString();
URL = URL + "&partnernr=" + dr["partnernr"].ToString();
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(URL);
httpWebRequest.ContentType = "text/json";
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = jsonstring;
streamWriter.Write(json);
streamWriter.Flush();
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
if (httpResponse.StatusCode == HttpStatusCode.OK)
{
dr["STATUS"] = 2; ;
}
}
//using (HttpWebResponse response = webRequest.GetResponse() as HttpWebResponse)
//{
// if (response.StatusCode == HttpStatusCode.OK)
// {
// StreamReader reader = new StreamReader(response.GetResponseStream());
// string responseContent = reader.ReadToEnd();
// dok = Newtonsoft.Json.JsonConvert.DeserializeObject<clsdok>(responseContent);
// }
// else
// {
// Logging.Logging.Error(URL + ": " + response.StatusCode.ToString() + " / " + response.StatusDescription, "Clinet - DokList GetDocument", "");
// }
//}
}
sb.dsempfaenger.AcceptChanges();
update_zahlen();
}
}
}