年度变更建库软件5.0版本
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

234 lines
10 KiB

6 months ago
using AttachmentDemo.Helper;
using AttachmentDemo.Model;
using KAttachmentDemo.Helper;
using KGIS.Framework.DBOperator;
using Refit;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SQLite;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace AttachmentDemo
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
//string baseUrl = @"http://dp.kingoit.com:90/";// @"https://localhost:44382/";
string baseUrl = ConfigurationManager.AppSettings["BaseUrl"].ToString();
List<Certificate> oldCertificateInfo = new List<Certificate>();
List<AttachmentInfo> oldAttachmentInfo = new List<AttachmentInfo>();
DataView DtFjxx = new DataView();
DataView DtJmxx = new DataView();
public MainWindow()
{
InitializeComponent();
dataGridFJ.ItemsSource = DtFjxx;
dataGridJMXX.ItemsSource = DtJmxx;
}
private void btChange_Click(object sender, RoutedEventArgs e)
{
stateLabel.Content = "";
GetJMXXMessage(out oldCertificateInfo);
GetFJMessage(out oldAttachmentInfo);
Change();
}
private async void Change()
{
try
{
await Login();
var taskwebpi = RestService.For<IWebAPI>(AuthHttpClient.Instance);
string path = string.Format(tbFilePath.Text);
KGIS.Framework.DBOperator.IRDBHelper rdbHelper = RDBFactory.CreateDbHelper("Data Source=" + path, DatabaseType.SQLite);
//附件信息表更新
var aulistFj = await taskwebpi.GetAttachmentInfo(oldAttachmentInfo);
if (oldAttachmentInfo != null&& oldAttachmentInfo.Count > 0)
{
if (aulistFj.Code == 200)
{
//说明 1、如果返回数据中的某一条 ZSDM = "" 并且JYM = "" 说明该条数据 临时校验失败
//说明 2、如果返回数据中的某一条 ZSDM = "" 并且JYM = "提交原始校验码" 说明该条数据 正式签名失败
for (int i = 0; i < aulistFj.Data.Count; i++)
{
if (aulistFj.Data[i].ZSDM == "" && (aulistFj.Data[i].JYM == "" || aulistFj.Data[i].JYM == "提交原始校验码"))
{
DtFjxx.Table.Rows[i]["ZT"] = "失败";
continue;
}
else if (aulistFj.Data[i].ZSDM == oldAttachmentInfo[i].ZSDM && aulistFj.Data[i].JYM == oldAttachmentInfo[i].JYM)
{
DtFjxx.Table.Rows[i]["ZT"] = "转换值与原始值相同";
continue;
}
string sql = string.Format("update FJ set JYM='{0}', ZSDM='{1}' where BSM = '{2}' ", aulistFj.Data[i].JYM, aulistFj.Data[i].ZSDM, aulistFj.Data[i].BSM);
rdbHelper.ExecuteSQL(sql);
DtFjxx.Table.Rows[i]["JYM"] = aulistFj.Data[i].JYM;
DtFjxx.Table.Rows[i]["ZSDM"] = aulistFj.Data[i].ZSDM;
DtFjxx.Table.Rows[i]["ZT"] = "成功";
}
}
}
//加密信息表更新
for (int i = 0; i < DtJmxx.Table.Rows.Count; i++)
{
var aulistJmxx = await taskwebpi.GetCertificateInfo(oldCertificateInfo[i].ZSDM);
if (aulistJmxx.Code == 200)
{
if (aulistJmxx.Data.ZSDM == "" || aulistJmxx.Data.ZSDM == null)
{
DtJmxx.Table.Rows[i]["ZT"] = "失败";
continue;
}
else if (aulistJmxx.Data.ZSDM == oldCertificateInfo[i].ZSDM && aulistJmxx.Data.SZZS == oldCertificateInfo[i].SZZS
&& aulistJmxx.Data.ZSBFJGDM == oldCertificateInfo[i].ZSBFJGDM && aulistJmxx.Data.ZSBFJGGY == oldCertificateInfo[i].ZSBFJGGY
&& aulistJmxx.Data.QKLFWDZ == oldCertificateInfo[i].QKLFWDZ)
{
DtJmxx.Table.Rows[i]["ZT"] = "转换值与原始值相同";
continue;
}
string sql = string.Format("update JMXX set ZSDM='{0}', SZZS='{1}', ZSBFJGDM='{2}', ZSBFJGGY='{3}', QKLFWDZ='{4}' where ZSDM = '{5}' ",
aulistJmxx.Data.ZSDM, aulistJmxx.Data.SZZS, aulistJmxx.Data.ZSBFJGDM, aulistJmxx.Data.ZSBFJGGY, aulistJmxx.Data.QKLFWDZ, oldCertificateInfo[i].ZSDM);
rdbHelper.ExecuteSQL(sql);
DtJmxx.Table.Rows[i]["ZSDM"] = aulistJmxx.Data.ZSDM;
DtJmxx.Table.Rows[i]["SZZS"] = aulistJmxx.Data.SZZS;
DtJmxx.Table.Rows[i]["ZSBFJGDM"] = aulistJmxx.Data.ZSBFJGDM;
DtJmxx.Table.Rows[i]["ZSBFJGGY"] = aulistJmxx.Data.ZSBFJGGY;
DtJmxx.Table.Rows[i]["QKLFWDZ"] = aulistJmxx.Data.QKLFWDZ;
DtJmxx.Table.Rows[i]["ZT"] = "成功";
}
else
DtJmxx.Table.Rows[i]["ZT"] = "失败";
}
rdbHelper.DisConnect();
stateLabel.Content = "状态:执行完成";
}
catch (Exception e)
{
stateLabel.Content = "状态:执行失败!" + e.Message;
return;
}
}
private void btSelectFile_Click(object sender, RoutedEventArgs e)
{
IRDBHelper dbHelper = null;
try
{
System.Windows.Forms.OpenFileDialog openFileDialog = new System.Windows.Forms.OpenFileDialog();
if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)//注意,此处一定要手动引入System.Window.Forms空间,否则你如果使用默认的DialogResult会发现没有OK属性
{
tbFilePath.Text = openFileDialog.FileName;
dbHelper = RDBFactory.CreateDbHelper("Data Source=" + openFileDialog.FileName, DatabaseType.SQLite);
DtFjxx.Table = dbHelper.ExecuteDatatable("FJXX", "select * from FJ", true);
DtFjxx.Table.Columns.Add("ZT");
DtJmxx.Table = dbHelper.ExecuteDatatable("JMXX", "select * from JMXX", true);
DtJmxx.Table.Columns.Add("ZT");
dbHelper.DisConnect();
}
}
catch (Exception ex)
{
}
}
private void GetFJMessage(out List<AttachmentInfo> oldAttachmentInfo)
{
oldAttachmentInfo = new List<AttachmentInfo>();
try
{
foreach (System.Data.DataRow dr in DtFjxx.Table.Rows)
{
var attachmentInfo = new AttachmentInfo()
{
BSM = dr["BSM"].ToString().Trim(),
FJHXZ = dr["FJHXZ"].ToString().Trim(),
FJMC = dr["FJMC"].ToString().Trim(),
Latitude = dr["Latitude"].ToString().Trim(),
Longitude = dr["Longitude"].ToString().Trim(),
PSFYJ = dr["PSFYJ"].ToString().Trim(),
PSHGJ = dr["PSHGJ"].ToString().Trim(),
PSJD = dr["PSJD"].ToString().Trim(),
PSRY = dr["PSRY"].ToString().Trim(),
PSSJ = dr["PSSJ"].ToString().Trim(),
TBBSM = dr["TBBSM"].ToString().Trim(),
TBLX = dr["TBLX"].ToString().Trim(),
XZQDM = dr["XZQDM"].ToString().Trim(),
ZSDM = dr["ZSDM"].ToString().Trim(),
JYM = dr["JYM"].ToString().Trim()
};
oldAttachmentInfo.Add(attachmentInfo);
}
}
catch (Exception ex)
{
return;
}
}
private void GetJMXXMessage(out List<Certificate> oldCertificateInfo)
{
oldCertificateInfo = new List<Certificate>();
try
{
foreach (System.Data.DataRow dr in DtJmxx.Table.Rows)
{
var certificateInfo = new Certificate()
{
ZSDM = dr["ZSDM"].ToString().Trim(),
SZZS = dr["SZZS"].ToString().Trim(),
ZSBFJGDM = dr["ZSBFJGDM"].ToString().Trim(),
ZSBFJGGY = dr["ZSBFJGGY"].ToString().Trim(),
QKLFWDZ = dr["QKLFWDZ"].ToString().Trim()
};
oldCertificateInfo.Add(certificateInfo);
}
}
catch (Exception ex)
{
return;
}
}
private async Task Login()
{
//验证用户名密码
var gitHubApi = RestService.For<IWebAPI>(baseUrl);
var userdata = await gitHubApi.Login(new UserContext()
{
LoginName = "licAdmin",
Password = Md5Helper.Md5("Kingo_It#7739@93")//这个密码是固定的 最后由其他字符串解密后得到 //Base64Helper.EncodeBase64("Kingo_It#7739@93")//采用MD5加密
});
if (userdata.Code == 200)
{
AuthHttpClient.SetHttpClient(baseUrl, userdata.Data.TokenStr);//data 为token
}
}
}
}