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.

877 lines
34 KiB

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