spt/SoM_PrnControl/EpsonPrinterTMM30Service.cs
2025-09-19 18:34:20 +09:00

182 lines
17 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.IO;
using System.Net;
using System.Text;
using MySql.Data.MySqlClient;
namespace SoM_PrnControl;
public class EpsonPrinterTMM30Service
{
private string printerIpAddress;
private string deviceId;
private int timeout;
public EpsonPrinterTMM30Service(string ipAddress, string deviceId, int timeout)
{
printerIpAddress = ipAddress;
this.deviceId = deviceId;
this.timeout = timeout;
}
public string PrintXml(string soapRequest)
{
try
{
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://" + printerIpAddress + "/cgi-bin/epos/service.cgi?devid=local_printer&timeout=10000");
httpWebRequest.Method = "POST";
httpWebRequest.ContentType = "text/xml";
Console.WriteLine("SOAP Request:");
Console.WriteLine(soapRequest);
using (Stream stream = httpWebRequest.GetRequestStream())
{
byte[] bytes = Encoding.UTF8.GetBytes(soapRequest);
stream.Write(bytes, 0, bytes.Length);
}
using HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using Stream stream2 = httpWebResponse.GetResponseStream();
StreamReader streamReader = new StreamReader(stream2, Encoding.UTF8);
string text = streamReader.ReadToEnd();
Console.WriteLine("SOAP Response:");
Console.WriteLine(text);
return text;
}
catch (Exception ex)
{
Console.WriteLine("エラー: " + ex.Message);
}
return "";
}
public void PrinterPapperCheck(string status, string park_id, MySqlConnection DBconnect)
{
uint num = uint.Parse(status);
string text = "";
string text2 = "";
string text3 = "";
if ((num & 0x20000) != 0)
{
text = "104";
text2 = "用紙残量少";
text3 = "プリンタ用紙を確認し、必要に応じて交換してください。";
InsertOperatorQue(park_id, text, text2, text3, DBconnect);
}
}
public string PrinterErrorHandling(string status, string park_id, MySqlConnection DBconnect)
{
uint num = uint.Parse(status);
string text = "";
string text2 = "";
string text3 = "";
string text4 = "";
if ((num & 1) != 0)
{
text = "102";
text2 = "TM プリンター無応答";
text3 = "プリンタを確認し、必要に応じて再起動してください。";
InsertOperatorQue(park_id, text, text2, text3, DBconnect);
}
if ((num & 8) != 0)
{
text = "102";
text2 = "プリンターオフライン";
text3 = "プリンタの接続を確認してください。";
InsertOperatorQue(park_id, text, text2, text3, DBconnect);
}
if ((num & 0x40) != 0 || (num & 0x200) != 0)
{
text = "102";
text2 = "紙送りスイッチ動作不良";
text3 = "紙送りスイッチを確認してください。";
InsertOperatorQue(park_id, text, text2, text3, DBconnect);
}
if ((num & 0x400) != 0)
{
text = "102";
text2 = "メカニカルエラー";
text3 = "プリンタが故障している可能性があります。";
InsertOperatorQue(park_id, text, text2, text3, DBconnect);
}
if ((num & 0x800) != 0)
{
text = "102";
text2 = "オートカッター動作不良";
text3 = "オートカッターが故障している可能性があります。";
InsertOperatorQue(park_id, text, text2, text3, DBconnect);
}
if ((num & 0x2000) != 0)
{
text = "102";
text2 = "復帰不可能エラー発生";
text3 = "プリンタに重大な問題が発生しています。";
InsertOperatorQue(park_id, text, text2, text3, DBconnect);
}
if ((num & 0x4000) != 0)
{
text = "102";
text2 = "自動復帰エラー";
text3 = "プリンタを手動で再起動してください。";
InsertOperatorQue(park_id, text, text2, text3, DBconnect);
}
if ((num & 0x80000) != 0)
{
text = "105";
text2 = "プリンタ用紙切れ";
text3 = "用紙を交換してください。";
InsertOperatorQue(park_id, text, text2, text3, DBconnect);
}
if ((num & 1) != 0 || (num & 8) != 0 || (num & 0x40) != 0 || (num & 0x200) != 0 || (num & 0x400) != 0 || (num & 0x800) != 0 || (num & 0x2000) != 0 || (num & 0x4000) != 0)
{
text4 = "pic_kessai_err_00.png";
}
if ((num & 0x80000) != 0)
{
text4 = "pic_kessai_err_p_out.png";
}
if ((num & 0x20) != 0)
{
text4 = "pic_kessai_err_c_open.png";
}
Console.Write(text4);
return text4;
}
private void InsertOperatorQue(string park_id, string que_class, string que_comment, string work_instructions, MySqlConnection DBconnect)
{
Console.WriteLine("parkId: " + park_id);
Console.WriteLine("queClass: " + que_class);
Console.WriteLine("queComment: " + que_comment);
Console.WriteLine("workInstructions: " + work_instructions);
string cmdText = "INSERT INTO operator_que (user_id, contract_id, park_id, que_class, que_comment, que_status, created_at, updated_at, operator_id, work_instructions) VALUES (NULL, NULL, @parkId, @queClass, @queComment, 1, NOW(), NOW(), NULL, @workInstructions)";
MySqlCommand mySqlCommand = new MySqlCommand(cmdText, DBconnect);
mySqlCommand.Parameters.AddWithValue("@parkId", park_id);
mySqlCommand.Parameters.AddWithValue("@queClass", que_class);
mySqlCommand.Parameters.AddWithValue("@queComment", que_comment);
mySqlCommand.Parameters.AddWithValue("@workInstructions", work_instructions);
mySqlCommand.ExecuteNonQuery();
}
public string GenerateSoapRequestPayee1(string username, string seven_no, string amount, string park_name, string userttype_subject1, string enable_months, string payment_due, string pay_code, string payee_name, string phone_number)
{
return "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">\r\n <s:Body>\r\n<epos-print xmlns=\"http://www.epson-pos.com/schemas/2011/03/epos-print\">\r\n<text lang=\"ja\"/>\r\n<text smooth=\"true\"/>\r\n<text font=\"font_a\"/>\r\n<feed unit=\"10\"/>\r\n<text align=\"center\"/>\r\n<text dw=\"false\" dh=\"true\"/>\r\n<text>【払込票】&#10;</text>\r\n<feed unit=\"10\"/>\r\n<text>受付方法:現金支払&#10;</text>\r\n<feed unit=\"10\"/>\r\n<text>お客様名:" + username + "\u3000様&#10;</text>\r\n<feed unit=\"10\"/>\r\n<text>払込先名:" + payee_name + "&#10;</text>\r\n<text>(収納代行ウェルネット)&#10;</text>\r\n<feed/>\r\n<text width=\"1\" height=\"1\"/>\r\n<text align=\"left\"/>\r\n<text>【セブンイレブンでのお支払い】&#10;. レジスタッフに「インターネット代金支払」をお申し出ください。&#10;.13桁の「" + seven_no + "」をレジスタッフに伝えお支払ください。&#10;</text>\r\n<feed/>\r\n<text align=\"center\"/>\r\n<text width=\"1\" height=\"2\"/>\r\n<feed unit=\"20\"/>\r\n<text>払込票番号&#10;</text>\r\n<text width=\"2\" height=\"4\"/>\r\n<text reverse=\"false\" ul=\"true\" em=\"true\" color=\"color_1\"/>\r\n<text>" + seven_no + "&#10;</text>\r\n<text reverse=\"false\" ul=\"false\" em=\"false\" color=\"color_1\"/>\r\n<feed unit=\"30\"/>\r\n<text width=\"2\" height=\"3\"/>\r\n<text>払込金額&#10;</text>\r\n<text reverse=\"false\" ul=\"true\" em=\"true\" color=\"color_1\"/>\r\n<text>" + amount + "円&#10;</text>\r\n<text reverse=\"false\" ul=\"false\" em=\"false\" color=\"color_1\"/>\r\n<feed unit=\"10\"/>\r\n<text width=\"1\" height=\"2\"/>\r\n<text>" + park_name + "&#10;</text>\r\n<text>" + userttype_subject1 + "" + enable_months + "ヶ月&#10;</text>\r\n<text>支払期限&#10;</text>\r\n<text reverse=\"false\" ul=\"true\" em=\"true\" color=\"color_1\"/>\r\n<text>" + payment_due + "&#10;</text>\r\n<text reverse=\"false\" ul=\"false\" em=\"false\" color=\"color_1\"/>\r\n<text>※期限が切れた場合、下記連絡先にご連絡下さい。&#10;</text>\r\n<feed/>\r\n<text width=\"1\" height=\"2\"/>\r\n<text>株式会社ソーリン\u3000サポートセンター&#10;</text>\r\n<text>" + phone_number + "&#10;</text>\r\n<feed/>\r\n<cut type=\"feed\"/>\r\n<feed/>\r\n</epos-print>\r\n\r\n </s:Body>\r\n </s:Envelope>";
}
public string GenerateSoapRequestPayee2(string username, string paycode, string amount, string park_name, string userttype_subject1, string enable_months, string payment_due, string pay_code, string payee_name, string phone_number)
{
return "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">\r\n <s:Body>\r\n<epos-print xmlns=\"http://www.epson-pos.com/schemas/2011/03/epos-print\">\r\n<text lang=\"ja\"/>\r\n<text smooth=\"true\"/>\r\n<text font=\"font_a\"/>\r\n<feed unit=\"10\"/>\r\n<text align=\"center\"/>\r\n<text dw=\"false\" dh=\"true\"/>\r\n<text>【払込票】&#10;</text>\r\n<feed unit=\"10\"/>\r\n<text>受付方法:現金支払&#10;</text>\r\n<feed unit=\"10\"/>\r\n<text>お客様名:" + username + "\u3000様&#10;</text>\r\n<feed unit=\"10\"/>\r\n<text>払込先名:" + payee_name + "&#10;</text>\r\n<text>(収納代行ウェルネット)&#10;</text>\r\n<text width=\"1\" height=\"1\"/>\r\n<text align=\"left\"/>\r\n<text>【ファミリーマートでのお支払い】&#10;.マルチコピー機の画面から「コンビニでお支払い」のボタンを押します&#10;.「番号入力」を選択します&#10;.お客様番号 (" + paycode + ") を入力し、次の画面へ\u3000※入力時ハイフンは省く&#10;.確認番号 (" + pay_code + ") を入力し、次の画面へ&#10;.表示された画面を確認し、次の画面へ。申込券が発券されます。&#10;.30分以内にレジにてお支払い下さい。レシート・受領書を必ずお受け取りください。&#10;</text>\r\n<feed/>\r\n<text align=\"center\"/>\r\n<text width=\"1\" height=\"2\"/>\r\n<feed unit=\"20\"/>\r\n<text>払込票番号&#10;</text>\r\n<text width=\"2\" height=\"4\"/>\r\n<text reverse=\"false\" ul=\"true\" em=\"true\" color=\"color_1\"/>\r\n<text>" + paycode + "&#10;</text>\r\n<text reverse=\"false\" ul=\"false\" em=\"false\" color=\"color_1\"/>\r\n<text width=\"1\" height=\"2\"/>\r\n<feed unit=\"20\"/>\r\n<text>確認番号&#10;</text>\r\n<text width=\"2\" height=\"4\"/>\r\n<text reverse=\"false\" ul=\"true\" em=\"true\" color=\"color_1\"/>\r\n<text>" + pay_code + "&#10;</text>\r\n<text reverse=\"false\" ul=\"false\" em=\"false\" color=\"color_1\"/>\r\n<feed unit=\"30\"/>\r\n<text width=\"2\" height=\"3\"/>\r\n<text>払込金額&#10;</text>\r\n<text reverse=\"false\" ul=\"true\" em=\"true\" color=\"color_1\"/>\r\n<text>" + amount + "円&#10;</text>\r\n<text reverse=\"false\" ul=\"false\" em=\"false\" color=\"color_1\"/>\r\n<feed unit=\"10\"/>\r\n<text width=\"1\" height=\"2\"/>\r\n<text>" + park_name + "&#10;</text>\r\n<text>" + userttype_subject1 + "" + enable_months + "ヶ月&#10;</text>\r\n<text>支払期限&#10;</text>\r\n<text reverse=\"false\" ul=\"true\" em=\"true\" color=\"color_1\"/>\r\n<text>" + payment_due + "&#10;</text>\r\n<text reverse=\"false\" ul=\"false\" em=\"false\" color=\"color_1\"/>\r\n<text>※期限が切れた場合、下記連絡先にご連絡下さい。&#10;</text>\r\n<feed/>\r\n<text width=\"1\" height=\"2\"/>\r\n<text>株式会社ソーリン\u3000サポートセンター&#10;</text>\r\n<text>" + phone_number + "&#10;</text>\r\n<feed/>\r\n<cut type=\"feed\"/>\r\n<feed/>\r\n</epos-print>\r\n\r\n </s:Body>\r\n </s:Envelope>";
}
public string GenerateSoapRequestPayee3(string username, string paycode, string amount, string park_name, string userttype_subject1, string enable_months, string payment_due, string pay_code, string payee_name, string phone_number)
{
return "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">\r\n <s:Body>\r\n<epos-print xmlns=\"http://www.epson-pos.com/schemas/2011/03/epos-print\">\r\n<text lang=\"ja\"/>\r\n<text smooth=\"true\"/>\r\n<text font=\"font_a\"/>\r\n<feed unit=\"10\"/>\r\n<text align=\"center\"/>\r\n<text dw=\"false\" dh=\"true\"/>\r\n<text>【払込票】&#10;</text>\r\n<feed unit=\"10\"/>\r\n<text>受付方法:現金支払&#10;</text>\r\n<feed unit=\"10\"/>\r\n<text>お客様名:" + username + "\u3000様&#10;</text>\r\n<feed unit=\"10\"/>\r\n<text>払込先名:" + payee_name + "&#10;</text>\r\n<text>(収納代行ウェルネット)&#10;</text>\r\n<feed/>\r\n<text width=\"1\" height=\"1\"/>\r\n<text align=\"left\"/>\r\n<text>【デイリーヤマザキでのお支払い】&#10;.店員に「オンライン決済」とお申し出下さい&#10;.レジの客面タッチパネルで" + paycode + "を入力「確定」ボタンをタッチ&#10;.画面に表示される内容、金額を確認後「確定」ボタンをタッチ&#10;.レシート・領収書(ご案内)は必ずお受け取り下さい&#10;</text>\r\n<feed/>\r\n<text align=\"center\"/>\r\n<text width=\"1\" height=\"2\"/>\r\n<feed unit=\"20\"/>\r\n<text>払込票番号&#10;</text>\r\n<text width=\"2\" height=\"4\"/>\r\n<text reverse=\"false\" ul=\"true\" em=\"true\" color=\"color_1\"/>\r\n<text>" + paycode + "&#10;</text>\r\n<text reverse=\"false\" ul=\"false\" em=\"false\" color=\"color_1\"/>\r\n<feed unit=\"30\"/>\r\n<text width=\"2\" height=\"3\"/>\r\n<text>払込金額&#10;</text>\r\n<text reverse=\"false\" ul=\"true\" em=\"true\" color=\"color_1\"/>\r\n<text>" + amount + "円&#10;</text>\r\n<text reverse=\"false\" ul=\"false\" em=\"false\" color=\"color_1\"/>\r\n<feed unit=\"10\"/>\r\n<text width=\"1\" height=\"2\"/>\r\n<text>" + park_name + "&#10;</text>\r\n<text>" + userttype_subject1 + "" + enable_months + "ヶ月&#10;</text>\r\n<text>支払期限&#10;</text>\r\n<text reverse=\"false\" ul=\"true\" em=\"true\" color=\"color_1\"/>\r\n<text>" + payment_due + "&#10;</text>\r\n<text reverse=\"false\" ul=\"false\" em=\"false\" color=\"color_1\"/>\r\n<text>※期限が切れた場合、下記連絡先にご連絡下さい。&#10;</text>\r\n<feed/>\r\n<text width=\"1\" height=\"2\"/>\r\n<text>株式会社ソーリン\u3000サポートセンター&#10;</text>\r\n<text>" + phone_number + "&#10;</text>\r\n<feed/>\r\n<cut type=\"feed\"/>\r\n<feed/>\r\n</epos-print>\r\n\r\n\r\n </s:Body>\r\n </s:Envelope>";
}
public string GenerateSoapRequestPayee4(string username, string paycode, string amount, string park_name, string userttype_subject1, string enable_months, string payment_due, string pay_code, string payee_name, string phone_number)
{
return "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">\r\n <s:Body>\r\n<epos-print xmlns=\"http://www.epson-pos.com/schemas/2011/03/epos-print\">\r\n<text lang=\"ja\"/>\r\n<text smooth=\"true\"/>\r\n<text font=\"font_a\"/>\r\n<feed unit=\"10\"/>\r\n<text align=\"center\"/>\r\n<text dw=\"false\" dh=\"true\"/>\r\n<text>【払込票】&#10;</text>\r\n<feed unit=\"10\"/>\r\n<text>受付方法:現金支払&#10;</text>\r\n<feed unit=\"10\"/>\r\n<text>お客様名:" + username + "\u3000様&#10;</text>\r\n<feed unit=\"10\"/>\r\n<text>払込先名:" + payee_name + "&#10;</text>\r\n<text>(収納代行ウェルネット)&#10;</text>\r\n<feed/>\r\n<text width=\"1\" height=\"1\"/>\r\n<text align=\"left\"/>\r\n<text>【ローソン、ミニストップでのお支払い】&#10;. Loppi端末から「各種番号をお持ちの方」のボタンを押します&#10;.お客様番号 (" + paycode + ") を入力し、次の画面へ\u3000※入力時ハイフンは省く&#10;.確認番号 (" + pay_code + ") を入力し、次の画面へ&#10;.表示された画面を確認し、次の画面へ。申込券が発券されます。&#10;.30分以内にレジにてお支払い下さい。受領証を必ずお受け取りください。&#10;</text>\r\n<feed/>\r\n<text align=\"center\"/>\r\n<text width=\"1\" height=\"2\"/>\r\n<feed unit=\"20\"/>\r\n<text>払込票番号&#10;</text>\r\n<text width=\"2\" height=\"4\"/>\r\n<text reverse=\"false\" ul=\"true\" em=\"true\" color=\"color_1\"/>\r\n<text>" + paycode + "&#10;</text>\r\n<text reverse=\"false\" ul=\"false\" em=\"false\" color=\"color_1\"/>\r\n<text width=\"1\" height=\"2\"/>\r\n<feed unit=\"20\"/>\r\n<text>確認番号&#10;</text>\r\n<text width=\"2\" height=\"4\"/>\r\n<text reverse=\"false\" ul=\"true\" em=\"true\" color=\"color_1\"/>\r\n<text>" + pay_code + "&#10;</text>\r\n<text reverse=\"false\" ul=\"false\" em=\"false\" color=\"color_1\"/>\r\n<feed unit=\"30\"/>\r\n<text width=\"2\" height=\"3\"/>\r\n<text>払込金額&#10;</text>\r\n<text reverse=\"false\" ul=\"true\" em=\"true\" color=\"color_1\"/>\r\n<text>" + amount + "円&#10;</text>\r\n<text reverse=\"false\" ul=\"false\" em=\"false\" color=\"color_1\"/>\r\n<feed unit=\"10\"/>\r\n<text width=\"1\" height=\"2\"/>\r\n<text>" + park_name + "&#10;</text>\r\n<text>" + userttype_subject1 + "" + enable_months + "ヶ月&#10;</text>\r\n<text>支払期限&#10;</text>\r\n<text reverse=\"false\" ul=\"true\" em=\"true\" color=\"color_1\"/>\r\n<text>" + payment_due + "&#10;</text>\r\n<text reverse=\"false\" ul=\"false\" em=\"false\" color=\"color_1\"/>\r\n<text>※期限が切れた場合、下記連絡先にご連絡下さい。&#10;</text>\r\n<feed/>\r\n<text width=\"1\" height=\"2\"/>\r\n<text align=\"center\"/>\r\n<text>株式会社ソーリン\u3000サポートセンター&#10;</text>\r\n<text>" + phone_number + "&#10;</text>\r\n<feed/>\r\n<cut type=\"feed\"/>\r\n<feed/>\r\n<text width=\"1\" height=\"1\"/>\r\n</epos-print>\r\n </s:Body>\r\n </s:Envelope>";
}
}