tijian_jichuang/Code/SOH.JianYan.DEC_HT800/HT800.cs
2025-02-20 11:54:48 +08:00

316 lines
14 KiB
C#

using EAS.Services;
using SOH.BLL;
using SOH.JianYan.YiQi.Base;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SOH.JianYan.DEC_HT800
{
public partial class HT800 : SOH.JianYan.YiQi.Base.baseMain
{
const string enq = "\u0005";
const string eot = "\x0004";
const string stx = "\x0002";
const string etx = "\x0003";
const string cr = "\x000d";
const string lf = "\x000a";
public HT800()
{
InitializeComponent();
}
string _yqbm = "";
private void HT800_Load(object sender, EventArgs e)
{
System.Configuration.Configuration conf = System.Configuration.ConfigurationManager.OpenExeConfiguration(Application.StartupPath + "\\local.ext");
if (conf.AppSettings.Settings.AllKeys.Contains("yqbm"))
{
_yqbm = conf.AppSettings.Settings["yqbm"].Value;
}
conf.Save();
if (System.IO.File.Exists(Application.StartupPath + "\\SOH.OnLine.exe"))
{
System.Diagnostics.Process p = System.Diagnostics.Process.Start(Application.StartupPath + "\\SOH.OnLine.exe");
Program.ps = p;
}
}
protected override void decoder()
{
base.decoder();
string decodefile = Application.StartupPath + "\\raw\\data.txt";
if (System.IO.File.Exists(decodefile))
{
int a = 0;
string data = "";
aa:
try
{
FileStream fs = new FileStream(decodefile, FileMode.Open, FileAccess.Read, FileShare.None);
StreamReader sr = new StreamReader(fs);
data = sr.ReadToEnd();
sr.Close();
sr.Dispose();
}
catch
{
a++;
if (a > 11)
goto aa;
}
if (data.StartsWith(enq) && data.EndsWith(eot))
{
File.Delete(decodefile);
}
else
{
return;
}
while (data.Length > 0)
{
List<string> ys = new List<string>();
int post = 0;
while (true)
{
post = data.IndexOf(stx, post);
if (post < 0)
break;
string decdata = data.Substring(post + 1, data.IndexOf(etx, post) - post);
ys.Add(decdata);
post = data.IndexOf(etx, post);
}
DateTime sampledate = DateTime.Now;
string sampleno = "";
//ys.Select()
string msgtype = "";
string querytime = "";
string queryno = "";
string bno = "";
string eno = "";
string bt = "";
string et = "";
foreach (string y in ys)
{
string[] zs = y.Split('|');
if (zs[0] == "1H")
{
Lis_RiZhi.resultlog(zs[0]);
if (zs[11] == "SRLT")
{
//msgid = zs[9];
msgtype = "sendmsg";
continue;
}
//QRY^Q02
else if (zs[11] == "QREQ")
{
msgtype = "query";
continue;
}
}
if (msgtype == "sendmsg")
{
if (zs[0].EndsWith("O"))
{
sampleno = zs[2];
string[] ss = sampleno.Split('^');
if(ss[0].Length>10)
{
sampleno = ss[0];
}
else
{
sampleno = ss[1];
}
//string sj = zs[7];
//sampledate = DateTime.Parse(sj.Substring(0, 4) + "-" + sj.Substring(4, 2) + "-" + sj.Substring(6));
continue;
}
else if (zs[0].EndsWith("R"))
{
string tdh, jg;
tdh = zs[2];
jg = zs[3];
sampledate = DateTime.Parse(zs[12].Substring(0,10));
if (YiQi.Base.Lis_result.canmodifybyjytm(_yqbm, sampledate, sampleno))
{
YiQi.Base.Lis_result.addresult(sampledate, _yqbm, sampleno, tdh, jg);
}
}
}
else if (msgtype == "query")
{
if (zs[0] == "2Q")
{
sampleno = zs[4];
bno = zs[2];
eno = zs[3];
bt = zs[6];
et = zs[7];
querytime = zs[6];
Lis_RiZhi.resultlog(sampleno);
Lis_RiZhi.resultlog(bno);
Lis_RiZhi.resultlog(eno);
Lis_RiZhi.resultlog(bt);
Lis_RiZhi.resultlog(et);
//string sj = zs[7];
//sampledate = DateTime.Parse(sj.Substring(0, 4) + "-" + sj.Substring(4, 2) + "-" + sj.Substring(6));
continue;
}
}
continue;
}
//接受消息
if (msgtype == "sendmsg")
YiQi.Base.Lis_result.calcsample(_yqbm, sampledate.Date, sampleno);
else if (msgtype == "query")
{
if (sampleno.Length == 12)
{
Lis_RiZhi.resultlog("有条码,通过条码获取!");
var vserver = ServiceContainer.GetService<IJianYan>();
var yhxx = vserver.getjyyhxxbytm(sampleno);
if (yhxx == null)
{
Lis_RiZhi.resultlog("没有申请单");
break;
}
else
{
string lisfile = Application.StartupPath + "\\result";
if (!Directory.Exists(lisfile))
{
Directory.CreateDirectory(lisfile);
}
lisfile += "\\lis.txt";
StreamWriter sw = new StreamWriter(lisfile, false, Encoding.Default);
sw.Write(enq + "$#$" + stx);
string h = "1H|\\^&|||sancailis|||||LIS||QRES|E1394-97|" + DateTime.Now.ToString("yyyyMMddHHmmss") + "" + cr + etx;
sw.Write(h);
sw.Write(getcs(h));
sw.Write(cr + lf);
sw.Write("$#$");
sw.Write(stx);
h = "2P|1|" + yhxx.tm + "|||" + yhxx.xm + "|||" + yhxx.xb + "||||||" + yhxx.nl + "^岁" + cr + etx;
sw.Write(h);
sw.Write(getcs(h));
sw.Write(cr + lf);
sw.Write("$#$");
sw.Write(stx);
h = "3O|1|" + yhxx.jytm + "^" + yhxx.bbh + "^0^0^0||";
var lisxm = vserver.getjyxmbytm(sampleno, _yqbm);
Lis_RiZhi.resultlog(lisfile);
lisxm.ForEach(t =>
{
h += t.tdh + "\\";
});
h= h.TrimEnd('\\');
h += "|R|" + yhxx.jyrq.ToString("yyyy-MM-dd") + "|||||||||0||||||||||F" + cr + etx;
sw.Write(h);
sw.Write(getcs(h));
sw.Write(cr + lf);
sw.Write("$#$");
sw.Write(stx + "4L|1|N" + cr + etx + "07" + cr + lf);
sw.Write("$#$" + eot);
sw.Close();
Lis_RiZhi.resultlog("输出成功!");
}
}
else
{
if (bno != "0" && eno != "0" && (int.Parse(eno) >= int.Parse(bno)))
{
for (int i = int.Parse(bno); i <= int.Parse(eno); i++)
{
var vserver = ServiceContainer.GetService<IJianYan>();
var yhxx = vserver.getjyyhxxbybbh(i,querytime,_yqbm);
if (yhxx == null)
{
Lis_RiZhi.resultlog("没有申请单");
break;
}
else
{
string lisfile = Application.StartupPath + "\\result";
if (!Directory.Exists(lisfile))
{
Directory.CreateDirectory(lisfile);
}
lisfile += "\\lis.txt";
StreamWriter sw = new StreamWriter(lisfile, false, Encoding.Default);
sw.Write(enq + "$#$" + stx);
string h = "1H|\\^&|||sancailis|||||LIS||QRES|E1394-97|" + DateTime.Now.ToString("yyyyMMddHHmmss") + "" + cr + etx;
sw.Write(h);
sw.Write(getcs(h));
sw.Write(cr + lf);
sw.Write("$#$");
sw.Write(stx);
h = "2P|1|" + yhxx.tm + "|||" + yhxx.xm + "|||" + yhxx.xb + "||||||" + yhxx.nl + "^岁" + cr + etx;
sw.Write(h);
sw.Write(getcs(h));
sw.Write(cr + lf);
sw.Write("$#$");
sw.Write(stx);
h = "3O|1|" + yhxx.jytm + "^" + yhxx.bbh + "^0^0^0||";
var lisxm = vserver.getjyxmbytm(yhxx.jytm, _yqbm);
Lis_RiZhi.resultlog(lisfile);
lisxm.ForEach(t =>
{
h += t.tdh + "\\";
});
h= h.TrimEnd('\\');
h += "|R|" + yhxx.jyrq.ToString("yyyy-MM-dd") + "|||||||||0||||||||||F" + cr + etx;
sw.Write(h);
sw.Write(getcs(h));
sw.Write(cr + lf);
sw.Write("$#$");
sw.Write(stx + "4L|1|N" + cr + etx + "07" + cr + lf);
sw.Write("$#$" + eot);
sw.Close();
Lis_RiZhi.resultlog("输出成功!");
Thread.Sleep(2000);
}
}
}
}
}
data = "";
}
}
}
private string getcs(string h)
{
byte[] bs = System.Text.Encoding.Default.GetBytes(h);
byte hh = bs[0];
for (int i = 1; i < bs.Length; i++)
{
hh += bs[i];
}
string s = hh.ToString("X2");
return s.ToLower();
}
}
}