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.

732 lines
28 KiB

4 days ago
  1. using NFine.Application;
  2. using NFine.Application.ProductManage;
  3. using NFine.Application.SRM;
  4. using NFine.Code;
  5. using NFine.Data.Extensions;
  6. using NFine.Domain.Entity.ProductManage;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Data;
  10. using System.Data.SqlClient;
  11. using System.IO;
  12. using System.Linq;
  13. using System.Threading;
  14. using System.Web;
  15. using System.Web.Mvc;
  16. namespace NFine.Web.Areas.SRM.Controllers
  17. {
  18. public class ASNMangeWeiWaiController : ControllerBase
  19. {
  20. ASNMangeWeiWaiApp App = new ASNMangeWeiWaiApp();
  21. // GET: SRM/ASNMangeWeiWai
  22. public ActionResult Index()
  23. {
  24. return View();
  25. }
  26. public ActionResult ASNAddWeiWai()
  27. {
  28. return View();
  29. }
  30. public ActionResult ASNCartonSelectWeiWai()
  31. {
  32. return View();
  33. }
  34. public ActionResult ASNSelectWeiWai()
  35. {
  36. return View();
  37. }
  38. public ActionResult ASNUpdateWeiWai()
  39. {
  40. return View();
  41. }
  42. [HttpGet]
  43. [HandlerAjaxOnly]
  44. public ActionResult GetGridJson(Pagination pagination, string queryJson)
  45. {
  46. DataTable ListData = App.GetGridJson(queryJson, ref pagination);
  47. var JsonData = new
  48. {
  49. total = pagination.total,
  50. page = pagination.page,
  51. records = pagination.records,
  52. rows = ListData,
  53. };
  54. return Content(JsonData.ToJson());
  55. }
  56. [HttpGet]
  57. [HandlerAjaxOnly]
  58. public ActionResult GetSubGridJson(string STNO, Pagination pagination,string WorkPoint)
  59. {
  60. DataTable ListData = App.GetSubGridJson(STNO, ref pagination, WorkPoint);
  61. var JsonData = new
  62. {
  63. total = pagination.total,
  64. page = pagination.page,
  65. records = pagination.records,
  66. rows = ListData,
  67. };
  68. return Content(JsonData.ToJson());
  69. }
  70. public ActionResult HDeleteSTNO(string keyValue,string WorkPoint,string EATTRIBUTE1)
  71. {
  72. string msg = App.DeleteSTNO(keyValue, WorkPoint, EATTRIBUTE1);
  73. if (string.IsNullOrEmpty(msg))
  74. {
  75. return Success("删除成功!");
  76. }
  77. else
  78. {
  79. return Error(msg);
  80. }
  81. }
  82. [HttpGet]
  83. [HandlerAjaxOnly]
  84. public ActionResult CheckIsAll(string STNO)
  85. {
  86. string _result = App.CheckIsAll(STNO);
  87. var JsonData = new
  88. {
  89. result = _result
  90. };
  91. return Content(JsonData.ToJson());
  92. }
  93. [HttpGet]
  94. [HandlerAjaxOnly]
  95. public ActionResult GetSTNO(string WorkPoint)
  96. {
  97. string cSTNO = App.GetSTNO(WorkPoint);
  98. var JsonData = new
  99. {
  100. STNO = cSTNO,
  101. VenCode = NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode
  102. };
  103. return Content(JsonData.ToJson());
  104. }
  105. [HttpGet]
  106. [HandlerAjaxOnly]
  107. public ActionResult GetSTNOByPerson(string VenCode, string ExpArrivalDate, string WorkPoint)
  108. {
  109. string cSTNO = App.GetSTNOByPerson(VenCode, ExpArrivalDate, WorkPoint);
  110. var JsonData = new
  111. {
  112. STNO = cSTNO
  113. };
  114. return Content(JsonData.ToJson());
  115. }
  116. [HttpGet]
  117. [HandlerAjaxOnly]
  118. public ActionResult GetVendor()
  119. {
  120. DataTable dt = App.GetVendor();
  121. return Content(dt.ToJson());
  122. }
  123. [HttpGet]
  124. [HandlerAjaxOnly]
  125. public ActionResult GetVendors()
  126. {
  127. DataTable dt = App.GetVendors();
  128. return Content(dt.ToJson());
  129. }
  130. [HttpGet]
  131. [HandlerAjaxOnly]
  132. public ActionResult GetSubGridJson_Add(string queryJson, Pagination pagination)
  133. {
  134. DataTable ListData = App.GetSubGridJson_Add(queryJson, ref pagination);
  135. var JsonData = new
  136. {
  137. total = pagination.total,
  138. page = pagination.page,
  139. records = pagination.records,
  140. rows = ListData,
  141. };
  142. return Content(JsonData.ToJson());
  143. }
  144. [HttpGet]
  145. [HandlerAjaxOnly]
  146. public ActionResult GetInfoBySelectItemCode(Pagination pagination, string queryJson,string WorkPoint)
  147. {
  148. DataTable ListData = App.GetInfoBySelectItemCode(queryJson, ref pagination, WorkPoint);
  149. var JsonData = new
  150. {
  151. total = pagination.total,
  152. page = pagination.page,
  153. records = pagination.records,
  154. rows = ListData,
  155. };
  156. return Content(JsonData.ToJson());
  157. }
  158. [HttpPost]
  159. [HandlerAjaxOnly]
  160. public ActionResult SaveItemCode(string queryJson, string STNO, string WorkPoint)
  161. {
  162. queryJson = queryJson.Substring(1, queryJson.Length - 2);
  163. WorkPoint = WorkPoint.Substring(1, WorkPoint.Length - 2);
  164. string msg = App.CheckSTNO_ItemCode(queryJson, STNO, WorkPoint);
  165. if (!string.IsNullOrEmpty(msg))
  166. {
  167. return Error(msg);
  168. }
  169. else
  170. {
  171. return Success("添加成功!");
  172. }
  173. }
  174. [HttpGet]
  175. [HandlerAjaxOnly]
  176. public ActionResult ASNCartonGetCartonGridJson(Pagination pagination, string queryJson, string WorkPoint)
  177. {
  178. DataTable ListData = App.ASNCartonGetCartonGridJson(queryJson, ref pagination, WorkPoint);
  179. var JsonData = new
  180. {
  181. total = pagination.total,
  182. page = pagination.page,
  183. records = pagination.records,
  184. rows = ListData,
  185. };
  186. return Content(JsonData.ToJson());
  187. }
  188. [HttpGet]
  189. [HandlerAjaxOnly]
  190. public ActionResult GetCartonSubGridJson(string CartonNo, Pagination pagination)
  191. {
  192. DataTable ListData = App.GetCartonSubGridJson(CartonNo, ref pagination);
  193. var JsonData = new
  194. {
  195. total = pagination.total,
  196. page = pagination.page,
  197. records = pagination.records,
  198. rows = ListData,
  199. };
  200. return Content(JsonData.ToJson());
  201. }
  202. [HttpPost]
  203. [HandlerAjaxOnly]
  204. public ActionResult SaveCartonNo(string queryJson, string STNO, string WorkPoint)
  205. {
  206. queryJson = queryJson.Substring(1, queryJson.Length - 2);
  207. string msg = App.CheckSTNO_CartonNo(queryJson, STNO, WorkPoint);
  208. if (!string.IsNullOrEmpty(msg))
  209. {
  210. return Error(msg);
  211. }
  212. else
  213. {
  214. return Success("添加成功!");
  215. }
  216. }
  217. [HttpPost]
  218. [HandlerAjaxOnly]
  219. [ValidateAntiForgeryToken]
  220. public ActionResult DeleteInfo(string keyValue,string WorkPoint)
  221. {
  222. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  223. string msg = App.DeleteInfo(keyValue, WorkPoint);
  224. if (string.IsNullOrEmpty(msg))
  225. {
  226. return Success("删除成功!");
  227. }
  228. else
  229. {
  230. return Error(msg);
  231. }
  232. }
  233. public ActionResult DeleteSTNO(string keyValue, string DeleteFlag, string WorkPoint, string EATTRIBUTE1)
  234. {
  235. if (DeleteFlag == "1")
  236. {
  237. string msg = App.DeleteSTNO(keyValue, WorkPoint, EATTRIBUTE1);
  238. }
  239. if (DeleteFlag == "2")
  240. {
  241. string msg = App.UpdateSTNO(keyValue, EATTRIBUTE1);
  242. }
  243. return Success("操作成功!");
  244. }
  245. [HttpPost]
  246. [HandlerAjaxOnly]
  247. [ValidateAntiForgeryToken]
  248. public ActionResult UpDateBySTNO(string keyValue, string Status, string WorkPoint)
  249. {
  250. int result = App.UpDateBySTNO(keyValue, Status, WorkPoint);
  251. if (result > 0)
  252. {
  253. return Success("操作成功!");
  254. }
  255. else
  256. {
  257. return Error("操作失败!");
  258. }
  259. }
  260. #region 打印
  261. /// <summary>
  262. /// 打印数据参数:服务器的URL+打印的文件名,转化为Base64编码
  263. /// </summary>
  264. protected string strPrintData;
  265. /// <summary>
  266. /// 标识是否安装了控件
  267. /// </summary>
  268. protected bool bIsInstallPrintControl = true;
  269. /// <summary>
  270. /// 打印控件的Cookie值
  271. /// </summary>
  272. protected string strPrintControlCookie = "";
  273. /// <summary>
  274. /// 获取Url中去掉文件名的路径
  275. /// </summary>
  276. /// <returns></returns>
  277. private string GetUrlPath()
  278. {
  279. string strUrl = Request.Url.ToString();
  280. int iEnd = strUrl.LastIndexOf("/");
  281. strUrl = strUrl.Substring(0, iEnd + 1);
  282. return strUrl;
  283. }
  284. /// <summary>
  285. /// 设置控件调用的Cookie值,判断是否安装了打印控件
  286. /// </summary>
  287. /// <param name="pJson"></param>
  288. private void SetCookieAndURL(PrintJson pJson)
  289. {
  290. bIsInstallPrintControl = false;
  291. strPrintControlCookie = "";
  292. HttpCookie pCookieInstall = Request.Cookies["InstallPrintControl"];
  293. if (pCookieInstall != null)
  294. { //Cookie存在
  295. strPrintControlCookie = pCookieInstall.Value.ToString();
  296. //以Cookie值查找在数据表中是否存在
  297. string strSql = @"Select * From sys_SRM_CheckInstall Where Cookie = @Cookie";
  298. SqlParameter[] pmcCookie = { new SqlParameter("Cookie", strPrintControlCookie) };
  299. using (SqlDataReader drCookie = DbHelper.ExecuteReader(DbHelper.ConnectionString, CommandType.Text, strSql, pmcCookie))
  300. {
  301. if (drCookie.Read())
  302. { //标识为已经安装
  303. bIsInstallPrintControl = true;
  304. }
  305. drCookie.Close();
  306. }
  307. //更新Cookie的保存时间
  308. pCookieInstall.Expires = DateTime.Now.AddYears(10);
  309. Response.SetCookie(pCookieInstall);
  310. }
  311. else
  312. {//Cookie不存在,则新建Cookie
  313. strPrintControlCookie = System.Guid.NewGuid().ToString();
  314. pCookieInstall = new HttpCookie("InstallPrintControl", strPrintControlCookie);
  315. pCookieInstall.Expires = DateTime.Now.AddYears(10);
  316. Response.Cookies.Add(pCookieInstall);
  317. }
  318. string strUrl = Server.MapPath("/PrintTemp/") + "IsCheckInstall";
  319. pJson.SetCookieAndURL(strPrintControlCookie, strUrl);
  320. }
  321. [HttpPost]
  322. [HandlerAjaxOnly]
  323. public ActionResult PrintItemLot(string keyValue, string WorkPoint)
  324. {
  325. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  326. WorkPoint = WorkPoint.Substring(1, WorkPoint.Length - 2);
  327. string strPrintFileName = Server.MapPath("/ReportFile/") + "ASN.fr3";
  328. PrintJson pJson = new PrintJson(Server.MapPath("./PrintTemp"), strPrintFileName);
  329. pJson.CheckRegister("苏州智合诚信息科技有限公司", "56DD3B4C172D0D140841CAC98A58A819F4E28EDA5D6E45711DDD64F6A439F68B6A7870CD7DAFD69A919CB870207FE4BB206F92BE3D53C221B019E0797E739EBA4"); //注册信息
  330. pJson.MasterOptions(1, "ASNCode", false); //主从关系
  331. SetCookieAndURL(pJson);// 设置控件调用的Cookie值,判断是否安装了打印控件
  332. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  333. string strSql = @"SELECT z.OASNCode as ASNCode,z.VenCode,x.VenName,CONVERT(varchar(100),z.Mtime, 23) CREATEDATE,GETDATE() AS printdate,z.EATTRIBUTE1
  334. ,VenPerson,VenHand,CONVERT(varchar(20), GETDATE(), 23) as DateNo FROM dbo.ICSOASN z
  335. left join ICSVendor x on z.VenCode=x.VenCode and z.WorkPoint=x.WorkPoint
  336. WHERE z.OASNCode IN (" + keyValue.TrimEnd(',') + ") and z.WorkPoint=" + WorkPoint.TrimEnd(',') + "";
  337. DataTable dtInInfo = DbHelper.ExecuteTable(DbHelper.ConnectionString, CommandType.Text, strSql, true, null);
  338. strSql = @"SELECT Row_Number() OVER (partition by a.OASNCode ORDER BY a.MTIME desc) AS rowno,
  339. c.OASNCode AS ASNCode,c.InvCode,c.PLANQTY AS Quantity,c.LotnoQTY,c.CartonNOQTY,b.InvName,b.InvStd,b.INVDESC,b.InvUnit,ee.BatchCode,ee.ProjectCode,c.TransCode,ff.CreatePerson,ff.EATTRIBUTE3 as DXEATTRIBUTE3,a.MTIME,ISNULL(ff.Quantity,0)AS POQuantity,ISNULL(ff.Quantity,0)-ISNULL(gg.Quantity,0)AS infoQuantity,ff.EATTRIBUTE2 as BBEATTRIBUTE3
  340. FROM
  341. (select aa.OASNCode,b.InvCode,aa.WorkPoint,sum(aa.Quantity) PLANQTY,count(aa.LotNo) LotnoQTY,count(bb.ContainerID) CartonNOQTY,b.ExtensionID,cc.TransCode,cc.TransSequence
  342. from ICSOASNDetail aa
  343. left join ICSInventoryLot b on aa.LotNo=b.LotNo and aa.WorkPoint=b.WorkPoint
  344. LEFT JOIN dbo.ICSInventoryLotDetail cc ON b.LotNo=cc.LotNo AND b.WorkPoint=cc.WorkPoint
  345. left join ICSContainerLot bb on b.LotNo=bb.lotno
  346. group by aa.OASNCode,b.InvCode,aa.WorkPoint,b.ExtensionID,cc.TransCode,cc.TransSequence,cc.WorkPoint ) c
  347. left join ICSOASN a on c.OASNCode=a.OASNCode and c.WorkPoint=a.WorkPoint
  348. LEFT JOIN dbo.ICSInventory b ON c.InvCode=b.InvCode AND b.WorkPoint=c.WorkPoint
  349. LEFT JOIN dbo.ICSExtension ee ON c.ExtensionID=ee.ID AND c.WorkPoint=ee.WorkPoint
  350. LEFT JOIN ICSOutsourcingOrder ff on c.TransCode=ff.OOCode and c.TransSequence=ff.Sequence and c.WorkPoint=ff.WorkPoint
  351. LEFT JOIN (SELECT TransCode,TransSequence,sum(Quantity) Quantity,WorkPoint FROM dbo.ICSWareHouseLotInfoLog WHERE BusinessCode='1' GROUP BY TransCode,TransSequence,WorkPoint) gg ON ff.OOCode=gg.TransCode AND ff.Sequence=gg.TransSequence AND ff.WorkPoint=gg.WorkPoint
  352. WHERE c.OASNCode IN (" + keyValue.TrimEnd(',') + ") and c.WorkPoint=" + WorkPoint.TrimEnd(',') + "";
  353. DataTable dtInMaterial = DbHelper.ExecuteTable(DbHelper.ConnectionString, CommandType.Text, strSql, true, null);
  354. string strPrintTempFile = pJson.ShowReport(dtInInfo, dtInMaterial); //产生JSON文件内容
  355. //把服务器的URL + 此文件名 传递给控件,由控件下载还原数据进行打印
  356. string strServerURL = GetUrlPath() + "PrintTemp/";
  357. string strData = strServerURL + strPrintTempFile;
  358. strPrintData = PrintFunction.EnBase64(strData);
  359. var JsonData = new
  360. {
  361. strPrintData_1 = strPrintData,
  362. bIsInstallPrintControl_1 = bIsInstallPrintControl,
  363. strPrintControlCookie_1 = strPrintControlCookie
  364. };
  365. // string sql = @"UPDATE dbo.OASNCode
  366. // SET ADDITION1=ISNULL(ADDITION1,0)+1,
  367. // ADDITION2=CONVERT(varchar(100), GETDATE(), 21)
  368. // WHERE STNO in (" + keyValue.TrimEnd(',') + ") and WorkPoint=" + WorkPoint.TrimEnd(',') + "";
  369. // SqlHelper.ExecuteNonQuery(sql);
  370. return Content(JsonData.ToJson());
  371. }
  372. #region 根据单号打印条码信息
  373. [HttpPost]
  374. [HandlerAjaxOnly]
  375. public ActionResult PrintItemASNLotByYL(string keyValue)
  376. {
  377. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  378. string strPrintFileName = Server.MapPath("/ReportFile/") + "lot.fr3";
  379. PrintJson pJson = new PrintJson(Server.MapPath("./PrintTemp"), strPrintFileName);
  380. pJson.CheckRegister("苏州智合诚信息科技有限公司", "56DD3B4C172D0D140841CAC98A58A819F4E28EDA5D6E45711DDD64F6A439F68B6A7870CD7DAFD69A919CB870207FE4BB206F92BE3D53C221B019E0797E739EBA4"); //注册信息
  381. pJson.MasterOptions(1, "ASNCode", false); //主从关系
  382. SetCookieAndURL(pJson);// 设置控件调用的Cookie值,判断是否安装了打印控件
  383. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  384. string 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,
  385. c.InvStd,
  386. c.ClassName,c.InvDesc,
  387. b.VenCode,h.VenName,c.InvUnit,f.WarehouseName,
  388. a.LotNO AS QRLotNo,CONVERT(varchar(100), a.ProductDate, 23) as PRODUCTDATE,CONVERT(varchar(100), b.PlanArriveDate, 23) as PreArriveDate
  389. ,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
  390. ,a.EATTRIBUTE3,CONVERT(varchar(100),dateadd(day,c.EffectiveDays,a.ProductDate), 23) AS exprdate,i.OASNCode as asnCode,b.EATTRIBUTE3 as DXEATTRIBUTE3
  391. ,a.EATTRIBUTE4 as DXEATTRIBUTE4,b.EATTRIBUTE4 as PODXEATTRIBUTE4,c1.LocationCode,c.EATTRIBUTE11,c.EATTRIBUTE12,c.EATTRIBUTE13,c.EATTRIBUTE14,c.EATTRIBUTE15
  392. ,c.EATTRIBUTE16,c.EATTRIBUTE17,c.EATTRIBUTE18,
  393. CASE WHEN c.EATTRIBUTE19='1'THEN''WHEN c.EATTRIBUTE19='0'THEN'' END EATTRIBUTE19,ISNULL(a.EATTRIBUTE6,'') as isSJBGInvCode,a.EATTRIBUTE8, CASE WHEN c.InvIQC='0' THEN '免'ELSE '' END AS InvIQC
  394. FROM dbo.ICSInventoryLot a
  395. left join ICSExtension g on a.ExtensionID=g.ID and a.WorkPoint=g.WorkPoint
  396. left join ICSInventoryLotDetail e on a.lotNo=e.LotNo and a.WorkPoint=e.WorkPoint
  397. LEFT JOIN dbo.ICSPurchaseOrder b ON b.POCode=e.TransCode AND b.Sequence=e.TransSequence AND a.WorkPoint=e.WorkPoint
  398. LEFT JOIN dbo.ICSInventory c ON a.InvCode=c.InvCode AND a.WorkPoint=c.WorkPoint
  399. left join dbo.ICSInventoryBatchEnable d on c.InvCode=d.InvCode and c.WorkPoint=d.WorkPoint AND d.BatchEnable=1
  400. left join ICSWarehouse f on d.WHCode=f.WarehouseCode and d.WorkPoint=f.WorkPoint
  401. left join ICSVendor h on b.VenCode=h.VenCode and b.WorkPoint=h.WorkPoint
  402. LEFT JOIN ICSOASNDetail i ON a.lotNO=i.LotNO AND a.workPoint=i.workPoint
  403. LEFT JOIN (
  404. SELECT
  405. InvCode,
  406. WarehouseCode,
  407. LocationCode,
  408. MTIME,
  409. WorkPoint,
  410. new_index
  411. FROM
  412. (
  413. SELECT
  414. b.InvCode,
  415. b.WarehouseCode,
  416. b.LocationCode,
  417. b.MTIME,
  418. b.WorkPoint,
  419. ROW_NUMBER() OVER (
  420. PARTITION BY b.InvCode
  421. ORDER BY b.MTIME ASC
  422. ) AS new_index
  423. FROM
  424. ICSWareHouseLotInfo b WITH (NOLOCK)
  425. WHERE
  426. b.quantity > 0
  427. ) AS subquery
  428. WHERE
  429. new_index = 1
  430. ) c1 ON c1.invcode = a.invcode
  431. AND c1.WorkPoint = a.WorkPoint
  432. WHERE i.OASNCode IN (" + keyValue.TrimEnd(',') + ")";
  433. DataTable dtInInfo = DbHelper.ExecuteTable(DbHelper.ConnectionString, CommandType.Text, strSql, true, null);
  434. string strPrintTempFile = pJson.ShowReport(dtInInfo); //产生JSON文件内容
  435. //把服务器的URL + 此文件名 传递给控件,由控件下载还原数据进行打印
  436. string strServerURL = GetUrlPath() + "PrintTemp/";
  437. string strData = strServerURL + strPrintTempFile;
  438. strPrintData = PrintFunction.EnBase64(strData);
  439. var JsonData = new
  440. {
  441. strPrintData_1 = strPrintData,
  442. bIsInstallPrintControl_1 = bIsInstallPrintControl,
  443. strPrintControlCookie_1 = strPrintControlCookie
  444. };
  445. // string sql = @"UPDATE dbo.ICSASN
  446. // SET ADDITION1=ISNULL(ADDITION1,0)+1,
  447. // ADDITION2=CONVERT(varchar(100), GETDATE(), 21)
  448. // WHERE STNO in (" + keyValue.TrimEnd(',') + ") and WorkPoint=" + WorkPoint.TrimEnd(',') + "";
  449. // SqlHelper.ExecuteNonQuery(sql);
  450. return Content(JsonData.ToJson());
  451. }
  452. #endregion
  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. #endregion
  604. [HttpGet]
  605. [HandlerAjaxOnly]
  606. public ActionResult GetWWICSASNCode(string RoleEnCode, string WorkPoint)
  607. {
  608. string ListData = App.GetWWICSASNCode(RoleEnCode, WorkPoint);
  609. var data = new
  610. {
  611. rows = ListData,
  612. };
  613. return Content(data.ToJson());
  614. }
  615. [HttpPost]
  616. [HandlerAjaxOnly]
  617. public ActionResult SaveWWICSASNAndDetail(string ICSASN, string WorkPoint)
  618. {
  619. string msg = App.SaveWWICSASNAndDetail(ICSASN, WorkPoint);
  620. if (!string.IsNullOrEmpty(msg))
  621. {
  622. return Error(msg);
  623. }
  624. else
  625. {
  626. return Success("添加成功!");
  627. }
  628. }
  629. [HttpPost]
  630. [HandlerAjaxOnly]
  631. public ActionResult UpdateWWICSASNAndDetail(string ICSASN)
  632. {
  633. string msg = App.UpdateWWICSASNAndDetail(ICSASN);
  634. if (!string.IsNullOrEmpty(msg))
  635. {
  636. return Error(msg);
  637. }
  638. else
  639. {
  640. return Success("修改成功!");
  641. }
  642. }
  643. [HttpGet]
  644. [HandlerAjaxOnly]
  645. public ActionResult GetLotByContainer(string Value, string WorkPoint)
  646. {
  647. DataTable ListData = App.GetLotByContainer(Value, WorkPoint);
  648. var JsonData = new
  649. {
  650. rows = ListData,
  651. };
  652. return Content(JsonData.ToJson());
  653. }
  654. }
  655. }