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.

418 lines
18 KiB

  1. using NFine.Application.WMS;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.IO;
  6. using System.Linq;
  7. using System.Web;
  8. using System.Web.Mvc;
  9. using NFine.Code;
  10. using System.Data.SqlClient;
  11. using NFine.Data.Extensions;
  12. using System.Data.OleDb;
  13. using System.Configuration;
  14. using ICS.Application.Entity;
  15. using NFine.Domain._03_Entity.WMS;
  16. using System.Data.Common;
  17. using Newtonsoft.Json;
  18. namespace NFine.Web.Areas.WMS.Controllers
  19. {
  20. public class PrintController : ControllerBase
  21. {
  22. PrintApp App = new PrintApp();
  23. // GET: WMS/Print
  24. public ActionResult PrintView()
  25. {
  26. return View();
  27. }
  28. /// <summary>
  29. /// 打印数据参数:服务器的URL+打印的文件名,转化为Base64编码
  30. /// </summary>
  31. protected string strPrintData;
  32. /// <summary>
  33. /// 标识是否安装了控件
  34. /// </summary>
  35. protected bool bIsInstallPrintControl = true;
  36. /// <summary>
  37. /// 打印控件的Cookie值
  38. /// </summary>
  39. protected string strPrintControlCookie = "";
  40. /// <summary>
  41. /// 获取Url中去掉文件名的路径
  42. /// </summary>
  43. /// <returns></returns>
  44. private string GetUrlPath()
  45. {
  46. string strUrl = Request.Url.ToString();
  47. int iEnd = strUrl.LastIndexOf("/");
  48. strUrl = strUrl.Substring(0, iEnd + 1);
  49. return strUrl;
  50. }
  51. [HttpGet]
  52. [HandlerAjaxOnly]
  53. public ActionResult GetLableType()
  54. {
  55. DataTable dt = App.GetLableType();
  56. return Content(dt.ToJson());
  57. }
  58. [HttpGet]
  59. [HandlerAjaxOnly]
  60. public ActionResult GetLableSourceID()
  61. {
  62. DataTable dt = App.GetLableSourceID();
  63. return Content(dt.ToJson());
  64. }
  65. [HttpGet]
  66. [HandlerAjaxOnly]
  67. public ActionResult GetSys_LablesID(string LableType)
  68. {
  69. DataTable dt = App.GetSys_LablesID(LableType);
  70. return Content(dt.ToJson());
  71. }
  72. //打印
  73. [HttpPost]
  74. [HandlerAjaxOnly]
  75. public ActionResult PrintItemLot(string keyValue, string Parameter)
  76. {
  77. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  78. string ValueParameters = Parameter;
  79. string WorkPoint = "'"+NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',')+"'";
  80. string sqltxt = "";
  81. Parameter = Parameter.Substring(1, Parameter.Length - 3);
  82. var queryParam = keyValue.ToJObject();
  83. List<DbParameter> parameter = new List<DbParameter>();
  84. var Sys_LablesID = queryParam["Sys_LablesID"].ToString();
  85. List<PrintPara> parasList = new List<PrintPara>();
  86. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  87. string sqlValue = @"select LableSourceID,FileAddress,LableCode,LableName from Sys_Lables where ID='{0}'";
  88. sqlValue = string.Format(sqlValue, Sys_LablesID);
  89. DataRow drV = SqlHelper.GetDataRowBySql(sqlValue);
  90. string LableSourceID = drV["LableSourceID"].ToString();
  91. string FileAddress= drV["FileAddress"].ToString();
  92. string LableCode = drV["LableCode"].ToString();
  93. string LableName = drV["LableName"].ToString();
  94. string sqlLableDataSource = @"SELECT ID,WorkPointCode,OtherDataBaseID,WorkPointDataFlag,
  95. SysDataFlag,SqlTxt,SourceName,FormatSqlTxt,Paras,DbParas,LinkCols,CreateUserID,
  96. CreateDate,ModifyUserID,ModifyDate,Link2Cols FROM dbo.Sys_LableDataSource
  97. where ID='{0}'";
  98. sqlLableDataSource= string.Format(sqlLableDataSource, LableSourceID);
  99. DataRow dr = SqlHelper.GetDataRowBySql(sqlLableDataSource);
  100. #region 打印
  101. //string[] PrintParas = Parameter.Split('|');
  102. //string LinkCols = string.Empty;
  103. //foreach (var p in PrintParas)
  104. //{
  105. // sqltxt = dr["SqlTxt"].ToString();
  106. // LinkCols= dr["LinkCols"].ToString();
  107. // if (dr["Paras"].ToString() != "")
  108. // {
  109. // string[] ps = dr["Paras"].ToString().Split(',');
  110. // for (int i = 0; i < ps.Length; i++)
  111. // {
  112. // if (!string.IsNullOrEmpty(ps[i]))
  113. // {
  114. // sqltxt = sqltxt.Replace(ps[i], p.ToString());
  115. // }
  116. // }
  117. // }
  118. // if (sqltxt.Contains("[WorkPoint]"))
  119. // {
  120. // sqltxt = sqltxt.Replace("[WorkPoint]", WorkPoint);
  121. // }
  122. //}
  123. #endregion
  124. string[] PrintParas = Parameter.Split('|');
  125. string LinkCols = string.Empty;
  126. string SourceName= dr["SourceName"].ToString();
  127. string Paras = dr["Paras"].ToString();
  128. sqltxt = dr["SqlTxt"].ToString();
  129. LinkCols = dr["LinkCols"].ToString();
  130. if (dr["Paras"].ToString() != "")
  131. {
  132. string[] ps = dr["Paras"].ToString().Split(',');
  133. for (int i = 0; i < ps.Length; i++)
  134. {
  135. if (!string.IsNullOrEmpty(ps[i]))
  136. {
  137. sqltxt = sqltxt.Replace(ps[i], PrintParas[i]);
  138. }
  139. }
  140. }
  141. if (sqltxt.Contains("[WorkPoint]"))
  142. {
  143. sqltxt = sqltxt.Replace("[WorkPoint]", WorkPoint);
  144. }
  145. string strPrintFileName = Server.MapPath("/File/LablesFile/") + ""+ FileAddress + "";
  146. PrintJson pJson = new PrintJson(Server.MapPath("./PrintTemp"), strPrintFileName);
  147. pJson.CheckRegister("苏州智合诚信息科技有限公司", "56DD3B4C172D0D140841CAC98A58A819F4E28EDA5D6E45711DDD64F6A439F68B6A7870CD7DAFD69A919CB870207FE4BB206F92BE3D53C221B019E0797E739EBA4"); //注册信息
  148. if (LinkCols!="")
  149. {
  150. pJson.MasterOptions(1, ""+ LinkCols + "", false); //主从关系
  151. }
  152. //pJson.CheckRegister("注册姓名", "8ECCCD6A1302DFEE1A6456A5D"); //注册信息
  153. //pJson.AddPrintParam("ShopName", "测试酒楼");
  154. //pJson.AddPrintParam("PrintDepositAdd", "说明:本单据为贵客押金收取凭证,盖章有效。退房时请出示,遗失者自负,请妥善保存。退房时间为12:00时,延时退房18:00时以前按半天房费收取,18:00时以后算全天房价。押金单有效期为一个月,过期作废。 贵重物品请交前台寄存,未寄存丢失自负。 谢谢!");
  155. SetCookieAndURL(pJson);// 设置控件调用的Cookie值,判断是否安装了打印控件
  156. string strSql = sqltxt;
  157. //DataTable dtCashLog = DbHelper.ExecuteTable(DbHelper.ConnectionString, CommandType.Text, strSql, true, null);
  158. DataSet dtCashLog = DbHelper.GetDataSet( CommandType.Text, strSql);
  159. DataTable dt1 = null;
  160. DataTable dt2 = null;
  161. DataTable dt3 = null;
  162. string strPrintTempFile = "";
  163. if (dtCashLog.Tables.Count > 0 && dtCashLog.Tables.Count <= 1)
  164. {
  165. dt1 = dtCashLog.Tables[0];
  166. strPrintTempFile = pJson.ShowReport(dt1);
  167. }
  168. if (dtCashLog.Tables.Count > 1 && dtCashLog.Tables.Count<=2)
  169. {
  170. dt1 = dtCashLog.Tables[0];
  171. dt2 = dtCashLog.Tables[1];
  172. strPrintTempFile = pJson.ShowReport(dt1,dt2);
  173. }
  174. if (dtCashLog.Tables.Count > 2)
  175. {
  176. dt1 = dtCashLog.Tables[0];
  177. dt2 = dtCashLog.Tables[1];
  178. dt3 = dtCashLog.Tables[2];
  179. strPrintTempFile = pJson.ShowReport(dt1, dt2,dt3);
  180. }
  181. //string strPrintTempFile = pJson.ShowReport(dt1, dt2); //产生JSON文件内容
  182. //把服务器的URL + 此文件名 传递给控件,由控件下载还原数据进行打印
  183. string strServerURL = GetUrlPath() + "PrintTemp/";
  184. string strData = strServerURL + strPrintTempFile;
  185. strPrintData = PrintFunction.EnBase64(strData);
  186. var JsonData = new
  187. {
  188. strPrintData_1 = strPrintData,
  189. bIsInstallPrintControl_1 = bIsInstallPrintControl,
  190. strPrintControlCookie_1 = strPrintControlCookie
  191. };
  192. //打印记录
  193. //string sql = @"insert into Sys_LableTask (ID, LableCode, LableName, PrintTableID, PrintTableName, PrintKey, ValueParameters, PrintDate, PrintUserCode, WorkPoint)
  194. // values(newid(),'{0}','{1}','{2}','{3}','{4}','{5}',getdate(),'{6}',{7})";
  195. //sql = string.Format(sql, LableCode, LableName, LableSourceID, SourceName, Paras, ValueParameters, MUSER, WorkPoint);
  196. //SqlHelper.ExecuteNonQuery(sql);
  197. //多站点
  198. //string sql = @"UPDATE dbo.ICSInventoryLot
  199. // SET PrintTimes=ISNULL(PrintTimes,0)+1,
  200. // LastPrintUser='',
  201. // LastPrintTime=GETDATE()
  202. // WHERE ID IN (" + keyValue.TrimEnd(',') + ") and WorkPoint in ('" + WorkPoint.TrimEnd(',') + "')";
  203. //SqlHelper.ExecuteNonQuery(sql);
  204. return Content(JsonData.ToJson());
  205. }
  206. [HttpPost]
  207. [HandlerAjaxOnly]
  208. public ActionResult YLPrintItemLot(string keyValue, string Parameter)
  209. {
  210. string WorkPoint = "'" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + "'";
  211. string sqltxt = "";
  212. //Parameter = Parameter.Substring(1, Parameter.Length - 3);
  213. var queryParam = keyValue.ToJObject();
  214. List<DbParameter> parameter = new List<DbParameter>();
  215. var Sys_LablesID = queryParam["Sys_LablesID"].ToString();
  216. List<PrintPara> parasList = new List<PrintPara>();
  217. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  218. string sqlValue = @"select LableSourceID,FileAddress from Sys_Lables where ID='{0}'";
  219. sqlValue = string.Format(sqlValue, Sys_LablesID);
  220. DataRow drV = SqlHelper.GetDataRowBySql(sqlValue);
  221. string LableSourceID = drV["LableSourceID"].ToString();
  222. string FileAddress = drV["FileAddress"].ToString();
  223. string sqlLableDataSource = @"SELECT ID,WorkPointCode,OtherDataBaseID,WorkPointDataFlag,
  224. SysDataFlag,SqlTxt,SourceName,FormatSqlTxt,Paras,DbParas,LinkCols,CreateUserID,
  225. CreateDate,ModifyUserID,ModifyDate,Link2Cols FROM dbo.Sys_LableDataSource
  226. where ID='{0}'";
  227. sqlLableDataSource = string.Format(sqlLableDataSource, LableSourceID);
  228. DataRow dr = SqlHelper.GetDataRowBySql(sqlLableDataSource);
  229. string LinkCols = string.Empty;
  230. LinkCols = dr["LinkCols"].ToString();
  231. string strPrintFileName = Server.MapPath("/File/LablesFile/") + "" + FileAddress + "";
  232. PrintJson pJson = new PrintJson(Server.MapPath("./PrintTemp"), strPrintFileName);
  233. pJson.CheckRegister("苏州智合诚信息科技有限公司", "56DD3B4C172D0D140841CAC98A58A819F4E28EDA5D6E45711DDD64F6A439F68B6A7870CD7DAFD69A919CB870207FE4BB206F92BE3D53C221B019E0797E739EBA4"); //注册信息
  234. if (LinkCols != "")
  235. {
  236. pJson.MasterOptions(1, "" + LinkCols + "", false); //主从关系
  237. }
  238. //pJson.CheckRegister("注册姓名", "8ECCCD6A1302DFEE1A6456A5D"); //注册信息
  239. //pJson.AddPrintParam("ShopName", "测试酒楼");
  240. //pJson.AddPrintParam("PrintDepositAdd", "说明:本单据为贵客押金收取凭证,盖章有效。退房时请出示,遗失者自负,请妥善保存。退房时间为12:00时,延时退房18:00时以前按半天房费收取,18:00时以后算全天房价。押金单有效期为一个月,过期作废。 贵重物品请交前台寄存,未寄存丢失自负。 谢谢!");
  241. SetCookieAndURL(pJson);// 设置控件调用的Cookie值,判断是否安装了打印控件
  242. string strSql = sqltxt;
  243. //DataTable dtCashLog = DbHelper.ExecuteTable(DbHelper.ConnectionString, CommandType.Text, strSql, true, null);
  244. //DataSet dtCashLog = DbHelper.GetDataSet(CommandType.Text, strSql);
  245. //var jsonData = $"[{Parameter}]";
  246. //DataTable dt1 = JsonConvert.DeserializeObject<DataTable>(jsonData);
  247. DataTable dt1 = JsonConvert.DeserializeObject<DataTable>(Parameter);
  248. string strPrintTempFile = "";
  249. //if (dtCashLog.Tables.Count > 0 && dtCashLog.Tables.Count <= 1)
  250. //{
  251. // dt1 = dtCashLog.Tables[0];
  252. strPrintTempFile = pJson.ShowReport(dt1);
  253. //}
  254. //if (dtCashLog.Tables.Count > 1 && dtCashLog.Tables.Count <= 2)
  255. //{
  256. // dt1 = dtCashLog.Tables[0];
  257. // dt2 = dtCashLog.Tables[1];
  258. // strPrintTempFile = pJson.ShowReport(dt1, dt2);
  259. //}
  260. //if (dtCashLog.Tables.Count > 2)
  261. //{
  262. // dt1 = dtCashLog.Tables[0];
  263. // dt2 = dtCashLog.Tables[1];
  264. // dt3 = dtCashLog.Tables[2];
  265. // strPrintTempFile = pJson.ShowReport(dt1, dt2, dt3);
  266. //}
  267. //string strPrintTempFile = pJson.ShowReport(dt1, dt2); //产生JSON文件内容
  268. //把服务器的URL + 此文件名 传递给控件,由控件下载还原数据进行打印
  269. string strServerURL = GetUrlPath() + "PrintTemp/";
  270. string strData = strServerURL + strPrintTempFile;
  271. strPrintData = PrintFunction.EnBase64(strData);
  272. var JsonData = new
  273. {
  274. strPrintData_1 = strPrintData,
  275. bIsInstallPrintControl_1 = bIsInstallPrintControl,
  276. strPrintControlCookie_1 = strPrintControlCookie
  277. };
  278. //多站点
  279. //string sql = @"UPDATE dbo.ICSInventoryLot
  280. // SET PrintTimes=ISNULL(PrintTimes,0)+1,
  281. // LastPrintUser='',
  282. // LastPrintTime=GETDATE()
  283. // WHERE ID IN (" + keyValue.TrimEnd(',') + ") and WorkPoint in ('" + WorkPoint.TrimEnd(',') + "')";
  284. //SqlHelper.ExecuteNonQuery(sql);
  285. return Content(JsonData.ToJson());
  286. }
  287. /// <summary>
  288. /// 设置控件调用的Cookie值,判断是否安装了打印控件....
  289. /// </summary>
  290. /// <param name="pJson"></param>
  291. private void SetCookieAndURL(PrintJson pJson)
  292. {
  293. bIsInstallPrintControl = false;
  294. strPrintControlCookie = "";
  295. HttpCookie pCookieInstall = Request.Cookies["InstallPrintControl"];
  296. if (pCookieInstall != null)
  297. { //Cookie存在
  298. strPrintControlCookie = pCookieInstall.Value.ToString();
  299. //以Cookie值查找在数据表中是否存在
  300. string strSql = @"Select * From sys_SRM_CheckInstall Where Cookie = @Cookie";
  301. SqlParameter[] pmcCookie = { new SqlParameter("Cookie", strPrintControlCookie) };
  302. using (SqlDataReader drCookie = DbHelper.ExecuteReader(DbHelper.ConnectionString, CommandType.Text, strSql, pmcCookie))
  303. {
  304. if (drCookie.Read())
  305. { //标识为已经安装
  306. bIsInstallPrintControl = true;
  307. }
  308. drCookie.Close();
  309. }
  310. //更新Cookie的保存时间
  311. pCookieInstall.Expires = DateTime.Now.AddYears(10);
  312. Response.SetCookie(pCookieInstall);
  313. }
  314. else
  315. {//Cookie不存在,则新建Cookie
  316. strPrintControlCookie = System.Guid.NewGuid().ToString();
  317. pCookieInstall = new HttpCookie("InstallPrintControl", strPrintControlCookie);
  318. pCookieInstall.Expires = DateTime.Now.AddYears(10);
  319. Response.Cookies.Add(pCookieInstall);
  320. }
  321. string strUrl = Server.MapPath("/PrintTemp/") + "IsCheckInstall";
  322. pJson.SetCookieAndURL(strPrintControlCookie, strUrl);
  323. }
  324. [HttpGet]
  325. public ActionResult SelectColumnName(string BeginTime, string EndTime)
  326. {
  327. var data = App.SelectColumnName(BeginTime, EndTime);
  328. return Content(data.ToJson());
  329. }
  330. [HttpGet]
  331. public ActionResult SelectTableColumnName(string BeginTime, string EndTime)
  332. {
  333. var data = App.SelectTableColumnName(BeginTime, EndTime);
  334. return Content(data.ToJson());
  335. }
  336. [HttpGet]
  337. public ActionResult GetCnValue(string Code)
  338. {
  339. string sql = string.Empty;
  340. try
  341. {
  342. string str = App.GetCnValue(Code);
  343. var JsonData = new
  344. {
  345. content = str
  346. };
  347. return Content(JsonData.ToJson());
  348. }
  349. catch (Exception ex)
  350. {
  351. return Error(ex.Message);
  352. }
  353. }
  354. [HttpGet]
  355. [HandlerAjaxOnly]
  356. public ActionResult updatePrintStatus(string LotNo)
  357. {
  358. string msg = App.updatePrintStatus(LotNo);
  359. if (!string.IsNullOrEmpty(msg))
  360. {
  361. return Error(msg);
  362. }
  363. else
  364. {
  365. return Success("打印人、打印次数、打印时间更新成功!");
  366. }
  367. }
  368. }
  369. }