using CYQ.Data;
using FastReport;
using System;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Net;
using System.Reflection;
using System.Text;
using System.Threading;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel;
namespace dccdc.Selfhelp
{
public partial class frm_main3 : Form
{
//是否刷卡获取信息 1:刷卡;0:手动输入
int ifInputByCard = 1;
///
/// 获取体检编号 enableReprint==0表示不允许重打;==1表示允许重打
///
string url_getPhysicalNumByIDCard = extend.URL + "zzj/getPhysicalNumByIDCard";
public frm_main3()
{
InitializeComponent();
}
public static FastReport.EnvironmentSettings eSet = new EnvironmentSettings();
DateTime n = DateTime.Now;
private void timer1_Tick(object sender, EventArgs e)
{
//每2秒清理下 鼠标点击计数
click_count_left = 0;
click_count_right = 0;
log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).Info(DateTime.Now.ToString() + "开始查询有无身份证!");
n = DateTime.Now;
timer1.Enabled = false;
Status ss = new Selfhelp.Status("正在查询您的信息请稍后……", false);
ss.Owner = this;
ss.TopLevel = true;
try
{
do
{
IDCardInfo info = new IDCardInfo();
string errmsg = "";
int iPort = 1001;
int iIfOpen = 1;
byte[] byCHMsg = new byte[256 + 1]; //个人基本信息
uint uiCHMsgSize = 0; //个人基本信息字节数
byte[] byPHMsg = new byte[1024 + 1]; //照片信息
uint uiPHMsgSize = 0; //照片信息字节数
byte[] byFPMsg = new byte[1024 + 1]; //指纹信息
uint uiFPMsgSize = 0; //指纹信息字节数
int iIsSaveToBmp = 0;
byte[] byBgrBuffer = new byte[38556]; //解码后图片BGR编码值
byte[] byRgbBuffer = new byte[38808]; //解码后图片RGB编码值
byte[] byBmpBuffer = new byte[38862]; //解码后图片RGB编码值
if (ifInputByCard == 0)
{
if (this.textBox1.Text.Trim() == "")
return;
info.IDCardNo = this.textBox1.Text.Trim();
string zpf_temp = Application.StartupPath + "\\zp_temp.bmp";
FileStream fs = new FileStream(zpf_temp, FileMode.Open);
byte[] bs = new byte[fs.Length];
fs.Read(bs, 0, bs.Length);
fs.Close();
info.Photo = System.Drawing.Image.FromStream(new MemoryStream(bs));
//==1表示允许重打
url_getPhysicalNumByIDCard = extend.URL + "zzj/getPhysicalNumByIDCard?enableReprint=1";
this.ifInputByCard = 1;
this.textBox1.Text = "";
Application.DoEvents();
}
else
{
//==0表示不允许重打
url_getPhysicalNumByIDCard = extend.URL + "zzj/getPhysicalNumByIDCard?enableReprint=0";
#region 读取身份证信息
// uint uiDevBaud = 0;``
//uint uiCurBaud = 0;
StringBuilder strSAMID = new StringBuilder(64 + 1);
#region 判断读卡设备连接是否正常
//获得设备SAM模块ID。
//PS :SAM模块ID为二代证设备唯一标志ID;
//PS2:此函通常用来数来区分设备或判断设备是否连接正常;若只读卡信息的话无需添加此函数。
int iResult = extend.SDT_GetSAMIDToStr(1001, strSAMID, 1);
if (0x90 != iResult)
{
errmsg = String.Format("获取SAMID号失败,错误代码:{0:D}", iResult);
log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).Info(DateTime.Now.ToString() + errmsg);
//MessageBox.Show(strMsg, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
Status s = new Status(errmsg);
//测试用,先注释掉下面两行 zyk20231122
//s.ShowDialog();
break;
}
#endregion
byte[] byManaID = new byte[8];
#region 寻卡
//寻卡
iResult = extend.SDT_StartFindIDCard(iPort, byManaID, iIfOpen);
if (0x9F != iResult)
{
errmsg = String.Format("寻卡失败,错误代码:{0:D}", iResult);
//Status s = new Status(errmsg);
//s.ShowDialog();
log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).Info(DateTime.Now.ToString() + "没有找到身份证!" + errmsg);
break;
}
#endregion
#region 选卡
//选卡
byManaID.Initialize();
iResult = extend.SDT_SelectIDCard(iPort, byManaID, iIfOpen);
if (0x90 != iResult)
{
errmsg = String.Format("选卡失败,错误代码:{0:D}", iResult);
log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).Info(DateTime.Now.ToString() + errmsg);
//MessageBox.Show(strMsg, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
Status s = new Status(errmsg);
s.ShowDialog();
break;
}
#endregion
#region 读卡
//读取身份证个人基本信息、照片信息和指纹信息;
//PS:指纹信息需要专门的指纹比对设备,这里只获取加密的原始数据。
iResult = extend.SDT_ReadBaseFPMsg(iPort, byCHMsg, ref uiCHMsgSize, byPHMsg, ref uiPHMsgSize, byFPMsg, ref uiFPMsgSize, iIfOpen);
if (0x21 == iResult)//0501模块(一种老模块)无法读取指纹信息,会返回0x21错误,这里进行兼容处理;这种模块早就不用了,实际可以不做处理。
{
iResult = extend.SDT_ReadBaseMsg(iPort, byCHMsg, ref uiCHMsgSize, byPHMsg, ref uiPHMsgSize, iIfOpen);//采用只读卡信息和照片,不读指纹信息的接口
}
if (0x90 != iResult)
{
errmsg = String.Format("读取身份信息失败,错误代码:{0:D}", iResult);
log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).Info(DateTime.Now.ToString() + errmsg);
Status s = new Status(errmsg);
s.ShowDialog();
break;
}
#endregion
#region 身份证照片解码
//解码照片数据,获得BGR格式数据
//iIsSaveToBmp = 1; //调用解码库unpack函数后,由接口自动生成名为zp.bmp的图片文件,该BMP文件可直接打开,不用B、R转换
iIsSaveToBmp = 0; //不自动生成zp.bmp图片
//PS :解码库需要依赖授权文件(license.dat);要确保“当前工作目录下”license.dat文件存在且正确,否则会返回-22和-12的错误
//PS2 :若设置iIsSaveToBmp = 1,即由接口自动生成zp.bmp文件,请确认“当前工作目录”具有写权限,否侧接口会崩溃(WIN7以上系统需注意此项)
iResult = extend.unpack(byPHMsg, byBgrBuffer, iIsSaveToBmp);
if (1 != iResult)
{
errmsg = String.Format("照片解码失败,错误代码:{0:D}", iResult);
log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).Info(DateTime.Now.ToString() + errmsg);
Status s = new Status(errmsg);
s.ShowDialog();
break;
}
#endregion
#region 身份证照片 转换格式为bmp
//拼接BMP图片格式头,14字节
byte[] byBmpHead = new byte[14] { 0x42, 0x4D, 0xCE, 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00 };
Array.Copy(byBmpHead, 0, byBmpBuffer, 0, 14);
//拼接BMP图像信息,40字节
byte[] byBmpInfo = new byte[40]{ 0x28,0x00,0x00,0x00,//结构所占用40字节
0x66,0x00,0x00,0x00,//位图的宽度102像素
0x7E,0x00,0x00,0x00,//位图的高度126像素
0x01,0x00, //目标设备的级别必须为1
0x18,0x00, //每个像素所需的位数24
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00//......其他信息省略为0
};
Array.Copy(byBmpInfo, 0, byBmpBuffer, 14, 40);
//将解码后的BGR格式数据进行B、R互换
iResult = GFunction.bgr2rgb(byBgrBuffer, byBgrBuffer.Length, byRgbBuffer, byRgbBuffer.Length, 102, 126);
if (iResult <= 0)
{
//MessageBox.Show("照片数据B、R互换失败.", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
errmsg = String.Format("照片数据B、R互换失败.", iResult);
log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).Info(DateTime.Now.ToString() + errmsg);
Status s = new Status(errmsg);
s.ShowDialog();
break;
}
Array.Copy(byRgbBuffer, 0, byBmpBuffer, 54, iResult);
string zpf = Application.StartupPath + "\\zp1.bmp";
//写入文件
int iBmpSize = 54 + iResult;
if (!GFunction.tool_WriteOneFile(zpf, byBmpBuffer, iBmpSize))
{
// MessageBox.Show("保存照片数据失败.", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
errmsg = String.Format("保存照片数据失败.", iResult);
log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).Info(DateTime.Now.ToString() + errmsg);
Status s = new Status(errmsg);
s.ShowDialog();
break;
}
#endregion
#region 解析出个人基本信息
//截取个人信息数据。信息采用UNICODE存储,具体格式参可见《二代证机读信息说明.doc》
byte[] byName = new byte[30];
byte[] bySex = new byte[2];
byte[] byRace = new byte[4];
byte[] byBirth = new byte[16];
byte[] byAddress = new byte[70];
byte[] byID = new byte[36];
byte[] byCompany = new byte[30];
byte[] byBeginDate = new byte[16];
byte[] byEndDate = new byte[16];
Array.Copy(byCHMsg, 0, byName, 0, 30);
Array.Copy(byCHMsg, 30, bySex, 0, 2);
Array.Copy(byCHMsg, 32, byRace, 0, 4);
Array.Copy(byCHMsg, 36, byBirth, 0, 16);
Array.Copy(byCHMsg, 52, byAddress, 0, 70);
Array.Copy(byCHMsg, 122, byID, 0, 36);
Array.Copy(byCHMsg, 158, byCompany, 0, 30);
Array.Copy(byCHMsg, 188, byBeginDate, 0, 16);
Array.Copy(byCHMsg, 204, byEndDate, 0, 16);
//显示结果
/* strIDBase = "读卡成功.\r\n\r\n";
strIDBase += "姓名: " + Encoding.Unicode.GetString(byName).Trim() + "\r\n\r\n";
strIDBase += "性别: " + Encoding.Unicode.GetString(bySex).Trim() + "\r\n\r\n";
strIDBase += "民族: " + Encoding.Unicode.GetString(byRace).Trim() + "\r\n\r\n";
strIDBase += "出生日期: " + Encoding.Unicode.GetString(byBirth).Trim() + "\r\n\r\n";
strIDBase += "居住地址: " + Encoding.Unicode.GetString(byAddress).Trim() + "\r\n\r\n";
strIDBase += "公民身份证号: " + Encoding.Unicode.GetString(byID).Trim() + "\r\n\r\n";
strIDBase += "签发机关: " + Encoding.Unicode.GetString(byCompany).Trim() + "\r\n\r\n";
strIDBase += "有效起始日期: " + Encoding.Unicode.GetString(byBeginDate).Trim() + "\r\n\r\n";
strIDBase += "有效截止日期: " + Encoding.Unicode.GetString(byEndDate).Trim() + "\r\n\r\n";*/
info.Name = Encoding.Unicode.GetString(byName).Trim().Replace("\0", "");
//info.Nation = Encoding.Default.GetString(personInfo.nation).Trim().Replace("\0", "");
info.IDCardNo = Encoding.Unicode.GetString(byID).Trim().Replace("\0", "");
//info.GrantDept = CardMsg.GrantDept;
string csrq = Encoding.Unicode.GetString(byBirth).Trim().Replace("\0", "");
info.Born = csrq.Substring(0, 4) + "-" + csrq.Substring(4, 2) + "-" + csrq.Substring(6, 2).Replace("\0", "");
info.Address = Encoding.Unicode.GetString(byAddress).Trim().Replace("\0", "");
//info.UserLifeEnd = CardMsg.UserLifeEnd;
//info.UserLifeBegin = CardMsg.UserLifeBegin;
info.Sex = Encoding.Unicode.GetString(bySex).Trim().Replace("\0", "");
//info.reserved = CardMsg.reserved;
info.PhotoFileName = zpf;
info.FPInfo = zpf;
info.FPInfo = info.FPInfo.Replace("\0", "");
if (!string.IsNullOrEmpty(zpf) && System.IO.File.Exists(zpf))
{
FileStream fs = new FileStream(zpf, FileMode.Open);
byte[] bs = new byte[fs.Length];
fs.Read(bs, 0, bs.Length);
fs.Close();
info.Photo = System.Drawing.Image.FromStream(new MemoryStream(bs));
File.Delete(zpf);
}
#endregion
ss.Show();
Application.DoEvents();
log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).Info(DateTime.Now.ToString() + "读取身份证成功!");
log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).Info(DateTime.Now.ToString() + Newtonsoft.Json.JsonConvert.SerializeObject(info));
#endregion
}
//测试
//info.IDCardNo = "370104190009080987";
#region 健康证打印
//查询有没有需要打印的健康证
WebClient wc = new WebClient();
wc.Encoding = Encoding.UTF8;
//获取 从业类型体检 最近一年的 登记记录(professionalExam_register)
string jsonData = wc.DownloadString(extend.URL + "zzj/getBGXX2?id=" + info.IDCardNo);
try
{
List list = Newtonsoft.Json.JsonConvert.DeserializeObject>(jsonData);
if (list != null)
{
List hgs = new List();
foreach (var h in list)
{
if (h.result_status == "合格")
hgs.Add(h);
}
if (hgs.Count == 0)
{
ss.update("没有您的体检证明,请咨询工作人员!");
Application.DoEvents();
Thread.Sleep(2);
}
else
{
List ydys = new List();
List wdys = new List();
foreach (var dy in hgs)
{
if (dy.procedure_status == "已打印健康证")
{
ydys.Add(dy);
}
else
{
wdys.Add(dy);
}
}
if (wdys.Count == 0)
{
ss.update("您的体检证明已经打印不能重复打印!");
Application.DoEvents();
Thread.Sleep(2000);
}
else
{
ss.update("正在打印您的体检证明请稍后……!");
Application.DoEvents();
Thread.Sleep(1000);
foreach (var w in wdys)
{
var m = w;
if (m.physical_category == "食品从业")
{
try
{
// m.id 是登记表 id
//获取健康证明 数据 datatale
jsonData = wc.DownloadString(extend.URL + "professional/getjkzm_sp?zzj=1&ids=" + m.id);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
DataTable dt = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonData);
dt.Columns.Add("photo", typeof(byte[]));
dt.Columns.Add("yzewm", typeof(byte[]));
foreach (DataRow dr in dt.Rows)
{
dr["photo"] = Convert.FromBase64String(dr["img"].ToString());
dr["yzewm"] = Convert.FromBase64String(dr["ewm"].ToString());
}
FastReport.Report re = new FastReport.Report();
//自助机:食品行业体检证明
re.Load(Application.StartupPath + "\\report\\zzjtjzm_sp.frx");
re.RegisterData(dt, "table");
re.PrintSettings.ShowDialog = false;
try
{
FastReport.Export.Image.ImageExport ie = new FastReport.Export.Image.ImageExport();
ie.ImageFormat = FastReport.Export.Image.ImageExportFormat.Bmp;
re.Prepare();
string bago = Application.StartupPath + "\\tjzmdc\\";
if (!Directory.Exists(bago))
{
Directory.CreateDirectory(bago);
}
bago += m.id + ".bmp";
if (File.Exists(bago))
File.Delete(bago);
//导出为bmp图片
re.Export(ie, bago);
re.Print();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
else if (m.physical_category == "公共场所")
{
try
{
//自助机:公共场所 体检证明
jsonData = wc.DownloadString(extend.URL + "professional/getjkzm_gg?zzj=1&ids=" + m.id);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
DataTable dt = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonData);
dt.Columns.Add("photo", typeof(byte[]));
dt.Columns.Add("yzewm", typeof(byte[]));
foreach (DataRow dr in dt.Rows)
{
dr["photo"] = Convert.FromBase64String(dr["img"].ToString());
dr["yzewm"] = Convert.FromBase64String(dr["ewm"].ToString());
}
FastReport.Report re = new FastReport.Report();
re.Load(Application.StartupPath + "\\report\\zzjtjzm_gg.frx");
//re.Load(_reportPath);
re.RegisterData(dt, "table");
re.PrintSettings.ShowDialog = false;
try
{
FastReport.Export.Image.ImageExport ie = new FastReport.Export.Image.ImageExport();
ie.ImageFormat = FastReport.Export.Image.ImageExportFormat.Bmp;
re.Prepare();
string bago = Application.StartupPath + "\\tjzmdc\\";
if (!Directory.Exists(bago))
{
Directory.CreateDirectory(bago);
}
bago += m.id + ".bmp";
if (File.Exists(bago))
File.Delete(bago);
re.Export(ie, bago);
re.Print();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
else if (m.physical_category == "药品从业")
{
try
{
//自助机:药品行业体检证明
jsonData = wc.DownloadString(extend.URL + "professional/getjkzm_yp?zzj=1&ids=" + m.id);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
DataTable dt = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonData);
dt.Columns.Add("photo", typeof(byte[]));
dt.Columns.Add("yzewm", typeof(byte[]));
foreach (DataRow dr in dt.Rows)
{
dr["photo"] = Convert.FromBase64String(dr["img"].ToString());
dr["yzewm"] = Convert.FromBase64String(dr["ewm"].ToString());
}
FastReport.Report re = new FastReport.Report();
//re.Load(_reportPath);
re.Load(Application.StartupPath + "\\report\\zzjtjzm_yp.frx");
re.RegisterData(dt, "table");
re.PrintSettings.ShowDialog = false;
try
{
FastReport.Export.Image.ImageExport ie = new FastReport.Export.Image.ImageExport();
ie.ImageFormat = FastReport.Export.Image.ImageExportFormat.Bmp;
re.Prepare();
string bago = Application.StartupPath + "\\tjzmdc\\";
if (!Directory.Exists(bago))
{
Directory.CreateDirectory(bago);
}
bago += m.id + ".bmp";
if (File.Exists(bago))
File.Delete(bago);
re.Export(ie, bago);
re.Print();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
ss.update("正在打印您的体检证明,请稍后(10)!");
Application.DoEvents();
Thread.Sleep(1000);
ss.update("正在打印您的体检证明,请稍后(9)!");
Application.DoEvents();
Thread.Sleep(1000);
ss.update("正在打印您的体检证明,请稍后(8)!");
Application.DoEvents();
Thread.Sleep(1000);
ss.update("正在打印您的体检证明,请稍后(7)!");
Application.DoEvents();
Thread.Sleep(1000);
ss.update("正在打印您的体检证明,请稍后(6)!");
Application.DoEvents();
Thread.Sleep(1000);
ss.update("正在打印您的体检证明,请稍后(5)!");
Application.DoEvents();
Thread.Sleep(1000);
ss.update("正在打印您的体检证明,请稍后(4)!");
Application.DoEvents();
Thread.Sleep(1000);
ss.update("正在打印您的体检证明,请稍后(3)!");
Application.DoEvents();
Thread.Sleep(1000);
ss.update("正在打印您的体检证明,请稍后(2)!");
Application.DoEvents();
Thread.Sleep(1000);
ss.update("正在打印您的体检证明,请稍后(1)!");
Application.DoEvents();
Thread.Sleep(1000);
ss.Close();
printSuccess ps = new printSuccess();
ps.TopMost = true;
ps.ShowDialog();
}
}
}
#region MyRegion
/*
//result_status='合格' and procedure_status!='已打印健康证'
if (list.result_status != "合格")
{
ss.update("没有您的体检证明,请到205咨询!");
Application.DoEvents();
Thread.Sleep(2);
}
else
{
if (list.procedure_status == "已打印健康证")
{
ss.update("您的体检证明已经打印不能重复打印!");
Application.DoEvents();
Thread.Sleep(2000);
}
else
{
ss.update("正在打印您的体检证明请稍后……!");
Thread.Sleep(1000);
Application.DoEvents();
var m = list;
if (m.physical_category == "食品从业")
{
try
{
jsonData = wc.DownloadString(extend.URL + "professional/getjkzm_sp?zzj=1&ids=" + m.id);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
DataTable dt = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonData);
dt.Columns.Add("photo", typeof(byte[]));
dt.Columns.Add("yzewm", typeof(byte[]));
foreach (DataRow dr in dt.Rows)
{
dr["photo"] = Convert.FromBase64String(dr["img"].ToString());
dr["yzewm"] = Convert.FromBase64String(dr["ewm"].ToString());
}
FastReport.Report re = new FastReport.Report();
re.Load(Application.StartupPath + "\\report\\zzjtjzm_sp.frx");
re.RegisterData(dt, "table");
re.PrintSettings.ShowDialog = false;
try
{
FastReport.Export.Image.ImageExport ie = new FastReport.Export.Image.ImageExport();
ie.ImageFormat = FastReport.Export.Image.ImageExportFormat.Bmp;
re.Prepare();
string bago = Application.StartupPath + "\\tjzmdc\\";
if (!Directory.Exists(bago))
{
Directory.CreateDirectory(bago);
}
bago += m.id + ".bmp";
if (File.Exists(bago))
File.Delete(bago);
re.Export(ie, bago);
re.Print();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
else if (m.physical_category == "公共场所")
{
try
{
jsonData = wc.DownloadString(extend.URL + "professional/getjkzm_gg?zzj=1&ids=" + m.id);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
DataTable dt = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonData);
dt.Columns.Add("photo", typeof(byte[]));
dt.Columns.Add("yzewm", typeof(byte[]));
foreach (DataRow dr in dt.Rows)
{
dr["photo"] = Convert.FromBase64String(dr["img"].ToString());
dr["yzewm"] = Convert.FromBase64String(dr["ewm"].ToString());
}
FastReport.Report re = new FastReport.Report();
re.Load(Application.StartupPath + "\\report\\zzjtjzm_gg.frx");
//re.Load(_reportPath);
re.RegisterData(dt, "table");
re.PrintSettings.ShowDialog = false;
try
{
FastReport.Export.Image.ImageExport ie = new FastReport.Export.Image.ImageExport();
ie.ImageFormat = FastReport.Export.Image.ImageExportFormat.Bmp;
re.Prepare();
string bago = Application.StartupPath + "\\tjzmdc\\";
if (!Directory.Exists(bago))
{
Directory.CreateDirectory(bago);
}
bago += m.id + ".bmp";
if (File.Exists(bago))
File.Delete(bago);
re.Export(ie, bago);
re.Print();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
else if (m.physical_category == "药品从业")
{
try
{
jsonData = wc.DownloadString(extend.URL + "professional/getjkzm_yp?zzj=1&ids=" + m.id);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
DataTable dt = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonData);
dt.Columns.Add("photo", typeof(byte[]));
dt.Columns.Add("yzewm", typeof(byte[]));
foreach (DataRow dr in dt.Rows)
{
dr["photo"] = Convert.FromBase64String(dr["img"].ToString());
dr["yzewm"] = Convert.FromBase64String(dr["ewm"].ToString());
}
FastReport.Report re = new FastReport.Report();
//re.Load(_reportPath);
re.Load(Application.StartupPath + "\\report\\zzjtjzm_yp.frx");
re.RegisterData(dt, "table");
re.PrintSettings.ShowDialog = false;
try
{
FastReport.Export.Image.ImageExport ie = new FastReport.Export.Image.ImageExport();
ie.ImageFormat = FastReport.Export.Image.ImageExportFormat.Bmp;
re.Prepare();
string bago = Application.StartupPath + "\\tjzmdc\\";
if (!Directory.Exists(bago))
{
Directory.CreateDirectory(bago);
}
bago += m.id + ".bmp";
if (File.Exists(bago))
File.Delete(bago);
re.Export(ie, bago);
re.Print();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
ss.update("正在打印您的体检证明,请稍后(10)!");
Application.DoEvents();
Thread.Sleep(1000);
ss.update("正在打印您的体检证明,请稍后(9)!");
Application.DoEvents();
Thread.Sleep(1000);
ss.update("正在打印您的体检证明,请稍后(8)!");
Application.DoEvents();
Thread.Sleep(1000);
ss.update("正在打印您的体检证明,请稍后(7)!");
Application.DoEvents();
Thread.Sleep(1000);
ss.update("正在打印您的体检证明,请稍后(6)!");
Application.DoEvents();
Thread.Sleep(1000);
ss.update("正在打印您的体检证明,请稍后(5)!");
Application.DoEvents();
Thread.Sleep(1000);
ss.update("正在打印您的体检证明,请稍后(4)!");
Application.DoEvents();
Thread.Sleep(1000);
ss.update("正在打印您的体检证明,请稍后(3)!");
Application.DoEvents();
Thread.Sleep(1000);
ss.update("正在打印您的体检证明,请稍后(2)!");
Application.DoEvents();
Thread.Sleep(1000);
ss.update("正在打印您的体检证明,请稍后(1)!");
Application.DoEvents();
Thread.Sleep(1000);
ss.Close();
printSuccess ps = new printSuccess();
ps.TopMost = true;
ps.ShowDialog();
break;
}
}*/
#endregion
}
catch (Exception fex)
{
ss.update(fex.Message);
log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).Info(DateTime.Now.ToString() + fex.Message);
Application.DoEvents();
Thread.Sleep(2000);
break;
}
#endregion
#region 条码单 指引单打印
//处理预约登记
ss.update("正在查询有没有您的预约信息请稍后");
Application.DoEvents();
Thread.Sleep(1000);
//获取预约信息
string data = wc.DownloadString(extend.URL + "zzj/getYYXX?id=" + info.IDCardNo);
List yylist = Newtonsoft.Json.JsonConvert.DeserializeObject>(data);
if (yylist.Count > 0)
{
foreach (var ma in yylist)
{
MemoryStream ms = new MemoryStream();
info.Photo.Save(ms, ImageFormat.Jpeg);
//调用后台进行注册
wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
byte[] udata = System.Text.Encoding.UTF8.GetBytes("xm=" + info.Name + "&csrq="
+ info.Born + "&idcard=" + info.IDCardNo + "&img="
+ System.Web.HttpUtility.UrlEncode(Convert.ToBase64String(ms.ToArray()))
+ "&jtzz=" + info.Address
+ "®p=" + System.Configuration.ConfigurationManager.AppSettings["zzjname"]);
//从业体检 登记
byte[] bs = wc.UploadData(extend.URL + "zzj/register?id=" + ma.id, udata);
data = System.Text.Encoding.UTF8.GetString(bs);
var or = Newtonsoft.Json.JsonConvert.DeserializeObject(data);
//state=1:表示登记成功
if (or.State == 1)
{
//导引单 配POS置
string pos_dyj = System.Configuration.ConfigurationManager.AppSettings["pos_dyj"];
//string jsonDatadj = "";
DataTable dt;
//打印指引单
wc.Encoding = System.Text.Encoding.UTF8;
try
{
//or.Message,是返回的条码physical_num
//根据条码获取 登记信息
jsonData = wc.DownloadString(extend.URL + "Registration/GetRegisteModel?tm=" + or.Message);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
dt = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonData);
FastReport.Report re = new FastReport.Report();
//4:卡车司机;5:VCT
if (dt.Rows[0]["medical_scheme_maintain_id"].ToString() == "4" || dt.Rows[0]["medical_scheme_maintain_id"].ToString() == "5")
{
re.Load(Application.StartupPath + "\\report\\zyzyd.frx");
re.RegisterData(dt, "professionalExam_register");
DataTable qxdt = new DataTable();
qxdt.Columns.Add("qx");
string jsonqx = "";
try
{
//根据体检项目查询该体检项目的检查科室
jsonqx = wc.DownloadString(extend.URL + "Registration/GetTjxmRoom/?ids=" + dt.Rows[0]["check_item_ids"].ToString().TrimStart(',').TrimEnd(','));
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
DataTable qdt = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonqx);
if (qdt.Rows.Count != 0)
{
DataTable ckrs = qdt.DefaultView.ToTable(true, "check_room");
foreach (DataRow drr in ckrs.Rows)
{
DataRow dr1 = qxdt.NewRow();
//==================================================//
//此处被写死‘血检’,经查数据没有此项,后续需要根据客户情况处理
if (drr["check_room"].ToString().IndexOf("血检", StringComparison.Ordinal) > -1)
{
dr1["qx"] += drr["check_room"] + "上午空腹静脉抽血";// + (qdt.Rows[i]["team_name"].ToString().IndexOf("尿", StringComparison.Ordinal) > -1 ? ",留取尿样" : "");
bool f = false;
DataRow[] drs = qdt.Select("check_room='" + drr["check_room"] + "'");
foreach (DataRow drrr in drs)
{
if (drrr["team_name"].ToString().Contains("尿"))
{
f = true;
break;
}
}
if (f)
{
dr1["qx"] += ",留取尿样";
}
}
else
{
dr1["qx"] += drr["check_room"] + "检查";
}
qxdt.Rows.Add(dr1);
}
}
/*
for (int i = 0; i < qdt.Rows.Count; i++)
{
DataRow dr1 = qxdt.NewRow();
if (qdt.Rows[i]["check_room"].ToString().IndexOf("血检", StringComparison.Ordinal) > -1)
{
dr1["qx"] += qdt.Rows[i]["check_room"] + "上午空腹静脉抽血" + (qdt.Rows[i]["team_name"].ToString().IndexOf("尿", StringComparison.Ordinal) > -1 ? ",留取尿样" : "");
}
else
{
dr1["qx"] += qdt.Rows[i]["check_room"] + "检查";
}
qxdt.Rows.Add(dr1);
}*/
/*
if (qxdt.Select("qx like'%上午空腹静脉抽血,留取尿样'").Length > 0 && qxdt.Select("qx like'%上午空腹静脉抽血'").Length > 0)
{
qxdt.Rows.Remove(qxdt.Select("qx like'%上午空腹静脉抽血'")[0]);
}*/
DataView dv = qxdt.DefaultView;
DataTable distTable = dv.ToTable("Dist", true, "qx");
re.RegisterData(distTable, "qxdt");
string jsonBjxm = "";
try
{
//根据体检项目ID查询体检项目列表
jsonBjxm = wc.DownloadString(extend.URL + "Registration/GettjxmByIDsReport/?ids=" + dt.Rows[0]["check_item_ids"].ToString().TrimStart(',').TrimEnd(','));
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
DataTable bjxm = new DataTable();
DataTable tjxmdt = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonBjxm);
bjxm.Columns.Add("bjxm");
foreach (DataRow daraRow in tjxmdt.Rows)
{
DataRow dr2 = bjxm.NewRow();
dr2["bjxm"] = daraRow["exam_group"].ToString();
bjxm.Rows.Add(dr2);
}
DataView dv1 = bjxm.DefaultView;
DataTable distTable1 = dv1.ToTable("Dist", true, "bjxm");
string g = "";
foreach (DataRow daraRow in distTable1.Rows)
{
g += daraRow["bjxm"] + ",";
}
DataTable dt3 = new DataTable();
dt3.Columns.Add("bjxm");
DataRow tt = dt3.NewRow();
tt["bjxm"] = g;
dt3.Rows.Add(tt);
re.RegisterData(dt3, "bjxmdt");
//说明------
DataTable smdt = new DataTable();
smdt.Columns.Add("sm");
DataRow dr = smdt.NewRow();
if (dt.Rows[0]["exam_type"].ToString().IndexOf("特种", StringComparison.Ordinal) > -1)
{
dr["sm"] = "体检项目完成后请回到二楼职业卫生科(206)领取《特种作业健康检查表》。";
}
else if (dt.Rows[0]["exam_type"].ToString().IndexOf("常规", StringComparison.Ordinal) > -1)
{
dr["sm"] = "1、请当天下午4点后到二楼职业卫生科(206)领取《" + dt.Rows[0]["exam_type"] +
"检查表》。\r\n2、请在空腹状态下接受肝功能检查;孕妇接受透视或拍片时请事先告知医生;抽血后用棉签按压穿刺处3-5分钟。";
}
else if (dt.Rows[0]["exam_type"].ToString().IndexOf("机动", StringComparison.Ordinal) > -1)
{
dr["sm"] = "1、请体检结束后到二楼职业卫生科(206)领取《" + dt.Rows[0]["exam_type"] +
"检查表》。";
}
else
{
dr["sm"] = "1、请当天下午4点后到二楼职业卫生科(206)领取《" + dt.Rows[0]["exam_type"] +
"检查表》。\r\n2、请在空腹状态下接受肝功能和B超检查;孕妇接受透视或拍片时请事先告知医生;抽血后用棉签按压穿刺处3-5分钟。";
}
smdt.Rows.Add(dr);
re.SetParameterValue("examtype", dt.Rows[0]["exam_type"].ToString());
re.SetParameterValue("agreement_money", dt.Rows[0]["agreement_money"]);
re.RegisterData(smdt, "smdt");
DataTable zydtop = new DataTable();
zydtop.Columns.Add("zyd");
DataRow dr6 = zydtop.NewRow();
dr6["zyd"] = dt.Rows[0]["exam_type"] + "指引单";
zydtop.Rows.Add(dr6);
re.RegisterData(zydtop, "zydtop");
DataTable imagedt = new DataTable();
imagedt.Columns.Add("image", typeof(byte[]));
DataRow d = imagedt.NewRow();
d["image"] = Convert.FromBase64String(dt.Rows[0]["phone_path"].ToString());
imagedt.Rows.Add(d);
re.RegisterData(imagedt, "imagedt");
re.PrintSettings.ShowDialog = false;
if (!string.IsNullOrEmpty(pos_dyj))
re.PrintSettings.Printer = pos_dyj;
re.Print();
}
else
{
re.Load(Application.StartupPath + "\\report\\zyd.frx");
re.RegisterData(dt, "professionalExam_register");
DataTable tjlctop = new DataTable();
tjlctop.Columns.Add("lc");
DataTable tjlcbom = new DataTable();
tjlcbom.Columns.Add("lc");
DataTable zydtop = new DataTable();
zydtop.Columns.Add("zyd");
DataTable imagedt = new DataTable();
imagedt.Columns.Add("image", typeof(byte[]));
DataRow d = imagedt.NewRow();
d["image"] = Convert.FromBase64String(dt.Rows[0]["phone_path"].ToString());
imagedt.Rows.Add(d);
DataRow dr;
/*switch (dt.Rows[0]["physical_category"].ToString())
{
case "公共场所":
dr = zydtop.NewRow();
dr["zyd"] = "公共场所从业人员健康检查指引单";
zydtop.Rows.Add(dr);
DataRow dr1 = tjlctop.NewRow();
dr1["lc"] = "3. “内科”检查内科项目;";
DataRow dr2 = tjlctop.NewRow();
dr2["lc"] = "4. “内科”检查皮肤;";
//DataRow dr3 = tjlctop.NewRow();
//dr3["lc"] = "5. “培训(201)室”卫生知识培训。";
tjlctop.Rows.Add(dr1); tjlctop.Rows.Add(dr2); //tjlctop.Rows.Add(dr3);
//DataRow dr10 = tjlcbom.NewRow();
//dr10["lc"] = "指引单到“办证室”领取健康证。";
//tjlcbom.Rows.Add(dr10);
break;
case "食品从业":
dr = zydtop.NewRow();
dr["zyd"] = "食品从业人员健康检查指引单";
zydtop.Rows.Add(dr);
DataRow dr4 = tjlctop.NewRow();
dr4["lc"] = "3. “内科”检查皮肤;";
//DataRow dr5 = tjlctop.NewRow();
//dr5["lc"] = "4. “培训(201)室”卫生知识培训。";
tjlctop.Rows.Add(dr4);// tjlctop.Rows.Add(dr5);
//DataRow dr9 = tjlcbom.NewRow();
//dr9["lc"] = "指引单到“办证室”领取健康证。";
//tjlcbom.Rows.Add(dr9);
break;
case "药品从业":
dr = zydtop.NewRow();
dr["zyd"] = "药品从业人员健康检查指引单";
zydtop.Rows.Add(dr);
DataRow dr6 = tjlctop.NewRow();
dr6["lc"] = "3. “内科”检查内科项目;";
DataRow dr7 = tjlctop.NewRow();
dr7["lc"] = "4. “内科”检查皮肤及辨色力;";
tjlctop.Rows.Add(dr6); tjlctop.Rows.Add(dr7);
DataRow dr8 = tjlctop.NewRow();
DataRow dr9 = tjlctop.NewRow();
dr8["lc"] = "5. “一楼院内X光室”检查胸透;";
// tjlctop.Rows.Add(dr6); tjlctop.Rows.Add(dr7);
dr9["lc"] = "6. “心电图室”检查心电图;";
tjlctop.Rows.Add(dr8); tjlctop.Rows.Add(dr9);
//DataRow dr8 = tjlcbom.NewRow();
//dr8["lc"] = "指引单到“职业卫生科(206)室”领取检查表。";
//tjlcbom.Rows.Add(dr8);
break;
default:
dr = zydtop.NewRow();
dr["zyd"] = "从业人员健康检查指引单";
zydtop.Rows.Add(dr);
break;
}*/
dr = zydtop.NewRow();
if (dt.Rows[0]["physical_category"].ToString() == "公共场所")
{
dr["zyd"] = dt.Rows[0]["physical_category"].ToString() + "从业人员健康检查指引单";
}
else
{
string strzyd = dt.Rows[0]["physical_category"].ToString();
dr["zyd"] = strzyd.Substring(0, strzyd.Length - 2) + "从业人员健康检查指引单";
}
zydtop.Rows.Add(dr);
string jsonqx = "";
try
{
jsonqx = wc.DownloadString(extend.URL + "/Registration/GetTjxmRoom/?ids=" + dt.Rows[0]["check_item_ids"].ToString().TrimStart(',').TrimEnd(','));
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
DataTable qdt = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonqx);
//“检验科 ” 提示的展示标志
bool bJYNote = false;
string strJYRoom = "";
//大便提示的展示标志
bool bDBNote = false;
string strDBRoom = "";
//留取尿样的展示标志
bool bNYNote = false;
string strNYRoom = "";
if (qdt.Rows.Count != 0)
{
DataTable ckrs = qdt.DefaultView.ToTable(true, "check_room");
foreach (DataRow drr in ckrs.Rows)
{
DataRow dr1 = tjlctop.NewRow();
dr1["lc"] += "\"" + drr["check_room"] + "\"检查:";
//列举体检小组
string strTeamNames = "";
DataRow[] drs = qdt.Select("check_room='" + drr["check_room"] + "'");
foreach (DataRow drrr in drs)
{
if (strTeamNames.IndexOf(drrr["team_name"].ToString()) == -1)
{
strTeamNames += drrr["team_name"].ToString() + ",";
}
if (drrr["team_name"].ToString().Contains("尿"))
{
bNYNote = true;
strNYRoom = drr["check_room"].ToString();
}
if (drrr["team_name"].ToString().Contains("血") ||
drrr["team_name"].ToString().Contains("生化") ||
drrr["team_name"].ToString().Contains("肝"))
{
bJYNote = true;
strJYRoom = drr["check_room"].ToString();
}
if (drrr["team_name"].ToString().Contains("大便"))
{
bDBNote = true;
strDBRoom = drr["check_room"].ToString();
}
}
dr1["lc"] += strTeamNames.Substring(0, strTeamNames.Length - 1);
tjlctop.Rows.Add(dr1);
}
}
if (bNYNote)
{
re.SetParameterValue("bNYNote", "yes");
}
else
{
re.SetParameterValue("bNYNote", "no");
}
if (bJYNote)
{
re.SetParameterValue("bJYNote", "yes");
}
else
{
re.SetParameterValue("bJYNote", "no");
}
if (bDBNote)
{
re.SetParameterValue("bDBNote", "yes");
}
else
{
re.SetParameterValue("bDBNote", "no");
}
if (bDBNote || bJYNote || bNYNote)
{
re.SetParameterValue("bNote", "yes");
}
else
{
re.SetParameterValue("bNote", "no");
}
re.SetParameterValue("strNYRoom", strNYRoom);
re.SetParameterValue("strJYRoom", strJYRoom);
re.SetParameterValue("strDBRoom", strDBRoom);
re.RegisterData(tjlcbom, "tjlcbom");
re.RegisterData(tjlctop, "tjlctop");
re.RegisterData(zydtop, "zydtop");
re.RegisterData(imagedt, "imagedt");
re.SetParameterValue("agreement_money", dt.Rows[0]["agreement_money"]);
re.PrintSettings.ShowDialog = false;
if (!string.IsNullOrEmpty(pos_dyj))
re.PrintSettings.Printer = pos_dyj;
//---------输出为图片,测试用-------------
FastReport.Export.Image.ImageExport ie = new FastReport.Export.Image.ImageExport();
ie.ImageFormat = FastReport.Export.Image.ImageExportFormat.Bmp;
re.Prepare();
string bago = Application.StartupPath + "\\cyzyd\\";
Log.WriteLogToTxt("bagopath:" + bago);
if (!Directory.Exists(bago))
{
Directory.CreateDirectory(bago);
}
bago += DateTime.Now.ToString("yyyyMMddHHmmss") + ".bmp";
if (File.Exists(bago))
File.Delete(bago);
//导出为bmp图片
re.Export(ie, bago);
//----------------------
re.Print();
var loger = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
try
{
string msg = "";
// int mc= extend.open_printer(13, 0, ref msg);
// loger.Info("打印小票打印机:" + mc + "\t" + msg);
// mc= extend.get_printerStatus();
// loger.Info("小票打印机状态:" + mc);
// mc= extend.close_printer();
// loger.Info("关闭小票打印机:" + mc);
}
catch (Exception ex)
{
loger.Info("小票打印机异常:" + ex.Message);
}
}
//打印条码
string tmprint = System.Configuration.ConfigurationManager.AppSettings["tmprint"];
jsonData = "";
//wc.Encoding = System.Text.Encoding.UTF8;
//zyk 20231120 此处未测试……………………………………………………………………
#region 因性能问题 不再动态查询,直接打印三张条码
try
{
//获取体检条码 列表 or.Message,是返回的条码physical_num
jsonData = wc.DownloadString(extend.URL + "professional/getTMByphysical_num/" + or.Message);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
dt = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonData);
if (dt.Rows.Count == 0)
return;
string strName = dt.Rows[0]["xm"].ToString();
DataTable dtTm = new DataTable();
dtTm.Columns.Add("xm");
dtTm.Columns.Add("tm");
dtTm.Columns.Add("xmtm");
dtTm.Columns.Add("tz");
for (int i = 0; i < 3; i++)
{
DataRow drBarcode = dtTm.NewRow();
drBarcode["tm"] = or.Message;
drBarcode["xm"] = strName;
dtTm.Rows.Add(drBarcode);
}
#endregion
#region MyRegion
//try
//{
// //获取体检条码 列表 or.Message,是返回的条码physical_num
// jsonData = wc.DownloadString(extend.URL + "professional/getTMByphysical_num/" + or.Message);
//}
//catch (Exception ex)
//{
// MessageBox.Show(ex.Message);
//}
//dt = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonData);
//if (dt.Rows.Count == 0)
// return;
//if (dt.Rows.Count % 2 == 1)
//{
// //没看明白…… 可能目的是补一个空行,用于排版效果……
// var row = dt.NewRow();
// dt.Rows.Add(row);
//}
////是否根据分组打印
//bool bBarcodeByGroup = Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["BarcodeByGroup"]);
////只打印姓名、体检号physical_num
//if (!bBarcodeByGroup)
//{
// string strName = dt.Rows[0]["xm"].ToString();
// for (int i = dt.Rows.Count - 1; i >= 0; i--)
// {
// dt.Rows.RemoveAt(i);
// }
// int count = 2;
// //根据体检编号获取体检项目中是否包含"生化、血常规、尿常规"检查
// string strSpecialconf = wc.DownloadString(extend.URL + "professional/getSpecialconf?physical_num=" + or.Message);
// //若"生化、血常规、尿常规"都存在,则设置count为3,打印三张条码
// if (Convert.ToInt32(strSpecialconf) == 3)
// {
// count = 3;
// }
// for (int i = 0; i < count; i++)
// {
// DataRow drBarcode = dt.NewRow();
// drBarcode["tm"] = or.Message;
// drBarcode["xm"] = strName;
// dt.Rows.Add(drBarcode);
// }
//}
#endregion
//zyk 20231122 临时注释掉打印条码功能,后续需开启
re = new FastReport.Report();
re.Load(Application.StartupPath + "\\report\\barcode.frx");
re.RegisterData(dtTm, "barcode");
re.PrintSettings.ShowDialog = false;
if (!string.IsNullOrEmpty(tmprint))
re.PrintSettings.Printer = tmprint;
re.Print();
}
else
{
ss.update(or.Message);
}
}
ss.update("登记成功!");
Application.DoEvents();
Thread.Sleep(2000);
//ss.Close();
//this.Close();
}
else
{
ss.update("没有找到您的预约信息!");
Application.DoEvents();
Thread.Sleep(2000);
//ss.Close();
//this.Close();
}
if (ss != null && !ss.IsDisposed)
{
//ss.Close();
}
#endregion
#region 职业----条码单 指引单打印
//处理登记登记
ss.update("正在查询有没有您的登记信息请稍后");
Application.DoEvents();
Thread.Sleep(1000);
//获取体检编号 enableReprint
//获取体检编号
url_getPhysicalNumByIDCard += "&id=" + info.IDCardNo;
//string url_getPhysicalNumByIDCard = extend.URL + "zzj/getPhysicalNumByIDCard?id=" + info.IDCardNo;
Log.WriteLogToTxt(url_getPhysicalNumByIDCard);
string physical_num = wc.DownloadString(url_getPhysicalNumByIDCard);
url_getPhysicalNumByIDCard = "";
if (physical_num != "")
{
//导引单 配POS置
string pos_dyj = System.Configuration.ConfigurationManager.AppSettings["pos_dyj"];
string jsonqx = "";
string jsonBjxm = "";
wc.Encoding = System.Text.Encoding.UTF8;
try
{
jsonData = wc.DownloadString(extend.URL + "/Registration/GetRegisteModel/?tm=" + physical_num);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
DataTable dt = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonData);
//zyk 20231111 用户姓名
string UserName = dt.Rows[0]["person_name"].ToString();
FastReport.Report re = new FastReport.Report();
re.Load(Application.StartupPath + "\\report\\zyzyd.frx");
re.RegisterData(dt, "professionalExam_register");
DataTable qxdt = new DataTable();
qxdt.Columns.Add("qx");
try
{
jsonqx = wc.DownloadString(extend.URL + "/Registration/GetTjxmRoom/?ids=" + dt.Rows[0]["check_item_ids"].ToString().TrimStart(',').TrimEnd(','));
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
DataTable qdt = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonqx);
//“检验科 ” 提示的展示标志
bool bJYNote = false;
string strJYRoom = "";
//大便提示的展示标志
bool bDBNote = false;
string strDBRoom = "";
//留取尿样的展示标志
bool bNYNote = false;
string strNYRoom = "";
if (qdt.Rows.Count != 0)
{
/* DataTable ckrs = qdt.DefaultView.ToTable(true, "check_room");
foreach (DataRow drr in ckrs.Rows)
{
DataRow dr1 = qxdt.NewRow();
if (drr["check_room"].ToString().IndexOf("血检", StringComparison.Ordinal) > -1)
{
dr1["qx"] += drr["check_room"] + "上午空腹静脉抽血";// + (qdt.Rows[i]["team_name"].ToString().IndexOf("尿", StringComparison.Ordinal) > -1 ? ",留取尿样" : "");
bool f = false;
DataRow[] drs = qdt.Select("check_room='" + drr["check_room"] + "'");
foreach (DataRow drrr in drs)
{
if (drrr["team_name"].ToString().Contains("尿"))
{
f = true;
break;
}
}
if (f)
{
dr1["qx"] += ",留取尿样";
}
}
else
{
dr1["qx"] += drr["check_room"] + "检查";
}
qxdt.Rows.Add(dr1);
}*/
DataTable ckrs = qdt.DefaultView.ToTable(true, "check_room");
foreach (DataRow drr in ckrs.Rows)
{
DataRow dr1 = qxdt.NewRow();
dr1["qx"] += "\"" + drr["check_room"] + "\"检查:";
//列举体检小组
string strTeamNames = "";
DataRow[] drs = qdt.Select("check_room='" + drr["check_room"] + "'");
foreach (DataRow drrr in drs)
{
if (strTeamNames.IndexOf(drrr["team_name"].ToString()) == -1)
{
strTeamNames += drrr["team_name"].ToString() + ",";
}
if (drrr["team_name"].ToString().Contains("尿"))
{
bNYNote = true;
strNYRoom = drr["check_room"].ToString();
}
if (drrr["team_name"].ToString().Contains("血") ||
drrr["team_name"].ToString().Contains("生化") ||
drrr["team_name"].ToString().Contains("肝"))
{
bJYNote = true;
strJYRoom = drr["check_room"].ToString();
}
if (drrr["team_name"].ToString().Contains("大便"))
{
bDBNote = true;
strDBRoom = drr["check_room"].ToString();
}
}
dr1["qx"] += strTeamNames.Substring(0, strTeamNames.Length - 1);
qxdt.Rows.Add(dr1);
}
}
if (bNYNote)
{
re.SetParameterValue("bNYNote", "yes");
}
else
{
re.SetParameterValue("bNYNote", "no");
}
if (bJYNote)
{
re.SetParameterValue("bJYNote", "yes");
}
else
{
re.SetParameterValue("bJYNote", "no");
}
if (bDBNote)
{
re.SetParameterValue("bDBNote", "yes");
}
else
{
re.SetParameterValue("bDBNote", "no");
}
if (bDBNote || bJYNote || bNYNote)
{
re.SetParameterValue("bNote", "yes");
}
else
{
re.SetParameterValue("bNote", "no");
}
re.SetParameterValue("strNYRoom", strNYRoom);
re.SetParameterValue("strJYRoom", strJYRoom);
re.SetParameterValue("strDBRoom", strDBRoom);
DataView dv = qxdt.DefaultView;
DataTable distTable = dv.ToTable("Dist", true, "qx");
re.RegisterData(distTable, "qxdt");
try
{
jsonBjxm = wc.DownloadString(extend.URL + "/Registration/GettjxmByIDsReport/?ids=" + dt.Rows[0]["check_item_ids"].ToString().TrimStart(',').TrimEnd(','));
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
DataTable bjxm = new DataTable();
DataTable tjxmdt = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonBjxm);
bjxm.Columns.Add("bjxm");
foreach (DataRow daraRow in tjxmdt.Rows)
{
DataRow dr2 = bjxm.NewRow();
dr2["bjxm"] = daraRow["exam_group"].ToString();
bjxm.Rows.Add(dr2);
}
DataView dv1 = bjxm.DefaultView;
DataTable distTable1 = dv1.ToTable("Dist", true, "bjxm");
string g = "";
foreach (DataRow daraRow in distTable1.Rows)
{
g += daraRow["bjxm"] + ",";
}
DataTable dt3 = new DataTable();
dt3.Columns.Add("bjxm");
DataRow tt = dt3.NewRow();
tt["bjxm"] = g;
dt3.Rows.Add(tt);
re.RegisterData(dt3, "bjxmdt");
//说明------
DataTable smdt = new DataTable();
smdt.Columns.Add("sm");
DataRow dr = smdt.NewRow();
if (dt.Rows[0]["exam_type"].ToString().IndexOf("特种", StringComparison.Ordinal) > -1)
{
dr["sm"] = "体检项目完成后请回到二楼职业卫生科(206)领取《特种作业健康检查表》。";
}
else if (dt.Rows[0]["exam_type"].ToString().IndexOf("常规", StringComparison.Ordinal) > -1)
{
dr["sm"] = "1、请当天下午4点后到二楼职业卫生科(206)领取《" + dt.Rows[0]["exam_type"] +
"检查表》。\r\n2、请在空腹状态下接受肝功能检查;孕妇接受透视或拍片时请事先告知医生;抽血后用棉签按压穿刺处3-5分钟。";
}
else if (dt.Rows[0]["exam_type"].ToString().IndexOf("机动", StringComparison.Ordinal) > -1)
{
dr["sm"] = "1、请体检结束后到二楼职业卫生科(206)领取《" + dt.Rows[0]["exam_type"] +
"检查表》。";
}
else
{
dr["sm"] = "1、请当天下午4点后到二楼职业卫生科(206)领取《" + dt.Rows[0]["exam_type"] +
"检查表》。\r\n2、请在空腹状态下接受肝功能和B超检查;孕妇接受透视或拍片时请事先告知医生;抽血后用棉签按压穿刺处3-5分钟。";
}
smdt.Rows.Add(dr);
re.SetParameterValue("examtype", dt.Rows[0]["exam_type"].ToString());
re.SetParameterValue("agreement_money", dt.Rows[0]["agreement_money"]);
re.RegisterData(smdt, "smdt");
DataTable zydtop = new DataTable();
zydtop.Columns.Add("zyd");
DataRow dr6 = zydtop.NewRow();
dr6["zyd"] = dt.Rows[0]["exam_type"] + "指引单";
zydtop.Rows.Add(dr6);
re.RegisterData(zydtop, "zydtop");
DataTable imagedt = new DataTable();
imagedt.Columns.Add("image", typeof(byte[]));
DataRow d = imagedt.NewRow();
d["image"] = Convert.FromBase64String(dt.Rows[0]["phone_path"].ToString());
imagedt.Rows.Add(d);
re.RegisterData(imagedt, "imagedt");
re.PrintSettings.ShowDialog = false;
if (!string.IsNullOrEmpty(pos_dyj))
re.PrintSettings.Printer = pos_dyj;
//---------输出为图片,测试用-------------
FastReport.Export.Image.ImageExport ie = new FastReport.Export.Image.ImageExport();
ie.ImageFormat = FastReport.Export.Image.ImageExportFormat.Bmp;
re.Prepare();
string bago = Application.StartupPath + "\\zyzyd\\";
Log.WriteLogToTxt("bagopath:" + bago);
if (!Directory.Exists(bago))
{
Directory.CreateDirectory(bago);
}
bago += DateTime.Now.ToString("yyyyMMddHHmmss") + ".bmp";
if (File.Exists(bago))
File.Delete(bago);
//导出为bmp图片
re.Export(ie, bago);
//----------------------
re.Print();
//更新状态为"打印指引单"
wc.DownloadString(extend.URL + "zzj/updateProcedureStatus?physical_num=" + physical_num);
//打印条码
string tmprint = System.Configuration.ConfigurationManager.AppSettings["tmprint"];
wc.Encoding = System.Text.Encoding.UTF8;
//zyk 20231111
#region 因性能问题 不再动态查询,直接打印三张条码
DataTable dtTm = new DataTable();
dtTm.Columns.Add("xm");
dtTm.Columns.Add("tm");
dtTm.Columns.Add("xmtm");
dtTm.Columns.Add("tz");
for (int i = 0; i < 3; i++)
{
DataRow drBarcode = dtTm.NewRow();
drBarcode["tm"] = physical_num;
drBarcode["xm"] = UserName;
dtTm.Rows.Add(drBarcode);
}
#endregion
#region MyRegion
//try
//{
// jsonData = wc.DownloadString(extend.URL + "professional/getTMByphysical_num/" + physical_num);
//}
//catch (Exception ex)
//{
// MessageBox.Show(ex.Message);
// return;
//}
//dt = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonData);
//if (dt.Rows.Count == 0)
// return;
//if (dt.Rows.Count % 2 == 1)
//{
// //没看明白…… 可能目的是补一个空行,用于排版效果……
// var row = dt.NewRow();
// dt.Rows.Add(row);
//}
////是否根据分组打印
//bool bBarcodeByGroup = Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["BarcodeByGroup"]);
////只打印姓名、体检号physical_num
//if (!bBarcodeByGroup)
//{
// string strName = dt.Rows[0]["xm"].ToString();
// for (int i = dt.Rows.Count - 1; i >= 0; i--)
// {
// dt.Rows.RemoveAt(i);
// }
// int count = 2;
// //根据体检编号获取体检项目中是否包含"生化、血常规、尿常规"检查
// string strSpecialconf = wc.DownloadString(extend.URL + "professional/getSpecialconf?physical_num=" + physical_num);
// //若"生化、血常规、尿常规"都存在,则设置count为3,打印三张条码
// if (Convert.ToInt32(strSpecialconf) == 3)
// {
// count = 3;
// }
// for (int i = 0; i < count; i++)
// {
// DataRow drBarcode = dt.NewRow();
// drBarcode["tm"] = physical_num;
// drBarcode["xm"] = strName;
// dt.Rows.Add(drBarcode);
// }
//}
#endregion
//zyk 20231122 临时注释掉打印条码功能,后续需开启
re = new FastReport.Report();
re.Load(Application.StartupPath + "\\report\\barcode.frx");
//re.RegisterData(dt, "barcode");
re.RegisterData(dtTm, "barcode");
re.PrintSettings.ShowDialog = false;
//MessageBox.Show(_tm_dyj);
if (!string.IsNullOrEmpty(tmprint))
re.PrintSettings.Printer = tmprint;
re.Print();
ss.update("打印成功!");
Application.DoEvents();
Thread.Sleep(2000);
ss.Close();
}
else
{
ss.update("没有找到您的登记信息!");
Application.DoEvents();
Thread.Sleep(2000);
ss.Close();
//this.Close();
}
if (ss != null && !ss.IsDisposed)
{
ss.Close();
}
#endregion
}
while (false);
}
catch (Exception ex)
{
Status s = new Status("提示:" + ex.Message);
CYQ.Data.Log.WriteLogToTxt(ex.StackTrace.ToString() + ex.Message);
s.ShowDialog();
}
finally
{
if (ss != null && !ss.IsDisposed)
{
ss.Close();
}
timer1.Enabled = true;
}
timer1.Enabled = true;
n = DateTime.Now;
log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).Info(DateTime.Now.ToString() + "完成一次查询!");
}
int dj = 10;
private void frm_main3_Load(object sender, EventArgs e)
{
eSet.ReportSettings.ShowProgress = false;
foreach (var s in Screen.AllScreens)
{
if (!s.Primary)
{
var fs = new frm_video();
Point mf = new Point();
mf = s.Bounds.Location;
fs.Location = mf;
fs.TopLevel = true;
fs.TopMost = true;
//fs.ksname = ksname;
fs.Owner = this;
fs.WindowState = FormWindowState.Maximized;
fs.StartPosition = FormStartPosition.Manual;
fs.Show();
return;
}
}
}
Status ms = new Status();
private void timer2_Tick(object sender, EventArgs e)
{
log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).Info(DateTime.Now.ToString() + ":" + (DateTime.Now - n).TotalMinutes);
if ((DateTime.Now - n).TotalMinutes > 1)
{
log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).Info(DateTime.Now.ToString() + ":" + (DateTime.Now - n).TotalMinutes);
Application.Restart();
}
}
private void frm_main3_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.D1 && e.Modifiers == Keys.Control) //Ctrl+1
{
this.FormBorderStyle = FormBorderStyle.FixedSingle;
}
else if (e.KeyCode == Keys.D2 && e.Modifiers == Keys.Control) //Ctrl+2
{
this.FormBorderStyle = FormBorderStyle.None;
}
else if (e.KeyCode == Keys.D3 && e.Modifiers == Keys.Control) //Ctrl+2
{
this.ifInputByCard = 0;
this.textBox1.Visible = true;
this.textBox1.Text = "";
}
else if (e.KeyCode == Keys.D4 && e.Modifiers == Keys.Control) //Ctrl+2
{
this.ifInputByCard = 1;
this.textBox1.Visible = false;
this.textBox1.Text = "";
}
Application.DoEvents();
}
int click_count_left = 0;
int click_count_right = 0;
private void frm_main3_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
click_count_left++;
}
if (e.Button == MouseButtons.Right)
{
click_count_right++;
}
//如果2s内鼠标右击计数达6次,则退出系统
if (click_count_right >= 6)//&& click_count_right >=3)
{
Application.Exit();
}
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text.Trim().Length == 18)
{
this.ifInputByCard = 0;
this.button1.Visible = false;
//关闭软键盘
HideOnScreenKeyboard2();
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text.Trim().Length == 18)
{
this.button1.Visible = true;
}
}
//打开软键盘
public static void ShowOnScreenkeyboard()
{
try
{
ProcessStartInfo startInfo = new ProcessStartInfo(@"C:\Program Files\Common Files\microsoft shared\ink\TabTip.exe");
Process.Start(startInfo);
}
catch { }
}
//关闭软键盘
public static void HideOnScreenKeyboard()
{
try
{
Process[] oskProcessArray = Process.GetProcessesByName("TabTip");
foreach (Process process in oskProcessArray)
{
process.Kill();
}
}
catch (Exception)
{
}
}
//打开软键盘
public static void ShowOnScreenkeyboard2()
{
try
{
//ProcessStartInfo startInfo = new ProcessStartInfo(@"C:\Windows\sysnative\osk.exe");
//Process.Start(startInfo);
Process.Start(@"osk.exe");
}
catch { }
}
//关闭软键盘
public static void HideOnScreenKeyboard2()
{
try
{
Process[] oskProcessArray = Process.GetProcessesByName("osk");
foreach (Process process in oskProcessArray)
{
process.Kill();
}
}
catch (Exception)
{
}
}
private void button2_Click(object sender, EventArgs e)
{
HideOnScreenKeyboard2();
Thread.Sleep(300);
ShowOnScreenkeyboard2();
this.textBox1.Focus();
}
private void button3_Click(object sender, EventArgs e)
{
HideOnScreenKeyboard2();
}
}
}