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.

854 lines
34 KiB

4 days ago
  1. using NFine.Application;
  2. using NFine.Code;
  3. using NFine.Data.Extensions;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Data.SqlClient;
  7. using System.Data;
  8. using System.IO;
  9. using System.Linq;
  10. using System.Web;
  11. using System.Web.Mvc;
  12. using NFine.Application.SRM;
  13. using NPOI.SS.Formula.Functions;
  14. namespace NFine.Web.Areas.SRM.Controllers
  15. {
  16. public class DHCreateItemLotController : ControllerBase
  17. {
  18. private DHCreateItemLotApp App = new DHCreateItemLotApp();
  19. [HttpGet]
  20. [HandlerAjaxOnly]
  21. public ActionResult GetGridJson(Pagination pagination, string queryJson)
  22. {
  23. DataTable ListData = App.GetGridJson(queryJson, ref pagination);
  24. var JsonData = new
  25. {
  26. total = pagination.total,
  27. page = pagination.page,
  28. records = pagination.records,
  29. rows = ListData,
  30. };
  31. return Content(JsonData.ToJson());
  32. }
  33. [HttpGet]
  34. [HandlerAjaxOnly]
  35. public ActionResult GetGridJsonWeiWai(Pagination pagination, string queryJson)
  36. {
  37. DataTable ListData = App.GetGridJsonWeiWai(queryJson, ref pagination);
  38. var JsonData = new
  39. {
  40. total = pagination.total,
  41. page = pagination.page,
  42. records = pagination.records,
  43. rows = ListData,
  44. };
  45. return Content(JsonData.ToJson());
  46. }
  47. [HttpGet]
  48. [HandlerAjaxOnly]
  49. public ActionResult GetSubGridJson(string POCode, string PORow, string WorkPoint, Pagination pagination)
  50. {
  51. DataTable ListData = App.GetSubGridJson(POCode, PORow, WorkPoint, ref pagination);
  52. var JsonData = new
  53. {
  54. total = pagination.total,
  55. page = pagination.page,
  56. records = pagination.records,
  57. rows = ListData,
  58. };
  59. return Content(JsonData.ToJson());
  60. }
  61. public ActionResult Index()
  62. {
  63. return View();
  64. }
  65. public ActionResult Form2()
  66. {
  67. return View();
  68. }
  69. public ActionResult Form3()
  70. {
  71. return View();
  72. }
  73. public ActionResult Form4()
  74. {
  75. return View();
  76. }
  77. //[HttpGet]
  78. //[HandlerAjaxOnly]
  79. //public ActionResult GetFormJson(string keyValue)
  80. //{
  81. // //var data = maintainAppApp.GetForm(keyValue);
  82. // //return Content(data.ToJson());
  83. //}
  84. [HttpPost]
  85. [HandlerAjaxOnly]
  86. [ValidateAntiForgeryToken]
  87. public ActionResult SubmitForm(string POCode, string PORow, string keyValue, string WorkPoint, string IsEable)
  88. {
  89. int i = App.CreateItemLotNo(POCode, PORow, keyValue, WorkPoint, IsEable);
  90. if (i > 0)
  91. {
  92. return Success("生成成功!");
  93. }
  94. else
  95. {
  96. return Error("生成失败!");
  97. }
  98. }
  99. [HttpPost]
  100. [HandlerAjaxOnly]
  101. [ValidateAntiForgeryToken]
  102. public ActionResult SubmitFormWeiWai(string OOCode, string Sequence, string keyValue, string WorkPoint, string IsEable)
  103. {
  104. int i = App.SubmitFormWeiWai(OOCode, Sequence, keyValue, WorkPoint, IsEable);
  105. if (i > 0)
  106. {
  107. return Success("生成成功!");
  108. }
  109. else
  110. {
  111. return Error("生成失败!");
  112. }
  113. }
  114. /// <summary>
  115. /// 点击生成条码查询
  116. /// </summary>
  117. /// <param name="POCode">采购订单</param>
  118. /// <param name="PORow">采购行</param>
  119. /// <param name="WorkPoint">多站点</param>
  120. /// <returns></returns>
  121. [HttpGet]
  122. [HandlerAjaxOnly]
  123. public ActionResult GetSubGridJsonByCreate(string POCode, string PORow, string WorkPoint)
  124. {
  125. DataTable ListData = App.GetSubGridJsonByCreate(POCode, PORow, WorkPoint);
  126. var JsonData = new
  127. {
  128. rows = ListData,
  129. };
  130. return Content(JsonData.ToJson());
  131. }
  132. /// <summary>
  133. /// 点击生成条码查询
  134. /// </summary>
  135. /// <param name="POCode">采购订单</param>
  136. /// <param name="PORow">采购行</param>
  137. /// <param name="WorkPoint">多站点</param>
  138. /// <returns></returns>
  139. [HttpGet]
  140. [HandlerAjaxOnly]
  141. public ActionResult GetSubGridJsonByCreateBYMore(string POCode, string PORow, string WorkPoint)
  142. {
  143. DataTable ListData = App.GetSubGridJsonByCreateBYMore(POCode, PORow, WorkPoint);
  144. var JsonData = new
  145. {
  146. rows = ListData,
  147. };
  148. return Content(JsonData.ToJson());
  149. }
  150. /// <summary>
  151. /// 点击生成条码查询
  152. /// </summary>
  153. /// <param name="POCode">采购订单</param>
  154. /// <param name="PORow">采购行</param>
  155. /// <param name="WorkPoint">多站点</param>
  156. /// <returns></returns>
  157. [HttpGet]
  158. [HandlerAjaxOnly]
  159. public ActionResult GetSubGridJsonByCreateWeiWai(string OOCode, string Sequence, string WorkPoint)
  160. {
  161. DataTable ListData = App.GetSubGridJsonByCreateWeiWai(OOCode, Sequence, WorkPoint);
  162. var JsonData = new
  163. {
  164. rows = ListData,
  165. };
  166. return Content(JsonData.ToJson());
  167. }
  168. [HttpGet]
  169. [HandlerAjaxOnly]
  170. public ActionResult GetSubGridJsonByCreateWeiWaiByMore(string OOCode, string Sequence, string WorkPoint)
  171. {
  172. DataTable ListData = App.GetSubGridJsonByCreateWeiWaiByMore(OOCode, Sequence, WorkPoint);
  173. var JsonData = new
  174. {
  175. rows = ListData,
  176. };
  177. return Content(JsonData.ToJson());
  178. }
  179. [HttpGet]
  180. [HandlerAjaxOnly]
  181. public ActionResult GetVendorLotNo(string InvCode, string WorkPoint)
  182. {
  183. DataTable ListData = App.GetVendorLotNo(InvCode, WorkPoint);
  184. var JsonData = new
  185. {
  186. VendorLotNo = ListData.Rows[0][0].ToString(),
  187. };
  188. return Content(JsonData.ToJson());
  189. }
  190. [HttpPost]
  191. [HandlerAjaxOnly]
  192. [ValidateAntiForgeryToken]
  193. public ActionResult DeleteItemLot(string keyValue, string WorkPoint)
  194. {
  195. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  196. WorkPoint = WorkPoint.Substring(1, WorkPoint.Length - 2);
  197. string msg = App.DeleteItemLot(keyValue, WorkPoint);
  198. if (string.IsNullOrWhiteSpace(msg))
  199. {
  200. return Success("删除成功!");
  201. }
  202. else
  203. {
  204. return Error(msg);
  205. }
  206. }
  207. /// <summary>
  208. /// 打印数据参数:服务器的URL+打印的文件名,转化为Base64编码
  209. /// </summary>
  210. protected string strPrintData;
  211. /// <summary>
  212. /// 标识是否安装了控件
  213. /// </summary>
  214. protected bool bIsInstallPrintControl = true;
  215. /// <summary>
  216. /// 打印控件的Cookie值
  217. /// </summary>
  218. protected string strPrintControlCookie = "";
  219. /// <summary>
  220. /// 获取Url中去掉文件名的路径
  221. /// </summary>
  222. /// <returns></returns>
  223. private string GetUrlPath()
  224. {
  225. string strUrl = Request.Url.ToString();
  226. int iEnd = strUrl.LastIndexOf("/");
  227. strUrl = strUrl.Substring(0, iEnd + 1);
  228. return strUrl;
  229. }
  230. /// <summary>
  231. /// 设置控件调用的Cookie值,判断是否安装了打印控件
  232. /// </summary>
  233. /// <param name="pJson"></param>
  234. private void SetCookieAndURL(PrintJson pJson)
  235. {
  236. bIsInstallPrintControl = false;
  237. strPrintControlCookie = "";
  238. HttpCookie pCookieInstall = Request.Cookies["InstallPrintControl"];
  239. if (pCookieInstall != null)
  240. { //Cookie存在
  241. strPrintControlCookie = pCookieInstall.Value.ToString();
  242. //以Cookie值查找在数据表中是否存在
  243. string strSql = @"Select * From sys_SRM_CheckInstall Where Cookie = @Cookie";
  244. SqlParameter[] pmcCookie = { new SqlParameter("Cookie", strPrintControlCookie) };
  245. using (SqlDataReader drCookie = DbHelper.ExecuteReader(DbHelper.ConnectionString, CommandType.Text, strSql, pmcCookie))
  246. {
  247. if (drCookie.Read())
  248. { //标识为已经安装
  249. bIsInstallPrintControl = true;
  250. }
  251. drCookie.Close();
  252. }
  253. //更新Cookie的保存时间
  254. pCookieInstall.Expires = DateTime.Now.AddYears(10);
  255. Response.SetCookie(pCookieInstall);
  256. }
  257. else
  258. {//Cookie不存在,则新建Cookie
  259. strPrintControlCookie = System.Guid.NewGuid().ToString();
  260. pCookieInstall = new HttpCookie("InstallPrintControl", strPrintControlCookie);
  261. pCookieInstall.Expires = DateTime.Now.AddYears(10);
  262. Response.Cookies.Add(pCookieInstall);
  263. }
  264. string strUrl = Server.MapPath("/PrintTemp/") + "IsCheckInstall";
  265. pJson.SetCookieAndURL(strPrintControlCookie, strUrl);
  266. }
  267. /// <summary>
  268. /// 生成条码打印
  269. /// </summary>
  270. /// <param name="keyValue">ID</param>
  271. /// <param name="WorkPoint">多站点</param>
  272. /// <returns></returns>
  273. [HttpPost]
  274. [HandlerAjaxOnly]
  275. public ActionResult PrintItemLot(string keyValue, string WorkPoint, string Type)
  276. {
  277. string strPrintTempFile = "";
  278. // string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  279. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  280. WorkPoint = WorkPoint.Substring(1, WorkPoint.Length - 2);
  281. string strPrintFileName = "";
  282. if (Type =="3"|| Type == "4")
  283. {
  284. strPrintFileName = Server.MapPath("/ReportFile/") + "lot1.fr3";
  285. }
  286. else
  287. {
  288. strPrintFileName = Server.MapPath("/ReportFile/") + "lot.fr3";
  289. }
  290. PrintJson pJson = new PrintJson(Server.MapPath("./PrintTemp"), strPrintFileName);
  291. pJson.CheckRegister("苏州智合诚信息科技有限公司", "56DD3B4C172D0D140841CAC98A58A819F4E28EDA5D6E45711DDD64F6A439F68B6A7870CD7DAFD69A919CB870207FE4BB206F92BE3D53C221B019E0797E739EBA4"); //注册信息
  292. //pJson.CheckRegister("注册姓名", "8ECCCD6A1302DFEE1A6456A5D"); //注册信息
  293. //pJson.AddPrintParam("ShopName", "测试酒楼");
  294. //pJson.AddPrintParam("PrintDepositAdd", "说明:本单据为贵客押金收取凭证,盖章有效。退房时请出示,遗失者自负,请妥善保存。退房时间为12:00时,延时退房18:00时以前按半天房费收取,18:00时以后算全天房价。押金单有效期为一个月,过期作废。 贵重物品请交前台寄存,未寄存丢失自负。 谢谢!");
  295. SetCookieAndURL(pJson);// 设置控件调用的Cookie值,判断是否安装了打印控件
  296. string strSql = "";
  297. if (Type == "1")
  298. {
  299. strSql = @"SELECT distinct b.ExtensionID,a.InvCode,a.LotNo AS QRLotNo,b.POCode,CONVERT(varchar(100),b.CreateDateTime, 23) PODate,g.BatchCode,a.Quantity,c.InvName,
  300. c.InvStd,
  301. c.ClassName,c.InvDesc,
  302. b.VenCode,h.VenName,c.InvUnit,f.WarehouseName,
  303. a.LotNO AS QRLotNo,CONVERT(varchar(100), a.ProductDate, 23) as PRODUCTDATE,CONVERT(varchar(100), b.PlanArriveDate, 23) as PreArriveDate
  304. ,CAST(b.VenCode+'_'+a.InvCode+'_'+CAST(a.Quantity AS NVARCHAR(20))+'_'+c.InvUnit+g.BatchCode+'_'+CONVERT(varchar(100), a.ProductDate, 23)+'_' +a.LotNo AS NVARCHAR(100)) AS erweima
  305. ,a.EATTRIBUTE3,CONVERT(varchar(100),dateadd(day,c.EffectiveDays,a.ProductDate), 23) AS exprdate,i.asnCode,RIGHT(a.LotNo, 3) as Siar
  306. FROM dbo.ICSInventoryLot a
  307. left join ICSExtension g on a.ExtensionID=g.ID and a.WorkPoint=g.WorkPoint
  308. left join ICSInventoryLotDetail e on a.lotNo=e.LotNo and a.WorkPoint=e.WorkPoint
  309. LEFT JOIN dbo.ICSPurchaseOrder b ON b.POCode=e.TransCode AND b.Sequence=e.TransSequence AND a.WorkPoint=e.WorkPoint
  310. LEFT JOIN dbo.ICSInventory c ON a.InvCode=c.InvCode AND a.WorkPoint=c.WorkPoint
  311. left join dbo.ICSInventoryBatchEnable d on c.InvCode=d.InvCode and c.WorkPoint=d.WorkPoint AND d.BatchEnable=1
  312. left join ICSWarehouse f on d.WHCode=f.WarehouseCode and d.WorkPoint=f.WorkPoint
  313. left join ICSVendor h on b.VenCode=h.VenCode and b.WorkPoint=h.WorkPoint
  314. LEFT JOIN icsasndetail i ON a.lotNO=i.LotNO AND a.workPoint=i.workPoint
  315. where a.ID IN (" + keyValue.TrimEnd(',') + ") and a.WorkPoint in ('" + WorkPoint.Trim(',') + "')";
  316. }
  317. if (Type == "2")
  318. {
  319. strSql = @"SELECT distinct b.ExtensionID,a.InvCode,a.LotNo AS QRLotNo,b.OOCode as POCode,CONVERT(varchar(100),b.CreateDateTime, 23) PODate,g.BatchCode,a.Quantity,c.InvName,
  320. c.InvStd,
  321. c.ClassName,c.InvDesc,
  322. b.VenCode,h.VenName,c.InvUnit,f.WarehouseName,
  323. a.LotNO AS QRLotNo,CONVERT(varchar(100), a.ProductDate, 23) as PRODUCTDATE,CONVERT(varchar(100), b.PlanArriveDate, 23) as PreArriveDate
  324. ,CAST(b.VenCode+'_'+a.InvCode+'_'+CAST(a.Quantity AS NVARCHAR(20))+'_'+c.InvUnit+g.BatchCode+'_'+CONVERT(varchar(100), a.ProductDate, 23)+'_' +a.LotNo AS NVARCHAR(100)) AS erweima
  325. ,a.EATTRIBUTE3,CONVERT(varchar(100),dateadd(day,c.EffectiveDays,a.ProductDate), 23) AS exprdate,i.OASNCode as asnCode,RIGHT(a.LotNo, 3) as Siar
  326. FROM dbo.ICSInventoryLot a
  327. left join ICSExtension g on a.ExtensionID=g.ID and a.WorkPoint=g.WorkPoint
  328. left join ICSInventoryLotDetail e on a.lotNo=e.LotNo and a.WorkPoint=e.WorkPoint
  329. LEFT JOIN dbo.ICSOutsourcingOrder b ON b.OOCode=e.TransCode AND b.Sequence=e.TransSequence AND a.WorkPoint=e.WorkPoint
  330. LEFT JOIN dbo.ICSInventory c ON a.InvCode=c.InvCode AND a.WorkPoint=c.WorkPoint
  331. left join dbo.ICSInventoryBatchEnable d on c.InvCode=d.InvCode and c.WorkPoint=d.WorkPoint
  332. left join ICSWarehouse f on d.WHCode=f.WarehouseCode and d.WorkPoint=f.WorkPoint
  333. left join ICSVendor h on b.VenCode=h.VenCode and b.WorkPoint=h.WorkPoint
  334. LEFT JOIN ICSOASNDetail i ON a.lotNO=i.LotNO AND a.workPoint=i.workPoint
  335. where a.ID IN (" + keyValue.TrimEnd(',') + ") and a.WorkPoint in ('" + WorkPoint.Trim(',') + "')";
  336. }
  337. if (Type == "3")
  338. {
  339. strSql = @"SELECT a.InvCode,b.InvName,LotNo AS QRLotNo,b.InvStd,a.TransCode,a.EATTRIBUTE10 AS EATTRIBUTE3,CONVERT(DECIMAL(16,1), a.Quantity) AS Quantity,CONVERT(varchar(100), a.ProductDate, 23) as PRODUCTDATE,c.VenCode,a.EATTRIBUTE9 as LPCode ,a.EATTRIBUTE8 as Remark,CONVERT(NVARCHAR(100), a.InvCode) + '#' +
  340. CONVERT(NVARCHAR(100), a.EATTRIBUTE10) + '#' +
  341. CONVERT(varchar(100), a.ProductDate, 23) + '#' +
  342. CONVERT(NVARCHAR(100), CONVERT(DECIMAL(16,1), a.Quantity)) AS ConcatenatedField
  343. FROM ICSFinishedProductShipment a
  344. LEFT JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  345. LEFT JOIN ICSPurchaseOrder c ON a.TransCode=c.PoCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
  346. where a.ID IN (" + keyValue.TrimEnd(',') + ") and a.WorkPoint in ('" + WorkPoint.Trim(',') + "')";
  347. }
  348. if( Type == "4")
  349. {
  350. strSql = @" SELECT a.InvCode,b.InvName,LotNo AS QRLotNo,b.InvStd,a.TransCode,a.EATTRIBUTE10 AS EATTRIBUTE3,CONVERT(DECIMAL(16,1), a.Quantity) AS Quantity,CONVERT(varchar(100), a.ProductDate, 23) as PRODUCTDATE,c.VenCode,a.EATTRIBUTE9 as LPCode ,a.EATTRIBUTE8 as Remark,
  351. CONVERT(NVARCHAR(100), a.InvCode) + '#' +
  352. CONVERT(NVARCHAR(100), a.EATTRIBUTE10) + '#' +
  353. CONVERT(varchar(100), a.ProductDate, 23) + '#' +
  354. CONVERT(NVARCHAR(100), CONVERT(DECIMAL(16,1), a.Quantity)) AS ConcatenatedField
  355. FROM ICSFinishedProductShipment a
  356. LEFT JOIN ICSInventory b ON a.InvCode = b.InvCode AND a.WorkPoint = b.WorkPoint
  357. LEFT JOIN ICSOutsourcingOrder c ON a.TransCode = c.OOCode AND a.TransSequence = c.Sequence AND a.WorkPoint = c.WorkPoint
  358. where a.ID IN (" + keyValue.TrimEnd(',') + ") and a.WorkPoint in ('" + WorkPoint.Trim(',') + "')";
  359. }
  360. //string strSql = @"Select * From CashLog";
  361. DataTable dtCashLog = DbHelper.ExecuteTable(DbHelper.ConnectionString, CommandType.Text, strSql, true, null);
  362. if (Type == "3" || Type == "4")
  363. {
  364. DataTable jieguo = new DataTable();
  365. int dtCashLogCount = dtCashLog.Columns.Count * 2;
  366. for (int s = 1; s < 3; s++)
  367. {
  368. int Count = 0;
  369. foreach (DataColumn column in dtCashLog.Columns)
  370. {
  371. if (Count == dtCashLog.Columns.Count)
  372. {
  373. break;
  374. }
  375. jieguo.Columns.Add(column.ColumnName + s);
  376. Count++;
  377. }
  378. }
  379. //int dtCashLogCount = dtCashLog.Columns.Count * 2;
  380. //for (int s = 1; s < 3; s++)
  381. //{
  382. // int Count = 0;
  383. // foreach (DataColumn column in dtCashLog.Columns)
  384. // {
  385. // if (Count == dtCashLog.Columns.Count)
  386. // {
  387. // break;
  388. // }
  389. // Console.WriteLine(column.ColumnName);
  390. // jieguo.Columns.Add(column.ColumnName + s);
  391. // Count++;
  392. // }
  393. //}
  394. //// 遍历DataTable的每一行
  395. //for (int i = 0; i < dtCashLog.Rows.Count; i++)
  396. //{
  397. // var param = dtCashLog.Rows[i].ItemArray.ToList();
  398. // i++;
  399. // if (i < dtCashLog.Rows.Count)
  400. // {
  401. // param.AddRange(dtCashLog.Rows[i].ItemArray.ToList());
  402. // }
  403. // jieguo.Rows.Add(param.ToArray());
  404. //}
  405. string[] array2D = new string[dtCashLog.Rows[0].ItemArray.ToList().Count]; // 假设这是一个3x3的二维数组
  406. int rows = array2D.GetLength(0); // 获取行数
  407. // 添加新行,所有元素设置为"N/A"
  408. for (int i = 0; i < rows; i++)
  409. {
  410. array2D[i] = " ";
  411. }
  412. // 遍历DataTable的每一行
  413. for (int i = 0; i < dtCashLog.Rows.Count; i++)
  414. {
  415. var param = dtCashLog.Rows[i].ItemArray.ToList();
  416. i++;
  417. if (i < dtCashLog.Rows.Count)
  418. {
  419. param.AddRange(dtCashLog.Rows[i].ItemArray.ToList());
  420. }
  421. else
  422. {
  423. param.AddRange(array2D);
  424. }
  425. jieguo.Rows.Add(param.ToArray());
  426. }
  427. strPrintTempFile = pJson.ShowReport(jieguo);
  428. }
  429. else
  430. {
  431. strPrintTempFile = pJson.ShowReport(dtCashLog); //产生JSON文件内容
  432. }
  433. //string strPrintTempFile = pJson.ExportReportPdf(dtCashLog, null, null, null, null, null, "D:/基础版/NFine.Framework/NFine.Web/File/PDF"); //导出PDF文件
  434. //把服务器的URL + 此文件名 传递给控件,由控件下载还原数据进行打印
  435. string strServerURL = GetUrlPath() + "PrintTemp/";
  436. string strData = strServerURL + strPrintTempFile;
  437. strPrintData = PrintFunction.EnBase64(strData);
  438. var JsonData = new
  439. {
  440. strPrintData_1 = strPrintData,
  441. bIsInstallPrintControl_1 = bIsInstallPrintControl,
  442. strPrintControlCookie_1 = strPrintControlCookie
  443. };
  444. //多站点
  445. string sql = @"UPDATE dbo.ICSInventoryLot
  446. SET PrintTimes=ISNULL(PrintTimes,0)+1,
  447. LastPrintUser='',
  448. LastPrintTime=GETDATE()
  449. WHERE ID IN (" + keyValue.TrimEnd(',') + ") and WorkPoint in ('" + WorkPoint.TrimEnd(',') + "')";
  450. SqlHelper.ExecuteNonQuery(sql);
  451. return Content(JsonData.ToJson());
  452. }
  453. /// <summary>
  454. /// 写日志(用于跟踪)
  455. /// </summary>
  456. private void WriteLog(string strMessage)
  457. {
  458. string strLogFile = Server.MapPath("./Cookie_Log.txt");
  459. StreamWriter swLogFile = null;
  460. try
  461. {
  462. if (!System.IO.File.Exists(strLogFile))
  463. {
  464. swLogFile = System.IO.File.CreateText(strLogFile);
  465. }
  466. else
  467. {
  468. swLogFile = System.IO.File.AppendText(strLogFile);
  469. }
  470. swLogFile.WriteLine(strMessage);
  471. }
  472. catch
  473. {
  474. }
  475. finally
  476. {
  477. if (swLogFile != null)
  478. swLogFile.Close();
  479. }
  480. }
  481. /// <summary>
  482. ///判断数据表中是否存在,若不存在则新建一条记录,若存在则更新最后访问的时间
  483. /// </summary>
  484. /// <param name="strCookie"></param>
  485. private void UpdateCheckInstall(string strCookie)
  486. {
  487. bool bIsExist = false;
  488. //判断记录是否存在
  489. GetLastAccessTime(strCookie, ref bIsExist);
  490. string strSql = "";
  491. SqlParameter[] pmcCookie = { new SqlParameter("Cookie", strCookie) };
  492. if (bIsExist)
  493. { //存在则更新最后访问的时间
  494. strSql = @"Update sys_SRM_CheckInstall
  495. Set LastAccessTime = getDate()
  496. Where Cookie = @Cookie";
  497. }
  498. else
  499. { //不存在则新建一条记录
  500. strSql = @"Insert into sys_SRM_CheckInstall(Cookie, LastAccessTime)
  501. Values( @Cookie, getDate() )";
  502. }
  503. DbHelper.ExecuteNonQuery(DbHelper.ConnectionString, CommandType.Text, strSql, pmcCookie);
  504. }
  505. public DateTime ToDateTime(object SrcValue)
  506. {
  507. if (Convert.IsDBNull(SrcValue) == true)
  508. return DateTime.MinValue;
  509. else
  510. {
  511. try
  512. {
  513. return Convert.ToDateTime(SrcValue);
  514. }
  515. catch
  516. {
  517. return DateTime.MinValue;
  518. }
  519. }
  520. }
  521. /// <summary>
  522. /// 获取此Cookie的最后访问时间
  523. /// </summary>
  524. /// <param name="strCookie"></param>
  525. /// <returns></returns>
  526. private DateTime GetLastAccessTime(string strCookie, ref bool bIsExist)
  527. {
  528. DateTime dtLastAccessTime = DateTime.MinValue;
  529. bIsExist = false;
  530. string strSql = @"Select * From sys_SRM_CheckInstall Where Cookie = @Cookie";
  531. SqlParameter[] pmcCookie = { new SqlParameter("Cookie", strCookie) };
  532. using (SqlDataReader drCookie = DbHelper.ExecuteReader(DbHelper.ConnectionString, CommandType.Text, strSql, pmcCookie))
  533. {
  534. if (drCookie.Read())
  535. {
  536. dtLastAccessTime = ToDateTime(drCookie["LastAccessTime"]);
  537. bIsExist = true;
  538. }
  539. drCookie.Close();
  540. }
  541. return dtLastAccessTime;
  542. }
  543. [HttpGet]
  544. [HandlerAjaxOnly]
  545. public ActionResult IsCheckInstall(string checkInstall)
  546. {
  547. string strValue = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss 访问,");
  548. if (Request.QueryString["cookie"] != null)
  549. { //有控件上传的Cookie值
  550. string strCookie = Request.QueryString["cookie"].ToString();
  551. //判断数据表中是否存在,若不存在则新建一条记录,若存在则更新最后访问的时间
  552. UpdateCheckInstall(strCookie);
  553. strValue = strValue + "上传的cookie:" + strCookie;
  554. }
  555. else if (checkInstall != null)
  556. {//Ajax检查控件是否安装了,防止那种客户把打印控件卸装了,打印时无法检测到的情况
  557. string strCookie = checkInstall;
  558. //读取最后访问的时间
  559. string strResult = "PrintControlInstall";
  560. bool bIsExist = false;
  561. DateTime dtLastAccessTime = GetLastAccessTime(strCookie, ref bIsExist);
  562. if (!bIsExist || dtLastAccessTime.AddSeconds(30) < DateTime.Now)
  563. {
  564. strResult = "NOT";
  565. }
  566. Response.Clear();
  567. Response.Write(strResult);
  568. strValue = strValue + "检测安装的值:" + strCookie;
  569. }
  570. WriteLog(strValue);
  571. return null;
  572. }
  573. [HttpGet]
  574. [HandlerAjaxOnly]
  575. public ActionResult IsCheckInstall()
  576. {
  577. string strValue = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss 访问,");
  578. if (Request.QueryString["cookie"] != null)
  579. { //有控件上传的Cookie值
  580. string strCookie = Request.QueryString["cookie"].ToString();
  581. //判断数据表中是否存在,若不存在则新建一条记录,若存在则更新最后访问的时间
  582. UpdateCheckInstall(strCookie);
  583. strValue = strValue + "上传的cookie:" + strCookie;
  584. }
  585. else if (Request.QueryString["checkInstall"] != null)
  586. {//Ajax检查控件是否安装了,防止那种客户把打印控件卸装了,打印时无法检测到的情况
  587. string strCookie = Request.QueryString["checkInstall"];
  588. //读取最后访问的时间
  589. string strResult = "PrintControlInstall";
  590. bool bIsExist = false;
  591. DateTime dtLastAccessTime = GetLastAccessTime(strCookie, ref bIsExist);
  592. if (!bIsExist || dtLastAccessTime.AddSeconds(30) < DateTime.Now)
  593. {
  594. strResult = "NOT";
  595. }
  596. Response.Clear();
  597. Response.Write(strResult);
  598. strValue = strValue + "检测安装的值:" + strCookie;
  599. }
  600. WriteLog(strValue);
  601. return null;
  602. }
  603. [HttpGet]
  604. public ActionResult SelectICSExtensionEnable(string BeginTime, string EndTime)
  605. {
  606. var data = App.SelectICSExtensionEnable(BeginTime, EndTime);
  607. return Content(data.ToJson());
  608. }
  609. [HttpGet]
  610. public ActionResult SelectICSInventoryEnable(string BeginTime)
  611. {
  612. var data = App.SelectICSInventoryEnable(BeginTime);
  613. return Content(data.ToJson());
  614. }
  615. [HttpGet]
  616. public ActionResult SelectICSColumnEnableForLotEnable(string WorkPoint)
  617. {
  618. var data = App.SelectICSColumnEnableForLotEnable(WorkPoint);
  619. return Content(data.ToJson());
  620. }
  621. public ActionResult GetQiSetNum(string keyValue)
  622. {
  623. var rows = App.GetQiSetNum(keyValue);
  624. return Content(rows.ToJson());
  625. }
  626. /// <summary>
  627. /// 查询是否启用序列号
  628. /// </summary>
  629. /// <param name="InvCode"></param>
  630. /// <param name="WorkPoint"></param>
  631. /// <returns></returns>
  632. [HttpGet]
  633. [HandlerAjaxOnly]
  634. public ActionResult GetInventoryIsEnable(string InvCode, string WorkPoint)
  635. {
  636. DataTable ListData = App.GetInventoryIsEnable(InvCode, WorkPoint);
  637. var JsonData = new
  638. {
  639. EATTERIBUTE10 = ListData.Rows[0][0].ToString(),
  640. };
  641. return Content(JsonData.ToJson());
  642. }
  643. [HttpGet]
  644. public ActionResult GetInvBatchEnable(string InvCode)
  645. {
  646. var data = App.GetInvBatchEnable(InvCode);
  647. return Content(data.ToJson());
  648. }
  649. public ActionResult GetWWComplete(string BeginTime, string EndTime)
  650. {
  651. var data = App.GetWWComplete(BeginTime, EndTime);
  652. return Content(data.ToJson());
  653. }
  654. [HttpGet]
  655. [HandlerAjaxOnly]
  656. public ActionResult GetLoadShowForColumn(string WorkPoint)
  657. {
  658. DataTable ListData = App.GetLoadShowForColumn(WorkPoint);
  659. var JsonData = new
  660. {
  661. rows = ListData,
  662. };
  663. return Content(JsonData.ToJson());
  664. }
  665. [HttpGet]
  666. [HandlerAjaxOnly]
  667. public ActionResult GetVendorBatchBYInvCodeZZ(string InvCode, string WorkPoint)
  668. {
  669. ActionResult result;
  670. try
  671. {
  672. DataTable vendorBatchBYInvCodeZZ = this.App.GetVendorBatchBYInvCodeZZ(InvCode, WorkPoint);
  673. var obj = new
  674. {
  675. VendorLotNo = vendorBatchBYInvCodeZZ.Rows[0][0].ToString()
  676. };
  677. result = base.Content(obj.ToJson());
  678. }
  679. catch (Exception ex)
  680. {
  681. result = this.Error(ex.Message);
  682. }
  683. return result;
  684. }
  685. [HttpGet]
  686. [HandlerAjaxOnly]
  687. public ActionResult GetGridJsonNOGK(Pagination pagination, string queryJson)
  688. {
  689. DataTable ListData = App.GetGridJsonNOGK(queryJson, ref pagination);
  690. var JsonData = new
  691. {
  692. total = pagination.total,
  693. page = pagination.page,
  694. records = pagination.records,
  695. rows = ListData,
  696. };
  697. return Content(JsonData.ToJson());
  698. }
  699. [HttpGet]
  700. [HandlerAjaxOnly]
  701. public ActionResult GetSubGridJsonNOGK(string POCode, string PORow, string WorkPoint, Pagination pagination)
  702. {
  703. DataTable ListData = App.GetSubGridJsonNOGK(POCode, PORow, WorkPoint, ref pagination);
  704. var JsonData = new
  705. {
  706. total = pagination.total,
  707. page = pagination.page,
  708. records = pagination.records,
  709. rows = ListData,
  710. };
  711. return Content(JsonData.ToJson());
  712. }
  713. [HttpPost]
  714. [HandlerAjaxOnly]
  715. [ValidateAntiForgeryToken]
  716. public ActionResult SubmitFormNOGK(string POCode, string PORow, string keyValue, string WorkPoint, string IsEable)
  717. {
  718. int i = App.SubmitFormNOGK(POCode, PORow, keyValue, WorkPoint, IsEable);
  719. if (i > 0)
  720. {
  721. return Success("生成成功!");
  722. }
  723. else
  724. {
  725. return Error("生成失败!");
  726. }
  727. }
  728. [HttpPost]
  729. [HandlerAjaxOnly]
  730. [ValidateAntiForgeryToken]
  731. public ActionResult DeleteItemLotNOGK(string keyValue, string WorkPoint)
  732. {
  733. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  734. WorkPoint = WorkPoint.Substring(1, WorkPoint.Length - 2);
  735. string msg = App.DeleteItemLotNOGK(keyValue, WorkPoint);
  736. if (string.IsNullOrWhiteSpace(msg))
  737. {
  738. return Success("删除成功!");
  739. }
  740. else
  741. {
  742. return Error(msg);
  743. }
  744. }
  745. [HttpGet]
  746. [HandlerAjaxOnly]
  747. public ActionResult GetGridJsonWeiWaiNOGK(Pagination pagination, string queryJson)
  748. {
  749. DataTable ListData = App.GetGridJsonWeiWaiNOGK(queryJson, ref pagination);
  750. var JsonData = new
  751. {
  752. total = pagination.total,
  753. page = pagination.page,
  754. records = pagination.records,
  755. rows = ListData,
  756. };
  757. return Content(JsonData.ToJson());
  758. }
  759. [HttpGet]
  760. [HandlerAjaxOnly]
  761. public ActionResult GetSubGridJsonWeiWaiNOGK(string POCode, string PORow, string WorkPoint, Pagination pagination)
  762. {
  763. DataTable ListData = App.GetSubGridJsonWeiWaiNOGK(POCode, PORow, WorkPoint, ref pagination);
  764. var JsonData = new
  765. {
  766. total = pagination.total,
  767. page = pagination.page,
  768. records = pagination.records,
  769. rows = ListData,
  770. };
  771. return Content(JsonData.ToJson());
  772. }
  773. [HttpPost]
  774. [HandlerAjaxOnly]
  775. [ValidateAntiForgeryToken]
  776. public ActionResult SubmitFormWeiWaiNOGK(string OOCode, string Sequence, string keyValue, string WorkPoint, string IsEable)
  777. {
  778. int i = App.SubmitFormWeiWaiNOGK(OOCode, Sequence, keyValue, WorkPoint, IsEable);
  779. if (i > 0)
  780. {
  781. return Success("生成成功!");
  782. }
  783. else
  784. {
  785. return Error("生成失败!");
  786. }
  787. }
  788. }
  789. }